summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--account/__init__.py (renamed from lib/python2.7/site-packages/django/bin/profiling/__init__.py)0
-rw-r--r--account/admin.py (renamed from lib/python2.7/site-packages/django/conf/app_template/admin.py)0
-rw-r--r--account/models.py (renamed from lib/python2.7/site-packages/django/conf/app_template/models.py)0
-rw-r--r--account/tests.py (renamed from lib/python2.7/site-packages/django/conf/app_template/tests.py)0
-rw-r--r--account/urls.py12
-rw-r--r--account/views.py (renamed from sbhs_server/account/views.py)0
-rw-r--r--bin/activate76
-rw-r--r--bin/activate.csh32
-rw-r--r--bin/activate.fish79
-rw-r--r--bin/activate_this.py34
-rw-r--r--bin/django-admin.py5
-rw-r--r--bin/easy_install10
-rw-r--r--bin/easy_install-2.710
-rw-r--r--bin/miniterm.py694
-rw-r--r--bin/pip10
-rw-r--r--bin/pip-2.710
-rw-r--r--bin/pythonbin2795128 -> 0 bytes
-rw-r--r--experiment/__init__.py (renamed from lib/python2.7/site-packages/django/conf/app_template/__init__.py)0
-rw-r--r--experiment/admin.py (renamed from sbhs_server/account/admin.py)0
-rw-r--r--experiment/models.py (renamed from sbhs_server/account/models.py)0
-rw-r--r--experiment/tests.py (renamed from sbhs_server/account/tests.py)0
-rw-r--r--experiment/urls.py19
-rw-r--r--experiment/views.py (renamed from sbhs_server/experiment/views.py)0
-rw-r--r--experiment/views.py.new (renamed from sbhs_server/experiment/views.py.new)0
-rw-r--r--lib/python2.7/distutils/__init__.py97
-rw-r--r--lib/python2.7/distutils/distutils.cfg6
-rw-r--r--lib/python2.7/no-global-site-packages.txt0
-rw-r--r--lib/python2.7/orig-prefix.txt1
-rw-r--r--lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/PKG-INFO28
-rw-r--r--lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/SOURCES.txt4860
-rw-r--r--lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/dependency_links.txt1
-rw-r--r--lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/installed-files.txt4210
-rw-r--r--lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/top_level.txt1
-rw-r--r--lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/PKG-INFO22
-rw-r--r--lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/SOURCES.txt124
-rw-r--r--lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/dependency_links.txt1
-rw-r--r--lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/installed-files.txt239
-rw-r--r--lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/top_level.txt1
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/PKG-INFO610
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/SOURCES.txt98
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/dependency_links.txt1
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/entry_points.txt62
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/top_level.txt4
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/zip-safe1
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/easy_install.py5
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py2729
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/__init__.py104
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/archive_util.py208
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/cli-32.exebin69632 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/cli-64.exebin75264 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/cli.exebin69632 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/__init__.py21
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/alias.py82
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/bdist_egg.py544
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/bdist_rpm.py82
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/bdist_wininst.py41
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/build_ext.py294
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/build_py.py282
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/develop.py141
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/easy_install.py1893
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/egg_info.py457
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install.py124
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install_egg_info.py123
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install_lib.py82
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install_scripts.py53
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/register.py10
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/rotate.py82
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/saveopts.py25
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/sdist.py252
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/setopt.py164
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/test.py180
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/upload.py184
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/upload_docs.py178
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/depends.py246
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/dist.py817
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/extension.py40
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/gui-32.exebin65536 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/gui-64.exebin75264 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/gui.exebin65536 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/package_index.py845
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/sandbox.py284
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/__init__.py370
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/doctest.py2679
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/server.py48
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_build_ext.py20
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_develop.py82
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_easy_install.py252
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_packageindex.py121
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_resources.py649
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_sandbox.py66
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_upload_docs.py65
-rw-r--r--lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/site.py82
-rw-r--r--lib/python2.7/site-packages/django/__init__.py7
-rw-r--r--lib/python2.7/site-packages/django/bin/daily_cleanup.py19
-rw-r--r--lib/python2.7/site-packages/django/bin/django-2to3.py10
-rw-r--r--lib/python2.7/site-packages/django/bin/django-admin.py5
-rw-r--r--lib/python2.7/site-packages/django/bin/profiling/gather_profile_stats.py37
-rw-r--r--lib/python2.7/site-packages/django/bin/unique-messages.py29
-rw-r--r--lib/python2.7/site-packages/django/conf/__init__.py198
-rw-r--r--lib/python2.7/site-packages/django/conf/app_template/views.py3
-rw-r--r--lib/python2.7/site-packages/django/conf/global_settings.py605
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/__init__.py494
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/af/LC_MESSAGES/django.mobin14505 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/af/LC_MESSAGES/django.po1314
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ar/LC_MESSAGES/django.mobin16390 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ar/LC_MESSAGES/django.po1358
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ar/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/az/LC_MESSAGES/django.mobin14884 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/az/LC_MESSAGES/django.po1294
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/be/LC_MESSAGES/django.mobin17367 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/be/LC_MESSAGES/django.po1335
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/bg/LC_MESSAGES/django.mobin18384 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/bg/LC_MESSAGES/django.po1309
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/bg/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/bn/LC_MESSAGES/django.mobin17862 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/bn/LC_MESSAGES/django.po1299
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/bn/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/br/LC_MESSAGES/django.mobin14089 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/br/LC_MESSAGES/django.po1312
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/bs/LC_MESSAGES/django.mobin11637 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/bs/LC_MESSAGES/django.po1320
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/bs/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ca/LC_MESSAGES/django.mobin14577 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ca/LC_MESSAGES/django.po1315
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ca/formats.py34
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/cs/LC_MESSAGES/django.mobin20892 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/cs/LC_MESSAGES/django.po1347
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/cs/formats.py45
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/cy/LC_MESSAGES/django.mobin5973 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/cy/LC_MESSAGES/django.po1323
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/cy/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/da/LC_MESSAGES/django.mobin19629 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/da/LC_MESSAGES/django.po1330
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/da/formats.py29
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/de/LC_MESSAGES/django.mobin20766 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/de/LC_MESSAGES/django.po1349
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/de/formats.py31
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/de_CH/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/de_CH/formats.py38
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/el/LC_MESSAGES/django.mobin17710 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/el/LC_MESSAGES/django.po1324
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/el/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/el/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/en/LC_MESSAGES/django.mobin356 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/en/LC_MESSAGES/django.po1286
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/en/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/en/formats.py44
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/en_GB/LC_MESSAGES/django.mobin13664 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/en_GB/LC_MESSAGES/django.po1304
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/en_GB/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/en_GB/formats.py43
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/eo/LC_MESSAGES/django.mobin19763 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/eo/LC_MESSAGES/django.po1337
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es/LC_MESSAGES/django.mobin20173 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es/LC_MESSAGES/django.po1349
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es/formats.py34
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es_AR/LC_MESSAGES/django.mobin20558 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es_AR/LC_MESSAGES/django.po1345
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es_AR/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es_AR/formats.py33
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es_MX/LC_MESSAGES/django.mobin16168 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es_MX/LC_MESSAGES/django.po1321
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es_MX/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es_MX/formats.py28
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es_NI/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es_NI/formats.py30
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es_PR/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es_PR/formats.py30
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es_VE/LC_MESSAGES/django.mobin5544 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/es_VE/LC_MESSAGES/django.po1296
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/et/LC_MESSAGES/django.mobin19823 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/et/LC_MESSAGES/django.po1329
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/et/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/et/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/eu/LC_MESSAGES/django.mobin19758 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/eu/LC_MESSAGES/django.po1339
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/eu/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/eu/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/fa/LC_MESSAGES/django.mobin22299 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/fa/LC_MESSAGES/django.po1309
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/fa/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/fa/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/fi/LC_MESSAGES/django.mobin12715 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/fi/LC_MESSAGES/django.po1304
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/fi/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/fi/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/fr/LC_MESSAGES/django.mobin20758 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/fr/LC_MESSAGES/django.po1355
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/fr/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/fr/formats.py36
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/fy_NL/LC_MESSAGES/django.mobin2724 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/fy_NL/LC_MESSAGES/django.po1301
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/fy_NL/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/fy_NL/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ga/LC_MESSAGES/django.mobin14369 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ga/LC_MESSAGES/django.po1362
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ga/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ga/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/gl/LC_MESSAGES/django.mobin15467 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/gl/LC_MESSAGES/django.po1320
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/gl/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/gl/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/he/LC_MESSAGES/django.mobin22101 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/he/LC_MESSAGES/django.po1312
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/he/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/he/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/hi/LC_MESSAGES/django.mobin20096 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/hi/LC_MESSAGES/django.po1302
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/hi/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/hi/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/hr/LC_MESSAGES/django.mobin14739 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/hr/LC_MESSAGES/django.po1329
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/hr/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/hr/formats.py50
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/hu/LC_MESSAGES/django.mobin16644 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/hu/LC_MESSAGES/django.po1333
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/hu/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/hu/formats.py34
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ia/LC_MESSAGES/django.mobin14112 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ia/LC_MESSAGES/django.po1310
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/id/LC_MESSAGES/django.mobin14076 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/id/LC_MESSAGES/django.po1298
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/id/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/id/formats.py52
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/is/LC_MESSAGES/django.mobin17973 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/is/LC_MESSAGES/django.po1330
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/is/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/is/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/it/LC_MESSAGES/django.mobin19965 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/it/LC_MESSAGES/django.po1339
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/it/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/it/formats.py48
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ja/LC_MESSAGES/django.mobin21662 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ja/LC_MESSAGES/django.po1311
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ja/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ja/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ka/LC_MESSAGES/django.mobin20414 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ka/LC_MESSAGES/django.po1293
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ka/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ka/formats.py50
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/kk/LC_MESSAGES/django.mobin14683 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/kk/LC_MESSAGES/django.po1294
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/km/LC_MESSAGES/django.mobin7578 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/km/LC_MESSAGES/django.po1278
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/km/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/km/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/kn/LC_MESSAGES/django.mobin19612 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/kn/LC_MESSAGES/django.po1304
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/kn/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/kn/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ko/LC_MESSAGES/django.mobin13307 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ko/LC_MESSAGES/django.po1289
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ko/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ko/formats.py55
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/lb/LC_MESSAGES/django.mobin8120 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/lb/LC_MESSAGES/django.po1292
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/lt/LC_MESSAGES/django.mobin21286 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/lt/LC_MESSAGES/django.po1362
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/lt/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/lt/formats.py48
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/lv/LC_MESSAGES/django.mobin10483 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/lv/LC_MESSAGES/django.po1316
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/lv/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/lv/formats.py49
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/mk/LC_MESSAGES/django.mobin24450 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/mk/LC_MESSAGES/django.po1340
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/mk/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/mk/formats.py45
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ml/LC_MESSAGES/django.mobin22217 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ml/LC_MESSAGES/django.po1307
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ml/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ml/formats.py44
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/mn/LC_MESSAGES/django.mobin23582 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/mn/LC_MESSAGES/django.po1340
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/mn/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/mn/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/my/LC_MESSAGES/django.mobin2608 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/my/LC_MESSAGES/django.po1277
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/nb/LC_MESSAGES/django.mobin19532 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/nb/LC_MESSAGES/django.po1326
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/nb/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/nb/formats.py42
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ne/LC_MESSAGES/django.mobin23845 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ne/LC_MESSAGES/django.po1310
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/nl/LC_MESSAGES/django.mobin19950 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/nl/LC_MESSAGES/django.po1342
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/nl/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/nl/formats.py61
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/nn/LC_MESSAGES/django.mobin15206 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/nn/LC_MESSAGES/django.po1309
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/nn/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/nn/formats.py43
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/os/LC_MESSAGES/django.mobin19981 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/os/LC_MESSAGES/django.po1319
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/pa/LC_MESSAGES/django.mobin11297 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/pa/LC_MESSAGES/django.po1292
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/pl/LC_MESSAGES/django.mobin16660 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/pl/LC_MESSAGES/django.po1340
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/pl/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/pl/formats.py32
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/pt/LC_MESSAGES/django.mobin20054 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/pt/LC_MESSAGES/django.po1336
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/pt/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/pt/formats.py41
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/pt_BR/LC_MESSAGES/django.mobin20195 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/pt_BR/LC_MESSAGES/django.po1340
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/pt_BR/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/pt_BR/formats.py36
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ro/LC_MESSAGES/django.mobin14073 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ro/LC_MESSAGES/django.po1331
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ro/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ro/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ru/LC_MESSAGES/django.mobin26283 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ru/LC_MESSAGES/django.po1368
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ru/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ru/formats.py35
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sk/LC_MESSAGES/django.mobin20903 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sk/LC_MESSAGES/django.po1356
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sk/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sk/formats.py32
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sl/LC_MESSAGES/django.mobin21486 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sl/LC_MESSAGES/django.po1378
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sl/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sl/formats.py50
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sq/LC_MESSAGES/django.mobin16342 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sq/LC_MESSAGES/django.po1329
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sq/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sq/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sr/LC_MESSAGES/django.mobin16557 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sr/LC_MESSAGES/django.po1321
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sr/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sr/formats.py46
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sr_Latn/LC_MESSAGES/django.mobin13867 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sr_Latn/LC_MESSAGES/django.po1321
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sr_Latn/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sr_Latn/formats.py46
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sv/LC_MESSAGES/django.mobin20009 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sv/LC_MESSAGES/django.po1341
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sv/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sv/formats.py41
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sw/LC_MESSAGES/django.mobin13994 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/sw/LC_MESSAGES/django.po1302
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ta/LC_MESSAGES/django.mobin7481 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ta/LC_MESSAGES/django.po1295
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ta/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ta/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/te/LC_MESSAGES/django.mobin13734 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/te/LC_MESSAGES/django.po1296
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/te/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/te/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/th/LC_MESSAGES/django.mobin19647 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/th/LC_MESSAGES/django.po1287
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/th/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/th/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/tr/LC_MESSAGES/django.mobin20399 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/tr/LC_MESSAGES/django.po1345
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/tr/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/tr/formats.py32
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/tt/LC_MESSAGES/django.mobin15703 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/tt/LC_MESSAGES/django.po1297
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/udm/LC_MESSAGES/django.mobin13949 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/udm/LC_MESSAGES/django.po1280
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/uk/LC_MESSAGES/django.mobin25945 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/uk/LC_MESSAGES/django.po1367
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/uk/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/uk/formats.py25
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ur/LC_MESSAGES/django.mobin13231 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/ur/LC_MESSAGES/django.po1305
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/vi/LC_MESSAGES/django.mobin18801 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/vi/LC_MESSAGES/django.po1299
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/vi/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/vi/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/zh_CN/LC_MESSAGES/django.mobin16811 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/zh_CN/LC_MESSAGES/django.po1292
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/zh_CN/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/zh_CN/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/zh_TW/LC_MESSAGES/django.mobin15154 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/zh_TW/LC_MESSAGES/django.po1289
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/zh_TW/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/locale/zh_TW/formats.py24
-rw-r--r--lib/python2.7/site-packages/django/conf/project_template/manage.py10
-rw-r--r--lib/python2.7/site-packages/django/conf/project_template/project_name/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/conf/project_template/project_name/settings.py82
-rw-r--r--lib/python2.7/site-packages/django/conf/project_template/project_name/urls.py12
-rw-r--r--lib/python2.7/site-packages/django/conf/project_template/project_name/wsgi.py14
-rw-r--r--lib/python2.7/site-packages/django/conf/urls/__init__.py63
-rw-r--r--lib/python2.7/site-packages/django/conf/urls/i18n.py20
-rw-r--r--lib/python2.7/site-packages/django/conf/urls/shortcut.py10
-rw-r--r--lib/python2.7/site-packages/django/conf/urls/static.py25
-rw-r--r--lib/python2.7/site-packages/django/contrib/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/__init__.py41
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/actions.py84
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/bin/compress.py47
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/exceptions.py6
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/filters.py409
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/forms.py33
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/helpers.py356
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/af/LC_MESSAGES/django.mobin11405 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/af/LC_MESSAGES/django.po857
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/af/LC_MESSAGES/djangojs.mobin1222 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/af/LC_MESSAGES/djangojs.po169
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ar/LC_MESSAGES/django.mobin18634 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ar/LC_MESSAGES/django.po884
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.mobin4073 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.po183
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/az/LC_MESSAGES/django.mobin14308 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/az/LC_MESSAGES/django.po868
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/az/LC_MESSAGES/djangojs.mobin3616 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/az/LC_MESSAGES/djangojs.po180
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/be/LC_MESSAGES/django.mobin15871 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/be/LC_MESSAGES/django.po866
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/be/LC_MESSAGES/djangojs.mobin4323 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/be/LC_MESSAGES/djangojs.po183
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/bg/LC_MESSAGES/django.mobin17263 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/bg/LC_MESSAGES/django.po872
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.mobin4386 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.po183
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/bn/LC_MESSAGES/django.mobin19118 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/bn/LC_MESSAGES/django.po862
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.mobin2132 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.po171
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/br/LC_MESSAGES/django.mobin5204 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/br/LC_MESSAGES/django.po836
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/br/LC_MESSAGES/djangojs.mobin1690 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/br/LC_MESSAGES/djangojs.po170
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/bs/LC_MESSAGES/django.mobin10892 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/bs/LC_MESSAGES/django.po863
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.mobin1186 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.po173
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ca/LC_MESSAGES/django.mobin15543 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ca/LC_MESSAGES/django.po884
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.mobin3546 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.po185
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/django.mobin16307 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/django.po891
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.mobin3645 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.po186
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/cy/LC_MESSAGES/django.mobin4917 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/cy/LC_MESSAGES/django.po847
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.mobin1151 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.po174
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/django.mobin15801 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/django.po889
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/djangojs.mobin3518 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/djangojs.po186
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/de/LC_MESSAGES/django.mobin16592 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/de/LC_MESSAGES/django.po897
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/de/LC_MESSAGES/djangojs.mobin3679 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/de/LC_MESSAGES/djangojs.po189
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/el/LC_MESSAGES/django.mobin18603 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/el/LC_MESSAGES/django.po885
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/el/LC_MESSAGES/djangojs.mobin3123 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/el/LC_MESSAGES/djangojs.po180
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/django.mobin356 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/django.po831
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/djangojs.mobin356 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/djangojs.po165
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/en_GB/LC_MESSAGES/django.mobin12763 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/en_GB/LC_MESSAGES/django.po867
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.mobin3468 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.po184
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/django.mobin15662 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/django.po890
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.mobin3477 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.po185
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/es/LC_MESSAGES/django.mobin16633 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/es/LC_MESSAGES/django.po900
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/es/LC_MESSAGES/djangojs.mobin3598 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/es/LC_MESSAGES/djangojs.po187
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mobin16825 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po900
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.mobin3730 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.po185
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/es_MX/LC_MESSAGES/django.mobin16755 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/es_MX/LC_MESSAGES/django.po893
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.mobin3705 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.po185
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/et/LC_MESSAGES/django.mobin15669 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/et/LC_MESSAGES/django.po886
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/et/LC_MESSAGES/djangojs.mobin3442 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/et/LC_MESSAGES/djangojs.po185
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/eu/LC_MESSAGES/django.mobin15567 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/eu/LC_MESSAGES/django.po886
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.mobin3489 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.po184
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/django.mobin18680 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/django.po882
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.mobin4166 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.po182
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/fi/LC_MESSAGES/django.mobin12531 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/fi/LC_MESSAGES/django.po866
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.mobin2510 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.po179
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/django.mobin17159 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/django.po900
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.mobin3707 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.po186
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/fy_NL/LC_MESSAGES/django.mobin478 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/fy_NL/LC_MESSAGES/django.po835
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/fy_NL/LC_MESSAGES/djangojs.mobin401 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/fy_NL/LC_MESSAGES/djangojs.po166
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ga/LC_MESSAGES/django.mobin13879 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ga/LC_MESSAGES/django.po883
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.mobin3756 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.po189
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/gl/LC_MESSAGES/django.mobin15587 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/gl/LC_MESSAGES/django.po889
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.mobin3622 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.po187
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/he/LC_MESSAGES/django.mobin17165 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/he/LC_MESSAGES/django.po872
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.mobin3741 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.po182
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/hi/LC_MESSAGES/django.mobin23068 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/hi/LC_MESSAGES/django.po881
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.mobin5389 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.po182
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/hr/LC_MESSAGES/django.mobin15056 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/hr/LC_MESSAGES/django.po885
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.mobin3548 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.po186
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/django.mobin15791 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/django.po882
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.mobin3527 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.po186
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ia/LC_MESSAGES/django.mobin13436 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ia/LC_MESSAGES/django.po870
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.mobin3511 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.po182
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/django.mobin13567 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/django.po870
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.mobin3500 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po184
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/django.mobin14032 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/django.po873
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/djangojs.mobin3522 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/djangojs.po183
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/django.mobin16194 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/django.po891
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/djangojs.mobin3536 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/djangojs.po185
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/django.mobin17371 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/django.po877
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.mobin3732 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.po179
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ka/LC_MESSAGES/django.mobin23747 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ka/LC_MESSAGES/django.po884
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.mobin5267 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.po183
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/kk/LC_MESSAGES/django.mobin15278 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/kk/LC_MESSAGES/django.po865
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.mobin2773 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.po176
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/km/LC_MESSAGES/django.mobin12215 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/km/LC_MESSAGES/django.po843
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/km/LC_MESSAGES/djangojs.mobin1696 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/km/LC_MESSAGES/djangojs.po170
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/kn/LC_MESSAGES/django.mobin10920 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/kn/LC_MESSAGES/django.po845
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.mobin2355 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.po171
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/django.mobin13207 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/django.po859
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.mobin2450 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po175
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/lb/LC_MESSAGES/django.mobin913 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/lb/LC_MESSAGES/django.po836
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.mobin451 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.po168
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/django.mobin16161 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/django.po892
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.mobin3706 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.po187
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/django.mobin11155 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/django.po857
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.mobin2569 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po179
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/mk/LC_MESSAGES/django.mobin20425 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/mk/LC_MESSAGES/django.po889
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.mobin4409 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.po183
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ml/LC_MESSAGES/django.mobin19845 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ml/LC_MESSAGES/django.po862
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.mobin6119 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.po180
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/django.mobin19808 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/django.po888
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mobin4080 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po181
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/my/LC_MESSAGES/django.mobin1607 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/my/LC_MESSAGES/django.po833
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/my/LC_MESSAGES/djangojs.mobin3455 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/my/LC_MESSAGES/djangojs.po172
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/django.mobin15409 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/django.po885
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.mobin3457 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.po183
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ne/LC_MESSAGES/django.mobin19481 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ne/LC_MESSAGES/django.po856
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.mobin4876 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.po178
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/nl/LC_MESSAGES/django.mobin15938 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/nl/LC_MESSAGES/django.po890
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.mobin3654 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.po189
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/nn/LC_MESSAGES/django.mobin12877 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/nn/LC_MESSAGES/django.po868
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.mobin3439 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.po183
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/os/LC_MESSAGES/django.mobin18448 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/os/LC_MESSAGES/django.po875
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/os/LC_MESSAGES/djangojs.mobin4208 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/os/LC_MESSAGES/djangojs.po182
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/django.mobin12748 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/django.po841
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.mobin1630 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.po169
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/django.mobin15933 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/django.po896
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mobin3470 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po186
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/pt/LC_MESSAGES/django.mobin16490 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/pt/LC_MESSAGES/django.po894
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.mobin3508 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.po183
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mobin16105 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po891
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.mobin3593 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po183
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/django.mobin13484 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/django.po877
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mobin3604 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po189
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/django.mobin20309 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/django.po892
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.mobin4679 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po190
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sk/LC_MESSAGES/django.mobin16172 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sk/LC_MESSAGES/django.po891
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.mobin3511 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.po186
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sl/LC_MESSAGES/django.mobin15854 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sl/LC_MESSAGES/django.po892
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.mobin3501 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.po186
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/django.mobin16183 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/django.po890
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.mobin3593 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.po184
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/django.mobin16805 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/django.po871
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.mobin3894 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.po179
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.mobin13507 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.po871
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.mobin3291 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.po179
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sv/LC_MESSAGES/django.mobin15719 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sv/LC_MESSAGES/django.po888
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.mobin3569 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.po186
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sw/LC_MESSAGES/django.mobin15858 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sw/LC_MESSAGES/django.po888
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.mobin3512 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.po183
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ta/LC_MESSAGES/django.mobin11834 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ta/LC_MESSAGES/django.po849
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.mobin1924 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.po169
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/te/LC_MESSAGES/django.mobin13574 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/te/LC_MESSAGES/django.po845
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/te/LC_MESSAGES/djangojs.mobin1901 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/te/LC_MESSAGES/djangojs.po170
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/django.mobin22211 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/django.po857
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/djangojs.mobin5118 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/djangojs.po181
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/django.mobin16068 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/django.po889
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.mobin3526 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.po183
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/tt/LC_MESSAGES/django.mobin15379 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/tt/LC_MESSAGES/django.po861
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.mobin3030 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.po177
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/udm/LC_MESSAGES/django.mobin627 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/udm/LC_MESSAGES/django.po832
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.mobin439 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.po167
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/uk/LC_MESSAGES/django.mobin19038 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/uk/LC_MESSAGES/django.po887
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.mobin4278 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.po186
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ur/LC_MESSAGES/django.mobin15732 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ur/LC_MESSAGES/django.po868
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.mobin3063 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.po176
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/vi/LC_MESSAGES/django.mobin17029 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/vi/LC_MESSAGES/django.po886
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.mobin3711 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.po184
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/zh_CN/LC_MESSAGES/django.mobin14842 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/zh_CN/LC_MESSAGES/django.po861
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/zh_CN/LC_MESSAGES/djangojs.mobin3244 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/zh_CN/LC_MESSAGES/djangojs.po179
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/zh_TW/LC_MESSAGES/django.mobin14841 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/zh_TW/LC_MESSAGES/django.po859
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/zh_TW/LC_MESSAGES/djangojs.mobin3323 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/locale/zh_TW/LC_MESSAGES/djangojs.po178
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/models.py81
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/options.py1718
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/sites.py452
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/css/base.css840
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/css/changelists.css293
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/css/dashboard.css30
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/css/forms.css364
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/css/ie.css63
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/css/login.css60
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/css/rtl.css250
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/css/widgets.css578
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/changelist-bg.gifbin58 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/changelist-bg_rtl.gifbin75 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/chooser-bg.gifbin199 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/chooser_stacked-bg.gifbin212 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/default-bg-reverse.gifbin843 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/default-bg.gifbin844 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/deleted-overlay.gifbin45 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_off.pngbin711 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_on.pngbin506 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon-no.gifbin176 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon-unknown.gifbin130 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon-yes.gifbin299 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_addlink.gifbin119 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_alert.gifbin145 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_calendar.gifbin192 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_changelink.gifbin119 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_clock.gifbin390 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_deletelink.gifbin181 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_error.gifbin319 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_searchbox.pngbin667 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_success.gifbin341 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-delete-8bit.pngbin477 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-delete.pngbin781 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-restore-8bit.pngbin447 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-restore.pngbin623 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-splitter-bg.gifbin102 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/nav-bg-grabber.gifbin116 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/nav-bg-reverse.gifbin186 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/nav-bg-selected.gifbin265 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/nav-bg.gifbin273 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/selector-icons.gifbin2771 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/selector-search.gifbin552 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/sorting-icons.gifbin369 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tool-left.gifbin197 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tool-left_over.gifbin203 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tool-right.gifbin198 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tool-right_over.gifbin200 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tooltag-add.gifbin932 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tooltag-add_over.gifbin336 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tooltag-arrowright.gifbin351 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tooltag-arrowright_over.gifbin354 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/LICENSE-JQUERY.txt20
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/SelectBox.js111
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/SelectFilter2.js161
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/actions.js139
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/actions.min.js6
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js287
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js97
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/calendar.js138
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/collapse.js24
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/collapse.min.js2
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/core.js222
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/inlines.js272
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/inlines.min.js9
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/jquery.init.js7
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/jquery.js9597
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/jquery.min.js5
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/prepopulate.js34
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/prepopulate.min.js1
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/timeparse.js94
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/static/admin/js/urlify.js140
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/404.html12
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/500.html17
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/actions.html16
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/app_index.html16
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/auth/user/add_form.html14
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/auth/user/change_password.html57
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/base.html79
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/base_site.html10
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/change_form.html78
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/change_list.html98
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/change_list_results.html38
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/date_hierarchy.html10
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/delete_confirmation.html42
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/delete_selected_confirmation.html47
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/edit_inline/stacked.html30
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/edit_inline/tabular.html79
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/filter.html8
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/includes/fieldset.html29
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/index.html84
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/invalid_setup.html13
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/login.html56
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/object_history.html42
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/pagination.html12
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/popup_response.html9
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/prepopulated_fields_js.html27
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/search_form.html17
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/admin/submit_line.html11
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/registration/logged_out.html12
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_change_done.html19
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_change_form.html55
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_complete.html21
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_confirm.html37
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_done.html21
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_email.html14
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_form.html24
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templatetags/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_list.py394
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_modify.py59
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_static.py11
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_urls.py52
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/templatetags/log.py56
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/tests.py124
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/util.py468
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/validation.py429
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/views/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/views/decorators.py30
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/views/main.py427
-rw-r--r--lib/python2.7/site-packages/django/contrib/admin/widgets.py334
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/af/LC_MESSAGES/django.mobin714 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/af/LC_MESSAGES/django.po363
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ar/LC_MESSAGES/django.mobin4169 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ar/LC_MESSAGES/django.po374
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/az/LC_MESSAGES/django.mobin3620 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/az/LC_MESSAGES/django.po377
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/be/LC_MESSAGES/django.mobin4528 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/be/LC_MESSAGES/django.po374
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/bg/LC_MESSAGES/django.mobin4472 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/bg/LC_MESSAGES/django.po381
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/bn/LC_MESSAGES/django.mobin4978 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/bn/LC_MESSAGES/django.po373
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/br/LC_MESSAGES/django.mobin871 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/br/LC_MESSAGES/django.po364
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/bs/LC_MESSAGES/django.mobin3568 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/bs/LC_MESSAGES/django.po379
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ca/LC_MESSAGES/django.mobin3771 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ca/LC_MESSAGES/django.po379
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/cs/LC_MESSAGES/django.mobin7539 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/cs/LC_MESSAGES/django.po395
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/cy/LC_MESSAGES/django.mobin1557 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/cy/LC_MESSAGES/django.po369
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/da/LC_MESSAGES/django.mobin3767 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/da/LC_MESSAGES/django.po379
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/de/LC_MESSAGES/django.mobin7522 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/de/LC_MESSAGES/django.po399
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/el/LC_MESSAGES/django.mobin4929 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/el/LC_MESSAGES/django.po384
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/en/LC_MESSAGES/django.mobin356 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/en/LC_MESSAGES/django.po360
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.mobin3564 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.po375
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/eo/LC_MESSAGES/django.mobin4995 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/eo/LC_MESSAGES/django.po384
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/es/LC_MESSAGES/django.mobin7585 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/es/LC_MESSAGES/django.po399
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.mobin7618 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.po398
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.mobin3717 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.po378
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/et/LC_MESSAGES/django.mobin7257 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/et/LC_MESSAGES/django.po394
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/eu/LC_MESSAGES/django.mobin7125 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/eu/LC_MESSAGES/django.po392
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/fa/LC_MESSAGES/django.mobin4914 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/fa/LC_MESSAGES/django.po377
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/fi/LC_MESSAGES/django.mobin3519 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/fi/LC_MESSAGES/django.po375
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/fr/LC_MESSAGES/django.mobin7739 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/fr/LC_MESSAGES/django.po399
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/fy_NL/LC_MESSAGES/django.mobin478 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/fy_NL/LC_MESSAGES/django.po363
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ga/LC_MESSAGES/django.mobin3807 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ga/LC_MESSAGES/django.po381
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/gl/LC_MESSAGES/django.mobin4306 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/gl/LC_MESSAGES/django.po378
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/he/LC_MESSAGES/django.mobin7945 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/he/LC_MESSAGES/django.po382
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/hi/LC_MESSAGES/django.mobin5411 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/hi/LC_MESSAGES/django.po375
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/hr/LC_MESSAGES/django.mobin3706 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/hr/LC_MESSAGES/django.po382
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/hu/LC_MESSAGES/django.mobin3684 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/hu/LC_MESSAGES/django.po377
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ia/LC_MESSAGES/django.mobin3710 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ia/LC_MESSAGES/django.po377
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/id/LC_MESSAGES/django.mobin3613 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/id/LC_MESSAGES/django.po377
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/is/LC_MESSAGES/django.mobin3693 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/is/LC_MESSAGES/django.po380
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/it/LC_MESSAGES/django.mobin7461 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/it/LC_MESSAGES/django.po400
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ja/LC_MESSAGES/django.mobin7345 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ja/LC_MESSAGES/django.po387
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ka/LC_MESSAGES/django.mobin5599 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ka/LC_MESSAGES/django.po377
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/kk/LC_MESSAGES/django.mobin2349 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/kk/LC_MESSAGES/django.po365
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/km/LC_MESSAGES/django.mobin3529 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/km/LC_MESSAGES/django.po371
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/kn/LC_MESSAGES/django.mobin4839 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/kn/LC_MESSAGES/django.po375
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ko/LC_MESSAGES/django.mobin3557 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ko/LC_MESSAGES/django.po373
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/lt/LC_MESSAGES/django.mobin3748 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/lt/LC_MESSAGES/django.po380
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/lv/LC_MESSAGES/django.mobin3509 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/lv/LC_MESSAGES/django.po376
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/mk/LC_MESSAGES/django.mobin9595 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/mk/LC_MESSAGES/django.po398
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ml/LC_MESSAGES/django.mobin6023 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ml/LC_MESSAGES/django.po375
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/mn/LC_MESSAGES/django.mobin6473 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/mn/LC_MESSAGES/django.po379
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/my/LC_MESSAGES/django.mobin1857 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/my/LC_MESSAGES/django.po364
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/nb/LC_MESSAGES/django.mobin7236 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/nb/LC_MESSAGES/django.po392
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ne/LC_MESSAGES/django.mobin1896 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ne/LC_MESSAGES/django.po364
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/nl/LC_MESSAGES/django.mobin7288 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/nl/LC_MESSAGES/django.po395
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/nn/LC_MESSAGES/django.mobin3430 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/nn/LC_MESSAGES/django.po377
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/os/LC_MESSAGES/django.mobin4395 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/os/LC_MESSAGES/django.po373
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/pa/LC_MESSAGES/django.mobin1825 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/pa/LC_MESSAGES/django.po364
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/pl/LC_MESSAGES/django.mobin3683 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/pl/LC_MESSAGES/django.po379
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/pt/LC_MESSAGES/django.mobin7526 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/pt/LC_MESSAGES/django.po398
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.mobin7573 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.po394
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ro/LC_MESSAGES/django.mobin3630 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ro/LC_MESSAGES/django.po382
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ru/LC_MESSAGES/django.mobin9727 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ru/LC_MESSAGES/django.po399
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/sk/LC_MESSAGES/django.mobin5238 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/sk/LC_MESSAGES/django.po380
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/sl/LC_MESSAGES/django.mobin7338 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/sl/LC_MESSAGES/django.po393
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/sq/LC_MESSAGES/django.mobin3720 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/sq/LC_MESSAGES/django.po379
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/sr/LC_MESSAGES/django.mobin4660 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/sr/LC_MESSAGES/django.po379
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.mobin3758 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.po379
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/sv/LC_MESSAGES/django.mobin6676 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/sv/LC_MESSAGES/django.po391
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/sw/LC_MESSAGES/django.mobin3615 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/sw/LC_MESSAGES/django.po377
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ta/LC_MESSAGES/django.mobin4601 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ta/LC_MESSAGES/django.po373
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/te/LC_MESSAGES/django.mobin2266 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/te/LC_MESSAGES/django.po365
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/th/LC_MESSAGES/django.mobin4708 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/th/LC_MESSAGES/django.po372
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/tr/LC_MESSAGES/django.mobin7361 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/tr/LC_MESSAGES/django.po391
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/tt/LC_MESSAGES/django.mobin3766 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/tt/LC_MESSAGES/django.po370
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/udm/LC_MESSAGES/django.mobin623 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/udm/LC_MESSAGES/django.po363
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/uk/LC_MESSAGES/django.mobin4866 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/uk/LC_MESSAGES/django.po381
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ur/LC_MESSAGES/django.mobin4290 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/ur/LC_MESSAGES/django.po380
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/vi/LC_MESSAGES/django.mobin2013 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/vi/LC_MESSAGES/django.po365
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/zh_CN/LC_MESSAGES/django.mobin3481 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/zh_CN/LC_MESSAGES/django.po371
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/zh_TW/LC_MESSAGES/django.mobin3464 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/locale/zh_TW/LC_MESSAGES/django.po372
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/middleware.py23
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/models.py1
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/bookmarklets.html38
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/index.html34
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/missing_docutils.html22
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/model_detail.html54
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/model_index.html52
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/template_detail.html29
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/template_filter_index.html54
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/template_tag_index.html54
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/view_detail.html33
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/view_index.html48
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/tests/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/tests/test_fields.py42
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/urls.py41
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/utils.py106
-rw-r--r--lib/python2.7/site-packages/django/contrib/admindocs/views.py384
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/__init__.py154
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/admin.py183
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/backends.py136
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/context_processors.py65
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/create_superuser.py8
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/decorators.py72
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/fixtures/authtestdata.json110
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/fixtures/context-processors-users.xml17
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/fixtures/custom_user.json14
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/fixtures/natural.json32
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/fixtures/regular.json30
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/forms.py367
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/handlers/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/handlers/modwsgi.py47
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/hashers.py515
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/af/LC_MESSAGES/django.mobin796 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/af/LC_MESSAGES/django.po271
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ar/LC_MESSAGES/django.mobin6187 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ar/LC_MESSAGES/django.po282
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/az/LC_MESSAGES/django.mobin3748 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/az/LC_MESSAGES/django.po279
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/be/LC_MESSAGES/django.mobin5753 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/be/LC_MESSAGES/django.po284
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/bg/LC_MESSAGES/django.mobin5647 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/bg/LC_MESSAGES/django.po283
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/bn/LC_MESSAGES/django.mobin4263 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/bn/LC_MESSAGES/django.po273
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/br/LC_MESSAGES/django.mobin1153 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/br/LC_MESSAGES/django.po272
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/bs/LC_MESSAGES/django.mobin3668 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/bs/LC_MESSAGES/django.po282
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ca/LC_MESSAGES/django.mobin5198 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ca/LC_MESSAGES/django.po285
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/cs/LC_MESSAGES/django.mobin5443 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/cs/LC_MESSAGES/django.po289
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/cy/LC_MESSAGES/django.mobin1739 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/cy/LC_MESSAGES/django.po274
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/da/LC_MESSAGES/django.mobin5249 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/da/LC_MESSAGES/django.po288
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/de/LC_MESSAGES/django.mobin5440 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/de/LC_MESSAGES/django.po291
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/el/LC_MESSAGES/django.mobin5372 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/el/LC_MESSAGES/django.po288
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/en/LC_MESSAGES/django.mobin356 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/en/LC_MESSAGES/django.po268
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/en_GB/LC_MESSAGES/django.mobin4396 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/en_GB/LC_MESSAGES/django.po283
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/eo/LC_MESSAGES/django.mobin5204 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/eo/LC_MESSAGES/django.po286
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/es/LC_MESSAGES/django.mobin5457 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/es/LC_MESSAGES/django.po289
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/es_AR/LC_MESSAGES/django.mobin5648 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/es_AR/LC_MESSAGES/django.po293
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/es_MX/LC_MESSAGES/django.mobin4713 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/es_MX/LC_MESSAGES/django.po287
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/et/LC_MESSAGES/django.mobin5274 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/et/LC_MESSAGES/django.po287
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/eu/LC_MESSAGES/django.mobin5182 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/eu/LC_MESSAGES/django.po289
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/fa/LC_MESSAGES/django.mobin6350 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/fa/LC_MESSAGES/django.po285
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/fi/LC_MESSAGES/django.mobin4998 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/fi/LC_MESSAGES/django.po286
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/fr/LC_MESSAGES/django.mobin5734 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/fr/LC_MESSAGES/django.po293
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/fy_NL/LC_MESSAGES/django.mobin478 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/fy_NL/LC_MESSAGES/django.po271
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ga/LC_MESSAGES/django.mobin4703 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ga/LC_MESSAGES/django.po292
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/gl/LC_MESSAGES/django.mobin5328 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/gl/LC_MESSAGES/django.po285
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/he/LC_MESSAGES/django.mobin5821 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/he/LC_MESSAGES/django.po282
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/hi/LC_MESSAGES/django.mobin7575 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/hi/LC_MESSAGES/django.po284
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/hr/LC_MESSAGES/django.mobin5398 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/hr/LC_MESSAGES/django.po295
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/hu/LC_MESSAGES/django.mobin5338 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/hu/LC_MESSAGES/django.po288
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ia/LC_MESSAGES/django.mobin4613 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ia/LC_MESSAGES/django.po285
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/id/LC_MESSAGES/django.mobin5093 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/id/LC_MESSAGES/django.po288
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/is/LC_MESSAGES/django.mobin4668 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/is/LC_MESSAGES/django.po290
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/it/LC_MESSAGES/django.mobin5302 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/it/LC_MESSAGES/django.po286
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ja/LC_MESSAGES/django.mobin5913 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ja/LC_MESSAGES/django.po286
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ka/LC_MESSAGES/django.mobin8206 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ka/LC_MESSAGES/django.po288
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/kk/LC_MESSAGES/django.mobin4429 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/kk/LC_MESSAGES/django.po276
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/km/LC_MESSAGES/django.mobin2910 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/km/LC_MESSAGES/django.po272
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/kn/LC_MESSAGES/django.mobin4305 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/kn/LC_MESSAGES/django.po275
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ko/LC_MESSAGES/django.mobin3686 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ko/LC_MESSAGES/django.po276
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/lt/LC_MESSAGES/django.mobin5477 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/lt/LC_MESSAGES/django.po290
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/lv/LC_MESSAGES/django.mobin3631 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/lv/LC_MESSAGES/django.po275
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/mk/LC_MESSAGES/django.mobin6819 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/mk/LC_MESSAGES/django.po288
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ml/LC_MESSAGES/django.mobin8071 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ml/LC_MESSAGES/django.po283
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/mn/LC_MESSAGES/django.mobin6594 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/mn/LC_MESSAGES/django.po288
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/my/LC_MESSAGES/django.mobin1122 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/my/LC_MESSAGES/django.po272
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/nb/LC_MESSAGES/django.mobin5112 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/nb/LC_MESSAGES/django.po283
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ne/LC_MESSAGES/django.mobin5469 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ne/LC_MESSAGES/django.po274
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/nl/LC_MESSAGES/django.mobin5292 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/nl/LC_MESSAGES/django.po293
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/nn/LC_MESSAGES/django.mobin3456 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/nn/LC_MESSAGES/django.po273
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/os/LC_MESSAGES/django.mobin6233 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/os/LC_MESSAGES/django.po284
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/pa/LC_MESSAGES/django.mobin4557 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/pa/LC_MESSAGES/django.po273
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/pl/LC_MESSAGES/django.mobin5214 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/pl/LC_MESSAGES/django.po289
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/pt/LC_MESSAGES/django.mobin5463 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/pt/LC_MESSAGES/django.po289
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.mobin5240 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.po294
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ro/LC_MESSAGES/django.mobin3684 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ro/LC_MESSAGES/django.po285
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ru/LC_MESSAGES/django.mobin6897 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ru/LC_MESSAGES/django.po288
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/sk/LC_MESSAGES/django.mobin5380 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/sk/LC_MESSAGES/django.po284
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/sl/LC_MESSAGES/django.mobin5220 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/sl/LC_MESSAGES/django.po289
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/sq/LC_MESSAGES/django.mobin5337 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/sq/LC_MESSAGES/django.po287
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/sr/LC_MESSAGES/django.mobin5566 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/sr/LC_MESSAGES/django.po286
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.mobin4511 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.po287
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/sv/LC_MESSAGES/django.mobin5271 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/sv/LC_MESSAGES/django.po289
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/sw/LC_MESSAGES/django.mobin5179 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/sw/LC_MESSAGES/django.po281
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ta/LC_MESSAGES/django.mobin2977 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ta/LC_MESSAGES/django.po272
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/te/LC_MESSAGES/django.mobin3230 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/te/LC_MESSAGES/django.po274
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/th/LC_MESSAGES/django.mobin7384 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/th/LC_MESSAGES/django.po275
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/tr/LC_MESSAGES/django.mobin5314 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/tr/LC_MESSAGES/django.po293
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/tt/LC_MESSAGES/django.mobin865 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/tt/LC_MESSAGES/django.po271
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/uk/LC_MESSAGES/django.mobin6754 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/uk/LC_MESSAGES/django.po292
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ur/LC_MESSAGES/django.mobin889 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/ur/LC_MESSAGES/django.po271
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/vi/LC_MESSAGES/django.mobin4684 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/vi/LC_MESSAGES/django.po282
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/zh_CN/LC_MESSAGES/django.mobin4862 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/zh_CN/LC_MESSAGES/django.po278
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/zh_TW/LC_MESSAGES/django.mobin4851 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/locale/zh_TW/LC_MESSAGES/django.po278
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/management/__init__.py193
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/management/commands/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/management/commands/changepassword.py63
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/management/commands/createsuperuser.py143
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/middleware.py91
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/models.py527
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/signals.py5
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/templates/registration/password_reset_subject.txt3
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/__init__.py1
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/custom_user.py200
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_access.html1
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_messages.html1
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_no_access.html1
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_perm_in_perms.html4
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_perms.html4
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_test_access.html1
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_user.html4
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/logged_out.html1
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/login.html1
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_change_form.html1
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_complete.html1
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_confirm.html5
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_done.html1
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_email.html1
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_form.html1
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_subject.txt1
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/test_auth_backends.py506
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/test_basic.py257
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/test_context_processors.py170
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/test_decorators.py51
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/test_forms.py432
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/test_handlers.py79
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/test_hashers.py322
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/test_management.py249
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/test_models.py168
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/test_remote_user.py198
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/test_signals.py80
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/test_tokens.py69
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/test_views.py780
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/urls.py90
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/urls_admin.py18
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tests/utils.py9
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/tokens.py73
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/urls.py22
-rw-r--r--lib/python2.7/site-packages/django/contrib/auth/views.py284
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/__init__.py94
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/admin.py86
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/feeds.py31
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/forms.py194
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/af/LC_MESSAGES/django.mobin551 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/af/LC_MESSAGES/django.po287
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ar/LC_MESSAGES/django.mobin6516 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ar/LC_MESSAGES/django.po315
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/az/LC_MESSAGES/django.mobin4595 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/az/LC_MESSAGES/django.po299
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/be/LC_MESSAGES/django.mobin6152 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/be/LC_MESSAGES/django.po309
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/bg/LC_MESSAGES/django.mobin6063 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/bg/LC_MESSAGES/django.po303
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/bn/LC_MESSAGES/django.mobin6353 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/bn/LC_MESSAGES/django.po297
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/br/LC_MESSAGES/django.mobin1958 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/br/LC_MESSAGES/django.po288
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/bs/LC_MESSAGES/django.mobin4758 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/bs/LC_MESSAGES/django.po305
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ca/LC_MESSAGES/django.mobin4866 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ca/LC_MESSAGES/django.po305
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/cs/LC_MESSAGES/django.mobin5499 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/cs/LC_MESSAGES/django.po304
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/cy/LC_MESSAGES/django.mobin1094 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/cy/LC_MESSAGES/django.po302
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/da/LC_MESSAGES/django.mobin5125 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/da/LC_MESSAGES/django.po305
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/de/LC_MESSAGES/django.mobin5552 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/de/LC_MESSAGES/django.po304
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/el/LC_MESSAGES/django.mobin6468 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/el/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/en/LC_MESSAGES/django.mobin356 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/en/LC_MESSAGES/django.po284
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/en_GB/LC_MESSAGES/django.mobin4503 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/en_GB/LC_MESSAGES/django.po302
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/eo/LC_MESSAGES/django.mobin5209 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/eo/LC_MESSAGES/django.po303
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/es/LC_MESSAGES/django.mobin5454 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/es/LC_MESSAGES/django.po306
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/es_AR/LC_MESSAGES/django.mobin5549 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/es_AR/LC_MESSAGES/django.po302
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/es_MX/LC_MESSAGES/django.mobin5438 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/es_MX/LC_MESSAGES/django.po301
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/et/LC_MESSAGES/django.mobin5314 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/et/LC_MESSAGES/django.po301
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/eu/LC_MESSAGES/django.mobin5194 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/eu/LC_MESSAGES/django.po304
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/fa/LC_MESSAGES/django.mobin5824 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/fa/LC_MESSAGES/django.po296
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/fi/LC_MESSAGES/django.mobin4704 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/fi/LC_MESSAGES/django.po300
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/fr/LC_MESSAGES/django.mobin5638 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/fr/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/fy_NL/LC_MESSAGES/django.mobin478 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/fy_NL/LC_MESSAGES/django.po287
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ga/LC_MESSAGES/django.mobin5150 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ga/LC_MESSAGES/django.po316
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/gl/LC_MESSAGES/django.mobin5097 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/gl/LC_MESSAGES/django.po306
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/he/LC_MESSAGES/django.mobin5579 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/he/LC_MESSAGES/django.po296
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/hi/LC_MESSAGES/django.mobin7235 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/hi/LC_MESSAGES/django.po303
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/hr/LC_MESSAGES/django.mobin4726 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/hr/LC_MESSAGES/django.po310
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/hu/LC_MESSAGES/django.mobin4960 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/hu/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ia/LC_MESSAGES/django.mobin4707 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ia/LC_MESSAGES/django.po304
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/id/LC_MESSAGES/django.mobin4590 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/id/LC_MESSAGES/django.po298
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/is/LC_MESSAGES/django.mobin5265 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/is/LC_MESSAGES/django.po303
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/it/LC_MESSAGES/django.mobin5282 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/it/LC_MESSAGES/django.po304
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ja/LC_MESSAGES/django.mobin5667 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ja/LC_MESSAGES/django.po297
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ka/LC_MESSAGES/django.mobin7169 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ka/LC_MESSAGES/django.po297
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/kk/LC_MESSAGES/django.mobin5463 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/kk/LC_MESSAGES/django.po296
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/km/LC_MESSAGES/django.mobin2172 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/km/LC_MESSAGES/django.po291
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/kn/LC_MESSAGES/django.mobin2251 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/kn/LC_MESSAGES/django.po292
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ko/LC_MESSAGES/django.mobin4834 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ko/LC_MESSAGES/django.po291
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/lb/LC_MESSAGES/django.mobin536 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/lb/LC_MESSAGES/django.po287
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/lt/LC_MESSAGES/django.mobin5504 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/lt/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/lv/LC_MESSAGES/django.mobin4835 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/lv/LC_MESSAGES/django.po305
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/mk/LC_MESSAGES/django.mobin6875 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/mk/LC_MESSAGES/django.po304
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ml/LC_MESSAGES/django.mobin7668 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ml/LC_MESSAGES/django.po298
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/mn/LC_MESSAGES/django.mobin6907 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/mn/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/my/LC_MESSAGES/django.mobin1060 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/my/LC_MESSAGES/django.po284
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/nb/LC_MESSAGES/django.mobin5138 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/nb/LC_MESSAGES/django.po305
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ne/LC_MESSAGES/django.mobin3336 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ne/LC_MESSAGES/django.po290
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/nl/LC_MESSAGES/django.mobin5342 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/nl/LC_MESSAGES/django.po306
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/nn/LC_MESSAGES/django.mobin4594 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/nn/LC_MESSAGES/django.po302
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/os/LC_MESSAGES/django.mobin6292 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/os/LC_MESSAGES/django.po300
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/pa/LC_MESSAGES/django.mobin4191 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/pa/LC_MESSAGES/django.po293
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/pl/LC_MESSAGES/django.mobin4908 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/pl/LC_MESSAGES/django.po310
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/pt/LC_MESSAGES/django.mobin5128 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/pt/LC_MESSAGES/django.po305
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/pt_BR/LC_MESSAGES/django.mobin5436 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/pt_BR/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ro/LC_MESSAGES/django.mobin4991 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ro/LC_MESSAGES/django.po311
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ru/LC_MESSAGES/django.mobin7369 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ru/LC_MESSAGES/django.po312
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/sk/LC_MESSAGES/django.mobin5571 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/sk/LC_MESSAGES/django.po308
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/sl/LC_MESSAGES/django.mobin5652 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/sl/LC_MESSAGES/django.po312
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/sq/LC_MESSAGES/django.mobin5276 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/sq/LC_MESSAGES/django.po304
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/sr/LC_MESSAGES/django.mobin5927 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/sr/LC_MESSAGES/django.po306
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/sr_Latn/LC_MESSAGES/django.mobin4795 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/sr_Latn/LC_MESSAGES/django.po306
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/sv/LC_MESSAGES/django.mobin5224 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/sv/LC_MESSAGES/django.po303
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/sw/LC_MESSAGES/django.mobin3816 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/sw/LC_MESSAGES/django.po300
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ta/LC_MESSAGES/django.mobin2303 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ta/LC_MESSAGES/django.po295
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/te/LC_MESSAGES/django.mobin4929 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/te/LC_MESSAGES/django.po290
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/th/LC_MESSAGES/django.mobin6792 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/th/LC_MESSAGES/django.po293
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/tr/LC_MESSAGES/django.mobin5372 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/tr/LC_MESSAGES/django.po303
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/tt/LC_MESSAGES/django.mobin441 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/tt/LC_MESSAGES/django.po283
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/uk/LC_MESSAGES/django.mobin6135 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/uk/LC_MESSAGES/django.po308
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ur/LC_MESSAGES/django.mobin447 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/ur/LC_MESSAGES/django.po287
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/vi/LC_MESSAGES/django.mobin5593 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/vi/LC_MESSAGES/django.po298
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/zh_CN/LC_MESSAGES/django.mobin4780 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/zh_CN/LC_MESSAGES/django.po293
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/zh_TW/LC_MESSAGES/django.mobin4783 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/locale/zh_TW/LC_MESSAGES/django.po291
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/managers.py22
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/models.py200
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/moderation.py356
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/signals.py21
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/templates/comments/400-debug.html55
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/templates/comments/approve.html15
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/templates/comments/approved.html8
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/templates/comments/base.html10
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/templates/comments/delete.html15
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/templates/comments/deleted.html8
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/templates/comments/flag.html15
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/templates/comments/flagged.html8
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/templates/comments/form.html20
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/templates/comments/list.html10
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/templates/comments/posted.html8
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/templates/comments/preview.html36
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/templatetags/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/templatetags/comments.py341
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/urls.py16
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/views/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/views/comments.py137
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/views/moderation.py165
-rw-r--r--lib/python2.7/site-packages/django/contrib/comments/views/utils.py67
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/generic.py508
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.mobin749 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/az/LC_MESSAGES/django.mobin637 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/az/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/be/LC_MESSAGES/django.mobin1276 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/be/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.mobin1206 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.mobin718 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/br/LC_MESSAGES/django.mobin443 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/br/LC_MESSAGES/django.po44
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.mobin703 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.mobin1088 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.mobin1050 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.mobin605 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/da/LC_MESSAGES/django.mobin1040 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/da/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/de/LC_MESSAGES/django.mobin1058 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/de/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/el/LC_MESSAGES/django.mobin674 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/el/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/en/LC_MESSAGES/django.mobin356 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/en/LC_MESSAGES/django.po41
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.mobin1056 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.mobin1046 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.po44
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/es/LC_MESSAGES/django.mobin1096 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/es/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.mobin1094 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.mobin1112 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/et/LC_MESSAGES/django.mobin1027 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/et/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.mobin1034 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.mobin1110 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.mobin1051 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.mobin1067 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/fy_NL/LC_MESSAGES/django.mobin401 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/fy_NL/LC_MESSAGES/django.po42
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.mobin1086 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.mobin1092 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/he/LC_MESSAGES/django.mobin1117 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/he/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.mobin1324 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.mobin1111 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.mobin1075 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.mobin1082 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/id/LC_MESSAGES/django.mobin1028 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/id/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/is/LC_MESSAGES/django.mobin1027 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/is/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/it/LC_MESSAGES/django.mobin1067 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/it/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.mobin1187 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.po49
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.mobin1357 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.mobin666 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/km/LC_MESSAGES/django.mobin681 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/km/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.mobin717 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.mobin633 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.mobin1107 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.mobin665 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.mobin1207 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.mobin1381 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.mobin1189 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/my/LC_MESSAGES/django.mobin1452 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/my/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.mobin1040 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.mobin1276 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.mobin1040 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.mobin1060 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/os/LC_MESSAGES/django.mobin1119 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/os/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.mobin700 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.mobin1127 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.mobin1080 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.mobin1089 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.mobin672 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.mobin1298 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.mobin1061 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.mobin1098 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.mobin1083 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.mobin1203 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.mobin1114 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.mobin1042 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.mobin566 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.po44
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.mobin681 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/te/LC_MESSAGES/django.mobin693 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/te/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/th/LC_MESSAGES/django.mobin1189 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/th/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.mobin1067 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.mobin662 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.mobin1234 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.po48
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.mobin674 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.mobin1111 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/zh_CN/LC_MESSAGES/django.mobin1022 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/zh_CN/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/zh_TW/LC_MESSAGES/django.mobin1036 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/locale/zh_TW/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/management.py94
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/models.py177
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/tests.py283
-rw-r--r--lib/python2.7/site-packages/django/contrib/contenttypes/views.py82
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/admin.py16
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/fixtures/example_site.json11
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/fixtures/sample_flatpages.json63
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/forms.py50
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/af/LC_MESSAGES/django.mobin566 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/af/LC_MESSAGES/django.po91
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ar/LC_MESSAGES/django.mobin2479 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ar/LC_MESSAGES/django.po100
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/az/LC_MESSAGES/django.mobin1867 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/az/LC_MESSAGES/django.po101
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/be/LC_MESSAGES/django.mobin2731 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/be/LC_MESSAGES/django.po100
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/bg/LC_MESSAGES/django.mobin2550 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/bg/LC_MESSAGES/django.po99
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/bn/LC_MESSAGES/django.mobin2003 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/bn/LC_MESSAGES/django.po94
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/br/LC_MESSAGES/django.mobin634 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/br/LC_MESSAGES/django.po92
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/bs/LC_MESSAGES/django.mobin1869 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/bs/LC_MESSAGES/django.po102
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ca/LC_MESSAGES/django.mobin2106 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ca/LC_MESSAGES/django.po100
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/cs/LC_MESSAGES/django.mobin2155 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/cs/LC_MESSAGES/django.po98
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/cy/LC_MESSAGES/django.mobin1295 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/cy/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/da/LC_MESSAGES/django.mobin2124 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/da/LC_MESSAGES/django.po103
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/de/LC_MESSAGES/django.mobin2211 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/de/LC_MESSAGES/django.po101
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/el/LC_MESSAGES/django.mobin2192 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/el/LC_MESSAGES/django.po100
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/en/LC_MESSAGES/django.mobin356 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/en/LC_MESSAGES/django.po88
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.mobin2080 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.po99
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/eo/LC_MESSAGES/django.mobin2143 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/eo/LC_MESSAGES/django.po98
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/es/LC_MESSAGES/django.mobin2113 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/es/LC_MESSAGES/django.po99
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.mobin2140 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.po99
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.mobin2156 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.po98
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.mobin584 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.po91
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/et/LC_MESSAGES/django.mobin2097 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/et/LC_MESSAGES/django.po99
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/eu/LC_MESSAGES/django.mobin2091 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/eu/LC_MESSAGES/django.po101
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/fa/LC_MESSAGES/django.mobin2435 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/fa/LC_MESSAGES/django.po99
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/fi/LC_MESSAGES/django.mobin2147 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/fi/LC_MESSAGES/django.po101
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/fr/LC_MESSAGES/django.mobin2264 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/fr/LC_MESSAGES/django.po102
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/fy_NL/LC_MESSAGES/django.mobin401 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/fy_NL/LC_MESSAGES/django.po85
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ga/LC_MESSAGES/django.mobin2222 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ga/LC_MESSAGES/django.po102
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/gl/LC_MESSAGES/django.mobin2146 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/gl/LC_MESSAGES/django.po100
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/he/LC_MESSAGES/django.mobin2277 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/he/LC_MESSAGES/django.po99
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/hi/LC_MESSAGES/django.mobin2901 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/hi/LC_MESSAGES/django.po96
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/hr/LC_MESSAGES/django.mobin2173 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/hr/LC_MESSAGES/django.po101
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/hu/LC_MESSAGES/django.mobin2172 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/hu/LC_MESSAGES/django.po99
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ia/LC_MESSAGES/django.mobin569 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ia/LC_MESSAGES/django.po91
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/id/LC_MESSAGES/django.mobin2085 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/id/LC_MESSAGES/django.po101
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/is/LC_MESSAGES/django.mobin2102 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/is/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/it/LC_MESSAGES/django.mobin2115 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/it/LC_MESSAGES/django.po100
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ja/LC_MESSAGES/django.mobin2306 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ja/LC_MESSAGES/django.po99
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ka/LC_MESSAGES/django.mobin3144 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ka/LC_MESSAGES/django.po102
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/kk/LC_MESSAGES/django.mobin2110 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/kk/LC_MESSAGES/django.po99
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/km/LC_MESSAGES/django.mobin2076 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/km/LC_MESSAGES/django.po95
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/kn/LC_MESSAGES/django.mobin2012 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/kn/LC_MESSAGES/django.po96
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ko/LC_MESSAGES/django.mobin1785 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ko/LC_MESSAGES/django.po96
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/lb/LC_MESSAGES/django.mobin505 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/lb/LC_MESSAGES/django.po91
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/lt/LC_MESSAGES/django.mobin2263 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/lt/LC_MESSAGES/django.po101
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/lv/LC_MESSAGES/django.mobin1622 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/lv/LC_MESSAGES/django.po98
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/mk/LC_MESSAGES/django.mobin2610 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/mk/LC_MESSAGES/django.po101
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ml/LC_MESSAGES/django.mobin3293 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ml/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/mn/LC_MESSAGES/django.mobin2629 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/mn/LC_MESSAGES/django.po100
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/my/LC_MESSAGES/django.mobin510 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/my/LC_MESSAGES/django.po91
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/nb/LC_MESSAGES/django.mobin2099 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/nb/LC_MESSAGES/django.po99
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ne/LC_MESSAGES/django.mobin1379 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ne/LC_MESSAGES/django.po92
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/nl/LC_MESSAGES/django.mobin2107 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/nl/LC_MESSAGES/django.po101
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/nn/LC_MESSAGES/django.mobin1772 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/nn/LC_MESSAGES/django.po98
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/os/LC_MESSAGES/django.mobin2433 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/os/LC_MESSAGES/django.po100
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/pa/LC_MESSAGES/django.mobin1003 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/pa/LC_MESSAGES/django.po92
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/pl/LC_MESSAGES/django.mobin2213 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/pl/LC_MESSAGES/django.po102
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/pt/LC_MESSAGES/django.mobin2121 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/pt/LC_MESSAGES/django.po100
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.mobin2136 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.po103
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ro/LC_MESSAGES/django.mobin1857 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ro/LC_MESSAGES/django.po102
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ru/LC_MESSAGES/django.mobin2658 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ru/LC_MESSAGES/django.po102
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/sk/LC_MESSAGES/django.mobin2149 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/sk/LC_MESSAGES/django.po100
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/sl/LC_MESSAGES/django.mobin2166 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/sl/LC_MESSAGES/django.po101
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/sq/LC_MESSAGES/django.mobin2190 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/sq/LC_MESSAGES/django.po99
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/sr/LC_MESSAGES/django.mobin2628 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/sr/LC_MESSAGES/django.po101
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.mobin2218 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.po102
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/sv/LC_MESSAGES/django.mobin2122 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/sv/LC_MESSAGES/django.po98
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/sw/LC_MESSAGES/django.mobin806 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/sw/LC_MESSAGES/django.po91
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ta/LC_MESSAGES/django.mobin2065 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ta/LC_MESSAGES/django.po95
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/te/LC_MESSAGES/django.mobin1323 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/te/LC_MESSAGES/django.po94
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/th/LC_MESSAGES/django.mobin2795 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/th/LC_MESSAGES/django.po95
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/tr/LC_MESSAGES/django.mobin2103 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/tr/LC_MESSAGES/django.po100
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/tt/LC_MESSAGES/django.mobin2089 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/tt/LC_MESSAGES/django.po99
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/udm/LC_MESSAGES/django.mobin548 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/udm/LC_MESSAGES/django.po91
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/uk/LC_MESSAGES/django.mobin2619 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/uk/LC_MESSAGES/django.po102
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ur/LC_MESSAGES/django.mobin2067 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/ur/LC_MESSAGES/django.po99
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/vi/LC_MESSAGES/django.mobin1105 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/vi/LC_MESSAGES/django.po95
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/zh_CN/LC_MESSAGES/django.mobin1988 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/zh_CN/LC_MESSAGES/django.po96
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/zh_TW/LC_MESSAGES/django.mobin2054 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/locale/zh_TW/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/middleware.py18
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/models.py33
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/templatetags/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/templatetags/flatpages.py102
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/tests/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/tests/templates/404.html1
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/tests/templates/flatpages/default.html9
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/tests/templates/registration/login.html0
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/tests/test_csrf.py76
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/tests/test_forms.py99
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/tests/test_middleware.py158
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/tests/test_models.py22
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/tests/test_templatetags.py136
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/tests/test_views.py129
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/tests/urls.py8
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/urls.py5
-rw-r--r--lib/python2.7/site-packages/django/contrib/flatpages/views.py72
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/exceptions.py6
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ar/LC_MESSAGES/django.mobin698 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ar/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/az/LC_MESSAGES/django.mobin447 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/az/LC_MESSAGES/django.po33
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/be/LC_MESSAGES/django.mobin695 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/be/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/bg/LC_MESSAGES/django.mobin626 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/bg/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/bn/LC_MESSAGES/django.mobin450 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/bn/LC_MESSAGES/django.po33
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/br/LC_MESSAGES/django.mobin586 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/br/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/bs/LC_MESSAGES/django.mobin524 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/bs/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ca/LC_MESSAGES/django.mobin588 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ca/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/cs/LC_MESSAGES/django.mobin750 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/cs/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/cy/LC_MESSAGES/django.mobin493 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/cy/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/da/LC_MESSAGES/django.mobin722 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/da/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/de/LC_MESSAGES/django.mobin731 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/de/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/el/LC_MESSAGES/django.mobin614 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/el/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/en/LC_MESSAGES/django.mobin356 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/en/LC_MESSAGES/django.po30
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/en_GB/LC_MESSAGES/django.mobin608 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/en_GB/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/eo/LC_MESSAGES/django.mobin729 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/eo/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/es/LC_MESSAGES/django.mobin722 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/es/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/es_AR/LC_MESSAGES/django.mobin761 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/es_AR/LC_MESSAGES/django.po37
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/es_MX/LC_MESSAGES/django.mobin605 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/es_MX/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/et/LC_MESSAGES/django.mobin713 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/et/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/eu/LC_MESSAGES/django.mobin727 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/eu/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/fa/LC_MESSAGES/django.mobin747 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/fa/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/fi/LC_MESSAGES/django.mobin601 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/fi/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/fr/LC_MESSAGES/django.mobin757 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/fr/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/fy_NL/LC_MESSAGES/django.mobin478 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/fy_NL/LC_MESSAGES/django.po33
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ga/LC_MESSAGES/django.mobin643 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ga/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/gl/LC_MESSAGES/django.mobin604 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/gl/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/he/LC_MESSAGES/django.mobin734 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/he/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/hi/LC_MESSAGES/django.mobin640 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/hi/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/hr/LC_MESSAGES/django.mobin666 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/hr/LC_MESSAGES/django.po37
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/hu/LC_MESSAGES/django.mobin582 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/hu/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ia/LC_MESSAGES/django.mobin596 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ia/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/id/LC_MESSAGES/django.mobin604 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/id/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/is/LC_MESSAGES/django.mobin590 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/is/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/it/LC_MESSAGES/django.mobin745 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/it/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ja/LC_MESSAGES/django.mobin753 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ja/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ka/LC_MESSAGES/django.mobin643 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ka/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/kk/LC_MESSAGES/django.mobin442 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/kk/LC_MESSAGES/django.po33
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/km/LC_MESSAGES/django.mobin441 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/km/LC_MESSAGES/django.po33
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/kn/LC_MESSAGES/django.mobin443 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/kn/LC_MESSAGES/django.po33
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ko/LC_MESSAGES/django.mobin442 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ko/LC_MESSAGES/django.po33
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/lt/LC_MESSAGES/django.mobin810 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/lt/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/lv/LC_MESSAGES/django.mobin485 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/lv/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/mk/LC_MESSAGES/django.mobin829 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/mk/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ml/LC_MESSAGES/django.mobin688 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ml/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/mn/LC_MESSAGES/django.mobin794 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/mn/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/nb/LC_MESSAGES/django.mobin723 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/nb/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ne/LC_MESSAGES/django.mobin650 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ne/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/nl/LC_MESSAGES/django.mobin712 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/nl/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/nn/LC_MESSAGES/django.mobin597 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/nn/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/os/LC_MESSAGES/django.mobin631 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/os/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/pa/LC_MESSAGES/django.mobin632 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/pa/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/pl/LC_MESSAGES/django.mobin651 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/pl/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/pt/LC_MESSAGES/django.mobin730 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/pt/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/pt_BR/LC_MESSAGES/django.mobin764 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/pt_BR/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ro/LC_MESSAGES/django.mobin633 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ro/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ru/LC_MESSAGES/django.mobin901 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ru/LC_MESSAGES/django.po37
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/sk/LC_MESSAGES/django.mobin760 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/sk/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/sl/LC_MESSAGES/django.mobin777 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/sl/LC_MESSAGES/django.po37
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/sq/LC_MESSAGES/django.mobin602 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/sq/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/sr/LC_MESSAGES/django.mobin696 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/sr/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/sr_Latn/LC_MESSAGES/django.mobin686 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/sr_Latn/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/sv/LC_MESSAGES/django.mobin724 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/sv/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/sw/LC_MESSAGES/django.mobin720 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/sw/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ta/LC_MESSAGES/django.mobin448 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ta/LC_MESSAGES/django.po33
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/te/LC_MESSAGES/django.mobin449 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/te/LC_MESSAGES/django.po33
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/th/LC_MESSAGES/django.mobin670 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/th/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/tr/LC_MESSAGES/django.mobin706 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/tr/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/tt/LC_MESSAGES/django.mobin441 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/tt/LC_MESSAGES/django.po33
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/uk/LC_MESSAGES/django.mobin706 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/uk/LC_MESSAGES/django.po36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ur/LC_MESSAGES/django.mobin447 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/ur/LC_MESSAGES/django.po33
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/vi/LC_MESSAGES/django.mobin469 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/vi/LC_MESSAGES/django.po33
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/zh_CN/LC_MESSAGES/django.mobin591 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/zh_CN/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/zh_TW/LC_MESSAGES/django.mobin592 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/locale/zh_TW/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/models.py1
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/preview.py148
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/templates/formtools/form.html15
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/templates/formtools/preview.html36
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/templates/formtools/wizard/wizard_form.html18
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/forms.py15
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/templates/404.html1
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/templates/base.html2
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/templates/forms/wizard.html13
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/tests.py183
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/urls.py15
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/__init__.py19
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/forms.py52
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/tests.py382
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/urls.py24
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/storage.py87
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_cookiestorage.py47
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_forms.py253
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_loadstorage.py18
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_sessionstorage.py11
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/forms.py67
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/templates/other_wizard_form.html1
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/tests.py407
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/urls.py22
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/utils.py28
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/wizard/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/wizard/forms.py7
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/__init__.py14
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/base.py109
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/cookie.py33
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/exceptions.py7
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/session.py19
-rw-r--r--lib/python2.7/site-packages/django/contrib/formtools/wizard/views.py730
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/__init__.py6
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/admin/__init__.py12
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/admin/options.py139
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/admin/widgets.py119
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/adapter.py19
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/base.py349
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/base.py13
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/compiler.py35
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/creation.py18
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/introspection.py32
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/operations.py67
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/adapter.py5
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/base.py12
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/compiler.py25
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/creation.py42
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/introspection.py44
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/models.py66
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/operations.py304
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/adapter.py46
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/base.py12
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/creation.py95
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/introspection.py103
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/models.py68
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/operations.py569
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/adapter.py8
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/base.py60
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/client.py5
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/creation.py129
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/introspection.py52
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/models.py62
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/operations.py373
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/backends/util.py44
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/models/__init__.py14
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/models/aggregates.py16
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/models/fields.py305
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/models/manager.py103
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/models/proxy.py66
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/models/query.py784
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/models/sql/__init__.py3
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/models/sql/aggregates.py62
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/models/sql/compiler.py313
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/models/sql/conversion.py27
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/models/sql/query.py121
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/db/models/sql/where.py91
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/feeds.py137
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/forms/__init__.py5
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/forms/fields.py137
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/forms/widgets.py120
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/__init__.py55
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/base.py36
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/datasource.py135
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/driver.py68
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/envelope.py175
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/error.py42
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/feature.py124
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/field.py194
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/geometries.py726
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/geomtype.py87
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/layer.py218
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/libgdal.py109
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/ds.py70
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/errcheck.py128
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/generation.py125
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/geom.py98
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/srs.py71
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/srs.py342
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/tests/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_driver.py39
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_ds.py244
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_envelope.py93
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_geom.py485
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_srs.py163
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geoip/__init__.py20
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geoip/base.py265
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geoip/libgeoip.py31
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geoip/prototypes.py115
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geoip/tests.py122
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geometry/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geometry/backend/__init__.py21
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geometry/backend/geos.py2
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geometry/regex.py12
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geometry/test_data.py106
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/__init__.py20
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/base.py51
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/collections.py124
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/coordseq.py157
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/error.py20
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/factory.py35
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/geometry.py715
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/io.py20
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/libgeos.py155
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/linestring.py153
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/mutable_list.py328
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/point.py137
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/polygon.py170
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/prepared.py35
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/__init__.py30
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/coordseq.py83
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/errcheck.py95
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/geom.py119
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/io.py265
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/misc.py40
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/predicates.py44
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/prepared.py25
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/threadsafe.py86
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/topology.py64
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/tests/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/tests/test_geos.py1108
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/tests/test_geos_mutation.py134
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/tests/test_io.py116
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/geos/tests/test_mutable_list.py397
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ar/LC_MESSAGES/django.mobin1875 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ar/LC_MESSAGES/django.po94
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/az/LC_MESSAGES/django.mobin1385 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/az/LC_MESSAGES/django.po94
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/be/LC_MESSAGES/django.mobin2150 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/be/LC_MESSAGES/django.po94
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/bg/LC_MESSAGES/django.mobin2170 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/bg/LC_MESSAGES/django.po95
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/bn/LC_MESSAGES/django.mobin812 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/bn/LC_MESSAGES/django.po92
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/br/LC_MESSAGES/django.mobin566 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/br/LC_MESSAGES/django.po92
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/bs/LC_MESSAGES/django.mobin1476 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/bs/LC_MESSAGES/django.po96
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ca/LC_MESSAGES/django.mobin1831 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ca/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/cs/LC_MESSAGES/django.mobin1847 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/cs/LC_MESSAGES/django.po96
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/cy/LC_MESSAGES/django.mobin488 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/cy/LC_MESSAGES/django.po92
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/da/LC_MESSAGES/django.mobin1740 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/da/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/de/LC_MESSAGES/django.mobin1806 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/de/LC_MESSAGES/django.po95
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/el/LC_MESSAGES/django.mobin1784 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/el/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/en/LC_MESSAGES/django.mobin356 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/en/LC_MESSAGES/django.po88
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/en_GB/LC_MESSAGES/django.mobin1746 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/en_GB/LC_MESSAGES/django.po95
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/eo/LC_MESSAGES/django.mobin1760 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/eo/LC_MESSAGES/django.po94
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/es/LC_MESSAGES/django.mobin1850 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/es/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/es_AR/LC_MESSAGES/django.mobin1870 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/es_AR/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/es_MX/LC_MESSAGES/django.mobin1858 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/es_MX/LC_MESSAGES/django.po96
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/et/LC_MESSAGES/django.mobin1328 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/et/LC_MESSAGES/django.po94
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/eu/LC_MESSAGES/django.mobin1738 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/eu/LC_MESSAGES/django.po93
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/fa/LC_MESSAGES/django.mobin1954 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/fa/LC_MESSAGES/django.po95
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/fi/LC_MESSAGES/django.mobin1320 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/fi/LC_MESSAGES/django.po93
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/fr/LC_MESSAGES/django.mobin1838 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/fr/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/fy_NL/LC_MESSAGES/django.mobin401 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/fy_NL/LC_MESSAGES/django.po89
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ga/LC_MESSAGES/django.mobin1851 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ga/LC_MESSAGES/django.po98
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/gl/LC_MESSAGES/django.mobin1865 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/gl/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/he/LC_MESSAGES/django.mobin1865 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/he/LC_MESSAGES/django.po93
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/hi/LC_MESSAGES/django.mobin2385 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/hi/LC_MESSAGES/django.po94
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/hr/LC_MESSAGES/django.mobin1859 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/hr/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/hu/LC_MESSAGES/django.mobin1750 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/hu/LC_MESSAGES/django.po95
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ia/LC_MESSAGES/django.mobin1826 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ia/LC_MESSAGES/django.po96
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/id/LC_MESSAGES/django.mobin1732 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/id/LC_MESSAGES/django.po95
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/is/LC_MESSAGES/django.mobin1652 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/is/LC_MESSAGES/django.po93
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/it/LC_MESSAGES/django.mobin1796 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/it/LC_MESSAGES/django.po96
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ja/LC_MESSAGES/django.mobin1895 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ja/LC_MESSAGES/django.po95
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ka/LC_MESSAGES/django.mobin2589 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ka/LC_MESSAGES/django.po94
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/kk/LC_MESSAGES/django.mobin1583 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/kk/LC_MESSAGES/django.po95
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/km/LC_MESSAGES/django.mobin391 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/km/LC_MESSAGES/django.po89
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/kn/LC_MESSAGES/django.mobin438 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/kn/LC_MESSAGES/django.po91
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ko/LC_MESSAGES/django.mobin1418 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ko/LC_MESSAGES/django.po93
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/lt/LC_MESSAGES/django.mobin1812 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/lt/LC_MESSAGES/django.po95
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/lv/LC_MESSAGES/django.mobin1443 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/lv/LC_MESSAGES/django.po94
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/mk/LC_MESSAGES/django.mobin2266 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/mk/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ml/LC_MESSAGES/django.mobin2714 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ml/LC_MESSAGES/django.po96
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/mn/LC_MESSAGES/django.mobin2117 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/mn/LC_MESSAGES/django.po99
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/nb/LC_MESSAGES/django.mobin1725 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/nb/LC_MESSAGES/django.po94
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ne/LC_MESSAGES/django.mobin985 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ne/LC_MESSAGES/django.po92
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/nl/LC_MESSAGES/django.mobin1778 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/nl/LC_MESSAGES/django.po99
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/nn/LC_MESSAGES/django.mobin1205 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/nn/LC_MESSAGES/django.po94
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/os/LC_MESSAGES/django.mobin2034 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/os/LC_MESSAGES/django.po94
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/pa/LC_MESSAGES/django.mobin1399 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/pa/LC_MESSAGES/django.po93
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/pl/LC_MESSAGES/django.mobin1860 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/pl/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/pt/LC_MESSAGES/django.mobin1788 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/pt/LC_MESSAGES/django.po96
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.mobin1800 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ro/LC_MESSAGES/django.mobin1435 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ro/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ru/LC_MESSAGES/django.mobin2207 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ru/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/sk/LC_MESSAGES/django.mobin1815 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/sk/LC_MESSAGES/django.po93
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/sl/LC_MESSAGES/django.mobin1817 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/sl/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/sq/LC_MESSAGES/django.mobin1811 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/sq/LC_MESSAGES/django.po95
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/sr/LC_MESSAGES/django.mobin2208 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/sr/LC_MESSAGES/django.po95
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.mobin1874 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.po95
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/sv/LC_MESSAGES/django.mobin1728 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/sv/LC_MESSAGES/django.po93
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/sw/LC_MESSAGES/django.mobin1419 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/sw/LC_MESSAGES/django.po93
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ta/LC_MESSAGES/django.mobin443 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ta/LC_MESSAGES/django.po91
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/te/LC_MESSAGES/django.mobin827 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/te/LC_MESSAGES/django.po92
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/th/LC_MESSAGES/django.mobin2409 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/th/LC_MESSAGES/django.po94
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/tr/LC_MESSAGES/django.mobin1806 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/tr/LC_MESSAGES/django.po97
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/tt/LC_MESSAGES/django.mobin1679 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/tt/LC_MESSAGES/django.po94
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/uk/LC_MESSAGES/django.mobin1421 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/uk/LC_MESSAGES/django.po96
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ur/LC_MESSAGES/django.mobin1600 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/ur/LC_MESSAGES/django.po94
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/vi/LC_MESSAGES/django.mobin1825 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/vi/LC_MESSAGES/django.po96
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/zh_CN/LC_MESSAGES/django.mobin1684 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/zh_CN/LC_MESSAGES/django.po96
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/zh_TW/LC_MESSAGES/django.mobin1812 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/locale/zh_TW/LC_MESSAGES/django.po94
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/management/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/management/commands/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/management/commands/inspectdb.py29
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/management/commands/ogrinspect.py118
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/maps/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/maps/google/__init__.py61
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/maps/google/gmap.py233
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/maps/google/overlays.py311
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/maps/google/zoom.py162
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/maps/openlayers/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/measure.py330
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/models.py9
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/shortcuts.py33
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/sitemaps/__init__.py4
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/sitemaps/georss.py53
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/sitemaps/kml.py63
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/sitemaps/views.py114
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/static/gis/js/OLMapWidget.js376
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/templates/gis/admin/openlayers.html38
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/templates/gis/admin/openlayers.js176
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/templates/gis/admin/osm.html2
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/templates/gis/admin/osm.js2
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/templates/gis/google/google-map.html12
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/templates/gis/google/google-map.js37
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/templates/gis/google/google-multi.js8
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/templates/gis/google/google-single.js2
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/templates/gis/kml/base.kml6
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/templates/gis/kml/placemarks.kml8
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/templates/gis/openlayers-osm.html17
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/templates/gis/openlayers.html34
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/templates/gis/sitemaps/geo_sitemap.xml17
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/__init__.py30
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/ch-city/ch-city.dbfbin285 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/ch-city/ch-city.prj1
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/ch-city/ch-city.shpbin128 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/ch-city/ch-city.shxbin108 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/cities/cities.dbfbin533 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/cities/cities.prj1
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/cities/cities.shpbin184 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/cities/cities.shxbin124 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/counties/counties.dbfbin3961 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/counties/counties.shpbin37364 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/counties/counties.shxbin292 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/geometries.json123
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/interstates/interstates.dbfbin412 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/interstates/interstates.prj1
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/interstates/interstates.shpbin892 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/interstates/interstates.shxbin124 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/invalid/emptypoints.dbfbin77 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/invalid/emptypoints.shpbin112 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/invalid/emptypoints.shxbin108 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/test_point/test_point.dbfbin749 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/test_point/test_point.prj1
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/test_point/test_point.shpbin240 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/test_point/test_point.shxbin140 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/test_poly/test_poly.dbfbin501 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/test_poly/test_poly.prj1
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/test_poly/test_poly.shpbin620 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/test_poly/test_poly.shxbin124 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/test_vrt/test_vrt.csv4
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/test_vrt/test_vrt.vrt7
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/data/texas.dbfbin660 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/distapp/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/distapp/fixtures/initial_data.json.gzbin6499 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/distapp/models.py58
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/distapp/tests.py367
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geo3d/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geo3d/models.py77
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geo3d/tests.py278
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geo3d/views.py1
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geoadmin/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geoadmin/models.py12
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geoadmin/tests.py73
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geoadmin/urls.py6
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/feeds.py66
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/fixtures/initial_data.json.gzbin131252 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/models.py56
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/sitemaps.py12
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/test_feeds.py96
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/test_regress.py87
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/test_sitemaps.py104
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/tests.py788
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/urls.py18
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geogapp/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geogapp/fixtures/initial_data.json98
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geogapp/models.py24
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/geogapp/tests.py97
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/inspectapp/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/inspectapp/models.py13
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/inspectapp/tests.py143
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/layermap/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/layermap/models.py70
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/layermap/tests.py331
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/relatedapp/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/relatedapp/fixtures/initial_data.json.gzbin526 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/relatedapp/models.py53
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/relatedapp/tests.py305
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/test_geoforms.py300
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/test_measure.py290
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/test_spatialrefsys.py104
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/tests/utils.py46
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/utils/__init__.py17
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/utils/layermapping.py596
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/utils/ogrinfo.py53
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/utils/ogrinspect.py225
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/utils/srs.py80
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/utils/wkt.py57
-rw-r--r--lib/python2.7/site-packages/django/contrib/gis/views.py25
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ar/LC_MESSAGES/django.mobin1902 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ar/LC_MESSAGES/django.po421
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/az/LC_MESSAGES/django.mobin2149 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/az/LC_MESSAGES/django.po279
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/be/LC_MESSAGES/django.mobin6561 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/be/LC_MESSAGES/django.po362
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/bg/LC_MESSAGES/django.mobin4596 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/bg/LC_MESSAGES/django.po308
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/bn/LC_MESSAGES/django.mobin1431 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/bn/LC_MESSAGES/django.po306
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/br/LC_MESSAGES/django.mobin4049 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/br/LC_MESSAGES/django.po306
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/bs/LC_MESSAGES/django.mobin1425 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/bs/LC_MESSAGES/django.po336
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ca/LC_MESSAGES/django.mobin4013 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ca/LC_MESSAGES/django.po308
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/cs/LC_MESSAGES/django.mobin4664 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/cs/LC_MESSAGES/django.po335
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/cy/LC_MESSAGES/django.mobin493 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/cy/LC_MESSAGES/django.po362
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/da/LC_MESSAGES/django.mobin4106 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/da/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/de/LC_MESSAGES/django.mobin4122 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/de/LC_MESSAGES/django.po308
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/el/LC_MESSAGES/django.mobin5286 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/el/LC_MESSAGES/django.po308
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/en/LC_MESSAGES/django.mobin356 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/en/LC_MESSAGES/django.po302
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.mobin4072 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/eo/LC_MESSAGES/django.mobin4106 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/eo/LC_MESSAGES/django.po305
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/es/LC_MESSAGES/django.mobin4158 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/es/LC_MESSAGES/django.po308
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.mobin4224 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.mobin4171 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.po306
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/et/LC_MESSAGES/django.mobin4159 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/et/LC_MESSAGES/django.po308
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/eu/LC_MESSAGES/django.mobin4012 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/eu/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/fa/LC_MESSAGES/django.mobin3676 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/fa/LC_MESSAGES/django.po281
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/fi/LC_MESSAGES/django.mobin2394 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/fi/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/fr/LC_MESSAGES/django.mobin4133 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/fr/LC_MESSAGES/django.po308
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/fy_NL/LC_MESSAGES/django.mobin478 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/fy_NL/LC_MESSAGES/django.po305
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ga/LC_MESSAGES/django.mobin6181 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ga/LC_MESSAGES/django.po392
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/gl/LC_MESSAGES/django.mobin4097 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/gl/LC_MESSAGES/django.po309
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/he/LC_MESSAGES/django.mobin4496 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/he/LC_MESSAGES/django.po308
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/hi/LC_MESSAGES/django.mobin4953 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/hi/LC_MESSAGES/django.po308
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/hr/LC_MESSAGES/django.mobin523 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/hr/LC_MESSAGES/django.po334
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/hu/LC_MESSAGES/django.mobin4159 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/hu/LC_MESSAGES/django.po308
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ia/LC_MESSAGES/django.mobin4090 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ia/LC_MESSAGES/django.po306
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/id/LC_MESSAGES/django.mobin3517 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/id/LC_MESSAGES/django.po279
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/is/LC_MESSAGES/django.mobin4225 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/is/LC_MESSAGES/django.po308
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/it/LC_MESSAGES/django.mobin4705 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/it/LC_MESSAGES/django.po309
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ja/LC_MESSAGES/django.mobin3640 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ja/LC_MESSAGES/django.po280
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ka/LC_MESSAGES/django.mobin4139 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ka/LC_MESSAGES/django.po279
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/kk/LC_MESSAGES/django.mobin2557 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/kk/LC_MESSAGES/django.po290
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/km/LC_MESSAGES/django.mobin441 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/km/LC_MESSAGES/django.po277
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/kn/LC_MESSAGES/django.mobin443 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/kn/LC_MESSAGES/django.po277
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ko/LC_MESSAGES/django.mobin1195 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ko/LC_MESSAGES/django.po278
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/lt/LC_MESSAGES/django.mobin5027 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/lt/LC_MESSAGES/django.po335
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/lv/LC_MESSAGES/django.mobin1398 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/lv/LC_MESSAGES/django.po335
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/mk/LC_MESSAGES/django.mobin4658 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/mk/LC_MESSAGES/django.po306
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ml/LC_MESSAGES/django.mobin6357 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ml/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/mn/LC_MESSAGES/django.mobin3115 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/mn/LC_MESSAGES/django.po308
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/my/LC_MESSAGES/django.mobin4174 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/my/LC_MESSAGES/django.po278
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/nb/LC_MESSAGES/django.mobin4112 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/nb/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ne/LC_MESSAGES/django.mobin1906 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ne/LC_MESSAGES/django.po306
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/nl/LC_MESSAGES/django.mobin4054 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/nl/LC_MESSAGES/django.po308
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/nn/LC_MESSAGES/django.mobin4111 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/nn/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/os/LC_MESSAGES/django.mobin4634 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/os/LC_MESSAGES/django.po306
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/pa/LC_MESSAGES/django.mobin1578 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/pa/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/pl/LC_MESSAGES/django.mobin4719 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/pl/LC_MESSAGES/django.po337
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/pt/LC_MESSAGES/django.mobin4138 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/pt/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.mobin4152 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.po309
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ro/LC_MESSAGES/django.mobin2663 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ro/LC_MESSAGES/django.po337
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ru/LC_MESSAGES/django.mobin5751 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ru/LC_MESSAGES/django.po338
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/sk/LC_MESSAGES/django.mobin4752 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/sk/LC_MESSAGES/django.po336
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/sl/LC_MESSAGES/django.mobin5411 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/sl/LC_MESSAGES/django.po366
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/sq/LC_MESSAGES/django.mobin4097 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/sq/LC_MESSAGES/django.po306
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/sr/LC_MESSAGES/django.mobin524 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/sr/LC_MESSAGES/django.po334
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.mobin544 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.po334
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/sv/LC_MESSAGES/django.mobin4085 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/sv/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/sw/LC_MESSAGES/django.mobin4106 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/sw/LC_MESSAGES/django.po305
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ta/LC_MESSAGES/django.mobin448 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ta/LC_MESSAGES/django.po305
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/te/LC_MESSAGES/django.mobin2223 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/te/LC_MESSAGES/django.po307
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/th/LC_MESSAGES/django.mobin3912 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/th/LC_MESSAGES/django.po280
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/tr/LC_MESSAGES/django.mobin4086 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/tr/LC_MESSAGES/django.po309
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/tt/LC_MESSAGES/django.mobin3791 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/tt/LC_MESSAGES/django.po278
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/uk/LC_MESSAGES/django.mobin1749 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/uk/LC_MESSAGES/django.po335
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ur/LC_MESSAGES/django.mobin1356 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/ur/LC_MESSAGES/django.po306
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/vi/LC_MESSAGES/django.mobin973 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/vi/LC_MESSAGES/django.po278
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/zh_CN/LC_MESSAGES/django.mobin3563 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/zh_CN/LC_MESSAGES/django.po280
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/zh_TW/LC_MESSAGES/django.mobin3399 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/locale/zh_TW/LC_MESSAGES/django.po280
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/models.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/templatetags/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/templatetags/humanize.py244
-rw-r--r--lib/python2.7/site-packages/django/contrib/humanize/tests.py232
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/__init__.py4
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/api.py102
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/constants.py13
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/context_processors.py8
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ar/LC_MESSAGES/django.mobin608 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ar/LC_MESSAGES/django.po23
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/az/LC_MESSAGES/django.mobin516 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/az/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/be/LC_MESSAGES/django.mobin655 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/be/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/bg/LC_MESSAGES/django.mobin548 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/bg/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/bn/LC_MESSAGES/django.mobin533 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/bn/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/br/LC_MESSAGES/django.mobin521 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/br/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/bs/LC_MESSAGES/django.mobin592 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/bs/LC_MESSAGES/django.po23
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ca/LC_MESSAGES/django.mobin520 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ca/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/cs/LC_MESSAGES/django.mobin562 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/cs/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/cy/LC_MESSAGES/django.mobin574 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/cy/LC_MESSAGES/django.po23
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/da/LC_MESSAGES/django.mobin520 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/da/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/de/LC_MESSAGES/django.mobin524 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/de/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/el/LC_MESSAGES/django.mobin520 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/el/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/en/LC_MESSAGES/django.mobin356 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/en/LC_MESSAGES/django.po18
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/en_GB/LC_MESSAGES/django.mobin540 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/en_GB/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/eo/LC_MESSAGES/django.mobin520 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/eo/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/es/LC_MESSAGES/django.mobin517 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/es/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/es_AR/LC_MESSAGES/django.mobin535 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/es_AR/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/es_MX/LC_MESSAGES/django.mobin533 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/es_MX/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/et/LC_MESSAGES/django.mobin518 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/et/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/eu/LC_MESSAGES/django.mobin514 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/eu/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/fa/LC_MESSAGES/django.mobin524 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/fa/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/fi/LC_MESSAGES/django.mobin518 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/fi/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/fr/LC_MESSAGES/django.mobin523 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/fr/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/fy_NL/LC_MESSAGES/django.mobin401 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/fy_NL/LC_MESSAGES/django.po19
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ga/LC_MESSAGES/django.mobin566 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ga/LC_MESSAGES/django.po23
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/gl/LC_MESSAGES/django.mobin542 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/gl/LC_MESSAGES/django.po23
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/he/LC_MESSAGES/django.mobin525 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/he/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/hi/LC_MESSAGES/django.mobin531 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/hi/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/hr/LC_MESSAGES/django.mobin608 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/hr/LC_MESSAGES/django.po23
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/hu/LC_MESSAGES/django.mobin520 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/hu/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ia/LC_MESSAGES/django.mobin522 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ia/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/id/LC_MESSAGES/django.mobin519 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/id/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/is/LC_MESSAGES/django.mobin515 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/is/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/it/LC_MESSAGES/django.mobin519 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/it/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ja/LC_MESSAGES/django.mobin520 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ja/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ka/LC_MESSAGES/django.mobin556 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ka/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/kk/LC_MESSAGES/django.mobin522 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/kk/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/km/LC_MESSAGES/django.mobin391 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/km/LC_MESSAGES/django.po19
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/kn/LC_MESSAGES/django.mobin438 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/kn/LC_MESSAGES/django.po21
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ko/LC_MESSAGES/django.mobin532 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ko/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/lb/LC_MESSAGES/django.mobin525 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/lb/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/lt/LC_MESSAGES/django.mobin589 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/lt/LC_MESSAGES/django.po23
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/lv/LC_MESSAGES/django.mobin560 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/lv/LC_MESSAGES/django.po23
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/mk/LC_MESSAGES/django.mobin565 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/mk/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ml/LC_MESSAGES/django.mobin538 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ml/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/mn/LC_MESSAGES/django.mobin530 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/mn/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/my/LC_MESSAGES/django.mobin552 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/my/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/nb/LC_MESSAGES/django.mobin531 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/nb/LC_MESSAGES/django.po23
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ne/LC_MESSAGES/django.mobin529 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ne/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/nl/LC_MESSAGES/django.mobin525 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/nl/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/nn/LC_MESSAGES/django.mobin526 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/nn/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/os/LC_MESSAGES/django.mobin528 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/os/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/pa/LC_MESSAGES/django.mobin550 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/pa/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/pl/LC_MESSAGES/django.mobin607 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/pl/LC_MESSAGES/django.po23
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/pt/LC_MESSAGES/django.mobin522 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/pt/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/pt_BR/LC_MESSAGES/django.mobin535 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/pt_BR/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ro/LC_MESSAGES/django.mobin564 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ro/LC_MESSAGES/django.po23
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ru/LC_MESSAGES/django.mobin640 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ru/LC_MESSAGES/django.po23
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/sk/LC_MESSAGES/django.mobin548 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/sk/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/sl/LC_MESSAGES/django.mobin574 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/sl/LC_MESSAGES/django.po24
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/sq/LC_MESSAGES/django.mobin522 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/sq/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/sr/LC_MESSAGES/django.mobin591 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/sr/LC_MESSAGES/django.po23
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/sr_Latn/LC_MESSAGES/django.mobin605 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/sr_Latn/LC_MESSAGES/django.po23
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/sv/LC_MESSAGES/django.mobin522 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/sv/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/sw/LC_MESSAGES/django.mobin517 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/sw/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ta/LC_MESSAGES/django.mobin443 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ta/LC_MESSAGES/django.po21
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/te/LC_MESSAGES/django.mobin541 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/te/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/th/LC_MESSAGES/django.mobin534 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/th/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/tr/LC_MESSAGES/django.mobin516 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/tr/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/tt/LC_MESSAGES/django.mobin517 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/tt/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/uk/LC_MESSAGES/django.mobin652 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/uk/LC_MESSAGES/django.po23
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ur/LC_MESSAGES/django.mobin519 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/ur/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/vi/LC_MESSAGES/django.mobin527 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/vi/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/zh_CN/LC_MESSAGES/django.mobin533 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/zh_CN/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/zh_TW/LC_MESSAGES/django.mobin525 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/locale/zh_TW/LC_MESSAGES/django.po22
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/middleware.py26
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/models.py1
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/storage/__init__.py8
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/storage/base.py184
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/storage/cookie.py158
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/storage/fallback.py54
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/storage/session.py46
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/tests/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/tests/base.py368
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/tests/test_cookie.py154
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/tests/test_fallback.py176
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/tests/test_middleware.py18
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/tests/test_mixins.py14
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/tests/test_session.py53
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/tests/urls.py73
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/utils.py11
-rw-r--r--lib/python2.7/site-packages/django/contrib/messages/views.py18
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/admin.py11
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ar/LC_MESSAGES/django.mobin1268 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ar/LC_MESSAGES/django.po49
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/az/LC_MESSAGES/django.mobin1077 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/az/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/be/LC_MESSAGES/django.mobin1284 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/be/LC_MESSAGES/django.po49
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/bg/LC_MESSAGES/django.mobin1185 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/bg/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/bn/LC_MESSAGES/django.mobin1322 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/bn/LC_MESSAGES/django.po48
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/br/LC_MESSAGES/django.mobin626 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/br/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/bs/LC_MESSAGES/django.mobin1118 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/bs/LC_MESSAGES/django.po51
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ca/LC_MESSAGES/django.mobin1069 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ca/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/cs/LC_MESSAGES/django.mobin1085 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/cs/LC_MESSAGES/django.po49
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/cy/LC_MESSAGES/django.mobin1109 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/cy/LC_MESSAGES/django.po52
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/da/LC_MESSAGES/django.mobin1046 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/da/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/de/LC_MESSAGES/django.mobin1054 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/de/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/el/LC_MESSAGES/django.mobin1280 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/el/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/en/LC_MESSAGES/django.mobin356 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/en/LC_MESSAGES/django.po42
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.mobin1056 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/eo/LC_MESSAGES/django.mobin1049 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/eo/LC_MESSAGES/django.po51
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/es/LC_MESSAGES/django.mobin1060 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/es/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.mobin1075 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.mobin1069 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/et/LC_MESSAGES/django.mobin1049 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/et/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/eu/LC_MESSAGES/django.mobin1047 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/eu/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/fa/LC_MESSAGES/django.mobin1156 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/fa/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/fi/LC_MESSAGES/django.mobin1101 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/fi/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/fr/LC_MESSAGES/django.mobin1072 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/fr/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/fy_NL/LC_MESSAGES/django.mobin401 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/fy_NL/LC_MESSAGES/django.po43
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ga/LC_MESSAGES/django.mobin1037 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ga/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/gl/LC_MESSAGES/django.mobin1058 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/gl/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/he/LC_MESSAGES/django.mobin1057 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/he/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/hi/LC_MESSAGES/django.mobin1412 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/hi/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/hr/LC_MESSAGES/django.mobin1118 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/hr/LC_MESSAGES/django.po51
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/hu/LC_MESSAGES/django.mobin1092 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/hu/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/id/LC_MESSAGES/django.mobin1031 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/id/LC_MESSAGES/django.po49
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/is/LC_MESSAGES/django.mobin1019 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/is/LC_MESSAGES/django.po48
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/it/LC_MESSAGES/django.mobin1047 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/it/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ja/LC_MESSAGES/django.mobin1068 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ja/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ka/LC_MESSAGES/django.mobin1436 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ka/LC_MESSAGES/django.po49
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/kk/LC_MESSAGES/django.mobin1166 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/kk/LC_MESSAGES/django.po48
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/km/LC_MESSAGES/django.mobin1251 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/km/LC_MESSAGES/django.po48
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/kn/LC_MESSAGES/django.mobin1399 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/kn/LC_MESSAGES/django.po48
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ko/LC_MESSAGES/django.mobin1006 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ko/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/lt/LC_MESSAGES/django.mobin1116 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/lt/LC_MESSAGES/django.po51
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/lv/LC_MESSAGES/django.mobin1114 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/lv/LC_MESSAGES/django.po51
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/mk/LC_MESSAGES/django.mobin1254 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/mk/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ml/LC_MESSAGES/django.mobin1334 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ml/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/mn/LC_MESSAGES/django.mobin1171 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/mn/LC_MESSAGES/django.po51
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/nb/LC_MESSAGES/django.mobin1083 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/nb/LC_MESSAGES/django.po51
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ne/LC_MESSAGES/django.mobin1319 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ne/LC_MESSAGES/django.po48
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/nl/LC_MESSAGES/django.mobin1042 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/nl/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/nn/LC_MESSAGES/django.mobin1075 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/nn/LC_MESSAGES/django.po49
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/os/LC_MESSAGES/django.mobin1160 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/os/LC_MESSAGES/django.po49
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/pa/LC_MESSAGES/django.mobin755 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/pa/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/pl/LC_MESSAGES/django.mobin1047 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/pl/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/pt/LC_MESSAGES/django.mobin1059 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/pt/LC_MESSAGES/django.po51
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.mobin1093 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.po51
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ro/LC_MESSAGES/django.mobin1132 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ro/LC_MESSAGES/django.po52
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ru/LC_MESSAGES/django.mobin1295 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ru/LC_MESSAGES/django.po51
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/sk/LC_MESSAGES/django.mobin1092 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/sk/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/sl/LC_MESSAGES/django.mobin1094 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/sl/LC_MESSAGES/django.po51
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/sq/LC_MESSAGES/django.mobin1058 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/sq/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/sr/LC_MESSAGES/django.mobin1257 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/sr/LC_MESSAGES/django.po51
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.mobin1133 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.po51
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/sv/LC_MESSAGES/django.mobin1064 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/sv/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/sw/LC_MESSAGES/django.mobin1040 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/sw/LC_MESSAGES/django.po49
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ta/LC_MESSAGES/django.mobin1505 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ta/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/te/LC_MESSAGES/django.mobin467 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/te/LC_MESSAGES/django.po45
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/th/LC_MESSAGES/django.mobin1213 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/th/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/tr/LC_MESSAGES/django.mobin1047 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/tr/LC_MESSAGES/django.po50
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/tt/LC_MESSAGES/django.mobin1181 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/tt/LC_MESSAGES/django.po49
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/uk/LC_MESSAGES/django.mobin1308 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/uk/LC_MESSAGES/django.po51
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ur/LC_MESSAGES/django.mobin1141 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/ur/LC_MESSAGES/django.po47
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/vi/LC_MESSAGES/django.mobin1114 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/vi/LC_MESSAGES/django.po49
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/zh_CN/LC_MESSAGES/django.mobin1012 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/zh_CN/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/zh_TW/LC_MESSAGES/django.mobin1026 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/locale/zh_TW/LC_MESSAGES/django.po46
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/middleware.py44
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/models.py22
-rw-r--r--lib/python2.7/site-packages/django/contrib/redirects/tests.py63
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/backends/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/backends/base.py327
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/backends/cache.py74
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/backends/cached_db.py84
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/backends/db.py85
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/backends/file.py202
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/backends/signed_cookies.py81
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/exceptions.py11
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ar/LC_MESSAGES/django.mobin813 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ar/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/az/LC_MESSAGES/django.mobin696 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/az/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/be/LC_MESSAGES/django.mobin797 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/be/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/bg/LC_MESSAGES/django.mobin750 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/bg/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/bn/LC_MESSAGES/django.mobin765 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/bn/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/br/LC_MESSAGES/django.mobin539 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/br/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/bs/LC_MESSAGES/django.mobin762 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/bs/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ca/LC_MESSAGES/django.mobin707 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ca/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/cs/LC_MESSAGES/django.mobin717 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/cs/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/cy/LC_MESSAGES/django.mobin749 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/cy/LC_MESSAGES/django.po40
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/da/LC_MESSAGES/django.mobin690 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/da/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/de/LC_MESSAGES/django.mobin696 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/de/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/el/LC_MESSAGES/django.mobin767 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/el/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/en/LC_MESSAGES/django.mobin356 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/en/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.mobin710 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/eo/LC_MESSAGES/django.mobin697 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/eo/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/es/LC_MESSAGES/django.mobin703 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/es/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.mobin724 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.mobin734 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/et/LC_MESSAGES/django.mobin704 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/et/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/eu/LC_MESSAGES/django.mobin692 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/eu/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/fa/LC_MESSAGES/django.mobin717 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/fa/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/fi/LC_MESSAGES/django.mobin690 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/fi/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/fr/LC_MESSAGES/django.mobin702 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/fr/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.mobin401 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.po35
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ga/LC_MESSAGES/django.mobin750 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ga/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/gl/LC_MESSAGES/django.mobin721 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/gl/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/he/LC_MESSAGES/django.mobin768 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/he/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/hi/LC_MESSAGES/django.mobin762 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/hi/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/hr/LC_MESSAGES/django.mobin776 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/hr/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/hu/LC_MESSAGES/django.mobin709 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/hu/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/id/LC_MESSAGES/django.mobin680 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/id/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/is/LC_MESSAGES/django.mobin687 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/is/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/it/LC_MESSAGES/django.mobin704 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/it/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ja/LC_MESSAGES/django.mobin719 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ja/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ka/LC_MESSAGES/django.mobin806 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ka/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/kk/LC_MESSAGES/django.mobin746 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/kk/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/km/LC_MESSAGES/django.mobin932 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/km/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/kn/LC_MESSAGES/django.mobin817 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/kn/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ko/LC_MESSAGES/django.mobin677 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ko/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/lt/LC_MESSAGES/django.mobin757 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/lt/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/lv/LC_MESSAGES/django.mobin734 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/lv/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/mk/LC_MESSAGES/django.mobin797 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/mk/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ml/LC_MESSAGES/django.mobin783 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ml/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/mn/LC_MESSAGES/django.mobin732 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/mn/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/my/LC_MESSAGES/django.mobin822 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/my/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/nb/LC_MESSAGES/django.mobin688 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/nb/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ne/LC_MESSAGES/django.mobin754 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ne/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/nl/LC_MESSAGES/django.mobin688 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/nl/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/nn/LC_MESSAGES/django.mobin698 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/nn/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/os/LC_MESSAGES/django.mobin742 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/os/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/pa/LC_MESSAGES/django.mobin774 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/pa/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/pl/LC_MESSAGES/django.mobin750 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/pl/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/pt/LC_MESSAGES/django.mobin708 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/pt/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.mobin721 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ro/LC_MESSAGES/django.mobin733 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ro/LC_MESSAGES/django.po40
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ru/LC_MESSAGES/django.mobin809 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ru/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sk/LC_MESSAGES/django.mobin738 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sk/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sl/LC_MESSAGES/django.mobin735 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sl/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sq/LC_MESSAGES/django.mobin695 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sq/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sr/LC_MESSAGES/django.mobin815 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sr/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.mobin788 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sv/LC_MESSAGES/django.mobin693 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sv/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sw/LC_MESSAGES/django.mobin713 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/sw/LC_MESSAGES/django.po37
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ta/LC_MESSAGES/django.mobin804 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ta/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/te/LC_MESSAGES/django.mobin789 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/te/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/th/LC_MESSAGES/django.mobin760 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/th/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/tr/LC_MESSAGES/django.mobin695 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/tr/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/tt/LC_MESSAGES/django.mobin760 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/tt/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/uk/LC_MESSAGES/django.mobin807 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/uk/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ur/LC_MESSAGES/django.mobin732 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/ur/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/vi/LC_MESSAGES/django.mobin691 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/vi/LC_MESSAGES/django.po40
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.mobin693 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.mobin701 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/management/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/management/commands/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/management/commands/clearsessions.py15
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/middleware.py45
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/models.py54
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/serializers.py20
-rw-r--r--lib/python2.7/site-packages/django/contrib/sessions/tests.py593
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/__init__.py121
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/management/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/management/commands/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/management/commands/ping_google.py14
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/models.py1
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/templates/sitemap.xml13
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/templates/sitemap_index.xml4
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/tests/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/tests/base.py34
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/tests/templates/custom_sitemap.xml14
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/tests/templates/custom_sitemap_index.xml5
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/tests/test_flatpages.py39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/tests/test_generic.py22
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/tests/test_http.py153
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/tests/test_https.py56
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/tests/urls/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/tests/urls/http.py45
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/tests/urls/https.py16
-rw-r--r--lib/python2.7/site-packages/django/contrib/sitemaps/views.py81
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/admin.py9
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ar/LC_MESSAGES/django.mobin915 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ar/LC_MESSAGES/django.po40
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/az/LC_MESSAGES/django.mobin604 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/az/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/be/LC_MESSAGES/django.mobin728 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/be/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/bg/LC_MESSAGES/django.mobin661 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/bg/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/bn/LC_MESSAGES/django.mobin685 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/bn/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/br/LC_MESSAGES/django.mobin631 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/br/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/bs/LC_MESSAGES/django.mobin695 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/bs/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ca/LC_MESSAGES/django.mobin766 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ca/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/cs/LC_MESSAGES/django.mobin793 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/cs/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/cy/LC_MESSAGES/django.mobin812 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/cy/LC_MESSAGES/django.po40
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/da/LC_MESSAGES/django.mobin769 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/da/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/de/LC_MESSAGES/django.mobin766 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/de/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/el/LC_MESSAGES/django.mobin677 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/el/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/en/LC_MESSAGES/django.mobin356 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/en/LC_MESSAGES/django.po34
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/en_GB/LC_MESSAGES/django.mobin642 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/en_GB/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/eo/LC_MESSAGES/django.mobin779 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/eo/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/es/LC_MESSAGES/django.mobin777 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/es/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/es_AR/LC_MESSAGES/django.mobin816 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/es_AR/LC_MESSAGES/django.po40
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/es_MX/LC_MESSAGES/django.mobin645 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/es_MX/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/et/LC_MESSAGES/django.mobin763 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/et/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/eu/LC_MESSAGES/django.mobin790 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/eu/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/fa/LC_MESSAGES/django.mobin837 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/fa/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/fi/LC_MESSAGES/django.mobin626 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/fi/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/fr/LC_MESSAGES/django.mobin772 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/fr/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/fy_NL/LC_MESSAGES/django.mobin401 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/fy_NL/LC_MESSAGES/django.po31
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ga/LC_MESSAGES/django.mobin671 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ga/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/gl/LC_MESSAGES/django.mobin762 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/gl/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/he/LC_MESSAGES/django.mobin795 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/he/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/hi/LC_MESSAGES/django.mobin668 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/hi/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/hr/LC_MESSAGES/django.mobin699 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/hr/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/hu/LC_MESSAGES/django.mobin638 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/hu/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/id/LC_MESSAGES/django.mobin625 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/id/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/is/LC_MESSAGES/django.mobin616 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/is/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/it/LC_MESSAGES/django.mobin763 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/it/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ja/LC_MESSAGES/django.mobin790 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ja/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ka/LC_MESSAGES/django.mobin709 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ka/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/kk/LC_MESSAGES/django.mobin655 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/kk/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/km/LC_MESSAGES/django.mobin704 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/km/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/kn/LC_MESSAGES/django.mobin679 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/kn/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ko/LC_MESSAGES/django.mobin624 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ko/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/lt/LC_MESSAGES/django.mobin848 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/lt/LC_MESSAGES/django.po41
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/lv/LC_MESSAGES/django.mobin669 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/lv/LC_MESSAGES/django.po40
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/mk/LC_MESSAGES/django.mobin873 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/mk/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ml/LC_MESSAGES/django.mobin711 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ml/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/mn/LC_MESSAGES/django.mobin860 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/mn/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/my/LC_MESSAGES/django.mobin920 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/my/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/nb/LC_MESSAGES/django.mobin770 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/nb/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ne/LC_MESSAGES/django.mobin864 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ne/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/nl/LC_MESSAGES/django.mobin753 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/nl/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/nn/LC_MESSAGES/django.mobin636 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/nn/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/os/LC_MESSAGES/django.mobin816 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/os/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/pa/LC_MESSAGES/django.mobin687 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/pa/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/pl/LC_MESSAGES/django.mobin837 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/pl/LC_MESSAGES/django.po40
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/pt/LC_MESSAGES/django.mobin773 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/pt/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.mobin794 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ro/LC_MESSAGES/django.mobin662 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ro/LC_MESSAGES/django.po40
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ru/LC_MESSAGES/django.mobin911 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ru/LC_MESSAGES/django.po40
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/sk/LC_MESSAGES/django.mobin801 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/sk/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/sl/LC_MESSAGES/django.mobin809 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/sl/LC_MESSAGES/django.po40
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/sq/LC_MESSAGES/django.mobin787 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/sq/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/sr/LC_MESSAGES/django.mobin727 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/sr/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.mobin715 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/sv/LC_MESSAGES/django.mobin786 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/sv/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/sw/LC_MESSAGES/django.mobin755 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/sw/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ta/LC_MESSAGES/django.mobin717 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ta/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/te/LC_MESSAGES/django.mobin690 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/te/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/th/LC_MESSAGES/django.mobin853 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/th/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/tr/LC_MESSAGES/django.mobin748 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/tr/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/tt/LC_MESSAGES/django.mobin656 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/tt/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/uk/LC_MESSAGES/django.mobin943 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/uk/LC_MESSAGES/django.po40
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ur/LC_MESSAGES/django.mobin657 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/ur/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/vi/LC_MESSAGES/django.mobin774 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/vi/LC_MESSAGES/django.po40
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/zh_CN/LC_MESSAGES/django.mobin624 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/zh_CN/LC_MESSAGES/django.po38
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/zh_TW/LC_MESSAGES/django.mobin763 -> 0 bytes
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/locale/zh_TW/LC_MESSAGES/django.po39
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/management.py36
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/managers.py41
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/models.py119
-rw-r--r--lib/python2.7/site-packages/django/contrib/sites/tests.py83
-rw-r--r--lib/python2.7/site-packages/django/contrib/staticfiles/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/staticfiles/finders.py266
-rw-r--r--lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py68
-rw-r--r--lib/python2.7/site-packages/django/contrib/staticfiles/management/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py319
-rw-r--r--lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/findstatic.py34
-rw-r--r--lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/runserver.py29
-rw-r--r--lib/python2.7/site-packages/django/contrib/staticfiles/models.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/staticfiles/storage.py313
-rw-r--r--lib/python2.7/site-packages/django/contrib/staticfiles/templatetags/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/staticfiles/templatetags/staticfiles.py37
-rw-r--r--lib/python2.7/site-packages/django/contrib/staticfiles/urls.py16
-rw-r--r--lib/python2.7/site-packages/django/contrib/staticfiles/utils.py57
-rw-r--r--lib/python2.7/site-packages/django/contrib/staticfiles/views.py41
-rw-r--r--lib/python2.7/site-packages/django/contrib/syndication/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/syndication/views.py210
-rw-r--r--lib/python2.7/site-packages/django/contrib/webdesign/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/webdesign/lorem_ipsum.py103
-rw-r--r--lib/python2.7/site-packages/django/contrib/webdesign/models.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/webdesign/templatetags/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/contrib/webdesign/templatetags/webdesign.py68
-rw-r--r--lib/python2.7/site-packages/django/contrib/webdesign/tests.py22
-rw-r--r--lib/python2.7/site-packages/django/core/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/core/cache/__init__.py138
-rw-r--r--lib/python2.7/site-packages/django/core/cache/backends/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/core/cache/backends/base.py235
-rw-r--r--lib/python2.7/site-packages/django/core/cache/backends/db.py205
-rw-r--r--lib/python2.7/site-packages/django/core/cache/backends/dummy.py46
-rw-r--r--lib/python2.7/site-packages/django/core/cache/backends/filebased.py160
-rw-r--r--lib/python2.7/site-packages/django/core/cache/backends/locmem.py140
-rw-r--r--lib/python2.7/site-packages/django/core/cache/backends/memcached.py190
-rw-r--r--lib/python2.7/site-packages/django/core/cache/utils.py15
-rw-r--r--lib/python2.7/site-packages/django/core/checks/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/core/checks/compatibility/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/core/checks/compatibility/base.py39
-rw-r--r--lib/python2.7/site-packages/django/core/checks/compatibility/django_1_6_0.py62
-rw-r--r--lib/python2.7/site-packages/django/core/context_processors.py75
-rw-r--r--lib/python2.7/site-packages/django/core/exceptions.py140
-rw-r--r--lib/python2.7/site-packages/django/core/files/__init__.py1
-rw-r--r--lib/python2.7/site-packages/django/core/files/base.py158
-rw-r--r--lib/python2.7/site-packages/django/core/files/images.py74
-rw-r--r--lib/python2.7/site-packages/django/core/files/locks.py69
-rw-r--r--lib/python2.7/site-packages/django/core/files/move.py89
-rw-r--r--lib/python2.7/site-packages/django/core/files/storage.py288
-rw-r--r--lib/python2.7/site-packages/django/core/files/temp.py65
-rw-r--r--lib/python2.7/site-packages/django/core/files/uploadedfile.py125
-rw-r--r--lib/python2.7/site-packages/django/core/files/uploadhandler.py203
-rw-r--r--lib/python2.7/site-packages/django/core/files/utils.py29
-rw-r--r--lib/python2.7/site-packages/django/core/handlers/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/core/handlers/base.py290
-rw-r--r--lib/python2.7/site-packages/django/core/handlers/wsgi.py215
-rw-r--r--lib/python2.7/site-packages/django/core/mail/__init__.py99
-rw-r--r--lib/python2.7/site-packages/django/core/mail/backends/__init__.py1
-rw-r--r--lib/python2.7/site-packages/django/core/mail/backends/base.py39
-rw-r--r--lib/python2.7/site-packages/django/core/mail/backends/console.py41
-rw-r--r--lib/python2.7/site-packages/django/core/mail/backends/dummy.py9
-rw-r--r--lib/python2.7/site-packages/django/core/mail/backends/filebased.py65
-rw-r--r--lib/python2.7/site-packages/django/core/mail/backends/locmem.py26
-rw-r--r--lib/python2.7/site-packages/django/core/mail/backends/smtp.py115
-rw-r--r--lib/python2.7/site-packages/django/core/mail/message.py392
-rw-r--r--lib/python2.7/site-packages/django/core/mail/utils.py19
-rw-r--r--lib/python2.7/site-packages/django/core/management/__init__.py399
-rw-r--r--lib/python2.7/site-packages/django/core/management/base.py422
-rw-r--r--lib/python2.7/site-packages/django/core/management/color.py50
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/check.py14
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/cleanup.py11
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/compilemessages.py71
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/createcachetable.py65
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/dbshell.py28
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/diffsettings.py40
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/dumpdata.py214
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/flush.py101
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/inspectdb.py237
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/loaddata.py282
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/makemessages.py422
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/runfcgi.py20
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/runserver.py149
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/shell.py113
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/sql.py21
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/sqlall.py22
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/sqlclear.py21
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/sqlcustom.py21
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/sqldropindexes.py23
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/sqlflush.py21
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/sqlindexes.py22
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/sqlinitialdata.py7
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/sqlsequencereset.py22
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/startapp.py24
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/startproject.py30
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/syncdb.py162
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/test.py91
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/testserver.py45
-rw-r--r--lib/python2.7/site-packages/django/core/management/commands/validate.py10
-rw-r--r--lib/python2.7/site-packages/django/core/management/sql.py216
-rw-r--r--lib/python2.7/site-packages/django/core/management/templates.py325
-rw-r--r--lib/python2.7/site-packages/django/core/management/utils.py79
-rw-r--r--lib/python2.7/site-packages/django/core/management/validation.py372
-rw-r--r--lib/python2.7/site-packages/django/core/paginator.py161
-rw-r--r--lib/python2.7/site-packages/django/core/serializers/__init__.py148
-rw-r--r--lib/python2.7/site-packages/django/core/serializers/base.py171
-rw-r--r--lib/python2.7/site-packages/django/core/serializers/json.py108
-rw-r--r--lib/python2.7/site-packages/django/core/serializers/python.py154
-rw-r--r--lib/python2.7/site-packages/django/core/serializers/pyyaml.py75
-rw-r--r--lib/python2.7/site-packages/django/core/serializers/xml_serializer.py391
-rw-r--r--lib/python2.7/site-packages/django/core/servers/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/core/servers/basehttp.py169
-rw-r--r--lib/python2.7/site-packages/django/core/servers/fastcgi.py185
-rw-r--r--lib/python2.7/site-packages/django/core/signals.py5
-rw-r--r--lib/python2.7/site-packages/django/core/signing.py199
-rw-r--r--lib/python2.7/site-packages/django/core/urlresolvers.py595
-rw-r--r--lib/python2.7/site-packages/django/core/validators.py221
-rw-r--r--lib/python2.7/site-packages/django/core/wsgi.py13
-rw-r--r--lib/python2.7/site-packages/django/db/__init__.py96
-rw-r--r--lib/python2.7/site-packages/django/db/backends/__init__.py1356
-rw-r--r--lib/python2.7/site-packages/django/db/backends/creation.py489
-rw-r--r--lib/python2.7/site-packages/django/db/backends/dummy/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/db/backends/dummy/base.py73
-rw-r--r--lib/python2.7/site-packages/django/db/backends/mysql/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/db/backends/mysql/base.py533
-rw-r--r--lib/python2.7/site-packages/django/db/backends/mysql/client.py40
-rw-r--r--lib/python2.7/site-packages/django/db/backends/mysql/compiler.py37
-rw-r--r--lib/python2.7/site-packages/django/db/backends/mysql/creation.py70
-rw-r--r--lib/python2.7/site-packages/django/db/backends/mysql/introspection.py119
-rw-r--r--lib/python2.7/site-packages/django/db/backends/mysql/validation.py16
-rw-r--r--lib/python2.7/site-packages/django/db/backends/oracle/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/db/backends/oracle/base.py961
-rw-r--r--lib/python2.7/site-packages/django/db/backends/oracle/client.py16
-rw-r--r--lib/python2.7/site-packages/django/db/backends/oracle/compiler.py72
-rw-r--r--lib/python2.7/site-packages/django/db/backends/oracle/creation.py277
-rw-r--r--lib/python2.7/site-packages/django/db/backends/oracle/introspection.py138
-rw-r--r--lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py184
-rw-r--r--lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/client.py23
-rw-r--r--lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/creation.py77
-rw-r--r--lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/introspection.py111
-rw-r--r--lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/operations.py222
-rw-r--r--lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/version.py43
-rw-r--r--lib/python2.7/site-packages/django/db/backends/signals.py3
-rw-r--r--lib/python2.7/site-packages/django/db/backends/sqlite3/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/db/backends/sqlite3/base.py533
-rw-r--r--lib/python2.7/site-packages/django/db/backends/sqlite3/client.py16
-rw-r--r--lib/python2.7/site-packages/django/db/backends/sqlite3/creation.py88
-rw-r--r--lib/python2.7/site-packages/django/db/backends/sqlite3/introspection.py185
-rw-r--r--lib/python2.7/site-packages/django/db/backends/util.py179
-rw-r--r--lib/python2.7/site-packages/django/db/models/__init__.py33
-rw-r--r--lib/python2.7/site-packages/django/db/models/aggregates.py80
-rw-r--r--lib/python2.7/site-packages/django/db/models/base.py1042
-rw-r--r--lib/python2.7/site-packages/django/db/models/constants.py6
-rw-r--r--lib/python2.7/site-packages/django/db/models/deletion.py292
-rw-r--r--lib/python2.7/site-packages/django/db/models/expressions.py186
-rw-r--r--lib/python2.7/site-packages/django/db/models/fields/__init__.py1438
-rw-r--r--lib/python2.7/site-packages/django/db/models/fields/files.py397
-rw-r--r--lib/python2.7/site-packages/django/db/models/fields/proxy.py17
-rw-r--r--lib/python2.7/site-packages/django/db/models/fields/related.py1545
-rw-r--r--lib/python2.7/site-packages/django/db/models/fields/subclassing.py53
-rw-r--r--lib/python2.7/site-packages/django/db/models/loading.py327
-rw-r--r--lib/python2.7/site-packages/django/db/models/manager.py283
-rw-r--r--lib/python2.7/site-packages/django/db/models/options.py589
-rw-r--r--lib/python2.7/site-packages/django/db/models/query.py1731
-rw-r--r--lib/python2.7/site-packages/django/db/models/query_utils.py205
-rw-r--r--lib/python2.7/site-packages/django/db/models/related.py67
-rw-r--r--lib/python2.7/site-packages/django/db/models/signals.py18
-rw-r--r--lib/python2.7/site-packages/django/db/models/sql/__init__.py9
-rw-r--r--lib/python2.7/site-packages/django/db/models/sql/aggregates.py125
-rw-r--r--lib/python2.7/site-packages/django/db/models/sql/compiler.py1128
-rw-r--r--lib/python2.7/site-packages/django/db/models/sql/constants.py41
-rw-r--r--lib/python2.7/site-packages/django/db/models/sql/datastructures.py62
-rw-r--r--lib/python2.7/site-packages/django/db/models/sql/expressions.py117
-rw-r--r--lib/python2.7/site-packages/django/db/models/sql/query.py1922
-rw-r--r--lib/python2.7/site-packages/django/db/models/sql/subqueries.py297
-rw-r--r--lib/python2.7/site-packages/django/db/models/sql/where.py419
-rw-r--r--lib/python2.7/site-packages/django/db/transaction.py541
-rw-r--r--lib/python2.7/site-packages/django/db/utils.py282
-rw-r--r--lib/python2.7/site-packages/django/dispatch/__init__.py9
-rw-r--r--lib/python2.7/site-packages/django/dispatch/dispatcher.py306
-rw-r--r--lib/python2.7/site-packages/django/dispatch/saferef.py257
-rw-r--r--lib/python2.7/site-packages/django/forms/__init__.py11
-rw-r--r--lib/python2.7/site-packages/django/forms/extras/__init__.py3
-rw-r--r--lib/python2.7/site-packages/django/forms/extras/widgets.py138
-rw-r--r--lib/python2.7/site-packages/django/forms/fields.py1146
-rw-r--r--lib/python2.7/site-packages/django/forms/forms.py584
-rw-r--r--lib/python2.7/site-packages/django/forms/formsets.py417
-rw-r--r--lib/python2.7/site-packages/django/forms/models.py1231
-rw-r--r--lib/python2.7/site-packages/django/forms/util.py103
-rw-r--r--lib/python2.7/site-packages/django/forms/widgets.py869
-rw-r--r--lib/python2.7/site-packages/django/http/__init__.py10
-rw-r--r--lib/python2.7/site-packages/django/http/cookie.py86
-rw-r--r--lib/python2.7/site-packages/django/http/multipartparser.py633
-rw-r--r--lib/python2.7/site-packages/django/http/request.py514
-rw-r--r--lib/python2.7/site-packages/django/http/response.py518
-rw-r--r--lib/python2.7/site-packages/django/http/utils.py96
-rw-r--r--lib/python2.7/site-packages/django/middleware/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/middleware/cache.py213
-rw-r--r--lib/python2.7/site-packages/django/middleware/clickjacking.py51
-rw-r--r--lib/python2.7/site-packages/django/middleware/common.py174
-rw-r--r--lib/python2.7/site-packages/django/middleware/csrf.py208
-rw-r--r--lib/python2.7/site-packages/django/middleware/doc.py6
-rw-r--r--lib/python2.7/site-packages/django/middleware/gzip.py52
-rw-r--r--lib/python2.7/site-packages/django/middleware/http.py35
-rw-r--r--lib/python2.7/site-packages/django/middleware/locale.py68
-rw-r--r--lib/python2.7/site-packages/django/middleware/transaction.py56
-rw-r--r--lib/python2.7/site-packages/django/shortcuts/__init__.py161
-rw-r--r--lib/python2.7/site-packages/django/template/__init__.py80
-rw-r--r--lib/python2.7/site-packages/django/template/base.py1335
-rw-r--r--lib/python2.7/site-packages/django/template/context.py169
-rw-r--r--lib/python2.7/site-packages/django/template/debug.py101
-rw-r--r--lib/python2.7/site-packages/django/template/defaultfilters.py893
-rw-r--r--lib/python2.7/site-packages/django/template/defaulttags.py1409
-rw-r--r--lib/python2.7/site-packages/django/template/loader.py188
-rw-r--r--lib/python2.7/site-packages/django/template/loader_tags.py265
-rw-r--r--lib/python2.7/site-packages/django/template/loaders/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/template/loaders/app_directories.py63
-rw-r--r--lib/python2.7/site-packages/django/template/loaders/cached.py64
-rw-r--r--lib/python2.7/site-packages/django/template/loaders/eggs.py33
-rw-r--r--lib/python2.7/site-packages/django/template/loaders/filesystem.py46
-rw-r--r--lib/python2.7/site-packages/django/template/response.py159
-rw-r--r--lib/python2.7/site-packages/django/template/smartif.py205
-rw-r--r--lib/python2.7/site-packages/django/templatetags/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/templatetags/cache.py63
-rw-r--r--lib/python2.7/site-packages/django/templatetags/future.py65
-rw-r--r--lib/python2.7/site-packages/django/templatetags/i18n.py488
-rw-r--r--lib/python2.7/site-packages/django/templatetags/l10n.py62
-rw-r--r--lib/python2.7/site-packages/django/templatetags/static.py158
-rw-r--r--lib/python2.7/site-packages/django/templatetags/tz.py198
-rw-r--r--lib/python2.7/site-packages/django/test/__init__.py10
-rw-r--r--lib/python2.7/site-packages/django/test/_doctest.py2755
-rw-r--r--lib/python2.7/site-packages/django/test/client.py623
-rw-r--r--lib/python2.7/site-packages/django/test/html.py238
-rw-r--r--lib/python2.7/site-packages/django/test/runner.py291
-rw-r--r--lib/python2.7/site-packages/django/test/signals.py81
-rw-r--r--lib/python2.7/site-packages/django/test/simple.py253
-rw-r--r--lib/python2.7/site-packages/django/test/testcases.py1208
-rw-r--r--lib/python2.7/site-packages/django/test/utils.py469
-rw-r--r--lib/python2.7/site-packages/django/utils/2to3_fixes/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/utils/2to3_fixes/fix_unicode.py36
-rw-r--r--lib/python2.7/site-packages/django/utils/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/utils/_os.py98
-rw-r--r--lib/python2.7/site-packages/django/utils/archive.py215
-rw-r--r--lib/python2.7/site-packages/django/utils/autoreload.py182
-rw-r--r--lib/python2.7/site-packages/django/utils/baseconv.py99
-rw-r--r--lib/python2.7/site-packages/django/utils/cache.py264
-rw-r--r--lib/python2.7/site-packages/django/utils/checksums.py24
-rw-r--r--lib/python2.7/site-packages/django/utils/crypto.py166
-rw-r--r--lib/python2.7/site-packages/django/utils/daemonize.py58
-rw-r--r--lib/python2.7/site-packages/django/utils/datastructures.py524
-rw-r--r--lib/python2.7/site-packages/django/utils/dateformat.py317
-rw-r--r--lib/python2.7/site-packages/django/utils/dateparse.py82
-rw-r--r--lib/python2.7/site-packages/django/utils/dates.py57
-rw-r--r--lib/python2.7/site-packages/django/utils/datetime_safe.py92
-rw-r--r--lib/python2.7/site-packages/django/utils/decorators.py120
-rw-r--r--lib/python2.7/site-packages/django/utils/deprecation.py62
-rw-r--r--lib/python2.7/site-packages/django/utils/dictconfig.py555
-rw-r--r--lib/python2.7/site-packages/django/utils/encoding.py253
-rw-r--r--lib/python2.7/site-packages/django/utils/feedgenerator.py391
-rw-r--r--lib/python2.7/site-packages/django/utils/formats.py209
-rw-r--r--lib/python2.7/site-packages/django/utils/functional.py430
-rw-r--r--lib/python2.7/site-packages/django/utils/html.py330
-rw-r--r--lib/python2.7/site-packages/django/utils/html_parser.py113
-rw-r--r--lib/python2.7/site-packages/django/utils/http.py261
-rw-r--r--lib/python2.7/site-packages/django/utils/image.py154
-rw-r--r--lib/python2.7/site-packages/django/utils/importlib.py41
-rw-r--r--lib/python2.7/site-packages/django/utils/ipv6.py268
-rw-r--r--lib/python2.7/site-packages/django/utils/itercompat.py36
-rw-r--r--lib/python2.7/site-packages/django/utils/jslex.py219
-rw-r--r--lib/python2.7/site-packages/django/utils/log.py160
-rw-r--r--lib/python2.7/site-packages/django/utils/module_loading.py98
-rw-r--r--lib/python2.7/site-packages/django/utils/numberformat.py48
-rw-r--r--lib/python2.7/site-packages/django/utils/regex_helper.py342
-rw-r--r--lib/python2.7/site-packages/django/utils/safestring.py134
-rw-r--r--lib/python2.7/site-packages/django/utils/simplejson.py31
-rw-r--r--lib/python2.7/site-packages/django/utils/six.py676
-rw-r--r--lib/python2.7/site-packages/django/utils/synch.py93
-rw-r--r--lib/python2.7/site-packages/django/utils/termcolors.py200
-rw-r--r--lib/python2.7/site-packages/django/utils/text.py412
-rw-r--r--lib/python2.7/site-packages/django/utils/timesince.py64
-rw-r--r--lib/python2.7/site-packages/django/utils/timezone.py317
-rw-r--r--lib/python2.7/site-packages/django/utils/translation/__init__.py196
-rw-r--r--lib/python2.7/site-packages/django/utils/translation/trans_null.py63
-rw-r--r--lib/python2.7/site-packages/django/utils/translation/trans_real.py676
-rw-r--r--lib/python2.7/site-packages/django/utils/tree.py136
-rw-r--r--lib/python2.7/site-packages/django/utils/tzinfo.py100
-rw-r--r--lib/python2.7/site-packages/django/utils/unittest/__init__.py80
-rw-r--r--lib/python2.7/site-packages/django/utils/unittest/__main__.py10
-rw-r--r--lib/python2.7/site-packages/django/utils/unittest/case.py1076
-rw-r--r--lib/python2.7/site-packages/django/utils/unittest/collector.py9
-rw-r--r--lib/python2.7/site-packages/django/utils/unittest/compatibility.py64
-rw-r--r--lib/python2.7/site-packages/django/utils/unittest/loader.py322
-rw-r--r--lib/python2.7/site-packages/django/utils/unittest/main.py241
-rw-r--r--lib/python2.7/site-packages/django/utils/unittest/result.py183
-rw-r--r--lib/python2.7/site-packages/django/utils/unittest/runner.py206
-rw-r--r--lib/python2.7/site-packages/django/utils/unittest/signals.py57
-rw-r--r--lib/python2.7/site-packages/django/utils/unittest/suite.py287
-rw-r--r--lib/python2.7/site-packages/django/utils/unittest/util.py99
-rw-r--r--lib/python2.7/site-packages/django/utils/version.py51
-rw-r--r--lib/python2.7/site-packages/django/utils/xmlutils.py14
-rw-r--r--lib/python2.7/site-packages/django/views/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/views/csrf.py104
-rw-r--r--lib/python2.7/site-packages/django/views/debug.py1150
-rw-r--r--lib/python2.7/site-packages/django/views/decorators/__init__.py0
-rw-r--r--lib/python2.7/site-packages/django/views/decorators/cache.py55
-rw-r--r--lib/python2.7/site-packages/django/views/decorators/clickjacking.py64
-rw-r--r--lib/python2.7/site-packages/django/views/decorators/csrf.py59
-rw-r--r--lib/python2.7/site-packages/django/views/decorators/debug.py77
-rw-r--r--lib/python2.7/site-packages/django/views/decorators/gzip.py5
-rw-r--r--lib/python2.7/site-packages/django/views/decorators/http.py166
-rw-r--r--lib/python2.7/site-packages/django/views/decorators/vary.py39
-rw-r--r--lib/python2.7/site-packages/django/views/defaults.py91
-rw-r--r--lib/python2.7/site-packages/django/views/generic/__init__.py12
-rw-r--r--lib/python2.7/site-packages/django/views/generic/base.py219
-rw-r--r--lib/python2.7/site-packages/django/views/generic/dates.py785
-rw-r--r--lib/python2.7/site-packages/django/views/generic/detail.py173
-rw-r--r--lib/python2.7/site-packages/django/views/generic/edit.py280
-rw-r--r--lib/python2.7/site-packages/django/views/generic/list.py189
-rw-r--r--lib/python2.7/site-packages/django/views/i18n.py305
-rw-r--r--lib/python2.7/site-packages/django/views/static.py143
-rw-r--r--lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/PKG-INFO10
-rw-r--r--lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/SOURCES.txt8
-rw-r--r--lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/dependency_links.txt1
-rw-r--r--lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/installed-files.txt12
-rw-r--r--lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/requires.txt1
-rw-r--r--lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/top_level.txt1
-rw-r--r--lib/python2.7/site-packages/easy-install.pth4
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/PKG-INFO630
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/SOURCES.txt50
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/dependency_links.txt1
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/entry_points.txt4
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/not-zip-safe1
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/top_level.txt1
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/__init__.py268
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/_pkgutil.py592
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/backwardcompat.py135
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/basecommand.py193
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/baseparser.py226
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/__init__.py1
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/bundle.py38
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/completion.py60
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/freeze.py111
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/help.py33
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/install.py279
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/search.py127
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/uninstall.py43
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/unzip.py9
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/zip.py346
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/download.py481
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/exceptions.py27
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/index.py708
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/locations.py52
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/log.py188
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/req.py1526
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/runner.py18
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/status_codes.py5
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/util.py508
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/__init__.py244
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/bazaar.py129
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/git.py206
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/mercurial.py151
-rw-r--r--lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/subversion.py272
-rw-r--r--lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/PKG-INFO33
-rw-r--r--lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/SOURCES.txt62
-rw-r--r--lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/dependency_links.txt1
-rw-r--r--lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/installed-files.txt48
-rw-r--r--lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/top_level.txt1
-rw-r--r--lib/python2.7/site-packages/serial/__init__.py79
-rw-r--r--lib/python2.7/site-packages/serial/rfc2217.py1323
-rw-r--r--lib/python2.7/site-packages/serial/serialcli.py273
-rw-r--r--lib/python2.7/site-packages/serial/serialjava.py262
-rw-r--r--lib/python2.7/site-packages/serial/serialposix.py703
-rw-r--r--lib/python2.7/site-packages/serial/serialutil.py551
-rw-r--r--lib/python2.7/site-packages/serial/serialwin32.py461
-rw-r--r--lib/python2.7/site-packages/serial/sermsdos.py200
-rw-r--r--lib/python2.7/site-packages/serial/tools/__init__.py0
-rw-r--r--lib/python2.7/site-packages/serial/tools/list_ports.py103
-rw-r--r--lib/python2.7/site-packages/serial/tools/list_ports_linux.py143
-rw-r--r--lib/python2.7/site-packages/serial/tools/list_ports_osx.py208
-rw-r--r--lib/python2.7/site-packages/serial/tools/list_ports_posix.py101
-rw-r--r--lib/python2.7/site-packages/serial/tools/list_ports_windows.py240
-rw-r--r--lib/python2.7/site-packages/serial/tools/miniterm.py694
-rw-r--r--lib/python2.7/site-packages/serial/urlhandler/__init__.py0
-rw-r--r--lib/python2.7/site-packages/serial/urlhandler/protocol_hwgrep.py45
-rw-r--r--lib/python2.7/site-packages/serial/urlhandler/protocol_loop.py265
-rw-r--r--lib/python2.7/site-packages/serial/urlhandler/protocol_rfc2217.py11
-rw-r--r--lib/python2.7/site-packages/serial/urlhandler/protocol_socket.py274
-rw-r--r--lib/python2.7/site-packages/serial/win32.py320
-rw-r--r--lib/python2.7/site-packages/setuptools.pth1
-rw-r--r--lib/python2.7/site-packages/south/__init__.py9
-rw-r--r--lib/python2.7/site-packages/south/creator/__init__.py5
-rw-r--r--lib/python2.7/site-packages/south/creator/actions.py559
-rw-r--r--lib/python2.7/site-packages/south/creator/changes.py506
-rw-r--r--lib/python2.7/site-packages/south/creator/freezer.py192
-rw-r--r--lib/python2.7/site-packages/south/db/__init__.py83
-rw-r--r--lib/python2.7/site-packages/south/db/firebird.py362
-rw-r--r--lib/python2.7/site-packages/south/db/generic.py1164
-rw-r--r--lib/python2.7/site-packages/south/db/mysql.py290
-rw-r--r--lib/python2.7/site-packages/south/db/oracle.py345
-rw-r--r--lib/python2.7/site-packages/south/db/postgresql_psycopg2.py96
-rw-r--r--lib/python2.7/site-packages/south/db/sql_server/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/db/sql_server/pyodbc.py444
-rw-r--r--lib/python2.7/site-packages/south/db/sqlite3.py272
-rw-r--r--lib/python2.7/site-packages/south/exceptions.py160
-rw-r--r--lib/python2.7/site-packages/south/hacks/__init__.py10
-rw-r--r--lib/python2.7/site-packages/south/hacks/django_1_0.py110
-rw-r--r--lib/python2.7/site-packages/south/introspection_plugins/__init__.py11
-rw-r--r--lib/python2.7/site-packages/south/introspection_plugins/annoying_autoonetoone.py11
-rw-r--r--lib/python2.7/site-packages/south/introspection_plugins/django_audit_log.py30
-rw-r--r--lib/python2.7/site-packages/south/introspection_plugins/django_objectpermissions.py16
-rw-r--r--lib/python2.7/site-packages/south/introspection_plugins/django_tagging.py24
-rw-r--r--lib/python2.7/site-packages/south/introspection_plugins/django_taggit.py14
-rw-r--r--lib/python2.7/site-packages/south/introspection_plugins/django_timezones.py21
-rw-r--r--lib/python2.7/site-packages/south/introspection_plugins/geodjango.py45
-rw-r--r--lib/python2.7/site-packages/south/logger.py38
-rw-r--r--lib/python2.7/site-packages/south/management/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/management/commands/__init__.py40
-rw-r--r--lib/python2.7/site-packages/south/management/commands/convert_to_south.py95
-rw-r--r--lib/python2.7/site-packages/south/management/commands/datamigration.py139
-rw-r--r--lib/python2.7/site-packages/south/management/commands/graphmigrations.py63
-rw-r--r--lib/python2.7/site-packages/south/management/commands/migrate.py264
-rw-r--r--lib/python2.7/site-packages/south/management/commands/migrationcheck.py67
-rw-r--r--lib/python2.7/site-packages/south/management/commands/schemamigration.py229
-rw-r--r--lib/python2.7/site-packages/south/management/commands/startmigration.py33
-rw-r--r--lib/python2.7/site-packages/south/management/commands/syncdb.py115
-rw-r--r--lib/python2.7/site-packages/south/management/commands/test.py8
-rw-r--r--lib/python2.7/site-packages/south/management/commands/testserver.py8
-rw-r--r--lib/python2.7/site-packages/south/migration/__init__.py235
-rw-r--r--lib/python2.7/site-packages/south/migration/base.py440
-rw-r--r--lib/python2.7/site-packages/south/migration/migrators.py379
-rw-r--r--lib/python2.7/site-packages/south/migration/utils.py94
-rw-r--r--lib/python2.7/site-packages/south/models.py37
-rw-r--r--lib/python2.7/site-packages/south/modelsinspector.py464
-rw-r--r--lib/python2.7/site-packages/south/orm.py407
-rw-r--r--lib/python2.7/site-packages/south/signals.py24
-rw-r--r--lib/python2.7/site-packages/south/test_shim.py6
-rw-r--r--lib/python2.7/site-packages/south/tests/__init__.py109
-rw-r--r--lib/python2.7/site-packages/south/tests/autodetection.py360
-rw-r--r--lib/python2.7/site-packages/south/tests/brokenapp/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/brokenapp/migrations/0001_depends_on_unmigrated.py13
-rw-r--r--lib/python2.7/site-packages/south/tests/brokenapp/migrations/0002_depends_on_unknown.py13
-rw-r--r--lib/python2.7/site-packages/south/tests/brokenapp/migrations/0003_depends_on_higher.py13
-rw-r--r--lib/python2.7/site-packages/south/tests/brokenapp/migrations/0004_higher.py11
-rw-r--r--lib/python2.7/site-packages/south/tests/brokenapp/migrations/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/brokenapp/models.py55
-rw-r--r--lib/python2.7/site-packages/south/tests/circular_a/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/circular_a/migrations/0001_first.py13
-rw-r--r--lib/python2.7/site-packages/south/tests/circular_a/migrations/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/circular_a/models.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/circular_b/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/circular_b/migrations/0001_first.py13
-rw-r--r--lib/python2.7/site-packages/south/tests/circular_b/migrations/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/circular_b/models.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/db.py1060
-rw-r--r--lib/python2.7/site-packages/south/tests/db_firebird.py39
-rw-r--r--lib/python2.7/site-packages/south/tests/db_mysql.py164
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_a/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_a/migrations/0001_a.py11
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_a/migrations/0002_a.py11
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_a/migrations/0003_a.py11
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_a/migrations/0004_a.py13
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_a/migrations/0005_a.py11
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_a/migrations/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_a/models.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_b/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_b/migrations/0001_b.py11
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_b/migrations/0002_b.py13
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_b/migrations/0003_b.py13
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_b/migrations/0004_b.py11
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_b/migrations/0005_b.py11
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_b/migrations/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_b/models.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_c/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_c/migrations/0001_c.py11
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_c/migrations/0002_c.py11
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_c/migrations/0003_c.py11
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_c/migrations/0004_c.py11
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_c/migrations/0005_c.py13
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_c/migrations/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/deps_c/models.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/emptyapp/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/emptyapp/migrations/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/emptyapp/models.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/fakeapp/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/fakeapp/migrations/0001_spam.py17
-rw-r--r--lib/python2.7/site-packages/south/tests/fakeapp/migrations/0002_eggs.py20
-rw-r--r--lib/python2.7/site-packages/south/tests/fakeapp/migrations/0003_alter_spam.py18
-rw-r--r--lib/python2.7/site-packages/south/tests/fakeapp/migrations/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/fakeapp/models.py111
-rw-r--r--lib/python2.7/site-packages/south/tests/freezer.py15
-rw-r--r--lib/python2.7/site-packages/south/tests/inspector.py109
-rw-r--r--lib/python2.7/site-packages/south/tests/logger.py82
-rw-r--r--lib/python2.7/site-packages/south/tests/logic.py902
-rw-r--r--lib/python2.7/site-packages/south/tests/non_managed/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/non_managed/migrations/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/non_managed/models.py16
-rw-r--r--lib/python2.7/site-packages/south/tests/otherfakeapp/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/otherfakeapp/migrations/0001_first.py15
-rw-r--r--lib/python2.7/site-packages/south/tests/otherfakeapp/migrations/0002_second.py11
-rw-r--r--lib/python2.7/site-packages/south/tests/otherfakeapp/migrations/0003_third.py14
-rw-r--r--lib/python2.7/site-packages/south/tests/otherfakeapp/migrations/__init__.py0
-rw-r--r--lib/python2.7/site-packages/south/tests/otherfakeapp/models.py1
-rw-r--r--lib/python2.7/site-packages/south/utils/__init__.py73
-rw-r--r--lib/python2.7/site-packages/south/utils/datetime_utils.py28
-rw-r--r--lib/python2.7/site-packages/south/utils/py3.py28
-rw-r--r--lib/python2.7/site-packages/south/v2.py25
-rw-r--r--lib/python2.7/site-packages/undelete/__init__.py0
-rw-r--r--lib/python2.7/site-packages/undelete/managers.py40
-rw-r--r--lib/python2.7/site-packages/undelete/models.py30
-rw-r--r--lib/python2.7/site.py737
-rw-r--r--myadmin/__init__.py (renamed from lib/python2.7/site-packages/django/conf/locale/ar/__init__.py)0
-rw-r--r--myadmin/admin.py (renamed from sbhs_server/admin/admin.py)0
-rw-r--r--myadmin/models.py (renamed from sbhs_server/admin/models.py)0
-rw-r--r--myadmin/tests.py (renamed from sbhs_server/admin/tests.py)0
-rw-r--r--myadmin/urls.py12
-rw-r--r--myadmin/views.py (renamed from sbhs_server/admin/views.py)0
-rw-r--r--pages/__init__.py (renamed from lib/python2.7/site-packages/django/conf/locale/bg/__init__.py)0
-rw-r--r--pages/admin.py (renamed from sbhs_server/experiment/admin.py)0
-rw-r--r--pages/management/__init__.py (renamed from lib/python2.7/site-packages/django/conf/locale/bn/__init__.py)0
-rw-r--r--pages/management/commands/__init__.py (renamed from lib/python2.7/site-packages/django/conf/locale/bs/__init__.py)0
-rw-r--r--pages/management/commands/arm.diff (renamed from sbhs_server/pages/management/commands/arm.diff)0
-rw-r--r--pages/management/commands/zip_client.py (renamed from sbhs_server/pages/management/commands/zip_client.py)0
-rw-r--r--pages/models.py (renamed from sbhs_server/experiment/models.py)0
-rw-r--r--pages/tests.py (renamed from sbhs_server/experiment/tests.py)0
-rw-r--r--pages/urls.py16
-rw-r--r--pages/views.py (renamed from sbhs_server/pages/views.py)0
-rw-r--r--password/__init__.py (renamed from lib/python2.7/site-packages/django/conf/locale/ca/__init__.py)0
-rw-r--r--password/admin.py (renamed from sbhs_server/pages/admin.py)0
-rw-r--r--password/models.py (renamed from sbhs_server/pages/models.py)0
-rw-r--r--password/tests.py (renamed from sbhs_server/pages/tests.py)0
-rw-r--r--password/urls.py10
-rw-r--r--password/views.py (renamed from sbhs_server/password/views.py)2
-rw-r--r--sbhs.sqlite3bin114688 -> 120832 bytes
-rw-r--r--sbhs_server/account/__init__.py0
-rw-r--r--sbhs_server/admin/__init__.py0
-rw-r--r--sbhs_server/experiment/__init__.py0
-rw-r--r--sbhs_server/pages/__init__.py0
-rw-r--r--sbhs_server/pages/management/__init__.py0
-rw-r--r--sbhs_server/pages/management/commands/__init__.py0
-rw-r--r--sbhs_server/password/__init__.py0
-rw-r--r--sbhs_server/settings.py41
-rw-r--r--sbhs_server/slot/__init__.py0
-rw-r--r--sbhs_server/slot/migrations/0001_slot_timing_data.py29
-rw-r--r--sbhs_server/slot/migrations/__init__.py0
-rw-r--r--sbhs_server/tables/migrations/0001_initial.py150
-rw-r--r--sbhs_server/tables/migrations/0002_remove_experiment_checksum.py78
-rw-r--r--sbhs_server/tables/migrations/0003_add_field_Booking_booking_date.py79
-rw-r--r--sbhs_server/tables/migrations/0004_add_field_Experiment_checksum.py80
-rw-r--r--sbhs_server/tables/migrations/0005_load_boards_data.py75
-rw-r--r--sbhs_server/tables/migrations/0006_load_sample_users_data.py84
-rw-r--r--sbhs_server/tables/migrations/__init__.py0
-rw-r--r--sbhs_server/tables/models.py2
-rw-r--r--sbhs_server/urls.py75
-rw-r--r--sbhs_server/webcam/__init__.py0
-rw-r--r--sbhs_server/webcam/admin.py3
-rw-r--r--sbhs_server/webcam/management/__init__.py0
-rw-r--r--sbhs_server/webcam/management/commands/__init__.py0
-rw-r--r--sbhs_server/webcam/models.py3
-rw-r--r--sbhs_server/webcam/tests.py3
-rw-r--r--slot/__init__.py (renamed from lib/python2.7/site-packages/django/conf/locale/cs/__init__.py)0
-rw-r--r--slot/admin.py (renamed from sbhs_server/password/admin.py)0
-rw-r--r--slot/models.py (renamed from sbhs_server/password/models.py)0
-rw-r--r--slot/tests.py (renamed from sbhs_server/password/tests.py)0
-rw-r--r--slot/urls.py11
-rw-r--r--slot/views.py (renamed from sbhs_server/slot/views.py)0
-rw-r--r--templates/account/index.html6
-rw-r--r--templates/account/sub_nav.html10
-rw-r--r--templates/admin/index.html6
-rw-r--r--templates/admin/sub_nav.html6
-rw-r--r--templates/experiment/logs.html2
-rw-r--r--templates/modals.html2
-rw-r--r--templates/nav.html20
-rw-r--r--templates/pages/e404.html2
-rw-r--r--templates/pages/e500.html2
-rw-r--r--templates/password/edit.html2
-rw-r--r--templates/password/new.html2
-rw-r--r--templates/slot/index.html4
-rw-r--r--templates/slot/new.html6
-rw-r--r--templates/webcam/show_video.html4
-rw-r--r--webcam/__init__.py (renamed from lib/python2.7/site-packages/django/conf/locale/cy/__init__.py)0
-rw-r--r--webcam/admin.py (renamed from sbhs_server/slot/admin.py)0
-rw-r--r--webcam/management/__init__.py (renamed from lib/python2.7/site-packages/django/conf/locale/da/__init__.py)0
-rw-r--r--webcam/management/commands/__init__.py (renamed from lib/python2.7/site-packages/django/conf/locale/de/__init__.py)0
-rw-r--r--webcam/management/commands/reload_images.py (renamed from sbhs_server/webcam/management/commands/reload_images.py)0
-rw-r--r--webcam/models.py (renamed from sbhs_server/slot/models.py)0
-rw-r--r--webcam/tests.py (renamed from sbhs_server/slot/tests.py)0
-rw-r--r--webcam/urls.py9
-rw-r--r--webcam/views.py (renamed from sbhs_server/webcam/views.py)2
-rw-r--r--webcam/views.py-bkup (renamed from sbhs_server/webcam/views.py-bkup)0
3694 files changed, 173 insertions, 501840 deletions
diff --git a/lib/python2.7/site-packages/django/bin/profiling/__init__.py b/account/__init__.py
index e69de29..e69de29 100644
--- a/lib/python2.7/site-packages/django/bin/profiling/__init__.py
+++ b/account/__init__.py
diff --git a/lib/python2.7/site-packages/django/conf/app_template/admin.py b/account/admin.py
index 8c38f3f..8c38f3f 100644
--- a/lib/python2.7/site-packages/django/conf/app_template/admin.py
+++ b/account/admin.py
diff --git a/lib/python2.7/site-packages/django/conf/app_template/models.py b/account/models.py
index 71a8362..71a8362 100644
--- a/lib/python2.7/site-packages/django/conf/app_template/models.py
+++ b/account/models.py
diff --git a/lib/python2.7/site-packages/django/conf/app_template/tests.py b/account/tests.py
index 7ce503c..7ce503c 100644
--- a/lib/python2.7/site-packages/django/conf/app_template/tests.py
+++ b/account/tests.py
diff --git a/account/urls.py b/account/urls.py
new file mode 100644
index 0000000..1790644
--- /dev/null
+++ b/account/urls.py
@@ -0,0 +1,12 @@
+from django.conf.urls import url
+
+from . import views
+
+urlpatterns = [
+ url(r'^enter/?$', views.index, name='account_enter'),
+ url(r'^account/create/?$', views.create, name='account_create'),
+ url(r'^account/confirm/(.*)/?$', views.confirm, name='account_confirm'),
+ url(r'^login/?$', views.login, name='account_login'),
+ url(r'^logout/?$', views.logout, name='account_logout'),
+ url(r'^home/?$', views.home, name='account_home'),
+] \ No newline at end of file
diff --git a/sbhs_server/account/views.py b/account/views.py
index 306b318..306b318 100644
--- a/sbhs_server/account/views.py
+++ b/account/views.py
diff --git a/bin/activate b/bin/activate
deleted file mode 100644
index 55ce317..0000000
--- a/bin/activate
+++ /dev/null
@@ -1,76 +0,0 @@
-# This file must be used with "source bin/activate" *from bash*
-# you cannot run it directly
-
-deactivate () {
- # reset old environment variables
- if [ -n "$_OLD_VIRTUAL_PATH" ] ; then
- PATH="$_OLD_VIRTUAL_PATH"
- export PATH
- unset _OLD_VIRTUAL_PATH
- fi
- if [ -n "$_OLD_VIRTUAL_PYTHONHOME" ] ; then
- PYTHONHOME="$_OLD_VIRTUAL_PYTHONHOME"
- export PYTHONHOME
- unset _OLD_VIRTUAL_PYTHONHOME
- fi
-
- # This should detect bash and zsh, which have a hash command that must
- # be called to get it to forget past commands. Without forgetting
- # past commands the $PATH changes we made may not be respected
- if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
- hash -r
- fi
-
- if [ -n "$_OLD_VIRTUAL_PS1" ] ; then
- PS1="$_OLD_VIRTUAL_PS1"
- export PS1
- unset _OLD_VIRTUAL_PS1
- fi
-
- unset VIRTUAL_ENV
- if [ ! "$1" = "nondestructive" ] ; then
- # Self destruct!
- unset -f deactivate
- fi
-}
-
-# unset irrelavent variables
-deactivate nondestructive
-
-VIRTUAL_ENV="/home/vlabs/sbhs_vlabs/sbhs"
-export VIRTUAL_ENV
-
-_OLD_VIRTUAL_PATH="$PATH"
-PATH="$VIRTUAL_ENV/bin:$PATH"
-export PATH
-
-# unset PYTHONHOME if set
-# this will fail if PYTHONHOME is set to the empty string (which is bad anyway)
-# could use `if (set -u; : $PYTHONHOME) ;` in bash
-if [ -n "$PYTHONHOME" ] ; then
- _OLD_VIRTUAL_PYTHONHOME="$PYTHONHOME"
- unset PYTHONHOME
-fi
-
-if [ -z "$VIRTUAL_ENV_DISABLE_PROMPT" ] ; then
- _OLD_VIRTUAL_PS1="$PS1"
- if [ "x" != x ] ; then
- PS1="$PS1"
- else
- if [ "`basename \"$VIRTUAL_ENV\"`" = "__" ] ; then
- # special case for Aspen magic directories
- # see http://www.zetadev.com/software/aspen/
- PS1="[`basename \`dirname \"$VIRTUAL_ENV\"\``] $PS1"
- else
- PS1="(`basename \"$VIRTUAL_ENV\"`)$PS1"
- fi
- fi
- export PS1
-fi
-
-# This should detect bash and zsh, which have a hash command that must
-# be called to get it to forget past commands. Without forgetting
-# past commands the $PATH changes we made may not be respected
-if [ -n "$BASH" -o -n "$ZSH_VERSION" ] ; then
- hash -r
-fi
diff --git a/bin/activate.csh b/bin/activate.csh
deleted file mode 100644
index 5000c65..0000000
--- a/bin/activate.csh
+++ /dev/null
@@ -1,32 +0,0 @@
-# This file must be used with "source bin/activate.csh" *from csh*.
-# You cannot run it directly.
-# Created by Davide Di Blasi <davidedb@gmail.com>.
-
-alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; test "\!:*" != "nondestructive" && unalias deactivate'
-
-# Unset irrelavent variables.
-deactivate nondestructive
-
-setenv VIRTUAL_ENV "/home/vlabs/sbhs_vlabs/sbhs"
-
-set _OLD_VIRTUAL_PATH="$PATH"
-setenv PATH "$VIRTUAL_ENV/bin:$PATH"
-
-set _OLD_VIRTUAL_PROMPT="$prompt"
-
-if ("" != "") then
- set env_name = ""
-else
- if (`basename "$VIRTUAL_ENV"` == "__") then
- # special case for Aspen magic directories
- # see http://www.zetadev.com/software/aspen/
- set env_name = `basename \`dirname "$VIRTUAL_ENV"\``
- else
- set env_name = `basename "$VIRTUAL_ENV"`
- endif
-endif
-set prompt = "[$env_name] $prompt"
-unset env_name
-
-rehash
-
diff --git a/bin/activate.fish b/bin/activate.fish
deleted file mode 100644
index 4c64fec..0000000
--- a/bin/activate.fish
+++ /dev/null
@@ -1,79 +0,0 @@
-# This file must be used with ". bin/activate.fish" *from fish* (http://fishshell.org)
-# you cannot run it directly
-
-function deactivate -d "Exit virtualenv and return to normal shell environment"
- # reset old environment variables
- if test -n "$_OLD_VIRTUAL_PATH"
- set -gx PATH $_OLD_VIRTUAL_PATH
- set -e _OLD_VIRTUAL_PATH
- end
- if test -n "$_OLD_VIRTUAL_PYTHONHOME"
- set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME
- set -e _OLD_VIRTUAL_PYTHONHOME
- end
-
- if test -n "$_OLD_FISH_PROMPT_OVERRIDE"
- functions -e fish_prompt
- set -e _OLD_FISH_PROMPT_OVERRIDE
- end
-
- set -e VIRTUAL_ENV
- if test "$argv[1]" != "nondestructive"
- # Self destruct!
- functions -e deactivate
- end
-end
-
-# unset irrelavent variables
-deactivate nondestructive
-
-set -gx VIRTUAL_ENV "/home/vlabs/sbhs_vlabs/sbhs"
-
-set -gx _OLD_VIRTUAL_PATH $PATH
-set -gx PATH "$VIRTUAL_ENV/bin" $PATH
-
-# unset PYTHONHOME if set
-if set -q PYTHONHOME
- set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME
- set -e PYTHONHOME
-end
-
-if test -z "$VIRTUAL_ENV_DISABLE_PROMPT"
- # fish shell uses a function, instead of env vars,
- # to produce the prompt. Overriding the existing function is easy.
- # However, adding to the current prompt, instead of clobbering it,
- # is a little more work.
- set -l oldpromptfile (tempfile)
- if test $status
- # save the current fish_prompt function...
- echo "function _old_fish_prompt" >> $oldpromptfile
- echo -n \# >> $oldpromptfile
- functions fish_prompt >> $oldpromptfile
- # we've made the "_old_fish_prompt" file, source it.
- . $oldpromptfile
- rm -f $oldpromptfile
-
- if test -n ""
- # We've been given us a prompt override.
- #
- # FIXME: Unsure how to handle this *safely*. We could just eval()
- # whatever is given, but the risk is a bit much.
- echo "activate.fish: Alternative prompt prefix is not supported under fish-shell." 1>&2
- echo "activate.fish: Alter the fish_prompt in this file as needed." 1>&2
- end
-
- # with the original prompt function renamed, we can override with our own.
- function fish_prompt
- set -l _checkbase (basename "$VIRTUAL_ENV")
- if test $_checkbase = "__"
- # special case for Aspen magic directories
- # see http://www.zetadev.com/software/aspen/
- printf "%s[%s]%s %s" (set_color -b blue white) (basename (dirname "$VIRTUAL_ENV")) (set_color normal) (_old_fish_prompt)
- else
- printf "%s(%s)%s%s" (set_color -b blue white) (basename "$VIRTUAL_ENV") (set_color normal) (_old_fish_prompt)
- end
- end
- set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV"
- end
-end
-
diff --git a/bin/activate_this.py b/bin/activate_this.py
deleted file mode 100644
index ea12c28..0000000
--- a/bin/activate_this.py
+++ /dev/null
@@ -1,34 +0,0 @@
-"""By using execfile(this_file, dict(__file__=this_file)) you will
-activate this virtualenv environment.
-
-This can be used when you must use an existing Python interpreter, not
-the virtualenv bin/python
-"""
-
-try:
- __file__
-except NameError:
- raise AssertionError(
- "You must run this like execfile('path/to/activate_this.py', dict(__file__='path/to/activate_this.py'))")
-import sys
-import os
-
-old_os_path = os.environ['PATH']
-os.environ['PATH'] = os.path.dirname(os.path.abspath(__file__)) + os.pathsep + old_os_path
-base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
-if sys.platform == 'win32':
- site_packages = os.path.join(base, 'Lib', 'site-packages')
-else:
- site_packages = os.path.join(base, 'lib', 'python%s' % sys.version[:3], 'site-packages')
-prev_sys_path = list(sys.path)
-import site
-site.addsitedir(site_packages)
-sys.real_prefix = sys.prefix
-sys.prefix = base
-# Move the added items to the front of the path:
-new_sys_path = []
-for item in list(sys.path):
- if item not in prev_sys_path:
- new_sys_path.append(item)
- sys.path.remove(item)
-sys.path[:0] = new_sys_path
diff --git a/bin/django-admin.py b/bin/django-admin.py
deleted file mode 100644
index 9aeb9ff..0000000
--- a/bin/django-admin.py
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/home/vlabs/sbhs_vlabs/sbhs/bin/python
-from django.core import management
-
-if __name__ == "__main__":
- management.execute_from_command_line()
diff --git a/bin/easy_install b/bin/easy_install
deleted file mode 100644
index e5e46fa..0000000
--- a/bin/easy_install
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/home/vlabs/sbhs_vlabs/sbhs/bin/python
-# EASY-INSTALL-ENTRY-SCRIPT: 'distribute==0.6.24','console_scripts','easy_install'
-__requires__ = 'distribute==0.6.24'
-import sys
-from pkg_resources import load_entry_point
-
-if __name__ == '__main__':
- sys.exit(
- load_entry_point('distribute==0.6.24', 'console_scripts', 'easy_install')()
- )
diff --git a/bin/easy_install-2.7 b/bin/easy_install-2.7
deleted file mode 100644
index 29cfad8..0000000
--- a/bin/easy_install-2.7
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/home/vlabs/sbhs_vlabs/sbhs/bin/python
-# EASY-INSTALL-ENTRY-SCRIPT: 'distribute==0.6.24','console_scripts','easy_install-2.7'
-__requires__ = 'distribute==0.6.24'
-import sys
-from pkg_resources import load_entry_point
-
-if __name__ == '__main__':
- sys.exit(
- load_entry_point('distribute==0.6.24', 'console_scripts', 'easy_install-2.7')()
- )
diff --git a/bin/miniterm.py b/bin/miniterm.py
deleted file mode 100644
index 4b9c246..0000000
--- a/bin/miniterm.py
+++ /dev/null
@@ -1,694 +0,0 @@
-#!/home/vlabs/sbhs_vlabs/sbhs/bin/python
-
-# Very simple serial terminal
-# (C)2002-2011 Chris Liechti <cliechti@gmx.net>
-
-# Input characters are sent directly (only LF -> CR/LF/CRLF translation is
-# done), received characters are displayed as is (or escaped trough pythons
-# repr, useful for debug purposes)
-
-
-import sys, os, serial, threading
-try:
- from serial.tools.list_ports import comports
-except ImportError:
- comports = None
-
-EXITCHARCTER = serial.to_bytes([0x1d]) # GS/CTRL+]
-MENUCHARACTER = serial.to_bytes([0x14]) # Menu: CTRL+T
-
-DEFAULT_PORT = None
-DEFAULT_BAUDRATE = 9600
-DEFAULT_RTS = None
-DEFAULT_DTR = None
-
-
-def key_description(character):
- """generate a readable description for a key"""
- ascii_code = ord(character)
- if ascii_code < 32:
- return 'Ctrl+%c' % (ord('@') + ascii_code)
- else:
- return repr(character)
-
-
-# help text, starts with blank line! it's a function so that the current values
-# for the shortcut keys is used and not the value at program start
-def get_help_text():
- return """
---- pySerial (%(version)s) - miniterm - help
----
---- %(exit)-8s Exit program
---- %(menu)-8s Menu escape key, followed by:
---- Menu keys:
---- %(itself)-7s Send the menu character itself to remote
---- %(exchar)-7s Send the exit character itself to remote
---- %(info)-7s Show info
---- %(upload)-7s Upload file (prompt will be shown)
---- Toggles:
---- %(rts)-7s RTS %(echo)-7s local echo
---- %(dtr)-7s DTR %(break)-7s BREAK
---- %(lfm)-7s line feed %(repr)-7s Cycle repr mode
----
---- Port settings (%(menu)s followed by the following):
---- p change port
---- 7 8 set data bits
---- n e o s m change parity (None, Even, Odd, Space, Mark)
---- 1 2 3 set stop bits (1, 2, 1.5)
---- b change baud rate
---- x X disable/enable software flow control
---- r R disable/enable hardware flow control
-""" % {
- 'version': getattr(serial, 'VERSION', 'unknown version'),
- 'exit': key_description(EXITCHARCTER),
- 'menu': key_description(MENUCHARACTER),
- 'rts': key_description('\x12'),
- 'repr': key_description('\x01'),
- 'dtr': key_description('\x04'),
- 'lfm': key_description('\x0c'),
- 'break': key_description('\x02'),
- 'echo': key_description('\x05'),
- 'info': key_description('\x09'),
- 'upload': key_description('\x15'),
- 'itself': key_description(MENUCHARACTER),
- 'exchar': key_description(EXITCHARCTER),
-}
-
-if sys.version_info >= (3, 0):
- def character(b):
- return b.decode('latin1')
-else:
- def character(b):
- return b
-
-LF = serial.to_bytes([10])
-CR = serial.to_bytes([13])
-CRLF = serial.to_bytes([13, 10])
-
-X00 = serial.to_bytes([0])
-X0E = serial.to_bytes([0x0e])
-
-# first choose a platform dependant way to read single characters from the console
-global console
-
-if os.name == 'nt':
- import msvcrt
- class Console(object):
- def __init__(self):
- pass
-
- def setup(self):
- pass # Do nothing for 'nt'
-
- def cleanup(self):
- pass # Do nothing for 'nt'
-
- def getkey(self):
- while True:
- z = msvcrt.getch()
- if z == X00 or z == X0E: # functions keys, ignore
- msvcrt.getch()
- else:
- if z == CR:
- return LF
- return z
-
- console = Console()
-
-elif os.name == 'posix':
- import termios, sys, os
- class Console(object):
- def __init__(self):
- self.fd = sys.stdin.fileno()
- self.old = None
-
- def setup(self):
- self.old = termios.tcgetattr(self.fd)
- new = termios.tcgetattr(self.fd)
- new[3] = new[3] & ~termios.ICANON & ~termios.ECHO & ~termios.ISIG
- new[6][termios.VMIN] = 1
- new[6][termios.VTIME] = 0
- termios.tcsetattr(self.fd, termios.TCSANOW, new)
-
- def getkey(self):
- c = os.read(self.fd, 1)
- return c
-
- def cleanup(self):
- if self.old is not None:
- termios.tcsetattr(self.fd, termios.TCSAFLUSH, self.old)
-
- console = Console()
-
- def cleanup_console():
- console.cleanup()
-
- sys.exitfunc = cleanup_console # terminal modes have to be restored on exit...
-
-else:
- raise NotImplementedError("Sorry no implementation for your platform (%s) available." % sys.platform)
-
-
-def dump_port_list():
- if comports:
- sys.stderr.write('\n--- Available ports:\n')
- for port, desc, hwid in sorted(comports()):
- #~ sys.stderr.write('--- %-20s %s [%s]\n' % (port, desc, hwid))
- sys.stderr.write('--- %-20s %s\n' % (port, desc))
-
-
-CONVERT_CRLF = 2
-CONVERT_CR = 1
-CONVERT_LF = 0
-NEWLINE_CONVERISON_MAP = (LF, CR, CRLF)
-LF_MODES = ('LF', 'CR', 'CR/LF')
-
-REPR_MODES = ('raw', 'some control', 'all control', 'hex')
-
-class Miniterm(object):
- def __init__(self, port, baudrate, parity, rtscts, xonxoff, echo=False, convert_outgoing=CONVERT_CRLF, repr_mode=0):
- try:
- self.serial = serial.serial_for_url(port, baudrate, parity=parity, rtscts=rtscts, xonxoff=xonxoff, timeout=1)
- except AttributeError:
- # happens when the installed pyserial is older than 2.5. use the
- # Serial class directly then.
- self.serial = serial.Serial(port, baudrate, parity=parity, rtscts=rtscts, xonxoff=xonxoff, timeout=1)
- self.echo = echo
- self.repr_mode = repr_mode
- self.convert_outgoing = convert_outgoing
- self.newline = NEWLINE_CONVERISON_MAP[self.convert_outgoing]
- self.dtr_state = True
- self.rts_state = True
- self.break_state = False
-
- def _start_reader(self):
- """Start reader thread"""
- self._reader_alive = True
- # start serial->console thread
- self.receiver_thread = threading.Thread(target=self.reader)
- self.receiver_thread.setDaemon(True)
- self.receiver_thread.start()
-
- def _stop_reader(self):
- """Stop reader thread only, wait for clean exit of thread"""
- self._reader_alive = False
- self.receiver_thread.join()
-
-
- def start(self):
- self.alive = True
- self._start_reader()
- # enter console->serial loop
- self.transmitter_thread = threading.Thread(target=self.writer)
- self.transmitter_thread.setDaemon(True)
- self.transmitter_thread.start()
-
- def stop(self):
- self.alive = False
-
- def join(self, transmit_only=False):
- self.transmitter_thread.join()
- if not transmit_only:
- self.receiver_thread.join()
-
- def dump_port_settings(self):
- sys.stderr.write("\n--- Settings: %s %s,%s,%s,%s\n" % (
- self.serial.portstr,
- self.serial.baudrate,
- self.serial.bytesize,
- self.serial.parity,
- self.serial.stopbits))
- sys.stderr.write('--- RTS: %-8s DTR: %-8s BREAK: %-8s\n' % (
- (self.rts_state and 'active' or 'inactive'),
- (self.dtr_state and 'active' or 'inactive'),
- (self.break_state and 'active' or 'inactive')))
- try:
- sys.stderr.write('--- CTS: %-8s DSR: %-8s RI: %-8s CD: %-8s\n' % (
- (self.serial.getCTS() and 'active' or 'inactive'),
- (self.serial.getDSR() and 'active' or 'inactive'),
- (self.serial.getRI() and 'active' or 'inactive'),
- (self.serial.getCD() and 'active' or 'inactive')))
- except serial.SerialException:
- # on RFC 2217 ports it can happen to no modem state notification was
- # yet received. ignore this error.
- pass
- sys.stderr.write('--- software flow control: %s\n' % (self.serial.xonxoff and 'active' or 'inactive'))
- sys.stderr.write('--- hardware flow control: %s\n' % (self.serial.rtscts and 'active' or 'inactive'))
- sys.stderr.write('--- data escaping: %s linefeed: %s\n' % (
- REPR_MODES[self.repr_mode],
- LF_MODES[self.convert_outgoing]))
-
- def reader(self):
- """loop and copy serial->console"""
- try:
- while self.alive and self._reader_alive:
- data = character(self.serial.read(1))
-
- if self.repr_mode == 0:
- # direct output, just have to care about newline setting
- if data == '\r' and self.convert_outgoing == CONVERT_CR:
- sys.stdout.write('\n')
- else:
- sys.stdout.write(data)
- elif self.repr_mode == 1:
- # escape non-printable, let pass newlines
- if self.convert_outgoing == CONVERT_CRLF and data in '\r\n':
- if data == '\n':
- sys.stdout.write('\n')
- elif data == '\r':
- pass
- elif data == '\n' and self.convert_outgoing == CONVERT_LF:
- sys.stdout.write('\n')
- elif data == '\r' and self.convert_outgoing == CONVERT_CR:
- sys.stdout.write('\n')
- else:
- sys.stdout.write(repr(data)[1:-1])
- elif self.repr_mode == 2:
- # escape all non-printable, including newline
- sys.stdout.write(repr(data)[1:-1])
- elif self.repr_mode == 3:
- # escape everything (hexdump)
- for c in data:
- sys.stdout.write("%s " % c.encode('hex'))
- sys.stdout.flush()
- except serial.SerialException, e:
- self.alive = False
- # would be nice if the console reader could be interruptted at this
- # point...
- raise
-
-
- def writer(self):
- """\
- Loop and copy console->serial until EXITCHARCTER character is
- found. When MENUCHARACTER is found, interpret the next key
- locally.
- """
- menu_active = False
- try:
- while self.alive:
- try:
- b = console.getkey()
- except KeyboardInterrupt:
- b = serial.to_bytes([3])
- c = character(b)
- if menu_active:
- if c == MENUCHARACTER or c == EXITCHARCTER: # Menu character again/exit char -> send itself
- self.serial.write(b) # send character
- if self.echo:
- sys.stdout.write(c)
- elif c == '\x15': # CTRL+U -> upload file
- sys.stderr.write('\n--- File to upload: ')
- sys.stderr.flush()
- console.cleanup()
- filename = sys.stdin.readline().rstrip('\r\n')
- if filename:
- try:
- file = open(filename, 'r')
- sys.stderr.write('--- Sending file %s ---\n' % filename)
- while True:
- line = file.readline().rstrip('\r\n')
- if not line:
- break
- self.serial.write(line)
- self.serial.write('\r\n')
- # Wait for output buffer to drain.
- self.serial.flush()
- sys.stderr.write('.') # Progress indicator.
- sys.stderr.write('\n--- File %s sent ---\n' % filename)
- except IOError, e:
- sys.stderr.write('--- ERROR opening file %s: %s ---\n' % (filename, e))
- console.setup()
- elif c in '\x08hH?': # CTRL+H, h, H, ? -> Show help
- sys.stderr.write(get_help_text())
- elif c == '\x12': # CTRL+R -> Toggle RTS
- self.rts_state = not self.rts_state
- self.serial.setRTS(self.rts_state)
- sys.stderr.write('--- RTS %s ---\n' % (self.rts_state and 'active' or 'inactive'))
- elif c == '\x04': # CTRL+D -> Toggle DTR
- self.dtr_state = not self.dtr_state
- self.serial.setDTR(self.dtr_state)
- sys.stderr.write('--- DTR %s ---\n' % (self.dtr_state and 'active' or 'inactive'))
- elif c == '\x02': # CTRL+B -> toggle BREAK condition
- self.break_state = not self.break_state
- self.serial.setBreak(self.break_state)
- sys.stderr.write('--- BREAK %s ---\n' % (self.break_state and 'active' or 'inactive'))
- elif c == '\x05': # CTRL+E -> toggle local echo
- self.echo = not self.echo
- sys.stderr.write('--- local echo %s ---\n' % (self.echo and 'active' or 'inactive'))
- elif c == '\x09': # CTRL+I -> info
- self.dump_port_settings()
- elif c == '\x01': # CTRL+A -> cycle escape mode
- self.repr_mode += 1
- if self.repr_mode > 3:
- self.repr_mode = 0
- sys.stderr.write('--- escape data: %s ---\n' % (
- REPR_MODES[self.repr_mode],
- ))
- elif c == '\x0c': # CTRL+L -> cycle linefeed mode
- self.convert_outgoing += 1
- if self.convert_outgoing > 2:
- self.convert_outgoing = 0
- self.newline = NEWLINE_CONVERISON_MAP[self.convert_outgoing]
- sys.stderr.write('--- line feed %s ---\n' % (
- LF_MODES[self.convert_outgoing],
- ))
- elif c in 'pP': # P -> change port
- dump_port_list()
- sys.stderr.write('--- Enter port name: ')
- sys.stderr.flush()
- console.cleanup()
- try:
- port = sys.stdin.readline().strip()
- except KeyboardInterrupt:
- port = None
- console.setup()
- if port and port != self.serial.port:
- # reader thread needs to be shut down
- self._stop_reader()
- # save settings
- settings = self.serial.getSettingsDict()
- try:
- try:
- new_serial = serial.serial_for_url(port, do_not_open=True)
- except AttributeError:
- # happens when the installed pyserial is older than 2.5. use the
- # Serial class directly then.
- new_serial = serial.Serial()
- new_serial.port = port
- # restore settings and open
- new_serial.applySettingsDict(settings)
- new_serial.open()
- new_serial.setRTS(self.rts_state)
- new_serial.setDTR(self.dtr_state)
- new_serial.setBreak(self.break_state)
- except Exception, e:
- sys.stderr.write('--- ERROR opening new port: %s ---\n' % (e,))
- new_serial.close()
- else:
- self.serial.close()
- self.serial = new_serial
- sys.stderr.write('--- Port changed to: %s ---\n' % (self.serial.port,))
- # and restart the reader thread
- self._start_reader()
- elif c in 'bB': # B -> change baudrate
- sys.stderr.write('\n--- Baudrate: ')
- sys.stderr.flush()
- console.cleanup()
- backup = self.serial.baudrate
- try:
- self.serial.baudrate = int(sys.stdin.readline().strip())
- except ValueError, e:
- sys.stderr.write('--- ERROR setting baudrate: %s ---\n' % (e,))
- self.serial.baudrate = backup
- else:
- self.dump_port_settings()
- console.setup()
- elif c == '8': # 8 -> change to 8 bits
- self.serial.bytesize = serial.EIGHTBITS
- self.dump_port_settings()
- elif c == '7': # 7 -> change to 8 bits
- self.serial.bytesize = serial.SEVENBITS
- self.dump_port_settings()
- elif c in 'eE': # E -> change to even parity
- self.serial.parity = serial.PARITY_EVEN
- self.dump_port_settings()
- elif c in 'oO': # O -> change to odd parity
- self.serial.parity = serial.PARITY_ODD
- self.dump_port_settings()
- elif c in 'mM': # M -> change to mark parity
- self.serial.parity = serial.PARITY_MARK
- self.dump_port_settings()
- elif c in 'sS': # S -> change to space parity
- self.serial.parity = serial.PARITY_SPACE
- self.dump_port_settings()
- elif c in 'nN': # N -> change to no parity
- self.serial.parity = serial.PARITY_NONE
- self.dump_port_settings()
- elif c == '1': # 1 -> change to 1 stop bits
- self.serial.stopbits = serial.STOPBITS_ONE
- self.dump_port_settings()
- elif c == '2': # 2 -> change to 2 stop bits
- self.serial.stopbits = serial.STOPBITS_TWO
- self.dump_port_settings()
- elif c == '3': # 3 -> change to 1.5 stop bits
- self.serial.stopbits = serial.STOPBITS_ONE_POINT_FIVE
- self.dump_port_settings()
- elif c in 'xX': # X -> change software flow control
- self.serial.xonxoff = (c == 'X')
- self.dump_port_settings()
- elif c in 'rR': # R -> change hardware flow control
- self.serial.rtscts = (c == 'R')
- self.dump_port_settings()
- else:
- sys.stderr.write('--- unknown menu character %s --\n' % key_description(c))
- menu_active = False
- elif c == MENUCHARACTER: # next char will be for menu
- menu_active = True
- elif c == EXITCHARCTER:
- self.stop()
- break # exit app
- elif c == '\n':
- self.serial.write(self.newline) # send newline character(s)
- if self.echo:
- sys.stdout.write(c) # local echo is a real newline in any case
- sys.stdout.flush()
- else:
- self.serial.write(b) # send byte
- if self.echo:
- sys.stdout.write(c)
- sys.stdout.flush()
- except:
- self.alive = False
- raise
-
-def main():
- import optparse
-
- parser = optparse.OptionParser(
- usage = "%prog [options] [port [baudrate]]",
- description = "Miniterm - A simple terminal program for the serial port."
- )
-
- group = optparse.OptionGroup(parser, "Port settings")
-
- group.add_option("-p", "--port",
- dest = "port",
- help = "port, a number or a device name. (deprecated option, use parameter instead)",
- default = DEFAULT_PORT
- )
-
- group.add_option("-b", "--baud",
- dest = "baudrate",
- action = "store",
- type = 'int',
- help = "set baud rate, default %default",
- default = DEFAULT_BAUDRATE
- )
-
- group.add_option("--parity",
- dest = "parity",
- action = "store",
- help = "set parity, one of [N, E, O, S, M], default=N",
- default = 'N'
- )
-
- group.add_option("--rtscts",
- dest = "rtscts",
- action = "store_true",
- help = "enable RTS/CTS flow control (default off)",
- default = False
- )
-
- group.add_option("--xonxoff",
- dest = "xonxoff",
- action = "store_true",
- help = "enable software flow control (default off)",
- default = False
- )
-
- group.add_option("--rts",
- dest = "rts_state",
- action = "store",
- type = 'int',
- help = "set initial RTS line state (possible values: 0, 1)",
- default = DEFAULT_RTS
- )
-
- group.add_option("--dtr",
- dest = "dtr_state",
- action = "store",
- type = 'int',
- help = "set initial DTR line state (possible values: 0, 1)",
- default = DEFAULT_DTR
- )
-
- parser.add_option_group(group)
-
- group = optparse.OptionGroup(parser, "Data handling")
-
- group.add_option("-e", "--echo",
- dest = "echo",
- action = "store_true",
- help = "enable local echo (default off)",
- default = False
- )
-
- group.add_option("--cr",
- dest = "cr",
- action = "store_true",
- help = "do not send CR+LF, send CR only",
- default = False
- )
-
- group.add_option("--lf",
- dest = "lf",
- action = "store_true",
- help = "do not send CR+LF, send LF only",
- default = False
- )
-
- group.add_option("-D", "--debug",
- dest = "repr_mode",
- action = "count",
- help = """debug received data (escape non-printable chars)
---debug can be given multiple times:
-0: just print what is received
-1: escape non-printable characters, do newlines as unusual
-2: escape non-printable characters, newlines too
-3: hex dump everything""",
- default = 0
- )
-
- parser.add_option_group(group)
-
-
- group = optparse.OptionGroup(parser, "Hotkeys")
-
- group.add_option("--exit-char",
- dest = "exit_char",
- action = "store",
- type = 'int',
- help = "ASCII code of special character that is used to exit the application",
- default = 0x1d
- )
-
- group.add_option("--menu-char",
- dest = "menu_char",
- action = "store",
- type = 'int',
- help = "ASCII code of special character that is used to control miniterm (menu)",
- default = 0x14
- )
-
- parser.add_option_group(group)
-
- group = optparse.OptionGroup(parser, "Diagnostics")
-
- group.add_option("-q", "--quiet",
- dest = "quiet",
- action = "store_true",
- help = "suppress non-error messages",
- default = False
- )
-
- parser.add_option_group(group)
-
-
- (options, args) = parser.parse_args()
-
- options.parity = options.parity.upper()
- if options.parity not in 'NEOSM':
- parser.error("invalid parity")
-
- if options.cr and options.lf:
- parser.error("only one of --cr or --lf can be specified")
-
- if options.menu_char == options.exit_char:
- parser.error('--exit-char can not be the same as --menu-char')
-
- global EXITCHARCTER, MENUCHARACTER
- EXITCHARCTER = chr(options.exit_char)
- MENUCHARACTER = chr(options.menu_char)
-
- port = options.port
- baudrate = options.baudrate
- if args:
- if options.port is not None:
- parser.error("no arguments are allowed, options only when --port is given")
- port = args.pop(0)
- if args:
- try:
- baudrate = int(args[0])
- except ValueError:
- parser.error("baud rate must be a number, not %r" % args[0])
- args.pop(0)
- if args:
- parser.error("too many arguments")
- else:
- # noport given on command line -> ask user now
- if port is None:
- dump_port_list()
- port = raw_input('Enter port name:')
-
- convert_outgoing = CONVERT_CRLF
- if options.cr:
- convert_outgoing = CONVERT_CR
- elif options.lf:
- convert_outgoing = CONVERT_LF
-
- try:
- miniterm = Miniterm(
- port,
- baudrate,
- options.parity,
- rtscts=options.rtscts,
- xonxoff=options.xonxoff,
- echo=options.echo,
- convert_outgoing=convert_outgoing,
- repr_mode=options.repr_mode,
- )
- except serial.SerialException, e:
- sys.stderr.write("could not open port %r: %s\n" % (port, e))
- sys.exit(1)
-
- if not options.quiet:
- sys.stderr.write('--- Miniterm on %s: %d,%s,%s,%s ---\n' % (
- miniterm.serial.portstr,
- miniterm.serial.baudrate,
- miniterm.serial.bytesize,
- miniterm.serial.parity,
- miniterm.serial.stopbits,
- ))
- sys.stderr.write('--- Quit: %s | Menu: %s | Help: %s followed by %s ---\n' % (
- key_description(EXITCHARCTER),
- key_description(MENUCHARACTER),
- key_description(MENUCHARACTER),
- key_description('\x08'),
- ))
-
- if options.dtr_state is not None:
- if not options.quiet:
- sys.stderr.write('--- forcing DTR %s\n' % (options.dtr_state and 'active' or 'inactive'))
- miniterm.serial.setDTR(options.dtr_state)
- miniterm.dtr_state = options.dtr_state
- if options.rts_state is not None:
- if not options.quiet:
- sys.stderr.write('--- forcing RTS %s\n' % (options.rts_state and 'active' or 'inactive'))
- miniterm.serial.setRTS(options.rts_state)
- miniterm.rts_state = options.rts_state
-
- console.setup()
- miniterm.start()
- try:
- miniterm.join(True)
- except KeyboardInterrupt:
- pass
- if not options.quiet:
- sys.stderr.write("\n--- exit ---\n")
- miniterm.join()
- #~ console.cleanup()
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-if __name__ == '__main__':
- main()
diff --git a/bin/pip b/bin/pip
deleted file mode 100644
index b3a222f..0000000
--- a/bin/pip
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/home/vlabs/sbhs_vlabs/sbhs/bin/python
-# EASY-INSTALL-ENTRY-SCRIPT: 'pip==1.1','console_scripts','pip'
-__requires__ = 'pip==1.1'
-import sys
-from pkg_resources import load_entry_point
-
-if __name__ == '__main__':
- sys.exit(
- load_entry_point('pip==1.1', 'console_scripts', 'pip')()
- )
diff --git a/bin/pip-2.7 b/bin/pip-2.7
deleted file mode 100644
index 7a01ead..0000000
--- a/bin/pip-2.7
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/home/vlabs/sbhs_vlabs/sbhs/bin/python
-# EASY-INSTALL-ENTRY-SCRIPT: 'pip==1.1','console_scripts','pip-2.7'
-__requires__ = 'pip==1.1'
-import sys
-from pkg_resources import load_entry_point
-
-if __name__ == '__main__':
- sys.exit(
- load_entry_point('pip==1.1', 'console_scripts', 'pip-2.7')()
- )
diff --git a/bin/python b/bin/python
deleted file mode 100644
index fa6ccc4..0000000
--- a/bin/python
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/app_template/__init__.py b/experiment/__init__.py
index e69de29..e69de29 100644
--- a/lib/python2.7/site-packages/django/conf/app_template/__init__.py
+++ b/experiment/__init__.py
diff --git a/sbhs_server/account/admin.py b/experiment/admin.py
index 8c38f3f..8c38f3f 100644
--- a/sbhs_server/account/admin.py
+++ b/experiment/admin.py
diff --git a/sbhs_server/account/models.py b/experiment/models.py
index 71a8362..71a8362 100644
--- a/sbhs_server/account/models.py
+++ b/experiment/models.py
diff --git a/sbhs_server/account/tests.py b/experiment/tests.py
index 7ce503c..7ce503c 100644
--- a/sbhs_server/account/tests.py
+++ b/experiment/tests.py
diff --git a/experiment/urls.py b/experiment/urls.py
new file mode 100644
index 0000000..9445973
--- /dev/null
+++ b/experiment/urls.py
@@ -0,0 +1,19 @@
+from django.conf.urls import url
+
+from . import views
+
+urlpatterns = [
+ # Following to are for backward incompatibility
+ url(r'^hardware/checkconnection/?$', views.check_connection, name='hardware_checkconnection'),
+ url(r'^hardware/clientversion/?$', views.client_version, name='hardware_clientversion'),
+
+ url(r'^experiment/check_connection/?$', views.check_connection, name='experiment_check_connection'),
+ url(r'^experiment/client_version/?$', views.client_version, name='experiment_client_version'),
+ url(r'^experiment/initiate/?$', views.initiation, name='experiment_initiate'),
+ url(r'^experiment/experiment/?$', views.experiment, name='experiment_experiment'),
+ url(r'^experiment/reset/?$', views.reset, name='experiment_reset'),
+ url(r'^experiment/logs/?$', views.logs, name='experiment_logs'),
+ url(r'^experiment/logs/([0-9]+)/(.+)?$', views.download_log, name='experiment_logs'),
+
+ url(r'^admin/validate_log_file/?$', views.validate_log_file, name='experiment_validate_log'),
+] \ No newline at end of file
diff --git a/sbhs_server/experiment/views.py b/experiment/views.py
index 515d2b2..515d2b2 100644
--- a/sbhs_server/experiment/views.py
+++ b/experiment/views.py
diff --git a/sbhs_server/experiment/views.py.new b/experiment/views.py.new
index 004f852..004f852 100644
--- a/sbhs_server/experiment/views.py.new
+++ b/experiment/views.py.new
diff --git a/lib/python2.7/distutils/__init__.py b/lib/python2.7/distutils/__init__.py
deleted file mode 100644
index 7eea9ef..0000000
--- a/lib/python2.7/distutils/__init__.py
+++ /dev/null
@@ -1,97 +0,0 @@
-import os
-import sys
-import warnings
-import opcode # opcode is not a virtualenv module, so we can use it to find the stdlib
- # Important! To work on pypy, this must be a module that resides in the
- # lib-python/modified-x.y.z directory
-
-dirname = os.path.dirname
-
-distutils_path = os.path.join(os.path.dirname(opcode.__file__), 'distutils')
-if os.path.normpath(distutils_path) == os.path.dirname(os.path.normpath(__file__)):
- warnings.warn(
- "The virtualenv distutils package at %s appears to be in the same location as the system distutils?")
-else:
- __path__.insert(0, distutils_path)
- exec(open(os.path.join(distutils_path, '__init__.py')).read())
-
-try:
- import dist
- import sysconfig
-except ImportError:
- from distutils import dist, sysconfig
-try:
- basestring
-except NameError:
- basestring = str
-
-## patch build_ext (distutils doesn't know how to get the libs directory
-## path on windows - it hardcodes the paths around the patched sys.prefix)
-
-if sys.platform == 'win32':
- from distutils.command.build_ext import build_ext as old_build_ext
- class build_ext(old_build_ext):
- def finalize_options (self):
- if self.library_dirs is None:
- self.library_dirs = []
- elif isinstance(self.library_dirs, basestring):
- self.library_dirs = self.library_dirs.split(os.pathsep)
-
- self.library_dirs.insert(0, os.path.join(sys.real_prefix, "Libs"))
- old_build_ext.finalize_options(self)
-
- from distutils.command import build_ext as build_ext_module
- build_ext_module.build_ext = build_ext
-
-## distutils.dist patches:
-
-old_find_config_files = dist.Distribution.find_config_files
-def find_config_files(self):
- found = old_find_config_files(self)
- system_distutils = os.path.join(distutils_path, 'distutils.cfg')
- #if os.path.exists(system_distutils):
- # found.insert(0, system_distutils)
- # What to call the per-user config file
- if os.name == 'posix':
- user_filename = ".pydistutils.cfg"
- else:
- user_filename = "pydistutils.cfg"
- user_filename = os.path.join(sys.prefix, user_filename)
- if os.path.isfile(user_filename):
- for item in list(found):
- if item.endswith('pydistutils.cfg'):
- found.remove(item)
- found.append(user_filename)
- return found
-dist.Distribution.find_config_files = find_config_files
-
-## distutils.sysconfig patches:
-
-old_get_python_inc = sysconfig.get_python_inc
-def sysconfig_get_python_inc(plat_specific=0, prefix=None):
- if prefix is None:
- prefix = sys.real_prefix
- return old_get_python_inc(plat_specific, prefix)
-sysconfig_get_python_inc.__doc__ = old_get_python_inc.__doc__
-sysconfig.get_python_inc = sysconfig_get_python_inc
-
-old_get_python_lib = sysconfig.get_python_lib
-def sysconfig_get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
- if standard_lib and prefix is None:
- prefix = sys.real_prefix
- return old_get_python_lib(plat_specific, standard_lib, prefix)
-sysconfig_get_python_lib.__doc__ = old_get_python_lib.__doc__
-sysconfig.get_python_lib = sysconfig_get_python_lib
-
-old_get_config_vars = sysconfig.get_config_vars
-def sysconfig_get_config_vars(*args):
- real_vars = old_get_config_vars(*args)
- if sys.platform == 'win32':
- lib_dir = os.path.join(sys.real_prefix, "libs")
- if isinstance(real_vars, dict) and 'LIBDIR' not in real_vars:
- real_vars['LIBDIR'] = lib_dir # asked for all
- elif isinstance(real_vars, list) and 'LIBDIR' in args:
- real_vars = real_vars + [lib_dir] # asked for list
- return real_vars
-sysconfig_get_config_vars.__doc__ = old_get_config_vars.__doc__
-sysconfig.get_config_vars = sysconfig_get_config_vars
diff --git a/lib/python2.7/distutils/distutils.cfg b/lib/python2.7/distutils/distutils.cfg
deleted file mode 100644
index 1af230e..0000000
--- a/lib/python2.7/distutils/distutils.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-# This is a config file local to this virtualenv installation
-# You may include options that will be used by all distutils commands,
-# and by easy_install. For instance:
-#
-# [easy_install]
-# find_links = http://mylocalsite
diff --git a/lib/python2.7/no-global-site-packages.txt b/lib/python2.7/no-global-site-packages.txt
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/no-global-site-packages.txt
+++ /dev/null
diff --git a/lib/python2.7/orig-prefix.txt b/lib/python2.7/orig-prefix.txt
deleted file mode 100644
index e25db58..0000000
--- a/lib/python2.7/orig-prefix.txt
+++ /dev/null
@@ -1 +0,0 @@
-/usr \ No newline at end of file
diff --git a/lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/PKG-INFO b/lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/PKG-INFO
deleted file mode 100644
index aa1ea86..0000000
--- a/lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/PKG-INFO
+++ /dev/null
@@ -1,28 +0,0 @@
-Metadata-Version: 1.1
-Name: Django
-Version: 1.6.3
-Summary: A high-level Python Web framework that encourages rapid development and clean, pragmatic design.
-Home-page: http://www.djangoproject.com/
-Author: Django Software Foundation
-Author-email: foundation@djangoproject.com
-License: BSD
-Description: UNKNOWN
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Environment :: Web Environment
-Classifier: Framework :: Django
-Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: BSD License
-Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.2
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Topic :: Internet :: WWW/HTTP
-Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
-Classifier: Topic :: Internet :: WWW/HTTP :: WSGI
-Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
diff --git a/lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/SOURCES.txt b/lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/SOURCES.txt
deleted file mode 100644
index 978d115..0000000
--- a/lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/SOURCES.txt
+++ /dev/null
@@ -1,4860 +0,0 @@
-AUTHORS
-INSTALL
-LICENSE
-MANIFEST.in
-README.rst
-setup.cfg
-Django.egg-info/PKG-INFO
-Django.egg-info/SOURCES.txt
-Django.egg-info/dependency_links.txt
-Django.egg-info/top_level.txt
-django/__init__.py
-django/bin/django-admin.py
-django/conf/__init__.py
-django/conf/global_settings.py
-django/conf/app_template/__init__.py
-django/conf/app_template/admin.py
-django/conf/app_template/models.py
-django/conf/app_template/tests.py
-django/conf/app_template/views.py
-django/conf/locale/__init__.py
-django/conf/locale/af/LC_MESSAGES/django.mo
-django/conf/locale/af/LC_MESSAGES/django.po
-django/conf/locale/ar/__init__.py
-django/conf/locale/ar/formats.py
-django/conf/locale/ar/LC_MESSAGES/django.mo
-django/conf/locale/ar/LC_MESSAGES/django.po
-django/conf/locale/az/LC_MESSAGES/django.mo
-django/conf/locale/az/LC_MESSAGES/django.po
-django/conf/locale/be/LC_MESSAGES/django.mo
-django/conf/locale/be/LC_MESSAGES/django.po
-django/conf/locale/bg/__init__.py
-django/conf/locale/bg/formats.py
-django/conf/locale/bg/LC_MESSAGES/django.mo
-django/conf/locale/bg/LC_MESSAGES/django.po
-django/conf/locale/bn/__init__.py
-django/conf/locale/bn/formats.py
-django/conf/locale/bn/LC_MESSAGES/django.mo
-django/conf/locale/bn/LC_MESSAGES/django.po
-django/conf/locale/br/LC_MESSAGES/django.mo
-django/conf/locale/br/LC_MESSAGES/django.po
-django/conf/locale/bs/__init__.py
-django/conf/locale/bs/formats.py
-django/conf/locale/bs/LC_MESSAGES/django.mo
-django/conf/locale/bs/LC_MESSAGES/django.po
-django/conf/locale/ca/__init__.py
-django/conf/locale/ca/formats.py
-django/conf/locale/ca/LC_MESSAGES/django.mo
-django/conf/locale/ca/LC_MESSAGES/django.po
-django/conf/locale/cs/__init__.py
-django/conf/locale/cs/formats.py
-django/conf/locale/cs/LC_MESSAGES/django.mo
-django/conf/locale/cs/LC_MESSAGES/django.po
-django/conf/locale/cy/__init__.py
-django/conf/locale/cy/formats.py
-django/conf/locale/cy/LC_MESSAGES/django.mo
-django/conf/locale/cy/LC_MESSAGES/django.po
-django/conf/locale/da/__init__.py
-django/conf/locale/da/formats.py
-django/conf/locale/da/LC_MESSAGES/django.mo
-django/conf/locale/da/LC_MESSAGES/django.po
-django/conf/locale/de/__init__.py
-django/conf/locale/de/formats.py
-django/conf/locale/de/LC_MESSAGES/django.mo
-django/conf/locale/de/LC_MESSAGES/django.po
-django/conf/locale/de_CH/__init__.py
-django/conf/locale/de_CH/formats.py
-django/conf/locale/el/__init__.py
-django/conf/locale/el/formats.py
-django/conf/locale/el/LC_MESSAGES/django.mo
-django/conf/locale/el/LC_MESSAGES/django.po
-django/conf/locale/en/__init__.py
-django/conf/locale/en/formats.py
-django/conf/locale/en/LC_MESSAGES/django.mo
-django/conf/locale/en/LC_MESSAGES/django.po
-django/conf/locale/en_GB/__init__.py
-django/conf/locale/en_GB/formats.py
-django/conf/locale/en_GB/LC_MESSAGES/django.mo
-django/conf/locale/en_GB/LC_MESSAGES/django.po
-django/conf/locale/eo/LC_MESSAGES/django.mo
-django/conf/locale/eo/LC_MESSAGES/django.po
-django/conf/locale/es/__init__.py
-django/conf/locale/es/formats.py
-django/conf/locale/es/LC_MESSAGES/django.mo
-django/conf/locale/es/LC_MESSAGES/django.po
-django/conf/locale/es_AR/__init__.py
-django/conf/locale/es_AR/formats.py
-django/conf/locale/es_AR/LC_MESSAGES/django.mo
-django/conf/locale/es_AR/LC_MESSAGES/django.po
-django/conf/locale/es_MX/__init__.py
-django/conf/locale/es_MX/formats.py
-django/conf/locale/es_MX/LC_MESSAGES/django.mo
-django/conf/locale/es_MX/LC_MESSAGES/django.po
-django/conf/locale/es_NI/__init__.py
-django/conf/locale/es_NI/formats.py
-django/conf/locale/es_PR/__init__.py
-django/conf/locale/es_PR/formats.py
-django/conf/locale/es_VE/LC_MESSAGES/django.mo
-django/conf/locale/es_VE/LC_MESSAGES/django.po
-django/conf/locale/et/__init__.py
-django/conf/locale/et/formats.py
-django/conf/locale/et/LC_MESSAGES/django.mo
-django/conf/locale/et/LC_MESSAGES/django.po
-django/conf/locale/eu/__init__.py
-django/conf/locale/eu/formats.py
-django/conf/locale/eu/LC_MESSAGES/django.mo
-django/conf/locale/eu/LC_MESSAGES/django.po
-django/conf/locale/fa/__init__.py
-django/conf/locale/fa/formats.py
-django/conf/locale/fa/LC_MESSAGES/django.mo
-django/conf/locale/fa/LC_MESSAGES/django.po
-django/conf/locale/fi/__init__.py
-django/conf/locale/fi/formats.py
-django/conf/locale/fi/LC_MESSAGES/django.mo
-django/conf/locale/fi/LC_MESSAGES/django.po
-django/conf/locale/fr/__init__.py
-django/conf/locale/fr/formats.py
-django/conf/locale/fr/LC_MESSAGES/django.mo
-django/conf/locale/fr/LC_MESSAGES/django.po
-django/conf/locale/fy_NL/__init__.py
-django/conf/locale/fy_NL/formats.py
-django/conf/locale/fy_NL/LC_MESSAGES/django.mo
-django/conf/locale/fy_NL/LC_MESSAGES/django.po
-django/conf/locale/ga/__init__.py
-django/conf/locale/ga/formats.py
-django/conf/locale/ga/LC_MESSAGES/django.mo
-django/conf/locale/ga/LC_MESSAGES/django.po
-django/conf/locale/gl/__init__.py
-django/conf/locale/gl/formats.py
-django/conf/locale/gl/LC_MESSAGES/django.mo
-django/conf/locale/gl/LC_MESSAGES/django.po
-django/conf/locale/he/__init__.py
-django/conf/locale/he/formats.py
-django/conf/locale/he/LC_MESSAGES/django.mo
-django/conf/locale/he/LC_MESSAGES/django.po
-django/conf/locale/hi/__init__.py
-django/conf/locale/hi/formats.py
-django/conf/locale/hi/LC_MESSAGES/django.mo
-django/conf/locale/hi/LC_MESSAGES/django.po
-django/conf/locale/hr/__init__.py
-django/conf/locale/hr/formats.py
-django/conf/locale/hr/LC_MESSAGES/django.mo
-django/conf/locale/hr/LC_MESSAGES/django.po
-django/conf/locale/hu/__init__.py
-django/conf/locale/hu/formats.py
-django/conf/locale/hu/LC_MESSAGES/django.mo
-django/conf/locale/hu/LC_MESSAGES/django.po
-django/conf/locale/ia/LC_MESSAGES/django.mo
-django/conf/locale/ia/LC_MESSAGES/django.po
-django/conf/locale/id/__init__.py
-django/conf/locale/id/formats.py
-django/conf/locale/id/LC_MESSAGES/django.mo
-django/conf/locale/id/LC_MESSAGES/django.po
-django/conf/locale/is/__init__.py
-django/conf/locale/is/formats.py
-django/conf/locale/is/LC_MESSAGES/django.mo
-django/conf/locale/is/LC_MESSAGES/django.po
-django/conf/locale/it/__init__.py
-django/conf/locale/it/formats.py
-django/conf/locale/it/LC_MESSAGES/django.mo
-django/conf/locale/it/LC_MESSAGES/django.po
-django/conf/locale/ja/__init__.py
-django/conf/locale/ja/formats.py
-django/conf/locale/ja/LC_MESSAGES/django.mo
-django/conf/locale/ja/LC_MESSAGES/django.po
-django/conf/locale/ka/__init__.py
-django/conf/locale/ka/formats.py
-django/conf/locale/ka/LC_MESSAGES/django.mo
-django/conf/locale/ka/LC_MESSAGES/django.po
-django/conf/locale/kk/LC_MESSAGES/django.mo
-django/conf/locale/kk/LC_MESSAGES/django.po
-django/conf/locale/km/__init__.py
-django/conf/locale/km/formats.py
-django/conf/locale/km/LC_MESSAGES/django.mo
-django/conf/locale/km/LC_MESSAGES/django.po
-django/conf/locale/kn/__init__.py
-django/conf/locale/kn/formats.py
-django/conf/locale/kn/LC_MESSAGES/django.mo
-django/conf/locale/kn/LC_MESSAGES/django.po
-django/conf/locale/ko/__init__.py
-django/conf/locale/ko/formats.py
-django/conf/locale/ko/LC_MESSAGES/django.mo
-django/conf/locale/ko/LC_MESSAGES/django.po
-django/conf/locale/lb/LC_MESSAGES/django.mo
-django/conf/locale/lb/LC_MESSAGES/django.po
-django/conf/locale/lt/__init__.py
-django/conf/locale/lt/formats.py
-django/conf/locale/lt/LC_MESSAGES/django.mo
-django/conf/locale/lt/LC_MESSAGES/django.po
-django/conf/locale/lv/__init__.py
-django/conf/locale/lv/formats.py
-django/conf/locale/lv/LC_MESSAGES/django.mo
-django/conf/locale/lv/LC_MESSAGES/django.po
-django/conf/locale/mk/__init__.py
-django/conf/locale/mk/formats.py
-django/conf/locale/mk/LC_MESSAGES/django.mo
-django/conf/locale/mk/LC_MESSAGES/django.po
-django/conf/locale/ml/__init__.py
-django/conf/locale/ml/formats.py
-django/conf/locale/ml/LC_MESSAGES/django.mo
-django/conf/locale/ml/LC_MESSAGES/django.po
-django/conf/locale/mn/__init__.py
-django/conf/locale/mn/formats.py
-django/conf/locale/mn/LC_MESSAGES/django.mo
-django/conf/locale/mn/LC_MESSAGES/django.po
-django/conf/locale/my/LC_MESSAGES/django.mo
-django/conf/locale/my/LC_MESSAGES/django.po
-django/conf/locale/nb/__init__.py
-django/conf/locale/nb/formats.py
-django/conf/locale/nb/LC_MESSAGES/django.mo
-django/conf/locale/nb/LC_MESSAGES/django.po
-django/conf/locale/ne/LC_MESSAGES/django.mo
-django/conf/locale/ne/LC_MESSAGES/django.po
-django/conf/locale/nl/__init__.py
-django/conf/locale/nl/formats.py
-django/conf/locale/nl/LC_MESSAGES/django.mo
-django/conf/locale/nl/LC_MESSAGES/django.po
-django/conf/locale/nn/__init__.py
-django/conf/locale/nn/formats.py
-django/conf/locale/nn/LC_MESSAGES/django.mo
-django/conf/locale/nn/LC_MESSAGES/django.po
-django/conf/locale/os/LC_MESSAGES/django.mo
-django/conf/locale/os/LC_MESSAGES/django.po
-django/conf/locale/pa/LC_MESSAGES/django.mo
-django/conf/locale/pa/LC_MESSAGES/django.po
-django/conf/locale/pl/__init__.py
-django/conf/locale/pl/formats.py
-django/conf/locale/pl/LC_MESSAGES/django.mo
-django/conf/locale/pl/LC_MESSAGES/django.po
-django/conf/locale/pt/__init__.py
-django/conf/locale/pt/formats.py
-django/conf/locale/pt/LC_MESSAGES/django.mo
-django/conf/locale/pt/LC_MESSAGES/django.po
-django/conf/locale/pt_BR/__init__.py
-django/conf/locale/pt_BR/formats.py
-django/conf/locale/pt_BR/LC_MESSAGES/django.mo
-django/conf/locale/pt_BR/LC_MESSAGES/django.po
-django/conf/locale/ro/__init__.py
-django/conf/locale/ro/formats.py
-django/conf/locale/ro/LC_MESSAGES/django.mo
-django/conf/locale/ro/LC_MESSAGES/django.po
-django/conf/locale/ru/__init__.py
-django/conf/locale/ru/formats.py
-django/conf/locale/ru/LC_MESSAGES/django.mo
-django/conf/locale/ru/LC_MESSAGES/django.po
-django/conf/locale/sk/__init__.py
-django/conf/locale/sk/formats.py
-django/conf/locale/sk/LC_MESSAGES/django.mo
-django/conf/locale/sk/LC_MESSAGES/django.po
-django/conf/locale/sl/__init__.py
-django/conf/locale/sl/formats.py
-django/conf/locale/sl/LC_MESSAGES/django.mo
-django/conf/locale/sl/LC_MESSAGES/django.po
-django/conf/locale/sq/__init__.py
-django/conf/locale/sq/formats.py
-django/conf/locale/sq/LC_MESSAGES/django.mo
-django/conf/locale/sq/LC_MESSAGES/django.po
-django/conf/locale/sr/__init__.py
-django/conf/locale/sr/formats.py
-django/conf/locale/sr/LC_MESSAGES/django.mo
-django/conf/locale/sr/LC_MESSAGES/django.po
-django/conf/locale/sr_Latn/__init__.py
-django/conf/locale/sr_Latn/formats.py
-django/conf/locale/sr_Latn/LC_MESSAGES/django.mo
-django/conf/locale/sr_Latn/LC_MESSAGES/django.po
-django/conf/locale/sv/__init__.py
-django/conf/locale/sv/formats.py
-django/conf/locale/sv/LC_MESSAGES/django.mo
-django/conf/locale/sv/LC_MESSAGES/django.po
-django/conf/locale/sw/LC_MESSAGES/django.mo
-django/conf/locale/sw/LC_MESSAGES/django.po
-django/conf/locale/ta/__init__.py
-django/conf/locale/ta/formats.py
-django/conf/locale/ta/LC_MESSAGES/django.mo
-django/conf/locale/ta/LC_MESSAGES/django.po
-django/conf/locale/te/__init__.py
-django/conf/locale/te/formats.py
-django/conf/locale/te/LC_MESSAGES/django.mo
-django/conf/locale/te/LC_MESSAGES/django.po
-django/conf/locale/th/__init__.py
-django/conf/locale/th/formats.py
-django/conf/locale/th/LC_MESSAGES/django.mo
-django/conf/locale/th/LC_MESSAGES/django.po
-django/conf/locale/tr/__init__.py
-django/conf/locale/tr/formats.py
-django/conf/locale/tr/LC_MESSAGES/django.mo
-django/conf/locale/tr/LC_MESSAGES/django.po
-django/conf/locale/tt/LC_MESSAGES/django.mo
-django/conf/locale/tt/LC_MESSAGES/django.po
-django/conf/locale/udm/LC_MESSAGES/django.mo
-django/conf/locale/udm/LC_MESSAGES/django.po
-django/conf/locale/uk/__init__.py
-django/conf/locale/uk/formats.py
-django/conf/locale/uk/LC_MESSAGES/django.mo
-django/conf/locale/uk/LC_MESSAGES/django.po
-django/conf/locale/ur/LC_MESSAGES/django.mo
-django/conf/locale/ur/LC_MESSAGES/django.po
-django/conf/locale/vi/__init__.py
-django/conf/locale/vi/formats.py
-django/conf/locale/vi/LC_MESSAGES/django.mo
-django/conf/locale/vi/LC_MESSAGES/django.po
-django/conf/locale/zh_CN/__init__.py
-django/conf/locale/zh_CN/formats.py
-django/conf/locale/zh_CN/LC_MESSAGES/django.mo
-django/conf/locale/zh_CN/LC_MESSAGES/django.po
-django/conf/locale/zh_TW/__init__.py
-django/conf/locale/zh_TW/formats.py
-django/conf/locale/zh_TW/LC_MESSAGES/django.mo
-django/conf/locale/zh_TW/LC_MESSAGES/django.po
-django/conf/project_template/manage.py
-django/conf/project_template/project_name/__init__.py
-django/conf/project_template/project_name/settings.py
-django/conf/project_template/project_name/urls.py
-django/conf/project_template/project_name/wsgi.py
-django/conf/urls/__init__.py
-django/conf/urls/i18n.py
-django/conf/urls/shortcut.py
-django/conf/urls/static.py
-django/contrib/__init__.py
-django/contrib/admin/__init__.py
-django/contrib/admin/actions.py
-django/contrib/admin/exceptions.py
-django/contrib/admin/filters.py
-django/contrib/admin/forms.py
-django/contrib/admin/helpers.py
-django/contrib/admin/models.py
-django/contrib/admin/options.py
-django/contrib/admin/sites.py
-django/contrib/admin/tests.py
-django/contrib/admin/util.py
-django/contrib/admin/validation.py
-django/contrib/admin/widgets.py
-django/contrib/admin/locale/af/LC_MESSAGES/django.mo
-django/contrib/admin/locale/af/LC_MESSAGES/django.po
-django/contrib/admin/locale/af/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/af/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/ar/LC_MESSAGES/django.mo
-django/contrib/admin/locale/ar/LC_MESSAGES/django.po
-django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/az/LC_MESSAGES/django.mo
-django/contrib/admin/locale/az/LC_MESSAGES/django.po
-django/contrib/admin/locale/az/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/az/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/be/LC_MESSAGES/django.mo
-django/contrib/admin/locale/be/LC_MESSAGES/django.po
-django/contrib/admin/locale/be/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/be/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/bg/LC_MESSAGES/django.mo
-django/contrib/admin/locale/bg/LC_MESSAGES/django.po
-django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/bn/LC_MESSAGES/django.mo
-django/contrib/admin/locale/bn/LC_MESSAGES/django.po
-django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/br/LC_MESSAGES/django.mo
-django/contrib/admin/locale/br/LC_MESSAGES/django.po
-django/contrib/admin/locale/br/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/br/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/bs/LC_MESSAGES/django.mo
-django/contrib/admin/locale/bs/LC_MESSAGES/django.po
-django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/ca/LC_MESSAGES/django.mo
-django/contrib/admin/locale/ca/LC_MESSAGES/django.po
-django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/cs/LC_MESSAGES/django.mo
-django/contrib/admin/locale/cs/LC_MESSAGES/django.po
-django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/cy/LC_MESSAGES/django.mo
-django/contrib/admin/locale/cy/LC_MESSAGES/django.po
-django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/da/LC_MESSAGES/django.mo
-django/contrib/admin/locale/da/LC_MESSAGES/django.po
-django/contrib/admin/locale/da/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/da/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/de/LC_MESSAGES/django.mo
-django/contrib/admin/locale/de/LC_MESSAGES/django.po
-django/contrib/admin/locale/de/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/de/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/el/LC_MESSAGES/django.mo
-django/contrib/admin/locale/el/LC_MESSAGES/django.po
-django/contrib/admin/locale/el/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/el/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/en/LC_MESSAGES/django.mo
-django/contrib/admin/locale/en/LC_MESSAGES/django.po
-django/contrib/admin/locale/en/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/en/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/en_GB/LC_MESSAGES/django.mo
-django/contrib/admin/locale/en_GB/LC_MESSAGES/django.po
-django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/eo/LC_MESSAGES/django.mo
-django/contrib/admin/locale/eo/LC_MESSAGES/django.po
-django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/es/LC_MESSAGES/django.mo
-django/contrib/admin/locale/es/LC_MESSAGES/django.po
-django/contrib/admin/locale/es/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/es/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo
-django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po
-django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/es_MX/LC_MESSAGES/django.mo
-django/contrib/admin/locale/es_MX/LC_MESSAGES/django.po
-django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/et/LC_MESSAGES/django.mo
-django/contrib/admin/locale/et/LC_MESSAGES/django.po
-django/contrib/admin/locale/et/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/et/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/eu/LC_MESSAGES/django.mo
-django/contrib/admin/locale/eu/LC_MESSAGES/django.po
-django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/fa/LC_MESSAGES/django.mo
-django/contrib/admin/locale/fa/LC_MESSAGES/django.po
-django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/fi/LC_MESSAGES/django.mo
-django/contrib/admin/locale/fi/LC_MESSAGES/django.po
-django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/fr/LC_MESSAGES/django.mo
-django/contrib/admin/locale/fr/LC_MESSAGES/django.po
-django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/fy_NL/LC_MESSAGES/django.mo
-django/contrib/admin/locale/fy_NL/LC_MESSAGES/django.po
-django/contrib/admin/locale/fy_NL/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/fy_NL/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/ga/LC_MESSAGES/django.mo
-django/contrib/admin/locale/ga/LC_MESSAGES/django.po
-django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/gl/LC_MESSAGES/django.mo
-django/contrib/admin/locale/gl/LC_MESSAGES/django.po
-django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/he/LC_MESSAGES/django.mo
-django/contrib/admin/locale/he/LC_MESSAGES/django.po
-django/contrib/admin/locale/he/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/he/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/hi/LC_MESSAGES/django.mo
-django/contrib/admin/locale/hi/LC_MESSAGES/django.po
-django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/hr/LC_MESSAGES/django.mo
-django/contrib/admin/locale/hr/LC_MESSAGES/django.po
-django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/hu/LC_MESSAGES/django.mo
-django/contrib/admin/locale/hu/LC_MESSAGES/django.po
-django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/ia/LC_MESSAGES/django.mo
-django/contrib/admin/locale/ia/LC_MESSAGES/django.po
-django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/id/LC_MESSAGES/django.mo
-django/contrib/admin/locale/id/LC_MESSAGES/django.po
-django/contrib/admin/locale/id/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/is/LC_MESSAGES/django.mo
-django/contrib/admin/locale/is/LC_MESSAGES/django.po
-django/contrib/admin/locale/is/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/is/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/it/LC_MESSAGES/django.mo
-django/contrib/admin/locale/it/LC_MESSAGES/django.po
-django/contrib/admin/locale/it/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/it/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/ja/LC_MESSAGES/django.mo
-django/contrib/admin/locale/ja/LC_MESSAGES/django.po
-django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/ka/LC_MESSAGES/django.mo
-django/contrib/admin/locale/ka/LC_MESSAGES/django.po
-django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/kk/LC_MESSAGES/django.mo
-django/contrib/admin/locale/kk/LC_MESSAGES/django.po
-django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/km/LC_MESSAGES/django.mo
-django/contrib/admin/locale/km/LC_MESSAGES/django.po
-django/contrib/admin/locale/km/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/km/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/kn/LC_MESSAGES/django.mo
-django/contrib/admin/locale/kn/LC_MESSAGES/django.po
-django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/ko/LC_MESSAGES/django.mo
-django/contrib/admin/locale/ko/LC_MESSAGES/django.po
-django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/lb/LC_MESSAGES/django.mo
-django/contrib/admin/locale/lb/LC_MESSAGES/django.po
-django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/lt/LC_MESSAGES/django.mo
-django/contrib/admin/locale/lt/LC_MESSAGES/django.po
-django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/lv/LC_MESSAGES/django.mo
-django/contrib/admin/locale/lv/LC_MESSAGES/django.po
-django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/mk/LC_MESSAGES/django.mo
-django/contrib/admin/locale/mk/LC_MESSAGES/django.po
-django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/ml/LC_MESSAGES/django.mo
-django/contrib/admin/locale/ml/LC_MESSAGES/django.po
-django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/mn/LC_MESSAGES/django.mo
-django/contrib/admin/locale/mn/LC_MESSAGES/django.po
-django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/my/LC_MESSAGES/django.mo
-django/contrib/admin/locale/my/LC_MESSAGES/django.po
-django/contrib/admin/locale/my/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/my/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/nb/LC_MESSAGES/django.mo
-django/contrib/admin/locale/nb/LC_MESSAGES/django.po
-django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/ne/LC_MESSAGES/django.mo
-django/contrib/admin/locale/ne/LC_MESSAGES/django.po
-django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/nl/LC_MESSAGES/django.mo
-django/contrib/admin/locale/nl/LC_MESSAGES/django.po
-django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/nn/LC_MESSAGES/django.mo
-django/contrib/admin/locale/nn/LC_MESSAGES/django.po
-django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/os/LC_MESSAGES/django.mo
-django/contrib/admin/locale/os/LC_MESSAGES/django.po
-django/contrib/admin/locale/os/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/os/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/pa/LC_MESSAGES/django.mo
-django/contrib/admin/locale/pa/LC_MESSAGES/django.po
-django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/pl/LC_MESSAGES/django.mo
-django/contrib/admin/locale/pl/LC_MESSAGES/django.po
-django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/pt/LC_MESSAGES/django.mo
-django/contrib/admin/locale/pt/LC_MESSAGES/django.po
-django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo
-django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po
-django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/ro/LC_MESSAGES/django.mo
-django/contrib/admin/locale/ro/LC_MESSAGES/django.po
-django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/ru/LC_MESSAGES/django.mo
-django/contrib/admin/locale/ru/LC_MESSAGES/django.po
-django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/sk/LC_MESSAGES/django.mo
-django/contrib/admin/locale/sk/LC_MESSAGES/django.po
-django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/sl/LC_MESSAGES/django.mo
-django/contrib/admin/locale/sl/LC_MESSAGES/django.po
-django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/sq/LC_MESSAGES/django.mo
-django/contrib/admin/locale/sq/LC_MESSAGES/django.po
-django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/sr/LC_MESSAGES/django.mo
-django/contrib/admin/locale/sr/LC_MESSAGES/django.po
-django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.mo
-django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.po
-django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/sv/LC_MESSAGES/django.mo
-django/contrib/admin/locale/sv/LC_MESSAGES/django.po
-django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/sw/LC_MESSAGES/django.mo
-django/contrib/admin/locale/sw/LC_MESSAGES/django.po
-django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/ta/LC_MESSAGES/django.mo
-django/contrib/admin/locale/ta/LC_MESSAGES/django.po
-django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/te/LC_MESSAGES/django.mo
-django/contrib/admin/locale/te/LC_MESSAGES/django.po
-django/contrib/admin/locale/te/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/te/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/th/LC_MESSAGES/django.mo
-django/contrib/admin/locale/th/LC_MESSAGES/django.po
-django/contrib/admin/locale/th/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/th/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/tr/LC_MESSAGES/django.mo
-django/contrib/admin/locale/tr/LC_MESSAGES/django.po
-django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/tt/LC_MESSAGES/django.mo
-django/contrib/admin/locale/tt/LC_MESSAGES/django.po
-django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/udm/LC_MESSAGES/django.mo
-django/contrib/admin/locale/udm/LC_MESSAGES/django.po
-django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/uk/LC_MESSAGES/django.mo
-django/contrib/admin/locale/uk/LC_MESSAGES/django.po
-django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/ur/LC_MESSAGES/django.mo
-django/contrib/admin/locale/ur/LC_MESSAGES/django.po
-django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/vi/LC_MESSAGES/django.mo
-django/contrib/admin/locale/vi/LC_MESSAGES/django.po
-django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/zh_CN/LC_MESSAGES/django.mo
-django/contrib/admin/locale/zh_CN/LC_MESSAGES/django.po
-django/contrib/admin/locale/zh_CN/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/zh_CN/LC_MESSAGES/djangojs.po
-django/contrib/admin/locale/zh_TW/LC_MESSAGES/django.mo
-django/contrib/admin/locale/zh_TW/LC_MESSAGES/django.po
-django/contrib/admin/locale/zh_TW/LC_MESSAGES/djangojs.mo
-django/contrib/admin/locale/zh_TW/LC_MESSAGES/djangojs.po
-django/contrib/admin/static/admin/css/base.css
-django/contrib/admin/static/admin/css/changelists.css
-django/contrib/admin/static/admin/css/dashboard.css
-django/contrib/admin/static/admin/css/forms.css
-django/contrib/admin/static/admin/css/ie.css
-django/contrib/admin/static/admin/css/login.css
-django/contrib/admin/static/admin/css/rtl.css
-django/contrib/admin/static/admin/css/widgets.css
-django/contrib/admin/static/admin/img/changelist-bg.gif
-django/contrib/admin/static/admin/img/changelist-bg_rtl.gif
-django/contrib/admin/static/admin/img/chooser-bg.gif
-django/contrib/admin/static/admin/img/chooser_stacked-bg.gif
-django/contrib/admin/static/admin/img/default-bg-reverse.gif
-django/contrib/admin/static/admin/img/default-bg.gif
-django/contrib/admin/static/admin/img/deleted-overlay.gif
-django/contrib/admin/static/admin/img/icon-no.gif
-django/contrib/admin/static/admin/img/icon-unknown.gif
-django/contrib/admin/static/admin/img/icon-yes.gif
-django/contrib/admin/static/admin/img/icon_addlink.gif
-django/contrib/admin/static/admin/img/icon_alert.gif
-django/contrib/admin/static/admin/img/icon_calendar.gif
-django/contrib/admin/static/admin/img/icon_changelink.gif
-django/contrib/admin/static/admin/img/icon_clock.gif
-django/contrib/admin/static/admin/img/icon_deletelink.gif
-django/contrib/admin/static/admin/img/icon_error.gif
-django/contrib/admin/static/admin/img/icon_searchbox.png
-django/contrib/admin/static/admin/img/icon_success.gif
-django/contrib/admin/static/admin/img/inline-delete-8bit.png
-django/contrib/admin/static/admin/img/inline-delete.png
-django/contrib/admin/static/admin/img/inline-restore-8bit.png
-django/contrib/admin/static/admin/img/inline-restore.png
-django/contrib/admin/static/admin/img/inline-splitter-bg.gif
-django/contrib/admin/static/admin/img/nav-bg-grabber.gif
-django/contrib/admin/static/admin/img/nav-bg-reverse.gif
-django/contrib/admin/static/admin/img/nav-bg-selected.gif
-django/contrib/admin/static/admin/img/nav-bg.gif
-django/contrib/admin/static/admin/img/selector-icons.gif
-django/contrib/admin/static/admin/img/selector-search.gif
-django/contrib/admin/static/admin/img/sorting-icons.gif
-django/contrib/admin/static/admin/img/tool-left.gif
-django/contrib/admin/static/admin/img/tool-left_over.gif
-django/contrib/admin/static/admin/img/tool-right.gif
-django/contrib/admin/static/admin/img/tool-right_over.gif
-django/contrib/admin/static/admin/img/tooltag-add.gif
-django/contrib/admin/static/admin/img/tooltag-add_over.gif
-django/contrib/admin/static/admin/img/tooltag-arrowright.gif
-django/contrib/admin/static/admin/img/tooltag-arrowright_over.gif
-django/contrib/admin/static/admin/img/gis/move_vertex_off.png
-django/contrib/admin/static/admin/img/gis/move_vertex_on.png
-django/contrib/admin/static/admin/js/LICENSE-JQUERY.txt
-django/contrib/admin/static/admin/js/SelectBox.js
-django/contrib/admin/static/admin/js/SelectFilter2.js
-django/contrib/admin/static/admin/js/actions.js
-django/contrib/admin/static/admin/js/actions.min.js
-django/contrib/admin/static/admin/js/calendar.js
-django/contrib/admin/static/admin/js/collapse.js
-django/contrib/admin/static/admin/js/collapse.min.js
-django/contrib/admin/static/admin/js/core.js
-django/contrib/admin/static/admin/js/inlines.js
-django/contrib/admin/static/admin/js/inlines.min.js
-django/contrib/admin/static/admin/js/jquery.init.js
-django/contrib/admin/static/admin/js/jquery.js
-django/contrib/admin/static/admin/js/jquery.min.js
-django/contrib/admin/static/admin/js/prepopulate.js
-django/contrib/admin/static/admin/js/prepopulate.min.js
-django/contrib/admin/static/admin/js/timeparse.js
-django/contrib/admin/static/admin/js/urlify.js
-django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js
-django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js
-django/contrib/admin/templates/admin/404.html
-django/contrib/admin/templates/admin/500.html
-django/contrib/admin/templates/admin/actions.html
-django/contrib/admin/templates/admin/app_index.html
-django/contrib/admin/templates/admin/base.html
-django/contrib/admin/templates/admin/base_site.html
-django/contrib/admin/templates/admin/change_form.html
-django/contrib/admin/templates/admin/change_list.html
-django/contrib/admin/templates/admin/change_list_results.html
-django/contrib/admin/templates/admin/date_hierarchy.html
-django/contrib/admin/templates/admin/delete_confirmation.html
-django/contrib/admin/templates/admin/delete_selected_confirmation.html
-django/contrib/admin/templates/admin/filter.html
-django/contrib/admin/templates/admin/index.html
-django/contrib/admin/templates/admin/invalid_setup.html
-django/contrib/admin/templates/admin/login.html
-django/contrib/admin/templates/admin/object_history.html
-django/contrib/admin/templates/admin/pagination.html
-django/contrib/admin/templates/admin/popup_response.html
-django/contrib/admin/templates/admin/prepopulated_fields_js.html
-django/contrib/admin/templates/admin/search_form.html
-django/contrib/admin/templates/admin/submit_line.html
-django/contrib/admin/templates/admin/auth/user/add_form.html
-django/contrib/admin/templates/admin/auth/user/change_password.html
-django/contrib/admin/templates/admin/edit_inline/stacked.html
-django/contrib/admin/templates/admin/edit_inline/tabular.html
-django/contrib/admin/templates/admin/includes/fieldset.html
-django/contrib/admin/templates/registration/logged_out.html
-django/contrib/admin/templates/registration/password_change_done.html
-django/contrib/admin/templates/registration/password_change_form.html
-django/contrib/admin/templates/registration/password_reset_complete.html
-django/contrib/admin/templates/registration/password_reset_confirm.html
-django/contrib/admin/templates/registration/password_reset_done.html
-django/contrib/admin/templates/registration/password_reset_email.html
-django/contrib/admin/templates/registration/password_reset_form.html
-django/contrib/admin/templatetags/__init__.py
-django/contrib/admin/templatetags/admin_list.py
-django/contrib/admin/templatetags/admin_modify.py
-django/contrib/admin/templatetags/admin_static.py
-django/contrib/admin/templatetags/admin_urls.py
-django/contrib/admin/templatetags/log.py
-django/contrib/admin/views/__init__.py
-django/contrib/admin/views/decorators.py
-django/contrib/admin/views/main.py
-django/contrib/admindocs/__init__.py
-django/contrib/admindocs/middleware.py
-django/contrib/admindocs/models.py
-django/contrib/admindocs/urls.py
-django/contrib/admindocs/utils.py
-django/contrib/admindocs/views.py
-django/contrib/admindocs/locale/af/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/af/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/ar/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/ar/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/az/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/az/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/be/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/be/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/bg/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/bg/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/bn/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/bn/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/br/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/br/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/bs/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/bs/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/ca/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/ca/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/cs/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/cs/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/cy/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/cy/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/da/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/da/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/de/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/de/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/el/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/el/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/en/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/en/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/eo/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/eo/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/es/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/es/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/et/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/et/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/eu/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/eu/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/fa/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/fa/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/fi/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/fi/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/fr/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/fr/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/fy_NL/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/fy_NL/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/ga/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/ga/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/gl/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/gl/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/he/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/he/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/hi/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/hi/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/hr/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/hr/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/hu/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/hu/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/ia/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/ia/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/id/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/id/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/is/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/is/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/it/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/it/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/ja/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/ja/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/ka/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/ka/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/kk/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/kk/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/km/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/km/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/kn/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/kn/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/ko/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/ko/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/lt/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/lt/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/lv/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/lv/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/mk/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/mk/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/ml/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/ml/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/mn/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/mn/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/my/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/my/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/nb/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/nb/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/ne/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/ne/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/nl/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/nl/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/nn/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/nn/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/os/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/os/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/pa/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/pa/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/pl/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/pl/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/pt/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/pt/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/ro/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/ro/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/ru/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/ru/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/sk/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/sk/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/sl/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/sl/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/sq/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/sq/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/sr/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/sr/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/sv/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/sv/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/sw/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/sw/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/ta/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/ta/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/te/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/te/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/th/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/th/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/tr/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/tr/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/tt/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/tt/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/udm/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/udm/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/uk/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/uk/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/ur/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/ur/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/vi/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/vi/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/zh_CN/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/zh_CN/LC_MESSAGES/django.po
-django/contrib/admindocs/locale/zh_TW/LC_MESSAGES/django.mo
-django/contrib/admindocs/locale/zh_TW/LC_MESSAGES/django.po
-django/contrib/admindocs/templates/admin_doc/bookmarklets.html
-django/contrib/admindocs/templates/admin_doc/index.html
-django/contrib/admindocs/templates/admin_doc/missing_docutils.html
-django/contrib/admindocs/templates/admin_doc/model_detail.html
-django/contrib/admindocs/templates/admin_doc/model_index.html
-django/contrib/admindocs/templates/admin_doc/template_detail.html
-django/contrib/admindocs/templates/admin_doc/template_filter_index.html
-django/contrib/admindocs/templates/admin_doc/template_tag_index.html
-django/contrib/admindocs/templates/admin_doc/view_detail.html
-django/contrib/admindocs/templates/admin_doc/view_index.html
-django/contrib/admindocs/tests/__init__.py
-django/contrib/admindocs/tests/test_fields.py
-django/contrib/auth/__init__.py
-django/contrib/auth/admin.py
-django/contrib/auth/backends.py
-django/contrib/auth/context_processors.py
-django/contrib/auth/create_superuser.py
-django/contrib/auth/decorators.py
-django/contrib/auth/forms.py
-django/contrib/auth/hashers.py
-django/contrib/auth/middleware.py
-django/contrib/auth/models.py
-django/contrib/auth/signals.py
-django/contrib/auth/tokens.py
-django/contrib/auth/urls.py
-django/contrib/auth/views.py
-django/contrib/auth/fixtures/authtestdata.json
-django/contrib/auth/fixtures/context-processors-users.xml
-django/contrib/auth/fixtures/custom_user.json
-django/contrib/auth/fixtures/natural.json
-django/contrib/auth/fixtures/regular.json
-django/contrib/auth/handlers/__init__.py
-django/contrib/auth/handlers/modwsgi.py
-django/contrib/auth/locale/af/LC_MESSAGES/django.mo
-django/contrib/auth/locale/af/LC_MESSAGES/django.po
-django/contrib/auth/locale/ar/LC_MESSAGES/django.mo
-django/contrib/auth/locale/ar/LC_MESSAGES/django.po
-django/contrib/auth/locale/az/LC_MESSAGES/django.mo
-django/contrib/auth/locale/az/LC_MESSAGES/django.po
-django/contrib/auth/locale/be/LC_MESSAGES/django.mo
-django/contrib/auth/locale/be/LC_MESSAGES/django.po
-django/contrib/auth/locale/bg/LC_MESSAGES/django.mo
-django/contrib/auth/locale/bg/LC_MESSAGES/django.po
-django/contrib/auth/locale/bn/LC_MESSAGES/django.mo
-django/contrib/auth/locale/bn/LC_MESSAGES/django.po
-django/contrib/auth/locale/br/LC_MESSAGES/django.mo
-django/contrib/auth/locale/br/LC_MESSAGES/django.po
-django/contrib/auth/locale/bs/LC_MESSAGES/django.mo
-django/contrib/auth/locale/bs/LC_MESSAGES/django.po
-django/contrib/auth/locale/ca/LC_MESSAGES/django.mo
-django/contrib/auth/locale/ca/LC_MESSAGES/django.po
-django/contrib/auth/locale/cs/LC_MESSAGES/django.mo
-django/contrib/auth/locale/cs/LC_MESSAGES/django.po
-django/contrib/auth/locale/cy/LC_MESSAGES/django.mo
-django/contrib/auth/locale/cy/LC_MESSAGES/django.po
-django/contrib/auth/locale/da/LC_MESSAGES/django.mo
-django/contrib/auth/locale/da/LC_MESSAGES/django.po
-django/contrib/auth/locale/de/LC_MESSAGES/django.mo
-django/contrib/auth/locale/de/LC_MESSAGES/django.po
-django/contrib/auth/locale/el/LC_MESSAGES/django.mo
-django/contrib/auth/locale/el/LC_MESSAGES/django.po
-django/contrib/auth/locale/en/LC_MESSAGES/django.mo
-django/contrib/auth/locale/en/LC_MESSAGES/django.po
-django/contrib/auth/locale/en_GB/LC_MESSAGES/django.mo
-django/contrib/auth/locale/en_GB/LC_MESSAGES/django.po
-django/contrib/auth/locale/eo/LC_MESSAGES/django.mo
-django/contrib/auth/locale/eo/LC_MESSAGES/django.po
-django/contrib/auth/locale/es/LC_MESSAGES/django.mo
-django/contrib/auth/locale/es/LC_MESSAGES/django.po
-django/contrib/auth/locale/es_AR/LC_MESSAGES/django.mo
-django/contrib/auth/locale/es_AR/LC_MESSAGES/django.po
-django/contrib/auth/locale/es_MX/LC_MESSAGES/django.mo
-django/contrib/auth/locale/es_MX/LC_MESSAGES/django.po
-django/contrib/auth/locale/et/LC_MESSAGES/django.mo
-django/contrib/auth/locale/et/LC_MESSAGES/django.po
-django/contrib/auth/locale/eu/LC_MESSAGES/django.mo
-django/contrib/auth/locale/eu/LC_MESSAGES/django.po
-django/contrib/auth/locale/fa/LC_MESSAGES/django.mo
-django/contrib/auth/locale/fa/LC_MESSAGES/django.po
-django/contrib/auth/locale/fi/LC_MESSAGES/django.mo
-django/contrib/auth/locale/fi/LC_MESSAGES/django.po
-django/contrib/auth/locale/fr/LC_MESSAGES/django.mo
-django/contrib/auth/locale/fr/LC_MESSAGES/django.po
-django/contrib/auth/locale/fy_NL/LC_MESSAGES/django.mo
-django/contrib/auth/locale/fy_NL/LC_MESSAGES/django.po
-django/contrib/auth/locale/ga/LC_MESSAGES/django.mo
-django/contrib/auth/locale/ga/LC_MESSAGES/django.po
-django/contrib/auth/locale/gl/LC_MESSAGES/django.mo
-django/contrib/auth/locale/gl/LC_MESSAGES/django.po
-django/contrib/auth/locale/he/LC_MESSAGES/django.mo
-django/contrib/auth/locale/he/LC_MESSAGES/django.po
-django/contrib/auth/locale/hi/LC_MESSAGES/django.mo
-django/contrib/auth/locale/hi/LC_MESSAGES/django.po
-django/contrib/auth/locale/hr/LC_MESSAGES/django.mo
-django/contrib/auth/locale/hr/LC_MESSAGES/django.po
-django/contrib/auth/locale/hu/LC_MESSAGES/django.mo
-django/contrib/auth/locale/hu/LC_MESSAGES/django.po
-django/contrib/auth/locale/ia/LC_MESSAGES/django.mo
-django/contrib/auth/locale/ia/LC_MESSAGES/django.po
-django/contrib/auth/locale/id/LC_MESSAGES/django.mo
-django/contrib/auth/locale/id/LC_MESSAGES/django.po
-django/contrib/auth/locale/is/LC_MESSAGES/django.mo
-django/contrib/auth/locale/is/LC_MESSAGES/django.po
-django/contrib/auth/locale/it/LC_MESSAGES/django.mo
-django/contrib/auth/locale/it/LC_MESSAGES/django.po
-django/contrib/auth/locale/ja/LC_MESSAGES/django.mo
-django/contrib/auth/locale/ja/LC_MESSAGES/django.po
-django/contrib/auth/locale/ka/LC_MESSAGES/django.mo
-django/contrib/auth/locale/ka/LC_MESSAGES/django.po
-django/contrib/auth/locale/kk/LC_MESSAGES/django.mo
-django/contrib/auth/locale/kk/LC_MESSAGES/django.po
-django/contrib/auth/locale/km/LC_MESSAGES/django.mo
-django/contrib/auth/locale/km/LC_MESSAGES/django.po
-django/contrib/auth/locale/kn/LC_MESSAGES/django.mo
-django/contrib/auth/locale/kn/LC_MESSAGES/django.po
-django/contrib/auth/locale/ko/LC_MESSAGES/django.mo
-django/contrib/auth/locale/ko/LC_MESSAGES/django.po
-django/contrib/auth/locale/lt/LC_MESSAGES/django.mo
-django/contrib/auth/locale/lt/LC_MESSAGES/django.po
-django/contrib/auth/locale/lv/LC_MESSAGES/django.mo
-django/contrib/auth/locale/lv/LC_MESSAGES/django.po
-django/contrib/auth/locale/mk/LC_MESSAGES/django.mo
-django/contrib/auth/locale/mk/LC_MESSAGES/django.po
-django/contrib/auth/locale/ml/LC_MESSAGES/django.mo
-django/contrib/auth/locale/ml/LC_MESSAGES/django.po
-django/contrib/auth/locale/mn/LC_MESSAGES/django.mo
-django/contrib/auth/locale/mn/LC_MESSAGES/django.po
-django/contrib/auth/locale/my/LC_MESSAGES/django.mo
-django/contrib/auth/locale/my/LC_MESSAGES/django.po
-django/contrib/auth/locale/nb/LC_MESSAGES/django.mo
-django/contrib/auth/locale/nb/LC_MESSAGES/django.po
-django/contrib/auth/locale/ne/LC_MESSAGES/django.mo
-django/contrib/auth/locale/ne/LC_MESSAGES/django.po
-django/contrib/auth/locale/nl/LC_MESSAGES/django.mo
-django/contrib/auth/locale/nl/LC_MESSAGES/django.po
-django/contrib/auth/locale/nn/LC_MESSAGES/django.mo
-django/contrib/auth/locale/nn/LC_MESSAGES/django.po
-django/contrib/auth/locale/os/LC_MESSAGES/django.mo
-django/contrib/auth/locale/os/LC_MESSAGES/django.po
-django/contrib/auth/locale/pa/LC_MESSAGES/django.mo
-django/contrib/auth/locale/pa/LC_MESSAGES/django.po
-django/contrib/auth/locale/pl/LC_MESSAGES/django.mo
-django/contrib/auth/locale/pl/LC_MESSAGES/django.po
-django/contrib/auth/locale/pt/LC_MESSAGES/django.mo
-django/contrib/auth/locale/pt/LC_MESSAGES/django.po
-django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.mo
-django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.po
-django/contrib/auth/locale/ro/LC_MESSAGES/django.mo
-django/contrib/auth/locale/ro/LC_MESSAGES/django.po
-django/contrib/auth/locale/ru/LC_MESSAGES/django.mo
-django/contrib/auth/locale/ru/LC_MESSAGES/django.po
-django/contrib/auth/locale/sk/LC_MESSAGES/django.mo
-django/contrib/auth/locale/sk/LC_MESSAGES/django.po
-django/contrib/auth/locale/sl/LC_MESSAGES/django.mo
-django/contrib/auth/locale/sl/LC_MESSAGES/django.po
-django/contrib/auth/locale/sq/LC_MESSAGES/django.mo
-django/contrib/auth/locale/sq/LC_MESSAGES/django.po
-django/contrib/auth/locale/sr/LC_MESSAGES/django.mo
-django/contrib/auth/locale/sr/LC_MESSAGES/django.po
-django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.mo
-django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.po
-django/contrib/auth/locale/sv/LC_MESSAGES/django.mo
-django/contrib/auth/locale/sv/LC_MESSAGES/django.po
-django/contrib/auth/locale/sw/LC_MESSAGES/django.mo
-django/contrib/auth/locale/sw/LC_MESSAGES/django.po
-django/contrib/auth/locale/ta/LC_MESSAGES/django.mo
-django/contrib/auth/locale/ta/LC_MESSAGES/django.po
-django/contrib/auth/locale/te/LC_MESSAGES/django.mo
-django/contrib/auth/locale/te/LC_MESSAGES/django.po
-django/contrib/auth/locale/th/LC_MESSAGES/django.mo
-django/contrib/auth/locale/th/LC_MESSAGES/django.po
-django/contrib/auth/locale/tr/LC_MESSAGES/django.mo
-django/contrib/auth/locale/tr/LC_MESSAGES/django.po
-django/contrib/auth/locale/tt/LC_MESSAGES/django.mo
-django/contrib/auth/locale/tt/LC_MESSAGES/django.po
-django/contrib/auth/locale/uk/LC_MESSAGES/django.mo
-django/contrib/auth/locale/uk/LC_MESSAGES/django.po
-django/contrib/auth/locale/ur/LC_MESSAGES/django.mo
-django/contrib/auth/locale/ur/LC_MESSAGES/django.po
-django/contrib/auth/locale/vi/LC_MESSAGES/django.mo
-django/contrib/auth/locale/vi/LC_MESSAGES/django.po
-django/contrib/auth/locale/zh_CN/LC_MESSAGES/django.mo
-django/contrib/auth/locale/zh_CN/LC_MESSAGES/django.po
-django/contrib/auth/locale/zh_TW/LC_MESSAGES/django.mo
-django/contrib/auth/locale/zh_TW/LC_MESSAGES/django.po
-django/contrib/auth/management/__init__.py
-django/contrib/auth/management/commands/__init__.py
-django/contrib/auth/management/commands/changepassword.py
-django/contrib/auth/management/commands/createsuperuser.py
-django/contrib/auth/templates/registration/password_reset_subject.txt
-django/contrib/auth/tests/__init__.py
-django/contrib/auth/tests/custom_user.py
-django/contrib/auth/tests/test_auth_backends.py
-django/contrib/auth/tests/test_basic.py
-django/contrib/auth/tests/test_context_processors.py
-django/contrib/auth/tests/test_decorators.py
-django/contrib/auth/tests/test_forms.py
-django/contrib/auth/tests/test_handlers.py
-django/contrib/auth/tests/test_hashers.py
-django/contrib/auth/tests/test_management.py
-django/contrib/auth/tests/test_models.py
-django/contrib/auth/tests/test_remote_user.py
-django/contrib/auth/tests/test_signals.py
-django/contrib/auth/tests/test_tokens.py
-django/contrib/auth/tests/test_views.py
-django/contrib/auth/tests/urls.py
-django/contrib/auth/tests/urls_admin.py
-django/contrib/auth/tests/utils.py
-django/contrib/auth/tests/templates/context_processors/auth_attrs_access.html
-django/contrib/auth/tests/templates/context_processors/auth_attrs_messages.html
-django/contrib/auth/tests/templates/context_processors/auth_attrs_no_access.html
-django/contrib/auth/tests/templates/context_processors/auth_attrs_perm_in_perms.html
-django/contrib/auth/tests/templates/context_processors/auth_attrs_perms.html
-django/contrib/auth/tests/templates/context_processors/auth_attrs_test_access.html
-django/contrib/auth/tests/templates/context_processors/auth_attrs_user.html
-django/contrib/auth/tests/templates/registration/logged_out.html
-django/contrib/auth/tests/templates/registration/login.html
-django/contrib/auth/tests/templates/registration/password_change_form.html
-django/contrib/auth/tests/templates/registration/password_reset_complete.html
-django/contrib/auth/tests/templates/registration/password_reset_confirm.html
-django/contrib/auth/tests/templates/registration/password_reset_done.html
-django/contrib/auth/tests/templates/registration/password_reset_email.html
-django/contrib/auth/tests/templates/registration/password_reset_form.html
-django/contrib/auth/tests/templates/registration/password_reset_subject.txt
-django/contrib/comments/__init__.py
-django/contrib/comments/admin.py
-django/contrib/comments/feeds.py
-django/contrib/comments/forms.py
-django/contrib/comments/managers.py
-django/contrib/comments/models.py
-django/contrib/comments/moderation.py
-django/contrib/comments/signals.py
-django/contrib/comments/urls.py
-django/contrib/comments/locale/af/LC_MESSAGES/django.mo
-django/contrib/comments/locale/af/LC_MESSAGES/django.po
-django/contrib/comments/locale/ar/LC_MESSAGES/django.mo
-django/contrib/comments/locale/ar/LC_MESSAGES/django.po
-django/contrib/comments/locale/az/LC_MESSAGES/django.mo
-django/contrib/comments/locale/az/LC_MESSAGES/django.po
-django/contrib/comments/locale/be/LC_MESSAGES/django.mo
-django/contrib/comments/locale/be/LC_MESSAGES/django.po
-django/contrib/comments/locale/bg/LC_MESSAGES/django.mo
-django/contrib/comments/locale/bg/LC_MESSAGES/django.po
-django/contrib/comments/locale/bn/LC_MESSAGES/django.mo
-django/contrib/comments/locale/bn/LC_MESSAGES/django.po
-django/contrib/comments/locale/br/LC_MESSAGES/django.mo
-django/contrib/comments/locale/br/LC_MESSAGES/django.po
-django/contrib/comments/locale/bs/LC_MESSAGES/django.mo
-django/contrib/comments/locale/bs/LC_MESSAGES/django.po
-django/contrib/comments/locale/ca/LC_MESSAGES/django.mo
-django/contrib/comments/locale/ca/LC_MESSAGES/django.po
-django/contrib/comments/locale/cs/LC_MESSAGES/django.mo
-django/contrib/comments/locale/cs/LC_MESSAGES/django.po
-django/contrib/comments/locale/cy/LC_MESSAGES/django.mo
-django/contrib/comments/locale/cy/LC_MESSAGES/django.po
-django/contrib/comments/locale/da/LC_MESSAGES/django.mo
-django/contrib/comments/locale/da/LC_MESSAGES/django.po
-django/contrib/comments/locale/de/LC_MESSAGES/django.mo
-django/contrib/comments/locale/de/LC_MESSAGES/django.po
-django/contrib/comments/locale/el/LC_MESSAGES/django.mo
-django/contrib/comments/locale/el/LC_MESSAGES/django.po
-django/contrib/comments/locale/en/LC_MESSAGES/django.mo
-django/contrib/comments/locale/en/LC_MESSAGES/django.po
-django/contrib/comments/locale/en_GB/LC_MESSAGES/django.mo
-django/contrib/comments/locale/en_GB/LC_MESSAGES/django.po
-django/contrib/comments/locale/eo/LC_MESSAGES/django.mo
-django/contrib/comments/locale/eo/LC_MESSAGES/django.po
-django/contrib/comments/locale/es/LC_MESSAGES/django.mo
-django/contrib/comments/locale/es/LC_MESSAGES/django.po
-django/contrib/comments/locale/es_AR/LC_MESSAGES/django.mo
-django/contrib/comments/locale/es_AR/LC_MESSAGES/django.po
-django/contrib/comments/locale/es_MX/LC_MESSAGES/django.mo
-django/contrib/comments/locale/es_MX/LC_MESSAGES/django.po
-django/contrib/comments/locale/et/LC_MESSAGES/django.mo
-django/contrib/comments/locale/et/LC_MESSAGES/django.po
-django/contrib/comments/locale/eu/LC_MESSAGES/django.mo
-django/contrib/comments/locale/eu/LC_MESSAGES/django.po
-django/contrib/comments/locale/fa/LC_MESSAGES/django.mo
-django/contrib/comments/locale/fa/LC_MESSAGES/django.po
-django/contrib/comments/locale/fi/LC_MESSAGES/django.mo
-django/contrib/comments/locale/fi/LC_MESSAGES/django.po
-django/contrib/comments/locale/fr/LC_MESSAGES/django.mo
-django/contrib/comments/locale/fr/LC_MESSAGES/django.po
-django/contrib/comments/locale/fy_NL/LC_MESSAGES/django.mo
-django/contrib/comments/locale/fy_NL/LC_MESSAGES/django.po
-django/contrib/comments/locale/ga/LC_MESSAGES/django.mo
-django/contrib/comments/locale/ga/LC_MESSAGES/django.po
-django/contrib/comments/locale/gl/LC_MESSAGES/django.mo
-django/contrib/comments/locale/gl/LC_MESSAGES/django.po
-django/contrib/comments/locale/he/LC_MESSAGES/django.mo
-django/contrib/comments/locale/he/LC_MESSAGES/django.po
-django/contrib/comments/locale/hi/LC_MESSAGES/django.mo
-django/contrib/comments/locale/hi/LC_MESSAGES/django.po
-django/contrib/comments/locale/hr/LC_MESSAGES/django.mo
-django/contrib/comments/locale/hr/LC_MESSAGES/django.po
-django/contrib/comments/locale/hu/LC_MESSAGES/django.mo
-django/contrib/comments/locale/hu/LC_MESSAGES/django.po
-django/contrib/comments/locale/ia/LC_MESSAGES/django.mo
-django/contrib/comments/locale/ia/LC_MESSAGES/django.po
-django/contrib/comments/locale/id/LC_MESSAGES/django.mo
-django/contrib/comments/locale/id/LC_MESSAGES/django.po
-django/contrib/comments/locale/is/LC_MESSAGES/django.mo
-django/contrib/comments/locale/is/LC_MESSAGES/django.po
-django/contrib/comments/locale/it/LC_MESSAGES/django.mo
-django/contrib/comments/locale/it/LC_MESSAGES/django.po
-django/contrib/comments/locale/ja/LC_MESSAGES/django.mo
-django/contrib/comments/locale/ja/LC_MESSAGES/django.po
-django/contrib/comments/locale/ka/LC_MESSAGES/django.mo
-django/contrib/comments/locale/ka/LC_MESSAGES/django.po
-django/contrib/comments/locale/kk/LC_MESSAGES/django.mo
-django/contrib/comments/locale/kk/LC_MESSAGES/django.po
-django/contrib/comments/locale/km/LC_MESSAGES/django.mo
-django/contrib/comments/locale/km/LC_MESSAGES/django.po
-django/contrib/comments/locale/kn/LC_MESSAGES/django.mo
-django/contrib/comments/locale/kn/LC_MESSAGES/django.po
-django/contrib/comments/locale/ko/LC_MESSAGES/django.mo
-django/contrib/comments/locale/ko/LC_MESSAGES/django.po
-django/contrib/comments/locale/lb/LC_MESSAGES/django.mo
-django/contrib/comments/locale/lb/LC_MESSAGES/django.po
-django/contrib/comments/locale/lt/LC_MESSAGES/django.mo
-django/contrib/comments/locale/lt/LC_MESSAGES/django.po
-django/contrib/comments/locale/lv/LC_MESSAGES/django.mo
-django/contrib/comments/locale/lv/LC_MESSAGES/django.po
-django/contrib/comments/locale/mk/LC_MESSAGES/django.mo
-django/contrib/comments/locale/mk/LC_MESSAGES/django.po
-django/contrib/comments/locale/ml/LC_MESSAGES/django.mo
-django/contrib/comments/locale/ml/LC_MESSAGES/django.po
-django/contrib/comments/locale/mn/LC_MESSAGES/django.mo
-django/contrib/comments/locale/mn/LC_MESSAGES/django.po
-django/contrib/comments/locale/my/LC_MESSAGES/django.mo
-django/contrib/comments/locale/my/LC_MESSAGES/django.po
-django/contrib/comments/locale/nb/LC_MESSAGES/django.mo
-django/contrib/comments/locale/nb/LC_MESSAGES/django.po
-django/contrib/comments/locale/ne/LC_MESSAGES/django.mo
-django/contrib/comments/locale/ne/LC_MESSAGES/django.po
-django/contrib/comments/locale/nl/LC_MESSAGES/django.mo
-django/contrib/comments/locale/nl/LC_MESSAGES/django.po
-django/contrib/comments/locale/nn/LC_MESSAGES/django.mo
-django/contrib/comments/locale/nn/LC_MESSAGES/django.po
-django/contrib/comments/locale/os/LC_MESSAGES/django.mo
-django/contrib/comments/locale/os/LC_MESSAGES/django.po
-django/contrib/comments/locale/pa/LC_MESSAGES/django.mo
-django/contrib/comments/locale/pa/LC_MESSAGES/django.po
-django/contrib/comments/locale/pl/LC_MESSAGES/django.mo
-django/contrib/comments/locale/pl/LC_MESSAGES/django.po
-django/contrib/comments/locale/pt/LC_MESSAGES/django.mo
-django/contrib/comments/locale/pt/LC_MESSAGES/django.po
-django/contrib/comments/locale/pt_BR/LC_MESSAGES/django.mo
-django/contrib/comments/locale/pt_BR/LC_MESSAGES/django.po
-django/contrib/comments/locale/ro/LC_MESSAGES/django.mo
-django/contrib/comments/locale/ro/LC_MESSAGES/django.po
-django/contrib/comments/locale/ru/LC_MESSAGES/django.mo
-django/contrib/comments/locale/ru/LC_MESSAGES/django.po
-django/contrib/comments/locale/sk/LC_MESSAGES/django.mo
-django/contrib/comments/locale/sk/LC_MESSAGES/django.po
-django/contrib/comments/locale/sl/LC_MESSAGES/django.mo
-django/contrib/comments/locale/sl/LC_MESSAGES/django.po
-django/contrib/comments/locale/sq/LC_MESSAGES/django.mo
-django/contrib/comments/locale/sq/LC_MESSAGES/django.po
-django/contrib/comments/locale/sr/LC_MESSAGES/django.mo
-django/contrib/comments/locale/sr/LC_MESSAGES/django.po
-django/contrib/comments/locale/sr_Latn/LC_MESSAGES/django.mo
-django/contrib/comments/locale/sr_Latn/LC_MESSAGES/django.po
-django/contrib/comments/locale/sv/LC_MESSAGES/django.mo
-django/contrib/comments/locale/sv/LC_MESSAGES/django.po
-django/contrib/comments/locale/sw/LC_MESSAGES/django.mo
-django/contrib/comments/locale/sw/LC_MESSAGES/django.po
-django/contrib/comments/locale/ta/LC_MESSAGES/django.mo
-django/contrib/comments/locale/ta/LC_MESSAGES/django.po
-django/contrib/comments/locale/te/LC_MESSAGES/django.mo
-django/contrib/comments/locale/te/LC_MESSAGES/django.po
-django/contrib/comments/locale/th/LC_MESSAGES/django.mo
-django/contrib/comments/locale/th/LC_MESSAGES/django.po
-django/contrib/comments/locale/tr/LC_MESSAGES/django.mo
-django/contrib/comments/locale/tr/LC_MESSAGES/django.po
-django/contrib/comments/locale/tt/LC_MESSAGES/django.mo
-django/contrib/comments/locale/tt/LC_MESSAGES/django.po
-django/contrib/comments/locale/uk/LC_MESSAGES/django.mo
-django/contrib/comments/locale/uk/LC_MESSAGES/django.po
-django/contrib/comments/locale/ur/LC_MESSAGES/django.mo
-django/contrib/comments/locale/ur/LC_MESSAGES/django.po
-django/contrib/comments/locale/vi/LC_MESSAGES/django.mo
-django/contrib/comments/locale/vi/LC_MESSAGES/django.po
-django/contrib/comments/locale/zh_CN/LC_MESSAGES/django.mo
-django/contrib/comments/locale/zh_CN/LC_MESSAGES/django.po
-django/contrib/comments/locale/zh_TW/LC_MESSAGES/django.mo
-django/contrib/comments/locale/zh_TW/LC_MESSAGES/django.po
-django/contrib/comments/templates/comments/400-debug.html
-django/contrib/comments/templates/comments/approve.html
-django/contrib/comments/templates/comments/approved.html
-django/contrib/comments/templates/comments/base.html
-django/contrib/comments/templates/comments/delete.html
-django/contrib/comments/templates/comments/deleted.html
-django/contrib/comments/templates/comments/flag.html
-django/contrib/comments/templates/comments/flagged.html
-django/contrib/comments/templates/comments/form.html
-django/contrib/comments/templates/comments/list.html
-django/contrib/comments/templates/comments/posted.html
-django/contrib/comments/templates/comments/preview.html
-django/contrib/comments/templatetags/__init__.py
-django/contrib/comments/templatetags/comments.py
-django/contrib/comments/views/__init__.py
-django/contrib/comments/views/comments.py
-django/contrib/comments/views/moderation.py
-django/contrib/comments/views/utils.py
-django/contrib/contenttypes/__init__.py
-django/contrib/contenttypes/generic.py
-django/contrib/contenttypes/management.py
-django/contrib/contenttypes/models.py
-django/contrib/contenttypes/tests.py
-django/contrib/contenttypes/views.py
-django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/az/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/az/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/be/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/be/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/br/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/br/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/da/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/da/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/de/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/de/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/el/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/el/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/en/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/en/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/es/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/es/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/et/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/et/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/fy_NL/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/fy_NL/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/he/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/he/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/id/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/id/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/is/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/is/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/it/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/it/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/km/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/km/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/my/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/my/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/os/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/os/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/te/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/te/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/th/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/th/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/zh_CN/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/zh_CN/LC_MESSAGES/django.po
-django/contrib/contenttypes/locale/zh_TW/LC_MESSAGES/django.mo
-django/contrib/contenttypes/locale/zh_TW/LC_MESSAGES/django.po
-django/contrib/flatpages/__init__.py
-django/contrib/flatpages/admin.py
-django/contrib/flatpages/forms.py
-django/contrib/flatpages/middleware.py
-django/contrib/flatpages/models.py
-django/contrib/flatpages/urls.py
-django/contrib/flatpages/views.py
-django/contrib/flatpages/fixtures/example_site.json
-django/contrib/flatpages/fixtures/sample_flatpages.json
-django/contrib/flatpages/locale/af/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/af/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/ar/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/ar/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/az/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/az/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/be/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/be/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/bg/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/bg/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/bn/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/bn/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/br/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/br/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/bs/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/bs/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/ca/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/ca/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/cs/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/cs/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/cy/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/cy/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/da/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/da/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/de/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/de/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/el/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/el/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/en/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/en/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/eo/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/eo/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/es/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/es/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/et/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/et/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/eu/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/eu/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/fa/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/fa/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/fi/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/fi/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/fr/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/fr/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/fy_NL/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/fy_NL/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/ga/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/ga/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/gl/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/gl/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/he/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/he/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/hi/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/hi/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/hr/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/hr/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/hu/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/hu/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/ia/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/ia/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/id/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/id/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/is/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/is/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/it/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/it/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/ja/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/ja/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/ka/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/ka/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/kk/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/kk/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/km/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/km/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/kn/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/kn/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/ko/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/ko/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/lb/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/lb/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/lt/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/lt/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/lv/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/lv/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/mk/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/mk/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/ml/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/ml/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/mn/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/mn/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/my/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/my/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/nb/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/nb/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/ne/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/ne/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/nl/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/nl/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/nn/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/nn/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/os/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/os/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/pa/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/pa/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/pl/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/pl/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/pt/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/pt/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/ro/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/ro/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/ru/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/ru/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/sk/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/sk/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/sl/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/sl/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/sq/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/sq/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/sr/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/sr/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/sv/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/sv/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/sw/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/sw/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/ta/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/ta/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/te/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/te/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/th/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/th/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/tr/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/tr/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/tt/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/tt/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/udm/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/udm/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/uk/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/uk/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/ur/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/ur/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/vi/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/vi/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/zh_CN/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/zh_CN/LC_MESSAGES/django.po
-django/contrib/flatpages/locale/zh_TW/LC_MESSAGES/django.mo
-django/contrib/flatpages/locale/zh_TW/LC_MESSAGES/django.po
-django/contrib/flatpages/templatetags/__init__.py
-django/contrib/flatpages/templatetags/flatpages.py
-django/contrib/flatpages/tests/__init__.py
-django/contrib/flatpages/tests/test_csrf.py
-django/contrib/flatpages/tests/test_forms.py
-django/contrib/flatpages/tests/test_middleware.py
-django/contrib/flatpages/tests/test_models.py
-django/contrib/flatpages/tests/test_templatetags.py
-django/contrib/flatpages/tests/test_views.py
-django/contrib/flatpages/tests/urls.py
-django/contrib/flatpages/tests/templates/404.html
-django/contrib/flatpages/tests/templates/flatpages/default.html
-django/contrib/flatpages/tests/templates/registration/login.html
-django/contrib/formtools/__init__.py
-django/contrib/formtools/exceptions.py
-django/contrib/formtools/models.py
-django/contrib/formtools/preview.py
-django/contrib/formtools/utils.py
-django/contrib/formtools/locale/ar/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/ar/LC_MESSAGES/django.po
-django/contrib/formtools/locale/az/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/az/LC_MESSAGES/django.po
-django/contrib/formtools/locale/be/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/be/LC_MESSAGES/django.po
-django/contrib/formtools/locale/bg/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/bg/LC_MESSAGES/django.po
-django/contrib/formtools/locale/bn/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/bn/LC_MESSAGES/django.po
-django/contrib/formtools/locale/br/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/br/LC_MESSAGES/django.po
-django/contrib/formtools/locale/bs/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/bs/LC_MESSAGES/django.po
-django/contrib/formtools/locale/ca/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/ca/LC_MESSAGES/django.po
-django/contrib/formtools/locale/cs/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/cs/LC_MESSAGES/django.po
-django/contrib/formtools/locale/cy/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/cy/LC_MESSAGES/django.po
-django/contrib/formtools/locale/da/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/da/LC_MESSAGES/django.po
-django/contrib/formtools/locale/de/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/de/LC_MESSAGES/django.po
-django/contrib/formtools/locale/el/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/el/LC_MESSAGES/django.po
-django/contrib/formtools/locale/en/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/en/LC_MESSAGES/django.po
-django/contrib/formtools/locale/en_GB/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/en_GB/LC_MESSAGES/django.po
-django/contrib/formtools/locale/eo/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/eo/LC_MESSAGES/django.po
-django/contrib/formtools/locale/es/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/es/LC_MESSAGES/django.po
-django/contrib/formtools/locale/es_AR/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/es_AR/LC_MESSAGES/django.po
-django/contrib/formtools/locale/es_MX/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/es_MX/LC_MESSAGES/django.po
-django/contrib/formtools/locale/et/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/et/LC_MESSAGES/django.po
-django/contrib/formtools/locale/eu/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/eu/LC_MESSAGES/django.po
-django/contrib/formtools/locale/fa/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/fa/LC_MESSAGES/django.po
-django/contrib/formtools/locale/fi/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/fi/LC_MESSAGES/django.po
-django/contrib/formtools/locale/fr/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/fr/LC_MESSAGES/django.po
-django/contrib/formtools/locale/fy_NL/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/fy_NL/LC_MESSAGES/django.po
-django/contrib/formtools/locale/ga/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/ga/LC_MESSAGES/django.po
-django/contrib/formtools/locale/gl/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/gl/LC_MESSAGES/django.po
-django/contrib/formtools/locale/he/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/he/LC_MESSAGES/django.po
-django/contrib/formtools/locale/hi/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/hi/LC_MESSAGES/django.po
-django/contrib/formtools/locale/hr/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/hr/LC_MESSAGES/django.po
-django/contrib/formtools/locale/hu/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/hu/LC_MESSAGES/django.po
-django/contrib/formtools/locale/ia/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/ia/LC_MESSAGES/django.po
-django/contrib/formtools/locale/id/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/id/LC_MESSAGES/django.po
-django/contrib/formtools/locale/is/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/is/LC_MESSAGES/django.po
-django/contrib/formtools/locale/it/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/it/LC_MESSAGES/django.po
-django/contrib/formtools/locale/ja/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/ja/LC_MESSAGES/django.po
-django/contrib/formtools/locale/ka/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/ka/LC_MESSAGES/django.po
-django/contrib/formtools/locale/kk/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/kk/LC_MESSAGES/django.po
-django/contrib/formtools/locale/km/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/km/LC_MESSAGES/django.po
-django/contrib/formtools/locale/kn/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/kn/LC_MESSAGES/django.po
-django/contrib/formtools/locale/ko/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/ko/LC_MESSAGES/django.po
-django/contrib/formtools/locale/lt/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/lt/LC_MESSAGES/django.po
-django/contrib/formtools/locale/lv/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/lv/LC_MESSAGES/django.po
-django/contrib/formtools/locale/mk/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/mk/LC_MESSAGES/django.po
-django/contrib/formtools/locale/ml/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/ml/LC_MESSAGES/django.po
-django/contrib/formtools/locale/mn/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/mn/LC_MESSAGES/django.po
-django/contrib/formtools/locale/nb/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/nb/LC_MESSAGES/django.po
-django/contrib/formtools/locale/ne/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/ne/LC_MESSAGES/django.po
-django/contrib/formtools/locale/nl/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/nl/LC_MESSAGES/django.po
-django/contrib/formtools/locale/nn/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/nn/LC_MESSAGES/django.po
-django/contrib/formtools/locale/os/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/os/LC_MESSAGES/django.po
-django/contrib/formtools/locale/pa/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/pa/LC_MESSAGES/django.po
-django/contrib/formtools/locale/pl/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/pl/LC_MESSAGES/django.po
-django/contrib/formtools/locale/pt/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/pt/LC_MESSAGES/django.po
-django/contrib/formtools/locale/pt_BR/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/pt_BR/LC_MESSAGES/django.po
-django/contrib/formtools/locale/ro/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/ro/LC_MESSAGES/django.po
-django/contrib/formtools/locale/ru/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/ru/LC_MESSAGES/django.po
-django/contrib/formtools/locale/sk/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/sk/LC_MESSAGES/django.po
-django/contrib/formtools/locale/sl/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/sl/LC_MESSAGES/django.po
-django/contrib/formtools/locale/sq/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/sq/LC_MESSAGES/django.po
-django/contrib/formtools/locale/sr/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/sr/LC_MESSAGES/django.po
-django/contrib/formtools/locale/sr_Latn/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/sr_Latn/LC_MESSAGES/django.po
-django/contrib/formtools/locale/sv/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/sv/LC_MESSAGES/django.po
-django/contrib/formtools/locale/sw/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/sw/LC_MESSAGES/django.po
-django/contrib/formtools/locale/ta/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/ta/LC_MESSAGES/django.po
-django/contrib/formtools/locale/te/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/te/LC_MESSAGES/django.po
-django/contrib/formtools/locale/th/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/th/LC_MESSAGES/django.po
-django/contrib/formtools/locale/tr/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/tr/LC_MESSAGES/django.po
-django/contrib/formtools/locale/tt/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/tt/LC_MESSAGES/django.po
-django/contrib/formtools/locale/uk/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/uk/LC_MESSAGES/django.po
-django/contrib/formtools/locale/ur/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/ur/LC_MESSAGES/django.po
-django/contrib/formtools/locale/vi/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/vi/LC_MESSAGES/django.po
-django/contrib/formtools/locale/zh_CN/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/zh_CN/LC_MESSAGES/django.po
-django/contrib/formtools/locale/zh_TW/LC_MESSAGES/django.mo
-django/contrib/formtools/locale/zh_TW/LC_MESSAGES/django.po
-django/contrib/formtools/templates/formtools/form.html
-django/contrib/formtools/templates/formtools/preview.html
-django/contrib/formtools/templates/formtools/wizard/wizard_form.html
-django/contrib/formtools/tests/__init__.py
-django/contrib/formtools/tests/forms.py
-django/contrib/formtools/tests/tests.py
-django/contrib/formtools/tests/urls.py
-django/contrib/formtools/tests/templates/404.html
-django/contrib/formtools/tests/templates/base.html
-django/contrib/formtools/tests/templates/forms/wizard.html
-django/contrib/formtools/tests/wizard/__init__.py
-django/contrib/formtools/tests/wizard/storage.py
-django/contrib/formtools/tests/wizard/test_cookiestorage.py
-django/contrib/formtools/tests/wizard/test_forms.py
-django/contrib/formtools/tests/wizard/test_loadstorage.py
-django/contrib/formtools/tests/wizard/test_sessionstorage.py
-django/contrib/formtools/tests/wizard/namedwizardtests/__init__.py
-django/contrib/formtools/tests/wizard/namedwizardtests/forms.py
-django/contrib/formtools/tests/wizard/namedwizardtests/tests.py
-django/contrib/formtools/tests/wizard/namedwizardtests/urls.py
-django/contrib/formtools/tests/wizard/wizardtests/__init__.py
-django/contrib/formtools/tests/wizard/wizardtests/forms.py
-django/contrib/formtools/tests/wizard/wizardtests/tests.py
-django/contrib/formtools/tests/wizard/wizardtests/urls.py
-django/contrib/formtools/wizard/__init__.py
-django/contrib/formtools/wizard/forms.py
-django/contrib/formtools/wizard/views.py
-django/contrib/formtools/wizard/storage/__init__.py
-django/contrib/formtools/wizard/storage/base.py
-django/contrib/formtools/wizard/storage/cookie.py
-django/contrib/formtools/wizard/storage/exceptions.py
-django/contrib/formtools/wizard/storage/session.py
-django/contrib/gis/__init__.py
-django/contrib/gis/feeds.py
-django/contrib/gis/measure.py
-django/contrib/gis/models.py
-django/contrib/gis/shortcuts.py
-django/contrib/gis/views.py
-django/contrib/gis/admin/__init__.py
-django/contrib/gis/admin/options.py
-django/contrib/gis/admin/widgets.py
-django/contrib/gis/db/__init__.py
-django/contrib/gis/db/backends/__init__.py
-django/contrib/gis/db/backends/adapter.py
-django/contrib/gis/db/backends/base.py
-django/contrib/gis/db/backends/util.py
-django/contrib/gis/db/backends/mysql/__init__.py
-django/contrib/gis/db/backends/mysql/base.py
-django/contrib/gis/db/backends/mysql/compiler.py
-django/contrib/gis/db/backends/mysql/creation.py
-django/contrib/gis/db/backends/mysql/introspection.py
-django/contrib/gis/db/backends/mysql/operations.py
-django/contrib/gis/db/backends/oracle/__init__.py
-django/contrib/gis/db/backends/oracle/adapter.py
-django/contrib/gis/db/backends/oracle/base.py
-django/contrib/gis/db/backends/oracle/compiler.py
-django/contrib/gis/db/backends/oracle/creation.py
-django/contrib/gis/db/backends/oracle/introspection.py
-django/contrib/gis/db/backends/oracle/models.py
-django/contrib/gis/db/backends/oracle/operations.py
-django/contrib/gis/db/backends/postgis/__init__.py
-django/contrib/gis/db/backends/postgis/adapter.py
-django/contrib/gis/db/backends/postgis/base.py
-django/contrib/gis/db/backends/postgis/creation.py
-django/contrib/gis/db/backends/postgis/introspection.py
-django/contrib/gis/db/backends/postgis/models.py
-django/contrib/gis/db/backends/postgis/operations.py
-django/contrib/gis/db/backends/spatialite/__init__.py
-django/contrib/gis/db/backends/spatialite/adapter.py
-django/contrib/gis/db/backends/spatialite/base.py
-django/contrib/gis/db/backends/spatialite/client.py
-django/contrib/gis/db/backends/spatialite/creation.py
-django/contrib/gis/db/backends/spatialite/introspection.py
-django/contrib/gis/db/backends/spatialite/models.py
-django/contrib/gis/db/backends/spatialite/operations.py
-django/contrib/gis/db/models/__init__.py
-django/contrib/gis/db/models/aggregates.py
-django/contrib/gis/db/models/fields.py
-django/contrib/gis/db/models/manager.py
-django/contrib/gis/db/models/proxy.py
-django/contrib/gis/db/models/query.py
-django/contrib/gis/db/models/sql/__init__.py
-django/contrib/gis/db/models/sql/aggregates.py
-django/contrib/gis/db/models/sql/compiler.py
-django/contrib/gis/db/models/sql/conversion.py
-django/contrib/gis/db/models/sql/query.py
-django/contrib/gis/db/models/sql/where.py
-django/contrib/gis/forms/__init__.py
-django/contrib/gis/forms/fields.py
-django/contrib/gis/forms/widgets.py
-django/contrib/gis/gdal/LICENSE
-django/contrib/gis/gdal/__init__.py
-django/contrib/gis/gdal/base.py
-django/contrib/gis/gdal/datasource.py
-django/contrib/gis/gdal/driver.py
-django/contrib/gis/gdal/envelope.py
-django/contrib/gis/gdal/error.py
-django/contrib/gis/gdal/feature.py
-django/contrib/gis/gdal/field.py
-django/contrib/gis/gdal/geometries.py
-django/contrib/gis/gdal/geomtype.py
-django/contrib/gis/gdal/layer.py
-django/contrib/gis/gdal/libgdal.py
-django/contrib/gis/gdal/srs.py
-django/contrib/gis/gdal/prototypes/__init__.py
-django/contrib/gis/gdal/prototypes/ds.py
-django/contrib/gis/gdal/prototypes/errcheck.py
-django/contrib/gis/gdal/prototypes/generation.py
-django/contrib/gis/gdal/prototypes/geom.py
-django/contrib/gis/gdal/prototypes/srs.py
-django/contrib/gis/gdal/tests/__init__.py
-django/contrib/gis/gdal/tests/test_driver.py
-django/contrib/gis/gdal/tests/test_ds.py
-django/contrib/gis/gdal/tests/test_envelope.py
-django/contrib/gis/gdal/tests/test_geom.py
-django/contrib/gis/gdal/tests/test_srs.py
-django/contrib/gis/geoip/__init__.py
-django/contrib/gis/geoip/base.py
-django/contrib/gis/geoip/libgeoip.py
-django/contrib/gis/geoip/prototypes.py
-django/contrib/gis/geoip/tests.py
-django/contrib/gis/geometry/__init__.py
-django/contrib/gis/geometry/regex.py
-django/contrib/gis/geometry/test_data.py
-django/contrib/gis/geometry/backend/__init__.py
-django/contrib/gis/geometry/backend/geos.py
-django/contrib/gis/geos/LICENSE
-django/contrib/gis/geos/__init__.py
-django/contrib/gis/geos/base.py
-django/contrib/gis/geos/collections.py
-django/contrib/gis/geos/coordseq.py
-django/contrib/gis/geos/error.py
-django/contrib/gis/geos/factory.py
-django/contrib/gis/geos/geometry.py
-django/contrib/gis/geos/io.py
-django/contrib/gis/geos/libgeos.py
-django/contrib/gis/geos/linestring.py
-django/contrib/gis/geos/mutable_list.py
-django/contrib/gis/geos/point.py
-django/contrib/gis/geos/polygon.py
-django/contrib/gis/geos/prepared.py
-django/contrib/gis/geos/prototypes/__init__.py
-django/contrib/gis/geos/prototypes/coordseq.py
-django/contrib/gis/geos/prototypes/errcheck.py
-django/contrib/gis/geos/prototypes/geom.py
-django/contrib/gis/geos/prototypes/io.py
-django/contrib/gis/geos/prototypes/misc.py
-django/contrib/gis/geos/prototypes/predicates.py
-django/contrib/gis/geos/prototypes/prepared.py
-django/contrib/gis/geos/prototypes/threadsafe.py
-django/contrib/gis/geos/prototypes/topology.py
-django/contrib/gis/geos/tests/__init__.py
-django/contrib/gis/geos/tests/test_geos.py
-django/contrib/gis/geos/tests/test_geos_mutation.py
-django/contrib/gis/geos/tests/test_io.py
-django/contrib/gis/geos/tests/test_mutable_list.py
-django/contrib/gis/locale/ar/LC_MESSAGES/django.mo
-django/contrib/gis/locale/ar/LC_MESSAGES/django.po
-django/contrib/gis/locale/az/LC_MESSAGES/django.mo
-django/contrib/gis/locale/az/LC_MESSAGES/django.po
-django/contrib/gis/locale/be/LC_MESSAGES/django.mo
-django/contrib/gis/locale/be/LC_MESSAGES/django.po
-django/contrib/gis/locale/bg/LC_MESSAGES/django.mo
-django/contrib/gis/locale/bg/LC_MESSAGES/django.po
-django/contrib/gis/locale/bn/LC_MESSAGES/django.mo
-django/contrib/gis/locale/bn/LC_MESSAGES/django.po
-django/contrib/gis/locale/br/LC_MESSAGES/django.mo
-django/contrib/gis/locale/br/LC_MESSAGES/django.po
-django/contrib/gis/locale/bs/LC_MESSAGES/django.mo
-django/contrib/gis/locale/bs/LC_MESSAGES/django.po
-django/contrib/gis/locale/ca/LC_MESSAGES/django.mo
-django/contrib/gis/locale/ca/LC_MESSAGES/django.po
-django/contrib/gis/locale/cs/LC_MESSAGES/django.mo
-django/contrib/gis/locale/cs/LC_MESSAGES/django.po
-django/contrib/gis/locale/cy/LC_MESSAGES/django.mo
-django/contrib/gis/locale/cy/LC_MESSAGES/django.po
-django/contrib/gis/locale/da/LC_MESSAGES/django.mo
-django/contrib/gis/locale/da/LC_MESSAGES/django.po
-django/contrib/gis/locale/de/LC_MESSAGES/django.mo
-django/contrib/gis/locale/de/LC_MESSAGES/django.po
-django/contrib/gis/locale/el/LC_MESSAGES/django.mo
-django/contrib/gis/locale/el/LC_MESSAGES/django.po
-django/contrib/gis/locale/en/LC_MESSAGES/django.mo
-django/contrib/gis/locale/en/LC_MESSAGES/django.po
-django/contrib/gis/locale/en_GB/LC_MESSAGES/django.mo
-django/contrib/gis/locale/en_GB/LC_MESSAGES/django.po
-django/contrib/gis/locale/eo/LC_MESSAGES/django.mo
-django/contrib/gis/locale/eo/LC_MESSAGES/django.po
-django/contrib/gis/locale/es/LC_MESSAGES/django.mo
-django/contrib/gis/locale/es/LC_MESSAGES/django.po
-django/contrib/gis/locale/es_AR/LC_MESSAGES/django.mo
-django/contrib/gis/locale/es_AR/LC_MESSAGES/django.po
-django/contrib/gis/locale/es_MX/LC_MESSAGES/django.mo
-django/contrib/gis/locale/es_MX/LC_MESSAGES/django.po
-django/contrib/gis/locale/et/LC_MESSAGES/django.mo
-django/contrib/gis/locale/et/LC_MESSAGES/django.po
-django/contrib/gis/locale/eu/LC_MESSAGES/django.mo
-django/contrib/gis/locale/eu/LC_MESSAGES/django.po
-django/contrib/gis/locale/fa/LC_MESSAGES/django.mo
-django/contrib/gis/locale/fa/LC_MESSAGES/django.po
-django/contrib/gis/locale/fi/LC_MESSAGES/django.mo
-django/contrib/gis/locale/fi/LC_MESSAGES/django.po
-django/contrib/gis/locale/fr/LC_MESSAGES/django.mo
-django/contrib/gis/locale/fr/LC_MESSAGES/django.po
-django/contrib/gis/locale/fy_NL/LC_MESSAGES/django.mo
-django/contrib/gis/locale/fy_NL/LC_MESSAGES/django.po
-django/contrib/gis/locale/ga/LC_MESSAGES/django.mo
-django/contrib/gis/locale/ga/LC_MESSAGES/django.po
-django/contrib/gis/locale/gl/LC_MESSAGES/django.mo
-django/contrib/gis/locale/gl/LC_MESSAGES/django.po
-django/contrib/gis/locale/he/LC_MESSAGES/django.mo
-django/contrib/gis/locale/he/LC_MESSAGES/django.po
-django/contrib/gis/locale/hi/LC_MESSAGES/django.mo
-django/contrib/gis/locale/hi/LC_MESSAGES/django.po
-django/contrib/gis/locale/hr/LC_MESSAGES/django.mo
-django/contrib/gis/locale/hr/LC_MESSAGES/django.po
-django/contrib/gis/locale/hu/LC_MESSAGES/django.mo
-django/contrib/gis/locale/hu/LC_MESSAGES/django.po
-django/contrib/gis/locale/ia/LC_MESSAGES/django.mo
-django/contrib/gis/locale/ia/LC_MESSAGES/django.po
-django/contrib/gis/locale/id/LC_MESSAGES/django.mo
-django/contrib/gis/locale/id/LC_MESSAGES/django.po
-django/contrib/gis/locale/is/LC_MESSAGES/django.mo
-django/contrib/gis/locale/is/LC_MESSAGES/django.po
-django/contrib/gis/locale/it/LC_MESSAGES/django.mo
-django/contrib/gis/locale/it/LC_MESSAGES/django.po
-django/contrib/gis/locale/ja/LC_MESSAGES/django.mo
-django/contrib/gis/locale/ja/LC_MESSAGES/django.po
-django/contrib/gis/locale/ka/LC_MESSAGES/django.mo
-django/contrib/gis/locale/ka/LC_MESSAGES/django.po
-django/contrib/gis/locale/kk/LC_MESSAGES/django.mo
-django/contrib/gis/locale/kk/LC_MESSAGES/django.po
-django/contrib/gis/locale/km/LC_MESSAGES/django.mo
-django/contrib/gis/locale/km/LC_MESSAGES/django.po
-django/contrib/gis/locale/kn/LC_MESSAGES/django.mo
-django/contrib/gis/locale/kn/LC_MESSAGES/django.po
-django/contrib/gis/locale/ko/LC_MESSAGES/django.mo
-django/contrib/gis/locale/ko/LC_MESSAGES/django.po
-django/contrib/gis/locale/lt/LC_MESSAGES/django.mo
-django/contrib/gis/locale/lt/LC_MESSAGES/django.po
-django/contrib/gis/locale/lv/LC_MESSAGES/django.mo
-django/contrib/gis/locale/lv/LC_MESSAGES/django.po
-django/contrib/gis/locale/mk/LC_MESSAGES/django.mo
-django/contrib/gis/locale/mk/LC_MESSAGES/django.po
-django/contrib/gis/locale/ml/LC_MESSAGES/django.mo
-django/contrib/gis/locale/ml/LC_MESSAGES/django.po
-django/contrib/gis/locale/mn/LC_MESSAGES/django.mo
-django/contrib/gis/locale/mn/LC_MESSAGES/django.po
-django/contrib/gis/locale/nb/LC_MESSAGES/django.mo
-django/contrib/gis/locale/nb/LC_MESSAGES/django.po
-django/contrib/gis/locale/ne/LC_MESSAGES/django.mo
-django/contrib/gis/locale/ne/LC_MESSAGES/django.po
-django/contrib/gis/locale/nl/LC_MESSAGES/django.mo
-django/contrib/gis/locale/nl/LC_MESSAGES/django.po
-django/contrib/gis/locale/nn/LC_MESSAGES/django.mo
-django/contrib/gis/locale/nn/LC_MESSAGES/django.po
-django/contrib/gis/locale/os/LC_MESSAGES/django.mo
-django/contrib/gis/locale/os/LC_MESSAGES/django.po
-django/contrib/gis/locale/pa/LC_MESSAGES/django.mo
-django/contrib/gis/locale/pa/LC_MESSAGES/django.po
-django/contrib/gis/locale/pl/LC_MESSAGES/django.mo
-django/contrib/gis/locale/pl/LC_MESSAGES/django.po
-django/contrib/gis/locale/pt/LC_MESSAGES/django.mo
-django/contrib/gis/locale/pt/LC_MESSAGES/django.po
-django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.mo
-django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.po
-django/contrib/gis/locale/ro/LC_MESSAGES/django.mo
-django/contrib/gis/locale/ro/LC_MESSAGES/django.po
-django/contrib/gis/locale/ru/LC_MESSAGES/django.mo
-django/contrib/gis/locale/ru/LC_MESSAGES/django.po
-django/contrib/gis/locale/sk/LC_MESSAGES/django.mo
-django/contrib/gis/locale/sk/LC_MESSAGES/django.po
-django/contrib/gis/locale/sl/LC_MESSAGES/django.mo
-django/contrib/gis/locale/sl/LC_MESSAGES/django.po
-django/contrib/gis/locale/sq/LC_MESSAGES/django.mo
-django/contrib/gis/locale/sq/LC_MESSAGES/django.po
-django/contrib/gis/locale/sr/LC_MESSAGES/django.mo
-django/contrib/gis/locale/sr/LC_MESSAGES/django.po
-django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.mo
-django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.po
-django/contrib/gis/locale/sv/LC_MESSAGES/django.mo
-django/contrib/gis/locale/sv/LC_MESSAGES/django.po
-django/contrib/gis/locale/sw/LC_MESSAGES/django.mo
-django/contrib/gis/locale/sw/LC_MESSAGES/django.po
-django/contrib/gis/locale/ta/LC_MESSAGES/django.mo
-django/contrib/gis/locale/ta/LC_MESSAGES/django.po
-django/contrib/gis/locale/te/LC_MESSAGES/django.mo
-django/contrib/gis/locale/te/LC_MESSAGES/django.po
-django/contrib/gis/locale/th/LC_MESSAGES/django.mo
-django/contrib/gis/locale/th/LC_MESSAGES/django.po
-django/contrib/gis/locale/tr/LC_MESSAGES/django.mo
-django/contrib/gis/locale/tr/LC_MESSAGES/django.po
-django/contrib/gis/locale/tt/LC_MESSAGES/django.mo
-django/contrib/gis/locale/tt/LC_MESSAGES/django.po
-django/contrib/gis/locale/uk/LC_MESSAGES/django.mo
-django/contrib/gis/locale/uk/LC_MESSAGES/django.po
-django/contrib/gis/locale/ur/LC_MESSAGES/django.mo
-django/contrib/gis/locale/ur/LC_MESSAGES/django.po
-django/contrib/gis/locale/vi/LC_MESSAGES/django.mo
-django/contrib/gis/locale/vi/LC_MESSAGES/django.po
-django/contrib/gis/locale/zh_CN/LC_MESSAGES/django.mo
-django/contrib/gis/locale/zh_CN/LC_MESSAGES/django.po
-django/contrib/gis/locale/zh_TW/LC_MESSAGES/django.mo
-django/contrib/gis/locale/zh_TW/LC_MESSAGES/django.po
-django/contrib/gis/management/__init__.py
-django/contrib/gis/management/commands/__init__.py
-django/contrib/gis/management/commands/inspectdb.py
-django/contrib/gis/management/commands/ogrinspect.py
-django/contrib/gis/maps/__init__.py
-django/contrib/gis/maps/google/__init__.py
-django/contrib/gis/maps/google/gmap.py
-django/contrib/gis/maps/google/overlays.py
-django/contrib/gis/maps/google/zoom.py
-django/contrib/gis/maps/openlayers/__init__.py
-django/contrib/gis/sitemaps/__init__.py
-django/contrib/gis/sitemaps/georss.py
-django/contrib/gis/sitemaps/kml.py
-django/contrib/gis/sitemaps/views.py
-django/contrib/gis/templates/gis/openlayers-osm.html
-django/contrib/gis/templates/gis/openlayers.html
-django/contrib/gis/templates/gis/admin/openlayers.html
-django/contrib/gis/templates/gis/admin/openlayers.js
-django/contrib/gis/templates/gis/admin/osm.html
-django/contrib/gis/templates/gis/admin/osm.js
-django/contrib/gis/templates/gis/google/google-map.html
-django/contrib/gis/templates/gis/google/google-map.js
-django/contrib/gis/templates/gis/google/google-multi.js
-django/contrib/gis/templates/gis/google/google-single.js
-django/contrib/gis/templates/gis/kml/base.kml
-django/contrib/gis/templates/gis/kml/placemarks.kml
-django/contrib/gis/templates/gis/sitemaps/geo_sitemap.xml
-django/contrib/gis/tests/__init__.py
-django/contrib/gis/tests/test_geoforms.py
-django/contrib/gis/tests/test_measure.py
-django/contrib/gis/tests/test_spatialrefsys.py
-django/contrib/gis/tests/utils.py
-django/contrib/gis/tests/data/geometries.json
-django/contrib/gis/tests/data/texas.dbf
-django/contrib/gis/tests/data/ch-city/ch-city.dbf
-django/contrib/gis/tests/data/ch-city/ch-city.prj
-django/contrib/gis/tests/data/ch-city/ch-city.shp
-django/contrib/gis/tests/data/ch-city/ch-city.shx
-django/contrib/gis/tests/data/cities/cities.dbf
-django/contrib/gis/tests/data/cities/cities.prj
-django/contrib/gis/tests/data/cities/cities.shp
-django/contrib/gis/tests/data/cities/cities.shx
-django/contrib/gis/tests/data/counties/counties.dbf
-django/contrib/gis/tests/data/counties/counties.shp
-django/contrib/gis/tests/data/counties/counties.shx
-django/contrib/gis/tests/data/interstates/interstates.dbf
-django/contrib/gis/tests/data/interstates/interstates.prj
-django/contrib/gis/tests/data/interstates/interstates.shp
-django/contrib/gis/tests/data/interstates/interstates.shx
-django/contrib/gis/tests/data/invalid/emptypoints.dbf
-django/contrib/gis/tests/data/invalid/emptypoints.shp
-django/contrib/gis/tests/data/invalid/emptypoints.shx
-django/contrib/gis/tests/data/test_point/test_point.dbf
-django/contrib/gis/tests/data/test_point/test_point.prj
-django/contrib/gis/tests/data/test_point/test_point.shp
-django/contrib/gis/tests/data/test_point/test_point.shx
-django/contrib/gis/tests/data/test_poly/test_poly.dbf
-django/contrib/gis/tests/data/test_poly/test_poly.prj
-django/contrib/gis/tests/data/test_poly/test_poly.shp
-django/contrib/gis/tests/data/test_poly/test_poly.shx
-django/contrib/gis/tests/data/test_vrt/test_vrt.csv
-django/contrib/gis/tests/data/test_vrt/test_vrt.vrt
-django/contrib/gis/tests/distapp/__init__.py
-django/contrib/gis/tests/distapp/models.py
-django/contrib/gis/tests/distapp/tests.py
-django/contrib/gis/tests/distapp/fixtures/initial_data.json.gz
-django/contrib/gis/tests/geo3d/__init__.py
-django/contrib/gis/tests/geo3d/models.py
-django/contrib/gis/tests/geo3d/tests.py
-django/contrib/gis/tests/geo3d/views.py
-django/contrib/gis/tests/geoadmin/__init__.py
-django/contrib/gis/tests/geoadmin/models.py
-django/contrib/gis/tests/geoadmin/tests.py
-django/contrib/gis/tests/geoadmin/urls.py
-django/contrib/gis/tests/geoapp/__init__.py
-django/contrib/gis/tests/geoapp/feeds.py
-django/contrib/gis/tests/geoapp/models.py
-django/contrib/gis/tests/geoapp/sitemaps.py
-django/contrib/gis/tests/geoapp/test_feeds.py
-django/contrib/gis/tests/geoapp/test_regress.py
-django/contrib/gis/tests/geoapp/test_sitemaps.py
-django/contrib/gis/tests/geoapp/tests.py
-django/contrib/gis/tests/geoapp/urls.py
-django/contrib/gis/tests/geoapp/fixtures/initial_data.json.gz
-django/contrib/gis/tests/geogapp/__init__.py
-django/contrib/gis/tests/geogapp/models.py
-django/contrib/gis/tests/geogapp/tests.py
-django/contrib/gis/tests/geogapp/fixtures/initial_data.json
-django/contrib/gis/tests/inspectapp/__init__.py
-django/contrib/gis/tests/inspectapp/models.py
-django/contrib/gis/tests/inspectapp/tests.py
-django/contrib/gis/tests/layermap/__init__.py
-django/contrib/gis/tests/layermap/models.py
-django/contrib/gis/tests/layermap/tests.py
-django/contrib/gis/tests/relatedapp/__init__.py
-django/contrib/gis/tests/relatedapp/models.py
-django/contrib/gis/tests/relatedapp/tests.py
-django/contrib/gis/tests/relatedapp/fixtures/initial_data.json.gz
-django/contrib/gis/utils/__init__.py
-django/contrib/gis/utils/layermapping.py
-django/contrib/gis/utils/ogrinfo.py
-django/contrib/gis/utils/ogrinspect.py
-django/contrib/gis/utils/srs.py
-django/contrib/gis/utils/wkt.py
-django/contrib/humanize/__init__.py
-django/contrib/humanize/models.py
-django/contrib/humanize/tests.py
-django/contrib/humanize/locale/ar/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/ar/LC_MESSAGES/django.po
-django/contrib/humanize/locale/az/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/az/LC_MESSAGES/django.po
-django/contrib/humanize/locale/be/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/be/LC_MESSAGES/django.po
-django/contrib/humanize/locale/bg/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/bg/LC_MESSAGES/django.po
-django/contrib/humanize/locale/bn/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/bn/LC_MESSAGES/django.po
-django/contrib/humanize/locale/br/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/br/LC_MESSAGES/django.po
-django/contrib/humanize/locale/bs/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/bs/LC_MESSAGES/django.po
-django/contrib/humanize/locale/ca/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/ca/LC_MESSAGES/django.po
-django/contrib/humanize/locale/cs/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/cs/LC_MESSAGES/django.po
-django/contrib/humanize/locale/cy/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/cy/LC_MESSAGES/django.po
-django/contrib/humanize/locale/da/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/da/LC_MESSAGES/django.po
-django/contrib/humanize/locale/de/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/de/LC_MESSAGES/django.po
-django/contrib/humanize/locale/el/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/el/LC_MESSAGES/django.po
-django/contrib/humanize/locale/en/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/en/LC_MESSAGES/django.po
-django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.po
-django/contrib/humanize/locale/eo/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/eo/LC_MESSAGES/django.po
-django/contrib/humanize/locale/es/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/es/LC_MESSAGES/django.po
-django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.po
-django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.po
-django/contrib/humanize/locale/et/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/et/LC_MESSAGES/django.po
-django/contrib/humanize/locale/eu/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/eu/LC_MESSAGES/django.po
-django/contrib/humanize/locale/fa/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/fa/LC_MESSAGES/django.po
-django/contrib/humanize/locale/fi/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/fi/LC_MESSAGES/django.po
-django/contrib/humanize/locale/fr/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/fr/LC_MESSAGES/django.po
-django/contrib/humanize/locale/fy_NL/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/fy_NL/LC_MESSAGES/django.po
-django/contrib/humanize/locale/ga/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/ga/LC_MESSAGES/django.po
-django/contrib/humanize/locale/gl/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/gl/LC_MESSAGES/django.po
-django/contrib/humanize/locale/he/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/he/LC_MESSAGES/django.po
-django/contrib/humanize/locale/hi/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/hi/LC_MESSAGES/django.po
-django/contrib/humanize/locale/hr/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/hr/LC_MESSAGES/django.po
-django/contrib/humanize/locale/hu/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/hu/LC_MESSAGES/django.po
-django/contrib/humanize/locale/ia/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/ia/LC_MESSAGES/django.po
-django/contrib/humanize/locale/id/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/id/LC_MESSAGES/django.po
-django/contrib/humanize/locale/is/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/is/LC_MESSAGES/django.po
-django/contrib/humanize/locale/it/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/it/LC_MESSAGES/django.po
-django/contrib/humanize/locale/ja/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/ja/LC_MESSAGES/django.po
-django/contrib/humanize/locale/ka/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/ka/LC_MESSAGES/django.po
-django/contrib/humanize/locale/kk/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/kk/LC_MESSAGES/django.po
-django/contrib/humanize/locale/km/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/km/LC_MESSAGES/django.po
-django/contrib/humanize/locale/kn/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/kn/LC_MESSAGES/django.po
-django/contrib/humanize/locale/ko/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/ko/LC_MESSAGES/django.po
-django/contrib/humanize/locale/lt/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/lt/LC_MESSAGES/django.po
-django/contrib/humanize/locale/lv/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/lv/LC_MESSAGES/django.po
-django/contrib/humanize/locale/mk/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/mk/LC_MESSAGES/django.po
-django/contrib/humanize/locale/ml/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/ml/LC_MESSAGES/django.po
-django/contrib/humanize/locale/mn/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/mn/LC_MESSAGES/django.po
-django/contrib/humanize/locale/my/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/my/LC_MESSAGES/django.po
-django/contrib/humanize/locale/nb/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/nb/LC_MESSAGES/django.po
-django/contrib/humanize/locale/ne/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/ne/LC_MESSAGES/django.po
-django/contrib/humanize/locale/nl/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/nl/LC_MESSAGES/django.po
-django/contrib/humanize/locale/nn/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/nn/LC_MESSAGES/django.po
-django/contrib/humanize/locale/os/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/os/LC_MESSAGES/django.po
-django/contrib/humanize/locale/pa/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/pa/LC_MESSAGES/django.po
-django/contrib/humanize/locale/pl/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/pl/LC_MESSAGES/django.po
-django/contrib/humanize/locale/pt/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/pt/LC_MESSAGES/django.po
-django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.po
-django/contrib/humanize/locale/ro/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/ro/LC_MESSAGES/django.po
-django/contrib/humanize/locale/ru/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/ru/LC_MESSAGES/django.po
-django/contrib/humanize/locale/sk/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/sk/LC_MESSAGES/django.po
-django/contrib/humanize/locale/sl/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/sl/LC_MESSAGES/django.po
-django/contrib/humanize/locale/sq/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/sq/LC_MESSAGES/django.po
-django/contrib/humanize/locale/sr/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/sr/LC_MESSAGES/django.po
-django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.po
-django/contrib/humanize/locale/sv/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/sv/LC_MESSAGES/django.po
-django/contrib/humanize/locale/sw/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/sw/LC_MESSAGES/django.po
-django/contrib/humanize/locale/ta/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/ta/LC_MESSAGES/django.po
-django/contrib/humanize/locale/te/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/te/LC_MESSAGES/django.po
-django/contrib/humanize/locale/th/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/th/LC_MESSAGES/django.po
-django/contrib/humanize/locale/tr/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/tr/LC_MESSAGES/django.po
-django/contrib/humanize/locale/tt/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/tt/LC_MESSAGES/django.po
-django/contrib/humanize/locale/uk/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/uk/LC_MESSAGES/django.po
-django/contrib/humanize/locale/ur/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/ur/LC_MESSAGES/django.po
-django/contrib/humanize/locale/vi/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/vi/LC_MESSAGES/django.po
-django/contrib/humanize/locale/zh_CN/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/zh_CN/LC_MESSAGES/django.po
-django/contrib/humanize/locale/zh_TW/LC_MESSAGES/django.mo
-django/contrib/humanize/locale/zh_TW/LC_MESSAGES/django.po
-django/contrib/humanize/templatetags/__init__.py
-django/contrib/humanize/templatetags/humanize.py
-django/contrib/messages/__init__.py
-django/contrib/messages/api.py
-django/contrib/messages/constants.py
-django/contrib/messages/context_processors.py
-django/contrib/messages/middleware.py
-django/contrib/messages/models.py
-django/contrib/messages/utils.py
-django/contrib/messages/views.py
-django/contrib/messages/locale/ar/LC_MESSAGES/django.mo
-django/contrib/messages/locale/ar/LC_MESSAGES/django.po
-django/contrib/messages/locale/az/LC_MESSAGES/django.mo
-django/contrib/messages/locale/az/LC_MESSAGES/django.po
-django/contrib/messages/locale/be/LC_MESSAGES/django.mo
-django/contrib/messages/locale/be/LC_MESSAGES/django.po
-django/contrib/messages/locale/bg/LC_MESSAGES/django.mo
-django/contrib/messages/locale/bg/LC_MESSAGES/django.po
-django/contrib/messages/locale/bn/LC_MESSAGES/django.mo
-django/contrib/messages/locale/bn/LC_MESSAGES/django.po
-django/contrib/messages/locale/br/LC_MESSAGES/django.mo
-django/contrib/messages/locale/br/LC_MESSAGES/django.po
-django/contrib/messages/locale/bs/LC_MESSAGES/django.mo
-django/contrib/messages/locale/bs/LC_MESSAGES/django.po
-django/contrib/messages/locale/ca/LC_MESSAGES/django.mo
-django/contrib/messages/locale/ca/LC_MESSAGES/django.po
-django/contrib/messages/locale/cs/LC_MESSAGES/django.mo
-django/contrib/messages/locale/cs/LC_MESSAGES/django.po
-django/contrib/messages/locale/cy/LC_MESSAGES/django.mo
-django/contrib/messages/locale/cy/LC_MESSAGES/django.po
-django/contrib/messages/locale/da/LC_MESSAGES/django.mo
-django/contrib/messages/locale/da/LC_MESSAGES/django.po
-django/contrib/messages/locale/de/LC_MESSAGES/django.mo
-django/contrib/messages/locale/de/LC_MESSAGES/django.po
-django/contrib/messages/locale/el/LC_MESSAGES/django.mo
-django/contrib/messages/locale/el/LC_MESSAGES/django.po
-django/contrib/messages/locale/en/LC_MESSAGES/django.mo
-django/contrib/messages/locale/en/LC_MESSAGES/django.po
-django/contrib/messages/locale/en_GB/LC_MESSAGES/django.mo
-django/contrib/messages/locale/en_GB/LC_MESSAGES/django.po
-django/contrib/messages/locale/eo/LC_MESSAGES/django.mo
-django/contrib/messages/locale/eo/LC_MESSAGES/django.po
-django/contrib/messages/locale/es/LC_MESSAGES/django.mo
-django/contrib/messages/locale/es/LC_MESSAGES/django.po
-django/contrib/messages/locale/es_AR/LC_MESSAGES/django.mo
-django/contrib/messages/locale/es_AR/LC_MESSAGES/django.po
-django/contrib/messages/locale/es_MX/LC_MESSAGES/django.mo
-django/contrib/messages/locale/es_MX/LC_MESSAGES/django.po
-django/contrib/messages/locale/et/LC_MESSAGES/django.mo
-django/contrib/messages/locale/et/LC_MESSAGES/django.po
-django/contrib/messages/locale/eu/LC_MESSAGES/django.mo
-django/contrib/messages/locale/eu/LC_MESSAGES/django.po
-django/contrib/messages/locale/fa/LC_MESSAGES/django.mo
-django/contrib/messages/locale/fa/LC_MESSAGES/django.po
-django/contrib/messages/locale/fi/LC_MESSAGES/django.mo
-django/contrib/messages/locale/fi/LC_MESSAGES/django.po
-django/contrib/messages/locale/fr/LC_MESSAGES/django.mo
-django/contrib/messages/locale/fr/LC_MESSAGES/django.po
-django/contrib/messages/locale/fy_NL/LC_MESSAGES/django.mo
-django/contrib/messages/locale/fy_NL/LC_MESSAGES/django.po
-django/contrib/messages/locale/ga/LC_MESSAGES/django.mo
-django/contrib/messages/locale/ga/LC_MESSAGES/django.po
-django/contrib/messages/locale/gl/LC_MESSAGES/django.mo
-django/contrib/messages/locale/gl/LC_MESSAGES/django.po
-django/contrib/messages/locale/he/LC_MESSAGES/django.mo
-django/contrib/messages/locale/he/LC_MESSAGES/django.po
-django/contrib/messages/locale/hi/LC_MESSAGES/django.mo
-django/contrib/messages/locale/hi/LC_MESSAGES/django.po
-django/contrib/messages/locale/hr/LC_MESSAGES/django.mo
-django/contrib/messages/locale/hr/LC_MESSAGES/django.po
-django/contrib/messages/locale/hu/LC_MESSAGES/django.mo
-django/contrib/messages/locale/hu/LC_MESSAGES/django.po
-django/contrib/messages/locale/ia/LC_MESSAGES/django.mo
-django/contrib/messages/locale/ia/LC_MESSAGES/django.po
-django/contrib/messages/locale/id/LC_MESSAGES/django.mo
-django/contrib/messages/locale/id/LC_MESSAGES/django.po
-django/contrib/messages/locale/is/LC_MESSAGES/django.mo
-django/contrib/messages/locale/is/LC_MESSAGES/django.po
-django/contrib/messages/locale/it/LC_MESSAGES/django.mo
-django/contrib/messages/locale/it/LC_MESSAGES/django.po
-django/contrib/messages/locale/ja/LC_MESSAGES/django.mo
-django/contrib/messages/locale/ja/LC_MESSAGES/django.po
-django/contrib/messages/locale/ka/LC_MESSAGES/django.mo
-django/contrib/messages/locale/ka/LC_MESSAGES/django.po
-django/contrib/messages/locale/kk/LC_MESSAGES/django.mo
-django/contrib/messages/locale/kk/LC_MESSAGES/django.po
-django/contrib/messages/locale/km/LC_MESSAGES/django.mo
-django/contrib/messages/locale/km/LC_MESSAGES/django.po
-django/contrib/messages/locale/kn/LC_MESSAGES/django.mo
-django/contrib/messages/locale/kn/LC_MESSAGES/django.po
-django/contrib/messages/locale/ko/LC_MESSAGES/django.mo
-django/contrib/messages/locale/ko/LC_MESSAGES/django.po
-django/contrib/messages/locale/lb/LC_MESSAGES/django.mo
-django/contrib/messages/locale/lb/LC_MESSAGES/django.po
-django/contrib/messages/locale/lt/LC_MESSAGES/django.mo
-django/contrib/messages/locale/lt/LC_MESSAGES/django.po
-django/contrib/messages/locale/lv/LC_MESSAGES/django.mo
-django/contrib/messages/locale/lv/LC_MESSAGES/django.po
-django/contrib/messages/locale/mk/LC_MESSAGES/django.mo
-django/contrib/messages/locale/mk/LC_MESSAGES/django.po
-django/contrib/messages/locale/ml/LC_MESSAGES/django.mo
-django/contrib/messages/locale/ml/LC_MESSAGES/django.po
-django/contrib/messages/locale/mn/LC_MESSAGES/django.mo
-django/contrib/messages/locale/mn/LC_MESSAGES/django.po
-django/contrib/messages/locale/my/LC_MESSAGES/django.mo
-django/contrib/messages/locale/my/LC_MESSAGES/django.po
-django/contrib/messages/locale/nb/LC_MESSAGES/django.mo
-django/contrib/messages/locale/nb/LC_MESSAGES/django.po
-django/contrib/messages/locale/ne/LC_MESSAGES/django.mo
-django/contrib/messages/locale/ne/LC_MESSAGES/django.po
-django/contrib/messages/locale/nl/LC_MESSAGES/django.mo
-django/contrib/messages/locale/nl/LC_MESSAGES/django.po
-django/contrib/messages/locale/nn/LC_MESSAGES/django.mo
-django/contrib/messages/locale/nn/LC_MESSAGES/django.po
-django/contrib/messages/locale/os/LC_MESSAGES/django.mo
-django/contrib/messages/locale/os/LC_MESSAGES/django.po
-django/contrib/messages/locale/pa/LC_MESSAGES/django.mo
-django/contrib/messages/locale/pa/LC_MESSAGES/django.po
-django/contrib/messages/locale/pl/LC_MESSAGES/django.mo
-django/contrib/messages/locale/pl/LC_MESSAGES/django.po
-django/contrib/messages/locale/pt/LC_MESSAGES/django.mo
-django/contrib/messages/locale/pt/LC_MESSAGES/django.po
-django/contrib/messages/locale/pt_BR/LC_MESSAGES/django.mo
-django/contrib/messages/locale/pt_BR/LC_MESSAGES/django.po
-django/contrib/messages/locale/ro/LC_MESSAGES/django.mo
-django/contrib/messages/locale/ro/LC_MESSAGES/django.po
-django/contrib/messages/locale/ru/LC_MESSAGES/django.mo
-django/contrib/messages/locale/ru/LC_MESSAGES/django.po
-django/contrib/messages/locale/sk/LC_MESSAGES/django.mo
-django/contrib/messages/locale/sk/LC_MESSAGES/django.po
-django/contrib/messages/locale/sl/LC_MESSAGES/django.mo
-django/contrib/messages/locale/sl/LC_MESSAGES/django.po
-django/contrib/messages/locale/sq/LC_MESSAGES/django.mo
-django/contrib/messages/locale/sq/LC_MESSAGES/django.po
-django/contrib/messages/locale/sr/LC_MESSAGES/django.mo
-django/contrib/messages/locale/sr/LC_MESSAGES/django.po
-django/contrib/messages/locale/sr_Latn/LC_MESSAGES/django.mo
-django/contrib/messages/locale/sr_Latn/LC_MESSAGES/django.po
-django/contrib/messages/locale/sv/LC_MESSAGES/django.mo
-django/contrib/messages/locale/sv/LC_MESSAGES/django.po
-django/contrib/messages/locale/sw/LC_MESSAGES/django.mo
-django/contrib/messages/locale/sw/LC_MESSAGES/django.po
-django/contrib/messages/locale/ta/LC_MESSAGES/django.mo
-django/contrib/messages/locale/ta/LC_MESSAGES/django.po
-django/contrib/messages/locale/te/LC_MESSAGES/django.mo
-django/contrib/messages/locale/te/LC_MESSAGES/django.po
-django/contrib/messages/locale/th/LC_MESSAGES/django.mo
-django/contrib/messages/locale/th/LC_MESSAGES/django.po
-django/contrib/messages/locale/tr/LC_MESSAGES/django.mo
-django/contrib/messages/locale/tr/LC_MESSAGES/django.po
-django/contrib/messages/locale/tt/LC_MESSAGES/django.mo
-django/contrib/messages/locale/tt/LC_MESSAGES/django.po
-django/contrib/messages/locale/uk/LC_MESSAGES/django.mo
-django/contrib/messages/locale/uk/LC_MESSAGES/django.po
-django/contrib/messages/locale/ur/LC_MESSAGES/django.mo
-django/contrib/messages/locale/ur/LC_MESSAGES/django.po
-django/contrib/messages/locale/vi/LC_MESSAGES/django.mo
-django/contrib/messages/locale/vi/LC_MESSAGES/django.po
-django/contrib/messages/locale/zh_CN/LC_MESSAGES/django.mo
-django/contrib/messages/locale/zh_CN/LC_MESSAGES/django.po
-django/contrib/messages/locale/zh_TW/LC_MESSAGES/django.mo
-django/contrib/messages/locale/zh_TW/LC_MESSAGES/django.po
-django/contrib/messages/storage/__init__.py
-django/contrib/messages/storage/base.py
-django/contrib/messages/storage/cookie.py
-django/contrib/messages/storage/fallback.py
-django/contrib/messages/storage/session.py
-django/contrib/messages/tests/__init__.py
-django/contrib/messages/tests/base.py
-django/contrib/messages/tests/test_cookie.py
-django/contrib/messages/tests/test_fallback.py
-django/contrib/messages/tests/test_middleware.py
-django/contrib/messages/tests/test_mixins.py
-django/contrib/messages/tests/test_session.py
-django/contrib/messages/tests/urls.py
-django/contrib/redirects/__init__.py
-django/contrib/redirects/admin.py
-django/contrib/redirects/middleware.py
-django/contrib/redirects/models.py
-django/contrib/redirects/tests.py
-django/contrib/redirects/locale/ar/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/ar/LC_MESSAGES/django.po
-django/contrib/redirects/locale/az/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/az/LC_MESSAGES/django.po
-django/contrib/redirects/locale/be/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/be/LC_MESSAGES/django.po
-django/contrib/redirects/locale/bg/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/bg/LC_MESSAGES/django.po
-django/contrib/redirects/locale/bn/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/bn/LC_MESSAGES/django.po
-django/contrib/redirects/locale/br/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/br/LC_MESSAGES/django.po
-django/contrib/redirects/locale/bs/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/bs/LC_MESSAGES/django.po
-django/contrib/redirects/locale/ca/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/ca/LC_MESSAGES/django.po
-django/contrib/redirects/locale/cs/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/cs/LC_MESSAGES/django.po
-django/contrib/redirects/locale/cy/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/cy/LC_MESSAGES/django.po
-django/contrib/redirects/locale/da/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/da/LC_MESSAGES/django.po
-django/contrib/redirects/locale/de/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/de/LC_MESSAGES/django.po
-django/contrib/redirects/locale/el/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/el/LC_MESSAGES/django.po
-django/contrib/redirects/locale/en/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/en/LC_MESSAGES/django.po
-django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.po
-django/contrib/redirects/locale/eo/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/eo/LC_MESSAGES/django.po
-django/contrib/redirects/locale/es/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/es/LC_MESSAGES/django.po
-django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.po
-django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.po
-django/contrib/redirects/locale/et/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/et/LC_MESSAGES/django.po
-django/contrib/redirects/locale/eu/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/eu/LC_MESSAGES/django.po
-django/contrib/redirects/locale/fa/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/fa/LC_MESSAGES/django.po
-django/contrib/redirects/locale/fi/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/fi/LC_MESSAGES/django.po
-django/contrib/redirects/locale/fr/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/fr/LC_MESSAGES/django.po
-django/contrib/redirects/locale/fy_NL/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/fy_NL/LC_MESSAGES/django.po
-django/contrib/redirects/locale/ga/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/ga/LC_MESSAGES/django.po
-django/contrib/redirects/locale/gl/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/gl/LC_MESSAGES/django.po
-django/contrib/redirects/locale/he/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/he/LC_MESSAGES/django.po
-django/contrib/redirects/locale/hi/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/hi/LC_MESSAGES/django.po
-django/contrib/redirects/locale/hr/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/hr/LC_MESSAGES/django.po
-django/contrib/redirects/locale/hu/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/hu/LC_MESSAGES/django.po
-django/contrib/redirects/locale/id/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/id/LC_MESSAGES/django.po
-django/contrib/redirects/locale/is/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/is/LC_MESSAGES/django.po
-django/contrib/redirects/locale/it/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/it/LC_MESSAGES/django.po
-django/contrib/redirects/locale/ja/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/ja/LC_MESSAGES/django.po
-django/contrib/redirects/locale/ka/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/ka/LC_MESSAGES/django.po
-django/contrib/redirects/locale/kk/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/kk/LC_MESSAGES/django.po
-django/contrib/redirects/locale/km/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/km/LC_MESSAGES/django.po
-django/contrib/redirects/locale/kn/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/kn/LC_MESSAGES/django.po
-django/contrib/redirects/locale/ko/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/ko/LC_MESSAGES/django.po
-django/contrib/redirects/locale/lt/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/lt/LC_MESSAGES/django.po
-django/contrib/redirects/locale/lv/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/lv/LC_MESSAGES/django.po
-django/contrib/redirects/locale/mk/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/mk/LC_MESSAGES/django.po
-django/contrib/redirects/locale/ml/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/ml/LC_MESSAGES/django.po
-django/contrib/redirects/locale/mn/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/mn/LC_MESSAGES/django.po
-django/contrib/redirects/locale/nb/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/nb/LC_MESSAGES/django.po
-django/contrib/redirects/locale/ne/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/ne/LC_MESSAGES/django.po
-django/contrib/redirects/locale/nl/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/nl/LC_MESSAGES/django.po
-django/contrib/redirects/locale/nn/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/nn/LC_MESSAGES/django.po
-django/contrib/redirects/locale/os/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/os/LC_MESSAGES/django.po
-django/contrib/redirects/locale/pa/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/pa/LC_MESSAGES/django.po
-django/contrib/redirects/locale/pl/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/pl/LC_MESSAGES/django.po
-django/contrib/redirects/locale/pt/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/pt/LC_MESSAGES/django.po
-django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.po
-django/contrib/redirects/locale/ro/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/ro/LC_MESSAGES/django.po
-django/contrib/redirects/locale/ru/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/ru/LC_MESSAGES/django.po
-django/contrib/redirects/locale/sk/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/sk/LC_MESSAGES/django.po
-django/contrib/redirects/locale/sl/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/sl/LC_MESSAGES/django.po
-django/contrib/redirects/locale/sq/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/sq/LC_MESSAGES/django.po
-django/contrib/redirects/locale/sr/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/sr/LC_MESSAGES/django.po
-django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.po
-django/contrib/redirects/locale/sv/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/sv/LC_MESSAGES/django.po
-django/contrib/redirects/locale/sw/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/sw/LC_MESSAGES/django.po
-django/contrib/redirects/locale/ta/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/ta/LC_MESSAGES/django.po
-django/contrib/redirects/locale/te/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/te/LC_MESSAGES/django.po
-django/contrib/redirects/locale/th/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/th/LC_MESSAGES/django.po
-django/contrib/redirects/locale/tr/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/tr/LC_MESSAGES/django.po
-django/contrib/redirects/locale/tt/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/tt/LC_MESSAGES/django.po
-django/contrib/redirects/locale/uk/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/uk/LC_MESSAGES/django.po
-django/contrib/redirects/locale/ur/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/ur/LC_MESSAGES/django.po
-django/contrib/redirects/locale/vi/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/vi/LC_MESSAGES/django.po
-django/contrib/redirects/locale/zh_CN/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/zh_CN/LC_MESSAGES/django.po
-django/contrib/redirects/locale/zh_TW/LC_MESSAGES/django.mo
-django/contrib/redirects/locale/zh_TW/LC_MESSAGES/django.po
-django/contrib/sessions/__init__.py
-django/contrib/sessions/exceptions.py
-django/contrib/sessions/middleware.py
-django/contrib/sessions/models.py
-django/contrib/sessions/serializers.py
-django/contrib/sessions/tests.py
-django/contrib/sessions/backends/__init__.py
-django/contrib/sessions/backends/base.py
-django/contrib/sessions/backends/cache.py
-django/contrib/sessions/backends/cached_db.py
-django/contrib/sessions/backends/db.py
-django/contrib/sessions/backends/file.py
-django/contrib/sessions/backends/signed_cookies.py
-django/contrib/sessions/locale/ar/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/ar/LC_MESSAGES/django.po
-django/contrib/sessions/locale/az/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/az/LC_MESSAGES/django.po
-django/contrib/sessions/locale/be/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/be/LC_MESSAGES/django.po
-django/contrib/sessions/locale/bg/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/bg/LC_MESSAGES/django.po
-django/contrib/sessions/locale/bn/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/bn/LC_MESSAGES/django.po
-django/contrib/sessions/locale/br/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/br/LC_MESSAGES/django.po
-django/contrib/sessions/locale/bs/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/bs/LC_MESSAGES/django.po
-django/contrib/sessions/locale/ca/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/ca/LC_MESSAGES/django.po
-django/contrib/sessions/locale/cs/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/cs/LC_MESSAGES/django.po
-django/contrib/sessions/locale/cy/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/cy/LC_MESSAGES/django.po
-django/contrib/sessions/locale/da/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/da/LC_MESSAGES/django.po
-django/contrib/sessions/locale/de/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/de/LC_MESSAGES/django.po
-django/contrib/sessions/locale/el/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/el/LC_MESSAGES/django.po
-django/contrib/sessions/locale/en/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/en/LC_MESSAGES/django.po
-django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.po
-django/contrib/sessions/locale/eo/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/eo/LC_MESSAGES/django.po
-django/contrib/sessions/locale/es/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/es/LC_MESSAGES/django.po
-django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.po
-django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.po
-django/contrib/sessions/locale/et/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/et/LC_MESSAGES/django.po
-django/contrib/sessions/locale/eu/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/eu/LC_MESSAGES/django.po
-django/contrib/sessions/locale/fa/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/fa/LC_MESSAGES/django.po
-django/contrib/sessions/locale/fi/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/fi/LC_MESSAGES/django.po
-django/contrib/sessions/locale/fr/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/fr/LC_MESSAGES/django.po
-django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.po
-django/contrib/sessions/locale/ga/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/ga/LC_MESSAGES/django.po
-django/contrib/sessions/locale/gl/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/gl/LC_MESSAGES/django.po
-django/contrib/sessions/locale/he/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/he/LC_MESSAGES/django.po
-django/contrib/sessions/locale/hi/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/hi/LC_MESSAGES/django.po
-django/contrib/sessions/locale/hr/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/hr/LC_MESSAGES/django.po
-django/contrib/sessions/locale/hu/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/hu/LC_MESSAGES/django.po
-django/contrib/sessions/locale/id/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/id/LC_MESSAGES/django.po
-django/contrib/sessions/locale/is/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/is/LC_MESSAGES/django.po
-django/contrib/sessions/locale/it/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/it/LC_MESSAGES/django.po
-django/contrib/sessions/locale/ja/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/ja/LC_MESSAGES/django.po
-django/contrib/sessions/locale/ka/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/ka/LC_MESSAGES/django.po
-django/contrib/sessions/locale/kk/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/kk/LC_MESSAGES/django.po
-django/contrib/sessions/locale/km/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/km/LC_MESSAGES/django.po
-django/contrib/sessions/locale/kn/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/kn/LC_MESSAGES/django.po
-django/contrib/sessions/locale/ko/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/ko/LC_MESSAGES/django.po
-django/contrib/sessions/locale/lt/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/lt/LC_MESSAGES/django.po
-django/contrib/sessions/locale/lv/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/lv/LC_MESSAGES/django.po
-django/contrib/sessions/locale/mk/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/mk/LC_MESSAGES/django.po
-django/contrib/sessions/locale/ml/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/ml/LC_MESSAGES/django.po
-django/contrib/sessions/locale/mn/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/mn/LC_MESSAGES/django.po
-django/contrib/sessions/locale/my/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/my/LC_MESSAGES/django.po
-django/contrib/sessions/locale/nb/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/nb/LC_MESSAGES/django.po
-django/contrib/sessions/locale/ne/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/ne/LC_MESSAGES/django.po
-django/contrib/sessions/locale/nl/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/nl/LC_MESSAGES/django.po
-django/contrib/sessions/locale/nn/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/nn/LC_MESSAGES/django.po
-django/contrib/sessions/locale/os/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/os/LC_MESSAGES/django.po
-django/contrib/sessions/locale/pa/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/pa/LC_MESSAGES/django.po
-django/contrib/sessions/locale/pl/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/pl/LC_MESSAGES/django.po
-django/contrib/sessions/locale/pt/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/pt/LC_MESSAGES/django.po
-django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.po
-django/contrib/sessions/locale/ro/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/ro/LC_MESSAGES/django.po
-django/contrib/sessions/locale/ru/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/ru/LC_MESSAGES/django.po
-django/contrib/sessions/locale/sk/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/sk/LC_MESSAGES/django.po
-django/contrib/sessions/locale/sl/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/sl/LC_MESSAGES/django.po
-django/contrib/sessions/locale/sq/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/sq/LC_MESSAGES/django.po
-django/contrib/sessions/locale/sr/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/sr/LC_MESSAGES/django.po
-django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.po
-django/contrib/sessions/locale/sv/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/sv/LC_MESSAGES/django.po
-django/contrib/sessions/locale/sw/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/sw/LC_MESSAGES/django.po
-django/contrib/sessions/locale/ta/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/ta/LC_MESSAGES/django.po
-django/contrib/sessions/locale/te/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/te/LC_MESSAGES/django.po
-django/contrib/sessions/locale/th/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/th/LC_MESSAGES/django.po
-django/contrib/sessions/locale/tr/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/tr/LC_MESSAGES/django.po
-django/contrib/sessions/locale/tt/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/tt/LC_MESSAGES/django.po
-django/contrib/sessions/locale/uk/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/uk/LC_MESSAGES/django.po
-django/contrib/sessions/locale/ur/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/ur/LC_MESSAGES/django.po
-django/contrib/sessions/locale/vi/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/vi/LC_MESSAGES/django.po
-django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.po
-django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.mo
-django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.po
-django/contrib/sessions/management/__init__.py
-django/contrib/sessions/management/commands/__init__.py
-django/contrib/sessions/management/commands/clearsessions.py
-django/contrib/sitemaps/__init__.py
-django/contrib/sitemaps/models.py
-django/contrib/sitemaps/views.py
-django/contrib/sitemaps/management/__init__.py
-django/contrib/sitemaps/management/commands/__init__.py
-django/contrib/sitemaps/management/commands/ping_google.py
-django/contrib/sitemaps/templates/sitemap.xml
-django/contrib/sitemaps/templates/sitemap_index.xml
-django/contrib/sitemaps/tests/__init__.py
-django/contrib/sitemaps/tests/base.py
-django/contrib/sitemaps/tests/test_flatpages.py
-django/contrib/sitemaps/tests/test_generic.py
-django/contrib/sitemaps/tests/test_http.py
-django/contrib/sitemaps/tests/test_https.py
-django/contrib/sitemaps/tests/templates/custom_sitemap.xml
-django/contrib/sitemaps/tests/templates/custom_sitemap_index.xml
-django/contrib/sitemaps/tests/urls/__init__.py
-django/contrib/sitemaps/tests/urls/http.py
-django/contrib/sitemaps/tests/urls/https.py
-django/contrib/sites/__init__.py
-django/contrib/sites/admin.py
-django/contrib/sites/management.py
-django/contrib/sites/managers.py
-django/contrib/sites/models.py
-django/contrib/sites/tests.py
-django/contrib/sites/locale/ar/LC_MESSAGES/django.mo
-django/contrib/sites/locale/ar/LC_MESSAGES/django.po
-django/contrib/sites/locale/az/LC_MESSAGES/django.mo
-django/contrib/sites/locale/az/LC_MESSAGES/django.po
-django/contrib/sites/locale/be/LC_MESSAGES/django.mo
-django/contrib/sites/locale/be/LC_MESSAGES/django.po
-django/contrib/sites/locale/bg/LC_MESSAGES/django.mo
-django/contrib/sites/locale/bg/LC_MESSAGES/django.po
-django/contrib/sites/locale/bn/LC_MESSAGES/django.mo
-django/contrib/sites/locale/bn/LC_MESSAGES/django.po
-django/contrib/sites/locale/br/LC_MESSAGES/django.mo
-django/contrib/sites/locale/br/LC_MESSAGES/django.po
-django/contrib/sites/locale/bs/LC_MESSAGES/django.mo
-django/contrib/sites/locale/bs/LC_MESSAGES/django.po
-django/contrib/sites/locale/ca/LC_MESSAGES/django.mo
-django/contrib/sites/locale/ca/LC_MESSAGES/django.po
-django/contrib/sites/locale/cs/LC_MESSAGES/django.mo
-django/contrib/sites/locale/cs/LC_MESSAGES/django.po
-django/contrib/sites/locale/cy/LC_MESSAGES/django.mo
-django/contrib/sites/locale/cy/LC_MESSAGES/django.po
-django/contrib/sites/locale/da/LC_MESSAGES/django.mo
-django/contrib/sites/locale/da/LC_MESSAGES/django.po
-django/contrib/sites/locale/de/LC_MESSAGES/django.mo
-django/contrib/sites/locale/de/LC_MESSAGES/django.po
-django/contrib/sites/locale/el/LC_MESSAGES/django.mo
-django/contrib/sites/locale/el/LC_MESSAGES/django.po
-django/contrib/sites/locale/en/LC_MESSAGES/django.mo
-django/contrib/sites/locale/en/LC_MESSAGES/django.po
-django/contrib/sites/locale/en_GB/LC_MESSAGES/django.mo
-django/contrib/sites/locale/en_GB/LC_MESSAGES/django.po
-django/contrib/sites/locale/eo/LC_MESSAGES/django.mo
-django/contrib/sites/locale/eo/LC_MESSAGES/django.po
-django/contrib/sites/locale/es/LC_MESSAGES/django.mo
-django/contrib/sites/locale/es/LC_MESSAGES/django.po
-django/contrib/sites/locale/es_AR/LC_MESSAGES/django.mo
-django/contrib/sites/locale/es_AR/LC_MESSAGES/django.po
-django/contrib/sites/locale/es_MX/LC_MESSAGES/django.mo
-django/contrib/sites/locale/es_MX/LC_MESSAGES/django.po
-django/contrib/sites/locale/et/LC_MESSAGES/django.mo
-django/contrib/sites/locale/et/LC_MESSAGES/django.po
-django/contrib/sites/locale/eu/LC_MESSAGES/django.mo
-django/contrib/sites/locale/eu/LC_MESSAGES/django.po
-django/contrib/sites/locale/fa/LC_MESSAGES/django.mo
-django/contrib/sites/locale/fa/LC_MESSAGES/django.po
-django/contrib/sites/locale/fi/LC_MESSAGES/django.mo
-django/contrib/sites/locale/fi/LC_MESSAGES/django.po
-django/contrib/sites/locale/fr/LC_MESSAGES/django.mo
-django/contrib/sites/locale/fr/LC_MESSAGES/django.po
-django/contrib/sites/locale/fy_NL/LC_MESSAGES/django.mo
-django/contrib/sites/locale/fy_NL/LC_MESSAGES/django.po
-django/contrib/sites/locale/ga/LC_MESSAGES/django.mo
-django/contrib/sites/locale/ga/LC_MESSAGES/django.po
-django/contrib/sites/locale/gl/LC_MESSAGES/django.mo
-django/contrib/sites/locale/gl/LC_MESSAGES/django.po
-django/contrib/sites/locale/he/LC_MESSAGES/django.mo
-django/contrib/sites/locale/he/LC_MESSAGES/django.po
-django/contrib/sites/locale/hi/LC_MESSAGES/django.mo
-django/contrib/sites/locale/hi/LC_MESSAGES/django.po
-django/contrib/sites/locale/hr/LC_MESSAGES/django.mo
-django/contrib/sites/locale/hr/LC_MESSAGES/django.po
-django/contrib/sites/locale/hu/LC_MESSAGES/django.mo
-django/contrib/sites/locale/hu/LC_MESSAGES/django.po
-django/contrib/sites/locale/id/LC_MESSAGES/django.mo
-django/contrib/sites/locale/id/LC_MESSAGES/django.po
-django/contrib/sites/locale/is/LC_MESSAGES/django.mo
-django/contrib/sites/locale/is/LC_MESSAGES/django.po
-django/contrib/sites/locale/it/LC_MESSAGES/django.mo
-django/contrib/sites/locale/it/LC_MESSAGES/django.po
-django/contrib/sites/locale/ja/LC_MESSAGES/django.mo
-django/contrib/sites/locale/ja/LC_MESSAGES/django.po
-django/contrib/sites/locale/ka/LC_MESSAGES/django.mo
-django/contrib/sites/locale/ka/LC_MESSAGES/django.po
-django/contrib/sites/locale/kk/LC_MESSAGES/django.mo
-django/contrib/sites/locale/kk/LC_MESSAGES/django.po
-django/contrib/sites/locale/km/LC_MESSAGES/django.mo
-django/contrib/sites/locale/km/LC_MESSAGES/django.po
-django/contrib/sites/locale/kn/LC_MESSAGES/django.mo
-django/contrib/sites/locale/kn/LC_MESSAGES/django.po
-django/contrib/sites/locale/ko/LC_MESSAGES/django.mo
-django/contrib/sites/locale/ko/LC_MESSAGES/django.po
-django/contrib/sites/locale/lt/LC_MESSAGES/django.mo
-django/contrib/sites/locale/lt/LC_MESSAGES/django.po
-django/contrib/sites/locale/lv/LC_MESSAGES/django.mo
-django/contrib/sites/locale/lv/LC_MESSAGES/django.po
-django/contrib/sites/locale/mk/LC_MESSAGES/django.mo
-django/contrib/sites/locale/mk/LC_MESSAGES/django.po
-django/contrib/sites/locale/ml/LC_MESSAGES/django.mo
-django/contrib/sites/locale/ml/LC_MESSAGES/django.po
-django/contrib/sites/locale/mn/LC_MESSAGES/django.mo
-django/contrib/sites/locale/mn/LC_MESSAGES/django.po
-django/contrib/sites/locale/my/LC_MESSAGES/django.mo
-django/contrib/sites/locale/my/LC_MESSAGES/django.po
-django/contrib/sites/locale/nb/LC_MESSAGES/django.mo
-django/contrib/sites/locale/nb/LC_MESSAGES/django.po
-django/contrib/sites/locale/ne/LC_MESSAGES/django.mo
-django/contrib/sites/locale/ne/LC_MESSAGES/django.po
-django/contrib/sites/locale/nl/LC_MESSAGES/django.mo
-django/contrib/sites/locale/nl/LC_MESSAGES/django.po
-django/contrib/sites/locale/nn/LC_MESSAGES/django.mo
-django/contrib/sites/locale/nn/LC_MESSAGES/django.po
-django/contrib/sites/locale/os/LC_MESSAGES/django.mo
-django/contrib/sites/locale/os/LC_MESSAGES/django.po
-django/contrib/sites/locale/pa/LC_MESSAGES/django.mo
-django/contrib/sites/locale/pa/LC_MESSAGES/django.po
-django/contrib/sites/locale/pl/LC_MESSAGES/django.mo
-django/contrib/sites/locale/pl/LC_MESSAGES/django.po
-django/contrib/sites/locale/pt/LC_MESSAGES/django.mo
-django/contrib/sites/locale/pt/LC_MESSAGES/django.po
-django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.mo
-django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.po
-django/contrib/sites/locale/ro/LC_MESSAGES/django.mo
-django/contrib/sites/locale/ro/LC_MESSAGES/django.po
-django/contrib/sites/locale/ru/LC_MESSAGES/django.mo
-django/contrib/sites/locale/ru/LC_MESSAGES/django.po
-django/contrib/sites/locale/sk/LC_MESSAGES/django.mo
-django/contrib/sites/locale/sk/LC_MESSAGES/django.po
-django/contrib/sites/locale/sl/LC_MESSAGES/django.mo
-django/contrib/sites/locale/sl/LC_MESSAGES/django.po
-django/contrib/sites/locale/sq/LC_MESSAGES/django.mo
-django/contrib/sites/locale/sq/LC_MESSAGES/django.po
-django/contrib/sites/locale/sr/LC_MESSAGES/django.mo
-django/contrib/sites/locale/sr/LC_MESSAGES/django.po
-django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.mo
-django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.po
-django/contrib/sites/locale/sv/LC_MESSAGES/django.mo
-django/contrib/sites/locale/sv/LC_MESSAGES/django.po
-django/contrib/sites/locale/sw/LC_MESSAGES/django.mo
-django/contrib/sites/locale/sw/LC_MESSAGES/django.po
-django/contrib/sites/locale/ta/LC_MESSAGES/django.mo
-django/contrib/sites/locale/ta/LC_MESSAGES/django.po
-django/contrib/sites/locale/te/LC_MESSAGES/django.mo
-django/contrib/sites/locale/te/LC_MESSAGES/django.po
-django/contrib/sites/locale/th/LC_MESSAGES/django.mo
-django/contrib/sites/locale/th/LC_MESSAGES/django.po
-django/contrib/sites/locale/tr/LC_MESSAGES/django.mo
-django/contrib/sites/locale/tr/LC_MESSAGES/django.po
-django/contrib/sites/locale/tt/LC_MESSAGES/django.mo
-django/contrib/sites/locale/tt/LC_MESSAGES/django.po
-django/contrib/sites/locale/uk/LC_MESSAGES/django.mo
-django/contrib/sites/locale/uk/LC_MESSAGES/django.po
-django/contrib/sites/locale/ur/LC_MESSAGES/django.mo
-django/contrib/sites/locale/ur/LC_MESSAGES/django.po
-django/contrib/sites/locale/vi/LC_MESSAGES/django.mo
-django/contrib/sites/locale/vi/LC_MESSAGES/django.po
-django/contrib/sites/locale/zh_CN/LC_MESSAGES/django.mo
-django/contrib/sites/locale/zh_CN/LC_MESSAGES/django.po
-django/contrib/sites/locale/zh_TW/LC_MESSAGES/django.mo
-django/contrib/sites/locale/zh_TW/LC_MESSAGES/django.po
-django/contrib/staticfiles/__init__.py
-django/contrib/staticfiles/finders.py
-django/contrib/staticfiles/handlers.py
-django/contrib/staticfiles/models.py
-django/contrib/staticfiles/storage.py
-django/contrib/staticfiles/urls.py
-django/contrib/staticfiles/utils.py
-django/contrib/staticfiles/views.py
-django/contrib/staticfiles/management/__init__.py
-django/contrib/staticfiles/management/commands/__init__.py
-django/contrib/staticfiles/management/commands/collectstatic.py
-django/contrib/staticfiles/management/commands/findstatic.py
-django/contrib/staticfiles/management/commands/runserver.py
-django/contrib/staticfiles/templatetags/__init__.py
-django/contrib/staticfiles/templatetags/staticfiles.py
-django/contrib/syndication/__init__.py
-django/contrib/syndication/views.py
-django/contrib/webdesign/__init__.py
-django/contrib/webdesign/lorem_ipsum.py
-django/contrib/webdesign/models.py
-django/contrib/webdesign/tests.py
-django/contrib/webdesign/templatetags/__init__.py
-django/contrib/webdesign/templatetags/webdesign.py
-django/core/__init__.py
-django/core/context_processors.py
-django/core/exceptions.py
-django/core/paginator.py
-django/core/signals.py
-django/core/signing.py
-django/core/urlresolvers.py
-django/core/validators.py
-django/core/wsgi.py
-django/core/cache/__init__.py
-django/core/cache/utils.py
-django/core/cache/backends/__init__.py
-django/core/cache/backends/base.py
-django/core/cache/backends/db.py
-django/core/cache/backends/dummy.py
-django/core/cache/backends/filebased.py
-django/core/cache/backends/locmem.py
-django/core/cache/backends/memcached.py
-django/core/checks/__init__.py
-django/core/checks/compatibility/__init__.py
-django/core/checks/compatibility/base.py
-django/core/checks/compatibility/django_1_6_0.py
-django/core/files/__init__.py
-django/core/files/base.py
-django/core/files/images.py
-django/core/files/locks.py
-django/core/files/move.py
-django/core/files/storage.py
-django/core/files/temp.py
-django/core/files/uploadedfile.py
-django/core/files/uploadhandler.py
-django/core/files/utils.py
-django/core/handlers/__init__.py
-django/core/handlers/base.py
-django/core/handlers/wsgi.py
-django/core/mail/__init__.py
-django/core/mail/message.py
-django/core/mail/utils.py
-django/core/mail/backends/__init__.py
-django/core/mail/backends/base.py
-django/core/mail/backends/console.py
-django/core/mail/backends/dummy.py
-django/core/mail/backends/filebased.py
-django/core/mail/backends/locmem.py
-django/core/mail/backends/smtp.py
-django/core/management/__init__.py
-django/core/management/base.py
-django/core/management/color.py
-django/core/management/sql.py
-django/core/management/templates.py
-django/core/management/utils.py
-django/core/management/validation.py
-django/core/management/commands/__init__.py
-django/core/management/commands/check.py
-django/core/management/commands/cleanup.py
-django/core/management/commands/compilemessages.py
-django/core/management/commands/createcachetable.py
-django/core/management/commands/dbshell.py
-django/core/management/commands/diffsettings.py
-django/core/management/commands/dumpdata.py
-django/core/management/commands/flush.py
-django/core/management/commands/inspectdb.py
-django/core/management/commands/loaddata.py
-django/core/management/commands/makemessages.py
-django/core/management/commands/runfcgi.py
-django/core/management/commands/runserver.py
-django/core/management/commands/shell.py
-django/core/management/commands/sql.py
-django/core/management/commands/sqlall.py
-django/core/management/commands/sqlclear.py
-django/core/management/commands/sqlcustom.py
-django/core/management/commands/sqldropindexes.py
-django/core/management/commands/sqlflush.py
-django/core/management/commands/sqlindexes.py
-django/core/management/commands/sqlinitialdata.py
-django/core/management/commands/sqlsequencereset.py
-django/core/management/commands/startapp.py
-django/core/management/commands/startproject.py
-django/core/management/commands/syncdb.py
-django/core/management/commands/test.py
-django/core/management/commands/testserver.py
-django/core/management/commands/validate.py
-django/core/serializers/__init__.py
-django/core/serializers/base.py
-django/core/serializers/json.py
-django/core/serializers/python.py
-django/core/serializers/pyyaml.py
-django/core/serializers/xml_serializer.py
-django/core/servers/__init__.py
-django/core/servers/basehttp.py
-django/core/servers/fastcgi.py
-django/db/__init__.py
-django/db/transaction.py
-django/db/utils.py
-django/db/backends/__init__.py
-django/db/backends/creation.py
-django/db/backends/signals.py
-django/db/backends/util.py
-django/db/backends/dummy/__init__.py
-django/db/backends/dummy/base.py
-django/db/backends/mysql/__init__.py
-django/db/backends/mysql/base.py
-django/db/backends/mysql/client.py
-django/db/backends/mysql/compiler.py
-django/db/backends/mysql/creation.py
-django/db/backends/mysql/introspection.py
-django/db/backends/mysql/validation.py
-django/db/backends/oracle/__init__.py
-django/db/backends/oracle/base.py
-django/db/backends/oracle/client.py
-django/db/backends/oracle/compiler.py
-django/db/backends/oracle/creation.py
-django/db/backends/oracle/introspection.py
-django/db/backends/postgresql_psycopg2/__init__.py
-django/db/backends/postgresql_psycopg2/base.py
-django/db/backends/postgresql_psycopg2/client.py
-django/db/backends/postgresql_psycopg2/creation.py
-django/db/backends/postgresql_psycopg2/introspection.py
-django/db/backends/postgresql_psycopg2/operations.py
-django/db/backends/postgresql_psycopg2/version.py
-django/db/backends/sqlite3/__init__.py
-django/db/backends/sqlite3/base.py
-django/db/backends/sqlite3/client.py
-django/db/backends/sqlite3/creation.py
-django/db/backends/sqlite3/introspection.py
-django/db/models/__init__.py
-django/db/models/aggregates.py
-django/db/models/base.py
-django/db/models/constants.py
-django/db/models/deletion.py
-django/db/models/expressions.py
-django/db/models/loading.py
-django/db/models/manager.py
-django/db/models/options.py
-django/db/models/query.py
-django/db/models/query_utils.py
-django/db/models/related.py
-django/db/models/signals.py
-django/db/models/fields/__init__.py
-django/db/models/fields/files.py
-django/db/models/fields/proxy.py
-django/db/models/fields/related.py
-django/db/models/fields/subclassing.py
-django/db/models/sql/__init__.py
-django/db/models/sql/aggregates.py
-django/db/models/sql/compiler.py
-django/db/models/sql/constants.py
-django/db/models/sql/datastructures.py
-django/db/models/sql/expressions.py
-django/db/models/sql/query.py
-django/db/models/sql/subqueries.py
-django/db/models/sql/where.py
-django/dispatch/__init__.py
-django/dispatch/dispatcher.py
-django/dispatch/license.txt
-django/dispatch/saferef.py
-django/forms/__init__.py
-django/forms/fields.py
-django/forms/forms.py
-django/forms/formsets.py
-django/forms/models.py
-django/forms/util.py
-django/forms/widgets.py
-django/forms/extras/__init__.py
-django/forms/extras/widgets.py
-django/http/__init__.py
-django/http/cookie.py
-django/http/multipartparser.py
-django/http/request.py
-django/http/response.py
-django/http/utils.py
-django/middleware/__init__.py
-django/middleware/cache.py
-django/middleware/clickjacking.py
-django/middleware/common.py
-django/middleware/csrf.py
-django/middleware/doc.py
-django/middleware/gzip.py
-django/middleware/http.py
-django/middleware/locale.py
-django/middleware/transaction.py
-django/shortcuts/__init__.py
-django/template/__init__.py
-django/template/base.py
-django/template/context.py
-django/template/debug.py
-django/template/defaultfilters.py
-django/template/defaulttags.py
-django/template/loader.py
-django/template/loader_tags.py
-django/template/response.py
-django/template/smartif.py
-django/template/loaders/__init__.py
-django/template/loaders/app_directories.py
-django/template/loaders/cached.py
-django/template/loaders/eggs.py
-django/template/loaders/filesystem.py
-django/templatetags/__init__.py
-django/templatetags/cache.py
-django/templatetags/future.py
-django/templatetags/i18n.py
-django/templatetags/l10n.py
-django/templatetags/static.py
-django/templatetags/tz.py
-django/test/__init__.py
-django/test/_doctest.py
-django/test/client.py
-django/test/html.py
-django/test/runner.py
-django/test/signals.py
-django/test/simple.py
-django/test/testcases.py
-django/test/utils.py
-django/utils/__init__.py
-django/utils/_os.py
-django/utils/archive.py
-django/utils/autoreload.py
-django/utils/baseconv.py
-django/utils/cache.py
-django/utils/checksums.py
-django/utils/crypto.py
-django/utils/daemonize.py
-django/utils/datastructures.py
-django/utils/dateformat.py
-django/utils/dateparse.py
-django/utils/dates.py
-django/utils/datetime_safe.py
-django/utils/decorators.py
-django/utils/deprecation.py
-django/utils/dictconfig.py
-django/utils/encoding.py
-django/utils/feedgenerator.py
-django/utils/formats.py
-django/utils/functional.py
-django/utils/html.py
-django/utils/html_parser.py
-django/utils/http.py
-django/utils/image.py
-django/utils/importlib.py
-django/utils/ipv6.py
-django/utils/itercompat.py
-django/utils/jslex.py
-django/utils/log.py
-django/utils/module_loading.py
-django/utils/numberformat.py
-django/utils/regex_helper.py
-django/utils/safestring.py
-django/utils/simplejson.py
-django/utils/six.py
-django/utils/synch.py
-django/utils/termcolors.py
-django/utils/text.py
-django/utils/timesince.py
-django/utils/timezone.py
-django/utils/tree.py
-django/utils/tzinfo.py
-django/utils/version.py
-django/utils/xmlutils.py
-django/utils/2to3_fixes/__init__.py
-django/utils/2to3_fixes/fix_unicode.py
-django/utils/translation/__init__.py
-django/utils/translation/trans_null.py
-django/utils/translation/trans_real.py
-django/utils/unittest/__init__.py
-django/utils/unittest/__main__.py
-django/utils/unittest/case.py
-django/utils/unittest/collector.py
-django/utils/unittest/compatibility.py
-django/utils/unittest/loader.py
-django/utils/unittest/main.py
-django/utils/unittest/result.py
-django/utils/unittest/runner.py
-django/utils/unittest/signals.py
-django/utils/unittest/suite.py
-django/utils/unittest/util.py
-django/views/__init__.py
-django/views/csrf.py
-django/views/debug.py
-django/views/defaults.py
-django/views/i18n.py
-django/views/static.py
-django/views/decorators/__init__.py
-django/views/decorators/cache.py
-django/views/decorators/clickjacking.py
-django/views/decorators/csrf.py
-django/views/decorators/debug.py
-django/views/decorators/gzip.py
-django/views/decorators/http.py
-django/views/decorators/vary.py
-django/views/generic/__init__.py
-django/views/generic/base.py
-django/views/generic/dates.py
-django/views/generic/detail.py
-django/views/generic/edit.py
-django/views/generic/list.py
-docs/Makefile
-docs/README
-docs/conf.py
-docs/contents.txt
-docs/glossary.txt
-docs/index.txt
-docs/make.bat
-docs/_ext/applyxrefs.py
-docs/_ext/djangodocs.py
-docs/_ext/literals_to_xrefs.py
-docs/_theme/djangodocs/genindex.html
-docs/_theme/djangodocs/layout.html
-docs/_theme/djangodocs/modindex.html
-docs/_theme/djangodocs/search.html
-docs/_theme/djangodocs/theme.conf
-docs/_theme/djangodocs/static/default.css
-docs/_theme/djangodocs/static/djangodocs.css
-docs/_theme/djangodocs/static/docicons-behindscenes.png
-docs/_theme/djangodocs/static/docicons-note.png
-docs/_theme/djangodocs/static/docicons-philosophy.png
-docs/_theme/djangodocs/static/docicons-warning.png
-docs/_theme/djangodocs/static/homepage.css
-docs/_theme/djangodocs/static/reset-fonts-grids.css
-docs/faq/admin.txt
-docs/faq/contributing.txt
-docs/faq/general.txt
-docs/faq/help.txt
-docs/faq/index.txt
-docs/faq/install.txt
-docs/faq/models.txt
-docs/faq/troubleshooting.txt
-docs/faq/usage.txt
-docs/howto/auth-remote-user.txt
-docs/howto/custom-file-storage.txt
-docs/howto/custom-management-commands.txt
-docs/howto/custom-model-fields.txt
-docs/howto/custom-template-tags.txt
-docs/howto/error-reporting.txt
-docs/howto/index.txt
-docs/howto/initial-data.txt
-docs/howto/jython.txt
-docs/howto/legacy-databases.txt
-docs/howto/outputting-csv.txt
-docs/howto/outputting-pdf.txt
-docs/howto/upgrade-version.txt
-docs/howto/windows.txt
-docs/howto/deployment/checklist.txt
-docs/howto/deployment/fastcgi.txt
-docs/howto/deployment/index.txt
-docs/howto/deployment/wsgi/apache-auth.txt
-docs/howto/deployment/wsgi/gunicorn.txt
-docs/howto/deployment/wsgi/index.txt
-docs/howto/deployment/wsgi/modwsgi.txt
-docs/howto/deployment/wsgi/uwsgi.txt
-docs/howto/static-files/deployment.txt
-docs/howto/static-files/index.txt
-docs/internals/committers.txt
-docs/internals/deprecation.txt
-docs/internals/git.txt
-docs/internals/howto-release-django.txt
-docs/internals/index.txt
-docs/internals/mailing-lists.txt
-docs/internals/release-process.txt
-docs/internals/security.txt
-docs/internals/_images/triage_process.graffle
-docs/internals/_images/triage_process.pdf
-docs/internals/_images/triage_process.svg
-docs/internals/contributing/bugs-and-features.txt
-docs/internals/contributing/committing-code.txt
-docs/internals/contributing/index.txt
-docs/internals/contributing/localizing.txt
-docs/internals/contributing/new-contributors.txt
-docs/internals/contributing/triaging-tickets.txt
-docs/internals/contributing/writing-documentation.txt
-docs/internals/contributing/writing-code/coding-style.txt
-docs/internals/contributing/writing-code/index.txt
-docs/internals/contributing/writing-code/submitting-patches.txt
-docs/internals/contributing/writing-code/unit-tests.txt
-docs/internals/contributing/writing-code/working-with-git.txt
-docs/intro/contributing.txt
-docs/intro/index.txt
-docs/intro/install.txt
-docs/intro/overview.txt
-docs/intro/reusable-apps.txt
-docs/intro/tutorial01.txt
-docs/intro/tutorial02.txt
-docs/intro/tutorial03.txt
-docs/intro/tutorial04.txt
-docs/intro/tutorial05.txt
-docs/intro/tutorial06.txt
-docs/intro/whatsnext.txt
-docs/intro/_images/admin01.png
-docs/intro/_images/admin02.png
-docs/intro/_images/admin02t.png
-docs/intro/_images/admin03.png
-docs/intro/_images/admin03t.png
-docs/intro/_images/admin04.png
-docs/intro/_images/admin04t.png
-docs/intro/_images/admin05.png
-docs/intro/_images/admin05t.png
-docs/intro/_images/admin06.png
-docs/intro/_images/admin06t.png
-docs/intro/_images/admin07.png
-docs/intro/_images/admin08.png
-docs/intro/_images/admin08t.png
-docs/intro/_images/admin09.png
-docs/intro/_images/admin10.png
-docs/intro/_images/admin11.png
-docs/intro/_images/admin11t.png
-docs/intro/_images/admin12.png
-docs/intro/_images/admin12t.png
-docs/intro/_images/admin13.png
-docs/intro/_images/admin13t.png
-docs/intro/_images/admin14.png
-docs/intro/_images/admin14t.png
-docs/intro/_images/admin15t.png
-docs/man/daily_cleanup.1
-docs/man/django-admin.1
-docs/man/gather_profile_stats.1
-docs/misc/api-stability.txt
-docs/misc/design-philosophies.txt
-docs/misc/distributions.txt
-docs/misc/index.txt
-docs/ref/clickjacking.txt
-docs/ref/databases.txt
-docs/ref/django-admin.txt
-docs/ref/exceptions.txt
-docs/ref/index.txt
-docs/ref/middleware.txt
-docs/ref/request-response.txt
-docs/ref/settings.txt
-docs/ref/signals.txt
-docs/ref/template-response.txt
-docs/ref/unicode.txt
-docs/ref/urlresolvers.txt
-docs/ref/urls.txt
-docs/ref/utils.txt
-docs/ref/validators.txt
-docs/ref/views.txt
-docs/ref/class-based-views/base.txt
-docs/ref/class-based-views/flattened-index.txt
-docs/ref/class-based-views/generic-date-based.txt
-docs/ref/class-based-views/generic-display.txt
-docs/ref/class-based-views/generic-editing.txt
-docs/ref/class-based-views/index.txt
-docs/ref/class-based-views/mixins-date-based.txt
-docs/ref/class-based-views/mixins-editing.txt
-docs/ref/class-based-views/mixins-multiple-object.txt
-docs/ref/class-based-views/mixins-simple.txt
-docs/ref/class-based-views/mixins-single-object.txt
-docs/ref/class-based-views/mixins.txt
-docs/ref/contrib/auth.txt
-docs/ref/contrib/contenttypes.txt
-docs/ref/contrib/csrf.txt
-docs/ref/contrib/flatpages.txt
-docs/ref/contrib/humanize.txt
-docs/ref/contrib/index.txt
-docs/ref/contrib/messages.txt
-docs/ref/contrib/redirects.txt
-docs/ref/contrib/sitemaps.txt
-docs/ref/contrib/sites.txt
-docs/ref/contrib/staticfiles.txt
-docs/ref/contrib/syndication.txt
-docs/ref/contrib/webdesign.txt
-docs/ref/contrib/admin/actions.txt
-docs/ref/contrib/admin/admindocs.txt
-docs/ref/contrib/admin/index.txt
-docs/ref/contrib/admin/_images/article_actions.png
-docs/ref/contrib/admin/_images/article_actions_message.png
-docs/ref/contrib/admin/_images/flatfiles_admin.png
-docs/ref/contrib/admin/_images/raw_id_fields.png
-docs/ref/contrib/admin/_images/user_actions.png
-docs/ref/contrib/admin/_images/users_changelist.png
-docs/ref/contrib/comments/custom.txt
-docs/ref/contrib/comments/example.txt
-docs/ref/contrib/comments/forms.txt
-docs/ref/contrib/comments/index.txt
-docs/ref/contrib/comments/models.txt
-docs/ref/contrib/comments/moderation.txt
-docs/ref/contrib/comments/signals.txt
-docs/ref/contrib/formtools/form-preview.txt
-docs/ref/contrib/formtools/form-wizard.txt
-docs/ref/contrib/formtools/index.txt
-docs/ref/contrib/gis/admin.txt
-docs/ref/contrib/gis/commands.txt
-docs/ref/contrib/gis/db-api.txt
-docs/ref/contrib/gis/deployment.txt
-docs/ref/contrib/gis/feeds.txt
-docs/ref/contrib/gis/forms-api.txt
-docs/ref/contrib/gis/gdal.txt
-docs/ref/contrib/gis/geoip.txt
-docs/ref/contrib/gis/geoquerysets.txt
-docs/ref/contrib/gis/geos.txt
-docs/ref/contrib/gis/index.txt
-docs/ref/contrib/gis/layermapping.txt
-docs/ref/contrib/gis/measure.txt
-docs/ref/contrib/gis/model-api.txt
-docs/ref/contrib/gis/ogrinspect.txt
-docs/ref/contrib/gis/sitemaps.txt
-docs/ref/contrib/gis/testing.txt
-docs/ref/contrib/gis/tutorial.txt
-docs/ref/contrib/gis/utils.txt
-docs/ref/contrib/gis/install/create_template_postgis-1.3.sh
-docs/ref/contrib/gis/install/create_template_postgis-1.4.sh
-docs/ref/contrib/gis/install/create_template_postgis-1.5.sh
-docs/ref/contrib/gis/install/create_template_postgis-debian.sh
-docs/ref/contrib/gis/install/geodjango_setup.bat
-docs/ref/contrib/gis/install/geolibs.txt
-docs/ref/contrib/gis/install/index.txt
-docs/ref/contrib/gis/install/postgis.txt
-docs/ref/contrib/gis/install/spatialite.txt
-docs/ref/files/file.txt
-docs/ref/files/index.txt
-docs/ref/files/storage.txt
-docs/ref/forms/api.txt
-docs/ref/forms/fields.txt
-docs/ref/forms/formsets.txt
-docs/ref/forms/index.txt
-docs/ref/forms/models.txt
-docs/ref/forms/validation.txt
-docs/ref/forms/widgets.txt
-docs/ref/models/fields.txt
-docs/ref/models/index.txt
-docs/ref/models/instances.txt
-docs/ref/models/options.txt
-docs/ref/models/querysets.txt
-docs/ref/models/relations.txt
-docs/ref/templates/api.txt
-docs/ref/templates/builtins.txt
-docs/ref/templates/index.txt
-docs/releases/0.95.txt
-docs/releases/0.96.txt
-docs/releases/1.0-alpha-1.txt
-docs/releases/1.0-alpha-2.txt
-docs/releases/1.0-beta-2.txt
-docs/releases/1.0-beta.txt
-docs/releases/1.0-porting-guide.txt
-docs/releases/1.0.1.txt
-docs/releases/1.0.2.txt
-docs/releases/1.0.txt
-docs/releases/1.1-alpha-1.txt
-docs/releases/1.1-beta-1.txt
-docs/releases/1.1-rc-1.txt
-docs/releases/1.1.2.txt
-docs/releases/1.1.3.txt
-docs/releases/1.1.4.txt
-docs/releases/1.1.txt
-docs/releases/1.2-alpha-1.txt
-docs/releases/1.2-beta-1.txt
-docs/releases/1.2-rc-1.txt
-docs/releases/1.2.1.txt
-docs/releases/1.2.2.txt
-docs/releases/1.2.3.txt
-docs/releases/1.2.4.txt
-docs/releases/1.2.5.txt
-docs/releases/1.2.6.txt
-docs/releases/1.2.7.txt
-docs/releases/1.2.txt
-docs/releases/1.3-alpha-1.txt
-docs/releases/1.3-beta-1.txt
-docs/releases/1.3.1.txt
-docs/releases/1.3.2.txt
-docs/releases/1.3.3.txt
-docs/releases/1.3.4.txt
-docs/releases/1.3.5.txt
-docs/releases/1.3.6.txt
-docs/releases/1.3.7.txt
-docs/releases/1.3.txt
-docs/releases/1.4-alpha-1.txt
-docs/releases/1.4-beta-1.txt
-docs/releases/1.4.1.txt
-docs/releases/1.4.10.txt
-docs/releases/1.4.11.txt
-docs/releases/1.4.2.txt
-docs/releases/1.4.3.txt
-docs/releases/1.4.4.txt
-docs/releases/1.4.5.txt
-docs/releases/1.4.6.txt
-docs/releases/1.4.7.txt
-docs/releases/1.4.8.txt
-docs/releases/1.4.9.txt
-docs/releases/1.4.txt
-docs/releases/1.5-alpha-1.txt
-docs/releases/1.5-beta-1.txt
-docs/releases/1.5.1.txt
-docs/releases/1.5.2.txt
-docs/releases/1.5.3.txt
-docs/releases/1.5.4.txt
-docs/releases/1.5.5.txt
-docs/releases/1.5.6.txt
-docs/releases/1.5.txt
-docs/releases/1.6.1.txt
-docs/releases/1.6.2.txt
-docs/releases/1.6.3.txt
-docs/releases/1.6.txt
-docs/releases/index.txt
-docs/releases/security.txt
-docs/topics/cache.txt
-docs/topics/conditional-view-processing.txt
-docs/topics/email.txt
-docs/topics/files.txt
-docs/topics/index.txt
-docs/topics/install.txt
-docs/topics/localflavor.txt
-docs/topics/logging.txt
-docs/topics/pagination.txt
-docs/topics/python3.txt
-docs/topics/security.txt
-docs/topics/serialization.txt
-docs/topics/settings.txt
-docs/topics/signals.txt
-docs/topics/signing.txt
-docs/topics/templates.txt
-docs/topics/auth/customizing.txt
-docs/topics/auth/default.txt
-docs/topics/auth/index.txt
-docs/topics/auth/passwords.txt
-docs/topics/class-based-views/generic-display.txt
-docs/topics/class-based-views/generic-editing.txt
-docs/topics/class-based-views/index.txt
-docs/topics/class-based-views/intro.txt
-docs/topics/class-based-views/mixins.txt
-docs/topics/db/aggregation.txt
-docs/topics/db/index.txt
-docs/topics/db/managers.txt
-docs/topics/db/models.txt
-docs/topics/db/multi-db.txt
-docs/topics/db/optimization.txt
-docs/topics/db/queries.txt
-docs/topics/db/sql.txt
-docs/topics/db/tablespaces.txt
-docs/topics/db/transactions.txt
-docs/topics/db/examples/index.txt
-docs/topics/db/examples/many_to_many.txt
-docs/topics/db/examples/many_to_one.txt
-docs/topics/db/examples/one_to_one.txt
-docs/topics/forms/formsets.txt
-docs/topics/forms/index.txt
-docs/topics/forms/media.txt
-docs/topics/forms/modelforms.txt
-docs/topics/http/decorators.txt
-docs/topics/http/file-uploads.txt
-docs/topics/http/generic-views.txt
-docs/topics/http/index.txt
-docs/topics/http/middleware.txt
-docs/topics/http/sessions.txt
-docs/topics/http/shortcuts.txt
-docs/topics/http/urls.txt
-docs/topics/http/views.txt
-docs/topics/http/_images/middleware.graffle
-docs/topics/http/_images/middleware.pdf
-docs/topics/http/_images/middleware.svg
-docs/topics/i18n/formatting.txt
-docs/topics/i18n/index.txt
-docs/topics/i18n/timezones.txt
-docs/topics/i18n/translation.txt
-docs/topics/testing/advanced.txt
-docs/topics/testing/index.txt
-docs/topics/testing/overview.txt
-docs/topics/testing/tools.txt
-docs/topics/testing/_images/django_unittest_classes_hierarchy.graffle
-docs/topics/testing/_images/django_unittest_classes_hierarchy.pdf
-docs/topics/testing/_images/django_unittest_classes_hierarchy.svg
-extras/Makefile
-extras/README.TXT
-extras/csrf_migration_helper.py
-extras/django_bash_completion
-scripts/manage_translations.py
-scripts/rpm-install.sh
-tests/.coveragerc
-tests/runtests.py
-tests/test_sqlite.py
-tests/urls.py
-tests/admin_changelist/__init__.py
-tests/admin_changelist/admin.py
-tests/admin_changelist/models.py
-tests/admin_changelist/tests.py
-tests/admin_changelist/urls.py
-tests/admin_custom_urls/__init__.py
-tests/admin_custom_urls/models.py
-tests/admin_custom_urls/tests.py
-tests/admin_custom_urls/urls.py
-tests/admin_custom_urls/fixtures/actions.json
-tests/admin_custom_urls/fixtures/users.json
-tests/admin_docs/__init__.py
-tests/admin_docs/models.py
-tests/admin_docs/tests.py
-tests/admin_docs/urls.py
-tests/admin_docs/views.py
-tests/admin_docs/fixtures/data.xml
-tests/admin_filters/__init__.py
-tests/admin_filters/models.py
-tests/admin_filters/tests.py
-tests/admin_inlines/__init__.py
-tests/admin_inlines/admin.py
-tests/admin_inlines/models.py
-tests/admin_inlines/tests.py
-tests/admin_inlines/urls.py
-tests/admin_inlines/fixtures/admin-views-users.xml
-tests/admin_ordering/__init__.py
-tests/admin_ordering/models.py
-tests/admin_ordering/tests.py
-tests/admin_registration/__init__.py
-tests/admin_registration/models.py
-tests/admin_registration/tests.py
-tests/admin_scripts/__init__.py
-tests/admin_scripts/models.py
-tests/admin_scripts/tests.py
-tests/admin_scripts/urls.py
-tests/admin_scripts/app_with_import/__init__.py
-tests/admin_scripts/app_with_import/models.py
-tests/admin_scripts/broken_app/__init__.py
-tests/admin_scripts/broken_app/models.py
-tests/admin_scripts/complex_app/__init__.py
-tests/admin_scripts/complex_app/admin/__init__.py
-tests/admin_scripts/complex_app/admin/foo.py
-tests/admin_scripts/complex_app/models/__init__.py
-tests/admin_scripts/complex_app/models/bar.py
-tests/admin_scripts/complex_app/models/foo.py
-tests/admin_scripts/custom_templates/project_template.tgz
-tests/admin_scripts/custom_templates/app_template/__init__.py
-tests/admin_scripts/custom_templates/app_template/api.py
-tests/admin_scripts/custom_templates/app_template/models.py
-tests/admin_scripts/custom_templates/project_template/manage.py
-tests/admin_scripts/custom_templates/project_template/ticket-18091-non-ascii-template.txt
-tests/admin_scripts/custom_templates/project_template/ticket-19397-binary-file.ico
-tests/admin_scripts/custom_templates/project_template/additional_dir/Procfile
-tests/admin_scripts/custom_templates/project_template/additional_dir/additional_file.py
-tests/admin_scripts/custom_templates/project_template/additional_dir/extra.py
-tests/admin_scripts/custom_templates/project_template/additional_dir/requirements.txt
-tests/admin_scripts/custom_templates/project_template/project_name/__init__.py
-tests/admin_scripts/custom_templates/project_template/project_name/settings.py
-tests/admin_scripts/management/__init__.py
-tests/admin_scripts/management/commands/__init__.py
-tests/admin_scripts/management/commands/app_command.py
-tests/admin_scripts/management/commands/base_command.py
-tests/admin_scripts/management/commands/custom_startproject.py
-tests/admin_scripts/management/commands/label_command.py
-tests/admin_scripts/management/commands/noargs_command.py
-tests/admin_scripts/simple_app/__init__.py
-tests/admin_scripts/simple_app/models.py
-tests/admin_util/__init__.py
-tests/admin_util/models.py
-tests/admin_util/tests.py
-tests/admin_validation/__init__.py
-tests/admin_validation/models.py
-tests/admin_validation/tests.py
-tests/admin_views/__init__.py
-tests/admin_views/admin.py
-tests/admin_views/customadmin.py
-tests/admin_views/forms.py
-tests/admin_views/models.py
-tests/admin_views/tests.py
-tests/admin_views/urls.py
-tests/admin_views/views.py
-tests/admin_views/fixtures/admin-views-actions.xml
-tests/admin_views/fixtures/admin-views-books.xml
-tests/admin_views/fixtures/admin-views-colors.xml
-tests/admin_views/fixtures/admin-views-fabrics.xml
-tests/admin_views/fixtures/admin-views-person.xml
-tests/admin_views/fixtures/admin-views-unicode.xml
-tests/admin_views/fixtures/admin-views-users.xml
-tests/admin_views/fixtures/deleted-objects.xml
-tests/admin_views/fixtures/multiple-child-classes.json
-tests/admin_views/fixtures/string-primary-key.xml
-tests/admin_views/templates/custom_filter_template.html
-tests/admin_widgets/__init__.py
-tests/admin_widgets/models.py
-tests/admin_widgets/tests.py
-tests/admin_widgets/urls.py
-tests/admin_widgets/widgetadmin.py
-tests/admin_widgets/fixtures/admin-widgets-users.xml
-tests/aggregation/__init__.py
-tests/aggregation/models.py
-tests/aggregation/tests.py
-tests/aggregation/fixtures/aggregation.json
-tests/aggregation_regress/__init__.py
-tests/aggregation_regress/models.py
-tests/aggregation_regress/tests.py
-tests/aggregation_regress/fixtures/aggregation_regress.json
-tests/app_loading/__init__.py
-tests/app_loading/models.py
-tests/app_loading/tests.py
-tests/app_loading/eggs/brokenapp.egg
-tests/app_loading/eggs/modelapp.egg
-tests/app_loading/eggs/nomodelapp.egg
-tests/app_loading/eggs/omelet.egg
-tests/app_loading/not_installed/__init__.py
-tests/app_loading/not_installed/models.py
-tests/backends/__init__.py
-tests/backends/models.py
-tests/backends/tests.py
-tests/base/__init__.py
-tests/base/models.py
-tests/bash_completion/__init__.py
-tests/bash_completion/models.py
-tests/bash_completion/tests.py
-tests/bash_completion/management/__init__.py
-tests/bash_completion/management/commands/__init__.py
-tests/bash_completion/management/commands/test_command.py
-tests/basic/__init__.py
-tests/basic/models.py
-tests/basic/tests.py
-tests/bug639/__init__.py
-tests/bug639/models.py
-tests/bug639/test.jpg
-tests/bug639/tests.py
-tests/bug8245/__init__.py
-tests/bug8245/admin.py
-tests/bug8245/models.py
-tests/bug8245/tests.py
-tests/builtin_server/__init__.py
-tests/builtin_server/models.py
-tests/builtin_server/tests.py
-tests/bulk_create/__init__.py
-tests/bulk_create/models.py
-tests/bulk_create/tests.py
-tests/cache/__init__.py
-tests/cache/closeable_cache.py
-tests/cache/liberal_backend.py
-tests/cache/models.py
-tests/cache/tests.py
-tests/check/__init__.py
-tests/check/models.py
-tests/check/tests.py
-tests/choices/__init__.py
-tests/choices/models.py
-tests/choices/tests.py
-tests/commands_sql/__init__.py
-tests/commands_sql/models.py
-tests/commands_sql/tests.py
-tests/comment_tests/__init__.py
-tests/comment_tests/models.py
-tests/comment_tests/urls.py
-tests/comment_tests/urls_admin.py
-tests/comment_tests/urls_default.py
-tests/comment_tests/custom_comments/__init__.py
-tests/comment_tests/custom_comments/forms.py
-tests/comment_tests/custom_comments/models.py
-tests/comment_tests/custom_comments/views.py
-tests/comment_tests/fixtures/comment_tests.json
-tests/comment_tests/fixtures/comment_utils.xml
-tests/comment_tests/tests/__init__.py
-tests/comment_tests/tests/test_app_api.py
-tests/comment_tests/tests/test_comment_form.py
-tests/comment_tests/tests/test_comment_utils_moderators.py
-tests/comment_tests/tests/test_comment_view.py
-tests/comment_tests/tests/test_feeds.py
-tests/comment_tests/tests/test_models.py
-tests/comment_tests/tests/test_moderation_views.py
-tests/comment_tests/tests/test_templatetags.py
-tests/conditional_processing/__init__.py
-tests/conditional_processing/models.py
-tests/conditional_processing/tests.py
-tests/conditional_processing/urls.py
-tests/conditional_processing/views.py
-tests/contenttypes_tests/__init__.py
-tests/contenttypes_tests/models.py
-tests/contenttypes_tests/tests.py
-tests/contenttypes_tests/urls.py
-tests/contenttypes_tests/fixtures/testdata.json
-tests/context_processors/__init__.py
-tests/context_processors/models.py
-tests/context_processors/tests.py
-tests/context_processors/urls.py
-tests/context_processors/views.py
-tests/context_processors/templates/context_processors/request_attrs.html
-tests/createsuperuser/__init__.py
-tests/createsuperuser/models.py
-tests/createsuperuser/tests.py
-tests/csrf_tests/__init__.py
-tests/csrf_tests/models.py
-tests/csrf_tests/tests.py
-tests/custom_columns/__init__.py
-tests/custom_columns/models.py
-tests/custom_columns/tests.py
-tests/custom_columns_regress/__init__.py
-tests/custom_columns_regress/models.py
-tests/custom_columns_regress/tests.py
-tests/custom_managers/__init__.py
-tests/custom_managers/models.py
-tests/custom_managers/tests.py
-tests/custom_managers_regress/__init__.py
-tests/custom_managers_regress/models.py
-tests/custom_managers_regress/tests.py
-tests/custom_methods/__init__.py
-tests/custom_methods/models.py
-tests/custom_methods/tests.py
-tests/custom_pk/__init__.py
-tests/custom_pk/fields.py
-tests/custom_pk/models.py
-tests/custom_pk/tests.py
-tests/datatypes/__init__.py
-tests/datatypes/models.py
-tests/datatypes/tests.py
-tests/dates/__init__.py
-tests/dates/models.py
-tests/dates/tests.py
-tests/datetimes/__init__.py
-tests/datetimes/models.py
-tests/datetimes/tests.py
-tests/db_typecasts/__init__.py
-tests/db_typecasts/models.py
-tests/db_typecasts/tests.py
-tests/decorators/__init__.py
-tests/decorators/models.py
-tests/decorators/tests.py
-tests/defaultfilters/__init__.py
-tests/defaultfilters/models.py
-tests/defaultfilters/tests.py
-tests/defer/__init__.py
-tests/defer/models.py
-tests/defer/tests.py
-tests/defer_regress/__init__.py
-tests/defer_regress/models.py
-tests/defer_regress/tests.py
-tests/delete/__init__.py
-tests/delete/models.py
-tests/delete/tests.py
-tests/delete_regress/__init__.py
-tests/delete_regress/models.py
-tests/delete_regress/tests.py
-tests/deprecation/__init__.py
-tests/deprecation/models.py
-tests/deprecation/tests.py
-tests/dispatch/__init__.py
-tests/dispatch/models.py
-tests/dispatch/tests/__init__.py
-tests/dispatch/tests/test_dispatcher.py
-tests/dispatch/tests/test_saferef.py
-tests/distinct_on_fields/__init__.py
-tests/distinct_on_fields/models.py
-tests/distinct_on_fields/tests.py
-tests/empty/__init__.py
-tests/empty/models.py
-tests/empty/tests.py
-tests/empty/no_models/__init__.py
-tests/empty/no_models/tests.py
-tests/expressions/__init__.py
-tests/expressions/models.py
-tests/expressions/tests.py
-tests/expressions_regress/__init__.py
-tests/expressions_regress/models.py
-tests/expressions_regress/tests.py
-tests/extra_regress/__init__.py
-tests/extra_regress/models.py
-tests/extra_regress/tests.py
-tests/field_defaults/__init__.py
-tests/field_defaults/models.py
-tests/field_defaults/tests.py
-tests/field_subclassing/__init__.py
-tests/field_subclassing/fields.py
-tests/field_subclassing/models.py
-tests/field_subclassing/tests.py
-tests/file_storage/__init__.py
-tests/file_storage/magic.png
-tests/file_storage/models.py
-tests/file_storage/test.png
-tests/file_storage/test1.png
-tests/file_storage/tests.py
-tests/file_storage/urls.py
-tests/file_uploads/__init__.py
-tests/file_uploads/models.py
-tests/file_uploads/tests.py
-tests/file_uploads/uploadhandler.py
-tests/file_uploads/urls.py
-tests/file_uploads/views.py
-tests/files/__init__.py
-tests/files/models.py
-tests/files/tests.py
-tests/fixtures/__init__.py
-tests/fixtures/models.py
-tests/fixtures/tests.py
-tests/fixtures/fixtures/db_fixture_1.default.json
-tests/fixtures/fixtures/db_fixture_2.default.json.gz
-tests/fixtures/fixtures/db_fixture_3.nosuchdb.json
-tests/fixtures/fixtures/fixture1.json
-tests/fixtures/fixtures/fixture2.json
-tests/fixtures/fixtures/fixture2.xml
-tests/fixtures/fixtures/fixture3.xml
-tests/fixtures/fixtures/fixture4.json.zip
-tests/fixtures/fixtures/fixture5.json.gz
-tests/fixtures/fixtures/fixture5.json.zip
-tests/fixtures/fixtures/fixture6.json
-tests/fixtures/fixtures/fixture7.xml
-tests/fixtures/fixtures/fixture8.json
-tests/fixtures/fixtures/fixture9.xml
-tests/fixtures/fixtures/initial_data.json
-tests/fixtures/fixtures/invalid.json
-tests/fixtures_model_package/__init__.py
-tests/fixtures_model_package/tests.py
-tests/fixtures_model_package/fixtures/fixture1.json
-tests/fixtures_model_package/fixtures/fixture2.json
-tests/fixtures_model_package/fixtures/fixture2.xml
-tests/fixtures_model_package/fixtures/initial_data.json
-tests/fixtures_model_package/models/__init__.py
-tests/fixtures_regress/__init__.py
-tests/fixtures_regress/models.py
-tests/fixtures_regress/tests.py
-tests/fixtures_regress/fixtures/absolute.json
-tests/fixtures_regress/fixtures/animal.xml
-tests/fixtures_regress/fixtures/bad_fixture1.unkn
-tests/fixtures_regress/fixtures/bad_fixture2.xml
-tests/fixtures_regress/fixtures/big-fixture.json
-tests/fixtures_regress/fixtures/empty.json
-tests/fixtures_regress/fixtures/forward_ref.json
-tests/fixtures_regress/fixtures/forward_ref_bad_data.json
-tests/fixtures_regress/fixtures/forward_ref_lookup.json
-tests/fixtures_regress/fixtures/model-inheritance.json
-tests/fixtures_regress/fixtures/nk-inheritance.json
-tests/fixtures_regress/fixtures/nk-inheritance2.xml
-tests/fixtures_regress/fixtures/non_natural_1.json
-tests/fixtures_regress/fixtures/non_natural_2.xml
-tests/fixtures_regress/fixtures/path.containing.dots.json
-tests/fixtures_regress/fixtures/pretty.xml
-tests/fixtures_regress/fixtures/sequence.json
-tests/fixtures_regress/fixtures/sequence_extra.json
-tests/fixtures_regress/fixtures/sequence_extra_xml.xml
-tests/fixtures_regress/fixtures/special-article.json
-tests/fixtures_regress/fixtures/thingy.json
-tests/fixtures_regress/fixtures_1/forward_ref_1.json
-tests/fixtures_regress/fixtures_1/inner/absolute.json
-tests/fixtures_regress/fixtures_2/forward_ref_2.json
-tests/force_insert_update/__init__.py
-tests/force_insert_update/models.py
-tests/force_insert_update/tests.py
-tests/foreign_object/__init__.py
-tests/foreign_object/models.py
-tests/foreign_object/tests.py
-tests/forms_tests/__init__.py
-tests/forms_tests/models.py
-tests/forms_tests/urls.py
-tests/forms_tests/views.py
-tests/forms_tests/templates/forms_tests/article_form.html
-tests/forms_tests/tests/__init__.py
-tests/forms_tests/tests/test_error_messages.py
-tests/forms_tests/tests/test_extra.py
-tests/forms_tests/tests/test_fields.py
-tests/forms_tests/tests/test_forms.py
-tests/forms_tests/tests/test_formsets.py
-tests/forms_tests/tests/test_input_formats.py
-tests/forms_tests/tests/test_media.py
-tests/forms_tests/tests/test_regressions.py
-tests/forms_tests/tests/test_util.py
-tests/forms_tests/tests/test_validators.py
-tests/forms_tests/tests/test_widgets.py
-tests/forms_tests/tests/tests.py
-tests/forms_tests/tests/filepath_test_files/.dot-file
-tests/forms_tests/tests/filepath_test_files/fake-image.jpg
-tests/forms_tests/tests/filepath_test_files/real-text-file.txt
-tests/forms_tests/tests/filepath_test_files/directory/.keep
-tests/generic_inline_admin/__init__.py
-tests/generic_inline_admin/admin.py
-tests/generic_inline_admin/models.py
-tests/generic_inline_admin/tests.py
-tests/generic_inline_admin/urls.py
-tests/generic_inline_admin/fixtures/users.xml
-tests/generic_relations/__init__.py
-tests/generic_relations/models.py
-tests/generic_relations/tests.py
-tests/generic_relations_regress/__init__.py
-tests/generic_relations_regress/models.py
-tests/generic_relations_regress/tests.py
-tests/generic_views/__init__.py
-tests/generic_views/models.py
-tests/generic_views/test_base.py
-tests/generic_views/test_dates.py
-tests/generic_views/test_detail.py
-tests/generic_views/test_edit.py
-tests/generic_views/test_forms.py
-tests/generic_views/test_list.py
-tests/generic_views/urls.py
-tests/generic_views/views.py
-tests/generic_views/fixtures/generic-views-test-data.json
-tests/generic_views/templates/generic_views/about.html
-tests/generic_views/templates/generic_views/apple_detail.html
-tests/generic_views/templates/generic_views/artist_detail.html
-tests/generic_views/templates/generic_views/artist_form.html
-tests/generic_views/templates/generic_views/author_confirm_delete.html
-tests/generic_views/templates/generic_views/author_detail.html
-tests/generic_views/templates/generic_views/author_form.html
-tests/generic_views/templates/generic_views/author_list.html
-tests/generic_views/templates/generic_views/author_objects.html
-tests/generic_views/templates/generic_views/author_view.html
-tests/generic_views/templates/generic_views/book_archive.html
-tests/generic_views/templates/generic_views/book_archive_day.html
-tests/generic_views/templates/generic_views/book_archive_month.html
-tests/generic_views/templates/generic_views/book_archive_week.html
-tests/generic_views/templates/generic_views/book_archive_year.html
-tests/generic_views/templates/generic_views/book_detail.html
-tests/generic_views/templates/generic_views/book_list.html
-tests/generic_views/templates/generic_views/confirm_delete.html
-tests/generic_views/templates/generic_views/detail.html
-tests/generic_views/templates/generic_views/form.html
-tests/generic_views/templates/generic_views/list.html
-tests/generic_views/templates/generic_views/page_template.html
-tests/generic_views/templates/generic_views/robots.txt
-tests/generic_views/templates/registration/login.html
-tests/get_earliest_or_latest/__init__.py
-tests/get_earliest_or_latest/models.py
-tests/get_earliest_or_latest/tests.py
-tests/get_object_or_404/__init__.py
-tests/get_object_or_404/models.py
-tests/get_object_or_404/tests.py
-tests/get_or_create/__init__.py
-tests/get_or_create/models.py
-tests/get_or_create/tests.py
-tests/get_or_create_regress/__init__.py
-tests/get_or_create_regress/models.py
-tests/get_or_create_regress/tests.py
-tests/handlers/__init__.py
-tests/handlers/models.py
-tests/handlers/tests.py
-tests/handlers/urls.py
-tests/handlers/views.py
-tests/http_utils/__init__.py
-tests/http_utils/models.py
-tests/http_utils/tests.py
-tests/httpwrappers/__init__.py
-tests/httpwrappers/abc.txt
-tests/httpwrappers/models.py
-tests/httpwrappers/tests.py
-tests/i18n/__init__.py
-tests/i18n/forms.py
-tests/i18n/models.py
-tests/i18n/tests.py
-tests/i18n/urls.py
-tests/i18n/commands/__init__.py
-tests/i18n/commands/code.sample
-tests/i18n/commands/compilation.py
-tests/i18n/commands/extraction.py
-tests/i18n/commands/javascript.js
-tests/i18n/commands/not_utf8.sample
-tests/i18n/commands/ignore_dir/ignored.html
-tests/i18n/commands/locale/es_AR/LC_MESSAGES/django.po
-tests/i18n/commands/locale/fr/LC_MESSAGES/django.po
-tests/i18n/commands/locale/hr/LC_MESSAGES/django.po
-tests/i18n/commands/locale/it/LC_MESSAGES/django.po
-tests/i18n/commands/locale/ja/LC_MESSAGES/django.po
-tests/i18n/commands/templates/comments.thtml
-tests/i18n/commands/templates/plural.djtpl
-tests/i18n/commands/templates/template_with_error.tpl
-tests/i18n/commands/templates/test.html
-tests/i18n/commands/templates/xxx_ignored.html
-tests/i18n/contenttypes/__init__.py
-tests/i18n/contenttypes/tests.py
-tests/i18n/contenttypes/locale/en/LC_MESSAGES/django.mo
-tests/i18n/contenttypes/locale/en/LC_MESSAGES/django.po
-tests/i18n/contenttypes/locale/fr/LC_MESSAGES/django.mo
-tests/i18n/contenttypes/locale/fr/LC_MESSAGES/django.po
-tests/i18n/other/__init__.py
-tests/i18n/other/locale/__init__.py
-tests/i18n/other/locale/de/__init__.py
-tests/i18n/other/locale/de/formats.py
-tests/i18n/other/locale/de/LC_MESSAGES/django.mo
-tests/i18n/other/locale/de/LC_MESSAGES/django.po
-tests/i18n/other/locale/fr/LC_MESSAGES/django.mo
-tests/i18n/other/locale/fr/LC_MESSAGES/django.po
-tests/i18n/patterns/__init__.py
-tests/i18n/patterns/tests.py
-tests/i18n/patterns/locale/en/LC_MESSAGES/django.mo
-tests/i18n/patterns/locale/en/LC_MESSAGES/django.po
-tests/i18n/patterns/locale/nl/LC_MESSAGES/django.mo
-tests/i18n/patterns/locale/nl/LC_MESSAGES/django.po
-tests/i18n/patterns/locale/pt_BR/LC_MESSAGES/django.mo
-tests/i18n/patterns/locale/pt_BR/LC_MESSAGES/django.po
-tests/i18n/patterns/templates/404.html
-tests/i18n/patterns/templates/dummy.html
-tests/i18n/patterns/urls/__init__.py
-tests/i18n/patterns/urls/default.py
-tests/i18n/patterns/urls/disabled.py
-tests/i18n/patterns/urls/included.py
-tests/i18n/patterns/urls/namespace.py
-tests/i18n/patterns/urls/path_unused.py
-tests/i18n/patterns/urls/wrong.py
-tests/i18n/patterns/urls/wrong_namespace.py
-tests/i18n/resolution/__init__.py
-tests/i18n/resolution/models.py
-tests/i18n/resolution/locale/de/LC_MESSAGES/django.mo
-tests/i18n/resolution/locale/de/LC_MESSAGES/django.po
-tests/indexes/__init__.py
-tests/indexes/models.py
-tests/indexes/tests.py
-tests/initial_sql_regress/__init__.py
-tests/initial_sql_regress/models.py
-tests/initial_sql_regress/tests.py
-tests/initial_sql_regress/sql/simple.sql
-tests/inline_formsets/__init__.py
-tests/inline_formsets/models.py
-tests/inline_formsets/tests.py
-tests/inspectdb/__init__.py
-tests/inspectdb/models.py
-tests/inspectdb/tests.py
-tests/introspection/__init__.py
-tests/introspection/models.py
-tests/introspection/tests.py
-tests/invalid_models/__init__.py
-tests/invalid_models/models.py
-tests/invalid_models/tests.py
-tests/invalid_models/invalid_models/__init__.py
-tests/invalid_models/invalid_models/models.py
-tests/known_related_objects/__init__.py
-tests/known_related_objects/models.py
-tests/known_related_objects/tests.py
-tests/known_related_objects/fixtures/tournament.json
-tests/logging_tests/__init__.py
-tests/logging_tests/logconfig.py
-tests/logging_tests/models.py
-tests/logging_tests/tests.py
-tests/logging_tests/urls.py
-tests/logging_tests/views.py
-tests/lookup/__init__.py
-tests/lookup/models.py
-tests/lookup/tests.py
-tests/m2m_and_m2o/__init__.py
-tests/m2m_and_m2o/models.py
-tests/m2m_and_m2o/tests.py
-tests/m2m_intermediary/__init__.py
-tests/m2m_intermediary/models.py
-tests/m2m_intermediary/tests.py
-tests/m2m_multiple/__init__.py
-tests/m2m_multiple/models.py
-tests/m2m_multiple/tests.py
-tests/m2m_recursive/__init__.py
-tests/m2m_recursive/models.py
-tests/m2m_recursive/tests.py
-tests/m2m_regress/__init__.py
-tests/m2m_regress/models.py
-tests/m2m_regress/tests.py
-tests/m2m_signals/__init__.py
-tests/m2m_signals/models.py
-tests/m2m_signals/tests.py
-tests/m2m_through/__init__.py
-tests/m2m_through/models.py
-tests/m2m_through/tests.py
-tests/m2m_through_regress/__init__.py
-tests/m2m_through_regress/models.py
-tests/m2m_through_regress/tests.py
-tests/m2m_through_regress/fixtures/m2m_through.json
-tests/m2o_recursive/__init__.py
-tests/m2o_recursive/models.py
-tests/m2o_recursive/tests.py
-tests/mail/__init__.py
-tests/mail/custombackend.py
-tests/mail/models.py
-tests/mail/tests.py
-tests/managers_regress/__init__.py
-tests/managers_regress/models.py
-tests/managers_regress/tests.py
-tests/many_to_many/__init__.py
-tests/many_to_many/models.py
-tests/many_to_many/tests.py
-tests/many_to_one/__init__.py
-tests/many_to_one/models.py
-tests/many_to_one/tests.py
-tests/many_to_one_null/__init__.py
-tests/many_to_one_null/models.py
-tests/many_to_one_null/tests.py
-tests/many_to_one_regress/__init__.py
-tests/many_to_one_regress/models.py
-tests/many_to_one_regress/tests.py
-tests/max_lengths/__init__.py
-tests/max_lengths/models.py
-tests/max_lengths/tests.py
-tests/middleware/__init__.py
-tests/middleware/cond_get_urls.py
-tests/middleware/extra_urls.py
-tests/middleware/models.py
-tests/middleware/tests.py
-tests/middleware/urls.py
-tests/middleware_exceptions/__init__.py
-tests/middleware_exceptions/models.py
-tests/middleware_exceptions/tests.py
-tests/middleware_exceptions/urls.py
-tests/middleware_exceptions/views.py
-tests/model_fields/4x8.png
-tests/model_fields/8x4.png
-tests/model_fields/__init__.py
-tests/model_fields/models.py
-tests/model_fields/test_imagefield.py
-tests/model_fields/tests.py
-tests/model_forms/__init__.py
-tests/model_forms/models.py
-tests/model_forms/test.png
-tests/model_forms/test2.png
-tests/model_forms/tests.py
-tests/model_forms_regress/__init__.py
-tests/model_forms_regress/models.py
-tests/model_forms_regress/tests.py
-tests/model_formsets/__init__.py
-tests/model_formsets/models.py
-tests/model_formsets/tests.py
-tests/model_formsets_regress/__init__.py
-tests/model_formsets_regress/models.py
-tests/model_formsets_regress/tests.py
-tests/model_inheritance/__init__.py
-tests/model_inheritance/models.py
-tests/model_inheritance/tests.py
-tests/model_inheritance_regress/__init__.py
-tests/model_inheritance_regress/models.py
-tests/model_inheritance_regress/tests.py
-tests/model_inheritance_same_model_name/__init__.py
-tests/model_inheritance_same_model_name/models.py
-tests/model_inheritance_same_model_name/tests.py
-tests/model_inheritance_select_related/__init__.py
-tests/model_inheritance_select_related/models.py
-tests/model_inheritance_select_related/tests.py
-tests/model_package/__init__.py
-tests/model_package/tests.py
-tests/model_package/models/__init__.py
-tests/model_package/models/article.py
-tests/model_package/models/publication.py
-tests/model_permalink/__init__.py
-tests/model_permalink/models.py
-tests/model_permalink/tests.py
-tests/model_permalink/urls.py
-tests/model_regress/__init__.py
-tests/model_regress/models.py
-tests/model_regress/tests.py
-tests/model_validation/__init__.py
-tests/model_validation/models.py
-tests/model_validation/tests.py
-tests/modeladmin/__init__.py
-tests/modeladmin/models.py
-tests/modeladmin/tests.py
-tests/multiple_database/__init__.py
-tests/multiple_database/models.py
-tests/multiple_database/tests.py
-tests/multiple_database/fixtures/multidb-common.json
-tests/multiple_database/fixtures/multidb.default.json
-tests/multiple_database/fixtures/multidb.other.json
-tests/multiple_database/fixtures/pets.json
-tests/mutually_referential/__init__.py
-tests/mutually_referential/models.py
-tests/mutually_referential/tests.py
-tests/nested_foreign_keys/__init__.py
-tests/nested_foreign_keys/models.py
-tests/nested_foreign_keys/tests.py
-tests/null_fk/__init__.py
-tests/null_fk/models.py
-tests/null_fk/tests.py
-tests/null_fk_ordering/__init__.py
-tests/null_fk_ordering/models.py
-tests/null_fk_ordering/tests.py
-tests/null_queries/__init__.py
-tests/null_queries/models.py
-tests/null_queries/tests.py
-tests/one_to_one/__init__.py
-tests/one_to_one/models.py
-tests/one_to_one/tests.py
-tests/one_to_one_regress/__init__.py
-tests/one_to_one_regress/models.py
-tests/one_to_one_regress/tests.py
-tests/or_lookups/__init__.py
-tests/or_lookups/models.py
-tests/or_lookups/tests.py
-tests/order_with_respect_to/__init__.py
-tests/order_with_respect_to/models.py
-tests/order_with_respect_to/tests.py
-tests/ordering/__init__.py
-tests/ordering/models.py
-tests/ordering/tests.py
-tests/pagination/__init__.py
-tests/pagination/custom.py
-tests/pagination/models.py
-tests/pagination/tests.py
-tests/prefetch_related/__init__.py
-tests/prefetch_related/models.py
-tests/prefetch_related/tests.py
-tests/properties/__init__.py
-tests/properties/models.py
-tests/properties/tests.py
-tests/proxy_model_inheritance/__init__.py
-tests/proxy_model_inheritance/models.py
-tests/proxy_model_inheritance/tests.py
-tests/proxy_model_inheritance/app1/__init__.py
-tests/proxy_model_inheritance/app1/models.py
-tests/proxy_model_inheritance/app2/__init__.py
-tests/proxy_model_inheritance/app2/models.py
-tests/proxy_models/__init__.py
-tests/proxy_models/models.py
-tests/proxy_models/tests.py
-tests/proxy_models/fixtures/mypeople.json
-tests/queries/__init__.py
-tests/queries/models.py
-tests/queries/tests.py
-tests/queryset_pickle/__init__.py
-tests/queryset_pickle/models.py
-tests/queryset_pickle/tests.py
-tests/raw_query/__init__.py
-tests/raw_query/models.py
-tests/raw_query/tests.py
-tests/raw_query/fixtures/raw_query_books.json
-tests/requests/__init__.py
-tests/requests/models.py
-tests/requests/tests.py
-tests/requirements/base.txt
-tests/requirements/mysql.txt
-tests/requirements/oracle.txt
-tests/requirements/postgres.txt
-tests/requirements/py2.txt
-tests/requirements/py3.txt
-tests/reserved_names/__init__.py
-tests/reserved_names/models.py
-tests/reserved_names/tests.py
-tests/resolve_url/__init__.py
-tests/resolve_url/models.py
-tests/resolve_url/tests.py
-tests/responses/__init__.py
-tests/responses/models.py
-tests/responses/tests.py
-tests/reverse_lookup/__init__.py
-tests/reverse_lookup/models.py
-tests/reverse_lookup/tests.py
-tests/reverse_single_related/__init__.py
-tests/reverse_single_related/models.py
-tests/reverse_single_related/tests.py
-tests/save_delete_hooks/__init__.py
-tests/save_delete_hooks/models.py
-tests/save_delete_hooks/tests.py
-tests/select_for_update/__init__.py
-tests/select_for_update/models.py
-tests/select_for_update/tests.py
-tests/select_related/__init__.py
-tests/select_related/models.py
-tests/select_related/tests.py
-tests/select_related_onetoone/__init__.py
-tests/select_related_onetoone/models.py
-tests/select_related_onetoone/tests.py
-tests/select_related_regress/__init__.py
-tests/select_related_regress/models.py
-tests/select_related_regress/tests.py
-tests/serializers/__init__.py
-tests/serializers/models.py
-tests/serializers/tests.py
-tests/serializers_regress/__init__.py
-tests/serializers_regress/models.py
-tests/serializers_regress/tests.py
-tests/servers/__init__.py
-tests/servers/models.py
-tests/servers/tests.py
-tests/servers/urls.py
-tests/servers/views.py
-tests/servers/fixtures/testdata.json
-tests/servers/media/example_media_file.txt
-tests/servers/static/example_static_file.txt
-tests/settings_tests/__init__.py
-tests/settings_tests/models.py
-tests/settings_tests/tests.py
-tests/signals/__init__.py
-tests/signals/models.py
-tests/signals/tests.py
-tests/signals_regress/__init__.py
-tests/signals_regress/models.py
-tests/signals_regress/tests.py
-tests/signed_cookies_tests/__init__.py
-tests/signed_cookies_tests/models.py
-tests/signed_cookies_tests/tests.py
-tests/signing/__init__.py
-tests/signing/models.py
-tests/signing/tests.py
-tests/sites_framework/__init__.py
-tests/sites_framework/models.py
-tests/sites_framework/tests.py
-tests/staticfiles_tests/__init__.py
-tests/staticfiles_tests/models.py
-tests/staticfiles_tests/storage.py
-tests/staticfiles_tests/tests.py
-tests/staticfiles_tests/apps/__init__.py
-tests/staticfiles_tests/apps/no_label/__init__.py
-tests/staticfiles_tests/apps/no_label/models.py
-tests/staticfiles_tests/apps/no_label/static/file2.txt
-tests/staticfiles_tests/apps/test/__init__.py
-tests/staticfiles_tests/apps/test/models.py
-tests/staticfiles_tests/apps/test/otherdir/odfile.txt
-tests/staticfiles_tests/apps/test/static/test/CVS
-tests/staticfiles_tests/apps/test/static/test/file.txt
-tests/staticfiles_tests/apps/test/static/test/file1.txt
-tests/staticfiles_tests/apps/test/static/test/nonascii.css
-tests/staticfiles_tests/apps/test/static/test/test.ignoreme
-tests/staticfiles_tests/apps/test/static/test/window.png
-tests/staticfiles_tests/project/documents/test.txt
-tests/staticfiles_tests/project/documents/cached/absolute.css
-tests/staticfiles_tests/project/documents/cached/denorm.css
-tests/staticfiles_tests/project/documents/cached/import.css
-tests/staticfiles_tests/project/documents/cached/other.css
-tests/staticfiles_tests/project/documents/cached/relative.css
-tests/staticfiles_tests/project/documents/cached/styles.css
-tests/staticfiles_tests/project/documents/cached/styles_insensitive.css
-tests/staticfiles_tests/project/documents/cached/url.css
-tests/staticfiles_tests/project/documents/cached/css/fragments.css
-tests/staticfiles_tests/project/documents/cached/css/ignored.css
-tests/staticfiles_tests/project/documents/cached/css/window.css
-tests/staticfiles_tests/project/documents/cached/css/fonts/font.eot
-tests/staticfiles_tests/project/documents/cached/css/fonts/font.svg
-tests/staticfiles_tests/project/documents/cached/css/img/window.png
-tests/staticfiles_tests/project/documents/cached/img/relative.png
-tests/staticfiles_tests/project/documents/subdir/test.txt
-tests/staticfiles_tests/project/documents/test/camelCase.txt
-tests/staticfiles_tests/project/documents/test/file.txt
-tests/staticfiles_tests/project/faulty/faulty.css
-tests/staticfiles_tests/project/prefixed/test.txt
-tests/staticfiles_tests/project/site_media/media/media-file.txt
-tests/staticfiles_tests/project/site_media/static/testfile.txt
-tests/staticfiles_tests/urls/__init__.py
-tests/staticfiles_tests/urls/default.py
-tests/staticfiles_tests/urls/helper.py
-tests/str/__init__.py
-tests/str/models.py
-tests/str/tests.py
-tests/string_lookup/__init__.py
-tests/string_lookup/models.py
-tests/string_lookup/tests.py
-tests/swappable_models/__init__.py
-tests/swappable_models/models.py
-tests/swappable_models/tests.py
-tests/syncdb_signals/__init__.py
-tests/syncdb_signals/models.py
-tests/syncdb_signals/tests.py
-tests/syndication/__init__.py
-tests/syndication/feeds.py
-tests/syndication/models.py
-tests/syndication/tests.py
-tests/syndication/urls.py
-tests/syndication/fixtures/feeddata.json
-tests/syndication/templates/syndication/description.html
-tests/syndication/templates/syndication/description_context.html
-tests/syndication/templates/syndication/title.html
-tests/syndication/templates/syndication/title_context.html
-tests/tablespaces/__init__.py
-tests/tablespaces/models.py
-tests/tablespaces/tests.py
-tests/template_tests/__init__.py
-tests/template_tests/alternate_urls.py
-tests/template_tests/filters.py
-tests/template_tests/loaders.py
-tests/template_tests/models.py
-tests/template_tests/test_callables.py
-tests/template_tests/test_context.py
-tests/template_tests/test_custom.py
-tests/template_tests/test_nodelist.py
-tests/template_tests/test_parser.py
-tests/template_tests/test_response.py
-tests/template_tests/test_smartif.py
-tests/template_tests/test_unicode.py
-tests/template_tests/tests.py
-tests/template_tests/urls.py
-tests/template_tests/views.py
-tests/template_tests/eggs/tagsegg.egg
-tests/template_tests/templates/broken_base.html
-tests/template_tests/templates/included_base.html
-tests/template_tests/templates/included_content.html
-tests/template_tests/templates/inclusion.html
-tests/template_tests/templates/response.html
-tests/template_tests/templates/ssi include with spaces.html
-tests/template_tests/templates/ssi_include.html
-tests/template_tests/templates/test_context.html
-tests/template_tests/templates/test_extends_error.html
-tests/template_tests/templates/test_incl_tag_current_app.html
-tests/template_tests/templates/test_incl_tag_use_l10n.html
-tests/template_tests/templates/test_include_error.html
-tests/template_tests/templates/first/test.html
-tests/template_tests/templates/second/test.html
-tests/template_tests/templatetags/__init__.py
-tests/template_tests/templatetags/bad_tag.py
-tests/template_tests/templatetags/broken_tag.py
-tests/template_tests/templatetags/custom.py
-tests/template_tests/templatetags/subpackage/__init__.py
-tests/template_tests/templatetags/subpackage/echo.py
-tests/template_tests/templatetags/subpackage/echo_invalid.py
-tests/templates/base.html
-tests/templates/extended.html
-tests/templates/form_view.html
-tests/templates/login.html
-tests/templates/comments/comment_notification_email.txt
-tests/templates/custom_admin/add_form.html
-tests/templates/custom_admin/change_form.html
-tests/templates/custom_admin/change_list.html
-tests/templates/custom_admin/delete_confirmation.html
-tests/templates/custom_admin/delete_selected_confirmation.html
-tests/templates/custom_admin/index.html
-tests/templates/custom_admin/login.html
-tests/templates/custom_admin/logout.html
-tests/templates/custom_admin/object_history.html
-tests/templates/custom_admin/password_change_done.html
-tests/templates/custom_admin/password_change_form.html
-tests/templates/views/article_archive_day.html
-tests/templates/views/article_archive_month.html
-tests/templates/views/article_confirm_delete.html
-tests/templates/views/article_detail.html
-tests/templates/views/article_form.html
-tests/templates/views/article_list.html
-tests/templates/views/datearticle_archive_month.html
-tests/templates/views/urlarticle_detail.html
-tests/templates/views/urlarticle_form.html
-tests/test_client/__init__.py
-tests/test_client/models.py
-tests/test_client/tests.py
-tests/test_client/urls.py
-tests/test_client/views.py
-tests/test_client/fixtures/testdata.json
-tests/test_client_regress/__init__.py
-tests/test_client_regress/models.py
-tests/test_client_regress/session.py
-tests/test_client_regress/tests.py
-tests/test_client_regress/urls.py
-tests/test_client_regress/views.py
-tests/test_client_regress/bad_templates/404.html
-tests/test_client_regress/fixtures/testdata.json
-tests/test_client_regress/templates/request_context.html
-tests/test_client_regress/templates/unicode.html
-tests/test_discovery_sample/__init__.py
-tests/test_discovery_sample/pattern_tests.py
-tests/test_discovery_sample/tests_sample.py
-tests/test_discovery_sample/tests/__init__.py
-tests/test_discovery_sample/tests/tests.py
-tests/test_discovery_sample2/__init__.py
-tests/test_discovery_sample2/tests.py
-tests/test_runner/__init__.py
-tests/test_runner/models.py
-tests/test_runner/test_discover_runner.py
-tests/test_runner/tests.py
-tests/test_runner/valid_app/__init__.py
-tests/test_runner/valid_app/models/__init__.py
-tests/test_runner/valid_app/tests/__init__.py
-tests/test_runner_deprecation_app/__init__.py
-tests/test_runner_deprecation_app/models.py
-tests/test_runner_deprecation_app/tests.py
-tests/test_runner_invalid_app/__init__.py
-tests/test_runner_invalid_app/models/__init__.py
-tests/test_runner_invalid_app/tests/__init__.py
-tests/test_suite_override/__init__.py
-tests/test_suite_override/models.py
-tests/test_suite_override/tests.py
-tests/test_utils/__init__.py
-tests/test_utils/doctest_output.py
-tests/test_utils/models.py
-tests/test_utils/tests.py
-tests/test_utils/urls.py
-tests/test_utils/views.py
-tests/test_utils/fixtures/should_not_be_loaded.json
-tests/test_utils/templates/template_used/alternative.html
-tests/test_utils/templates/template_used/base.html
-tests/test_utils/templates/template_used/extends.html
-tests/test_utils/templates/template_used/include.html
-tests/text/__init__.py
-tests/text/models.py
-tests/text/tests.py
-tests/timezones/__init__.py
-tests/timezones/admin.py
-tests/timezones/forms.py
-tests/timezones/models.py
-tests/timezones/tests.py
-tests/timezones/urls.py
-tests/timezones/fixtures/tz_users.xml
-tests/transactions/__init__.py
-tests/transactions/models.py
-tests/transactions/tests.py
-tests/transactions_regress/__init__.py
-tests/transactions_regress/models.py
-tests/transactions_regress/tests.py
-tests/unmanaged_models/__init__.py
-tests/unmanaged_models/models.py
-tests/unmanaged_models/tests.py
-tests/update/__init__.py
-tests/update/models.py
-tests/update/tests.py
-tests/update_only_fields/__init__.py
-tests/update_only_fields/models.py
-tests/update_only_fields/tests.py
-tests/urlpatterns_reverse/__init__.py
-tests/urlpatterns_reverse/erroneous_urls.py
-tests/urlpatterns_reverse/erroneous_views_module.py
-tests/urlpatterns_reverse/extra_urls.py
-tests/urlpatterns_reverse/included_named_urls.py
-tests/urlpatterns_reverse/included_named_urls2.py
-tests/urlpatterns_reverse/included_namespace_urls.py
-tests/urlpatterns_reverse/included_urls.py
-tests/urlpatterns_reverse/included_urls2.py
-tests/urlpatterns_reverse/middleware.py
-tests/urlpatterns_reverse/models.py
-tests/urlpatterns_reverse/named_urls.py
-tests/urlpatterns_reverse/namespace_urls.py
-tests/urlpatterns_reverse/no_urls.py
-tests/urlpatterns_reverse/nonimported_module.py
-tests/urlpatterns_reverse/reverse_lazy_urls.py
-tests/urlpatterns_reverse/tests.py
-tests/urlpatterns_reverse/urlconf_inner.py
-tests/urlpatterns_reverse/urlconf_outer.py
-tests/urlpatterns_reverse/urls.py
-tests/urlpatterns_reverse/urls_error_handlers.py
-tests/urlpatterns_reverse/urls_error_handlers_callables.py
-tests/urlpatterns_reverse/urls_without_full_import.py
-tests/urlpatterns_reverse/views.py
-tests/urlpatterns_reverse/views_broken.py
-tests/user_commands/__init__.py
-tests/user_commands/models.py
-tests/user_commands/tests.py
-tests/user_commands/management/__init__.py
-tests/user_commands/management/commands/__init__.py
-tests/user_commands/management/commands/dance.py
-tests/user_commands/management/commands/leave_locale_alone_false.py
-tests/user_commands/management/commands/leave_locale_alone_true.py
-tests/utils_tests/__init__.py
-tests/utils_tests/models.py
-tests/utils_tests/test_archive.py
-tests/utils_tests/test_baseconv.py
-tests/utils_tests/test_checksums.py
-tests/utils_tests/test_crypto.py
-tests/utils_tests/test_datastructures.py
-tests/utils_tests/test_dateformat.py
-tests/utils_tests/test_dateparse.py
-tests/utils_tests/test_datetime_safe.py
-tests/utils_tests/test_decorators.py
-tests/utils_tests/test_encoding.py
-tests/utils_tests/test_feedgenerator.py
-tests/utils_tests/test_functional.py
-tests/utils_tests/test_html.py
-tests/utils_tests/test_http.py
-tests/utils_tests/test_ipv6.py
-tests/utils_tests/test_itercompat.py
-tests/utils_tests/test_jslex.py
-tests/utils_tests/test_module_loading.py
-tests/utils_tests/test_no_submodule.py
-tests/utils_tests/test_numberformat.py
-tests/utils_tests/test_os_utils.py
-tests/utils_tests/test_regex_helper.py
-tests/utils_tests/test_safestring.py
-tests/utils_tests/test_simplelazyobject.py
-tests/utils_tests/test_termcolors.py
-tests/utils_tests/test_text.py
-tests/utils_tests/test_timesince.py
-tests/utils_tests/test_timezone.py
-tests/utils_tests/test_tzinfo.py
-tests/utils_tests/archives/foobar.tar
-tests/utils_tests/archives/foobar.tar.bz2
-tests/utils_tests/archives/foobar.tar.gz
-tests/utils_tests/archives/foobar.zip
-tests/utils_tests/eggs/test_egg.egg
-tests/utils_tests/files/strip_tags1.html
-tests/utils_tests/files/strip_tags2.txt
-tests/utils_tests/test_module/__init__.py
-tests/utils_tests/test_module/bad_module.py
-tests/utils_tests/test_module/good_module.py
-tests/validation/__init__.py
-tests/validation/models.py
-tests/validation/test_custom_messages.py
-tests/validation/test_error_messages.py
-tests/validation/test_unique.py
-tests/validation/test_validators.py
-tests/validation/tests.py
-tests/validators/__init__.py
-tests/validators/models.py
-tests/validators/tests.py
-tests/version/__init__.py
-tests/version/models.py
-tests/version/tests.py
-tests/view_tests/__init__.py
-tests/view_tests/default_urls.py
-tests/view_tests/generic_urls.py
-tests/view_tests/models.py
-tests/view_tests/regression_21530_urls.py
-tests/view_tests/urls.py
-tests/view_tests/views.py
-tests/view_tests/app0/__init__.py
-tests/view_tests/app0/locale/en/LC_MESSAGES/djangojs.mo
-tests/view_tests/app0/locale/en/LC_MESSAGES/djangojs.po
-tests/view_tests/app1/__init__.py
-tests/view_tests/app1/locale/fr/LC_MESSAGES/djangojs.mo
-tests/view_tests/app1/locale/fr/LC_MESSAGES/djangojs.po
-tests/view_tests/app2/__init__.py
-tests/view_tests/app2/locale/fr/LC_MESSAGES/djangojs.mo
-tests/view_tests/app2/locale/fr/LC_MESSAGES/djangojs.po
-tests/view_tests/app3/__init__.py
-tests/view_tests/app3/locale/es_AR/LC_MESSAGES/djangojs.mo
-tests/view_tests/app3/locale/es_AR/LC_MESSAGES/djangojs.po
-tests/view_tests/app4/__init__.py
-tests/view_tests/app4/locale/es_AR/LC_MESSAGES/djangojs.mo
-tests/view_tests/app4/locale/es_AR/LC_MESSAGES/djangojs.po
-tests/view_tests/fixtures/testdata.json
-tests/view_tests/locale/de/LC_MESSAGES/djangojs.mo
-tests/view_tests/locale/de/LC_MESSAGES/djangojs.po
-tests/view_tests/locale/es/LC_MESSAGES/djangojs.mo
-tests/view_tests/locale/es/LC_MESSAGES/djangojs.po
-tests/view_tests/locale/fr/LC_MESSAGES/djangojs.mo
-tests/view_tests/locale/fr/LC_MESSAGES/djangojs.po
-tests/view_tests/locale/ru/LC_MESSAGES/djangojs.mo
-tests/view_tests/locale/ru/LC_MESSAGES/djangojs.po
-tests/view_tests/media/file.txt
-tests/view_tests/media/file.txt.gz
-tests/view_tests/media/file.unknown
-tests/view_tests/templates/jsi18n.html
-tests/view_tests/templates/debug/render_test.html
-tests/view_tests/templates/debug/template_exception.html
-tests/view_tests/templatetags/__init__.py
-tests/view_tests/templatetags/debugtags.py
-tests/view_tests/tests/__init__.py
-tests/view_tests/tests/test_debug.py
-tests/view_tests/tests/test_defaults.py
-tests/view_tests/tests/test_i18n.py
-tests/view_tests/tests/test_shortcuts.py
-tests/view_tests/tests/test_specials.py
-tests/view_tests/tests/test_static.py
-tests/wsgi/__init__.py
-tests/wsgi/models.py
-tests/wsgi/tests.py
-tests/wsgi/urls.py
-tests/wsgi/wsgi.py \ No newline at end of file
diff --git a/lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/dependency_links.txt b/lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/dependency_links.txt
deleted file mode 100644
index 8b13789..0000000
--- a/lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/dependency_links.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/installed-files.txt b/lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/installed-files.txt
deleted file mode 100644
index 5930587..0000000
--- a/lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/installed-files.txt
+++ /dev/null
@@ -1,4210 +0,0 @@
-../django/__init__.py
-../django/forms/formsets.py
-../django/forms/models.py
-../django/forms/__init__.py
-../django/forms/forms.py
-../django/forms/widgets.py
-../django/forms/util.py
-../django/forms/fields.py
-../django/forms/extras/__init__.py
-../django/forms/extras/widgets.py
-../django/conf/__init__.py
-../django/conf/global_settings.py
-../django/conf/urls/i18n.py
-../django/conf/urls/__init__.py
-../django/conf/urls/static.py
-../django/conf/urls/shortcut.py
-../django/conf/locale/__init__.py
-../django/conf/locale/ko/formats.py
-../django/conf/locale/ko/__init__.py
-../django/conf/locale/ka/formats.py
-../django/conf/locale/ka/__init__.py
-../django/conf/locale/id/formats.py
-../django/conf/locale/id/__init__.py
-../django/conf/locale/sk/formats.py
-../django/conf/locale/sk/__init__.py
-../django/conf/locale/hr/formats.py
-../django/conf/locale/hr/__init__.py
-../django/conf/locale/ja/formats.py
-../django/conf/locale/ja/__init__.py
-../django/conf/locale/ca/formats.py
-../django/conf/locale/ca/__init__.py
-../django/conf/locale/sr/formats.py
-../django/conf/locale/sr/__init__.py
-../django/conf/locale/es_MX/formats.py
-../django/conf/locale/es_MX/__init__.py
-../django/conf/locale/ro/formats.py
-../django/conf/locale/ro/__init__.py
-../django/conf/locale/es_PR/formats.py
-../django/conf/locale/es_PR/__init__.py
-../django/conf/locale/de_CH/formats.py
-../django/conf/locale/de_CH/__init__.py
-../django/conf/locale/de/formats.py
-../django/conf/locale/de/__init__.py
-../django/conf/locale/cy/formats.py
-../django/conf/locale/cy/__init__.py
-../django/conf/locale/nl/formats.py
-../django/conf/locale/nl/__init__.py
-../django/conf/locale/tr/formats.py
-../django/conf/locale/tr/__init__.py
-../django/conf/locale/mn/formats.py
-../django/conf/locale/mn/__init__.py
-../django/conf/locale/uk/formats.py
-../django/conf/locale/uk/__init__.py
-../django/conf/locale/sv/formats.py
-../django/conf/locale/sv/__init__.py
-../django/conf/locale/el/formats.py
-../django/conf/locale/el/__init__.py
-../django/conf/locale/ml/formats.py
-../django/conf/locale/ml/__init__.py
-../django/conf/locale/nb/formats.py
-../django/conf/locale/nb/__init__.py
-../django/conf/locale/ru/formats.py
-../django/conf/locale/ru/__init__.py
-../django/conf/locale/kn/formats.py
-../django/conf/locale/kn/__init__.py
-../django/conf/locale/ga/formats.py
-../django/conf/locale/ga/__init__.py
-../django/conf/locale/ta/formats.py
-../django/conf/locale/ta/__init__.py
-../django/conf/locale/fr/formats.py
-../django/conf/locale/fr/__init__.py
-../django/conf/locale/is/formats.py
-../django/conf/locale/is/__init__.py
-../django/conf/locale/da/formats.py
-../django/conf/locale/da/__init__.py
-../django/conf/locale/km/formats.py
-../django/conf/locale/km/__init__.py
-../django/conf/locale/te/formats.py
-../django/conf/locale/te/__init__.py
-../django/conf/locale/sq/formats.py
-../django/conf/locale/sq/__init__.py
-../django/conf/locale/eu/formats.py
-../django/conf/locale/eu/__init__.py
-../django/conf/locale/bg/formats.py
-../django/conf/locale/bg/__init__.py
-../django/conf/locale/hu/formats.py
-../django/conf/locale/hu/__init__.py
-../django/conf/locale/es_NI/formats.py
-../django/conf/locale/es_NI/__init__.py
-../django/conf/locale/en/formats.py
-../django/conf/locale/en/__init__.py
-../django/conf/locale/es_AR/formats.py
-../django/conf/locale/es_AR/__init__.py
-../django/conf/locale/fa/formats.py
-../django/conf/locale/fa/__init__.py
-../django/conf/locale/gl/formats.py
-../django/conf/locale/gl/__init__.py
-../django/conf/locale/lv/formats.py
-../django/conf/locale/lv/__init__.py
-../django/conf/locale/pt_BR/formats.py
-../django/conf/locale/pt_BR/__init__.py
-../django/conf/locale/zh_TW/formats.py
-../django/conf/locale/zh_TW/__init__.py
-../django/conf/locale/zh_CN/formats.py
-../django/conf/locale/zh_CN/__init__.py
-../django/conf/locale/it/formats.py
-../django/conf/locale/it/__init__.py
-../django/conf/locale/vi/formats.py
-../django/conf/locale/vi/__init__.py
-../django/conf/locale/he/formats.py
-../django/conf/locale/he/__init__.py
-../django/conf/locale/es/formats.py
-../django/conf/locale/es/__init__.py
-../django/conf/locale/bs/formats.py
-../django/conf/locale/bs/__init__.py
-../django/conf/locale/hi/formats.py
-../django/conf/locale/hi/__init__.py
-../django/conf/locale/fy_NL/formats.py
-../django/conf/locale/fy_NL/__init__.py
-../django/conf/locale/pl/formats.py
-../django/conf/locale/pl/__init__.py
-../django/conf/locale/fi/formats.py
-../django/conf/locale/fi/__init__.py
-../django/conf/locale/lt/formats.py
-../django/conf/locale/lt/__init__.py
-../django/conf/locale/mk/formats.py
-../django/conf/locale/mk/__init__.py
-../django/conf/locale/cs/formats.py
-../django/conf/locale/cs/__init__.py
-../django/conf/locale/pt/formats.py
-../django/conf/locale/pt/__init__.py
-../django/conf/locale/et/formats.py
-../django/conf/locale/et/__init__.py
-../django/conf/locale/bn/formats.py
-../django/conf/locale/bn/__init__.py
-../django/conf/locale/ar/formats.py
-../django/conf/locale/ar/__init__.py
-../django/conf/locale/nn/formats.py
-../django/conf/locale/nn/__init__.py
-../django/conf/locale/sl/formats.py
-../django/conf/locale/sl/__init__.py
-../django/conf/locale/th/formats.py
-../django/conf/locale/th/__init__.py
-../django/conf/locale/en_GB/formats.py
-../django/conf/locale/en_GB/__init__.py
-../django/conf/locale/sr_Latn/formats.py
-../django/conf/locale/sr_Latn/__init__.py
-../django/contrib/__init__.py
-../django/contrib/auth/admin.py
-../django/contrib/auth/backends.py
-../django/contrib/auth/context_processors.py
-../django/contrib/auth/models.py
-../django/contrib/auth/__init__.py
-../django/contrib/auth/forms.py
-../django/contrib/auth/create_superuser.py
-../django/contrib/auth/signals.py
-../django/contrib/auth/decorators.py
-../django/contrib/auth/middleware.py
-../django/contrib/auth/urls.py
-../django/contrib/auth/hashers.py
-../django/contrib/auth/views.py
-../django/contrib/auth/tokens.py
-../django/contrib/auth/handlers/modwsgi.py
-../django/contrib/auth/handlers/__init__.py
-../django/contrib/auth/management/__init__.py
-../django/contrib/auth/management/commands/changepassword.py
-../django/contrib/auth/management/commands/__init__.py
-../django/contrib/auth/management/commands/createsuperuser.py
-../django/contrib/auth/tests/test_decorators.py
-../django/contrib/auth/tests/test_management.py
-../django/contrib/auth/tests/test_views.py
-../django/contrib/auth/tests/test_context_processors.py
-../django/contrib/auth/tests/utils.py
-../django/contrib/auth/tests/__init__.py
-../django/contrib/auth/tests/test_handlers.py
-../django/contrib/auth/tests/urls_admin.py
-../django/contrib/auth/tests/test_models.py
-../django/contrib/auth/tests/test_forms.py
-../django/contrib/auth/tests/test_auth_backends.py
-../django/contrib/auth/tests/test_signals.py
-../django/contrib/auth/tests/test_tokens.py
-../django/contrib/auth/tests/test_hashers.py
-../django/contrib/auth/tests/urls.py
-../django/contrib/auth/tests/test_basic.py
-../django/contrib/auth/tests/custom_user.py
-../django/contrib/auth/tests/test_remote_user.py
-../django/contrib/flatpages/admin.py
-../django/contrib/flatpages/models.py
-../django/contrib/flatpages/__init__.py
-../django/contrib/flatpages/forms.py
-../django/contrib/flatpages/middleware.py
-../django/contrib/flatpages/urls.py
-../django/contrib/flatpages/views.py
-../django/contrib/flatpages/templatetags/flatpages.py
-../django/contrib/flatpages/templatetags/__init__.py
-../django/contrib/flatpages/tests/test_csrf.py
-../django/contrib/flatpages/tests/test_views.py
-../django/contrib/flatpages/tests/test_templatetags.py
-../django/contrib/flatpages/tests/__init__.py
-../django/contrib/flatpages/tests/test_models.py
-../django/contrib/flatpages/tests/test_forms.py
-../django/contrib/flatpages/tests/urls.py
-../django/contrib/flatpages/tests/test_middleware.py
-../django/contrib/humanize/models.py
-../django/contrib/humanize/tests.py
-../django/contrib/humanize/__init__.py
-../django/contrib/humanize/templatetags/humanize.py
-../django/contrib/humanize/templatetags/__init__.py
-../django/contrib/messages/context_processors.py
-../django/contrib/messages/utils.py
-../django/contrib/messages/models.py
-../django/contrib/messages/__init__.py
-../django/contrib/messages/api.py
-../django/contrib/messages/constants.py
-../django/contrib/messages/middleware.py
-../django/contrib/messages/views.py
-../django/contrib/messages/storage/__init__.py
-../django/contrib/messages/storage/cookie.py
-../django/contrib/messages/storage/fallback.py
-../django/contrib/messages/storage/session.py
-../django/contrib/messages/storage/base.py
-../django/contrib/messages/tests/test_session.py
-../django/contrib/messages/tests/test_cookie.py
-../django/contrib/messages/tests/test_fallback.py
-../django/contrib/messages/tests/test_mixins.py
-../django/contrib/messages/tests/__init__.py
-../django/contrib/messages/tests/urls.py
-../django/contrib/messages/tests/test_middleware.py
-../django/contrib/messages/tests/base.py
-../django/contrib/admin/validation.py
-../django/contrib/admin/actions.py
-../django/contrib/admin/models.py
-../django/contrib/admin/tests.py
-../django/contrib/admin/__init__.py
-../django/contrib/admin/options.py
-../django/contrib/admin/sites.py
-../django/contrib/admin/forms.py
-../django/contrib/admin/filters.py
-../django/contrib/admin/exceptions.py
-../django/contrib/admin/widgets.py
-../django/contrib/admin/util.py
-../django/contrib/admin/helpers.py
-../django/contrib/admin/templatetags/admin_urls.py
-../django/contrib/admin/templatetags/__init__.py
-../django/contrib/admin/templatetags/log.py
-../django/contrib/admin/templatetags/admin_modify.py
-../django/contrib/admin/templatetags/admin_static.py
-../django/contrib/admin/templatetags/admin_list.py
-../django/contrib/admin/views/__init__.py
-../django/contrib/admin/views/decorators.py
-../django/contrib/admin/views/main.py
-../django/contrib/webdesign/lorem_ipsum.py
-../django/contrib/webdesign/models.py
-../django/contrib/webdesign/tests.py
-../django/contrib/webdesign/__init__.py
-../django/contrib/webdesign/templatetags/__init__.py
-../django/contrib/webdesign/templatetags/webdesign.py
-../django/contrib/formtools/utils.py
-../django/contrib/formtools/models.py
-../django/contrib/formtools/__init__.py
-../django/contrib/formtools/preview.py
-../django/contrib/formtools/exceptions.py
-../django/contrib/formtools/wizard/__init__.py
-../django/contrib/formtools/wizard/forms.py
-../django/contrib/formtools/wizard/views.py
-../django/contrib/formtools/wizard/storage/__init__.py
-../django/contrib/formtools/wizard/storage/cookie.py
-../django/contrib/formtools/wizard/storage/exceptions.py
-../django/contrib/formtools/wizard/storage/session.py
-../django/contrib/formtools/wizard/storage/base.py
-../django/contrib/formtools/tests/tests.py
-../django/contrib/formtools/tests/__init__.py
-../django/contrib/formtools/tests/forms.py
-../django/contrib/formtools/tests/urls.py
-../django/contrib/formtools/tests/wizard/storage.py
-../django/contrib/formtools/tests/wizard/__init__.py
-../django/contrib/formtools/tests/wizard/test_cookiestorage.py
-../django/contrib/formtools/tests/wizard/test_forms.py
-../django/contrib/formtools/tests/wizard/test_loadstorage.py
-../django/contrib/formtools/tests/wizard/test_sessionstorage.py
-../django/contrib/formtools/tests/wizard/namedwizardtests/tests.py
-../django/contrib/formtools/tests/wizard/namedwizardtests/__init__.py
-../django/contrib/formtools/tests/wizard/namedwizardtests/forms.py
-../django/contrib/formtools/tests/wizard/namedwizardtests/urls.py
-../django/contrib/formtools/tests/wizard/wizardtests/tests.py
-../django/contrib/formtools/tests/wizard/wizardtests/__init__.py
-../django/contrib/formtools/tests/wizard/wizardtests/forms.py
-../django/contrib/formtools/tests/wizard/wizardtests/urls.py
-../django/contrib/staticfiles/storage.py
-../django/contrib/staticfiles/finders.py
-../django/contrib/staticfiles/utils.py
-../django/contrib/staticfiles/models.py
-../django/contrib/staticfiles/__init__.py
-../django/contrib/staticfiles/urls.py
-../django/contrib/staticfiles/handlers.py
-../django/contrib/staticfiles/views.py
-../django/contrib/staticfiles/templatetags/staticfiles.py
-../django/contrib/staticfiles/templatetags/__init__.py
-../django/contrib/staticfiles/management/__init__.py
-../django/contrib/staticfiles/management/commands/findstatic.py
-../django/contrib/staticfiles/management/commands/runserver.py
-../django/contrib/staticfiles/management/commands/__init__.py
-../django/contrib/staticfiles/management/commands/collectstatic.py
-../django/contrib/sitemaps/models.py
-../django/contrib/sitemaps/__init__.py
-../django/contrib/sitemaps/views.py
-../django/contrib/sitemaps/management/__init__.py
-../django/contrib/sitemaps/management/commands/__init__.py
-../django/contrib/sitemaps/management/commands/ping_google.py
-../django/contrib/sitemaps/tests/test_generic.py
-../django/contrib/sitemaps/tests/test_flatpages.py
-../django/contrib/sitemaps/tests/__init__.py
-../django/contrib/sitemaps/tests/test_http.py
-../django/contrib/sitemaps/tests/test_https.py
-../django/contrib/sitemaps/tests/base.py
-../django/contrib/sitemaps/tests/urls/https.py
-../django/contrib/sitemaps/tests/urls/http.py
-../django/contrib/sitemaps/tests/urls/__init__.py
-../django/contrib/sessions/serializers.py
-../django/contrib/sessions/models.py
-../django/contrib/sessions/tests.py
-../django/contrib/sessions/__init__.py
-../django/contrib/sessions/exceptions.py
-../django/contrib/sessions/middleware.py
-../django/contrib/sessions/management/__init__.py
-../django/contrib/sessions/management/commands/clearsessions.py
-../django/contrib/sessions/management/commands/__init__.py
-../django/contrib/sessions/backends/cache.py
-../django/contrib/sessions/backends/__init__.py
-../django/contrib/sessions/backends/signed_cookies.py
-../django/contrib/sessions/backends/cached_db.py
-../django/contrib/sessions/backends/file.py
-../django/contrib/sessions/backends/base.py
-../django/contrib/sessions/backends/db.py
-../django/contrib/comments/admin.py
-../django/contrib/comments/managers.py
-../django/contrib/comments/models.py
-../django/contrib/comments/__init__.py
-../django/contrib/comments/moderation.py
-../django/contrib/comments/forms.py
-../django/contrib/comments/signals.py
-../django/contrib/comments/urls.py
-../django/contrib/comments/feeds.py
-../django/contrib/comments/templatetags/comments.py
-../django/contrib/comments/templatetags/__init__.py
-../django/contrib/comments/views/comments.py
-../django/contrib/comments/views/utils.py
-../django/contrib/comments/views/__init__.py
-../django/contrib/comments/views/moderation.py
-../django/contrib/redirects/admin.py
-../django/contrib/redirects/models.py
-../django/contrib/redirects/tests.py
-../django/contrib/redirects/__init__.py
-../django/contrib/redirects/middleware.py
-../django/contrib/gis/models.py
-../django/contrib/gis/__init__.py
-../django/contrib/gis/shortcuts.py
-../django/contrib/gis/feeds.py
-../django/contrib/gis/views.py
-../django/contrib/gis/measure.py
-../django/contrib/gis/forms/__init__.py
-../django/contrib/gis/forms/widgets.py
-../django/contrib/gis/forms/fields.py
-../django/contrib/gis/geometry/test_data.py
-../django/contrib/gis/geometry/__init__.py
-../django/contrib/gis/geometry/regex.py
-../django/contrib/gis/geometry/backend/__init__.py
-../django/contrib/gis/geometry/backend/geos.py
-../django/contrib/gis/maps/__init__.py
-../django/contrib/gis/maps/google/gmap.py
-../django/contrib/gis/maps/google/__init__.py
-../django/contrib/gis/maps/google/overlays.py
-../django/contrib/gis/maps/google/zoom.py
-../django/contrib/gis/maps/openlayers/__init__.py
-../django/contrib/gis/gdal/geometries.py
-../django/contrib/gis/gdal/layer.py
-../django/contrib/gis/gdal/envelope.py
-../django/contrib/gis/gdal/geomtype.py
-../django/contrib/gis/gdal/__init__.py
-../django/contrib/gis/gdal/srs.py
-../django/contrib/gis/gdal/feature.py
-../django/contrib/gis/gdal/driver.py
-../django/contrib/gis/gdal/error.py
-../django/contrib/gis/gdal/datasource.py
-../django/contrib/gis/gdal/base.py
-../django/contrib/gis/gdal/libgdal.py
-../django/contrib/gis/gdal/field.py
-../django/contrib/gis/gdal/prototypes/generation.py
-../django/contrib/gis/gdal/prototypes/errcheck.py
-../django/contrib/gis/gdal/prototypes/__init__.py
-../django/contrib/gis/gdal/prototypes/srs.py
-../django/contrib/gis/gdal/prototypes/geom.py
-../django/contrib/gis/gdal/prototypes/ds.py
-../django/contrib/gis/gdal/tests/test_geom.py
-../django/contrib/gis/gdal/tests/test_envelope.py
-../django/contrib/gis/gdal/tests/__init__.py
-../django/contrib/gis/gdal/tests/test_ds.py
-../django/contrib/gis/gdal/tests/test_srs.py
-../django/contrib/gis/gdal/tests/test_driver.py
-../django/contrib/gis/management/__init__.py
-../django/contrib/gis/management/commands/inspectdb.py
-../django/contrib/gis/management/commands/__init__.py
-../django/contrib/gis/management/commands/ogrinspect.py
-../django/contrib/gis/admin/__init__.py
-../django/contrib/gis/admin/options.py
-../django/contrib/gis/admin/widgets.py
-../django/contrib/gis/sitemaps/georss.py
-../django/contrib/gis/sitemaps/__init__.py
-../django/contrib/gis/sitemaps/kml.py
-../django/contrib/gis/sitemaps/views.py
-../django/contrib/gis/utils/layermapping.py
-../django/contrib/gis/utils/__init__.py
-../django/contrib/gis/utils/wkt.py
-../django/contrib/gis/utils/srs.py
-../django/contrib/gis/utils/ogrinfo.py
-../django/contrib/gis/utils/ogrinspect.py
-../django/contrib/gis/geos/linestring.py
-../django/contrib/gis/geos/collections.py
-../django/contrib/gis/geos/factory.py
-../django/contrib/gis/geos/io.py
-../django/contrib/gis/geos/libgeos.py
-../django/contrib/gis/geos/mutable_list.py
-../django/contrib/gis/geos/__init__.py
-../django/contrib/gis/geos/geometry.py
-../django/contrib/gis/geos/coordseq.py
-../django/contrib/gis/geos/prepared.py
-../django/contrib/gis/geos/point.py
-../django/contrib/gis/geos/error.py
-../django/contrib/gis/geos/base.py
-../django/contrib/gis/geos/polygon.py
-../django/contrib/gis/geos/prototypes/predicates.py
-../django/contrib/gis/geos/prototypes/errcheck.py
-../django/contrib/gis/geos/prototypes/topology.py
-../django/contrib/gis/geos/prototypes/threadsafe.py
-../django/contrib/gis/geos/prototypes/io.py
-../django/contrib/gis/geos/prototypes/__init__.py
-../django/contrib/gis/geos/prototypes/misc.py
-../django/contrib/gis/geos/prototypes/coordseq.py
-../django/contrib/gis/geos/prototypes/prepared.py
-../django/contrib/gis/geos/prototypes/geom.py
-../django/contrib/gis/geos/tests/test_io.py
-../django/contrib/gis/geos/tests/test_geos_mutation.py
-../django/contrib/gis/geos/tests/test_mutable_list.py
-../django/contrib/gis/geos/tests/__init__.py
-../django/contrib/gis/geos/tests/test_geos.py
-../django/contrib/gis/tests/test_spatialrefsys.py
-../django/contrib/gis/tests/test_measure.py
-../django/contrib/gis/tests/utils.py
-../django/contrib/gis/tests/__init__.py
-../django/contrib/gis/tests/test_geoforms.py
-../django/contrib/gis/tests/geo3d/models.py
-../django/contrib/gis/tests/geo3d/tests.py
-../django/contrib/gis/tests/geo3d/__init__.py
-../django/contrib/gis/tests/geo3d/views.py
-../django/contrib/gis/tests/relatedapp/models.py
-../django/contrib/gis/tests/relatedapp/tests.py
-../django/contrib/gis/tests/relatedapp/__init__.py
-../django/contrib/gis/tests/geoadmin/models.py
-../django/contrib/gis/tests/geoadmin/tests.py
-../django/contrib/gis/tests/geoadmin/__init__.py
-../django/contrib/gis/tests/geoadmin/urls.py
-../django/contrib/gis/tests/layermap/models.py
-../django/contrib/gis/tests/layermap/tests.py
-../django/contrib/gis/tests/layermap/__init__.py
-../django/contrib/gis/tests/geogapp/models.py
-../django/contrib/gis/tests/geogapp/tests.py
-../django/contrib/gis/tests/geogapp/__init__.py
-../django/contrib/gis/tests/distapp/models.py
-../django/contrib/gis/tests/distapp/tests.py
-../django/contrib/gis/tests/distapp/__init__.py
-../django/contrib/gis/tests/inspectapp/models.py
-../django/contrib/gis/tests/inspectapp/tests.py
-../django/contrib/gis/tests/inspectapp/__init__.py
-../django/contrib/gis/tests/geoapp/test_sitemaps.py
-../django/contrib/gis/tests/geoapp/test_regress.py
-../django/contrib/gis/tests/geoapp/models.py
-../django/contrib/gis/tests/geoapp/tests.py
-../django/contrib/gis/tests/geoapp/__init__.py
-../django/contrib/gis/tests/geoapp/sitemaps.py
-../django/contrib/gis/tests/geoapp/urls.py
-../django/contrib/gis/tests/geoapp/test_feeds.py
-../django/contrib/gis/tests/geoapp/feeds.py
-../django/contrib/gis/db/__init__.py
-../django/contrib/gis/db/models/query.py
-../django/contrib/gis/db/models/__init__.py
-../django/contrib/gis/db/models/manager.py
-../django/contrib/gis/db/models/aggregates.py
-../django/contrib/gis/db/models/proxy.py
-../django/contrib/gis/db/models/fields.py
-../django/contrib/gis/db/models/sql/query.py
-../django/contrib/gis/db/models/sql/where.py
-../django/contrib/gis/db/models/sql/__init__.py
-../django/contrib/gis/db/models/sql/conversion.py
-../django/contrib/gis/db/models/sql/aggregates.py
-../django/contrib/gis/db/models/sql/compiler.py
-../django/contrib/gis/db/backends/adapter.py
-../django/contrib/gis/db/backends/__init__.py
-../django/contrib/gis/db/backends/base.py
-../django/contrib/gis/db/backends/util.py
-../django/contrib/gis/db/backends/postgis/adapter.py
-../django/contrib/gis/db/backends/postgis/introspection.py
-../django/contrib/gis/db/backends/postgis/models.py
-../django/contrib/gis/db/backends/postgis/__init__.py
-../django/contrib/gis/db/backends/postgis/operations.py
-../django/contrib/gis/db/backends/postgis/creation.py
-../django/contrib/gis/db/backends/postgis/base.py
-../django/contrib/gis/db/backends/spatialite/adapter.py
-../django/contrib/gis/db/backends/spatialite/client.py
-../django/contrib/gis/db/backends/spatialite/introspection.py
-../django/contrib/gis/db/backends/spatialite/models.py
-../django/contrib/gis/db/backends/spatialite/__init__.py
-../django/contrib/gis/db/backends/spatialite/operations.py
-../django/contrib/gis/db/backends/spatialite/creation.py
-../django/contrib/gis/db/backends/spatialite/base.py
-../django/contrib/gis/db/backends/oracle/adapter.py
-../django/contrib/gis/db/backends/oracle/introspection.py
-../django/contrib/gis/db/backends/oracle/models.py
-../django/contrib/gis/db/backends/oracle/__init__.py
-../django/contrib/gis/db/backends/oracle/operations.py
-../django/contrib/gis/db/backends/oracle/creation.py
-../django/contrib/gis/db/backends/oracle/compiler.py
-../django/contrib/gis/db/backends/oracle/base.py
-../django/contrib/gis/db/backends/mysql/introspection.py
-../django/contrib/gis/db/backends/mysql/__init__.py
-../django/contrib/gis/db/backends/mysql/operations.py
-../django/contrib/gis/db/backends/mysql/creation.py
-../django/contrib/gis/db/backends/mysql/compiler.py
-../django/contrib/gis/db/backends/mysql/base.py
-../django/contrib/gis/geoip/tests.py
-../django/contrib/gis/geoip/__init__.py
-../django/contrib/gis/geoip/base.py
-../django/contrib/gis/geoip/prototypes.py
-../django/contrib/gis/geoip/libgeoip.py
-../django/contrib/syndication/__init__.py
-../django/contrib/syndication/views.py
-../django/contrib/contenttypes/management.py
-../django/contrib/contenttypes/generic.py
-../django/contrib/contenttypes/models.py
-../django/contrib/contenttypes/tests.py
-../django/contrib/contenttypes/__init__.py
-../django/contrib/contenttypes/views.py
-../django/contrib/sites/admin.py
-../django/contrib/sites/management.py
-../django/contrib/sites/managers.py
-../django/contrib/sites/models.py
-../django/contrib/sites/tests.py
-../django/contrib/sites/__init__.py
-../django/contrib/admindocs/utils.py
-../django/contrib/admindocs/models.py
-../django/contrib/admindocs/__init__.py
-../django/contrib/admindocs/middleware.py
-../django/contrib/admindocs/urls.py
-../django/contrib/admindocs/views.py
-../django/contrib/admindocs/tests/__init__.py
-../django/contrib/admindocs/tests/test_fields.py
-../django/middleware/cache.py
-../django/middleware/transaction.py
-../django/middleware/locale.py
-../django/middleware/csrf.py
-../django/middleware/http.py
-../django/middleware/common.py
-../django/middleware/__init__.py
-../django/middleware/gzip.py
-../django/middleware/doc.py
-../django/middleware/clickjacking.py
-../django/template/debug.py
-../django/template/smartif.py
-../django/template/__init__.py
-../django/template/response.py
-../django/template/defaultfilters.py
-../django/template/loader_tags.py
-../django/template/loader.py
-../django/template/defaulttags.py
-../django/template/context.py
-../django/template/base.py
-../django/template/loaders/cached.py
-../django/template/loaders/eggs.py
-../django/template/loaders/app_directories.py
-../django/template/loaders/__init__.py
-../django/template/loaders/filesystem.py
-../django/templatetags/cache.py
-../django/templatetags/i18n.py
-../django/templatetags/__init__.py
-../django/templatetags/static.py
-../django/templatetags/future.py
-../django/templatetags/tz.py
-../django/templatetags/l10n.py
-../django/views/csrf.py
-../django/views/i18n.py
-../django/views/debug.py
-../django/views/defaults.py
-../django/views/__init__.py
-../django/views/static.py
-../django/views/generic/dates.py
-../django/views/generic/detail.py
-../django/views/generic/edit.py
-../django/views/generic/__init__.py
-../django/views/generic/list.py
-../django/views/generic/base.py
-../django/views/decorators/cache.py
-../django/views/decorators/csrf.py
-../django/views/decorators/debug.py
-../django/views/decorators/vary.py
-../django/views/decorators/http.py
-../django/views/decorators/__init__.py
-../django/views/decorators/gzip.py
-../django/views/decorators/clickjacking.py
-../django/utils/dates.py
-../django/utils/datastructures.py
-../django/utils/functional.py
-../django/utils/cache.py
-../django/utils/datetime_safe.py
-../django/utils/archive.py
-../django/utils/html.py
-../django/utils/encoding.py
-../django/utils/module_loading.py
-../django/utils/itercompat.py
-../django/utils/dateparse.py
-../django/utils/ipv6.py
-../django/utils/text.py
-../django/utils/image.py
-../django/utils/autoreload.py
-../django/utils/timesince.py
-../django/utils/_os.py
-../django/utils/regex_helper.py
-../django/utils/timezone.py
-../django/utils/http.py
-../django/utils/xmlutils.py
-../django/utils/html_parser.py
-../django/utils/formats.py
-../django/utils/daemonize.py
-../django/utils/__init__.py
-../django/utils/checksums.py
-../django/utils/termcolors.py
-../django/utils/jslex.py
-../django/utils/crypto.py
-../django/utils/tree.py
-../django/utils/version.py
-../django/utils/simplejson.py
-../django/utils/dateformat.py
-../django/utils/synch.py
-../django/utils/safestring.py
-../django/utils/log.py
-../django/utils/baseconv.py
-../django/utils/decorators.py
-../django/utils/dictconfig.py
-../django/utils/importlib.py
-../django/utils/numberformat.py
-../django/utils/tzinfo.py
-../django/utils/six.py
-../django/utils/deprecation.py
-../django/utils/feedgenerator.py
-../django/utils/translation/trans_null.py
-../django/utils/translation/__init__.py
-../django/utils/translation/trans_real.py
-../django/utils/unittest/compatibility.py
-../django/utils/unittest/result.py
-../django/utils/unittest/__main__.py
-../django/utils/unittest/suite.py
-../django/utils/unittest/__init__.py
-../django/utils/unittest/signals.py
-../django/utils/unittest/case.py
-../django/utils/unittest/loader.py
-../django/utils/unittest/collector.py
-../django/utils/unittest/main.py
-../django/utils/unittest/util.py
-../django/utils/unittest/runner.py
-../django/utils/2to3_fixes/fix_unicode.py
-../django/utils/2to3_fixes/__init__.py
-../django/shortcuts/__init__.py
-../django/db/transaction.py
-../django/db/utils.py
-../django/db/__init__.py
-../django/db/models/query.py
-../django/db/models/related.py
-../django/db/models/expressions.py
-../django/db/models/__init__.py
-../django/db/models/options.py
-../django/db/models/query_utils.py
-../django/db/models/manager.py
-../django/db/models/signals.py
-../django/db/models/constants.py
-../django/db/models/aggregates.py
-../django/db/models/deletion.py
-../django/db/models/base.py
-../django/db/models/loading.py
-../django/db/models/sql/datastructures.py
-../django/db/models/sql/query.py
-../django/db/models/sql/where.py
-../django/db/models/sql/expressions.py
-../django/db/models/sql/__init__.py
-../django/db/models/sql/constants.py
-../django/db/models/sql/aggregates.py
-../django/db/models/sql/subqueries.py
-../django/db/models/sql/compiler.py
-../django/db/models/fields/files.py
-../django/db/models/fields/related.py
-../django/db/models/fields/__init__.py
-../django/db/models/fields/subclassing.py
-../django/db/models/fields/proxy.py
-../django/db/backends/__init__.py
-../django/db/backends/creation.py
-../django/db/backends/signals.py
-../django/db/backends/util.py
-../django/db/backends/sqlite3/client.py
-../django/db/backends/sqlite3/introspection.py
-../django/db/backends/sqlite3/__init__.py
-../django/db/backends/sqlite3/creation.py
-../django/db/backends/sqlite3/base.py
-../django/db/backends/oracle/client.py
-../django/db/backends/oracle/introspection.py
-../django/db/backends/oracle/__init__.py
-../django/db/backends/oracle/creation.py
-../django/db/backends/oracle/compiler.py
-../django/db/backends/oracle/base.py
-../django/db/backends/mysql/validation.py
-../django/db/backends/mysql/client.py
-../django/db/backends/mysql/introspection.py
-../django/db/backends/mysql/__init__.py
-../django/db/backends/mysql/creation.py
-../django/db/backends/mysql/compiler.py
-../django/db/backends/mysql/base.py
-../django/db/backends/postgresql_psycopg2/client.py
-../django/db/backends/postgresql_psycopg2/introspection.py
-../django/db/backends/postgresql_psycopg2/__init__.py
-../django/db/backends/postgresql_psycopg2/operations.py
-../django/db/backends/postgresql_psycopg2/creation.py
-../django/db/backends/postgresql_psycopg2/version.py
-../django/db/backends/postgresql_psycopg2/base.py
-../django/db/backends/dummy/__init__.py
-../django/db/backends/dummy/base.py
-../django/test/_doctest.py
-../django/test/html.py
-../django/test/client.py
-../django/test/utils.py
-../django/test/__init__.py
-../django/test/simple.py
-../django/test/signals.py
-../django/test/testcases.py
-../django/test/runner.py
-../django/http/utils.py
-../django/http/__init__.py
-../django/http/request.py
-../django/http/response.py
-../django/http/cookie.py
-../django/http/multipartparser.py
-../django/dispatch/__init__.py
-../django/dispatch/saferef.py
-../django/dispatch/dispatcher.py
-../django/core/wsgi.py
-../django/core/context_processors.py
-../django/core/paginator.py
-../django/core/urlresolvers.py
-../django/core/__init__.py
-../django/core/signing.py
-../django/core/signals.py
-../django/core/exceptions.py
-../django/core/validators.py
-../django/core/handlers/wsgi.py
-../django/core/handlers/__init__.py
-../django/core/handlers/base.py
-../django/core/serializers/__init__.py
-../django/core/serializers/json.py
-../django/core/serializers/xml_serializer.py
-../django/core/serializers/python.py
-../django/core/serializers/base.py
-../django/core/serializers/pyyaml.py
-../django/core/management/validation.py
-../django/core/management/utils.py
-../django/core/management/__init__.py
-../django/core/management/color.py
-../django/core/management/sql.py
-../django/core/management/base.py
-../django/core/management/templates.py
-../django/core/management/commands/sqlclear.py
-../django/core/management/commands/runfcgi.py
-../django/core/management/commands/check.py
-../django/core/management/commands/inspectdb.py
-../django/core/management/commands/test.py
-../django/core/management/commands/syncdb.py
-../django/core/management/commands/runserver.py
-../django/core/management/commands/sqlinitialdata.py
-../django/core/management/commands/sqlcustom.py
-../django/core/management/commands/sqldropindexes.py
-../django/core/management/commands/__init__.py
-../django/core/management/commands/dumpdata.py
-../django/core/management/commands/sqlall.py
-../django/core/management/commands/validate.py
-../django/core/management/commands/createcachetable.py
-../django/core/management/commands/flush.py
-../django/core/management/commands/dbshell.py
-../django/core/management/commands/loaddata.py
-../django/core/management/commands/compilemessages.py
-../django/core/management/commands/startproject.py
-../django/core/management/commands/makemessages.py
-../django/core/management/commands/diffsettings.py
-../django/core/management/commands/testserver.py
-../django/core/management/commands/sqlsequencereset.py
-../django/core/management/commands/cleanup.py
-../django/core/management/commands/sql.py
-../django/core/management/commands/sqlindexes.py
-../django/core/management/commands/startapp.py
-../django/core/management/commands/shell.py
-../django/core/management/commands/sqlflush.py
-../django/core/mail/utils.py
-../django/core/mail/__init__.py
-../django/core/mail/message.py
-../django/core/mail/backends/locmem.py
-../django/core/mail/backends/filebased.py
-../django/core/mail/backends/smtp.py
-../django/core/mail/backends/__init__.py
-../django/core/mail/backends/console.py
-../django/core/mail/backends/dummy.py
-../django/core/mail/backends/base.py
-../django/core/servers/basehttp.py
-../django/core/servers/fastcgi.py
-../django/core/servers/__init__.py
-../django/core/cache/utils.py
-../django/core/cache/__init__.py
-../django/core/cache/backends/memcached.py
-../django/core/cache/backends/locmem.py
-../django/core/cache/backends/filebased.py
-../django/core/cache/backends/__init__.py
-../django/core/cache/backends/dummy.py
-../django/core/cache/backends/base.py
-../django/core/cache/backends/db.py
-../django/core/files/uploadedfile.py
-../django/core/files/move.py
-../django/core/files/locks.py
-../django/core/files/storage.py
-../django/core/files/utils.py
-../django/core/files/temp.py
-../django/core/files/__init__.py
-../django/core/files/images.py
-../django/core/files/base.py
-../django/core/files/uploadhandler.py
-../django/core/checks/__init__.py
-../django/core/checks/compatibility/__init__.py
-../django/core/checks/compatibility/django_1_6_0.py
-../django/core/checks/compatibility/base.py
-../django/bin/daily_cleanup.py
-../django/bin/django-2to3.py
-../django/bin/unique-messages.py
-../django/bin/django-admin.py
-../django/bin/profiling/gather_profile_stats.py
-../django/bin/profiling/__init__.py
-../django/conf/project_template/manage.py
-../django/conf/project_template/project_name/wsgi.py
-../django/conf/project_template/project_name/__init__.py
-../django/conf/project_template/project_name/settings.py
-../django/conf/project_template/project_name/urls.py
-../django/conf/app_template/admin.py
-../django/conf/app_template/models.py
-../django/conf/app_template/tests.py
-../django/conf/app_template/__init__.py
-../django/conf/app_template/views.py
-../django/conf/locale/af/LC_MESSAGES/django.mo
-../django/conf/locale/af/LC_MESSAGES/django.po
-../django/conf/locale/az/LC_MESSAGES/django.mo
-../django/conf/locale/az/LC_MESSAGES/django.po
-../django/conf/locale/os/LC_MESSAGES/django.mo
-../django/conf/locale/os/LC_MESSAGES/django.po
-../django/conf/locale/br/LC_MESSAGES/django.mo
-../django/conf/locale/br/LC_MESSAGES/django.po
-../django/conf/locale/sw/LC_MESSAGES/django.mo
-../django/conf/locale/sw/LC_MESSAGES/django.po
-../django/conf/locale/es_VE/LC_MESSAGES/django.mo
-../django/conf/locale/es_VE/LC_MESSAGES/django.po
-../django/conf/locale/ur/LC_MESSAGES/django.mo
-../django/conf/locale/ur/LC_MESSAGES/django.po
-../django/conf/locale/eo/LC_MESSAGES/django.mo
-../django/conf/locale/eo/LC_MESSAGES/django.po
-../django/conf/locale/pa/LC_MESSAGES/django.mo
-../django/conf/locale/pa/LC_MESSAGES/django.po
-../django/conf/locale/kk/LC_MESSAGES/django.mo
-../django/conf/locale/kk/LC_MESSAGES/django.po
-../django/conf/locale/udm/LC_MESSAGES/django.mo
-../django/conf/locale/udm/LC_MESSAGES/django.po
-../django/conf/locale/ia/LC_MESSAGES/django.mo
-../django/conf/locale/ia/LC_MESSAGES/django.po
-../django/conf/locale/ne/LC_MESSAGES/django.mo
-../django/conf/locale/ne/LC_MESSAGES/django.po
-../django/conf/locale/tt/LC_MESSAGES/django.mo
-../django/conf/locale/tt/LC_MESSAGES/django.po
-../django/conf/locale/be/LC_MESSAGES/django.mo
-../django/conf/locale/be/LC_MESSAGES/django.po
-../django/conf/locale/lb/LC_MESSAGES/django.mo
-../django/conf/locale/lb/LC_MESSAGES/django.po
-../django/conf/locale/my/LC_MESSAGES/django.mo
-../django/conf/locale/my/LC_MESSAGES/django.po
-../django/conf/locale/ko/LC_MESSAGES/django.mo
-../django/conf/locale/ko/LC_MESSAGES/django.po
-../django/conf/locale/ka/LC_MESSAGES/django.mo
-../django/conf/locale/ka/LC_MESSAGES/django.po
-../django/conf/locale/id/LC_MESSAGES/django.mo
-../django/conf/locale/id/LC_MESSAGES/django.po
-../django/conf/locale/sk/LC_MESSAGES/django.mo
-../django/conf/locale/sk/LC_MESSAGES/django.po
-../django/conf/locale/hr/LC_MESSAGES/django.mo
-../django/conf/locale/hr/LC_MESSAGES/django.po
-../django/conf/locale/ja/LC_MESSAGES/django.mo
-../django/conf/locale/ja/LC_MESSAGES/django.po
-../django/conf/locale/ca/LC_MESSAGES/django.mo
-../django/conf/locale/ca/LC_MESSAGES/django.po
-../django/conf/locale/sr/LC_MESSAGES/django.mo
-../django/conf/locale/sr/LC_MESSAGES/django.po
-../django/conf/locale/es_MX/LC_MESSAGES/django.mo
-../django/conf/locale/es_MX/LC_MESSAGES/django.po
-../django/conf/locale/ro/LC_MESSAGES/django.mo
-../django/conf/locale/ro/LC_MESSAGES/django.po
-../django/conf/locale/de/LC_MESSAGES/django.mo
-../django/conf/locale/de/LC_MESSAGES/django.po
-../django/conf/locale/cy/LC_MESSAGES/django.mo
-../django/conf/locale/cy/LC_MESSAGES/django.po
-../django/conf/locale/nl/LC_MESSAGES/django.mo
-../django/conf/locale/nl/LC_MESSAGES/django.po
-../django/conf/locale/tr/LC_MESSAGES/django.mo
-../django/conf/locale/tr/LC_MESSAGES/django.po
-../django/conf/locale/mn/LC_MESSAGES/django.mo
-../django/conf/locale/mn/LC_MESSAGES/django.po
-../django/conf/locale/uk/LC_MESSAGES/django.mo
-../django/conf/locale/uk/LC_MESSAGES/django.po
-../django/conf/locale/sv/LC_MESSAGES/django.mo
-../django/conf/locale/sv/LC_MESSAGES/django.po
-../django/conf/locale/el/LC_MESSAGES/django.mo
-../django/conf/locale/el/LC_MESSAGES/django.po
-../django/conf/locale/ml/LC_MESSAGES/django.mo
-../django/conf/locale/ml/LC_MESSAGES/django.po
-../django/conf/locale/nb/LC_MESSAGES/django.mo
-../django/conf/locale/nb/LC_MESSAGES/django.po
-../django/conf/locale/ru/LC_MESSAGES/django.mo
-../django/conf/locale/ru/LC_MESSAGES/django.po
-../django/conf/locale/kn/LC_MESSAGES/django.mo
-../django/conf/locale/kn/LC_MESSAGES/django.po
-../django/conf/locale/ga/LC_MESSAGES/django.mo
-../django/conf/locale/ga/LC_MESSAGES/django.po
-../django/conf/locale/ta/LC_MESSAGES/django.mo
-../django/conf/locale/ta/LC_MESSAGES/django.po
-../django/conf/locale/fr/LC_MESSAGES/django.mo
-../django/conf/locale/fr/LC_MESSAGES/django.po
-../django/conf/locale/is/LC_MESSAGES/django.mo
-../django/conf/locale/is/LC_MESSAGES/django.po
-../django/conf/locale/da/LC_MESSAGES/django.mo
-../django/conf/locale/da/LC_MESSAGES/django.po
-../django/conf/locale/km/LC_MESSAGES/django.mo
-../django/conf/locale/km/LC_MESSAGES/django.po
-../django/conf/locale/te/LC_MESSAGES/django.mo
-../django/conf/locale/te/LC_MESSAGES/django.po
-../django/conf/locale/sq/LC_MESSAGES/django.mo
-../django/conf/locale/sq/LC_MESSAGES/django.po
-../django/conf/locale/eu/LC_MESSAGES/django.mo
-../django/conf/locale/eu/LC_MESSAGES/django.po
-../django/conf/locale/bg/LC_MESSAGES/django.mo
-../django/conf/locale/bg/LC_MESSAGES/django.po
-../django/conf/locale/hu/LC_MESSAGES/django.mo
-../django/conf/locale/hu/LC_MESSAGES/django.po
-../django/conf/locale/en/LC_MESSAGES/django.mo
-../django/conf/locale/en/LC_MESSAGES/django.po
-../django/conf/locale/es_AR/LC_MESSAGES/django.mo
-../django/conf/locale/es_AR/LC_MESSAGES/django.po
-../django/conf/locale/fa/LC_MESSAGES/django.mo
-../django/conf/locale/fa/LC_MESSAGES/django.po
-../django/conf/locale/gl/LC_MESSAGES/django.mo
-../django/conf/locale/gl/LC_MESSAGES/django.po
-../django/conf/locale/lv/LC_MESSAGES/django.mo
-../django/conf/locale/lv/LC_MESSAGES/django.po
-../django/conf/locale/pt_BR/LC_MESSAGES/django.mo
-../django/conf/locale/pt_BR/LC_MESSAGES/django.po
-../django/conf/locale/zh_TW/LC_MESSAGES/django.mo
-../django/conf/locale/zh_TW/LC_MESSAGES/django.po
-../django/conf/locale/zh_CN/LC_MESSAGES/django.mo
-../django/conf/locale/zh_CN/LC_MESSAGES/django.po
-../django/conf/locale/it/LC_MESSAGES/django.mo
-../django/conf/locale/it/LC_MESSAGES/django.po
-../django/conf/locale/vi/LC_MESSAGES/django.mo
-../django/conf/locale/vi/LC_MESSAGES/django.po
-../django/conf/locale/he/LC_MESSAGES/django.mo
-../django/conf/locale/he/LC_MESSAGES/django.po
-../django/conf/locale/es/LC_MESSAGES/django.mo
-../django/conf/locale/es/LC_MESSAGES/django.po
-../django/conf/locale/bs/LC_MESSAGES/django.mo
-../django/conf/locale/bs/LC_MESSAGES/django.po
-../django/conf/locale/hi/LC_MESSAGES/django.mo
-../django/conf/locale/hi/LC_MESSAGES/django.po
-../django/conf/locale/fy_NL/LC_MESSAGES/django.mo
-../django/conf/locale/fy_NL/LC_MESSAGES/django.po
-../django/conf/locale/pl/LC_MESSAGES/django.mo
-../django/conf/locale/pl/LC_MESSAGES/django.po
-../django/conf/locale/fi/LC_MESSAGES/django.mo
-../django/conf/locale/fi/LC_MESSAGES/django.po
-../django/conf/locale/lt/LC_MESSAGES/django.mo
-../django/conf/locale/lt/LC_MESSAGES/django.po
-../django/conf/locale/mk/LC_MESSAGES/django.mo
-../django/conf/locale/mk/LC_MESSAGES/django.po
-../django/conf/locale/cs/LC_MESSAGES/django.mo
-../django/conf/locale/cs/LC_MESSAGES/django.po
-../django/conf/locale/pt/LC_MESSAGES/django.mo
-../django/conf/locale/pt/LC_MESSAGES/django.po
-../django/conf/locale/et/LC_MESSAGES/django.mo
-../django/conf/locale/et/LC_MESSAGES/django.po
-../django/conf/locale/bn/LC_MESSAGES/django.mo
-../django/conf/locale/bn/LC_MESSAGES/django.po
-../django/conf/locale/ar/LC_MESSAGES/django.mo
-../django/conf/locale/ar/LC_MESSAGES/django.po
-../django/conf/locale/nn/LC_MESSAGES/django.mo
-../django/conf/locale/nn/LC_MESSAGES/django.po
-../django/conf/locale/sl/LC_MESSAGES/django.mo
-../django/conf/locale/sl/LC_MESSAGES/django.po
-../django/conf/locale/th/LC_MESSAGES/django.mo
-../django/conf/locale/th/LC_MESSAGES/django.po
-../django/conf/locale/en_GB/LC_MESSAGES/django.mo
-../django/conf/locale/en_GB/LC_MESSAGES/django.po
-../django/conf/locale/sr_Latn/LC_MESSAGES/django.mo
-../django/conf/locale/sr_Latn/LC_MESSAGES/django.po
-../django/contrib/auth/fixtures/authtestdata.json
-../django/contrib/auth/fixtures/custom_user.json
-../django/contrib/auth/fixtures/context-processors-users.xml
-../django/contrib/auth/fixtures/natural.json
-../django/contrib/auth/fixtures/regular.json
-../django/contrib/auth/templates/registration/password_reset_subject.txt
-../django/contrib/auth/locale/ko/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/ko/LC_MESSAGES/django.po
-../django/contrib/auth/locale/ka/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/ka/LC_MESSAGES/django.po
-../django/contrib/auth/locale/id/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/id/LC_MESSAGES/django.po
-../django/contrib/auth/locale/af/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/af/LC_MESSAGES/django.po
-../django/contrib/auth/locale/sk/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/sk/LC_MESSAGES/django.po
-../django/contrib/auth/locale/hr/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/hr/LC_MESSAGES/django.po
-../django/contrib/auth/locale/ja/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/ja/LC_MESSAGES/django.po
-../django/contrib/auth/locale/ca/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/ca/LC_MESSAGES/django.po
-../django/contrib/auth/locale/sr/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/sr/LC_MESSAGES/django.po
-../django/contrib/auth/locale/es_MX/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/es_MX/LC_MESSAGES/django.po
-../django/contrib/auth/locale/ro/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/ro/LC_MESSAGES/django.po
-../django/contrib/auth/locale/az/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/az/LC_MESSAGES/django.po
-../django/contrib/auth/locale/de/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/de/LC_MESSAGES/django.po
-../django/contrib/auth/locale/cy/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/cy/LC_MESSAGES/django.po
-../django/contrib/auth/locale/nl/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/nl/LC_MESSAGES/django.po
-../django/contrib/auth/locale/tr/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/tr/LC_MESSAGES/django.po
-../django/contrib/auth/locale/mn/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/mn/LC_MESSAGES/django.po
-../django/contrib/auth/locale/uk/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/uk/LC_MESSAGES/django.po
-../django/contrib/auth/locale/os/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/os/LC_MESSAGES/django.po
-../django/contrib/auth/locale/sv/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/sv/LC_MESSAGES/django.po
-../django/contrib/auth/locale/el/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/el/LC_MESSAGES/django.po
-../django/contrib/auth/locale/ml/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/ml/LC_MESSAGES/django.po
-../django/contrib/auth/locale/nb/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/nb/LC_MESSAGES/django.po
-../django/contrib/auth/locale/ru/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/ru/LC_MESSAGES/django.po
-../django/contrib/auth/locale/kn/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/kn/LC_MESSAGES/django.po
-../django/contrib/auth/locale/ga/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/ga/LC_MESSAGES/django.po
-../django/contrib/auth/locale/br/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/br/LC_MESSAGES/django.po
-../django/contrib/auth/locale/sw/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/sw/LC_MESSAGES/django.po
-../django/contrib/auth/locale/ta/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/ta/LC_MESSAGES/django.po
-../django/contrib/auth/locale/fr/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/fr/LC_MESSAGES/django.po
-../django/contrib/auth/locale/is/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/is/LC_MESSAGES/django.po
-../django/contrib/auth/locale/da/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/da/LC_MESSAGES/django.po
-../django/contrib/auth/locale/km/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/km/LC_MESSAGES/django.po
-../django/contrib/auth/locale/te/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/te/LC_MESSAGES/django.po
-../django/contrib/auth/locale/sq/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/sq/LC_MESSAGES/django.po
-../django/contrib/auth/locale/eu/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/eu/LC_MESSAGES/django.po
-../django/contrib/auth/locale/bg/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/bg/LC_MESSAGES/django.po
-../django/contrib/auth/locale/hu/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/hu/LC_MESSAGES/django.po
-../django/contrib/auth/locale/en/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/en/LC_MESSAGES/django.po
-../django/contrib/auth/locale/es_AR/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/es_AR/LC_MESSAGES/django.po
-../django/contrib/auth/locale/fa/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/fa/LC_MESSAGES/django.po
-../django/contrib/auth/locale/gl/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/gl/LC_MESSAGES/django.po
-../django/contrib/auth/locale/lv/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/lv/LC_MESSAGES/django.po
-../django/contrib/auth/locale/ur/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/ur/LC_MESSAGES/django.po
-../django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.po
-../django/contrib/auth/locale/eo/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/eo/LC_MESSAGES/django.po
-../django/contrib/auth/locale/zh_TW/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/zh_TW/LC_MESSAGES/django.po
-../django/contrib/auth/locale/zh_CN/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/zh_CN/LC_MESSAGES/django.po
-../django/contrib/auth/locale/it/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/it/LC_MESSAGES/django.po
-../django/contrib/auth/locale/vi/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/vi/LC_MESSAGES/django.po
-../django/contrib/auth/locale/pa/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/pa/LC_MESSAGES/django.po
-../django/contrib/auth/locale/he/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/he/LC_MESSAGES/django.po
-../django/contrib/auth/locale/kk/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/kk/LC_MESSAGES/django.po
-../django/contrib/auth/locale/es/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/es/LC_MESSAGES/django.po
-../django/contrib/auth/locale/bs/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/bs/LC_MESSAGES/django.po
-../django/contrib/auth/locale/hi/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/hi/LC_MESSAGES/django.po
-../django/contrib/auth/locale/ia/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/ia/LC_MESSAGES/django.po
-../django/contrib/auth/locale/ne/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/ne/LC_MESSAGES/django.po
-../django/contrib/auth/locale/fy_NL/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/fy_NL/LC_MESSAGES/django.po
-../django/contrib/auth/locale/pl/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/pl/LC_MESSAGES/django.po
-../django/contrib/auth/locale/fi/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/fi/LC_MESSAGES/django.po
-../django/contrib/auth/locale/lt/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/lt/LC_MESSAGES/django.po
-../django/contrib/auth/locale/mk/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/mk/LC_MESSAGES/django.po
-../django/contrib/auth/locale/tt/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/tt/LC_MESSAGES/django.po
-../django/contrib/auth/locale/cs/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/cs/LC_MESSAGES/django.po
-../django/contrib/auth/locale/pt/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/pt/LC_MESSAGES/django.po
-../django/contrib/auth/locale/be/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/be/LC_MESSAGES/django.po
-../django/contrib/auth/locale/et/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/et/LC_MESSAGES/django.po
-../django/contrib/auth/locale/bn/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/bn/LC_MESSAGES/django.po
-../django/contrib/auth/locale/ar/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/ar/LC_MESSAGES/django.po
-../django/contrib/auth/locale/nn/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/nn/LC_MESSAGES/django.po
-../django/contrib/auth/locale/sl/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/sl/LC_MESSAGES/django.po
-../django/contrib/auth/locale/th/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/th/LC_MESSAGES/django.po
-../django/contrib/auth/locale/en_GB/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/en_GB/LC_MESSAGES/django.po
-../django/contrib/auth/locale/my/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/my/LC_MESSAGES/django.po
-../django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.mo
-../django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.po
-../django/contrib/auth/tests/templates/registration/password_reset_done.html
-../django/contrib/auth/tests/templates/registration/password_reset_email.html
-../django/contrib/auth/tests/templates/registration/login.html
-../django/contrib/auth/tests/templates/registration/password_reset_confirm.html
-../django/contrib/auth/tests/templates/registration/password_change_form.html
-../django/contrib/auth/tests/templates/registration/password_reset_form.html
-../django/contrib/auth/tests/templates/registration/logged_out.html
-../django/contrib/auth/tests/templates/registration/password_reset_subject.txt
-../django/contrib/auth/tests/templates/registration/password_reset_complete.html
-../django/contrib/auth/tests/templates/context_processors/auth_attrs_user.html
-../django/contrib/auth/tests/templates/context_processors/auth_attrs_messages.html
-../django/contrib/auth/tests/templates/context_processors/auth_attrs_perm_in_perms.html
-../django/contrib/auth/tests/templates/context_processors/auth_attrs_no_access.html
-../django/contrib/auth/tests/templates/context_processors/auth_attrs_test_access.html
-../django/contrib/auth/tests/templates/context_processors/auth_attrs_access.html
-../django/contrib/auth/tests/templates/context_processors/auth_attrs_perms.html
-../django/contrib/flatpages/fixtures/sample_flatpages.json
-../django/contrib/flatpages/fixtures/example_site.json
-../django/contrib/flatpages/locale/ko/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/ko/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/ka/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/ka/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/id/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/id/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/af/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/af/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/sk/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/sk/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/hr/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/hr/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/ja/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/ja/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/ca/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/ca/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/sr/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/sr/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/ro/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/ro/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/az/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/az/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/de/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/de/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/cy/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/cy/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/nl/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/nl/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/tr/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/tr/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/mn/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/mn/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/uk/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/uk/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/os/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/os/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/sv/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/sv/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/el/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/el/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/ml/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/ml/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/nb/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/nb/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/ru/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/ru/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/kn/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/kn/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/ga/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/ga/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/br/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/br/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/sw/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/sw/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/ta/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/ta/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/fr/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/fr/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/is/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/is/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/da/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/da/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/km/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/km/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/te/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/te/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/sq/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/sq/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/eu/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/eu/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/bg/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/bg/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/hu/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/hu/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/en/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/en/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/fa/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/fa/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/gl/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/gl/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/lv/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/lv/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/ur/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/ur/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/eo/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/eo/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/zh_TW/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/zh_TW/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/zh_CN/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/zh_CN/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/it/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/it/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/vi/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/vi/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/pa/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/pa/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/he/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/he/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/kk/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/kk/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/udm/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/udm/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/es/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/es/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/bs/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/bs/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/hi/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/hi/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/ia/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/ia/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/ne/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/ne/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/fy_NL/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/fy_NL/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/pl/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/pl/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/fi/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/fi/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/lt/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/lt/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/mk/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/mk/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/tt/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/tt/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/cs/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/cs/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/pt/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/pt/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/be/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/be/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/et/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/et/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/bn/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/bn/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/ar/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/ar/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/lb/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/lb/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/nn/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/nn/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/sl/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/sl/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/th/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/th/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/my/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/my/LC_MESSAGES/django.po
-../django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.mo
-../django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.po
-../django/contrib/flatpages/tests/templates/404.html
-../django/contrib/flatpages/tests/templates/flatpages/default.html
-../django/contrib/flatpages/tests/templates/registration/login.html
-../django/contrib/humanize/locale/ko/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/ko/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/ka/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/ka/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/id/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/id/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/sk/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/sk/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/hr/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/hr/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/ja/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/ja/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/ca/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/ca/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/sr/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/sr/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/ro/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/ro/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/az/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/az/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/de/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/de/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/cy/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/cy/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/nl/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/nl/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/tr/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/tr/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/mn/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/mn/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/uk/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/uk/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/os/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/os/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/sv/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/sv/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/el/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/el/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/ml/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/ml/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/nb/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/nb/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/ru/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/ru/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/kn/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/kn/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/ga/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/ga/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/br/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/br/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/sw/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/sw/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/ta/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/ta/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/fr/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/fr/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/is/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/is/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/da/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/da/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/km/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/km/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/te/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/te/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/sq/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/sq/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/eu/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/eu/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/bg/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/bg/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/hu/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/hu/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/en/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/en/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/fa/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/fa/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/gl/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/gl/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/lv/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/lv/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/ur/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/ur/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/eo/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/eo/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/zh_TW/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/zh_TW/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/zh_CN/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/zh_CN/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/it/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/it/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/vi/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/vi/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/pa/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/pa/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/he/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/he/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/kk/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/kk/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/es/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/es/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/bs/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/bs/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/hi/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/hi/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/ia/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/ia/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/ne/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/ne/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/fy_NL/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/fy_NL/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/pl/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/pl/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/fi/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/fi/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/lt/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/lt/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/mk/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/mk/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/tt/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/tt/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/cs/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/cs/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/pt/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/pt/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/be/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/be/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/et/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/et/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/bn/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/bn/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/ar/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/ar/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/nn/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/nn/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/sl/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/sl/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/th/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/th/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/my/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/my/LC_MESSAGES/django.po
-../django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.mo
-../django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.po
-../django/contrib/messages/locale/ko/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/ko/LC_MESSAGES/django.po
-../django/contrib/messages/locale/ka/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/ka/LC_MESSAGES/django.po
-../django/contrib/messages/locale/id/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/id/LC_MESSAGES/django.po
-../django/contrib/messages/locale/sk/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/sk/LC_MESSAGES/django.po
-../django/contrib/messages/locale/hr/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/hr/LC_MESSAGES/django.po
-../django/contrib/messages/locale/ja/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/ja/LC_MESSAGES/django.po
-../django/contrib/messages/locale/ca/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/ca/LC_MESSAGES/django.po
-../django/contrib/messages/locale/sr/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/sr/LC_MESSAGES/django.po
-../django/contrib/messages/locale/es_MX/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/es_MX/LC_MESSAGES/django.po
-../django/contrib/messages/locale/ro/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/ro/LC_MESSAGES/django.po
-../django/contrib/messages/locale/az/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/az/LC_MESSAGES/django.po
-../django/contrib/messages/locale/de/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/de/LC_MESSAGES/django.po
-../django/contrib/messages/locale/cy/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/cy/LC_MESSAGES/django.po
-../django/contrib/messages/locale/nl/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/nl/LC_MESSAGES/django.po
-../django/contrib/messages/locale/tr/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/tr/LC_MESSAGES/django.po
-../django/contrib/messages/locale/mn/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/mn/LC_MESSAGES/django.po
-../django/contrib/messages/locale/uk/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/uk/LC_MESSAGES/django.po
-../django/contrib/messages/locale/os/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/os/LC_MESSAGES/django.po
-../django/contrib/messages/locale/sv/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/sv/LC_MESSAGES/django.po
-../django/contrib/messages/locale/el/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/el/LC_MESSAGES/django.po
-../django/contrib/messages/locale/ml/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/ml/LC_MESSAGES/django.po
-../django/contrib/messages/locale/nb/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/nb/LC_MESSAGES/django.po
-../django/contrib/messages/locale/ru/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/ru/LC_MESSAGES/django.po
-../django/contrib/messages/locale/kn/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/kn/LC_MESSAGES/django.po
-../django/contrib/messages/locale/ga/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/ga/LC_MESSAGES/django.po
-../django/contrib/messages/locale/br/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/br/LC_MESSAGES/django.po
-../django/contrib/messages/locale/sw/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/sw/LC_MESSAGES/django.po
-../django/contrib/messages/locale/ta/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/ta/LC_MESSAGES/django.po
-../django/contrib/messages/locale/fr/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/fr/LC_MESSAGES/django.po
-../django/contrib/messages/locale/is/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/is/LC_MESSAGES/django.po
-../django/contrib/messages/locale/da/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/da/LC_MESSAGES/django.po
-../django/contrib/messages/locale/km/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/km/LC_MESSAGES/django.po
-../django/contrib/messages/locale/te/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/te/LC_MESSAGES/django.po
-../django/contrib/messages/locale/sq/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/sq/LC_MESSAGES/django.po
-../django/contrib/messages/locale/eu/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/eu/LC_MESSAGES/django.po
-../django/contrib/messages/locale/bg/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/bg/LC_MESSAGES/django.po
-../django/contrib/messages/locale/hu/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/hu/LC_MESSAGES/django.po
-../django/contrib/messages/locale/en/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/en/LC_MESSAGES/django.po
-../django/contrib/messages/locale/es_AR/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/es_AR/LC_MESSAGES/django.po
-../django/contrib/messages/locale/fa/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/fa/LC_MESSAGES/django.po
-../django/contrib/messages/locale/gl/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/gl/LC_MESSAGES/django.po
-../django/contrib/messages/locale/lv/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/lv/LC_MESSAGES/django.po
-../django/contrib/messages/locale/ur/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/ur/LC_MESSAGES/django.po
-../django/contrib/messages/locale/pt_BR/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/pt_BR/LC_MESSAGES/django.po
-../django/contrib/messages/locale/eo/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/eo/LC_MESSAGES/django.po
-../django/contrib/messages/locale/zh_TW/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/zh_TW/LC_MESSAGES/django.po
-../django/contrib/messages/locale/zh_CN/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/zh_CN/LC_MESSAGES/django.po
-../django/contrib/messages/locale/it/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/it/LC_MESSAGES/django.po
-../django/contrib/messages/locale/vi/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/vi/LC_MESSAGES/django.po
-../django/contrib/messages/locale/pa/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/pa/LC_MESSAGES/django.po
-../django/contrib/messages/locale/he/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/he/LC_MESSAGES/django.po
-../django/contrib/messages/locale/kk/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/kk/LC_MESSAGES/django.po
-../django/contrib/messages/locale/es/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/es/LC_MESSAGES/django.po
-../django/contrib/messages/locale/bs/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/bs/LC_MESSAGES/django.po
-../django/contrib/messages/locale/hi/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/hi/LC_MESSAGES/django.po
-../django/contrib/messages/locale/ia/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/ia/LC_MESSAGES/django.po
-../django/contrib/messages/locale/ne/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/ne/LC_MESSAGES/django.po
-../django/contrib/messages/locale/fy_NL/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/fy_NL/LC_MESSAGES/django.po
-../django/contrib/messages/locale/pl/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/pl/LC_MESSAGES/django.po
-../django/contrib/messages/locale/fi/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/fi/LC_MESSAGES/django.po
-../django/contrib/messages/locale/lt/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/lt/LC_MESSAGES/django.po
-../django/contrib/messages/locale/mk/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/mk/LC_MESSAGES/django.po
-../django/contrib/messages/locale/tt/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/tt/LC_MESSAGES/django.po
-../django/contrib/messages/locale/cs/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/cs/LC_MESSAGES/django.po
-../django/contrib/messages/locale/pt/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/pt/LC_MESSAGES/django.po
-../django/contrib/messages/locale/be/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/be/LC_MESSAGES/django.po
-../django/contrib/messages/locale/et/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/et/LC_MESSAGES/django.po
-../django/contrib/messages/locale/bn/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/bn/LC_MESSAGES/django.po
-../django/contrib/messages/locale/ar/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/ar/LC_MESSAGES/django.po
-../django/contrib/messages/locale/lb/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/lb/LC_MESSAGES/django.po
-../django/contrib/messages/locale/nn/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/nn/LC_MESSAGES/django.po
-../django/contrib/messages/locale/sl/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/sl/LC_MESSAGES/django.po
-../django/contrib/messages/locale/th/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/th/LC_MESSAGES/django.po
-../django/contrib/messages/locale/en_GB/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/en_GB/LC_MESSAGES/django.po
-../django/contrib/messages/locale/my/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/my/LC_MESSAGES/django.po
-../django/contrib/messages/locale/sr_Latn/LC_MESSAGES/django.mo
-../django/contrib/messages/locale/sr_Latn/LC_MESSAGES/django.po
-../django/contrib/admin/templates/registration/password_reset_done.html
-../django/contrib/admin/templates/registration/password_reset_email.html
-../django/contrib/admin/templates/registration/password_reset_confirm.html
-../django/contrib/admin/templates/registration/password_change_form.html
-../django/contrib/admin/templates/registration/password_reset_form.html
-../django/contrib/admin/templates/registration/logged_out.html
-../django/contrib/admin/templates/registration/password_change_done.html
-../django/contrib/admin/templates/registration/password_reset_complete.html
-../django/contrib/admin/templates/admin/change_form.html
-../django/contrib/admin/templates/admin/500.html
-../django/contrib/admin/templates/admin/date_hierarchy.html
-../django/contrib/admin/templates/admin/filter.html
-../django/contrib/admin/templates/admin/change_list_results.html
-../django/contrib/admin/templates/admin/login.html
-../django/contrib/admin/templates/admin/change_list.html
-../django/contrib/admin/templates/admin/submit_line.html
-../django/contrib/admin/templates/admin/index.html
-../django/contrib/admin/templates/admin/base.html
-../django/contrib/admin/templates/admin/pagination.html
-../django/contrib/admin/templates/admin/search_form.html
-../django/contrib/admin/templates/admin/actions.html
-../django/contrib/admin/templates/admin/delete_selected_confirmation.html
-../django/contrib/admin/templates/admin/delete_confirmation.html
-../django/contrib/admin/templates/admin/prepopulated_fields_js.html
-../django/contrib/admin/templates/admin/404.html
-../django/contrib/admin/templates/admin/object_history.html
-../django/contrib/admin/templates/admin/popup_response.html
-../django/contrib/admin/templates/admin/base_site.html
-../django/contrib/admin/templates/admin/invalid_setup.html
-../django/contrib/admin/templates/admin/app_index.html
-../django/contrib/admin/templates/admin/auth/user/add_form.html
-../django/contrib/admin/templates/admin/auth/user/change_password.html
-../django/contrib/admin/templates/admin/includes/fieldset.html
-../django/contrib/admin/templates/admin/edit_inline/stacked.html
-../django/contrib/admin/templates/admin/edit_inline/tabular.html
-../django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/ko/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/ko/LC_MESSAGES/django.po
-../django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/ka/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/ka/LC_MESSAGES/django.po
-../django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/id/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/id/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/id/LC_MESSAGES/django.po
-../django/contrib/admin/locale/af/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/af/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/af/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/af/LC_MESSAGES/django.po
-../django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/sk/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/sk/LC_MESSAGES/django.po
-../django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/hr/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/hr/LC_MESSAGES/django.po
-../django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/ja/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/ja/LC_MESSAGES/django.po
-../django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/ca/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/ca/LC_MESSAGES/django.po
-../django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/sr/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/sr/LC_MESSAGES/django.po
-../django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/es_MX/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/es_MX/LC_MESSAGES/django.po
-../django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/ro/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/ro/LC_MESSAGES/django.po
-../django/contrib/admin/locale/az/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/az/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/az/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/az/LC_MESSAGES/django.po
-../django/contrib/admin/locale/de/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/de/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/de/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/de/LC_MESSAGES/django.po
-../django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/cy/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/cy/LC_MESSAGES/django.po
-../django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/nl/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/nl/LC_MESSAGES/django.po
-../django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/tr/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/tr/LC_MESSAGES/django.po
-../django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/mn/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/mn/LC_MESSAGES/django.po
-../django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/uk/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/uk/LC_MESSAGES/django.po
-../django/contrib/admin/locale/os/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/os/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/os/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/os/LC_MESSAGES/django.po
-../django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/sv/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/sv/LC_MESSAGES/django.po
-../django/contrib/admin/locale/el/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/el/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/el/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/el/LC_MESSAGES/django.po
-../django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/ml/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/ml/LC_MESSAGES/django.po
-../django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/nb/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/nb/LC_MESSAGES/django.po
-../django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/ru/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/ru/LC_MESSAGES/django.po
-../django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/kn/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/kn/LC_MESSAGES/django.po
-../django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/ga/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/ga/LC_MESSAGES/django.po
-../django/contrib/admin/locale/br/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/br/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/br/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/br/LC_MESSAGES/django.po
-../django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/sw/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/sw/LC_MESSAGES/django.po
-../django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/ta/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/ta/LC_MESSAGES/django.po
-../django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/fr/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/fr/LC_MESSAGES/django.po
-../django/contrib/admin/locale/is/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/is/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/is/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/is/LC_MESSAGES/django.po
-../django/contrib/admin/locale/da/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/da/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/da/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/da/LC_MESSAGES/django.po
-../django/contrib/admin/locale/km/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/km/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/km/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/km/LC_MESSAGES/django.po
-../django/contrib/admin/locale/te/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/te/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/te/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/te/LC_MESSAGES/django.po
-../django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/sq/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/sq/LC_MESSAGES/django.po
-../django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/eu/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/eu/LC_MESSAGES/django.po
-../django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/bg/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/bg/LC_MESSAGES/django.po
-../django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/hu/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/hu/LC_MESSAGES/django.po
-../django/contrib/admin/locale/en/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/en/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/en/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/en/LC_MESSAGES/django.po
-../django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po
-../django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/fa/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/fa/LC_MESSAGES/django.po
-../django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/gl/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/gl/LC_MESSAGES/django.po
-../django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/lv/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/lv/LC_MESSAGES/django.po
-../django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/ur/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/ur/LC_MESSAGES/django.po
-../django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po
-../django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/eo/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/eo/LC_MESSAGES/django.po
-../django/contrib/admin/locale/zh_TW/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/zh_TW/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/zh_TW/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/zh_TW/LC_MESSAGES/django.po
-../django/contrib/admin/locale/zh_CN/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/zh_CN/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/zh_CN/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/zh_CN/LC_MESSAGES/django.po
-../django/contrib/admin/locale/it/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/it/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/it/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/it/LC_MESSAGES/django.po
-../django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/vi/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/vi/LC_MESSAGES/django.po
-../django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/pa/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/pa/LC_MESSAGES/django.po
-../django/contrib/admin/locale/he/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/he/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/he/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/he/LC_MESSAGES/django.po
-../django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/kk/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/kk/LC_MESSAGES/django.po
-../django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/udm/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/udm/LC_MESSAGES/django.po
-../django/contrib/admin/locale/es/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/es/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/es/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/es/LC_MESSAGES/django.po
-../django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/bs/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/bs/LC_MESSAGES/django.po
-../django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/hi/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/hi/LC_MESSAGES/django.po
-../django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/ia/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/ia/LC_MESSAGES/django.po
-../django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/ne/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/ne/LC_MESSAGES/django.po
-../django/contrib/admin/locale/fy_NL/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/fy_NL/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/fy_NL/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/fy_NL/LC_MESSAGES/django.po
-../django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/pl/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/pl/LC_MESSAGES/django.po
-../django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/fi/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/fi/LC_MESSAGES/django.po
-../django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/lt/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/lt/LC_MESSAGES/django.po
-../django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/mk/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/mk/LC_MESSAGES/django.po
-../django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/tt/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/tt/LC_MESSAGES/django.po
-../django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/cs/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/cs/LC_MESSAGES/django.po
-../django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/pt/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/pt/LC_MESSAGES/django.po
-../django/contrib/admin/locale/be/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/be/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/be/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/be/LC_MESSAGES/django.po
-../django/contrib/admin/locale/et/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/et/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/et/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/et/LC_MESSAGES/django.po
-../django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/bn/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/bn/LC_MESSAGES/django.po
-../django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/ar/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/ar/LC_MESSAGES/django.po
-../django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/lb/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/lb/LC_MESSAGES/django.po
-../django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/nn/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/nn/LC_MESSAGES/django.po
-../django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/sl/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/sl/LC_MESSAGES/django.po
-../django/contrib/admin/locale/th/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/th/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/th/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/th/LC_MESSAGES/django.po
-../django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/en_GB/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/en_GB/LC_MESSAGES/django.po
-../django/contrib/admin/locale/my/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/my/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/my/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/my/LC_MESSAGES/django.po
-../django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.po
-../django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.mo
-../django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.mo
-../django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.po
-../django/contrib/admin/bin/compress.py
-../django/contrib/admin/static/admin/js/collapse.min.js
-../django/contrib/admin/static/admin/js/inlines.min.js
-../django/contrib/admin/static/admin/js/timeparse.js
-../django/contrib/admin/static/admin/js/inlines.js
-../django/contrib/admin/static/admin/js/calendar.js
-../django/contrib/admin/static/admin/js/core.js
-../django/contrib/admin/static/admin/js/SelectBox.js
-../django/contrib/admin/static/admin/js/actions.js
-../django/contrib/admin/static/admin/js/prepopulate.min.js
-../django/contrib/admin/static/admin/js/urlify.js
-../django/contrib/admin/static/admin/js/SelectFilter2.js
-../django/contrib/admin/static/admin/js/jquery.init.js
-../django/contrib/admin/static/admin/js/jquery.min.js
-../django/contrib/admin/static/admin/js/LICENSE-JQUERY.txt
-../django/contrib/admin/static/admin/js/jquery.js
-../django/contrib/admin/static/admin/js/collapse.js
-../django/contrib/admin/static/admin/js/actions.min.js
-../django/contrib/admin/static/admin/js/prepopulate.js
-../django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js
-../django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js
-../django/contrib/admin/static/admin/css/login.css
-../django/contrib/admin/static/admin/css/forms.css
-../django/contrib/admin/static/admin/css/dashboard.css
-../django/contrib/admin/static/admin/css/widgets.css
-../django/contrib/admin/static/admin/css/rtl.css
-../django/contrib/admin/static/admin/css/base.css
-../django/contrib/admin/static/admin/css/changelists.css
-../django/contrib/admin/static/admin/css/ie.css
-../django/contrib/admin/static/admin/img/icon_success.gif
-../django/contrib/admin/static/admin/img/tooltag-arrowright.gif
-../django/contrib/admin/static/admin/img/inline-restore.png
-../django/contrib/admin/static/admin/img/tooltag-add_over.gif
-../django/contrib/admin/static/admin/img/chooser_stacked-bg.gif
-../django/contrib/admin/static/admin/img/tooltag-arrowright_over.gif
-../django/contrib/admin/static/admin/img/selector-icons.gif
-../django/contrib/admin/static/admin/img/selector-search.gif
-../django/contrib/admin/static/admin/img/default-bg-reverse.gif
-../django/contrib/admin/static/admin/img/deleted-overlay.gif
-../django/contrib/admin/static/admin/img/sorting-icons.gif
-../django/contrib/admin/static/admin/img/inline-restore-8bit.png
-../django/contrib/admin/static/admin/img/icon_error.gif
-../django/contrib/admin/static/admin/img/icon_addlink.gif
-../django/contrib/admin/static/admin/img/icon_changelink.gif
-../django/contrib/admin/static/admin/img/icon-unknown.gif
-../django/contrib/admin/static/admin/img/tool-right_over.gif
-../django/contrib/admin/static/admin/img/icon_searchbox.png
-../django/contrib/admin/static/admin/img/chooser-bg.gif
-../django/contrib/admin/static/admin/img/tool-left_over.gif
-../django/contrib/admin/static/admin/img/nav-bg-grabber.gif
-../django/contrib/admin/static/admin/img/inline-delete-8bit.png
-../django/contrib/admin/static/admin/img/icon_calendar.gif
-../django/contrib/admin/static/admin/img/nav-bg-selected.gif
-../django/contrib/admin/static/admin/img/icon-no.gif
-../django/contrib/admin/static/admin/img/tool-left.gif
-../django/contrib/admin/static/admin/img/inline-splitter-bg.gif
-../django/contrib/admin/static/admin/img/tooltag-add.gif
-../django/contrib/admin/static/admin/img/icon-yes.gif
-../django/contrib/admin/static/admin/img/changelist-bg_rtl.gif
-../django/contrib/admin/static/admin/img/icon_clock.gif
-../django/contrib/admin/static/admin/img/changelist-bg.gif
-../django/contrib/admin/static/admin/img/nav-bg-reverse.gif
-../django/contrib/admin/static/admin/img/inline-delete.png
-../django/contrib/admin/static/admin/img/nav-bg.gif
-../django/contrib/admin/static/admin/img/default-bg.gif
-../django/contrib/admin/static/admin/img/tool-right.gif
-../django/contrib/admin/static/admin/img/icon_deletelink.gif
-../django/contrib/admin/static/admin/img/icon_alert.gif
-../django/contrib/admin/static/admin/img/gis/move_vertex_off.png
-../django/contrib/admin/static/admin/img/gis/move_vertex_on.png
-../django/contrib/formtools/templates/formtools/preview.html
-../django/contrib/formtools/templates/formtools/form.html
-../django/contrib/formtools/templates/formtools/wizard/wizard_form.html
-../django/contrib/formtools/locale/ko/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/ko/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/ka/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/ka/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/id/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/id/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/sk/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/sk/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/hr/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/hr/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/ja/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/ja/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/ca/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/ca/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/sr/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/sr/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/es_MX/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/es_MX/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/ro/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/ro/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/az/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/az/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/de/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/de/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/cy/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/cy/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/nl/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/nl/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/tr/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/tr/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/mn/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/mn/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/uk/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/uk/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/os/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/os/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/sv/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/sv/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/el/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/el/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/ml/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/ml/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/nb/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/nb/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/ru/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/ru/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/kn/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/kn/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/ga/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/ga/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/br/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/br/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/sw/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/sw/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/ta/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/ta/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/fr/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/fr/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/is/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/is/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/da/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/da/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/km/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/km/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/te/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/te/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/sq/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/sq/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/eu/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/eu/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/bg/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/bg/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/hu/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/hu/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/en/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/en/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/es_AR/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/es_AR/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/fa/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/fa/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/gl/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/gl/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/lv/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/lv/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/ur/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/ur/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/pt_BR/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/pt_BR/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/eo/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/eo/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/zh_TW/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/zh_TW/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/zh_CN/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/zh_CN/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/it/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/it/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/vi/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/vi/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/pa/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/pa/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/he/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/he/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/kk/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/kk/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/es/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/es/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/bs/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/bs/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/hi/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/hi/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/ia/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/ia/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/ne/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/ne/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/fy_NL/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/fy_NL/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/pl/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/pl/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/fi/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/fi/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/lt/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/lt/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/mk/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/mk/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/tt/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/tt/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/cs/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/cs/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/pt/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/pt/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/be/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/be/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/et/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/et/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/bn/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/bn/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/ar/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/ar/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/nn/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/nn/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/sl/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/sl/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/th/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/th/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/en_GB/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/en_GB/LC_MESSAGES/django.po
-../django/contrib/formtools/locale/sr_Latn/LC_MESSAGES/django.mo
-../django/contrib/formtools/locale/sr_Latn/LC_MESSAGES/django.po
-../django/contrib/formtools/tests/templates/base.html
-../django/contrib/formtools/tests/templates/404.html
-../django/contrib/formtools/tests/templates/forms/wizard.html
-../django/contrib/formtools/tests/wizard/wizardtests/templates/other_wizard_form.html
-../django/contrib/sitemaps/templates/sitemap_index.xml
-../django/contrib/sitemaps/templates/sitemap.xml
-../django/contrib/sitemaps/tests/templates/custom_sitemap.xml
-../django/contrib/sitemaps/tests/templates/custom_sitemap_index.xml
-../django/contrib/sessions/locale/ko/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/ko/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/ka/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/ka/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/id/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/id/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/sk/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/sk/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/hr/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/hr/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/ja/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/ja/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/ca/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/ca/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/sr/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/sr/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/ro/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/ro/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/az/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/az/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/de/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/de/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/cy/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/cy/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/nl/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/nl/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/tr/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/tr/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/mn/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/mn/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/uk/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/uk/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/os/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/os/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/sv/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/sv/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/el/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/el/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/ml/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/ml/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/nb/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/nb/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/ru/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/ru/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/kn/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/kn/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/ga/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/ga/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/br/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/br/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/sw/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/sw/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/ta/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/ta/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/fr/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/fr/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/is/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/is/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/da/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/da/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/km/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/km/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/te/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/te/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/sq/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/sq/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/eu/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/eu/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/bg/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/bg/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/hu/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/hu/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/en/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/en/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/fa/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/fa/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/gl/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/gl/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/lv/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/lv/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/ur/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/ur/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/eo/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/eo/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/it/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/it/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/vi/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/vi/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/pa/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/pa/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/he/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/he/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/kk/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/kk/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/es/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/es/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/bs/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/bs/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/hi/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/hi/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/ne/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/ne/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/pl/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/pl/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/fi/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/fi/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/lt/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/lt/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/mk/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/mk/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/tt/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/tt/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/cs/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/cs/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/pt/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/pt/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/be/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/be/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/et/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/et/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/bn/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/bn/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/ar/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/ar/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/nn/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/nn/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/sl/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/sl/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/th/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/th/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/my/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/my/LC_MESSAGES/django.po
-../django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.mo
-../django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.po
-../django/contrib/comments/templates/comments/400-debug.html
-../django/contrib/comments/templates/comments/preview.html
-../django/contrib/comments/templates/comments/form.html
-../django/contrib/comments/templates/comments/posted.html
-../django/contrib/comments/templates/comments/delete.html
-../django/contrib/comments/templates/comments/flagged.html
-../django/contrib/comments/templates/comments/approve.html
-../django/contrib/comments/templates/comments/deleted.html
-../django/contrib/comments/templates/comments/base.html
-../django/contrib/comments/templates/comments/approved.html
-../django/contrib/comments/templates/comments/list.html
-../django/contrib/comments/templates/comments/flag.html
-../django/contrib/comments/locale/ko/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/ko/LC_MESSAGES/django.po
-../django/contrib/comments/locale/ka/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/ka/LC_MESSAGES/django.po
-../django/contrib/comments/locale/id/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/id/LC_MESSAGES/django.po
-../django/contrib/comments/locale/af/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/af/LC_MESSAGES/django.po
-../django/contrib/comments/locale/sk/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/sk/LC_MESSAGES/django.po
-../django/contrib/comments/locale/hr/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/hr/LC_MESSAGES/django.po
-../django/contrib/comments/locale/ja/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/ja/LC_MESSAGES/django.po
-../django/contrib/comments/locale/ca/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/ca/LC_MESSAGES/django.po
-../django/contrib/comments/locale/sr/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/sr/LC_MESSAGES/django.po
-../django/contrib/comments/locale/es_MX/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/es_MX/LC_MESSAGES/django.po
-../django/contrib/comments/locale/ro/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/ro/LC_MESSAGES/django.po
-../django/contrib/comments/locale/az/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/az/LC_MESSAGES/django.po
-../django/contrib/comments/locale/de/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/de/LC_MESSAGES/django.po
-../django/contrib/comments/locale/cy/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/cy/LC_MESSAGES/django.po
-../django/contrib/comments/locale/nl/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/nl/LC_MESSAGES/django.po
-../django/contrib/comments/locale/tr/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/tr/LC_MESSAGES/django.po
-../django/contrib/comments/locale/mn/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/mn/LC_MESSAGES/django.po
-../django/contrib/comments/locale/uk/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/uk/LC_MESSAGES/django.po
-../django/contrib/comments/locale/os/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/os/LC_MESSAGES/django.po
-../django/contrib/comments/locale/sv/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/sv/LC_MESSAGES/django.po
-../django/contrib/comments/locale/el/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/el/LC_MESSAGES/django.po
-../django/contrib/comments/locale/ml/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/ml/LC_MESSAGES/django.po
-../django/contrib/comments/locale/nb/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/nb/LC_MESSAGES/django.po
-../django/contrib/comments/locale/ru/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/ru/LC_MESSAGES/django.po
-../django/contrib/comments/locale/kn/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/kn/LC_MESSAGES/django.po
-../django/contrib/comments/locale/ga/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/ga/LC_MESSAGES/django.po
-../django/contrib/comments/locale/br/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/br/LC_MESSAGES/django.po
-../django/contrib/comments/locale/sw/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/sw/LC_MESSAGES/django.po
-../django/contrib/comments/locale/ta/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/ta/LC_MESSAGES/django.po
-../django/contrib/comments/locale/fr/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/fr/LC_MESSAGES/django.po
-../django/contrib/comments/locale/is/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/is/LC_MESSAGES/django.po
-../django/contrib/comments/locale/da/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/da/LC_MESSAGES/django.po
-../django/contrib/comments/locale/km/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/km/LC_MESSAGES/django.po
-../django/contrib/comments/locale/te/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/te/LC_MESSAGES/django.po
-../django/contrib/comments/locale/sq/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/sq/LC_MESSAGES/django.po
-../django/contrib/comments/locale/eu/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/eu/LC_MESSAGES/django.po
-../django/contrib/comments/locale/bg/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/bg/LC_MESSAGES/django.po
-../django/contrib/comments/locale/hu/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/hu/LC_MESSAGES/django.po
-../django/contrib/comments/locale/en/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/en/LC_MESSAGES/django.po
-../django/contrib/comments/locale/es_AR/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/es_AR/LC_MESSAGES/django.po
-../django/contrib/comments/locale/fa/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/fa/LC_MESSAGES/django.po
-../django/contrib/comments/locale/gl/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/gl/LC_MESSAGES/django.po
-../django/contrib/comments/locale/lv/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/lv/LC_MESSAGES/django.po
-../django/contrib/comments/locale/ur/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/ur/LC_MESSAGES/django.po
-../django/contrib/comments/locale/pt_BR/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/pt_BR/LC_MESSAGES/django.po
-../django/contrib/comments/locale/eo/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/eo/LC_MESSAGES/django.po
-../django/contrib/comments/locale/zh_TW/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/zh_TW/LC_MESSAGES/django.po
-../django/contrib/comments/locale/zh_CN/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/zh_CN/LC_MESSAGES/django.po
-../django/contrib/comments/locale/it/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/it/LC_MESSAGES/django.po
-../django/contrib/comments/locale/vi/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/vi/LC_MESSAGES/django.po
-../django/contrib/comments/locale/pa/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/pa/LC_MESSAGES/django.po
-../django/contrib/comments/locale/he/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/he/LC_MESSAGES/django.po
-../django/contrib/comments/locale/kk/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/kk/LC_MESSAGES/django.po
-../django/contrib/comments/locale/es/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/es/LC_MESSAGES/django.po
-../django/contrib/comments/locale/bs/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/bs/LC_MESSAGES/django.po
-../django/contrib/comments/locale/hi/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/hi/LC_MESSAGES/django.po
-../django/contrib/comments/locale/ia/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/ia/LC_MESSAGES/django.po
-../django/contrib/comments/locale/ne/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/ne/LC_MESSAGES/django.po
-../django/contrib/comments/locale/fy_NL/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/fy_NL/LC_MESSAGES/django.po
-../django/contrib/comments/locale/pl/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/pl/LC_MESSAGES/django.po
-../django/contrib/comments/locale/fi/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/fi/LC_MESSAGES/django.po
-../django/contrib/comments/locale/lt/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/lt/LC_MESSAGES/django.po
-../django/contrib/comments/locale/mk/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/mk/LC_MESSAGES/django.po
-../django/contrib/comments/locale/tt/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/tt/LC_MESSAGES/django.po
-../django/contrib/comments/locale/cs/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/cs/LC_MESSAGES/django.po
-../django/contrib/comments/locale/pt/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/pt/LC_MESSAGES/django.po
-../django/contrib/comments/locale/be/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/be/LC_MESSAGES/django.po
-../django/contrib/comments/locale/et/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/et/LC_MESSAGES/django.po
-../django/contrib/comments/locale/bn/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/bn/LC_MESSAGES/django.po
-../django/contrib/comments/locale/ar/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/ar/LC_MESSAGES/django.po
-../django/contrib/comments/locale/lb/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/lb/LC_MESSAGES/django.po
-../django/contrib/comments/locale/nn/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/nn/LC_MESSAGES/django.po
-../django/contrib/comments/locale/sl/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/sl/LC_MESSAGES/django.po
-../django/contrib/comments/locale/th/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/th/LC_MESSAGES/django.po
-../django/contrib/comments/locale/en_GB/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/en_GB/LC_MESSAGES/django.po
-../django/contrib/comments/locale/my/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/my/LC_MESSAGES/django.po
-../django/contrib/comments/locale/sr_Latn/LC_MESSAGES/django.mo
-../django/contrib/comments/locale/sr_Latn/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/ko/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/ko/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/ka/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/ka/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/id/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/id/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/sk/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/sk/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/hr/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/hr/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/ja/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/ja/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/ca/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/ca/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/sr/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/sr/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/ro/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/ro/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/az/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/az/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/de/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/de/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/cy/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/cy/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/nl/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/nl/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/tr/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/tr/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/mn/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/mn/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/uk/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/uk/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/os/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/os/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/sv/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/sv/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/el/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/el/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/ml/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/ml/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/nb/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/nb/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/ru/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/ru/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/kn/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/kn/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/ga/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/ga/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/br/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/br/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/sw/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/sw/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/ta/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/ta/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/fr/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/fr/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/is/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/is/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/da/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/da/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/km/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/km/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/te/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/te/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/sq/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/sq/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/eu/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/eu/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/bg/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/bg/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/hu/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/hu/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/en/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/en/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/fa/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/fa/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/gl/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/gl/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/lv/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/lv/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/ur/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/ur/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/eo/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/eo/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/zh_TW/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/zh_TW/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/zh_CN/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/zh_CN/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/it/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/it/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/vi/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/vi/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/pa/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/pa/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/he/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/he/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/kk/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/kk/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/es/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/es/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/bs/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/bs/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/hi/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/hi/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/ne/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/ne/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/fy_NL/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/fy_NL/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/pl/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/pl/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/fi/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/fi/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/lt/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/lt/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/mk/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/mk/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/tt/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/tt/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/cs/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/cs/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/pt/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/pt/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/be/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/be/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/et/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/et/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/bn/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/bn/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/ar/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/ar/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/nn/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/nn/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/sl/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/sl/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/th/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/th/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.po
-../django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.mo
-../django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.po
-../django/contrib/gis/templates/gis/openlayers.html
-../django/contrib/gis/templates/gis/openlayers-osm.html
-../django/contrib/gis/templates/gis/google/google-single.js
-../django/contrib/gis/templates/gis/google/google-map.html
-../django/contrib/gis/templates/gis/google/google-map.js
-../django/contrib/gis/templates/gis/google/google-multi.js
-../django/contrib/gis/templates/gis/admin/openlayers.html
-../django/contrib/gis/templates/gis/admin/osm.html
-../django/contrib/gis/templates/gis/admin/openlayers.js
-../django/contrib/gis/templates/gis/admin/osm.js
-../django/contrib/gis/templates/gis/sitemaps/geo_sitemap.xml
-../django/contrib/gis/templates/gis/kml/base.kml
-../django/contrib/gis/templates/gis/kml/placemarks.kml
-../django/contrib/gis/locale/ko/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/ko/LC_MESSAGES/django.po
-../django/contrib/gis/locale/ka/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/ka/LC_MESSAGES/django.po
-../django/contrib/gis/locale/id/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/id/LC_MESSAGES/django.po
-../django/contrib/gis/locale/sk/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/sk/LC_MESSAGES/django.po
-../django/contrib/gis/locale/hr/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/hr/LC_MESSAGES/django.po
-../django/contrib/gis/locale/ja/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/ja/LC_MESSAGES/django.po
-../django/contrib/gis/locale/ca/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/ca/LC_MESSAGES/django.po
-../django/contrib/gis/locale/sr/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/sr/LC_MESSAGES/django.po
-../django/contrib/gis/locale/es_MX/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/es_MX/LC_MESSAGES/django.po
-../django/contrib/gis/locale/ro/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/ro/LC_MESSAGES/django.po
-../django/contrib/gis/locale/az/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/az/LC_MESSAGES/django.po
-../django/contrib/gis/locale/de/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/de/LC_MESSAGES/django.po
-../django/contrib/gis/locale/cy/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/cy/LC_MESSAGES/django.po
-../django/contrib/gis/locale/nl/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/nl/LC_MESSAGES/django.po
-../django/contrib/gis/locale/tr/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/tr/LC_MESSAGES/django.po
-../django/contrib/gis/locale/mn/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/mn/LC_MESSAGES/django.po
-../django/contrib/gis/locale/uk/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/uk/LC_MESSAGES/django.po
-../django/contrib/gis/locale/os/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/os/LC_MESSAGES/django.po
-../django/contrib/gis/locale/sv/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/sv/LC_MESSAGES/django.po
-../django/contrib/gis/locale/el/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/el/LC_MESSAGES/django.po
-../django/contrib/gis/locale/ml/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/ml/LC_MESSAGES/django.po
-../django/contrib/gis/locale/nb/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/nb/LC_MESSAGES/django.po
-../django/contrib/gis/locale/ru/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/ru/LC_MESSAGES/django.po
-../django/contrib/gis/locale/kn/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/kn/LC_MESSAGES/django.po
-../django/contrib/gis/locale/ga/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/ga/LC_MESSAGES/django.po
-../django/contrib/gis/locale/br/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/br/LC_MESSAGES/django.po
-../django/contrib/gis/locale/sw/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/sw/LC_MESSAGES/django.po
-../django/contrib/gis/locale/ta/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/ta/LC_MESSAGES/django.po
-../django/contrib/gis/locale/fr/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/fr/LC_MESSAGES/django.po
-../django/contrib/gis/locale/is/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/is/LC_MESSAGES/django.po
-../django/contrib/gis/locale/da/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/da/LC_MESSAGES/django.po
-../django/contrib/gis/locale/km/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/km/LC_MESSAGES/django.po
-../django/contrib/gis/locale/te/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/te/LC_MESSAGES/django.po
-../django/contrib/gis/locale/sq/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/sq/LC_MESSAGES/django.po
-../django/contrib/gis/locale/eu/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/eu/LC_MESSAGES/django.po
-../django/contrib/gis/locale/bg/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/bg/LC_MESSAGES/django.po
-../django/contrib/gis/locale/hu/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/hu/LC_MESSAGES/django.po
-../django/contrib/gis/locale/en/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/en/LC_MESSAGES/django.po
-../django/contrib/gis/locale/es_AR/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/es_AR/LC_MESSAGES/django.po
-../django/contrib/gis/locale/fa/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/fa/LC_MESSAGES/django.po
-../django/contrib/gis/locale/gl/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/gl/LC_MESSAGES/django.po
-../django/contrib/gis/locale/lv/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/lv/LC_MESSAGES/django.po
-../django/contrib/gis/locale/ur/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/ur/LC_MESSAGES/django.po
-../django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.po
-../django/contrib/gis/locale/eo/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/eo/LC_MESSAGES/django.po
-../django/contrib/gis/locale/zh_TW/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/zh_TW/LC_MESSAGES/django.po
-../django/contrib/gis/locale/zh_CN/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/zh_CN/LC_MESSAGES/django.po
-../django/contrib/gis/locale/it/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/it/LC_MESSAGES/django.po
-../django/contrib/gis/locale/vi/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/vi/LC_MESSAGES/django.po
-../django/contrib/gis/locale/pa/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/pa/LC_MESSAGES/django.po
-../django/contrib/gis/locale/he/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/he/LC_MESSAGES/django.po
-../django/contrib/gis/locale/kk/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/kk/LC_MESSAGES/django.po
-../django/contrib/gis/locale/es/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/es/LC_MESSAGES/django.po
-../django/contrib/gis/locale/bs/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/bs/LC_MESSAGES/django.po
-../django/contrib/gis/locale/hi/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/hi/LC_MESSAGES/django.po
-../django/contrib/gis/locale/ia/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/ia/LC_MESSAGES/django.po
-../django/contrib/gis/locale/ne/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/ne/LC_MESSAGES/django.po
-../django/contrib/gis/locale/fy_NL/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/fy_NL/LC_MESSAGES/django.po
-../django/contrib/gis/locale/pl/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/pl/LC_MESSAGES/django.po
-../django/contrib/gis/locale/fi/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/fi/LC_MESSAGES/django.po
-../django/contrib/gis/locale/lt/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/lt/LC_MESSAGES/django.po
-../django/contrib/gis/locale/mk/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/mk/LC_MESSAGES/django.po
-../django/contrib/gis/locale/tt/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/tt/LC_MESSAGES/django.po
-../django/contrib/gis/locale/cs/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/cs/LC_MESSAGES/django.po
-../django/contrib/gis/locale/pt/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/pt/LC_MESSAGES/django.po
-../django/contrib/gis/locale/be/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/be/LC_MESSAGES/django.po
-../django/contrib/gis/locale/et/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/et/LC_MESSAGES/django.po
-../django/contrib/gis/locale/bn/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/bn/LC_MESSAGES/django.po
-../django/contrib/gis/locale/ar/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/ar/LC_MESSAGES/django.po
-../django/contrib/gis/locale/nn/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/nn/LC_MESSAGES/django.po
-../django/contrib/gis/locale/sl/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/sl/LC_MESSAGES/django.po
-../django/contrib/gis/locale/th/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/th/LC_MESSAGES/django.po
-../django/contrib/gis/locale/en_GB/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/en_GB/LC_MESSAGES/django.po
-../django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.mo
-../django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.po
-../django/contrib/gis/static/gis/js/OLMapWidget.js
-../django/contrib/gis/tests/data/texas.dbf
-../django/contrib/gis/tests/data/geometries.json
-../django/contrib/gis/tests/data/test_vrt/test_vrt.csv
-../django/contrib/gis/tests/data/test_vrt/test_vrt.vrt
-../django/contrib/gis/tests/data/test_point/test_point.prj
-../django/contrib/gis/tests/data/test_point/test_point.shx
-../django/contrib/gis/tests/data/test_point/test_point.dbf
-../django/contrib/gis/tests/data/test_point/test_point.shp
-../django/contrib/gis/tests/data/interstates/interstates.shp
-../django/contrib/gis/tests/data/interstates/interstates.dbf
-../django/contrib/gis/tests/data/interstates/interstates.prj
-../django/contrib/gis/tests/data/interstates/interstates.shx
-../django/contrib/gis/tests/data/counties/counties.dbf
-../django/contrib/gis/tests/data/counties/counties.shp
-../django/contrib/gis/tests/data/counties/counties.shx
-../django/contrib/gis/tests/data/invalid/emptypoints.shx
-../django/contrib/gis/tests/data/invalid/emptypoints.shp
-../django/contrib/gis/tests/data/invalid/emptypoints.dbf
-../django/contrib/gis/tests/data/ch-city/ch-city.prj
-../django/contrib/gis/tests/data/ch-city/ch-city.shx
-../django/contrib/gis/tests/data/ch-city/ch-city.shp
-../django/contrib/gis/tests/data/ch-city/ch-city.dbf
-../django/contrib/gis/tests/data/cities/cities.prj
-../django/contrib/gis/tests/data/cities/cities.dbf
-../django/contrib/gis/tests/data/cities/cities.shx
-../django/contrib/gis/tests/data/cities/cities.shp
-../django/contrib/gis/tests/data/test_poly/test_poly.prj
-../django/contrib/gis/tests/data/test_poly/test_poly.shx
-../django/contrib/gis/tests/data/test_poly/test_poly.shp
-../django/contrib/gis/tests/data/test_poly/test_poly.dbf
-../django/contrib/gis/tests/relatedapp/fixtures/initial_data.json.gz
-../django/contrib/gis/tests/geogapp/fixtures/initial_data.json
-../django/contrib/gis/tests/distapp/fixtures/initial_data.json.gz
-../django/contrib/gis/tests/geoapp/fixtures/initial_data.json.gz
-../django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/id/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/id/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/az/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/az/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/de/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/de/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/os/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/os/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/el/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/el/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/br/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/br/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/is/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/is/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/da/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/da/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/km/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/km/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/te/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/te/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/en/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/en/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/zh_TW/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/zh_TW/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/zh_CN/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/zh_CN/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/it/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/it/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/he/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/he/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/es/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/es/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/fy_NL/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/fy_NL/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/be/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/be/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/et/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/et/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/th/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/th/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/my/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/my/LC_MESSAGES/django.po
-../django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.mo
-../django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.po
-../django/contrib/sites/locale/ko/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/ko/LC_MESSAGES/django.po
-../django/contrib/sites/locale/ka/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/ka/LC_MESSAGES/django.po
-../django/contrib/sites/locale/id/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/id/LC_MESSAGES/django.po
-../django/contrib/sites/locale/sk/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/sk/LC_MESSAGES/django.po
-../django/contrib/sites/locale/hr/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/hr/LC_MESSAGES/django.po
-../django/contrib/sites/locale/ja/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/ja/LC_MESSAGES/django.po
-../django/contrib/sites/locale/ca/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/ca/LC_MESSAGES/django.po
-../django/contrib/sites/locale/sr/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/sr/LC_MESSAGES/django.po
-../django/contrib/sites/locale/es_MX/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/es_MX/LC_MESSAGES/django.po
-../django/contrib/sites/locale/ro/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/ro/LC_MESSAGES/django.po
-../django/contrib/sites/locale/az/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/az/LC_MESSAGES/django.po
-../django/contrib/sites/locale/de/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/de/LC_MESSAGES/django.po
-../django/contrib/sites/locale/cy/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/cy/LC_MESSAGES/django.po
-../django/contrib/sites/locale/nl/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/nl/LC_MESSAGES/django.po
-../django/contrib/sites/locale/tr/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/tr/LC_MESSAGES/django.po
-../django/contrib/sites/locale/mn/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/mn/LC_MESSAGES/django.po
-../django/contrib/sites/locale/uk/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/uk/LC_MESSAGES/django.po
-../django/contrib/sites/locale/os/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/os/LC_MESSAGES/django.po
-../django/contrib/sites/locale/sv/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/sv/LC_MESSAGES/django.po
-../django/contrib/sites/locale/el/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/el/LC_MESSAGES/django.po
-../django/contrib/sites/locale/ml/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/ml/LC_MESSAGES/django.po
-../django/contrib/sites/locale/nb/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/nb/LC_MESSAGES/django.po
-../django/contrib/sites/locale/ru/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/ru/LC_MESSAGES/django.po
-../django/contrib/sites/locale/kn/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/kn/LC_MESSAGES/django.po
-../django/contrib/sites/locale/ga/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/ga/LC_MESSAGES/django.po
-../django/contrib/sites/locale/br/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/br/LC_MESSAGES/django.po
-../django/contrib/sites/locale/sw/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/sw/LC_MESSAGES/django.po
-../django/contrib/sites/locale/ta/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/ta/LC_MESSAGES/django.po
-../django/contrib/sites/locale/fr/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/fr/LC_MESSAGES/django.po
-../django/contrib/sites/locale/is/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/is/LC_MESSAGES/django.po
-../django/contrib/sites/locale/da/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/da/LC_MESSAGES/django.po
-../django/contrib/sites/locale/km/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/km/LC_MESSAGES/django.po
-../django/contrib/sites/locale/te/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/te/LC_MESSAGES/django.po
-../django/contrib/sites/locale/sq/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/sq/LC_MESSAGES/django.po
-../django/contrib/sites/locale/eu/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/eu/LC_MESSAGES/django.po
-../django/contrib/sites/locale/bg/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/bg/LC_MESSAGES/django.po
-../django/contrib/sites/locale/hu/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/hu/LC_MESSAGES/django.po
-../django/contrib/sites/locale/en/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/en/LC_MESSAGES/django.po
-../django/contrib/sites/locale/es_AR/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/es_AR/LC_MESSAGES/django.po
-../django/contrib/sites/locale/fa/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/fa/LC_MESSAGES/django.po
-../django/contrib/sites/locale/gl/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/gl/LC_MESSAGES/django.po
-../django/contrib/sites/locale/lv/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/lv/LC_MESSAGES/django.po
-../django/contrib/sites/locale/ur/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/ur/LC_MESSAGES/django.po
-../django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.po
-../django/contrib/sites/locale/eo/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/eo/LC_MESSAGES/django.po
-../django/contrib/sites/locale/zh_TW/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/zh_TW/LC_MESSAGES/django.po
-../django/contrib/sites/locale/zh_CN/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/zh_CN/LC_MESSAGES/django.po
-../django/contrib/sites/locale/it/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/it/LC_MESSAGES/django.po
-../django/contrib/sites/locale/vi/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/vi/LC_MESSAGES/django.po
-../django/contrib/sites/locale/pa/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/pa/LC_MESSAGES/django.po
-../django/contrib/sites/locale/he/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/he/LC_MESSAGES/django.po
-../django/contrib/sites/locale/kk/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/kk/LC_MESSAGES/django.po
-../django/contrib/sites/locale/es/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/es/LC_MESSAGES/django.po
-../django/contrib/sites/locale/bs/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/bs/LC_MESSAGES/django.po
-../django/contrib/sites/locale/hi/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/hi/LC_MESSAGES/django.po
-../django/contrib/sites/locale/ne/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/ne/LC_MESSAGES/django.po
-../django/contrib/sites/locale/fy_NL/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/fy_NL/LC_MESSAGES/django.po
-../django/contrib/sites/locale/pl/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/pl/LC_MESSAGES/django.po
-../django/contrib/sites/locale/fi/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/fi/LC_MESSAGES/django.po
-../django/contrib/sites/locale/lt/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/lt/LC_MESSAGES/django.po
-../django/contrib/sites/locale/mk/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/mk/LC_MESSAGES/django.po
-../django/contrib/sites/locale/tt/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/tt/LC_MESSAGES/django.po
-../django/contrib/sites/locale/cs/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/cs/LC_MESSAGES/django.po
-../django/contrib/sites/locale/pt/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/pt/LC_MESSAGES/django.po
-../django/contrib/sites/locale/be/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/be/LC_MESSAGES/django.po
-../django/contrib/sites/locale/et/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/et/LC_MESSAGES/django.po
-../django/contrib/sites/locale/bn/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/bn/LC_MESSAGES/django.po
-../django/contrib/sites/locale/ar/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/ar/LC_MESSAGES/django.po
-../django/contrib/sites/locale/nn/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/nn/LC_MESSAGES/django.po
-../django/contrib/sites/locale/sl/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/sl/LC_MESSAGES/django.po
-../django/contrib/sites/locale/th/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/th/LC_MESSAGES/django.po
-../django/contrib/sites/locale/en_GB/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/en_GB/LC_MESSAGES/django.po
-../django/contrib/sites/locale/my/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/my/LC_MESSAGES/django.po
-../django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.mo
-../django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.po
-../django/contrib/admindocs/templates/admin_doc/template_tag_index.html
-../django/contrib/admindocs/templates/admin_doc/missing_docutils.html
-../django/contrib/admindocs/templates/admin_doc/model_detail.html
-../django/contrib/admindocs/templates/admin_doc/index.html
-../django/contrib/admindocs/templates/admin_doc/bookmarklets.html
-../django/contrib/admindocs/templates/admin_doc/view_index.html
-../django/contrib/admindocs/templates/admin_doc/template_detail.html
-../django/contrib/admindocs/templates/admin_doc/model_index.html
-../django/contrib/admindocs/templates/admin_doc/template_filter_index.html
-../django/contrib/admindocs/templates/admin_doc/view_detail.html
-../django/contrib/admindocs/locale/ko/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/ko/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/ka/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/ka/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/id/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/id/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/af/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/af/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/sk/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/sk/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/hr/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/hr/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/ja/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/ja/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/ca/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/ca/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/sr/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/sr/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/ro/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/ro/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/az/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/az/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/de/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/de/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/cy/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/cy/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/nl/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/nl/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/tr/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/tr/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/mn/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/mn/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/uk/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/uk/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/os/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/os/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/sv/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/sv/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/el/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/el/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/ml/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/ml/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/nb/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/nb/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/ru/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/ru/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/kn/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/kn/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/ga/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/ga/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/br/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/br/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/sw/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/sw/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/ta/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/ta/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/fr/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/fr/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/is/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/is/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/da/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/da/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/km/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/km/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/te/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/te/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/sq/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/sq/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/eu/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/eu/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/bg/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/bg/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/hu/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/hu/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/en/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/en/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/fa/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/fa/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/gl/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/gl/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/lv/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/lv/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/ur/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/ur/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/eo/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/eo/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/zh_TW/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/zh_TW/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/zh_CN/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/zh_CN/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/it/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/it/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/vi/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/vi/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/pa/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/pa/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/he/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/he/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/kk/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/kk/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/udm/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/udm/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/es/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/es/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/bs/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/bs/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/hi/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/hi/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/ia/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/ia/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/ne/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/ne/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/fy_NL/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/fy_NL/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/pl/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/pl/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/fi/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/fi/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/lt/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/lt/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/mk/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/mk/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/tt/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/tt/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/cs/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/cs/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/pt/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/pt/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/be/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/be/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/et/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/et/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/bn/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/bn/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/ar/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/ar/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/nn/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/nn/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/sl/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/sl/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/th/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/th/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/my/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/my/LC_MESSAGES/django.po
-../django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.mo
-../django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.po
-../django/__init__.pyc
-../django/forms/formsets.pyc
-../django/forms/models.pyc
-../django/forms/__init__.pyc
-../django/forms/forms.pyc
-../django/forms/widgets.pyc
-../django/forms/util.pyc
-../django/forms/fields.pyc
-../django/forms/extras/__init__.pyc
-../django/forms/extras/widgets.pyc
-../django/conf/__init__.pyc
-../django/conf/global_settings.pyc
-../django/conf/urls/i18n.pyc
-../django/conf/urls/__init__.pyc
-../django/conf/urls/static.pyc
-../django/conf/urls/shortcut.pyc
-../django/conf/locale/__init__.pyc
-../django/conf/locale/ko/formats.pyc
-../django/conf/locale/ko/__init__.pyc
-../django/conf/locale/ka/formats.pyc
-../django/conf/locale/ka/__init__.pyc
-../django/conf/locale/id/formats.pyc
-../django/conf/locale/id/__init__.pyc
-../django/conf/locale/sk/formats.pyc
-../django/conf/locale/sk/__init__.pyc
-../django/conf/locale/hr/formats.pyc
-../django/conf/locale/hr/__init__.pyc
-../django/conf/locale/ja/formats.pyc
-../django/conf/locale/ja/__init__.pyc
-../django/conf/locale/ca/formats.pyc
-../django/conf/locale/ca/__init__.pyc
-../django/conf/locale/sr/formats.pyc
-../django/conf/locale/sr/__init__.pyc
-../django/conf/locale/es_MX/formats.pyc
-../django/conf/locale/es_MX/__init__.pyc
-../django/conf/locale/ro/formats.pyc
-../django/conf/locale/ro/__init__.pyc
-../django/conf/locale/es_PR/formats.pyc
-../django/conf/locale/es_PR/__init__.pyc
-../django/conf/locale/de_CH/formats.pyc
-../django/conf/locale/de_CH/__init__.pyc
-../django/conf/locale/de/formats.pyc
-../django/conf/locale/de/__init__.pyc
-../django/conf/locale/cy/formats.pyc
-../django/conf/locale/cy/__init__.pyc
-../django/conf/locale/nl/formats.pyc
-../django/conf/locale/nl/__init__.pyc
-../django/conf/locale/tr/formats.pyc
-../django/conf/locale/tr/__init__.pyc
-../django/conf/locale/mn/formats.pyc
-../django/conf/locale/mn/__init__.pyc
-../django/conf/locale/uk/formats.pyc
-../django/conf/locale/uk/__init__.pyc
-../django/conf/locale/sv/formats.pyc
-../django/conf/locale/sv/__init__.pyc
-../django/conf/locale/el/formats.pyc
-../django/conf/locale/el/__init__.pyc
-../django/conf/locale/ml/formats.pyc
-../django/conf/locale/ml/__init__.pyc
-../django/conf/locale/nb/formats.pyc
-../django/conf/locale/nb/__init__.pyc
-../django/conf/locale/ru/formats.pyc
-../django/conf/locale/ru/__init__.pyc
-../django/conf/locale/kn/formats.pyc
-../django/conf/locale/kn/__init__.pyc
-../django/conf/locale/ga/formats.pyc
-../django/conf/locale/ga/__init__.pyc
-../django/conf/locale/ta/formats.pyc
-../django/conf/locale/ta/__init__.pyc
-../django/conf/locale/fr/formats.pyc
-../django/conf/locale/fr/__init__.pyc
-../django/conf/locale/is/formats.pyc
-../django/conf/locale/is/__init__.pyc
-../django/conf/locale/da/formats.pyc
-../django/conf/locale/da/__init__.pyc
-../django/conf/locale/km/formats.pyc
-../django/conf/locale/km/__init__.pyc
-../django/conf/locale/te/formats.pyc
-../django/conf/locale/te/__init__.pyc
-../django/conf/locale/sq/formats.pyc
-../django/conf/locale/sq/__init__.pyc
-../django/conf/locale/eu/formats.pyc
-../django/conf/locale/eu/__init__.pyc
-../django/conf/locale/bg/formats.pyc
-../django/conf/locale/bg/__init__.pyc
-../django/conf/locale/hu/formats.pyc
-../django/conf/locale/hu/__init__.pyc
-../django/conf/locale/es_NI/formats.pyc
-../django/conf/locale/es_NI/__init__.pyc
-../django/conf/locale/en/formats.pyc
-../django/conf/locale/en/__init__.pyc
-../django/conf/locale/es_AR/formats.pyc
-../django/conf/locale/es_AR/__init__.pyc
-../django/conf/locale/fa/formats.pyc
-../django/conf/locale/fa/__init__.pyc
-../django/conf/locale/gl/formats.pyc
-../django/conf/locale/gl/__init__.pyc
-../django/conf/locale/lv/formats.pyc
-../django/conf/locale/lv/__init__.pyc
-../django/conf/locale/pt_BR/formats.pyc
-../django/conf/locale/pt_BR/__init__.pyc
-../django/conf/locale/zh_TW/formats.pyc
-../django/conf/locale/zh_TW/__init__.pyc
-../django/conf/locale/zh_CN/formats.pyc
-../django/conf/locale/zh_CN/__init__.pyc
-../django/conf/locale/it/formats.pyc
-../django/conf/locale/it/__init__.pyc
-../django/conf/locale/vi/formats.pyc
-../django/conf/locale/vi/__init__.pyc
-../django/conf/locale/he/formats.pyc
-../django/conf/locale/he/__init__.pyc
-../django/conf/locale/es/formats.pyc
-../django/conf/locale/es/__init__.pyc
-../django/conf/locale/bs/formats.pyc
-../django/conf/locale/bs/__init__.pyc
-../django/conf/locale/hi/formats.pyc
-../django/conf/locale/hi/__init__.pyc
-../django/conf/locale/fy_NL/formats.pyc
-../django/conf/locale/fy_NL/__init__.pyc
-../django/conf/locale/pl/formats.pyc
-../django/conf/locale/pl/__init__.pyc
-../django/conf/locale/fi/formats.pyc
-../django/conf/locale/fi/__init__.pyc
-../django/conf/locale/lt/formats.pyc
-../django/conf/locale/lt/__init__.pyc
-../django/conf/locale/mk/formats.pyc
-../django/conf/locale/mk/__init__.pyc
-../django/conf/locale/cs/formats.pyc
-../django/conf/locale/cs/__init__.pyc
-../django/conf/locale/pt/formats.pyc
-../django/conf/locale/pt/__init__.pyc
-../django/conf/locale/et/formats.pyc
-../django/conf/locale/et/__init__.pyc
-../django/conf/locale/bn/formats.pyc
-../django/conf/locale/bn/__init__.pyc
-../django/conf/locale/ar/formats.pyc
-../django/conf/locale/ar/__init__.pyc
-../django/conf/locale/nn/formats.pyc
-../django/conf/locale/nn/__init__.pyc
-../django/conf/locale/sl/formats.pyc
-../django/conf/locale/sl/__init__.pyc
-../django/conf/locale/th/formats.pyc
-../django/conf/locale/th/__init__.pyc
-../django/conf/locale/en_GB/formats.pyc
-../django/conf/locale/en_GB/__init__.pyc
-../django/conf/locale/sr_Latn/formats.pyc
-../django/conf/locale/sr_Latn/__init__.pyc
-../django/contrib/__init__.pyc
-../django/contrib/auth/admin.pyc
-../django/contrib/auth/backends.pyc
-../django/contrib/auth/context_processors.pyc
-../django/contrib/auth/models.pyc
-../django/contrib/auth/__init__.pyc
-../django/contrib/auth/forms.pyc
-../django/contrib/auth/create_superuser.pyc
-../django/contrib/auth/signals.pyc
-../django/contrib/auth/decorators.pyc
-../django/contrib/auth/middleware.pyc
-../django/contrib/auth/urls.pyc
-../django/contrib/auth/hashers.pyc
-../django/contrib/auth/views.pyc
-../django/contrib/auth/tokens.pyc
-../django/contrib/auth/handlers/modwsgi.pyc
-../django/contrib/auth/handlers/__init__.pyc
-../django/contrib/auth/management/__init__.pyc
-../django/contrib/auth/management/commands/changepassword.pyc
-../django/contrib/auth/management/commands/__init__.pyc
-../django/contrib/auth/management/commands/createsuperuser.pyc
-../django/contrib/auth/tests/test_decorators.pyc
-../django/contrib/auth/tests/test_management.pyc
-../django/contrib/auth/tests/test_views.pyc
-../django/contrib/auth/tests/test_context_processors.pyc
-../django/contrib/auth/tests/utils.pyc
-../django/contrib/auth/tests/__init__.pyc
-../django/contrib/auth/tests/test_handlers.pyc
-../django/contrib/auth/tests/urls_admin.pyc
-../django/contrib/auth/tests/test_models.pyc
-../django/contrib/auth/tests/test_forms.pyc
-../django/contrib/auth/tests/test_auth_backends.pyc
-../django/contrib/auth/tests/test_signals.pyc
-../django/contrib/auth/tests/test_tokens.pyc
-../django/contrib/auth/tests/test_hashers.pyc
-../django/contrib/auth/tests/urls.pyc
-../django/contrib/auth/tests/test_basic.pyc
-../django/contrib/auth/tests/custom_user.pyc
-../django/contrib/auth/tests/test_remote_user.pyc
-../django/contrib/flatpages/admin.pyc
-../django/contrib/flatpages/models.pyc
-../django/contrib/flatpages/__init__.pyc
-../django/contrib/flatpages/forms.pyc
-../django/contrib/flatpages/middleware.pyc
-../django/contrib/flatpages/urls.pyc
-../django/contrib/flatpages/views.pyc
-../django/contrib/flatpages/templatetags/flatpages.pyc
-../django/contrib/flatpages/templatetags/__init__.pyc
-../django/contrib/flatpages/tests/test_csrf.pyc
-../django/contrib/flatpages/tests/test_views.pyc
-../django/contrib/flatpages/tests/test_templatetags.pyc
-../django/contrib/flatpages/tests/__init__.pyc
-../django/contrib/flatpages/tests/test_models.pyc
-../django/contrib/flatpages/tests/test_forms.pyc
-../django/contrib/flatpages/tests/urls.pyc
-../django/contrib/flatpages/tests/test_middleware.pyc
-../django/contrib/humanize/models.pyc
-../django/contrib/humanize/tests.pyc
-../django/contrib/humanize/__init__.pyc
-../django/contrib/humanize/templatetags/humanize.pyc
-../django/contrib/humanize/templatetags/__init__.pyc
-../django/contrib/messages/context_processors.pyc
-../django/contrib/messages/utils.pyc
-../django/contrib/messages/models.pyc
-../django/contrib/messages/__init__.pyc
-../django/contrib/messages/api.pyc
-../django/contrib/messages/constants.pyc
-../django/contrib/messages/middleware.pyc
-../django/contrib/messages/views.pyc
-../django/contrib/messages/storage/__init__.pyc
-../django/contrib/messages/storage/cookie.pyc
-../django/contrib/messages/storage/fallback.pyc
-../django/contrib/messages/storage/session.pyc
-../django/contrib/messages/storage/base.pyc
-../django/contrib/messages/tests/test_session.pyc
-../django/contrib/messages/tests/test_cookie.pyc
-../django/contrib/messages/tests/test_fallback.pyc
-../django/contrib/messages/tests/test_mixins.pyc
-../django/contrib/messages/tests/__init__.pyc
-../django/contrib/messages/tests/urls.pyc
-../django/contrib/messages/tests/test_middleware.pyc
-../django/contrib/messages/tests/base.pyc
-../django/contrib/admin/validation.pyc
-../django/contrib/admin/actions.pyc
-../django/contrib/admin/models.pyc
-../django/contrib/admin/tests.pyc
-../django/contrib/admin/__init__.pyc
-../django/contrib/admin/options.pyc
-../django/contrib/admin/sites.pyc
-../django/contrib/admin/forms.pyc
-../django/contrib/admin/filters.pyc
-../django/contrib/admin/exceptions.pyc
-../django/contrib/admin/widgets.pyc
-../django/contrib/admin/util.pyc
-../django/contrib/admin/helpers.pyc
-../django/contrib/admin/templatetags/admin_urls.pyc
-../django/contrib/admin/templatetags/__init__.pyc
-../django/contrib/admin/templatetags/log.pyc
-../django/contrib/admin/templatetags/admin_modify.pyc
-../django/contrib/admin/templatetags/admin_static.pyc
-../django/contrib/admin/templatetags/admin_list.pyc
-../django/contrib/admin/views/__init__.pyc
-../django/contrib/admin/views/decorators.pyc
-../django/contrib/admin/views/main.pyc
-../django/contrib/webdesign/lorem_ipsum.pyc
-../django/contrib/webdesign/models.pyc
-../django/contrib/webdesign/tests.pyc
-../django/contrib/webdesign/__init__.pyc
-../django/contrib/webdesign/templatetags/__init__.pyc
-../django/contrib/webdesign/templatetags/webdesign.pyc
-../django/contrib/formtools/utils.pyc
-../django/contrib/formtools/models.pyc
-../django/contrib/formtools/__init__.pyc
-../django/contrib/formtools/preview.pyc
-../django/contrib/formtools/exceptions.pyc
-../django/contrib/formtools/wizard/__init__.pyc
-../django/contrib/formtools/wizard/forms.pyc
-../django/contrib/formtools/wizard/views.pyc
-../django/contrib/formtools/wizard/storage/__init__.pyc
-../django/contrib/formtools/wizard/storage/cookie.pyc
-../django/contrib/formtools/wizard/storage/exceptions.pyc
-../django/contrib/formtools/wizard/storage/session.pyc
-../django/contrib/formtools/wizard/storage/base.pyc
-../django/contrib/formtools/tests/tests.pyc
-../django/contrib/formtools/tests/__init__.pyc
-../django/contrib/formtools/tests/forms.pyc
-../django/contrib/formtools/tests/urls.pyc
-../django/contrib/formtools/tests/wizard/storage.pyc
-../django/contrib/formtools/tests/wizard/__init__.pyc
-../django/contrib/formtools/tests/wizard/test_cookiestorage.pyc
-../django/contrib/formtools/tests/wizard/test_forms.pyc
-../django/contrib/formtools/tests/wizard/test_loadstorage.pyc
-../django/contrib/formtools/tests/wizard/test_sessionstorage.pyc
-../django/contrib/formtools/tests/wizard/namedwizardtests/tests.pyc
-../django/contrib/formtools/tests/wizard/namedwizardtests/__init__.pyc
-../django/contrib/formtools/tests/wizard/namedwizardtests/forms.pyc
-../django/contrib/formtools/tests/wizard/namedwizardtests/urls.pyc
-../django/contrib/formtools/tests/wizard/wizardtests/tests.pyc
-../django/contrib/formtools/tests/wizard/wizardtests/__init__.pyc
-../django/contrib/formtools/tests/wizard/wizardtests/forms.pyc
-../django/contrib/formtools/tests/wizard/wizardtests/urls.pyc
-../django/contrib/staticfiles/storage.pyc
-../django/contrib/staticfiles/finders.pyc
-../django/contrib/staticfiles/utils.pyc
-../django/contrib/staticfiles/models.pyc
-../django/contrib/staticfiles/__init__.pyc
-../django/contrib/staticfiles/urls.pyc
-../django/contrib/staticfiles/handlers.pyc
-../django/contrib/staticfiles/views.pyc
-../django/contrib/staticfiles/templatetags/staticfiles.pyc
-../django/contrib/staticfiles/templatetags/__init__.pyc
-../django/contrib/staticfiles/management/__init__.pyc
-../django/contrib/staticfiles/management/commands/findstatic.pyc
-../django/contrib/staticfiles/management/commands/runserver.pyc
-../django/contrib/staticfiles/management/commands/__init__.pyc
-../django/contrib/staticfiles/management/commands/collectstatic.pyc
-../django/contrib/sitemaps/models.pyc
-../django/contrib/sitemaps/__init__.pyc
-../django/contrib/sitemaps/views.pyc
-../django/contrib/sitemaps/management/__init__.pyc
-../django/contrib/sitemaps/management/commands/__init__.pyc
-../django/contrib/sitemaps/management/commands/ping_google.pyc
-../django/contrib/sitemaps/tests/test_generic.pyc
-../django/contrib/sitemaps/tests/test_flatpages.pyc
-../django/contrib/sitemaps/tests/__init__.pyc
-../django/contrib/sitemaps/tests/test_http.pyc
-../django/contrib/sitemaps/tests/test_https.pyc
-../django/contrib/sitemaps/tests/base.pyc
-../django/contrib/sitemaps/tests/urls/https.pyc
-../django/contrib/sitemaps/tests/urls/http.pyc
-../django/contrib/sitemaps/tests/urls/__init__.pyc
-../django/contrib/sessions/serializers.pyc
-../django/contrib/sessions/models.pyc
-../django/contrib/sessions/tests.pyc
-../django/contrib/sessions/__init__.pyc
-../django/contrib/sessions/exceptions.pyc
-../django/contrib/sessions/middleware.pyc
-../django/contrib/sessions/management/__init__.pyc
-../django/contrib/sessions/management/commands/clearsessions.pyc
-../django/contrib/sessions/management/commands/__init__.pyc
-../django/contrib/sessions/backends/cache.pyc
-../django/contrib/sessions/backends/__init__.pyc
-../django/contrib/sessions/backends/signed_cookies.pyc
-../django/contrib/sessions/backends/cached_db.pyc
-../django/contrib/sessions/backends/file.pyc
-../django/contrib/sessions/backends/base.pyc
-../django/contrib/sessions/backends/db.pyc
-../django/contrib/comments/admin.pyc
-../django/contrib/comments/managers.pyc
-../django/contrib/comments/models.pyc
-../django/contrib/comments/__init__.pyc
-../django/contrib/comments/moderation.pyc
-../django/contrib/comments/forms.pyc
-../django/contrib/comments/signals.pyc
-../django/contrib/comments/urls.pyc
-../django/contrib/comments/feeds.pyc
-../django/contrib/comments/templatetags/comments.pyc
-../django/contrib/comments/templatetags/__init__.pyc
-../django/contrib/comments/views/comments.pyc
-../django/contrib/comments/views/utils.pyc
-../django/contrib/comments/views/__init__.pyc
-../django/contrib/comments/views/moderation.pyc
-../django/contrib/redirects/admin.pyc
-../django/contrib/redirects/models.pyc
-../django/contrib/redirects/tests.pyc
-../django/contrib/redirects/__init__.pyc
-../django/contrib/redirects/middleware.pyc
-../django/contrib/gis/models.pyc
-../django/contrib/gis/__init__.pyc
-../django/contrib/gis/shortcuts.pyc
-../django/contrib/gis/feeds.pyc
-../django/contrib/gis/views.pyc
-../django/contrib/gis/measure.pyc
-../django/contrib/gis/forms/__init__.pyc
-../django/contrib/gis/forms/widgets.pyc
-../django/contrib/gis/forms/fields.pyc
-../django/contrib/gis/geometry/test_data.pyc
-../django/contrib/gis/geometry/__init__.pyc
-../django/contrib/gis/geometry/regex.pyc
-../django/contrib/gis/geometry/backend/__init__.pyc
-../django/contrib/gis/geometry/backend/geos.pyc
-../django/contrib/gis/maps/__init__.pyc
-../django/contrib/gis/maps/google/gmap.pyc
-../django/contrib/gis/maps/google/__init__.pyc
-../django/contrib/gis/maps/google/overlays.pyc
-../django/contrib/gis/maps/google/zoom.pyc
-../django/contrib/gis/maps/openlayers/__init__.pyc
-../django/contrib/gis/gdal/geometries.pyc
-../django/contrib/gis/gdal/layer.pyc
-../django/contrib/gis/gdal/envelope.pyc
-../django/contrib/gis/gdal/geomtype.pyc
-../django/contrib/gis/gdal/__init__.pyc
-../django/contrib/gis/gdal/srs.pyc
-../django/contrib/gis/gdal/feature.pyc
-../django/contrib/gis/gdal/driver.pyc
-../django/contrib/gis/gdal/error.pyc
-../django/contrib/gis/gdal/datasource.pyc
-../django/contrib/gis/gdal/base.pyc
-../django/contrib/gis/gdal/libgdal.pyc
-../django/contrib/gis/gdal/field.pyc
-../django/contrib/gis/gdal/prototypes/generation.pyc
-../django/contrib/gis/gdal/prototypes/errcheck.pyc
-../django/contrib/gis/gdal/prototypes/__init__.pyc
-../django/contrib/gis/gdal/prototypes/srs.pyc
-../django/contrib/gis/gdal/prototypes/geom.pyc
-../django/contrib/gis/gdal/prototypes/ds.pyc
-../django/contrib/gis/gdal/tests/test_geom.pyc
-../django/contrib/gis/gdal/tests/test_envelope.pyc
-../django/contrib/gis/gdal/tests/__init__.pyc
-../django/contrib/gis/gdal/tests/test_ds.pyc
-../django/contrib/gis/gdal/tests/test_srs.pyc
-../django/contrib/gis/gdal/tests/test_driver.pyc
-../django/contrib/gis/management/__init__.pyc
-../django/contrib/gis/management/commands/inspectdb.pyc
-../django/contrib/gis/management/commands/__init__.pyc
-../django/contrib/gis/management/commands/ogrinspect.pyc
-../django/contrib/gis/admin/__init__.pyc
-../django/contrib/gis/admin/options.pyc
-../django/contrib/gis/admin/widgets.pyc
-../django/contrib/gis/sitemaps/georss.pyc
-../django/contrib/gis/sitemaps/__init__.pyc
-../django/contrib/gis/sitemaps/kml.pyc
-../django/contrib/gis/sitemaps/views.pyc
-../django/contrib/gis/utils/layermapping.pyc
-../django/contrib/gis/utils/__init__.pyc
-../django/contrib/gis/utils/wkt.pyc
-../django/contrib/gis/utils/srs.pyc
-../django/contrib/gis/utils/ogrinfo.pyc
-../django/contrib/gis/utils/ogrinspect.pyc
-../django/contrib/gis/geos/linestring.pyc
-../django/contrib/gis/geos/collections.pyc
-../django/contrib/gis/geos/factory.pyc
-../django/contrib/gis/geos/io.pyc
-../django/contrib/gis/geos/libgeos.pyc
-../django/contrib/gis/geos/mutable_list.pyc
-../django/contrib/gis/geos/__init__.pyc
-../django/contrib/gis/geos/geometry.pyc
-../django/contrib/gis/geos/coordseq.pyc
-../django/contrib/gis/geos/prepared.pyc
-../django/contrib/gis/geos/point.pyc
-../django/contrib/gis/geos/error.pyc
-../django/contrib/gis/geos/base.pyc
-../django/contrib/gis/geos/polygon.pyc
-../django/contrib/gis/geos/prototypes/predicates.pyc
-../django/contrib/gis/geos/prototypes/errcheck.pyc
-../django/contrib/gis/geos/prototypes/topology.pyc
-../django/contrib/gis/geos/prototypes/threadsafe.pyc
-../django/contrib/gis/geos/prototypes/io.pyc
-../django/contrib/gis/geos/prototypes/__init__.pyc
-../django/contrib/gis/geos/prototypes/misc.pyc
-../django/contrib/gis/geos/prototypes/coordseq.pyc
-../django/contrib/gis/geos/prototypes/prepared.pyc
-../django/contrib/gis/geos/prototypes/geom.pyc
-../django/contrib/gis/geos/tests/test_io.pyc
-../django/contrib/gis/geos/tests/test_geos_mutation.pyc
-../django/contrib/gis/geos/tests/test_mutable_list.pyc
-../django/contrib/gis/geos/tests/__init__.pyc
-../django/contrib/gis/geos/tests/test_geos.pyc
-../django/contrib/gis/tests/test_spatialrefsys.pyc
-../django/contrib/gis/tests/test_measure.pyc
-../django/contrib/gis/tests/utils.pyc
-../django/contrib/gis/tests/__init__.pyc
-../django/contrib/gis/tests/test_geoforms.pyc
-../django/contrib/gis/tests/geo3d/models.pyc
-../django/contrib/gis/tests/geo3d/tests.pyc
-../django/contrib/gis/tests/geo3d/__init__.pyc
-../django/contrib/gis/tests/geo3d/views.pyc
-../django/contrib/gis/tests/relatedapp/models.pyc
-../django/contrib/gis/tests/relatedapp/tests.pyc
-../django/contrib/gis/tests/relatedapp/__init__.pyc
-../django/contrib/gis/tests/geoadmin/models.pyc
-../django/contrib/gis/tests/geoadmin/tests.pyc
-../django/contrib/gis/tests/geoadmin/__init__.pyc
-../django/contrib/gis/tests/geoadmin/urls.pyc
-../django/contrib/gis/tests/layermap/models.pyc
-../django/contrib/gis/tests/layermap/tests.pyc
-../django/contrib/gis/tests/layermap/__init__.pyc
-../django/contrib/gis/tests/geogapp/models.pyc
-../django/contrib/gis/tests/geogapp/tests.pyc
-../django/contrib/gis/tests/geogapp/__init__.pyc
-../django/contrib/gis/tests/distapp/models.pyc
-../django/contrib/gis/tests/distapp/tests.pyc
-../django/contrib/gis/tests/distapp/__init__.pyc
-../django/contrib/gis/tests/inspectapp/models.pyc
-../django/contrib/gis/tests/inspectapp/tests.pyc
-../django/contrib/gis/tests/inspectapp/__init__.pyc
-../django/contrib/gis/tests/geoapp/test_sitemaps.pyc
-../django/contrib/gis/tests/geoapp/test_regress.pyc
-../django/contrib/gis/tests/geoapp/models.pyc
-../django/contrib/gis/tests/geoapp/tests.pyc
-../django/contrib/gis/tests/geoapp/__init__.pyc
-../django/contrib/gis/tests/geoapp/sitemaps.pyc
-../django/contrib/gis/tests/geoapp/urls.pyc
-../django/contrib/gis/tests/geoapp/test_feeds.pyc
-../django/contrib/gis/tests/geoapp/feeds.pyc
-../django/contrib/gis/db/__init__.pyc
-../django/contrib/gis/db/models/query.pyc
-../django/contrib/gis/db/models/__init__.pyc
-../django/contrib/gis/db/models/manager.pyc
-../django/contrib/gis/db/models/aggregates.pyc
-../django/contrib/gis/db/models/proxy.pyc
-../django/contrib/gis/db/models/fields.pyc
-../django/contrib/gis/db/models/sql/query.pyc
-../django/contrib/gis/db/models/sql/where.pyc
-../django/contrib/gis/db/models/sql/__init__.pyc
-../django/contrib/gis/db/models/sql/conversion.pyc
-../django/contrib/gis/db/models/sql/aggregates.pyc
-../django/contrib/gis/db/models/sql/compiler.pyc
-../django/contrib/gis/db/backends/adapter.pyc
-../django/contrib/gis/db/backends/__init__.pyc
-../django/contrib/gis/db/backends/base.pyc
-../django/contrib/gis/db/backends/util.pyc
-../django/contrib/gis/db/backends/postgis/adapter.pyc
-../django/contrib/gis/db/backends/postgis/introspection.pyc
-../django/contrib/gis/db/backends/postgis/models.pyc
-../django/contrib/gis/db/backends/postgis/__init__.pyc
-../django/contrib/gis/db/backends/postgis/operations.pyc
-../django/contrib/gis/db/backends/postgis/creation.pyc
-../django/contrib/gis/db/backends/postgis/base.pyc
-../django/contrib/gis/db/backends/spatialite/adapter.pyc
-../django/contrib/gis/db/backends/spatialite/client.pyc
-../django/contrib/gis/db/backends/spatialite/introspection.pyc
-../django/contrib/gis/db/backends/spatialite/models.pyc
-../django/contrib/gis/db/backends/spatialite/__init__.pyc
-../django/contrib/gis/db/backends/spatialite/operations.pyc
-../django/contrib/gis/db/backends/spatialite/creation.pyc
-../django/contrib/gis/db/backends/spatialite/base.pyc
-../django/contrib/gis/db/backends/oracle/adapter.pyc
-../django/contrib/gis/db/backends/oracle/introspection.pyc
-../django/contrib/gis/db/backends/oracle/models.pyc
-../django/contrib/gis/db/backends/oracle/__init__.pyc
-../django/contrib/gis/db/backends/oracle/operations.pyc
-../django/contrib/gis/db/backends/oracle/creation.pyc
-../django/contrib/gis/db/backends/oracle/compiler.pyc
-../django/contrib/gis/db/backends/oracle/base.pyc
-../django/contrib/gis/db/backends/mysql/introspection.pyc
-../django/contrib/gis/db/backends/mysql/__init__.pyc
-../django/contrib/gis/db/backends/mysql/operations.pyc
-../django/contrib/gis/db/backends/mysql/creation.pyc
-../django/contrib/gis/db/backends/mysql/compiler.pyc
-../django/contrib/gis/db/backends/mysql/base.pyc
-../django/contrib/gis/geoip/tests.pyc
-../django/contrib/gis/geoip/__init__.pyc
-../django/contrib/gis/geoip/base.pyc
-../django/contrib/gis/geoip/prototypes.pyc
-../django/contrib/gis/geoip/libgeoip.pyc
-../django/contrib/syndication/__init__.pyc
-../django/contrib/syndication/views.pyc
-../django/contrib/contenttypes/management.pyc
-../django/contrib/contenttypes/generic.pyc
-../django/contrib/contenttypes/models.pyc
-../django/contrib/contenttypes/tests.pyc
-../django/contrib/contenttypes/__init__.pyc
-../django/contrib/contenttypes/views.pyc
-../django/contrib/sites/admin.pyc
-../django/contrib/sites/management.pyc
-../django/contrib/sites/managers.pyc
-../django/contrib/sites/models.pyc
-../django/contrib/sites/tests.pyc
-../django/contrib/sites/__init__.pyc
-../django/contrib/admindocs/utils.pyc
-../django/contrib/admindocs/models.pyc
-../django/contrib/admindocs/__init__.pyc
-../django/contrib/admindocs/middleware.pyc
-../django/contrib/admindocs/urls.pyc
-../django/contrib/admindocs/views.pyc
-../django/contrib/admindocs/tests/__init__.pyc
-../django/contrib/admindocs/tests/test_fields.pyc
-../django/middleware/cache.pyc
-../django/middleware/transaction.pyc
-../django/middleware/locale.pyc
-../django/middleware/csrf.pyc
-../django/middleware/http.pyc
-../django/middleware/common.pyc
-../django/middleware/__init__.pyc
-../django/middleware/gzip.pyc
-../django/middleware/doc.pyc
-../django/middleware/clickjacking.pyc
-../django/template/debug.pyc
-../django/template/smartif.pyc
-../django/template/__init__.pyc
-../django/template/response.pyc
-../django/template/defaultfilters.pyc
-../django/template/loader_tags.pyc
-../django/template/loader.pyc
-../django/template/defaulttags.pyc
-../django/template/context.pyc
-../django/template/base.pyc
-../django/template/loaders/cached.pyc
-../django/template/loaders/eggs.pyc
-../django/template/loaders/app_directories.pyc
-../django/template/loaders/__init__.pyc
-../django/template/loaders/filesystem.pyc
-../django/templatetags/cache.pyc
-../django/templatetags/i18n.pyc
-../django/templatetags/__init__.pyc
-../django/templatetags/static.pyc
-../django/templatetags/future.pyc
-../django/templatetags/tz.pyc
-../django/templatetags/l10n.pyc
-../django/views/csrf.pyc
-../django/views/i18n.pyc
-../django/views/debug.pyc
-../django/views/defaults.pyc
-../django/views/__init__.pyc
-../django/views/static.pyc
-../django/views/generic/dates.pyc
-../django/views/generic/detail.pyc
-../django/views/generic/edit.pyc
-../django/views/generic/__init__.pyc
-../django/views/generic/list.pyc
-../django/views/generic/base.pyc
-../django/views/decorators/cache.pyc
-../django/views/decorators/csrf.pyc
-../django/views/decorators/debug.pyc
-../django/views/decorators/vary.pyc
-../django/views/decorators/http.pyc
-../django/views/decorators/__init__.pyc
-../django/views/decorators/gzip.pyc
-../django/views/decorators/clickjacking.pyc
-../django/utils/dates.pyc
-../django/utils/datastructures.pyc
-../django/utils/functional.pyc
-../django/utils/cache.pyc
-../django/utils/datetime_safe.pyc
-../django/utils/archive.pyc
-../django/utils/html.pyc
-../django/utils/encoding.pyc
-../django/utils/module_loading.pyc
-../django/utils/itercompat.pyc
-../django/utils/dateparse.pyc
-../django/utils/ipv6.pyc
-../django/utils/text.pyc
-../django/utils/image.pyc
-../django/utils/autoreload.pyc
-../django/utils/timesince.pyc
-../django/utils/_os.pyc
-../django/utils/regex_helper.pyc
-../django/utils/timezone.pyc
-../django/utils/http.pyc
-../django/utils/xmlutils.pyc
-../django/utils/html_parser.pyc
-../django/utils/formats.pyc
-../django/utils/daemonize.pyc
-../django/utils/__init__.pyc
-../django/utils/checksums.pyc
-../django/utils/termcolors.pyc
-../django/utils/jslex.pyc
-../django/utils/crypto.pyc
-../django/utils/tree.pyc
-../django/utils/version.pyc
-../django/utils/simplejson.pyc
-../django/utils/dateformat.pyc
-../django/utils/synch.pyc
-../django/utils/safestring.pyc
-../django/utils/log.pyc
-../django/utils/baseconv.pyc
-../django/utils/decorators.pyc
-../django/utils/dictconfig.pyc
-../django/utils/importlib.pyc
-../django/utils/numberformat.pyc
-../django/utils/tzinfo.pyc
-../django/utils/six.pyc
-../django/utils/deprecation.pyc
-../django/utils/feedgenerator.pyc
-../django/utils/translation/trans_null.pyc
-../django/utils/translation/__init__.pyc
-../django/utils/translation/trans_real.pyc
-../django/utils/unittest/compatibility.pyc
-../django/utils/unittest/result.pyc
-../django/utils/unittest/__main__.pyc
-../django/utils/unittest/suite.pyc
-../django/utils/unittest/__init__.pyc
-../django/utils/unittest/signals.pyc
-../django/utils/unittest/case.pyc
-../django/utils/unittest/loader.pyc
-../django/utils/unittest/collector.pyc
-../django/utils/unittest/main.pyc
-../django/utils/unittest/util.pyc
-../django/utils/unittest/runner.pyc
-../django/utils/2to3_fixes/fix_unicode.pyc
-../django/utils/2to3_fixes/__init__.pyc
-../django/shortcuts/__init__.pyc
-../django/db/transaction.pyc
-../django/db/utils.pyc
-../django/db/__init__.pyc
-../django/db/models/query.pyc
-../django/db/models/related.pyc
-../django/db/models/expressions.pyc
-../django/db/models/__init__.pyc
-../django/db/models/options.pyc
-../django/db/models/query_utils.pyc
-../django/db/models/manager.pyc
-../django/db/models/signals.pyc
-../django/db/models/constants.pyc
-../django/db/models/aggregates.pyc
-../django/db/models/deletion.pyc
-../django/db/models/base.pyc
-../django/db/models/loading.pyc
-../django/db/models/sql/datastructures.pyc
-../django/db/models/sql/query.pyc
-../django/db/models/sql/where.pyc
-../django/db/models/sql/expressions.pyc
-../django/db/models/sql/__init__.pyc
-../django/db/models/sql/constants.pyc
-../django/db/models/sql/aggregates.pyc
-../django/db/models/sql/subqueries.pyc
-../django/db/models/sql/compiler.pyc
-../django/db/models/fields/files.pyc
-../django/db/models/fields/related.pyc
-../django/db/models/fields/__init__.pyc
-../django/db/models/fields/subclassing.pyc
-../django/db/models/fields/proxy.pyc
-../django/db/backends/__init__.pyc
-../django/db/backends/creation.pyc
-../django/db/backends/signals.pyc
-../django/db/backends/util.pyc
-../django/db/backends/sqlite3/client.pyc
-../django/db/backends/sqlite3/introspection.pyc
-../django/db/backends/sqlite3/__init__.pyc
-../django/db/backends/sqlite3/creation.pyc
-../django/db/backends/sqlite3/base.pyc
-../django/db/backends/oracle/client.pyc
-../django/db/backends/oracle/introspection.pyc
-../django/db/backends/oracle/__init__.pyc
-../django/db/backends/oracle/creation.pyc
-../django/db/backends/oracle/compiler.pyc
-../django/db/backends/oracle/base.pyc
-../django/db/backends/mysql/validation.pyc
-../django/db/backends/mysql/client.pyc
-../django/db/backends/mysql/introspection.pyc
-../django/db/backends/mysql/__init__.pyc
-../django/db/backends/mysql/creation.pyc
-../django/db/backends/mysql/compiler.pyc
-../django/db/backends/mysql/base.pyc
-../django/db/backends/postgresql_psycopg2/client.pyc
-../django/db/backends/postgresql_psycopg2/introspection.pyc
-../django/db/backends/postgresql_psycopg2/__init__.pyc
-../django/db/backends/postgresql_psycopg2/operations.pyc
-../django/db/backends/postgresql_psycopg2/creation.pyc
-../django/db/backends/postgresql_psycopg2/version.pyc
-../django/db/backends/postgresql_psycopg2/base.pyc
-../django/db/backends/dummy/__init__.pyc
-../django/db/backends/dummy/base.pyc
-../django/test/_doctest.pyc
-../django/test/html.pyc
-../django/test/client.pyc
-../django/test/utils.pyc
-../django/test/__init__.pyc
-../django/test/simple.pyc
-../django/test/signals.pyc
-../django/test/testcases.pyc
-../django/test/runner.pyc
-../django/http/utils.pyc
-../django/http/__init__.pyc
-../django/http/request.pyc
-../django/http/response.pyc
-../django/http/cookie.pyc
-../django/http/multipartparser.pyc
-../django/dispatch/__init__.pyc
-../django/dispatch/saferef.pyc
-../django/dispatch/dispatcher.pyc
-../django/core/wsgi.pyc
-../django/core/context_processors.pyc
-../django/core/paginator.pyc
-../django/core/urlresolvers.pyc
-../django/core/__init__.pyc
-../django/core/signing.pyc
-../django/core/signals.pyc
-../django/core/exceptions.pyc
-../django/core/validators.pyc
-../django/core/handlers/wsgi.pyc
-../django/core/handlers/__init__.pyc
-../django/core/handlers/base.pyc
-../django/core/serializers/__init__.pyc
-../django/core/serializers/json.pyc
-../django/core/serializers/xml_serializer.pyc
-../django/core/serializers/python.pyc
-../django/core/serializers/base.pyc
-../django/core/serializers/pyyaml.pyc
-../django/core/management/validation.pyc
-../django/core/management/utils.pyc
-../django/core/management/__init__.pyc
-../django/core/management/color.pyc
-../django/core/management/sql.pyc
-../django/core/management/base.pyc
-../django/core/management/templates.pyc
-../django/core/management/commands/sqlclear.pyc
-../django/core/management/commands/runfcgi.pyc
-../django/core/management/commands/check.pyc
-../django/core/management/commands/inspectdb.pyc
-../django/core/management/commands/test.pyc
-../django/core/management/commands/syncdb.pyc
-../django/core/management/commands/runserver.pyc
-../django/core/management/commands/sqlinitialdata.pyc
-../django/core/management/commands/sqlcustom.pyc
-../django/core/management/commands/sqldropindexes.pyc
-../django/core/management/commands/__init__.pyc
-../django/core/management/commands/dumpdata.pyc
-../django/core/management/commands/sqlall.pyc
-../django/core/management/commands/validate.pyc
-../django/core/management/commands/createcachetable.pyc
-../django/core/management/commands/flush.pyc
-../django/core/management/commands/dbshell.pyc
-../django/core/management/commands/loaddata.pyc
-../django/core/management/commands/compilemessages.pyc
-../django/core/management/commands/startproject.pyc
-../django/core/management/commands/makemessages.pyc
-../django/core/management/commands/diffsettings.pyc
-../django/core/management/commands/testserver.pyc
-../django/core/management/commands/sqlsequencereset.pyc
-../django/core/management/commands/cleanup.pyc
-../django/core/management/commands/sql.pyc
-../django/core/management/commands/sqlindexes.pyc
-../django/core/management/commands/startapp.pyc
-../django/core/management/commands/shell.pyc
-../django/core/management/commands/sqlflush.pyc
-../django/core/mail/utils.pyc
-../django/core/mail/__init__.pyc
-../django/core/mail/message.pyc
-../django/core/mail/backends/locmem.pyc
-../django/core/mail/backends/filebased.pyc
-../django/core/mail/backends/smtp.pyc
-../django/core/mail/backends/__init__.pyc
-../django/core/mail/backends/console.pyc
-../django/core/mail/backends/dummy.pyc
-../django/core/mail/backends/base.pyc
-../django/core/servers/basehttp.pyc
-../django/core/servers/fastcgi.pyc
-../django/core/servers/__init__.pyc
-../django/core/cache/utils.pyc
-../django/core/cache/__init__.pyc
-../django/core/cache/backends/memcached.pyc
-../django/core/cache/backends/locmem.pyc
-../django/core/cache/backends/filebased.pyc
-../django/core/cache/backends/__init__.pyc
-../django/core/cache/backends/dummy.pyc
-../django/core/cache/backends/base.pyc
-../django/core/cache/backends/db.pyc
-../django/core/files/uploadedfile.pyc
-../django/core/files/move.pyc
-../django/core/files/locks.pyc
-../django/core/files/storage.pyc
-../django/core/files/utils.pyc
-../django/core/files/temp.pyc
-../django/core/files/__init__.pyc
-../django/core/files/images.pyc
-../django/core/files/base.pyc
-../django/core/files/uploadhandler.pyc
-../django/core/checks/__init__.pyc
-../django/core/checks/compatibility/__init__.pyc
-../django/core/checks/compatibility/django_1_6_0.pyc
-../django/core/checks/compatibility/base.pyc
-../django/bin/daily_cleanup.pyc
-../django/bin/django-2to3.pyc
-../django/bin/unique-messages.pyc
-../django/bin/django-admin.pyc
-../django/bin/profiling/gather_profile_stats.pyc
-../django/bin/profiling/__init__.pyc
-../django/conf/project_template/manage.pyc
-../django/conf/project_template/project_name/wsgi.pyc
-../django/conf/project_template/project_name/__init__.pyc
-../django/conf/project_template/project_name/settings.pyc
-../django/conf/project_template/project_name/urls.pyc
-../django/conf/app_template/admin.pyc
-../django/conf/app_template/models.pyc
-../django/conf/app_template/tests.pyc
-../django/conf/app_template/__init__.pyc
-../django/conf/app_template/views.pyc
-../django/contrib/admin/bin/compress.pyc
-./
-PKG-INFO
-dependency_links.txt
-SOURCES.txt
-top_level.txt
-../../../../bin/django-admin.py
diff --git a/lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/top_level.txt b/lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/top_level.txt
deleted file mode 100644
index d3e4ba5..0000000
--- a/lib/python2.7/site-packages/Django-1.6.3-py2.7.egg-info/top_level.txt
+++ /dev/null
@@ -1 +0,0 @@
-django
diff --git a/lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/PKG-INFO b/lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/PKG-INFO
deleted file mode 100644
index 5c3c269..0000000
--- a/lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/PKG-INFO
+++ /dev/null
@@ -1,22 +0,0 @@
-Metadata-Version: 1.1
-Name: South
-Version: 0.8.4
-Summary: South: Migrations for Django
-Home-page: http://south.aeracode.org/
-Author: Andrew Godwin & Andy McCurdy
-Author-email: south@aeracode.org
-License: UNKNOWN
-Download-URL: http://south.aeracode.org/wiki/Download
-Description: South is an intelligent database migrations library for the Django web framework. It is database-independent and DVCS-friendly, as well as a whole host of other features.
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Framework :: Django
-Classifier: Intended Audience :: Developers
-Classifier: Intended Audience :: System Administrators
-Classifier: Intended Audience :: System Administrators
-Classifier: License :: OSI Approved :: Apache Software License
-Classifier: Operating System :: OS Independent
-Classifier: Topic :: Software Development
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
diff --git a/lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/SOURCES.txt b/lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/SOURCES.txt
deleted file mode 100644
index 7a511ff..0000000
--- a/lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/SOURCES.txt
+++ /dev/null
@@ -1,124 +0,0 @@
-README
-setup.cfg
-setup.py
-South.egg-info/PKG-INFO
-South.egg-info/SOURCES.txt
-South.egg-info/dependency_links.txt
-South.egg-info/top_level.txt
-south/__init__.py
-south/exceptions.py
-south/logger.py
-south/models.py
-south/modelsinspector.py
-south/orm.py
-south/signals.py
-south/test_shim.py
-south/v2.py
-south/creator/__init__.py
-south/creator/actions.py
-south/creator/changes.py
-south/creator/freezer.py
-south/db/__init__.py
-south/db/firebird.py
-south/db/generic.py
-south/db/mysql.py
-south/db/oracle.py
-south/db/postgresql_psycopg2.py
-south/db/sqlite3.py
-south/db/sql_server/__init__.py
-south/db/sql_server/pyodbc.py
-south/hacks/__init__.py
-south/hacks/django_1_0.py
-south/introspection_plugins/__init__.py
-south/introspection_plugins/annoying_autoonetoone.py
-south/introspection_plugins/django_audit_log.py
-south/introspection_plugins/django_objectpermissions.py
-south/introspection_plugins/django_tagging.py
-south/introspection_plugins/django_taggit.py
-south/introspection_plugins/django_timezones.py
-south/introspection_plugins/geodjango.py
-south/management/__init__.py
-south/management/commands/__init__.py
-south/management/commands/convert_to_south.py
-south/management/commands/datamigration.py
-south/management/commands/graphmigrations.py
-south/management/commands/migrate.py
-south/management/commands/migrationcheck.py
-south/management/commands/schemamigration.py
-south/management/commands/startmigration.py
-south/management/commands/syncdb.py
-south/management/commands/test.py
-south/management/commands/testserver.py
-south/migration/__init__.py
-south/migration/base.py
-south/migration/migrators.py
-south/migration/utils.py
-south/tests/__init__.py
-south/tests/autodetection.py
-south/tests/db.py
-south/tests/db_firebird.py
-south/tests/db_mysql.py
-south/tests/freezer.py
-south/tests/inspector.py
-south/tests/logger.py
-south/tests/logic.py
-south/tests/brokenapp/__init__.py
-south/tests/brokenapp/models.py
-south/tests/brokenapp/migrations/0001_depends_on_unmigrated.py
-south/tests/brokenapp/migrations/0002_depends_on_unknown.py
-south/tests/brokenapp/migrations/0003_depends_on_higher.py
-south/tests/brokenapp/migrations/0004_higher.py
-south/tests/brokenapp/migrations/__init__.py
-south/tests/circular_a/__init__.py
-south/tests/circular_a/models.py
-south/tests/circular_a/migrations/0001_first.py
-south/tests/circular_a/migrations/__init__.py
-south/tests/circular_b/__init__.py
-south/tests/circular_b/models.py
-south/tests/circular_b/migrations/0001_first.py
-south/tests/circular_b/migrations/__init__.py
-south/tests/deps_a/__init__.py
-south/tests/deps_a/models.py
-south/tests/deps_a/migrations/0001_a.py
-south/tests/deps_a/migrations/0002_a.py
-south/tests/deps_a/migrations/0003_a.py
-south/tests/deps_a/migrations/0004_a.py
-south/tests/deps_a/migrations/0005_a.py
-south/tests/deps_a/migrations/__init__.py
-south/tests/deps_b/__init__.py
-south/tests/deps_b/models.py
-south/tests/deps_b/migrations/0001_b.py
-south/tests/deps_b/migrations/0002_b.py
-south/tests/deps_b/migrations/0003_b.py
-south/tests/deps_b/migrations/0004_b.py
-south/tests/deps_b/migrations/0005_b.py
-south/tests/deps_b/migrations/__init__.py
-south/tests/deps_c/__init__.py
-south/tests/deps_c/models.py
-south/tests/deps_c/migrations/0001_c.py
-south/tests/deps_c/migrations/0002_c.py
-south/tests/deps_c/migrations/0003_c.py
-south/tests/deps_c/migrations/0004_c.py
-south/tests/deps_c/migrations/0005_c.py
-south/tests/deps_c/migrations/__init__.py
-south/tests/emptyapp/__init__.py
-south/tests/emptyapp/models.py
-south/tests/emptyapp/migrations/__init__.py
-south/tests/fakeapp/__init__.py
-south/tests/fakeapp/models.py
-south/tests/fakeapp/migrations/0001_spam.py
-south/tests/fakeapp/migrations/0002_eggs.py
-south/tests/fakeapp/migrations/0003_alter_spam.py
-south/tests/fakeapp/migrations/__init__.py
-south/tests/non_managed/__init__.py
-south/tests/non_managed/models.py
-south/tests/non_managed/migrations/__init__.py
-south/tests/otherfakeapp/__init__.py
-south/tests/otherfakeapp/models.py
-south/tests/otherfakeapp/migrations/0001_first.py
-south/tests/otherfakeapp/migrations/0002_second.py
-south/tests/otherfakeapp/migrations/0003_third.py
-south/tests/otherfakeapp/migrations/__init__.py
-south/utils/__init__.py
-south/utils/datetime_utils.py
-south/utils/py3.py \ No newline at end of file
diff --git a/lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/dependency_links.txt b/lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/dependency_links.txt
deleted file mode 100644
index 8b13789..0000000
--- a/lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/dependency_links.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/installed-files.txt b/lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/installed-files.txt
deleted file mode 100644
index 763289d..0000000
--- a/lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/installed-files.txt
+++ /dev/null
@@ -1,239 +0,0 @@
-../south/test_shim.py
-../south/logger.py
-../south/models.py
-../south/orm.py
-../south/__init__.py
-../south/signals.py
-../south/exceptions.py
-../south/modelsinspector.py
-../south/v2.py
-../south/creator/freezer.py
-../south/creator/actions.py
-../south/creator/__init__.py
-../south/creator/changes.py
-../south/db/postgresql_psycopg2.py
-../south/db/generic.py
-../south/db/sqlite3.py
-../south/db/__init__.py
-../south/db/mysql.py
-../south/db/oracle.py
-../south/db/firebird.py
-../south/management/__init__.py
-../south/introspection_plugins/django_audit_log.py
-../south/introspection_plugins/django_tagging.py
-../south/introspection_plugins/geodjango.py
-../south/introspection_plugins/django_taggit.py
-../south/introspection_plugins/__init__.py
-../south/introspection_plugins/annoying_autoonetoone.py
-../south/introspection_plugins/django_objectpermissions.py
-../south/introspection_plugins/django_timezones.py
-../south/hacks/django_1_0.py
-../south/hacks/__init__.py
-../south/migration/utils.py
-../south/migration/migrators.py
-../south/migration/__init__.py
-../south/migration/base.py
-../south/tests/db_firebird.py
-../south/tests/logger.py
-../south/tests/autodetection.py
-../south/tests/db_mysql.py
-../south/tests/freezer.py
-../south/tests/__init__.py
-../south/tests/inspector.py
-../south/tests/db.py
-../south/tests/logic.py
-../south/db/sql_server/pyodbc.py
-../south/db/sql_server/__init__.py
-../south/management/commands/convert_to_south.py
-../south/management/commands/migrationcheck.py
-../south/management/commands/test.py
-../south/management/commands/syncdb.py
-../south/management/commands/datamigration.py
-../south/management/commands/startmigration.py
-../south/management/commands/__init__.py
-../south/management/commands/testserver.py
-../south/management/commands/migrate.py
-../south/management/commands/graphmigrations.py
-../south/management/commands/schemamigration.py
-../south/tests/circular_a/models.py
-../south/tests/circular_a/__init__.py
-../south/tests/emptyapp/models.py
-../south/tests/emptyapp/__init__.py
-../south/tests/deps_a/models.py
-../south/tests/deps_a/__init__.py
-../south/tests/fakeapp/models.py
-../south/tests/fakeapp/__init__.py
-../south/tests/brokenapp/models.py
-../south/tests/brokenapp/__init__.py
-../south/tests/circular_b/models.py
-../south/tests/circular_b/__init__.py
-../south/tests/otherfakeapp/models.py
-../south/tests/otherfakeapp/__init__.py
-../south/tests/deps_c/models.py
-../south/tests/deps_c/__init__.py
-../south/tests/deps_b/models.py
-../south/tests/deps_b/__init__.py
-../south/tests/non_managed/models.py
-../south/tests/non_managed/__init__.py
-../south/tests/circular_a/migrations/__init__.py
-../south/tests/circular_a/migrations/0001_first.py
-../south/tests/emptyapp/migrations/__init__.py
-../south/tests/deps_a/migrations/0002_a.py
-../south/tests/deps_a/migrations/__init__.py
-../south/tests/deps_a/migrations/0004_a.py
-../south/tests/deps_a/migrations/0005_a.py
-../south/tests/deps_a/migrations/0001_a.py
-../south/tests/deps_a/migrations/0003_a.py
-../south/tests/fakeapp/migrations/__init__.py
-../south/tests/fakeapp/migrations/0003_alter_spam.py
-../south/tests/fakeapp/migrations/0002_eggs.py
-../south/tests/fakeapp/migrations/0001_spam.py
-../south/tests/brokenapp/migrations/__init__.py
-../south/tests/brokenapp/migrations/0001_depends_on_unmigrated.py
-../south/tests/brokenapp/migrations/0004_higher.py
-../south/tests/brokenapp/migrations/0002_depends_on_unknown.py
-../south/tests/brokenapp/migrations/0003_depends_on_higher.py
-../south/tests/circular_b/migrations/__init__.py
-../south/tests/circular_b/migrations/0001_first.py
-../south/tests/otherfakeapp/migrations/0002_second.py
-../south/tests/otherfakeapp/migrations/__init__.py
-../south/tests/otherfakeapp/migrations/0001_first.py
-../south/tests/otherfakeapp/migrations/0003_third.py
-../south/tests/deps_c/migrations/__init__.py
-../south/tests/deps_c/migrations/0005_c.py
-../south/tests/deps_c/migrations/0001_c.py
-../south/tests/deps_c/migrations/0004_c.py
-../south/tests/deps_c/migrations/0003_c.py
-../south/tests/deps_c/migrations/0002_c.py
-../south/tests/deps_b/migrations/0004_b.py
-../south/tests/deps_b/migrations/0003_b.py
-../south/tests/deps_b/migrations/__init__.py
-../south/tests/deps_b/migrations/0001_b.py
-../south/tests/deps_b/migrations/0005_b.py
-../south/tests/deps_b/migrations/0002_b.py
-../south/tests/non_managed/migrations/__init__.py
-../south/utils/datetime_utils.py
-../south/utils/py3.py
-../south/utils/__init__.py
-../south/test_shim.pyc
-../south/logger.pyc
-../south/models.pyc
-../south/orm.pyc
-../south/__init__.pyc
-../south/signals.pyc
-../south/exceptions.pyc
-../south/modelsinspector.pyc
-../south/v2.pyc
-../south/creator/freezer.pyc
-../south/creator/actions.pyc
-../south/creator/__init__.pyc
-../south/creator/changes.pyc
-../south/db/postgresql_psycopg2.pyc
-../south/db/generic.pyc
-../south/db/sqlite3.pyc
-../south/db/__init__.pyc
-../south/db/mysql.pyc
-../south/db/oracle.pyc
-../south/db/firebird.pyc
-../south/management/__init__.pyc
-../south/introspection_plugins/django_audit_log.pyc
-../south/introspection_plugins/django_tagging.pyc
-../south/introspection_plugins/geodjango.pyc
-../south/introspection_plugins/django_taggit.pyc
-../south/introspection_plugins/__init__.pyc
-../south/introspection_plugins/annoying_autoonetoone.pyc
-../south/introspection_plugins/django_objectpermissions.pyc
-../south/introspection_plugins/django_timezones.pyc
-../south/hacks/django_1_0.pyc
-../south/hacks/__init__.pyc
-../south/migration/utils.pyc
-../south/migration/migrators.pyc
-../south/migration/__init__.pyc
-../south/migration/base.pyc
-../south/tests/db_firebird.pyc
-../south/tests/logger.pyc
-../south/tests/autodetection.pyc
-../south/tests/db_mysql.pyc
-../south/tests/freezer.pyc
-../south/tests/__init__.pyc
-../south/tests/inspector.pyc
-../south/tests/db.pyc
-../south/tests/logic.pyc
-../south/db/sql_server/pyodbc.pyc
-../south/db/sql_server/__init__.pyc
-../south/management/commands/convert_to_south.pyc
-../south/management/commands/migrationcheck.pyc
-../south/management/commands/test.pyc
-../south/management/commands/syncdb.pyc
-../south/management/commands/datamigration.pyc
-../south/management/commands/startmigration.pyc
-../south/management/commands/__init__.pyc
-../south/management/commands/testserver.pyc
-../south/management/commands/migrate.pyc
-../south/management/commands/graphmigrations.pyc
-../south/management/commands/schemamigration.pyc
-../south/tests/circular_a/models.pyc
-../south/tests/circular_a/__init__.pyc
-../south/tests/emptyapp/models.pyc
-../south/tests/emptyapp/__init__.pyc
-../south/tests/deps_a/models.pyc
-../south/tests/deps_a/__init__.pyc
-../south/tests/fakeapp/models.pyc
-../south/tests/fakeapp/__init__.pyc
-../south/tests/brokenapp/models.pyc
-../south/tests/brokenapp/__init__.pyc
-../south/tests/circular_b/models.pyc
-../south/tests/circular_b/__init__.pyc
-../south/tests/otherfakeapp/models.pyc
-../south/tests/otherfakeapp/__init__.pyc
-../south/tests/deps_c/models.pyc
-../south/tests/deps_c/__init__.pyc
-../south/tests/deps_b/models.pyc
-../south/tests/deps_b/__init__.pyc
-../south/tests/non_managed/models.pyc
-../south/tests/non_managed/__init__.pyc
-../south/tests/circular_a/migrations/__init__.pyc
-../south/tests/circular_a/migrations/0001_first.pyc
-../south/tests/emptyapp/migrations/__init__.pyc
-../south/tests/deps_a/migrations/0002_a.pyc
-../south/tests/deps_a/migrations/__init__.pyc
-../south/tests/deps_a/migrations/0004_a.pyc
-../south/tests/deps_a/migrations/0005_a.pyc
-../south/tests/deps_a/migrations/0001_a.pyc
-../south/tests/deps_a/migrations/0003_a.pyc
-../south/tests/fakeapp/migrations/__init__.pyc
-../south/tests/fakeapp/migrations/0003_alter_spam.pyc
-../south/tests/fakeapp/migrations/0002_eggs.pyc
-../south/tests/fakeapp/migrations/0001_spam.pyc
-../south/tests/brokenapp/migrations/__init__.pyc
-../south/tests/brokenapp/migrations/0001_depends_on_unmigrated.pyc
-../south/tests/brokenapp/migrations/0004_higher.pyc
-../south/tests/brokenapp/migrations/0002_depends_on_unknown.pyc
-../south/tests/brokenapp/migrations/0003_depends_on_higher.pyc
-../south/tests/circular_b/migrations/__init__.pyc
-../south/tests/circular_b/migrations/0001_first.pyc
-../south/tests/otherfakeapp/migrations/0002_second.pyc
-../south/tests/otherfakeapp/migrations/__init__.pyc
-../south/tests/otherfakeapp/migrations/0001_first.pyc
-../south/tests/otherfakeapp/migrations/0003_third.pyc
-../south/tests/deps_c/migrations/__init__.pyc
-../south/tests/deps_c/migrations/0005_c.pyc
-../south/tests/deps_c/migrations/0001_c.pyc
-../south/tests/deps_c/migrations/0004_c.pyc
-../south/tests/deps_c/migrations/0003_c.pyc
-../south/tests/deps_c/migrations/0002_c.pyc
-../south/tests/deps_b/migrations/0004_b.pyc
-../south/tests/deps_b/migrations/0003_b.pyc
-../south/tests/deps_b/migrations/__init__.pyc
-../south/tests/deps_b/migrations/0001_b.pyc
-../south/tests/deps_b/migrations/0005_b.pyc
-../south/tests/deps_b/migrations/0002_b.pyc
-../south/tests/non_managed/migrations/__init__.pyc
-../south/utils/datetime_utils.pyc
-../south/utils/py3.pyc
-../south/utils/__init__.pyc
-./
-PKG-INFO
-dependency_links.txt
-SOURCES.txt
-top_level.txt
diff --git a/lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/top_level.txt b/lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/top_level.txt
deleted file mode 100644
index 40e0ef0..0000000
--- a/lib/python2.7/site-packages/South-0.8.4-py2.7.egg-info/top_level.txt
+++ /dev/null
@@ -1 +0,0 @@
-south
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/PKG-INFO b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/PKG-INFO
deleted file mode 100644
index bd4a25f..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/PKG-INFO
+++ /dev/null
@@ -1,610 +0,0 @@
-Metadata-Version: 1.1
-Name: distribute
-Version: 0.6.24
-Summary: Easily download, build, install, upgrade, and uninstall Python packages
-Home-page: http://packages.python.org/distribute
-Author: The fellowship of the packaging
-Author-email: distutils-sig@python.org
-License: PSF or ZPL
-Description: ===============================
- Installing and Using Distribute
- ===============================
-
- .. contents:: **Table of Contents**
-
- -----------
- Disclaimers
- -----------
-
- About the fork
- ==============
-
- `Distribute` is a fork of the `Setuptools` project.
-
- Distribute is intended to replace Setuptools as the standard method
- for working with Python module distributions.
-
- The fork has two goals:
-
- - Providing a backward compatible version to replace Setuptools
- and make all distributions that depend on Setuptools work as
- before, but with less bugs and behaviorial issues.
-
- This work is done in the 0.6.x series.
-
- Starting with version 0.6.2, Distribute supports Python 3.
- Installing and using distribute for Python 3 code works exactly
- the same as for Python 2 code, but Distribute also helps you to support
- Python 2 and Python 3 from the same source code by letting you run 2to3
- on the code as a part of the build process, by setting the keyword parameter
- ``use_2to3`` to True. See http://packages.python.org/distribute for more
- information.
-
- - Refactoring the code, and releasing it in several distributions.
- This work is being done in the 0.7.x series but not yet released.
-
- The roadmap is still evolving, and the page that is up-to-date is
- located at : `http://packages.python.org/distribute/roadmap`.
-
- If you install `Distribute` and want to switch back for any reason to
- `Setuptools`, get to the `Uninstallation instructions`_ section.
-
- More documentation
- ==================
-
- You can get more information in the Sphinx-based documentation, located
- at http://packages.python.org/distribute. This documentation includes the old
- Setuptools documentation that is slowly replaced, and brand new content.
-
- About the installation process
- ==============================
-
- The `Distribute` installer modifies your installation by de-activating an
- existing installation of `Setuptools` in a bootstrap process. This process
- has been tested in various installation schemes and contexts but in case of a
- bug during this process your Python installation might be left in a broken
- state. Since all modified files and directories are copied before the
- installation starts, you will be able to get back to a normal state by reading
- the instructions in the `Uninstallation instructions`_ section.
-
- In any case, it is recommended to save you `site-packages` directory before
- you start the installation of `Distribute`.
-
- -------------------------
- Installation Instructions
- -------------------------
-
- Distribute is only released as a source distribution.
-
- It can be installed using pip, and can be done so with the source tarball,
- or by using the ``distribute_setup.py`` script provided online.
-
- ``distribute_setup.py`` is the simplest and preferred way on all systems.
-
- distribute_setup.py
- ===================
-
- Download
- `distribute_setup.py <http://python-distribute.org/distribute_setup.py>`_
- and execute it, using the Python interpreter of your choice.
-
- If your shell has the ``curl`` program you can do::
-
- $ curl -O http://python-distribute.org/distribute_setup.py
- $ python distribute_setup.py
-
- Notice this file is also provided in the source release.
-
- pip
- ===
-
- Run easy_install or pip::
-
- $ pip install distribute
-
- Source installation
- ===================
-
- Download the source tarball, uncompress it, then run the install command::
-
- $ curl -O http://pypi.python.org/packages/source/d/distribute/distribute-0.6.24.tar.gz
- $ tar -xzvf distribute-0.6.24.tar.gz
- $ cd distribute-0.6.24
- $ python setup.py install
-
- ---------------------------
- Uninstallation Instructions
- ---------------------------
-
- Like other distutils-based distributions, Distribute doesn't provide an
- uninstaller yet. It's all done manually! We are all waiting for PEP 376
- support in Python.
-
- Distribute is installed in three steps:
-
- 1. it gets out of the way an existing installation of Setuptools
- 2. it installs a `fake` setuptools installation
- 3. it installs distribute
-
- Distribute can be removed like this:
-
- - remove the ``distribute*.egg`` file located in your site-packages directory
- - remove the ``setuptools.pth`` file located in you site-packages directory
- - remove the easy_install script located in you ``sys.prefix/bin`` directory
- - remove the ``setuptools*.egg`` directory located in your site-packages directory,
- if any.
-
- If you want to get back to setuptools:
-
- - reinstall setuptools using its instruction.
-
- Lastly:
-
- - remove the *.OLD.* directory located in your site-packages directory if any,
- **once you have checked everything was working correctly again**.
-
- -------------------------
- Quick help for developers
- -------------------------
-
- To create an egg which is compatible with Distribute, use the same
- practice as with Setuptools, e.g.::
-
- from setuptools import setup
-
- setup(...
- )
-
- To use `pkg_resources` to access data files in the egg, you should
- require the Setuptools distribution explicitly::
-
- from setuptools import setup
-
- setup(...
- install_requires=['setuptools']
- )
-
- Only if you need Distribute-specific functionality should you depend
- on it explicitly. In this case, replace the Setuptools dependency::
-
- from setuptools import setup
-
- setup(...
- install_requires=['distribute']
- )
-
- -----------
- Install FAQ
- -----------
-
- - **Why is Distribute wrapping my Setuptools installation?**
-
- Since Distribute is a fork, and since it provides the same package
- and modules, it renames the existing Setuptools egg and inserts a
- new one which merely wraps the Distribute code. This way, full
- backwards compatibility is kept for packages which rely on the
- Setuptools modules.
-
- At the same time, packages can meet their dependency on Setuptools
- without actually installing it (which would disable Distribute).
-
- - **How does Distribute interact with virtualenv?**
-
- Everytime you create a virtualenv it will install setuptools by default.
- You either need to re-install Distribute in it right after or pass the
- ``--distribute`` option when creating it.
-
- Once installed, your virtualenv will use Distribute transparently.
-
- Although, if you have Setuptools installed in your system-wide Python,
- and if the virtualenv you are in was generated without the `--no-site-packages`
- option, the Distribute installation will stop.
-
- You need in this case to build a virtualenv with the `--no-site-packages`
- option or to install `Distribute` globally.
-
- - **How does Distribute interacts with zc.buildout?**
-
- You can use Distribute in your zc.buildout, with the --distribute option,
- starting at zc.buildout 1.4.2::
-
- $ python bootstrap.py --distribute
-
- For previous zc.buildout versions, *the only thing* you need to do
- is use the bootstrap at `http://python-distribute.org/bootstrap.py`. Run
- that bootstrap and ``bin/buildout`` (and all other buildout-generated
- scripts) will transparently use distribute instead of setuptools. You do
- not need a specific buildout release.
-
- A shared eggs directory is no problem (since 0.6.6): the setuptools egg is
- left in place unmodified. So other buildouts that do not yet use the new
- bootstrap continue to work just fine. And there is no need to list
- ``distribute`` somewhere in your eggs: using the bootstrap is enough.
-
- The source code for the bootstrap script is located at
- `http://bitbucket.org/tarek/buildout-distribute`.
-
-
-
- -----------------------------
- Feedback and getting involved
- -----------------------------
-
- - Mailing list: http://mail.python.org/mailman/listinfo/distutils-sig
- - Issue tracker: http://bitbucket.org/tarek/distribute/issues/
- - Code Repository: http://bitbucket.org/tarek/distribute
-
- =======
- CHANGES
- =======
-
- ------
- 0.6.24
- ------
-
- * Issue #249: Added options to exclude 2to3 fixers
-
- ------
- 0.6.23
- ------
-
- * Issue #244: Fixed a test
- * Issue #243: Fixed a test
- * Issue #239: Fixed a test
- * Issue #240: Fixed a test
- * Issue #241: Fixed a test
- * Issue #237: Fixed a test
- * Issue #238: easy_install now uses 64bit executable wrappers on 64bit Python
- * Issue #208: Fixed parsed_versions, it now honors post-releases as noted in the documentation
- * Issue #207: Windows cli and gui wrappers pass CTRL-C to child python process
- * Issue #227: easy_install now passes its arguments to setup.py bdist_egg
- * Issue #225: Fixed a NameError on Python 2.5, 2.4
-
- ------
- 0.6.21
- ------
-
- * Issue #225: FIxed a regression on py2.4
-
- ------
- 0.6.20
- ------
-
- * Issue #135: Include url in warning when processing URLs in package_index.
- * Issue #212: Fix issue where easy_instal fails on Python 3 on windows installer.
- * Issue #213: Fix typo in documentation.
-
- ------
- 0.6.19
- ------
-
- * Issue 206: AttributeError: 'HTTPMessage' object has no attribute 'getheaders'
-
- ------
- 0.6.18
- ------
-
- * Issue 210: Fixed a regression introduced by Issue 204 fix.
-
- ------
- 0.6.17
- ------
-
- * Support 'DISTRIBUTE_DISABLE_VERSIONED_EASY_INSTALL_SCRIPT' environment
- variable to allow to disable installation of easy_install-${version} script.
- * Support Python >=3.1.4 and >=3.2.1.
- * Issue 204: Don't try to import the parent of a namespace package in
- declare_namespace
- * Issue 196: Tolerate responses with multiple Content-Length headers
- * Issue 205: Sandboxing doesn't preserve working_set. Leads to setup_requires
- problems.
-
- ------
- 0.6.16
- ------
-
- * Builds sdist gztar even on Windows (avoiding Issue 193).
- * Issue 192: Fixed metadata omitted on Windows when package_dir
- specified with forward-slash.
- * Issue 195: Cython build support.
- * Issue 200: Issues with recognizing 64-bit packages on Windows.
-
- ------
- 0.6.15
- ------
-
- * Fixed typo in bdist_egg
- * Several issues under Python 3 has been solved.
- * Issue 146: Fixed missing DLL files after easy_install of windows exe package.
-
- ------
- 0.6.14
- ------
-
- * Issue 170: Fixed unittest failure. Thanks to Toshio.
- * Issue 171: Fixed race condition in unittests cause deadlocks in test suite.
- * Issue 143: Fixed a lookup issue with easy_install.
- Thanks to David and Zooko.
- * Issue 174: Fixed the edit mode when its used with setuptools itself
-
- ------
- 0.6.13
- ------
-
- * Issue 160: 2.7 gives ValueError("Invalid IPv6 URL")
- * Issue 150: Fixed using ~/.local even in a --no-site-packages virtualenv
- * Issue 163: scan index links before external links, and don't use the md5 when
- comparing two distributions
-
- ------
- 0.6.12
- ------
-
- * Issue 149: Fixed various failures on 2.3/2.4
-
- ------
- 0.6.11
- ------
-
- * Found another case of SandboxViolation - fixed
- * Issue 15 and 48: Introduced a socket timeout of 15 seconds on url openings
- * Added indexsidebar.html into MANIFEST.in
- * Issue 108: Fixed TypeError with Python3.1
- * Issue 121: Fixed --help install command trying to actually install.
- * Issue 112: Added an os.makedirs so that Tarek's solution will work.
- * Issue 133: Added --no-find-links to easy_install
- * Added easy_install --user
- * Issue 100: Fixed develop --user not taking '.' in PYTHONPATH into account
- * Issue 134: removed spurious UserWarnings. Patch by VanLindberg
- * Issue 138: cant_write_to_target error when setup_requires is used.
- * Issue 147: respect the sys.dont_write_bytecode flag
-
- ------
- 0.6.10
- ------
-
- * Reverted change made for the DistributionNotFound exception because
- zc.buildout uses the exception message to get the name of the
- distribution.
-
- -----
- 0.6.9
- -----
-
- * Issue 90: unknown setuptools version can be added in the working set
- * Issue 87: setupt.py doesn't try to convert distribute_setup.py anymore
- Initial Patch by arfrever.
- * Issue 89: added a side bar with a download link to the doc.
- * Issue 86: fixed missing sentence in pkg_resources doc.
- * Added a nicer error message when a DistributionNotFound is raised.
- * Issue 80: test_develop now works with Python 3.1
- * Issue 93: upload_docs now works if there is an empty sub-directory.
- * Issue 70: exec bit on non-exec files
- * Issue 99: now the standalone easy_install command doesn't uses a
- "setup.cfg" if any exists in the working directory. It will use it
- only if triggered by ``install_requires`` from a setup.py call
- (install, develop, etc).
- * Issue 101: Allowing ``os.devnull`` in Sandbox
- * Issue 92: Fixed the "no eggs" found error with MacPort
- (platform.mac_ver() fails)
- * Issue 103: test_get_script_header_jython_workaround not run
- anymore under py3 with C or POSIX local. Contributed by Arfrever.
- * Issue 104: remvoved the assertion when the installation fails,
- with a nicer message for the end user.
- * Issue 100: making sure there's no SandboxViolation when
- the setup script patches setuptools.
-
- -----
- 0.6.8
- -----
-
- * Added "check_packages" in dist. (added in Setuptools 0.6c11)
- * Fixed the DONT_PATCH_SETUPTOOLS state.
-
- -----
- 0.6.7
- -----
-
- * Issue 58: Added --user support to the develop command
- * Issue 11: Generated scripts now wrap their call to the script entry point
- in the standard "if name == 'main'"
- * Added the 'DONT_PATCH_SETUPTOOLS' environment variable, so virtualenv
- can drive an installation that doesn't patch a global setuptools.
- * Reviewed unladen-swallow specific change from
- http://code.google.com/p/unladen-swallow/source/detail?spec=svn875&r=719
- and determined that it no longer applies. Distribute should work fine with
- Unladen Swallow 2009Q3.
- * Issue 21: Allow PackageIndex.open_url to gracefully handle all cases of a
- httplib.HTTPException instead of just InvalidURL and BadStatusLine.
- * Removed virtual-python.py from this distribution and updated documentation
- to point to the actively maintained virtualenv instead.
- * Issue 64: use_setuptools no longer rebuilds the distribute egg every
- time it is run
- * use_setuptools now properly respects the requested version
- * use_setuptools will no longer try to import a distribute egg for the
- wrong Python version
- * Issue 74: no_fake should be True by default.
- * Issue 72: avoid a bootstrapping issue with easy_install -U
-
- -----
- 0.6.6
- -----
-
- * Unified the bootstrap file so it works on both py2.x and py3k without 2to3
- (patch by Holger Krekel)
-
- -----
- 0.6.5
- -----
-
- * Issue 65: cli.exe and gui.exe are now generated at build time,
- depending on the platform in use.
-
- * Issue 67: Fixed doc typo (PEP 381/382)
-
- * Distribute no longer shadows setuptools if we require a 0.7-series
- setuptools. And an error is raised when installing a 0.7 setuptools with
- distribute.
-
- * When run from within buildout, no attempt is made to modify an existing
- setuptools egg, whether in a shared egg directory or a system setuptools.
-
- * Fixed a hole in sandboxing allowing builtin file to write outside of
- the sandbox.
-
- -----
- 0.6.4
- -----
-
- * Added the generation of `distribute_setup_3k.py` during the release.
- This close http://bitbucket.org/tarek/distribute/issue/52.
-
- * Added an upload_docs command to easily upload project documentation to
- PyPI's http://packages.python.org.
- This close http://bitbucket.org/tarek/distribute/issue/56.
-
- * Fixed a bootstrap bug on the use_setuptools() API.
-
- -----
- 0.6.3
- -----
-
- setuptools
- ==========
-
- * Fixed a bunch of calls to file() that caused crashes on Python 3.
-
- bootstrapping
- =============
-
- * Fixed a bug in sorting that caused bootstrap to fail on Python 3.
-
- -----
- 0.6.2
- -----
-
- setuptools
- ==========
-
- * Added Python 3 support; see docs/python3.txt.
- This closes http://bugs.python.org/setuptools/issue39.
-
- * Added option to run 2to3 automatically when installing on Python 3.
- This closes http://bitbucket.org/tarek/distribute/issue/31.
-
- * Fixed invalid usage of requirement.parse, that broke develop -d.
- This closes http://bugs.python.org/setuptools/issue44.
-
- * Fixed script launcher for 64-bit Windows.
- This closes http://bugs.python.org/setuptools/issue2.
-
- * KeyError when compiling extensions.
- This closes http://bugs.python.org/setuptools/issue41.
-
- bootstrapping
- =============
-
- * Fixed bootstrap not working on Windows.
- This closes http://bitbucket.org/tarek/distribute/issue/49.
-
- * Fixed 2.6 dependencies.
- This closes http://bitbucket.org/tarek/distribute/issue/50.
-
- * Make sure setuptools is patched when running through easy_install
- This closes http://bugs.python.org/setuptools/issue40.
-
- -----
- 0.6.1
- -----
-
- setuptools
- ==========
-
- * package_index.urlopen now catches BadStatusLine and malformed url errors.
- This closes http://bitbucket.org/tarek/distribute/issue/16 and
- http://bitbucket.org/tarek/distribute/issue/18.
-
- * zip_ok is now False by default. This closes
- http://bugs.python.org/setuptools/issue33.
-
- * Fixed invalid URL error catching. http://bugs.python.org/setuptools/issue20.
-
- * Fixed invalid bootstraping with easy_install installation
- http://bitbucket.org/tarek/distribute/issue/40.
- Thanks to Florian Schulze for the help.
-
- * Removed buildout/bootstrap.py. A new repository will create a specific
- bootstrap.py script.
-
-
- bootstrapping
- =============
-
- * The boostrap process leave setuptools alone if detected in the system
- and --root or --prefix is provided, but is not in the same location.
- This closes http://bitbucket.org/tarek/distribute/issue/10.
-
- ---
- 0.6
- ---
-
- setuptools
- ==========
-
- * Packages required at build time where not fully present at install time.
- This closes http://bitbucket.org/tarek/distribute/issue/12.
-
- * Protected against failures in tarfile extraction. This closes
- http://bitbucket.org/tarek/distribute/issue/10.
-
- * Made Jython api_tests.txt doctest compatible. This closes
- http://bitbucket.org/tarek/distribute/issue/7.
-
- * sandbox.py replaced builtin type file with builtin function open. This
- closes http://bitbucket.org/tarek/distribute/issue/6.
-
- * Immediately close all file handles. This closes
- http://bitbucket.org/tarek/distribute/issue/3.
-
- * Added compatibility with Subversion 1.6. This references
- http://bitbucket.org/tarek/distribute/issue/1.
-
- pkg_resources
- =============
-
- * Avoid a call to /usr/bin/sw_vers on OSX and use the official platform API
- instead. Based on a patch from ronaldoussoren. This closes
- http://bitbucket.org/tarek/distribute/issue/5.
-
- * Fixed a SandboxViolation for mkdir that could occur in certain cases.
- This closes http://bitbucket.org/tarek/distribute/issue/13.
-
- * Allow to find_on_path on systems with tight permissions to fail gracefully.
- This closes http://bitbucket.org/tarek/distribute/issue/9.
-
- * Corrected inconsistency between documentation and code of add_entry.
- This closes http://bitbucket.org/tarek/distribute/issue/8.
-
- * Immediately close all file handles. This closes
- http://bitbucket.org/tarek/distribute/issue/3.
-
- easy_install
- ============
-
- * Immediately close all file handles. This closes
- http://bitbucket.org/tarek/distribute/issue/3.
-
-
-Keywords: CPAN PyPI distutils eggs package management
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: Python Software Foundation License
-Classifier: License :: OSI Approved :: Zope Public License
-Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 3
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Classifier: Topic :: System :: Archiving :: Packaging
-Classifier: Topic :: System :: Systems Administration
-Classifier: Topic :: Utilities
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/SOURCES.txt b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/SOURCES.txt
deleted file mode 100644
index c034270..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/SOURCES.txt
+++ /dev/null
@@ -1,98 +0,0 @@
-CHANGES.txt
-CONTRIBUTORS.txt
-DEVGUIDE.txt
-MANIFEST.in
-README.txt
-distribute_setup.py
-easy_install.py
-launcher.c
-pkg_resources.py
-release.py
-setup.cfg
-setup.py
-site.py
-.hg/last-message.txt
-distribute.egg-info/PKG-INFO
-distribute.egg-info/SOURCES.txt
-distribute.egg-info/dependency_links.txt
-distribute.egg-info/entry_points.txt
-distribute.egg-info/top_level.txt
-distribute.egg-info/zip-safe
-docs/conf.py
-docs/easy_install.txt
-docs/index.txt
-docs/pkg_resources.txt
-docs/python3.txt
-docs/roadmap.txt
-docs/setuptools.txt
-docs/using.txt
-docs/_theme/nature/theme.conf
-docs/_theme/nature/static/nature.css_t
-docs/_theme/nature/static/pygments.css
-docs/build/html/_sources/easy_install.txt
-docs/build/html/_sources/index.txt
-docs/build/html/_sources/pkg_resources.txt
-docs/build/html/_sources/python3.txt
-docs/build/html/_sources/roadmap.txt
-docs/build/html/_sources/setuptools.txt
-docs/build/html/_sources/using.txt
-docs/build/html/_static/basic.css
-docs/build/html/_static/nature.css
-docs/build/html/_static/pygments.css
-setuptools/__init__.py
-setuptools/archive_util.py
-setuptools/cli-32.exe
-setuptools/cli-64.exe
-setuptools/cli.exe
-setuptools/depends.py
-setuptools/dist.py
-setuptools/extension.py
-setuptools/gui-32.exe
-setuptools/gui-64.exe
-setuptools/gui.exe
-setuptools/package_index.py
-setuptools/sandbox.py
-setuptools/command/__init__.py
-setuptools/command/alias.py
-setuptools/command/bdist_egg.py
-setuptools/command/bdist_rpm.py
-setuptools/command/bdist_wininst.py
-setuptools/command/build_ext.py
-setuptools/command/build_py.py
-setuptools/command/develop.py
-setuptools/command/easy_install.py
-setuptools/command/egg_info.py
-setuptools/command/install.py
-setuptools/command/install_egg_info.py
-setuptools/command/install_lib.py
-setuptools/command/install_scripts.py
-setuptools/command/register.py
-setuptools/command/rotate.py
-setuptools/command/saveopts.py
-setuptools/command/sdist.py
-setuptools/command/setopt.py
-setuptools/command/test.py
-setuptools/command/upload.py
-setuptools/command/upload_docs.py
-setuptools/tests/__init__.py
-setuptools/tests/doctest.py
-setuptools/tests/server.py
-setuptools/tests/test_build_ext.py
-setuptools/tests/test_develop.py
-setuptools/tests/test_easy_install.py
-setuptools/tests/test_packageindex.py
-setuptools/tests/test_resources.py
-setuptools/tests/test_sandbox.py
-setuptools/tests/test_upload_docs.py
-setuptools/tests/win_script_wrapper.txt
-setuptools/tests/indexes/test_links_priority/external.html
-setuptools/tests/indexes/test_links_priority/simple/foobar/index.html
-tests/api_tests.txt
-tests/install_test.py
-tests/manual_test.py
-tests/test_distribute_setup.py
-tests/shlib_test/hello.c
-tests/shlib_test/hello.pyx
-tests/shlib_test/hellolib.c
-tests/shlib_test/setup.py
-tests/shlib_test/test_hello.py \ No newline at end of file
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/dependency_links.txt b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/dependency_links.txt
deleted file mode 100644
index 8b13789..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/dependency_links.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/entry_points.txt b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/entry_points.txt
deleted file mode 100644
index 663882d..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/entry_points.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-[distutils.commands]
-bdist_rpm = setuptools.command.bdist_rpm:bdist_rpm
-rotate = setuptools.command.rotate:rotate
-develop = setuptools.command.develop:develop
-setopt = setuptools.command.setopt:setopt
-build_py = setuptools.command.build_py:build_py
-saveopts = setuptools.command.saveopts:saveopts
-egg_info = setuptools.command.egg_info:egg_info
-register = setuptools.command.register:register
-upload_docs = setuptools.command.upload_docs:upload_docs
-install_egg_info = setuptools.command.install_egg_info:install_egg_info
-alias = setuptools.command.alias:alias
-easy_install = setuptools.command.easy_install:easy_install
-install_scripts = setuptools.command.install_scripts:install_scripts
-bdist_wininst = setuptools.command.bdist_wininst:bdist_wininst
-bdist_egg = setuptools.command.bdist_egg:bdist_egg
-install = setuptools.command.install:install
-test = setuptools.command.test:test
-install_lib = setuptools.command.install_lib:install_lib
-build_ext = setuptools.command.build_ext:build_ext
-sdist = setuptools.command.sdist:sdist
-
-[egg_info.writers]
-dependency_links.txt = setuptools.command.egg_info:overwrite_arg
-requires.txt = setuptools.command.egg_info:write_requirements
-PKG-INFO = setuptools.command.egg_info:write_pkg_info
-eager_resources.txt = setuptools.command.egg_info:overwrite_arg
-top_level.txt = setuptools.command.egg_info:write_toplevel_names
-namespace_packages.txt = setuptools.command.egg_info:overwrite_arg
-entry_points.txt = setuptools.command.egg_info:write_entries
-depends.txt = setuptools.command.egg_info:warn_depends_obsolete
-
-[console_scripts]
-easy_install = setuptools.command.easy_install:main
-easy_install-2.7 = setuptools.command.easy_install:main
-
-[setuptools.file_finders]
-svn_cvs = setuptools.command.sdist:_default_revctrl
-
-[distutils.setup_keywords]
-dependency_links = setuptools.dist:assert_string_list
-entry_points = setuptools.dist:check_entry_points
-extras_require = setuptools.dist:check_extras
-use_2to3_exclude_fixers = setuptools.dist:assert_string_list
-package_data = setuptools.dist:check_package_data
-install_requires = setuptools.dist:check_requirements
-use_2to3 = setuptools.dist:assert_bool
-use_2to3_fixers = setuptools.dist:assert_string_list
-include_package_data = setuptools.dist:assert_bool
-exclude_package_data = setuptools.dist:check_package_data
-namespace_packages = setuptools.dist:check_nsp
-test_suite = setuptools.dist:check_test_suite
-eager_resources = setuptools.dist:assert_string_list
-zip_safe = setuptools.dist:assert_bool
-test_loader = setuptools.dist:check_importable
-packages = setuptools.dist:check_packages
-convert_2to3_doctests = setuptools.dist:assert_string_list
-tests_require = setuptools.dist:check_requirements
-
-[setuptools.installation]
-eggsecutable = setuptools.command.easy_install:bootstrap
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/top_level.txt b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/top_level.txt
deleted file mode 100644
index ef77c7c..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/top_level.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-easy_install
-pkg_resources
-setuptools
-site
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/zip-safe b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/zip-safe
deleted file mode 100644
index d3f5a12..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/EGG-INFO/zip-safe
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/easy_install.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/easy_install.py
deleted file mode 100644
index d87e984..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/easy_install.py
+++ /dev/null
@@ -1,5 +0,0 @@
-"""Run the EasyInstall command"""
-
-if __name__ == '__main__':
- from setuptools.command.easy_install import main
- main()
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py
deleted file mode 100644
index e8dae8a..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/pkg_resources.py
+++ /dev/null
@@ -1,2729 +0,0 @@
-"""Package resource API
---------------------
-
-A resource is a logical file contained within a package, or a logical
-subdirectory thereof. The package resource API expects resource names
-to have their path parts separated with ``/``, *not* whatever the local
-path separator is. Do not use os.path operations to manipulate resource
-names being passed into the API.
-
-The package resource API is designed to work with normal filesystem packages,
-.egg files, and unpacked .egg files. It can also work in a limited way with
-.zip files and with custom PEP 302 loaders that support the ``get_data()``
-method.
-"""
-
-import sys, os, zipimport, time, re, imp, types
-from urlparse import urlparse, urlunparse
-
-try:
- frozenset
-except NameError:
- from sets import ImmutableSet as frozenset
-
-# capture these to bypass sandboxing
-from os import utime
-try:
- from os import mkdir, rename, unlink
- WRITE_SUPPORT = True
-except ImportError:
- # no write support, probably under GAE
- WRITE_SUPPORT = False
-
-from os import open as os_open
-from os.path import isdir, split
-
-# This marker is used to simplify the process that checks is the
-# setuptools package was installed by the Setuptools project
-# or by the Distribute project, in case Setuptools creates
-# a distribution with the same version.
-#
-# The bootstrapping script for instance, will check if this
-# attribute is present to decide wether to reinstall the package
-_distribute = True
-
-def _bypass_ensure_directory(name, mode=0777):
- # Sandbox-bypassing version of ensure_directory()
- if not WRITE_SUPPORT:
- raise IOError('"os.mkdir" not supported on this platform.')
- dirname, filename = split(name)
- if dirname and filename and not isdir(dirname):
- _bypass_ensure_directory(dirname)
- mkdir(dirname, mode)
-
-
-_state_vars = {}
-
-def _declare_state(vartype, **kw):
- g = globals()
- for name, val in kw.iteritems():
- g[name] = val
- _state_vars[name] = vartype
-
-def __getstate__():
- state = {}
- g = globals()
- for k, v in _state_vars.iteritems():
- state[k] = g['_sget_'+v](g[k])
- return state
-
-def __setstate__(state):
- g = globals()
- for k, v in state.iteritems():
- g['_sset_'+_state_vars[k]](k, g[k], v)
- return state
-
-def _sget_dict(val):
- return val.copy()
-
-def _sset_dict(key, ob, state):
- ob.clear()
- ob.update(state)
-
-def _sget_object(val):
- return val.__getstate__()
-
-def _sset_object(key, ob, state):
- ob.__setstate__(state)
-
-_sget_none = _sset_none = lambda *args: None
-
-
-
-def get_supported_platform():
- """Return this platform's maximum compatible version.
-
- distutils.util.get_platform() normally reports the minimum version
- of Mac OS X that would be required to *use* extensions produced by
- distutils. But what we want when checking compatibility is to know the
- version of Mac OS X that we are *running*. To allow usage of packages that
- explicitly require a newer version of Mac OS X, we must also know the
- current version of the OS.
-
- If this condition occurs for any other platform with a version in its
- platform strings, this function should be extended accordingly.
- """
- plat = get_build_platform(); m = macosVersionString.match(plat)
- if m is not None and sys.platform == "darwin":
- try:
- plat = 'macosx-%s-%s' % ('.'.join(_macosx_vers()[:2]), m.group(3))
- except ValueError:
- pass # not Mac OS X
- return plat
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-__all__ = [
- # Basic resource access and distribution/entry point discovery
- 'require', 'run_script', 'get_provider', 'get_distribution',
- 'load_entry_point', 'get_entry_map', 'get_entry_info', 'iter_entry_points',
- 'resource_string', 'resource_stream', 'resource_filename',
- 'resource_listdir', 'resource_exists', 'resource_isdir',
-
- # Environmental control
- 'declare_namespace', 'working_set', 'add_activation_listener',
- 'find_distributions', 'set_extraction_path', 'cleanup_resources',
- 'get_default_cache',
-
- # Primary implementation classes
- 'Environment', 'WorkingSet', 'ResourceManager',
- 'Distribution', 'Requirement', 'EntryPoint',
-
- # Exceptions
- 'ResolutionError','VersionConflict','DistributionNotFound','UnknownExtra',
- 'ExtractionError',
-
- # Parsing functions and string utilities
- 'parse_requirements', 'parse_version', 'safe_name', 'safe_version',
- 'get_platform', 'compatible_platforms', 'yield_lines', 'split_sections',
- 'safe_extra', 'to_filename',
-
- # filesystem utilities
- 'ensure_directory', 'normalize_path',
-
- # Distribution "precedence" constants
- 'EGG_DIST', 'BINARY_DIST', 'SOURCE_DIST', 'CHECKOUT_DIST', 'DEVELOP_DIST',
-
- # "Provider" interfaces, implementations, and registration/lookup APIs
- 'IMetadataProvider', 'IResourceProvider', 'FileMetadata',
- 'PathMetadata', 'EggMetadata', 'EmptyProvider', 'empty_provider',
- 'NullProvider', 'EggProvider', 'DefaultProvider', 'ZipProvider',
- 'register_finder', 'register_namespace_handler', 'register_loader_type',
- 'fixup_namespace_packages', 'get_importer',
-
- # Deprecated/backward compatibility only
- 'run_main', 'AvailableDistributions',
-]
-class ResolutionError(Exception):
- """Abstract base for dependency resolution errors"""
- def __repr__(self):
- return self.__class__.__name__+repr(self.args)
-
-class VersionConflict(ResolutionError):
- """An already-installed version conflicts with the requested version"""
-
-class DistributionNotFound(ResolutionError):
- """A requested distribution was not found"""
-
-class UnknownExtra(ResolutionError):
- """Distribution doesn't have an "extra feature" of the given name"""
-_provider_factories = {}
-
-PY_MAJOR = sys.version[:3]
-EGG_DIST = 3
-BINARY_DIST = 2
-SOURCE_DIST = 1
-CHECKOUT_DIST = 0
-DEVELOP_DIST = -1
-
-def register_loader_type(loader_type, provider_factory):
- """Register `provider_factory` to make providers for `loader_type`
-
- `loader_type` is the type or class of a PEP 302 ``module.__loader__``,
- and `provider_factory` is a function that, passed a *module* object,
- returns an ``IResourceProvider`` for that module.
- """
- _provider_factories[loader_type] = provider_factory
-
-def get_provider(moduleOrReq):
- """Return an IResourceProvider for the named module or requirement"""
- if isinstance(moduleOrReq,Requirement):
- return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
- try:
- module = sys.modules[moduleOrReq]
- except KeyError:
- __import__(moduleOrReq)
- module = sys.modules[moduleOrReq]
- loader = getattr(module, '__loader__', None)
- return _find_adapter(_provider_factories, loader)(module)
-
-def _macosx_vers(_cache=[]):
- if not _cache:
- import platform
- version = platform.mac_ver()[0]
- # fallback for MacPorts
- if version == '':
- import plistlib
- plist = '/System/Library/CoreServices/SystemVersion.plist'
- if os.path.exists(plist):
- if hasattr(plistlib, 'readPlist'):
- plist_content = plistlib.readPlist(plist)
- if 'ProductVersion' in plist_content:
- version = plist_content['ProductVersion']
-
- _cache.append(version.split('.'))
- return _cache[0]
-
-def _macosx_arch(machine):
- return {'PowerPC':'ppc', 'Power_Macintosh':'ppc'}.get(machine,machine)
-
-def get_build_platform():
- """Return this platform's string for platform-specific distributions
-
- XXX Currently this is the same as ``distutils.util.get_platform()``, but it
- needs some hacks for Linux and Mac OS X.
- """
- try:
- from distutils.util import get_platform
- except ImportError:
- from sysconfig import get_platform
-
- plat = get_platform()
- if sys.platform == "darwin" and not plat.startswith('macosx-'):
- try:
- version = _macosx_vers()
- machine = os.uname()[4].replace(" ", "_")
- return "macosx-%d.%d-%s" % (int(version[0]), int(version[1]),
- _macosx_arch(machine))
- except ValueError:
- # if someone is running a non-Mac darwin system, this will fall
- # through to the default implementation
- pass
- return plat
-
-macosVersionString = re.compile(r"macosx-(\d+)\.(\d+)-(.*)")
-darwinVersionString = re.compile(r"darwin-(\d+)\.(\d+)\.(\d+)-(.*)")
-get_platform = get_build_platform # XXX backward compat
-
-def compatible_platforms(provided,required):
- """Can code for the `provided` platform run on the `required` platform?
-
- Returns true if either platform is ``None``, or the platforms are equal.
-
- XXX Needs compatibility checks for Linux and other unixy OSes.
- """
- if provided is None or required is None or provided==required:
- return True # easy case
-
- # Mac OS X special cases
- reqMac = macosVersionString.match(required)
- if reqMac:
- provMac = macosVersionString.match(provided)
-
- # is this a Mac package?
- if not provMac:
- # this is backwards compatibility for packages built before
- # setuptools 0.6. All packages built after this point will
- # use the new macosx designation.
- provDarwin = darwinVersionString.match(provided)
- if provDarwin:
- dversion = int(provDarwin.group(1))
- macosversion = "%s.%s" % (reqMac.group(1), reqMac.group(2))
- if dversion == 7 and macosversion >= "10.3" or \
- dversion == 8 and macosversion >= "10.4":
-
- #import warnings
- #warnings.warn("Mac eggs should be rebuilt to "
- # "use the macosx designation instead of darwin.",
- # category=DeprecationWarning)
- return True
- return False # egg isn't macosx or legacy darwin
-
- # are they the same major version and machine type?
- if provMac.group(1) != reqMac.group(1) or \
- provMac.group(3) != reqMac.group(3):
- return False
-
-
-
- # is the required OS major update >= the provided one?
- if int(provMac.group(2)) > int(reqMac.group(2)):
- return False
-
- return True
-
- # XXX Linux and other platforms' special cases should go here
- return False
-
-
-def run_script(dist_spec, script_name):
- """Locate distribution `dist_spec` and run its `script_name` script"""
- ns = sys._getframe(1).f_globals
- name = ns['__name__']
- ns.clear()
- ns['__name__'] = name
- require(dist_spec)[0].run_script(script_name, ns)
-
-run_main = run_script # backward compatibility
-
-def get_distribution(dist):
- """Return a current distribution object for a Requirement or string"""
- if isinstance(dist,basestring): dist = Requirement.parse(dist)
- if isinstance(dist,Requirement): dist = get_provider(dist)
- if not isinstance(dist,Distribution):
- raise TypeError("Expected string, Requirement, or Distribution", dist)
- return dist
-
-def load_entry_point(dist, group, name):
- """Return `name` entry point of `group` for `dist` or raise ImportError"""
- return get_distribution(dist).load_entry_point(group, name)
-
-def get_entry_map(dist, group=None):
- """Return the entry point map for `group`, or the full entry map"""
- return get_distribution(dist).get_entry_map(group)
-
-def get_entry_info(dist, group, name):
- """Return the EntryPoint object for `group`+`name`, or ``None``"""
- return get_distribution(dist).get_entry_info(group, name)
-
-
-class IMetadataProvider:
-
- def has_metadata(name):
- """Does the package's distribution contain the named metadata?"""
-
- def get_metadata(name):
- """The named metadata resource as a string"""
-
- def get_metadata_lines(name):
- """Yield named metadata resource as list of non-blank non-comment lines
-
- Leading and trailing whitespace is stripped from each line, and lines
- with ``#`` as the first non-blank character are omitted."""
-
- def metadata_isdir(name):
- """Is the named metadata a directory? (like ``os.path.isdir()``)"""
-
- def metadata_listdir(name):
- """List of metadata names in the directory (like ``os.listdir()``)"""
-
- def run_script(script_name, namespace):
- """Execute the named script in the supplied namespace dictionary"""
-
-
-
-
-
-
-
-
-
-
-class IResourceProvider(IMetadataProvider):
- """An object that provides access to package resources"""
-
- def get_resource_filename(manager, resource_name):
- """Return a true filesystem path for `resource_name`
-
- `manager` must be an ``IResourceManager``"""
-
- def get_resource_stream(manager, resource_name):
- """Return a readable file-like object for `resource_name`
-
- `manager` must be an ``IResourceManager``"""
-
- def get_resource_string(manager, resource_name):
- """Return a string containing the contents of `resource_name`
-
- `manager` must be an ``IResourceManager``"""
-
- def has_resource(resource_name):
- """Does the package contain the named resource?"""
-
- def resource_isdir(resource_name):
- """Is the named resource a directory? (like ``os.path.isdir()``)"""
-
- def resource_listdir(resource_name):
- """List of resource names in the directory (like ``os.listdir()``)"""
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-class WorkingSet(object):
- """A collection of active distributions on sys.path (or a similar list)"""
-
- def __init__(self, entries=None):
- """Create working set from list of path entries (default=sys.path)"""
- self.entries = []
- self.entry_keys = {}
- self.by_key = {}
- self.callbacks = []
-
- if entries is None:
- entries = sys.path
-
- for entry in entries:
- self.add_entry(entry)
-
-
- def add_entry(self, entry):
- """Add a path item to ``.entries``, finding any distributions on it
-
- ``find_distributions(entry,True)`` is used to find distributions
- corresponding to the path entry, and they are added. `entry` is
- always appended to ``.entries``, even if it is already present.
- (This is because ``sys.path`` can contain the same value more than
- once, and the ``.entries`` of the ``sys.path`` WorkingSet should always
- equal ``sys.path``.)
- """
- self.entry_keys.setdefault(entry, [])
- self.entries.append(entry)
- for dist in find_distributions(entry, True):
- self.add(dist, entry, False)
-
-
- def __contains__(self,dist):
- """True if `dist` is the active distribution for its project"""
- return self.by_key.get(dist.key) == dist
-
-
-
-
-
- def find(self, req):
- """Find a distribution matching requirement `req`
-
- If there is an active distribution for the requested project, this
- returns it as long as it meets the version requirement specified by
- `req`. But, if there is an active distribution for the project and it
- does *not* meet the `req` requirement, ``VersionConflict`` is raised.
- If there is no active distribution for the requested project, ``None``
- is returned.
- """
- dist = self.by_key.get(req.key)
- if dist is not None and dist not in req:
- raise VersionConflict(dist,req) # XXX add more info
- else:
- return dist
-
- def iter_entry_points(self, group, name=None):
- """Yield entry point objects from `group` matching `name`
-
- If `name` is None, yields all entry points in `group` from all
- distributions in the working set, otherwise only ones matching
- both `group` and `name` are yielded (in distribution order).
- """
- for dist in self:
- entries = dist.get_entry_map(group)
- if name is None:
- for ep in entries.values():
- yield ep
- elif name in entries:
- yield entries[name]
-
- def run_script(self, requires, script_name):
- """Locate distribution for `requires` and run `script_name` script"""
- ns = sys._getframe(1).f_globals
- name = ns['__name__']
- ns.clear()
- ns['__name__'] = name
- self.require(requires)[0].run_script(script_name, ns)
-
-
-
- def __iter__(self):
- """Yield distributions for non-duplicate projects in the working set
-
- The yield order is the order in which the items' path entries were
- added to the working set.
- """
- seen = {}
- for item in self.entries:
- for key in self.entry_keys[item]:
- if key not in seen:
- seen[key]=1
- yield self.by_key[key]
-
- def add(self, dist, entry=None, insert=True):
- """Add `dist` to working set, associated with `entry`
-
- If `entry` is unspecified, it defaults to the ``.location`` of `dist`.
- On exit from this routine, `entry` is added to the end of the working
- set's ``.entries`` (if it wasn't already present).
-
- `dist` is only added to the working set if it's for a project that
- doesn't already have a distribution in the set. If it's added, any
- callbacks registered with the ``subscribe()`` method will be called.
- """
- if insert:
- dist.insert_on(self.entries, entry)
-
- if entry is None:
- entry = dist.location
- keys = self.entry_keys.setdefault(entry,[])
- keys2 = self.entry_keys.setdefault(dist.location,[])
- if dist.key in self.by_key:
- return # ignore hidden distros
-
- self.by_key[dist.key] = dist
- if dist.key not in keys:
- keys.append(dist.key)
- if dist.key not in keys2:
- keys2.append(dist.key)
- self._added_new(dist)
-
- def resolve(self, requirements, env=None, installer=None, replacement=True):
- """List all distributions needed to (recursively) meet `requirements`
-
- `requirements` must be a sequence of ``Requirement`` objects. `env`,
- if supplied, should be an ``Environment`` instance. If
- not supplied, it defaults to all distributions available within any
- entry or distribution in the working set. `installer`, if supplied,
- will be invoked with each requirement that cannot be met by an
- already-installed distribution; it should return a ``Distribution`` or
- ``None``.
- """
-
- requirements = list(requirements)[::-1] # set up the stack
- processed = {} # set of processed requirements
- best = {} # key -> dist
- to_activate = []
-
- while requirements:
- req = requirements.pop(0) # process dependencies breadth-first
- if _override_setuptools(req) and replacement:
- req = Requirement.parse('distribute')
-
- if req in processed:
- # Ignore cyclic or redundant dependencies
- continue
- dist = best.get(req.key)
- if dist is None:
- # Find the best distribution and add it to the map
- dist = self.by_key.get(req.key)
- if dist is None:
- if env is None:
- env = Environment(self.entries)
- dist = best[req.key] = env.best_match(req, self, installer)
- if dist is None:
- #msg = ("The '%s' distribution was not found on this "
- # "system, and is required by this application.")
- #raise DistributionNotFound(msg % req)
-
- # unfortunately, zc.buildout uses a str(err)
- # to get the name of the distribution here..
- raise DistributionNotFound(req)
- to_activate.append(dist)
- if dist not in req:
- # Oops, the "best" so far conflicts with a dependency
- raise VersionConflict(dist,req) # XXX put more info here
- requirements.extend(dist.requires(req.extras)[::-1])
- processed[req] = True
-
- return to_activate # return list of distros to activate
-
- def find_plugins(self,
- plugin_env, full_env=None, installer=None, fallback=True
- ):
- """Find all activatable distributions in `plugin_env`
-
- Example usage::
-
- distributions, errors = working_set.find_plugins(
- Environment(plugin_dirlist)
- )
- map(working_set.add, distributions) # add plugins+libs to sys.path
- print 'Could not load', errors # display errors
-
- The `plugin_env` should be an ``Environment`` instance that contains
- only distributions that are in the project's "plugin directory" or
- directories. The `full_env`, if supplied, should be an ``Environment``
- contains all currently-available distributions. If `full_env` is not
- supplied, one is created automatically from the ``WorkingSet`` this
- method is called on, which will typically mean that every directory on
- ``sys.path`` will be scanned for distributions.
-
- `installer` is a standard installer callback as used by the
- ``resolve()`` method. The `fallback` flag indicates whether we should
- attempt to resolve older versions of a plugin if the newest version
- cannot be resolved.
-
- This method returns a 2-tuple: (`distributions`, `error_info`), where
- `distributions` is a list of the distributions found in `plugin_env`
- that were loadable, along with any other distributions that are needed
- to resolve their dependencies. `error_info` is a dictionary mapping
- unloadable plugin distributions to an exception instance describing the
- error that occurred. Usually this will be a ``DistributionNotFound`` or
- ``VersionConflict`` instance.
- """
-
- plugin_projects = list(plugin_env)
- plugin_projects.sort() # scan project names in alphabetic order
-
- error_info = {}
- distributions = {}
-
- if full_env is None:
- env = Environment(self.entries)
- env += plugin_env
- else:
- env = full_env + plugin_env
-
- shadow_set = self.__class__([])
- map(shadow_set.add, self) # put all our entries in shadow_set
-
- for project_name in plugin_projects:
-
- for dist in plugin_env[project_name]:
-
- req = [dist.as_requirement()]
-
- try:
- resolvees = shadow_set.resolve(req, env, installer)
-
- except ResolutionError,v:
- error_info[dist] = v # save error info
- if fallback:
- continue # try the next older version of project
- else:
- break # give up on this project, keep going
-
- else:
- map(shadow_set.add, resolvees)
- distributions.update(dict.fromkeys(resolvees))
-
- # success, no need to try any more versions of this project
- break
-
- distributions = list(distributions)
- distributions.sort()
-
- return distributions, error_info
-
-
-
-
-
- def require(self, *requirements):
- """Ensure that distributions matching `requirements` are activated
-
- `requirements` must be a string or a (possibly-nested) sequence
- thereof, specifying the distributions and versions required. The
- return value is a sequence of the distributions that needed to be
- activated to fulfill the requirements; all relevant distributions are
- included, even if they were already activated in this working set.
- """
-
- needed = self.resolve(parse_requirements(requirements))
-
- for dist in needed:
- self.add(dist)
-
- return needed
-
-
- def subscribe(self, callback):
- """Invoke `callback` for all distributions (including existing ones)"""
- if callback in self.callbacks:
- return
- self.callbacks.append(callback)
- for dist in self:
- callback(dist)
-
-
- def _added_new(self, dist):
- for callback in self.callbacks:
- callback(dist)
-
- def __getstate__(self):
- return (self.entries[:], self.entry_keys.copy(), self.by_key.copy(),
- self.callbacks[:])
-
- def __setstate__(self, (entries, keys, by_key, callbacks)):
- self.entries = entries[:]
- self.entry_keys = keys.copy()
- self.by_key = by_key.copy()
- self.callbacks = callbacks[:]
-
-
-
-
-class Environment(object):
- """Searchable snapshot of distributions on a search path"""
-
- def __init__(self, search_path=None, platform=get_supported_platform(), python=PY_MAJOR):
- """Snapshot distributions available on a search path
-
- Any distributions found on `search_path` are added to the environment.
- `search_path` should be a sequence of ``sys.path`` items. If not
- supplied, ``sys.path`` is used.
-
- `platform` is an optional string specifying the name of the platform
- that platform-specific distributions must be compatible with. If
- unspecified, it defaults to the current platform. `python` is an
- optional string naming the desired version of Python (e.g. ``'2.4'``);
- it defaults to the current version.
-
- You may explicitly set `platform` (and/or `python`) to ``None`` if you
- wish to map *all* distributions, not just those compatible with the
- running platform or Python version.
- """
- self._distmap = {}
- self._cache = {}
- self.platform = platform
- self.python = python
- self.scan(search_path)
-
- def can_add(self, dist):
- """Is distribution `dist` acceptable for this environment?
-
- The distribution must match the platform and python version
- requirements specified when this environment was created, or False
- is returned.
- """
- return (self.python is None or dist.py_version is None
- or dist.py_version==self.python) \
- and compatible_platforms(dist.platform,self.platform)
-
- def remove(self, dist):
- """Remove `dist` from the environment"""
- self._distmap[dist.key].remove(dist)
-
- def scan(self, search_path=None):
- """Scan `search_path` for distributions usable in this environment
-
- Any distributions found are added to the environment.
- `search_path` should be a sequence of ``sys.path`` items. If not
- supplied, ``sys.path`` is used. Only distributions conforming to
- the platform/python version defined at initialization are added.
- """
- if search_path is None:
- search_path = sys.path
-
- for item in search_path:
- for dist in find_distributions(item):
- self.add(dist)
-
- def __getitem__(self,project_name):
- """Return a newest-to-oldest list of distributions for `project_name`
- """
- try:
- return self._cache[project_name]
- except KeyError:
- project_name = project_name.lower()
- if project_name not in self._distmap:
- return []
-
- if project_name not in self._cache:
- dists = self._cache[project_name] = self._distmap[project_name]
- _sort_dists(dists)
-
- return self._cache[project_name]
-
- def add(self,dist):
- """Add `dist` if we ``can_add()`` it and it isn't already added"""
- if self.can_add(dist) and dist.has_version():
- dists = self._distmap.setdefault(dist.key,[])
- if dist not in dists:
- dists.append(dist)
- if dist.key in self._cache:
- _sort_dists(self._cache[dist.key])
-
-
- def best_match(self, req, working_set, installer=None):
- """Find distribution best matching `req` and usable on `working_set`
-
- This calls the ``find(req)`` method of the `working_set` to see if a
- suitable distribution is already active. (This may raise
- ``VersionConflict`` if an unsuitable version of the project is already
- active in the specified `working_set`.) If a suitable distribution
- isn't active, this method returns the newest distribution in the
- environment that meets the ``Requirement`` in `req`. If no suitable
- distribution is found, and `installer` is supplied, then the result of
- calling the environment's ``obtain(req, installer)`` method will be
- returned.
- """
- dist = working_set.find(req)
- if dist is not None:
- return dist
- for dist in self[req.key]:
- if dist in req:
- return dist
- return self.obtain(req, installer) # try and download/install
-
- def obtain(self, requirement, installer=None):
- """Obtain a distribution matching `requirement` (e.g. via download)
-
- Obtain a distro that matches requirement (e.g. via download). In the
- base ``Environment`` class, this routine just returns
- ``installer(requirement)``, unless `installer` is None, in which case
- None is returned instead. This method is a hook that allows subclasses
- to attempt other ways of obtaining a distribution before falling back
- to the `installer` argument."""
- if installer is not None:
- return installer(requirement)
-
- def __iter__(self):
- """Yield the unique project names of the available distributions"""
- for key in self._distmap.keys():
- if self[key]: yield key
-
-
-
-
- def __iadd__(self, other):
- """In-place addition of a distribution or environment"""
- if isinstance(other,Distribution):
- self.add(other)
- elif isinstance(other,Environment):
- for project in other:
- for dist in other[project]:
- self.add(dist)
- else:
- raise TypeError("Can't add %r to environment" % (other,))
- return self
-
- def __add__(self, other):
- """Add an environment or distribution to an environment"""
- new = self.__class__([], platform=None, python=None)
- for env in self, other:
- new += env
- return new
-
-
-AvailableDistributions = Environment # XXX backward compatibility
-
-
-class ExtractionError(RuntimeError):
- """An error occurred extracting a resource
-
- The following attributes are available from instances of this exception:
-
- manager
- The resource manager that raised this exception
-
- cache_path
- The base directory for resource extraction
-
- original_error
- The exception instance that caused extraction to fail
- """
-
-
-
-
-class ResourceManager:
- """Manage resource extraction and packages"""
- extraction_path = None
-
- def __init__(self):
- self.cached_files = {}
-
- def resource_exists(self, package_or_requirement, resource_name):
- """Does the named resource exist?"""
- return get_provider(package_or_requirement).has_resource(resource_name)
-
- def resource_isdir(self, package_or_requirement, resource_name):
- """Is the named resource an existing directory?"""
- return get_provider(package_or_requirement).resource_isdir(
- resource_name
- )
-
- def resource_filename(self, package_or_requirement, resource_name):
- """Return a true filesystem path for specified resource"""
- return get_provider(package_or_requirement).get_resource_filename(
- self, resource_name
- )
-
- def resource_stream(self, package_or_requirement, resource_name):
- """Return a readable file-like object for specified resource"""
- return get_provider(package_or_requirement).get_resource_stream(
- self, resource_name
- )
-
- def resource_string(self, package_or_requirement, resource_name):
- """Return specified resource as a string"""
- return get_provider(package_or_requirement).get_resource_string(
- self, resource_name
- )
-
- def resource_listdir(self, package_or_requirement, resource_name):
- """List the contents of the named resource directory"""
- return get_provider(package_or_requirement).resource_listdir(
- resource_name
- )
-
- def extraction_error(self):
- """Give an error message for problems extracting file(s)"""
-
- old_exc = sys.exc_info()[1]
- cache_path = self.extraction_path or get_default_cache()
-
- err = ExtractionError("""Can't extract file(s) to egg cache
-
-The following error occurred while trying to extract file(s) to the Python egg
-cache:
-
- %s
-
-The Python egg cache directory is currently set to:
-
- %s
-
-Perhaps your account does not have write access to this directory? You can
-change the cache directory by setting the PYTHON_EGG_CACHE environment
-variable to point to an accessible directory.
-""" % (old_exc, cache_path)
- )
- err.manager = self
- err.cache_path = cache_path
- err.original_error = old_exc
- raise err
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- def get_cache_path(self, archive_name, names=()):
- """Return absolute location in cache for `archive_name` and `names`
-
- The parent directory of the resulting path will be created if it does
- not already exist. `archive_name` should be the base filename of the
- enclosing egg (which may not be the name of the enclosing zipfile!),
- including its ".egg" extension. `names`, if provided, should be a
- sequence of path name parts "under" the egg's extraction location.
-
- This method should only be called by resource providers that need to
- obtain an extraction location, and only for names they intend to
- extract, as it tracks the generated names for possible cleanup later.
- """
- extract_path = self.extraction_path or get_default_cache()
- target_path = os.path.join(extract_path, archive_name+'-tmp', *names)
- try:
- _bypass_ensure_directory(target_path)
- except:
- self.extraction_error()
-
- self.cached_files[target_path] = 1
- return target_path
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- def postprocess(self, tempname, filename):
- """Perform any platform-specific postprocessing of `tempname`
-
- This is where Mac header rewrites should be done; other platforms don't
- have anything special they should do.
-
- Resource providers should call this method ONLY after successfully
- extracting a compressed resource. They must NOT call it on resources
- that are already in the filesystem.
-
- `tempname` is the current (temporary) name of the file, and `filename`
- is the name it will be renamed to by the caller after this routine
- returns.
- """
-
- if os.name == 'posix':
- # Make the resource executable
- mode = ((os.stat(tempname).st_mode) | 0555) & 07777
- os.chmod(tempname, mode)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- def set_extraction_path(self, path):
- """Set the base path where resources will be extracted to, if needed.
-
- If you do not call this routine before any extractions take place, the
- path defaults to the return value of ``get_default_cache()``. (Which
- is based on the ``PYTHON_EGG_CACHE`` environment variable, with various
- platform-specific fallbacks. See that routine's documentation for more
- details.)
-
- Resources are extracted to subdirectories of this path based upon
- information given by the ``IResourceProvider``. You may set this to a
- temporary directory, but then you must call ``cleanup_resources()`` to
- delete the extracted files when done. There is no guarantee that
- ``cleanup_resources()`` will be able to remove all extracted files.
-
- (Note: you may not change the extraction path for a given resource
- manager once resources have been extracted, unless you first call
- ``cleanup_resources()``.)
- """
- if self.cached_files:
- raise ValueError(
- "Can't change extraction path, files already extracted"
- )
-
- self.extraction_path = path
-
- def cleanup_resources(self, force=False):
- """
- Delete all extracted resource files and directories, returning a list
- of the file and directory names that could not be successfully removed.
- This function does not have any concurrency protection, so it should
- generally only be called when the extraction path is a temporary
- directory exclusive to a single process. This method is not
- automatically called; you must call it explicitly or register it as an
- ``atexit`` function if you wish to ensure cleanup of a temporary
- directory used for extractions.
- """
- # XXX
-
-
-
-def get_default_cache():
- """Determine the default cache location
-
- This returns the ``PYTHON_EGG_CACHE`` environment variable, if set.
- Otherwise, on Windows, it returns a "Python-Eggs" subdirectory of the
- "Application Data" directory. On all other systems, it's "~/.python-eggs".
- """
- try:
- return os.environ['PYTHON_EGG_CACHE']
- except KeyError:
- pass
-
- if os.name!='nt':
- return os.path.expanduser('~/.python-eggs')
-
- app_data = 'Application Data' # XXX this may be locale-specific!
- app_homes = [
- (('APPDATA',), None), # best option, should be locale-safe
- (('USERPROFILE',), app_data),
- (('HOMEDRIVE','HOMEPATH'), app_data),
- (('HOMEPATH',), app_data),
- (('HOME',), None),
- (('WINDIR',), app_data), # 95/98/ME
- ]
-
- for keys, subdir in app_homes:
- dirname = ''
- for key in keys:
- if key in os.environ:
- dirname = os.path.join(dirname, os.environ[key])
- else:
- break
- else:
- if subdir:
- dirname = os.path.join(dirname,subdir)
- return os.path.join(dirname, 'Python-Eggs')
- else:
- raise RuntimeError(
- "Please set the PYTHON_EGG_CACHE enviroment variable"
- )
-
-def safe_name(name):
- """Convert an arbitrary string to a standard distribution name
-
- Any runs of non-alphanumeric/. characters are replaced with a single '-'.
- """
- return re.sub('[^A-Za-z0-9.]+', '-', name)
-
-
-def safe_version(version):
- """Convert an arbitrary string to a standard version string
-
- Spaces become dots, and all other non-alphanumeric characters become
- dashes, with runs of multiple dashes condensed to a single dash.
- """
- version = version.replace(' ','.')
- return re.sub('[^A-Za-z0-9.]+', '-', version)
-
-
-def safe_extra(extra):
- """Convert an arbitrary string to a standard 'extra' name
-
- Any runs of non-alphanumeric characters are replaced with a single '_',
- and the result is always lowercased.
- """
- return re.sub('[^A-Za-z0-9.]+', '_', extra).lower()
-
-
-def to_filename(name):
- """Convert a project or version name to its filename-escaped form
-
- Any '-' characters are currently replaced with '_'.
- """
- return name.replace('-','_')
-
-
-
-
-
-
-
-
-class NullProvider:
- """Try to implement resources and metadata for arbitrary PEP 302 loaders"""
-
- egg_name = None
- egg_info = None
- loader = None
-
- def __init__(self, module):
- self.loader = getattr(module, '__loader__', None)
- self.module_path = os.path.dirname(getattr(module, '__file__', ''))
-
- def get_resource_filename(self, manager, resource_name):
- return self._fn(self.module_path, resource_name)
-
- def get_resource_stream(self, manager, resource_name):
- return StringIO(self.get_resource_string(manager, resource_name))
-
- def get_resource_string(self, manager, resource_name):
- return self._get(self._fn(self.module_path, resource_name))
-
- def has_resource(self, resource_name):
- return self._has(self._fn(self.module_path, resource_name))
-
- def has_metadata(self, name):
- return self.egg_info and self._has(self._fn(self.egg_info,name))
-
- if sys.version_info <= (3,):
- def get_metadata(self, name):
- if not self.egg_info:
- return ""
- return self._get(self._fn(self.egg_info,name))
- else:
- def get_metadata(self, name):
- if not self.egg_info:
- return ""
- return self._get(self._fn(self.egg_info,name)).decode("utf-8")
-
- def get_metadata_lines(self, name):
- return yield_lines(self.get_metadata(name))
-
- def resource_isdir(self,resource_name):
- return self._isdir(self._fn(self.module_path, resource_name))
-
- def metadata_isdir(self,name):
- return self.egg_info and self._isdir(self._fn(self.egg_info,name))
-
-
- def resource_listdir(self,resource_name):
- return self._listdir(self._fn(self.module_path,resource_name))
-
- def metadata_listdir(self,name):
- if self.egg_info:
- return self._listdir(self._fn(self.egg_info,name))
- return []
-
- def run_script(self,script_name,namespace):
- script = 'scripts/'+script_name
- if not self.has_metadata(script):
- raise ResolutionError("No script named %r" % script_name)
- script_text = self.get_metadata(script).replace('\r\n','\n')
- script_text = script_text.replace('\r','\n')
- script_filename = self._fn(self.egg_info,script)
- namespace['__file__'] = script_filename
- if os.path.exists(script_filename):
- execfile(script_filename, namespace, namespace)
- else:
- from linecache import cache
- cache[script_filename] = (
- len(script_text), 0, script_text.split('\n'), script_filename
- )
- script_code = compile(script_text,script_filename,'exec')
- exec script_code in namespace, namespace
-
- def _has(self, path):
- raise NotImplementedError(
- "Can't perform this operation for unregistered loader type"
- )
-
- def _isdir(self, path):
- raise NotImplementedError(
- "Can't perform this operation for unregistered loader type"
- )
-
- def _listdir(self, path):
- raise NotImplementedError(
- "Can't perform this operation for unregistered loader type"
- )
-
- def _fn(self, base, resource_name):
- if resource_name:
- return os.path.join(base, *resource_name.split('/'))
- return base
-
- def _get(self, path):
- if hasattr(self.loader, 'get_data'):
- return self.loader.get_data(path)
- raise NotImplementedError(
- "Can't perform this operation for loaders without 'get_data()'"
- )
-
-register_loader_type(object, NullProvider)
-
-
-class EggProvider(NullProvider):
- """Provider based on a virtual filesystem"""
-
- def __init__(self,module):
- NullProvider.__init__(self,module)
- self._setup_prefix()
-
- def _setup_prefix(self):
- # we assume here that our metadata may be nested inside a "basket"
- # of multiple eggs; that's why we use module_path instead of .archive
- path = self.module_path
- old = None
- while path!=old:
- if path.lower().endswith('.egg'):
- self.egg_name = os.path.basename(path)
- self.egg_info = os.path.join(path, 'EGG-INFO')
- self.egg_root = path
- break
- old = path
- path, base = os.path.split(path)
-
-
-
-
-
-
-class DefaultProvider(EggProvider):
- """Provides access to package resources in the filesystem"""
-
- def _has(self, path):
- return os.path.exists(path)
-
- def _isdir(self,path):
- return os.path.isdir(path)
-
- def _listdir(self,path):
- return os.listdir(path)
-
- def get_resource_stream(self, manager, resource_name):
- return open(self._fn(self.module_path, resource_name), 'rb')
-
- def _get(self, path):
- stream = open(path, 'rb')
- try:
- return stream.read()
- finally:
- stream.close()
-
-register_loader_type(type(None), DefaultProvider)
-
-
-class EmptyProvider(NullProvider):
- """Provider that returns nothing for all requests"""
-
- _isdir = _has = lambda self,path: False
- _get = lambda self,path: ''
- _listdir = lambda self,path: []
- module_path = None
-
- def __init__(self):
- pass
-
-empty_provider = EmptyProvider()
-
-
-
-
-class ZipProvider(EggProvider):
- """Resource support for zips and eggs"""
-
- eagers = None
-
- def __init__(self, module):
- EggProvider.__init__(self,module)
- self.zipinfo = zipimport._zip_directory_cache[self.loader.archive]
- self.zip_pre = self.loader.archive+os.sep
-
- def _zipinfo_name(self, fspath):
- # Convert a virtual filename (full path to file) into a zipfile subpath
- # usable with the zipimport directory cache for our target archive
- if fspath.startswith(self.zip_pre):
- return fspath[len(self.zip_pre):]
- raise AssertionError(
- "%s is not a subpath of %s" % (fspath,self.zip_pre)
- )
-
- def _parts(self,zip_path):
- # Convert a zipfile subpath into an egg-relative path part list
- fspath = self.zip_pre+zip_path # pseudo-fs path
- if fspath.startswith(self.egg_root+os.sep):
- return fspath[len(self.egg_root)+1:].split(os.sep)
- raise AssertionError(
- "%s is not a subpath of %s" % (fspath,self.egg_root)
- )
-
- def get_resource_filename(self, manager, resource_name):
- if not self.egg_name:
- raise NotImplementedError(
- "resource_filename() only supported for .egg, not .zip"
- )
- # no need to lock for extraction, since we use temp names
- zip_path = self._resource_to_zip(resource_name)
- eagers = self._get_eager_resources()
- if '/'.join(self._parts(zip_path)) in eagers:
- for name in eagers:
- self._extract_resource(manager, self._eager_to_zip(name))
- return self._extract_resource(manager, zip_path)
-
- def _extract_resource(self, manager, zip_path):
-
- if zip_path in self._index():
- for name in self._index()[zip_path]:
- last = self._extract_resource(
- manager, os.path.join(zip_path, name)
- )
- return os.path.dirname(last) # return the extracted directory name
-
- zip_stat = self.zipinfo[zip_path]
- t,d,size = zip_stat[5], zip_stat[6], zip_stat[3]
- date_time = (
- (d>>9)+1980, (d>>5)&0xF, d&0x1F, # ymd
- (t&0xFFFF)>>11, (t>>5)&0x3F, (t&0x1F) * 2, 0, 0, -1 # hms, etc.
- )
- timestamp = time.mktime(date_time)
-
- try:
- if not WRITE_SUPPORT:
- raise IOError('"os.rename" and "os.unlink" are not supported '
- 'on this platform')
-
- real_path = manager.get_cache_path(
- self.egg_name, self._parts(zip_path)
- )
-
- if os.path.isfile(real_path):
- stat = os.stat(real_path)
- if stat.st_size==size and stat.st_mtime==timestamp:
- # size and stamp match, don't bother extracting
- return real_path
-
- outf, tmpnam = _mkstemp(".$extract", dir=os.path.dirname(real_path))
- os.write(outf, self.loader.get_data(zip_path))
- os.close(outf)
- utime(tmpnam, (timestamp,timestamp))
- manager.postprocess(tmpnam, real_path)
-
- try:
- rename(tmpnam, real_path)
-
- except os.error:
- if os.path.isfile(real_path):
- stat = os.stat(real_path)
-
- if stat.st_size==size and stat.st_mtime==timestamp:
- # size and stamp match, somebody did it just ahead of
- # us, so we're done
- return real_path
- elif os.name=='nt': # Windows, del old file and retry
- unlink(real_path)
- rename(tmpnam, real_path)
- return real_path
- raise
-
- except os.error:
- manager.extraction_error() # report a user-friendly error
-
- return real_path
-
- def _get_eager_resources(self):
- if self.eagers is None:
- eagers = []
- for name in ('native_libs.txt', 'eager_resources.txt'):
- if self.has_metadata(name):
- eagers.extend(self.get_metadata_lines(name))
- self.eagers = eagers
- return self.eagers
-
- def _index(self):
- try:
- return self._dirindex
- except AttributeError:
- ind = {}
- for path in self.zipinfo:
- parts = path.split(os.sep)
- while parts:
- parent = os.sep.join(parts[:-1])
- if parent in ind:
- ind[parent].append(parts[-1])
- break
- else:
- ind[parent] = [parts.pop()]
- self._dirindex = ind
- return ind
-
- def _has(self, fspath):
- zip_path = self._zipinfo_name(fspath)
- return zip_path in self.zipinfo or zip_path in self._index()
-
- def _isdir(self,fspath):
- return self._zipinfo_name(fspath) in self._index()
-
- def _listdir(self,fspath):
- return list(self._index().get(self._zipinfo_name(fspath), ()))
-
- def _eager_to_zip(self,resource_name):
- return self._zipinfo_name(self._fn(self.egg_root,resource_name))
-
- def _resource_to_zip(self,resource_name):
- return self._zipinfo_name(self._fn(self.module_path,resource_name))
-
-register_loader_type(zipimport.zipimporter, ZipProvider)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-class FileMetadata(EmptyProvider):
- """Metadata handler for standalone PKG-INFO files
-
- Usage::
-
- metadata = FileMetadata("/path/to/PKG-INFO")
-
- This provider rejects all data and metadata requests except for PKG-INFO,
- which is treated as existing, and will be the contents of the file at
- the provided location.
- """
-
- def __init__(self,path):
- self.path = path
-
- def has_metadata(self,name):
- return name=='PKG-INFO'
-
- def get_metadata(self,name):
- if name=='PKG-INFO':
- f = open(self.path,'rU')
- metadata = f.read()
- f.close()
- return metadata
- raise KeyError("No metadata except PKG-INFO is available")
-
- def get_metadata_lines(self,name):
- return yield_lines(self.get_metadata(name))
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-class PathMetadata(DefaultProvider):
- """Metadata provider for egg directories
-
- Usage::
-
- # Development eggs:
-
- egg_info = "/path/to/PackageName.egg-info"
- base_dir = os.path.dirname(egg_info)
- metadata = PathMetadata(base_dir, egg_info)
- dist_name = os.path.splitext(os.path.basename(egg_info))[0]
- dist = Distribution(basedir,project_name=dist_name,metadata=metadata)
-
- # Unpacked egg directories:
-
- egg_path = "/path/to/PackageName-ver-pyver-etc.egg"
- metadata = PathMetadata(egg_path, os.path.join(egg_path,'EGG-INFO'))
- dist = Distribution.from_filename(egg_path, metadata=metadata)
- """
-
- def __init__(self, path, egg_info):
- self.module_path = path
- self.egg_info = egg_info
-
-
-class EggMetadata(ZipProvider):
- """Metadata provider for .egg files"""
-
- def __init__(self, importer):
- """Create a metadata provider from a zipimporter"""
-
- self.zipinfo = zipimport._zip_directory_cache[importer.archive]
- self.zip_pre = importer.archive+os.sep
- self.loader = importer
- if importer.prefix:
- self.module_path = os.path.join(importer.archive, importer.prefix)
- else:
- self.module_path = importer.archive
- self._setup_prefix()
-
-
-class ImpWrapper:
- """PEP 302 Importer that wraps Python's "normal" import algorithm"""
-
- def __init__(self, path=None):
- self.path = path
-
- def find_module(self, fullname, path=None):
- subname = fullname.split(".")[-1]
- if subname != fullname and self.path is None:
- return None
- if self.path is None:
- path = None
- else:
- path = [self.path]
- try:
- file, filename, etc = imp.find_module(subname, path)
- except ImportError:
- return None
- return ImpLoader(file, filename, etc)
-
-
-class ImpLoader:
- """PEP 302 Loader that wraps Python's "normal" import algorithm"""
-
- def __init__(self, file, filename, etc):
- self.file = file
- self.filename = filename
- self.etc = etc
-
- def load_module(self, fullname):
- try:
- mod = imp.load_module(fullname, self.file, self.filename, self.etc)
- finally:
- if self.file: self.file.close()
- # Note: we don't set __loader__ because we want the module to look
- # normal; i.e. this is just a wrapper for standard import machinery
- return mod
-
-
-
-
-def get_importer(path_item):
- """Retrieve a PEP 302 "importer" for the given path item
-
- If there is no importer, this returns a wrapper around the builtin import
- machinery. The returned importer is only cached if it was created by a
- path hook.
- """
- try:
- importer = sys.path_importer_cache[path_item]
- except KeyError:
- for hook in sys.path_hooks:
- try:
- importer = hook(path_item)
- except ImportError:
- pass
- else:
- break
- else:
- importer = None
-
- sys.path_importer_cache.setdefault(path_item,importer)
- if importer is None:
- try:
- importer = ImpWrapper(path_item)
- except ImportError:
- pass
- return importer
-
-try:
- from pkgutil import get_importer, ImpImporter
-except ImportError:
- pass # Python 2.3 or 2.4, use our own implementation
-else:
- ImpWrapper = ImpImporter # Python 2.5, use pkgutil's implementation
- del ImpLoader, ImpImporter
-
-
-
-
-
-
-_declare_state('dict', _distribution_finders = {})
-
-def register_finder(importer_type, distribution_finder):
- """Register `distribution_finder` to find distributions in sys.path items
-
- `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item
- handler), and `distribution_finder` is a callable that, passed a path
- item and the importer instance, yields ``Distribution`` instances found on
- that path item. See ``pkg_resources.find_on_path`` for an example."""
- _distribution_finders[importer_type] = distribution_finder
-
-
-def find_distributions(path_item, only=False):
- """Yield distributions accessible via `path_item`"""
- importer = get_importer(path_item)
- finder = _find_adapter(_distribution_finders, importer)
- return finder(importer, path_item, only)
-
-def find_in_zip(importer, path_item, only=False):
- metadata = EggMetadata(importer)
- if metadata.has_metadata('PKG-INFO'):
- yield Distribution.from_filename(path_item, metadata=metadata)
- if only:
- return # don't yield nested distros
- for subitem in metadata.resource_listdir('/'):
- if subitem.endswith('.egg'):
- subpath = os.path.join(path_item, subitem)
- for dist in find_in_zip(zipimport.zipimporter(subpath), subpath):
- yield dist
-
-register_finder(zipimport.zipimporter, find_in_zip)
-
-def StringIO(*args, **kw):
- """Thunk to load the real StringIO on demand"""
- global StringIO
- try:
- from cStringIO import StringIO
- except ImportError:
- from StringIO import StringIO
- return StringIO(*args,**kw)
-
-def find_nothing(importer, path_item, only=False):
- return ()
-register_finder(object,find_nothing)
-
-def find_on_path(importer, path_item, only=False):
- """Yield distributions accessible on a sys.path directory"""
- path_item = _normalize_cached(path_item)
-
- if os.path.isdir(path_item) and os.access(path_item, os.R_OK):
- if path_item.lower().endswith('.egg'):
- # unpacked egg
- yield Distribution.from_filename(
- path_item, metadata=PathMetadata(
- path_item, os.path.join(path_item,'EGG-INFO')
- )
- )
- else:
- # scan for .egg and .egg-info in directory
- for entry in os.listdir(path_item):
- lower = entry.lower()
- if lower.endswith('.egg-info'):
- fullpath = os.path.join(path_item, entry)
- if os.path.isdir(fullpath):
- # egg-info directory, allow getting metadata
- metadata = PathMetadata(path_item, fullpath)
- else:
- metadata = FileMetadata(fullpath)
- yield Distribution.from_location(
- path_item,entry,metadata,precedence=DEVELOP_DIST
- )
- elif not only and lower.endswith('.egg'):
- for dist in find_distributions(os.path.join(path_item, entry)):
- yield dist
- elif not only and lower.endswith('.egg-link'):
- for line in open(os.path.join(path_item, entry)):
- if not line.strip(): continue
- for item in find_distributions(os.path.join(path_item,line.rstrip())):
- yield item
- break
-register_finder(ImpWrapper,find_on_path)
-
-_declare_state('dict', _namespace_handlers={})
-_declare_state('dict', _namespace_packages={})
-
-
-def register_namespace_handler(importer_type, namespace_handler):
- """Register `namespace_handler` to declare namespace packages
-
- `importer_type` is the type or class of a PEP 302 "Importer" (sys.path item
- handler), and `namespace_handler` is a callable like this::
-
- def namespace_handler(importer,path_entry,moduleName,module):
- # return a path_entry to use for child packages
-
- Namespace handlers are only called if the importer object has already
- agreed that it can handle the relevant path item, and they should only
- return a subpath if the module __path__ does not already contain an
- equivalent subpath. For an example namespace handler, see
- ``pkg_resources.file_ns_handler``.
- """
- _namespace_handlers[importer_type] = namespace_handler
-
-def _handle_ns(packageName, path_item):
- """Ensure that named package includes a subpath of path_item (if needed)"""
- importer = get_importer(path_item)
- if importer is None:
- return None
- loader = importer.find_module(packageName)
- if loader is None:
- return None
- module = sys.modules.get(packageName)
- if module is None:
- module = sys.modules[packageName] = types.ModuleType(packageName)
- module.__path__ = []; _set_parent_ns(packageName)
- elif not hasattr(module,'__path__'):
- raise TypeError("Not a package:", packageName)
- handler = _find_adapter(_namespace_handlers, importer)
- subpath = handler(importer,path_item,packageName,module)
- if subpath is not None:
- path = module.__path__; path.append(subpath)
- loader.load_module(packageName); module.__path__ = path
- return subpath
-
-def declare_namespace(packageName):
- """Declare that package 'packageName' is a namespace package"""
-
- imp.acquire_lock()
- try:
- if packageName in _namespace_packages:
- return
-
- path, parent = sys.path, None
- if '.' in packageName:
- parent = '.'.join(packageName.split('.')[:-1])
- declare_namespace(parent)
- if parent not in _namespace_packages:
- __import__(parent)
- try:
- path = sys.modules[parent].__path__
- except AttributeError:
- raise TypeError("Not a package:", parent)
-
- # Track what packages are namespaces, so when new path items are added,
- # they can be updated
- _namespace_packages.setdefault(parent,[]).append(packageName)
- _namespace_packages.setdefault(packageName,[])
-
- for path_item in path:
- # Ensure all the parent's path items are reflected in the child,
- # if they apply
- _handle_ns(packageName, path_item)
-
- finally:
- imp.release_lock()
-
-def fixup_namespace_packages(path_item, parent=None):
- """Ensure that previously-declared namespace packages include path_item"""
- imp.acquire_lock()
- try:
- for package in _namespace_packages.get(parent,()):
- subpath = _handle_ns(package, path_item)
- if subpath: fixup_namespace_packages(subpath,package)
- finally:
- imp.release_lock()
-
-def file_ns_handler(importer, path_item, packageName, module):
- """Compute an ns-package subpath for a filesystem or zipfile importer"""
-
- subpath = os.path.join(path_item, packageName.split('.')[-1])
- normalized = _normalize_cached(subpath)
- for item in module.__path__:
- if _normalize_cached(item)==normalized:
- break
- else:
- # Only return the path if it's not already there
- return subpath
-
-register_namespace_handler(ImpWrapper,file_ns_handler)
-register_namespace_handler(zipimport.zipimporter,file_ns_handler)
-
-
-def null_ns_handler(importer, path_item, packageName, module):
- return None
-
-register_namespace_handler(object,null_ns_handler)
-
-
-def normalize_path(filename):
- """Normalize a file/dir name for comparison purposes"""
- return os.path.normcase(os.path.realpath(filename))
-
-def _normalize_cached(filename,_cache={}):
- try:
- return _cache[filename]
- except KeyError:
- _cache[filename] = result = normalize_path(filename)
- return result
-
-def _set_parent_ns(packageName):
- parts = packageName.split('.')
- name = parts.pop()
- if parts:
- parent = '.'.join(parts)
- setattr(sys.modules[parent], name, sys.modules[packageName])
-
-
-def yield_lines(strs):
- """Yield non-empty/non-comment lines of a ``basestring`` or sequence"""
- if isinstance(strs,basestring):
- for s in strs.splitlines():
- s = s.strip()
- if s and not s.startswith('#'): # skip blank lines/comments
- yield s
- else:
- for ss in strs:
- for s in yield_lines(ss):
- yield s
-
-LINE_END = re.compile(r"\s*(#.*)?$").match # whitespace and comment
-CONTINUE = re.compile(r"\s*\\\s*(#.*)?$").match # line continuation
-DISTRO = re.compile(r"\s*((\w|[-.])+)").match # Distribution or extra
-VERSION = re.compile(r"\s*(<=?|>=?|==|!=)\s*((\w|[-.])+)").match # ver. info
-COMMA = re.compile(r"\s*,").match # comma between items
-OBRACKET = re.compile(r"\s*\[").match
-CBRACKET = re.compile(r"\s*\]").match
-MODULE = re.compile(r"\w+(\.\w+)*$").match
-EGG_NAME = re.compile(
- r"(?P<name>[^-]+)"
- r"( -(?P<ver>[^-]+) (-py(?P<pyver>[^-]+) (-(?P<plat>.+))? )? )?",
- re.VERBOSE | re.IGNORECASE
-).match
-
-component_re = re.compile(r'(\d+ | [a-z]+ | \.| -)', re.VERBOSE)
-replace = {'pre':'c', 'preview':'c','-':'final-','rc':'c','dev':'@'}.get
-
-def _parse_version_parts(s):
- for part in component_re.split(s):
- part = replace(part,part)
- if part in ['', '.']:
- continue
- if part[:1] in '0123456789':
- yield part.zfill(8) # pad for numeric comparison
- else:
- yield '*'+part
-
- yield '*final' # ensure that alpha/beta/candidate are before final
-
-def parse_version(s):
- """Convert a version string to a chronologically-sortable key
-
- This is a rough cross between distutils' StrictVersion and LooseVersion;
- if you give it versions that would work with StrictVersion, then it behaves
- the same; otherwise it acts like a slightly-smarter LooseVersion. It is
- *possible* to create pathological version coding schemes that will fool
- this parser, but they should be very rare in practice.
-
- The returned value will be a tuple of strings. Numeric portions of the
- version are padded to 8 digits so they will compare numerically, but
- without relying on how numbers compare relative to strings. Dots are
- dropped, but dashes are retained. Trailing zeros between alpha segments
- or dashes are suppressed, so that e.g. "2.4.0" is considered the same as
- "2.4". Alphanumeric parts are lower-cased.
-
- The algorithm assumes that strings like "-" and any alpha string that
- alphabetically follows "final" represents a "patch level". So, "2.4-1"
- is assumed to be a branch or patch of "2.4", and therefore "2.4.1" is
- considered newer than "2.4-1", which in turn is newer than "2.4".
-
- Strings like "a", "b", "c", "alpha", "beta", "candidate" and so on (that
- come before "final" alphabetically) are assumed to be pre-release versions,
- so that the version "2.4" is considered newer than "2.4a1".
-
- Finally, to handle miscellaneous cases, the strings "pre", "preview", and
- "rc" are treated as if they were "c", i.e. as though they were release
- candidates, and therefore are not as new as a version string that does not
- contain them, and "dev" is replaced with an '@' so that it sorts lower than
- than any other pre-release tag.
- """
- parts = []
- for part in _parse_version_parts(s.lower()):
- if part.startswith('*'):
- # remove trailing zeros from each series of numeric parts
- while parts and parts[-1]=='00000000':
- parts.pop()
- parts.append(part)
- return tuple(parts)
-
-class EntryPoint(object):
- """Object representing an advertised importable object"""
-
- def __init__(self, name, module_name, attrs=(), extras=(), dist=None):
- if not MODULE(module_name):
- raise ValueError("Invalid module name", module_name)
- self.name = name
- self.module_name = module_name
- self.attrs = tuple(attrs)
- self.extras = Requirement.parse(("x[%s]" % ','.join(extras))).extras
- self.dist = dist
-
- def __str__(self):
- s = "%s = %s" % (self.name, self.module_name)
- if self.attrs:
- s += ':' + '.'.join(self.attrs)
- if self.extras:
- s += ' [%s]' % ','.join(self.extras)
- return s
-
- def __repr__(self):
- return "EntryPoint.parse(%r)" % str(self)
-
- def load(self, require=True, env=None, installer=None):
- if require: self.require(env, installer)
- entry = __import__(self.module_name, globals(),globals(), ['__name__'])
- for attr in self.attrs:
- try:
- entry = getattr(entry,attr)
- except AttributeError:
- raise ImportError("%r has no %r attribute" % (entry,attr))
- return entry
-
- def require(self, env=None, installer=None):
- if self.extras and not self.dist:
- raise UnknownExtra("Can't require() without a distribution", self)
- map(working_set.add,
- working_set.resolve(self.dist.requires(self.extras),env,installer))
-
-
-
- #@classmethod
- def parse(cls, src, dist=None):
- """Parse a single entry point from string `src`
-
- Entry point syntax follows the form::
-
- name = some.module:some.attr [extra1,extra2]
-
- The entry name and module name are required, but the ``:attrs`` and
- ``[extras]`` parts are optional
- """
- try:
- attrs = extras = ()
- name,value = src.split('=',1)
- if '[' in value:
- value,extras = value.split('[',1)
- req = Requirement.parse("x["+extras)
- if req.specs: raise ValueError
- extras = req.extras
- if ':' in value:
- value,attrs = value.split(':',1)
- if not MODULE(attrs.rstrip()):
- raise ValueError
- attrs = attrs.rstrip().split('.')
- except ValueError:
- raise ValueError(
- "EntryPoint must be in 'name=module:attrs [extras]' format",
- src
- )
- else:
- return cls(name.strip(), value.strip(), attrs, extras, dist)
-
- parse = classmethod(parse)
-
-
-
-
-
-
-
-
- #@classmethod
- def parse_group(cls, group, lines, dist=None):
- """Parse an entry point group"""
- if not MODULE(group):
- raise ValueError("Invalid group name", group)
- this = {}
- for line in yield_lines(lines):
- ep = cls.parse(line, dist)
- if ep.name in this:
- raise ValueError("Duplicate entry point", group, ep.name)
- this[ep.name]=ep
- return this
-
- parse_group = classmethod(parse_group)
-
- #@classmethod
- def parse_map(cls, data, dist=None):
- """Parse a map of entry point groups"""
- if isinstance(data,dict):
- data = data.items()
- else:
- data = split_sections(data)
- maps = {}
- for group, lines in data:
- if group is None:
- if not lines:
- continue
- raise ValueError("Entry points must be listed in groups")
- group = group.strip()
- if group in maps:
- raise ValueError("Duplicate group name", group)
- maps[group] = cls.parse_group(group, lines, dist)
- return maps
-
- parse_map = classmethod(parse_map)
-
-
-def _remove_md5_fragment(location):
- if not location:
- return ''
- parsed = urlparse(location)
- if parsed[-1].startswith('md5='):
- return urlunparse(parsed[:-1] + ('',))
- return location
-
-
-class Distribution(object):
- """Wrap an actual or potential sys.path entry w/metadata"""
- def __init__(self,
- location=None, metadata=None, project_name=None, version=None,
- py_version=PY_MAJOR, platform=None, precedence = EGG_DIST
- ):
- self.project_name = safe_name(project_name or 'Unknown')
- if version is not None:
- self._version = safe_version(version)
- self.py_version = py_version
- self.platform = platform
- self.location = location
- self.precedence = precedence
- self._provider = metadata or empty_provider
-
- #@classmethod
- def from_location(cls,location,basename,metadata=None,**kw):
- project_name, version, py_version, platform = [None]*4
- basename, ext = os.path.splitext(basename)
- if ext.lower() in (".egg",".egg-info"):
- match = EGG_NAME(basename)
- if match:
- project_name, version, py_version, platform = match.group(
- 'name','ver','pyver','plat'
- )
- return cls(
- location, metadata, project_name=project_name, version=version,
- py_version=py_version, platform=platform, **kw
- )
- from_location = classmethod(from_location)
-
-
- hashcmp = property(
- lambda self: (
- getattr(self,'parsed_version',()),
- self.precedence,
- self.key,
- _remove_md5_fragment(self.location),
- self.py_version,
- self.platform
- )
- )
- def __hash__(self): return hash(self.hashcmp)
- def __lt__(self, other):
- return self.hashcmp < other.hashcmp
- def __le__(self, other):
- return self.hashcmp <= other.hashcmp
- def __gt__(self, other):
- return self.hashcmp > other.hashcmp
- def __ge__(self, other):
- return self.hashcmp >= other.hashcmp
- def __eq__(self, other):
- if not isinstance(other, self.__class__):
- # It's not a Distribution, so they are not equal
- return False
- return self.hashcmp == other.hashcmp
- def __ne__(self, other):
- return not self == other
-
- # These properties have to be lazy so that we don't have to load any
- # metadata until/unless it's actually needed. (i.e., some distributions
- # may not know their name or version without loading PKG-INFO)
-
- #@property
- def key(self):
- try:
- return self._key
- except AttributeError:
- self._key = key = self.project_name.lower()
- return key
- key = property(key)
-
- #@property
- def parsed_version(self):
- try:
- return self._parsed_version
- except AttributeError:
- self._parsed_version = pv = parse_version(self.version)
- return pv
-
- parsed_version = property(parsed_version)
-
- #@property
- def version(self):
- try:
- return self._version
- except AttributeError:
- for line in self._get_metadata('PKG-INFO'):
- if line.lower().startswith('version:'):
- self._version = safe_version(line.split(':',1)[1].strip())
- return self._version
- else:
- raise ValueError(
- "Missing 'Version:' header and/or PKG-INFO file", self
- )
- version = property(version)
-
-
-
-
- #@property
- def _dep_map(self):
- try:
- return self.__dep_map
- except AttributeError:
- dm = self.__dep_map = {None: []}
- for name in 'requires.txt', 'depends.txt':
- for extra,reqs in split_sections(self._get_metadata(name)):
- if extra: extra = safe_extra(extra)
- dm.setdefault(extra,[]).extend(parse_requirements(reqs))
- return dm
- _dep_map = property(_dep_map)
-
- def requires(self,extras=()):
- """List of Requirements needed for this distro if `extras` are used"""
- dm = self._dep_map
- deps = []
- deps.extend(dm.get(None,()))
- for ext in extras:
- try:
- deps.extend(dm[safe_extra(ext)])
- except KeyError:
- raise UnknownExtra(
- "%s has no such extra feature %r" % (self, ext)
- )
- return deps
-
- def _get_metadata(self,name):
- if self.has_metadata(name):
- for line in self.get_metadata_lines(name):
- yield line
-
- def activate(self,path=None):
- """Ensure distribution is importable on `path` (default=sys.path)"""
- if path is None: path = sys.path
- self.insert_on(path)
- if path is sys.path:
- fixup_namespace_packages(self.location)
- map(declare_namespace, self._get_metadata('namespace_packages.txt'))
-
-
- def egg_name(self):
- """Return what this distribution's standard .egg filename should be"""
- filename = "%s-%s-py%s" % (
- to_filename(self.project_name), to_filename(self.version),
- self.py_version or PY_MAJOR
- )
-
- if self.platform:
- filename += '-'+self.platform
- return filename
-
- def __repr__(self):
- if self.location:
- return "%s (%s)" % (self,self.location)
- else:
- return str(self)
-
- def __str__(self):
- try: version = getattr(self,'version',None)
- except ValueError: version = None
- version = version or "[unknown version]"
- return "%s %s" % (self.project_name,version)
-
- def __getattr__(self,attr):
- """Delegate all unrecognized public attributes to .metadata provider"""
- if attr.startswith('_'):
- raise AttributeError,attr
- return getattr(self._provider, attr)
-
- #@classmethod
- def from_filename(cls,filename,metadata=None, **kw):
- return cls.from_location(
- _normalize_cached(filename), os.path.basename(filename), metadata,
- **kw
- )
- from_filename = classmethod(from_filename)
-
- def as_requirement(self):
- """Return a ``Requirement`` that matches this distribution exactly"""
- return Requirement.parse('%s==%s' % (self.project_name, self.version))
-
- def load_entry_point(self, group, name):
- """Return the `name` entry point of `group` or raise ImportError"""
- ep = self.get_entry_info(group,name)
- if ep is None:
- raise ImportError("Entry point %r not found" % ((group,name),))
- return ep.load()
-
- def get_entry_map(self, group=None):
- """Return the entry point map for `group`, or the full entry map"""
- try:
- ep_map = self._ep_map
- except AttributeError:
- ep_map = self._ep_map = EntryPoint.parse_map(
- self._get_metadata('entry_points.txt'), self
- )
- if group is not None:
- return ep_map.get(group,{})
- return ep_map
-
- def get_entry_info(self, group, name):
- """Return the EntryPoint object for `group`+`name`, or ``None``"""
- return self.get_entry_map(group).get(name)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- def insert_on(self, path, loc = None):
- """Insert self.location in path before its nearest parent directory"""
-
- loc = loc or self.location
-
- if self.project_name == 'setuptools':
- try:
- version = self.version
- except ValueError:
- version = ''
- if '0.7' in version:
- raise ValueError(
- "A 0.7-series setuptools cannot be installed "
- "with distribute. Found one at %s" % str(self.location))
-
- if not loc:
- return
-
- if path is sys.path:
- self.check_version_conflict()
-
- nloc = _normalize_cached(loc)
- bdir = os.path.dirname(nloc)
- npath= map(_normalize_cached, path)
-
- bp = None
- for p, item in enumerate(npath):
- if item==nloc:
- break
- elif item==bdir and self.precedence==EGG_DIST:
- # if it's an .egg, give it precedence over its directory
- path.insert(p, loc)
- npath.insert(p, nloc)
- break
- else:
- path.append(loc)
- return
-
- # p is the spot where we found or inserted loc; now remove duplicates
- while 1:
- try:
- np = npath.index(nloc, p+1)
- except ValueError:
- break
- else:
- del npath[np], path[np]
- p = np # ha!
-
- return
-
-
-
- def check_version_conflict(self):
- if self.key=='distribute':
- return # ignore the inevitable setuptools self-conflicts :(
-
- nsp = dict.fromkeys(self._get_metadata('namespace_packages.txt'))
- loc = normalize_path(self.location)
- for modname in self._get_metadata('top_level.txt'):
- if (modname not in sys.modules or modname in nsp
- or modname in _namespace_packages
- ):
- continue
- if modname in ('pkg_resources', 'setuptools', 'site'):
- continue
- fn = getattr(sys.modules[modname], '__file__', None)
- if fn and (normalize_path(fn).startswith(loc) or
- fn.startswith(self.location)):
- continue
- issue_warning(
- "Module %s was already imported from %s, but %s is being added"
- " to sys.path" % (modname, fn, self.location),
- )
-
- def has_version(self):
- try:
- self.version
- except ValueError:
- issue_warning("Unbuilt egg for "+repr(self))
- return False
- return True
-
- def clone(self,**kw):
- """Copy this distribution, substituting in any changed keyword args"""
- for attr in (
- 'project_name', 'version', 'py_version', 'platform', 'location',
- 'precedence'
- ):
- kw.setdefault(attr, getattr(self,attr,None))
- kw.setdefault('metadata', self._provider)
- return self.__class__(**kw)
-
-
-
-
- #@property
- def extras(self):
- return [dep for dep in self._dep_map if dep]
- extras = property(extras)
-
-
-def issue_warning(*args,**kw):
- level = 1
- g = globals()
- try:
- # find the first stack frame that is *not* code in
- # the pkg_resources module, to use for the warning
- while sys._getframe(level).f_globals is g:
- level += 1
- except ValueError:
- pass
- from warnings import warn
- warn(stacklevel = level+1, *args, **kw)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def parse_requirements(strs):
- """Yield ``Requirement`` objects for each specification in `strs`
-
- `strs` must be an instance of ``basestring``, or a (possibly-nested)
- iterable thereof.
- """
- # create a steppable iterator, so we can handle \-continuations
- lines = iter(yield_lines(strs))
-
- def scan_list(ITEM,TERMINATOR,line,p,groups,item_name):
-
- items = []
-
- while not TERMINATOR(line,p):
- if CONTINUE(line,p):
- try:
- line = lines.next(); p = 0
- except StopIteration:
- raise ValueError(
- "\\ must not appear on the last nonblank line"
- )
-
- match = ITEM(line,p)
- if not match:
- raise ValueError("Expected "+item_name+" in",line,"at",line[p:])
-
- items.append(match.group(*groups))
- p = match.end()
-
- match = COMMA(line,p)
- if match:
- p = match.end() # skip the comma
- elif not TERMINATOR(line,p):
- raise ValueError(
- "Expected ',' or end-of-list in",line,"at",line[p:]
- )
-
- match = TERMINATOR(line,p)
- if match: p = match.end() # skip the terminator, if any
- return line, p, items
-
- for line in lines:
- match = DISTRO(line)
- if not match:
- raise ValueError("Missing distribution spec", line)
- project_name = match.group(1)
- p = match.end()
- extras = []
-
- match = OBRACKET(line,p)
- if match:
- p = match.end()
- line, p, extras = scan_list(
- DISTRO, CBRACKET, line, p, (1,), "'extra' name"
- )
-
- line, p, specs = scan_list(VERSION,LINE_END,line,p,(1,2),"version spec")
- specs = [(op,safe_version(val)) for op,val in specs]
- yield Requirement(project_name, specs, extras)
-
-
-def _sort_dists(dists):
- tmp = [(dist.hashcmp,dist) for dist in dists]
- tmp.sort()
- dists[::-1] = [d for hc,d in tmp]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-class Requirement:
- def __init__(self, project_name, specs, extras):
- """DO NOT CALL THIS UNDOCUMENTED METHOD; use Requirement.parse()!"""
- self.unsafe_name, project_name = project_name, safe_name(project_name)
- self.project_name, self.key = project_name, project_name.lower()
- index = [(parse_version(v),state_machine[op],op,v) for op,v in specs]
- index.sort()
- self.specs = [(op,ver) for parsed,trans,op,ver in index]
- self.index, self.extras = index, tuple(map(safe_extra,extras))
- self.hashCmp = (
- self.key, tuple([(op,parsed) for parsed,trans,op,ver in index]),
- frozenset(self.extras)
- )
- self.__hash = hash(self.hashCmp)
-
- def __str__(self):
- specs = ','.join([''.join(s) for s in self.specs])
- extras = ','.join(self.extras)
- if extras: extras = '[%s]' % extras
- return '%s%s%s' % (self.project_name, extras, specs)
-
- def __eq__(self,other):
- return isinstance(other,Requirement) and self.hashCmp==other.hashCmp
-
- def __contains__(self,item):
- if isinstance(item,Distribution):
- if item.key <> self.key: return False
- if self.index: item = item.parsed_version # only get if we need it
- elif isinstance(item,basestring):
- item = parse_version(item)
- last = None
- compare = lambda a, b: (a > b) - (a < b) # -1, 0, 1
- for parsed,trans,op,ver in self.index:
- action = trans[compare(item,parsed)] # Indexing: 0, 1, -1
- if action=='F': return False
- elif action=='T': return True
- elif action=='+': last = True
- elif action=='-' or last is None: last = False
- if last is None: last = True # no rules encountered
- return last
-
-
- def __hash__(self):
- return self.__hash
-
- def __repr__(self): return "Requirement.parse(%r)" % str(self)
-
- #@staticmethod
- def parse(s, replacement=True):
- reqs = list(parse_requirements(s))
- if reqs:
- if len(reqs) == 1:
- founded_req = reqs[0]
- # if asked for setuptools distribution
- # and if distribute is installed, we want to give
- # distribute instead
- if _override_setuptools(founded_req) and replacement:
- distribute = list(parse_requirements('distribute'))
- if len(distribute) == 1:
- return distribute[0]
- return founded_req
- else:
- return founded_req
-
- raise ValueError("Expected only one requirement", s)
- raise ValueError("No requirements found", s)
-
- parse = staticmethod(parse)
-
-state_machine = {
- # =><
- '<' : '--T',
- '<=': 'T-T',
- '>' : 'F+F',
- '>=': 'T+F',
- '==': 'T..',
- '!=': 'F++',
-}
-
-
-def _override_setuptools(req):
- """Return True when distribute wants to override a setuptools dependency.
-
- We want to override when the requirement is setuptools and the version is
- a variant of 0.6.
-
- """
- if req.project_name == 'setuptools':
- if not len(req.specs):
- # Just setuptools: ok
- return True
- for comparator, version in req.specs:
- if comparator in ['==', '>=', '>']:
- if '0.7' in version:
- # We want some setuptools not from the 0.6 series.
- return False
- return True
- return False
-
-
-def _get_mro(cls):
- """Get an mro for a type or classic class"""
- if not isinstance(cls,type):
- class cls(cls,object): pass
- return cls.__mro__[1:]
- return cls.__mro__
-
-def _find_adapter(registry, ob):
- """Return an adapter factory for `ob` from `registry`"""
- for t in _get_mro(getattr(ob, '__class__', type(ob))):
- if t in registry:
- return registry[t]
-
-
-def ensure_directory(path):
- """Ensure that the parent directory of `path` exists"""
- dirname = os.path.dirname(path)
- if not os.path.isdir(dirname):
- os.makedirs(dirname)
-
-def split_sections(s):
- """Split a string or iterable thereof into (section,content) pairs
-
- Each ``section`` is a stripped version of the section header ("[section]")
- and each ``content`` is a list of stripped lines excluding blank lines and
- comment-only lines. If there are any such lines before the first section
- header, they're returned in a first ``section`` of ``None``.
- """
- section = None
- content = []
- for line in yield_lines(s):
- if line.startswith("["):
- if line.endswith("]"):
- if section or content:
- yield section, content
- section = line[1:-1].strip()
- content = []
- else:
- raise ValueError("Invalid section heading", line)
- else:
- content.append(line)
-
- # wrap up last segment
- yield section, content
-
-def _mkstemp(*args,**kw):
- from tempfile import mkstemp
- old_open = os.open
- try:
- os.open = os_open # temporarily bypass sandboxing
- return mkstemp(*args,**kw)
- finally:
- os.open = old_open # and then put it back
-
-
-# Set up global resource manager (deliberately not state-saved)
-_manager = ResourceManager()
-def _initialize(g):
- for name in dir(_manager):
- if not name.startswith('_'):
- g[name] = getattr(_manager, name)
-_initialize(globals())
-
-# Prepare the master working set and make the ``require()`` API available
-_declare_state('object', working_set = WorkingSet())
-
-try:
- # Does the main program list any requirements?
- from __main__ import __requires__
-except ImportError:
- pass # No: just use the default working set based on sys.path
-else:
- # Yes: ensure the requirements are met, by prefixing sys.path if necessary
- try:
- working_set.require(__requires__)
- except VersionConflict: # try it without defaults already on sys.path
- working_set = WorkingSet([]) # by starting with an empty path
- for dist in working_set.resolve(
- parse_requirements(__requires__), Environment()
- ):
- working_set.add(dist)
- for entry in sys.path: # add any missing entries from sys.path
- if entry not in working_set.entries:
- working_set.add_entry(entry)
- sys.path[:] = working_set.entries # then copy back to sys.path
-
-require = working_set.require
-iter_entry_points = working_set.iter_entry_points
-add_activation_listener = working_set.subscribe
-run_script = working_set.run_script
-run_main = run_script # backward compatibility
-# Activate all distributions already on sys.path, and ensure that
-# all distributions added to the working set in the future (e.g. by
-# calling ``require()``) will get activated as well.
-add_activation_listener(lambda dist: dist.activate())
-working_set.entries=[]; map(working_set.add_entry,sys.path) # match order
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/__init__.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/__init__.py
deleted file mode 100644
index 9de373f..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/__init__.py
+++ /dev/null
@@ -1,104 +0,0 @@
-"""Extensions to the 'distutils' for large or complex distributions"""
-from setuptools.extension import Extension, Library
-from setuptools.dist import Distribution, Feature, _get_unpatched
-import distutils.core, setuptools.command
-from setuptools.depends import Require
-from distutils.core import Command as _Command
-from distutils.util import convert_path
-import os
-import sys
-
-__version__ = '0.6'
-__all__ = [
- 'setup', 'Distribution', 'Feature', 'Command', 'Extension', 'Require',
- 'find_packages'
-]
-
-# This marker is used to simplify the process that checks is the
-# setuptools package was installed by the Setuptools project
-# or by the Distribute project, in case Setuptools creates
-# a distribution with the same version.
-#
-# The distribute_setup script for instance, will check if this
-# attribute is present to decide whether to reinstall the package
-# or not.
-_distribute = True
-
-bootstrap_install_from = None
-
-# If we run 2to3 on .py files, should we also convert docstrings?
-# Default: yes; assume that we can detect doctests reliably
-run_2to3_on_doctests = True
-# Standard package names for fixer packages
-lib2to3_fixer_packages = ['lib2to3.fixes']
-
-def find_packages(where='.', exclude=()):
- """Return a list all Python packages found within directory 'where'
-
- 'where' should be supplied as a "cross-platform" (i.e. URL-style) path; it
- will be converted to the appropriate local path syntax. 'exclude' is a
- sequence of package names to exclude; '*' can be used as a wildcard in the
- names, such that 'foo.*' will exclude all subpackages of 'foo' (but not
- 'foo' itself).
- """
- out = []
- stack=[(convert_path(where), '')]
- while stack:
- where,prefix = stack.pop(0)
- for name in os.listdir(where):
- fn = os.path.join(where,name)
- if ('.' not in name and os.path.isdir(fn) and
- os.path.isfile(os.path.join(fn,'__init__.py'))
- ):
- out.append(prefix+name); stack.append((fn,prefix+name+'.'))
- for pat in list(exclude)+['ez_setup', 'distribute_setup']:
- from fnmatch import fnmatchcase
- out = [item for item in out if not fnmatchcase(item,pat)]
- return out
-
-setup = distutils.core.setup
-
-_Command = _get_unpatched(_Command)
-
-class Command(_Command):
- __doc__ = _Command.__doc__
-
- command_consumes_arguments = False
-
- def __init__(self, dist, **kw):
- # Add support for keyword arguments
- _Command.__init__(self,dist)
- for k,v in kw.items():
- setattr(self,k,v)
-
- def reinitialize_command(self, command, reinit_subcommands=0, **kw):
- cmd = _Command.reinitialize_command(self, command, reinit_subcommands)
- for k,v in kw.items():
- setattr(cmd,k,v) # update command with keywords
- return cmd
-
-import distutils.core
-distutils.core.Command = Command # we can't patch distutils.cmd, alas
-
-def findall(dir = os.curdir):
- """Find all files under 'dir' and return the list of full filenames
- (relative to 'dir').
- """
- all_files = []
- for base, dirs, files in os.walk(dir):
- if base==os.curdir or base.startswith(os.curdir+os.sep):
- base = base[2:]
- if base:
- files = [os.path.join(base, f) for f in files]
- all_files.extend(filter(os.path.isfile, files))
- return all_files
-
-import distutils.filelist
-distutils.filelist.findall = findall # fix findall bug in distutils.
-
-# sys.dont_write_bytecode was introduced in Python 2.6.
-if ((hasattr(sys, "dont_write_bytecode") and sys.dont_write_bytecode) or
- (not hasattr(sys, "dont_write_bytecode") and os.environ.get("PYTHONDONTWRITEBYTECODE"))):
- _dont_write_bytecode = True
-else:
- _dont_write_bytecode = False
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/archive_util.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/archive_util.py
deleted file mode 100644
index ab786f3..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/archive_util.py
+++ /dev/null
@@ -1,208 +0,0 @@
-"""Utilities for extracting common archive formats"""
-
-
-__all__ = [
- "unpack_archive", "unpack_zipfile", "unpack_tarfile", "default_filter",
- "UnrecognizedFormat", "extraction_drivers", "unpack_directory",
-]
-
-import zipfile, tarfile, os, shutil
-from pkg_resources import ensure_directory
-from distutils.errors import DistutilsError
-
-class UnrecognizedFormat(DistutilsError):
- """Couldn't recognize the archive type"""
-
-def default_filter(src,dst):
- """The default progress/filter callback; returns True for all files"""
- return dst
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def unpack_archive(filename, extract_dir, progress_filter=default_filter,
- drivers=None
-):
- """Unpack `filename` to `extract_dir`, or raise ``UnrecognizedFormat``
-
- `progress_filter` is a function taking two arguments: a source path
- internal to the archive ('/'-separated), and a filesystem path where it
- will be extracted. The callback must return the desired extract path
- (which may be the same as the one passed in), or else ``None`` to skip
- that file or directory. The callback can thus be used to report on the
- progress of the extraction, as well as to filter the items extracted or
- alter their extraction paths.
-
- `drivers`, if supplied, must be a non-empty sequence of functions with the
- same signature as this function (minus the `drivers` argument), that raise
- ``UnrecognizedFormat`` if they do not support extracting the designated
- archive type. The `drivers` are tried in sequence until one is found that
- does not raise an error, or until all are exhausted (in which case
- ``UnrecognizedFormat`` is raised). If you do not supply a sequence of
- drivers, the module's ``extraction_drivers`` constant will be used, which
- means that ``unpack_zipfile`` and ``unpack_tarfile`` will be tried, in that
- order.
- """
- for driver in drivers or extraction_drivers:
- try:
- driver(filename, extract_dir, progress_filter)
- except UnrecognizedFormat:
- continue
- else:
- return
- else:
- raise UnrecognizedFormat(
- "Not a recognized archive type: %s" % filename
- )
-
-
-
-
-
-
-
-def unpack_directory(filename, extract_dir, progress_filter=default_filter):
- """"Unpack" a directory, using the same interface as for archives
-
- Raises ``UnrecognizedFormat`` if `filename` is not a directory
- """
- if not os.path.isdir(filename):
- raise UnrecognizedFormat("%s is not a directory" % (filename,))
-
- paths = {filename:('',extract_dir)}
- for base, dirs, files in os.walk(filename):
- src,dst = paths[base]
- for d in dirs:
- paths[os.path.join(base,d)] = src+d+'/', os.path.join(dst,d)
- for f in files:
- name = src+f
- target = os.path.join(dst,f)
- target = progress_filter(src+f, target)
- if not target:
- continue # skip non-files
- ensure_directory(target)
- f = os.path.join(base,f)
- shutil.copyfile(f, target)
- shutil.copystat(f, target)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def unpack_zipfile(filename, extract_dir, progress_filter=default_filter):
- """Unpack zip `filename` to `extract_dir`
-
- Raises ``UnrecognizedFormat`` if `filename` is not a zipfile (as determined
- by ``zipfile.is_zipfile()``). See ``unpack_archive()`` for an explanation
- of the `progress_filter` argument.
- """
-
- if not zipfile.is_zipfile(filename):
- raise UnrecognizedFormat("%s is not a zip file" % (filename,))
-
- z = zipfile.ZipFile(filename)
- try:
- for info in z.infolist():
- name = info.filename
-
- # don't extract absolute paths or ones with .. in them
- if name.startswith('/') or '..' in name:
- continue
-
- target = os.path.join(extract_dir, *name.split('/'))
- target = progress_filter(name, target)
- if not target:
- continue
- if name.endswith('/'):
- # directory
- ensure_directory(target)
- else:
- # file
- ensure_directory(target)
- data = z.read(info.filename)
- f = open(target,'wb')
- try:
- f.write(data)
- finally:
- f.close()
- del data
- finally:
- z.close()
-
-
-def unpack_tarfile(filename, extract_dir, progress_filter=default_filter):
- """Unpack tar/tar.gz/tar.bz2 `filename` to `extract_dir`
-
- Raises ``UnrecognizedFormat`` if `filename` is not a tarfile (as determined
- by ``tarfile.open()``). See ``unpack_archive()`` for an explanation
- of the `progress_filter` argument.
- """
-
- try:
- tarobj = tarfile.open(filename)
- except tarfile.TarError:
- raise UnrecognizedFormat(
- "%s is not a compressed or uncompressed tar file" % (filename,)
- )
-
- try:
- tarobj.chown = lambda *args: None # don't do any chowning!
- for member in tarobj:
- if member.isfile() or member.isdir():
- name = member.name
- # don't extract absolute paths or ones with .. in them
- if not name.startswith('/') and '..' not in name:
- dst = os.path.join(extract_dir, *name.split('/'))
- dst = progress_filter(name, dst)
- if dst:
- if dst.endswith(os.sep):
- dst = dst[:-1]
- try:
- tarobj._extract_member(member,dst) # XXX Ugh
- except tarfile.ExtractError:
- pass # chown/chmod/mkfifo/mknode/makedev failed
- return True
- finally:
- tarobj.close()
-
-
-
-
-extraction_drivers = unpack_directory, unpack_zipfile, unpack_tarfile
-
-
-
-
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/cli-32.exe b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/cli-32.exe
deleted file mode 100644
index 9b7717b..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/cli-32.exe
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/cli-64.exe b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/cli-64.exe
deleted file mode 100644
index 265585a..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/cli-64.exe
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/cli.exe b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/cli.exe
deleted file mode 100644
index 9b7717b..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/cli.exe
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/__init__.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/__init__.py
deleted file mode 100644
index b063fa1..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/__init__.py
+++ /dev/null
@@ -1,21 +0,0 @@
-__all__ = [
- 'alias', 'bdist_egg', 'bdist_rpm', 'build_ext', 'build_py', 'develop',
- 'easy_install', 'egg_info', 'install', 'install_lib', 'rotate', 'saveopts',
- 'sdist', 'setopt', 'test', 'upload', 'install_egg_info', 'install_scripts',
- 'register', 'bdist_wininst', 'upload_docs',
-]
-
-from setuptools.command import install_scripts
-import sys
-
-if sys.version>='2.5':
- # In Python 2.5 and above, distutils includes its own upload command
- __all__.remove('upload')
-
-from distutils.command.bdist import bdist
-
-if 'egg' not in bdist.format_commands:
- bdist.format_command['egg'] = ('bdist_egg', "Python .egg file")
- bdist.format_commands.append('egg')
-
-del bdist, sys
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/alias.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/alias.py
deleted file mode 100644
index f5368b2..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/alias.py
+++ /dev/null
@@ -1,82 +0,0 @@
-import distutils, os
-from setuptools import Command
-from distutils.util import convert_path
-from distutils import log
-from distutils.errors import *
-from setuptools.command.setopt import edit_config, option_base, config_file
-
-def shquote(arg):
- """Quote an argument for later parsing by shlex.split()"""
- for c in '"', "'", "\\", "#":
- if c in arg: return repr(arg)
- if arg.split()<>[arg]:
- return repr(arg)
- return arg
-
-
-class alias(option_base):
- """Define a shortcut that invokes one or more commands"""
-
- description = "define a shortcut to invoke one or more commands"
- command_consumes_arguments = True
-
- user_options = [
- ('remove', 'r', 'remove (unset) the alias'),
- ] + option_base.user_options
-
- boolean_options = option_base.boolean_options + ['remove']
-
- def initialize_options(self):
- option_base.initialize_options(self)
- self.args = None
- self.remove = None
-
- def finalize_options(self):
- option_base.finalize_options(self)
- if self.remove and len(self.args)<>1:
- raise DistutilsOptionError(
- "Must specify exactly one argument (the alias name) when "
- "using --remove"
- )
-
- def run(self):
- aliases = self.distribution.get_option_dict('aliases')
-
- if not self.args:
- print "Command Aliases"
- print "---------------"
- for alias in aliases:
- print "setup.py alias", format_alias(alias, aliases)
- return
-
- elif len(self.args)==1:
- alias, = self.args
- if self.remove:
- command = None
- elif alias in aliases:
- print "setup.py alias", format_alias(alias, aliases)
- return
- else:
- print "No alias definition found for %r" % alias
- return
- else:
- alias = self.args[0]
- command = ' '.join(map(shquote,self.args[1:]))
-
- edit_config(self.filename, {'aliases': {alias:command}}, self.dry_run)
-
-
-def format_alias(name, aliases):
- source, command = aliases[name]
- if source == config_file('global'):
- source = '--global-config '
- elif source == config_file('user'):
- source = '--user-config '
- elif source == config_file('local'):
- source = ''
- else:
- source = '--filename=%r' % source
- return source+name+' '+command
-
-
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/bdist_egg.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/bdist_egg.py
deleted file mode 100644
index 68ca15c..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/bdist_egg.py
+++ /dev/null
@@ -1,544 +0,0 @@
-"""setuptools.command.bdist_egg
-
-Build .egg distributions"""
-
-# This module should be kept compatible with Python 2.3
-import sys, os, marshal
-from setuptools import Command
-from distutils.dir_util import remove_tree, mkpath
-try:
- from distutils.sysconfig import get_python_version, get_python_lib
-except ImportError:
- from sysconfig import get_python_version
- from distutils.sysconfig import get_python_lib
-
-from distutils import log
-from distutils.errors import DistutilsSetupError
-from pkg_resources import get_build_platform, Distribution, ensure_directory
-from pkg_resources import EntryPoint
-from types import CodeType
-from setuptools.extension import Library
-
-def strip_module(filename):
- if '.' in filename:
- filename = os.path.splitext(filename)[0]
- if filename.endswith('module'):
- filename = filename[:-6]
- return filename
-
-def write_stub(resource, pyfile):
- f = open(pyfile,'w')
- f.write('\n'.join([
- "def __bootstrap__():",
- " global __bootstrap__, __loader__, __file__",
- " import sys, pkg_resources, imp",
- " __file__ = pkg_resources.resource_filename(__name__,%r)"
- % resource,
- " __loader__ = None; del __bootstrap__, __loader__",
- " imp.load_dynamic(__name__,__file__)",
- "__bootstrap__()",
- "" # terminal \n
- ]))
- f.close()
-
-# stub __init__.py for packages distributed without one
-NS_PKG_STUB = '__import__("pkg_resources").declare_namespace(__name__)'
-
-class bdist_egg(Command):
-
- description = "create an \"egg\" distribution"
-
- user_options = [
- ('bdist-dir=', 'b',
- "temporary directory for creating the distribution"),
- ('plat-name=', 'p',
- "platform name to embed in generated filenames "
- "(default: %s)" % get_build_platform()),
- ('exclude-source-files', None,
- "remove all .py files from the generated egg"),
- ('keep-temp', 'k',
- "keep the pseudo-installation tree around after " +
- "creating the distribution archive"),
- ('dist-dir=', 'd',
- "directory to put final built distributions in"),
- ('skip-build', None,
- "skip rebuilding everything (for testing/debugging)"),
- ]
-
- boolean_options = [
- 'keep-temp', 'skip-build', 'exclude-source-files'
- ]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- def initialize_options (self):
- self.bdist_dir = None
- self.plat_name = None
- self.keep_temp = 0
- self.dist_dir = None
- self.skip_build = 0
- self.egg_output = None
- self.exclude_source_files = None
-
-
- def finalize_options(self):
- ei_cmd = self.ei_cmd = self.get_finalized_command("egg_info")
- self.egg_info = ei_cmd.egg_info
-
- if self.bdist_dir is None:
- bdist_base = self.get_finalized_command('bdist').bdist_base
- self.bdist_dir = os.path.join(bdist_base, 'egg')
-
- if self.plat_name is None:
- self.plat_name = get_build_platform()
-
- self.set_undefined_options('bdist',('dist_dir', 'dist_dir'))
-
- if self.egg_output is None:
-
- # Compute filename of the output egg
- basename = Distribution(
- None, None, ei_cmd.egg_name, ei_cmd.egg_version,
- get_python_version(),
- self.distribution.has_ext_modules() and self.plat_name
- ).egg_name()
-
- self.egg_output = os.path.join(self.dist_dir, basename+'.egg')
-
-
-
-
-
-
-
-
- def do_install_data(self):
- # Hack for packages that install data to install's --install-lib
- self.get_finalized_command('install').install_lib = self.bdist_dir
-
- site_packages = os.path.normcase(os.path.realpath(get_python_lib()))
- old, self.distribution.data_files = self.distribution.data_files,[]
-
- for item in old:
- if isinstance(item,tuple) and len(item)==2:
- if os.path.isabs(item[0]):
- realpath = os.path.realpath(item[0])
- normalized = os.path.normcase(realpath)
- if normalized==site_packages or normalized.startswith(
- site_packages+os.sep
- ):
- item = realpath[len(site_packages)+1:], item[1]
- # XXX else: raise ???
- self.distribution.data_files.append(item)
-
- try:
- log.info("installing package data to %s" % self.bdist_dir)
- self.call_command('install_data', force=0, root=None)
- finally:
- self.distribution.data_files = old
-
-
- def get_outputs(self):
- return [self.egg_output]
-
-
- def call_command(self,cmdname,**kw):
- """Invoke reinitialized command `cmdname` with keyword args"""
- for dirname in INSTALL_DIRECTORY_ATTRS:
- kw.setdefault(dirname,self.bdist_dir)
- kw.setdefault('skip_build',self.skip_build)
- kw.setdefault('dry_run', self.dry_run)
- cmd = self.reinitialize_command(cmdname, **kw)
- self.run_command(cmdname)
- return cmd
-
-
- def run(self):
- # Generate metadata first
- self.run_command("egg_info")
-
- # We run install_lib before install_data, because some data hacks
- # pull their data path from the install_lib command.
- log.info("installing library code to %s" % self.bdist_dir)
- instcmd = self.get_finalized_command('install')
- old_root = instcmd.root; instcmd.root = None
- cmd = self.call_command('install_lib', warn_dir=0)
- instcmd.root = old_root
-
- all_outputs, ext_outputs = self.get_ext_outputs()
- self.stubs = []
- to_compile = []
- for (p,ext_name) in enumerate(ext_outputs):
- filename,ext = os.path.splitext(ext_name)
- pyfile = os.path.join(self.bdist_dir, strip_module(filename)+'.py')
- self.stubs.append(pyfile)
- log.info("creating stub loader for %s" % ext_name)
- if not self.dry_run:
- write_stub(os.path.basename(ext_name), pyfile)
- to_compile.append(pyfile)
- ext_outputs[p] = ext_name.replace(os.sep,'/')
-
- to_compile.extend(self.make_init_files())
- if to_compile:
- cmd.byte_compile(to_compile)
-
- if self.distribution.data_files:
- self.do_install_data()
-
- # Make the EGG-INFO directory
- archive_root = self.bdist_dir
- egg_info = os.path.join(archive_root,'EGG-INFO')
- self.mkpath(egg_info)
- if self.distribution.scripts:
- script_dir = os.path.join(egg_info, 'scripts')
- log.info("installing scripts to %s" % script_dir)
- self.call_command('install_scripts',install_dir=script_dir,no_ep=1)
-
- self.copy_metadata_to(egg_info)
- native_libs = os.path.join(egg_info, "native_libs.txt")
- if all_outputs:
- log.info("writing %s" % native_libs)
- if not self.dry_run:
- ensure_directory(native_libs)
- libs_file = open(native_libs, 'wt')
- libs_file.write('\n'.join(all_outputs))
- libs_file.write('\n')
- libs_file.close()
- elif os.path.isfile(native_libs):
- log.info("removing %s" % native_libs)
- if not self.dry_run:
- os.unlink(native_libs)
-
- write_safety_flag(
- os.path.join(archive_root,'EGG-INFO'), self.zip_safe()
- )
-
- if os.path.exists(os.path.join(self.egg_info,'depends.txt')):
- log.warn(
- "WARNING: 'depends.txt' will not be used by setuptools 0.6!\n"
- "Use the install_requires/extras_require setup() args instead."
- )
-
- if self.exclude_source_files:
- self.zap_pyfiles()
-
- # Make the archive
- make_zipfile(self.egg_output, archive_root, verbose=self.verbose,
- dry_run=self.dry_run, mode=self.gen_header())
- if not self.keep_temp:
- remove_tree(self.bdist_dir, dry_run=self.dry_run)
-
- # Add to 'Distribution.dist_files' so that the "upload" command works
- getattr(self.distribution,'dist_files',[]).append(
- ('bdist_egg',get_python_version(),self.egg_output))
-
-
-
-
- def zap_pyfiles(self):
- log.info("Removing .py files from temporary directory")
- for base,dirs,files in walk_egg(self.bdist_dir):
- for name in files:
- if name.endswith('.py'):
- path = os.path.join(base,name)
- log.debug("Deleting %s", path)
- os.unlink(path)
-
- def zip_safe(self):
- safe = getattr(self.distribution,'zip_safe',None)
- if safe is not None:
- return safe
- log.warn("zip_safe flag not set; analyzing archive contents...")
- return analyze_egg(self.bdist_dir, self.stubs)
-
- def make_init_files(self):
- """Create missing package __init__ files"""
- init_files = []
- for base,dirs,files in walk_egg(self.bdist_dir):
- if base==self.bdist_dir:
- # don't put an __init__ in the root
- continue
- for name in files:
- if name.endswith('.py'):
- if '__init__.py' not in files:
- pkg = base[len(self.bdist_dir)+1:].replace(os.sep,'.')
- if self.distribution.has_contents_for(pkg):
- log.warn("Creating missing __init__.py for %s",pkg)
- filename = os.path.join(base,'__init__.py')
- if not self.dry_run:
- f = open(filename,'w'); f.write(NS_PKG_STUB)
- f.close()
- init_files.append(filename)
- break
- else:
- # not a package, don't traverse to subdirectories
- dirs[:] = []
-
- return init_files
-
- def gen_header(self):
- epm = EntryPoint.parse_map(self.distribution.entry_points or '')
- ep = epm.get('setuptools.installation',{}).get('eggsecutable')
- if ep is None:
- return 'w' # not an eggsecutable, do it the usual way.
-
- if not ep.attrs or ep.extras:
- raise DistutilsSetupError(
- "eggsecutable entry point (%r) cannot have 'extras' "
- "or refer to a module" % (ep,)
- )
-
- pyver = sys.version[:3]
- pkg = ep.module_name
- full = '.'.join(ep.attrs)
- base = ep.attrs[0]
- basename = os.path.basename(self.egg_output)
-
- header = (
- "#!/bin/sh\n"
- 'if [ `basename $0` = "%(basename)s" ]\n'
- 'then exec python%(pyver)s -c "'
- "import sys, os; sys.path.insert(0, os.path.abspath('$0')); "
- "from %(pkg)s import %(base)s; sys.exit(%(full)s())"
- '" "$@"\n'
- 'else\n'
- ' echo $0 is not the correct name for this egg file.\n'
- ' echo Please rename it back to %(basename)s and try again.\n'
- ' exec false\n'
- 'fi\n'
-
- ) % locals()
-
- if not self.dry_run:
- mkpath(os.path.dirname(self.egg_output), dry_run=self.dry_run)
- f = open(self.egg_output, 'w')
- f.write(header)
- f.close()
- return 'a'
-
-
- def copy_metadata_to(self, target_dir):
- "Copy metadata (egg info) to the target_dir"
- # normalize the path (so that a forward-slash in egg_info will
- # match using startswith below)
- norm_egg_info = os.path.normpath(self.egg_info)
- prefix = os.path.join(norm_egg_info,'')
- for path in self.ei_cmd.filelist.files:
- if path.startswith(prefix):
- target = os.path.join(target_dir, path[len(prefix):])
- ensure_directory(target)
- self.copy_file(path, target)
-
- def get_ext_outputs(self):
- """Get a list of relative paths to C extensions in the output distro"""
-
- all_outputs = []
- ext_outputs = []
-
- paths = {self.bdist_dir:''}
- for base, dirs, files in os.walk(self.bdist_dir):
- for filename in files:
- if os.path.splitext(filename)[1].lower() in NATIVE_EXTENSIONS:
- all_outputs.append(paths[base]+filename)
- for filename in dirs:
- paths[os.path.join(base,filename)] = paths[base]+filename+'/'
-
- if self.distribution.has_ext_modules():
- build_cmd = self.get_finalized_command('build_ext')
- for ext in build_cmd.extensions:
- if isinstance(ext,Library):
- continue
- fullname = build_cmd.get_ext_fullname(ext.name)
- filename = build_cmd.get_ext_filename(fullname)
- if not os.path.basename(filename).startswith('dl-'):
- if os.path.exists(os.path.join(self.bdist_dir,filename)):
- ext_outputs.append(filename)
-
- return all_outputs, ext_outputs
-
-
-NATIVE_EXTENSIONS = dict.fromkeys('.dll .so .dylib .pyd'.split())
-
-
-
-
-def walk_egg(egg_dir):
- """Walk an unpacked egg's contents, skipping the metadata directory"""
- walker = os.walk(egg_dir)
- base,dirs,files = walker.next()
- if 'EGG-INFO' in dirs:
- dirs.remove('EGG-INFO')
- yield base,dirs,files
- for bdf in walker:
- yield bdf
-
-def analyze_egg(egg_dir, stubs):
- # check for existing flag in EGG-INFO
- for flag,fn in safety_flags.items():
- if os.path.exists(os.path.join(egg_dir,'EGG-INFO',fn)):
- return flag
- if not can_scan(): return False
- safe = True
- for base, dirs, files in walk_egg(egg_dir):
- for name in files:
- if name.endswith('.py') or name.endswith('.pyw'):
- continue
- elif name.endswith('.pyc') or name.endswith('.pyo'):
- # always scan, even if we already know we're not safe
- safe = scan_module(egg_dir, base, name, stubs) and safe
- return safe
-
-def write_safety_flag(egg_dir, safe):
- # Write or remove zip safety flag file(s)
- for flag,fn in safety_flags.items():
- fn = os.path.join(egg_dir, fn)
- if os.path.exists(fn):
- if safe is None or bool(safe)<>flag:
- os.unlink(fn)
- elif safe is not None and bool(safe)==flag:
- f=open(fn,'wt'); f.write('\n'); f.close()
-
-safety_flags = {
- True: 'zip-safe',
- False: 'not-zip-safe',
-}
-
-def scan_module(egg_dir, base, name, stubs):
- """Check whether module possibly uses unsafe-for-zipfile stuff"""
-
- filename = os.path.join(base,name)
- if filename[:-1] in stubs:
- return True # Extension module
- pkg = base[len(egg_dir)+1:].replace(os.sep,'.')
- module = pkg+(pkg and '.' or '')+os.path.splitext(name)[0]
- f = open(filename,'rb'); f.read(8) # skip magic & date
- code = marshal.load(f); f.close()
- safe = True
- symbols = dict.fromkeys(iter_symbols(code))
- for bad in ['__file__', '__path__']:
- if bad in symbols:
- log.warn("%s: module references %s", module, bad)
- safe = False
- if 'inspect' in symbols:
- for bad in [
- 'getsource', 'getabsfile', 'getsourcefile', 'getfile'
- 'getsourcelines', 'findsource', 'getcomments', 'getframeinfo',
- 'getinnerframes', 'getouterframes', 'stack', 'trace'
- ]:
- if bad in symbols:
- log.warn("%s: module MAY be using inspect.%s", module, bad)
- safe = False
- if '__name__' in symbols and '__main__' in symbols and '.' not in module:
- if sys.version[:3]=="2.4": # -m works w/zipfiles in 2.5
- log.warn("%s: top-level module may be 'python -m' script", module)
- safe = False
- return safe
-
-def iter_symbols(code):
- """Yield names and strings used by `code` and its nested code objects"""
- for name in code.co_names: yield name
- for const in code.co_consts:
- if isinstance(const,basestring):
- yield const
- elif isinstance(const,CodeType):
- for name in iter_symbols(const):
- yield name
-
-def can_scan():
- if not sys.platform.startswith('java') and sys.platform != 'cli':
- # CPython, PyPy, etc.
- return True
- log.warn("Unable to analyze compiled code on this platform.")
- log.warn("Please ask the author to include a 'zip_safe'"
- " setting (either True or False) in the package's setup.py")
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-# Attribute names of options for commands that might need to be convinced to
-# install to the egg build directory
-
-INSTALL_DIRECTORY_ATTRS = [
- 'install_lib', 'install_dir', 'install_data', 'install_base'
-]
-
-def make_zipfile(zip_filename, base_dir, verbose=0, dry_run=0, compress=None,
- mode='w'
-):
- """Create a zip file from all the files under 'base_dir'. The output
- zip file will be named 'base_dir' + ".zip". Uses either the "zipfile"
- Python module (if available) or the InfoZIP "zip" utility (if installed
- and found on the default search path). If neither tool is available,
- raises DistutilsExecError. Returns the name of the output zip file.
- """
- import zipfile
- mkpath(os.path.dirname(zip_filename), dry_run=dry_run)
- log.info("creating '%s' and adding '%s' to it", zip_filename, base_dir)
-
- def visit(z, dirname, names):
- for name in names:
- path = os.path.normpath(os.path.join(dirname, name))
- if os.path.isfile(path):
- p = path[len(base_dir)+1:]
- if not dry_run:
- z.write(path, p)
- log.debug("adding '%s'" % p)
-
- if compress is None:
- compress = (sys.version>="2.4") # avoid 2.3 zipimport bug when 64 bits
-
- compression = [zipfile.ZIP_STORED, zipfile.ZIP_DEFLATED][bool(compress)]
- if not dry_run:
- z = zipfile.ZipFile(zip_filename, mode, compression=compression)
- for dirname, dirs, files in os.walk(base_dir):
- visit(z, dirname, files)
- z.close()
- else:
- for dirname, dirs, files in os.walk(base_dir):
- visit(None, dirname, files)
- return zip_filename
-#
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/bdist_rpm.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/bdist_rpm.py
deleted file mode 100644
index 8c48da3..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/bdist_rpm.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# This is just a kludge so that bdist_rpm doesn't guess wrong about the
-# distribution name and version, if the egg_info command is going to alter
-# them, another kludge to allow you to build old-style non-egg RPMs, and
-# finally, a kludge to track .rpm files for uploading when run on Python <2.5.
-
-from distutils.command.bdist_rpm import bdist_rpm as _bdist_rpm
-import sys, os
-
-class bdist_rpm(_bdist_rpm):
-
- def initialize_options(self):
- _bdist_rpm.initialize_options(self)
- self.no_egg = None
-
- if sys.version<"2.5":
- # Track for uploading any .rpm file(s) moved to self.dist_dir
- def move_file(self, src, dst, level=1):
- _bdist_rpm.move_file(self, src, dst, level)
- if dst==self.dist_dir and src.endswith('.rpm'):
- getattr(self.distribution,'dist_files',[]).append(
- ('bdist_rpm',
- src.endswith('.src.rpm') and 'any' or sys.version[:3],
- os.path.join(dst, os.path.basename(src)))
- )
-
- def run(self):
- self.run_command('egg_info') # ensure distro name is up-to-date
- _bdist_rpm.run(self)
-
-
-
-
-
-
-
-
-
-
-
-
-
- def _make_spec_file(self):
- version = self.distribution.get_version()
- rpmversion = version.replace('-','_')
- spec = _bdist_rpm._make_spec_file(self)
- line23 = '%define version '+version
- line24 = '%define version '+rpmversion
- spec = [
- line.replace(
- "Source0: %{name}-%{version}.tar",
- "Source0: %{name}-%{unmangled_version}.tar"
- ).replace(
- "setup.py install ",
- "setup.py install --single-version-externally-managed "
- ).replace(
- "%setup",
- "%setup -n %{name}-%{unmangled_version}"
- ).replace(line23,line24)
- for line in spec
- ]
- spec.insert(spec.index(line24)+1, "%define unmangled_version "+version)
- return spec
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/bdist_wininst.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/bdist_wininst.py
deleted file mode 100644
index 93e6846..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/bdist_wininst.py
+++ /dev/null
@@ -1,41 +0,0 @@
-from distutils.command.bdist_wininst import bdist_wininst as _bdist_wininst
-import os, sys
-
-class bdist_wininst(_bdist_wininst):
-
- def create_exe(self, arcname, fullname, bitmap=None):
- _bdist_wininst.create_exe(self, arcname, fullname, bitmap)
- dist_files = getattr(self.distribution, 'dist_files', [])
-
- if self.target_version:
- installer_name = os.path.join(self.dist_dir,
- "%s.win32-py%s.exe" %
- (fullname, self.target_version))
- pyversion = self.target_version
-
- # fix 2.5 bdist_wininst ignoring --target-version spec
- bad = ('bdist_wininst','any',installer_name)
- if bad in dist_files:
- dist_files.remove(bad)
- else:
- installer_name = os.path.join(self.dist_dir,
- "%s.win32.exe" % fullname)
- pyversion = 'any'
- good = ('bdist_wininst', pyversion, installer_name)
- if good not in dist_files:
- dist_files.append(good)
-
- def reinitialize_command (self, command, reinit_subcommands=0):
- cmd = self.distribution.reinitialize_command(
- command, reinit_subcommands)
- if command in ('install', 'install_lib'):
- cmd.install_lib = None # work around distutils bug
- return cmd
-
- def run(self):
- self._is_running = True
- try:
- _bdist_wininst.run(self)
- finally:
- self._is_running = False
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/build_ext.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/build_ext.py
deleted file mode 100644
index 4a94572..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/build_ext.py
+++ /dev/null
@@ -1,294 +0,0 @@
-from distutils.command.build_ext import build_ext as _du_build_ext
-try:
- # Attempt to use Pyrex for building extensions, if available
- from Pyrex.Distutils.build_ext import build_ext as _build_ext
-except ImportError:
- _build_ext = _du_build_ext
-
-import os, sys
-from distutils.file_util import copy_file
-from setuptools.extension import Library
-from distutils.ccompiler import new_compiler
-from distutils.sysconfig import customize_compiler, get_config_var
-get_config_var("LDSHARED") # make sure _config_vars is initialized
-from distutils.sysconfig import _config_vars
-from distutils import log
-from distutils.errors import *
-
-have_rtld = False
-use_stubs = False
-libtype = 'shared'
-
-if sys.platform == "darwin":
- use_stubs = True
-elif os.name != 'nt':
- try:
- from dl import RTLD_NOW
- have_rtld = True
- use_stubs = True
- except ImportError:
- pass
-
-def if_dl(s):
- if have_rtld:
- return s
- return ''
-
-
-
-
-
-
-class build_ext(_build_ext):
- def run(self):
- """Build extensions in build directory, then copy if --inplace"""
- old_inplace, self.inplace = self.inplace, 0
- _build_ext.run(self)
- self.inplace = old_inplace
- if old_inplace:
- self.copy_extensions_to_source()
-
- def copy_extensions_to_source(self):
- build_py = self.get_finalized_command('build_py')
- for ext in self.extensions:
- fullname = self.get_ext_fullname(ext.name)
- filename = self.get_ext_filename(fullname)
- modpath = fullname.split('.')
- package = '.'.join(modpath[:-1])
- package_dir = build_py.get_package_dir(package)
- dest_filename = os.path.join(package_dir,os.path.basename(filename))
- src_filename = os.path.join(self.build_lib,filename)
-
- # Always copy, even if source is older than destination, to ensure
- # that the right extensions for the current Python/platform are
- # used.
- copy_file(
- src_filename, dest_filename, verbose=self.verbose,
- dry_run=self.dry_run
- )
- if ext._needs_stub:
- self.write_stub(package_dir or os.curdir, ext, True)
-
-
- if _build_ext is not _du_build_ext and not hasattr(_build_ext,'pyrex_sources'):
- # Workaround for problems using some Pyrex versions w/SWIG and/or 2.4
- def swig_sources(self, sources, *otherargs):
- # first do any Pyrex processing
- sources = _build_ext.swig_sources(self, sources) or sources
- # Then do any actual SWIG stuff on the remainder
- return _du_build_ext.swig_sources(self, sources, *otherargs)
-
-
-
- def get_ext_filename(self, fullname):
- filename = _build_ext.get_ext_filename(self,fullname)
- if fullname not in self.ext_map:
- return filename
- ext = self.ext_map[fullname]
- if isinstance(ext,Library):
- fn, ext = os.path.splitext(filename)
- return self.shlib_compiler.library_filename(fn,libtype)
- elif use_stubs and ext._links_to_dynamic:
- d,fn = os.path.split(filename)
- return os.path.join(d,'dl-'+fn)
- else:
- return filename
-
- def initialize_options(self):
- _build_ext.initialize_options(self)
- self.shlib_compiler = None
- self.shlibs = []
- self.ext_map = {}
-
- def finalize_options(self):
- _build_ext.finalize_options(self)
- self.extensions = self.extensions or []
- self.check_extensions_list(self.extensions)
- self.shlibs = [ext for ext in self.extensions
- if isinstance(ext,Library)]
- if self.shlibs:
- self.setup_shlib_compiler()
- for ext in self.extensions:
- ext._full_name = self.get_ext_fullname(ext.name)
- for ext in self.extensions:
- fullname = ext._full_name
- self.ext_map[fullname] = ext
-
- # distutils 3.1 will also ask for module names
- # XXX what to do with conflicts?
- self.ext_map[fullname.split('.')[-1]] = ext
-
- ltd = ext._links_to_dynamic = \
- self.shlibs and self.links_to_dynamic(ext) or False
- ext._needs_stub = ltd and use_stubs and not isinstance(ext,Library)
- filename = ext._file_name = self.get_ext_filename(fullname)
- libdir = os.path.dirname(os.path.join(self.build_lib,filename))
- if ltd and libdir not in ext.library_dirs:
- ext.library_dirs.append(libdir)
- if ltd and use_stubs and os.curdir not in ext.runtime_library_dirs:
- ext.runtime_library_dirs.append(os.curdir)
-
- def setup_shlib_compiler(self):
- compiler = self.shlib_compiler = new_compiler(
- compiler=self.compiler, dry_run=self.dry_run, force=self.force
- )
- if sys.platform == "darwin":
- tmp = _config_vars.copy()
- try:
- # XXX Help! I don't have any idea whether these are right...
- _config_vars['LDSHARED'] = "gcc -Wl,-x -dynamiclib -undefined dynamic_lookup"
- _config_vars['CCSHARED'] = " -dynamiclib"
- _config_vars['SO'] = ".dylib"
- customize_compiler(compiler)
- finally:
- _config_vars.clear()
- _config_vars.update(tmp)
- else:
- customize_compiler(compiler)
-
- if self.include_dirs is not None:
- compiler.set_include_dirs(self.include_dirs)
- if self.define is not None:
- # 'define' option is a list of (name,value) tuples
- for (name,value) in self.define:
- compiler.define_macro(name, value)
- if self.undef is not None:
- for macro in self.undef:
- compiler.undefine_macro(macro)
- if self.libraries is not None:
- compiler.set_libraries(self.libraries)
- if self.library_dirs is not None:
- compiler.set_library_dirs(self.library_dirs)
- if self.rpath is not None:
- compiler.set_runtime_library_dirs(self.rpath)
- if self.link_objects is not None:
- compiler.set_link_objects(self.link_objects)
-
- # hack so distutils' build_extension() builds a library instead
- compiler.link_shared_object = link_shared_object.__get__(compiler)
-
-
-
- def get_export_symbols(self, ext):
- if isinstance(ext,Library):
- return ext.export_symbols
- return _build_ext.get_export_symbols(self,ext)
-
- def build_extension(self, ext):
- _compiler = self.compiler
- try:
- if isinstance(ext,Library):
- self.compiler = self.shlib_compiler
- _build_ext.build_extension(self,ext)
- if ext._needs_stub:
- self.write_stub(
- self.get_finalized_command('build_py').build_lib, ext
- )
- finally:
- self.compiler = _compiler
-
- def links_to_dynamic(self, ext):
- """Return true if 'ext' links to a dynamic lib in the same package"""
- # XXX this should check to ensure the lib is actually being built
- # XXX as dynamic, and not just using a locally-found version or a
- # XXX static-compiled version
- libnames = dict.fromkeys([lib._full_name for lib in self.shlibs])
- pkg = '.'.join(ext._full_name.split('.')[:-1]+[''])
- for libname in ext.libraries:
- if pkg+libname in libnames: return True
- return False
-
- def get_outputs(self):
- outputs = _build_ext.get_outputs(self)
- optimize = self.get_finalized_command('build_py').optimize
- for ext in self.extensions:
- if ext._needs_stub:
- base = os.path.join(self.build_lib, *ext._full_name.split('.'))
- outputs.append(base+'.py')
- outputs.append(base+'.pyc')
- if optimize:
- outputs.append(base+'.pyo')
- return outputs
-
- def write_stub(self, output_dir, ext, compile=False):
- log.info("writing stub loader for %s to %s",ext._full_name, output_dir)
- stub_file = os.path.join(output_dir, *ext._full_name.split('.'))+'.py'
- if compile and os.path.exists(stub_file):
- raise DistutilsError(stub_file+" already exists! Please delete.")
- if not self.dry_run:
- f = open(stub_file,'w')
- f.write('\n'.join([
- "def __bootstrap__():",
- " global __bootstrap__, __file__, __loader__",
- " import sys, os, pkg_resources, imp"+if_dl(", dl"),
- " __file__ = pkg_resources.resource_filename(__name__,%r)"
- % os.path.basename(ext._file_name),
- " del __bootstrap__",
- " if '__loader__' in globals():",
- " del __loader__",
- if_dl(" old_flags = sys.getdlopenflags()"),
- " old_dir = os.getcwd()",
- " try:",
- " os.chdir(os.path.dirname(__file__))",
- if_dl(" sys.setdlopenflags(dl.RTLD_NOW)"),
- " imp.load_dynamic(__name__,__file__)",
- " finally:",
- if_dl(" sys.setdlopenflags(old_flags)"),
- " os.chdir(old_dir)",
- "__bootstrap__()",
- "" # terminal \n
- ]))
- f.close()
- if compile:
- from distutils.util import byte_compile
- byte_compile([stub_file], optimize=0,
- force=True, dry_run=self.dry_run)
- optimize = self.get_finalized_command('install_lib').optimize
- if optimize > 0:
- byte_compile([stub_file], optimize=optimize,
- force=True, dry_run=self.dry_run)
- if os.path.exists(stub_file) and not self.dry_run:
- os.unlink(stub_file)
-
-
-if use_stubs or os.name=='nt':
- # Build shared libraries
- #
- def link_shared_object(self, objects, output_libname, output_dir=None,
- libraries=None, library_dirs=None, runtime_library_dirs=None,
- export_symbols=None, debug=0, extra_preargs=None,
- extra_postargs=None, build_temp=None, target_lang=None
- ): self.link(
- self.SHARED_LIBRARY, objects, output_libname,
- output_dir, libraries, library_dirs, runtime_library_dirs,
- export_symbols, debug, extra_preargs, extra_postargs,
- build_temp, target_lang
- )
-else:
- # Build static libraries everywhere else
- libtype = 'static'
-
- def link_shared_object(self, objects, output_libname, output_dir=None,
- libraries=None, library_dirs=None, runtime_library_dirs=None,
- export_symbols=None, debug=0, extra_preargs=None,
- extra_postargs=None, build_temp=None, target_lang=None
- ):
- # XXX we need to either disallow these attrs on Library instances,
- # or warn/abort here if set, or something...
- #libraries=None, library_dirs=None, runtime_library_dirs=None,
- #export_symbols=None, extra_preargs=None, extra_postargs=None,
- #build_temp=None
-
- assert output_dir is None # distutils build_ext doesn't pass this
- output_dir,filename = os.path.split(output_libname)
- basename, ext = os.path.splitext(filename)
- if self.library_filename("x").startswith('lib'):
- # strip 'lib' prefix; this is kludgy if some platform uses
- # a different prefix
- basename = basename[3:]
-
- self.create_static_lib(
- objects, basename, output_dir, debug, target_lang
- )
-
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/build_py.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/build_py.py
deleted file mode 100644
index d53960f..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/build_py.py
+++ /dev/null
@@ -1,282 +0,0 @@
-import os.path, sys, fnmatch
-from distutils.command.build_py import build_py as _build_py
-from distutils.util import convert_path
-from glob import glob
-
-try:
- from distutils.util import Mixin2to3 as _Mixin2to3
- # add support for converting doctests that is missing in 3.1 distutils
- from distutils import log
- from lib2to3.refactor import RefactoringTool, get_fixers_from_package
- import setuptools
- class DistutilsRefactoringTool(RefactoringTool):
- def log_error(self, msg, *args, **kw):
- log.error(msg, *args)
-
- def log_message(self, msg, *args):
- log.info(msg, *args)
-
- def log_debug(self, msg, *args):
- log.debug(msg, *args)
-
- class Mixin2to3(_Mixin2to3):
- def run_2to3(self, files, doctests = False):
- # See of the distribution option has been set, otherwise check the
- # setuptools default.
- if self.distribution.use_2to3 is not True:
- return
- if not files:
- return
- log.info("Fixing "+" ".join(files))
- self.__build_fixer_names()
- self.__exclude_fixers()
- if doctests:
- if setuptools.run_2to3_on_doctests:
- r = DistutilsRefactoringTool(self.fixer_names)
- r.refactor(files, write=True, doctests_only=True)
- else:
- _Mixin2to3.run_2to3(self, files)
-
- def __build_fixer_names(self):
- if self.fixer_names: return
- self.fixer_names = []
- for p in setuptools.lib2to3_fixer_packages:
- self.fixer_names.extend(get_fixers_from_package(p))
- if self.distribution.use_2to3_fixers is not None:
- for p in self.distribution.use_2to3_fixers:
- self.fixer_names.extend(get_fixers_from_package(p))
-
- def __exclude_fixers(self):
- excluded_fixers = getattr(self, 'exclude_fixers', [])
- if self.distribution.use_2to3_exclude_fixers is not None:
- excluded_fixers.extend(self.distribution.use_2to3_exclude_fixers)
- for fixer_name in excluded_fixers:
- if fixer_name not in self.fixer_names:
- log.warn("Excluded fixer %s not found", fixer_name)
- continue
- self.fixer_names.remove(fixer_name)
-
-except ImportError:
- class Mixin2to3:
- def run_2to3(self, files, doctests=True):
- # Nothing done in 2.x
- pass
-
-class build_py(_build_py, Mixin2to3):
- """Enhanced 'build_py' command that includes data files with packages
-
- The data files are specified via a 'package_data' argument to 'setup()'.
- See 'setuptools.dist.Distribution' for more details.
-
- Also, this version of the 'build_py' command allows you to specify both
- 'py_modules' and 'packages' in the same setup operation.
- """
- def finalize_options(self):
- _build_py.finalize_options(self)
- self.package_data = self.distribution.package_data
- self.exclude_package_data = self.distribution.exclude_package_data or {}
- if 'data_files' in self.__dict__: del self.__dict__['data_files']
- self.__updated_files = []
- self.__doctests_2to3 = []
-
- def run(self):
- """Build modules, packages, and copy data files to build directory"""
- if not self.py_modules and not self.packages:
- return
-
- if self.py_modules:
- self.build_modules()
-
- if self.packages:
- self.build_packages()
- self.build_package_data()
-
- self.run_2to3(self.__updated_files, False)
- self.run_2to3(self.__updated_files, True)
- self.run_2to3(self.__doctests_2to3, True)
-
- # Only compile actual .py files, using our base class' idea of what our
- # output files are.
- self.byte_compile(_build_py.get_outputs(self, include_bytecode=0))
-
- def __getattr__(self,attr):
- if attr=='data_files': # lazily compute data files
- self.data_files = files = self._get_data_files(); return files
- return _build_py.__getattr__(self,attr)
-
- def build_module(self, module, module_file, package):
- outfile, copied = _build_py.build_module(self, module, module_file, package)
- if copied:
- self.__updated_files.append(outfile)
- return outfile, copied
-
- def _get_data_files(self):
- """Generate list of '(package,src_dir,build_dir,filenames)' tuples"""
- self.analyze_manifest()
- data = []
- for package in self.packages or ():
- # Locate package source directory
- src_dir = self.get_package_dir(package)
-
- # Compute package build directory
- build_dir = os.path.join(*([self.build_lib] + package.split('.')))
-
- # Length of path to strip from found files
- plen = len(src_dir)+1
-
- # Strip directory from globbed filenames
- filenames = [
- file[plen:] for file in self.find_data_files(package, src_dir)
- ]
- data.append( (package, src_dir, build_dir, filenames) )
- return data
-
- def find_data_files(self, package, src_dir):
- """Return filenames for package's data files in 'src_dir'"""
- globs = (self.package_data.get('', [])
- + self.package_data.get(package, []))
- files = self.manifest_files.get(package, [])[:]
- for pattern in globs:
- # Each pattern has to be converted to a platform-specific path
- files.extend(glob(os.path.join(src_dir, convert_path(pattern))))
- return self.exclude_data_files(package, src_dir, files)
-
- def build_package_data(self):
- """Copy data files into build directory"""
- lastdir = None
- for package, src_dir, build_dir, filenames in self.data_files:
- for filename in filenames:
- target = os.path.join(build_dir, filename)
- self.mkpath(os.path.dirname(target))
- srcfile = os.path.join(src_dir, filename)
- outf, copied = self.copy_file(srcfile, target)
- srcfile = os.path.abspath(srcfile)
- if copied and srcfile in self.distribution.convert_2to3_doctests:
- self.__doctests_2to3.append(outf)
-
-
- def analyze_manifest(self):
- self.manifest_files = mf = {}
- if not self.distribution.include_package_data:
- return
- src_dirs = {}
- for package in self.packages or ():
- # Locate package source directory
- src_dirs[assert_relative(self.get_package_dir(package))] = package
-
- self.run_command('egg_info')
- ei_cmd = self.get_finalized_command('egg_info')
- for path in ei_cmd.filelist.files:
- d,f = os.path.split(assert_relative(path))
- prev = None
- oldf = f
- while d and d!=prev and d not in src_dirs:
- prev = d
- d, df = os.path.split(d)
- f = os.path.join(df, f)
- if d in src_dirs:
- if path.endswith('.py') and f==oldf:
- continue # it's a module, not data
- mf.setdefault(src_dirs[d],[]).append(path)
-
- def get_data_files(self): pass # kludge 2.4 for lazy computation
-
- if sys.version<"2.4": # Python 2.4 already has this code
- def get_outputs(self, include_bytecode=1):
- """Return complete list of files copied to the build directory
-
- This includes both '.py' files and data files, as well as '.pyc'
- and '.pyo' files if 'include_bytecode' is true. (This method is
- needed for the 'install_lib' command to do its job properly, and to
- generate a correct installation manifest.)
- """
- return _build_py.get_outputs(self, include_bytecode) + [
- os.path.join(build_dir, filename)
- for package, src_dir, build_dir,filenames in self.data_files
- for filename in filenames
- ]
-
- def check_package(self, package, package_dir):
- """Check namespace packages' __init__ for declare_namespace"""
- try:
- return self.packages_checked[package]
- except KeyError:
- pass
-
- init_py = _build_py.check_package(self, package, package_dir)
- self.packages_checked[package] = init_py
-
- if not init_py or not self.distribution.namespace_packages:
- return init_py
-
- for pkg in self.distribution.namespace_packages:
- if pkg==package or pkg.startswith(package+'.'):
- break
- else:
- return init_py
-
- f = open(init_py,'rU')
- if 'declare_namespace' not in f.read():
- from distutils import log
- log.warn(
- "WARNING: %s is a namespace package, but its __init__.py does\n"
- "not declare_namespace(); setuptools 0.7 will REQUIRE this!\n"
- '(See the setuptools manual under "Namespace Packages" for '
- "details.)\n", package
- )
- f.close()
- return init_py
-
- def initialize_options(self):
- self.packages_checked={}
- _build_py.initialize_options(self)
-
-
- def get_package_dir(self, package):
- res = _build_py.get_package_dir(self, package)
- if self.distribution.src_root is not None:
- return os.path.join(self.distribution.src_root, res)
- return res
-
-
- def exclude_data_files(self, package, src_dir, files):
- """Filter filenames for package's data files in 'src_dir'"""
- globs = (self.exclude_package_data.get('', [])
- + self.exclude_package_data.get(package, []))
- bad = []
- for pattern in globs:
- bad.extend(
- fnmatch.filter(
- files, os.path.join(src_dir, convert_path(pattern))
- )
- )
- bad = dict.fromkeys(bad)
- seen = {}
- return [
- f for f in files if f not in bad
- and f not in seen and seen.setdefault(f,1) # ditch dupes
- ]
-
-
-def assert_relative(path):
- if not os.path.isabs(path):
- return path
- from distutils.errors import DistutilsSetupError
- raise DistutilsSetupError(
-"""Error: setup script specifies an absolute path:
-
- %s
-
-setup() arguments must *always* be /-separated paths relative to the
-setup.py directory, *never* absolute paths.
-""" % path
- )
-
-
-
-
-
-
-
-
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/develop.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/develop.py
deleted file mode 100644
index 93b7773..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/develop.py
+++ /dev/null
@@ -1,141 +0,0 @@
-from setuptools.command.easy_install import easy_install
-from distutils.util import convert_path, subst_vars
-from pkg_resources import Distribution, PathMetadata, normalize_path
-from distutils import log
-from distutils.errors import DistutilsError, DistutilsOptionError
-import os, setuptools, glob
-
-class develop(easy_install):
- """Set up package for development"""
-
- description = "install package in 'development mode'"
-
- user_options = easy_install.user_options + [
- ("uninstall", "u", "Uninstall this source package"),
- ("egg-path=", None, "Set the path to be used in the .egg-link file"),
- ]
-
- boolean_options = easy_install.boolean_options + ['uninstall']
-
- command_consumes_arguments = False # override base
-
- def run(self):
- if self.uninstall:
- self.multi_version = True
- self.uninstall_link()
- else:
- self.install_for_development()
- self.warn_deprecated_options()
-
- def initialize_options(self):
- self.uninstall = None
- self.egg_path = None
- easy_install.initialize_options(self)
- self.setup_path = None
- self.always_copy_from = '.' # always copy eggs installed in curdir
-
-
-
- def finalize_options(self):
- ei = self.get_finalized_command("egg_info")
- if ei.broken_egg_info:
- raise DistutilsError(
- "Please rename %r to %r before using 'develop'"
- % (ei.egg_info, ei.broken_egg_info)
- )
- self.args = [ei.egg_name]
-
-
-
-
- easy_install.finalize_options(self)
- self.expand_basedirs()
- self.expand_dirs()
- # pick up setup-dir .egg files only: no .egg-info
- self.package_index.scan(glob.glob('*.egg'))
-
- self.egg_link = os.path.join(self.install_dir, ei.egg_name+'.egg-link')
- self.egg_base = ei.egg_base
- if self.egg_path is None:
- self.egg_path = os.path.abspath(ei.egg_base)
-
- target = normalize_path(self.egg_base)
- if normalize_path(os.path.join(self.install_dir, self.egg_path)) != target:
- raise DistutilsOptionError(
- "--egg-path must be a relative path from the install"
- " directory to "+target
- )
-
- # Make a distribution for the package's source
- self.dist = Distribution(
- target,
- PathMetadata(target, os.path.abspath(ei.egg_info)),
- project_name = ei.egg_name
- )
-
- p = self.egg_base.replace(os.sep,'/')
- if p!= os.curdir:
- p = '../' * (p.count('/')+1)
- self.setup_path = p
- p = normalize_path(os.path.join(self.install_dir, self.egg_path, p))
- if p != normalize_path(os.curdir):
- raise DistutilsOptionError(
- "Can't get a consistent path to setup script from"
- " installation directory", p, normalize_path(os.curdir))
-
- def install_for_development(self):
- # Ensure metadata is up-to-date
- self.run_command('egg_info')
- # Build extensions in-place
- self.reinitialize_command('build_ext', inplace=1)
- self.run_command('build_ext')
- self.install_site_py() # ensure that target dir is site-safe
- if setuptools.bootstrap_install_from:
- self.easy_install(setuptools.bootstrap_install_from)
- setuptools.bootstrap_install_from = None
-
- # create an .egg-link in the installation dir, pointing to our egg
- log.info("Creating %s (link to %s)", self.egg_link, self.egg_base)
- if not self.dry_run:
- f = open(self.egg_link,"w")
- f.write(self.egg_path + "\n" + self.setup_path)
- f.close()
- # postprocess the installed distro, fixing up .pth, installing scripts,
- # and handling requirements
- self.process_distribution(None, self.dist, not self.no_deps)
-
-
- def uninstall_link(self):
- if os.path.exists(self.egg_link):
- log.info("Removing %s (link to %s)", self.egg_link, self.egg_base)
- contents = [line.rstrip() for line in open(self.egg_link)]
- if contents not in ([self.egg_path], [self.egg_path, self.setup_path]):
- log.warn("Link points to %s: uninstall aborted", contents)
- return
- if not self.dry_run:
- os.unlink(self.egg_link)
- if not self.dry_run:
- self.update_pth(self.dist) # remove any .pth link to us
- if self.distribution.scripts:
- # XXX should also check for entry point scripts!
- log.warn("Note: you must uninstall or replace scripts manually!")
-
- def install_egg_scripts(self, dist):
- if dist is not self.dist:
- # Installing a dependency, so fall back to normal behavior
- return easy_install.install_egg_scripts(self,dist)
-
- # create wrapper scripts in the script dir, pointing to dist.scripts
-
- # new-style...
- self.install_wrapper_scripts(dist)
-
- # ...and old-style
- for script_name in self.distribution.scripts or []:
- script_path = os.path.abspath(convert_path(script_name))
- script_name = os.path.basename(script_path)
- f = open(script_path,'rU')
- script_text = f.read()
- f.close()
- self.install_script(dist, script_name, script_text, script_path)
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/easy_install.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/easy_install.py
deleted file mode 100644
index 4700fe0..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/easy_install.py
+++ /dev/null
@@ -1,1893 +0,0 @@
-#!python
-"""\
-Easy Install
-------------
-
-A tool for doing automatic download/extract/build of distutils-based Python
-packages. For detailed documentation, see the accompanying EasyInstall.txt
-file, or visit the `EasyInstall home page`__.
-
-__ http://packages.python.org/distribute/easy_install.html
-
-"""
-import sys, os.path, zipimport, shutil, tempfile, zipfile, re, stat, random
-from glob import glob
-from setuptools import Command, _dont_write_bytecode
-from setuptools.sandbox import run_setup
-from distutils import log, dir_util
-from distutils.util import get_platform
-from distutils.util import convert_path, subst_vars
-from distutils.sysconfig import get_python_lib, get_config_vars
-from distutils.errors import DistutilsArgError, DistutilsOptionError, \
- DistutilsError, DistutilsPlatformError
-from distutils.command.install import INSTALL_SCHEMES, SCHEME_KEYS
-from setuptools.archive_util import unpack_archive
-from setuptools.package_index import PackageIndex
-from setuptools.package_index import URL_SCHEME
-from setuptools.command import bdist_egg, egg_info
-from pkg_resources import yield_lines, normalize_path, resource_string, \
- ensure_directory, get_distribution, find_distributions, \
- Environment, Requirement, Distribution, \
- PathMetadata, EggMetadata, WorkingSet, \
- DistributionNotFound, VersionConflict, \
- DEVELOP_DIST
-
-sys_executable = os.path.normpath(sys.executable)
-
-__all__ = [
- 'samefile', 'easy_install', 'PthDistributions', 'extract_wininst_cfg',
- 'main', 'get_exe_prefixes',
-]
-
-import site
-HAS_USER_SITE = not sys.version < "2.6" and site.ENABLE_USER_SITE
-
-import struct
-def is_64bit():
- return struct.calcsize("P") == 8
-
-def samefile(p1,p2):
- if hasattr(os.path,'samefile') and (
- os.path.exists(p1) and os.path.exists(p2)
- ):
- return os.path.samefile(p1,p2)
- return (
- os.path.normpath(os.path.normcase(p1)) ==
- os.path.normpath(os.path.normcase(p2))
- )
-
-if sys.version_info <= (3,):
- def _to_ascii(s):
- return s
- def isascii(s):
- try:
- unicode(s, 'ascii')
- return True
- except UnicodeError:
- return False
-else:
- def _to_ascii(s):
- return s.encode('ascii')
- def isascii(s):
- try:
- s.encode('ascii')
- return True
- except UnicodeError:
- return False
-
-class easy_install(Command):
- """Manage a download/build/install process"""
- description = "Find/get/install Python packages"
- command_consumes_arguments = True
-
- user_options = [
- ('prefix=', None, "installation prefix"),
- ("zip-ok", "z", "install package as a zipfile"),
- ("multi-version", "m", "make apps have to require() a version"),
- ("upgrade", "U", "force upgrade (searches PyPI for latest versions)"),
- ("install-dir=", "d", "install package to DIR"),
- ("script-dir=", "s", "install scripts to DIR"),
- ("exclude-scripts", "x", "Don't install scripts"),
- ("always-copy", "a", "Copy all needed packages to install dir"),
- ("index-url=", "i", "base URL of Python Package Index"),
- ("find-links=", "f", "additional URL(s) to search for packages"),
- ("delete-conflicting", "D", "no longer needed; don't use this"),
- ("ignore-conflicts-at-my-risk", None,
- "no longer needed; don't use this"),
- ("build-directory=", "b",
- "download/extract/build in DIR; keep the results"),
- ('optimize=', 'O',
- "also compile with optimization: -O1 for \"python -O\", "
- "-O2 for \"python -OO\", and -O0 to disable [default: -O0]"),
- ('record=', None,
- "filename in which to record list of installed files"),
- ('always-unzip', 'Z', "don't install as a zipfile, no matter what"),
- ('site-dirs=','S',"list of directories where .pth files work"),
- ('editable', 'e', "Install specified packages in editable form"),
- ('no-deps', 'N', "don't install dependencies"),
- ('allow-hosts=', 'H', "pattern(s) that hostnames must match"),
- ('local-snapshots-ok', 'l', "allow building eggs from local checkouts"),
- ('version', None, "print version information and exit"),
- ('no-find-links', None,
- "Don't load find-links defined in packages being installed")
- ]
- boolean_options = [
- 'zip-ok', 'multi-version', 'exclude-scripts', 'upgrade', 'always-copy',
- 'delete-conflicting', 'ignore-conflicts-at-my-risk', 'editable',
- 'no-deps', 'local-snapshots-ok', 'version'
- ]
-
- if HAS_USER_SITE:
- user_options.append(('user', None,
- "install in user site-package '%s'" % site.USER_SITE))
- boolean_options.append('user')
-
-
- negative_opt = {'always-unzip': 'zip-ok'}
- create_index = PackageIndex
-
- def initialize_options(self):
- if HAS_USER_SITE:
- whereami = os.path.abspath(__file__)
- self.user = whereami.startswith(site.USER_SITE)
- else:
- self.user = 0
-
- self.zip_ok = self.local_snapshots_ok = None
- self.install_dir = self.script_dir = self.exclude_scripts = None
- self.index_url = None
- self.find_links = None
- self.build_directory = None
- self.args = None
- self.optimize = self.record = None
- self.upgrade = self.always_copy = self.multi_version = None
- self.editable = self.no_deps = self.allow_hosts = None
- self.root = self.prefix = self.no_report = None
- self.version = None
- self.install_purelib = None # for pure module distributions
- self.install_platlib = None # non-pure (dists w/ extensions)
- self.install_headers = None # for C/C++ headers
- self.install_lib = None # set to either purelib or platlib
- self.install_scripts = None
- self.install_data = None
- self.install_base = None
- self.install_platbase = None
- if HAS_USER_SITE:
- self.install_userbase = site.USER_BASE
- self.install_usersite = site.USER_SITE
- else:
- self.install_userbase = None
- self.install_usersite = None
- self.no_find_links = None
-
- # Options not specifiable via command line
- self.package_index = None
- self.pth_file = self.always_copy_from = None
- self.delete_conflicting = None
- self.ignore_conflicts_at_my_risk = None
- self.site_dirs = None
- self.installed_projects = {}
- self.sitepy_installed = False
- # Always read easy_install options, even if we are subclassed, or have
- # an independent instance created. This ensures that defaults will
- # always come from the standard configuration file(s)' "easy_install"
- # section, even if this is a "develop" or "install" command, or some
- # other embedding.
- self._dry_run = None
- self.verbose = self.distribution.verbose
- self.distribution._set_command_options(
- self, self.distribution.get_option_dict('easy_install')
- )
-
- def delete_blockers(self, blockers):
- for filename in blockers:
- if os.path.exists(filename) or os.path.islink(filename):
- log.info("Deleting %s", filename)
- if not self.dry_run:
- if os.path.isdir(filename) and not os.path.islink(filename):
- rmtree(filename)
- else:
- os.unlink(filename)
-
- def finalize_options(self):
- if self.version:
- print 'distribute %s' % get_distribution('distribute').version
- sys.exit()
-
- py_version = sys.version.split()[0]
- prefix, exec_prefix = get_config_vars('prefix', 'exec_prefix')
-
- self.config_vars = {'dist_name': self.distribution.get_name(),
- 'dist_version': self.distribution.get_version(),
- 'dist_fullname': self.distribution.get_fullname(),
- 'py_version': py_version,
- 'py_version_short': py_version[0:3],
- 'py_version_nodot': py_version[0] + py_version[2],
- 'sys_prefix': prefix,
- 'prefix': prefix,
- 'sys_exec_prefix': exec_prefix,
- 'exec_prefix': exec_prefix,
- # Only python 3.2+ has abiflags
- 'abiflags': getattr(sys, 'abiflags', ''),
- }
-
- if HAS_USER_SITE:
- self.config_vars['userbase'] = self.install_userbase
- self.config_vars['usersite'] = self.install_usersite
-
- # fix the install_dir if "--user" was used
- #XXX: duplicate of the code in the setup command
- if self.user and HAS_USER_SITE:
- self.create_home_path()
- if self.install_userbase is None:
- raise DistutilsPlatformError(
- "User base directory is not specified")
- self.install_base = self.install_platbase = self.install_userbase
- if os.name == 'posix':
- self.select_scheme("unix_user")
- else:
- self.select_scheme(os.name + "_user")
-
- self.expand_basedirs()
- self.expand_dirs()
-
- self._expand('install_dir','script_dir','build_directory','site_dirs')
- # If a non-default installation directory was specified, default the
- # script directory to match it.
- if self.script_dir is None:
- self.script_dir = self.install_dir
-
- if self.no_find_links is None:
- self.no_find_links = False
-
- # Let install_dir get set by install_lib command, which in turn
- # gets its info from the install command, and takes into account
- # --prefix and --home and all that other crud.
- self.set_undefined_options('install_lib',
- ('install_dir','install_dir')
- )
- # Likewise, set default script_dir from 'install_scripts.install_dir'
- self.set_undefined_options('install_scripts',
- ('install_dir', 'script_dir')
- )
-
- if self.user and self.install_purelib:
- self.install_dir = self.install_purelib
- self.script_dir = self.install_scripts
- # default --record from the install command
- self.set_undefined_options('install', ('record', 'record'))
- normpath = map(normalize_path, sys.path)
- self.all_site_dirs = get_site_dirs()
- if self.site_dirs is not None:
- site_dirs = [
- os.path.expanduser(s.strip()) for s in self.site_dirs.split(',')
- ]
- for d in site_dirs:
- if not os.path.isdir(d):
- log.warn("%s (in --site-dirs) does not exist", d)
- elif normalize_path(d) not in normpath:
- raise DistutilsOptionError(
- d+" (in --site-dirs) is not on sys.path"
- )
- else:
- self.all_site_dirs.append(normalize_path(d))
- if not self.editable: self.check_site_dir()
- self.index_url = self.index_url or "http://pypi.python.org/simple"
- self.shadow_path = self.all_site_dirs[:]
- for path_item in self.install_dir, normalize_path(self.script_dir):
- if path_item not in self.shadow_path:
- self.shadow_path.insert(0, path_item)
-
- if self.allow_hosts is not None:
- hosts = [s.strip() for s in self.allow_hosts.split(',')]
- else:
- hosts = ['*']
- if self.package_index is None:
- self.package_index = self.create_index(
- self.index_url, search_path = self.shadow_path, hosts=hosts,
- )
- self.local_index = Environment(self.shadow_path+sys.path)
-
- if self.find_links is not None:
- if isinstance(self.find_links, basestring):
- self.find_links = self.find_links.split()
- else:
- self.find_links = []
- if self.local_snapshots_ok:
- self.package_index.scan_egg_links(self.shadow_path+sys.path)
- if not self.no_find_links:
- self.package_index.add_find_links(self.find_links)
- self.set_undefined_options('install_lib', ('optimize','optimize'))
- if not isinstance(self.optimize,int):
- try:
- self.optimize = int(self.optimize)
- if not (0 <= self.optimize <= 2): raise ValueError
- except ValueError:
- raise DistutilsOptionError("--optimize must be 0, 1, or 2")
-
- if self.delete_conflicting and self.ignore_conflicts_at_my_risk:
- raise DistutilsOptionError(
- "Can't use both --delete-conflicting and "
- "--ignore-conflicts-at-my-risk at the same time"
- )
- if self.editable and not self.build_directory:
- raise DistutilsArgError(
- "Must specify a build directory (-b) when using --editable"
- )
- if not self.args:
- raise DistutilsArgError(
- "No urls, filenames, or requirements specified (see --help)")
-
- self.outputs = []
-
-
- def _expand_attrs(self, attrs):
- for attr in attrs:
- val = getattr(self, attr)
- if val is not None:
- if os.name == 'posix' or os.name == 'nt':
- val = os.path.expanduser(val)
- val = subst_vars(val, self.config_vars)
- setattr(self, attr, val)
-
- def expand_basedirs(self):
- """Calls `os.path.expanduser` on install_base, install_platbase and
- root."""
- self._expand_attrs(['install_base', 'install_platbase', 'root'])
-
- def expand_dirs(self):
- """Calls `os.path.expanduser` on install dirs."""
- self._expand_attrs(['install_purelib', 'install_platlib',
- 'install_lib', 'install_headers',
- 'install_scripts', 'install_data',])
-
- def run(self):
- if self.verbose != self.distribution.verbose:
- log.set_verbosity(self.verbose)
- try:
- for spec in self.args:
- self.easy_install(spec, not self.no_deps)
- if self.record:
- outputs = self.outputs
- if self.root: # strip any package prefix
- root_len = len(self.root)
- for counter in xrange(len(outputs)):
- outputs[counter] = outputs[counter][root_len:]
- from distutils import file_util
- self.execute(
- file_util.write_file, (self.record, outputs),
- "writing list of installed files to '%s'" %
- self.record
- )
- self.warn_deprecated_options()
- finally:
- log.set_verbosity(self.distribution.verbose)
-
- def pseudo_tempname(self):
- """Return a pseudo-tempname base in the install directory.
- This code is intentionally naive; if a malicious party can write to
- the target directory you're already in deep doodoo.
- """
- try:
- pid = os.getpid()
- except:
- pid = random.randint(0,sys.maxint)
- return os.path.join(self.install_dir, "test-easy-install-%s" % pid)
-
- def warn_deprecated_options(self):
- if self.delete_conflicting or self.ignore_conflicts_at_my_risk:
- log.warn(
- "Note: The -D, --delete-conflicting and"
- " --ignore-conflicts-at-my-risk no longer have any purpose"
- " and should not be used."
- )
-
- def check_site_dir(self):
- """Verify that self.install_dir is .pth-capable dir, if needed"""
-
- instdir = normalize_path(self.install_dir)
- pth_file = os.path.join(instdir,'easy-install.pth')
-
- # Is it a configured, PYTHONPATH, implicit, or explicit site dir?
- is_site_dir = instdir in self.all_site_dirs
-
- if not is_site_dir:
- # No? Then directly test whether it does .pth file processing
- is_site_dir = self.check_pth_processing()
- else:
- # make sure we can write to target dir
- testfile = self.pseudo_tempname()+'.write-test'
- test_exists = os.path.exists(testfile)
- try:
- if test_exists: os.unlink(testfile)
- open(testfile,'w').close()
- os.unlink(testfile)
- except (OSError,IOError):
- self.cant_write_to_target()
-
- if not is_site_dir and not self.multi_version:
- # Can't install non-multi to non-site dir
- raise DistutilsError(self.no_default_version_msg())
-
- if is_site_dir:
- if self.pth_file is None:
- self.pth_file = PthDistributions(pth_file, self.all_site_dirs)
- else:
- self.pth_file = None
-
- PYTHONPATH = os.environ.get('PYTHONPATH','').split(os.pathsep)
- if instdir not in map(normalize_path, filter(None,PYTHONPATH)):
- # only PYTHONPATH dirs need a site.py, so pretend it's there
- self.sitepy_installed = True
- elif self.multi_version and not os.path.exists(pth_file):
- self.sitepy_installed = True # don't need site.py in this case
- self.pth_file = None # and don't create a .pth file
- self.install_dir = instdir
-
- def cant_write_to_target(self):
- msg = """can't create or remove files in install directory
-
-The following error occurred while trying to add or remove files in the
-installation directory:
-
- %s
-
-The installation directory you specified (via --install-dir, --prefix, or
-the distutils default setting) was:
-
- %s
-""" % (sys.exc_info()[1], self.install_dir,)
-
- if not os.path.exists(self.install_dir):
- msg += """
-This directory does not currently exist. Please create it and try again, or
-choose a different installation directory (using the -d or --install-dir
-option).
-"""
- else:
- msg += """
-Perhaps your account does not have write access to this directory? If the
-installation directory is a system-owned directory, you may need to sign in
-as the administrator or "root" account. If you do not have administrative
-access to this machine, you may wish to choose a different installation
-directory, preferably one that is listed in your PYTHONPATH environment
-variable.
-
-For information on other options, you may wish to consult the
-documentation at:
-
- http://packages.python.org/distribute/easy_install.html
-
-Please make the appropriate changes for your system and try again.
-"""
- raise DistutilsError(msg)
-
-
-
-
- def check_pth_processing(self):
- """Empirically verify whether .pth files are supported in inst. dir"""
- instdir = self.install_dir
- log.info("Checking .pth file support in %s", instdir)
- pth_file = self.pseudo_tempname()+".pth"
- ok_file = pth_file+'.ok'
- ok_exists = os.path.exists(ok_file)
- try:
- if ok_exists: os.unlink(ok_file)
- dirname = os.path.dirname(ok_file)
- if not os.path.exists(dirname):
- os.makedirs(dirname)
- f = open(pth_file,'w')
- except (OSError,IOError):
- self.cant_write_to_target()
- else:
- try:
- f.write("import os;open(%r,'w').write('OK')\n" % (ok_file,))
- f.close(); f=None
- executable = sys.executable
- if os.name=='nt':
- dirname,basename = os.path.split(executable)
- alt = os.path.join(dirname,'pythonw.exe')
- if basename.lower()=='python.exe' and os.path.exists(alt):
- # use pythonw.exe to avoid opening a console window
- executable = alt
-
- from distutils.spawn import spawn
- spawn([executable,'-E','-c','pass'],0)
-
- if os.path.exists(ok_file):
- log.info(
- "TEST PASSED: %s appears to support .pth files",
- instdir
- )
- return True
- finally:
- if f: f.close()
- if os.path.exists(ok_file): os.unlink(ok_file)
- if os.path.exists(pth_file): os.unlink(pth_file)
- if not self.multi_version:
- log.warn("TEST FAILED: %s does NOT support .pth files", instdir)
- return False
-
- def install_egg_scripts(self, dist):
- """Write all the scripts for `dist`, unless scripts are excluded"""
- if not self.exclude_scripts and dist.metadata_isdir('scripts'):
- for script_name in dist.metadata_listdir('scripts'):
- self.install_script(
- dist, script_name,
- dist.get_metadata('scripts/'+script_name)
- )
- self.install_wrapper_scripts(dist)
-
- def add_output(self, path):
- if os.path.isdir(path):
- for base, dirs, files in os.walk(path):
- for filename in files:
- self.outputs.append(os.path.join(base,filename))
- else:
- self.outputs.append(path)
-
- def not_editable(self, spec):
- if self.editable:
- raise DistutilsArgError(
- "Invalid argument %r: you can't use filenames or URLs "
- "with --editable (except via the --find-links option)."
- % (spec,)
- )
-
- def check_editable(self,spec):
- if not self.editable:
- return
-
- if os.path.exists(os.path.join(self.build_directory, spec.key)):
- raise DistutilsArgError(
- "%r already exists in %s; can't do a checkout there" %
- (spec.key, self.build_directory)
- )
-
-
-
-
-
-
- def easy_install(self, spec, deps=False):
- tmpdir = tempfile.mkdtemp(prefix="easy_install-")
- download = None
- if not self.editable: self.install_site_py()
-
- try:
- if not isinstance(spec,Requirement):
- if URL_SCHEME(spec):
- # It's a url, download it to tmpdir and process
- self.not_editable(spec)
- download = self.package_index.download(spec, tmpdir)
- return self.install_item(None, download, tmpdir, deps, True)
-
- elif os.path.exists(spec):
- # Existing file or directory, just process it directly
- self.not_editable(spec)
- return self.install_item(None, spec, tmpdir, deps, True)
- else:
- spec = parse_requirement_arg(spec)
-
- self.check_editable(spec)
- dist = self.package_index.fetch_distribution(
- spec, tmpdir, self.upgrade, self.editable, not self.always_copy,
- self.local_index
- )
-
- if dist is None:
- msg = "Could not find suitable distribution for %r" % spec
- if self.always_copy:
- msg+=" (--always-copy skips system and development eggs)"
- raise DistutilsError(msg)
- elif dist.precedence==DEVELOP_DIST:
- # .egg-info dists don't need installing, just process deps
- self.process_distribution(spec, dist, deps, "Using")
- return dist
- else:
- return self.install_item(spec, dist.location, tmpdir, deps)
-
- finally:
- if os.path.exists(tmpdir):
- rmtree(tmpdir)
-
- def install_item(self, spec, download, tmpdir, deps, install_needed=False):
-
- # Installation is also needed if file in tmpdir or is not an egg
- install_needed = install_needed or self.always_copy
- install_needed = install_needed or os.path.dirname(download) == tmpdir
- install_needed = install_needed or not download.endswith('.egg')
- install_needed = install_needed or (
- self.always_copy_from is not None and
- os.path.dirname(normalize_path(download)) ==
- normalize_path(self.always_copy_from)
- )
-
- if spec and not install_needed:
- # at this point, we know it's a local .egg, we just don't know if
- # it's already installed.
- for dist in self.local_index[spec.project_name]:
- if dist.location==download:
- break
- else:
- install_needed = True # it's not in the local index
-
- log.info("Processing %s", os.path.basename(download))
-
- if install_needed:
- dists = self.install_eggs(spec, download, tmpdir)
- for dist in dists:
- self.process_distribution(spec, dist, deps)
- else:
- dists = [self.check_conflicts(self.egg_distribution(download))]
- self.process_distribution(spec, dists[0], deps, "Using")
-
- if spec is not None:
- for dist in dists:
- if dist in spec:
- return dist
-
-
-
- def select_scheme(self, name):
- """Sets the install directories by applying the install schemes."""
- # it's the caller's problem if they supply a bad name!
- scheme = INSTALL_SCHEMES[name]
- for key in SCHEME_KEYS:
- attrname = 'install_' + key
- if getattr(self, attrname) is None:
- setattr(self, attrname, scheme[key])
-
-
-
-
- def process_distribution(self, requirement, dist, deps=True, *info):
- self.update_pth(dist)
- self.package_index.add(dist)
- self.local_index.add(dist)
- if not self.editable:
- self.install_egg_scripts(dist)
- self.installed_projects[dist.key] = dist
- log.info(self.installation_report(requirement, dist, *info))
- if (dist.has_metadata('dependency_links.txt') and
- not self.no_find_links):
- self.package_index.add_find_links(
- dist.get_metadata_lines('dependency_links.txt')
- )
- if not deps and not self.always_copy:
- return
- elif requirement is not None and dist.key != requirement.key:
- log.warn("Skipping dependencies for %s", dist)
- return # XXX this is not the distribution we were looking for
- elif requirement is None or dist not in requirement:
- # if we wound up with a different version, resolve what we've got
- distreq = dist.as_requirement()
- requirement = requirement or distreq
- requirement = Requirement(
- distreq.project_name, distreq.specs, requirement.extras
- )
- log.info("Processing dependencies for %s", requirement)
- try:
- distros = WorkingSet([]).resolve(
- [requirement], self.local_index, self.easy_install
- )
- except DistributionNotFound, e:
- raise DistutilsError(
- "Could not find required distribution %s" % e.args
- )
- except VersionConflict, e:
- raise DistutilsError(
- "Installed distribution %s conflicts with requirement %s"
- % e.args
- )
- if self.always_copy or self.always_copy_from:
- # Force all the relevant distros to be copied or activated
- for dist in distros:
- if dist.key not in self.installed_projects:
- self.easy_install(dist.as_requirement())
- log.info("Finished processing dependencies for %s", requirement)
-
- def should_unzip(self, dist):
- if self.zip_ok is not None:
- return not self.zip_ok
- if dist.has_metadata('not-zip-safe'):
- return True
- if not dist.has_metadata('zip-safe'):
- return True
- return True
-
- def maybe_move(self, spec, dist_filename, setup_base):
- dst = os.path.join(self.build_directory, spec.key)
- if os.path.exists(dst):
- log.warn(
- "%r already exists in %s; build directory %s will not be kept",
- spec.key, self.build_directory, setup_base
- )
- return setup_base
- if os.path.isdir(dist_filename):
- setup_base = dist_filename
- else:
- if os.path.dirname(dist_filename)==setup_base:
- os.unlink(dist_filename) # get it out of the tmp dir
- contents = os.listdir(setup_base)
- if len(contents)==1:
- dist_filename = os.path.join(setup_base,contents[0])
- if os.path.isdir(dist_filename):
- # if the only thing there is a directory, move it instead
- setup_base = dist_filename
- ensure_directory(dst); shutil.move(setup_base, dst)
- return dst
-
- def install_wrapper_scripts(self, dist):
- if not self.exclude_scripts:
- for args in get_script_args(dist):
- self.write_script(*args)
-
-
-
- def install_script(self, dist, script_name, script_text, dev_path=None):
- """Generate a legacy script wrapper and install it"""
- spec = str(dist.as_requirement())
- is_script = is_python_script(script_text, script_name)
-
- if is_script and dev_path:
- script_text = get_script_header(script_text) + (
- "# EASY-INSTALL-DEV-SCRIPT: %(spec)r,%(script_name)r\n"
- "__requires__ = %(spec)r\n"
- "from pkg_resources import require; require(%(spec)r)\n"
- "del require\n"
- "__file__ = %(dev_path)r\n"
- "execfile(__file__)\n"
- ) % locals()
- elif is_script:
- script_text = get_script_header(script_text) + (
- "# EASY-INSTALL-SCRIPT: %(spec)r,%(script_name)r\n"
- "__requires__ = %(spec)r\n"
- "import pkg_resources\n"
- "pkg_resources.run_script(%(spec)r, %(script_name)r)\n"
- ) % locals()
- self.write_script(script_name, _to_ascii(script_text), 'b')
-
- def write_script(self, script_name, contents, mode="t", blockers=()):
- """Write an executable file to the scripts directory"""
- self.delete_blockers( # clean up old .py/.pyw w/o a script
- [os.path.join(self.script_dir,x) for x in blockers])
- log.info("Installing %s script to %s", script_name, self.script_dir)
- target = os.path.join(self.script_dir, script_name)
- self.add_output(target)
-
- if not self.dry_run:
- ensure_directory(target)
- f = open(target,"w"+mode)
- f.write(contents)
- f.close()
- chmod(target,0755)
-
-
-
-
- def install_eggs(self, spec, dist_filename, tmpdir):
- # .egg dirs or files are already built, so just return them
- if dist_filename.lower().endswith('.egg'):
- return [self.install_egg(dist_filename, tmpdir)]
- elif dist_filename.lower().endswith('.exe'):
- return [self.install_exe(dist_filename, tmpdir)]
-
- # Anything else, try to extract and build
- setup_base = tmpdir
- if os.path.isfile(dist_filename) and not dist_filename.endswith('.py'):
- unpack_archive(dist_filename, tmpdir, self.unpack_progress)
- elif os.path.isdir(dist_filename):
- setup_base = os.path.abspath(dist_filename)
-
- if (setup_base.startswith(tmpdir) # something we downloaded
- and self.build_directory and spec is not None
- ):
- setup_base = self.maybe_move(spec, dist_filename, setup_base)
-
- # Find the setup.py file
- setup_script = os.path.join(setup_base, 'setup.py')
-
- if not os.path.exists(setup_script):
- setups = glob(os.path.join(setup_base, '*', 'setup.py'))
- if not setups:
- raise DistutilsError(
- "Couldn't find a setup script in %s" % os.path.abspath(dist_filename)
- )
- if len(setups)>1:
- raise DistutilsError(
- "Multiple setup scripts in %s" % os.path.abspath(dist_filename)
- )
- setup_script = setups[0]
-
- # Now run it, and return the result
- if self.editable:
- log.info(self.report_editable(spec, setup_script))
- return []
- else:
- return self.build_and_install(setup_script, setup_base)
-
- def egg_distribution(self, egg_path):
- if os.path.isdir(egg_path):
- metadata = PathMetadata(egg_path,os.path.join(egg_path,'EGG-INFO'))
- else:
- metadata = EggMetadata(zipimport.zipimporter(egg_path))
- return Distribution.from_filename(egg_path,metadata=metadata)
-
- def install_egg(self, egg_path, tmpdir):
- destination = os.path.join(self.install_dir,os.path.basename(egg_path))
- destination = os.path.abspath(destination)
- if not self.dry_run:
- ensure_directory(destination)
-
- dist = self.egg_distribution(egg_path)
- self.check_conflicts(dist)
- if not samefile(egg_path, destination):
- if os.path.isdir(destination) and not os.path.islink(destination):
- dir_util.remove_tree(destination, dry_run=self.dry_run)
- elif os.path.exists(destination):
- self.execute(os.unlink,(destination,),"Removing "+destination)
- uncache_zipdir(destination)
- if os.path.isdir(egg_path):
- if egg_path.startswith(tmpdir):
- f,m = shutil.move, "Moving"
- else:
- f,m = shutil.copytree, "Copying"
- elif self.should_unzip(dist):
- self.mkpath(destination)
- f,m = self.unpack_and_compile, "Extracting"
- elif egg_path.startswith(tmpdir):
- f,m = shutil.move, "Moving"
- else:
- f,m = shutil.copy2, "Copying"
-
- self.execute(f, (egg_path, destination),
- (m+" %s to %s") %
- (os.path.basename(egg_path),os.path.dirname(destination)))
-
- self.add_output(destination)
- return self.egg_distribution(destination)
-
- def install_exe(self, dist_filename, tmpdir):
- # See if it's valid, get data
- cfg = extract_wininst_cfg(dist_filename)
- if cfg is None:
- raise DistutilsError(
- "%s is not a valid distutils Windows .exe" % dist_filename
- )
- # Create a dummy distribution object until we build the real distro
- dist = Distribution(None,
- project_name=cfg.get('metadata','name'),
- version=cfg.get('metadata','version'), platform=get_platform()
- )
-
- # Convert the .exe to an unpacked egg
- egg_path = dist.location = os.path.join(tmpdir, dist.egg_name()+'.egg')
- egg_tmp = egg_path+'.tmp'
- egg_info = os.path.join(egg_tmp, 'EGG-INFO')
- pkg_inf = os.path.join(egg_info, 'PKG-INFO')
- ensure_directory(pkg_inf) # make sure EGG-INFO dir exists
- dist._provider = PathMetadata(egg_tmp, egg_info) # XXX
- self.exe_to_egg(dist_filename, egg_tmp)
-
- # Write EGG-INFO/PKG-INFO
- if not os.path.exists(pkg_inf):
- f = open(pkg_inf,'w')
- f.write('Metadata-Version: 1.0\n')
- for k,v in cfg.items('metadata'):
- if k<>'target_version':
- f.write('%s: %s\n' % (k.replace('_','-').title(), v))
- f.close()
- script_dir = os.path.join(egg_info,'scripts')
- self.delete_blockers( # delete entry-point scripts to avoid duping
- [os.path.join(script_dir,args[0]) for args in get_script_args(dist)]
- )
- # Build .egg file from tmpdir
- bdist_egg.make_zipfile(
- egg_path, egg_tmp, verbose=self.verbose, dry_run=self.dry_run
- )
- # install the .egg
- return self.install_egg(egg_path, tmpdir)
-
- def exe_to_egg(self, dist_filename, egg_tmp):
- """Extract a bdist_wininst to the directories an egg would use"""
- # Check for .pth file and set up prefix translations
- prefixes = get_exe_prefixes(dist_filename)
- to_compile = []
- native_libs = []
- top_level = {}
- def process(src,dst):
- s = src.lower()
- for old,new in prefixes:
- if s.startswith(old):
- src = new+src[len(old):]
- parts = src.split('/')
- dst = os.path.join(egg_tmp, *parts)
- dl = dst.lower()
- if dl.endswith('.pyd') or dl.endswith('.dll'):
- parts[-1] = bdist_egg.strip_module(parts[-1])
- top_level[os.path.splitext(parts[0])[0]] = 1
- native_libs.append(src)
- elif dl.endswith('.py') and old!='SCRIPTS/':
- top_level[os.path.splitext(parts[0])[0]] = 1
- to_compile.append(dst)
- return dst
- if not src.endswith('.pth'):
- log.warn("WARNING: can't process %s", src)
- return None
- # extract, tracking .pyd/.dll->native_libs and .py -> to_compile
- unpack_archive(dist_filename, egg_tmp, process)
- stubs = []
- for res in native_libs:
- if res.lower().endswith('.pyd'): # create stubs for .pyd's
- parts = res.split('/')
- resource = parts[-1]
- parts[-1] = bdist_egg.strip_module(parts[-1])+'.py'
- pyfile = os.path.join(egg_tmp, *parts)
- to_compile.append(pyfile); stubs.append(pyfile)
- bdist_egg.write_stub(resource, pyfile)
- self.byte_compile(to_compile) # compile .py's
- bdist_egg.write_safety_flag(os.path.join(egg_tmp,'EGG-INFO'),
- bdist_egg.analyze_egg(egg_tmp, stubs)) # write zip-safety flag
-
- for name in 'top_level','native_libs':
- if locals()[name]:
- txt = os.path.join(egg_tmp, 'EGG-INFO', name+'.txt')
- if not os.path.exists(txt):
- f = open(txt,'w')
- f.write('\n'.join(locals()[name])+'\n')
- f.close()
-
- def check_conflicts(self, dist):
- """Verify that there are no conflicting "old-style" packages"""
-
- return dist # XXX temporarily disable until new strategy is stable
- from imp import find_module, get_suffixes
- from glob import glob
-
- blockers = []
- names = dict.fromkeys(dist._get_metadata('top_level.txt')) # XXX private attr
-
- exts = {'.pyc':1, '.pyo':1} # get_suffixes() might leave one out
- for ext,mode,typ in get_suffixes():
- exts[ext] = 1
-
- for path,files in expand_paths([self.install_dir]+self.all_site_dirs):
- for filename in files:
- base,ext = os.path.splitext(filename)
- if base in names:
- if not ext:
- # no extension, check for package
- try:
- f, filename, descr = find_module(base, [path])
- except ImportError:
- continue
- else:
- if f: f.close()
- if filename not in blockers:
- blockers.append(filename)
- elif ext in exts and base!='site': # XXX ugh
- blockers.append(os.path.join(path,filename))
- if blockers:
- self.found_conflicts(dist, blockers)
-
- return dist
-
- def found_conflicts(self, dist, blockers):
- if self.delete_conflicting:
- log.warn("Attempting to delete conflicting packages:")
- return self.delete_blockers(blockers)
-
- msg = """\
--------------------------------------------------------------------------
-CONFLICT WARNING:
-
-The following modules or packages have the same names as modules or
-packages being installed, and will be *before* the installed packages in
-Python's search path. You MUST remove all of the relevant files and
-directories before you will be able to use the package(s) you are
-installing:
-
- %s
-
-""" % '\n '.join(blockers)
-
- if self.ignore_conflicts_at_my_risk:
- msg += """\
-(Note: you can run EasyInstall on '%s' with the
---delete-conflicting option to attempt deletion of the above files
-and/or directories.)
-""" % dist.project_name
- else:
- msg += """\
-Note: you can attempt this installation again with EasyInstall, and use
-either the --delete-conflicting (-D) option or the
---ignore-conflicts-at-my-risk option, to either delete the above files
-and directories, or to ignore the conflicts, respectively. Note that if
-you ignore the conflicts, the installed package(s) may not work.
-"""
- msg += """\
--------------------------------------------------------------------------
-"""
- sys.stderr.write(msg)
- sys.stderr.flush()
- if not self.ignore_conflicts_at_my_risk:
- raise DistutilsError("Installation aborted due to conflicts")
-
- def installation_report(self, req, dist, what="Installed"):
- """Helpful installation message for display to package users"""
- msg = "\n%(what)s %(eggloc)s%(extras)s"
- if self.multi_version and not self.no_report:
- msg += """
-
-Because this distribution was installed --multi-version, before you can
-import modules from this package in an application, you will need to
-'import pkg_resources' and then use a 'require()' call similar to one of
-these examples, in order to select the desired version:
-
- pkg_resources.require("%(name)s") # latest installed version
- pkg_resources.require("%(name)s==%(version)s") # this exact version
- pkg_resources.require("%(name)s>=%(version)s") # this version or higher
-"""
- if self.install_dir not in map(normalize_path,sys.path):
- msg += """
-
-Note also that the installation directory must be on sys.path at runtime for
-this to work. (e.g. by being the application's script directory, by being on
-PYTHONPATH, or by being added to sys.path by your code.)
-"""
- eggloc = dist.location
- name = dist.project_name
- version = dist.version
- extras = '' # TODO: self.report_extras(req, dist)
- return msg % locals()
-
- def report_editable(self, spec, setup_script):
- dirname = os.path.dirname(setup_script)
- python = sys.executable
- return """\nExtracted editable version of %(spec)s to %(dirname)s
-
-If it uses setuptools in its setup script, you can activate it in
-"development" mode by going to that directory and running::
-
- %(python)s setup.py develop
-
-See the setuptools documentation for the "develop" command for more info.
-""" % locals()
-
- def run_setup(self, setup_script, setup_base, args):
- sys.modules.setdefault('distutils.command.bdist_egg', bdist_egg)
- sys.modules.setdefault('distutils.command.egg_info', egg_info)
-
- args = list(args)
- if self.verbose>2:
- v = 'v' * (self.verbose - 1)
- args.insert(0,'-'+v)
- elif self.verbose<2:
- args.insert(0,'-q')
- if self.dry_run:
- args.insert(0,'-n')
- log.info(
- "Running %s %s", setup_script[len(setup_base)+1:], ' '.join(args)
- )
- try:
- run_setup(setup_script, args)
- except SystemExit, v:
- raise DistutilsError("Setup script exited with %s" % (v.args[0],))
-
- def build_and_install(self, setup_script, setup_base):
- args = ['bdist_egg', '--dist-dir']
- dist_dir = tempfile.mkdtemp(
- prefix='egg-dist-tmp-', dir=os.path.dirname(setup_script)
- )
- try:
- args.append(dist_dir)
- self.run_setup(setup_script, setup_base, args)
- all_eggs = Environment([dist_dir])
- eggs = []
- for key in all_eggs:
- for dist in all_eggs[key]:
- eggs.append(self.install_egg(dist.location, setup_base))
- if not eggs and not self.dry_run:
- log.warn("No eggs found in %s (setup script problem?)",
- dist_dir)
- return eggs
- finally:
- rmtree(dist_dir)
- log.set_verbosity(self.verbose) # restore our log verbosity
-
- def update_pth(self,dist):
- if self.pth_file is None:
- return
-
- for d in self.pth_file[dist.key]: # drop old entries
- if self.multi_version or d.location != dist.location:
- log.info("Removing %s from easy-install.pth file", d)
- self.pth_file.remove(d)
- if d.location in self.shadow_path:
- self.shadow_path.remove(d.location)
-
- if not self.multi_version:
- if dist.location in self.pth_file.paths:
- log.info(
- "%s is already the active version in easy-install.pth",
- dist
- )
- else:
- log.info("Adding %s to easy-install.pth file", dist)
- self.pth_file.add(dist) # add new entry
- if dist.location not in self.shadow_path:
- self.shadow_path.append(dist.location)
-
- if not self.dry_run:
-
- self.pth_file.save()
- if dist.key=='distribute':
- # Ensure that setuptools itself never becomes unavailable!
- # XXX should this check for latest version?
- filename = os.path.join(self.install_dir,'setuptools.pth')
- if os.path.islink(filename): os.unlink(filename)
- f = open(filename, 'wt')
- f.write(self.pth_file.make_relative(dist.location)+'\n')
- f.close()
-
- def unpack_progress(self, src, dst):
- # Progress filter for unpacking
- log.debug("Unpacking %s to %s", src, dst)
- return dst # only unpack-and-compile skips files for dry run
-
- def unpack_and_compile(self, egg_path, destination):
- to_compile = []; to_chmod = []
-
- def pf(src,dst):
- if dst.endswith('.py') and not src.startswith('EGG-INFO/'):
- to_compile.append(dst)
- to_chmod.append(dst)
- elif dst.endswith('.dll') or dst.endswith('.so'):
- to_chmod.append(dst)
- self.unpack_progress(src,dst)
- return not self.dry_run and dst or None
-
- unpack_archive(egg_path, destination, pf)
- self.byte_compile(to_compile)
- if not self.dry_run:
- for f in to_chmod:
- mode = ((os.stat(f)[stat.ST_MODE]) | 0555) & 07755
- chmod(f, mode)
-
- def byte_compile(self, to_compile):
- if _dont_write_bytecode:
- self.warn('byte-compiling is disabled, skipping.')
- return
-
- from distutils.util import byte_compile
- try:
- # try to make the byte compile messages quieter
- log.set_verbosity(self.verbose - 1)
-
- byte_compile(to_compile, optimize=0, force=1, dry_run=self.dry_run)
- if self.optimize:
- byte_compile(
- to_compile, optimize=self.optimize, force=1,
- dry_run=self.dry_run
- )
- finally:
- log.set_verbosity(self.verbose) # restore original verbosity
-
-
-
-
-
-
-
-
- def no_default_version_msg(self):
- return """bad install directory or PYTHONPATH
-
-You are attempting to install a package to a directory that is not
-on PYTHONPATH and which Python does not read ".pth" files from. The
-installation directory you specified (via --install-dir, --prefix, or
-the distutils default setting) was:
-
- %s
-
-and your PYTHONPATH environment variable currently contains:
-
- %r
-
-Here are some of your options for correcting the problem:
-
-* You can choose a different installation directory, i.e., one that is
- on PYTHONPATH or supports .pth files
-
-* You can add the installation directory to the PYTHONPATH environment
- variable. (It must then also be on PYTHONPATH whenever you run
- Python and want to use the package(s) you are installing.)
-
-* You can set up the installation directory to support ".pth" files by
- using one of the approaches described here:
-
- http://packages.python.org/distribute/easy_install.html#custom-installation-locations
-
-Please make the appropriate changes for your system and try again.""" % (
- self.install_dir, os.environ.get('PYTHONPATH','')
- )
-
-
-
-
-
-
-
-
-
-
- def install_site_py(self):
- """Make sure there's a site.py in the target dir, if needed"""
-
- if self.sitepy_installed:
- return # already did it, or don't need to
-
- sitepy = os.path.join(self.install_dir, "site.py")
- source = resource_string(Requirement.parse("distribute"), "site.py")
- current = ""
-
- if os.path.exists(sitepy):
- log.debug("Checking existing site.py in %s", self.install_dir)
- f = open(sitepy,'rb')
- current = f.read()
- # we want str, not bytes
- if sys.version_info >= (3,):
- current = current.decode()
-
- f.close()
- if not current.startswith('def __boot():'):
- raise DistutilsError(
- "%s is not a setuptools-generated site.py; please"
- " remove it." % sitepy
- )
-
- if current != source:
- log.info("Creating %s", sitepy)
- if not self.dry_run:
- ensure_directory(sitepy)
- f = open(sitepy,'wb')
- f.write(source)
- f.close()
- self.byte_compile([sitepy])
-
- self.sitepy_installed = True
-
-
-
-
- def create_home_path(self):
- """Create directories under ~."""
- if not self.user:
- return
- home = convert_path(os.path.expanduser("~"))
- for name, path in self.config_vars.iteritems():
- if path.startswith(home) and not os.path.isdir(path):
- self.debug_print("os.makedirs('%s', 0700)" % path)
- os.makedirs(path, 0700)
-
-
-
-
-
-
-
- INSTALL_SCHEMES = dict(
- posix = dict(
- install_dir = '$base/lib/python$py_version_short/site-packages',
- script_dir = '$base/bin',
- ),
- )
-
- DEFAULT_SCHEME = dict(
- install_dir = '$base/Lib/site-packages',
- script_dir = '$base/Scripts',
- )
-
- def _expand(self, *attrs):
- config_vars = self.get_finalized_command('install').config_vars
-
- if self.prefix:
- # Set default install_dir/scripts from --prefix
- config_vars = config_vars.copy()
- config_vars['base'] = self.prefix
- scheme = self.INSTALL_SCHEMES.get(os.name,self.DEFAULT_SCHEME)
- for attr,val in scheme.items():
- if getattr(self,attr,None) is None:
- setattr(self,attr,val)
-
- from distutils.util import subst_vars
- for attr in attrs:
- val = getattr(self, attr)
- if val is not None:
- val = subst_vars(val, config_vars)
- if os.name == 'posix':
- val = os.path.expanduser(val)
- setattr(self, attr, val)
-
-
-
-
-
-
-
-
-
-def get_site_dirs():
- # return a list of 'site' dirs
- sitedirs = filter(None,os.environ.get('PYTHONPATH','').split(os.pathsep))
- prefixes = [sys.prefix]
- if sys.exec_prefix != sys.prefix:
- prefixes.append(sys.exec_prefix)
- for prefix in prefixes:
- if prefix:
- if sys.platform in ('os2emx', 'riscos'):
- sitedirs.append(os.path.join(prefix, "Lib", "site-packages"))
- elif os.sep == '/':
- sitedirs.extend([os.path.join(prefix,
- "lib",
- "python" + sys.version[:3],
- "site-packages"),
- os.path.join(prefix, "lib", "site-python")])
- else:
- sitedirs.extend(
- [prefix, os.path.join(prefix, "lib", "site-packages")]
- )
- if sys.platform == 'darwin':
- # for framework builds *only* we add the standard Apple
- # locations. Currently only per-user, but /Library and
- # /Network/Library could be added too
- if 'Python.framework' in prefix:
- home = os.environ.get('HOME')
- if home:
- sitedirs.append(
- os.path.join(home,
- 'Library',
- 'Python',
- sys.version[:3],
- 'site-packages'))
- for plat_specific in (0,1):
- site_lib = get_python_lib(plat_specific)
- if site_lib not in sitedirs: sitedirs.append(site_lib)
-
- if HAS_USER_SITE:
- sitedirs.append(site.USER_SITE)
-
- sitedirs = map(normalize_path, sitedirs)
-
- return sitedirs
-
-
-def expand_paths(inputs):
- """Yield sys.path directories that might contain "old-style" packages"""
-
- seen = {}
-
- for dirname in inputs:
- dirname = normalize_path(dirname)
- if dirname in seen:
- continue
-
- seen[dirname] = 1
- if not os.path.isdir(dirname):
- continue
-
- files = os.listdir(dirname)
- yield dirname, files
-
- for name in files:
- if not name.endswith('.pth'):
- # We only care about the .pth files
- continue
- if name in ('easy-install.pth','setuptools.pth'):
- # Ignore .pth files that we control
- continue
-
- # Read the .pth file
- f = open(os.path.join(dirname,name))
- lines = list(yield_lines(f))
- f.close()
-
- # Yield existing non-dupe, non-import directory lines from it
- for line in lines:
- if not line.startswith("import"):
- line = normalize_path(line.rstrip())
- if line not in seen:
- seen[line] = 1
- if not os.path.isdir(line):
- continue
- yield line, os.listdir(line)
-
-
-def extract_wininst_cfg(dist_filename):
- """Extract configuration data from a bdist_wininst .exe
-
- Returns a ConfigParser.RawConfigParser, or None
- """
- f = open(dist_filename,'rb')
- try:
- endrec = zipfile._EndRecData(f)
- if endrec is None:
- return None
-
- prepended = (endrec[9] - endrec[5]) - endrec[6]
- if prepended < 12: # no wininst data here
- return None
- f.seek(prepended-12)
-
- import struct, StringIO, ConfigParser
- tag, cfglen, bmlen = struct.unpack("<iii",f.read(12))
- if tag not in (0x1234567A, 0x1234567B):
- return None # not a valid tag
-
- f.seek(prepended-(12+cfglen))
- cfg = ConfigParser.RawConfigParser({'version':'','target_version':''})
- try:
- part = f.read(cfglen)
- # part is in bytes, but we need to read up to the first null
- # byte.
- if sys.version_info >= (2,6):
- null_byte = bytes([0])
- else:
- null_byte = chr(0)
- config = part.split(null_byte, 1)[0]
- # Now the config is in bytes, but on Python 3, it must be
- # unicode for the RawConfigParser, so decode it. Is this the
- # right encoding?
- config = config.decode('ascii')
- cfg.readfp(StringIO.StringIO(config))
- except ConfigParser.Error:
- return None
- if not cfg.has_section('metadata') or not cfg.has_section('Setup'):
- return None
- return cfg
-
- finally:
- f.close()
-
-
-
-
-
-
-
-
-def get_exe_prefixes(exe_filename):
- """Get exe->egg path translations for a given .exe file"""
-
- prefixes = [
- ('PURELIB/', ''), ('PLATLIB/pywin32_system32', ''),
- ('PLATLIB/', ''),
- ('SCRIPTS/', 'EGG-INFO/scripts/'),
- ('DATA/LIB/site-packages', ''),
- ]
- z = zipfile.ZipFile(exe_filename)
- try:
- for info in z.infolist():
- name = info.filename
- parts = name.split('/')
- if len(parts)==3 and parts[2]=='PKG-INFO':
- if parts[1].endswith('.egg-info'):
- prefixes.insert(0,('/'.join(parts[:2]), 'EGG-INFO/'))
- break
- if len(parts)<>2 or not name.endswith('.pth'):
- continue
- if name.endswith('-nspkg.pth'):
- continue
- if parts[0].upper() in ('PURELIB','PLATLIB'):
- for pth in yield_lines(z.read(name)):
- pth = pth.strip().replace('\\','/')
- if not pth.startswith('import'):
- prefixes.append((('%s/%s/' % (parts[0],pth)), ''))
- finally:
- z.close()
- prefixes = [(x.lower(),y) for x, y in prefixes]
- prefixes.sort(); prefixes.reverse()
- return prefixes
-
-
-def parse_requirement_arg(spec):
- try:
- return Requirement.parse(spec)
- except ValueError:
- raise DistutilsError(
- "Not a URL, existing file, or requirement spec: %r" % (spec,)
- )
-
-class PthDistributions(Environment):
- """A .pth file with Distribution paths in it"""
-
- dirty = False
-
- def __init__(self, filename, sitedirs=()):
- self.filename = filename; self.sitedirs=map(normalize_path, sitedirs)
- self.basedir = normalize_path(os.path.dirname(self.filename))
- self._load(); Environment.__init__(self, [], None, None)
- for path in yield_lines(self.paths):
- map(self.add, find_distributions(path, True))
-
- def _load(self):
- self.paths = []
- saw_import = False
- seen = dict.fromkeys(self.sitedirs)
- if os.path.isfile(self.filename):
- f = open(self.filename,'rt')
- for line in f:
- if line.startswith('import'):
- saw_import = True
- continue
- path = line.rstrip()
- self.paths.append(path)
- if not path.strip() or path.strip().startswith('#'):
- continue
- # skip non-existent paths, in case somebody deleted a package
- # manually, and duplicate paths as well
- path = self.paths[-1] = normalize_path(
- os.path.join(self.basedir,path)
- )
- if not os.path.exists(path) or path in seen:
- self.paths.pop() # skip it
- self.dirty = True # we cleaned up, so we're dirty now :)
- continue
- seen[path] = 1
- f.close()
-
- if self.paths and not saw_import:
- self.dirty = True # ensure anything we touch has import wrappers
- while self.paths and not self.paths[-1].strip():
- self.paths.pop()
-
- def save(self):
- """Write changed .pth file back to disk"""
- if not self.dirty:
- return
-
- data = '\n'.join(map(self.make_relative,self.paths))
- if data:
- log.debug("Saving %s", self.filename)
- data = (
- "import sys; sys.__plen = len(sys.path)\n"
- "%s\n"
- "import sys; new=sys.path[sys.__plen:];"
- " del sys.path[sys.__plen:];"
- " p=getattr(sys,'__egginsert',0); sys.path[p:p]=new;"
- " sys.__egginsert = p+len(new)\n"
- ) % data
-
- if os.path.islink(self.filename):
- os.unlink(self.filename)
- f = open(self.filename,'wt')
- f.write(data); f.close()
-
- elif os.path.exists(self.filename):
- log.debug("Deleting empty %s", self.filename)
- os.unlink(self.filename)
-
- self.dirty = False
-
- def add(self,dist):
- """Add `dist` to the distribution map"""
- if (dist.location not in self.paths and (
- dist.location not in self.sitedirs or
- dist.location == os.getcwd() #account for '.' being in PYTHONPATH
- )):
- self.paths.append(dist.location)
- self.dirty = True
- Environment.add(self,dist)
-
- def remove(self,dist):
- """Remove `dist` from the distribution map"""
- while dist.location in self.paths:
- self.paths.remove(dist.location); self.dirty = True
- Environment.remove(self,dist)
-
-
- def make_relative(self,path):
- npath, last = os.path.split(normalize_path(path))
- baselen = len(self.basedir)
- parts = [last]
- sep = os.altsep=='/' and '/' or os.sep
- while len(npath)>=baselen:
- if npath==self.basedir:
- parts.append(os.curdir)
- parts.reverse()
- return sep.join(parts)
- npath, last = os.path.split(npath)
- parts.append(last)
- else:
- return path
-
-def get_script_header(script_text, executable=sys_executable, wininst=False):
- """Create a #! line, getting options (if any) from script_text"""
- from distutils.command.build_scripts import first_line_re
-
- # first_line_re in Python >=3.1.4 and >=3.2.1 is a bytes pattern.
- if not isinstance(first_line_re.pattern, str):
- first_line_re = re.compile(first_line_re.pattern.decode())
-
- first = (script_text+'\n').splitlines()[0]
- match = first_line_re.match(first)
- options = ''
- if match:
- options = match.group(1) or ''
- if options: options = ' '+options
- if wininst:
- executable = "python.exe"
- else:
- executable = nt_quote_arg(executable)
- hdr = "#!%(executable)s%(options)s\n" % locals()
- if not isascii(hdr):
- # Non-ascii path to sys.executable, use -x to prevent warnings
- if options:
- if options.strip().startswith('-'):
- options = ' -x'+options.strip()[1:]
- # else: punt, we can't do it, let the warning happen anyway
- else:
- options = ' -x'
- executable = fix_jython_executable(executable, options)
- hdr = "#!%(executable)s%(options)s\n" % locals()
- return hdr
-
-def auto_chmod(func, arg, exc):
- if func is os.remove and os.name=='nt':
- chmod(arg, stat.S_IWRITE)
- return func(arg)
- exc = sys.exc_info()
- raise exc[0], (exc[1][0], exc[1][1] + (" %s %s" % (func,arg)))
-
-def uncache_zipdir(path):
- """Ensure that the importer caches dont have stale info for `path`"""
- from zipimport import _zip_directory_cache as zdc
- _uncache(path, zdc)
- _uncache(path, sys.path_importer_cache)
-
-def _uncache(path, cache):
- if path in cache:
- del cache[path]
- else:
- path = normalize_path(path)
- for p in cache:
- if normalize_path(p)==path:
- del cache[p]
- return
-
-def is_python(text, filename='<string>'):
- "Is this string a valid Python script?"
- try:
- compile(text, filename, 'exec')
- except (SyntaxError, TypeError):
- return False
- else:
- return True
-
-def is_sh(executable):
- """Determine if the specified executable is a .sh (contains a #! line)"""
- try:
- fp = open(executable)
- magic = fp.read(2)
- fp.close()
- except (OSError,IOError): return executable
- return magic == '#!'
-
-def nt_quote_arg(arg):
- """Quote a command line argument according to Windows parsing rules"""
-
- result = []
- needquote = False
- nb = 0
-
- needquote = (" " in arg) or ("\t" in arg)
- if needquote:
- result.append('"')
-
- for c in arg:
- if c == '\\':
- nb += 1
- elif c == '"':
- # double preceding backslashes, then add a \"
- result.append('\\' * (nb*2) + '\\"')
- nb = 0
- else:
- if nb:
- result.append('\\' * nb)
- nb = 0
- result.append(c)
-
- if nb:
- result.append('\\' * nb)
-
- if needquote:
- result.append('\\' * nb) # double the trailing backslashes
- result.append('"')
-
- return ''.join(result)
-
-
-
-
-
-
-
-
-
-def is_python_script(script_text, filename):
- """Is this text, as a whole, a Python script? (as opposed to shell/bat/etc.
- """
- if filename.endswith('.py') or filename.endswith('.pyw'):
- return True # extension says it's Python
- if is_python(script_text, filename):
- return True # it's syntactically valid Python
- if script_text.startswith('#!'):
- # It begins with a '#!' line, so check if 'python' is in it somewhere
- return 'python' in script_text.splitlines()[0].lower()
-
- return False # Not any Python I can recognize
-
-try:
- from os import chmod as _chmod
-except ImportError:
- # Jython compatibility
- def _chmod(*args): pass
-
-def chmod(path, mode):
- log.debug("changing mode of %s to %o", path, mode)
- try:
- _chmod(path, mode)
- except os.error, e:
- log.debug("chmod failed: %s", e)
-
-def fix_jython_executable(executable, options):
- if sys.platform.startswith('java') and is_sh(executable):
- # Workaround Jython's sys.executable being a .sh (an invalid
- # shebang line interpreter)
- if options:
- # Can't apply the workaround, leave it broken
- log.warn("WARNING: Unable to adapt shebang line for Jython,"
- " the following script is NOT executable\n"
- " see http://bugs.jython.org/issue1112 for"
- " more information.")
- else:
- return '/usr/bin/env %s' % executable
- return executable
-
-
-def get_script_args(dist, executable=sys_executable, wininst=False):
- """Yield write_script() argument tuples for a distribution's entrypoints"""
- spec = str(dist.as_requirement())
- header = get_script_header("", executable, wininst)
- for group in 'console_scripts', 'gui_scripts':
- for name, ep in dist.get_entry_map(group).items():
- script_text = (
- "# EASY-INSTALL-ENTRY-SCRIPT: %(spec)r,%(group)r,%(name)r\n"
- "__requires__ = %(spec)r\n"
- "import sys\n"
- "from pkg_resources import load_entry_point\n"
- "\n"
- "if __name__ == '__main__':"
- "\n"
- " sys.exit(\n"
- " load_entry_point(%(spec)r, %(group)r, %(name)r)()\n"
- " )\n"
- ) % locals()
- if sys.platform=='win32' or wininst:
- # On Windows/wininst, add a .py extension and an .exe launcher
- if group=='gui_scripts':
- ext, launcher = '-script.pyw', 'gui.exe'
- old = ['.pyw']
- new_header = re.sub('(?i)python.exe','pythonw.exe',header)
- else:
- ext, launcher = '-script.py', 'cli.exe'
- old = ['.py','.pyc','.pyo']
- new_header = re.sub('(?i)pythonw.exe','python.exe',header)
- if is_64bit():
- launcher = launcher.replace(".", "-64.")
- else:
- launcher = launcher.replace(".", "-32.")
- if os.path.exists(new_header[2:-1]) or sys.platform!='win32':
- hdr = new_header
- else:
- hdr = header
- yield (name+ext, hdr+script_text, 't', [name+x for x in old])
- yield (
- name+'.exe', resource_string('setuptools', launcher),
- 'b' # write in binary mode
- )
- else:
- # On other platforms, we assume the right thing to do is to
- # just write the stub with no extension.
- yield (name, header+script_text)
-
-def rmtree(path, ignore_errors=False, onerror=auto_chmod):
- """Recursively delete a directory tree.
-
- This code is taken from the Python 2.4 version of 'shutil', because
- the 2.3 version doesn't really work right.
- """
- if ignore_errors:
- def onerror(*args):
- pass
- elif onerror is None:
- def onerror(*args):
- raise
- names = []
- try:
- names = os.listdir(path)
- except os.error, err:
- onerror(os.listdir, path, sys.exc_info())
- for name in names:
- fullname = os.path.join(path, name)
- try:
- mode = os.lstat(fullname).st_mode
- except os.error:
- mode = 0
- if stat.S_ISDIR(mode):
- rmtree(fullname, ignore_errors, onerror)
- else:
- try:
- os.remove(fullname)
- except os.error, err:
- onerror(os.remove, fullname, sys.exc_info())
- try:
- os.rmdir(path)
- except os.error:
- onerror(os.rmdir, path, sys.exc_info())
-
-def bootstrap():
- # This function is called when setuptools*.egg is run using /bin/sh
- import setuptools; argv0 = os.path.dirname(setuptools.__path__[0])
- sys.argv[0] = argv0; sys.argv.append(argv0); main()
-
-def main(argv=None, **kw):
- from setuptools import setup
- from setuptools.dist import Distribution
- import distutils.core
-
- USAGE = """\
-usage: %(script)s [options] requirement_or_url ...
- or: %(script)s --help
-"""
-
- def gen_usage (script_name):
- script = os.path.basename(script_name)
- return USAGE % vars()
-
- def with_ei_usage(f):
- old_gen_usage = distutils.core.gen_usage
- try:
- distutils.core.gen_usage = gen_usage
- return f()
- finally:
- distutils.core.gen_usage = old_gen_usage
-
- class DistributionWithoutHelpCommands(Distribution):
- common_usage = ""
-
- def _show_help(self,*args,**kw):
- with_ei_usage(lambda: Distribution._show_help(self,*args,**kw))
-
- def find_config_files(self):
- files = Distribution.find_config_files(self)
- if 'setup.cfg' in files:
- files.remove('setup.cfg')
- return files
-
- if argv is None:
- argv = sys.argv[1:]
-
- with_ei_usage(lambda:
- setup(
- script_args = ['-q','easy_install', '-v']+argv,
- script_name = sys.argv[0] or 'easy_install',
- distclass=DistributionWithoutHelpCommands, **kw
- )
- )
-
-
-
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/egg_info.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/egg_info.py
deleted file mode 100644
index 46cdf4e..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/egg_info.py
+++ /dev/null
@@ -1,457 +0,0 @@
-"""setuptools.command.egg_info
-
-Create a distribution's .egg-info directory and contents"""
-
-# This module should be kept compatible with Python 2.3
-import os, re, sys
-from setuptools import Command
-from distutils.errors import *
-from distutils import log
-from setuptools.command.sdist import sdist
-from distutils.util import convert_path
-from distutils.filelist import FileList
-from pkg_resources import parse_requirements, safe_name, parse_version, \
- safe_version, yield_lines, EntryPoint, iter_entry_points, to_filename
-from sdist import walk_revctrl
-
-class egg_info(Command):
- description = "create a distribution's .egg-info directory"
-
- user_options = [
- ('egg-base=', 'e', "directory containing .egg-info directories"
- " (default: top of the source tree)"),
- ('tag-svn-revision', 'r',
- "Add subversion revision ID to version number"),
- ('tag-date', 'd', "Add date stamp (e.g. 20050528) to version number"),
- ('tag-build=', 'b', "Specify explicit tag to add to version number"),
- ('no-svn-revision', 'R',
- "Don't add subversion revision ID [default]"),
- ('no-date', 'D', "Don't include date stamp [default]"),
- ]
-
- boolean_options = ['tag-date', 'tag-svn-revision']
- negative_opt = {'no-svn-revision': 'tag-svn-revision',
- 'no-date': 'tag-date'}
-
-
-
-
-
-
-
- def initialize_options(self):
- self.egg_name = None
- self.egg_version = None
- self.egg_base = None
- self.egg_info = None
- self.tag_build = None
- self.tag_svn_revision = 0
- self.tag_date = 0
- self.broken_egg_info = False
- self.vtags = None
-
- def save_version_info(self, filename):
- from setopt import edit_config
- edit_config(
- filename,
- {'egg_info':
- {'tag_svn_revision':0, 'tag_date': 0, 'tag_build': self.tags()}
- }
- )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- def finalize_options (self):
- self.egg_name = safe_name(self.distribution.get_name())
- self.vtags = self.tags()
- self.egg_version = self.tagged_version()
-
- try:
- list(
- parse_requirements('%s==%s' % (self.egg_name,self.egg_version))
- )
- except ValueError:
- raise DistutilsOptionError(
- "Invalid distribution name or version syntax: %s-%s" %
- (self.egg_name,self.egg_version)
- )
-
- if self.egg_base is None:
- dirs = self.distribution.package_dir
- self.egg_base = (dirs or {}).get('',os.curdir)
-
- self.ensure_dirname('egg_base')
- self.egg_info = to_filename(self.egg_name)+'.egg-info'
- if self.egg_base != os.curdir:
- self.egg_info = os.path.join(self.egg_base, self.egg_info)
- if '-' in self.egg_name: self.check_broken_egg_info()
-
- # Set package version for the benefit of dumber commands
- # (e.g. sdist, bdist_wininst, etc.)
- #
- self.distribution.metadata.version = self.egg_version
-
- # If we bootstrapped around the lack of a PKG-INFO, as might be the
- # case in a fresh checkout, make sure that any special tags get added
- # to the version info
- #
- pd = self.distribution._patched_dist
- if pd is not None and pd.key==self.egg_name.lower():
- pd._version = self.egg_version
- pd._parsed_version = parse_version(self.egg_version)
- self.distribution._patched_dist = None
-
-
- def write_or_delete_file(self, what, filename, data, force=False):
- """Write `data` to `filename` or delete if empty
-
- If `data` is non-empty, this routine is the same as ``write_file()``.
- If `data` is empty but not ``None``, this is the same as calling
- ``delete_file(filename)`. If `data` is ``None``, then this is a no-op
- unless `filename` exists, in which case a warning is issued about the
- orphaned file (if `force` is false), or deleted (if `force` is true).
- """
- if data:
- self.write_file(what, filename, data)
- elif os.path.exists(filename):
- if data is None and not force:
- log.warn(
- "%s not set in setup(), but %s exists", what, filename
- )
- return
- else:
- self.delete_file(filename)
-
- def write_file(self, what, filename, data):
- """Write `data` to `filename` (if not a dry run) after announcing it
-
- `what` is used in a log message to identify what is being written
- to the file.
- """
- log.info("writing %s to %s", what, filename)
- if sys.version_info >= (3,):
- data = data.encode("utf-8")
- if not self.dry_run:
- f = open(filename, 'wb')
- f.write(data)
- f.close()
-
- def delete_file(self, filename):
- """Delete `filename` (if not a dry run) after announcing it"""
- log.info("deleting %s", filename)
- if not self.dry_run:
- os.unlink(filename)
-
- def tagged_version(self):
- return safe_version(self.distribution.get_version() + self.vtags)
-
- def run(self):
- self.mkpath(self.egg_info)
- installer = self.distribution.fetch_build_egg
- for ep in iter_entry_points('egg_info.writers'):
- writer = ep.load(installer=installer)
- writer(self, ep.name, os.path.join(self.egg_info,ep.name))
-
- # Get rid of native_libs.txt if it was put there by older bdist_egg
- nl = os.path.join(self.egg_info, "native_libs.txt")
- if os.path.exists(nl):
- self.delete_file(nl)
-
- self.find_sources()
-
- def tags(self):
- version = ''
- if self.tag_build:
- version+=self.tag_build
- if self.tag_svn_revision and (
- os.path.exists('.svn') or os.path.exists('PKG-INFO')
- ): version += '-r%s' % self.get_svn_revision()
- if self.tag_date:
- import time; version += time.strftime("-%Y%m%d")
- return version
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- def get_svn_revision(self):
- revision = 0
- urlre = re.compile('url="([^"]+)"')
- revre = re.compile('committed-rev="(\d+)"')
-
- for base,dirs,files in os.walk(os.curdir):
- if '.svn' not in dirs:
- dirs[:] = []
- continue # no sense walking uncontrolled subdirs
- dirs.remove('.svn')
- f = open(os.path.join(base,'.svn','entries'))
- data = f.read()
- f.close()
-
- if data.startswith('10') or data.startswith('9') or data.startswith('8'):
- data = map(str.splitlines,data.split('\n\x0c\n'))
- del data[0][0] # get rid of the '8' or '9' or '10'
- dirurl = data[0][3]
- localrev = max([int(d[9]) for d in data if len(d)>9 and d[9]]+[0])
- elif data.startswith('<?xml'):
- dirurl = urlre.search(data).group(1) # get repository URL
- localrev = max([int(m.group(1)) for m in revre.finditer(data)]+[0])
- else:
- log.warn("unrecognized .svn/entries format; skipping %s", base)
- dirs[:] = []
- continue
- if base==os.curdir:
- base_url = dirurl+'/' # save the root url
- elif not dirurl.startswith(base_url):
- dirs[:] = []
- continue # not part of the same svn tree, skip it
- revision = max(revision, localrev)
-
- return str(revision or get_pkg_info_revision())
-
-
-
-
-
-
-
- def find_sources(self):
- """Generate SOURCES.txt manifest file"""
- manifest_filename = os.path.join(self.egg_info,"SOURCES.txt")
- mm = manifest_maker(self.distribution)
- mm.manifest = manifest_filename
- mm.run()
- self.filelist = mm.filelist
-
- def check_broken_egg_info(self):
- bei = self.egg_name+'.egg-info'
- if self.egg_base != os.curdir:
- bei = os.path.join(self.egg_base, bei)
- if os.path.exists(bei):
- log.warn(
- "-"*78+'\n'
- "Note: Your current .egg-info directory has a '-' in its name;"
- '\nthis will not work correctly with "setup.py develop".\n\n'
- 'Please rename %s to %s to correct this problem.\n'+'-'*78,
- bei, self.egg_info
- )
- self.broken_egg_info = self.egg_info
- self.egg_info = bei # make it work for now
-
-class FileList(FileList):
- """File list that accepts only existing, platform-independent paths"""
-
- def append(self, item):
- if item.endswith('\r'): # Fix older sdists built on Windows
- item = item[:-1]
- path = convert_path(item)
- if os.path.exists(path):
- self.files.append(path)
-
-
-
-
-
-
-
-
-
-class manifest_maker(sdist):
-
- template = "MANIFEST.in"
-
- def initialize_options (self):
- self.use_defaults = 1
- self.prune = 1
- self.manifest_only = 1
- self.force_manifest = 1
-
- def finalize_options(self):
- pass
-
- def run(self):
- self.filelist = FileList()
- if not os.path.exists(self.manifest):
- self.write_manifest() # it must exist so it'll get in the list
- self.filelist.findall()
- self.add_defaults()
- if os.path.exists(self.template):
- self.read_template()
- self.prune_file_list()
- self.filelist.sort()
- self.filelist.remove_duplicates()
- self.write_manifest()
-
- def write_manifest (self):
- """Write the file list in 'self.filelist' (presumably as filled in
- by 'add_defaults()' and 'read_template()') to the manifest file
- named by 'self.manifest'.
- """
- files = self.filelist.files
- if os.sep!='/':
- files = [f.replace(os.sep,'/') for f in files]
- self.execute(write_file, (self.manifest, files),
- "writing manifest file '%s'" % self.manifest)
-
- def warn(self, msg): # suppress missing-file warnings from sdist
- if not msg.startswith("standard file not found:"):
- sdist.warn(self, msg)
-
- def add_defaults(self):
- sdist.add_defaults(self)
- self.filelist.append(self.template)
- self.filelist.append(self.manifest)
- rcfiles = list(walk_revctrl())
- if rcfiles:
- self.filelist.extend(rcfiles)
- elif os.path.exists(self.manifest):
- self.read_manifest()
- ei_cmd = self.get_finalized_command('egg_info')
- self.filelist.include_pattern("*", prefix=ei_cmd.egg_info)
-
- def prune_file_list (self):
- build = self.get_finalized_command('build')
- base_dir = self.distribution.get_fullname()
- self.filelist.exclude_pattern(None, prefix=build.build_base)
- self.filelist.exclude_pattern(None, prefix=base_dir)
- sep = re.escape(os.sep)
- self.filelist.exclude_pattern(sep+r'(RCS|CVS|\.svn)'+sep, is_regex=1)
-
-
-def write_file (filename, contents):
- """Create a file with the specified name and write 'contents' (a
- sequence of strings without line terminators) to it.
- """
- contents = "\n".join(contents)
- if sys.version_info >= (3,):
- contents = contents.encode("utf-8")
- f = open(filename, "wb") # always write POSIX-style manifest
- f.write(contents)
- f.close()
-
-
-
-
-
-
-
-
-
-
-
-
-
-def write_pkg_info(cmd, basename, filename):
- log.info("writing %s", filename)
- if not cmd.dry_run:
- metadata = cmd.distribution.metadata
- metadata.version, oldver = cmd.egg_version, metadata.version
- metadata.name, oldname = cmd.egg_name, metadata.name
- try:
- # write unescaped data to PKG-INFO, so older pkg_resources
- # can still parse it
- metadata.write_pkg_info(cmd.egg_info)
- finally:
- metadata.name, metadata.version = oldname, oldver
-
- safe = getattr(cmd.distribution,'zip_safe',None)
- import bdist_egg; bdist_egg.write_safety_flag(cmd.egg_info, safe)
-
-def warn_depends_obsolete(cmd, basename, filename):
- if os.path.exists(filename):
- log.warn(
- "WARNING: 'depends.txt' is not used by setuptools 0.6!\n"
- "Use the install_requires/extras_require setup() args instead."
- )
-
-
-def write_requirements(cmd, basename, filename):
- dist = cmd.distribution
- data = ['\n'.join(yield_lines(dist.install_requires or ()))]
- for extra,reqs in (dist.extras_require or {}).items():
- data.append('\n\n[%s]\n%s' % (extra, '\n'.join(yield_lines(reqs))))
- cmd.write_or_delete_file("requirements", filename, ''.join(data))
-
-def write_toplevel_names(cmd, basename, filename):
- pkgs = dict.fromkeys(
- [k.split('.',1)[0]
- for k in cmd.distribution.iter_distribution_names()
- ]
- )
- cmd.write_file("top-level names", filename, '\n'.join(pkgs)+'\n')
-
-
-
-def overwrite_arg(cmd, basename, filename):
- write_arg(cmd, basename, filename, True)
-
-def write_arg(cmd, basename, filename, force=False):
- argname = os.path.splitext(basename)[0]
- value = getattr(cmd.distribution, argname, None)
- if value is not None:
- value = '\n'.join(value)+'\n'
- cmd.write_or_delete_file(argname, filename, value, force)
-
-def write_entries(cmd, basename, filename):
- ep = cmd.distribution.entry_points
-
- if isinstance(ep,basestring) or ep is None:
- data = ep
- elif ep is not None:
- data = []
- for section, contents in ep.items():
- if not isinstance(contents,basestring):
- contents = EntryPoint.parse_group(section, contents)
- contents = '\n'.join(map(str,contents.values()))
- data.append('[%s]\n%s\n\n' % (section,contents))
- data = ''.join(data)
-
- cmd.write_or_delete_file('entry points', filename, data, True)
-
-def get_pkg_info_revision():
- # See if we can get a -r### off of PKG-INFO, in case this is an sdist of
- # a subversion revision
- #
- if os.path.exists('PKG-INFO'):
- f = open('PKG-INFO','rU')
- for line in f:
- match = re.match(r"Version:.*-r(\d+)\s*$", line)
- if match:
- return int(match.group(1))
- f.close()
- return 0
-
-
-
-#
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install.py
deleted file mode 100644
index 247c4f2..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install.py
+++ /dev/null
@@ -1,124 +0,0 @@
-import setuptools, sys, glob
-from distutils.command.install import install as _install
-from distutils.errors import DistutilsArgError
-
-class install(_install):
- """Use easy_install to install the package, w/dependencies"""
-
- user_options = _install.user_options + [
- ('old-and-unmanageable', None, "Try not to use this!"),
- ('single-version-externally-managed', None,
- "used by system package builders to create 'flat' eggs"),
- ]
- boolean_options = _install.boolean_options + [
- 'old-and-unmanageable', 'single-version-externally-managed',
- ]
- new_commands = [
- ('install_egg_info', lambda self: True),
- ('install_scripts', lambda self: True),
- ]
- _nc = dict(new_commands)
-
- def initialize_options(self):
- _install.initialize_options(self)
- self.old_and_unmanageable = None
- self.single_version_externally_managed = None
- self.no_compile = None # make DISTUTILS_DEBUG work right!
-
- def finalize_options(self):
- _install.finalize_options(self)
- if self.root:
- self.single_version_externally_managed = True
- elif self.single_version_externally_managed:
- if not self.root and not self.record:
- raise DistutilsArgError(
- "You must specify --record or --root when building system"
- " packages"
- )
-
- def handle_extra_path(self):
- if self.root or self.single_version_externally_managed:
- # explicit backward-compatibility mode, allow extra_path to work
- return _install.handle_extra_path(self)
-
- # Ignore extra_path when installing an egg (or being run by another
- # command without --root or --single-version-externally-managed
- self.path_file = None
- self.extra_dirs = ''
-
-
- def run(self):
- # Explicit request for old-style install? Just do it
- if self.old_and_unmanageable or self.single_version_externally_managed:
- return _install.run(self)
-
- # Attempt to detect whether we were called from setup() or by another
- # command. If we were called by setup(), our caller will be the
- # 'run_command' method in 'distutils.dist', and *its* caller will be
- # the 'run_commands' method. If we were called any other way, our
- # immediate caller *might* be 'run_command', but it won't have been
- # called by 'run_commands'. This is slightly kludgy, but seems to
- # work.
- #
- caller = sys._getframe(2)
- caller_module = caller.f_globals.get('__name__','')
- caller_name = caller.f_code.co_name
-
- if caller_module != 'distutils.dist' or caller_name!='run_commands':
- # We weren't called from the command line or setup(), so we
- # should run in backward-compatibility mode to support bdist_*
- # commands.
- _install.run(self)
- else:
- self.do_egg_install()
-
-
-
-
-
-
- def do_egg_install(self):
-
- easy_install = self.distribution.get_command_class('easy_install')
-
- cmd = easy_install(
- self.distribution, args="x", root=self.root, record=self.record,
- )
- cmd.ensure_finalized() # finalize before bdist_egg munges install cmd
- cmd.always_copy_from = '.' # make sure local-dir eggs get installed
-
- # pick up setup-dir .egg files only: no .egg-info
- cmd.package_index.scan(glob.glob('*.egg'))
-
- self.run_command('bdist_egg')
- args = [self.distribution.get_command_obj('bdist_egg').egg_output]
-
- if setuptools.bootstrap_install_from:
- # Bootstrap self-installation of setuptools
- args.insert(0, setuptools.bootstrap_install_from)
-
- cmd.args = args
- cmd.run()
- setuptools.bootstrap_install_from = None
-
-# XXX Python 3.1 doesn't see _nc if this is inside the class
-install.sub_commands = [
- cmd for cmd in _install.sub_commands if cmd[0] not in install._nc
- ] + install.new_commands
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install_egg_info.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install_egg_info.py
deleted file mode 100644
index dd95552..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install_egg_info.py
+++ /dev/null
@@ -1,123 +0,0 @@
-from setuptools import Command
-from setuptools.archive_util import unpack_archive
-from distutils import log, dir_util
-import os, shutil, pkg_resources
-
-class install_egg_info(Command):
- """Install an .egg-info directory for the package"""
-
- description = "Install an .egg-info directory for the package"
-
- user_options = [
- ('install-dir=', 'd', "directory to install to"),
- ]
-
- def initialize_options(self):
- self.install_dir = None
-
- def finalize_options(self):
- self.set_undefined_options('install_lib',('install_dir','install_dir'))
- ei_cmd = self.get_finalized_command("egg_info")
- basename = pkg_resources.Distribution(
- None, None, ei_cmd.egg_name, ei_cmd.egg_version
- ).egg_name()+'.egg-info'
- self.source = ei_cmd.egg_info
- self.target = os.path.join(self.install_dir, basename)
- self.outputs = [self.target]
-
- def run(self):
- self.run_command('egg_info')
- target = self.target
- if os.path.isdir(self.target) and not os.path.islink(self.target):
- dir_util.remove_tree(self.target, dry_run=self.dry_run)
- elif os.path.exists(self.target):
- self.execute(os.unlink,(self.target,),"Removing "+self.target)
- if not self.dry_run:
- pkg_resources.ensure_directory(self.target)
- self.execute(self.copytree, (),
- "Copying %s to %s" % (self.source, self.target)
- )
- self.install_namespaces()
-
- def get_outputs(self):
- return self.outputs
-
- def copytree(self):
- # Copy the .egg-info tree to site-packages
- def skimmer(src,dst):
- # filter out source-control directories; note that 'src' is always
- # a '/'-separated path, regardless of platform. 'dst' is a
- # platform-specific path.
- for skip in '.svn/','CVS/':
- if src.startswith(skip) or '/'+skip in src:
- return None
- self.outputs.append(dst)
- log.debug("Copying %s to %s", src, dst)
- return dst
- unpack_archive(self.source, self.target, skimmer)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- def install_namespaces(self):
- nsp = self._get_all_ns_packages()
- if not nsp: return
- filename,ext = os.path.splitext(self.target)
- filename += '-nspkg.pth'; self.outputs.append(filename)
- log.info("Installing %s",filename)
- if not self.dry_run:
- f = open(filename,'wt')
- for pkg in nsp:
- pth = tuple(pkg.split('.'))
- trailer = '\n'
- if '.' in pkg:
- trailer = (
- "; m and setattr(sys.modules[%r], %r, m)\n"
- % ('.'.join(pth[:-1]), pth[-1])
- )
- f.write(
- "import sys,types,os; "
- "p = os.path.join(sys._getframe(1).f_locals['sitedir'], "
- "*%(pth)r); "
- "ie = os.path.exists(os.path.join(p,'__init__.py')); "
- "m = not ie and "
- "sys.modules.setdefault(%(pkg)r,types.ModuleType(%(pkg)r)); "
- "mp = (m or []) and m.__dict__.setdefault('__path__',[]); "
- "(p not in mp) and mp.append(p)%(trailer)s"
- % locals()
- )
- f.close()
-
- def _get_all_ns_packages(self):
- nsp = {}
- for pkg in self.distribution.namespace_packages or []:
- pkg = pkg.split('.')
- while pkg:
- nsp['.'.join(pkg)] = 1
- pkg.pop()
- nsp=list(nsp)
- nsp.sort() # set up shorter names first
- return nsp
-
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install_lib.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install_lib.py
deleted file mode 100644
index 82afa14..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install_lib.py
+++ /dev/null
@@ -1,82 +0,0 @@
-from distutils.command.install_lib import install_lib as _install_lib
-import os
-
-class install_lib(_install_lib):
- """Don't add compiled flags to filenames of non-Python files"""
-
- def _bytecode_filenames (self, py_filenames):
- bytecode_files = []
- for py_file in py_filenames:
- if not py_file.endswith('.py'):
- continue
- if self.compile:
- bytecode_files.append(py_file + "c")
- if self.optimize > 0:
- bytecode_files.append(py_file + "o")
-
- return bytecode_files
-
- def run(self):
- self.build()
- outfiles = self.install()
- if outfiles is not None:
- # always compile, in case we have any extension stubs to deal with
- self.byte_compile(outfiles)
-
- def get_exclusions(self):
- exclude = {}
- nsp = self.distribution.namespace_packages
-
- if (nsp and self.get_finalized_command('install')
- .single_version_externally_managed
- ):
- for pkg in nsp:
- parts = pkg.split('.')
- while parts:
- pkgdir = os.path.join(self.install_dir, *parts)
- for f in '__init__.py', '__init__.pyc', '__init__.pyo':
- exclude[os.path.join(pkgdir,f)] = 1
- parts.pop()
- return exclude
-
- def copy_tree(
- self, infile, outfile,
- preserve_mode=1, preserve_times=1, preserve_symlinks=0, level=1
- ):
- assert preserve_mode and preserve_times and not preserve_symlinks
- exclude = self.get_exclusions()
-
- if not exclude:
- return _install_lib.copy_tree(self, infile, outfile)
-
- # Exclude namespace package __init__.py* files from the output
-
- from setuptools.archive_util import unpack_directory
- from distutils import log
-
- outfiles = []
-
- def pf(src, dst):
- if dst in exclude:
- log.warn("Skipping installation of %s (namespace package)",dst)
- return False
-
- log.info("copying %s -> %s", src, os.path.dirname(dst))
- outfiles.append(dst)
- return dst
-
- unpack_directory(infile, outfile, pf)
- return outfiles
-
- def get_outputs(self):
- outputs = _install_lib.get_outputs(self)
- exclude = self.get_exclusions()
- if exclude:
- return [f for f in outputs if f not in exclude]
- return outputs
-
-
-
-
-
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install_scripts.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install_scripts.py
deleted file mode 100644
index 6ce1b99..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/install_scripts.py
+++ /dev/null
@@ -1,53 +0,0 @@
-from distutils.command.install_scripts import install_scripts \
- as _install_scripts
-from pkg_resources import Distribution, PathMetadata, ensure_directory
-import os
-from distutils import log
-
-class install_scripts(_install_scripts):
- """Do normal script install, plus any egg_info wrapper scripts"""
-
- def initialize_options(self):
- _install_scripts.initialize_options(self)
- self.no_ep = False
-
- def run(self):
- from setuptools.command.easy_install import get_script_args
- from setuptools.command.easy_install import sys_executable
-
- self.run_command("egg_info")
- if self.distribution.scripts:
- _install_scripts.run(self) # run first to set up self.outfiles
- else:
- self.outfiles = []
- if self.no_ep:
- # don't install entry point scripts into .egg file!
- return
-
- ei_cmd = self.get_finalized_command("egg_info")
- dist = Distribution(
- ei_cmd.egg_base, PathMetadata(ei_cmd.egg_base, ei_cmd.egg_info),
- ei_cmd.egg_name, ei_cmd.egg_version,
- )
- bs_cmd = self.get_finalized_command('build_scripts')
- executable = getattr(bs_cmd,'executable',sys_executable)
- is_wininst = getattr(
- self.get_finalized_command("bdist_wininst"), '_is_running', False
- )
- for args in get_script_args(dist, executable, is_wininst):
- self.write_script(*args)
-
- def write_script(self, script_name, contents, mode="t", *ignored):
- """Write an executable file to the scripts directory"""
- from setuptools.command.easy_install import chmod
- log.info("Installing %s script to %s", script_name, self.install_dir)
- target = os.path.join(self.install_dir, script_name)
- self.outfiles.append(target)
-
- if not self.dry_run:
- ensure_directory(target)
- f = open(target,"w"+mode)
- f.write(contents)
- f.close()
- chmod(target,0755)
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/register.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/register.py
deleted file mode 100644
index 3b2e085..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/register.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from distutils.command.register import register as _register
-
-class register(_register):
- __doc__ = _register.__doc__
-
- def run(self):
- # Make sure that we are using valid current name/version info
- self.run_command('egg_info')
- _register.run(self)
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/rotate.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/rotate.py
deleted file mode 100644
index 11b6eae..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/rotate.py
+++ /dev/null
@@ -1,82 +0,0 @@
-import distutils, os
-from setuptools import Command
-from distutils.util import convert_path
-from distutils import log
-from distutils.errors import *
-
-class rotate(Command):
- """Delete older distributions"""
-
- description = "delete older distributions, keeping N newest files"
- user_options = [
- ('match=', 'm', "patterns to match (required)"),
- ('dist-dir=', 'd', "directory where the distributions are"),
- ('keep=', 'k', "number of matching distributions to keep"),
- ]
-
- boolean_options = []
-
- def initialize_options(self):
- self.match = None
- self.dist_dir = None
- self.keep = None
-
- def finalize_options(self):
- if self.match is None:
- raise DistutilsOptionError(
- "Must specify one or more (comma-separated) match patterns "
- "(e.g. '.zip' or '.egg')"
- )
- if self.keep is None:
- raise DistutilsOptionError("Must specify number of files to keep")
- try:
- self.keep = int(self.keep)
- except ValueError:
- raise DistutilsOptionError("--keep must be an integer")
- if isinstance(self.match, basestring):
- self.match = [
- convert_path(p.strip()) for p in self.match.split(',')
- ]
- self.set_undefined_options('bdist',('dist_dir', 'dist_dir'))
-
- def run(self):
- self.run_command("egg_info")
- from glob import glob
- for pattern in self.match:
- pattern = self.distribution.get_name()+'*'+pattern
- files = glob(os.path.join(self.dist_dir,pattern))
- files = [(os.path.getmtime(f),f) for f in files]
- files.sort()
- files.reverse()
-
- log.info("%d file(s) matching %s", len(files), pattern)
- files = files[self.keep:]
- for (t,f) in files:
- log.info("Deleting %s", f)
- if not self.dry_run:
- os.unlink(f)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/saveopts.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/saveopts.py
deleted file mode 100644
index 1180a44..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/saveopts.py
+++ /dev/null
@@ -1,25 +0,0 @@
-import distutils, os
-from setuptools import Command
-from setuptools.command.setopt import edit_config, option_base
-
-class saveopts(option_base):
- """Save command-line options to a file"""
-
- description = "save supplied options to setup.cfg or other config file"
-
- def run(self):
- dist = self.distribution
- commands = dist.command_options.keys()
- settings = {}
-
- for cmd in commands:
-
- if cmd=='saveopts':
- continue # don't save our own options!
-
- for opt,(src,val) in dist.get_option_dict(cmd).items():
- if src=="command line":
- settings.setdefault(cmd,{})[opt] = val
-
- edit_config(self.filename, settings, self.dry_run)
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/sdist.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/sdist.py
deleted file mode 100644
index 3442fe4..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/sdist.py
+++ /dev/null
@@ -1,252 +0,0 @@
-from distutils.command.sdist import sdist as _sdist
-from distutils.util import convert_path
-from distutils import log
-import os, re, sys, pkg_resources
-from glob import glob
-
-entities = [
- ("&lt;","<"), ("&gt;", ">"), ("&quot;", '"'), ("&apos;", "'"),
- ("&amp;", "&")
-]
-
-def unescape(data):
- for old,new in entities:
- data = data.replace(old,new)
- return data
-
-def re_finder(pattern, postproc=None):
- def find(dirname, filename):
- f = open(filename,'rU')
- data = f.read()
- f.close()
- for match in pattern.finditer(data):
- path = match.group(1)
- if postproc:
- path = postproc(path)
- yield joinpath(dirname,path)
- return find
-
-def joinpath(prefix,suffix):
- if not prefix:
- return suffix
- return os.path.join(prefix,suffix)
-
-
-
-
-
-
-
-
-
-
-def walk_revctrl(dirname=''):
- """Find all files under revision control"""
- for ep in pkg_resources.iter_entry_points('setuptools.file_finders'):
- for item in ep.load()(dirname):
- yield item
-
-def _default_revctrl(dirname=''):
- for path, finder in finders:
- path = joinpath(dirname,path)
- if os.path.isfile(path):
- for path in finder(dirname,path):
- if os.path.isfile(path):
- yield path
- elif os.path.isdir(path):
- for item in _default_revctrl(path):
- yield item
-
-def externals_finder(dirname, filename):
- """Find any 'svn:externals' directories"""
- found = False
- f = open(filename,'rt')
- for line in iter(f.readline, ''): # can't use direct iter!
- parts = line.split()
- if len(parts)==2:
- kind,length = parts
- data = f.read(int(length))
- if kind=='K' and data=='svn:externals':
- found = True
- elif kind=='V' and found:
- f.close()
- break
- else:
- f.close()
- return
-
- for line in data.splitlines():
- parts = line.split()
- if parts:
- yield joinpath(dirname, parts[0])
-
-
-entries_pattern = re.compile(r'name="([^"]+)"(?![^>]+deleted="true")', re.I)
-
-def entries_finder(dirname, filename):
- f = open(filename,'rU')
- data = f.read()
- f.close()
- if data.startswith('10') or data.startswith('9') or data.startswith('8'):
- for record in map(str.splitlines, data.split('\n\x0c\n')[1:]):
- # subversion 1.6/1.5/1.4
- if not record or len(record)>=6 and record[5]=="delete":
- continue # skip deleted
- yield joinpath(dirname, record[0])
- elif data.startswith('<?xml'):
- for match in entries_pattern.finditer(data):
- yield joinpath(dirname,unescape(match.group(1)))
- else:
- log.warn("unrecognized .svn/entries format in %s", dirname)
-
-
-finders = [
- (convert_path('CVS/Entries'),
- re_finder(re.compile(r"^\w?/([^/]+)/", re.M))),
- (convert_path('.svn/entries'), entries_finder),
- (convert_path('.svn/dir-props'), externals_finder),
- (convert_path('.svn/dir-prop-base'), externals_finder), # svn 1.4
-]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-class sdist(_sdist):
- """Smart sdist that finds anything supported by revision control"""
-
- user_options = [
- ('formats=', None,
- "formats for source distribution (comma-separated list)"),
- ('keep-temp', 'k',
- "keep the distribution tree around after creating " +
- "archive file(s)"),
- ('dist-dir=', 'd',
- "directory to put the source distribution archive(s) in "
- "[default: dist]"),
- ]
-
- negative_opt = {}
-
- def run(self):
- self.run_command('egg_info')
- ei_cmd = self.get_finalized_command('egg_info')
- self.filelist = ei_cmd.filelist
- self.filelist.append(os.path.join(ei_cmd.egg_info,'SOURCES.txt'))
- self.check_readme()
- self.check_metadata()
- self.make_distribution()
-
- dist_files = getattr(self.distribution,'dist_files',[])
- for file in self.archive_files:
- data = ('sdist', '', file)
- if data not in dist_files:
- dist_files.append(data)
-
- def add_defaults(self):
- standards = [('README', 'README.txt'),
- self.distribution.script_name]
- for fn in standards:
- if isinstance(fn, tuple):
- alts = fn
- got_it = 0
- for fn in alts:
- if os.path.exists(fn):
- got_it = 1
- self.filelist.append(fn)
- break
-
- if not got_it:
- self.warn("standard file not found: should have one of " +
- ', '.join(alts))
- else:
- if os.path.exists(fn):
- self.filelist.append(fn)
- else:
- self.warn("standard file '%s' not found" % fn)
-
- optional = ['test/test*.py', 'setup.cfg']
- for pattern in optional:
- files = filter(os.path.isfile, glob(pattern))
- if files:
- self.filelist.extend(files)
-
- # getting python files
- if self.distribution.has_pure_modules():
- build_py = self.get_finalized_command('build_py')
- self.filelist.extend(build_py.get_source_files())
-
- if self.distribution.has_ext_modules():
- build_ext = self.get_finalized_command('build_ext')
- self.filelist.extend(build_ext.get_source_files())
-
- if self.distribution.has_c_libraries():
- build_clib = self.get_finalized_command('build_clib')
- self.filelist.extend(build_clib.get_source_files())
-
- if self.distribution.has_scripts():
- build_scripts = self.get_finalized_command('build_scripts')
- self.filelist.extend(build_scripts.get_source_files())
-
- def read_template(self):
- try:
- _sdist.read_template(self)
- except:
- # grody hack to close the template file (MANIFEST.in)
- # this prevents easy_install's attempt at deleting the file from
- # dying and thus masking the real error
- sys.exc_info()[2].tb_next.tb_frame.f_locals['template'].close()
- raise
-
- def check_readme(self):
- alts = ("README", "README.txt")
- for f in alts:
- if os.path.exists(f):
- return
- else:
- self.warn(
- "standard file not found: should have one of " +', '.join(alts)
- )
-
-
- def make_release_tree(self, base_dir, files):
- _sdist.make_release_tree(self, base_dir, files)
-
- # Save any egg_info command line options used to create this sdist
- dest = os.path.join(base_dir, 'setup.cfg')
- if hasattr(os,'link') and os.path.exists(dest):
- # unlink and re-copy, since it might be hard-linked, and
- # we don't want to change the source version
- os.unlink(dest)
- self.copy_file('setup.cfg', dest)
-
- self.get_finalized_command('egg_info').save_version_info(dest)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/setopt.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/setopt.py
deleted file mode 100644
index dbf3a94..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/setopt.py
+++ /dev/null
@@ -1,164 +0,0 @@
-import distutils, os
-from setuptools import Command
-from distutils.util import convert_path
-from distutils import log
-from distutils.errors import *
-
-__all__ = ['config_file', 'edit_config', 'option_base', 'setopt']
-
-
-def config_file(kind="local"):
- """Get the filename of the distutils, local, global, or per-user config
-
- `kind` must be one of "local", "global", or "user"
- """
- if kind=='local':
- return 'setup.cfg'
- if kind=='global':
- return os.path.join(
- os.path.dirname(distutils.__file__),'distutils.cfg'
- )
- if kind=='user':
- dot = os.name=='posix' and '.' or ''
- return os.path.expanduser(convert_path("~/%spydistutils.cfg" % dot))
- raise ValueError(
- "config_file() type must be 'local', 'global', or 'user'", kind
- )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def edit_config(filename, settings, dry_run=False):
- """Edit a configuration file to include `settings`
-
- `settings` is a dictionary of dictionaries or ``None`` values, keyed by
- command/section name. A ``None`` value means to delete the entire section,
- while a dictionary lists settings to be changed or deleted in that section.
- A setting of ``None`` means to delete that setting.
- """
- from ConfigParser import RawConfigParser
- log.debug("Reading configuration from %s", filename)
- opts = RawConfigParser()
- opts.read([filename])
- for section, options in settings.items():
- if options is None:
- log.info("Deleting section [%s] from %s", section, filename)
- opts.remove_section(section)
- else:
- if not opts.has_section(section):
- log.debug("Adding new section [%s] to %s", section, filename)
- opts.add_section(section)
- for option,value in options.items():
- if value is None:
- log.debug("Deleting %s.%s from %s",
- section, option, filename
- )
- opts.remove_option(section,option)
- if not opts.options(section):
- log.info("Deleting empty [%s] section from %s",
- section, filename)
- opts.remove_section(section)
- else:
- log.debug(
- "Setting %s.%s to %r in %s",
- section, option, value, filename
- )
- opts.set(section,option,value)
-
- log.info("Writing %s", filename)
- if not dry_run:
- f = open(filename,'w'); opts.write(f); f.close()
-
-class option_base(Command):
- """Abstract base class for commands that mess with config files"""
-
- user_options = [
- ('global-config', 'g',
- "save options to the site-wide distutils.cfg file"),
- ('user-config', 'u',
- "save options to the current user's pydistutils.cfg file"),
- ('filename=', 'f',
- "configuration file to use (default=setup.cfg)"),
- ]
-
- boolean_options = [
- 'global-config', 'user-config',
- ]
-
- def initialize_options(self):
- self.global_config = None
- self.user_config = None
- self.filename = None
-
- def finalize_options(self):
- filenames = []
- if self.global_config:
- filenames.append(config_file('global'))
- if self.user_config:
- filenames.append(config_file('user'))
- if self.filename is not None:
- filenames.append(self.filename)
- if not filenames:
- filenames.append(config_file('local'))
- if len(filenames)>1:
- raise DistutilsOptionError(
- "Must specify only one configuration file option",
- filenames
- )
- self.filename, = filenames
-
-
-
-
-class setopt(option_base):
- """Save command-line options to a file"""
-
- description = "set an option in setup.cfg or another config file"
-
- user_options = [
- ('command=', 'c', 'command to set an option for'),
- ('option=', 'o', 'option to set'),
- ('set-value=', 's', 'value of the option'),
- ('remove', 'r', 'remove (unset) the value'),
- ] + option_base.user_options
-
- boolean_options = option_base.boolean_options + ['remove']
-
- def initialize_options(self):
- option_base.initialize_options(self)
- self.command = None
- self.option = None
- self.set_value = None
- self.remove = None
-
- def finalize_options(self):
- option_base.finalize_options(self)
- if self.command is None or self.option is None:
- raise DistutilsOptionError("Must specify --command *and* --option")
- if self.set_value is None and not self.remove:
- raise DistutilsOptionError("Must specify --set-value or --remove")
-
- def run(self):
- edit_config(
- self.filename, {
- self.command: {self.option.replace('-','_'):self.set_value}
- },
- self.dry_run
- )
-
-
-
-
-
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/test.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/test.py
deleted file mode 100644
index b7aef96..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/test.py
+++ /dev/null
@@ -1,180 +0,0 @@
-from setuptools import Command
-from distutils.errors import DistutilsOptionError
-import sys
-from pkg_resources import *
-from unittest import TestLoader, main
-
-class ScanningLoader(TestLoader):
-
- def loadTestsFromModule(self, module):
- """Return a suite of all tests cases contained in the given module
-
- If the module is a package, load tests from all the modules in it.
- If the module has an ``additional_tests`` function, call it and add
- the return value to the tests.
- """
- tests = []
- if module.__name__!='setuptools.tests.doctest': # ugh
- tests.append(TestLoader.loadTestsFromModule(self,module))
-
- if hasattr(module, "additional_tests"):
- tests.append(module.additional_tests())
-
- if hasattr(module, '__path__'):
- for file in resource_listdir(module.__name__, ''):
- if file.endswith('.py') and file!='__init__.py':
- submodule = module.__name__+'.'+file[:-3]
- else:
- if resource_exists(
- module.__name__, file+'/__init__.py'
- ):
- submodule = module.__name__+'.'+file
- else:
- continue
- tests.append(self.loadTestsFromName(submodule))
-
- if len(tests)!=1:
- return self.suiteClass(tests)
- else:
- return tests[0] # don't create a nested suite for only one return
-
-
-class test(Command):
-
- """Command to run unit tests after in-place build"""
-
- description = "run unit tests after in-place build"
-
- user_options = [
- ('test-module=','m', "Run 'test_suite' in specified module"),
- ('test-suite=','s',
- "Test suite to run (e.g. 'some_module.test_suite')"),
- ]
-
- def initialize_options(self):
- self.test_suite = None
- self.test_module = None
- self.test_loader = None
-
-
- def finalize_options(self):
-
- if self.test_suite is None:
- if self.test_module is None:
- self.test_suite = self.distribution.test_suite
- else:
- self.test_suite = self.test_module+".test_suite"
- elif self.test_module:
- raise DistutilsOptionError(
- "You may specify a module or a suite, but not both"
- )
-
- self.test_args = [self.test_suite]
-
- if self.verbose:
- self.test_args.insert(0,'--verbose')
- if self.test_loader is None:
- self.test_loader = getattr(self.distribution,'test_loader',None)
- if self.test_loader is None:
- self.test_loader = "setuptools.command.test:ScanningLoader"
-
-
-
- def with_project_on_sys_path(self, func):
- if getattr(self.distribution, 'use_2to3', False):
- # If we run 2to3 we can not do this inplace:
-
- # Ensure metadata is up-to-date
- self.reinitialize_command('build_py', inplace=0)
- self.run_command('build_py')
- bpy_cmd = self.get_finalized_command("build_py")
- build_path = normalize_path(bpy_cmd.build_lib)
-
- # Build extensions
- self.reinitialize_command('egg_info', egg_base=build_path)
- self.run_command('egg_info')
-
- self.reinitialize_command('build_ext', inplace=0)
- self.run_command('build_ext')
- else:
- # Without 2to3 inplace works fine:
- self.run_command('egg_info')
-
- # Build extensions in-place
- self.reinitialize_command('build_ext', inplace=1)
- self.run_command('build_ext')
-
- ei_cmd = self.get_finalized_command("egg_info")
-
- old_path = sys.path[:]
- old_modules = sys.modules.copy()
-
- try:
- sys.path.insert(0, normalize_path(ei_cmd.egg_base))
- working_set.__init__()
- add_activation_listener(lambda dist: dist.activate())
- require('%s==%s' % (ei_cmd.egg_name, ei_cmd.egg_version))
- func()
- finally:
- sys.path[:] = old_path
- sys.modules.clear()
- sys.modules.update(old_modules)
- working_set.__init__()
-
-
- def run(self):
- if self.distribution.install_requires:
- self.distribution.fetch_build_eggs(self.distribution.install_requires)
- if self.distribution.tests_require:
- self.distribution.fetch_build_eggs(self.distribution.tests_require)
-
- if self.test_suite:
- cmd = ' '.join(self.test_args)
- if self.dry_run:
- self.announce('skipping "unittest %s" (dry run)' % cmd)
- else:
- self.announce('running "unittest %s"' % cmd)
- self.with_project_on_sys_path(self.run_tests)
-
-
- def run_tests(self):
- import unittest
- loader_ep = EntryPoint.parse("x="+self.test_loader)
- loader_class = loader_ep.load(require=False)
- unittest.main(
- None, None, [unittest.__file__]+self.test_args,
- testLoader = loader_class()
- )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/upload.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/upload.py
deleted file mode 100644
index 4bd6021..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/upload.py
+++ /dev/null
@@ -1,184 +0,0 @@
-"""distutils.command.upload
-
-Implements the Distutils 'upload' subcommand (upload package to PyPI)."""
-
-from distutils.errors import *
-from distutils.core import Command
-from distutils.spawn import spawn
-from distutils import log
-try:
- from hashlib import md5
-except ImportError:
- from md5 import md5
-import os
-import socket
-import platform
-import ConfigParser
-import httplib
-import base64
-import urlparse
-import cStringIO as StringIO
-
-class upload(Command):
-
- description = "upload binary package to PyPI"
-
- DEFAULT_REPOSITORY = 'http://pypi.python.org/pypi'
-
- user_options = [
- ('repository=', 'r',
- "url of repository [default: %s]" % DEFAULT_REPOSITORY),
- ('show-response', None,
- 'display full response text from server'),
- ('sign', 's',
- 'sign files to upload using gpg'),
- ('identity=', 'i', 'GPG identity used to sign files'),
- ]
- boolean_options = ['show-response', 'sign']
-
- def initialize_options(self):
- self.username = ''
- self.password = ''
- self.repository = ''
- self.show_response = 0
- self.sign = False
- self.identity = None
-
- def finalize_options(self):
- if self.identity and not self.sign:
- raise DistutilsOptionError(
- "Must use --sign for --identity to have meaning"
- )
- if os.environ.has_key('HOME'):
- rc = os.path.join(os.environ['HOME'], '.pypirc')
- if os.path.exists(rc):
- self.announce('Using PyPI login from %s' % rc)
- config = ConfigParser.ConfigParser({
- 'username':'',
- 'password':'',
- 'repository':''})
- config.read(rc)
- if not self.repository:
- self.repository = config.get('server-login', 'repository')
- if not self.username:
- self.username = config.get('server-login', 'username')
- if not self.password:
- self.password = config.get('server-login', 'password')
- if not self.repository:
- self.repository = self.DEFAULT_REPOSITORY
-
- def run(self):
- if not self.distribution.dist_files:
- raise DistutilsOptionError("No dist file created in earlier command")
- for command, pyversion, filename in self.distribution.dist_files:
- self.upload_file(command, pyversion, filename)
-
- def upload_file(self, command, pyversion, filename):
- # Sign if requested
- if self.sign:
- gpg_args = ["gpg", "--detach-sign", "-a", filename]
- if self.identity:
- gpg_args[2:2] = ["--local-user", self.identity]
- spawn(gpg_args,
- dry_run=self.dry_run)
-
- # Fill in the data
- f = open(filename,'rb')
- content = f.read()
- f.close()
- basename = os.path.basename(filename)
- comment = ''
- if command=='bdist_egg' and self.distribution.has_ext_modules():
- comment = "built on %s" % platform.platform(terse=1)
- data = {
- ':action':'file_upload',
- 'protcol_version':'1',
- 'name':self.distribution.get_name(),
- 'version':self.distribution.get_version(),
- 'content':(basename,content),
- 'filetype':command,
- 'pyversion':pyversion,
- 'md5_digest':md5(content).hexdigest(),
- }
- if command == 'bdist_rpm':
- dist, version, id = platform.dist()
- if dist:
- comment = 'built for %s %s' % (dist, version)
- elif command == 'bdist_dumb':
- comment = 'built for %s' % platform.platform(terse=1)
- data['comment'] = comment
-
- if self.sign:
- data['gpg_signature'] = (os.path.basename(filename) + ".asc",
- open(filename+".asc").read())
-
- # set up the authentication
- auth = "Basic " + base64.encodestring(self.username + ":" + self.password).strip()
-
- # Build up the MIME payload for the POST data
- boundary = '--------------GHSKFJDLGDS7543FJKLFHRE75642756743254'
- sep_boundary = '\n--' + boundary
- end_boundary = sep_boundary + '--'
- body = StringIO.StringIO()
- for key, value in data.items():
- # handle multiple entries for the same name
- if type(value) != type([]):
- value = [value]
- for value in value:
- if type(value) is tuple:
- fn = ';filename="%s"' % value[0]
- value = value[1]
- else:
- fn = ""
- value = str(value)
- body.write(sep_boundary)
- body.write('\nContent-Disposition: form-data; name="%s"'%key)
- body.write(fn)
- body.write("\n\n")
- body.write(value)
- if value and value[-1] == '\r':
- body.write('\n') # write an extra newline (lurve Macs)
- body.write(end_boundary)
- body.write("\n")
- body = body.getvalue()
-
- self.announce("Submitting %s to %s" % (filename, self.repository), log.INFO)
-
- # build the Request
- # We can't use urllib2 since we need to send the Basic
- # auth right with the first request
- schema, netloc, url, params, query, fragments = \
- urlparse.urlparse(self.repository)
- assert not params and not query and not fragments
- if schema == 'http':
- http = httplib.HTTPConnection(netloc)
- elif schema == 'https':
- http = httplib.HTTPSConnection(netloc)
- else:
- raise AssertionError, "unsupported schema "+schema
-
- data = ''
- loglevel = log.INFO
- try:
- http.connect()
- http.putrequest("POST", url)
- http.putheader('Content-type',
- 'multipart/form-data; boundary=%s'%boundary)
- http.putheader('Content-length', str(len(body)))
- http.putheader('Authorization', auth)
- http.endheaders()
- http.send(body)
- except socket.error, e:
- self.announce(str(e), log.ERROR)
- return
-
- r = http.getresponse()
- if r.status == 200:
- self.announce('Server response (%s): %s' % (r.status, r.reason),
- log.INFO)
- else:
- self.announce('Upload failed (%s): %s' % (r.status, r.reason),
- log.ERROR)
- if self.show_response:
- print '-'*75, r.read(), '-'*75
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/upload_docs.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/upload_docs.py
deleted file mode 100644
index 213f7b5..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/command/upload_docs.py
+++ /dev/null
@@ -1,178 +0,0 @@
-# -*- coding: utf-8 -*-
-"""upload_docs
-
-Implements a Distutils 'upload_docs' subcommand (upload documentation to
-PyPI's packages.python.org).
-"""
-
-import os
-import socket
-import zipfile
-import httplib
-import base64
-import urlparse
-import tempfile
-import sys
-
-from distutils import log
-from distutils.errors import DistutilsOptionError
-
-try:
- from distutils.command.upload import upload
-except ImportError:
- from setuptools.command.upload import upload
-
-_IS_PYTHON3 = sys.version > '3'
-
-try:
- bytes
-except NameError:
- bytes = str
-
-def b(str_or_bytes):
- """Return bytes by either encoding the argument as ASCII or simply return
- the argument as-is."""
- if not isinstance(str_or_bytes, bytes):
- return str_or_bytes.encode('ascii')
- else:
- return str_or_bytes
-
-
-class upload_docs(upload):
-
- description = 'Upload documentation to PyPI'
-
- user_options = [
- ('repository=', 'r',
- "url of repository [default: %s]" % upload.DEFAULT_REPOSITORY),
- ('show-response', None,
- 'display full response text from server'),
- ('upload-dir=', None, 'directory to upload'),
- ]
- boolean_options = upload.boolean_options
-
- def initialize_options(self):
- upload.initialize_options(self)
- self.upload_dir = None
-
- def finalize_options(self):
- upload.finalize_options(self)
- if self.upload_dir is None:
- build = self.get_finalized_command('build')
- self.upload_dir = os.path.join(build.build_base, 'docs')
- self.mkpath(self.upload_dir)
- self.ensure_dirname('upload_dir')
- self.announce('Using upload directory %s' % self.upload_dir)
-
- def create_zipfile(self):
- name = self.distribution.metadata.get_name()
- tmp_dir = tempfile.mkdtemp()
- tmp_file = os.path.join(tmp_dir, "%s.zip" % name)
- zip_file = zipfile.ZipFile(tmp_file, "w")
- for root, dirs, files in os.walk(self.upload_dir):
- if root == self.upload_dir and not files:
- raise DistutilsOptionError(
- "no files found in upload directory '%s'"
- % self.upload_dir)
- for name in files:
- full = os.path.join(root, name)
- relative = root[len(self.upload_dir):].lstrip(os.path.sep)
- dest = os.path.join(relative, name)
- zip_file.write(full, dest)
- zip_file.close()
- return tmp_file
-
- def run(self):
- zip_file = self.create_zipfile()
- self.upload_file(zip_file)
-
- def upload_file(self, filename):
- content = open(filename, 'rb').read()
- meta = self.distribution.metadata
- data = {
- ':action': 'doc_upload',
- 'name': meta.get_name(),
- 'content': (os.path.basename(filename), content),
- }
- # set up the authentication
- credentials = self.username + ':' + self.password
- if _IS_PYTHON3: # base64 only works with bytes in Python 3.
- encoded_creds = base64.encodebytes(credentials.encode('utf8'))
- auth = bytes("Basic ")
- else:
- encoded_creds = base64.encodestring(credentials)
- auth = "Basic "
- auth += encoded_creds.strip()
-
- # Build up the MIME payload for the POST data
- boundary = b('--------------GHSKFJDLGDS7543FJKLFHRE75642756743254')
- sep_boundary = b('\n--') + boundary
- end_boundary = sep_boundary + b('--')
- body = []
- for key, values in data.items():
- # handle multiple entries for the same name
- if type(values) != type([]):
- values = [values]
- for value in values:
- if type(value) is tuple:
- fn = b(';filename="%s"' % value[0])
- value = value[1]
- else:
- fn = b("")
- body.append(sep_boundary)
- body.append(b('\nContent-Disposition: form-data; name="%s"'%key))
- body.append(fn)
- body.append(b("\n\n"))
- body.append(b(value))
- if value and value[-1] == b('\r'):
- body.append(b('\n')) # write an extra newline (lurve Macs)
- body.append(end_boundary)
- body.append(b("\n"))
- body = b('').join(body)
-
- self.announce("Submitting documentation to %s" % (self.repository),
- log.INFO)
-
- # build the Request
- # We can't use urllib2 since we need to send the Basic
- # auth right with the first request
- schema, netloc, url, params, query, fragments = \
- urlparse.urlparse(self.repository)
- assert not params and not query and not fragments
- if schema == 'http':
- conn = httplib.HTTPConnection(netloc)
- elif schema == 'https':
- conn = httplib.HTTPSConnection(netloc)
- else:
- raise AssertionError("unsupported schema "+schema)
-
- data = ''
- loglevel = log.INFO
- try:
- conn.connect()
- conn.putrequest("POST", url)
- conn.putheader('Content-type',
- 'multipart/form-data; boundary=%s'%boundary)
- conn.putheader('Content-length', str(len(body)))
- conn.putheader('Authorization', auth)
- conn.endheaders()
- conn.send(body)
- except socket.error, e:
- self.announce(str(e), log.ERROR)
- return
-
- r = conn.getresponse()
- if r.status == 200:
- self.announce('Server response (%s): %s' % (r.status, r.reason),
- log.INFO)
- elif r.status == 301:
- location = r.getheader('Location')
- if location is None:
- location = 'http://packages.python.org/%s/' % meta.get_name()
- self.announce('Upload successful. Visit %s' % location,
- log.INFO)
- else:
- self.announce('Upload failed (%s): %s' % (r.status, r.reason),
- log.ERROR)
- if self.show_response:
- print '-'*75, r.read(), '-'*75
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/depends.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/depends.py
deleted file mode 100644
index 4b7b343..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/depends.py
+++ /dev/null
@@ -1,246 +0,0 @@
-from __future__ import generators
-import sys, imp, marshal
-from imp import PKG_DIRECTORY, PY_COMPILED, PY_SOURCE, PY_FROZEN
-from distutils.version import StrictVersion, LooseVersion
-
-__all__ = [
- 'Require', 'find_module', 'get_module_constant', 'extract_constant'
-]
-
-class Require:
- """A prerequisite to building or installing a distribution"""
-
- def __init__(self,name,requested_version,module,homepage='',
- attribute=None,format=None
- ):
-
- if format is None and requested_version is not None:
- format = StrictVersion
-
- if format is not None:
- requested_version = format(requested_version)
- if attribute is None:
- attribute = '__version__'
-
- self.__dict__.update(locals())
- del self.self
-
-
- def full_name(self):
- """Return full package/distribution name, w/version"""
- if self.requested_version is not None:
- return '%s-%s' % (self.name,self.requested_version)
- return self.name
-
-
- def version_ok(self,version):
- """Is 'version' sufficiently up-to-date?"""
- return self.attribute is None or self.format is None or \
- str(version)<>"unknown" and version >= self.requested_version
-
-
- def get_version(self, paths=None, default="unknown"):
-
- """Get version number of installed module, 'None', or 'default'
-
- Search 'paths' for module. If not found, return 'None'. If found,
- return the extracted version attribute, or 'default' if no version
- attribute was specified, or the value cannot be determined without
- importing the module. The version is formatted according to the
- requirement's version format (if any), unless it is 'None' or the
- supplied 'default'.
- """
-
- if self.attribute is None:
- try:
- f,p,i = find_module(self.module,paths)
- if f: f.close()
- return default
- except ImportError:
- return None
-
- v = get_module_constant(self.module,self.attribute,default,paths)
-
- if v is not None and v is not default and self.format is not None:
- return self.format(v)
-
- return v
-
-
- def is_present(self,paths=None):
- """Return true if dependency is present on 'paths'"""
- return self.get_version(paths) is not None
-
-
- def is_current(self,paths=None):
- """Return true if dependency is present and up-to-date on 'paths'"""
- version = self.get_version(paths)
- if version is None:
- return False
- return self.version_ok(version)
-
-
-def _iter_code(code):
-
- """Yield '(op,arg)' pair for each operation in code object 'code'"""
-
- from array import array
- from dis import HAVE_ARGUMENT, EXTENDED_ARG
-
- bytes = array('b',code.co_code)
- eof = len(code.co_code)
-
- ptr = 0
- extended_arg = 0
-
- while ptr<eof:
-
- op = bytes[ptr]
-
- if op>=HAVE_ARGUMENT:
-
- arg = bytes[ptr+1] + bytes[ptr+2]*256 + extended_arg
- ptr += 3
-
- if op==EXTENDED_ARG:
- extended_arg = arg * 65536L
- continue
-
- else:
- arg = None
- ptr += 1
-
- yield op,arg
-
-
-
-
-
-
-
-
-
-
-def find_module(module, paths=None):
- """Just like 'imp.find_module()', but with package support"""
-
- parts = module.split('.')
-
- while parts:
- part = parts.pop(0)
- f, path, (suffix,mode,kind) = info = imp.find_module(part, paths)
-
- if kind==PKG_DIRECTORY:
- parts = parts or ['__init__']
- paths = [path]
-
- elif parts:
- raise ImportError("Can't find %r in %s" % (parts,module))
-
- return info
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def get_module_constant(module, symbol, default=-1, paths=None):
-
- """Find 'module' by searching 'paths', and extract 'symbol'
-
- Return 'None' if 'module' does not exist on 'paths', or it does not define
- 'symbol'. If the module defines 'symbol' as a constant, return the
- constant. Otherwise, return 'default'."""
-
- try:
- f, path, (suffix,mode,kind) = find_module(module,paths)
- except ImportError:
- # Module doesn't exist
- return None
-
- try:
- if kind==PY_COMPILED:
- f.read(8) # skip magic & date
- code = marshal.load(f)
- elif kind==PY_FROZEN:
- code = imp.get_frozen_object(module)
- elif kind==PY_SOURCE:
- code = compile(f.read(), path, 'exec')
- else:
- # Not something we can parse; we'll have to import it. :(
- if module not in sys.modules:
- imp.load_module(module,f,path,(suffix,mode,kind))
- return getattr(sys.modules[module],symbol,None)
-
- finally:
- if f:
- f.close()
-
- return extract_constant(code,symbol,default)
-
-
-
-
-
-
-
-
-def extract_constant(code,symbol,default=-1):
- """Extract the constant value of 'symbol' from 'code'
-
- If the name 'symbol' is bound to a constant value by the Python code
- object 'code', return that value. If 'symbol' is bound to an expression,
- return 'default'. Otherwise, return 'None'.
-
- Return value is based on the first assignment to 'symbol'. 'symbol' must
- be a global, or at least a non-"fast" local in the code block. That is,
- only 'STORE_NAME' and 'STORE_GLOBAL' opcodes are checked, and 'symbol'
- must be present in 'code.co_names'.
- """
-
- if symbol not in code.co_names:
- # name's not there, can't possibly be an assigment
- return None
-
- name_idx = list(code.co_names).index(symbol)
-
- STORE_NAME = 90
- STORE_GLOBAL = 97
- LOAD_CONST = 100
-
- const = default
-
- for op, arg in _iter_code(code):
-
- if op==LOAD_CONST:
- const = code.co_consts[arg]
- elif arg==name_idx and (op==STORE_NAME or op==STORE_GLOBAL):
- return const
- else:
- const = default
-
-if sys.platform.startswith('java') or sys.platform == 'cli':
- # XXX it'd be better to test assertions about bytecode instead...
- del extract_constant, get_module_constant
- __all__.remove('extract_constant')
- __all__.remove('get_module_constant')
-
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/dist.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/dist.py
deleted file mode 100644
index 0ad1812..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/dist.py
+++ /dev/null
@@ -1,817 +0,0 @@
-__all__ = ['Distribution']
-
-import re
-from distutils.core import Distribution as _Distribution
-from setuptools.depends import Require
-from setuptools.command.install import install
-from setuptools.command.sdist import sdist
-from setuptools.command.install_lib import install_lib
-from distutils.errors import DistutilsOptionError, DistutilsPlatformError
-from distutils.errors import DistutilsSetupError
-import setuptools, pkg_resources, distutils.core, distutils.dist, distutils.cmd
-import os, distutils.log
-
-def _get_unpatched(cls):
- """Protect against re-patching the distutils if reloaded
-
- Also ensures that no other distutils extension monkeypatched the distutils
- first.
- """
- while cls.__module__.startswith('setuptools'):
- cls, = cls.__bases__
- if not cls.__module__.startswith('distutils'):
- raise AssertionError(
- "distutils has already been patched by %r" % cls
- )
- return cls
-
-_Distribution = _get_unpatched(_Distribution)
-
-sequence = tuple, list
-
-def check_importable(dist, attr, value):
- try:
- ep = pkg_resources.EntryPoint.parse('x='+value)
- assert not ep.extras
- except (TypeError,ValueError,AttributeError,AssertionError):
- raise DistutilsSetupError(
- "%r must be importable 'module:attrs' string (got %r)"
- % (attr,value)
- )
-
-
-def assert_string_list(dist, attr, value):
- """Verify that value is a string list or None"""
- try:
- assert ''.join(value)!=value
- except (TypeError,ValueError,AttributeError,AssertionError):
- raise DistutilsSetupError(
- "%r must be a list of strings (got %r)" % (attr,value)
- )
-
-def check_nsp(dist, attr, value):
- """Verify that namespace packages are valid"""
- assert_string_list(dist,attr,value)
- for nsp in value:
- if not dist.has_contents_for(nsp):
- raise DistutilsSetupError(
- "Distribution contains no modules or packages for " +
- "namespace package %r" % nsp
- )
- if '.' in nsp:
- parent = '.'.join(nsp.split('.')[:-1])
- if parent not in value:
- distutils.log.warn(
- "%r is declared as a package namespace, but %r is not:"
- " please correct this in setup.py", nsp, parent
- )
-
-def check_extras(dist, attr, value):
- """Verify that extras_require mapping is valid"""
- try:
- for k,v in value.items():
- list(pkg_resources.parse_requirements(v))
- except (TypeError,ValueError,AttributeError):
- raise DistutilsSetupError(
- "'extras_require' must be a dictionary whose values are "
- "strings or lists of strings containing valid project/version "
- "requirement specifiers."
- )
-
-
-
-
-def assert_bool(dist, attr, value):
- """Verify that value is True, False, 0, or 1"""
- if bool(value) != value:
- raise DistutilsSetupError(
- "%r must be a boolean value (got %r)" % (attr,value)
- )
-def check_requirements(dist, attr, value):
- """Verify that install_requires is a valid requirements list"""
- try:
- list(pkg_resources.parse_requirements(value))
- except (TypeError,ValueError):
- raise DistutilsSetupError(
- "%r must be a string or list of strings "
- "containing valid project/version requirement specifiers" % (attr,)
- )
-def check_entry_points(dist, attr, value):
- """Verify that entry_points map is parseable"""
- try:
- pkg_resources.EntryPoint.parse_map(value)
- except ValueError, e:
- raise DistutilsSetupError(e)
-
-def check_test_suite(dist, attr, value):
- if not isinstance(value,basestring):
- raise DistutilsSetupError("test_suite must be a string")
-
-def check_package_data(dist, attr, value):
- """Verify that value is a dictionary of package names to glob lists"""
- if isinstance(value,dict):
- for k,v in value.items():
- if not isinstance(k,str): break
- try: iter(v)
- except TypeError:
- break
- else:
- return
- raise DistutilsSetupError(
- attr+" must be a dictionary mapping package names to lists of "
- "wildcard patterns"
- )
-
-class Distribution(_Distribution):
- """Distribution with support for features, tests, and package data
-
- This is an enhanced version of 'distutils.dist.Distribution' that
- effectively adds the following new optional keyword arguments to 'setup()':
-
- 'install_requires' -- a string or sequence of strings specifying project
- versions that the distribution requires when installed, in the format
- used by 'pkg_resources.require()'. They will be installed
- automatically when the package is installed. If you wish to use
- packages that are not available in PyPI, or want to give your users an
- alternate download location, you can add a 'find_links' option to the
- '[easy_install]' section of your project's 'setup.cfg' file, and then
- setuptools will scan the listed web pages for links that satisfy the
- requirements.
-
- 'extras_require' -- a dictionary mapping names of optional "extras" to the
- additional requirement(s) that using those extras incurs. For example,
- this::
-
- extras_require = dict(reST = ["docutils>=0.3", "reSTedit"])
-
- indicates that the distribution can optionally provide an extra
- capability called "reST", but it can only be used if docutils and
- reSTedit are installed. If the user installs your package using
- EasyInstall and requests one of your extras, the corresponding
- additional requirements will be installed if needed.
-
- 'features' -- a dictionary mapping option names to 'setuptools.Feature'
- objects. Features are a portion of the distribution that can be
- included or excluded based on user options, inter-feature dependencies,
- and availability on the current system. Excluded features are omitted
- from all setup commands, including source and binary distributions, so
- you can create multiple distributions from the same source tree.
- Feature names should be valid Python identifiers, except that they may
- contain the '-' (minus) sign. Features can be included or excluded
- via the command line options '--with-X' and '--without-X', where 'X' is
- the name of the feature. Whether a feature is included by default, and
- whether you are allowed to control this from the command line, is
- determined by the Feature object. See the 'Feature' class for more
- information.
-
- 'test_suite' -- the name of a test suite to run for the 'test' command.
- If the user runs 'python setup.py test', the package will be installed,
- and the named test suite will be run. The format is the same as
- would be used on a 'unittest.py' command line. That is, it is the
- dotted name of an object to import and call to generate a test suite.
-
- 'package_data' -- a dictionary mapping package names to lists of filenames
- or globs to use to find data files contained in the named packages.
- If the dictionary has filenames or globs listed under '""' (the empty
- string), those names will be searched for in every package, in addition
- to any names for the specific package. Data files found using these
- names/globs will be installed along with the package, in the same
- location as the package. Note that globs are allowed to reference
- the contents of non-package subdirectories, as long as you use '/' as
- a path separator. (Globs are automatically converted to
- platform-specific paths at runtime.)
-
- In addition to these new keywords, this class also has several new methods
- for manipulating the distribution's contents. For example, the 'include()'
- and 'exclude()' methods can be thought of as in-place add and subtract
- commands that add or remove packages, modules, extensions, and so on from
- the distribution. They are used by the feature subsystem to configure the
- distribution for the included and excluded features.
- """
-
- _patched_dist = None
-
- def patch_missing_pkg_info(self, attrs):
- # Fake up a replacement for the data that would normally come from
- # PKG-INFO, but which might not yet be built if this is a fresh
- # checkout.
- #
- if not attrs or 'name' not in attrs or 'version' not in attrs:
- return
- key = pkg_resources.safe_name(str(attrs['name'])).lower()
- dist = pkg_resources.working_set.by_key.get(key)
- if dist is not None and not dist.has_metadata('PKG-INFO'):
- dist._version = pkg_resources.safe_version(str(attrs['version']))
- self._patched_dist = dist
-
- def __init__ (self, attrs=None):
- have_package_data = hasattr(self, "package_data")
- if not have_package_data:
- self.package_data = {}
- self.require_features = []
- self.features = {}
- self.dist_files = []
- self.src_root = attrs and attrs.pop("src_root", None)
- self.patch_missing_pkg_info(attrs)
- # Make sure we have any eggs needed to interpret 'attrs'
- if attrs is not None:
- self.dependency_links = attrs.pop('dependency_links', [])
- assert_string_list(self,'dependency_links',self.dependency_links)
- if attrs and 'setup_requires' in attrs:
- self.fetch_build_eggs(attrs.pop('setup_requires'))
- for ep in pkg_resources.iter_entry_points('distutils.setup_keywords'):
- if not hasattr(self,ep.name):
- setattr(self,ep.name,None)
- _Distribution.__init__(self,attrs)
- if isinstance(self.metadata.version, (int,long,float)):
- # Some people apparently take "version number" too literally :)
- self.metadata.version = str(self.metadata.version)
-
- def parse_command_line(self):
- """Process features after parsing command line options"""
- result = _Distribution.parse_command_line(self)
- if self.features:
- self._finalize_features()
- return result
-
- def _feature_attrname(self,name):
- """Convert feature name to corresponding option attribute name"""
- return 'with_'+name.replace('-','_')
-
- def fetch_build_eggs(self, requires):
- """Resolve pre-setup requirements"""
- from pkg_resources import working_set, parse_requirements
- for dist in working_set.resolve(
- parse_requirements(requires), installer=self.fetch_build_egg
- ):
- working_set.add(dist)
-
- def finalize_options(self):
- _Distribution.finalize_options(self)
- if self.features:
- self._set_global_opts_from_features()
-
- for ep in pkg_resources.iter_entry_points('distutils.setup_keywords'):
- value = getattr(self,ep.name,None)
- if value is not None:
- ep.require(installer=self.fetch_build_egg)
- ep.load()(self, ep.name, value)
- if getattr(self, 'convert_2to3_doctests', None):
- # XXX may convert to set here when we can rely on set being builtin
- self.convert_2to3_doctests = [os.path.abspath(p) for p in self.convert_2to3_doctests]
- else:
- self.convert_2to3_doctests = []
-
- def fetch_build_egg(self, req):
- """Fetch an egg needed for building"""
- try:
- cmd = self._egg_fetcher
- cmd.package_index.to_scan = []
- except AttributeError:
- from setuptools.command.easy_install import easy_install
- dist = self.__class__({'script_args':['easy_install']})
- dist.parse_config_files()
- opts = dist.get_option_dict('easy_install')
- keep = (
- 'find_links', 'site_dirs', 'index_url', 'optimize',
- 'site_dirs', 'allow_hosts'
- )
- for key in opts.keys():
- if key not in keep:
- del opts[key] # don't use any other settings
- if self.dependency_links:
- links = self.dependency_links[:]
- if 'find_links' in opts:
- links = opts['find_links'][1].split() + links
- opts['find_links'] = ('setup', links)
- cmd = easy_install(
- dist, args=["x"], install_dir=os.curdir, exclude_scripts=True,
- always_copy=False, build_directory=None, editable=False,
- upgrade=False, multi_version=True, no_report = True
- )
- cmd.ensure_finalized()
- self._egg_fetcher = cmd
- return cmd.easy_install(req)
-
- def _set_global_opts_from_features(self):
- """Add --with-X/--without-X options based on optional features"""
-
- go = []
- no = self.negative_opt.copy()
-
- for name,feature in self.features.items():
- self._set_feature(name,None)
- feature.validate(self)
-
- if feature.optional:
- descr = feature.description
- incdef = ' (default)'
- excdef=''
- if not feature.include_by_default():
- excdef, incdef = incdef, excdef
-
- go.append(('with-'+name, None, 'include '+descr+incdef))
- go.append(('without-'+name, None, 'exclude '+descr+excdef))
- no['without-'+name] = 'with-'+name
-
- self.global_options = self.feature_options = go + self.global_options
- self.negative_opt = self.feature_negopt = no
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- def _finalize_features(self):
- """Add/remove features and resolve dependencies between them"""
-
- # First, flag all the enabled items (and thus their dependencies)
- for name,feature in self.features.items():
- enabled = self.feature_is_included(name)
- if enabled or (enabled is None and feature.include_by_default()):
- feature.include_in(self)
- self._set_feature(name,1)
-
- # Then disable the rest, so that off-by-default features don't
- # get flagged as errors when they're required by an enabled feature
- for name,feature in self.features.items():
- if not self.feature_is_included(name):
- feature.exclude_from(self)
- self._set_feature(name,0)
-
-
- def get_command_class(self, command):
- """Pluggable version of get_command_class()"""
- if command in self.cmdclass:
- return self.cmdclass[command]
-
- for ep in pkg_resources.iter_entry_points('distutils.commands',command):
- ep.require(installer=self.fetch_build_egg)
- self.cmdclass[command] = cmdclass = ep.load()
- return cmdclass
- else:
- return _Distribution.get_command_class(self, command)
-
- def print_commands(self):
- for ep in pkg_resources.iter_entry_points('distutils.commands'):
- if ep.name not in self.cmdclass:
- cmdclass = ep.load(False) # don't require extras, we're not running
- self.cmdclass[ep.name] = cmdclass
- return _Distribution.print_commands(self)
-
-
-
-
-
- def _set_feature(self,name,status):
- """Set feature's inclusion status"""
- setattr(self,self._feature_attrname(name),status)
-
- def feature_is_included(self,name):
- """Return 1 if feature is included, 0 if excluded, 'None' if unknown"""
- return getattr(self,self._feature_attrname(name))
-
- def include_feature(self,name):
- """Request inclusion of feature named 'name'"""
-
- if self.feature_is_included(name)==0:
- descr = self.features[name].description
- raise DistutilsOptionError(
- descr + " is required, but was excluded or is not available"
- )
- self.features[name].include_in(self)
- self._set_feature(name,1)
-
- def include(self,**attrs):
- """Add items to distribution that are named in keyword arguments
-
- For example, 'dist.exclude(py_modules=["x"])' would add 'x' to
- the distribution's 'py_modules' attribute, if it was not already
- there.
-
- Currently, this method only supports inclusion for attributes that are
- lists or tuples. If you need to add support for adding to other
- attributes in this or a subclass, you can add an '_include_X' method,
- where 'X' is the name of the attribute. The method will be called with
- the value passed to 'include()'. So, 'dist.include(foo={"bar":"baz"})'
- will try to call 'dist._include_foo({"bar":"baz"})', which can then
- handle whatever special inclusion logic is needed.
- """
- for k,v in attrs.items():
- include = getattr(self, '_include_'+k, None)
- if include:
- include(v)
- else:
- self._include_misc(k,v)
-
- def exclude_package(self,package):
- """Remove packages, modules, and extensions in named package"""
-
- pfx = package+'.'
- if self.packages:
- self.packages = [
- p for p in self.packages
- if p != package and not p.startswith(pfx)
- ]
-
- if self.py_modules:
- self.py_modules = [
- p for p in self.py_modules
- if p != package and not p.startswith(pfx)
- ]
-
- if self.ext_modules:
- self.ext_modules = [
- p for p in self.ext_modules
- if p.name != package and not p.name.startswith(pfx)
- ]
-
-
- def has_contents_for(self,package):
- """Return true if 'exclude_package(package)' would do something"""
-
- pfx = package+'.'
-
- for p in self.iter_distribution_names():
- if p==package or p.startswith(pfx):
- return True
-
-
-
-
-
-
-
-
-
-
- def _exclude_misc(self,name,value):
- """Handle 'exclude()' for list/tuple attrs without a special handler"""
- if not isinstance(value,sequence):
- raise DistutilsSetupError(
- "%s: setting must be a list or tuple (%r)" % (name, value)
- )
- try:
- old = getattr(self,name)
- except AttributeError:
- raise DistutilsSetupError(
- "%s: No such distribution setting" % name
- )
- if old is not None and not isinstance(old,sequence):
- raise DistutilsSetupError(
- name+": this setting cannot be changed via include/exclude"
- )
- elif old:
- setattr(self,name,[item for item in old if item not in value])
-
- def _include_misc(self,name,value):
- """Handle 'include()' for list/tuple attrs without a special handler"""
-
- if not isinstance(value,sequence):
- raise DistutilsSetupError(
- "%s: setting must be a list (%r)" % (name, value)
- )
- try:
- old = getattr(self,name)
- except AttributeError:
- raise DistutilsSetupError(
- "%s: No such distribution setting" % name
- )
- if old is None:
- setattr(self,name,value)
- elif not isinstance(old,sequence):
- raise DistutilsSetupError(
- name+": this setting cannot be changed via include/exclude"
- )
- else:
- setattr(self,name,old+[item for item in value if item not in old])
-
- def exclude(self,**attrs):
- """Remove items from distribution that are named in keyword arguments
-
- For example, 'dist.exclude(py_modules=["x"])' would remove 'x' from
- the distribution's 'py_modules' attribute. Excluding packages uses
- the 'exclude_package()' method, so all of the package's contained
- packages, modules, and extensions are also excluded.
-
- Currently, this method only supports exclusion from attributes that are
- lists or tuples. If you need to add support for excluding from other
- attributes in this or a subclass, you can add an '_exclude_X' method,
- where 'X' is the name of the attribute. The method will be called with
- the value passed to 'exclude()'. So, 'dist.exclude(foo={"bar":"baz"})'
- will try to call 'dist._exclude_foo({"bar":"baz"})', which can then
- handle whatever special exclusion logic is needed.
- """
- for k,v in attrs.items():
- exclude = getattr(self, '_exclude_'+k, None)
- if exclude:
- exclude(v)
- else:
- self._exclude_misc(k,v)
-
- def _exclude_packages(self,packages):
- if not isinstance(packages,sequence):
- raise DistutilsSetupError(
- "packages: setting must be a list or tuple (%r)" % (packages,)
- )
- map(self.exclude_package, packages)
-
-
-
-
-
-
-
-
-
-
-
-
- def _parse_command_opts(self, parser, args):
- # Remove --with-X/--without-X options when processing command args
- self.global_options = self.__class__.global_options
- self.negative_opt = self.__class__.negative_opt
-
- # First, expand any aliases
- command = args[0]
- aliases = self.get_option_dict('aliases')
- while command in aliases:
- src,alias = aliases[command]
- del aliases[command] # ensure each alias can expand only once!
- import shlex
- args[:1] = shlex.split(alias,True)
- command = args[0]
-
- nargs = _Distribution._parse_command_opts(self, parser, args)
-
- # Handle commands that want to consume all remaining arguments
- cmd_class = self.get_command_class(command)
- if getattr(cmd_class,'command_consumes_arguments',None):
- self.get_option_dict(command)['args'] = ("command line", nargs)
- if nargs is not None:
- return []
-
- return nargs
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- def get_cmdline_options(self):
- """Return a '{cmd: {opt:val}}' map of all command-line options
-
- Option names are all long, but do not include the leading '--', and
- contain dashes rather than underscores. If the option doesn't take
- an argument (e.g. '--quiet'), the 'val' is 'None'.
-
- Note that options provided by config files are intentionally excluded.
- """
-
- d = {}
-
- for cmd,opts in self.command_options.items():
-
- for opt,(src,val) in opts.items():
-
- if src != "command line":
- continue
-
- opt = opt.replace('_','-')
-
- if val==0:
- cmdobj = self.get_command_obj(cmd)
- neg_opt = self.negative_opt.copy()
- neg_opt.update(getattr(cmdobj,'negative_opt',{}))
- for neg,pos in neg_opt.items():
- if pos==opt:
- opt=neg
- val=None
- break
- else:
- raise AssertionError("Shouldn't be able to get here")
-
- elif val==1:
- val = None
-
- d.setdefault(cmd,{})[opt] = val
-
- return d
-
-
- def iter_distribution_names(self):
- """Yield all packages, modules, and extension names in distribution"""
-
- for pkg in self.packages or ():
- yield pkg
-
- for module in self.py_modules or ():
- yield module
-
- for ext in self.ext_modules or ():
- if isinstance(ext,tuple):
- name, buildinfo = ext
- else:
- name = ext.name
- if name.endswith('module'):
- name = name[:-6]
- yield name
-
-# Install it throughout the distutils
-for module in distutils.dist, distutils.core, distutils.cmd:
- module.Distribution = Distribution
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-class Feature:
- """A subset of the distribution that can be excluded if unneeded/wanted
-
- Features are created using these keyword arguments:
-
- 'description' -- a short, human readable description of the feature, to
- be used in error messages, and option help messages.
-
- 'standard' -- if true, the feature is included by default if it is
- available on the current system. Otherwise, the feature is only
- included if requested via a command line '--with-X' option, or if
- another included feature requires it. The default setting is 'False'.
-
- 'available' -- if true, the feature is available for installation on the
- current system. The default setting is 'True'.
-
- 'optional' -- if true, the feature's inclusion can be controlled from the
- command line, using the '--with-X' or '--without-X' options. If
- false, the feature's inclusion status is determined automatically,
- based on 'availabile', 'standard', and whether any other feature
- requires it. The default setting is 'True'.
-
- 'require_features' -- a string or sequence of strings naming features
- that should also be included if this feature is included. Defaults to
- empty list. May also contain 'Require' objects that should be
- added/removed from the distribution.
-
- 'remove' -- a string or list of strings naming packages to be removed
- from the distribution if this feature is *not* included. If the
- feature *is* included, this argument is ignored. This argument exists
- to support removing features that "crosscut" a distribution, such as
- defining a 'tests' feature that removes all the 'tests' subpackages
- provided by other features. The default for this argument is an empty
- list. (Note: the named package(s) or modules must exist in the base
- distribution when the 'setup()' function is initially called.)
-
- other keywords -- any other keyword arguments are saved, and passed to
- the distribution's 'include()' and 'exclude()' methods when the
- feature is included or excluded, respectively. So, for example, you
- could pass 'packages=["a","b"]' to cause packages 'a' and 'b' to be
- added or removed from the distribution as appropriate.
-
- A feature must include at least one 'requires', 'remove', or other
- keyword argument. Otherwise, it can't affect the distribution in any way.
- Note also that you can subclass 'Feature' to create your own specialized
- feature types that modify the distribution in other ways when included or
- excluded. See the docstrings for the various methods here for more detail.
- Aside from the methods, the only feature attributes that distributions look
- at are 'description' and 'optional'.
- """
- def __init__(self, description, standard=False, available=True,
- optional=True, require_features=(), remove=(), **extras
- ):
-
- self.description = description
- self.standard = standard
- self.available = available
- self.optional = optional
- if isinstance(require_features,(str,Require)):
- require_features = require_features,
-
- self.require_features = [
- r for r in require_features if isinstance(r,str)
- ]
- er = [r for r in require_features if not isinstance(r,str)]
- if er: extras['require_features'] = er
-
- if isinstance(remove,str):
- remove = remove,
- self.remove = remove
- self.extras = extras
-
- if not remove and not require_features and not extras:
- raise DistutilsSetupError(
- "Feature %s: must define 'require_features', 'remove', or at least one"
- " of 'packages', 'py_modules', etc."
- )
-
- def include_by_default(self):
- """Should this feature be included by default?"""
- return self.available and self.standard
-
- def include_in(self,dist):
-
- """Ensure feature and its requirements are included in distribution
-
- You may override this in a subclass to perform additional operations on
- the distribution. Note that this method may be called more than once
- per feature, and so should be idempotent.
-
- """
-
- if not self.available:
- raise DistutilsPlatformError(
- self.description+" is required,"
- "but is not available on this platform"
- )
-
- dist.include(**self.extras)
-
- for f in self.require_features:
- dist.include_feature(f)
-
-
-
- def exclude_from(self,dist):
-
- """Ensure feature is excluded from distribution
-
- You may override this in a subclass to perform additional operations on
- the distribution. This method will be called at most once per
- feature, and only after all included features have been asked to
- include themselves.
- """
-
- dist.exclude(**self.extras)
-
- if self.remove:
- for item in self.remove:
- dist.exclude_package(item)
-
-
-
- def validate(self,dist):
-
- """Verify that feature makes sense in context of distribution
-
- This method is called by the distribution just before it parses its
- command line. It checks to ensure that the 'remove' attribute, if any,
- contains only valid package/module names that are present in the base
- distribution when 'setup()' is called. You may override it in a
- subclass to perform any other required validation of the feature
- against a target distribution.
- """
-
- for item in self.remove:
- if not dist.has_contents_for(item):
- raise DistutilsSetupError(
- "%s wants to be able to remove %s, but the distribution"
- " doesn't contain any packages or modules under %s"
- % (self.description, item, item)
- )
-
-
-
-def check_packages(dist, attr, value):
- for pkgname in value:
- if not re.match(r'\w+(\.\w+)*', pkgname):
- distutils.log.warn(
- "WARNING: %r not a valid package name; please use only"
- ".-separated package names in setup.py", pkgname
- )
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/extension.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/extension.py
deleted file mode 100644
index 980ee0a..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/extension.py
+++ /dev/null
@@ -1,40 +0,0 @@
-from distutils.core import Extension as _Extension
-from setuptools.dist import _get_unpatched
-_Extension = _get_unpatched(_Extension)
-
-# Prefer Cython to Pyrex
-pyrex_impls = 'Cython.Distutils.build_ext', 'Pyrex.Distutils.build_ext'
-for pyrex_impl in pyrex_impls:
- try:
- # from (pyrex_impl) import build_ext
- build_ext = __import__(pyrex_impl, fromlist=['build_ext']).build_ext
- break
- except:
- pass
-have_pyrex = 'build_ext' in globals()
-
-
-class Extension(_Extension):
- """Extension that uses '.c' files in place of '.pyx' files"""
-
- if not have_pyrex:
- # convert .pyx extensions to .c
- def __init__(self,*args,**kw):
- _Extension.__init__(self,*args,**kw)
- sources = []
- for s in self.sources:
- if s.endswith('.pyx'):
- sources.append(s[:-3]+'c')
- else:
- sources.append(s)
- self.sources = sources
-
-class Library(Extension):
- """Just like a regular Extension, but built as a library instead"""
-
-import sys, distutils.core, distutils.extension
-distutils.core.Extension = Extension
-distutils.extension.Extension = Extension
-if 'distutils.command.build_ext' in sys.modules:
- sys.modules['distutils.command.build_ext'].Extension = Extension
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/gui-32.exe b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/gui-32.exe
deleted file mode 100644
index 3f64af7..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/gui-32.exe
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/gui-64.exe b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/gui-64.exe
deleted file mode 100644
index 3ab4378..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/gui-64.exe
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/gui.exe b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/gui.exe
deleted file mode 100644
index 3f64af7..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/gui.exe
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/package_index.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/package_index.py
deleted file mode 100644
index bb0ae12..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/package_index.py
+++ /dev/null
@@ -1,845 +0,0 @@
-"""PyPI and direct package downloading"""
-import sys, os.path, re, urlparse, urllib, urllib2, shutil, random, socket, cStringIO
-import httplib
-from pkg_resources import *
-from distutils import log
-from distutils.errors import DistutilsError
-try:
- from hashlib import md5
-except ImportError:
- from md5 import md5
-from fnmatch import translate
-
-EGG_FRAGMENT = re.compile(r'^egg=([-A-Za-z0-9_.]+)$')
-HREF = re.compile("""href\\s*=\\s*['"]?([^'"> ]+)""", re.I)
-# this is here to fix emacs' cruddy broken syntax highlighting
-PYPI_MD5 = re.compile(
- '<a href="([^"#]+)">([^<]+)</a>\n\s+\\(<a (?:title="MD5 hash"\n\s+)'
- 'href="[^?]+\?:action=show_md5&amp;digest=([0-9a-f]{32})">md5</a>\\)'
-)
-URL_SCHEME = re.compile('([-+.a-z0-9]{2,}):',re.I).match
-EXTENSIONS = ".tar.gz .tar.bz2 .tar .zip .tgz".split()
-
-__all__ = [
- 'PackageIndex', 'distros_for_url', 'parse_bdist_wininst',
- 'interpret_distro_name',
-]
-
-_SOCKET_TIMEOUT = 15
-
-def parse_bdist_wininst(name):
- """Return (base,pyversion) or (None,None) for possible .exe name"""
-
- lower = name.lower()
- base, py_ver, plat = None, None, None
-
- if lower.endswith('.exe'):
- if lower.endswith('.win32.exe'):
- base = name[:-10]
- plat = 'win32'
- elif lower.startswith('.win32-py',-16):
- py_ver = name[-7:-4]
- base = name[:-16]
- plat = 'win32'
- elif lower.endswith('.win-amd64.exe'):
- base = name[:-14]
- plat = 'win-amd64'
- elif lower.startswith('.win-amd64-py',-20):
- py_ver = name[-7:-4]
- base = name[:-20]
- plat = 'win-amd64'
- return base,py_ver,plat
-
-
-def egg_info_for_url(url):
- scheme, server, path, parameters, query, fragment = urlparse.urlparse(url)
- base = urllib2.unquote(path.split('/')[-1])
- if '#' in base: base, fragment = base.split('#',1)
- return base,fragment
-
-def distros_for_url(url, metadata=None):
- """Yield egg or source distribution objects that might be found at a URL"""
- base, fragment = egg_info_for_url(url)
- for dist in distros_for_location(url, base, metadata): yield dist
- if fragment:
- match = EGG_FRAGMENT.match(fragment)
- if match:
- for dist in interpret_distro_name(
- url, match.group(1), metadata, precedence = CHECKOUT_DIST
- ):
- yield dist
-
-def distros_for_location(location, basename, metadata=None):
- """Yield egg or source distribution objects based on basename"""
- if basename.endswith('.egg.zip'):
- basename = basename[:-4] # strip the .zip
- if basename.endswith('.egg') and '-' in basename:
- # only one, unambiguous interpretation
- return [Distribution.from_location(location, basename, metadata)]
-
- if basename.endswith('.exe'):
- win_base, py_ver, platform = parse_bdist_wininst(basename)
- if win_base is not None:
- return interpret_distro_name(
- location, win_base, metadata, py_ver, BINARY_DIST, platform
- )
-
- # Try source distro extensions (.zip, .tgz, etc.)
- #
- for ext in EXTENSIONS:
- if basename.endswith(ext):
- basename = basename[:-len(ext)]
- return interpret_distro_name(location, basename, metadata)
- return [] # no extension matched
-
-def distros_for_filename(filename, metadata=None):
- """Yield possible egg or source distribution objects based on a filename"""
- return distros_for_location(
- normalize_path(filename), os.path.basename(filename), metadata
- )
-
-
-def interpret_distro_name(location, basename, metadata,
- py_version=None, precedence=SOURCE_DIST, platform=None
-):
- """Generate alternative interpretations of a source distro name
-
- Note: if `location` is a filesystem filename, you should call
- ``pkg_resources.normalize_path()`` on it before passing it to this
- routine!
- """
- # Generate alternative interpretations of a source distro name
- # Because some packages are ambiguous as to name/versions split
- # e.g. "adns-python-1.1.0", "egenix-mx-commercial", etc.
- # So, we generate each possible interepretation (e.g. "adns, python-1.1.0"
- # "adns-python, 1.1.0", and "adns-python-1.1.0, no version"). In practice,
- # the spurious interpretations should be ignored, because in the event
- # there's also an "adns" package, the spurious "python-1.1.0" version will
- # compare lower than any numeric version number, and is therefore unlikely
- # to match a request for it. It's still a potential problem, though, and
- # in the long run PyPI and the distutils should go for "safe" names and
- # versions in distribution archive names (sdist and bdist).
-
- parts = basename.split('-')
- if not py_version:
- for i,p in enumerate(parts[2:]):
- if len(p)==5 and p.startswith('py2.'):
- return # It's a bdist_dumb, not an sdist -- bail out
-
- for p in range(1,len(parts)+1):
- yield Distribution(
- location, metadata, '-'.join(parts[:p]), '-'.join(parts[p:]),
- py_version=py_version, precedence = precedence,
- platform = platform
- )
-
-REL = re.compile("""<([^>]*\srel\s*=\s*['"]?([^'">]+)[^>]*)>""", re.I)
-# this line is here to fix emacs' cruddy broken syntax highlighting
-
-def find_external_links(url, page):
- """Find rel="homepage" and rel="download" links in `page`, yielding URLs"""
-
- for match in REL.finditer(page):
- tag, rel = match.groups()
- rels = map(str.strip, rel.lower().split(','))
- if 'homepage' in rels or 'download' in rels:
- for match in HREF.finditer(tag):
- yield urlparse.urljoin(url, htmldecode(match.group(1)))
-
- for tag in ("<th>Home Page", "<th>Download URL"):
- pos = page.find(tag)
- if pos!=-1:
- match = HREF.search(page,pos)
- if match:
- yield urlparse.urljoin(url, htmldecode(match.group(1)))
-
-user_agent = "Python-urllib/%s distribute/%s" % (
- sys.version[:3], require('distribute')[0].version
-)
-
-
-class PackageIndex(Environment):
- """A distribution index that scans web pages for download URLs"""
-
- def __init__(self, index_url="http://pypi.python.org/simple", hosts=('*',),
- *args, **kw
- ):
- Environment.__init__(self,*args,**kw)
- self.index_url = index_url + "/"[:not index_url.endswith('/')]
- self.scanned_urls = {}
- self.fetched_urls = {}
- self.package_pages = {}
- self.allows = re.compile('|'.join(map(translate,hosts))).match
- self.to_scan = []
-
-
-
- def process_url(self, url, retrieve=False):
- """Evaluate a URL as a possible download, and maybe retrieve it"""
- if url in self.scanned_urls and not retrieve:
- return
- self.scanned_urls[url] = True
- if not URL_SCHEME(url):
- self.process_filename(url)
- return
- else:
- dists = list(distros_for_url(url))
- if dists:
- if not self.url_ok(url):
- return
- self.debug("Found link: %s", url)
-
- if dists or not retrieve or url in self.fetched_urls:
- map(self.add, dists)
- return # don't need the actual page
-
- if not self.url_ok(url):
- self.fetched_urls[url] = True
- return
-
- self.info("Reading %s", url)
- f = self.open_url(url, "Download error on %s: %%s -- Some packages may not be found!" % url)
- if f is None: return
- self.fetched_urls[url] = self.fetched_urls[f.url] = True
-
- if 'html' not in f.headers.get('content-type', '').lower():
- f.close() # not html, we can't process it
- return
-
- base = f.url # handle redirects
- page = f.read()
- if not isinstance(page, str): # We are in Python 3 and got bytes. We want str.
- if isinstance(f, urllib2.HTTPError):
- # Errors have no charset, assume latin1:
- charset = 'latin-1'
- else:
- charset = f.headers.get_param('charset') or 'latin-1'
- page = page.decode(charset, "ignore")
- f.close()
- for match in HREF.finditer(page):
- link = urlparse.urljoin(base, htmldecode(match.group(1)))
- self.process_url(link)
- if url.startswith(self.index_url) and getattr(f,'code',None)!=404:
- page = self.process_index(url, page)
-
- def process_filename(self, fn, nested=False):
- # process filenames or directories
- if not os.path.exists(fn):
- self.warn("Not found: %s", fn)
- return
-
- if os.path.isdir(fn) and not nested:
- path = os.path.realpath(fn)
- for item in os.listdir(path):
- self.process_filename(os.path.join(path,item), True)
-
- dists = distros_for_filename(fn)
- if dists:
- self.debug("Found: %s", fn)
- map(self.add, dists)
-
- def url_ok(self, url, fatal=False):
- s = URL_SCHEME(url)
- if (s and s.group(1).lower()=='file') or self.allows(urlparse.urlparse(url)[1]):
- return True
- msg = "\nLink to % s ***BLOCKED*** by --allow-hosts\n"
- if fatal:
- raise DistutilsError(msg % url)
- else:
- self.warn(msg, url)
-
- def scan_egg_links(self, search_path):
- for item in search_path:
- if os.path.isdir(item):
- for entry in os.listdir(item):
- if entry.endswith('.egg-link'):
- self.scan_egg_link(item, entry)
-
- def scan_egg_link(self, path, entry):
- lines = filter(None, map(str.strip, open(os.path.join(path, entry))))
- if len(lines)==2:
- for dist in find_distributions(os.path.join(path, lines[0])):
- dist.location = os.path.join(path, *lines)
- dist.precedence = SOURCE_DIST
- self.add(dist)
-
- def process_index(self,url,page):
- """Process the contents of a PyPI page"""
- def scan(link):
- # Process a URL to see if it's for a package page
- if link.startswith(self.index_url):
- parts = map(
- urllib2.unquote, link[len(self.index_url):].split('/')
- )
- if len(parts)==2 and '#' not in parts[1]:
- # it's a package page, sanitize and index it
- pkg = safe_name(parts[0])
- ver = safe_version(parts[1])
- self.package_pages.setdefault(pkg.lower(),{})[link] = True
- return to_filename(pkg), to_filename(ver)
- return None, None
-
- # process an index page into the package-page index
- for match in HREF.finditer(page):
- try:
- scan( urlparse.urljoin(url, htmldecode(match.group(1))) )
- except ValueError:
- pass
-
- pkg, ver = scan(url) # ensure this page is in the page index
- if pkg:
- # process individual package page
- for new_url in find_external_links(url, page):
- # Process the found URL
- base, frag = egg_info_for_url(new_url)
- if base.endswith('.py') and not frag:
- if ver:
- new_url+='#egg=%s-%s' % (pkg,ver)
- else:
- self.need_version_info(url)
- self.scan_url(new_url)
-
- return PYPI_MD5.sub(
- lambda m: '<a href="%s#md5=%s">%s</a>' % m.group(1,3,2), page
- )
- else:
- return "" # no sense double-scanning non-package pages
-
-
-
- def need_version_info(self, url):
- self.scan_all(
- "Page at %s links to .py file(s) without version info; an index "
- "scan is required.", url
- )
-
- def scan_all(self, msg=None, *args):
- if self.index_url not in self.fetched_urls:
- if msg: self.warn(msg,*args)
- self.info(
- "Scanning index of all packages (this may take a while)"
- )
- self.scan_url(self.index_url)
-
- def find_packages(self, requirement):
- self.scan_url(self.index_url + requirement.unsafe_name+'/')
-
- if not self.package_pages.get(requirement.key):
- # Fall back to safe version of the name
- self.scan_url(self.index_url + requirement.project_name+'/')
-
- if not self.package_pages.get(requirement.key):
- # We couldn't find the target package, so search the index page too
- self.not_found_in_index(requirement)
-
- for url in list(self.package_pages.get(requirement.key,())):
- # scan each page that might be related to the desired package
- self.scan_url(url)
-
- def obtain(self, requirement, installer=None):
- self.prescan(); self.find_packages(requirement)
- for dist in self[requirement.key]:
- if dist in requirement:
- return dist
- self.debug("%s does not match %s", requirement, dist)
- return super(PackageIndex, self).obtain(requirement,installer)
-
-
-
-
-
- def check_md5(self, cs, info, filename, tfp):
- if re.match('md5=[0-9a-f]{32}$', info):
- self.debug("Validating md5 checksum for %s", filename)
- if cs.hexdigest()<>info[4:]:
- tfp.close()
- os.unlink(filename)
- raise DistutilsError(
- "MD5 validation failed for "+os.path.basename(filename)+
- "; possible download problem?"
- )
-
- def add_find_links(self, urls):
- """Add `urls` to the list that will be prescanned for searches"""
- for url in urls:
- if (
- self.to_scan is None # if we have already "gone online"
- or not URL_SCHEME(url) # or it's a local file/directory
- or url.startswith('file:')
- or list(distros_for_url(url)) # or a direct package link
- ):
- # then go ahead and process it now
- self.scan_url(url)
- else:
- # otherwise, defer retrieval till later
- self.to_scan.append(url)
-
- def prescan(self):
- """Scan urls scheduled for prescanning (e.g. --find-links)"""
- if self.to_scan:
- map(self.scan_url, self.to_scan)
- self.to_scan = None # from now on, go ahead and process immediately
-
- def not_found_in_index(self, requirement):
- if self[requirement.key]: # we've seen at least one distro
- meth, msg = self.info, "Couldn't retrieve index page for %r"
- else: # no distros seen for this name, might be misspelled
- meth, msg = (self.warn,
- "Couldn't find index page for %r (maybe misspelled?)")
- meth(msg, requirement.unsafe_name)
- self.scan_all()
-
- def download(self, spec, tmpdir):
- """Locate and/or download `spec` to `tmpdir`, returning a local path
-
- `spec` may be a ``Requirement`` object, or a string containing a URL,
- an existing local filename, or a project/version requirement spec
- (i.e. the string form of a ``Requirement`` object). If it is the URL
- of a .py file with an unambiguous ``#egg=name-version`` tag (i.e., one
- that escapes ``-`` as ``_`` throughout), a trivial ``setup.py`` is
- automatically created alongside the downloaded file.
-
- If `spec` is a ``Requirement`` object or a string containing a
- project/version requirement spec, this method returns the location of
- a matching distribution (possibly after downloading it to `tmpdir`).
- If `spec` is a locally existing file or directory name, it is simply
- returned unchanged. If `spec` is a URL, it is downloaded to a subpath
- of `tmpdir`, and the local filename is returned. Various errors may be
- raised if a problem occurs during downloading.
- """
- if not isinstance(spec,Requirement):
- scheme = URL_SCHEME(spec)
- if scheme:
- # It's a url, download it to tmpdir
- found = self._download_url(scheme.group(1), spec, tmpdir)
- base, fragment = egg_info_for_url(spec)
- if base.endswith('.py'):
- found = self.gen_setup(found,fragment,tmpdir)
- return found
- elif os.path.exists(spec):
- # Existing file or directory, just return it
- return spec
- else:
- try:
- spec = Requirement.parse(spec)
- except ValueError:
- raise DistutilsError(
- "Not a URL, existing file, or requirement spec: %r" %
- (spec,)
- )
- return getattr(self.fetch_distribution(spec, tmpdir),'location',None)
-
-
- def fetch_distribution(self,
- requirement, tmpdir, force_scan=False, source=False, develop_ok=False,
- local_index=None
- ):
- """Obtain a distribution suitable for fulfilling `requirement`
-
- `requirement` must be a ``pkg_resources.Requirement`` instance.
- If necessary, or if the `force_scan` flag is set, the requirement is
- searched for in the (online) package index as well as the locally
- installed packages. If a distribution matching `requirement` is found,
- the returned distribution's ``location`` is the value you would have
- gotten from calling the ``download()`` method with the matching
- distribution's URL or filename. If no matching distribution is found,
- ``None`` is returned.
-
- If the `source` flag is set, only source distributions and source
- checkout links will be considered. Unless the `develop_ok` flag is
- set, development and system eggs (i.e., those using the ``.egg-info``
- format) will be ignored.
- """
-
- # process a Requirement
- self.info("Searching for %s", requirement)
- skipped = {}
- dist = None
-
- def find(req, env=None):
- if env is None:
- env = self
- # Find a matching distribution; may be called more than once
-
- for dist in env[req.key]:
-
- if dist.precedence==DEVELOP_DIST and not develop_ok:
- if dist not in skipped:
- self.warn("Skipping development or system egg: %s",dist)
- skipped[dist] = 1
- continue
-
- if dist in req and (dist.precedence<=SOURCE_DIST or not source):
- self.info("Best match: %s", dist)
- return dist.clone(
- location=self.download(dist.location, tmpdir)
- )
-
- if force_scan:
- self.prescan()
- self.find_packages(requirement)
- dist = find(requirement)
-
- if local_index is not None:
- dist = dist or find(requirement, local_index)
-
- if dist is None and self.to_scan is not None:
- self.prescan()
- dist = find(requirement)
-
- if dist is None and not force_scan:
- self.find_packages(requirement)
- dist = find(requirement)
-
- if dist is None:
- self.warn(
- "No local packages or download links found for %s%s",
- (source and "a source distribution of " or ""),
- requirement,
- )
- return dist
-
- def fetch(self, requirement, tmpdir, force_scan=False, source=False):
- """Obtain a file suitable for fulfilling `requirement`
-
- DEPRECATED; use the ``fetch_distribution()`` method now instead. For
- backward compatibility, this routine is identical but returns the
- ``location`` of the downloaded distribution instead of a distribution
- object.
- """
- dist = self.fetch_distribution(requirement,tmpdir,force_scan,source)
- if dist is not None:
- return dist.location
- return None
-
-
-
-
-
-
-
-
- def gen_setup(self, filename, fragment, tmpdir):
- match = EGG_FRAGMENT.match(fragment)
- dists = match and [d for d in
- interpret_distro_name(filename, match.group(1), None) if d.version
- ] or []
-
- if len(dists)==1: # unambiguous ``#egg`` fragment
- basename = os.path.basename(filename)
-
- # Make sure the file has been downloaded to the temp dir.
- if os.path.dirname(filename) != tmpdir:
- dst = os.path.join(tmpdir, basename)
- from setuptools.command.easy_install import samefile
- if not samefile(filename, dst):
- shutil.copy2(filename, dst)
- filename=dst
-
- file = open(os.path.join(tmpdir, 'setup.py'), 'w')
- file.write(
- "from setuptools import setup\n"
- "setup(name=%r, version=%r, py_modules=[%r])\n"
- % (
- dists[0].project_name, dists[0].version,
- os.path.splitext(basename)[0]
- )
- )
- file.close()
- return filename
-
- elif match:
- raise DistutilsError(
- "Can't unambiguously interpret project/version identifier %r; "
- "any dashes in the name or version should be escaped using "
- "underscores. %r" % (fragment,dists)
- )
- else:
- raise DistutilsError(
- "Can't process plain .py files without an '#egg=name-version'"
- " suffix to enable automatic setup script generation."
- )
-
- dl_blocksize = 8192
- def _download_to(self, url, filename):
- self.info("Downloading %s", url)
- # Download the file
- fp, tfp, info = None, None, None
- try:
- if '#' in url:
- url, info = url.split('#', 1)
- fp = self.open_url(url)
- if isinstance(fp, urllib2.HTTPError):
- raise DistutilsError(
- "Can't download %s: %s %s" % (url, fp.code,fp.msg)
- )
- cs = md5()
- headers = fp.info()
- blocknum = 0
- bs = self.dl_blocksize
- size = -1
- if "content-length" in headers:
- # Some servers return multiple Content-Length headers :(
- content_length = headers.get("Content-Length")
- size = int(content_length)
- self.reporthook(url, filename, blocknum, bs, size)
- tfp = open(filename,'wb')
- while True:
- block = fp.read(bs)
- if block:
- cs.update(block)
- tfp.write(block)
- blocknum += 1
- self.reporthook(url, filename, blocknum, bs, size)
- else:
- break
- if info: self.check_md5(cs, info, filename, tfp)
- return headers
- finally:
- if fp: fp.close()
- if tfp: tfp.close()
-
- def reporthook(self, url, filename, blocknum, blksize, size):
- pass # no-op
-
-
- def open_url(self, url, warning=None):
- if url.startswith('file:'):
- return local_open(url)
- try:
- return open_with_auth(url)
- except (ValueError, httplib.InvalidURL), v:
- msg = ' '.join([str(arg) for arg in v.args])
- if warning:
- self.warn(warning, msg)
- else:
- raise DistutilsError('%s %s' % (url, msg))
- except urllib2.HTTPError, v:
- return v
- except urllib2.URLError, v:
- if warning:
- self.warn(warning, v.reason)
- else:
- raise DistutilsError("Download error for %s: %s"
- % (url, v.reason))
- except httplib.BadStatusLine, v:
- if warning:
- self.warn(warning, v.line)
- else:
- raise DistutilsError('%s returned a bad status line. '
- 'The server might be down, %s' % \
- (url, v.line))
- except httplib.HTTPException, v:
- if warning:
- self.warn(warning, v)
- else:
- raise DistutilsError("Download error for %s: %s"
- % (url, v))
-
- def _download_url(self, scheme, url, tmpdir):
- # Determine download filename
- #
- name = filter(None,urlparse.urlparse(url)[2].split('/'))
- if name:
- name = name[-1]
- while '..' in name:
- name = name.replace('..','.').replace('\\','_')
- else:
- name = "__downloaded__" # default if URL has no path contents
-
- if name.endswith('.egg.zip'):
- name = name[:-4] # strip the extra .zip before download
-
- filename = os.path.join(tmpdir,name)
-
- # Download the file
- #
- if scheme=='svn' or scheme.startswith('svn+'):
- return self._download_svn(url, filename)
- elif scheme=='file':
- return urllib.url2pathname(urlparse.urlparse(url)[2])
- else:
- self.url_ok(url, True) # raises error if not allowed
- return self._attempt_download(url, filename)
-
-
-
- def scan_url(self, url):
- self.process_url(url, True)
-
-
- def _attempt_download(self, url, filename):
- headers = self._download_to(url, filename)
- if 'html' in headers.get('content-type','').lower():
- return self._download_html(url, headers, filename)
- else:
- return filename
-
- def _download_html(self, url, headers, filename):
- file = open(filename)
- for line in file:
- if line.strip():
- # Check for a subversion index page
- if re.search(r'<title>([^- ]+ - )?Revision \d+:', line):
- # it's a subversion index page:
- file.close()
- os.unlink(filename)
- return self._download_svn(url, filename)
- break # not an index page
- file.close()
- os.unlink(filename)
- raise DistutilsError("Unexpected HTML page found at "+url)
-
- def _download_svn(self, url, filename):
- url = url.split('#',1)[0] # remove any fragment for svn's sake
- self.info("Doing subversion checkout from %s to %s", url, filename)
- os.system("svn checkout -q %s %s" % (url, filename))
- return filename
-
- def debug(self, msg, *args):
- log.debug(msg, *args)
-
- def info(self, msg, *args):
- log.info(msg, *args)
-
- def warn(self, msg, *args):
- log.warn(msg, *args)
-
-# This pattern matches a character entity reference (a decimal numeric
-# references, a hexadecimal numeric reference, or a named reference).
-entity_sub = re.compile(r'&(#(\d+|x[\da-fA-F]+)|[\w.:-]+);?').sub
-
-def uchr(c):
- if not isinstance(c, int):
- return c
- if c>255: return unichr(c)
- return chr(c)
-
-def decode_entity(match):
- what = match.group(1)
- if what.startswith('#x'):
- what = int(what[2:], 16)
- elif what.startswith('#'):
- what = int(what[1:])
- else:
- from htmlentitydefs import name2codepoint
- what = name2codepoint.get(what, match.group(0))
- return uchr(what)
-
-def htmldecode(text):
- """Decode HTML entities in the given text."""
- return entity_sub(decode_entity, text)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-def socket_timeout(timeout=15):
- def _socket_timeout(func):
- def _socket_timeout(*args, **kwargs):
- old_timeout = socket.getdefaulttimeout()
- socket.setdefaulttimeout(timeout)
- try:
- return func(*args, **kwargs)
- finally:
- socket.setdefaulttimeout(old_timeout)
- return _socket_timeout
- return _socket_timeout
-
-
-def open_with_auth(url):
- """Open a urllib2 request, handling HTTP authentication"""
-
- scheme, netloc, path, params, query, frag = urlparse.urlparse(url)
-
- if scheme in ('http', 'https'):
- auth, host = urllib2.splituser(netloc)
- else:
- auth = None
-
- if auth:
- auth = "Basic " + urllib2.unquote(auth).encode('base64').strip()
- new_url = urlparse.urlunparse((scheme,host,path,params,query,frag))
- request = urllib2.Request(new_url)
- request.add_header("Authorization", auth)
- else:
- request = urllib2.Request(url)
-
- request.add_header('User-Agent', user_agent)
- fp = urllib2.urlopen(request)
-
- if auth:
- # Put authentication info back into request URL if same host,
- # so that links found on the page will work
- s2, h2, path2, param2, query2, frag2 = urlparse.urlparse(fp.url)
- if s2==scheme and h2==host:
- fp.url = urlparse.urlunparse((s2,netloc,path2,param2,query2,frag2))
-
- return fp
-
-# adding a timeout to avoid freezing package_index
-open_with_auth = socket_timeout(_SOCKET_TIMEOUT)(open_with_auth)
-
-
-
-
-
-
-
-
-
-
-
-def fix_sf_url(url):
- return url # backward compatibility
-
-def local_open(url):
- """Read a local path, with special support for directories"""
- scheme, server, path, param, query, frag = urlparse.urlparse(url)
- filename = urllib.url2pathname(path)
- if os.path.isfile(filename):
- return urllib2.urlopen(url)
- elif path.endswith('/') and os.path.isdir(filename):
- files = []
- for f in os.listdir(filename):
- if f=='index.html':
- fp = open(os.path.join(filename,f),'rb')
- body = fp.read()
- fp.close()
- break
- elif os.path.isdir(os.path.join(filename,f)):
- f+='/'
- files.append("<a href=%r>%s</a>" % (f,f))
- else:
- body = ("<html><head><title>%s</title>" % url) + \
- "</head><body>%s</body></html>" % '\n'.join(files)
- status, message = 200, "OK"
- else:
- status, message, body = 404, "Path not found", "Not found"
-
- return urllib2.HTTPError(url, status, message,
- {'content-type':'text/html'}, cStringIO.StringIO(body))
-
-
-
-
-
-
-
-
-
-
-
-
-
-# this line is a kludge to keep the trailing blank lines for pje's editor \ No newline at end of file
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/sandbox.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/sandbox.py
deleted file mode 100644
index 8e0c09b..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/sandbox.py
+++ /dev/null
@@ -1,284 +0,0 @@
-import os, sys, __builtin__, tempfile, operator, pkg_resources
-_os = sys.modules[os.name]
-try:
- _file = file
-except NameError:
- _file = None
-_open = open
-from distutils.errors import DistutilsError
-__all__ = [
- "AbstractSandbox", "DirectorySandbox", "SandboxViolation", "run_setup",
-]
-def run_setup(setup_script, args):
- """Run a distutils setup script, sandboxed in its directory"""
- old_dir = os.getcwd()
- save_argv = sys.argv[:]
- save_path = sys.path[:]
- setup_dir = os.path.abspath(os.path.dirname(setup_script))
- temp_dir = os.path.join(setup_dir,'temp')
- if not os.path.isdir(temp_dir): os.makedirs(temp_dir)
- save_tmp = tempfile.tempdir
- save_modules = sys.modules.copy()
- pr_state = pkg_resources.__getstate__()
- try:
- tempfile.tempdir = temp_dir
- os.chdir(setup_dir)
- try:
- sys.argv[:] = [setup_script]+list(args)
- sys.path.insert(0, setup_dir)
- DirectorySandbox(setup_dir).run(
- lambda: execfile(
- "setup.py",
- {'__file__':setup_script, '__name__':'__main__'}
- )
- )
- except SystemExit, v:
- if v.args and v.args[0]:
- raise
- # Normal exit, just return
- finally:
- pkg_resources.__setstate__(pr_state)
- sys.modules.update(save_modules)
- for key in list(sys.modules):
- if key not in save_modules: del sys.modules[key]
- os.chdir(old_dir)
- sys.path[:] = save_path
- sys.argv[:] = save_argv
- tempfile.tempdir = save_tmp
-
-class AbstractSandbox:
- """Wrap 'os' module and 'open()' builtin for virtualizing setup scripts"""
-
- _active = False
-
- def __init__(self):
- self._attrs = [
- name for name in dir(_os)
- if not name.startswith('_') and hasattr(self,name)
- ]
-
- def _copy(self, source):
- for name in self._attrs:
- setattr(os, name, getattr(source,name))
-
- def run(self, func):
- """Run 'func' under os sandboxing"""
- try:
- self._copy(self)
- if _file:
- __builtin__.file = self._file
- __builtin__.open = self._open
- self._active = True
- return func()
- finally:
- self._active = False
- if _file:
- __builtin__.file = _file
- __builtin__.open = _open
- self._copy(_os)
-
-
- def _mk_dual_path_wrapper(name):
- original = getattr(_os,name)
- def wrap(self,src,dst,*args,**kw):
- if self._active:
- src,dst = self._remap_pair(name,src,dst,*args,**kw)
- return original(src,dst,*args,**kw)
- return wrap
-
-
- for name in ["rename", "link", "symlink"]:
- if hasattr(_os,name): locals()[name] = _mk_dual_path_wrapper(name)
-
-
- def _mk_single_path_wrapper(name, original=None):
- original = original or getattr(_os,name)
- def wrap(self,path,*args,**kw):
- if self._active:
- path = self._remap_input(name,path,*args,**kw)
- return original(path,*args,**kw)
- return wrap
-
- if _file:
- _file = _mk_single_path_wrapper('file', _file)
- _open = _mk_single_path_wrapper('open', _open)
- for name in [
- "stat", "listdir", "chdir", "open", "chmod", "chown", "mkdir",
- "remove", "unlink", "rmdir", "utime", "lchown", "chroot", "lstat",
- "startfile", "mkfifo", "mknod", "pathconf", "access"
- ]:
- if hasattr(_os,name): locals()[name] = _mk_single_path_wrapper(name)
-
-
- def _mk_single_with_return(name):
- original = getattr(_os,name)
- def wrap(self,path,*args,**kw):
- if self._active:
- path = self._remap_input(name,path,*args,**kw)
- return self._remap_output(name, original(path,*args,**kw))
- return original(path,*args,**kw)
- return wrap
-
- for name in ['readlink', 'tempnam']:
- if hasattr(_os,name): locals()[name] = _mk_single_with_return(name)
-
- def _mk_query(name):
- original = getattr(_os,name)
- def wrap(self,*args,**kw):
- retval = original(*args,**kw)
- if self._active:
- return self._remap_output(name, retval)
- return retval
- return wrap
-
- for name in ['getcwd', 'tmpnam']:
- if hasattr(_os,name): locals()[name] = _mk_query(name)
-
- def _validate_path(self,path):
- """Called to remap or validate any path, whether input or output"""
- return path
-
- def _remap_input(self,operation,path,*args,**kw):
- """Called for path inputs"""
- return self._validate_path(path)
-
- def _remap_output(self,operation,path):
- """Called for path outputs"""
- return self._validate_path(path)
-
- def _remap_pair(self,operation,src,dst,*args,**kw):
- """Called for path pairs like rename, link, and symlink operations"""
- return (
- self._remap_input(operation+'-from',src,*args,**kw),
- self._remap_input(operation+'-to',dst,*args,**kw)
- )
-
-
-if hasattr(os, 'devnull'):
- _EXCEPTIONS = [os.devnull,]
-else:
- _EXCEPTIONS = []
-
-try:
- from win32com.client.gencache import GetGeneratePath
- _EXCEPTIONS.append(GetGeneratePath())
- del GetGeneratePath
-except ImportError:
- # it appears pywin32 is not installed, so no need to exclude.
- pass
-
-class DirectorySandbox(AbstractSandbox):
- """Restrict operations to a single subdirectory - pseudo-chroot"""
-
- write_ops = dict.fromkeys([
- "open", "chmod", "chown", "mkdir", "remove", "unlink", "rmdir",
- "utime", "lchown", "chroot", "mkfifo", "mknod", "tempnam",
- ])
-
- def __init__(self, sandbox, exceptions=_EXCEPTIONS):
- self._sandbox = os.path.normcase(os.path.realpath(sandbox))
- self._prefix = os.path.join(self._sandbox,'')
- self._exceptions = [os.path.normcase(os.path.realpath(path)) for path in exceptions]
- AbstractSandbox.__init__(self)
-
- def _violation(self, operation, *args, **kw):
- raise SandboxViolation(operation, args, kw)
-
- if _file:
- def _file(self, path, mode='r', *args, **kw):
- if mode not in ('r', 'rt', 'rb', 'rU', 'U') and not self._ok(path):
- self._violation("file", path, mode, *args, **kw)
- return _file(path,mode,*args,**kw)
-
- def _open(self, path, mode='r', *args, **kw):
- if mode not in ('r', 'rt', 'rb', 'rU', 'U') and not self._ok(path):
- self._violation("open", path, mode, *args, **kw)
- return _open(path,mode,*args,**kw)
-
- def tmpnam(self):
- self._violation("tmpnam")
-
- def _ok(self,path):
- active = self._active
- try:
- self._active = False
- realpath = os.path.normcase(os.path.realpath(path))
- if (self._exempted(realpath) or realpath == self._sandbox
- or realpath.startswith(self._prefix)):
- return True
- finally:
- self._active = active
-
- def _exempted(self, filepath):
- exception_matches = map(filepath.startswith, self._exceptions)
- return True in exception_matches
-
- def _remap_input(self,operation,path,*args,**kw):
- """Called for path inputs"""
- if operation in self.write_ops and not self._ok(path):
- self._violation(operation, os.path.realpath(path), *args, **kw)
- return path
-
- def _remap_pair(self,operation,src,dst,*args,**kw):
- """Called for path pairs like rename, link, and symlink operations"""
- if not self._ok(src) or not self._ok(dst):
- self._violation(operation, src, dst, *args, **kw)
- return (src,dst)
-
- def open(self, file, flags, mode=0777):
- """Called for low-level os.open()"""
- if flags & WRITE_FLAGS and not self._ok(file):
- self._violation("os.open", file, flags, mode)
- return _os.open(file,flags,mode)
-
-
-WRITE_FLAGS = reduce(
- operator.or_,
- [getattr(_os, a, 0) for a in
- "O_WRONLY O_RDWR O_APPEND O_CREAT O_TRUNC O_TEMPORARY".split()]
-)
-
-
-
-
-class SandboxViolation(DistutilsError):
- """A setup script attempted to modify the filesystem outside the sandbox"""
-
- def __str__(self):
- return """SandboxViolation: %s%r %s
-
-The package setup script has attempted to modify files on your system
-that are not within the EasyInstall build area, and has been aborted.
-
-This package cannot be safely installed by EasyInstall, and may not
-support alternate installation locations even if you run its setup
-script by hand. Please inform the package's author and the EasyInstall
-maintainers to find out if a fix or workaround is available.""" % self.args
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-#
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/__init__.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/__init__.py
deleted file mode 100644
index 9af44a8..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/__init__.py
+++ /dev/null
@@ -1,370 +0,0 @@
-"""Tests for the 'setuptools' package"""
-from unittest import TestSuite, TestCase, makeSuite, defaultTestLoader
-import distutils.core, distutils.cmd
-from distutils.errors import DistutilsOptionError, DistutilsPlatformError
-from distutils.errors import DistutilsSetupError
-import setuptools, setuptools.dist
-from setuptools import Feature
-from distutils.core import Extension
-extract_constant, get_module_constant = None, None
-from setuptools.depends import *
-from distutils.version import StrictVersion, LooseVersion
-from distutils.util import convert_path
-import sys, os.path
-
-def additional_tests():
- import doctest, unittest
- suite = unittest.TestSuite((
- doctest.DocFileSuite(
- os.path.join('tests', 'api_tests.txt'),
- optionflags=doctest.ELLIPSIS, package='pkg_resources',
- ),
- ))
- if sys.platform == 'win32':
- suite.addTest(doctest.DocFileSuite('win_script_wrapper.txt'))
- return suite
-
-def makeSetup(**args):
- """Return distribution from 'setup(**args)', without executing commands"""
-
- distutils.core._setup_stop_after = "commandline"
-
- # Don't let system command line leak into tests!
- args.setdefault('script_args',['install'])
-
- try:
- return setuptools.setup(**args)
- finally:
- distutils.core_setup_stop_after = None
-
-
-
-
-class DependsTests(TestCase):
-
- def testExtractConst(self):
- if not extract_constant: return # skip on non-bytecode platforms
-
- def f1():
- global x,y,z
- x = "test"
- y = z
-
- # unrecognized name
- self.assertEqual(extract_constant(f1.func_code,'q', -1), None)
-
- # constant assigned
- self.assertEqual(extract_constant(f1.func_code,'x', -1), "test")
-
- # expression assigned
- self.assertEqual(extract_constant(f1.func_code,'y', -1), -1)
-
- # recognized name, not assigned
- self.assertEqual(extract_constant(f1.func_code,'z', -1), None)
-
-
- def testFindModule(self):
- self.assertRaises(ImportError, find_module, 'no-such.-thing')
- self.assertRaises(ImportError, find_module, 'setuptools.non-existent')
- f,p,i = find_module('setuptools.tests'); f.close()
-
- def testModuleExtract(self):
- if not get_module_constant: return # skip on non-bytecode platforms
- from email import __version__
- self.assertEqual(
- get_module_constant('email','__version__'), __version__
- )
- self.assertEqual(
- get_module_constant('sys','version'), sys.version
- )
- self.assertEqual(
- get_module_constant('setuptools.tests','__doc__'),__doc__
- )
-
- def testRequire(self):
- if not extract_constant: return # skip on non-bytecode platforms
-
- req = Require('Email','1.0.3','email')
-
- self.assertEqual(req.name, 'Email')
- self.assertEqual(req.module, 'email')
- self.assertEqual(req.requested_version, '1.0.3')
- self.assertEqual(req.attribute, '__version__')
- self.assertEqual(req.full_name(), 'Email-1.0.3')
-
- from email import __version__
- self.assertEqual(req.get_version(), __version__)
- self.assert_(req.version_ok('1.0.9'))
- self.assert_(not req.version_ok('0.9.1'))
- self.assert_(not req.version_ok('unknown'))
-
- self.assert_(req.is_present())
- self.assert_(req.is_current())
-
- req = Require('Email 3000','03000','email',format=LooseVersion)
- self.assert_(req.is_present())
- self.assert_(not req.is_current())
- self.assert_(not req.version_ok('unknown'))
-
- req = Require('Do-what-I-mean','1.0','d-w-i-m')
- self.assert_(not req.is_present())
- self.assert_(not req.is_current())
-
- req = Require('Tests', None, 'tests', homepage="http://example.com")
- self.assertEqual(req.format, None)
- self.assertEqual(req.attribute, None)
- self.assertEqual(req.requested_version, None)
- self.assertEqual(req.full_name(), 'Tests')
- self.assertEqual(req.homepage, 'http://example.com')
-
- paths = [os.path.dirname(p) for p in __path__]
- self.assert_(req.is_present(paths))
- self.assert_(req.is_current(paths))
-
-
-class DistroTests(TestCase):
-
- def setUp(self):
- self.e1 = Extension('bar.ext',['bar.c'])
- self.e2 = Extension('c.y', ['y.c'])
-
- self.dist = makeSetup(
- packages=['a', 'a.b', 'a.b.c', 'b', 'c'],
- py_modules=['b.d','x'],
- ext_modules = (self.e1, self.e2),
- package_dir = {},
- )
-
-
- def testDistroType(self):
- self.assert_(isinstance(self.dist,setuptools.dist.Distribution))
-
-
- def testExcludePackage(self):
- self.dist.exclude_package('a')
- self.assertEqual(self.dist.packages, ['b','c'])
-
- self.dist.exclude_package('b')
- self.assertEqual(self.dist.packages, ['c'])
- self.assertEqual(self.dist.py_modules, ['x'])
- self.assertEqual(self.dist.ext_modules, [self.e1, self.e2])
-
- self.dist.exclude_package('c')
- self.assertEqual(self.dist.packages, [])
- self.assertEqual(self.dist.py_modules, ['x'])
- self.assertEqual(self.dist.ext_modules, [self.e1])
-
- # test removals from unspecified options
- makeSetup().exclude_package('x')
-
-
-
-
-
-
-
- def testIncludeExclude(self):
- # remove an extension
- self.dist.exclude(ext_modules=[self.e1])
- self.assertEqual(self.dist.ext_modules, [self.e2])
-
- # add it back in
- self.dist.include(ext_modules=[self.e1])
- self.assertEqual(self.dist.ext_modules, [self.e2, self.e1])
-
- # should not add duplicate
- self.dist.include(ext_modules=[self.e1])
- self.assertEqual(self.dist.ext_modules, [self.e2, self.e1])
-
- def testExcludePackages(self):
- self.dist.exclude(packages=['c','b','a'])
- self.assertEqual(self.dist.packages, [])
- self.assertEqual(self.dist.py_modules, ['x'])
- self.assertEqual(self.dist.ext_modules, [self.e1])
-
- def testEmpty(self):
- dist = makeSetup()
- dist.include(packages=['a'], py_modules=['b'], ext_modules=[self.e2])
- dist = makeSetup()
- dist.exclude(packages=['a'], py_modules=['b'], ext_modules=[self.e2])
-
- def testContents(self):
- self.assert_(self.dist.has_contents_for('a'))
- self.dist.exclude_package('a')
- self.assert_(not self.dist.has_contents_for('a'))
-
- self.assert_(self.dist.has_contents_for('b'))
- self.dist.exclude_package('b')
- self.assert_(not self.dist.has_contents_for('b'))
-
- self.assert_(self.dist.has_contents_for('c'))
- self.dist.exclude_package('c')
- self.assert_(not self.dist.has_contents_for('c'))
-
-
-
-
- def testInvalidIncludeExclude(self):
- self.assertRaises(DistutilsSetupError,
- self.dist.include, nonexistent_option='x'
- )
- self.assertRaises(DistutilsSetupError,
- self.dist.exclude, nonexistent_option='x'
- )
- self.assertRaises(DistutilsSetupError,
- self.dist.include, packages={'x':'y'}
- )
- self.assertRaises(DistutilsSetupError,
- self.dist.exclude, packages={'x':'y'}
- )
- self.assertRaises(DistutilsSetupError,
- self.dist.include, ext_modules={'x':'y'}
- )
- self.assertRaises(DistutilsSetupError,
- self.dist.exclude, ext_modules={'x':'y'}
- )
-
- self.assertRaises(DistutilsSetupError,
- self.dist.include, package_dir=['q']
- )
- self.assertRaises(DistutilsSetupError,
- self.dist.exclude, package_dir=['q']
- )
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-class FeatureTests(TestCase):
-
- def setUp(self):
- self.req = Require('Distutils','1.0.3','distutils')
- self.dist = makeSetup(
- features={
- 'foo': Feature("foo",standard=True,require_features=['baz',self.req]),
- 'bar': Feature("bar", standard=True, packages=['pkg.bar'],
- py_modules=['bar_et'], remove=['bar.ext'],
- ),
- 'baz': Feature(
- "baz", optional=False, packages=['pkg.baz'],
- scripts = ['scripts/baz_it'],
- libraries=[('libfoo','foo/foofoo.c')]
- ),
- 'dwim': Feature("DWIM", available=False, remove='bazish'),
- },
- script_args=['--without-bar', 'install'],
- packages = ['pkg.bar', 'pkg.foo'],
- py_modules = ['bar_et', 'bazish'],
- ext_modules = [Extension('bar.ext',['bar.c'])]
- )
-
- def testDefaults(self):
- self.assert_(not
- Feature(
- "test",standard=True,remove='x',available=False
- ).include_by_default()
- )
- self.assert_(
- Feature("test",standard=True,remove='x').include_by_default()
- )
- # Feature must have either kwargs, removes, or require_features
- self.assertRaises(DistutilsSetupError, Feature, "test")
-
- def testAvailability(self):
- self.assertRaises(
- DistutilsPlatformError,
- self.dist.features['dwim'].include_in, self.dist
- )
-
- def testFeatureOptions(self):
- dist = self.dist
- self.assert_(
- ('with-dwim',None,'include DWIM') in dist.feature_options
- )
- self.assert_(
- ('without-dwim',None,'exclude DWIM (default)') in dist.feature_options
- )
- self.assert_(
- ('with-bar',None,'include bar (default)') in dist.feature_options
- )
- self.assert_(
- ('without-bar',None,'exclude bar') in dist.feature_options
- )
- self.assertEqual(dist.feature_negopt['without-foo'],'with-foo')
- self.assertEqual(dist.feature_negopt['without-bar'],'with-bar')
- self.assertEqual(dist.feature_negopt['without-dwim'],'with-dwim')
- self.assert_(not 'without-baz' in dist.feature_negopt)
-
- def testUseFeatures(self):
- dist = self.dist
- self.assertEqual(dist.with_foo,1)
- self.assertEqual(dist.with_bar,0)
- self.assertEqual(dist.with_baz,1)
- self.assert_(not 'bar_et' in dist.py_modules)
- self.assert_(not 'pkg.bar' in dist.packages)
- self.assert_('pkg.baz' in dist.packages)
- self.assert_('scripts/baz_it' in dist.scripts)
- self.assert_(('libfoo','foo/foofoo.c') in dist.libraries)
- self.assertEqual(dist.ext_modules,[])
- self.assertEqual(dist.require_features, [self.req])
-
- # If we ask for bar, it should fail because we explicitly disabled
- # it on the command line
- self.assertRaises(DistutilsOptionError, dist.include_feature, 'bar')
-
- def testFeatureWithInvalidRemove(self):
- self.assertRaises(
- SystemExit, makeSetup, features = {'x':Feature('x', remove='y')}
- )
-
-class TestCommandTests(TestCase):
-
- def testTestIsCommand(self):
- test_cmd = makeSetup().get_command_obj('test')
- self.assert_(isinstance(test_cmd, distutils.cmd.Command))
-
- def testLongOptSuiteWNoDefault(self):
- ts1 = makeSetup(script_args=['test','--test-suite=foo.tests.suite'])
- ts1 = ts1.get_command_obj('test')
- ts1.ensure_finalized()
- self.assertEqual(ts1.test_suite, 'foo.tests.suite')
-
- def testDefaultSuite(self):
- ts2 = makeSetup(test_suite='bar.tests.suite').get_command_obj('test')
- ts2.ensure_finalized()
- self.assertEqual(ts2.test_suite, 'bar.tests.suite')
-
- def testDefaultWModuleOnCmdLine(self):
- ts3 = makeSetup(
- test_suite='bar.tests',
- script_args=['test','-m','foo.tests']
- ).get_command_obj('test')
- ts3.ensure_finalized()
- self.assertEqual(ts3.test_module, 'foo.tests')
- self.assertEqual(ts3.test_suite, 'foo.tests.test_suite')
-
- def testConflictingOptions(self):
- ts4 = makeSetup(
- script_args=['test','-m','bar.tests', '-s','foo.tests.suite']
- ).get_command_obj('test')
- self.assertRaises(DistutilsOptionError, ts4.ensure_finalized)
-
- def testNoSuite(self):
- ts5 = makeSetup().get_command_obj('test')
- ts5.ensure_finalized()
- self.assertEqual(ts5.test_suite, None)
-
-
-
-
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/doctest.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/doctest.py
deleted file mode 100644
index be399a9..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/doctest.py
+++ /dev/null
@@ -1,2679 +0,0 @@
-# Module doctest.
-# Released to the public domain 16-Jan-2001, by Tim Peters (tim@python.org).
-# Major enhancements and refactoring by:
-# Jim Fulton
-# Edward Loper
-
-# Provided as-is; use at your own risk; no warranty; no promises; enjoy!
-
-try:
- basestring
-except NameError:
- basestring = str,unicode
-
-try:
- enumerate
-except NameError:
- def enumerate(seq):
- return zip(range(len(seq)),seq)
-
-r"""Module doctest -- a framework for running examples in docstrings.
-
-In simplest use, end each module M to be tested with:
-
-def _test():
- import doctest
- doctest.testmod()
-
-if __name__ == "__main__":
- _test()
-
-Then running the module as a script will cause the examples in the
-docstrings to get executed and verified:
-
-python M.py
-
-This won't display anything unless an example fails, in which case the
-failing example(s) and the cause(s) of the failure(s) are printed to stdout
-(why not stderr? because stderr is a lame hack <0.2 wink>), and the final
-line of output is "Test failed.".
-
-Run it with the -v switch instead:
-
-python M.py -v
-
-and a detailed report of all examples tried is printed to stdout, along
-with assorted summaries at the end.
-
-You can force verbose mode by passing "verbose=True" to testmod, or prohibit
-it by passing "verbose=False". In either of those cases, sys.argv is not
-examined by testmod.
-
-There are a variety of other ways to run doctests, including integration
-with the unittest framework, and support for running non-Python text
-files containing doctests. There are also many ways to override parts
-of doctest's default behaviors. See the Library Reference Manual for
-details.
-"""
-
-__docformat__ = 'reStructuredText en'
-
-__all__ = [
- # 0, Option Flags
- 'register_optionflag',
- 'DONT_ACCEPT_TRUE_FOR_1',
- 'DONT_ACCEPT_BLANKLINE',
- 'NORMALIZE_WHITESPACE',
- 'ELLIPSIS',
- 'IGNORE_EXCEPTION_DETAIL',
- 'COMPARISON_FLAGS',
- 'REPORT_UDIFF',
- 'REPORT_CDIFF',
- 'REPORT_NDIFF',
- 'REPORT_ONLY_FIRST_FAILURE',
- 'REPORTING_FLAGS',
- # 1. Utility Functions
- 'is_private',
- # 2. Example & DocTest
- 'Example',
- 'DocTest',
- # 3. Doctest Parser
- 'DocTestParser',
- # 4. Doctest Finder
- 'DocTestFinder',
- # 5. Doctest Runner
- 'DocTestRunner',
- 'OutputChecker',
- 'DocTestFailure',
- 'UnexpectedException',
- 'DebugRunner',
- # 6. Test Functions
- 'testmod',
- 'testfile',
- 'run_docstring_examples',
- # 7. Tester
- 'Tester',
- # 8. Unittest Support
- 'DocTestSuite',
- 'DocFileSuite',
- 'set_unittest_reportflags',
- # 9. Debugging Support
- 'script_from_examples',
- 'testsource',
- 'debug_src',
- 'debug',
-]
-
-import __future__
-
-import sys, traceback, inspect, linecache, os, re, types
-import unittest, difflib, pdb, tempfile
-import warnings
-from StringIO import StringIO
-
-# Don't whine about the deprecated is_private function in this
-# module's tests.
-warnings.filterwarnings("ignore", "is_private", DeprecationWarning,
- __name__, 0)
-
-# There are 4 basic classes:
-# - Example: a <source, want> pair, plus an intra-docstring line number.
-# - DocTest: a collection of examples, parsed from a docstring, plus
-# info about where the docstring came from (name, filename, lineno).
-# - DocTestFinder: extracts DocTests from a given object's docstring and
-# its contained objects' docstrings.
-# - DocTestRunner: runs DocTest cases, and accumulates statistics.
-#
-# So the basic picture is:
-#
-# list of:
-# +------+ +---------+ +-------+
-# |object| --DocTestFinder-> | DocTest | --DocTestRunner-> |results|
-# +------+ +---------+ +-------+
-# | Example |
-# | ... |
-# | Example |
-# +---------+
-
-# Option constants.
-
-OPTIONFLAGS_BY_NAME = {}
-def register_optionflag(name):
- flag = 1 << len(OPTIONFLAGS_BY_NAME)
- OPTIONFLAGS_BY_NAME[name] = flag
- return flag
-
-DONT_ACCEPT_TRUE_FOR_1 = register_optionflag('DONT_ACCEPT_TRUE_FOR_1')
-DONT_ACCEPT_BLANKLINE = register_optionflag('DONT_ACCEPT_BLANKLINE')
-NORMALIZE_WHITESPACE = register_optionflag('NORMALIZE_WHITESPACE')
-ELLIPSIS = register_optionflag('ELLIPSIS')
-IGNORE_EXCEPTION_DETAIL = register_optionflag('IGNORE_EXCEPTION_DETAIL')
-
-COMPARISON_FLAGS = (DONT_ACCEPT_TRUE_FOR_1 |
- DONT_ACCEPT_BLANKLINE |
- NORMALIZE_WHITESPACE |
- ELLIPSIS |
- IGNORE_EXCEPTION_DETAIL)
-
-REPORT_UDIFF = register_optionflag('REPORT_UDIFF')
-REPORT_CDIFF = register_optionflag('REPORT_CDIFF')
-REPORT_NDIFF = register_optionflag('REPORT_NDIFF')
-REPORT_ONLY_FIRST_FAILURE = register_optionflag('REPORT_ONLY_FIRST_FAILURE')
-
-REPORTING_FLAGS = (REPORT_UDIFF |
- REPORT_CDIFF |
- REPORT_NDIFF |
- REPORT_ONLY_FIRST_FAILURE)
-
-# Special string markers for use in `want` strings:
-BLANKLINE_MARKER = '<BLANKLINE>'
-ELLIPSIS_MARKER = '...'
-
-######################################################################
-## Table of Contents
-######################################################################
-# 1. Utility Functions
-# 2. Example & DocTest -- store test cases
-# 3. DocTest Parser -- extracts examples from strings
-# 4. DocTest Finder -- extracts test cases from objects
-# 5. DocTest Runner -- runs test cases
-# 6. Test Functions -- convenient wrappers for testing
-# 7. Tester Class -- for backwards compatibility
-# 8. Unittest Support
-# 9. Debugging Support
-# 10. Example Usage
-
-######################################################################
-## 1. Utility Functions
-######################################################################
-
-def is_private(prefix, base):
- """prefix, base -> true iff name prefix + "." + base is "private".
-
- Prefix may be an empty string, and base does not contain a period.
- Prefix is ignored (although functions you write conforming to this
- protocol may make use of it).
- Return true iff base begins with an (at least one) underscore, but
- does not both begin and end with (at least) two underscores.
-
- >>> is_private("a.b", "my_func")
- False
- >>> is_private("____", "_my_func")
- True
- >>> is_private("someclass", "__init__")
- False
- >>> is_private("sometypo", "__init_")
- True
- >>> is_private("x.y.z", "_")
- True
- >>> is_private("_x.y.z", "__")
- False
- >>> is_private("", "") # senseless but consistent
- False
- """
- warnings.warn("is_private is deprecated; it wasn't useful; "
- "examine DocTestFinder.find() lists instead",
- DeprecationWarning, stacklevel=2)
- return base[:1] == "_" and not base[:2] == "__" == base[-2:]
-
-def _extract_future_flags(globs):
- """
- Return the compiler-flags associated with the future features that
- have been imported into the given namespace (globs).
- """
- flags = 0
- for fname in __future__.all_feature_names:
- feature = globs.get(fname, None)
- if feature is getattr(__future__, fname):
- flags |= feature.compiler_flag
- return flags
-
-def _normalize_module(module, depth=2):
- """
- Return the module specified by `module`. In particular:
- - If `module` is a module, then return module.
- - If `module` is a string, then import and return the
- module with that name.
- - If `module` is None, then return the calling module.
- The calling module is assumed to be the module of
- the stack frame at the given depth in the call stack.
- """
- if inspect.ismodule(module):
- return module
- elif isinstance(module, (str, unicode)):
- return __import__(module, globals(), locals(), ["*"])
- elif module is None:
- return sys.modules[sys._getframe(depth).f_globals['__name__']]
- else:
- raise TypeError("Expected a module, string, or None")
-
-def _indent(s, indent=4):
- """
- Add the given number of space characters to the beginning every
- non-blank line in `s`, and return the result.
- """
- # This regexp matches the start of non-blank lines:
- return re.sub('(?m)^(?!$)', indent*' ', s)
-
-def _exception_traceback(exc_info):
- """
- Return a string containing a traceback message for the given
- exc_info tuple (as returned by sys.exc_info()).
- """
- # Get a traceback message.
- excout = StringIO()
- exc_type, exc_val, exc_tb = exc_info
- traceback.print_exception(exc_type, exc_val, exc_tb, file=excout)
- return excout.getvalue()
-
-# Override some StringIO methods.
-class _SpoofOut(StringIO):
- def getvalue(self):
- result = StringIO.getvalue(self)
- # If anything at all was written, make sure there's a trailing
- # newline. There's no way for the expected output to indicate
- # that a trailing newline is missing.
- if result and not result.endswith("\n"):
- result += "\n"
- # Prevent softspace from screwing up the next test case, in
- # case they used print with a trailing comma in an example.
- if hasattr(self, "softspace"):
- del self.softspace
- return result
-
- def truncate(self, size=None):
- StringIO.truncate(self, size)
- if hasattr(self, "softspace"):
- del self.softspace
-
-# Worst-case linear-time ellipsis matching.
-def _ellipsis_match(want, got):
- """
- Essentially the only subtle case:
- >>> _ellipsis_match('aa...aa', 'aaa')
- False
- """
- if want.find(ELLIPSIS_MARKER)==-1:
- return want == got
-
- # Find "the real" strings.
- ws = want.split(ELLIPSIS_MARKER)
- assert len(ws) >= 2
-
- # Deal with exact matches possibly needed at one or both ends.
- startpos, endpos = 0, len(got)
- w = ws[0]
- if w: # starts with exact match
- if got.startswith(w):
- startpos = len(w)
- del ws[0]
- else:
- return False
- w = ws[-1]
- if w: # ends with exact match
- if got.endswith(w):
- endpos -= len(w)
- del ws[-1]
- else:
- return False
-
- if startpos > endpos:
- # Exact end matches required more characters than we have, as in
- # _ellipsis_match('aa...aa', 'aaa')
- return False
-
- # For the rest, we only need to find the leftmost non-overlapping
- # match for each piece. If there's no overall match that way alone,
- # there's no overall match period.
- for w in ws:
- # w may be '' at times, if there are consecutive ellipses, or
- # due to an ellipsis at the start or end of `want`. That's OK.
- # Search for an empty string succeeds, and doesn't change startpos.
- startpos = got.find(w, startpos, endpos)
- if startpos < 0:
- return False
- startpos += len(w)
-
- return True
-
-def _comment_line(line):
- "Return a commented form of the given line"
- line = line.rstrip()
- if line:
- return '# '+line
- else:
- return '#'
-
-class _OutputRedirectingPdb(pdb.Pdb):
- """
- A specialized version of the python debugger that redirects stdout
- to a given stream when interacting with the user. Stdout is *not*
- redirected when traced code is executed.
- """
- def __init__(self, out):
- self.__out = out
- pdb.Pdb.__init__(self)
-
- def trace_dispatch(self, *args):
- # Redirect stdout to the given stream.
- save_stdout = sys.stdout
- sys.stdout = self.__out
- # Call Pdb's trace dispatch method.
- try:
- return pdb.Pdb.trace_dispatch(self, *args)
- finally:
- sys.stdout = save_stdout
-
-# [XX] Normalize with respect to os.path.pardir?
-def _module_relative_path(module, path):
- if not inspect.ismodule(module):
- raise TypeError, 'Expected a module: %r' % module
- if path.startswith('/'):
- raise ValueError, 'Module-relative files may not have absolute paths'
-
- # Find the base directory for the path.
- if hasattr(module, '__file__'):
- # A normal module/package
- basedir = os.path.split(module.__file__)[0]
- elif module.__name__ == '__main__':
- # An interactive session.
- if len(sys.argv)>0 and sys.argv[0] != '':
- basedir = os.path.split(sys.argv[0])[0]
- else:
- basedir = os.curdir
- else:
- # A module w/o __file__ (this includes builtins)
- raise ValueError("Can't resolve paths relative to the module " +
- module + " (it has no __file__)")
-
- # Combine the base directory and the path.
- return os.path.join(basedir, *(path.split('/')))
-
-######################################################################
-## 2. Example & DocTest
-######################################################################
-## - An "example" is a <source, want> pair, where "source" is a
-## fragment of source code, and "want" is the expected output for
-## "source." The Example class also includes information about
-## where the example was extracted from.
-##
-## - A "doctest" is a collection of examples, typically extracted from
-## a string (such as an object's docstring). The DocTest class also
-## includes information about where the string was extracted from.
-
-class Example:
- """
- A single doctest example, consisting of source code and expected
- output. `Example` defines the following attributes:
-
- - source: A single Python statement, always ending with a newline.
- The constructor adds a newline if needed.
-
- - want: The expected output from running the source code (either
- from stdout, or a traceback in case of exception). `want` ends
- with a newline unless it's empty, in which case it's an empty
- string. The constructor adds a newline if needed.
-
- - exc_msg: The exception message generated by the example, if
- the example is expected to generate an exception; or `None` if
- it is not expected to generate an exception. This exception
- message is compared against the return value of
- `traceback.format_exception_only()`. `exc_msg` ends with a
- newline unless it's `None`. The constructor adds a newline
- if needed.
-
- - lineno: The line number within the DocTest string containing
- this Example where the Example begins. This line number is
- zero-based, with respect to the beginning of the DocTest.
-
- - indent: The example's indentation in the DocTest string.
- I.e., the number of space characters that preceed the
- example's first prompt.
-
- - options: A dictionary mapping from option flags to True or
- False, which is used to override default options for this
- example. Any option flags not contained in this dictionary
- are left at their default value (as specified by the
- DocTestRunner's optionflags). By default, no options are set.
- """
- def __init__(self, source, want, exc_msg=None, lineno=0, indent=0,
- options=None):
- # Normalize inputs.
- if not source.endswith('\n'):
- source += '\n'
- if want and not want.endswith('\n'):
- want += '\n'
- if exc_msg is not None and not exc_msg.endswith('\n'):
- exc_msg += '\n'
- # Store properties.
- self.source = source
- self.want = want
- self.lineno = lineno
- self.indent = indent
- if options is None: options = {}
- self.options = options
- self.exc_msg = exc_msg
-
-class DocTest:
- """
- A collection of doctest examples that should be run in a single
- namespace. Each `DocTest` defines the following attributes:
-
- - examples: the list of examples.
-
- - globs: The namespace (aka globals) that the examples should
- be run in.
-
- - name: A name identifying the DocTest (typically, the name of
- the object whose docstring this DocTest was extracted from).
-
- - filename: The name of the file that this DocTest was extracted
- from, or `None` if the filename is unknown.
-
- - lineno: The line number within filename where this DocTest
- begins, or `None` if the line number is unavailable. This
- line number is zero-based, with respect to the beginning of
- the file.
-
- - docstring: The string that the examples were extracted from,
- or `None` if the string is unavailable.
- """
- def __init__(self, examples, globs, name, filename, lineno, docstring):
- """
- Create a new DocTest containing the given examples. The
- DocTest's globals are initialized with a copy of `globs`.
- """
- assert not isinstance(examples, basestring), \
- "DocTest no longer accepts str; use DocTestParser instead"
- self.examples = examples
- self.docstring = docstring
- self.globs = globs.copy()
- self.name = name
- self.filename = filename
- self.lineno = lineno
-
- def __repr__(self):
- if len(self.examples) == 0:
- examples = 'no examples'
- elif len(self.examples) == 1:
- examples = '1 example'
- else:
- examples = '%d examples' % len(self.examples)
- return ('<DocTest %s from %s:%s (%s)>' %
- (self.name, self.filename, self.lineno, examples))
-
-
- # This lets us sort tests by name:
- def __cmp__(self, other):
- if not isinstance(other, DocTest):
- return -1
- return cmp((self.name, self.filename, self.lineno, id(self)),
- (other.name, other.filename, other.lineno, id(other)))
-
-######################################################################
-## 3. DocTestParser
-######################################################################
-
-class DocTestParser:
- """
- A class used to parse strings containing doctest examples.
- """
- # This regular expression is used to find doctest examples in a
- # string. It defines three groups: `source` is the source code
- # (including leading indentation and prompts); `indent` is the
- # indentation of the first (PS1) line of the source code; and
- # `want` is the expected output (including leading indentation).
- _EXAMPLE_RE = re.compile(r'''
- # Source consists of a PS1 line followed by zero or more PS2 lines.
- (?P<source>
- (?:^(?P<indent> [ ]*) >>> .*) # PS1 line
- (?:\n [ ]* \.\.\. .*)*) # PS2 lines
- \n?
- # Want consists of any non-blank lines that do not start with PS1.
- (?P<want> (?:(?![ ]*$) # Not a blank line
- (?![ ]*>>>) # Not a line starting with PS1
- .*$\n? # But any other line
- )*)
- ''', re.MULTILINE | re.VERBOSE)
-
- # A regular expression for handling `want` strings that contain
- # expected exceptions. It divides `want` into three pieces:
- # - the traceback header line (`hdr`)
- # - the traceback stack (`stack`)
- # - the exception message (`msg`), as generated by
- # traceback.format_exception_only()
- # `msg` may have multiple lines. We assume/require that the
- # exception message is the first non-indented line starting with a word
- # character following the traceback header line.
- _EXCEPTION_RE = re.compile(r"""
- # Grab the traceback header. Different versions of Python have
- # said different things on the first traceback line.
- ^(?P<hdr> Traceback\ \(
- (?: most\ recent\ call\ last
- | innermost\ last
- ) \) :
- )
- \s* $ # toss trailing whitespace on the header.
- (?P<stack> .*?) # don't blink: absorb stuff until...
- ^ (?P<msg> \w+ .*) # a line *starts* with alphanum.
- """, re.VERBOSE | re.MULTILINE | re.DOTALL)
-
- # A callable returning a true value iff its argument is a blank line
- # or contains a single comment.
- _IS_BLANK_OR_COMMENT = re.compile(r'^[ ]*(#.*)?$').match
-
- def parse(self, string, name='<string>'):
- """
- Divide the given string into examples and intervening text,
- and return them as a list of alternating Examples and strings.
- Line numbers for the Examples are 0-based. The optional
- argument `name` is a name identifying this string, and is only
- used for error messages.
- """
- string = string.expandtabs()
- # If all lines begin with the same indentation, then strip it.
- min_indent = self._min_indent(string)
- if min_indent > 0:
- string = '\n'.join([l[min_indent:] for l in string.split('\n')])
-
- output = []
- charno, lineno = 0, 0
- # Find all doctest examples in the string:
- for m in self._EXAMPLE_RE.finditer(string):
- # Add the pre-example text to `output`.
- output.append(string[charno:m.start()])
- # Update lineno (lines before this example)
- lineno += string.count('\n', charno, m.start())
- # Extract info from the regexp match.
- (source, options, want, exc_msg) = \
- self._parse_example(m, name, lineno)
- # Create an Example, and add it to the list.
- if not self._IS_BLANK_OR_COMMENT(source):
- output.append( Example(source, want, exc_msg,
- lineno=lineno,
- indent=min_indent+len(m.group('indent')),
- options=options) )
- # Update lineno (lines inside this example)
- lineno += string.count('\n', m.start(), m.end())
- # Update charno.
- charno = m.end()
- # Add any remaining post-example text to `output`.
- output.append(string[charno:])
- return output
-
- def get_doctest(self, string, globs, name, filename, lineno):
- """
- Extract all doctest examples from the given string, and
- collect them into a `DocTest` object.
-
- `globs`, `name`, `filename`, and `lineno` are attributes for
- the new `DocTest` object. See the documentation for `DocTest`
- for more information.
- """
- return DocTest(self.get_examples(string, name), globs,
- name, filename, lineno, string)
-
- def get_examples(self, string, name='<string>'):
- """
- Extract all doctest examples from the given string, and return
- them as a list of `Example` objects. Line numbers are
- 0-based, because it's most common in doctests that nothing
- interesting appears on the same line as opening triple-quote,
- and so the first interesting line is called \"line 1\" then.
-
- The optional argument `name` is a name identifying this
- string, and is only used for error messages.
- """
- return [x for x in self.parse(string, name)
- if isinstance(x, Example)]
-
- def _parse_example(self, m, name, lineno):
- """
- Given a regular expression match from `_EXAMPLE_RE` (`m`),
- return a pair `(source, want)`, where `source` is the matched
- example's source code (with prompts and indentation stripped);
- and `want` is the example's expected output (with indentation
- stripped).
-
- `name` is the string's name, and `lineno` is the line number
- where the example starts; both are used for error messages.
- """
- # Get the example's indentation level.
- indent = len(m.group('indent'))
-
- # Divide source into lines; check that they're properly
- # indented; and then strip their indentation & prompts.
- source_lines = m.group('source').split('\n')
- self._check_prompt_blank(source_lines, indent, name, lineno)
- self._check_prefix(source_lines[1:], ' '*indent + '.', name, lineno)
- source = '\n'.join([sl[indent+4:] for sl in source_lines])
-
- # Divide want into lines; check that it's properly indented; and
- # then strip the indentation. Spaces before the last newline should
- # be preserved, so plain rstrip() isn't good enough.
- want = m.group('want')
- want_lines = want.split('\n')
- if len(want_lines) > 1 and re.match(r' *$', want_lines[-1]):
- del want_lines[-1] # forget final newline & spaces after it
- self._check_prefix(want_lines, ' '*indent, name,
- lineno + len(source_lines))
- want = '\n'.join([wl[indent:] for wl in want_lines])
-
- # If `want` contains a traceback message, then extract it.
- m = self._EXCEPTION_RE.match(want)
- if m:
- exc_msg = m.group('msg')
- else:
- exc_msg = None
-
- # Extract options from the source.
- options = self._find_options(source, name, lineno)
-
- return source, options, want, exc_msg
-
- # This regular expression looks for option directives in the
- # source code of an example. Option directives are comments
- # starting with "doctest:". Warning: this may give false
- # positives for string-literals that contain the string
- # "#doctest:". Eliminating these false positives would require
- # actually parsing the string; but we limit them by ignoring any
- # line containing "#doctest:" that is *followed* by a quote mark.
- _OPTION_DIRECTIVE_RE = re.compile(r'#\s*doctest:\s*([^\n\'"]*)$',
- re.MULTILINE)
-
- def _find_options(self, source, name, lineno):
- """
- Return a dictionary containing option overrides extracted from
- option directives in the given source string.
-
- `name` is the string's name, and `lineno` is the line number
- where the example starts; both are used for error messages.
- """
- options = {}
- # (note: with the current regexp, this will match at most once:)
- for m in self._OPTION_DIRECTIVE_RE.finditer(source):
- option_strings = m.group(1).replace(',', ' ').split()
- for option in option_strings:
- if (option[0] not in '+-' or
- option[1:] not in OPTIONFLAGS_BY_NAME):
- raise ValueError('line %r of the doctest for %s '
- 'has an invalid option: %r' %
- (lineno+1, name, option))
- flag = OPTIONFLAGS_BY_NAME[option[1:]]
- options[flag] = (option[0] == '+')
- if options and self._IS_BLANK_OR_COMMENT(source):
- raise ValueError('line %r of the doctest for %s has an option '
- 'directive on a line with no example: %r' %
- (lineno, name, source))
- return options
-
- # This regular expression finds the indentation of every non-blank
- # line in a string.
- _INDENT_RE = re.compile('^([ ]*)(?=\S)', re.MULTILINE)
-
- def _min_indent(self, s):
- "Return the minimum indentation of any non-blank line in `s`"
- indents = [len(indent) for indent in self._INDENT_RE.findall(s)]
- if len(indents) > 0:
- return min(indents)
- else:
- return 0
-
- def _check_prompt_blank(self, lines, indent, name, lineno):
- """
- Given the lines of a source string (including prompts and
- leading indentation), check to make sure that every prompt is
- followed by a space character. If any line is not followed by
- a space character, then raise ValueError.
- """
- for i, line in enumerate(lines):
- if len(line) >= indent+4 and line[indent+3] != ' ':
- raise ValueError('line %r of the docstring for %s '
- 'lacks blank after %s: %r' %
- (lineno+i+1, name,
- line[indent:indent+3], line))
-
- def _check_prefix(self, lines, prefix, name, lineno):
- """
- Check that every line in the given list starts with the given
- prefix; if any line does not, then raise a ValueError.
- """
- for i, line in enumerate(lines):
- if line and not line.startswith(prefix):
- raise ValueError('line %r of the docstring for %s has '
- 'inconsistent leading whitespace: %r' %
- (lineno+i+1, name, line))
-
-
-######################################################################
-## 4. DocTest Finder
-######################################################################
-
-class DocTestFinder:
- """
- A class used to extract the DocTests that are relevant to a given
- object, from its docstring and the docstrings of its contained
- objects. Doctests can currently be extracted from the following
- object types: modules, functions, classes, methods, staticmethods,
- classmethods, and properties.
- """
-
- def __init__(self, verbose=False, parser=DocTestParser(),
- recurse=True, _namefilter=None, exclude_empty=True):
- """
- Create a new doctest finder.
-
- The optional argument `parser` specifies a class or
- function that should be used to create new DocTest objects (or
- objects that implement the same interface as DocTest). The
- signature for this factory function should match the signature
- of the DocTest constructor.
-
- If the optional argument `recurse` is false, then `find` will
- only examine the given object, and not any contained objects.
-
- If the optional argument `exclude_empty` is false, then `find`
- will include tests for objects with empty docstrings.
- """
- self._parser = parser
- self._verbose = verbose
- self._recurse = recurse
- self._exclude_empty = exclude_empty
- # _namefilter is undocumented, and exists only for temporary backward-
- # compatibility support of testmod's deprecated isprivate mess.
- self._namefilter = _namefilter
-
- def find(self, obj, name=None, module=None, globs=None,
- extraglobs=None):
- """
- Return a list of the DocTests that are defined by the given
- object's docstring, or by any of its contained objects'
- docstrings.
-
- The optional parameter `module` is the module that contains
- the given object. If the module is not specified or is None, then
- the test finder will attempt to automatically determine the
- correct module. The object's module is used:
-
- - As a default namespace, if `globs` is not specified.
- - To prevent the DocTestFinder from extracting DocTests
- from objects that are imported from other modules.
- - To find the name of the file containing the object.
- - To help find the line number of the object within its
- file.
-
- Contained objects whose module does not match `module` are ignored.
-
- If `module` is False, no attempt to find the module will be made.
- This is obscure, of use mostly in tests: if `module` is False, or
- is None but cannot be found automatically, then all objects are
- considered to belong to the (non-existent) module, so all contained
- objects will (recursively) be searched for doctests.
-
- The globals for each DocTest is formed by combining `globs`
- and `extraglobs` (bindings in `extraglobs` override bindings
- in `globs`). A new copy of the globals dictionary is created
- for each DocTest. If `globs` is not specified, then it
- defaults to the module's `__dict__`, if specified, or {}
- otherwise. If `extraglobs` is not specified, then it defaults
- to {}.
-
- """
- # If name was not specified, then extract it from the object.
- if name is None:
- name = getattr(obj, '__name__', None)
- if name is None:
- raise ValueError("DocTestFinder.find: name must be given "
- "when obj.__name__ doesn't exist: %r" %
- (type(obj),))
-
- # Find the module that contains the given object (if obj is
- # a module, then module=obj.). Note: this may fail, in which
- # case module will be None.
- if module is False:
- module = None
- elif module is None:
- module = inspect.getmodule(obj)
-
- # Read the module's source code. This is used by
- # DocTestFinder._find_lineno to find the line number for a
- # given object's docstring.
- try:
- file = inspect.getsourcefile(obj) or inspect.getfile(obj)
- source_lines = linecache.getlines(file)
- if not source_lines:
- source_lines = None
- except TypeError:
- source_lines = None
-
- # Initialize globals, and merge in extraglobs.
- if globs is None:
- if module is None:
- globs = {}
- else:
- globs = module.__dict__.copy()
- else:
- globs = globs.copy()
- if extraglobs is not None:
- globs.update(extraglobs)
-
- # Recursively expore `obj`, extracting DocTests.
- tests = []
- self._find(tests, obj, name, module, source_lines, globs, {})
- return tests
-
- def _filter(self, obj, prefix, base):
- """
- Return true if the given object should not be examined.
- """
- return (self._namefilter is not None and
- self._namefilter(prefix, base))
-
- def _from_module(self, module, object):
- """
- Return true if the given object is defined in the given
- module.
- """
- if module is None:
- return True
- elif inspect.isfunction(object):
- return module.__dict__ is object.func_globals
- elif inspect.isclass(object):
- return module.__name__ == object.__module__
- elif inspect.getmodule(object) is not None:
- return module is inspect.getmodule(object)
- elif hasattr(object, '__module__'):
- return module.__name__ == object.__module__
- elif isinstance(object, property):
- return True # [XX] no way not be sure.
- else:
- raise ValueError("object must be a class or function")
-
- def _find(self, tests, obj, name, module, source_lines, globs, seen):
- """
- Find tests for the given object and any contained objects, and
- add them to `tests`.
- """
- if self._verbose:
- print 'Finding tests in %s' % name
-
- # If we've already processed this object, then ignore it.
- if id(obj) in seen:
- return
- seen[id(obj)] = 1
-
- # Find a test for this object, and add it to the list of tests.
- test = self._get_test(obj, name, module, globs, source_lines)
- if test is not None:
- tests.append(test)
-
- # Look for tests in a module's contained objects.
- if inspect.ismodule(obj) and self._recurse:
- for valname, val in obj.__dict__.items():
- # Check if this contained object should be ignored.
- if self._filter(val, name, valname):
- continue
- valname = '%s.%s' % (name, valname)
- # Recurse to functions & classes.
- if ((inspect.isfunction(val) or inspect.isclass(val)) and
- self._from_module(module, val)):
- self._find(tests, val, valname, module, source_lines,
- globs, seen)
-
- # Look for tests in a module's __test__ dictionary.
- if inspect.ismodule(obj) and self._recurse:
- for valname, val in getattr(obj, '__test__', {}).items():
- if not isinstance(valname, basestring):
- raise ValueError("DocTestFinder.find: __test__ keys "
- "must be strings: %r" %
- (type(valname),))
- if not (inspect.isfunction(val) or inspect.isclass(val) or
- inspect.ismethod(val) or inspect.ismodule(val) or
- isinstance(val, basestring)):
- raise ValueError("DocTestFinder.find: __test__ values "
- "must be strings, functions, methods, "
- "classes, or modules: %r" %
- (type(val),))
- valname = '%s.__test__.%s' % (name, valname)
- self._find(tests, val, valname, module, source_lines,
- globs, seen)
-
- # Look for tests in a class's contained objects.
- if inspect.isclass(obj) and self._recurse:
- for valname, val in obj.__dict__.items():
- # Check if this contained object should be ignored.
- if self._filter(val, name, valname):
- continue
- # Special handling for staticmethod/classmethod.
- if isinstance(val, staticmethod):
- val = getattr(obj, valname)
- if isinstance(val, classmethod):
- val = getattr(obj, valname).im_func
-
- # Recurse to methods, properties, and nested classes.
- if ((inspect.isfunction(val) or inspect.isclass(val) or
- isinstance(val, property)) and
- self._from_module(module, val)):
- valname = '%s.%s' % (name, valname)
- self._find(tests, val, valname, module, source_lines,
- globs, seen)
-
- def _get_test(self, obj, name, module, globs, source_lines):
- """
- Return a DocTest for the given object, if it defines a docstring;
- otherwise, return None.
- """
- # Extract the object's docstring. If it doesn't have one,
- # then return None (no test for this object).
- if isinstance(obj, basestring):
- docstring = obj
- else:
- try:
- if obj.__doc__ is None:
- docstring = ''
- else:
- docstring = obj.__doc__
- if not isinstance(docstring, basestring):
- docstring = str(docstring)
- except (TypeError, AttributeError):
- docstring = ''
-
- # Find the docstring's location in the file.
- lineno = self._find_lineno(obj, source_lines)
-
- # Don't bother if the docstring is empty.
- if self._exclude_empty and not docstring:
- return None
-
- # Return a DocTest for this object.
- if module is None:
- filename = None
- else:
- filename = getattr(module, '__file__', module.__name__)
- if filename[-4:] in (".pyc", ".pyo"):
- filename = filename[:-1]
- return self._parser.get_doctest(docstring, globs, name,
- filename, lineno)
-
- def _find_lineno(self, obj, source_lines):
- """
- Return a line number of the given object's docstring. Note:
- this method assumes that the object has a docstring.
- """
- lineno = None
-
- # Find the line number for modules.
- if inspect.ismodule(obj):
- lineno = 0
-
- # Find the line number for classes.
- # Note: this could be fooled if a class is defined multiple
- # times in a single file.
- if inspect.isclass(obj):
- if source_lines is None:
- return None
- pat = re.compile(r'^\s*class\s*%s\b' %
- getattr(obj, '__name__', '-'))
- for i, line in enumerate(source_lines):
- if pat.match(line):
- lineno = i
- break
-
- # Find the line number for functions & methods.
- if inspect.ismethod(obj): obj = obj.im_func
- if inspect.isfunction(obj): obj = obj.func_code
- if inspect.istraceback(obj): obj = obj.tb_frame
- if inspect.isframe(obj): obj = obj.f_code
- if inspect.iscode(obj):
- lineno = getattr(obj, 'co_firstlineno', None)-1
-
- # Find the line number where the docstring starts. Assume
- # that it's the first line that begins with a quote mark.
- # Note: this could be fooled by a multiline function
- # signature, where a continuation line begins with a quote
- # mark.
- if lineno is not None:
- if source_lines is None:
- return lineno+1
- pat = re.compile('(^|.*:)\s*\w*("|\')')
- for lineno in range(lineno, len(source_lines)):
- if pat.match(source_lines[lineno]):
- return lineno
-
- # We couldn't find the line number.
- return None
-
-######################################################################
-## 5. DocTest Runner
-######################################################################
-
-class DocTestRunner:
- """
- A class used to run DocTest test cases, and accumulate statistics.
- The `run` method is used to process a single DocTest case. It
- returns a tuple `(f, t)`, where `t` is the number of test cases
- tried, and `f` is the number of test cases that failed.
-
- >>> tests = DocTestFinder().find(_TestClass)
- >>> runner = DocTestRunner(verbose=False)
- >>> for test in tests:
- ... print runner.run(test)
- (0, 2)
- (0, 1)
- (0, 2)
- (0, 2)
-
- The `summarize` method prints a summary of all the test cases that
- have been run by the runner, and returns an aggregated `(f, t)`
- tuple:
-
- >>> runner.summarize(verbose=1)
- 4 items passed all tests:
- 2 tests in _TestClass
- 2 tests in _TestClass.__init__
- 2 tests in _TestClass.get
- 1 tests in _TestClass.square
- 7 tests in 4 items.
- 7 passed and 0 failed.
- Test passed.
- (0, 7)
-
- The aggregated number of tried examples and failed examples is
- also available via the `tries` and `failures` attributes:
-
- >>> runner.tries
- 7
- >>> runner.failures
- 0
-
- The comparison between expected outputs and actual outputs is done
- by an `OutputChecker`. This comparison may be customized with a
- number of option flags; see the documentation for `testmod` for
- more information. If the option flags are insufficient, then the
- comparison may also be customized by passing a subclass of
- `OutputChecker` to the constructor.
-
- The test runner's display output can be controlled in two ways.
- First, an output function (`out) can be passed to
- `TestRunner.run`; this function will be called with strings that
- should be displayed. It defaults to `sys.stdout.write`. If
- capturing the output is not sufficient, then the display output
- can be also customized by subclassing DocTestRunner, and
- overriding the methods `report_start`, `report_success`,
- `report_unexpected_exception`, and `report_failure`.
- """
- # This divider string is used to separate failure messages, and to
- # separate sections of the summary.
- DIVIDER = "*" * 70
-
- def __init__(self, checker=None, verbose=None, optionflags=0):
- """
- Create a new test runner.
-
- Optional keyword arg `checker` is the `OutputChecker` that
- should be used to compare the expected outputs and actual
- outputs of doctest examples.
-
- Optional keyword arg 'verbose' prints lots of stuff if true,
- only failures if false; by default, it's true iff '-v' is in
- sys.argv.
-
- Optional argument `optionflags` can be used to control how the
- test runner compares expected output to actual output, and how
- it displays failures. See the documentation for `testmod` for
- more information.
- """
- self._checker = checker or OutputChecker()
- if verbose is None:
- verbose = '-v' in sys.argv
- self._verbose = verbose
- self.optionflags = optionflags
- self.original_optionflags = optionflags
-
- # Keep track of the examples we've run.
- self.tries = 0
- self.failures = 0
- self._name2ft = {}
-
- # Create a fake output target for capturing doctest output.
- self._fakeout = _SpoofOut()
-
- #/////////////////////////////////////////////////////////////////
- # Reporting methods
- #/////////////////////////////////////////////////////////////////
-
- def report_start(self, out, test, example):
- """
- Report that the test runner is about to process the given
- example. (Only displays a message if verbose=True)
- """
- if self._verbose:
- if example.want:
- out('Trying:\n' + _indent(example.source) +
- 'Expecting:\n' + _indent(example.want))
- else:
- out('Trying:\n' + _indent(example.source) +
- 'Expecting nothing\n')
-
- def report_success(self, out, test, example, got):
- """
- Report that the given example ran successfully. (Only
- displays a message if verbose=True)
- """
- if self._verbose:
- out("ok\n")
-
- def report_failure(self, out, test, example, got):
- """
- Report that the given example failed.
- """
- out(self._failure_header(test, example) +
- self._checker.output_difference(example, got, self.optionflags))
-
- def report_unexpected_exception(self, out, test, example, exc_info):
- """
- Report that the given example raised an unexpected exception.
- """
- out(self._failure_header(test, example) +
- 'Exception raised:\n' + _indent(_exception_traceback(exc_info)))
-
- def _failure_header(self, test, example):
- out = [self.DIVIDER]
- if test.filename:
- if test.lineno is not None and example.lineno is not None:
- lineno = test.lineno + example.lineno + 1
- else:
- lineno = '?'
- out.append('File "%s", line %s, in %s' %
- (test.filename, lineno, test.name))
- else:
- out.append('Line %s, in %s' % (example.lineno+1, test.name))
- out.append('Failed example:')
- source = example.source
- out.append(_indent(source))
- return '\n'.join(out)
-
- #/////////////////////////////////////////////////////////////////
- # DocTest Running
- #/////////////////////////////////////////////////////////////////
-
- def __run(self, test, compileflags, out):
- """
- Run the examples in `test`. Write the outcome of each example
- with one of the `DocTestRunner.report_*` methods, using the
- writer function `out`. `compileflags` is the set of compiler
- flags that should be used to execute examples. Return a tuple
- `(f, t)`, where `t` is the number of examples tried, and `f`
- is the number of examples that failed. The examples are run
- in the namespace `test.globs`.
- """
- # Keep track of the number of failures and tries.
- failures = tries = 0
-
- # Save the option flags (since option directives can be used
- # to modify them).
- original_optionflags = self.optionflags
-
- SUCCESS, FAILURE, BOOM = range(3) # `outcome` state
-
- check = self._checker.check_output
-
- # Process each example.
- for examplenum, example in enumerate(test.examples):
-
- # If REPORT_ONLY_FIRST_FAILURE is set, then supress
- # reporting after the first failure.
- quiet = (self.optionflags & REPORT_ONLY_FIRST_FAILURE and
- failures > 0)
-
- # Merge in the example's options.
- self.optionflags = original_optionflags
- if example.options:
- for (optionflag, val) in example.options.items():
- if val:
- self.optionflags |= optionflag
- else:
- self.optionflags &= ~optionflag
-
- # Record that we started this example.
- tries += 1
- if not quiet:
- self.report_start(out, test, example)
-
- # Use a special filename for compile(), so we can retrieve
- # the source code during interactive debugging (see
- # __patched_linecache_getlines).
- filename = '<doctest %s[%d]>' % (test.name, examplenum)
-
- # Run the example in the given context (globs), and record
- # any exception that gets raised. (But don't intercept
- # keyboard interrupts.)
- try:
- # Don't blink! This is where the user's code gets run.
- exec compile(example.source, filename, "single",
- compileflags, 1) in test.globs
- self.debugger.set_continue() # ==== Example Finished ====
- exception = None
- except KeyboardInterrupt:
- raise
- except:
- exception = sys.exc_info()
- self.debugger.set_continue() # ==== Example Finished ====
-
- got = self._fakeout.getvalue() # the actual output
- self._fakeout.truncate(0)
- outcome = FAILURE # guilty until proved innocent or insane
-
- # If the example executed without raising any exceptions,
- # verify its output.
- if exception is None:
- if check(example.want, got, self.optionflags):
- outcome = SUCCESS
-
- # The example raised an exception: check if it was expected.
- else:
- exc_info = sys.exc_info()
- exc_msg = traceback.format_exception_only(*exc_info[:2])[-1]
- if not quiet:
- got += _exception_traceback(exc_info)
-
- # If `example.exc_msg` is None, then we weren't expecting
- # an exception.
- if example.exc_msg is None:
- outcome = BOOM
-
- # We expected an exception: see whether it matches.
- elif check(example.exc_msg, exc_msg, self.optionflags):
- outcome = SUCCESS
-
- # Another chance if they didn't care about the detail.
- elif self.optionflags & IGNORE_EXCEPTION_DETAIL:
- m1 = re.match(r'[^:]*:', example.exc_msg)
- m2 = re.match(r'[^:]*:', exc_msg)
- if m1 and m2 and check(m1.group(0), m2.group(0),
- self.optionflags):
- outcome = SUCCESS
-
- # Report the outcome.
- if outcome is SUCCESS:
- if not quiet:
- self.report_success(out, test, example, got)
- elif outcome is FAILURE:
- if not quiet:
- self.report_failure(out, test, example, got)
- failures += 1
- elif outcome is BOOM:
- if not quiet:
- self.report_unexpected_exception(out, test, example,
- exc_info)
- failures += 1
- else:
- assert False, ("unknown outcome", outcome)
-
- # Restore the option flags (in case they were modified)
- self.optionflags = original_optionflags
-
- # Record and return the number of failures and tries.
- self.__record_outcome(test, failures, tries)
- return failures, tries
-
- def __record_outcome(self, test, f, t):
- """
- Record the fact that the given DocTest (`test`) generated `f`
- failures out of `t` tried examples.
- """
- f2, t2 = self._name2ft.get(test.name, (0,0))
- self._name2ft[test.name] = (f+f2, t+t2)
- self.failures += f
- self.tries += t
-
- __LINECACHE_FILENAME_RE = re.compile(r'<doctest '
- r'(?P<name>[\w\.]+)'
- r'\[(?P<examplenum>\d+)\]>$')
- def __patched_linecache_getlines(self, filename, module_globals=None):
- m = self.__LINECACHE_FILENAME_RE.match(filename)
- if m and m.group('name') == self.test.name:
- example = self.test.examples[int(m.group('examplenum'))]
- return example.source.splitlines(True)
- elif self.save_linecache_getlines.func_code.co_argcount>1:
- return self.save_linecache_getlines(filename, module_globals)
- else:
- return self.save_linecache_getlines(filename)
-
- def run(self, test, compileflags=None, out=None, clear_globs=True):
- """
- Run the examples in `test`, and display the results using the
- writer function `out`.
-
- The examples are run in the namespace `test.globs`. If
- `clear_globs` is true (the default), then this namespace will
- be cleared after the test runs, to help with garbage
- collection. If you would like to examine the namespace after
- the test completes, then use `clear_globs=False`.
-
- `compileflags` gives the set of flags that should be used by
- the Python compiler when running the examples. If not
- specified, then it will default to the set of future-import
- flags that apply to `globs`.
-
- The output of each example is checked using
- `DocTestRunner.check_output`, and the results are formatted by
- the `DocTestRunner.report_*` methods.
- """
- self.test = test
-
- if compileflags is None:
- compileflags = _extract_future_flags(test.globs)
-
- save_stdout = sys.stdout
- if out is None:
- out = save_stdout.write
- sys.stdout = self._fakeout
-
- # Patch pdb.set_trace to restore sys.stdout during interactive
- # debugging (so it's not still redirected to self._fakeout).
- # Note that the interactive output will go to *our*
- # save_stdout, even if that's not the real sys.stdout; this
- # allows us to write test cases for the set_trace behavior.
- save_set_trace = pdb.set_trace
- self.debugger = _OutputRedirectingPdb(save_stdout)
- self.debugger.reset()
- pdb.set_trace = self.debugger.set_trace
-
- # Patch linecache.getlines, so we can see the example's source
- # when we're inside the debugger.
- self.save_linecache_getlines = linecache.getlines
- linecache.getlines = self.__patched_linecache_getlines
-
- try:
- return self.__run(test, compileflags, out)
- finally:
- sys.stdout = save_stdout
- pdb.set_trace = save_set_trace
- linecache.getlines = self.save_linecache_getlines
- if clear_globs:
- test.globs.clear()
-
- #/////////////////////////////////////////////////////////////////
- # Summarization
- #/////////////////////////////////////////////////////////////////
- def summarize(self, verbose=None):
- """
- Print a summary of all the test cases that have been run by
- this DocTestRunner, and return a tuple `(f, t)`, where `f` is
- the total number of failed examples, and `t` is the total
- number of tried examples.
-
- The optional `verbose` argument controls how detailed the
- summary is. If the verbosity is not specified, then the
- DocTestRunner's verbosity is used.
- """
- if verbose is None:
- verbose = self._verbose
- notests = []
- passed = []
- failed = []
- totalt = totalf = 0
- for x in self._name2ft.items():
- name, (f, t) = x
- assert f <= t
- totalt += t
- totalf += f
- if t == 0:
- notests.append(name)
- elif f == 0:
- passed.append( (name, t) )
- else:
- failed.append(x)
- if verbose:
- if notests:
- print len(notests), "items had no tests:"
- notests.sort()
- for thing in notests:
- print " ", thing
- if passed:
- print len(passed), "items passed all tests:"
- passed.sort()
- for thing, count in passed:
- print " %3d tests in %s" % (count, thing)
- if failed:
- print self.DIVIDER
- print len(failed), "items had failures:"
- failed.sort()
- for thing, (f, t) in failed:
- print " %3d of %3d in %s" % (f, t, thing)
- if verbose:
- print totalt, "tests in", len(self._name2ft), "items."
- print totalt - totalf, "passed and", totalf, "failed."
- if totalf:
- print "***Test Failed***", totalf, "failures."
- elif verbose:
- print "Test passed."
- return totalf, totalt
-
- #/////////////////////////////////////////////////////////////////
- # Backward compatibility cruft to maintain doctest.master.
- #/////////////////////////////////////////////////////////////////
- def merge(self, other):
- d = self._name2ft
- for name, (f, t) in other._name2ft.items():
- if name in d:
- print "*** DocTestRunner.merge: '" + name + "' in both" \
- " testers; summing outcomes."
- f2, t2 = d[name]
- f = f + f2
- t = t + t2
- d[name] = f, t
-
-class OutputChecker:
- """
- A class used to check the whether the actual output from a doctest
- example matches the expected output. `OutputChecker` defines two
- methods: `check_output`, which compares a given pair of outputs,
- and returns true if they match; and `output_difference`, which
- returns a string describing the differences between two outputs.
- """
- def check_output(self, want, got, optionflags):
- """
- Return True iff the actual output from an example (`got`)
- matches the expected output (`want`). These strings are
- always considered to match if they are identical; but
- depending on what option flags the test runner is using,
- several non-exact match types are also possible. See the
- documentation for `TestRunner` for more information about
- option flags.
- """
- # Handle the common case first, for efficiency:
- # if they're string-identical, always return true.
- if got == want:
- return True
-
- # The values True and False replaced 1 and 0 as the return
- # value for boolean comparisons in Python 2.3.
- if not (optionflags & DONT_ACCEPT_TRUE_FOR_1):
- if (got,want) == ("True\n", "1\n"):
- return True
- if (got,want) == ("False\n", "0\n"):
- return True
-
- # <BLANKLINE> can be used as a special sequence to signify a
- # blank line, unless the DONT_ACCEPT_BLANKLINE flag is used.
- if not (optionflags & DONT_ACCEPT_BLANKLINE):
- # Replace <BLANKLINE> in want with a blank line.
- want = re.sub('(?m)^%s\s*?$' % re.escape(BLANKLINE_MARKER),
- '', want)
- # If a line in got contains only spaces, then remove the
- # spaces.
- got = re.sub('(?m)^\s*?$', '', got)
- if got == want:
- return True
-
- # This flag causes doctest to ignore any differences in the
- # contents of whitespace strings. Note that this can be used
- # in conjunction with the ELLIPSIS flag.
- if optionflags & NORMALIZE_WHITESPACE:
- got = ' '.join(got.split())
- want = ' '.join(want.split())
- if got == want:
- return True
-
- # The ELLIPSIS flag says to let the sequence "..." in `want`
- # match any substring in `got`.
- if optionflags & ELLIPSIS:
- if _ellipsis_match(want, got):
- return True
-
- # We didn't find any match; return false.
- return False
-
- # Should we do a fancy diff?
- def _do_a_fancy_diff(self, want, got, optionflags):
- # Not unless they asked for a fancy diff.
- if not optionflags & (REPORT_UDIFF |
- REPORT_CDIFF |
- REPORT_NDIFF):
- return False
-
- # If expected output uses ellipsis, a meaningful fancy diff is
- # too hard ... or maybe not. In two real-life failures Tim saw,
- # a diff was a major help anyway, so this is commented out.
- # [todo] _ellipsis_match() knows which pieces do and don't match,
- # and could be the basis for a kick-ass diff in this case.
- ##if optionflags & ELLIPSIS and ELLIPSIS_MARKER in want:
- ## return False
-
- # ndiff does intraline difference marking, so can be useful even
- # for 1-line differences.
- if optionflags & REPORT_NDIFF:
- return True
-
- # The other diff types need at least a few lines to be helpful.
- return want.count('\n') > 2 and got.count('\n') > 2
-
- def output_difference(self, example, got, optionflags):
- """
- Return a string describing the differences between the
- expected output for a given example (`example`) and the actual
- output (`got`). `optionflags` is the set of option flags used
- to compare `want` and `got`.
- """
- want = example.want
- # If <BLANKLINE>s are being used, then replace blank lines
- # with <BLANKLINE> in the actual output string.
- if not (optionflags & DONT_ACCEPT_BLANKLINE):
- got = re.sub('(?m)^[ ]*(?=\n)', BLANKLINE_MARKER, got)
-
- # Check if we should use diff.
- if self._do_a_fancy_diff(want, got, optionflags):
- # Split want & got into lines.
- want_lines = want.splitlines(True) # True == keep line ends
- got_lines = got.splitlines(True)
- # Use difflib to find their differences.
- if optionflags & REPORT_UDIFF:
- diff = difflib.unified_diff(want_lines, got_lines, n=2)
- diff = list(diff)[2:] # strip the diff header
- kind = 'unified diff with -expected +actual'
- elif optionflags & REPORT_CDIFF:
- diff = difflib.context_diff(want_lines, got_lines, n=2)
- diff = list(diff)[2:] # strip the diff header
- kind = 'context diff with expected followed by actual'
- elif optionflags & REPORT_NDIFF:
- engine = difflib.Differ(charjunk=difflib.IS_CHARACTER_JUNK)
- diff = list(engine.compare(want_lines, got_lines))
- kind = 'ndiff with -expected +actual'
- else:
- assert 0, 'Bad diff option'
- # Remove trailing whitespace on diff output.
- diff = [line.rstrip() + '\n' for line in diff]
- return 'Differences (%s):\n' % kind + _indent(''.join(diff))
-
- # If we're not using diff, then simply list the expected
- # output followed by the actual output.
- if want and got:
- return 'Expected:\n%sGot:\n%s' % (_indent(want), _indent(got))
- elif want:
- return 'Expected:\n%sGot nothing\n' % _indent(want)
- elif got:
- return 'Expected nothing\nGot:\n%s' % _indent(got)
- else:
- return 'Expected nothing\nGot nothing\n'
-
-class DocTestFailure(Exception):
- """A DocTest example has failed in debugging mode.
-
- The exception instance has variables:
-
- - test: the DocTest object being run
-
- - excample: the Example object that failed
-
- - got: the actual output
- """
- def __init__(self, test, example, got):
- self.test = test
- self.example = example
- self.got = got
-
- def __str__(self):
- return str(self.test)
-
-class UnexpectedException(Exception):
- """A DocTest example has encountered an unexpected exception
-
- The exception instance has variables:
-
- - test: the DocTest object being run
-
- - excample: the Example object that failed
-
- - exc_info: the exception info
- """
- def __init__(self, test, example, exc_info):
- self.test = test
- self.example = example
- self.exc_info = exc_info
-
- def __str__(self):
- return str(self.test)
-
-class DebugRunner(DocTestRunner):
- r"""Run doc tests but raise an exception as soon as there is a failure.
-
- If an unexpected exception occurs, an UnexpectedException is raised.
- It contains the test, the example, and the original exception:
-
- >>> runner = DebugRunner(verbose=False)
- >>> test = DocTestParser().get_doctest('>>> raise KeyError\n42',
- ... {}, 'foo', 'foo.py', 0)
- >>> try:
- ... runner.run(test)
- ... except UnexpectedException, failure:
- ... pass
-
- >>> failure.test is test
- True
-
- >>> failure.example.want
- '42\n'
-
- >>> exc_info = failure.exc_info
- >>> raise exc_info[0], exc_info[1], exc_info[2]
- Traceback (most recent call last):
- ...
- KeyError
-
- We wrap the original exception to give the calling application
- access to the test and example information.
-
- If the output doesn't match, then a DocTestFailure is raised:
-
- >>> test = DocTestParser().get_doctest('''
- ... >>> x = 1
- ... >>> x
- ... 2
- ... ''', {}, 'foo', 'foo.py', 0)
-
- >>> try:
- ... runner.run(test)
- ... except DocTestFailure, failure:
- ... pass
-
- DocTestFailure objects provide access to the test:
-
- >>> failure.test is test
- True
-
- As well as to the example:
-
- >>> failure.example.want
- '2\n'
-
- and the actual output:
-
- >>> failure.got
- '1\n'
-
- If a failure or error occurs, the globals are left intact:
-
- >>> del test.globs['__builtins__']
- >>> test.globs
- {'x': 1}
-
- >>> test = DocTestParser().get_doctest('''
- ... >>> x = 2
- ... >>> raise KeyError
- ... ''', {}, 'foo', 'foo.py', 0)
-
- >>> runner.run(test)
- Traceback (most recent call last):
- ...
- UnexpectedException: <DocTest foo from foo.py:0 (2 examples)>
-
- >>> del test.globs['__builtins__']
- >>> test.globs
- {'x': 2}
-
- But the globals are cleared if there is no error:
-
- >>> test = DocTestParser().get_doctest('''
- ... >>> x = 2
- ... ''', {}, 'foo', 'foo.py', 0)
-
- >>> runner.run(test)
- (0, 1)
-
- >>> test.globs
- {}
-
- """
-
- def run(self, test, compileflags=None, out=None, clear_globs=True):
- r = DocTestRunner.run(self, test, compileflags, out, False)
- if clear_globs:
- test.globs.clear()
- return r
-
- def report_unexpected_exception(self, out, test, example, exc_info):
- raise UnexpectedException(test, example, exc_info)
-
- def report_failure(self, out, test, example, got):
- raise DocTestFailure(test, example, got)
-
-######################################################################
-## 6. Test Functions
-######################################################################
-# These should be backwards compatible.
-
-# For backward compatibility, a global instance of a DocTestRunner
-# class, updated by testmod.
-master = None
-
-def testmod(m=None, name=None, globs=None, verbose=None, isprivate=None,
- report=True, optionflags=0, extraglobs=None,
- raise_on_error=False, exclude_empty=False):
- """m=None, name=None, globs=None, verbose=None, isprivate=None,
- report=True, optionflags=0, extraglobs=None, raise_on_error=False,
- exclude_empty=False
-
- Test examples in docstrings in functions and classes reachable
- from module m (or the current module if m is not supplied), starting
- with m.__doc__. Unless isprivate is specified, private names
- are not skipped.
-
- Also test examples reachable from dict m.__test__ if it exists and is
- not None. m.__test__ maps names to functions, classes and strings;
- function and class docstrings are tested even if the name is private;
- strings are tested directly, as if they were docstrings.
-
- Return (#failures, #tests).
-
- See doctest.__doc__ for an overview.
-
- Optional keyword arg "name" gives the name of the module; by default
- use m.__name__.
-
- Optional keyword arg "globs" gives a dict to be used as the globals
- when executing examples; by default, use m.__dict__. A copy of this
- dict is actually used for each docstring, so that each docstring's
- examples start with a clean slate.
-
- Optional keyword arg "extraglobs" gives a dictionary that should be
- merged into the globals that are used to execute examples. By
- default, no extra globals are used. This is new in 2.4.
-
- Optional keyword arg "verbose" prints lots of stuff if true, prints
- only failures if false; by default, it's true iff "-v" is in sys.argv.
-
- Optional keyword arg "report" prints a summary at the end when true,
- else prints nothing at the end. In verbose mode, the summary is
- detailed, else very brief (in fact, empty if all tests passed).
-
- Optional keyword arg "optionflags" or's together module constants,
- and defaults to 0. This is new in 2.3. Possible values (see the
- docs for details):
-
- DONT_ACCEPT_TRUE_FOR_1
- DONT_ACCEPT_BLANKLINE
- NORMALIZE_WHITESPACE
- ELLIPSIS
- IGNORE_EXCEPTION_DETAIL
- REPORT_UDIFF
- REPORT_CDIFF
- REPORT_NDIFF
- REPORT_ONLY_FIRST_FAILURE
-
- Optional keyword arg "raise_on_error" raises an exception on the
- first unexpected exception or failure. This allows failures to be
- post-mortem debugged.
-
- Deprecated in Python 2.4:
- Optional keyword arg "isprivate" specifies a function used to
- determine whether a name is private. The default function is
- treat all functions as public. Optionally, "isprivate" can be
- set to doctest.is_private to skip over functions marked as private
- using the underscore naming convention; see its docs for details.
-
- Advanced tomfoolery: testmod runs methods of a local instance of
- class doctest.Tester, then merges the results into (or creates)
- global Tester instance doctest.master. Methods of doctest.master
- can be called directly too, if you want to do something unusual.
- Passing report=0 to testmod is especially useful then, to delay
- displaying a summary. Invoke doctest.master.summarize(verbose)
- when you're done fiddling.
- """
- global master
-
- if isprivate is not None:
- warnings.warn("the isprivate argument is deprecated; "
- "examine DocTestFinder.find() lists instead",
- DeprecationWarning)
-
- # If no module was given, then use __main__.
- if m is None:
- # DWA - m will still be None if this wasn't invoked from the command
- # line, in which case the following TypeError is about as good an error
- # as we should expect
- m = sys.modules.get('__main__')
-
- # Check that we were actually given a module.
- if not inspect.ismodule(m):
- raise TypeError("testmod: module required; %r" % (m,))
-
- # If no name was given, then use the module's name.
- if name is None:
- name = m.__name__
-
- # Find, parse, and run all tests in the given module.
- finder = DocTestFinder(_namefilter=isprivate, exclude_empty=exclude_empty)
-
- if raise_on_error:
- runner = DebugRunner(verbose=verbose, optionflags=optionflags)
- else:
- runner = DocTestRunner(verbose=verbose, optionflags=optionflags)
-
- for test in finder.find(m, name, globs=globs, extraglobs=extraglobs):
- runner.run(test)
-
- if report:
- runner.summarize()
-
- if master is None:
- master = runner
- else:
- master.merge(runner)
-
- return runner.failures, runner.tries
-
-def testfile(filename, module_relative=True, name=None, package=None,
- globs=None, verbose=None, report=True, optionflags=0,
- extraglobs=None, raise_on_error=False, parser=DocTestParser()):
- """
- Test examples in the given file. Return (#failures, #tests).
-
- Optional keyword arg "module_relative" specifies how filenames
- should be interpreted:
-
- - If "module_relative" is True (the default), then "filename"
- specifies a module-relative path. By default, this path is
- relative to the calling module's directory; but if the
- "package" argument is specified, then it is relative to that
- package. To ensure os-independence, "filename" should use
- "/" characters to separate path segments, and should not
- be an absolute path (i.e., it may not begin with "/").
-
- - If "module_relative" is False, then "filename" specifies an
- os-specific path. The path may be absolute or relative (to
- the current working directory).
-
- Optional keyword arg "name" gives the name of the test; by default
- use the file's basename.
-
- Optional keyword argument "package" is a Python package or the
- name of a Python package whose directory should be used as the
- base directory for a module relative filename. If no package is
- specified, then the calling module's directory is used as the base
- directory for module relative filenames. It is an error to
- specify "package" if "module_relative" is False.
-
- Optional keyword arg "globs" gives a dict to be used as the globals
- when executing examples; by default, use {}. A copy of this dict
- is actually used for each docstring, so that each docstring's
- examples start with a clean slate.
-
- Optional keyword arg "extraglobs" gives a dictionary that should be
- merged into the globals that are used to execute examples. By
- default, no extra globals are used.
-
- Optional keyword arg "verbose" prints lots of stuff if true, prints
- only failures if false; by default, it's true iff "-v" is in sys.argv.
-
- Optional keyword arg "report" prints a summary at the end when true,
- else prints nothing at the end. In verbose mode, the summary is
- detailed, else very brief (in fact, empty if all tests passed).
-
- Optional keyword arg "optionflags" or's together module constants,
- and defaults to 0. Possible values (see the docs for details):
-
- DONT_ACCEPT_TRUE_FOR_1
- DONT_ACCEPT_BLANKLINE
- NORMALIZE_WHITESPACE
- ELLIPSIS
- IGNORE_EXCEPTION_DETAIL
- REPORT_UDIFF
- REPORT_CDIFF
- REPORT_NDIFF
- REPORT_ONLY_FIRST_FAILURE
-
- Optional keyword arg "raise_on_error" raises an exception on the
- first unexpected exception or failure. This allows failures to be
- post-mortem debugged.
-
- Optional keyword arg "parser" specifies a DocTestParser (or
- subclass) that should be used to extract tests from the files.
-
- Advanced tomfoolery: testmod runs methods of a local instance of
- class doctest.Tester, then merges the results into (or creates)
- global Tester instance doctest.master. Methods of doctest.master
- can be called directly too, if you want to do something unusual.
- Passing report=0 to testmod is especially useful then, to delay
- displaying a summary. Invoke doctest.master.summarize(verbose)
- when you're done fiddling.
- """
- global master
-
- if package and not module_relative:
- raise ValueError("Package may only be specified for module-"
- "relative paths.")
-
- # Relativize the path
- if module_relative:
- package = _normalize_module(package)
- filename = _module_relative_path(package, filename)
-
- # If no name was given, then use the file's name.
- if name is None:
- name = os.path.basename(filename)
-
- # Assemble the globals.
- if globs is None:
- globs = {}
- else:
- globs = globs.copy()
- if extraglobs is not None:
- globs.update(extraglobs)
-
- if raise_on_error:
- runner = DebugRunner(verbose=verbose, optionflags=optionflags)
- else:
- runner = DocTestRunner(verbose=verbose, optionflags=optionflags)
-
- # Read the file, convert it to a test, and run it.
- s = open(filename).read()
- test = parser.get_doctest(s, globs, name, filename, 0)
- runner.run(test)
-
- if report:
- runner.summarize()
-
- if master is None:
- master = runner
- else:
- master.merge(runner)
-
- return runner.failures, runner.tries
-
-def run_docstring_examples(f, globs, verbose=False, name="NoName",
- compileflags=None, optionflags=0):
- """
- Test examples in the given object's docstring (`f`), using `globs`
- as globals. Optional argument `name` is used in failure messages.
- If the optional argument `verbose` is true, then generate output
- even if there are no failures.
-
- `compileflags` gives the set of flags that should be used by the
- Python compiler when running the examples. If not specified, then
- it will default to the set of future-import flags that apply to
- `globs`.
-
- Optional keyword arg `optionflags` specifies options for the
- testing and output. See the documentation for `testmod` for more
- information.
- """
- # Find, parse, and run all tests in the given module.
- finder = DocTestFinder(verbose=verbose, recurse=False)
- runner = DocTestRunner(verbose=verbose, optionflags=optionflags)
- for test in finder.find(f, name, globs=globs):
- runner.run(test, compileflags=compileflags)
-
-######################################################################
-## 7. Tester
-######################################################################
-# This is provided only for backwards compatibility. It's not
-# actually used in any way.
-
-class Tester:
- def __init__(self, mod=None, globs=None, verbose=None,
- isprivate=None, optionflags=0):
-
- warnings.warn("class Tester is deprecated; "
- "use class doctest.DocTestRunner instead",
- DeprecationWarning, stacklevel=2)
- if mod is None and globs is None:
- raise TypeError("Tester.__init__: must specify mod or globs")
- if mod is not None and not inspect.ismodule(mod):
- raise TypeError("Tester.__init__: mod must be a module; %r" %
- (mod,))
- if globs is None:
- globs = mod.__dict__
- self.globs = globs
-
- self.verbose = verbose
- self.isprivate = isprivate
- self.optionflags = optionflags
- self.testfinder = DocTestFinder(_namefilter=isprivate)
- self.testrunner = DocTestRunner(verbose=verbose,
- optionflags=optionflags)
-
- def runstring(self, s, name):
- test = DocTestParser().get_doctest(s, self.globs, name, None, None)
- if self.verbose:
- print "Running string", name
- (f,t) = self.testrunner.run(test)
- if self.verbose:
- print f, "of", t, "examples failed in string", name
- return (f,t)
-
- def rundoc(self, object, name=None, module=None):
- f = t = 0
- tests = self.testfinder.find(object, name, module=module,
- globs=self.globs)
- for test in tests:
- (f2, t2) = self.testrunner.run(test)
- (f,t) = (f+f2, t+t2)
- return (f,t)
-
- def rundict(self, d, name, module=None):
- import types
- m = types.ModuleType(name)
- m.__dict__.update(d)
- if module is None:
- module = False
- return self.rundoc(m, name, module)
-
- def run__test__(self, d, name):
- import types
- m = types.ModuleType(name)
- m.__test__ = d
- return self.rundoc(m, name)
-
- def summarize(self, verbose=None):
- return self.testrunner.summarize(verbose)
-
- def merge(self, other):
- self.testrunner.merge(other.testrunner)
-
-######################################################################
-## 8. Unittest Support
-######################################################################
-
-_unittest_reportflags = 0
-
-def set_unittest_reportflags(flags):
- """Sets the unittest option flags.
-
- The old flag is returned so that a runner could restore the old
- value if it wished to:
-
- >>> old = _unittest_reportflags
- >>> set_unittest_reportflags(REPORT_NDIFF |
- ... REPORT_ONLY_FIRST_FAILURE) == old
- True
-
- >>> import doctest
- >>> doctest._unittest_reportflags == (REPORT_NDIFF |
- ... REPORT_ONLY_FIRST_FAILURE)
- True
-
- Only reporting flags can be set:
-
- >>> set_unittest_reportflags(ELLIPSIS)
- Traceback (most recent call last):
- ...
- ValueError: ('Only reporting flags allowed', 8)
-
- >>> set_unittest_reportflags(old) == (REPORT_NDIFF |
- ... REPORT_ONLY_FIRST_FAILURE)
- True
- """
- global _unittest_reportflags
-
- if (flags & REPORTING_FLAGS) != flags:
- raise ValueError("Only reporting flags allowed", flags)
- old = _unittest_reportflags
- _unittest_reportflags = flags
- return old
-
-
-class DocTestCase(unittest.TestCase):
-
- def __init__(self, test, optionflags=0, setUp=None, tearDown=None,
- checker=None):
-
- unittest.TestCase.__init__(self)
- self._dt_optionflags = optionflags
- self._dt_checker = checker
- self._dt_test = test
- self._dt_setUp = setUp
- self._dt_tearDown = tearDown
-
- def setUp(self):
- test = self._dt_test
-
- if self._dt_setUp is not None:
- self._dt_setUp(test)
-
- def tearDown(self):
- test = self._dt_test
-
- if self._dt_tearDown is not None:
- self._dt_tearDown(test)
-
- test.globs.clear()
-
- def runTest(self):
- test = self._dt_test
- old = sys.stdout
- new = StringIO()
- optionflags = self._dt_optionflags
-
- if not (optionflags & REPORTING_FLAGS):
- # The option flags don't include any reporting flags,
- # so add the default reporting flags
- optionflags |= _unittest_reportflags
-
- runner = DocTestRunner(optionflags=optionflags,
- checker=self._dt_checker, verbose=False)
-
- try:
- runner.DIVIDER = "-"*70
- failures, tries = runner.run(
- test, out=new.write, clear_globs=False)
- finally:
- sys.stdout = old
-
- if failures:
- raise self.failureException(self.format_failure(new.getvalue()))
-
- def format_failure(self, err):
- test = self._dt_test
- if test.lineno is None:
- lineno = 'unknown line number'
- else:
- lineno = '%s' % test.lineno
- lname = '.'.join(test.name.split('.')[-1:])
- return ('Failed doctest test for %s\n'
- ' File "%s", line %s, in %s\n\n%s'
- % (test.name, test.filename, lineno, lname, err)
- )
-
- def debug(self):
- r"""Run the test case without results and without catching exceptions
-
- The unit test framework includes a debug method on test cases
- and test suites to support post-mortem debugging. The test code
- is run in such a way that errors are not caught. This way a
- caller can catch the errors and initiate post-mortem debugging.
-
- The DocTestCase provides a debug method that raises
- UnexpectedException errors if there is an unexepcted
- exception:
-
- >>> test = DocTestParser().get_doctest('>>> raise KeyError\n42',
- ... {}, 'foo', 'foo.py', 0)
- >>> case = DocTestCase(test)
- >>> try:
- ... case.debug()
- ... except UnexpectedException, failure:
- ... pass
-
- The UnexpectedException contains the test, the example, and
- the original exception:
-
- >>> failure.test is test
- True
-
- >>> failure.example.want
- '42\n'
-
- >>> exc_info = failure.exc_info
- >>> raise exc_info[0], exc_info[1], exc_info[2]
- Traceback (most recent call last):
- ...
- KeyError
-
- If the output doesn't match, then a DocTestFailure is raised:
-
- >>> test = DocTestParser().get_doctest('''
- ... >>> x = 1
- ... >>> x
- ... 2
- ... ''', {}, 'foo', 'foo.py', 0)
- >>> case = DocTestCase(test)
-
- >>> try:
- ... case.debug()
- ... except DocTestFailure, failure:
- ... pass
-
- DocTestFailure objects provide access to the test:
-
- >>> failure.test is test
- True
-
- As well as to the example:
-
- >>> failure.example.want
- '2\n'
-
- and the actual output:
-
- >>> failure.got
- '1\n'
-
- """
-
- self.setUp()
- runner = DebugRunner(optionflags=self._dt_optionflags,
- checker=self._dt_checker, verbose=False)
- runner.run(self._dt_test)
- self.tearDown()
-
- def id(self):
- return self._dt_test.name
-
- def __repr__(self):
- name = self._dt_test.name.split('.')
- return "%s (%s)" % (name[-1], '.'.join(name[:-1]))
-
- __str__ = __repr__
-
- def shortDescription(self):
- return "Doctest: " + self._dt_test.name
-
-def DocTestSuite(module=None, globs=None, extraglobs=None, test_finder=None,
- **options):
- """
- Convert doctest tests for a module to a unittest test suite.
-
- This converts each documentation string in a module that
- contains doctest tests to a unittest test case. If any of the
- tests in a doc string fail, then the test case fails. An exception
- is raised showing the name of the file containing the test and a
- (sometimes approximate) line number.
-
- The `module` argument provides the module to be tested. The argument
- can be either a module or a module name.
-
- If no argument is given, the calling module is used.
-
- A number of options may be provided as keyword arguments:
-
- setUp
- A set-up function. This is called before running the
- tests in each file. The setUp function will be passed a DocTest
- object. The setUp function can access the test globals as the
- globs attribute of the test passed.
-
- tearDown
- A tear-down function. This is called after running the
- tests in each file. The tearDown function will be passed a DocTest
- object. The tearDown function can access the test globals as the
- globs attribute of the test passed.
-
- globs
- A dictionary containing initial global variables for the tests.
-
- optionflags
- A set of doctest option flags expressed as an integer.
- """
-
- if test_finder is None:
- test_finder = DocTestFinder()
-
- module = _normalize_module(module)
- tests = test_finder.find(module, globs=globs, extraglobs=extraglobs)
- if globs is None:
- globs = module.__dict__
- if not tests:
- # Why do we want to do this? Because it reveals a bug that might
- # otherwise be hidden.
- raise ValueError(module, "has no tests")
-
- tests.sort()
- suite = unittest.TestSuite()
- for test in tests:
- if len(test.examples) == 0:
- continue
- if not test.filename:
- filename = module.__file__
- if filename[-4:] in (".pyc", ".pyo"):
- filename = filename[:-1]
- test.filename = filename
- suite.addTest(DocTestCase(test, **options))
-
- return suite
-
-class DocFileCase(DocTestCase):
-
- def id(self):
- return '_'.join(self._dt_test.name.split('.'))
-
- def __repr__(self):
- return self._dt_test.filename
- __str__ = __repr__
-
- def format_failure(self, err):
- return ('Failed doctest test for %s\n File "%s", line 0\n\n%s'
- % (self._dt_test.name, self._dt_test.filename, err)
- )
-
-def DocFileTest(path, module_relative=True, package=None,
- globs=None, parser=DocTestParser(), **options):
- if globs is None:
- globs = {}
-
- if package and not module_relative:
- raise ValueError("Package may only be specified for module-"
- "relative paths.")
-
- # Relativize the path.
- if module_relative:
- package = _normalize_module(package)
- path = _module_relative_path(package, path)
-
- # Find the file and read it.
- name = os.path.basename(path)
- doc = open(path).read()
-
- # Convert it to a test, and wrap it in a DocFileCase.
- test = parser.get_doctest(doc, globs, name, path, 0)
- return DocFileCase(test, **options)
-
-def DocFileSuite(*paths, **kw):
- """A unittest suite for one or more doctest files.
-
- The path to each doctest file is given as a string; the
- interpretation of that string depends on the keyword argument
- "module_relative".
-
- A number of options may be provided as keyword arguments:
-
- module_relative
- If "module_relative" is True, then the given file paths are
- interpreted as os-independent module-relative paths. By
- default, these paths are relative to the calling module's
- directory; but if the "package" argument is specified, then
- they are relative to that package. To ensure os-independence,
- "filename" should use "/" characters to separate path
- segments, and may not be an absolute path (i.e., it may not
- begin with "/").
-
- If "module_relative" is False, then the given file paths are
- interpreted as os-specific paths. These paths may be absolute
- or relative (to the current working directory).
-
- package
- A Python package or the name of a Python package whose directory
- should be used as the base directory for module relative paths.
- If "package" is not specified, then the calling module's
- directory is used as the base directory for module relative
- filenames. It is an error to specify "package" if
- "module_relative" is False.
-
- setUp
- A set-up function. This is called before running the
- tests in each file. The setUp function will be passed a DocTest
- object. The setUp function can access the test globals as the
- globs attribute of the test passed.
-
- tearDown
- A tear-down function. This is called after running the
- tests in each file. The tearDown function will be passed a DocTest
- object. The tearDown function can access the test globals as the
- globs attribute of the test passed.
-
- globs
- A dictionary containing initial global variables for the tests.
-
- optionflags
- A set of doctest option flags expressed as an integer.
-
- parser
- A DocTestParser (or subclass) that should be used to extract
- tests from the files.
- """
- suite = unittest.TestSuite()
-
- # We do this here so that _normalize_module is called at the right
- # level. If it were called in DocFileTest, then this function
- # would be the caller and we might guess the package incorrectly.
- if kw.get('module_relative', True):
- kw['package'] = _normalize_module(kw.get('package'))
-
- for path in paths:
- suite.addTest(DocFileTest(path, **kw))
-
- return suite
-
-######################################################################
-## 9. Debugging Support
-######################################################################
-
-def script_from_examples(s):
- r"""Extract script from text with examples.
-
- Converts text with examples to a Python script. Example input is
- converted to regular code. Example output and all other words
- are converted to comments:
-
- >>> text = '''
- ... Here are examples of simple math.
- ...
- ... Python has super accurate integer addition
- ...
- ... >>> 2 + 2
- ... 5
- ...
- ... And very friendly error messages:
- ...
- ... >>> 1/0
- ... To Infinity
- ... And
- ... Beyond
- ...
- ... You can use logic if you want:
- ...
- ... >>> if 0:
- ... ... blah
- ... ... blah
- ... ...
- ...
- ... Ho hum
- ... '''
-
- >>> print script_from_examples(text)
- # Here are examples of simple math.
- #
- # Python has super accurate integer addition
- #
- 2 + 2
- # Expected:
- ## 5
- #
- # And very friendly error messages:
- #
- 1/0
- # Expected:
- ## To Infinity
- ## And
- ## Beyond
- #
- # You can use logic if you want:
- #
- if 0:
- blah
- blah
- #
- # Ho hum
- """
- output = []
- for piece in DocTestParser().parse(s):
- if isinstance(piece, Example):
- # Add the example's source code (strip trailing NL)
- output.append(piece.source[:-1])
- # Add the expected output:
- want = piece.want
- if want:
- output.append('# Expected:')
- output += ['## '+l for l in want.split('\n')[:-1]]
- else:
- # Add non-example text.
- output += [_comment_line(l)
- for l in piece.split('\n')[:-1]]
-
- # Trim junk on both ends.
- while output and output[-1] == '#':
- output.pop()
- while output and output[0] == '#':
- output.pop(0)
- # Combine the output, and return it.
- return '\n'.join(output)
-
-def testsource(module, name):
- """Extract the test sources from a doctest docstring as a script.
-
- Provide the module (or dotted name of the module) containing the
- test to be debugged and the name (within the module) of the object
- with the doc string with tests to be debugged.
- """
- module = _normalize_module(module)
- tests = DocTestFinder().find(module)
- test = [t for t in tests if t.name == name]
- if not test:
- raise ValueError(name, "not found in tests")
- test = test[0]
- testsrc = script_from_examples(test.docstring)
- return testsrc
-
-def debug_src(src, pm=False, globs=None):
- """Debug a single doctest docstring, in argument `src`'"""
- testsrc = script_from_examples(src)
- debug_script(testsrc, pm, globs)
-
-def debug_script(src, pm=False, globs=None):
- "Debug a test script. `src` is the script, as a string."
- import pdb
-
- # Note that tempfile.NameTemporaryFile() cannot be used. As the
- # docs say, a file so created cannot be opened by name a second time
- # on modern Windows boxes, and execfile() needs to open it.
- srcfilename = tempfile.mktemp(".py", "doctestdebug")
- f = open(srcfilename, 'w')
- f.write(src)
- f.close()
-
- try:
- if globs:
- globs = globs.copy()
- else:
- globs = {}
-
- if pm:
- try:
- execfile(srcfilename, globs, globs)
- except:
- print sys.exc_info()[1]
- pdb.post_mortem(sys.exc_info()[2])
- else:
- # Note that %r is vital here. '%s' instead can, e.g., cause
- # backslashes to get treated as metacharacters on Windows.
- pdb.run("execfile(%r)" % srcfilename, globs, globs)
-
- finally:
- os.remove(srcfilename)
-
-def debug(module, name, pm=False):
- """Debug a single doctest docstring.
-
- Provide the module (or dotted name of the module) containing the
- test to be debugged and the name (within the module) of the object
- with the docstring with tests to be debugged.
- """
- module = _normalize_module(module)
- testsrc = testsource(module, name)
- debug_script(testsrc, pm, module.__dict__)
-
-######################################################################
-## 10. Example Usage
-######################################################################
-class _TestClass:
- """
- A pointless class, for sanity-checking of docstring testing.
-
- Methods:
- square()
- get()
-
- >>> _TestClass(13).get() + _TestClass(-12).get()
- 1
- >>> hex(_TestClass(13).square().get())
- '0xa9'
- """
-
- def __init__(self, val):
- """val -> _TestClass object with associated value val.
-
- >>> t = _TestClass(123)
- >>> print t.get()
- 123
- """
-
- self.val = val
-
- def square(self):
- """square() -> square TestClass's associated value
-
- >>> _TestClass(13).square().get()
- 169
- """
-
- self.val = self.val ** 2
- return self
-
- def get(self):
- """get() -> return TestClass's associated value.
-
- >>> x = _TestClass(-42)
- >>> print x.get()
- -42
- """
-
- return self.val
-
-__test__ = {"_TestClass": _TestClass,
- "string": r"""
- Example of a string object, searched as-is.
- >>> x = 1; y = 2
- >>> x + y, x * y
- (3, 2)
- """,
-
- "bool-int equivalence": r"""
- In 2.2, boolean expressions displayed
- 0 or 1. By default, we still accept
- them. This can be disabled by passing
- DONT_ACCEPT_TRUE_FOR_1 to the new
- optionflags argument.
- >>> 4 == 4
- 1
- >>> 4 == 4
- True
- >>> 4 > 4
- 0
- >>> 4 > 4
- False
- """,
-
- "blank lines": r"""
- Blank lines can be marked with <BLANKLINE>:
- >>> print 'foo\n\nbar\n'
- foo
- <BLANKLINE>
- bar
- <BLANKLINE>
- """,
-
- "ellipsis": r"""
- If the ellipsis flag is used, then '...' can be used to
- elide substrings in the desired output:
- >>> print range(1000) #doctest: +ELLIPSIS
- [0, 1, 2, ..., 999]
- """,
-
- "whitespace normalization": r"""
- If the whitespace normalization flag is used, then
- differences in whitespace are ignored.
- >>> print range(30) #doctest: +NORMALIZE_WHITESPACE
- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29]
- """,
- }
-
-def _test():
- r = unittest.TextTestRunner()
- r.run(DocTestSuite())
-
-if __name__ == "__main__":
- _test()
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/server.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/server.py
deleted file mode 100644
index f4aaaa1..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/server.py
+++ /dev/null
@@ -1,48 +0,0 @@
-"""Basic http server for tests to simulate PyPI or custom indexes
-"""
-import urllib2
-import sys
-from threading import Thread
-from BaseHTTPServer import HTTPServer
-from SimpleHTTPServer import SimpleHTTPRequestHandler
-
-class IndexServer(HTTPServer):
- """Basic single-threaded http server simulating a package index
-
- You can use this server in unittest like this::
- s = IndexServer()
- s.start()
- index_url = s.base_url() + 'mytestindex'
- # do some test requests to the index
- # The index files should be located in setuptools/tests/indexes
- s.stop()
- """
- def __init__(self):
- HTTPServer.__init__(self, ('', 0), SimpleHTTPRequestHandler)
- self._run = True
-
- def serve(self):
- while True:
- self.handle_request()
- if not self._run: break
-
- def start(self):
- self.thread = Thread(target=self.serve)
- self.thread.start()
-
- def stop(self):
- """self.shutdown is not supported on python < 2.6"""
- self._run = False
- try:
- if sys.version > '2.6':
- urllib2.urlopen('http://127.0.0.1:%s/' % self.server_port,
- None, 5)
- else:
- urllib2.urlopen('http://127.0.0.1:%s/' % self.server_port)
- except urllib2.URLError:
- pass
- self.thread.join()
-
- def base_url(self):
- port = self.server_port
- return 'http://127.0.0.1:%s/setuptools/tests/indexes/' % port
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_build_ext.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_build_ext.py
deleted file mode 100644
index a520ced..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_build_ext.py
+++ /dev/null
@@ -1,20 +0,0 @@
-"""build_ext tests
-"""
-import os, shutil, tempfile, unittest
-from distutils.command.build_ext import build_ext as distutils_build_ext
-from setuptools.command.build_ext import build_ext
-from setuptools.dist import Distribution
-
-class TestBuildExtTest(unittest.TestCase):
-
- def test_get_ext_filename(self):
- # setuptools needs to give back the same
- # result than distutils, even if the fullname
- # is not in ext_map
- dist = Distribution()
- cmd = build_ext(dist)
- cmd.ext_map['foo/bar'] = ''
- res = cmd.get_ext_filename('foo')
- wanted = distutils_build_ext.get_ext_filename(cmd, 'foo')
- assert res == wanted
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_develop.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_develop.py
deleted file mode 100644
index 5576d5e..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_develop.py
+++ /dev/null
@@ -1,82 +0,0 @@
-"""develop tests
-"""
-import sys
-import os, shutil, tempfile, unittest
-import tempfile
-import site
-from StringIO import StringIO
-
-from distutils.errors import DistutilsError
-from setuptools.command.develop import develop
-from setuptools.command import easy_install as easy_install_pkg
-from setuptools.dist import Distribution
-
-SETUP_PY = """\
-from setuptools import setup
-
-setup(name='foo')
-"""
-
-class TestDevelopTest(unittest.TestCase):
-
- def setUp(self):
- self.dir = tempfile.mkdtemp()
- setup = os.path.join(self.dir, 'setup.py')
- f = open(setup, 'w')
- f.write(SETUP_PY)
- f.close()
- self.old_cwd = os.getcwd()
- os.chdir(self.dir)
- if sys.version >= "2.6":
- self.old_base = site.USER_BASE
- site.USER_BASE = tempfile.mkdtemp()
- self.old_site = site.USER_SITE
- site.USER_SITE = tempfile.mkdtemp()
-
- def tearDown(self):
- os.chdir(self.old_cwd)
- shutil.rmtree(self.dir)
- if sys.version >= "2.6":
- shutil.rmtree(site.USER_BASE)
- shutil.rmtree(site.USER_SITE)
- site.USER_BASE = self.old_base
- site.USER_SITE = self.old_site
-
- def test_develop(self):
- if sys.version < "2.6" or hasattr(sys, 'real_prefix'):
- return
- dist = Distribution()
- dist.script_name = 'setup.py'
- cmd = develop(dist)
- cmd.user = 1
- cmd.ensure_finalized()
- cmd.install_dir = site.USER_SITE
- cmd.user = 1
- old_stdout = sys.stdout
- sys.stdout = StringIO()
- try:
- cmd.run()
- finally:
- sys.stdout = old_stdout
-
- # let's see if we got our egg link at the right place
- content = os.listdir(site.USER_SITE)
- content.sort()
- self.assertEquals(content, ['UNKNOWN.egg-link', 'easy-install.pth'])
-
- def test_develop_with_setup_requires(self):
-
- wanted = ("Could not find suitable distribution for "
- "Requirement.parse('I-DONT-EXIST')")
- old_dir = os.getcwd()
- os.chdir(self.dir)
- try:
- try:
- dist = Distribution({'setup_requires': ['I_DONT_EXIST']})
- except DistutilsError, e:
- error = str(e)
- if error == wanted:
- pass
- finally:
- os.chdir(old_dir)
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_easy_install.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_easy_install.py
deleted file mode 100644
index 4150ad1..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_easy_install.py
+++ /dev/null
@@ -1,252 +0,0 @@
-"""Easy install Tests
-"""
-import sys
-import os, shutil, tempfile, unittest
-import site
-from StringIO import StringIO
-from setuptools.command.easy_install import easy_install, get_script_args, main
-from setuptools.command.easy_install import PthDistributions
-from setuptools.command import easy_install as easy_install_pkg
-from setuptools.dist import Distribution
-from pkg_resources import Distribution as PRDistribution
-
-try:
- import multiprocessing
- import logging
- _LOG = logging.getLogger('test_easy_install')
- logging.basicConfig(level=logging.INFO, stream=sys.stderr)
- _MULTIPROC = True
-except ImportError:
- _MULTIPROC = False
- _LOG = None
-
-class FakeDist(object):
- def get_entry_map(self, group):
- if group != 'console_scripts':
- return {}
- return {'name': 'ep'}
-
- def as_requirement(self):
- return 'spec'
-
-WANTED = """\
-#!%s
-# EASY-INSTALL-ENTRY-SCRIPT: 'spec','console_scripts','name'
-__requires__ = 'spec'
-import sys
-from pkg_resources import load_entry_point
-
-if __name__ == '__main__':
- sys.exit(
- load_entry_point('spec', 'console_scripts', 'name')()
- )
-""" % sys.executable
-
-SETUP_PY = """\
-from setuptools import setup
-
-setup(name='foo')
-"""
-
-class TestEasyInstallTest(unittest.TestCase):
-
- def test_install_site_py(self):
- dist = Distribution()
- cmd = easy_install(dist)
- cmd.sitepy_installed = False
- cmd.install_dir = tempfile.mkdtemp()
- try:
- cmd.install_site_py()
- sitepy = os.path.join(cmd.install_dir, 'site.py')
- self.assert_(os.path.exists(sitepy))
- finally:
- shutil.rmtree(cmd.install_dir)
-
- def test_get_script_args(self):
- dist = FakeDist()
-
- old_platform = sys.platform
- try:
- name, script = [i for i in get_script_args(dist).next()][0:2]
- finally:
- sys.platform = old_platform
-
- self.assertEquals(script, WANTED)
-
- def test_no_setup_cfg(self):
- # makes sure easy_install as a command (main)
- # doesn't use a setup.cfg file that is located
- # in the current working directory
- dir = tempfile.mkdtemp()
- setup_cfg = open(os.path.join(dir, 'setup.cfg'), 'w')
- setup_cfg.write('[easy_install]\nfind_links = http://example.com')
- setup_cfg.close()
- setup_py = open(os.path.join(dir, 'setup.py'), 'w')
- setup_py.write(SETUP_PY)
- setup_py.close()
-
- from setuptools.dist import Distribution
-
- def _parse_command_line(self):
- msg = 'Error: a local setup.cfg was used'
- opts = self.command_options
- if 'easy_install' in opts:
- assert 'find_links' not in opts['easy_install'], msg
- return self._old_parse_command_line
-
- Distribution._old_parse_command_line = Distribution.parse_command_line
- Distribution.parse_command_line = _parse_command_line
-
- old_wd = os.getcwd()
- try:
- os.chdir(dir)
- main([])
- finally:
- os.chdir(old_wd)
- shutil.rmtree(dir)
-
- def test_no_find_links(self):
- # new option '--no-find-links', that blocks find-links added at
- # the project level
- dist = Distribution()
- cmd = easy_install(dist)
- cmd.check_pth_processing = lambda : True
- cmd.no_find_links = True
- cmd.find_links = ['link1', 'link2']
- cmd.install_dir = os.path.join(tempfile.mkdtemp(), 'ok')
- cmd.args = ['ok']
- cmd.ensure_finalized()
- self.assertEquals(cmd.package_index.scanned_urls, {})
-
- # let's try without it (default behavior)
- cmd = easy_install(dist)
- cmd.check_pth_processing = lambda : True
- cmd.find_links = ['link1', 'link2']
- cmd.install_dir = os.path.join(tempfile.mkdtemp(), 'ok')
- cmd.args = ['ok']
- cmd.ensure_finalized()
- keys = cmd.package_index.scanned_urls.keys()
- keys.sort()
- self.assertEquals(keys, ['link1', 'link2'])
-
-
-class TestPTHFileWriter(unittest.TestCase):
- def test_add_from_cwd_site_sets_dirty(self):
- '''a pth file manager should set dirty
- if a distribution is in site but also the cwd
- '''
- pth = PthDistributions('does-not_exist', [os.getcwd()])
- self.assert_(not pth.dirty)
- pth.add(PRDistribution(os.getcwd()))
- self.assert_(pth.dirty)
-
- def test_add_from_site_is_ignored(self):
- if os.name != 'nt':
- location = '/test/location/does-not-have-to-exist'
- else:
- location = 'c:\\does_not_exist'
- pth = PthDistributions('does-not_exist', [location, ])
- self.assert_(not pth.dirty)
- pth.add(PRDistribution(location))
- self.assert_(not pth.dirty)
-
-
-class TestUserInstallTest(unittest.TestCase):
-
- def setUp(self):
- self.dir = tempfile.mkdtemp()
- setup = os.path.join(self.dir, 'setup.py')
- f = open(setup, 'w')
- f.write(SETUP_PY)
- f.close()
- self.old_cwd = os.getcwd()
- os.chdir(self.dir)
- if sys.version >= "2.6":
- self.old_has_site = easy_install_pkg.HAS_USER_SITE
- self.old_file = easy_install_pkg.__file__
- self.old_base = site.USER_BASE
- site.USER_BASE = tempfile.mkdtemp()
- self.old_site = site.USER_SITE
- site.USER_SITE = tempfile.mkdtemp()
- easy_install_pkg.__file__ = site.USER_SITE
-
- def tearDown(self):
- os.chdir(self.old_cwd)
- shutil.rmtree(self.dir)
- if sys.version >= "2.6":
- shutil.rmtree(site.USER_BASE)
- shutil.rmtree(site.USER_SITE)
- site.USER_BASE = self.old_base
- site.USER_SITE = self.old_site
- easy_install_pkg.HAS_USER_SITE = self.old_has_site
- easy_install_pkg.__file__ = self.old_file
-
- def test_user_install_implied(self):
- easy_install_pkg.HAS_USER_SITE = True # disabled sometimes
- #XXX: replace with something meaningfull
- if sys.version < "2.6":
- return #SKIP
- dist = Distribution()
- dist.script_name = 'setup.py'
- cmd = easy_install(dist)
- cmd.args = ['py']
- cmd.ensure_finalized()
- self.assertTrue(cmd.user, 'user should be implied')
-
- def test_multiproc_atexit(self):
- if not _MULTIPROC:
- return
- _LOG.info('this should not break')
-
- def test_user_install_not_implied_without_usersite_enabled(self):
- easy_install_pkg.HAS_USER_SITE = False # usually enabled
- #XXX: replace with something meaningfull
- if sys.version < "2.6":
- return #SKIP
- dist = Distribution()
- dist.script_name = 'setup.py'
- cmd = easy_install(dist)
- cmd.args = ['py']
- cmd.initialize_options()
- self.assertFalse(cmd.user, 'NOT user should be implied')
-
- def test_local_index(self):
- # make sure the local index is used
- # when easy_install looks for installed
- # packages
- new_location = tempfile.mkdtemp()
- target = tempfile.mkdtemp()
- egg_file = os.path.join(new_location, 'foo-1.0.egg-info')
- f = open(egg_file, 'w')
- try:
- f.write('Name: foo\n')
- except:
- f.close()
-
- sys.path.append(target)
- old_ppath = os.environ.get('PYTHONPATH')
- os.environ['PYTHONPATH'] = os.path.pathsep.join(sys.path)
- try:
- dist = Distribution()
- dist.script_name = 'setup.py'
- cmd = easy_install(dist)
- cmd.install_dir = target
- cmd.args = ['foo']
- cmd.ensure_finalized()
- cmd.local_index.scan([new_location])
- res = cmd.easy_install('foo')
- self.assertEquals(res.location, new_location)
- finally:
- sys.path.remove(target)
- for basedir in [new_location, target, ]:
- if not os.path.exists(basedir) or not os.path.isdir(basedir):
- continue
- try:
- shutil.rmtree(basedir)
- except:
- pass
- if old_ppath is not None:
- os.environ['PYTHONPATH'] = old_ppath
- else:
- del os.environ['PYTHONPATH']
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_packageindex.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_packageindex.py
deleted file mode 100644
index 00d44ca..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_packageindex.py
+++ /dev/null
@@ -1,121 +0,0 @@
-"""Package Index Tests
-"""
-# More would be better!
-import sys
-import os, shutil, tempfile, unittest, urllib2
-import pkg_resources
-import setuptools.package_index
-from server import IndexServer
-
-class TestPackageIndex(unittest.TestCase):
-
- def test_bad_urls(self):
- index = setuptools.package_index.PackageIndex()
- url = 'http://127.0.0.1:0/nonesuch/test_package_index'
- try:
- v = index.open_url(url)
- except Exception, v:
- self.assert_(url in str(v))
- else:
- self.assert_(isinstance(v,urllib2.HTTPError))
-
- # issue 16
- # easy_install inquant.contentmirror.plone breaks because of a typo
- # in its home URL
- index = setuptools.package_index.PackageIndex(
- hosts=('www.example.com',)
- )
-
- url = 'url:%20https://svn.plone.org/svn/collective/inquant.contentmirror.plone/trunk'
- try:
- v = index.open_url(url)
- except Exception, v:
- self.assert_(url in str(v))
- else:
- self.assert_(isinstance(v, urllib2.HTTPError))
-
- def _urlopen(*args):
- import httplib
- raise httplib.BadStatusLine('line')
-
- old_urlopen = urllib2.urlopen
- urllib2.urlopen = _urlopen
- url = 'http://example.com'
- try:
- try:
- v = index.open_url(url)
- except Exception, v:
- self.assert_('line' in str(v))
- else:
- raise AssertionError('Should have raise here!')
- finally:
- urllib2.urlopen = old_urlopen
-
- # issue 20
- url = 'http://http://svn.pythonpaste.org/Paste/wphp/trunk'
- try:
- index.open_url(url)
- except Exception, v:
- self.assert_('nonnumeric port' in str(v))
-
-
- # issue #160
- if sys.version_info[0] == 2 and sys.version_info[1] == 7:
- # this should not fail
- url = 'http://example.com'
- page = ('<a href="http://www.famfamfam.com]('
- 'http://www.famfamfam.com/">')
- index.process_index(url, page)
-
-
- def test_url_ok(self):
- index = setuptools.package_index.PackageIndex(
- hosts=('www.example.com',)
- )
- url = 'file:///tmp/test_package_index'
- self.assert_(index.url_ok(url, True))
-
- def test_links_priority(self):
- """
- Download links from the pypi simple index should be used before
- external download links.
- http://bitbucket.org/tarek/distribute/issue/163/md5-validation-error
-
- Usecase :
- - someone uploads a package on pypi, a md5 is generated
- - someone manually copies this link (with the md5 in the url) onto an
- external page accessible from the package page.
- - someone reuploads the package (with a different md5)
- - while easy_installing, an MD5 error occurs because the external link
- is used
- -> Distribute should use the link from pypi, not the external one.
- """
- # start an index server
- server = IndexServer()
- server.start()
- index_url = server.base_url() + 'test_links_priority/simple/'
-
- # scan a test index
- pi = setuptools.package_index.PackageIndex(index_url)
- requirement = pkg_resources.Requirement.parse('foobar')
- pi.find_packages(requirement)
- server.stop()
-
- # the distribution has been found
- self.assert_('foobar' in pi)
- # we have only one link, because links are compared without md5
- self.assert_(len(pi['foobar'])==1)
- # the link should be from the index
- self.assert_('correct_md5' in pi['foobar'][0].location)
-
- def test_parse_bdist_wininst(self):
- self.assertEqual(setuptools.package_index.parse_bdist_wininst(
- 'reportlab-2.5.win32-py2.4.exe'), ('reportlab-2.5', '2.4', 'win32'))
- self.assertEqual(setuptools.package_index.parse_bdist_wininst(
- 'reportlab-2.5.win32.exe'), ('reportlab-2.5', None, 'win32'))
- self.assertEqual(setuptools.package_index.parse_bdist_wininst(
- 'reportlab-2.5.win-amd64-py2.7.exe'), ('reportlab-2.5', '2.7', 'win-amd64'))
- self.assertEqual(setuptools.package_index.parse_bdist_wininst(
- 'reportlab-2.5.win-amd64.exe'), ('reportlab-2.5', None, 'win-amd64'))
-
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_resources.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_resources.py
deleted file mode 100644
index 3e0309f..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_resources.py
+++ /dev/null
@@ -1,649 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-# NOTE: the shebang and encoding lines are for ScriptHeaderTests; do not remove
-from unittest import TestCase, makeSuite; from pkg_resources import *
-from setuptools.command.easy_install import get_script_header, is_sh
-import os, pkg_resources, sys, StringIO, tempfile, shutil
-try: frozenset
-except NameError:
- from sets import ImmutableSet as frozenset
-
-def safe_repr(obj, short=False):
- """ copied from Python2.7"""
- try:
- result = repr(obj)
- except Exception:
- result = object.__repr__(obj)
- if not short or len(result) < _MAX_LENGTH:
- return result
- return result[:_MAX_LENGTH] + ' [truncated]...'
-
-class Metadata(EmptyProvider):
- """Mock object to return metadata as if from an on-disk distribution"""
-
- def __init__(self,*pairs):
- self.metadata = dict(pairs)
-
- def has_metadata(self,name):
- return name in self.metadata
-
- def get_metadata(self,name):
- return self.metadata[name]
-
- def get_metadata_lines(self,name):
- return yield_lines(self.get_metadata(name))
-
-class DistroTests(TestCase):
-
- def testCollection(self):
- # empty path should produce no distributions
- ad = Environment([], platform=None, python=None)
- self.assertEqual(list(ad), [])
- self.assertEqual(ad['FooPkg'],[])
- ad.add(Distribution.from_filename("FooPkg-1.3_1.egg"))
- ad.add(Distribution.from_filename("FooPkg-1.4-py2.4-win32.egg"))
- ad.add(Distribution.from_filename("FooPkg-1.2-py2.4.egg"))
-
- # Name is in there now
- self.assert_(ad['FooPkg'])
- # But only 1 package
- self.assertEqual(list(ad), ['foopkg'])
-
- # Distributions sort by version
- self.assertEqual(
- [dist.version for dist in ad['FooPkg']], ['1.4','1.3-1','1.2']
- )
- # Removing a distribution leaves sequence alone
- ad.remove(ad['FooPkg'][1])
- self.assertEqual(
- [dist.version for dist in ad['FooPkg']], ['1.4','1.2']
- )
- # And inserting adds them in order
- ad.add(Distribution.from_filename("FooPkg-1.9.egg"))
- self.assertEqual(
- [dist.version for dist in ad['FooPkg']], ['1.9','1.4','1.2']
- )
-
- ws = WorkingSet([])
- foo12 = Distribution.from_filename("FooPkg-1.2-py2.4.egg")
- foo14 = Distribution.from_filename("FooPkg-1.4-py2.4-win32.egg")
- req, = parse_requirements("FooPkg>=1.3")
-
- # Nominal case: no distros on path, should yield all applicable
- self.assertEqual(ad.best_match(req,ws).version, '1.9')
- # If a matching distro is already installed, should return only that
- ws.add(foo14); self.assertEqual(ad.best_match(req,ws).version, '1.4')
-
- # If the first matching distro is unsuitable, it's a version conflict
- ws = WorkingSet([]); ws.add(foo12); ws.add(foo14)
- self.assertRaises(VersionConflict, ad.best_match, req, ws)
-
- # If more than one match on the path, the first one takes precedence
- ws = WorkingSet([]); ws.add(foo14); ws.add(foo12); ws.add(foo14);
- self.assertEqual(ad.best_match(req,ws).version, '1.4')
-
- def checkFooPkg(self,d):
- self.assertEqual(d.project_name, "FooPkg")
- self.assertEqual(d.key, "foopkg")
- self.assertEqual(d.version, "1.3-1")
- self.assertEqual(d.py_version, "2.4")
- self.assertEqual(d.platform, "win32")
- self.assertEqual(d.parsed_version, parse_version("1.3-1"))
-
- def testDistroBasics(self):
- d = Distribution(
- "/some/path",
- project_name="FooPkg",version="1.3-1",py_version="2.4",platform="win32"
- )
- self.checkFooPkg(d)
-
- d = Distribution("/some/path")
- self.assertEqual(d.py_version, sys.version[:3])
- self.assertEqual(d.platform, None)
-
- def testDistroParse(self):
- d = Distribution.from_filename("FooPkg-1.3_1-py2.4-win32.egg")
- self.checkFooPkg(d)
- d = Distribution.from_filename("FooPkg-1.3_1-py2.4-win32.egg-info")
- self.checkFooPkg(d)
-
- def testDistroMetadata(self):
- d = Distribution(
- "/some/path", project_name="FooPkg", py_version="2.4", platform="win32",
- metadata = Metadata(
- ('PKG-INFO',"Metadata-Version: 1.0\nVersion: 1.3-1\n")
- )
- )
- self.checkFooPkg(d)
-
-
- def distRequires(self, txt):
- return Distribution("/foo", metadata=Metadata(('depends.txt', txt)))
-
- def checkRequires(self, dist, txt, extras=()):
- self.assertEqual(
- list(dist.requires(extras)),
- list(parse_requirements(txt))
- )
-
- def testDistroDependsSimple(self):
- for v in "Twisted>=1.5", "Twisted>=1.5\nZConfig>=2.0":
- self.checkRequires(self.distRequires(v), v)
-
-
- def testResolve(self):
- ad = Environment([]); ws = WorkingSet([])
- # Resolving no requirements -> nothing to install
- self.assertEqual( list(ws.resolve([],ad)), [] )
- # Request something not in the collection -> DistributionNotFound
- self.assertRaises(
- DistributionNotFound, ws.resolve, parse_requirements("Foo"), ad
- )
- Foo = Distribution.from_filename(
- "/foo_dir/Foo-1.2.egg",
- metadata=Metadata(('depends.txt', "[bar]\nBaz>=2.0"))
- )
- ad.add(Foo); ad.add(Distribution.from_filename("Foo-0.9.egg"))
-
- # Request thing(s) that are available -> list to activate
- for i in range(3):
- targets = list(ws.resolve(parse_requirements("Foo"), ad))
- self.assertEqual(targets, [Foo])
- map(ws.add,targets)
- self.assertRaises(VersionConflict, ws.resolve,
- parse_requirements("Foo==0.9"), ad)
- ws = WorkingSet([]) # reset
-
- # Request an extra that causes an unresolved dependency for "Baz"
- self.assertRaises(
- DistributionNotFound, ws.resolve,parse_requirements("Foo[bar]"), ad
- )
- Baz = Distribution.from_filename(
- "/foo_dir/Baz-2.1.egg", metadata=Metadata(('depends.txt', "Foo"))
- )
- ad.add(Baz)
-
- # Activation list now includes resolved dependency
- self.assertEqual(
- list(ws.resolve(parse_requirements("Foo[bar]"), ad)), [Foo,Baz]
- )
- # Requests for conflicting versions produce VersionConflict
- self.assertRaises( VersionConflict,
- ws.resolve, parse_requirements("Foo==1.2\nFoo!=1.2"), ad
- )
-
- def testDistroDependsOptions(self):
- d = self.distRequires("""
- Twisted>=1.5
- [docgen]
- ZConfig>=2.0
- docutils>=0.3
- [fastcgi]
- fcgiapp>=0.1""")
- self.checkRequires(d,"Twisted>=1.5")
- self.checkRequires(
- d,"Twisted>=1.5 ZConfig>=2.0 docutils>=0.3".split(), ["docgen"]
- )
- self.checkRequires(
- d,"Twisted>=1.5 fcgiapp>=0.1".split(), ["fastcgi"]
- )
- self.checkRequires(
- d,"Twisted>=1.5 ZConfig>=2.0 docutils>=0.3 fcgiapp>=0.1".split(),
- ["docgen","fastcgi"]
- )
- self.checkRequires(
- d,"Twisted>=1.5 fcgiapp>=0.1 ZConfig>=2.0 docutils>=0.3".split(),
- ["fastcgi", "docgen"]
- )
- self.assertRaises(UnknownExtra, d.requires, ["foo"])
-
- def testSetuptoolsDistributeCombination(self):
- # Ensure that installing a 0.7-series setuptools fails. PJE says that
- # it will not co-exist.
- ws = WorkingSet([])
- d = Distribution(
- "/some/path",
- project_name="setuptools",
- version="0.7a1")
- self.assertRaises(ValueError, ws.add, d)
- # A 0.6-series is no problem
- d2 = Distribution(
- "/some/path",
- project_name="setuptools",
- version="0.6c9")
- ws.add(d2)
-
- # a unexisting version needs to work
- ws = WorkingSet([])
- d3 = Distribution(
- "/some/path",
- project_name="setuptools")
- ws.add(d3)
-
-
-class EntryPointTests(TestCase):
-
- def assertfields(self, ep):
- self.assertEqual(ep.name,"foo")
- self.assertEqual(ep.module_name,"setuptools.tests.test_resources")
- self.assertEqual(ep.attrs, ("EntryPointTests",))
- self.assertEqual(ep.extras, ("x",))
- self.assert_(ep.load() is EntryPointTests)
- self.assertEqual(
- str(ep),
- "foo = setuptools.tests.test_resources:EntryPointTests [x]"
- )
-
- def setUp(self):
- self.dist = Distribution.from_filename(
- "FooPkg-1.2-py2.4.egg", metadata=Metadata(('requires.txt','[x]')))
-
- def testBasics(self):
- ep = EntryPoint(
- "foo", "setuptools.tests.test_resources", ["EntryPointTests"],
- ["x"], self.dist
- )
- self.assertfields(ep)
-
- def testParse(self):
- s = "foo = setuptools.tests.test_resources:EntryPointTests [x]"
- ep = EntryPoint.parse(s, self.dist)
- self.assertfields(ep)
-
- ep = EntryPoint.parse("bar baz= spammity[PING]")
- self.assertEqual(ep.name,"bar baz")
- self.assertEqual(ep.module_name,"spammity")
- self.assertEqual(ep.attrs, ())
- self.assertEqual(ep.extras, ("ping",))
-
- ep = EntryPoint.parse(" fizzly = wocka:foo")
- self.assertEqual(ep.name,"fizzly")
- self.assertEqual(ep.module_name,"wocka")
- self.assertEqual(ep.attrs, ("foo",))
- self.assertEqual(ep.extras, ())
-
- def testRejects(self):
- for ep in [
- "foo", "x=1=2", "x=a:b:c", "q=x/na", "fez=pish:tush-z", "x=f[a]>2",
- ]:
- try: EntryPoint.parse(ep)
- except ValueError: pass
- else: raise AssertionError("Should've been bad", ep)
-
- def checkSubMap(self, m):
- self.assertEqual(len(m), len(self.submap_expect))
- for key, ep in self.submap_expect.iteritems():
- self.assertEqual(repr(m.get(key)), repr(ep))
-
- submap_expect = dict(
- feature1=EntryPoint('feature1', 'somemodule', ['somefunction']),
- feature2=EntryPoint('feature2', 'another.module', ['SomeClass'], ['extra1','extra2']),
- feature3=EntryPoint('feature3', 'this.module', extras=['something'])
- )
- submap_str = """
- # define features for blah blah
- feature1 = somemodule:somefunction
- feature2 = another.module:SomeClass [extra1,extra2]
- feature3 = this.module [something]
- """
-
- def testParseList(self):
- self.checkSubMap(EntryPoint.parse_group("xyz", self.submap_str))
- self.assertRaises(ValueError, EntryPoint.parse_group, "x a", "foo=bar")
- self.assertRaises(ValueError, EntryPoint.parse_group, "x",
- ["foo=baz", "foo=bar"])
-
- def testParseMap(self):
- m = EntryPoint.parse_map({'xyz':self.submap_str})
- self.checkSubMap(m['xyz'])
- self.assertEqual(m.keys(),['xyz'])
- m = EntryPoint.parse_map("[xyz]\n"+self.submap_str)
- self.checkSubMap(m['xyz'])
- self.assertEqual(m.keys(),['xyz'])
- self.assertRaises(ValueError, EntryPoint.parse_map, ["[xyz]", "[xyz]"])
- self.assertRaises(ValueError, EntryPoint.parse_map, self.submap_str)
-
-class RequirementsTests(TestCase):
-
- def testBasics(self):
- r = Requirement.parse("Twisted>=1.2")
- self.assertEqual(str(r),"Twisted>=1.2")
- self.assertEqual(repr(r),"Requirement.parse('Twisted>=1.2')")
- self.assertEqual(r, Requirement("Twisted", [('>=','1.2')], ()))
- self.assertEqual(r, Requirement("twisTed", [('>=','1.2')], ()))
- self.assertNotEqual(r, Requirement("Twisted", [('>=','2.0')], ()))
- self.assertNotEqual(r, Requirement("Zope", [('>=','1.2')], ()))
- self.assertNotEqual(r, Requirement("Zope", [('>=','3.0')], ()))
- self.assertNotEqual(r, Requirement.parse("Twisted[extras]>=1.2"))
-
- def testOrdering(self):
- r1 = Requirement("Twisted", [('==','1.2c1'),('>=','1.2')], ())
- r2 = Requirement("Twisted", [('>=','1.2'),('==','1.2c1')], ())
- self.assertEqual(r1,r2)
- self.assertEqual(str(r1),str(r2))
- self.assertEqual(str(r2),"Twisted==1.2c1,>=1.2")
-
- def testBasicContains(self):
- r = Requirement("Twisted", [('>=','1.2')], ())
- foo_dist = Distribution.from_filename("FooPkg-1.3_1.egg")
- twist11 = Distribution.from_filename("Twisted-1.1.egg")
- twist12 = Distribution.from_filename("Twisted-1.2.egg")
- self.assert_(parse_version('1.2') in r)
- self.assert_(parse_version('1.1') not in r)
- self.assert_('1.2' in r)
- self.assert_('1.1' not in r)
- self.assert_(foo_dist not in r)
- self.assert_(twist11 not in r)
- self.assert_(twist12 in r)
-
- def testAdvancedContains(self):
- r, = parse_requirements("Foo>=1.2,<=1.3,==1.9,>2.0,!=2.5,<3.0,==4.5")
- for v in ('1.2','1.2.2','1.3','1.9','2.0.1','2.3','2.6','3.0c1','4.5'):
- self.assert_(v in r, (v,r))
- for v in ('1.2c1','1.3.1','1.5','1.9.1','2.0','2.5','3.0','4.0'):
- self.assert_(v not in r, (v,r))
-
-
- def testOptionsAndHashing(self):
- r1 = Requirement.parse("Twisted[foo,bar]>=1.2")
- r2 = Requirement.parse("Twisted[bar,FOO]>=1.2")
- r3 = Requirement.parse("Twisted[BAR,FOO]>=1.2.0")
- self.assertEqual(r1,r2)
- self.assertEqual(r1,r3)
- self.assertEqual(r1.extras, ("foo","bar"))
- self.assertEqual(r2.extras, ("bar","foo")) # extras are normalized
- self.assertEqual(hash(r1), hash(r2))
- self.assertEqual(
- hash(r1), hash(("twisted", ((">=",parse_version("1.2")),),
- frozenset(["foo","bar"])))
- )
-
- def testVersionEquality(self):
- r1 = Requirement.parse("foo==0.3a2")
- r2 = Requirement.parse("foo!=0.3a4")
- d = Distribution.from_filename
-
- self.assert_(d("foo-0.3a4.egg") not in r1)
- self.assert_(d("foo-0.3a1.egg") not in r1)
- self.assert_(d("foo-0.3a4.egg") not in r2)
-
- self.assert_(d("foo-0.3a2.egg") in r1)
- self.assert_(d("foo-0.3a2.egg") in r2)
- self.assert_(d("foo-0.3a3.egg") in r2)
- self.assert_(d("foo-0.3a5.egg") in r2)
-
- def testDistributeSetuptoolsOverride(self):
- # Plain setuptools or distribute mean we return distribute.
- self.assertEqual(
- Requirement.parse('setuptools').project_name, 'distribute')
- self.assertEqual(
- Requirement.parse('distribute').project_name, 'distribute')
- # setuptools lower than 0.7 means distribute
- self.assertEqual(
- Requirement.parse('setuptools==0.6c9').project_name, 'distribute')
- self.assertEqual(
- Requirement.parse('setuptools==0.6c10').project_name, 'distribute')
- self.assertEqual(
- Requirement.parse('setuptools>=0.6').project_name, 'distribute')
- self.assertEqual(
- Requirement.parse('setuptools < 0.7').project_name, 'distribute')
- # setuptools 0.7 and higher means setuptools.
- self.assertEqual(
- Requirement.parse('setuptools == 0.7').project_name, 'setuptools')
- self.assertEqual(
- Requirement.parse('setuptools == 0.7a1').project_name, 'setuptools')
- self.assertEqual(
- Requirement.parse('setuptools >= 0.7').project_name, 'setuptools')
-
-
-
-
-
-
-
-
-
-
-
-class ParseTests(TestCase):
-
- def testEmptyParse(self):
- self.assertEqual(list(parse_requirements('')), [])
-
- def testYielding(self):
- for inp,out in [
- ([], []), ('x',['x']), ([[]],[]), (' x\n y', ['x','y']),
- (['x\n\n','y'], ['x','y']),
- ]:
- self.assertEqual(list(pkg_resources.yield_lines(inp)),out)
-
- def testSplitting(self):
- self.assertEqual(
- list(
- pkg_resources.split_sections("""
- x
- [Y]
- z
-
- a
- [b ]
- # foo
- c
- [ d]
- [q]
- v
- """
- )
- ),
- [(None,["x"]), ("Y",["z","a"]), ("b",["c"]), ("d",[]), ("q",["v"])]
- )
- self.assertRaises(ValueError,list,pkg_resources.split_sections("[foo"))
-
- def testSafeName(self):
- self.assertEqual(safe_name("adns-python"), "adns-python")
- self.assertEqual(safe_name("WSGI Utils"), "WSGI-Utils")
- self.assertEqual(safe_name("WSGI Utils"), "WSGI-Utils")
- self.assertEqual(safe_name("Money$$$Maker"), "Money-Maker")
- self.assertNotEqual(safe_name("peak.web"), "peak-web")
-
- def testSafeVersion(self):
- self.assertEqual(safe_version("1.2-1"), "1.2-1")
- self.assertEqual(safe_version("1.2 alpha"), "1.2.alpha")
- self.assertEqual(safe_version("2.3.4 20050521"), "2.3.4.20050521")
- self.assertEqual(safe_version("Money$$$Maker"), "Money-Maker")
- self.assertEqual(safe_version("peak.web"), "peak.web")
-
- def testSimpleRequirements(self):
- self.assertEqual(
- list(parse_requirements('Twis-Ted>=1.2-1')),
- [Requirement('Twis-Ted',[('>=','1.2-1')], ())]
- )
- self.assertEqual(
- list(parse_requirements('Twisted >=1.2, \ # more\n<2.0')),
- [Requirement('Twisted',[('>=','1.2'),('<','2.0')], ())]
- )
- self.assertEqual(
- Requirement.parse("FooBar==1.99a3"),
- Requirement("FooBar", [('==','1.99a3')], ())
- )
- self.assertRaises(ValueError,Requirement.parse,">=2.3")
- self.assertRaises(ValueError,Requirement.parse,"x\\")
- self.assertRaises(ValueError,Requirement.parse,"x==2 q")
- self.assertRaises(ValueError,Requirement.parse,"X==1\nY==2")
- self.assertRaises(ValueError,Requirement.parse,"#")
-
- def testVersionEquality(self):
- def c(s1,s2):
- p1, p2 = parse_version(s1),parse_version(s2)
- self.assertEqual(p1,p2, (s1,s2,p1,p2))
-
- c('0.4', '0.4.0')
- c('0.4.0.0', '0.4.0')
- c('0.4.0-0', '0.4-0')
- c('0pl1', '0.0pl1')
- c('0pre1', '0.0c1')
- c('0.0.0preview1', '0c1')
- c('0.0c1', '0rc1')
- c('1.2a1', '1.2.a.1'); c('1.2...a', '1.2a')
-
- def testVersionOrdering(self):
- def c(s1,s2):
- p1, p2 = parse_version(s1),parse_version(s2)
- self.assert_(p1<p2, (s1,s2,p1,p2))
-
- c('2.1','2.1.1')
- c('2.1.0','2.10')
- c('2a1','2b0')
- c('2b1','2c0')
- c('2a1','2.1')
- c('2.3a1', '2.3')
- c('2.1-1', '2.1-2')
- c('2.1-1', '2.1.1')
- c('2.1', '2.1.1-1')
- c('2.1', '2.1pl4')
- c('2.1a0-20040501', '2.1')
- c('1.1', '02.1')
- c('A56','B27')
- c('3.2', '3.2.pl0')
- c('3.2-1', '3.2pl1')
- c('3.2pl1', '3.2pl1-1')
- c('0.4', '4.0')
- c('0.0.4', '0.4.0')
- c('0pl1', '0.4pl1')
- c('2.1dev','2.1a0')
- c('2.1.0rc1','2.1.0')
- c('2.1.0','2.1.0-rc0')
- c('2.1.0','2.1.0-a')
- c('2.1.0','2.1.0-alpha')
- c('2.1.0','2.1.0-foo')
- c('1.0','1.0-1')
- c('1.0-1','1.0.1')
- c('1.0a','1.0b')
- c('1.0dev','1.0rc1')
- c('1.0pre','1.0')
- c('1.0pre','1.0')
- c('1.0a','1.0-a')
- c('1.0rc1','1.0-rc1')
-
- torture ="""
- 0.80.1-3 0.80.1-2 0.80.1-1 0.79.9999+0.80.0pre4-1
- 0.79.9999+0.80.0pre2-3 0.79.9999+0.80.0pre2-2
- 0.77.2-1 0.77.1-1 0.77.0-1
- """.split()
-
- for p,v1 in enumerate(torture):
- for v2 in torture[p+1:]:
- c(v2,v1)
-
-
-
-
-
-
-
-
-class ScriptHeaderTests(TestCase):
- non_ascii_exe = '/Users/José/bin/python'
-
- def test_get_script_header(self):
- if not sys.platform.startswith('java') or not is_sh(sys.executable):
- # This test is for non-Jython platforms
- self.assertEqual(get_script_header('#!/usr/local/bin/python'),
- '#!%s\n' % os.path.normpath(sys.executable))
- self.assertEqual(get_script_header('#!/usr/bin/python -x'),
- '#!%s -x\n' % os.path.normpath(sys.executable))
- self.assertEqual(get_script_header('#!/usr/bin/python',
- executable=self.non_ascii_exe),
- '#!%s -x\n' % self.non_ascii_exe)
-
- def test_get_script_header_jython_workaround(self):
- # This test doesn't work with Python 3 in some locales
- if (sys.version_info >= (3,) and os.environ.get("LC_CTYPE")
- in (None, "C", "POSIX")):
- return
- platform = sys.platform
- sys.platform = 'java1.5.0_13'
- stdout = sys.stdout
- try:
- # A mock sys.executable that uses a shebang line (this file)
- exe = os.path.normpath(os.path.splitext(__file__)[0] + '.py')
- self.assertEqual(
- get_script_header('#!/usr/local/bin/python', executable=exe),
- '#!/usr/bin/env %s\n' % exe)
-
- # Ensure we generate what is basically a broken shebang line
- # when there's options, with a warning emitted
- sys.stdout = sys.stderr = StringIO.StringIO()
- self.assertEqual(get_script_header('#!/usr/bin/python -x',
- executable=exe),
- '#!%s -x\n' % exe)
- self.assert_('Unable to adapt shebang line' in sys.stdout.getvalue())
- sys.stdout = sys.stderr = StringIO.StringIO()
- self.assertEqual(get_script_header('#!/usr/bin/python',
- executable=self.non_ascii_exe),
- '#!%s -x\n' % self.non_ascii_exe)
- self.assert_('Unable to adapt shebang line' in sys.stdout.getvalue())
- finally:
- sys.platform = platform
- sys.stdout = stdout
-
-
-
-
-class NamespaceTests(TestCase):
-
- def setUp(self):
- self._ns_pkgs = pkg_resources._namespace_packages.copy()
- self._tmpdir = tempfile.mkdtemp(prefix="tests-distribute-")
- os.makedirs(os.path.join(self._tmpdir, "site-pkgs"))
- self._prev_sys_path = sys.path[:]
- sys.path.append(os.path.join(self._tmpdir, "site-pkgs"))
-
- def tearDown(self):
- shutil.rmtree(self._tmpdir)
- pkg_resources._namespace_packages = self._ns_pkgs.copy()
- sys.path = self._prev_sys_path[:]
-
- def _assertIn(self, member, container):
- """ assertIn and assertTrue does not exist in Python2.3"""
- if member not in container:
- standardMsg = '%s not found in %s' % (safe_repr(member),
- safe_repr(container))
- self.fail(self._formatMessage(msg, standardMsg))
-
- def test_two_levels_deep(self):
- """
- Test nested namespace packages
- Create namespace packages in the following tree :
- site-packages-1/pkg1/pkg2
- site-packages-2/pkg1/pkg2
- Check both are in the _namespace_packages dict and that their __path__
- is correct
- """
- sys.path.append(os.path.join(self._tmpdir, "site-pkgs2"))
- os.makedirs(os.path.join(self._tmpdir, "site-pkgs", "pkg1", "pkg2"))
- os.makedirs(os.path.join(self._tmpdir, "site-pkgs2", "pkg1", "pkg2"))
- ns_str = "__import__('pkg_resources').declare_namespace(__name__)\n"
- for site in ["site-pkgs", "site-pkgs2"]:
- pkg1_init = open(os.path.join(self._tmpdir, site,
- "pkg1", "__init__.py"), "w")
- pkg1_init.write(ns_str)
- pkg1_init.close()
- pkg2_init = open(os.path.join(self._tmpdir, site,
- "pkg1", "pkg2", "__init__.py"), "w")
- pkg2_init.write(ns_str)
- pkg2_init.close()
- import pkg1
- self._assertIn("pkg1", pkg_resources._namespace_packages.keys())
- try:
- import pkg1.pkg2
- except ImportError, e:
- self.fail("Distribute tried to import the parent namespace package")
- # check the _namespace_packages dict
- self._assertIn("pkg1.pkg2", pkg_resources._namespace_packages.keys())
- self.assertEqual(pkg_resources._namespace_packages["pkg1"], ["pkg1.pkg2"])
- # check the __path__ attribute contains both paths
- self.assertEqual(pkg1.pkg2.__path__, [
- os.path.join(self._tmpdir, "site-pkgs", "pkg1", "pkg2"),
- os.path.join(self._tmpdir, "site-pkgs2", "pkg1", "pkg2") ])
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_sandbox.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_sandbox.py
deleted file mode 100644
index 1609ee8..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_sandbox.py
+++ /dev/null
@@ -1,66 +0,0 @@
-"""develop tests
-"""
-import sys
-import os
-import shutil
-import unittest
-import tempfile
-
-from setuptools.sandbox import DirectorySandbox, SandboxViolation
-
-def has_win32com():
- """
- Run this to determine if the local machine has win32com, and if it
- does, include additional tests.
- """
- if not sys.platform.startswith('win32'):
- return False
- try:
- mod = __import__('win32com')
- except ImportError:
- return False
- return True
-
-class TestSandbox(unittest.TestCase):
-
- def setUp(self):
- self.dir = tempfile.mkdtemp()
-
- def tearDown(self):
- shutil.rmtree(self.dir)
-
- def test_devnull(self):
- if sys.version < '2.4':
- return
- sandbox = DirectorySandbox(self.dir)
- sandbox.run(self._file_writer(os.devnull))
-
- def _file_writer(path):
- def do_write():
- f = open(path, 'w')
- f.write('xxx')
- f.close()
- return do_write
-
- _file_writer = staticmethod(_file_writer)
-
- if has_win32com():
- def test_win32com(self):
- """
- win32com should not be prevented from caching COM interfaces
- in gen_py.
- """
- import win32com
- gen_py = win32com.__gen_path__
- target = os.path.join(gen_py, 'test_write')
- sandbox = DirectorySandbox(self.dir)
- try:
- try:
- sandbox.run(self._file_writer(target))
- except SandboxViolation:
- self.fail("Could not create gen_py file due to SandboxViolation")
- finally:
- if os.path.exists(target): os.remove(target)
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_upload_docs.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_upload_docs.py
deleted file mode 100644
index 8b2dc89..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/setuptools/tests/test_upload_docs.py
+++ /dev/null
@@ -1,65 +0,0 @@
-"""build_ext tests
-"""
-import sys, os, shutil, tempfile, unittest, site, zipfile
-from setuptools.command.upload_docs import upload_docs
-from setuptools.dist import Distribution
-
-SETUP_PY = """\
-from setuptools import setup
-
-setup(name='foo')
-"""
-
-class TestUploadDocsTest(unittest.TestCase):
- def setUp(self):
- self.dir = tempfile.mkdtemp()
- setup = os.path.join(self.dir, 'setup.py')
- f = open(setup, 'w')
- f.write(SETUP_PY)
- f.close()
- self.old_cwd = os.getcwd()
- os.chdir(self.dir)
-
- self.upload_dir = os.path.join(self.dir, 'build')
- os.mkdir(self.upload_dir)
-
- # A test document.
- f = open(os.path.join(self.upload_dir, 'index.html'), 'w')
- f.write("Hello world.")
- f.close()
-
- # An empty folder.
- os.mkdir(os.path.join(self.upload_dir, 'empty'))
-
- if sys.version >= "2.6":
- self.old_base = site.USER_BASE
- site.USER_BASE = upload_docs.USER_BASE = tempfile.mkdtemp()
- self.old_site = site.USER_SITE
- site.USER_SITE = upload_docs.USER_SITE = tempfile.mkdtemp()
-
- def tearDown(self):
- os.chdir(self.old_cwd)
- shutil.rmtree(self.dir)
- if sys.version >= "2.6":
- shutil.rmtree(site.USER_BASE)
- shutil.rmtree(site.USER_SITE)
- site.USER_BASE = self.old_base
- site.USER_SITE = self.old_site
-
- def test_create_zipfile(self):
- # Test to make sure zipfile creation handles common cases.
- # This explicitly includes a folder containing an empty folder.
-
- dist = Distribution()
-
- cmd = upload_docs(dist)
- cmd.upload_dir = self.upload_dir
- zip_file = cmd.create_zipfile()
-
- assert zipfile.is_zipfile(zip_file)
-
- zip_f = zipfile.ZipFile(zip_file) # woh...
-
- assert zip_f.namelist() == ['index.html']
-
-
diff --git a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/site.py b/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/site.py
deleted file mode 100644
index 80e084b..0000000
--- a/lib/python2.7/site-packages/distribute-0.6.24-py2.7.egg/site.py
+++ /dev/null
@@ -1,82 +0,0 @@
-def __boot():
- import sys, imp, os, os.path
- PYTHONPATH = os.environ.get('PYTHONPATH')
- if PYTHONPATH is None or (sys.platform=='win32' and not PYTHONPATH):
- PYTHONPATH = []
- else:
- PYTHONPATH = PYTHONPATH.split(os.pathsep)
-
- pic = getattr(sys,'path_importer_cache',{})
- stdpath = sys.path[len(PYTHONPATH):]
- mydir = os.path.dirname(__file__)
- #print "searching",stdpath,sys.path
-
- for item in stdpath:
- if item==mydir or not item:
- continue # skip if current dir. on Windows, or my own directory
- importer = pic.get(item)
- if importer is not None:
- loader = importer.find_module('site')
- if loader is not None:
- # This should actually reload the current module
- loader.load_module('site')
- break
- else:
- try:
- stream, path, descr = imp.find_module('site',[item])
- except ImportError:
- continue
- if stream is None:
- continue
- try:
- # This should actually reload the current module
- imp.load_module('site',stream,path,descr)
- finally:
- stream.close()
- break
- else:
- raise ImportError("Couldn't find the real 'site' module")
-
- #print "loaded", __file__
-
- known_paths = dict([(makepath(item)[1],1) for item in sys.path]) # 2.2 comp
-
- oldpos = getattr(sys,'__egginsert',0) # save old insertion position
- sys.__egginsert = 0 # and reset the current one
-
- for item in PYTHONPATH:
- addsitedir(item)
-
- sys.__egginsert += oldpos # restore effective old position
-
- d,nd = makepath(stdpath[0])
- insert_at = None
- new_path = []
-
- for item in sys.path:
- p,np = makepath(item)
-
- if np==nd and insert_at is None:
- # We've hit the first 'system' path entry, so added entries go here
- insert_at = len(new_path)
-
- if np in known_paths or insert_at is None:
- new_path.append(item)
- else:
- # new path after the insert point, back-insert it
- new_path.insert(insert_at, item)
- insert_at += 1
-
- sys.path[:] = new_path
-
-if __name__=='site':
- __boot()
- del __boot
-
-
-
-
-
-
-
-
diff --git a/lib/python2.7/site-packages/django/__init__.py b/lib/python2.7/site-packages/django/__init__.py
deleted file mode 100644
index 3c18045..0000000
--- a/lib/python2.7/site-packages/django/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-VERSION = (1, 6, 3, 'final', 0)
-
-def get_version(*args, **kwargs):
- # Don't litter django/__init__.py with all the get_version stuff.
- # Only import if it's actually called.
- from django.utils.version import get_version
- return get_version(*args, **kwargs)
diff --git a/lib/python2.7/site-packages/django/bin/daily_cleanup.py b/lib/python2.7/site-packages/django/bin/daily_cleanup.py
deleted file mode 100644
index 5a2ce21..0000000
--- a/lib/python2.7/site-packages/django/bin/daily_cleanup.py
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Daily cleanup job.
-
-Can be run as a cronjob to clean out old data from the database (only expired
-sessions at the moment).
-"""
-
-import warnings
-
-from django.core import management
-
-if __name__ == "__main__":
- warnings.warn(
- "The `daily_cleanup` script has been deprecated "
- "in favor of `django-admin.py clearsessions`.",
- DeprecationWarning)
- management.call_command('clearsessions')
diff --git a/lib/python2.7/site-packages/django/bin/django-2to3.py b/lib/python2.7/site-packages/django/bin/django-2to3.py
deleted file mode 100644
index 35566ab..0000000
--- a/lib/python2.7/site-packages/django/bin/django-2to3.py
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env python
-
-# This works exactly like 2to3, except that it uses Django's fixers rather
-# than 2to3's built-in fixers.
-
-import sys
-from lib2to3.main import main
-
-sys.exit(main("django.utils.2to3_fixes"))
-
diff --git a/lib/python2.7/site-packages/django/bin/django-admin.py b/lib/python2.7/site-packages/django/bin/django-admin.py
deleted file mode 100644
index f518cdc..0000000
--- a/lib/python2.7/site-packages/django/bin/django-admin.py
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/env python
-from django.core import management
-
-if __name__ == "__main__":
- management.execute_from_command_line()
diff --git a/lib/python2.7/site-packages/django/bin/profiling/gather_profile_stats.py b/lib/python2.7/site-packages/django/bin/profiling/gather_profile_stats.py
deleted file mode 100644
index 0244eb6..0000000
--- a/lib/python2.7/site-packages/django/bin/profiling/gather_profile_stats.py
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env python
-
-"""
-gather_profile_stats.py /path/to/dir/of/profiles
-
-Note that the aggregated profiles must be read with pstats.Stats, not
-hotshot.stats (the formats are incompatible)
-"""
-
-from hotshot import stats
-import os
-import pstats
-import sys
-
-def gather_stats(p):
- profiles = {}
- for f in os.listdir(p):
- if f.endswith('.agg.prof'):
- path = f[:-9]
- prof = pstats.Stats(os.path.join(p, f))
- elif f.endswith('.prof'):
- bits = f.split('.')
- path = ".".join(bits[:-3])
- prof = stats.load(os.path.join(p, f))
- else:
- continue
- print("Processing %s" % f)
- if path in profiles:
- profiles[path].add(prof)
- else:
- profiles[path] = prof
- os.unlink(os.path.join(p, f))
- for (path, prof) in profiles.items():
- prof.dump_stats(os.path.join(p, "%s.agg.prof" % path))
-
-if __name__ == '__main__':
- gather_stats(sys.argv[1])
diff --git a/lib/python2.7/site-packages/django/bin/unique-messages.py b/lib/python2.7/site-packages/django/bin/unique-messages.py
deleted file mode 100644
index d893291..0000000
--- a/lib/python2.7/site-packages/django/bin/unique-messages.py
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import sys
-
-def unique_messages():
- basedir = None
-
- if os.path.isdir(os.path.join('conf', 'locale')):
- basedir = os.path.abspath(os.path.join('conf', 'locale'))
- elif os.path.isdir('locale'):
- basedir = os.path.abspath('locale')
- else:
- print("This script should be run from the Django Git tree or your project or app tree.")
- sys.exit(1)
-
- for (dirpath, dirnames, filenames) in os.walk(basedir):
- for f in filenames:
- if f.endswith('.po'):
- sys.stderr.write('processing file %s in %s\n' % (f, dirpath))
- pf = os.path.splitext(os.path.join(dirpath, f))[0]
- cmd = 'msguniq "%s.po"' % pf
- stdout = os.popen(cmd)
- msg = stdout.read()
- with open('%s.po' % pf, 'w') as fp:
- fp.write(msg)
-
-if __name__ == "__main__":
- unique_messages()
diff --git a/lib/python2.7/site-packages/django/conf/__init__.py b/lib/python2.7/site-packages/django/conf/__init__.py
deleted file mode 100644
index 6158439..0000000
--- a/lib/python2.7/site-packages/django/conf/__init__.py
+++ /dev/null
@@ -1,198 +0,0 @@
-"""
-Settings and configuration for Django.
-
-Values will be read from the module specified by the DJANGO_SETTINGS_MODULE environment
-variable, and then from django.conf.global_settings; see the global settings file for
-a list of all possible variables.
-"""
-
-import logging
-import os
-import sys
-import time # Needed for Windows
-import warnings
-
-from django.conf import global_settings
-from django.core.exceptions import ImproperlyConfigured
-from django.utils.functional import LazyObject, empty
-from django.utils import importlib
-from django.utils.module_loading import import_by_path
-from django.utils import six
-
-ENVIRONMENT_VARIABLE = "DJANGO_SETTINGS_MODULE"
-
-
-class LazySettings(LazyObject):
- """
- A lazy proxy for either global Django settings or a custom settings object.
- The user can manually configure settings prior to using them. Otherwise,
- Django uses the settings module pointed to by DJANGO_SETTINGS_MODULE.
- """
- def _setup(self, name=None):
- """
- Load the settings module pointed to by the environment variable. This
- is used the first time we need any settings at all, if the user has not
- previously configured the settings manually.
- """
- try:
- settings_module = os.environ[ENVIRONMENT_VARIABLE]
- if not settings_module: # If it's set but is an empty string.
- raise KeyError
- except KeyError:
- desc = ("setting %s" % name) if name else "settings"
- raise ImproperlyConfigured(
- "Requested %s, but settings are not configured. "
- "You must either define the environment variable %s "
- "or call settings.configure() before accessing settings."
- % (desc, ENVIRONMENT_VARIABLE))
-
- self._wrapped = Settings(settings_module)
- self._configure_logging()
-
- def __getattr__(self, name):
- if self._wrapped is empty:
- self._setup(name)
- return getattr(self._wrapped, name)
-
- def _configure_logging(self):
- """
- Setup logging from LOGGING_CONFIG and LOGGING settings.
- """
- if not sys.warnoptions:
- try:
- # Route warnings through python logging
- logging.captureWarnings(True)
- # Allow DeprecationWarnings through the warnings filters
- warnings.simplefilter("default", DeprecationWarning)
- except AttributeError:
- # No captureWarnings on Python 2.6, DeprecationWarnings are on anyway
- pass
-
- if self.LOGGING_CONFIG:
- from django.utils.log import DEFAULT_LOGGING
- # First find the logging configuration function ...
- logging_config_func = import_by_path(self.LOGGING_CONFIG)
-
- logging_config_func(DEFAULT_LOGGING)
-
- # ... then invoke it with the logging settings
- if self.LOGGING:
- logging_config_func(self.LOGGING)
-
- def configure(self, default_settings=global_settings, **options):
- """
- Called to manually configure the settings. The 'default_settings'
- parameter sets where to retrieve any unspecified values from (its
- argument must support attribute access (__getattr__)).
- """
- if self._wrapped is not empty:
- raise RuntimeError('Settings already configured.')
- holder = UserSettingsHolder(default_settings)
- for name, value in options.items():
- setattr(holder, name, value)
- self._wrapped = holder
- self._configure_logging()
-
- @property
- def configured(self):
- """
- Returns True if the settings have already been configured.
- """
- return self._wrapped is not empty
-
-
-class BaseSettings(object):
- """
- Common logic for settings whether set by a module or by the user.
- """
- def __setattr__(self, name, value):
- if name in ("MEDIA_URL", "STATIC_URL") and value and not value.endswith('/'):
- raise ImproperlyConfigured("If set, %s must end with a slash" % name)
- elif name == "ALLOWED_INCLUDE_ROOTS" and isinstance(value, six.string_types):
- raise ValueError("The ALLOWED_INCLUDE_ROOTS setting must be set "
- "to a tuple, not a string.")
- object.__setattr__(self, name, value)
-
-
-class Settings(BaseSettings):
- def __init__(self, settings_module):
- # update this dict from global settings (but only for ALL_CAPS settings)
- for setting in dir(global_settings):
- if setting == setting.upper():
- setattr(self, setting, getattr(global_settings, setting))
-
- # store the settings module in case someone later cares
- self.SETTINGS_MODULE = settings_module
-
- try:
- mod = importlib.import_module(self.SETTINGS_MODULE)
- except ImportError as e:
- raise ImportError(
- "Could not import settings '%s' (Is it on sys.path? Is there an import error in the settings file?): %s"
- % (self.SETTINGS_MODULE, e)
- )
-
- # Settings that should be converted into tuples if they're mistakenly entered
- # as strings.
- tuple_settings = ("INSTALLED_APPS", "TEMPLATE_DIRS")
-
- for setting in dir(mod):
- if setting == setting.upper():
- setting_value = getattr(mod, setting)
- if setting in tuple_settings and \
- isinstance(setting_value, six.string_types):
- warnings.warn("The %s setting must be a tuple. Please fix your "
- "settings, as auto-correction is now deprecated." % setting,
- DeprecationWarning, stacklevel=2)
- setting_value = (setting_value,) # In case the user forgot the comma.
- setattr(self, setting, setting_value)
-
- if not self.SECRET_KEY:
- raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
-
- if hasattr(time, 'tzset') and self.TIME_ZONE:
- # When we can, attempt to validate the timezone. If we can't find
- # this file, no check happens and it's harmless.
- zoneinfo_root = '/usr/share/zoneinfo'
- if (os.path.exists(zoneinfo_root) and not
- os.path.exists(os.path.join(zoneinfo_root, *(self.TIME_ZONE.split('/'))))):
- raise ValueError("Incorrect timezone setting: %s" % self.TIME_ZONE)
- # Move the time zone info into os.environ. See ticket #2315 for why
- # we don't do this unconditionally (breaks Windows).
- os.environ['TZ'] = self.TIME_ZONE
- time.tzset()
-
-
-class UserSettingsHolder(BaseSettings):
- """
- Holder for user configured settings.
- """
- # SETTINGS_MODULE doesn't make much sense in the manually configured
- # (standalone) case.
- SETTINGS_MODULE = None
-
- def __init__(self, default_settings):
- """
- Requests for configuration variables not in this class are satisfied
- from the module specified in default_settings (if possible).
- """
- self.__dict__['_deleted'] = set()
- self.default_settings = default_settings
-
- def __getattr__(self, name):
- if name in self._deleted:
- raise AttributeError
- return getattr(self.default_settings, name)
-
- def __setattr__(self, name, value):
- self._deleted.discard(name)
- return super(UserSettingsHolder, self).__setattr__(name, value)
-
- def __delattr__(self, name):
- self._deleted.add(name)
- return super(UserSettingsHolder, self).__delattr__(name)
-
- def __dir__(self):
- return list(self.__dict__) + dir(self.default_settings)
-
-settings = LazySettings()
diff --git a/lib/python2.7/site-packages/django/conf/app_template/views.py b/lib/python2.7/site-packages/django/conf/app_template/views.py
deleted file mode 100644
index 91ea44a..0000000
--- a/lib/python2.7/site-packages/django/conf/app_template/views.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.shortcuts import render
-
-# Create your views here.
diff --git a/lib/python2.7/site-packages/django/conf/global_settings.py b/lib/python2.7/site-packages/django/conf/global_settings.py
deleted file mode 100644
index e068f41..0000000
--- a/lib/python2.7/site-packages/django/conf/global_settings.py
+++ /dev/null
@@ -1,605 +0,0 @@
-# Default Django settings. Override these with settings in the module
-# pointed-to by the DJANGO_SETTINGS_MODULE environment variable.
-
-# This is defined here as a do-nothing function because we can't import
-# django.utils.translation -- that module depends on the settings.
-gettext_noop = lambda s: s
-
-####################
-# CORE #
-####################
-
-DEBUG = False
-TEMPLATE_DEBUG = False
-
-# Whether the framework should propagate raw exceptions rather than catching
-# them. This is useful under some testing situations and should never be used
-# on a live site.
-DEBUG_PROPAGATE_EXCEPTIONS = False
-
-# Whether to use the "Etag" header. This saves bandwidth but slows down performance.
-USE_ETAGS = False
-
-# People who get code error notifications.
-# In the format (('Full Name', 'email@example.com'), ('Full Name', 'anotheremail@example.com'))
-ADMINS = ()
-
-# Tuple of IP addresses, as strings, that:
-# * See debug comments, when DEBUG is true
-# * Receive x-headers
-INTERNAL_IPS = ()
-
-# Hosts/domain names that are valid for this site.
-# "*" matches anything, ".example.com" matches example.com and all subdomains
-ALLOWED_HOSTS = []
-
-# Local time zone for this installation. All choices can be found here:
-# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name (although not all
-# systems may support all possibilities). When USE_TZ is True, this is
-# interpreted as the default user time zone.
-TIME_ZONE = 'America/Chicago'
-
-# If you set this to True, Django will use timezone-aware datetimes.
-USE_TZ = False
-
-# Language code for this installation. All choices can be found here:
-# http://www.i18nguy.com/unicode/language-identifiers.html
-LANGUAGE_CODE = 'en-us'
-
-# Languages we provide translations for, out of the box.
-LANGUAGES = (
- ('af', gettext_noop('Afrikaans')),
- ('ar', gettext_noop('Arabic')),
- ('az', gettext_noop('Azerbaijani')),
- ('bg', gettext_noop('Bulgarian')),
- ('be', gettext_noop('Belarusian')),
- ('bn', gettext_noop('Bengali')),
- ('br', gettext_noop('Breton')),
- ('bs', gettext_noop('Bosnian')),
- ('ca', gettext_noop('Catalan')),
- ('cs', gettext_noop('Czech')),
- ('cy', gettext_noop('Welsh')),
- ('da', gettext_noop('Danish')),
- ('de', gettext_noop('German')),
- ('el', gettext_noop('Greek')),
- ('en', gettext_noop('English')),
- ('en-gb', gettext_noop('British English')),
- ('eo', gettext_noop('Esperanto')),
- ('es', gettext_noop('Spanish')),
- ('es-ar', gettext_noop('Argentinian Spanish')),
- ('es-mx', gettext_noop('Mexican Spanish')),
- ('es-ni', gettext_noop('Nicaraguan Spanish')),
- ('es-ve', gettext_noop('Venezuelan Spanish')),
- ('et', gettext_noop('Estonian')),
- ('eu', gettext_noop('Basque')),
- ('fa', gettext_noop('Persian')),
- ('fi', gettext_noop('Finnish')),
- ('fr', gettext_noop('French')),
- ('fy-nl', gettext_noop('Frisian')),
- ('ga', gettext_noop('Irish')),
- ('gl', gettext_noop('Galician')),
- ('he', gettext_noop('Hebrew')),
- ('hi', gettext_noop('Hindi')),
- ('hr', gettext_noop('Croatian')),
- ('hu', gettext_noop('Hungarian')),
- ('ia', gettext_noop('Interlingua')),
- ('id', gettext_noop('Indonesian')),
- ('is', gettext_noop('Icelandic')),
- ('it', gettext_noop('Italian')),
- ('ja', gettext_noop('Japanese')),
- ('ka', gettext_noop('Georgian')),
- ('kk', gettext_noop('Kazakh')),
- ('km', gettext_noop('Khmer')),
- ('kn', gettext_noop('Kannada')),
- ('ko', gettext_noop('Korean')),
- ('lb', gettext_noop('Luxembourgish')),
- ('lt', gettext_noop('Lithuanian')),
- ('lv', gettext_noop('Latvian')),
- ('mk', gettext_noop('Macedonian')),
- ('ml', gettext_noop('Malayalam')),
- ('mn', gettext_noop('Mongolian')),
- ('my', gettext_noop('Burmese')),
- ('nb', gettext_noop('Norwegian Bokmal')),
- ('ne', gettext_noop('Nepali')),
- ('nl', gettext_noop('Dutch')),
- ('nn', gettext_noop('Norwegian Nynorsk')),
- ('os', gettext_noop('Ossetic')),
- ('pa', gettext_noop('Punjabi')),
- ('pl', gettext_noop('Polish')),
- ('pt', gettext_noop('Portuguese')),
- ('pt-br', gettext_noop('Brazilian Portuguese')),
- ('ro', gettext_noop('Romanian')),
- ('ru', gettext_noop('Russian')),
- ('sk', gettext_noop('Slovak')),
- ('sl', gettext_noop('Slovenian')),
- ('sq', gettext_noop('Albanian')),
- ('sr', gettext_noop('Serbian')),
- ('sr-latn', gettext_noop('Serbian Latin')),
- ('sv', gettext_noop('Swedish')),
- ('sw', gettext_noop('Swahili')),
- ('ta', gettext_noop('Tamil')),
- ('te', gettext_noop('Telugu')),
- ('th', gettext_noop('Thai')),
- ('tr', gettext_noop('Turkish')),
- ('tt', gettext_noop('Tatar')),
- ('udm', gettext_noop('Udmurt')),
- ('uk', gettext_noop('Ukrainian')),
- ('ur', gettext_noop('Urdu')),
- ('vi', gettext_noop('Vietnamese')),
- ('zh-cn', gettext_noop('Simplified Chinese')),
- ('zh-tw', gettext_noop('Traditional Chinese')),
-)
-
-# Languages using BiDi (right-to-left) layout
-LANGUAGES_BIDI = ("he", "ar", "fa", "ur")
-
-# If you set this to False, Django will make some optimizations so as not
-# to load the internationalization machinery.
-USE_I18N = True
-LOCALE_PATHS = ()
-LANGUAGE_COOKIE_NAME = 'django_language'
-
-# If you set this to True, Django will format dates, numbers and calendars
-# according to user current locale.
-USE_L10N = False
-
-# Not-necessarily-technical managers of the site. They get broken link
-# notifications and other various emails.
-MANAGERS = ADMINS
-
-# Default content type and charset to use for all HttpResponse objects, if a
-# MIME type isn't manually specified. These are used to construct the
-# Content-Type header.
-DEFAULT_CONTENT_TYPE = 'text/html'
-DEFAULT_CHARSET = 'utf-8'
-
-# Encoding of files read from disk (template and initial SQL files).
-FILE_CHARSET = 'utf-8'
-
-# Email address that error messages come from.
-SERVER_EMAIL = 'root@localhost'
-
-# Whether to send broken-link emails. Deprecated, must be removed in 1.8.
-SEND_BROKEN_LINK_EMAILS = False
-
-# Database connection info. If left empty, will default to the dummy backend.
-DATABASES = {}
-
-# Classes used to implement DB routing behavior.
-DATABASE_ROUTERS = []
-
-# The email backend to use. For possible shortcuts see django.core.mail.
-# The default is to use the SMTP backend.
-# Third-party backends can be specified by providing a Python path
-# to a module that defines an EmailBackend class.
-EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
-
-# Host for sending email.
-EMAIL_HOST = 'localhost'
-
-# Port for sending email.
-EMAIL_PORT = 25
-
-# Optional SMTP authentication information for EMAIL_HOST.
-EMAIL_HOST_USER = ''
-EMAIL_HOST_PASSWORD = ''
-EMAIL_USE_TLS = False
-
-# List of strings representing installed apps.
-INSTALLED_APPS = ()
-
-# List of locations of the template source files, in search order.
-TEMPLATE_DIRS = ()
-
-# List of callables that know how to import templates from various sources.
-# See the comments in django/core/template/loader.py for interface
-# documentation.
-TEMPLATE_LOADERS = (
- 'django.template.loaders.filesystem.Loader',
- 'django.template.loaders.app_directories.Loader',
-# 'django.template.loaders.eggs.Loader',
-)
-
-# List of processors used by RequestContext to populate the context.
-# Each one should be a callable that takes the request object as its
-# only parameter and returns a dictionary to add to the context.
-TEMPLATE_CONTEXT_PROCESSORS = (
- 'django.contrib.auth.context_processors.auth',
- 'django.core.context_processors.debug',
- 'django.core.context_processors.i18n',
- 'django.core.context_processors.media',
- 'django.core.context_processors.static',
- 'django.core.context_processors.tz',
-# 'django.core.context_processors.request',
- 'django.contrib.messages.context_processors.messages',
-)
-
-# Output to use in template system for invalid (e.g. misspelled) variables.
-TEMPLATE_STRING_IF_INVALID = ''
-
-# Default email address to use for various automated correspondence from
-# the site managers.
-DEFAULT_FROM_EMAIL = 'webmaster@localhost'
-
-# Subject-line prefix for email messages send with django.core.mail.mail_admins
-# or ...mail_managers. Make sure to include the trailing space.
-EMAIL_SUBJECT_PREFIX = '[Django] '
-
-# Whether to append trailing slashes to URLs.
-APPEND_SLASH = True
-
-# Whether to prepend the "www." subdomain to URLs that don't have it.
-PREPEND_WWW = False
-
-# Override the server-derived value of SCRIPT_NAME
-FORCE_SCRIPT_NAME = None
-
-# List of compiled regular expression objects representing User-Agent strings
-# that are not allowed to visit any page, systemwide. Use this for bad
-# robots/crawlers. Here are a few examples:
-# import re
-# DISALLOWED_USER_AGENTS = (
-# re.compile(r'^NaverBot.*'),
-# re.compile(r'^EmailSiphon.*'),
-# re.compile(r'^SiteSucker.*'),
-# re.compile(r'^sohu-search')
-# )
-DISALLOWED_USER_AGENTS = ()
-
-ABSOLUTE_URL_OVERRIDES = {}
-
-# Tuple of strings representing allowed prefixes for the {% ssi %} tag.
-# Example: ('/home/html', '/var/www')
-ALLOWED_INCLUDE_ROOTS = ()
-
-# If this is a admin settings module, this should be a list of
-# settings modules (in the format 'foo.bar.baz') for which this admin
-# is an admin.
-ADMIN_FOR = ()
-
-# List of compiled regular expression objects representing URLs that need not
-# be reported by BrokenLinkEmailsMiddleware. Here are a few examples:
-# import re
-# IGNORABLE_404_URLS = (
-# re.compile(r'^/apple-touch-icon.*\.png$'),
-# re.compile(r'^/favicon.ico$),
-# re.compile(r'^/robots.txt$),
-# re.compile(r'^/phpmyadmin/),
-# re.compile(r'\.(cgi|php|pl)$'),
-# )
-IGNORABLE_404_URLS = ()
-
-# A secret key for this particular Django installation. Used in secret-key
-# hashing algorithms. Set this in your settings, or Django will complain
-# loudly.
-SECRET_KEY = ''
-
-# Default file storage mechanism that holds media.
-DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
-
-# Absolute filesystem path to the directory that will hold user-uploaded files.
-# Example: "/var/www/example.com/media/"
-MEDIA_ROOT = ''
-
-# URL that handles the media served from MEDIA_ROOT.
-# Examples: "http://example.com/media/", "http://media.example.com/"
-MEDIA_URL = ''
-
-# Absolute path to the directory static files should be collected to.
-# Example: "/var/www/example.com/static/"
-STATIC_ROOT = None
-
-# URL that handles the static files served from STATIC_ROOT.
-# Example: "http://example.com/static/", "http://static.example.com/"
-STATIC_URL = None
-
-# List of upload handler classes to be applied in order.
-FILE_UPLOAD_HANDLERS = (
- 'django.core.files.uploadhandler.MemoryFileUploadHandler',
- 'django.core.files.uploadhandler.TemporaryFileUploadHandler',
-)
-
-# Maximum size, in bytes, of a request before it will be streamed to the
-# file system instead of into memory.
-FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440 # i.e. 2.5 MB
-
-# Directory in which upload streamed files will be temporarily saved. A value of
-# `None` will make Django use the operating system's default temporary directory
-# (i.e. "/tmp" on *nix systems).
-FILE_UPLOAD_TEMP_DIR = None
-
-# The numeric mode to set newly-uploaded files to. The value should be a mode
-# you'd pass directly to os.chmod; see http://docs.python.org/lib/os-file-dir.html.
-FILE_UPLOAD_PERMISSIONS = None
-
-# Python module path where user will place custom format definition.
-# The directory where this setting is pointing should contain subdirectories
-# named as the locales, containing a formats.py file
-# (i.e. "myproject.locale" for myproject/locale/en/formats.py etc. use)
-FORMAT_MODULE_PATH = None
-
-# Default formatting for date objects. See all available format strings here:
-# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'N j, Y'
-
-# Default formatting for datetime objects. See all available format strings here:
-# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATETIME_FORMAT = 'N j, Y, P'
-
-# Default formatting for time objects. See all available format strings here:
-# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-TIME_FORMAT = 'P'
-
-# Default formatting for date objects when only the year and month are relevant.
-# See all available format strings here:
-# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-YEAR_MONTH_FORMAT = 'F Y'
-
-# Default formatting for date objects when only the month and day are relevant.
-# See all available format strings here:
-# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-MONTH_DAY_FORMAT = 'F j'
-
-# Default short formatting for date objects. See all available format strings here:
-# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-SHORT_DATE_FORMAT = 'm/d/Y'
-
-# Default short formatting for datetime objects.
-# See all available format strings here:
-# http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-SHORT_DATETIME_FORMAT = 'm/d/Y P'
-
-# Default formats to be used when parsing dates from input boxes, in order
-# See all available format string here:
-# http://docs.python.org/library/datetime.html#strftime-behavior
-# * Note that these format strings are different from the ones to display dates
-DATE_INPUT_FORMATS = (
- '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
- '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006'
- '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006'
- '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006'
- '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006'
-)
-
-# Default formats to be used when parsing times from input boxes, in order
-# See all available format string here:
-# http://docs.python.org/library/datetime.html#strftime-behavior
-# * Note that these format strings are different from the ones to display dates
-TIME_INPUT_FORMATS = (
- '%H:%M:%S', # '14:30:59'
- '%H:%M:%S.%f', # '14:30:59.000200'
- '%H:%M', # '14:30'
-)
-
-# Default formats to be used when parsing dates and times from input boxes,
-# in order
-# See all available format string here:
-# http://docs.python.org/library/datetime.html#strftime-behavior
-# * Note that these format strings are different from the ones to display dates
-DATETIME_INPUT_FORMATS = (
- '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
- '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
- '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
- '%Y-%m-%d', # '2006-10-25'
- '%m/%d/%Y %H:%M:%S', # '10/25/2006 14:30:59'
- '%m/%d/%Y %H:%M:%S.%f', # '10/25/2006 14:30:59.000200'
- '%m/%d/%Y %H:%M', # '10/25/2006 14:30'
- '%m/%d/%Y', # '10/25/2006'
- '%m/%d/%y %H:%M:%S', # '10/25/06 14:30:59'
- '%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200'
- '%m/%d/%y %H:%M', # '10/25/06 14:30'
- '%m/%d/%y', # '10/25/06'
-)
-
-# First day of week, to be used on calendars
-# 0 means Sunday, 1 means Monday...
-FIRST_DAY_OF_WEEK = 0
-
-# Decimal separator symbol
-DECIMAL_SEPARATOR = '.'
-
-# Boolean that sets whether to add thousand separator when formatting numbers
-USE_THOUSAND_SEPARATOR = False
-
-# Number of digits that will be together, when splitting them by
-# THOUSAND_SEPARATOR. 0 means no grouping, 3 means splitting by thousands...
-NUMBER_GROUPING = 0
-
-# Thousand separator symbol
-THOUSAND_SEPARATOR = ','
-
-# Do you want to manage transactions manually?
-# Hint: you really don't!
-TRANSACTIONS_MANAGED = False
-
-# The tablespaces to use for each model when not specified otherwise.
-DEFAULT_TABLESPACE = ''
-DEFAULT_INDEX_TABLESPACE = ''
-
-# Default X-Frame-Options header value
-X_FRAME_OPTIONS = 'SAMEORIGIN'
-
-USE_X_FORWARDED_HOST = False
-
-# The Python dotted path to the WSGI application that Django's internal servers
-# (runserver, runfcgi) will use. If `None`, the return value of
-# 'django.core.wsgi.get_wsgi_application' is used, thus preserving the same
-# behavior as previous versions of Django. Otherwise this should point to an
-# actual WSGI application object.
-WSGI_APPLICATION = None
-
-# If your Django app is behind a proxy that sets a header to specify secure
-# connections, AND that proxy ensures that user-submitted headers with the
-# same name are ignored (so that people can't spoof it), set this value to
-# a tuple of (header_name, header_value). For any requests that come in with
-# that header/value, request.is_secure() will return True.
-# WARNING! Only set this if you fully understand what you're doing. Otherwise,
-# you may be opening yourself up to a security risk.
-SECURE_PROXY_SSL_HEADER = None
-
-##############
-# MIDDLEWARE #
-##############
-
-# List of middleware classes to use. Order is important; in the request phase,
-# this middleware classes will be applied in the order given, and in the
-# response phase the middleware will be applied in reverse order.
-MIDDLEWARE_CLASSES = (
- 'django.middleware.common.CommonMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
-# 'django.middleware.http.ConditionalGetMiddleware',
-# 'django.middleware.gzip.GZipMiddleware',
-)
-
-############
-# SESSIONS #
-############
-
-SESSION_CACHE_ALIAS = 'default' # Cache to store session data if using the cache session backend.
-SESSION_COOKIE_NAME = 'sessionid' # Cookie name. This can be whatever you want.
-SESSION_COOKIE_AGE = 60 * 60 * 24 * 7 * 2 # Age of cookie, in seconds (default: 2 weeks).
-SESSION_COOKIE_DOMAIN = None # A string like ".example.com", or None for standard domain cookie.
-SESSION_COOKIE_SECURE = False # Whether the session cookie should be secure (https:// only).
-SESSION_COOKIE_PATH = '/' # The path of the session cookie.
-SESSION_COOKIE_HTTPONLY = True # Whether to use the non-RFC standard httpOnly flag (IE, FF3+, others)
-SESSION_SAVE_EVERY_REQUEST = False # Whether to save the session data on every request.
-SESSION_EXPIRE_AT_BROWSER_CLOSE = False # Whether a user's session cookie expires when the Web browser is closed.
-SESSION_ENGINE = 'django.contrib.sessions.backends.db' # The module to store session data
-SESSION_FILE_PATH = None # Directory to store session files if using the file session module. If None, the backend will use a sensible default.
-SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer' # class to serialize session data
-
-#########
-# CACHE #
-#########
-
-# The cache backends to use.
-CACHES = {
- 'default': {
- 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
- }
-}
-CACHE_MIDDLEWARE_KEY_PREFIX = ''
-CACHE_MIDDLEWARE_SECONDS = 600
-CACHE_MIDDLEWARE_ALIAS = 'default'
-
-####################
-# COMMENTS #
-####################
-
-COMMENTS_ALLOW_PROFANITIES = False
-
-# The profanities that will trigger a validation error in
-# CommentDetailsForm.clean_comment. All of these should be in lowercase.
-PROFANITIES_LIST = ()
-
-##################
-# AUTHENTICATION #
-##################
-
-AUTH_USER_MODEL = 'auth.User'
-
-AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',)
-
-LOGIN_URL = '/accounts/login/'
-
-LOGOUT_URL = '/accounts/logout/'
-
-LOGIN_REDIRECT_URL = '/accounts/profile/'
-
-# The number of days a password reset link is valid for
-PASSWORD_RESET_TIMEOUT_DAYS = 3
-
-# the first hasher in this list is the preferred algorithm. any
-# password using different algorithms will be converted automatically
-# upon login
-PASSWORD_HASHERS = (
- 'django.contrib.auth.hashers.PBKDF2PasswordHasher',
- 'django.contrib.auth.hashers.PBKDF2SHA1PasswordHasher',
- 'django.contrib.auth.hashers.BCryptSHA256PasswordHasher',
- 'django.contrib.auth.hashers.BCryptPasswordHasher',
- 'django.contrib.auth.hashers.SHA1PasswordHasher',
- 'django.contrib.auth.hashers.MD5PasswordHasher',
- 'django.contrib.auth.hashers.UnsaltedSHA1PasswordHasher',
- 'django.contrib.auth.hashers.UnsaltedMD5PasswordHasher',
- 'django.contrib.auth.hashers.CryptPasswordHasher',
-)
-
-###########
-# SIGNING #
-###########
-
-SIGNING_BACKEND = 'django.core.signing.TimestampSigner'
-
-########
-# CSRF #
-########
-
-# Dotted path to callable to be used as view when a request is
-# rejected by the CSRF middleware.
-CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure'
-
-# Settings for CSRF cookie.
-CSRF_COOKIE_NAME = 'csrftoken'
-CSRF_COOKIE_DOMAIN = None
-CSRF_COOKIE_PATH = '/'
-CSRF_COOKIE_SECURE = False
-CSRF_COOKIE_HTTPONLY = False
-
-############
-# MESSAGES #
-############
-
-# Class to use as messages backend
-MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
-
-# Default values of MESSAGE_LEVEL and MESSAGE_TAGS are defined within
-# django.contrib.messages to avoid imports in this settings file.
-
-###########
-# LOGGING #
-###########
-
-# The callable to use to configure logging
-LOGGING_CONFIG = 'django.utils.log.dictConfig'
-
-# Custom logging configuration.
-LOGGING = {}
-
-# Default exception reporter filter class used in case none has been
-# specifically assigned to the HttpRequest instance.
-DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter'
-
-###########
-# TESTING #
-###########
-
-# The name of the class to use to run the test suite
-TEST_RUNNER = 'django.test.runner.DiscoverRunner'
-
-############
-# FIXTURES #
-############
-
-# The list of directories to search for fixtures
-FIXTURE_DIRS = ()
-
-###############
-# STATICFILES #
-###############
-
-# A list of locations of additional static files
-STATICFILES_DIRS = ()
-
-# The default file storage backend used during the build process
-STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage'
-
-# List of finder classes that know how to find static files in
-# various locations.
-STATICFILES_FINDERS = (
- 'django.contrib.staticfiles.finders.FileSystemFinder',
- 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
-# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
-)
diff --git a/lib/python2.7/site-packages/django/conf/locale/__init__.py b/lib/python2.7/site-packages/django/conf/locale/__init__.py
deleted file mode 100644
index 7ff004d..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/__init__.py
+++ /dev/null
@@ -1,494 +0,0 @@
-# -*- encoding: utf-8 -*-
-from __future__ import unicode_literals
-
-# About name_local: capitalize it as if your language name was appearing
-# inside a sentence in your language.
-
-LANG_INFO = {
- 'af': {
- 'bidi': False,
- 'code': 'af',
- 'name': 'Afrikaans',
- 'name_local': 'Afrikaans',
- },
- 'ar': {
- 'bidi': True,
- 'code': 'ar',
- 'name': 'Arabic',
- 'name_local': 'العربيّة',
- },
- 'az': {
- 'bidi': True,
- 'code': 'az',
- 'name': 'Azerbaijani',
- 'name_local': 'azərbaycan dili',
- },
- 'be': {
- 'bidi': False,
- 'code': 'be',
- 'name': 'Belarusian',
- 'name_local': 'беларуская',
- },
- 'bg': {
- 'bidi': False,
- 'code': 'bg',
- 'name': 'Bulgarian',
- 'name_local': 'български',
- },
- 'bn': {
- 'bidi': False,
- 'code': 'bn',
- 'name': 'Bengali',
- 'name_local': 'বাংলা',
- },
- 'br': {
- 'bidi': False,
- 'code': 'br',
- 'name': 'Breton',
- 'name_local': 'brezhoneg',
- },
- 'bs': {
- 'bidi': False,
- 'code': 'bs',
- 'name': 'Bosnian',
- 'name_local': 'bosanski',
- },
- 'ca': {
- 'bidi': False,
- 'code': 'ca',
- 'name': 'Catalan',
- 'name_local': 'català',
- },
- 'cs': {
- 'bidi': False,
- 'code': 'cs',
- 'name': 'Czech',
- 'name_local': 'česky',
- },
- 'cy': {
- 'bidi': False,
- 'code': 'cy',
- 'name': 'Welsh',
- 'name_local': 'Cymraeg',
- },
- 'da': {
- 'bidi': False,
- 'code': 'da',
- 'name': 'Danish',
- 'name_local': 'dansk',
- },
- 'de': {
- 'bidi': False,
- 'code': 'de',
- 'name': 'German',
- 'name_local': 'Deutsch',
- },
- 'el': {
- 'bidi': False,
- 'code': 'el',
- 'name': 'Greek',
- 'name_local': 'Ελληνικά',
- },
- 'en': {
- 'bidi': False,
- 'code': 'en',
- 'name': 'English',
- 'name_local': 'English',
- },
- 'en-gb': {
- 'bidi': False,
- 'code': 'en-gb',
- 'name': 'British English',
- 'name_local': 'British English',
- },
- 'eo': {
- 'bidi': False,
- 'code': 'eo',
- 'name': 'Esperanto',
- 'name_local': 'Esperanto',
- },
- 'es': {
- 'bidi': False,
- 'code': 'es',
- 'name': 'Spanish',
- 'name_local': 'español',
- },
- 'es-ar': {
- 'bidi': False,
- 'code': 'es-ar',
- 'name': 'Argentinian Spanish',
- 'name_local': 'español de Argentina',
- },
- 'es-mx': {
- 'bidi': False,
- 'code': 'es-mx',
- 'name': 'Mexican Spanish',
- 'name_local': 'español de Mexico',
- },
- 'es-ni': {
- 'bidi': False,
- 'code': 'es-ni',
- 'name': 'Nicaraguan Spanish',
- 'name_local': 'español de Nicaragua',
- },
- 'es-ve': {
- 'bidi': False,
- 'code': 'es-ve',
- 'name': 'Venezuelan Spanish',
- 'name_local': 'español de Venezuela',
- },
- 'et': {
- 'bidi': False,
- 'code': 'et',
- 'name': 'Estonian',
- 'name_local': 'eesti',
- },
- 'eu': {
- 'bidi': False,
- 'code': 'eu',
- 'name': 'Basque',
- 'name_local': 'Basque',
- },
- 'fa': {
- 'bidi': True,
- 'code': 'fa',
- 'name': 'Persian',
- 'name_local': 'فارسی',
- },
- 'fi': {
- 'bidi': False,
- 'code': 'fi',
- 'name': 'Finnish',
- 'name_local': 'suomi',
- },
- 'fr': {
- 'bidi': False,
- 'code': 'fr',
- 'name': 'French',
- 'name_local': 'français',
- },
- 'fy-nl': {
- 'bidi': False,
- 'code': 'fy-nl',
- 'name': 'Frisian',
- 'name_local': 'Frisian',
- },
- 'ga': {
- 'bidi': False,
- 'code': 'ga',
- 'name': 'Irish',
- 'name_local': 'Gaeilge',
- },
- 'gl': {
- 'bidi': False,
- 'code': 'gl',
- 'name': 'Galician',
- 'name_local': 'galego',
- },
- 'he': {
- 'bidi': True,
- 'code': 'he',
- 'name': 'Hebrew',
- 'name_local': 'עברית',
- },
- 'hi': {
- 'bidi': False,
- 'code': 'hi',
- 'name': 'Hindi',
- 'name_local': 'Hindi',
- },
- 'hr': {
- 'bidi': False,
- 'code': 'hr',
- 'name': 'Croatian',
- 'name_local': 'Hrvatski',
- },
- 'hu': {
- 'bidi': False,
- 'code': 'hu',
- 'name': 'Hungarian',
- 'name_local': 'Magyar',
- },
- 'ia': {
- 'bidi': False,
- 'code': 'ia',
- 'name': 'Interlingua',
- 'name_local': 'Interlingua',
- },
- 'id': {
- 'bidi': False,
- 'code': 'id',
- 'name': 'Indonesian',
- 'name_local': 'Bahasa Indonesia',
- },
- 'is': {
- 'bidi': False,
- 'code': 'is',
- 'name': 'Icelandic',
- 'name_local': 'Íslenska',
- },
- 'it': {
- 'bidi': False,
- 'code': 'it',
- 'name': 'Italian',
- 'name_local': 'italiano',
- },
- 'ja': {
- 'bidi': False,
- 'code': 'ja',
- 'name': 'Japanese',
- 'name_local': '日本語',
- },
- 'ka': {
- 'bidi': False,
- 'code': 'ka',
- 'name': 'Georgian',
- 'name_local': 'ქართული',
- },
- 'kk': {
- 'bidi': False,
- 'code': 'kk',
- 'name': 'Kazakh',
- 'name_local': 'Қазақ',
- },
- 'km': {
- 'bidi': False,
- 'code': 'km',
- 'name': 'Khmer',
- 'name_local': 'Khmer',
- },
- 'kn': {
- 'bidi': False,
- 'code': 'kn',
- 'name': 'Kannada',
- 'name_local': 'Kannada',
- },
- 'ko': {
- 'bidi': False,
- 'code': 'ko',
- 'name': 'Korean',
- 'name_local': '한국어',
- },
- 'lb': {
- 'bidi': False,
- 'code': 'lb',
- 'name': 'Luxembourgish',
- 'name_local': 'Lëtzebuergesch',
- },
- 'lt': {
- 'bidi': False,
- 'code': 'lt',
- 'name': 'Lithuanian',
- 'name_local': 'Lietuviškai',
- },
- 'lv': {
- 'bidi': False,
- 'code': 'lv',
- 'name': 'Latvian',
- 'name_local': 'latviešu',
- },
- 'mk': {
- 'bidi': False,
- 'code': 'mk',
- 'name': 'Macedonian',
- 'name_local': 'Македонски',
- },
- 'ml': {
- 'bidi': False,
- 'code': 'ml',
- 'name': 'Malayalam',
- 'name_local': 'Malayalam',
- },
- 'mn': {
- 'bidi': False,
- 'code': 'mn',
- 'name': 'Mongolian',
- 'name_local': 'Mongolian',
- },
- 'my': {
- 'bidi': False,
- 'code': 'my',
- 'name': 'Burmese',
- 'name_local': 'မြန်မာဘာသာ',
- },
- 'nb': {
- 'bidi': False,
- 'code': 'nb',
- 'name': 'Norwegian Bokmal',
- 'name_local': 'norsk (bokmål)',
- },
- 'ne': {
- 'bidi': False,
- 'code': 'ne',
- 'name': 'Nepali',
- 'name_local': 'नेपाली',
- },
- 'nl': {
- 'bidi': False,
- 'code': 'nl',
- 'name': 'Dutch',
- 'name_local': 'Nederlands',
- },
- 'nn': {
- 'bidi': False,
- 'code': 'nn',
- 'name': 'Norwegian Nynorsk',
- 'name_local': 'norsk (nynorsk)',
- },
- 'no': {
- 'bidi': False,
- 'code': 'no',
- 'name': 'Norwegian',
- 'name_local': 'norsk',
- },
- 'os': {
- 'bidi': False,
- 'code': 'os',
- 'name': 'Ossetic',
- 'name_local': 'Ирон',
- },
- 'pa': {
- 'bidi': False,
- 'code': 'pa',
- 'name': 'Punjabi',
- 'name_local': 'Punjabi',
- },
- 'pl': {
- 'bidi': False,
- 'code': 'pl',
- 'name': 'Polish',
- 'name_local': 'polski',
- },
- 'pt': {
- 'bidi': False,
- 'code': 'pt',
- 'name': 'Portuguese',
- 'name_local': 'Português',
- },
- 'pt-br': {
- 'bidi': False,
- 'code': 'pt-br',
- 'name': 'Brazilian Portuguese',
- 'name_local': 'Português Brasileiro',
- },
- 'ro': {
- 'bidi': False,
- 'code': 'ro',
- 'name': 'Romanian',
- 'name_local': 'Română',
- },
- 'ru': {
- 'bidi': False,
- 'code': 'ru',
- 'name': 'Russian',
- 'name_local': 'Русский',
- },
- 'sk': {
- 'bidi': False,
- 'code': 'sk',
- 'name': 'Slovak',
- 'name_local': 'slovenský',
- },
- 'sl': {
- 'bidi': False,
- 'code': 'sl',
- 'name': 'Slovenian',
- 'name_local': 'Slovenščina',
- },
- 'sq': {
- 'bidi': False,
- 'code': 'sq',
- 'name': 'Albanian',
- 'name_local': 'shqip',
- },
- 'sr': {
- 'bidi': False,
- 'code': 'sr',
- 'name': 'Serbian',
- 'name_local': 'српски',
- },
- 'sr-latn': {
- 'bidi': False,
- 'code': 'sr-latn',
- 'name': 'Serbian Latin',
- 'name_local': 'srpski (latinica)',
- },
- 'sv': {
- 'bidi': False,
- 'code': 'sv',
- 'name': 'Swedish',
- 'name_local': 'svenska',
- },
- 'sw': {
- 'bidi': False,
- 'code': 'sw',
- 'name': 'Swahili',
- 'name_local': 'Kiswahili',
- },
- 'ta': {
- 'bidi': False,
- 'code': 'ta',
- 'name': 'Tamil',
- 'name_local': 'தமிழ்',
- },
- 'te': {
- 'bidi': False,
- 'code': 'te',
- 'name': 'Telugu',
- 'name_local': 'తెలుగు',
- },
- 'th': {
- 'bidi': False,
- 'code': 'th',
- 'name': 'Thai',
- 'name_local': 'ภาษาไทย',
- },
- 'tr': {
- 'bidi': False,
- 'code': 'tr',
- 'name': 'Turkish',
- 'name_local': 'Türkçe',
- },
- 'tt': {
- 'bidi': False,
- 'code': 'tt',
- 'name': 'Tatar',
- 'name_local': 'Татарча',
- },
- 'udm': {
- 'bidi': False,
- 'code': 'udm',
- 'name': 'Udmurt',
- 'name_local': 'Удмурт',
- },
- 'uk': {
- 'bidi': False,
- 'code': 'uk',
- 'name': 'Ukrainian',
- 'name_local': 'Українська',
- },
- 'ur': {
- 'bidi': True,
- 'code': 'ur',
- 'name': 'Urdu',
- 'name_local': 'اردو',
- },
- 'vi': {
- 'bidi': False,
- 'code': 'vi',
- 'name': 'Vietnamese',
- 'name_local': 'Tiếng Việt',
- },
- 'zh-cn': {
- 'bidi': False,
- 'code': 'zh-cn',
- 'name': 'Simplified Chinese',
- 'name_local': '简体中文',
- },
- 'zh-tw': {
- 'bidi': False,
- 'code': 'zh-tw',
- 'name': 'Traditional Chinese',
- 'name_local': '繁體中文',
- }
-}
diff --git a/lib/python2.7/site-packages/django/conf/locale/af/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/af/LC_MESSAGES/django.mo
deleted file mode 100644
index 972fcc4..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/af/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/af/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/af/LC_MESSAGES/django.po
deleted file mode 100644
index fd10545..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/af/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1314 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Stephen Cox <stephencoxmail@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Afrikaans (http://www.transifex.com/projects/p/django/"
-"language/af/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: af\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikaans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arabies"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Aserbeidjans"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgaars"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Wit-Russies"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengali"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretons"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosnies"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Katalaans"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Tsjeggies"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Welsh"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Deens"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Duits"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Grieks"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Engels"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Britse Engels"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Spaans"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Argentynse Spaans"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Meksikaanse Spaans"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Nicaraguaanse Spaans"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Venezolaanse Spaans"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estnies"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Baskies"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persies"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Fins"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Fraans"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Fries"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Iers"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galicies"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebreeus"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindoe"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Kroaties"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Hongaars"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonesies"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Yslands"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italiaans"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japannees"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgian"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazakh"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Koreaanse"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Luxemburgs"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Litaus"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Lets"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Macedonies"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malabaars"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongools"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Noors Bokmal"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepalees"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Nederlands"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Noorweegse Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Punjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Pools"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugees"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Brasiliaanse Portugees"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Roemeens"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Russiese"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slowaakse"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Sloveens"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albanees"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serwies"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serwies Latyns"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Sweeds"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Swahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Teloegoe"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Thai"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turkish"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tataars"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Oedmoerts"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Oekraïens"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Viëtnamees"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Vereenvoudigde Sjinees"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Tradisionele Chinese"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Sleutel 'n geldige waarde in."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Sleutel 'n geldige URL in."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Sleutel 'n geldige e-pos adres in."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Sleutel 'n geldige \"slak\" wat bestaan ​​uit letters, syfers, beklemtoon of "
-"koppel."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Sleutel 'n geldige IPv4-adres in."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Voer 'n geldige IPv6-adres in."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Voer 'n geldige IPv4 of IPv6-adres in."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Sleutel slegs syfers in wat deur kommas geskei is."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Maak seker dat hierdie waarde %(limit_value)s is (dit is %(show_value)s )."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-"Maak seker dat hierdie waarde minder as of gelyk aan %(limit_value)s is."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-"Maak seker dat hierdie waarde groter as of gelyk aan %(limit_value)s is."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s moet uniek wees vir %(date_field)s %(lookup)s ."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "en"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s met hierdie %(field_label)s bestaan ​​alreeds."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Hierdie veld kan nie nil wees nie."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Hierdie veld kan nie leeg wees nie."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Veld van type: %(field_type)s "
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Heelgetal"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boole (Eder waar of vals)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "String (tot %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Kommas geskeide heelgetalle"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Datum (sonder die tyd)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Datum (met die tyd)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Desimale getal"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-pos adres"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Lêer pad"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Dryfpunt getal"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Groot (8 greep) heelgetal"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 adres"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP adres"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boole (Eder waar, vals of niks)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Positiewe heelgetal"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Positiewe klein heelgetal"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (tot by %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Klein heelgetal"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Teks"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Tyd"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Lêer"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Prent"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Vreemde sleutel (tipe bepaal deur verwante veld)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Een-tot-een-verhouding"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Baie-tot-baie-verwantskap"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Die veld is verpligtend."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Sleutel 'n hele getal in."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Sleutel 'n nommer in."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Sleutel 'n geldige datum in."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Sleutel 'n geldige tyd in."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Sleutel 'n geldige datum/tyd in."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"Geen lêer is ingedien nie. Maak seker die kodering tipe op die vorm is reg."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Geen lêer is ingedien nie."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Die ingedien lêer is leeg."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Stuur die lêer of tiek die maak skoon boksie, nie beide nie."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Laai 'n geldige prent. Die lêer wat jy opgelaai het is nie 'n prent nie of "
-"dit is 'n korrupte prent."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Kies 'n geldige keuse. %(value)s is nie een van die beskikbare keuses nie."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Sleatel 'n lys van waardes in."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Orde"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Verwyder"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Korrigeer die dubbele data vir %(field)s ."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Korrigeer die dubbele data vir %(field)s , dit moet uniek wees."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Korrigeer die dubbele data vir %(field_name)s, dit moet uniek wees vir die "
-"%(lookup)s in %(date_field)s ."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Korrigeer die dubbele waardes hieronder."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Die inlyn vreemde sleutel stem nie ooreen met die ouer primêre sleutel."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Kies 'n geldige keuse. Daardie keuse is nie een van die beskikbare keuses "
-"nie."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Hou die \"Control\" knoppie, of \"Command\" op 'n Mac, onder om meer as een "
-"te kies."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s kon nie in tydsone %(current_timezone)s vertolk word nie; dit "
-"mag dubbelsinnig wees, of nie bestaan nie."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Op die oomblik"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Verander"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Maak skoon"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Onbekend"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Ja"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Nee"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "Ja, nee, miskien"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d greep"
-msgstr[1] "%(size)d grepe"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "middernag"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "middag"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Maandag"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Dinsdag"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Woensdag"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Donderdag"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Vrydag"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Saterdag"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Sondag"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Ma"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Di"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Wo"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Do"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Vr"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sa"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "So"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Januarie"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Februarie"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Maart"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Mei"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Junie"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Julie"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Augustus"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Oktober"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "November"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Desember"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mag"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sept"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "des"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Maart"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Mei"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Junie"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Julie"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Aug."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Okt."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Des."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Januarie"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Februarie"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Maart"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Mei"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Junie"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Julie"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Augustus"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Oktober"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "November"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Desember"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "of"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Gids indekse word nie hier toegelaat nie."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" bestaan nie"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Indeks van %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Geen jaar gespesifiseer"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Geen maand gespesifiseer"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Geen dag gespesifiseer"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Geen week gespesifiseer"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Geen %(verbose_name_plural)s beskikbaar nie"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Toekomstige %(verbose_name_plural)s is nie beskikbaar nie, omdat "
-"%(class_name)s.allow_future vals is."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-"Ongeldige datum string '%(datestr)s' die formaat moet wees '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Geen %(verbose_name)s gevind vir die soektog"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"Bladsy is nie 'laaste' nie, en dit kan nie omgeskakel word na 'n heelgetal "
-"nie."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Ongeldige bladsy (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Leë lys en ' %(class_name)s.allow_empty' is vals."
diff --git a/lib/python2.7/site-packages/django/conf/locale/ar/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/ar/LC_MESSAGES/django.mo
deleted file mode 100644
index f8a17db..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ar/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/ar/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/ar/LC_MESSAGES/django.po
deleted file mode 100644
index c2ed6c4..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ar/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1358 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# dado_eyad <d.eyad.t@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ossama Khayat <okhayat@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-10-28 09:36+0000\n"
-"Last-Translator: dado_eyad <d.eyad.t@gmail.com>\n"
-"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/"
-"ar/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "الإفريقية"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "العربيّة"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "الأذربيجانية"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "البلغاريّة"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "البيلاروسية"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "البنغاليّة"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "البريتونية"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "البوسنيّة"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "الكتلانيّة"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "التشيكيّة"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "الويلز"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "الدنماركيّة"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "الألمانيّة"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "اليونانيّة"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "الإنجليزيّة"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "الإنجليزيّة البريطانيّة"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "الاسبرانتو"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "الإسبانيّة"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "الأسبانية الأرجنتينية"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "الأسبانية المكسيكية"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "الإسبانية النيكاراغوية"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "الإسبانية الفنزويلية"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "الإستونيّة"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "الباسك"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "الفارسيّة"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "الفنلنديّة"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "الفرنسيّة"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "الفريزيّة"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "الإيرلنديّة"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "الجليقيّة"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "العبريّة"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "الهندية"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "الكرواتيّة"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "الهنغاريّة"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "اللغة الوسيطة"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "الإندونيسيّة"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "الآيسلنديّة"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "الإيطاليّة"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "اليابانيّة"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "الجورجيّة"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "الكازاخستانية"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "الخمر"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "الهنديّة (كنّادا)"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "الكوريّة"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "اللوكسمبرجية"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "اللتوانيّة"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "اللاتفيّة"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "المقدونيّة"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "المايالام"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "المنغوليّة"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "البورمية"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "البوكمال نرويجيّة"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "النيبالية"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "الهولنديّة"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "النينورسك نرويجيّة"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "الأوسيتيكية"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "البنجابيّة"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "البولنديّة"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "البرتغاليّة"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "البرتغاليّة البرازيليّة"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "الرومانيّة"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "الروسيّة"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "السلوفاكيّة"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "السلوفانيّة"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "الألبانيّة"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "الصربيّة"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "اللاتينيّة الصربيّة"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "السويديّة"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "السواحلية"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "التاميل"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "التيلوغو"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "التايلنديّة"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "التركيّة"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "التتاريية"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "الأدمرتية"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "الأكرانيّة"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "الأوردو"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "الفيتناميّة"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "الصينيّة المبسطة"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "الصينيّة التقليدية"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "أدخل قيمة صحيحة."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "أدخل رابطاً صحيحاً."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "أدخل عنوان بريد إلكتروني صحيح."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "أدخل اختصار 'slug' صحيح يتكوّن من أحرف، أرقام، شرطات سفلية وعاديّة."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "أدخل عنوان IPv4 صحيح."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "أدخل عنوان IPv6 صحيح."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "أدخل عنوان IPv4 أو عنوان IPv6 صحيح."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "أدخل أرقاما فقط مفصول بينها بفواصل."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "تحقق من أن هذه القيمة هي %(limit_value)s (إنها %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "تحقق من أن تكون هذه القيمة أقل من %(limit_value)s أو مساوية لها."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "تحقق من أن تكون هذه القيمة أكثر من %(limit_value)s أو مساوية لها."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s يجب أن يكون مُميّزاً مع %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "و"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "النموذج %(model_name)s والحقل %(field_label)s موجود مسبقاً."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "لا يمكن تعيين null كقيمة لهذا الحقل."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "لا يمكن ترك هذا الحقل فارغاً."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "حقل نوع: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "عدد صحيح"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "ثنائي (إما True أو False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "سلسلة نص (%(max_length)s كحد أقصى)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "أرقام صحيحة مفصولة بفواصل"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "التاريخ (دون الوقت)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "التاريخ (مع الوقت)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "رقم عشري"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "عنوان بريد إلكتروني"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "مسار الملف"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "رقم فاصلة عائمة"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "عدد صحيح كبير (8 بايت)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "عنوان IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "عنوان IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "ثنائي (إما True أو False أو None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "عدد صحيح موجب"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "عدد صحيح صغير موجب"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "عدد صحيح صغير"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "نص"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "وقت"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "رابط"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "ملف"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "صورة"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "الحقل المرتبط (تم تحديد النوع وفقاً للحقل المرتبط)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "علاقة واحد إلى واحد"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "علاقة متعدد إلى متعدد"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "هذا الحقل مطلوب."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "أدخل رقما صحيحا."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "أدخل رقماً."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "أدخل تاريخاً صحيحاً."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "أدخل وقتاً صحيحاً."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "أدخل تاريخاً/وقتاً صحيحاً."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "لم يتم ارسال ملف، الرجاء التأكد من نوع ترميز الاستمارة."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "لم يتم إرسال اي ملف."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "الملف الذي قمت بإرساله فارغ."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "رجاءً أرسل ملف أو صح علامة صح عند مربع اختيار \"فارغ\"، وليس كلاهما."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"قم برفع صورة صحيحة، الملف الذي قمت برفعه إما أنه ليس ملفا لصورة أو أنه ملف "
-"معطوب."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "انتق خياراً صحيحاً. %(value)s ليس أحد الخيارات المتاحة."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "أدخل قائمة من القيم."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "الترتيب"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "احذف"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "رجاء صحّح بيانات %(field)s المتكررة."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "رجاء صحّح بيانات %(field)s المتكررة والتي يجب أن تكون مُميّزة."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"رجاء صحّح بيانات %(field_name)s المتكررة والتي يجب أن تكون مُميّزة لـ%(lookup)s "
-"في %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "رجاءً صحّح القيم المُكرّرة أدناه."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "حقل foreign key المحدد لا يطابق الحقل الرئيسي له."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "انتق خياراً صحيحاً. اختيارك ليس أحد الخيارات المتاحة."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"اضغط زر التحكم \"Control\", أو \"Command\" على أجهزة Mac لاختيار أكثر من "
-"واحد."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "حالياً"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "عدّل"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "تفريغ"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "مجهول"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "نعم"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "لا"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "نعم,لا,ربما"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d بايت"
-msgstr[1] "بايت واحد"
-msgstr[2] "بايتان"
-msgstr[3] "%(size)d بايتان"
-msgstr[4] "%(size)d بايت"
-msgstr[5] "%(size)d بايت"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s ك.ب"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s م.ب"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s ج.ب"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s ت.ب"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s ب.ب"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "م"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "ص"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "م"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "ص"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "منتصف الليل"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "ظهراً"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "الاثنين"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "الثلاثاء"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "الأربعاء"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "الخميس"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "الجمعة"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "السبت"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "الأحد"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "إثنين"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "ثلاثاء"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "أربعاء"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "خميس"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "جمعة"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "سبت"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "أحد"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "يناير"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "فبراير"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "مارس"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "إبريل"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "مايو"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "يونيو"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "يوليو"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "أغسطس"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "سبتمبر"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "أكتوبر"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "نوفمبر"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "ديسمبر"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "يناير"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "فبراير"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "مارس"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "إبريل"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "مايو"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "يونيو"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "يوليو"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "أغسطس"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "سبتمبر"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "أكتوبر"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "نوفمبر"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "ديسمبر"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "يناير"
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "فبراير"
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "مارس"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "إبريل"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "مايو"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "يونيو"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "يوليو"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "أغسطس"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "سبتمبر"
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "أكتوبر"
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "نوفمبر"
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "ديسمبر"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "يناير"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "فبراير"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "مارس"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "أبريل"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "مايو"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "يونيو"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "يوليو"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "أغسطس"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "سبتمبر"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "أكتوبر"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "نوفمبر"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "ديسمبر"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr "أو"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr "، "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "لم تحدد السنة"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "لم تحدد الشهر"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "لم تحدد اليوم"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "لم تحدد الأسبوع"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "لا يوجد %(verbose_name_plural)s"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"التاريخ بالمستقبل %(verbose_name_plural)s غير متوفر لأن قيمة %(class_name)s."
-"allow_future هي False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "نسق تاريخ غير صحيح '%(datestr)s' محدد بالشكل '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "لم يعثر على أي %(verbose_name)s مطابقة لهذا الإستعلام"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "الصفحة ليست 'الأخيرة'، ولا يمكن تحويل القيمة إلى رقم صحيح."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "قائمة فارغة و '%(class_name)s.allow_empty' قيمته False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/ar/formats.py b/lib/python2.7/site-packages/django/conf/locale/ar/formats.py
deleted file mode 100644
index 213e5b3..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ar/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j F، Y'
-TIME_FORMAT = 'g:i:s A'
-# DATETIME_FORMAT =
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'd‏/m‏/Y'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/az/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/az/LC_MESSAGES/django.mo
deleted file mode 100644
index bb73cdb..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/az/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/az/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/az/LC_MESSAGES/django.po
deleted file mode 100644
index 8be0d91..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/az/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1294 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Metin Amiroff <amiroff@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/"
-"language/az/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: az\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikaansca"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Ərəbcə"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azərbaycanca"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bolqarca"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Belarusca"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Benqalca"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretonca"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosniyaca"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Katalanca"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Çexcə"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Uelscə"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Danimarkaca"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Almanca"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Yunanca"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "İngiliscə"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Britaniya İngiliscəsi"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "İspanca"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Argentina İspancası"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Meksika İspancası"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Nikaraqua İspancası"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Venesuela İspancası"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estonca"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Baskca"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Farsca"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Fincə"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Fransızca"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Friscə"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "İrlandca"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Qallik dili"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "İbranicə"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindcə"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Xorvatca"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Macarca"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "İnterlinqua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "İndonezcə"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "İslandca"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "İtalyanca"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Yaponca"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Gürcücə"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Qazax"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Kxmercə"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannada dili"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Koreyca"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Lüksemburqca"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Litva dili"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Latviya dili"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Makedonca"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayamca"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Monqolca"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Bokmal Norveçcəsi"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepal"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Flamandca"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Nynorsk Norveçcəsi"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Pancabicə"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Polyakca"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portuqalca"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Braziliya Portuqalcası"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Rumınca"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Rusca"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slovakca"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slovencə"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albanca"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbcə"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serbcə Latın"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "İsveçcə"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Suahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamilcə"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Teluqu dili"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Tayca"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Türkcə"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatar"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurtca"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukraynaca"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urduca"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vyetnamca"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Sadələşdirilmiş Çincə"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Ənənəvi Çincə"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Düzgün qiymət daxil edin."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Düzgün URL daxil edin."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Düzgün e-poçt ünvanını daxil edin."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Hərflərdən, rəqəmlərdən, alt-xətlərdən və ya defislərdən ibarət düzgün slaq "
-"daxil edin."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Düzgün IPv4 ünvanı daxil edin."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Düzgün IPv6 ünvanını daxil edin."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Düzgün IPv4 və ya IPv6 ünvanını daxil edin."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Vergüllə ayırmaqla yalnız rəqəmlər daxil edin."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Əmin edin ki, bu qiymət %(limit_value)s-dir (bu %(show_value)s-dir)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-"Bu qiymətin %(limit_value)s-ya bərabər və ya ondan kiçik olduğunu yoxlayın."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-"Bu qiymətin %(limit_value)s-ya bərabər və ya ondan böyük olduğunu yoxlayın."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s %(date_field)s %(lookup)s tarixinə görə özəl olmalıdır."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "və"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s bu %(field_label)s sahə ilə artıq mövcuddur."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Bu sahə boş qala bilməz."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Bu sahə ağ qala bilməz."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Sahənin tipi: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Tam ədəd"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Bul (ya Doğru, ya Yalan)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Sətir (%(max_length)s simvola kimi)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Vergüllə ayrılmış tam ədədlər"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Tarix (saatsız)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Tarix (vaxt ilə)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Rasional ədəd"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-poçt"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Faylın ünvanı"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Sürüşən vergüllü ədəd"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Böyük (8 bayt) tam ədəd"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 ünvanı"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP ünvan"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Bul (Ya Doğru, ya Yalan, ya da Heç nə)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Müsbət tam ədəd"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Müsbət tam kiçik ədəd"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Əzmə (%(max_length)s simvola kimi)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Kiçik tam ədəd"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Mətn"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Vaxt"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Fayl"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Şəkil"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Xarici açar (bağlı olduğu sahəyə uyğun tipi alır)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Birin-birə münasibət"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Çoxun-çoxa münasibət"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Bu sahə vacibdir."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Tam ədəd daxil edin."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Ədəd daxil edin."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Düzgün tarix daxil edin."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Düzgün vaxt daxil edin."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Düzgün tarix/vaxt daxil edin."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Fayl göndərilməyib. Vərəqənin (\"form\") şifrələmə tipini yoxlayın."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Fayl göndərilməyib."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Göndərilən fayl boşdur."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Ya fayl göndərin, ya da xanaya quş qoymayın, hər ikisini də birdən etməyin."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Düzgün şəkil göndərin. Göndərdiyiniz fayl ya şəkil deyil, ya da şəkildə "
-"problem var."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Düzgün seçim edin. %(value)s seçimlər arasında yoxdur."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Qiymətlərin siyahısını daxil edin."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Sırala"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Sil"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "%(field)s sahəsinə görə təkrarlanan məlumatlara düzəliş edin."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"%(field)s sahəsinə görə təkrarlanan məlumatlara düzəliş edin, onların hamısı "
-"fərqli olmalıdır."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"%(field_name)s sahəsinə görə təkrarlanan məlumatlara düzəliş edin, onlar "
-"%(date_field)s %(lookup)s-a görə fərqli olmalıdır."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Aşağıda təkrarlanan qiymətlərə düzəliş edin."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Xarici açar ana obyektin əsas açarı ilə üst-üstə düşmür."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Düzgün seçim edin. Bu seçim mümkün deyil."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Birdən artıq seçim etmək istəyirsinizsə, \"Control\" düyməsini basılı "
-"saxlayın, Mac istifadəçiləri üçün \"Command\""
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s %(current_timezone)s zaman qurşağında ifadə oluna bilmir; ya "
-"duallıq, ya da yanlışlıq var."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Hal-hazırda"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Dəyiş"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Təmizlə"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Məlum deyil"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Hə"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Yox"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "hə, yox, bəlkə"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bayt"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "gecə yarısı"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "günorta"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Bazar ertəsi"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Çərşənbə axşamı"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Çərşənbə"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Cümə axşamı"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Cümə"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Şənbə"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Bazar"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "B.e"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Ç.a"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Çrş"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "C.a"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Cüm"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Şnb"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Bzr"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Yanvar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Fevral"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Mart"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Aprel"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "May"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "İyun"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "İyul"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Avqust"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Sentyabr"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Oktyabr"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Noyabr"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Dekabr"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ynv"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "fvr"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "may"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "iyn"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "iyl"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "avq"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "snt"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "noy"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dek"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Yan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Fev."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Mart"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Aprel"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "May"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "İyun"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "İyul"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Avq."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Sent."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Okt."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Noy."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Dek."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Yanvar"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Fevral"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Mart"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Aprel"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "May"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "İyun"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "İyul"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Avqust"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Sentyabr"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Oktyabr"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Noyabr"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Dekabr"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "və ya"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Ünvan indekslərinə icazə verilmir."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" mövcud deyil"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "%(directory)s-nin indeksi"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "İl göstərilməyib"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Ay göstərilməyib"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Gün göstərilməyib"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Həftə göstərilməyib"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s seçmək mümkün deyil"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Gələcək %(verbose_name_plural)s seçmək mümkün deyil, çünki %(class_name)s."
-"allow_future Yalan kimi qeyd olunub."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "\"%(format)s\" formatına görə \"%(datestr)s\" tarixi düzgün deyil"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Sorğuya uyğun %(verbose_name)s tapılmadı"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Səhifə nə \"axırıncı\"dır, nə də tam ədədə çevirmək mümkündür."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Qeyri-düzgün səhifə (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Siyahı boşdur və '%(class_name)s.allow_empty' Yalan kimi qeyd olunub."
diff --git a/lib/python2.7/site-packages/django/conf/locale/be/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/be/LC_MESSAGES/django.mo
deleted file mode 100644
index 32d37d0..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/be/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/be/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/be/LC_MESSAGES/django.po
deleted file mode 100644
index 4acb4f5..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/be/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1335 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/"
-"language/be/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: be\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Арабская"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Азэрбайджанская"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Баўгарская"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Бэнґальская"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Басьнійская"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Каталёнская"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Чэская"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Валійская"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Дацкая"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Нямецкая"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Грэцкая"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Анґельская"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Анґельская (Брытанская)"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Эспэранта"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Гішпанская"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Гішпанская (Арґентына)"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Гішпанская (Мэксыка)"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Гішпанская (Нікараґуа)"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Эстонская"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Басконская"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Фарсі"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Фінская"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Француская"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Фрызкая"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Ірляндзкая"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Ґальская"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Габрэйская"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Гінды"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Харвацкая"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Вугорская"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Інданэзійская"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Ісьляндзкая"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Італьянская"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Японская"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Грузінская"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Казаская"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Кхмерская"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Каннада"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Карэйская"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Літоўская"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Латыская"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Македонская"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Малаялам"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Манґольская"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Нарвэская букмол"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Нэпальская"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Галяндзкая"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Нарвэская нюнорск"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Панджабі"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Польская"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Партуґальская"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Партуґальская (Бразылія)"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Румынская"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Расейская"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Славацкая"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Славенская"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Альбанская"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Сэрбская"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Сэрбская (лацінка)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Швэдзкая"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Суахілі"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Тамільская"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Тэлуґу"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Тайская"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Турэцкая"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Татарская"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Украінская"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Урду"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Віетнамская"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Кітайская (спрошчаная)"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Кітайская (звычайная)"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Пазначце правільнае значэньне."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Пазначце чынную спасылку."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "Бірка можа зьмяшчаць літары, лічбы, знакі падкрэсьліваньня ды злучкі."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Пазначце чынны адрас IPv4."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Пазначце чынны адрас IPv6."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Пазначце чынны адрас IPv4 або IPv6."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Набярыце лічбы, падзеленыя коскамі."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Упэўніцеся, што гэтае значэньне — %(limit_value)s (зараз яно — "
-"%(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Значэньне мусіць быць меншым або роўным %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Значэньне мусіць быць большым або роўным %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"Значэньне «%(field_name)s мусіць быць непаўторным для «%(lookup)s» у полі "
-"«%(date_field)s»."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "і"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s з такім %(field_label)s ужо існуе."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Поле ня можа мець значэньне «null»."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Трэба запоўніць поле."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Палі віду: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Цэлы лік"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Ляґічнае («сапраўдна» або «не сапраўдна»)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Радок (ня болей за %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Цэлыя лікі, падзеленыя коскаю"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Дата (бяз часу)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Дата (разам з часам)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Дзесятковы лік"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Адрас эл. пошты"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Шлях да файла"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Лік зь пераноснай коскаю"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Вялікі (8 байтаў) цэлы"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Адрас IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Адрас IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Ляґічнае («сапраўдна», «не сапраўдна» ці «нічога»)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Дадатны цэлы лік"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Дадатны малы цэлы лік"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Бірка (ня болей за %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Малы цэлы лік"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Тэкст"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Час"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "Сеціўная спасылка"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Файл"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Выява"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Вонкавы ключ (від вызначаецца паводле зьвязанага поля)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Сувязь «адзін да аднаго»"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Сувязь «некалькі да некалькіх»"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Поле трэба запоўніць."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Набярыце ўвесь лік."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Набярыце лік."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Пазначце чынную дату."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Пазначце чынны час."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Пазначце чынныя час і дату."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Файл не даслалі. Зірніце кадоўку блянку."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Файл не даслалі."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Дасланы файл — парожні."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Трэба або даслаць файл, або абраць «Ачысьціць», але нельга рабіць гэта "
-"адначасова."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Запампаваць чынны малюнак. Запампавалі або не выяву, або пашкоджаную выяву."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Абярыце дазволенае. %(value)s няма ў даступных значэньнях."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Упішыце сьпіс значэньняў."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Парадак"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Выдаліць"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "У полі «%(field)s» выпраўце зьвесткі, якія паўтараюцца."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Выпраўце зьвесткі ў полі «%(field)s»: нельга, каб яны паўтараліся."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Выпраўце зьвесткі ў полі «%(field_name)s»: нельга каб зьвесткі ў "
-"«%(date_field)s» для «%(lookup)s» паўтараліся."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Выпраўце зьвесткі, якія паўтараюцца (гл. ніжэй)."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Вонкавы ключ не супадае з бацькоўскім першасным ключом."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Абярыце дазволенае. Абранага няма ў даступных значэньнях."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Каб абраць некалькі пунктаў, трымайце «Ctrl» (на «Маках» — «Command»)."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"У часавым абсягу «%(current_timezone)s» нельга зразумець дату %(datetime)s: "
-"яна можа быць неадназначнаю або яе можа не існаваць."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Зараз"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Зьмяніць"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Ачысьціць"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Невядома"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Так"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Не"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "так,не,магчыма"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d байт"
-msgstr[1] "%(size)d байты"
-msgstr[2] "%(size)d байтаў"
-msgstr[3] "%(size)d байтаў"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s КБ"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s МБ"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s ҐБ"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s ТБ"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s ПБ"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "папаўдні"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "папоўначы"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "папаўдні"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "папоўначы"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "поўнач"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "поўдзень"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Панядзелак"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Аўторак"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Серада"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Чацьвер"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Пятніца"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Субота"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Нядзеля"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Пн"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Аў"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Ср"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Чц"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Пт"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Сб"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Нд"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "студзеня"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "лютага"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "сакавік"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "красавіка"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "траўня"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "чэрвеня"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "ліпеня"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "жніўня"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "верасьня"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "кастрычніка"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "лістапада"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "сьнежня"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "сту"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "лют"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "сак"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "кра"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "тра"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "чэр"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "ліп"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "жні"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "вер"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "кас"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "ліс"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "сьн"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Сту."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Люты"
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "сакавік"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "красавіка"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "траўня"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "чэрвеня"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "ліпеня"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Жні."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Вер."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Кас."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Ліс."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Сьн."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "студзеня"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "лютага"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "сакавік"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "красавіка"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "траўня"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "чэрвеня"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "ліпеня"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "жніўня"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "верасьня"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "кастрычніка"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "лістапада"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "сьнежня"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s…"
-
-#: utils/text.py:224
-msgid "or"
-msgstr "або"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Не дазваляецца глядзець сьпіс файлаў каталёґа."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "Шлях «%(path)s» не існуе."
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Файлы каталёґа «%(directory)s»"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Не пазначылі год"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Не пазначылі месяц"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Не пазначылі дзень"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Не пазначылі тыдзень"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Няма доступу да %(verbose_name_plural)s"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Няма доступу да %(verbose_name_plural)s, якія будуць, бо «%(class_name)s."
-"allow_future» мае значэньне «не сапраўдна»."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Радок даты «%(datestr)s» не адпавядае выгляду «%(format)s»"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Па запыце не знайшлі ніводнага %(verbose_name)s"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"Нумар бачыны ня мае значэньня «last» і яго нельга ператварыць у цэлы лік."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
-"Сьпіс парожні, але «%(class_name)s.allow_empty» мае значэньне «не "
-"сапраўдна», што забараняе паказваць парожнія сьпісы."
diff --git a/lib/python2.7/site-packages/django/conf/locale/bg/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/bg/LC_MESSAGES/django.mo
deleted file mode 100644
index b18914e..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/bg/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/bg/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/bg/LC_MESSAGES/django.po
deleted file mode 100644
index a3ecc0f..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/bg/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1309 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Boris Chervenkov <office@sentido.bg>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Todor Lube <tlubenov@gmail.com>, 2013
-# zaxl <aatanasov@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/"
-"language/bg/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bg\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Африкански"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "арабски език"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Азербайджански език"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "български език"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Беларуски"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "бенгалски език"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Бретон"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "босненски език"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "каталунски език"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "чешки език"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "уелски език"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "датски език"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "немски език"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "гръцки език"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "английски език"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "британски английски"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Есперанто"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "испански език"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "кастилски"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Мексикански испански"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "никарагуански испански"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Испански Венецуелски"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "естонски език"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "баски"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "персийски език"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "финландски език"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "френски език"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "фризийски език"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "ирландски език"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "галицейски език"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "иврит"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "хинди"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "хърватски език"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "унгарски език"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Международен"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "индонезийски език"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "исландски език"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "италиански език"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "японски език"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "грузински език"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Казахски"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "кхмерски език"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "каннада"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "корейски език"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Люксембургски"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "литовски език"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "латвийски език"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "македонски език"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "малаялам"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "монголски език"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Бурмесе"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "норвежки букмол"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Непалски"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "холандски"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "норвежки съвременен език"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Осетски"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "пенджаби"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "полски език"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "португалски език"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "бразилски португалски"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "румънски език"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "руски език"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "словашки език"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "словенски език"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "албански език"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "сръбски език"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "сръбски с латински букви"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "шведски език"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Суахили"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "тамил"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "телугу"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "тайландски език"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "турски език"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Татарски"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Удмурт"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "украински език"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Урду"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "виетнамски език"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "китайски език"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "традиционен китайски"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Въведете валидна стойност. "
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Въведете валиден URL адрес."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Въведете валиден имейл адрес."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Въведете валиден 'слъг', състоящ се от букви, цифри, тирета или долни тирета."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Въведете валиден IPv4 адрес."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Въведете валиден IPv6 адрес."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Въведете валиден IPv4 или IPv6 адрес."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Въведете само еднозначни числа, разделени със запетая. "
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Уверете се, че тази стойност е %(limit_value)s (тя е %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Уверете се, че тази стойност е по-малка или равна на %(limit_value)s ."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-"Уверете се, че тази стойност е по-голяма или равна на %(limit_value)s ."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s трябва да са уникални за %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "и"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s с този %(field_label)s вече съществува."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Това поле не може да има празна стойност."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Това поле не може да е празно."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Поле от тип: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Цяло число"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (True или False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Символен низ (до %(max_length)s символа)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Цели числа, разделени с запетая"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Дата (без час)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Дата (и час)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Десетична дроб"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Email адрес"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Път към файл"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Число с плаваща запетая"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Голямо (8 байта) цяло число"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 адрес"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP адрес"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (Възможните стойности са True, False или None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Положително цяло число"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Положително 2 байта цяло число"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (до %(max_length)s )"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "2 байта цяло число"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Текст"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Време"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL адрес"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "сурови двоични данни"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Файл"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Изображение"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Външен ключ (тип, определен от свързаното поле)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "словенски език"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Много-към-много връзка"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Това поле е задължително."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Въведете цяло число. "
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Въведете число."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Въведете валидна дата. "
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Въведете валиден час."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Въведете валидна дата/час. "
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Не е получен файл. Проверете типа кодиране на формата. "
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Няма изпратен файл."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Каченият файл е празен. "
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Моля, или пратете файл или маркирайте полето за изчистване, но не и двете."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Качете валидно изображение. Файлът, който сте качили или не е изображение, "
-"или е повреден. "
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Направете валиден избор. %(value)s не е един от възможните избори."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Въведете списък от стойности"
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Скрито поле %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Ред"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Изтрий"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Моля, коригирайте дублираните данни за %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Моля, коригирайте дублираните данни за %(field)s, които трябва да са "
-"уникални."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Моля, коригирайте дублиранитe данни за %(field_name)s , които трябва да са "
-"уникални за %(lookup)s в %(date_field)s ."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Моля, коригирайте повтарящите се стойности по-долу."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Невалидна избрана стойност."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Направете валиден избор. Този не е един от възможните избори. "
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" не е валидна стойност за първичен ключ."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Задръжте натиснат клавиша \"Control\" (или \"Command\" на Mac), за да "
-"направите повече от един избор. "
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s не може да бъде разчетено в %(current_timezone)s; може да е "
-"двусмислен или да не съществува"
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Сега"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Промени"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Изчисти"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Неизвестно"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Да"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Не"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "да, не, може би"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d, байт"
-msgstr[1] "%(size)d, байта"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s ТБ"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "след обяд"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "преди обяд"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "след обяд"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "преди обяд"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "полунощ"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "обяд"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "понеделник"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "вторник"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "сряда"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "четвъртък"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "петък"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "събота"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "неделя"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Пон"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Вт"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Ср"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Чет"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Пет"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Съб"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Нед"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Януари"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Февруари"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Март"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Април"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Май"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Юни"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Юли"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Август"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Септември"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Октомври"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Ноември"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Декември"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ян"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "фев"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "мар"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "апр"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "май"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "юни"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "юли"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "авг"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "сеп"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "окт"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "ноев"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "дек"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Ян."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Фев."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Март"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Април"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Май"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Юни"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Юли"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Авг."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Септ."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Окт."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Ноев."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Дек."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Януари"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Февруари"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Март"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Април"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Май"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Юни"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Юли"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Август"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Септември"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "след обяд"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Ноември"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Декември"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Нито Pillow нито PIL могат да се импортират: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "или"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 минути"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Тук не е позволено индексиране на директория."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" не съществува"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Индекс %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Не е посочена година"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Не е посочен месец"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "ноев"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Не е посочена седмица"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Няма достъпни %(verbose_name_plural)s"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Бъдещo %(verbose_name_plural)s е достъпно, тъй като %(class_name)s."
-"allow_future е False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Невалидна дата '%(datestr)s' посочен формат '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Няма %(verbose_name)s , съвпадащи със заявката"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Страницата не е 'last' нито може да се преобразува в int."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Невалидна страница (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Празен списък и '%(class_name)s.allow_empty' не е валидно."
diff --git a/lib/python2.7/site-packages/django/conf/locale/bg/formats.py b/lib/python2.7/site-packages/django/conf/locale/bg/formats.py
deleted file mode 100644
index c5e8973..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/bg/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'd F Y'
-TIME_FORMAT = 'H:i:s'
-# DATETIME_FORMAT =
-# YEAR_MONTH_FORMAT =
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'd.m.Y'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = ' ' # Non-breaking space
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/bn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/bn/LC_MESSAGES/django.mo
deleted file mode 100644
index d3bb233..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/bn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/bn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/bn/LC_MESSAGES/django.po
deleted file mode 100644
index b0d1cdb..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/bn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1299 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# nsmgr8 <nasim.haque@gmail.com>, 2013
-# Tahmid Rafi <rafi.tahmid@gmail.com>, 2012-2013
-# Tahmid Rafi <rafi.tahmid@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/"
-"bn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "আফ্রিকার অন্যতম সরকারি ভাষা"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "আরবী"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "আজারবাইজানি"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "বুলগেরিয়ান"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "বেলারুশীয়"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "বাংলা"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "ব্রেটন"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "বসনিয়ান"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "ক্যাটালান"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "চেক"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "ওয়েল্স"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "ড্যানিশ"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "জার্মান"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "গ্রিক"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "ইংলিশ"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "বৃটিশ ইংলিশ"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "আন্তর্জাতিক ভাষা"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "স্প্যানিশ"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "আর্জেন্টিনিয়ান স্প্যানিশ"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "মেক্সিকান স্প্যানিশ"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "নিকারাগুয়ান স্প্যানিশ"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "ভেনেজুয়েলার স্প্যানিশ"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "এস্তোনিয়ান"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "বাস্ক"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "ফারসি"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "ফিনিশ"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "ফ্রেঞ্চ"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "ফ্রিজ্ল্যানডের ভাষা"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "আইরিশ"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "গ্যালিসিয়ান"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "হিব্রু"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "হিন্দী"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "ক্রোয়েশিয়ান"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "হাঙ্গেরিয়ান"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "ইন্দোনেশিয়ান"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "আইসল্যান্ডিক"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "ইটালিয়ান"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "জাপানিজ"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "জর্জিয়ান"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "কাজাখ"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "খমার"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "কান্নাড়া"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "কোরিয়ান"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "লুক্সেমবার্গীয়"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "লিথুয়ানিয়ান"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "লাটভিয়ান"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "ম্যাসাডোনিয়ান"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "মালায়ালম"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "মঙ্গোলিয়ান"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "বার্মিজ"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "নরওয়েজীয় বোকমাল"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "নেপালি"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "ডাচ"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "নরওয়েজীয়ান নিনর্স্ক"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "অসেটিক"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "পাঞ্জাবী"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "পোলিশ"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "পর্তুগীজ"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "ব্রাজিলিয়ান পর্তুগীজ"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "রোমানিয়ান"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "রাশান"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "স্লোভাক"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "স্লোভেনিয়ান"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "আলবেনীয়ান"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "সার্বিয়ান"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "সার্বিয়ান ল্যাটিন"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "সুইডিশ"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "সোয়াহিলি"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "তামিল"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "তেলেগু"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "থাই"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "তুর্কি"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "তাতারদেশীয়"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ইউক্রেনিয়ান"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "উর্দু"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "ভিয়েতনামিজ"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "সরলীকৃত চাইনীজ"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "প্রচলিত চাইনীজ"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "একটি বৈধ মান দিন।"
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "বৈধ URL দিন"
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "একটি বৈধ ইমেইল ঠিকানা লিখুন."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"বৈধ ’slug' প্রবেশ করান যাতে শুধুমাত্র ইংরেজী বর্ণ, অঙ্ক, আন্ডারস্কোর অথবা হাইফেন "
-"রয়েছে।"
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "একটি বৈধ IPv4 ঠিকানা দিন।"
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "একটি বৈধ IPv6 ঠিকানা টাইপ করুন।"
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "একটি বৈধ IPv4 অথবা IPv6 ঠিকানা টাইপ করুন।"
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "শুধুমাত্র কমা দিয়ে সংখ্যা দিন।"
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "সংখ্যাটির মান %(limit_value)s হতে হবে (এটা এখন %(show_value)s আছে)।"
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "সংখ্যাটির মান %(limit_value)s এর চেয়ে ছোট বা সমান হতে হবে।"
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "সংখ্যাটির মান %(limit_value)s এর চেয়ে বড় বা সমান হতে হবে।"
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "এবং"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(field_label)s সহ %(model_name)s আরেকটি রয়েছে।"
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "এর মান null হতে পারবে না।"
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "এই ফিল্ডের মান ফাঁকা হতে পারে না"
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "ফিল্ডের ধরণ: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "ইন্টিজার"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "বুলিয়ান (হয় True অথবা False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "স্ট্রিং (সর্বোচ্চ %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "কমা দিয়ে আলাদা করা ইন্টিজার"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "তারিখ (সময় বাদে)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "তারিখ (সময় সহ)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "দশমিক সংখ্যা"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "ইমেইল ঠিকানা"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "ফাইল পথ"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "ফ্লোটিং পয়েন্ট সংখ্যা"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "বিগ (৮ বাইট) ইন্টিজার"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 ঠিকানা"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "আইপি ঠিকানা"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "বুলিয়ান (হয় True, False অথবা None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "পজিটিভ ইন্টিজার"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "পজিটিভ স্মল ইন্টিজার"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "স্লাগ (সর্বোচ্চ %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "স্মল ইন্টিজার"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "টেক্সট"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "সময়"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "ইউআরএল (URL)"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "র বাইনারি ডাটা"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "ফাইল"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "ইমেজ"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "ফরেন কি (টাইপ রিলেটেড ফিল্ড দ্বারা নির্ণীত হবে)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "ওয়ান-টু-ওয়ান রিলেশানশিপ"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "ম্যানি-টু-ম্যানি রিলেশানশিপ"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "এটি আবশ্যক।"
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "একটি পূর্ণসংখ্যা দিন"
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "একটি সংখ্যা প্রবেশ করান।"
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "বৈধ তারিখ দিন।"
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "বৈধ সময় দিন।"
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "বৈধ তারিখ/সময় দিন।"
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "কোন ফাইল দেয়া হয়নি। ফর্মের এনকোডিং ঠিক আছে কিনা দেখুন।"
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "কোন ফাইল দেয়া হয়নি।"
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "ফাইলটি খালি।"
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"একটি ফাইল সাবমিট করুন অথবা ক্লিয়ার চেকবক্সটি চেক করে দিন, যে কোন একটি করুন।"
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"সঠিক ছবি আপলোড করুন। যে ফাইলটি আপলোড করা হয়েছে তা হয় ছবি নয় অথবা নষ্ট হয়ে "
-"যাওয়া ছবি।"
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "%(value)s বৈধ নয়। অনুগ্রহ করে আরেকটি সিলেক্ট করুন।"
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "কয়েকটি মানের তালিকা দিন।"
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "ক্রম"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "মুছুন"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr ""
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr ""
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "ইনলাইন ফরেন কি টি প্যারেন্ট ইনস্ট্যান্সের প্রাইমারি কি এর সমান নয়।"
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "এটি বৈধ নয়। অনুগ্রহ করে আরেকটি সিলেক্ট করুন।"
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "একাধিক বাছাই করতে \"কন্ট্রোল\", অথবা ম্যাকে \"কমান্ড\", চেপে ধরুন।"
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "এই মুহুর্তে"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "পরিবর্তন"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "পরিষ্কার করুন"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "অজানা"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "হ্যাঁ"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "না"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "হ্যাঁ,না,হয়তো"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d বাইট"
-msgstr[1] "%(size)d বাইট"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s কিলোবাইট"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s মেগাবাইট"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s গিগাবাইট"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s টেরাবাইট"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s পেটাবাইট"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "অপরাহ্ন"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "পূর্বাহ্ন"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "অপরাহ্ন"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "পূর্বাহ্ন"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "মধ্যরাত"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "দুপুর"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "সোমবার"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "মঙ্গলবার"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "বুধবার"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "বৃহস্পতিবার"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "শুক্রবার"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "শনিবার"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "রবিবার"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "সোম"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "মঙ্গল"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "বুধ"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "বৃহঃ"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "শুক্র"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "শনি"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "রবি"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "জানুয়ারি"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "ফেব্রুয়ারি"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "মার্চ"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "এপ্রিল"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "মে"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "জুন"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "জুলাই"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "আগস্ট"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "সেপ্টেম্বর"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "অক্টোবর"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "নভেম্বর"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "ডিসেম্বর"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "জান."
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "ফেব."
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "মার্চ"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "এপ্রি."
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "মে"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "জুন"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "জুল."
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "আগ."
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "সেপ্টে."
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "অক্টো."
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "নভে."
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "ডিসে."
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "জানু."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "ফেব্রু."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "মার্চ"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "এপ্রিল"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "মে"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "জুন"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "জুলাই"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "আগ."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "সেপ্ট."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "অক্টো."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "নভে."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "ডিসে."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "জানুয়ারি"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "ফেব্রুয়ারি"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "মার্চ"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "এপ্রিল"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "মে"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "জুন"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "জুলাই"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "আগস্ট"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "সেপ্টেম্বর"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "অক্টোবর"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "নভেম্বর"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "ডিসেম্বর"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "অথবা"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 মিনিট"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "ডিরেক্টরি ইনডেক্স অনুমোদিত নয়"
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" এর অস্তিত্ব নেই"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "%(directory)s এর ইনডেক্স"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "কোন বছর উল্লেখ করা হয়নি"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "কোন মাস উল্লেখ করা হয়নি"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "কোন দিন উল্লেখ করা হয়নি"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "কোন সপ্তাহ উল্লেখ করা হয়নি"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "কোন %(verbose_name_plural)s নেই"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "কুয়েরি ম্যাচ করে এমন কোন %(verbose_name)s পাওয়া যায় নি"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/conf/locale/bn/formats.py b/lib/python2.7/site-packages/django/conf/locale/bn/formats.py
deleted file mode 100644
index eed24e6..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/bn/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j F, Y'
-TIME_FORMAT = 'g:i:s A'
-# DATETIME_FORMAT =
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'j M, Y'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = '.'
-THOUSAND_SEPARATOR = ','
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/br/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/br/LC_MESSAGES/django.mo
deleted file mode 100644
index db36a0b..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/br/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/br/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/br/LC_MESSAGES/django.po
deleted file mode 100644
index f79de40..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/br/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1312 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Fulup <fulup.jakez@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/"
-"br/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: br\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arabeg"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azeri"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgareg"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengaleg"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosneg"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Katalaneg"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Tchekeg"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Kembraeg"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Daneg"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Alamaneg"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Gresianeg"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Saozneg"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Saozneg Breizh-Veur"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanteg"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Spagnoleg"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Spagnoleg Arc'hantina"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Spagnoleg Mec'hiko"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Spagnoleg Nicaragua"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estoneg"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Euskareg"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Perseg"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finneg"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Galleg"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frizeg"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Iwerzhoneg"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galizeg"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebraeg"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Kroateg"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Hungareg"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonezeg"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islandeg"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italianeg"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japaneg"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Jorjianeg"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "kazak"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannata"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Koreaneg"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Lituaneg"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Latveg"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Makedoneg"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongoleg"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norvegeg Bokmal"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "nepaleg"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Nederlandeg"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norvegeg Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Punjabeg"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Poloneg"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugaleg"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Portugaleg Brazil"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Roumaneg"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Rusianeg"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slovakeg"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Sloveneg"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albaneg"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbeg"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serbeg e lizherennoù latin"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Svedeg"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "swahileg"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamileg"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telougou"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Thai"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turkeg"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "tatar"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukraineg"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Ourdou"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnameg"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Sinaeg eeunaet"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Sinaeg hengounel"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Merkit un talvoud reizh"
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Merkit un URL reizh"
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"N'hall bezañ er vaezienn-mañ nemet lizherennoù, niveroù, tiredoù izel _ ha "
-"barrennigoù-stagañ."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Merkit ur chomlec'h IPv4 reizh."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Merkit ur chomlec'h IPv6 reizh."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Merkit ur chomlec'h IPv4 pe IPv6 reizh."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Merkañ hepken sifroù dispartiet dre skejoù."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Bezit sur ez eo an talvoud-mañ %(limit_value)s (evit ar mare ez eo "
-"%(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Gwiriit mat emañ an talvoud-mañ a-is pe par da %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Gwiriit mat emañ an talvoud-mañ a-us pe par da %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"Ret eo da %(field_name)s bezañ e-unan evit al lodenn %(date_field)s "
-"%(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "ha"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "Bez' ez eus c'hoazh eus ur %(model_name)s gant ar %(field_label)s-mañ."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "N'hall ket ar vaezienn chom goullo"
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "N'hall ket ar vaezienn chom goullo"
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Seurt maezienn : %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Anterin"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boulean (gwir pe gaou)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "neudennad arouezennoù (betek %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Niveroù anterin dispartiet dre ur skej"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Deizad (hep eur)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Deizad (gant an eur)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Niver dekvedennel"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Chomlec'h postel"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Treug war-du ar restr"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Niver gant skej nij"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Anterin bras (8 okted)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Chomlec'h IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Chomlec'h IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boulean (gwir pe gaou pe netra)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Niver anterin pozitivel"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Niver anterin bihan pozitivel"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (betek %(max_length)s arouez.)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Niver anterin bihan"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Testenn"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Eur"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Restr"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Skeudenn"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Alc'hwez estren (seurt termenet dre ar vaezienn liammet)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Darempred unan-ouzh-unan"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Darempred lies-ouzh-lies"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Rekis eo leuniañ ar vaezienn."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Merkit un niver anterin."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Merkit un niver."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Merkit un deiziad reizh"
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Merkit un eur reizh"
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Merkit un eur/deiziad reizh"
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "N'eus ket kaset restr ebet. Gwiriit ar seurt enkodañ evit ar restr"
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "N'eus bet kaset restr ebet."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Goullo eo ar restr kaset."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Kasit ur restr pe askit al log riñsañ; an eil pe egile"
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Enpozhiit ur skeudenn reizh. Ar seurt bet enporzhiet ganeoc'h a oa foeltret "
-"pe ne oa ket ur skeudenn"
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Dizuit un dibab reizh. %(value)s n'emañ ket e-touez an dibaboù posupl."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Merkit ur roll talvoudoù"
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Urzh"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Diverkañ"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Reizhit ar roadennoù e doubl e %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Reizhit ar roadennoù e doubl e %(field)s, na zle bezañ enni nemet talvoudoù "
-"dzho o-unan."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Reizhit ar roadennoù e doubl e %(field_name)s a rank bezañ ennañ talvodoù en "
-"o-unan evit lodenn %(lookup)s %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Reizhañ ar roadennoù e doubl zo a-is"
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Ne glot ket an alc'hwez estren enlinenn gant alc'hwez-mamm an urzhiataer "
-"galloudel kar"
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Diuzit un dibab reizh. N'emañ ket an dibab-mañ e-touez ar re bosupl."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Dalc'hit da bouezañ \"Ktrl\" pe \"Urzhiad\" (stokell Aval) war ur Mac."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"N'eo ket bete komprenet an talvoud %(datetime)s er werzhid eur "
-"%(current_timezone)s; pe eo amjestr pe n'eus ket anezhañ."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Evit ar mare"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Kemmañ"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Riñsañ"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Dianav"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Ya"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Ket"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "ya, ket, marteze"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d okted"
-msgstr[1] "%(size)d okted"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "g.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "mintin"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "G.M."
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "Mintin"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "hanternoz"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "kreisteiz"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Lun"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Meurzh"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Merc'her"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Yaou"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Gwener"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Sadorn"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Sul"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Lun"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Meu"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Mer"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Yao"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Gwe"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sad"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Sul"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Genver"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "C'hwevrer"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Meurzh"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Ebrel"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Mae"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Mezheven"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Gouere"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Eost"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Gwengolo"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Here"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Du"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Kerzu"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "Gen"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "C'hwe"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "Meu"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "Ebr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "Mae"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "Mez"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "Gou"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "Eos"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "Gwe"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "Her"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "Du"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "Kzu"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Gen."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "C'hwe."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Meu."
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Ebr."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Mae"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Mez."
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Gou."
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Eos."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Gwe."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Her."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Du"
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Kzu"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Genver"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "C'hwevrer"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Meurzh"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Ebrel"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Mae"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Mezheven"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Gouere"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Eost"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Gwengolo"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Here"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Du"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Kerzu"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "pe"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "N'haller ket diskwel endalc'had ar c'havlec'h-mañ."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "N'eus ket eus \"%(path)s\""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Meneger %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "N'eus bet resisaet bloavezh ebet"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "N'eus bet resisaet miz ebet"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "N'eus bet resisaet deiz ebet"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "N'eus bet resisaet sizhun ebet"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "N'eus %(verbose_name_plural)s ebet da gaout."
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"En dazont ne vo ket a %(verbose_name_plural)s rak faos eo %(class_name)s."
-"allow_future."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-"Direizh eo ar furmad '%(format)s' evit an neudennad deiziad '%(datestr)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr ""
-"N'eus bet kavet traezenn %(verbose_name)s ebet o klotaén gant ar goulenn"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"N'eo ket 'last' ar bajenn na n'hall ket bezañ amdroet en un niver anterin."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Roll goullo ha faos eo '%(class_name)s.allow_empty'."
diff --git a/lib/python2.7/site-packages/django/conf/locale/bs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/bs/LC_MESSAGES/django.mo
deleted file mode 100644
index a92e866..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/bs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/bs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/bs/LC_MESSAGES/django.po
deleted file mode 100644
index d8f220a..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/bs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1320 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Filip Dupanović <filip.dupanovic@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/"
-"bs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bs\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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "arapski"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azerbejdžanski"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "bugarski"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "bengalski"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "bosanski"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "katalonski"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "češki"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "velški"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "danski"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "njemački"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "grčki"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "engleski"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Britanski engleski"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "španski"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Argentinski španski"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Meksički španski"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Nikuaraganski španski"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "estonski"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "baskijski"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "persijski"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "finski"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "francuski"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "frišanski"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "irski"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "galski"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "hebrejski"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "hrvatski"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "mađarski"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonežanski"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "islandski"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "italijanski"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "japanski"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "gruzijski"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "kambođanski"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "kanada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "korejski"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "litvanski"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "latvijski"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "makedonski"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malajalamski"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongolski"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norveški književni"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "holandski"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norveški novi"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Pandžabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "poljski"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "portugalski"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "brazilski portugalski"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "rumunski"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "ruski"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "slovački"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "slovenački"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "albanski"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "srpski"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "srpski latinski"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "švedski"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "tamilski"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "tajlandski"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "turski"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ukrajinski"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "vijetnamežanski"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "novokineski"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "starokineski"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Unesite ispravnu vrijednost."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Unesite ispravan URL."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Unesite ispravan „slug“, koji se sastoji od slova, brojki, donjih crta ili "
-"crtica."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Unesite ispravnu IPv4 adresu."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr ""
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr ""
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Unesite samo brojke razdvojene zapetama."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Pobrinite se da je ova vrijednost %(limit_value)s (trenutno je "
-"%(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Ova vrijednost mora da bude manja ili jednaka %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Ova vrijednost mora biti veća ili jednaka %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s mora da bude jedinstven za %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "i"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s sa ovom vrijednošću %(field_label)s već postoji."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Ovo polje ne može ostati prazno."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Ovo polje ne može biti prazno."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Polje tipa: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Cijeo broj"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Bulova vrijednost (True ili False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "String (najviše %(max_length)s znakova)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Cijeli brojevi razdvojeni zapetama"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Datum (bez vremena)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Datum (sa vremenom)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Decimalni broj"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Email adresa"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Putanja fajla"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Broj sa pokrenom zapetom"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Big (8 bajtni) integer"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP adresa"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Bulova vrijednost (True, False ili None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Tekst"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Vrijeme"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr ""
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr ""
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Strani ključ (tip određen povezanim poljem)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Jedan-na-jedan odnos"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Više-na-više odsnos"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Ovo polje se mora popuniti."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Unesite cijeo broj."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Unesite broj."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Unesite ispravan datum."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Unesite ispravno vrijeme"
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Unesite ispravan datum/vrijeme."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Fajl nije prebačen. Provjerite tip enkodiranja formulara."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Fajl nije prebačen."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Prebačen fajl je prazan."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Prebacite ispravan fajl. Fajl koji je prebačen ili nije slika, ili je "
-"oštećen."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"%(value)s nije među ponuđenim vrijednostima. Odaberite jednu od ponuđenih."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Unesite listu vrijednosti."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Redoslijed"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Obriši"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Ispravite dupli sadržaj za polja: %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Ispravite dupli sadržaj za polja: %(field)s, koji mora da bude jedinstven."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Ispravite dupli sadržaj za polja: %(field_name)s, koji mora da bude "
-"jedinstven za %(lookup)s u %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Ispravite duple vrijednosti dole."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Strani ključ se nije poklopio sa instancom roditeljskog ključa."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Odabrana vrijednost nije među ponuđenima. Odaberite jednu od ponuđenih."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Držite „Control“, ili „Command“ na Mac-u da biste obilježili više od jedne "
-"stavke."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Trenutno"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Izmjeni"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Očisti"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Nepoznato"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Da"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Ne"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "da,ne,možda"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "po p."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "prije p."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "ponoć"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "podne"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "ponedjeljak"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "utorak"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "srijeda"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "četvrtak"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "petak"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "subota"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "nedjelja"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "pon."
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "uto."
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "sri."
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "čet."
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "pet."
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "sub."
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "ned."
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "januar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "februar"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "mart"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "maj"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "juni"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "juli"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "august"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "septembar"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "oktobar"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "novembar"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "decembar"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan."
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb."
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar."
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr."
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "maj."
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun."
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul."
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug."
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep."
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt."
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov."
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec."
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Mart"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Maj"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "juli"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "august"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "septembar"
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "oktobar"
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "novembar"
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "decembar"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "januar"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "februar"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "mart"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "maj"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "juni"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "juli"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "august"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "septembar"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "oktobar"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Novembar"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "decembar"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr "ili"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Godina nije naznačena"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Mjesec nije naznačen"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Dan nije naznačen"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Sedmica nije naznačena"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr ""
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr ""
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/conf/locale/bs/formats.py b/lib/python2.7/site-packages/django/conf/locale/bs/formats.py
deleted file mode 100644
index 454fab1..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/bs/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j. N Y.'
-TIME_FORMAT = 'G:i'
-DATETIME_FORMAT = 'j. N. Y. G:i T'
-YEAR_MONTH_FORMAT = 'F Y.'
-MONTH_DAY_FORMAT = 'j. F'
-SHORT_DATE_FORMAT = 'Y M j'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/ca/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/ca/LC_MESSAGES/django.mo
deleted file mode 100644
index 439e974..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ca/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/ca/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/ca/LC_MESSAGES/django.po
deleted file mode 100644
index 88f408a..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ca/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1315 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antoni Aloy <aaloy@apsl.net>, 2012
-# Carles Barrobés <carles@barrobes.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Catalan (http://www.transifex.com/projects/p/django/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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "àrab"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "azerbaijanès"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "búlgar"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Bielorús"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "bengalí"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretó"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "bosnià"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "català"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "txec"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "gal·lès"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "danès"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "alemany"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "grec"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "anglès"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "anglès britànic"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "espanyol"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "castellà d'Argentina"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "espanyol de Mèxic"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "castellà de Nicaragua"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Espanyol de Veneçuela"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "estonià"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "euskera"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "persa"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "finlandès"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "francès"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "frisi"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "irlandès"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "gallec"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "hebreu"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "croat"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "hongarès"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "indonesi"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "islandès"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "italià"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "japonès"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "georgià"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazakh"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "kannarès"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "coreà"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Luxemburguès"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "lituà"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "letó"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "macedoni"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "malaiàlam "
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "mongol"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "noruec bokmal"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepalí"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "holandès"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "noruec nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "panjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "polonès"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "portuguès"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "portuguès de brasil"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "romanès"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "rus"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "eslovac"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "eslovè"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "albanès"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "serbi"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "serbi llatí"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "suec"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Swahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "tàmil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "tailandès"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "turc"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatar"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurt"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ucraïnès"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "vietnamita"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "xinès simplificat"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "xinès tradicional"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Introduïu un valor vàlid."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Introduïu una URL vàlida."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Introdueix una adreça de correu electrònic vàlida"
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Introduïu un 'slug' vàlid, consistent en lletres, números, guions o guions "
-"baixos."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Introduïu una adreça IPv4 vàlida."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Entreu una adreça IPv6 vàlida."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Entreu una adreça IPv4 o IPv6 vàlida."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Introduïu només dígits separats per comes."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Assegureu-vos que el valor sigui %(limit_value)s (és %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-"Assegureu-vos que aquest valor sigui menor o igual que %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-"Assegureu-vos que aquest valor sigui més gran o igual que %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "El camp %(field_name)s ha de ser únic per a %(lookup)s %(date_field)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "i"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "Ja existeix %(model_name)s amb aquest %(field_label)s."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Aquest camp no pot ser nul."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Aquest camp no pot estar en blanc."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Camp del tipus: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Enter"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Booleà (Cert o Fals)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Cadena (de fins a %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Enters separats per comes"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Data (sense hora)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Data (amb hora)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Número decimal"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Adreça de correu electrònic"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Ruta del fitxer"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Número de coma flotant"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Enter gran (8 bytes)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Adreça IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Adreça IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Booleà (Cert, Fals o Cap ('None'))"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Enter positiu"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Enter petit positiu"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (fins a %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Enter petit"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Text"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Hora"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Arxiu"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Imatge"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Clau forana (tipus determinat pel camp relacionat)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Inter-relació un-a-un"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Inter-relació molts-a-molts"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Aquest camp és obligatori."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Introduïu un número sencer."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Introduïu un número."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Introduïu una data vàlida."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Introduïu una hora vàlida."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Introduïu una data/hora vàlides."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"No s'ha enviat cap fitxer. Comproveu el tipus de codificació del formulari."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "No s'ha enviat cap fitxer."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "El fitxer enviat està buit."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Si us plau, envieu un fitxer o marqueu la casella de selecció \"netejar\", "
-"no ambdós."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Carregueu una imatge vàlida. El fitxer que heu carregat no era una imatge o "
-"estava corrupte."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Esculliu una opció vàlida. %(value)s no és una de les opcions vàlides."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Introduïu una llista de valors."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Ordre"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Eliminar"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Si us plau, corregiu la dada duplicada per a %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Si us plau, corregiu la dada duplicada per a %(field)s, la qual ha de ser "
-"única."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Si us plau, corregiu la dada duplicada per a %(field_name)s, la qual ha de "
-"ser única per a %(lookup)s en %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Si us plau, corregiu els valors duplicats a sota."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"La clau forana en línia no coincideix amb la clau primària de la instància "
-"mare."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Esculli una opció vàlida. Aquesta opció no és una de les opcions disponibles."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Premeu la tecla \"Control\", o \"Command\" en un Mac, per seleccionar més "
-"d'un valor."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"No s'ha pogut interpretar %(datetime)s a la zona horària "
-"%(current_timezone)s; potser és ambigua o no existeix."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Actualment"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Modificar"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Netejar"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Desconegut"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Sí"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "No"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "sí,no,potser"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "mitjanit"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "migdia"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Dilluns"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Dimarts"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Dimecres"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Dijous"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Divendres"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Dissabte"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Diumenge"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "dl."
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "dt."
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "dc."
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "dj."
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "dv."
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "ds."
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "dg."
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "gener"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "febrer"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "març"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "abril"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "maig"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "juny"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "juliol"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "agost"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "setembre"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "octubre"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "novembre"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "desembre"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "gen."
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb."
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "març"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "abr."
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "maig"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "juny"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul."
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ago."
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "set."
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "oct."
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov."
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "des."
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "gen."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "mar."
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "abr."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "mai."
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "jun."
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "jul."
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "ago."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "set."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "oct."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "des."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "gener"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "febrer"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "març"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "abril"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "maig"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "juny"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "juliol"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "agost"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "setembre"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "octubre"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "novembre"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "desembre"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "o"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "No es permeten índexos de directori aquí"
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" no existeix"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Índex de %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "No s'ha especificat any"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "No s'ha especificat mes"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "No s'ha especificat dia"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "No s'ha especificat setmana"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Cap %(verbose_name_plural)s disponible"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Futurs %(verbose_name_plural)s no disponibles perquè %(class_name)s."
-"allow_future és Fals."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Cadena invàlida de dats '%(datestr)s' donat el format '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "No s'ha trobat sap %(verbose_name)s que coincideixi amb la petició"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "La pàgina no és 'last', ni es pot convertir en un enter"
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Plana invàlida (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Llista buida i '%(class_name)s.allow_empty' és Fals."
diff --git a/lib/python2.7/site-packages/django/conf/locale/ca/formats.py b/lib/python2.7/site-packages/django/conf/locale/ca/formats.py
deleted file mode 100644
index 0335617..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ca/formats.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = r'j \d\e F \d\e Y'
-TIME_FORMAT = 'G:i:s'
-DATETIME_FORMAT = r'j \d\e F \d\e Y \a \l\e\s G:i'
-YEAR_MONTH_FORMAT = r'F \d\e\l Y'
-MONTH_DAY_FORMAT = r'j \d\e F'
-SHORT_DATE_FORMAT = 'd/m/Y'
-SHORT_DATETIME_FORMAT = 'd/m/Y G:i'
-FIRST_DAY_OF_WEEK = 1 # Monday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- # '31/12/2009', '31/12/09'
- '%d/%m/%Y', '%d/%m/%y'
-)
-DATETIME_INPUT_FORMATS = (
- '%d/%m/%Y %H:%M:%S',
- '%d/%m/%Y %H:%M:%S.%f',
- '%d/%m/%Y %H:%M',
- '%d/%m/%y %H:%M:%S',
- '%d/%m/%y %H:%M:%S.%f',
- '%d/%m/%y %H:%M',
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-NUMBER_GROUPING = 3
-
diff --git a/lib/python2.7/site-packages/django/conf/locale/cs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/cs/LC_MESSAGES/django.mo
deleted file mode 100644
index abfbd7f..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/cs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/cs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/cs/LC_MESSAGES/django.po
deleted file mode 100644
index 3aebccb..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/cs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1347 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Jan Papež <honyczek@centrum.cz>, 2012
-# Jirka Vejrazka <Jirka.Vejrazka@gmail.com>, 2011
-# Vlada Macek <macek@sandbox.cz>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-11-18 11:33+0000\n"
-"Last-Translator: Vlada Macek <macek@sandbox.cz>\n"
-"Language-Team: Czech (http://www.transifex.com/projects/p/django/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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "afrikánsky"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "arabsky"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Ázerbájdžánština"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "bulharsky"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "bělorusky"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "bengálsky"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "bretonsky"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "bosensky"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "katalánsky"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "česky"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "velšsky"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "dánsky"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "německy"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "řecky"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "anglicky"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "britskou angličtinou"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "esperantsky"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "španělsky"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "argentinskou španělštinou"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Mexická španělština"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Nikaragujskou španělštinou"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "venezuelskou španělštinou"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "estonsky"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "baskicky"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "persky"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "finsky"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "francouzsky"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "frísky"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "irsky"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "galicijsky"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "hebrejsky"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "hindsky"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "chorvatsky"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "maďarsky"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "indonésky"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "islandsky"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "italsky"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "japonsky"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "gruzínsky"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "kazašsky"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "khmersky"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "kannadsky"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "korejsky"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "lucembursky"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "litevsky"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "lotyšsky"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "makedonsky"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "malajálamsky"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "mongolsky"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "barmštinou"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "norsky (Bokmål)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "nepálsky"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "nizozemsky"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "norsky (Nynorsk)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "osetštinou"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "paňdžábsky"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "polsky"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "portugalsky"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "brazilskou portugalštinou"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "rumunsky"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "rusky"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "slovensky"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "slovinsky"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "albánsky"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "srbsky"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "srbsky (latinkou)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "švédsky"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "svahilsky"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "tamilsky"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "telužsky"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "thajsky"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "turecky"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "tatarsky"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "udmurtsky"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ukrajinsky"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdština"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "vietnamsky"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "čínsky (zjednodušeně)"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "čínsky (tradičně)"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Vložte platnou hodnotu."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Vložte platnou adresu URL."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Vložte platné celé číslo."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Zadejte platnou e-mailovou adresu."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Vložte platný identifikátor složený pouze z písmen, čísel, podtržítek a "
-"pomlček."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Vložte platnou adresu typu IPv4."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Zadejte platnou adresu typu IPv6."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Zadejte platnou adresu typu IPv4 nebo IPv6."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Vložte pouze číslice oddělené čárkami."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Hodnota musí být %(limit_value)s (nyní je %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Hodnota musí být menší nebo rovna %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Hodnota musí být větší nebo rovna %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Tato hodnota má mít nejméně %(limit_value)d znak (nyní má %(show_value)d)."
-msgstr[1] ""
-"Tato hodnota má mít nejméně %(limit_value)d znaky (nyní má %(show_value)d)."
-msgstr[2] ""
-"Tato hodnota má mít nejméně %(limit_value)d znaků (nyní má %(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Tato hodnota má mít nejvýše %(limit_value)d znak (nyní má %(show_value)d)."
-msgstr[1] ""
-"Tato hodnota má mít nejvýše %(limit_value)d znaky (nyní má %(show_value)d)."
-msgstr[2] ""
-"Tato hodnota má mít nejvýše %(limit_value)d znaků (nyní má %(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"Pole %(field_name)s musí být unikátní testem %(lookup)s pole %(date_field)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "a"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr ""
-"Položka %(model_name)s s touto hodnotou v poli %(field_label)s již existuje."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "Hodnota %(value)r není platná možnost."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Pole nemůže být null."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Pole nemůže být prázdné."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Pole typu: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Celé číslo"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "Hodnota '%(value)s' musí být celé číslo."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "Hodnota '%(value)s' musí být buď True nebo False."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Pravdivost (buď Ano (True), nebo Ne (False))"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Řetězec (max. %(max_length)s znaků)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Celá čísla oddělená čárkou"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr "Hodnota '%(value)s' není platné datum. Musí být ve tvaru RRRR-MM-DD."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"Ačkoli hodnota '%(value)s' je ve správném tvaru (RRRR-MM-DD), jde o neplatné "
-"datum."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Datum (bez času)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"Hodnota '%(value)s' je v neplatném tvaru, který má být RRRR-MM-DD HH:MM[:SS[."
-"uuuuuu]][TZ]."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"Ačkoli hodnota '%(value)s' je ve správném tvaru (RRRR-MM-DD HH:MM[:SS[."
-"uuuuuu]][TZ]), jde o neplatné datum a čas."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Datum (s časem)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "Hodnota '%(value)s' musí být desítkové číslo."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Desetinné číslo"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-mailová adresa"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Cesta k souboru"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "Hodnota '%(value)s' musí být reálné číslo."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Číslo s pohyblivou řádovou čárkou"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Velké číslo (8 bajtů)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Adresa IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Adresa IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "Hodnota '%(value)s' musí být buď None, True nebo False."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Pravdivost (buď Ano (True), Ne (False) nebo Nic (None))"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Kladné celé číslo"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Kladné malé celé číslo"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Identifikátor (nejvýše %(max_length)s znaků)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Malé celé číslo"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Text"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"Hodnota '%(value)s' je v neplatném tvaru, který má být HH:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"Ačkoli hodnota '%(value)s' je ve správném tvaru (HH:MM[:ss[.uuuuuu]]), jde o "
-"neplatný čas."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Čas"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Přímá binární data"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Soubor"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Obrázek"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "Položka typu %(model)s s primárním klíčem %(pk)r neexistuje."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Cizí klíč (typ určen pomocí souvisejícího pole)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Vazba jedna-jedna"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Vazba mnoho-mnoho"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Toto pole je třeba vyplnit."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Vložte celé číslo."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Vložte číslo."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Ujistěte se, že pole neobsahuje celkem více než %(max)s číslici."
-msgstr[1] "Ujistěte se, že pole neobsahuje celkem více než %(max)s číslice."
-msgstr[2] "Ujistěte se, že pole neobsahuje celkem více než %(max)s číslic."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Ujistěte se, že pole neobsahuje více než %(max)s desetinné místo."
-msgstr[1] "Ujistěte se, že pole neobsahuje více než %(max)s desetinná místa."
-msgstr[2] "Ujistěte se, že pole neobsahuje více než %(max)s desetinných míst."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-"Ujistěte se, že hodnota neobsahuje více než %(max)s místo před desetinnou "
-"čárkou (tečkou)."
-msgstr[1] ""
-"Ujistěte se, že hodnota neobsahuje více než %(max)s místa před desetinnou "
-"čárkou (tečkou)."
-msgstr[2] ""
-"Ujistěte se, že hodnota neobsahuje více než %(max)s míst před desetinnou "
-"čárkou (tečkou)."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Vložte platné datum."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Vložte platný čas."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Vložte platné datum a čas."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"Soubor nebyl odeslán. Zkontrolujte parametr \"encoding type\" formuláře."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Žádný soubor nebyl odeslán."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Odeslaný soubor je prázdný."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Tento název souboru má mít nejvýše %(max)d znak (nyní má %(length)d)."
-msgstr[1] ""
-"Tento název souboru má mít nejvýše %(max)d znaky (nyní má %(length)d)."
-msgstr[2] ""
-"Tento název souboru má mít nejvýše %(max)d znaků (nyní má %(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Musíte vybrat cestu k souboru nebo vymazat výběr, ne obojí."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Nahrajte platný obrázek. Odeslaný soubor buď nebyl obrázek nebo byl poškozen."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Vyberte platnou možnost, \"%(value)s\" není k dispozici."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Vložte seznam hodnot."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Skryté pole %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "Data objektu ManagementForm chybí nebo byla pozměněna."
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Odešlete %d nebo méně formulářů."
-msgstr[1] "Odešlete %d nebo méně formulářů."
-msgstr[2] "Odešlete %d nebo méně formulářů."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Pořadí"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Odstranit"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Opravte duplicitní data v poli %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Opravte duplicitní data v poli %(field)s, které musí být unikátní."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Opravte duplicitní data v poli %(field_name)s, které musí být unikátní "
-"testem %(lookup)s pole %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Odstraňte duplicitní hodnoty níže."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Cizí klíč typu inline neodpovídá primárnímu klíči v rodičovské položce."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Vyberte platnou možnost. Tato není k dispozici."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "Hodnota \"%(pk)s\" není platný primární klíč."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Výběr více než jedné položky je možný přidržením klávesy \"Control\" (nebo "
-"\"Command\" na Macu)."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"Hodnotu %(datetime)s nelze interpretovat v časové zóně %(current_timezone)s; "
-"může to být nejednoznačné nebo nemusí existovat."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Aktuálně"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Změnit"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Zrušit"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Neznámé"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Ano"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Ne"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "ano, ne, možná"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bajt"
-msgstr[1] "%(size)d bajty"
-msgstr[2] "%(size)d bajtů"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "odp."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "dop."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "odp."
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "dop."
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "půlnoc"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "poledne"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "pondělí"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "úterý"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "středa"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "čtvrtek"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "pátek"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "sobota"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "neděle"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "po"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "út"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "st"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "čt"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "pá"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "so"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "ne"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "leden"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "únor"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "březen"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "duben"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "květen"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "červen"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "červenec"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "srpen"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "září"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "říjen"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "listopad"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "prosinec"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "led"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "úno"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "bře"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "dub"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "kvě"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "čen"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "čec"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "srp"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "zář"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "říj"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "lis"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "pro"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Led."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Úno."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Bře."
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Dub."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Kvě."
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Čer."
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Čec."
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Srp."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Zář."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Říj."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Lis."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Pro."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "ledna"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "února"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "března"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "dubna"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "května"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "června"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "července"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "srpna"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "září"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "října"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "listopadu"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "prosince"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Není možné importovat knihovny Pillow ani PIL: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "Modul '_imaging' pro PIL není možné importovat: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Toto není platná adresa typu IPv6."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "nebo"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d rok"
-msgstr[1] "%d roky"
-msgstr[2] "%d let"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d měsíc"
-msgstr[1] "%d měsíce"
-msgstr[2] "%d měsíců"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d týden"
-msgstr[1] "%d týdny"
-msgstr[2] "%d týdnů"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d den"
-msgstr[1] "%d dny"
-msgstr[2] "%d dní"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d hodina"
-msgstr[1] "%d hodiny"
-msgstr[2] "%d hodin"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minuta"
-msgstr[1] "%d minuty"
-msgstr[2] "%d minut"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minut"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Indexy adresářů zde nejsou povoleny."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" neexistuje"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Index adresáře %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Nebyl specifikován rok"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Nebyl specifikován měsíc"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Nebyl specifikován den"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Nebyl specifikován týden"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s nejsou k dispozici"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"%(verbose_name_plural)s s budoucím datem nejsou k dipozici protoze "
-"%(class_name)s.allow_future je False"
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Datum '%(datestr)s' neodpovídá formátu '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Nepodařilo se nalézt žádný objekt %(verbose_name)s"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Požadavek na stránku nemohl být konvertován na číslo, ani není 'last'"
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Neplatná stránka (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "List je prázdný a '%(class_name)s.allow_empty' je nastaveno na False"
diff --git a/lib/python2.7/site-packages/django/conf/locale/cs/formats.py b/lib/python2.7/site-packages/django/conf/locale/cs/formats.py
deleted file mode 100644
index 42ca212..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/cs/formats.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j. E Y'
-TIME_FORMAT = 'G:i:s'
-DATETIME_FORMAT = 'j. E Y G:i:s'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j. F'
-SHORT_DATE_FORMAT = 'd.m.Y'
-SHORT_DATETIME_FORMAT = 'd.m.Y G:i:s'
-FIRST_DAY_OF_WEEK = 1 # Monday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d.%m.%Y', '%d.%m.%y', # '05.01.2006', '05.01.06'
- '%d. %m. %Y', '%d. %m. %y', # '5. 1. 2006', '5. 1. 06'
- # '%d. %B %Y', '%d. %b. %Y', # '25. October 2006', '25. Oct. 2006'
-)
-# Kept ISO formats as one is in first position
-TIME_INPUT_FORMATS = (
- '%H:%M:%S', # '04:30:59'
- '%H.%M', # '04.30'
- '%H:%M', # '04:30'
-)
-DATETIME_INPUT_FORMATS = (
- '%d.%m.%Y %H:%M:%S', # '05.01.2006 04:30:59'
- '%d.%m.%Y %H:%M:%S.%f', # '05.01.2006 04:30:59.000200'
- '%d.%m.%Y %H.%M', # '05.01.2006 04.30'
- '%d.%m.%Y %H:%M', # '05.01.2006 04:30'
- '%d.%m.%Y', # '05.01.2006'
- '%d. %m. %Y %H:%M:%S', # '05. 01. 2006 04:30:59'
- '%d. %m. %Y %H:%M:%S.%f', # '05. 01. 2006 04:30:59.000200'
- '%d. %m. %Y %H.%M', # '05. 01. 2006 04.30'
- '%d. %m. %Y %H:%M', # '05. 01. 2006 04:30'
- '%d. %m. %Y', # '05. 01. 2006'
- '%Y-%m-%d %H.%M', # '2006-01-05 04.30'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '\xa0' # non-breaking space
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/cy/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/cy/LC_MESSAGES/django.mo
deleted file mode 100644
index c88d1ed..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/cy/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/cy/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/cy/LC_MESSAGES/django.po
deleted file mode 100644
index 4ebd5f8..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/cy/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1323 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Maredudd ap Gwyndaf <maredudd@maredudd.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/"
-"cy/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cy\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
-"11) ? 2 : 3;\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arabeg"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr ""
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bwlgareg"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengaleg"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosnieg"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Catalaneg"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Tsieceg"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Cymraeg"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Daneg"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Almaeneg"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Groegedd"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Saesneg"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Saesneg Prydain"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Sbaeneg"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Sbaeneg Ariannin"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr ""
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estoneg"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Basgeg"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persieg"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Ffinneg"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Ffrangeg"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Ffrisieg"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Gwyddeleg"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galisieg"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebraeg"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Croasieg"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Hwngareg"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indoneseg"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islandeg"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Eidaleg"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Siapanëeg"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgeg"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr ""
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr ""
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Corëeg"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr ""
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr ""
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr ""
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr ""
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr ""
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr ""
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Iseldireg"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr ""
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr ""
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Pwyleg"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portiwgaleg"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Portiwgaleg Brasil"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Romaneg"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Rwsieg"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slofaceg"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slofeneg"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr ""
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbeg"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr ""
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Swedeg"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Swahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr ""
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr ""
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Twrceg"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr ""
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr ""
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr ""
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Tsieinëeg Symledig"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Tseinëeg Traddodiadol"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Rhowch werth dilys."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Rhowch URL dilys."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr ""
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr ""
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr ""
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Rhowch digidau gwahanu gyda atalnodau yn unig."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "ac"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr ""
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr ""
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr ""
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr ""
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr ""
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Dyddiad (heb amser)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Dyddiad (gyda amser)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Rhif degol"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Llwybr ffeil"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr ""
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "cyfeiriad IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boole (Naill ai True, False neu None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Testun"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Amser"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr ""
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr ""
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr ""
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr ""
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr ""
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Mae angen y faes yma."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Rhowch rhif cyfan."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr ""
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr ""
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr ""
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr ""
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr ""
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Mae'r ffeil yn wag."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Llwythwch delwedd dilys. Doedd y delwedd a llwythwyd dim yn ddelwedd dilys, "
-"neu roedd o'n ddelwedd llwgr."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr ""
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr ""
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Dileu"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr ""
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr ""
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr ""
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Newidio"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr ""
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr ""
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Ie"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Na"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "ie,na,efallai"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr ""
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr ""
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr ""
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr ""
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr ""
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr ""
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Dydd Llun"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Dydd Mawrth"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Dydd Mercher"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Dydd Iau"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Dydd Gwener"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Dydd Sadwrn"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Dydd Sul"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Llu"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Maw"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Mer"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Iau"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Gwe"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sad"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Sul"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Ionawr"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Chwefror"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Mawrth"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Ebrill"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Mai"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Mehefin"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Gorffenaf"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Awst"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Medi"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Hydref"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Tachwedd"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Rhagfyr"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ion"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "chw"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "maw"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "ebr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "meh"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "gor"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aws"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "med"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "hyd"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "tach"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "rhag"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr ""
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr ""
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Mawrth"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Ebrill"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Mai"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Mehefin"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Gorffenaf"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr ""
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr ""
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr ""
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr ""
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr ""
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Ionawr"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Chwefror"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Mawrth"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Ebrill"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Mai"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Mehefin"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Gorffenaf"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Awst"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Medi"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Hydref"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Tachwedd"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Rhagfyr"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr "neu"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ""
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr ""
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr ""
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr ""
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr ""
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr ""
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr ""
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/conf/locale/cy/formats.py b/lib/python2.7/site-packages/django/conf/locale/cy/formats.py
deleted file mode 100644
index ba4b275..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/cy/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'd F Y'
-TIME_FORMAT = 'g:i:s A'
-# DATETIME_FORMAT =
-# YEAR_MONTH_FORMAT =
-# MONTH_DAY_FORMAT =
-SHORT_DATE_FORMAT = 'j M Y'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-# DECIMAL_SEPARATOR =
-# THOUSAND_SEPARATOR =
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/da/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/da/LC_MESSAGES/django.mo
deleted file mode 100644
index edb2903..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/da/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/da/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/da/LC_MESSAGES/django.po
deleted file mode 100644
index bc2d7d9..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/da/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1330 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Christian Joergensen <christian@gmta.info>, 2012
-# Erik Wognsen <r4mses@gmail.com>, 2013
-# Finn Gruwier, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jonaskoelker <jonaskoelker@gnu.org>, 2012
-# mchro <mads@mchro.dk>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-10-28 18:30+0000\n"
-"Last-Translator: Erik Wognsen <r4mses@gmail.com>\n"
-"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/"
-"da/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: da\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "afrikaans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "arabisk"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "azerbaidjansk"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "bulgarsk"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "hviderussisk"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "bengalsk"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "bretonsk"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "bosnisk"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "catalansk"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "tjekkisk"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "walisisk"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "dansk"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "tysk"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "græsk"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "engelsk"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "britisk engelsk"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "spansk"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "argentinsk spansk"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "mexikansk spansk"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "nicaraguansk spansk"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "venezuelansk spansk"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "estisk"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "baskisk"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "persisk"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "finsk"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "fransk"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "frisisk"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "irsk"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "galicisk"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "hebraisk"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "kroatisk"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "ungarsk"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "indonesisk"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "islandsk"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "italiensk"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "japansk"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "georgisk"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "kasakhisk"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "koreansk"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "luxembourgisk"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "litauisk"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "lettisk"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "makedonsk"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "malaysisk"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "mongolsk"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "burmesisk"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "norsk bokmål"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "nepalesisk"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "hollandsk"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "norsk nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "ossetisk"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "punjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "polsk"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "portugisisk"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "brasiliansk portugisisk"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "rumænsk"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "russisk"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "slovakisk"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "slovensk"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "albansk"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "serbisk"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "serbisk (latin)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "svensk"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "swahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "tamil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "thai"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "tyrkisk"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "tatarisk"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "udmurtisk"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ukrainsk"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "vietnamesisk"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "forenklet kinesisk"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "traditionelt kinesisk"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Indtast en gyldig værdi."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Indtast en gyldig URL."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Indtast et gyldigt heltal."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Indtast en gyldig e-mail-adresse."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Indtast en \"slug\" bestående af bogstaver, cifre, understreger og "
-"bindestreger."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Indtast en gyldig IPv4-adresse."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Indtast en gyldig IPv6-adresse."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Indtast en gyldig IPv4- eller IPv6-adresse."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Indtast kun cifre adskilt af kommaer."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Denne værdi skal være %(limit_value)s (den er %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Denne værdi skal være mindre end eller lig %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Denne værdi skal være større end eller lig %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Denne værdi skal have mindst %(limit_value)d tegn (den har %(show_value)d)."
-msgstr[1] ""
-"Denne værdi skal have mindst %(limit_value)d tegn (den har %(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Denne værdi må højst have %(limit_value)d tegn (den har %(show_value)d)."
-msgstr[1] ""
-"Denne værdi må højst have %(limit_value)d tegn (den har %(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s skal være unik for %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "og"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s med dette %(field_label)s eksisterer allerede."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "Værdien %(value)r er ikke et gyldigt valg."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Dette felt kan ikke være null."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Dette felt kan ikke være tomt."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Felt af type: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Heltal"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "'%(value)s' værdien skal være et heltal."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "'%(value)s' værdien skal være enten True eller False."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolsk (enten True eller False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Streng (op til %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Kommaseparerede heltal"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"'%(value)s' værdien har et ugyldigt datoformat. Den skal være i formatet "
-"ÅÅÅÅ-MM-DD."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"'%(value)s' værdien har det korrekte format (ÅÅÅÅ-MM-DD) men er en ugyldig "
-"dato."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Dato (uden tid)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"'%(value)s' værdien har et ugyldigt format. Den skal være i formatet ÅÅÅÅ-MM-"
-"DD TT:MM[:ss[.uuuuuu]][TZ]."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"'%(value)s' værdien har det korrekte format (ÅÅÅÅ-MM-DD TT:MM[:ss[.uuuuuu]]"
-"[TZ]) men er en ugyldig dato/tid."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Dato (med tid)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "'%(value)s' værdien skal være et decimaltal."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Decimaltal"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-mail-adresse"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Sti"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "'%(value)s' værdien skal være en float."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Flydende-komma-tal"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Stort heltal (8 byte)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4-adresse"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP-adresse"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "'%(value)s' værdien skal være enten None, True eller False."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolsk (True, False eller None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Positivt heltal"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Positivt lille heltal"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "\"Slug\" (op til %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Lille heltal"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Tekst"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"'%(value)s' værdien har et ugyldigt format. Den skal være i formatet TT:MM[:"
-"ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"'%(value)s' værdien har det korrekte format (TT:MM[:ss[.uuuuuu]]) men er et "
-"ugyldigt tidspunkt."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Tid"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Rå binære data"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Fil"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Billede"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "%(model)s instansen med primærnøgle %(pk)r findes ikke."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Fremmednøgle (type bestemt af relateret felt)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "En-til-en-relation"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Mange-til-mange-relation"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Dette felt er påkrævet."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Indtast et heltal."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Indtast et tal."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Der må maksimalt være %(max)s ciffer i alt."
-msgstr[1] "Der må maksimalt være %(max)s cifre i alt."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Der må maksimalt være %(max)s decimal."
-msgstr[1] "Der må maksimalt være %(max)s decimaler."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] "Der må maksimalt være %(max)s ciffer før kommaet."
-msgstr[1] "Der må maksimalt være %(max)s cifre før kommaet."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Indtast en gyldig dato."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Indtast en gyldig tid."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Indtast gyldig dato/tid."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Ingen fil blev indsendt. Kontroller kodningstypen i formularen."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Ingen fil blev indsendt."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Den indsendte fil er tom."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] "Dette filnavn må højst have %(max)d tegn (det har %(length)d)."
-msgstr[1] "Dette filnavn må højst have %(max)d tegn (det har %(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Du skal enten indsende en fil eller afmarkere afkrydsningsfeltet, ikke begge "
-"dele."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Indsend en billedfil. Filen, du indsendte, var enten ikke et billede eller "
-"en defekt billedfil."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Marker en gyldig valgmulighed. %(value)s er ikke en af de tilgængelige "
-"valgmuligheder."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Indtast en liste af værdier."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Skjult felt %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "ManagementForm-data mangler eller er blevet manipuleret"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Send venligst %d eller færre formularer."
-msgstr[1] "Send venligst %d eller færre formularer."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Rækkefølge"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Slet"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Ret venligst duplikerede data for %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Ret venligst de duplikerede data for %(field)s, som skal være unik."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Ret venligst de duplikerede data for %(field_name)s, som skal være unik for "
-"%(lookup)s i %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Ret venligst de duplikerede data herunder."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Den indlejrede fremmednøgle passede ikke med forælderinstansens primærnøgle."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Marker en gyldig valgmulighed. Det valg, du har foretaget, er ikke blandt de "
-"tilgængelige valgmuligheder."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" er ikke en gyldig værdi for en primærnøgle."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Hold \"Ctrl\" (eller \"Æbletasten\" på Mac) nede for at vælge mere end en."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s kunne ikke fortolkes i tidszonen %(current_timezone)s; den kan "
-"være tvetydig eller den eksisterer måske ikke."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Aktuelt"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Ret"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Afmarkér"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Ukendt"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Ja"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Nej"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "ja,nej,måske"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "midnat"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "middag"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "mandag"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "tirsdag"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "onsdag"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "torsdag"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "fredag"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "lørdag"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "søndag"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "man"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "tir"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "ons"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "tor"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "fre"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "lør"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "søn"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "januar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "februar"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "marts"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "maj"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "juni"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "juli"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "august"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "oktober"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "december"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "maj"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sept"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "marts"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "maj"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "juni"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "juli"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "aug."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "sept."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "okt."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "dec."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "januar"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "februar"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "marts"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "maj"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "juni"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "juli"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "august"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "oktober"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "december"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Hverken Pillow eller PIL kunne importeres: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "PIL-modulet '_imaging' kunne ikke importeres: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Dette er ikke en gyldig IPv6-adresse."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "eller"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d år"
-msgstr[1] "%d år"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d måned"
-msgstr[1] "%d måneder"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d uge"
-msgstr[1] "%d uger"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d dag"
-msgstr[1] "%d dage"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d time"
-msgstr[1] "%d timer"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minut"
-msgstr[1] "%d minutter"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minutter"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Mappeindekser er ikke tilladte her"
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\" %(path)s\" eksisterer ikke"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Indeks for %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Intet år specificeret"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Ingen måned specificeret"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Ingen dag specificeret"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Ingen uge specificeret"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Ingen %(verbose_name_plural)s til rådighed"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Fremtidige %(verbose_name_plural)s ikke tilgængelige, fordi %(class_name)s ."
-"allow_future er falsk."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Ugyldig datostreng ' %(datestr)s ' givet format ' %(format)s '"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Ingen %(verbose_name)s fundet matcher forespørgslen"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Side er ikke 'sidste', kan heller ikke konverteres til en int."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Ugyldig side (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Tom liste og ' %(class_name)s .allow_empty' er falsk."
diff --git a/lib/python2.7/site-packages/django/conf/locale/da/formats.py b/lib/python2.7/site-packages/django/conf/locale/da/formats.py
deleted file mode 100644
index dcdf351..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/da/formats.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j. F Y'
-TIME_FORMAT = 'H:i'
-DATETIME_FORMAT = 'j. F Y H:i'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j. F'
-SHORT_DATE_FORMAT = 'd.m.Y'
-SHORT_DATETIME_FORMAT = 'd.m.Y H:i'
-FIRST_DAY_OF_WEEK = 1
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d.%m.%Y', # '25.10.2006'
-)
-DATETIME_INPUT_FORMATS = (
- '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
- '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
- '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/de/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/de/LC_MESSAGES/django.mo
deleted file mode 100644
index 1c9bcc5..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/de/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/de/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/de/LC_MESSAGES/django.po
deleted file mode 100644
index c25e624..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/de/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1349 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Hagenbruch <ahagenbruch@googlemail.com>, 2011-2012
-# apollo13 <florian@apolloner.eu>, 2011
-# Jannis , 2011,2013
-# Jannis Leidel <jannis@leidel.info>, 2013
-# Markus Holtermann <inyoka@markusholtermann.eu>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-10-23 08:22+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/django/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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikaans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arabisch"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Aserbaidschanisch"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgarisch"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Weißrussisch"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengali"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretonisch"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosnisch"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Katalanisch"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Tschechisch"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Walisisch"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Dänisch"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Deutsch"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Griechisch"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Englisch"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Britisches Englisch"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Spanisch"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Argentinisches Spanisch"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Mexikanisches Spanisch"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Nicaraguanisches Spanisch"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Venezolanisches Spanisch"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estnisch"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Baskisch"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persisch"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finnisch"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Französisch"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Friesisch"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irisch"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galicisch"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebräisch"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Kroatisch"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Ungarisch"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonesisch"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Isländisch"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italienisch"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japanisch"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgisch"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kasachisch"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Koreanisch"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Luxemburgisch"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Litauisch"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Lettisch"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Mazedonisch"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongolisch"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Birmanisch"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norwegisch (Bokmål)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepali"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Holländisch"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norwegisch (Nynorsk)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Ossetisch"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Panjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Polnisch"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugiesisch"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Brasilianisches Portugiesisch"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Rumänisch"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Russisch"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slowakisch"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slowenisch"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albanisch"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbisch"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serbisch (Latein)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Schwedisch"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Swahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamilisch"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugisch"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Thailändisch"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Türkisch"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatarisch"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurtisch"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukrainisch"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnamesisch"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Vereinfachtes Chinesisch"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Traditionelles Chinesisch"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Bitte einen gültigen Wert eingeben."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Bitte eine gültige Adresse eingeben."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Bitte eine gültige Ganzzahl eingeben."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Bitte gültige E-Mail-Adresse eingeben."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Bitte ein gültiges Kürzel, bestehend aus Buchstaben, Ziffern, Unter- und "
-"Bindestrichen, eingeben."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Bitte eine gültige IPv4-Adresse eingeben."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Eine gültige IPv6-Adresse eingeben."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Eine gültige IPv4- oder IPv6-Adresse eingeben"
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Bitte nur durch Komma getrennte Ziffern eingeben."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Bitte sicherstellen, dass der Wert %(limit_value)s ist. (Er ist "
-"%(show_value)s)"
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Dieser Wert muss kleiner oder gleich %(limit_value)s sein."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Dieser Wert muss größer oder gleich %(limit_value)s sein."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Bitte sicherstellen, dass der Wert aus mindestens %(limit_value)d Zeichen "
-"besteht. (Er besteht aus %(show_value)d Zeichen)."
-msgstr[1] ""
-"Bitte sicherstellen, dass der Wert aus mindestens %(limit_value)d Zeichen "
-"besteht. (Er besteht aus %(show_value)d Zeichen)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Bitte sicherstellen, dass der Wert aus höchstens %(limit_value)d Zeichen "
-"besteht. (Er besteht aus %(show_value)d Zeichen)."
-msgstr[1] ""
-"Bitte sicherstellen, dass der Wert aus höchstens %(limit_value)d Zeichen "
-"besteht. (Er besteht aus %(show_value)d Zeichen)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s muss für %(date_field)s %(lookup)s eindeutig sein."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "und"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s mit diesem %(field_label)s existiert bereits."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "Der Wert %(value)r ist keine gültige Auswahl."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Dieses Feld darf nicht null sein."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Dieses Feld darf nicht leer sein."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Feldtyp: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Ganzzahl"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "'%(value)s' Wert muss eine Ganzzahl sein."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "'%(value)s' Wert muss entweder True oder False sein."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolescher Wert (True oder False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Zeichenkette (bis zu %(max_length)s Zeichen)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Kommaseparierte Liste von Ganzzahlen"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"'%(value)s' Wert hat ein ungültiges Datumsformat. Es muss der Form YYYY-MM-"
-"DD entsprechen."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"'%(value)s' hat das korrekte Format (YYYY-MM-DD), aber ein ungültiges Datum."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Datum (ohne Uhrzeit)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"'%(value)s' Wert hat ein ungültiges Format. Es muss der Form YYYY-MM-DD HH:MM"
-"[:ss[.uuuuuu]][TZ] entsprechen."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"'%(value)s' Wert hat das korrekte Format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]), aber eine ungültige Datum-/Zeitsangabe."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Datum (mit Uhrzeit)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "'%(value)s' Wert muss eine Dezimalzahl sein."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Dezimalzahl"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-Mail-Adresse"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Dateipfad"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "'%(value)s' Wert muss eine Gleitkommazahl sein."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Gleitkommazahl"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Große Ganzzahl (8 Byte)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4-Adresse"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP-Adresse"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "'%(value)s' Wert muss entweder None, True oder False sein."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolescher Wert (True, False oder None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Positive Ganzzahl"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Positive kleine Ganzzahl"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Kürzel (bis zu %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Kleine Ganzzahl"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Text"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"'%(value)s' Wert hat ein ungültiges Format. Es muss HH:MM[:ss[.uuuuuu]] "
-"entsprechen."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"'%(value)s' Wert hat das korrekte Format (HH:MM[:ss[.uuuuuu]]), aber ist "
-"eine ungültige Zeitangabe."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Zeit"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "Adresse (URL)"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Binärdaten"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Datei"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Bild"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "Objekt vom Typ %(model)s mit Primärschlüssel %(pk)r existiert nicht."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Fremdschlüssel (Typ definiert durch verknüpftes Feld)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "1:1-Beziehung"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "n:m-Beziehung"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Dieses Feld ist zwingend erforderlich."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Bitte eine ganze Zahl eingeben."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Bitte eine Zahl eingeben."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-"Bitte sicherstellen, dass der Wert höchstens %(max)s Ziffer enthält."
-msgstr[1] ""
-"Bitte sicherstellen, dass der Wert höchstens %(max)s Ziffern enthält."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-"Bitte sicherstellen, dass der Wert höchstens %(max)s Dezimalstelle enthält."
-msgstr[1] ""
-"Bitte sicherstellen, dass der Wert höchstens %(max)s Dezimalstellen enthält."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-"Bitte sicherstellen, dass der Wert höchstens %(max)s Ziffer vor dem Komma "
-"enthält."
-msgstr[1] ""
-"Bitte sicherstellen, dass der Wert höchstens %(max)s Ziffern vor dem Komma "
-"enthält."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Bitte ein gültiges Datum eingeben."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Bitte eine gültige Uhrzeit eingeben."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Bitte ein gültiges Datum und Uhrzeit eingeben."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"Es wurde keine Datei übertragen. Überprüfen Sie das Encoding des Formulars."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Es wurde keine Datei übertragen."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Die übertragene Datei ist leer."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Bitte sicherstellen, dass der Dateiname aus höchstens %(max)d Zeichen "
-"besteht. (Er besteht aus %(length)d Zeichen)."
-msgstr[1] ""
-"Bitte sicherstellen, dass der Dateiname aus höchstens %(max)d Zeichen "
-"besteht. (Er besteht aus %(length)d Zeichen)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Bitte wählen Sie entweder eine Datei aus oder wählen Sie \"Löschen\", nicht "
-"beides."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Bitte ein gültiges Bild hochladen. Die hochgeladene Datei ist kein Bild oder "
-"ist defekt."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Bitte eine gültige Auswahl treffen. %(value)s ist keine gültige Auswahl."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Bitte eine Liste mit Werten eingeben."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Verstecktes Feld %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "ManagementForm-Daten fehlen oder wurden manipuliert."
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Bitte höchstens %d Formular abschicken."
-msgstr[1] "Bitte höchstens %d Formulare abschicken."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Reihenfolge"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Löschen"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Bitte die doppelten Daten für %(field)s korrigieren."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Bitte die doppelten Daten für %(field)s korrigieren, das eindeutig sein muss."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Bitte die doppelten Daten für %(field_name)s korrigieren, da es für "
-"%(lookup)s in %(date_field)s eindeutig sein muss."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Bitte die unten aufgeführten doppelten Werte korrigieren."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Der Inline-Fremdschlüssel passt nicht zum Primärschlüssel der übergeordneten "
-"Instanz."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Bitte eine gültige Auswahl treffen. Dies ist keine gültige Auswahl."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" ist kein gültiger Wert für einen Primärschlüssel."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Strg-Taste (⌘ für Mac) während des Klickens gedrückt halten, um mehrere "
-"Einträge auszuwählen."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s konnte mit der Zeitzone %(current_timezone)s nicht eindeutig "
-"interpretiert werden, da es doppeldeutig oder eventuell inkorrekt ist."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Derzeit"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Ändern"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Zurücksetzen"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Unbekannt"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Ja"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Nein"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "Ja,Nein,Vielleicht"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d Byte"
-msgstr[1] "%(size)d Bytes"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "nachm."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "vorm."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "nachm."
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "vorm."
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "Mitternacht"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "Mittag"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Montag"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Dienstag"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Mittwoch"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Donnerstag"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Freitag"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Samstag"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Sonntag"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Mo"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Di"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Mi"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Do"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Fr"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sa"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "So"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Januar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Februar"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "März"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Mai"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Juli"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "August"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Oktober"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "November"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Dezember"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "Jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "Feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "Mär"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "Apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "Mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "Jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "Jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "Aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "Sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "Okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "Nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "Dez"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "März"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Mai"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Juli"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Aug."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Okt."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Dez."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Januar"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Februar"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "März"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Mai"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Juli"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "August"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Oktober"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "November"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Dezember"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Weder Pillow noch PIL konnten importiert werden: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "Das '_imaging' Modul von PIL konnte nicht importiert werden: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Dies ist keine gültige IPv6-Adresse."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "oder"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d Jahr"
-msgstr[1] "%d Jahre"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d Monat"
-msgstr[1] "%d Monate"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d Woche"
-msgstr[1] "%d Wochen"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d Tag"
-msgstr[1] "%d Tage"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d Stunde"
-msgstr[1] "%d Stunden"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d Minute"
-msgstr[1] "%d Minuten"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 Minuten"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Dateilisten sind untersagt."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" ist nicht vorhanden"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Verzeichnis %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Kein Jahr angegeben"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Kein Monat angegeben"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Kein Tag angegeben"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Keine Woche angegeben"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Keine %(verbose_name_plural)s verfügbar"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"In der Zukunft liegende %(verbose_name_plural)s sind nicht verfügbar, da "
-"%(class_name)s.allow_future auf False gesetzt ist."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Ungültiges Datum '%(datestr)s' für das Format '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Konnte keine %(verbose_name)s mit diesen Parametern finden."
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"Weder ist dies die letzte Seite ('last') noch konnte sie in einen "
-"ganzzahligen Wert umgewandelt werden."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Ungültige Seite (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Leere Liste und '%(class_name)s.allow_empty' ist False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/de/formats.py b/lib/python2.7/site-packages/django/conf/locale/de/formats.py
deleted file mode 100644
index b3731a3..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/de/formats.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j. F Y'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = 'j. F Y H:i:s'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j. F'
-SHORT_DATE_FORMAT = 'd.m.Y'
-SHORT_DATETIME_FORMAT = 'd.m.Y H:i:s'
-FIRST_DAY_OF_WEEK = 1 # Monday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06'
- # '%d. %B %Y', '%d. %b. %Y', # '25. October 2006', '25. Oct. 2006'
-)
-DATETIME_INPUT_FORMATS = (
- '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
- '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
- '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
- '%d.%m.%Y', # '25.10.2006'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/de_CH/__init__.py b/lib/python2.7/site-packages/django/conf/locale/de_CH/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/de_CH/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/de_CH/formats.py b/lib/python2.7/site-packages/django/conf/locale/de_CH/formats.py
deleted file mode 100644
index bf8a5ce..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/de_CH/formats.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-from __future__ import unicode_literals
-
-DATE_FORMAT = 'j. F Y'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = 'j. F Y H:i:s'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j. F'
-SHORT_DATE_FORMAT = 'd.m.Y'
-SHORT_DATETIME_FORMAT = 'd.m.Y H:i:s'
-FIRST_DAY_OF_WEEK = 1 # Monday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06'
- # '%d. %B %Y', '%d. %b. %Y', # '25. October 2006', '25. Oct. 2006'
-)
-DATETIME_INPUT_FORMATS = (
- '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
- '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
- '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
- '%d.%m.%Y', # '25.10.2006'
-)
-
-# these are the separators for non-monetary numbers. For monetary numbers,
-# the DECIMAL_SEPARATOR is a . (decimal point) and the THOUSAND_SEPARATOR is a
-# ' (single quote).
-# For details, please refer to http://www.bk.admin.ch/dokumentation/sprachen/04915/05016/index.html?lang=de
-# (in German) and the documentation
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '\xa0' # non-breaking space
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/el/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/el/LC_MESSAGES/django.mo
deleted file mode 100644
index a554c54..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/el/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/el/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/el/LC_MESSAGES/django.po
deleted file mode 100644
index 259ce63..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/el/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1324 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Apostolos Mpessas <mpessas+txc@transifex.com>, 2013
-# Dimitris Glezos <glezos@transifex.com>, 2011,2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Yorgos Pagles <y.pagles@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/"
-"el/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: el\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Αραβικά"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Γλώσσα Αζερμπαϊτζάν"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Βουλγαρικά"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Μπενγκάλι"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Βοσνιακά"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Καταλανικά"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Τσέχικα"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Ουαλικά"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Δανέζικα"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Γερμανικά"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Ελληνικά"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Αγγλικά"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Αγγλικά Βρετανίας"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Εσπεράντο"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Ισπανικά"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Ισπανικά Αργεντινής"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Μεξικανική διάλεκτος Ισπανικών"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Ισπανικά Νικαράγουας "
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Εσθονικά"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Βάσκικα"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Περσικά"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Φινλανδικά"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Γαλλικά"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frisian"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Ιρλανδικά"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Γαελικά"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Εβραϊκά"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Ινδικά"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Κροατικά"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Ουγγρικά"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Ινδονησιακά"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Ισλανδικά"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Ιταλικά"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Γιαπωνέζικα"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Γεωργιανά"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Καζακστά"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Χμερ"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Κανάντα"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Κορεάτικα"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Λιθουανικά"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Λεττονικά"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Μακεδονικά"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Μαλαγιαλάμ"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Μογγολικά"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Νορβηγική διάλεκτος Μποκμάλ - \"γλώσσα των βιβλίων\""
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Ολλανδικά"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Νορβηγική διάλεκτος Nynorsk - Νεονορβηγική"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Πουντζάμπι"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Πολωνικά"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Πορτογαλικά"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Πορτογαλικά - διάλεκτος Βραζιλίας"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Ρουμανικά"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Ρωσικά"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Σλοβακικά"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Σλοβενικά"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Αλβανικά"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Σερβικά"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Σέρβικα Λατινικά"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Σουηδικά"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Διάλεκτος Ταμίλ"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Τελούγκου"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Ταϊλάνδης"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Τουρκικά"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ουκρανικά"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Βιετναμέζικα"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Απλοποιημένα Κινέζικα"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Παραδοσιακά Κινέζικα"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Εισάγετε μια έγκυρη τιμή."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Εισάγετε ένα έγκυρο URL."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Εισάγετε μια έγκυρη διεύθυνση ηλ. ταχυδρομείου."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Ένα έγκυρο 'slug' αποτελείται από γράμματα, αριθμούς, παύλες ή κάτω παύλες."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Εισάγετε μια έγκυρη διεύθυνση IPv4."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Εισάγετε μία έγκυρη IPv6 διεύθυνση"
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Εισάγετε μία έγκυρη IPv4 ή IPv6 διεύθυνση"
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Εισάγετε μόνο ψηφία χωρισμένα με κόμματα."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Βεβαιωθείτε ότι η τιμή είναι %(limit_value)s (η τιμή που καταχωρήσατε είναι "
-"%(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Βεβαιωθείτε ότι η τιμή είναι μικρότερη ή ίση από %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Βεβαιωθείτε ότι η τιμή είναι μεγαλύτερη ή ίση από %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-" %(field_name)s πρέπει να είναι μοναδικό για %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "και"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s με αυτό το %(field_label)s υπάρχει ήδη."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Αυτό το πεδίο δεν μπορεί να είναι κενό (null)."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Το πεδίο αυτό δεν μπορεί να είναι κενό."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Είδος πεδίου: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Ακέραιος"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (Είτε Αληθές ή Ψευδές)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Συμβολοσειρά (μέχρι %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Ακέραιοι χωρισμένοι με κόμματα"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Ημερομηνία (χωρίς την ώρα)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Ημερομηνία (με την ώρα)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Δεκαδικός αριθμός"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Ηλεκτρονική διεύθυνση"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Τοποθεσία αρχείου"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Αριθμός κινητής υποδιαστολής"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Μεγάλος ακέραιος - big integer (8 bytes)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Διεύθυνση IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "διεύθυνση IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (Αληθές, Ψευδές, ή τίποτα)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Θετικός ακέραιος"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Θετικός μικρός ακέραιος"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Μικρός ακέραιος"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Κείμενο"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Ώρα"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Αρχείο"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Εικόνα"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr ""
-"Εξωτερικό Κλειδί - Foreign Key (ο τύπος καθορίζεται από το πεδίο του "
-"συσχετισμού)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Σχέση ένα-προς-ένα"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Σχέση πολλά-προς-πολλά"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Αυτό το πεδίο είναι απαραίτητο."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Εισάγετε έναν ακέραιο αριθμό."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Εισάγετε έναν αριθμό."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Εισάγετε μια έγκυρη ημερομηνία."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Εισάγετε μια έγκυρη ώρα."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Εισάγετε μια έγκυρη ημερομηνία/ώρα."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"Δεν έχει υποβληθεί κάποιο αρχείο. Ελέγξτε τον τύπο κωδικοποίησης στη φόρμα."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Δεν έχει υποβληθεί κάποιο αρχείο."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Το αρχείο που υποβλήθηκε είναι κενό."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Βεβαιωθείτε ότι είτε έχετε επιλέξει ένα αρχείο για αποστολή είτε έχετε "
-"επιλέξει την εκκαθάριση του πεδίου. Δεν είναι δυνατή η επιλογή και των δύο "
-"ταυτοχρόνως."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Βεβεαιωθείτε ότι το αρχείο που έχετε επιλέξει για αποστολή είναι αρχείο "
-"εικόνας. Το τρέχον είτε δεν ήταν εικόνα είτε έχει υποστεί φθορά."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Βεβαιωθείτε ότι έχετε επιλέξει μία έγκυρη επιλογή. Η τιμή %(value)s δεν "
-"είναι διαθέσιμη προς επιλογή."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Εισάγετε μια λίστα τιμών."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Ταξινόμηση"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Διαγραφή"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Στο %(field)s έχετε ξαναεισάγει τα ίδια δεδομένα."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Στο %(field)s έχετε ξαναεισάγει τα ίδια δεδομένα. Θα πρέπει να εμφανίζονται "
-"μία φορά. "
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Στο %(field_name)s έχετε ξαναεισάγει τα ίδια δεδομένα. Θα πρέπει να "
-"εμφανίζονται μία φορά για το %(lookup)s στο %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Έχετε ξαναεισάγει την ίδια τιμη. Βεβαιωθείτε ότι είναι μοναδική."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Το ενσωματωμένο εξωτερικό κλειδί δεν αντιστοιχεί με το κλειδί του "
-"αντικειμένου από το οποίο πηγάζει."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Επιλέξτε μια έγκυρη επιλογή. Η επιλογή αυτή δεν είναι μία από τις διαθέσιμες "
-"επιλογές."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Κρατήστε πατημένο το πλήκτρο \"Control\" ή σε Mac το πλήκτρο \"Command\" για "
-"να επιλέξετε περισσότερα από ένα."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Τώρα"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Επεξεργασία"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Εκκαθάσριση"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Άγνωστο"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Ναι"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Όχι"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "ναι,όχι,ίσως"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bytes"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "μμ."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "πμ."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "ΜΜ"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "ΠΜ"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "μεσάνυχτα"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "μεσημέρι"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Δευτέρα"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Τρίτη"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Τετάρτη"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Πέμπτη"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Παρασκευή"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Σάββατο"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Κυριακή"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Δευ"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Τρί"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Τετ"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Πέμ"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Παρ"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Σαβ"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Κυρ"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Ιανουάριος"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Φεβρουάριος"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Μάρτιος"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Απρίλιος"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Μάιος"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Ιούνιος"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Ιούλιος"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Αύγουστος"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Σεπτέμβριος"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Οκτώβριος"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Νοέμβριος"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Δεκέμβριος"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "Ιαν"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "Φεβ"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "Μάρ"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "Απρ"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "Μάι"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "Ιούν"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "Ιούλ"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "Αύγ"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "Σεπ"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "Οκτ"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "Νοέ"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "Δεκ"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Ιαν."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Φεβ."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Μάρτιος"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Απρίλ."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Μάιος"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Ιούν."
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Ιούλ."
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Αύγ."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Σεπτ."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Οκτ."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Νοέμ."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Δεκ."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Ιανουαρίου"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Φεβρουαρίου"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Μαρτίου"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Απριλίου"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Μαΐου"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Ιουνίου"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Ιουλίου"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Αυγούστου"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Σεπτεμβρίου"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Οκτωβρίου"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Νοεμβρίου"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Δεκεμβρίου"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "ή"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Δεν έχει οριστεί χρονιά"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Δεν έχει οριστεί μήνας"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Δεν έχει οριστεί μέρα"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Δεν έχει οριστεί εβδομάδα"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Δεν υπάρχουν διαθέσιμα %(verbose_name_plural)s"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Μελλοντικά %(verbose_name_plural)s δεν είναι διαθέσιμα διότι δεν έχει τεθεί "
-"το %(class_name)s.allow_future."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-"Λανθασμένη αναπαράσταση ημερομηνίας '%(datestr)s' για την επιλεγμένη μορφή "
-"'%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Δεν βρέθηκαν %(verbose_name)s που να ικανοποιούν την αναζήτηση."
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"Η σελίδα δεν έχει την τιμή 'last' υποδηλώνοντας την τελευταία σελίδα, ούτε "
-"μπορεί να μετατραπεί σε ακέραιο."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Άκυρη σελίδα (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Άδεια λίστα ενώ '%(class_name)s.allow_empty' δεν έχει τεθεί."
diff --git a/lib/python2.7/site-packages/django/conf/locale/el/__init__.py b/lib/python2.7/site-packages/django/conf/locale/el/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/el/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/el/formats.py b/lib/python2.7/site-packages/django/conf/locale/el/formats.py
deleted file mode 100644
index a44b909..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/el/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'd E Y'
-TIME_FORMAT = 'g:i:s A'
-# DATETIME_FORMAT =
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'd M Y'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/en/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/en/LC_MESSAGES/django.mo
deleted file mode 100644
index 9a83ba2..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/en/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/en/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/en/LC_MESSAGES/django.po
deleted file mode 100644
index de23c8d..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/en/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1286 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2010-05-13 15:35+0200\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr ""
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr ""
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr ""
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr ""
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr ""
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr ""
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr ""
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr ""
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr ""
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr ""
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr ""
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr ""
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr ""
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr ""
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr ""
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr ""
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr ""
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr ""
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr ""
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr ""
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr ""
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr ""
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr ""
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr ""
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr ""
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr ""
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr ""
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr ""
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr ""
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr ""
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr ""
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr ""
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr ""
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr ""
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr ""
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr ""
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr ""
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr ""
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr ""
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr ""
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr ""
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr ""
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr ""
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr ""
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr ""
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr ""
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr ""
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr ""
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr ""
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr ""
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr ""
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr ""
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr ""
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr ""
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr ""
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr ""
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr ""
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr ""
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr ""
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr ""
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr ""
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr ""
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr ""
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr ""
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr ""
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr ""
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr ""
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr ""
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr ""
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr ""
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr ""
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr ""
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr ""
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr ""
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr ""
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr ""
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr ""
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr ""
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr ""
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr ""
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr ""
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr ""
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr ""
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr ""
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr ""
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr ""
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr ""
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr ""
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr ""
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr ""
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr ""
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr ""
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr ""
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr ""
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr ""
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr ""
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr ""
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr ""
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr ""
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr ""
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr ""
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr ""
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr ""
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr ""
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr ""
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr ""
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr ""
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr ""
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr ""
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr ""
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr ""
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr ""
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr ""
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr ""
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr ""
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr ""
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr ""
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr ""
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr ""
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr ""
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr ""
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr ""
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr ""
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr ""
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "January"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "February"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "March"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "April"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "May"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "June"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "July"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "August"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "September"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "October"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "November"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "December"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "may"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr ""
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr ""
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr ""
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr ""
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr ""
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr ""
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr ""
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr ""
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr ""
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr ""
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr ""
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr ""
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr ""
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr ""
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr ""
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr ""
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr ""
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr ""
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr ""
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr ""
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr ""
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr ""
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr ""
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr ""
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr ""
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr ""
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ""
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr ""
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr ""
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr ""
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr ""
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr ""
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr ""
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/conf/locale/en/__init__.py b/lib/python2.7/site-packages/django/conf/locale/en/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/en/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/en/formats.py b/lib/python2.7/site-packages/django/conf/locale/en/formats.py
deleted file mode 100644
index e73bc62..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/en/formats.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'N j, Y'
-TIME_FORMAT = 'P'
-DATETIME_FORMAT = 'N j, Y, P'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'F j'
-SHORT_DATE_FORMAT = 'm/d/Y'
-SHORT_DATETIME_FORMAT = 'm/d/Y P'
-FIRST_DAY_OF_WEEK = 0 # Sunday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# Kept ISO formats as they are in first position
-DATE_INPUT_FORMATS = (
- '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
- # '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006'
- # '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006'
- # '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006'
- # '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006'
-)
-DATETIME_INPUT_FORMATS = (
- '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
- '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
- '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
- '%Y-%m-%d', # '2006-10-25'
- '%m/%d/%Y %H:%M:%S', # '10/25/2006 14:30:59'
- '%m/%d/%Y %H:%M:%S.%f', # '10/25/2006 14:30:59.000200'
- '%m/%d/%Y %H:%M', # '10/25/2006 14:30'
- '%m/%d/%Y', # '10/25/2006'
- '%m/%d/%y %H:%M:%S', # '10/25/06 14:30:59'
- '%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200'
- '%m/%d/%y %H:%M', # '10/25/06 14:30'
- '%m/%d/%y', # '10/25/06'
-)
-DECIMAL_SEPARATOR = '.'
-THOUSAND_SEPARATOR = ','
-NUMBER_GROUPING = 3
-
diff --git a/lib/python2.7/site-packages/django/conf/locale/en_GB/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/en_GB/LC_MESSAGES/django.mo
deleted file mode 100644
index 969b0b6..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/en_GB/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/en_GB/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/en_GB/LC_MESSAGES/django.po
deleted file mode 100644
index 27ae52f..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/en_GB/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1304 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jon_atkinson <jon@jonatkinson.co.uk>, 2011-2012
-# Ross Poulton <ross@rossp.org>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
-"django/language/en_GB/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: en_GB\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arabic"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azerbaijani"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgarian"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengali"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosnian"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Catalan"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Czech"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Welsh"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Danish"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "German"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Greek"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "English"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "British English"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Spanish"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Argentinian Spanish"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Mexican Spanish"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Nicaraguan Spanish"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estonian"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Basque"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persian"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finnish"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "French"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frisian"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irish"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galician"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebrew"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Croatian"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Hungarian"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonesian"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Icelandic"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italian"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japanese"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgian"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazakh"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Korean"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Lithuanian"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Latvian"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Macedonian"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongolian"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norwegian Bokmal"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepali"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Dutch"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norwegian Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Punjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Polish"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portuguese"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Brazilian Portuguese"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Romanian"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Russian"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slovak"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slovenian"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albanian"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbian"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serbian Latin"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Swedish"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Swahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Thai"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turkish"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatar"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukrainian"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnamese"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Simplified Chinese"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Traditional Chinese"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Enter a valid value."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Enter a valid URL."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Enter a valid IPv4 address."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Enter a valid IPv6 address."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Enter a valid IPv4 or IPv6 address."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Enter only digits separated by commas."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Ensure this value is less than or equal to %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Ensure this value is greater than or equal to %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "and"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s with this %(field_label)s already exists."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "This field cannot be null."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "This field cannot be blank."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Field of type: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Integer"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (Either True or False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "String (up to %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Comma-separated integers"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Date (without time)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Date (with time)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Decimal number"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Email address"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "File path"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Floating point number"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Big (8 byte) integer"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 address"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP address"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (Either True, False or None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Positive integer"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Positive small integer"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (up to %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Small integer"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Text"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Time"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "File"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Image"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Foreign Key (type determined by related field)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "One-to-one relationship"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Many-to-many relationship"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "This field is required."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Enter a whole number."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Enter a number."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Enter a valid date."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Enter a valid time."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Enter a valid date/time."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "No file was submitted. Check the encoding type on the form."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "No file was submitted."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "The submitted file is empty."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Please either submit a file or check the clear checkbox, not both."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Select a valid choice. %(value)s is not one of the available choices."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Enter a list of values."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Order"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Delete"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Please correct the duplicate data for %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Please correct the duplicate data for %(field)s, which must be unique."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Please correct the duplicate values below."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "The inline foreign key did not match the parent instance primary key."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Select a valid choice. That choice is not one of the available choices."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Currently"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Change"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Clear"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Unknown"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Yes"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "No"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "yes,no,maybe"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "midnight"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "noon"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Monday"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Tuesday"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Wednesday"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Thursday"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Friday"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Saturday"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Sunday"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Mon"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Tue"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Wed"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Thu"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Fri"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sat"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Sun"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "January"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "February"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "March"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "May"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "June"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "July"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "August"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "October"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "November"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "December"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "may"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "oct"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "March"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "May"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "June"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "July"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Aug."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Oct."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Dec."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "January"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "February"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "March"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "May"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "June"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "July"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "August"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "October"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "November"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "December"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "or"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Directory indexes are not allowed here."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" does not exist"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Index of %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "No year specified"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "No month specified"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "No day specified"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "No week specified"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "No %(verbose_name_plural)s available"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Invalid date string '%(datestr)s' given format '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "No %(verbose_name)s found matching the query"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Page is not 'last', nor can it be converted to an int."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Empty list and '%(class_name)s.allow_empty' is False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/en_GB/__init__.py b/lib/python2.7/site-packages/django/conf/locale/en_GB/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/en_GB/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/en_GB/formats.py b/lib/python2.7/site-packages/django/conf/locale/en_GB/formats.py
deleted file mode 100644
index 3cf7f79..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/en_GB/formats.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j M Y' # '25 Oct 2006'
-TIME_FORMAT = 'P' # '2:30 pm'
-DATETIME_FORMAT = 'j M Y, P' # '25 Oct 2006, 2:30 pm'
-YEAR_MONTH_FORMAT = 'F Y' # 'October 2006'
-MONTH_DAY_FORMAT = 'j F' # '25 October'
-SHORT_DATE_FORMAT = 'd/m/Y' # '25/10/2006'
-SHORT_DATETIME_FORMAT = 'd/m/Y P' # '25/10/2006 2:30 pm'
-FIRST_DAY_OF_WEEK = 0 # Sunday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06'
- # '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006'
- # '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006'
- # '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006'
- # '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006'
-)
-DATETIME_INPUT_FORMATS = (
- '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
- '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
- '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
- '%Y-%m-%d', # '2006-10-25'
- '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59'
- '%d/%m/%Y %H:%M:%S.%f', # '25/10/2006 14:30:59.000200'
- '%d/%m/%Y %H:%M', # '25/10/2006 14:30'
- '%d/%m/%Y', # '25/10/2006'
- '%d/%m/%y %H:%M:%S', # '25/10/06 14:30:59'
- '%d/%m/%y %H:%M:%S.%f', # '25/10/06 14:30:59.000200'
- '%d/%m/%y %H:%M', # '25/10/06 14:30'
- '%d/%m/%y', # '25/10/06'
-)
-DECIMAL_SEPARATOR = '.'
-THOUSAND_SEPARATOR = ','
-NUMBER_GROUPING = 3
-
diff --git a/lib/python2.7/site-packages/django/conf/locale/eo/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/eo/LC_MESSAGES/django.mo
deleted file mode 100644
index 77f42e5..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/eo/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/eo/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/eo/LC_MESSAGES/django.po
deleted file mode 100644
index 31201ae..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/eo/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1337 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Baptiste <baptiste+transifex@darthenay.fr>, 2012-2013
-# Baptiste <baptiste+transifex@darthenay.fr>, 2013
-# batisteo <bapdarth@yahoo·fr>, 2011
-# Dinu Gherman <gherman@darwin.in-berlin.de>, 2011
-# kristjan <kristjan.schmidt@googlemail.com>, 2011
-# sagittarian <adam.raizen@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-10-23 14:39+0000\n"
-"Last-Translator: Baptiste <baptiste+transifex@darthenay.fr>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/"
-"language/eo/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikansa"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Araba"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azerbajĝana"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgara"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Belorusa"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengala"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretona"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosnia"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Kataluna"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Ĉeĥa"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Kimra"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Dana"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Germana"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Greka"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Angla"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Angla (Brita)"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Hispana"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Hispana (Argentinio)"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Hispana (Meksiko)"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Hispana (Nikaragvo)"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Hispana (Venezuelo)"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estona"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Eŭska"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persa"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finna"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Franca"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frisa"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irlanda"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galega"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebrea"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hinda"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Kroata"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Hungara"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingvaa"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indoneza"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islanda"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Itala"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japana"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Kartvela"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazaĥa"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Kmera"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kanara"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Korea"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Lukszemburga"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Litova"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Latva"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Makedona"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malajala"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongola"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Birma"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norvega (bokmål)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepala"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Nederlanda"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norvega (nynorsk)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Oseta"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Panĝaba"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Pola"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugala"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Portugala (Brazilo)"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Rumana"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Rusa"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slovaka"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slovena"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albana"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serba"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serba (latina)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Sveda"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Svahila"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamila"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugua"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Taja"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turka"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatara"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurta"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukraina"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdua"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vjetnama"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Ĉina (simpligite)"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Ĉina (tradicie)"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Enigu validan valoron."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Enigu validan adreson."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Enigu validan entjero."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Enigu validan retpoŝtan adreson."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Tiu kampo nur devas havi literojn, nombrojn, substrekojn aŭ streketojn."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Enigu validan IPv4-adreson."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Enigu validan IPv6-adreson."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Enigu validan IPv4 aŭ IPv6-adreson."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Enigu nur ciferojn apartigitajn per komoj."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Certigu ke ĉi tiu valoro estas %(limit_value)s (ĝi estas %(show_value)s). "
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Certigu ke ĉi tiu valoro estas malpli ol aŭ egala al %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Certigu ke ĉi tiu valoro estas pli ol aŭ egala al %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Certigu, ke tiu valuto havas %(limit_value)d karaktero (ĝi havas "
-"%(show_value)d)."
-msgstr[1] ""
-"Certigu, ke tiu valuto havas %(limit_value)d karakteroj (ĝi havas "
-"%(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Certigu, ke tio valuto maksimume havas %(limit_value)d karakterojn (ĝi havas "
-"%(show_value)d)."
-msgstr[1] ""
-"Certigu, ke tio valuto maksimume havas %(limit_value)d karakterojn (ĝi havas "
-"%(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s devas esti unika por %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "kaj"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s kun tiu %(field_label)s jam ekzistas."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "Valoro %(value)r ne estas valida elekto."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Tiu ĉi kampo ne povas esti senvalora (null)."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Tiu ĉi kampo ne povas esti malplena."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Kampo de tipo: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Entjero"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "'%(value)s' valoro devas esti entjero."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "'%(value)s' valoro devas esti Vera aŭ Malvera"
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Bulea (Vera aŭ Malvera)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Ĉeno (ĝis %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Kom-apartigitaj entjeroj"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"'%(value)s' valoro ne havas validan datformaton. Ĝi devas esti kiel formato "
-"JJJJ-MM-TT."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"'%(value)s' valoro havas la ĝustan formaton (JJJJ-MM-TT), sed ne estas "
-"valida dato."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Dato (sen horo)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"'%(value)s' valoro ne havas validan formaton. Ĝi devas esti kiel formato "
-"JJJJ-MM-TT HH:MM[:ss[.uuuuuu]][HZ]."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"'%(value)s' valoro havas la ĝustan formaton (JJJJ-MM-TT HH:MM[:ss[.uuuuuu]]"
-"[HZ]), sed ne estas valida dato kaj horo."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Dato (kun horo)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "'%(value)s' valoro devas esti dekuma nombro."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Dekuma nombro"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Retpoŝtadreso"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Dosiervojo"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "'%(value)s' valoro devas esti glitkoma nombro."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Glitkoma nombro"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Granda (8 bitoka) entjero"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4-adreso"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP-adreso"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "'%(value)s' valoro devas esti Neniu, Vera aŭ Malvera."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Buleo (Vera, Malvera aŭ Neniu)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Pozitiva entjero"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Pozitiva malgranda entjero"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Ĵetonvorto (ĝis %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Malgranda entjero"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Teksto"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"'%(value)s' valoro ne havas validan formaton. Ĝi devas esti laŭ la formato "
-"HH:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"'%(value)s' valoro havas ĝustan formaton (HH:MM[:ss[.uuuuuu]]), sed ne estas "
-"valida horo."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Horo"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Kruda binara datumo"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Dosiero"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Bildo"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "%(model)s apero kun ĉefŝlosilo %(pk)r ne ekzistas."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Fremda ŝlosilo (tipo determinita per rilata kampo)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Unu-al-unu rilato"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Mult-al-multa rilato"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Ĉi tiu kampo estas deviga."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Enigu plenan nombron."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Enigu nombron."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Certigu ke ne estas pli ol %(max)s cifero entute."
-msgstr[1] "Certigu ke ne estas pli ol %(max)s ciferoj entute."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Certigu, ke ne estas pli ol %(max)s dekumaj lokoj."
-msgstr[1] "Certigu, ke ne estas pli ol %(max)s dekumaj lokoj."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] "Certigu ke ne estas pli ol %(max)s ciferoj antaŭ la dekuma punkto."
-msgstr[1] "Certigu ke ne estas pli ol %(max)s ciferoj antaŭ la dekuma punkto."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Enigu validan daton."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Enigu validan horon."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Enigu validan daton/tempon."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"Neniu dosiero estis alŝutita. Kontrolu la kodoprezentan tipon en la "
-"formularo."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Neniu dosiero estis alŝutita."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "La alŝutita dosiero estas malplena."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Certigu, ke tio dosiernomo maksimume havas %(max)d karakteron (ĝi havas "
-"%(length)d)."
-msgstr[1] ""
-"Certigu, ke tio dosiernomo maksimume havas %(max)d karakterojn (ĝi havas "
-"%(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Bonvolu aŭ alŝuti dosieron, aŭ elekti la malplenan markobutonon, ne ambaŭ."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Alŝutu validan bildon. La alŝutita dosiero ne estas bildo, aŭ estas "
-"difektita bildo."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Elektu validan elekton. %(value)s ne estas el la eblaj elektoj."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Enigu liston de valoroj."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Kaŝita kampo %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "ManagementForm datumoj mankas, aŭ estas tuŝaĉitaj kun"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Bonvolu sendi %d aŭ malpli formularojn."
-msgstr[1] "Bonvolu sendi %d aŭ malpli formularojn."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Ordo"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Forigi"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Bonvolu ĝustigi la duoblan datumon por %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Bonvolu ĝustigi la duoblan datumon por %(field)s, kiu devas esti unika."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Bonvolu ĝustigi la duoblan datumon por %(field_name)s, kiu devas esti unika "
-"por la %(lookup)s en %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Bonvolu ĝustigi la duoblan valoron sube."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "La enteksta fremda ŝlosilo ne egalis la ĉefŝlosilon de patra apero."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Elektu validan elekton. Ĉi tiu elekto ne estas el la eblaj elektoj."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" ne estas valida valuto por la ĉefa ŝlosilo."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Premadu la stirklavon, aŭ Komando-klavon ĉe Mac, por elekti pli ol unu."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s ne povus esti interpretita en horzono %(current_timezone)s; ĝi "
-"povas esti plursenca aŭ ne ekzistas."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Nuntempe"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Ŝanĝi"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Vakigi"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Nekonate"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Jes"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Ne"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "jes,ne,eble"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bitoko"
-msgstr[1] "%(size)d bitokoj"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "ptm"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "atm"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PTM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "ATM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "noktomezo"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "tagmezo"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "lundo"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "mardo"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "merkredo"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "ĵaŭdo"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "vendredo"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "sabato"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "dimanĉo"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "lun"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "mar"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "mer"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "ĵaŭ"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "ven"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "sab"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "dim"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Januaro"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Februaro"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Marto"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Aprilo"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Majo"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Junio"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Julio"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Aŭgusto"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Septembro"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Oktobro"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Novembro"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Decembro"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "maj"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aŭg"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Marto"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Aprilo"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Majo"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Junio"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Julio"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Aŭg."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Okt."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Dec."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Januaro"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Februaro"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Marto"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Aprilo"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Majo"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Junio"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Julio"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Aŭgusto"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Septembro"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Oktobro"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Novembro"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Decembro"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Nek Pillow nek PIL povus esti importita: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "La '_figurada' modulo por la PIL ne povus esti importita: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Tiu ne estas valida IPv6-adreso."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "aŭ"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d jaro"
-msgstr[1] "%d jaroj"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d monato"
-msgstr[1] "%d monatoj"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d semajno"
-msgstr[1] "%d semajnoj"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d tago"
-msgstr[1] "%d tagoj"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d horo"
-msgstr[1] "%d horoj"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minuto"
-msgstr[1] "%d minutoj"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minutoj"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Dosierujaj indeksoj ne estas permesitaj tie."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" ne ekzistas"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Indekso de %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Neniu jaro specifita"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Neniu monato specifita"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Neniu tago specifita"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Neniu semajno specifita"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Neniu %(verbose_name_plural)s disponeblaj"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Estonta %(verbose_name_plural)s ne disponeblas ĉar %(class_name)s."
-"allow_future estas Malvera."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-"La formato « %(format)s » aplikita al la data ĉeno '%(datestr)s' ne estas "
-"valida"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Neniu %(verbose_name)s trovita kongruas kun la informpeto"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Paĝo ne estas 'last', kaj ne povus esti transformita al entjero."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Nevalida paĝo (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Malplena listo kaj '%(class_name)s.allow_empty' estas Malvera."
diff --git a/lib/python2.7/site-packages/django/conf/locale/es/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/es/LC_MESSAGES/django.mo
deleted file mode 100644
index 8fd62db..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/es/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/es/LC_MESSAGES/django.po
deleted file mode 100644
index d7cb494..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1349 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Abraham Estrada <abraham.estrada@gmail.com>, 2013
-# Antoni Aloy <aaloy@apsl.net>, 2011-2013
-# Diego Andres Sanabria Martin <diegueus9@gmail.com>, 2012
-# Diego Schulz <dschulz@gmail.com>, 2012
-# franchukelly <inactive+franchukelly@transifex.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2011,2013
-# Marc Garcia <garcia.marc@gmail.com>, 2011
-# monobotsoft <monobot.soft@gmail.com>, 2012
-# ntrrgc <ntrrgc@gmail.com>, 2013
-# ntrrgc <ntrrgc@gmail.com>, 2013
-# Sebastián Ramírez Magrí <sebasmagri@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-11-05 07:56+0000\n"
-"Last-Translator: Antoni Aloy <aaloy@apsl.net>\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/django/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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikaans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Árabe"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azerbaiyán"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Búlgaro"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Bielorruso"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengalí"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretón"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosnio"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Catalán"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Checo"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Galés"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Danés"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Alemán"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Griego"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Inglés"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Inglés británico"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Español"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Español de Argentina"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Español de México"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Español de Nicaragua"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Español venezolano"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estonio"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Vasco"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persa"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finés"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Francés"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frisón"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irlandés"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Gallego"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebreo"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Croata"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Húngaro"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonesio"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islandés"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italiano"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japonés"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgiano"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazajo"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Koreano"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Luxenburgués"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Lituano"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Letón"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Macedonio"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongol"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Birmano"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Nokmål"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepalí"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Holandés"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Osetio"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Panyabí"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Polaco"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugués"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Portugués de Brasil"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Rumano"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Ruso"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Eslovaco"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Esloveno"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albanés"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbio"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serbio latino"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Sueco"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Suajili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Tailandés"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turco"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tártaro"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurt"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ucraniano"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnamita"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Cino simplificado"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Chino tradicional"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Introduzca un valor correcto."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Introduzca una URL válida."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Introduzca un entero válido."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Introduzca una dirección de correo electrónico válida."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Introduzca un 'slug' válido, consistente en letras, números, guiones bajos o "
-"medios."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Introduzca una dirección IPv4 válida."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Introduzca una dirección IPv6 válida."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Introduzca una dirección IPv4 o IPv6 válida."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Introduzca sólo dígitos separados por comas."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Asegúrese de que este valor es %(limit_value)s (actualmente es "
-"%(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Asegúrese de que este valor es menor o igual a %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Asegúrese de que este valor es mayor o igual a %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Asegúrese de que este valor tenga al menos %(limit_value)d caracter (tiene "
-"%(show_value)d)."
-msgstr[1] ""
-"Asegúrese de que este valor tenga al menos %(limit_value)d caracteres (tiene "
-"%(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Asegúrese de que este valor tenga menos de %(limit_value)d caracter (tiene "
-"%(show_value)d)."
-msgstr[1] ""
-"Asegúrese de que este valor tenga menos de %(limit_value)d caracteres (tiene "
-"%(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "El campo %(field_name)s debe ser único para %(lookup)s %(date_field)s"
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "y"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "Ya existe %(model_name)s con este %(field_label)s."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "El valor %(value)r no es una opción válida."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Este campo no puede ser nulo."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Este campo no puede estar vacío."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Campo de tipo: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Entero"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "El valor '%(value)s' debe ser un entero."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "El valor '%(value)s' debe ser Verdadero o Falso."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Booleano (Verdadero o Falso)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Cadena (máximo %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Enteros separados por comas"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"El valor '%(value)s' tiene un formato de fecha incorrecto. Debe ser del tipo "
-"YYYY-MM-DD."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"El valor '%(value)s' tiene el formato correcto (YYYY-MM-DD) pero no es una "
-"fecha válida."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Fecha (sin hora)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"El valor '%(value)s' tiene un formato inválido. Debe ser de la forma YYYY-MM-"
-"DD HH:MM[:ss[.uuuuuu]][TZ] ."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"El valor '%(value)s' tiene el formato correcto (YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ]) pero no representa una fecha/hora válida."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Fecha (con hora)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "El valor '%(value)s' debe ser un número decimal."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Número decimal"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "dirección de correo electrónico"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Ruta de fichero"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "El valor '%(value)s' debe ser un número real."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Número en coma flotante"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Entero grande (8 bytes)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Dirección IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Dirección IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "El valor '%(value)s' debe ser None, Verdaro o False."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Booleano (Verdadero, Falso o Nulo)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Entero positivo"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Entero positivo corto"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (hasta %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Entero corto"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Texto"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"El valor '%(value)s' tiene un formato inválido. Debe ser de la forma HH:MM[:"
-"ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"El valor '%(value)s' tiene el formato correcto (HH:MM[:ss[.uuuuuu]]) pero "
-"no representa una hora válida."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Hora"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Data de binarios brutos"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Archivo"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Imagen"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "La instancia de %(model)s con pk %(pk)r no existe."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Llave foránea (tipo determinado por el campo relacionado)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Relación uno-a-uno"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Relación muchos-a-muchos"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Este campo es obligatorio."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Introduzca un número entero."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Introduzca un número."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Asegúrese de que no hay más de %(max)s dígito en total."
-msgstr[1] "Asegúrese de que no hay más de %(max)s dígitos en total."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Asegúrese de que no haya más de %(max)s dígito decimal."
-msgstr[1] "Asegúrese de que no haya más de %(max)s dígitos decimales."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-"Asegúrese de que no haya más de %(max)s dígito antes del punto decimal"
-msgstr[1] ""
-"Asegúrese de que no haya más de %(max)s dígitos antes del punto decimal."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Introduzca una fecha válida."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Introduzca una hora válida."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Introduzca una fecha/hora válida."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"No se ha enviado ningún fichero. Compruebe el tipo de codificación en el "
-"formulario."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "No se ha enviado ningún fichero"
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "El fichero enviado está vacío."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Asegúrese de que este nombre de archivo tenga como máximo %(max)d caracter "
-"(tiene %(length)d)."
-msgstr[1] ""
-"Asegúrese de que este nombre de archivo tenga como máximo %(max)d caracteres "
-"(tiene %(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Por favor envíe un fichero o marque la casilla de limpiar, pero no ambos."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Envíe una imagen válida. El fichero que ha enviado no era una imagen o se "
-"trataba de una imagen corrupta."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Escoja una opción válida. %(value)s no es una de las opciones disponibles."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Introduzca una lista de valores."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Compo oculto %(name)s) *%(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "Los datos de ManagementForm no están o han sido manipulados con"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Por favor, envíe %d o menos formas."
-msgstr[1] "Por favor, envíe %d o menos formas."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Orden"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Eliminar"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Por favor, corrija el dato duplicado para %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Por favor corriga el dato duplicado para %(field)s, el cual debe ser único."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Por favor corriga los datos duplicados para %(field_name)s el cual debe ser "
-"único para %(lookup)s en %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Por favor, corrija los valores duplicados abajo."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"La clave foránea en linea no coincide con la clave primaria de la instancia "
-"padre."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Escoja una opción válida. Esa opción no está entre las disponibles."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" no es un valor válido para una llave primaria."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Mantenga presionado \"Control\", o \"Command\" en un Mac, para seleccionar "
-"más de una opción."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s no puede interpretarse en la zona temporal "
-"%(current_timezone)s; puede ser ambiguo o puede no existir."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Actualmente"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Modificar"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Limpiar"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Desconocido"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Sí"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "No"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "sí, no, quizás"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "media noche"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "medio día"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Lunes"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Martes"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Miércoles"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Jueves"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Viernes"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Sábado"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Domingo"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Lun"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Mar"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Mié"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Jue"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Vie"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sáb"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Dom"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Enero"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Febrero"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Marzo"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Mayo"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Junio"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Julio"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Agosto"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Septiembre"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Octubre"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Noviembre"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Diciembre"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ene"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "may"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ago"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "oct"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dic"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Ene."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Mar."
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Abr."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Mayo"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Jun."
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Jul."
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Ago."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Oct."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Dic."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Enero"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Febrero"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Marzo"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Mayo"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Junio"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Julio"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Agosto"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Septiembre"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Octubre"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Noviembre"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Diciembre"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "No se pudo importar Pillow o PIL: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "El módulo '_imaging' para PIL no pudo ser importado: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "No es una dirección IPV6 válida."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "o"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d año"
-msgstr[1] "%d años"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d mes"
-msgstr[1] "%d meses"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d semana"
-msgstr[1] "%d semanas"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d día"
-msgstr[1] "%d días"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d hora"
-msgstr[1] "%d horas"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minuto"
-msgstr[1] "%d minutos"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minutos"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Los índices de directorio no están permitidos."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" no existe"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Índice de %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "No se ha indicado el año"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "No se ha indicado el mes"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "No se ha indicado el día"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "No se ha indicado la semana"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "No %(verbose_name_plural)s disponibles"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Los futuros %(verbose_name_plural)s no están disponibles porque "
-"%(class_name)s.allow_future es Falso."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Fecha '%(datestr)s' no válida, el formato válido es '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "No se encontró ningún %(verbose_name)s coincidente con la consulta"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "La página no es la \"ultima\", ni puede ser convertida a un entero."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Página inválida (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Lista vacía y '%(class_name)s.allow_empty' es Falso."
diff --git a/lib/python2.7/site-packages/django/conf/locale/es/__init__.py b/lib/python2.7/site-packages/django/conf/locale/es/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/es/formats.py b/lib/python2.7/site-packages/django/conf/locale/es/formats.py
deleted file mode 100644
index 7e5ecb3..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es/formats.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = r'j \d\e F \d\e Y'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = r'j \d\e F \d\e Y \a \l\a\s H:i'
-YEAR_MONTH_FORMAT = r'F \d\e Y'
-MONTH_DAY_FORMAT = r'j \d\e F'
-SHORT_DATE_FORMAT = 'd/m/Y'
-SHORT_DATETIME_FORMAT = 'd/m/Y H:i'
-FIRST_DAY_OF_WEEK = 1 # Monday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- # '31/12/2009', '31/12/09'
- '%d/%m/%Y', '%d/%m/%y'
-)
-DATETIME_INPUT_FORMATS = (
- '%d/%m/%Y %H:%M:%S',
- '%d/%m/%Y %H:%M:%S.%f',
- '%d/%m/%Y %H:%M',
- '%d/%m/%y %H:%M:%S',
- '%d/%m/%y %H:%M:%S.%f',
- '%d/%m/%y %H:%M',
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-NUMBER_GROUPING = 3
-
diff --git a/lib/python2.7/site-packages/django/conf/locale/es_AR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/es_AR/LC_MESSAGES/django.mo
deleted file mode 100644
index 22ff0f4..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es_AR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/es_AR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/es_AR/LC_MESSAGES/django.po
deleted file mode 100644
index 3541925..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es_AR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1345 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ramiro Morales <cramm0@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-11-05 02:08+0000\n"
-"Last-Translator: Ramiro Morales <cramm0@gmail.com>\n"
-"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
-"django/language/es_AR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_AR\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "afrikáans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "árabe"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azerbaiyán"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "búlgaro"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "bielorruso"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "bengalí"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "bretón"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "bosnio"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "catalán"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "checo"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "galés"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "danés"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "alemán"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "griego"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "inglés"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "inglés británico"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "español"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "español de Argentina"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Español de México"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Español (Nicaragua)"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "español de Venezuela"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "estonio"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "vasco"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "persa"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "finlandés"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "francés"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "frisón"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "irlandés"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "gallego"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "hebreo"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "croata"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "húngaro"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "indonesio"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "islandés"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "italiano"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "japonés"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "georgiano"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "kazajo"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "jémer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "canarés"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "coreano"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "luxemburgués"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "lituano"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "letón"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "macedonio"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "mongol"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "burmés"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "bokmål"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "nepalés"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "holandés"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "osetio"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Panyabí"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "polaco"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "portugués"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "portugués de Brasil"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "rumano"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "ruso"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "eslovaco"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "esloveno"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "albanés"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "serbio"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Latín de Serbia"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "sueco"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "suajili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "tamil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "tailandés"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "turco"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "tártaro"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "udmurto"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ucraniano"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "vietnamita"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "chino simplificado"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "chino tradicional"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Introduzca un valor válido."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Introduzca una URL válida."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Introduzca un valor numérico entero válido."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Introduzca una dirección de email válida."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "Introduzca un 'slug' válido consistente de letras, números o guiones."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Introduzca una dirección IPv4 válida"
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Introduzca una dirección IPv6 válida."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Introduzca una dirección IPv4 o IPv6 válida."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Introduzca sólo dígitos separados por comas."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Asegúrese de que este valor sea %(limit_value)s (actualmente es "
-"%(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Asegúrese de que este valor sea menor o igual a %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Asegúrese de que este valor sea mayor o igual a %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Asegúrese de que este valor tenga como mínimo %(limit_value)d caracter "
-"(tiene %(show_value)d)."
-msgstr[1] ""
-"Asegúrese de que este valor tenga como mínimo %(limit_value)d caracteres "
-"(tiene %(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Asegúrese de que este valor tenga como máximo %(limit_value)d caracter "
-"(tiene %(show_value)d)."
-msgstr[1] ""
-"Asegúrese de que este valor tenga como máximo %(limit_value)d caracteres "
-"(tiene %(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"%(field_name)s debe ser único/a para un %(lookup)s %(date_field)s "
-"determinado."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "y"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "Ya existe un/a %(model_name)s con este/a %(field_label)s."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "El valor %(value)r no es una opción válida."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Este campo no puede ser nulo."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Este campo no puede estar en blanco."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Campo tipo: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Entero"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "El valor de '%(value)s' debe ser un número entero."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "El valor de '%(value)s' debe ser Verdadero o Falso."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Booleano (Verdadero o Falso)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Cadena (máximo %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Enteros separados por comas"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"El valor de '%(value)s' tiene un formato de fecha inválido. Debe usar el "
-"formato AAAA-MM-DD."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"El valor de '%(value)s' tiene un formato de fecha correcto (AAAA-MM-DD) pero "
-"representa una fecha inválida."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Fecha (sin hora)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"El valor de '%(value)s' tiene un formato inválido. Debe usar el formato AAAA-"
-"MM-DD HH:MM[:ss[.uuuuuu]][TZ]."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"El valor de '%(value)s' tiene un formato correcto (AAAA-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ]) pero representa una fecha/hora inválida."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Fecha (con hora)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "El valor de '%(value)s' debe ser un número decimal."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Número decimal"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Dirección de correo electrónico"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Ruta de archivo"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "El valor de '%(value)s' debe ser un número de coma flotante."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Número de punto flotante"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Entero grande (8 bytes)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Dirección IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Dirección IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "El valor de '%(value)s' debe ser None, Verdadero o Falso."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Booleano (Verdadero, Falso o Nulo)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Entero positivo"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Entero pequeño positivo"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (de hasta %(max_length)s caracteres)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Entero pequeño"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Texto"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"El valor de '%(value)s' tiene un formato inválido. Debe usar el formato HH:MM"
-"[:ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"El valor de '%(value)s' tiene un formato correcto (HH:MM[:ss[.uuuuuu]]) pero "
-"representa una hora inválida."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Hora"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Datos binarios crudos"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Archivo"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Imagen"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-"No existe una instancia del modelo %(model)s con una clave primaria %(pk)r."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Clave foránea (el tipo está determinado por el campo relacionado)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Relación uno-a-uno"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Relación muchos-a-muchos"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Este campo es obligatorio."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Introduzca un número entero."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Introduzca un número."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Asegúrese de que no exista en total mas de %(max)s dígito."
-msgstr[1] "Asegúrese de que no existan en total mas de %(max)s dígitos."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Asegúrese de que no exista mas de %(max)s lugar decimal."
-msgstr[1] "Asegúrese de que no existan mas de %(max)s lugares decimales."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-"Asegúrese de que no exista mas de %(max)s dígito antes del punto decimal."
-msgstr[1] ""
-"Asegúrese de que no existan mas de %(max)s dígitos antes del punto decimal."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Introduzca una fecha válida."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Introduzca un valor de hora válido."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Introduzca un valor de fecha/hora válido."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"No se envió un archivo. Verifique el tipo de codificación en el formulario."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "No se envió ningún archivo."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "El archivo enviado está vacío."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Asegúrese de que este nombre de archivo tenga como máximo %(max)d caracter "
-"(tiene %(length)d)."
-msgstr[1] ""
-"Asegúrese de que este nombre de archivo tenga como máximo %(max)d caracteres "
-"(tiene %(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Por favor envíe un archivo o active el checkbox, pero no ambas cosas."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Seleccione una imagen válida. El archivo que ha seleccionado no es una "
-"imagen o es un un archivo de imagen corrupto."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Seleccione una opción válida. %(value)s no es una de las opciones "
-"disponibles."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Introduzca una lista de valores."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Campo oculto %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-"Los datos correspondientes al ManagementForm no existen o han sido "
-"modificados"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Por favor envíe cero o %d formularios."
-msgstr[1] "Por favor envíe un máximo de %d formularios."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Ordenar"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Eliminar"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Por favor, corrija la información duplicada en %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Por favor corrija la información duplicada en %(field)s, que debe ser única."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Por favor corrija la información duplicada en %(field_name)s que debe ser "
-"única para el %(lookup)s en %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Por favor, corrija los valores duplicados detallados mas abajo."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"La clave foránea del modelo inline no coincide con la clave primaria de la "
-"instancia padre."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Seleccione una opción válida. La opción seleccionada no es una de las "
-"disponibles."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" no es un valor válido para una clave primaria."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Mantenga presionada \"Control\" (\"Command\" en una Mac) para seleccionar "
-"más de uno."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s no puede ser interpretado en la zona horaria "
-"%(current_timezone)s; ya que podría ser ambiguo o podría no existir."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Actualmente"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Modificar"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Eliminar"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Desconocido"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Sí"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "No"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "si,no,talvez"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "medianoche"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "mediodía"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Lunes"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Martes"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Miércoles"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Jueves"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Viernes"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Sábado"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Domingo"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Lun"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Mar"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Mie"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Jue"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Vie"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sab"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Dom"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Enero"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Febrero"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Marzo"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Mayo"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Junio"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Julio"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Agosto"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Setiembre"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Octubre"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Noviembre"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Diciembre"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ene"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "abr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "may"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ago"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "set"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "oct"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dic"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Enero"
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Marzo"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Mayo"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Junio"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Julio"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Ago."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Set."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Oct."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Dic."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Enero"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Febrero"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Marzo"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Mayo"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Junio"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Julio"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Agosto"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Setiembre"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Octubre"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Noviembre"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Diciembre"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "No se han podido importar las bibliotecas Pillow o PIL: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "No se ha podido importar el módulo '_imaging' de PIL: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Esta no es una direción IPv6 válida."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "o"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d año"
-msgstr[1] "%d años"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d mes"
-msgstr[1] "%d meses"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d semana"
-msgstr[1] "%d semanas"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d día"
-msgstr[1] "%d días"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d hora"
-msgstr[1] "%d horas"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minuto"
-msgstr[1] "%d minutos"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minutos"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-"No está habilitada la generación de listados de directorios en esta "
-"ubicación."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" no existe"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Listado de %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "No se ha especificado el valor año"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "No se ha especificado el valor mes"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "No se ha especificado el valor día"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "No se ha especificado el valor semana"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "No hay %(verbose_name_plural)s disponibles"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"No hay %(verbose_name_plural)s futuros disponibles porque %(class_name)s."
-"allow_future tiene el valor False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Cadena de fecha inválida '%(datestr)s', formato '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "No se han encontrado %(verbose_name)s que coincidan con la consulta "
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Página debe tener el valor 'last' o un valor número entero."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Página inválida (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Lista vacía y '%(class_name)s.allow_empty' tiene el valor False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/es_AR/__init__.py b/lib/python2.7/site-packages/django/conf/locale/es_AR/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es_AR/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/es_AR/formats.py b/lib/python2.7/site-packages/django/conf/locale/es_AR/formats.py
deleted file mode 100644
index 41c732f..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es_AR/formats.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = r'j N Y'
-TIME_FORMAT = r'H:i:s'
-DATETIME_FORMAT = r'j N Y H:i:s'
-YEAR_MONTH_FORMAT = r'F Y'
-MONTH_DAY_FORMAT = r'j \d\e F'
-SHORT_DATE_FORMAT = r'd/m/Y'
-SHORT_DATETIME_FORMAT = r'd/m/Y H:i'
-FIRST_DAY_OF_WEEK = 0 # 0: Sunday, 1: Monday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d/%m/%Y', # '31/12/2009'
- '%d/%m/%y', # '31/12/09'
-)
-DATETIME_INPUT_FORMATS = (
- '%d/%m/%Y %H:%M:%S',
- '%d/%m/%Y %H:%M:%S.%f',
- '%d/%m/%Y %H:%M',
- '%d/%m/%y %H:%M:%S',
- '%d/%m/%y %H:%M:%S.%f',
- '%d/%m/%y %H:%M',
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/es_MX/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/es_MX/LC_MESSAGES/django.mo
deleted file mode 100644
index e68f19e..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es_MX/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/es_MX/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/es_MX/LC_MESSAGES/django.po
deleted file mode 100644
index 15b4efb..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es_MX/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1321 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Abraham Estrada <abraham.estrada@gmail.com>, 2011-2013
-# zodman <zodman@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-11-07 00:27+0000\n"
-"Last-Translator: Abraham Estrada <abraham.estrada@gmail.com>\n"
-"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/"
-"language/es_MX/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_MX\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "afrikáans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Árabe"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azerbaijani"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Búlgaro"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "bielorruso"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengalí"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "bretón"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosnio"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Catalán"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Checo"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Galés"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Danés"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Alemán"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Griego"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Inglés"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Inglés británico"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Español"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Español de Argentina"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Español de México"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Español de nicaragua"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "español de Venezuela"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estonio"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Vasco"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persa"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finés"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Francés"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frisón"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irlandés"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Gallego"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebreo"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Croata"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Húngaro"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonesio"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islandés"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italiano"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japonés"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgiano"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazajstán"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Coreano"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "luxemburgués"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Lituano"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Letón"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Macedonio"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongol"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "burmés"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Noruego Bokmal"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepal"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Holandés"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Noruego Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "osetio"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Punjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Polaco"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugués"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Portugués de Brasil"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Rumano"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Ruso"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Eslovaco"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Esloveno"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albanés"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbio"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Latin Serbio"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Sueco"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Swahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Tailandés"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turco"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatar"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "udmurto"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ucraniano"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnamita"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Chino simplificado"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Chino tradicional"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Introduzca un valor válido."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Ingrese una URL válida."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Introduzca un número entero válido."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Introduzca una dirección de correo electrónico válida."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Introduzca un \"slug\", compuesto por letras, números, guiones bajos o "
-"medios."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Introduzca una dirección IPv4 válida."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Introduzca una dirección IPv6 válida."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Introduzca una dirección IPv4 o IPv6 válida."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Introduzca sólo números separados por comas."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Asegúrese de que este valor es %(limit_value)s (es %(show_value)s )."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Asegúrese de que este valor sea menor o igual a %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Asegúrese de que este valor sea mayor o igual a %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Asegúrese de que este valor tenga como mínimo %(limit_value)d caracter "
-"(tiene %(show_value)d)."
-msgstr[1] ""
-"Asegúrese de que este valor tenga como mínimo %(limit_value)d caracteres "
-"(tiene %(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"%(field_name)s debe ser único/a para un %(lookup)s %(date_field)s "
-"determinado."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "y"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "Ya existe un/a %(model_name)s con este/a %(field_label)s."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Este campo no puede ser nulo."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Este campo no puede estar en blanco."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Campo tipo: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Entero"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (Verdadero o Falso)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Cadena (máximo %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Enteros separados por comas"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Fecha (sin hora)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Fecha (con hora)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Número decimal"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Dirección de correo electrónico"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Ruta de archivo"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Número de punto flotante"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Entero grande (8 bytes)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Dirección IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Dirección IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Booleano (Verdadero, Falso o Nulo)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Entero positivo"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Entero positivo pequeño"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (hasta %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Entero pequeño"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Texto"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Hora"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Archivo"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Imagen"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-"No existe una instancia del modelo %(model)s con una clave primaria %(pk)r."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Clave foránea (el tipo está determinado por el campo relacionado)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Relación uno-a-uno"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Relación muchos-a-muchos"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Este campo es obligatorio."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Introduzca un número entero."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Introduzca un número."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Introduzca una fecha válida."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Introduzca una hora válida."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Introduzca una fecha/hora válida."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"No se envió un archivo. Verifique el tipo de codificación en el formulario."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "No se envió ningún archivo."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "El archivo enviado está vacío."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Por favor envíe un archivo o marque la casilla, no ambos."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Seleccione una imagen válida. El archivo que ha seleccionado no es una "
-"imagen o es un un archivo de imagen corrupto."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Seleccione una opción válida. %(value)s no es una de las opciones "
-"disponibles."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Introduzca una lista de valores."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-"Los datos correspondientes al ManagementForm no existen o han sido "
-"modificados"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Ordenar"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Eliminar"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Por favor, corrija la información duplicada en %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Por favor corrija la información duplicada en %(field)s, que debe ser única."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Por favor corrija la información duplicada en %(field_name)s que debe ser "
-"única para el %(lookup)s en %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Por favor, corrija los valores duplicados detallados mas abajo."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"La clave foránea del modelo inline no coincide con la clave primaria de la "
-"instancia padre."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Seleccione una opción válida. La opción seleccionada no es una de las "
-"disponibles."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Mantenga presionada \"Control\", o \"Command\" en una Mac, para seleccionar "
-"más de uno."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"La fecha %(datetime)s no puede se interpretada en la zona horaria "
-"%(current_timezone)s; ya que puede ser ambigua o que no pueden existir."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Actualmente"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Modificar"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Borrar"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Desconocido"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Sí"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "No"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "sí, no, tal vez"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "medianoche"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "mediodía"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Lunes"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Martes"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Miércoles"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Jueves"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Viernes"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Sábado"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Domingo"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Lun"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Mar"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Mie"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Jue"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Vie"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sab"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Dom"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Enero"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Febrero"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Marzo"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Mayo"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Junio"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Julio"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Agosto"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Septiembre"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Octubre"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Noviembre"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Diciembre"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ene"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "abr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "may"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ago"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "oct"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dic"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Ene."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Marzo"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Mayo"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Junio"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Julio"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Ago."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Sep."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Oct."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Dic."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Enero"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Febrero"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Marzo"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Mayo"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Junio"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Julio"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Agosto"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Septiembre"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Octubre"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Noviembre"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Diciembre"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Esta no es una dirección IPv6 válida."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "o"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d año"
-msgstr[1] "%d años"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d mes"
-msgstr[1] "%d meses"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d semana"
-msgstr[1] "%d semanas"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d día"
-msgstr[1] "%d días"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d hora"
-msgstr[1] "%d horas"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minuto"
-msgstr[1] "%d minutos"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minutos"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Los índices del directorio no están permitidos."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" no existe"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Índice de %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "No se ha especificado el valor año"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "No se ha especificado el valor mes"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "No se ha especificado el valor dia"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "No se ha especificado el valor semana"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "No hay %(verbose_name_plural)s disponibles"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"No hay %(verbose_name_plural)s futuros disponibles porque %(class_name)s."
-"allow_future tiene el valor False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Cadena de fecha inválida '%(datestr)s', formato '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "No se han encontrado %(verbose_name)s que coincidan con la consulta"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "La página no es \"last\", ni puede ser convertido a un int."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Página inválida (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Lista vacía y '%(class_name)s.allow_empty' tiene el valor False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/es_MX/__init__.py b/lib/python2.7/site-packages/django/conf/locale/es_MX/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es_MX/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/es_MX/formats.py b/lib/python2.7/site-packages/django/conf/locale/es_MX/formats.py
deleted file mode 100644
index e3ac674..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es_MX/formats.py
+++ /dev/null
@@ -1,28 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-DATE_FORMAT = r'j \d\e F \d\e Y'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = r'j \d\e F \d\e Y \a \l\a\s H:i'
-YEAR_MONTH_FORMAT = r'F \d\e Y'
-MONTH_DAY_FORMAT = r'j \d\e F'
-SHORT_DATE_FORMAT = 'd/m/Y'
-SHORT_DATETIME_FORMAT = 'd/m/Y H:i'
-FIRST_DAY_OF_WEEK = 1 # Monday: ISO 8601
-DATE_INPUT_FORMATS = (
- '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06'
- '%Y%m%d', # '20061025'
-)
-DATETIME_INPUT_FORMATS = (
- '%d/%m/%Y %H:%M:%S',
- '%d/%m/%Y %H:%M:%S.%f',
- '%d/%m/%Y %H:%M',
- '%d/%m/%y %H:%M:%S',
- '%d/%m/%y %H:%M:%S.%f',
- '%d/%m/%y %H:%M',
-)
-DECIMAL_SEPARATOR = '.' # ',' is also official (less common): NOM-008-SCFI-2002
-THOUSAND_SEPARATOR = '\xa0' # non-breaking space
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/es_NI/__init__.py b/lib/python2.7/site-packages/django/conf/locale/es_NI/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es_NI/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/es_NI/formats.py b/lib/python2.7/site-packages/django/conf/locale/es_NI/formats.py
deleted file mode 100644
index 8220b80..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es_NI/formats.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-DATE_FORMAT = r'j \d\e F \d\e Y'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = r'j \d\e F \d\e Y \a \l\a\s H:i'
-YEAR_MONTH_FORMAT = r'F \d\e Y'
-MONTH_DAY_FORMAT = r'j \d\e F'
-SHORT_DATE_FORMAT = 'd/m/Y'
-SHORT_DATETIME_FORMAT = 'd/m/Y H:i'
-FIRST_DAY_OF_WEEK = 1 # Monday: ISO 8601
-DATE_INPUT_FORMATS = (
- '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06'
- '%Y%m%d', # '20061025'
-
-)
-DATETIME_INPUT_FORMATS = (
- '%d/%m/%Y %H:%M:%S',
- '%d/%m/%Y %H:%M:%S.%f',
- '%d/%m/%Y %H:%M',
- '%d/%m/%y %H:%M:%S',
- '%d/%m/%y %H:%M:%S.%f',
- '%d/%m/%y %H:%M',
-)
-DECIMAL_SEPARATOR = '.'
-THOUSAND_SEPARATOR = ','
-NUMBER_GROUPING = 3
-
diff --git a/lib/python2.7/site-packages/django/conf/locale/es_PR/__init__.py b/lib/python2.7/site-packages/django/conf/locale/es_PR/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es_PR/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/es_PR/formats.py b/lib/python2.7/site-packages/django/conf/locale/es_PR/formats.py
deleted file mode 100644
index 1d4e76c..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es_PR/formats.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-DATE_FORMAT = r'j \d\e F \d\e Y'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = r'j \d\e F \d\e Y \a \l\a\s H:i'
-YEAR_MONTH_FORMAT = r'F \d\e Y'
-MONTH_DAY_FORMAT = r'j \d\e F'
-SHORT_DATE_FORMAT = 'd/m/Y'
-SHORT_DATETIME_FORMAT = 'd/m/Y H:i'
-FIRST_DAY_OF_WEEK = 0 # Sunday
-
-DATE_INPUT_FORMATS = (
- # '31/12/2009', '31/12/09'
- '%d/%m/%Y', '%d/%m/%y'
-)
-DATETIME_INPUT_FORMATS = (
- '%d/%m/%Y %H:%M:%S',
- '%d/%m/%Y %H:%M:%S.%f',
- '%d/%m/%Y %H:%M',
- '%d/%m/%y %H:%M:%S',
- '%d/%m/%y %H:%M:%S.%f',
- '%d/%m/%y %H:%M',
-)
-
-DECIMAL_SEPARATOR = '.'
-THOUSAND_SEPARATOR = ','
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/es_VE/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/es_VE/LC_MESSAGES/django.mo
deleted file mode 100644
index ae22567..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es_VE/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/es_VE/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/es_VE/LC_MESSAGES/django.po
deleted file mode 100644
index d20e0a3..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/es_VE/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1296 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Sebastián Ramírez Magrí <sebasmagri@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Spanish (Venezuela) (http://www.transifex.com/projects/p/"
-"django/language/es_VE/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Árabe"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr ""
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Búlgaro"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengalí"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosnio"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Catalán"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Checo"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Galés"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Danés"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Alemán"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Griego"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Inglés"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Inglés Británic"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Español"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Español de Argentina"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr ""
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estonio"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Vazco"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persa"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finlandés"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Francés"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frisio"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irlandés"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galés"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebreo"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Croata"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Húngaro"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonesio"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islandés"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italiano"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japonés"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgiano"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Canarés"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Coreano"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Lituano"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Latvio"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Macedonio"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayala"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongol"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Noruego Bokmål"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Holandés"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Punjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Polaco"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugués"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Portugués de Brasil"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Ruman"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Ruso"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Eslovaco"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Eslovenio"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albano"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbi"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Latín Serbio"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Sueco"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Tailandés"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turco"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ucranio"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr ""
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnamita"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Chino simplificado"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Chino tradicional"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Introduzca un valor válido."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Introduzca una URL válida."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Introduzca un 'slug' válido, consistente de letras, números, guiones bajos o "
-"guiones."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Introduzca una dirección IPv4 válida"
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr ""
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr ""
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Introduzca solo dígitos separados por comas."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Asegúrese de que este valor %(limit_value)s (ahora es %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Asegúrese de que este valor es menor o igual que %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Asegúrese de que este valor es mayor o igual que %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr ""
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr ""
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr ""
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr ""
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr ""
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr ""
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr ""
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr ""
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr ""
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr ""
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr ""
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Dirección IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Booleano (True, False o None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Texto"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Hora"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr ""
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr ""
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Clave foránea (tipo determinado por el campo relacionado)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Relación uno a uno"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Relación muchos a muchos"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Este campo es obligatorio."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Introduzca un número completo."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Introduzca un número"
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Introduzca una fecha válida."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Introduzca una hora válida."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Introduzca una hora y fecha válida."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"No se envió archivo alguno. Revise el tipo de codificación del formulario."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "No se envió ningún archivo."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "El archivo enviado está vacío"
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Por favor provea un archivo o active el selector de limpiar, no ambos."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr ""
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr ""
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr ""
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr ""
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr ""
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Mantenga presionado \"Control\", o \"Command\" en un Mac, para seleccionar "
-"más de una opción."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr ""
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr ""
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr ""
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr ""
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr ""
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr ""
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr ""
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr ""
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr ""
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr ""
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr ""
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr ""
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr ""
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr ""
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr ""
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr ""
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr ""
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr ""
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr ""
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr ""
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr ""
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "January"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "February"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "March"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "April"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "May"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "June"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "July"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "August"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "September"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "October"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "November"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "December"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "may"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr ""
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr ""
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr ""
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr ""
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr ""
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr ""
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr ""
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr ""
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr ""
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr ""
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr ""
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr ""
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr ""
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr ""
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr ""
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr ""
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr ""
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr ""
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr ""
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr ""
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr ""
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr ""
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr ""
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr ""
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr ""
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr ""
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ""
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr ""
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr ""
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr ""
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr ""
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr ""
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr ""
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/conf/locale/et/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/et/LC_MESSAGES/django.mo
deleted file mode 100644
index 47f58cd..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/et/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/et/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/et/LC_MESSAGES/django.po
deleted file mode 100644
index b2f65f3..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/et/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1329 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# eallik <eallik@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jannolii <jannolii@gmail.com>, 2013
-# madisvain <madisvain@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-11-06 09:55+0000\n"
-"Last-Translator: jannolii <jannolii@gmail.com>\n"
-"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/"
-"et/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: et\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "afrikaani"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "araabia"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Aserbaidžaani"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "bulgaaria"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "valgevene"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "bengali"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "bretooni"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "bosnia"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "katalaani"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "tšehhi"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "uelsi"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "taani"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "saksa"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "kreeka"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "inglise"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "briti inglise"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "hispaania"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "argentiina hispaani"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "mehhiko hispaania"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "nikaraagua hispaania"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "venetsueela hispaania"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "eesti"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "baski"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "pärsia"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "soome"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "prantsuse"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "friisi"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "iiri"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "galiitsia"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "heebrea"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "horvaatia"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "ungari"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "indoneesi"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "islandi"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "itaalia"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "jaapani"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "gruusia"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "kasahhi"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "khmeri"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "korea"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "letseburgi"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "leedu"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "läti"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "makedoonia"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "malaia"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "mongoolia"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "birma"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "norra (bokmal)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "nepali"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "hollandi"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "norra (nynorsk)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "osseetia"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "pandžab"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "poola"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "portugali"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "brasiilia portugali"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "rumeenia"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "vene"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "slovaki"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "sloveeni"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "albaania"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "serbia"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "serbia (ladina)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "rootsi"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "suahiili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "tamiili"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "tai"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "türgi"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "tatari"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "udmurdi"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ukrania"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "vietnami"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "lihtsustatud hiina"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "traditsiooniline hiina"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Sisestage korrektne väärtus."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Sisestage korrektne URL."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Sisestage korrektne täisarv."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Sisestage korrektne e-posti aadress."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"See väärtus võib sisaldada ainult tähti, nubmreid, alljooni ja sidekriipse."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Sisestage korrektne IPv4 aadress."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Sisestage korrektne IPv6 aadress."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Sisestage korrektne IPv4 või IPv6 aadress."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Sisestage ainult komaga eraldatud numbreid."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Veendu, et see väärtus on %(limit_value)s (hetkel on %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Veendu, et see väärtus on väiksem või võrdne kui %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Veendu, et see väärtus on suurem või võrdne kui %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Väärtuses peab olema vähemalt %(limit_value)d tähemärk (praegu on "
-"%(show_value)d)."
-msgstr[1] ""
-"Väärtuses peab olema vähemalt %(limit_value)d tähemärki (praegu on "
-"%(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Väärtuses võib olla kõige rohkem %(limit_value)d tähemärk (praegu on "
-"%(show_value)d)."
-msgstr[1] ""
-"Väärtuses võib olla kõige rohkem %(limit_value)d tähemärki (praegu on "
-"%(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s peab olema unikaalne %(date_field)s %(lookup)s suhtes."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "ja"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "Sellise %(field_label)s-väljaga %(model_name)s on juba olemas."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "Väärtus %(value)r ei ole kehtiv valik."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "See lahter ei tohi olla tühi."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "See väli ei saa olla tühi."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Lahter tüüpi: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Täisarv"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "'%(value)s' väärtus peab olema täisarv."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "'%(value)s' väärtus peab olema kas tõene või väär."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Tõeväärtus (Kas tõene või väär)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "String (kuni %(max_length)s märki)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Komaga eraldatud täisarvud"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"'%(value)s' väärtusel on vale kuupäevaformaat. See peab olema kujul AAAA-KK-"
-"PP."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"'%(value)s' väärtusel on õige formaat (AAAA-KK-PP), kuid kuupäev on vale."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Kuupäev (kellaajata)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"'%(value)s' väärtusel on vale formaat. Peab olema formaadis AAAA-KK-PP HH:MM"
-"[:ss[.uuuuuu]][TZ]."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"'%(value)s' väärtusel on õige formaat (AAAA-KK-PP HH:MM[:ss[.uuuuuu]][TZ]), "
-"kuid kuupäev/kellaaeg on vale."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Kuupäev (kellaajaga)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "'%(value)s' väärtus peab olema kümnendarv."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Kümnendmurd"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-posti aadress"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Faili asukoht"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "'%(value)s' väärtus peab olema ujukomaarv."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Ujukomaarv"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Suur (8 baiti) täisarv"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 aadress"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP aadress"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "'%(value)s' väärtus peab olema kas Puudub, Tõene või Väär."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Tõeväärtus (Kas tõene, väär või tühi)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Positiivne täisarv"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Positiivne väikene täisarv"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Nälk (kuni %(max_length)s märki)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Väike täisarv"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Tekst"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"'%(value)s' väärtusel on vale formaat. Peab olema formaadis HH:MM[:ss[."
-"uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"'%(value)s' väärtusel on õige formaat (HH:MM[:ss[.uuuuuu]]), kuid kellaaeg "
-"on vale."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Aeg"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Töötlemata binaarandmed"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Fail"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Pilt"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "%(model)s isendit primaarvõtmega %(pk)r ei leidu."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Välisvõti (tüübi määrab seotud väli) "
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Üks-ühele seos"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Mitu-mitmele seos"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "See lahter on nõutav."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Sisestage täisarv."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Sisestage arv."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Veenduge, et kogu numbrikohtade arv ei oleks suurem kui %(max)s."
-msgstr[1] "Veenduge, et kogu numbrikohtade arv ei oleks suurem kui %(max)s."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Veenduge, et komakohtade arv ei oleks suurem kui %(max)s."
-msgstr[1] "Veenduge, et komakohtade arv ei oleks suurem kui %(max)s."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-"Veenduge, et komast vasakul olevaid numbreid ei oleks rohkem kui %(max)s."
-msgstr[1] ""
-"Veenduge, et komast vasakul olevaid numbreid ei oleks rohkem kui %(max)s."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Sisestage korrektne kuupäev."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Sisestage korrektne kellaaeg."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Sisestage korrektne kuupäev ja kellaaeg."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Ühtegi faili ei saadetud. Kontrollige vormi kodeeringutüüpi."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Ühtegi faili ei saadetud."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Saadetud fail on tühi."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Veenduge, et faili nimes poleks rohkem kui %(max)d märk (praegu on "
-"%(length)d)."
-msgstr[1] ""
-"Veenduge, et faili nimes poleks rohkem kui %(max)d märki (praegu on "
-"%(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Palun laadige fail või märgistage 'tühjenda' kast, mitte mõlemat."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Laadige korrektne pilt. Fail, mille laadisite, ei olnud kas pilt või oli "
-"fail vigane."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Valige korrektne väärtus. %(value)s ei ole valitav."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Sisestage väärtuste nimekiri."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Peidetud väli %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "ManagementForm andmed on kadunud või nendega on keegi midagi teinud"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Palun kinnitage %d või vähem vormi."
-msgstr[1] "Palun kinnitage %d või vähem vormi."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Järjestus"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Kustuta"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Palun parandage duplikaat-andmed lahtris %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Palun parandage duplikaat-andmed lahtris %(field)s, mis peab olema unikaalne."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Palun parandage allolevad duplikaat-väärtused"
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Pesastatud välisvõti ei sobi ülemobjekti primaarvõtmega."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Valige korrektne väärtus. Valitud väärtus ei ole valitav."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" ei ole sobiv väärtus primaarvõtmeks."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Et valida mitu, hoidke all \"Control\"-nuppu (Maci puhul \"Command\")."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s ei saanud tõlgendada ajavööndis %(current_timezone)s; see on "
-"kas puudu või mitmetähenduslik."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Hetkel"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Muuda"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Tühjenda"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Tundmatu"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Jah"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Ei"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "jah,ei,võib-olla"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bait"
-msgstr[1] "%(size)d baiti"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s kB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.l."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "e.l."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PL"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "EL"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "südaöö"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "keskpäev"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "esmaspäev"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "teisipäev"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "kolmapäev"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "neljapäev"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "reede"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "laupäev"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "pühapäev"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "esmasp."
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "teisip."
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "kolmap."
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "neljap."
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "reede"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "laup."
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "pühap."
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "jaanuar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "veebruar"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "märts"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "aprill"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "mai"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "juuni"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "juuli"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "august"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "oktoober"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "detsember"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jaan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "veeb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "märts"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sept"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dets"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "jaan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "veeb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "mär."
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "apr."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "mai"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "juuni"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "juuli"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "aug."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "sept."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "okt."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "dets."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "jaanuar"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "veebruar"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "märts"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "aprill"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "mai"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "juuni"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "juuli"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "august"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "oktoober"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "detsember"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Ei õnnestunud importida ei Pillow'it ega PIL'i: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "Ei õnnestunud importida PIL'i moodulit '_imaging' : %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "See ei ole korrektne IPv6 aadress."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "või"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d aasta"
-msgstr[1] "%d aastat"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d kuu"
-msgstr[1] "%d kuud"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d nädal"
-msgstr[1] "%d nädalat"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d päev"
-msgstr[1] "%d päeva"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d tund"
-msgstr[1] "%d tundi"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minut"
-msgstr[1] "%d minutit"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minutit"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Kausta sisuloendid ei ole siin lubatud."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" ei eksisteeri"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "%(directory)s sisuloend"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Aasta on valimata"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Kuu on valimata"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Päev on valimata"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Nädal on valimata"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Ei leitud %(verbose_name_plural)s"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Tulevane %(verbose_name_plural)s pole saadaval, sest %(class_name)s."
-"allow_future on False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Vigane kuupäeva-string '%(datestr)s' lähtudes formaadist '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Päringule vastavat %(verbose_name)s ei leitud"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Lehekülg ei ole 'last', ka ei saa teda konvertida täisarvuks."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Vigane leht (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Tühi list ja '%(class_name)s.allow_empty' on False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/et/__init__.py b/lib/python2.7/site-packages/django/conf/locale/et/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/et/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/et/formats.py b/lib/python2.7/site-packages/django/conf/locale/et/formats.py
deleted file mode 100644
index dd0d1a6..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/et/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j F Y'
-TIME_FORMAT = 'G:i:s'
-# DATETIME_FORMAT =
-# YEAR_MONTH_FORMAT =
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'd.m.Y'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = ' ' # Non-breaking space
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/eu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/eu/LC_MESSAGES/django.mo
deleted file mode 100644
index 2143ea0..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/eu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/eu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/eu/LC_MESSAGES/django.po
deleted file mode 100644
index c0f8301..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/eu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1339 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Aitzol Naberan <anaberan@codesyntax.com>, 2013
-# Ander Martínez <ander.basaundi@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jazpillaga <jazpillaga@codesyntax.com>, 2011
-# julen <julenx@gmail.com>, 2011-2012
-# julen <julenx@gmail.com>, 2013
-# totorika93 <totorika93@gmail.com>, 2012
-# unaizalakain <unai@gisa-elkartea.org>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-10-31 11:28+0000\n"
-"Last-Translator: Aitzol Naberan <anaberan@codesyntax.com>\n"
-"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/"
-"eu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikaans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arabiera"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azerbaianera"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgariera"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Belarusiera"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengalera"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretoia"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosniera"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Katalana"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Txekiera"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Gales"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Daniera"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Alemaniera"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Greziera"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Ingelesa"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Ingelesa"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperantoa"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Espainola"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Espainola (Argentina)"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Espainola (Mexiko)"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Espainola (Nikaragua)"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Venezuelako gaztelera"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estoniera"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Euskara"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persiera"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finlandiera"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Frantsesa"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frisiera"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irlandako gaelera"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galiziera"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebreera"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Kroaziarra"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Hungariera"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonesiera"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islandiera"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italiera"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japoniera"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgiera"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazakhera"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khemerera"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kanadiera"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Koreera"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Luxenburgera"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Lituaniera"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Letoniera"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Mazedoniera"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malabarera"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongoliera"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Birmaniera"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Bokmal"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepalera"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Holandera"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Osetiera"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Punjabera"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Poloniera"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugalera"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Portugalera (Brazil)"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Errumaniera"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Errusiera"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Eslovakiera"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Esloveniera"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albaniera"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbiera"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serbiera"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Suediera"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Swahilia"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamilera"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telegu hizkuntza"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Thailandiera"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turkiera"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatarera"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurt"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukrainera"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdua"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnamamera"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Txinera (sinpletua)"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Txinera (tradizionala)"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Idatzi balio zuzena."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Idatzi baliozko URL bat."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Sartu baliozko osoko zenbakia."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Gehitu baleko email helbide bat"
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Idatzi hizki, zenbaki, azpimarra edo marratxoz osatutako baleko 'slug' bat."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Sartu IPv4 helbide zuzena."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Sartu IPv6 helbide zuzena"
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Sartu IPv4 edo IPv6 helbide zuzena."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Idatzi komaz bereizitako digitoak soilik."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Ziurtatu balioak %(limit_value)s gutxienez karaktere dituela (orain "
-"%(show_value)s dauzka)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Ziurtatu balio hau %(limit_value)s baino txikiagoa edo berdina dela."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Ziurtatu balio hau %(limit_value)s baino handiagoa edo berdina dela."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Ziurtatu balio honek gutxienez karaktere %(limit_value)d duela "
-"(%(show_value)d ditu)."
-msgstr[1] ""
-"Ziurtatu balio honek gutxienez %(limit_value)d karaktere dituela "
-"(%(show_value)d ditu)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Ziurtatu balio honek gehienez karaktere %(limit_value)d duela "
-"(%(show_value)d ditu)."
-msgstr[1] ""
-"Ziurtatu balio honek gehienez %(limit_value)d karaktere dituela "
-"(%(show_value)d ditu)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"%(date_field)s eremuan %(lookup)s egiteko %(field_name)s bakarra izan behar "
-"da."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "eta"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(field_label)s hori daukan %(model_name)s dagoeneko existitzen da."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "%(value)r balioa ez da baliozko aukera."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Eremu hau ezin daiteke hutsa izan (null)."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Eremu hau ezin da hutsik egon."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Eremuaren mota: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Zenbaki osoa"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "'%(value)s' balioak osoko zenbakia izan behar du."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "'%(value)s' balioak True edo False izan behar du."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolearra (egia ala gezurra)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Katea (%(max_length)s gehienez)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Komaz bereiztutako zenbaki osoak"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"'%(value)s' balioak ez dauka data formatu zuzena. Formatu zuzena UUUU-HH-EE "
-"da."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"'%(value)s' balioak formatu zuzena (UUUU-HH-EE) dauka, baina ez da data "
-"zuzen bat."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Data (ordurik gabe)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"'%(value)s' balioak ez dauka formatu zuzena. Formatu zuzena UUUU-HH-EE .\n"
-"OO:MM[:ss[.uuuuuu]][TZ] da."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"'%(value)s' balioak formatu zuzena dauka (UUUU-HH-EE OO:MM[:ss[.uuuuuu]]"
-"[TZ]),\n"
-"baina ez da data/ordu zuzena."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Data (orduarekin)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "'%(value)s' balioak zenbaki hamartarra izan behar du."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Zenbaki hamartarra"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Eposta helbidea"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Fitxategiaren bidea"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "'%(value)s' balioak koma higikorreko zenbakia izan behar du."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Koma higikorreko zenbakia (float)"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Zenbaki osoa (handia 8 byte)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 helbidea"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP helbidea"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "'%(value)s' balioa None, True edo False izan behar da."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolearra (egia, gezurra edo hutsa[None])"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Osoko positiboa"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Osoko positibo txikia"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (gehienez %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Osoko txikia"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Testua"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"'%(value)s' balioak ez dauka formatu zuzena. OO:MM[:ss[.uuuuuu]] fotmatuan "
-"egon behar da."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"'%(value)s' balioak formatu zuzena dauka (OO:MM[:ss[.uuuuuu]]) baina ez da "
-"ordu \n"
-"zuzena"
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Ordua"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Datu bitar gordinak"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Fitxategia"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Irudia"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "Ez dago %(pk)r gakoa duen %(model)s instantziarik."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "1-N (mota erlazionatutako eremuaren arabera)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Bat-bat erlazioa"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "M:N erlazioa"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Eremu hau beharrezkoa da."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Idatzi zenbaki oso bat."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Idatzi zenbaki bat."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Ziurtatu digitu %(max)s baino gehiago ez dagoela guztira."
-msgstr[1] "Ziurtatu %(max)s digitu baino gehiago ez dagoela guztira."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Ziurtatu ez dagoela digitu %(max)s baino gehiago komaren atzetik."
-msgstr[1] "Ziurtatu ez dagoela %(max)s digitu baino gehiago komaren atzetik."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] "Ziurtatu ez dagoela digitu %(max)s baino gehiago komaren aurretik."
-msgstr[1] "Ziurtatu ez dagoela %(max)s digitu baino gehiago komaren aurretik."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Idatzi baliozko data bat."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Idatzi baliozko ordu bat."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Idatzi baliozko data/ordua."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Ez da fitxategirik bidali. Egiaztatu inprimakiaren kodeketa-mota."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Ez da fitxategirik bidali."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Bidalitako fitxategia hutsik dago."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Ziurtatu fitxategi izen honek gehienez karaktere %(max)d duela (%(length)d "
-"ditu)."
-msgstr[1] ""
-"Ziurtatu fitxategi izen honek gehienez %(max)d karaktere dituela (%(length)d "
-"ditu)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Mesedez, igo fitxategi bat edo egin klik garbitu botoian, ez biak."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Bidali baliozko irudia. Zuk bidalitako fitxategia ez da irudia edo akatsa "
-"dauka."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Hautatu baliozko aukera bat. %(value)s ez dago erabilgarri."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Idatzi balio-zerrenda bat."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(%(name)s eremu ezkutua) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Bidali inprimaki %d ala gutxiago, mesedez."
-msgstr[1] "Bidali %d inprimaki ala gutxiago, mesedez."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Ordena"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Ezabatu"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Zuzendu bikoiztketa %(field)s eremuan."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Zuzendu bikoizketa %(field)s eremuan. Bakarra izan behar da."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Zuzendu bakarra izan behar den%(field_name)s eremuarentzako bikoiztutako "
-"data %(lookup)s egiteko %(date_field)s eremuan"
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Zuzendu hurrengo balio bikoiztuak."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Barneko gakoa eta gurasoaren gakoa ez datoz bat."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Hautatu aukera zuzen bat. Hautatutakoa ez da zuzena."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" ez da balio egokia lehen mailako gakoentzat."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Bat baino gehiago hautatzeko, sakatu \"Kontrol\" tekla edo \"Command\" Mac "
-"batean."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s ezin da interpretatu %(current_timezone)s ordu-eremuan;\n"
-"baliteke ez existitzea edo anbiguoa izatea"
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Orain"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Aldatu"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Garbitu"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Ezezaguna"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Bai"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Ez"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "bai,ez,agian"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "byte %(size)d "
-msgstr[1] "%(size)d byte"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "gauerdia"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "eguerdia"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Astelehena"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Asteartea"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Asteazkena"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Osteguna"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Ostirala"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Larunbata"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Igandea"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Al"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Ar"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Az"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Og"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Ol"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Lr"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Ig"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Urtarrila"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Otsaila"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Martxoa"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Apirila"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Maiatza"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Ekaina"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Uztaila"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Abuztua"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Iraila"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Urria"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Azaroa"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Abendua"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "urt"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "ots"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "api"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "eka"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "uzt"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "abu"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "ira"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "urr"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "aza"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "abe"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Urt."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Ots."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Mar."
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Api."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Mai."
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Eka."
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Uzt."
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Abu."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Ira."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Urr."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Aza."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Abe."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Urtarrila"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Otsaila"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Martxoa"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Apirila"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Maiatza"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Ekaina"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Uztaila"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Abuztua"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Iraila"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Urria"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Azaroa"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Abendua"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Ezin izan da Pillow inportatu, ezta PIL ere: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "PIL liburutegiaren '_imaging' modulua ezin izan da inportatu: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Hau ez da baliozko IPv6 helbidea."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "edo"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "urte %d"
-msgstr[1] "%d urte"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "hilabete %d"
-msgstr[1] "%d hilabete"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "aste %d"
-msgstr[1] "%d aste"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "egun %d"
-msgstr[1] "%d egun"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "ordu %d"
-msgstr[1] "%d ordu"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "minutu %d"
-msgstr[1] "%d minutu"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minutu"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Direktorio zerrendak ez daude baimenduak."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" ez da existitzen"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "%(directory)s zerrenda"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Ez da urterik zehaztu"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Ez da hilabeterik zehaztu"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Ez da egunik zehaztu"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Ez da asterik zehaztu"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Ez dago %(verbose_name_plural)s"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Etorkizuneko %(verbose_name_plural)s ez dago aukeran \n"
-"%(class_name)s.alloe_future False delako"
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "%(datestr)s data string okerra '%(format)s' formaturako"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Bilaketarekin bat datorren %(verbose_name)s-rik ez dago"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Orria ez da azkena, hortaz ezin da osokora (int) biurtu."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Orri baliogabea (%(page_number)s):%(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Zerrenda hutsa eta '%(class_name)s.allow_empty' False da"
diff --git a/lib/python2.7/site-packages/django/conf/locale/eu/__init__.py b/lib/python2.7/site-packages/django/conf/locale/eu/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/eu/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/eu/formats.py b/lib/python2.7/site-packages/django/conf/locale/eu/formats.py
deleted file mode 100644
index 5b768ea..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/eu/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = r'Yeko M\re\n d\a'
-TIME_FORMAT = 'H:i:s'
-# DATETIME_FORMAT =
-# YEAR_MONTH_FORMAT =
-# MONTH_DAY_FORMAT =
-SHORT_DATE_FORMAT = 'Y M j'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/fa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/fa/LC_MESSAGES/django.mo
deleted file mode 100644
index 9bb8d7d..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/fa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/fa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/fa/LC_MESSAGES/django.po
deleted file mode 100644
index 742fc1e..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/fa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1309 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Arash Fazeli <a.fazeli@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# M.Hossein Mojtahedi <Mhm5000@gmail.com>, 2013
-# Reza Mohammadi <reza@teeleh.ir>, 2013
-# Saeed <sd.javadi@gmail.com>, 2011
-# Sina Cheraghi <sinacher@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-11-05 08:50+0000\n"
-"Last-Translator: Reza Mohammadi <reza@teeleh.ir>\n"
-"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/"
-"fa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "آفریکانس"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "عربی"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "آذربایجانی"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "بلغاری"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "بلاروس"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "بنگالی"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "برتون"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "بوسنیایی"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "کاتالونیایی"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "چکی"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "ویلزی"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "دانمارکی"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "آلمانی"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "یونانی"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "انگلیسی"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "انگلیسی بریتیش"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "اسپرانتو"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "اسپانیایی"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "اسپانیایی آرژانتینی"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "اسپانیولی مکزیکی"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "نیکاراگوئه اسپانیایی"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "ونزوئلا اسپانیایی"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "استونی"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "باسکی"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "فارسی"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "فنلاندی"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "فرانسوی"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "فریزی"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "ایرلندی"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "گالیسیایی"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "عبری"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "هندی"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "کرواتی"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "مجاری"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "اینترلینگوا"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "اندونزیایی"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "ایسلندی"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "ایتالیایی"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "ژاپنی"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "گرجی"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "قزاقستان"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "خمری"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "کناده‌ای"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "کره‌ای"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "لوگزامبورگی"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "لیتوانی"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "لتونیایی"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "مقدونی"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "مالایایی"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "مغولی"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "برمه‌ای"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "نروژی Bokmal"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "نپالی"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "هلندی"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "نروژی Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "آسی"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "پنجابی"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "لهستانی"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "پرتغالی"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "پرتغالیِ برزیل"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "رومانی"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "روسی"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "اسلواکی"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "اسلووِنی"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "آلبانیایی"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "صربی"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "صربی لاتین"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "سوئدی"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "سواحیلی"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "تامیلی"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "تلوگویی"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "تایلندی"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "ترکی"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "تاتار"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "ادمورت"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "اکراینی"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "اردو"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "ویتنامی"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "چینی ساده‌شده"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "چینی سنتی"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "یک مقدار معتبر وارد کنید."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "یک نشانی اینترنتی معتبر وارد کنید."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "یک عدد معتبر وارد کنید."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "یک ایمیل آدرس معتبر وارد کنید."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "یک 'slug' معتبر شامل حروف، ارقام، خط زیر و یا خط تیره وارد کنید."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "یک نشانی IPv4 معتبر وارد کنید."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "یک آدرس معتبر IPv6 وارد کنید."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "IPv4 یا IPv6 آدرس معتبر وارد کنید."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "فقط ارقام جدا شده با کاما وارد کنید."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "مطمئن شوید مقدار %(limit_value)s است. (اکنون %(show_value)s می باشد)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "مطمئن شوید این مقدار کوچکتر و یا مساوی %(limit_value)s است."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "مطمئن شوید این مقدار بزرگتر و یا مساوی %(limit_value)s است."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"طول این مقدار باید حداقل %(limit_value)d کاراکتر باشد (طولش %(show_value)d "
-"است)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"طول این مقدار باید حداکثر %(limit_value)d کاراکتر باشد (طولش %(show_value)d "
-"است)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s باید برای %(date_field)s یکتا باشد %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "و"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s با این %(field_label)s از قبل موجود است."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "مقدار %(value)r انتخاب معتبری نیست. "
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "این فیلد نمی تواند پوچ باشد."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "این فیلد نمی تواند خالی باشد."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "فیلد با نوع: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "عدد صحیح"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "مقدار «%(value)s» باید عدد طبیعی باشد."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "مقدار «%(value)s» باید یا True باشد و یا False."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "بولی (درست یا غلط)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "رشته (تا %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "اعداد صحیح جدا-شده با ویلگول"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"مقدار تاریخ «%(value)s» در قالب نادرستی وارد شده است. باید در قالب YYYY-MM-"
-"DD باشد."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"مقدار تاریخ «%(value)s» با اینکه در قالب درستی (YYYY-MM-DD) است ولی تاریخ "
-"ناممکنی را نشان می‌دهد."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "تاریخ (بدون زمان)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"مقدار «%(value)s» در قالب نادرستی وارد شده است. باید در قالب YYYY-MM-DD HH:MM"
-"[:ss[.uuuuuu]][TZ]‎ باشد."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"مقدار «%(value)s» با اینکه در قالب درستی (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]‎) است ولی تاریخ/زمان ناممکنی را نشان می‌دهد."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "تاریخ (با زمان)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "مقدار «%(value)s» باید عدد باشد."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "عدد دهدهی"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "نشانی پست الکترونیکی"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "مسیر پرونده"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "مقدار «%(value)s» باید عدد حقیقی باشد."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "عدد اعشاری"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "بزرگ (8 بایت) عدد صحیح"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 آدرس"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "نشانی IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "مقدار «%(value)s» باید یا None باشد یا True و یا False."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "‌بولی (درست، نادرست یا پوچ)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "عدد صحیح مثبت"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "مثبت عدد صحیح کوچک"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "تیتر (حداکثر %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "عدد صحیح کوچک"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "متن"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"مقدار «%(value)s» در قالب نادرستی وارد شده است. باید در قالب HH:MM[:ss[."
-"uuuuuu]]‎ باشد."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"مقدار «%(value)s» با اینکه در قالب درستی (HH:MM[:ss[.uuuuuu]]‎) است ولی زمان "
-"ناممکنی را نشان می‌دهد."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "زمان"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "نشانی اینترنتی"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "دادهٔ دودویی خام"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "پرونده"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "تصویر"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "%(model)s ای با کلید اصلی %(pk)r وجود ندارد."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "کلید خارجی ( نوع بر اساس فیلد رابط مشخص میشود )"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "رابطه یک به یک "
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "رابطه چند به چند"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "این فیلد لازم است."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "به طور کامل یک عدد وارد کنید."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "یک عدد وارد کنید."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "نباید در مجموع بیش از %(max)s رقم داشته باشد."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "نباید بیش از %(max)s رقم اعشار داشته باشد."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] "نباید بیش از %(max)s رقم قبل ممیز داشته باشد."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "یک تاریخ معتبر وارد کنید."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "یک زمان معتبر وارد کنید."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "یک تاریخ/زمان معتبر وارد کنید."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "پرونده‌ای ارسال نشده است. نوع کدگذاری فرم را بررسی کنید."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "پرونده‌ای ارسال نشده است."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "پروندهٔ ارسال‌شده خالیست."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"طول عنوان پرونده باید حداقل %(max)d کاراکتر باشد (طولش %(length)d است)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "لطفا یا فایل ارسال کنید یا دکمه پاک کردن را علامت بزنید، نه هردو."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"یک تصویر معتبر بارگذاری کنید. پرونده‌ای که بارگذاری کردید یا تصویر نبوده و یا "
-"تصویری مخدوش بوده است."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "یک گزینهٔ معتبر انتخاب کنید. %(value)s از گزینه‌های موجود نیست."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "فهرستی از مقادیر وارد کنید."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(فیلد پنهان %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":؟.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "اطلاعات ManagementForm ناقص است و یا دستکاری شده است."
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "لطفاً %d یا کمتر فرم بفرستید."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "ترتیب:"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "حذف"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "لطفا محتوی تکراری برای %(field)s را اصلاح کنید."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "لطفا محتوی تکراری برای %(field)s را که باید یکتا باشد اصلاح کنید."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"لطفا اطلاعات تکراری %(field_name)s را اصلاح کنید که باید در %(lookup)s "
-"یکتا باشد %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "لطفا مقدار تکراری را اصلاح کنید."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "کلید های درون خطی خارجی با هم مطابقت ندارند ."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "یک گزینهٔ معتبر انتخاب کنید. آن گزینه از گزینه‌های موجود نیست."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "‏«‎%(pk)s» مقدار معتبری برای کلید اصلی نیست."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"برای انتخاب بیش از یکی \"Control\"، یا \"Command\" روی Mac، را پایین نگه "
-"دارید."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s نمیتواند در %(current_timezone)s معنی شود.شاید این زمان مبهم "
-"است و یا وجود ندارد."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "در حال حاضر"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "تغییر"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "پاک کردن"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "ناشناخته"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "بله"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "خیر"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "بله،خیر،شاید"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d بایت"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "ب.ظ."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "صبح"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "بعد از ظهر"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "صبح"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "نیمه شب"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "ظهر"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "دوشنبه"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "سه شنبه"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "چهارشنبه"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "پنجشنبه"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "جمعه"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "شنبه"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "یکشنبه"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "دوشنبه"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "سه‌شنبه"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "چهارشنبه"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "پنجشنبه"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "جمعه"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "شنبه"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "یکشنبه"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "ژانویه"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "فوریه"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "مارس"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "آوریل"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "مه"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "ژوئن"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "ژوئیه"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "اوت"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "سپتامبر"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "اکتبر"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "نوامبر"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "دسامبر"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ژانویه"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "فوریه"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "مارس"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "آوریل"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "مه"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "ژوئن"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "ژوئیه"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "اوت"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "سپتامبر"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "اکتبر"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "نوامبر"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "دسامبر"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "ژانویه"
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "فوریه"
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "مارس"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "آوریل"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "مه"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "ژوئن"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "جولای"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "اوت"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "سپتامبر"
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "اکتبر"
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "نوامبر"
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "دسامبر"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "ژانویه"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "فوریه"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "مارس"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "آوریل"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "مه"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "ژوئن"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "جولای"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "اوت"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "سپتامبر"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "اکتبر"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "نوامبر"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "دسامبر"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "نه Pillow و نه PIL کار نکردند: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "ماژول '_imaging' از PIL کار نکرد: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "این مقدار آدرس IPv6 معتبری نیست."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "یا"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr "،"
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d سال"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d ماه"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d هفته"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d روز"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d ساعت"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d دقیقه"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 دقیقه"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "شاخص دایرکتوری اینجا قابل قبول نیست."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" وجود ندارد"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "فهرست %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "هیچ سالی مشخص نشده است"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "هیچ ماهی مشخص نشده است"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "هیچ روزی مشخص نشده است"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "هیچ هفته‌ای مشخص نشده است"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "هیچ %(verbose_name_plural)s موجود نیست"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"آینده %(verbose_name_plural)s امکان پذیر نیست زیرا مقدار %(class_name)s."
-"allow_future برابر False تنظیم شده است."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "متن تاریخ '%(datestr)s' با فرمت '%(format)s' غلط است."
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "هیچ %(verbose_name)s ای مطابق جستجو پیدا نشد."
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Page مقدار 'last' نیست,همچنین قابل تبدیل به عدد هم نمیباشد."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "صفحه‌ی اشتباه (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr " لیست خالی است و '%(class_name)s.allow_empty' برابر False است."
diff --git a/lib/python2.7/site-packages/django/conf/locale/fa/__init__.py b/lib/python2.7/site-packages/django/conf/locale/fa/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/fa/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/fa/formats.py b/lib/python2.7/site-packages/django/conf/locale/fa/formats.py
deleted file mode 100644
index 5682c41..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/fa/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j F Y'
-TIME_FORMAT = 'G:i:s'
-DATETIME_FORMAT = 'j F Y، ساعت G:i:s'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'Y/n/j'
-SHORT_DATETIME_FORMAT = 'Y/n/j،‏ G:i:s'
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/fi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/fi/LC_MESSAGES/django.mo
deleted file mode 100644
index 7654039..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/fi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/fi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/fi/LC_MESSAGES/django.po
deleted file mode 100644
index 9cf7148..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/fi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1304 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antti Kaihola <antti-2013@ambitone.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# nanook <klaus.dahlen@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Finnish (http://www.transifex.com/projects/p/django/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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "arabia"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azeri"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "bulgaria"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "bengali"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "bosnia"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "katalaani"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "tšekki"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "wales"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "tanska"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "saksa"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "kreikka"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "englanti"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "brittienglanti"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "espanja"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Argentiinan espanja"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Meksikon espanja"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Nicaraguan espanja"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "viro"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "baski"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "persia"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "suomi"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "ranska"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "friisi"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "irlanti"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "galicia"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "heprea"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "kroatia"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "unkari"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "indonesia"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "islanti"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "italia"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "japani"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "georgia"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "korea"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "liettua"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "latvia"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "makedonia"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "malajalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "mongolia"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "norja (kirjanorja)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "hollanti"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "norja (uusnorja)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "punjabin kieli"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "puola"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "portugali"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "brasilian portugali"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "romania"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "venäjä"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "slovakia"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "slovenia"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "albaani"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "serbia"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "serbian latina"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "ruotsi"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "tamili"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "thain kieli"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "turkki"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ukraina"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "vietnam"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "kiina (yksinkertaistettu)"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "kiina (perinteinen)"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Syötä oikea arvo."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Syötä oikea URL-osoite."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Tässä voidaan käyttää vain kirjaimia (a-z), numeroita (0-9) sekä ala- ja "
-"tavuviivoja (_ -)."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Syötä kelvollinen IPv4-osoite."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr ""
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr ""
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Vain pilkulla erotetut kokonaisluvut kelpaavat tässä."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Tämän arvon on oltava %(limit_value)s (nyt %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Tämän arvon on oltava enintään %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Tämän luvun on oltava vähintään %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"\"%(field_name)s\"-kentän on oltava uniikki suhteessa: %(date_field)s "
-"%(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "ja"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s jolla on tämä %(field_label)s, on jo olemassa."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Tämän kentän arvo ei voi olla \"null\"."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Tämä kenttä ei voi olla tyhjä."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Kenttä tyyppiä: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Kokonaisluku"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Totuusarvo: joko tosi (True) tai epätosi (False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Merkkijono (enintään %(max_length)s merkkiä)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Pilkulla erotetut kokonaisluvut"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Päivämäärä (ilman kellonaikaa)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Päivämäärä ja kellonaika"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Desimaaliluku"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Sähköpostiosoite"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Tiedostopolku"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Liukuluku"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Suuri (8-tavuinen) kokonaisluku"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP-osoite"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Totuusarvo: joko tosi (True), epätosi (False) tai ei mikään (None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Tekstiä"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Kellonaika"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL-osoite"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr ""
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr ""
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Vierasavain (tyyppi määräytyy liittyvän kentän mukaan)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Yksi-yhteen relaatio"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Moni-moneen relaatio"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Tämä kenttä vaaditaan."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Syötä kokonaisluku."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Syötä luku."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Syötä oikea päivämäärä."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Syötä oikea kellonaika."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Syötä oikea pvm/kellonaika."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Tiedostoa ei lähetetty. Tarkista lomakkeen koodaus (encoding)."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Yhtään tiedostoa ei ole lähetetty."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Lähetetty tiedosto on tyhjä."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Voit joko lähettää tai poistaa tiedoston, muttei kumpaakin samalla."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Kuva ei kelpaa. Lähettämäsi tiedosto ei ole kuva, tai tiedosto on vioittunut."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Valitse oikea vaihtoehto. %(value)s ei ole vaihtoehtojen joukossa."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Syötä lista."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Järjestys"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Poista"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Korjaa kaksoisarvo kentälle %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Ole hyvä ja korjaa uniikin kentän %(field)s kaksoisarvo."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Korjaa allaolevat kaksoisarvot."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Liittyvä perusavain ei vastannut vanhemman perusavainta."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Valitse oikea vaihtoehto. Valintasi ei löydy vaihtoehtojen joukosta."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-" Pidä \"Ctrl\"-näppäin (tai Macin \"Command\") pohjassa valitaksesi useita "
-"vaihtoehtoja."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Tällä hetkellä"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Muokkaa"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Poista"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Tuntematon"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Kyllä"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Ei"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "kyllä,ei,ehkä"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d tavu"
-msgstr[1] "%(size)d tavua"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "ip"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "ap"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "IP"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AP"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "keskiyö"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "keskipäivä"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "maanantai"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "tiistai"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "keskiviikko"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "torstai"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "perjantai"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "lauantai"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "sunnuntai"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "ma"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "ti"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "ke"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "to"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "pe"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "la"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "su"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "tammikuu"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "helmikuu"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "maaliskuu"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "huhtikuu"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "toukokuu"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "kesäkuu"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "heinäkuu"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "elokuu"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "syyskuu"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "lokakuu"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "marraskuu"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "joulukuu"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "tam"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "hel"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "maa"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "huh"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "tou"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "kes"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "hei"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "elo"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "syy"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "lok"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "mar"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "jou"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "tammi"
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "helmi"
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "maalis"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "huhti"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "touko"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "kesä"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "heinä"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "elo"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "syys"
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "loka"
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "marras"
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "joulu"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "tammikuuta"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "helmikuuta"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "maaliskuuta"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "huhtikuuta"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "toukokuuta"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "kesäkuuta"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "heinäkuuta"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "elokuuta"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "syyskuuta"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "lokakuuta"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "marraskuuta"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "joulukuuta"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr "tai"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Vuosi puuttuu"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Kuukausi puuttuu"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Päivä puuttuu"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Viikko puuttuu"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s: yhtään kohdetta ei löydy"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"%(verbose_name_plural)s: tulevia kohteita ei löydy, koska %(class_name)s."
-"allow_future:n arvo on False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Päivämäärä '%(datestr)s' ei ole muotoa '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Hakua vastaavaa %(verbose_name)s -kohdetta ei löytynyt"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Sivunumero ei ole 'last' (viimeinen) eikä näytä luvulta."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Lista on tyhjä, ja '%(class_name)s.allow_empty':n arvo on False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/fi/__init__.py b/lib/python2.7/site-packages/django/conf/locale/fi/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/fi/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/fi/formats.py b/lib/python2.7/site-packages/django/conf/locale/fi/formats.py
deleted file mode 100644
index e76144a..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/fi/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j. E Y'
-TIME_FORMAT = 'G.i.s'
-DATETIME_FORMAT = r'j. E Y \k\e\l\l\o G.i.s'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j. F'
-SHORT_DATE_FORMAT = 'j.n.Y'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = ' ' # Non-breaking space
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/fr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/fr/LC_MESSAGES/django.mo
deleted file mode 100644
index 726dbae..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/fr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/fr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/fr/LC_MESSAGES/django.po
deleted file mode 100644
index b98f0f6..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/fr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1355 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# charettes <charette.s@gmail.com>, 2012
-# claudep <claude@2xlibre.net>, 2013
-# claudep <claude@2xlibre.net>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Larlet davidbgk <larlet@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-22 07:26+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: French (http://www.transifex.com/projects/p/django/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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikaans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arabe"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azéri"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgare"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Biélorusse"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengalî"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Breton"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosniaque"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Catalan"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Tchèque"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Gallois"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Dannois"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Allemand"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Grec"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Anglais"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Anglais britannique"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Espéranto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Espagnol"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Espagnol argentin"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Espagnol mexicain"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Espagnol nicaraguayen"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Espagnol vénézuélien"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estonien"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Basque"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Perse"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finlandais"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Français"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frise"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irlandais"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galicien"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hébreu"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Croate"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Hongrois"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonésien"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islandais"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italien"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japonais"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Géorgien"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazakh"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Coréen"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Luxembourgeois"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Lituanien"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Letton"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Macédonien"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayâlam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongole"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Birman"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norvégien Bokmal"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Népalais"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Hollandais"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norvégien Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Ossète"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Penjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Polonais"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugais"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Portugais brésilien"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Roumain"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Russe"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slovaque"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slovène"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albanais"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbe"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serbe latin"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Suédois"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Swahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamoul"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Télougou"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Thaï"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turc"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatar"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Oudmourte"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukrainien"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Ourdou"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnamien"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Chinois simplifié"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Chinois traditionnel"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Saisissez une valeur valide."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Saisissez une URL valide."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Saisissez un nombre entier valide."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Saisissez une adresse de courriel valide."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Ce champ ne doit contenir que des lettres, des nombres, des tirets bas _ et "
-"des traits d'union."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Saisissez une adresse IPv4 valide."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Saisissez une adresse IPv6 valide."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Saisissez une adresse IPv4 ou IPv6 valide."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Saisissez uniquement des chiffres séparés par des virgules."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Assurez-vous que cette valeur est %(limit_value)s (actuellement "
-"%(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-"Assurez-vous que cette valeur est inférieure ou égale à %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-"Assurez-vous que cette valeur est supérieure ou égale à %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Assurez-vous que cette valeur comporte au moins %(limit_value)d caractère "
-"(actuellement %(show_value)d)."
-msgstr[1] ""
-"Assurez-vous que cette valeur comporte au moins %(limit_value)d caractères "
-"(actuellement %(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Assurez-vous que cette valeur comporte au plus %(limit_value)d caractère "
-"(actuellement %(show_value)d)."
-msgstr[1] ""
-"Assurez-vous que cette valeur comporte au plus %(limit_value)d caractères "
-"(actuellement %(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"%(field_name)s doit être unique pour la partie %(lookup)s de %(date_field)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "et"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "Un(e) %(model_name)s avec ce %(field_label)s existe déjà."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "La valeur « %(value)r » n'est pas un choix valide."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Ce champ ne peut pas être vide."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Ce champ ne peut pas être vide."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Champ de type : %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Entier"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "La valeur « %(value)s » doit être un nombre entier."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "La valeur « %(value)s » doit être soit True (vrai), soit False (faux)."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Booléen (soit vrai ou faux)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Chaîne de caractère (jusqu'à %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Des entiers séparés par une virgule"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"Le format de date de la valeur « %(value)s » n'est pas valide. Le format "
-"correct est AAAA-MM-DD."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"Le format de date de la valeur « %(value)s » est correct (AAAA-MM-DD), mais "
-"la date n'est pas valide."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Date (sans l'heure)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"Le format de la valeur « %(value)s » n'est pas valide. Le format correct est "
-"AAAA-MM-DD HH:MM[:ss[.uuuuuu]][FH]."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"Le format de date de la valeur « %(value)s » est correct (AAAA-MM-DD HH:MM[:"
-"ss[.uuuuuu]][FH]), mais la date ou l'heure n'est pas valide."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Date (avec l'heure)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "La valeur « %(value)s » doit être un nombre décimal."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Nombre décimal"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Adresse électronique"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Chemin vers le fichier"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "La valeur « %(value)s » doit être un nombre à virgule flottante."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Nombre à virgule flottante"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Grand entier (8 octets)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Adresse IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Adresse IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-"La valeur « %(value)s » doit valoir soit None (vide), True (vrai) ou False "
-"(faux)."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Booléen (soit vrai, faux ou nul)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Nombre entier positif"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Petit nombre entier positif"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (jusqu'à %(max_length)s car.)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Petit nombre entier"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Texte"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"Le format de la valeur « %(value)s » n'est pas valide. Le format correct est "
-"HH:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"Le format de la valeur « %(value)s » est correct (HH:MM[:ss[.uuuuuu]]), mais "
-"l'heure n'est pas valide."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Heure"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Données binaires brutes"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Fichier"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Image"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "L'instance %(model)s avec la clé primaire %(pk)r n'existe pas."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Clé étrangère (type défini par le champ lié)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Relation un à un"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Relation plusieurs à plusieurs"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Ce champ est obligatoire."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Saisissez un nombre entier."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Saisissez un nombre."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Assurez-vous qu'il n'y a pas plus de %(max)s chiffre au total."
-msgstr[1] "Assurez-vous qu'il n'y a pas plus de %(max)s chiffres au total."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-"Assurez-vous qu'il n'y a pas plus de %(max)s chiffre après la virgule."
-msgstr[1] ""
-"Assurez-vous qu'il n'y a pas plus de %(max)s chiffres après la virgule."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-"Assurez-vous qu'il n'y a pas plus de %(max)s chiffre avant la virgule."
-msgstr[1] ""
-"Assurez-vous qu'il n'y a pas plus de %(max)s chiffres avant la virgule."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Saisissez une date valide."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Saisissez une heure valide."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Saisissez une date et une heure valides."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"Aucun fichier n'a été soumis. Vérifiez le type d'encodage du formulaire."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Aucun fichier n'a été soumis."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Le fichier soumis est vide."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Assurez-vous que ce nom de fichier comporte au plus %(max)d caractère "
-"(actuellement %(length)d)."
-msgstr[1] ""
-"Assurez-vous que ce nom de fichier comporte au plus %(max)d caractères "
-"(actuellement %(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Envoyez un fichier ou cochez la case d'effacement, mais pas les deux."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Téléversez une image valide. Le fichier que vous avez transféré n'est pas "
-"une image ou bien est corrompu."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Sélectionnez un choix valide. %(value)s n'en fait pas partie."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Saisissez une liste de valeurs."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr " :"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(champ masqué %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-"Les données du formulaire ManagementForm sont manquantes ou ont été "
-"manipulées"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Ne soumettez pas plus de %d formulaire."
-msgstr[1] "Ne soumettez pas plus de %d formulaires."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Ordre"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Supprimer"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Corrigez les données à double dans %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Corrigez les données à double dans %(field)s qui doit contenir des valeurs "
-"uniques."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Corrigez les données à double dans %(field_name)s qui doit contenir des "
-"valeurs uniques pour la partie %(lookup)s de %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Corrigez les valeurs à double ci-dessous."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"La clé étrangère en ligne ne correspond pas à la clé primaire de l'instance "
-"parente."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Sélectionnez un choix valide. Ce choix ne fait pas partie de ceux "
-"disponibles."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "« %(pk)s » n'est pas une valeur correcte pour une clé primaire."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Maintenez appuyé « Ctrl », ou « Commande (touche pomme) » sur un Mac, pour "
-"en sélectionner plusieurs."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"La valeur %(datetime)s n'a pas pu être interprétée dans le fuseau horaire "
-"%(current_timezone)s ; elle est peut-être ambigüe ou elle n'existe pas."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Actuellement"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Modifier"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Effacer"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Inconnu"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Oui"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Non"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "oui, non, peut-être"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d octet"
-msgstr[1] "%(size)d octets"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s Kio"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s Mio"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s Gio"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s Tio"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s Pio"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "après-midi"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "matin"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "Après-midi"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "Matin"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "minuit"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "midi"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "lundi"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "mardi"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "mercredi"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "jeudi"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "vendredi"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "samedi"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "dimanche"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "lun"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "mar"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "mer"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "jeu"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "ven"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "sam"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "dim"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "janvier"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "février"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "mars"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "avril"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "mai"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "juin"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "juillet"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "août"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "septembre"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "octobre"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "novembre"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "décembre"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "fév"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "avr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jui"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aoû"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "oct"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "déc"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "fév."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "mars"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "avr."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "mai"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "juin"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "juil."
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "août"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "sep."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "oct."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "déc."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Janvier"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Février"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Mars"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Avril"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Mai"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Juin"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Juillet"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Août"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Septembre"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Octobre"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Novembre"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Décembre"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Impossible d'importer Pillow ou PIL : %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "Le module « _imaging » de PIL n'a pas pu être importé : %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Ceci n'est pas une adresse IPv6 valide."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s…"
-
-#: utils/text.py:224
-msgid "or"
-msgstr "ou"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d année"
-msgstr[1] "%d années"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d mois"
-msgstr[1] "%d mois"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d semaine"
-msgstr[1] "%d semaines"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d jour"
-msgstr[1] "%d jours"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d heure"
-msgstr[1] "%d heures"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minute"
-msgstr[1] "%d minutes"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minute"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Il n'est pas autorisé d'afficher le contenu de ce répertoire."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "« %(path)s » n'existe pas"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Index de %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Aucune année indiquée"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Aucun mois indiqué"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Aucun jour indiqué"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Aucune semaine indiquée"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Pas de %(verbose_name_plural)s disponible"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Pas de %(verbose_name_plural)s disponible dans le futur car %(class_name)s."
-"allow_future est faux (False)."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-"Le format « %(format)s » appliqué à la chaîne date « %(datestr)s » n'est pas "
-"valide"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Aucun objet %(verbose_name)s trouvé en réponse à la requête"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"Page ne vaut pas « last » et ne peut pas non plus être converti en un nombre "
-"entier."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Page non valide (%(page_number)s) : %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Liste vide et %(class_name)s.allow_empty est faux (False)."
diff --git a/lib/python2.7/site-packages/django/conf/locale/fr/__init__.py b/lib/python2.7/site-packages/django/conf/locale/fr/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/fr/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/fr/formats.py b/lib/python2.7/site-packages/django/conf/locale/fr/formats.py
deleted file mode 100644
index f6c8f40..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/fr/formats.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j F Y'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = 'j F Y H:i:s'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'j N Y'
-SHORT_DATETIME_FORMAT = 'j N Y H:i:s'
-FIRST_DAY_OF_WEEK = 1 # Monday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06'
- '%d.%m.%Y', '%d.%m.%y', # Swiss (fr_CH), '25.10.2006', '25.10.06'
- # '%d %B %Y', '%d %b %Y', # '25 octobre 2006', '25 oct. 2006'
-)
-DATETIME_INPUT_FORMATS = (
- '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59'
- '%d/%m/%Y %H:%M:%S.%f', # '25/10/2006 14:30:59.000200'
- '%d/%m/%Y %H:%M', # '25/10/2006 14:30'
- '%d/%m/%Y', # '25/10/2006'
- '%d.%m.%Y %H:%M:%S', # Swiss (fr_CH), '25.10.2006 14:30:59'
- '%d.%m.%Y %H:%M:%S.%f', # Swiss (fr_CH), '25.10.2006 14:30:59.000200'
- '%d.%m.%Y %H:%M', # Swiss (fr_CH), '25.10.2006 14:30'
- '%d.%m.%Y', # Swiss (fr_CH), '25.10.2006'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '\xa0' # non-breaking space
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/fy_NL/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/fy_NL/LC_MESSAGES/django.mo
deleted file mode 100644
index 51c1884..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/fy_NL/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/fy_NL/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/fy_NL/LC_MESSAGES/django.po
deleted file mode 100644
index 07d76a4..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/fy_NL/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1301 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Western Frisian (Netherlands) (http://www.transifex.com/"
-"projects/p/django/language/fy_NL/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fy_NL\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr ""
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr ""
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr ""
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr ""
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr ""
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr ""
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr ""
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr ""
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr ""
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr ""
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr ""
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr ""
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr ""
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr ""
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr ""
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr ""
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr ""
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr ""
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr ""
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr ""
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr ""
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr ""
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr ""
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr ""
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr ""
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr ""
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr ""
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr ""
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr ""
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr ""
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr ""
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr ""
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr ""
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr ""
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr ""
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr ""
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr ""
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr ""
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr ""
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr ""
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr ""
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr ""
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr ""
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr ""
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr ""
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr ""
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr ""
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr ""
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr ""
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr ""
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr ""
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr ""
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr ""
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr ""
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr ""
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr ""
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr ""
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr ""
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr ""
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr ""
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr ""
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr ""
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr ""
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr ""
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr ""
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Jou in falide wearde."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Jou in falide URL."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Jou in falida 'slug' gearsteld mei letters, nûmers, ûnderstreekjes of "
-"koppelteken."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Jou in falide IPv4-adres."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr ""
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr ""
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Jou allinnich sifers, skieden troch komma's."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr ""
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s mei dit %(field_label)s bestiet al."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Dit fjild kin net leech wêze."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr ""
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr ""
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr ""
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr ""
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr ""
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr ""
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr ""
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr ""
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr ""
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr ""
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr ""
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr ""
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr ""
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr ""
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr ""
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr ""
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr ""
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Dit fjild is fereaske."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Jou in folslein nûmer."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Jou in nûmer."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Jou in falide datum."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Jou in falide tiid."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Jou in falide datum.tiid."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"Der is gjin bestân yntsjinne. Kontrolearje it kodearringstype op it "
-"formulier."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Der is gjin bestân yntsjinne."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "It yntsjinne bestân is leech."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Laad in falide ôfbylding op. It bestân dy't jo opladen hawwe wie net in "
-"ôfbylding of in skansearre ôfbylding."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Selektearje in falide kar. %(value)s is net ien fan de beskikbere karren."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Jou in list mei weardes."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Oarder"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr ""
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr ""
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr ""
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Selektearje in falide kar. Dizze kar is net ien fan de beskikbere karren."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Hâld \"Control\", of \"Command\" op in Mac del, om mear as ien te "
-"selektearjen."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr ""
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr ""
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr ""
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr ""
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr ""
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr ""
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr ""
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr ""
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr ""
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr ""
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr ""
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr ""
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr ""
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr ""
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr ""
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr ""
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr ""
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr ""
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr ""
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr ""
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr ""
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "January"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "February"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "March"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "April"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "May"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "June"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "July"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "August"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "September"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "October"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "November"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "December"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "may"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr ""
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr ""
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr ""
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr ""
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr ""
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr ""
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr ""
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr ""
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr ""
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr ""
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr ""
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr ""
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr ""
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr ""
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr ""
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr ""
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr ""
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr ""
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr ""
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr ""
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr ""
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr ""
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr ""
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr ""
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr ""
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr ""
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ""
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr ""
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr ""
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr ""
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr ""
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr ""
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr ""
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/conf/locale/fy_NL/__init__.py b/lib/python2.7/site-packages/django/conf/locale/fy_NL/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/fy_NL/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/fy_NL/formats.py b/lib/python2.7/site-packages/django/conf/locale/fy_NL/formats.py
deleted file mode 100644
index 4355928..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/fy_NL/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-# DATE_FORMAT =
-# TIME_FORMAT =
-# DATETIME_FORMAT =
-# YEAR_MONTH_FORMAT =
-# MONTH_DAY_FORMAT =
-# SHORT_DATE_FORMAT =
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-# DECIMAL_SEPARATOR =
-# THOUSAND_SEPARATOR =
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/ga/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/ga/LC_MESSAGES/django.mo
deleted file mode 100644
index af1f3dc..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ga/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/ga/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/ga/LC_MESSAGES/django.po
deleted file mode 100644
index 6c30123..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ga/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1362 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# John Moylan <john@8t8.eu>, 2013
-# jstafford_rte <John.Stafford@rte.ie>, 2013
-# leftmostcat <leftmostcat@gmail.com>, 2011
-# Michael Thornhill <michael@maithu.com>, 2011-2012
-# Séamus Ó Cúile <seamus.ocuile@oegaillimh.ie>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-11-29 15:41+0000\n"
-"Last-Translator: John Moylan <john@8t8.eu>\n"
-"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/"
-"ga/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ga\n"
-"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
-"4);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Araibis"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Asarbaiseáinis"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgáiris"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Beangáilis"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Boisnis"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Catalóinis"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Seicis"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Breatnais"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Danmhairgis "
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Gearmáinis"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Gréigis"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Béarla"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Béarla na Breataine"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Spáinnis"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Spáinnis na hAirgintíne"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Spáinnis Mheicsiceo "
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Spáinnis Nicearagua"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Eastóinis"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Bascais"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Peirsis"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Fionlainnis"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Fraincis"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Freaslainnis"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Gaeilge"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Gailísis"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Eabhrais"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hiondúis"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Cróitis"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Ungáiris"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indinéisis"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Íoslainnis"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Iodáilis"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Seapáinis"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Seoirsis"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Ciméiris"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Cannadais"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Cóiréis"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Liotuáinis"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Laitvis"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Macadóinis"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Mailéalaimis"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongóilis"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Ioruais Bokmål"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Ollainnis"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Ioruais Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Puinseáibis"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Polainnis"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portaingéilis"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Portaingéilis na Brasaíle"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Rómáinis"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Rúisis"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slóvaicis"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slóivéinis"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albáinis"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Seirbis"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Seirbis (Laidineach)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Sualainnis"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamailis"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Teileagúis"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Téalainnis"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Tuircis"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Úcráinis"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdais"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vítneamais"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Sínis Simplithe"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Sínis Traidisiúnta"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Iontráil luach bailí"
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Iontráil URL bailí."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Iontráil 'slug' bailí a chuimsíonn litreacha, uimhreacha, fostríoca nó "
-"fleiscíní."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Iontráil seoladh IPv4 bailí."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Cuir seoladh bailí IPv6 isteach."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Cuir seoladh bailí IPv4 nó IPv6 isteach."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Ná hiontráil ach digití atá deighilte le camóga."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Cinntigh go bhfuil an luach seo %(limit_value)s (tá sé %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-"Cinntigh go bhfuil an luach seo níos lú ná nó cothrom le %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-"Cinntigh go bhfuil an luach seo níos mó ná nó cothrom le %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "Ní mór a bheith %(field_name)s uathúil ar %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "agus"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "Tá %(model_name)s leis an %(field_label)s seo ann cheana."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Ní cheadaítear luach nialasach sa réimse seo."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Ní cheadaítear luach nialasach sa réimse seo."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Réimse de Cineál: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Slánuimhir"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boole"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Teaghrán (suas go %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Slánuimhireacha camóg-scartha"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Dáta (gan am)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Dáta (le am)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Uimhir deachúlach"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "R-phost"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Conair comhaid"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Snámhphointe"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Mór (8 byte) slánuimhi"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Seoladh IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Seoladh IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boole (Fíor, Bréagach nó Dada)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Slánuimhir dearfach"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Slánuimhir beag dearfach"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (suas go %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Slánuimhir beag"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Téacs"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Am"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Comhaid"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Íomhá"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Eochair Eachtracha (cineál a chinnfear de réir réimse a bhaineann)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Duine-le-duine caidreamh"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Go leor le go leor caidreamh"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Tá an réimse seo riachtanach."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Iontráil slánuimhir."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Iontráil uimhir."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Iontráil dáta bailí."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Iontráil am bailí."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Iontráil dáta/am bailí."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Níor seoladh comhad. Deimhnigh cineál an ionchódaithe ar an bhfoirm."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Níor seoladh aon chomhad."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Tá an comhad a seoladh folamh."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Cuir ceachtar isteach comhad nó an ticbhosca soiléir, ní féidir an dá "
-"sheiceáil."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Uasluchtaigh íomhá bhailí. Níorbh íomhá é an comhad a d'uasluchtaigh tú, nó "
-"b'íomhá thruaillithe é."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Déan rogha bhailí. Ní ceann de na roghanna é %(value)s."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Cuir liosta de luachanna isteach."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Ord"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Scrios"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Le do thoil ceartaigh an sonra dúbail le %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Ceart le do thoil na sonraí a dhúbailt le haghaidh %(field)s, chaithfidh a "
-"bheith uathúil."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Ceart le do thoil na sonraí a dhúbailt le haghaidh %(field_name)s ní mór a "
-"bheith uaithúil le haghaidh an %(lookup)s i %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Le do thoil ceartaigh na luachanna dúbail thíos."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Ní raibh an eochair eachtrach comhoiriúnach leis an tuismitheoir ásc príomh-"
-"eochair."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Déan rogha bhailí. Ní ceann de na roghanna é do roghasa."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Ar ríomhaire Mac, coinnigh an eochair \"Control\" nó \"Command\" síos chun "
-"níos mó ná rud amháin a roghnú."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"Ní féidir an %(datetime)s a léirmhíniú i gcrios ama %(current_timezone)s; "
-"B'fhéidir go bhfuil sé débhríoch nó nach bhfuil sé ann."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Faoi láthair"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Athraigh"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Glan"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Anaithnid"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Tá"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Níl"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "tá, níl, b'fhéidir"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bheart"
-msgstr[1] "%(size)d bheart"
-msgstr[2] "%(size)d bheart"
-msgstr[3] "%(size)d mbeart"
-msgstr[4] "%(size)d beart"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "i.n."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "r.n."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "IN"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "RN"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "meán oíche"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "nóin"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Dé Luain"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Dé Máirt"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Dé Céadaoin"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Déardaoin"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Dé hAoine"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Dé Sathairn"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Dé Domhnaigh"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "L"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "M"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "C"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "D"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "A"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "S"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "D"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Eanáir"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Feabhra"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Márta"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Aibreán"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Bealtaine"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Meitheamh"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Iúil"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Lúnasa"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Meán Fómhair"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Deireadh Fómhair"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Samhain"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Nollaig"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ean"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feabh"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "márta"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "aib"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "beal"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "meith"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "iúil"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "lún"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "mfómh"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "dfómh"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "samh"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "noll"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Ean."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feabh."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Márta"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Aib."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Beal."
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Meith."
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Iúil"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Lún."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "MFómh."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "DFómh."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Samh."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Noll."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Mí Eanáir"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Mí Feabhra"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Mí na Márta"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Mí Aibreáin"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Mí na Bealtaine"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Mí an Mheithimh"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Mí Iúil"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Mí Lúnasa"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Mí Mheán Fómhair"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Mí Dheireadh Fómhair"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Mí na Samhna"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Mí na Nollag"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "nó"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Níl innéacsanna chomhadlann cheadaítear anseo."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "Níl %(path)s ann."
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Innéacs de %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Bliain gan sonrú"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Mí gan sonrú"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Lá gan sonrú"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Seachtain gan sonrú"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Gan %(verbose_name_plural)s ar fáil"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Níl %(verbose_name_plural)s sa todhchaí ar fáil mar tá %(class_name)s."
-"allow_future Bréagach."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-"Teaghrán dáta neamhbhailí '%(datestr)s' nuair formáid '%(format)s' á húsáid"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Níl bhfuarthas %(verbose_name)s le hadhaigh an iarratas"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"Ní 'deireanach' é an leathanach, agus ní féidir é a thiontú go slánuimhir."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Liosta folamh agus tá '%(class_name)s .allow_empty' Bréagach."
diff --git a/lib/python2.7/site-packages/django/conf/locale/ga/__init__.py b/lib/python2.7/site-packages/django/conf/locale/ga/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ga/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/ga/formats.py b/lib/python2.7/site-packages/django/conf/locale/ga/formats.py
deleted file mode 100644
index ce271ab..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ga/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j F Y'
-TIME_FORMAT = 'H:i:s'
-# DATETIME_FORMAT =
-# YEAR_MONTH_FORMAT =
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'j M Y'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = '.'
-THOUSAND_SEPARATOR = ','
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/gl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/gl/LC_MESSAGES/django.mo
deleted file mode 100644
index 810887d..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/gl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/gl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/gl/LC_MESSAGES/django.po
deleted file mode 100644
index 7121157..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/gl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1320 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# fasouto <fsoutomoure@gmail.com>, 2011-2012
-# fonso <fonzzo@gmail.com>, 2011,2013
-# fonso <fonzzo@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Leandro Regueiro <leandro.regueiro@gmail.com>, 2013
-# Oscar Carballal <oscar.carballal@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-09-07 11:41+0000\n"
-"Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
-"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/"
-"gl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "africáner"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Árabe"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "azerí"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Búlgaro"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Bielorruso"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengalí"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretón"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "bosníaco"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Catalán"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Checo"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Galés"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "dinamarqués"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Alemán"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Grego"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Inglés"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "inglés británico"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "español"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "español da Arxentina"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "español de México"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "español de Nicaragua"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "español de Venezuela"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "estoniano"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "vasco"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persa"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "finés"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Francés"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "frisón"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "irlandés"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galego"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebreo"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "croata"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Húngaro"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "indonesio"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "islandés"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "italiano"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "xaponés"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "xeorxiano"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "casaco"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "camboxano"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "canará"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "coreano"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "luxemburgués"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "lituano"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "letón"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "macedonio"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "mala"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "mongol"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "birmano"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "noruegués (bokmål)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "nepalés"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "holandés"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "noruegués (nynorsk)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "osetio"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "panxabiano"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "polaco"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "portugués"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "portugués do Brasil"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "romanés"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "ruso"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "eslovaco"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "esloveno"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "albanés"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "serbio"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "serbio (alfabeto latino)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "sueco"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "suahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "támil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "tai"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "turco"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "tártaro"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "udmurt"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ucraíno"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "vietnamita"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "chinés simplificado"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "chinés tradicional"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Insira un valor válido."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Insira un URL válido."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Introduza un enteiro válido."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Insira un enderezo de correo electrónico válido."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Insira un 'slug' valido composto por letras, números, guións baixos ou "
-"medios."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Insira unha dirección IPv4 válida."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Insira unha dirección IPv6 válida"
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Insira unha dirección IPv4 ou IPv6 válida"
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Insira só díxitos separados por comas."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Asegúrese de que este valor é %(limit_value)s (agora é %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Asegure que este valor é menor ou igual a %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Asegure que este valor é maior ou igual a %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"O campo %(field_name)s debe ser único para a busca %(lookup)s en "
-"%(date_field)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "e"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr ""
-"Xa existe un modelo %(model_name)s coa etiqueta de campo %(field_label)s."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Este campo non pode ser nulo."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Este campo non pode estar baleiro."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Campo de tipo: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Número enteiro"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Valor booleano (verdadeiro ou falso)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Cadea (máximo %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Números enteiros separados por comas"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Data (sen a hora)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Data (coa hora)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Número decimal"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Enderezo electrónico"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Ruta de ficheiro"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Número en coma flotante"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Enteiro grande (8 bytes)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Enderezo IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Enderezo IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Booleano (verdadeiro, falso ou ningún)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Numero enteiro positivo"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Enteiro pequeno positivo"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (ata %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Enteiro pequeno"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Texto"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Hora"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Datos binarios en bruto"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Ficheiro"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Imaxe"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Clave Estranxeira (tipo determinado por un campo relacionado)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Relación un a un"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Relación moitos a moitos"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Requírese este campo."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Insira un número enteiro."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Insira un número."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Insira unha data válida."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Insira unha hora válida."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Insira unha data/hora válida."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"Non se enviou ficheiro ningún. Comprobe o tipo de codificación do formulario."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Non se enviou ficheiro ningún."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "O ficheiro enviado está baleiro."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Ou ben envíe un ficheiro, ou ben marque a casilla de eliminar, pero non "
-"ambas as dúas cousas."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Suba unha imaxe válida. O ficheiro subido non era unha imaxe ou esta estaba "
-"corrupta."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Escolla unha opción válida. %(value)s non se atopa entre as opcións "
-"dispoñibles."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Insira unha lista de valores."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Orde"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Eliminar"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Corrixa os datos duplicados no campo %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Corrixa os datos duplicados no campo %(field)s, que debe ser único."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Corrixa os datos duplicados no campo %(field_name)s, que debe ser único para "
-"a busca %(lookup)s no campo %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Corrixa os valores duplicados de abaixo."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"A clave estranxeira en liña non coincide coa clave primaria da instancia nai."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Escolla unha opción válida. Esta opción non se atopa entre as opcións "
-"dispoñíbeis"
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-" Para seleccionar máis dunha entrada, manteña premida a tecla \"Control\", "
-"ou \"Comando\" nun Mac."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s non se puido interpretar na zona hora horaria "
-"%(current_timezone)s; pode ser ambiguo ou non existir."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Actualmente"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Modificar"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Limpar"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Descoñecido"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Si"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Non"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "si,non,quizais"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "medianoite"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "mediodía"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Luns"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Martes"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Mércores"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Xoves"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Venres"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Sábado"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Domingo"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "lun"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "mar"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "mér"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "xov"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "ven"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "sáb"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "dom"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "xaneiro"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "febreiro"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "marzo"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "abril"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "maio"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "xuño"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "xullo"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "agosto"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "setembro"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "outubro"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "novembro"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "decembro"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "xan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "abr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "xuñ"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "xul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ago"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "set"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "out"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "xan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "mar."
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "abr."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "maio"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "xuño"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "xul."
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "ago."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "set."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "out."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "dec."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "xaneiro"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "febreiro"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "marzo"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "abril"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "maio"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "xuño"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "xullo"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "agosto"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "setembro"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "outubro"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "novembro"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "decembro"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Isto non é un enderezo IPv6 válido."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "ou"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d ano"
-msgstr[1] "%d anos"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d mes"
-msgstr[1] "%d meses"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d semana"
-msgstr[1] "%d semanas"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d día"
-msgstr[1] "%d días"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d hora"
-msgstr[1] "%d horas"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minuto"
-msgstr[1] "%d minutos"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minutos"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Os índices de directorio non están permitidos aquí."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" non existe"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Índice de %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Non se especificou ningún ano"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Non se especificou ningún mes"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Non se especificou ningún día"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Non se especificou ningunha semana"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Non hai %(verbose_name_plural)s dispoñibles"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Non hai dispoñibles %(verbose_name_plural)s futuros/as porque %(class_name)s."
-"allow_futuro é False"
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "A cadea de data '%(datestr)s' non é válida para o formato '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Non se atopou ningún/ha %(verbose_name)s que coincidise coa consulta"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "A páxina non é 'last' nin se pode converter a int."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Páxina non válida (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "A lista está baleira pero '%(class_name)s.allow_empty' é False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/gl/__init__.py b/lib/python2.7/site-packages/django/conf/locale/gl/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/gl/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/gl/formats.py b/lib/python2.7/site-packages/django/conf/locale/gl/formats.py
deleted file mode 100644
index ba7f6c5..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/gl/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = r'j \d\e F \d\e Y'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = r'j \d\e F \d\e Y \á\s H:i'
-YEAR_MONTH_FORMAT = r'F \d\e Y'
-MONTH_DAY_FORMAT = r'j \d\e F'
-SHORT_DATE_FORMAT = 'd-m-Y'
-SHORT_DATETIME_FORMAT = 'd-m-Y, H:i'
-FIRST_DAY_OF_WEEK = 1 # Monday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/he/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/he/LC_MESSAGES/django.mo
deleted file mode 100644
index 187bda7..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/he/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/he/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/he/LC_MESSAGES/django.po
deleted file mode 100644
index 4ca8212..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/he/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1312 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Alex Gaynor <alex.gaynor@gmail.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Meir Kriheli <mkriheli@gmail.com>, 2011-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-11-02 12:31+0000\n"
-"Last-Translator: Meir Kriheli <mkriheli@gmail.com>\n"
-"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "אפריקאנס"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "ערבית"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "אזרית"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "בולגרית"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "בֶּלָרוּסִית"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "בנגאלית"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "בְּרֶטוֹנִית"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "בוסנית"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "קאטלונית"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "צ'כית"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "וולשית"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "דנית"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "גרמנית"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "יוונית"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "אנגלית"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "אנגלית בריטית"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "אספרנטו"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "ספרדית"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "ספרדית ארגנטינית"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "ספרדית מקסיקנית"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "ספרדית ניקרגואה"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "ספרדית ונצואלית"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "אסטונית"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "בסקית"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "פרסית"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "פינית"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "צרפתית"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "פריזית"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "אירית"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "גאליציאנית"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "עברית"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "הינדי"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "קרואטית"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "הונגרית"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "אינטרלינגואה"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "אינדונזית"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "איסלנדית"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "איטלקית"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "יפנית"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "גיאורגית"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "קזחית"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "חמר"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "קאנאדה"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "קוריאנית"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "לוקסמבורגית"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "ליטאית"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "לטבית"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "מקדונית"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "מלאיאלאם"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "מונגולי"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "בּוּרְמֶזִית"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "נורבגית ספרותית"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "נפאלית"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "הולנדית"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "נורבגית חדשה"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "אוסטית"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "פנג'אבי"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "פולנית"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "פורטוגזית"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "פורטוגזית ברזילאית"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "רומנית"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "רוסית"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "סלובקית"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "סלובנית"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "אלבנית"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "סרבית"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "סרבית לטינית"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "שוודית"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "סווהילי"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "טמילית"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "טלגו"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "תאילנדית"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "טורקית"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "טטרית"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "אודמורטית"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "אוקראינית"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "אורדו"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "וייטנאמית"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "סינית פשוטה"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "סינית מסורתית"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "יש להזין ערך חוקי."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "יש להזין URL חוקי."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "יש להזין מספר שלם חוקי."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "נא להזין כתובת דוא\"ל חוקית"
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "יש להזין ערך המכיל אותיות, ספרות, קווים תחתונים ומקפים בלבד."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "יש להזין כתובת IPv4 חוקית."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "יש להזין כתובת IPv6 חוקית."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "יש להזין כתובת IPv4 או IPv6 חוקית."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "יש להזין רק ספרות מופרדות בפסיקים."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "יש לוודא שערך זה הינו %(limit_value)s (כרגע %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "יש לוודא שערך זה פחות מ או שווה ל־%(limit_value)s ."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "יש לוודא שהערך גדול מ או שווה ל־%(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"נא לוודא שערך זה מכיל תו %(limit_value)d לכל הפחות (מכיל %(show_value)d)."
-msgstr[1] ""
-"נא לוודא שערך זה מכיל %(limit_value)d תווים לכל הפחות (מכיל %(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"נא לוודא שערך זה מכיל תו %(limit_value)d לכל היותר (מכיל %(show_value)d)."
-msgstr[1] ""
-"נא לוודא שערך זה מכיל %(limit_value)d תווים לכל היותר (מכיל %(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s חייב להיות ייחודי ל%(lookup)s של ה־%(date_field)s"
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "ו"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s·עם·%(field_label)s·זה קיימת כבר."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "ערך %(value)r אינו אפשרות חוקית."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "שדה זה אינו יכול להיות ריק."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "שדה זה אינו יכול להיות ריק."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "שדה מסוג: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "מספר שלם"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "הערך '%(value)s' חייב להיות מספר שלם."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "הערך '%(value)s' חייב להיות אמת או שקר."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "בוליאני (אמת או שקר)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "מחרוזת (עד %(max_length)s תווים)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "מספרים שלמים מופרדים בפסיקים"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"הערך '%(value)s' מכיל פורמט תאריך לא חוקי. חייב להיות בפורמט YYYY-MM-DD."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr "הערך '%(value)s' בפורמט הנכון (YYYY-MM-DD), אך אינו תאריך חוקי."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "תאריך (ללא שעה)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"הערך '%(value)s' מכיל פורמט לא חוקי. הוא חייב להיות בפורמטYYYY-MM-DD HH:MM[:"
-"ss[.uuuuuu]][TZ]."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"הערך '%(value)s' הוא בפורמט הנכון (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) אך "
-"אינו מהווה תאריך/שעה חוקיים."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "תאריך (כולל שעה)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "הערך '%(value)s' חייב להיות מספר עשרוני."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "מספר עשרוני"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "כתובת דוא\"ל"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "נתיב קובץ"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "הערך '%(value)s' חייב להיות מספר עם נקודה צפה."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "מספר עשרוני"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "מספר שלם גדול (8 בתים)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "כתובת IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "כתובת IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "הערך '%(value)s' חייב להיות None‏, אמת או שקר."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "בוליאני (אמת, שקר או כלום)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "מספר שלם חיובי"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "מספר שלם חיובי קטן"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (עד %(max_length)s תווים)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "מספר שלם קטן"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "טקסט"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"הערך '%(value)s' מכיל פורמט לא חוקי. חייב להיות בפורמט HH:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"הערך '%(value)s' בעל פורמט חוקי (HH:MM[:ss[.uuuuuu]]) אך אינו זמן חוקי."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "זמן"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "מידע בינארי גולמי"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "קובץ"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "תמונה"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "פריט %(model)s עם מפתח ראשי %(pk)r אינו קיים."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Foreign Key (הסוג נקבע לפי השדה המקושר)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "יחס של אחד לאחד"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "יחס של רבים לרבים"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "יש להזין תוכן בשדה זה."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "נא להזין מספר שלם."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "נא להזין מספר."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "נא לוודא שאין יותר מספרה %(max)s בסה\"כ."
-msgstr[1] "נא לוודא שאין יותר מ־%(max)s ספרות בסה\"כ."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "נא לוודא שאין יותר מספרה %(max)s אחרי הנקודה."
-msgstr[1] "נא לוודא שאין יותר מ־%(max)s ספרות אחרי הנקודה."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] "נא לוודא שאין יותר מספרה %(max)s לפני הנקודה העשרונית"
-msgstr[1] "נא לוודא שאין יותר מ־%(max)s ספרות לפני הנקודה העשרונית"
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "יש להזין תאריך חוקי."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "יש להזין שעה חוקית."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "יש להזין תאריך ושעה חוקיים."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "לא נשלח שום קובץ. נא לבדוק את סוג הקידוד של הטופס."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "לא נשלח שום קובץ"
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "הקובץ שנשלח ריק."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] "נא לוודא ששם קובץ זה מכיל תו %(max)d לכל היותר (מכיל %(length)d)."
-msgstr[1] ""
-"נא לוודא ששם קובץ זה מכיל %(max)d תווים לכל היותר (מכיל %(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "נא לשים קובץ או סימן את התיבה לניקוי, לא שניהם."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr "נא להעלות תמונה חוקית. הקובץ שהעלת אינו תמונה או מכיל תמונה מקולקלת."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "יש לבחור אפשרות חוקית. %(value)s אינו בין האפשרויות הזמינות."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "יש להזין רשימת ערכים"
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(שדה מוסתר %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "מידע ManagementForm חסר או התעסקו איתו."
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "נא לשלוח טופס %d לכל היותר."
-msgstr[1] "נא לשלוח %d טפסים לכל היותר."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "מיון"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "מחיקה"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "נא לתקן את הערכים הכפולים ל%(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "נא לתקן את הערכים הכפולים ל%(field)s, שערכים בו חייבים להיות ייחודיים."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"נא לתקן את הערכים הכפולים %(field_name)s, שחייבים להיות ייחודיים ל%(lookup)s "
-"של %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "נא לתקן את הערכים הכפולים למטה."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "המפתח הזר ה־inline לא התאים למפתח הראשי של האב."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "יש לבחור אפשרות חוקית; אפשרות זו אינה אחת מהזמינות."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" אינו ערך חוקי עבור מפתח ראשי."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"יש להחזיק את \"Control\", או \"Command\" על מק, לחוץ כדי לבחור יותר מאחד."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"לא ניתן לפרש את %(datetime)s באזור זמן %(current_timezone)s; הוא עשוי להיות "
-"דו-משמעי או לא קיים."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "עכשיו"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "שינוי"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "לסלק"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "לא ידוע"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "כן"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "לא"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "כן,לא,אולי"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "בית %(size)d "
-msgstr[1] "%(size)d בתים"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s ק\"ב"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s מ\"ב"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s ג\"ב"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s ט\"ב"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s פ\"ב"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "אחר הצהריים"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "בבוקר"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "אחר הצהריים"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "בבוקר"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "חצות"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "12 בצהריים"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "שני"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "שלישי"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "רביעי"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "חמישי"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "שישי"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "שבת"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "ראשון"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "שני"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "שלישי"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "רביעי"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "חמישי"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "שישי"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "שבת"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "ראשון"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "ינואר"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "פברואר"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "מרץ"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "אפריל"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "מאי"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "יוני"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "יולי"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "אוגוסט"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "ספטמבר"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "אוקטובר"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "נובמבר"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "דצמבר"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ינו"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "פבר"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "מרץ"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "אפר"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "מאי"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "יונ"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "יול"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "אוג"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "ספט"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "אוק"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "נוב"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "דצמ"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "יאנ'"
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "פבר'"
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "מרץ"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "אפריל"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "מאי"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "יוני"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "יולי"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "אוג'"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "ספט'"
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "אוק'"
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "נוב'"
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "דצמ'"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "ינואר"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "פברואר"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "מרץ"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "אפריל"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "מאי"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "יוני"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "יולי"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "אוגוסט"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "ספטמבר"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "אוקטובר"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "נובמבר"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "דצמבר"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "לא ניתן לייבא את Pillow או את PIL: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "לא ניתן לייבא את מודול ה־'‎_imaging' של PIL: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "זו אינה כתובת IPv6 חוקית."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "או"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "שנה %d"
-msgstr[1] "%d שנים"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "חודש %d"
-msgstr[1] "%d חודשים"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "שבוע %d"
-msgstr[1] "%d שבועות"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "יום %d"
-msgstr[1] "%d ימים"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "שעה %d"
-msgstr[1] "%d שעות"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "דקה %d"
-msgstr[1] "%d דקות"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 דקות"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "אינדקסים על תיקיה אסורים כאן."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" אינו קיים"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "אינדקס של %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "לא צויינה שנה"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "לא צויין חודש"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "לא צויין יום"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "לא צויין שבוע"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "לא נמצאו %(verbose_name_plural)s"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"לא נמצאו %(verbose_name_plural)s בזמן עתיד מאחר ש-%(class_name)s."
-"allow_future מוגדר False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "מחרוזת תאריך לא חוקית '%(datestr)s' בהתחשב בתחביר '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "לא נמצא/ה %(verbose_name)s התואם/ת לשאילתה"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "העמוד אינו 'last', או אינו ניתן להמרה למספר."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "עמוד לא חוקי (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "רשימה ריקה -ו'%(class_name)s.allow_empty' מוגדר False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/he/__init__.py b/lib/python2.7/site-packages/django/conf/locale/he/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/he/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/he/formats.py b/lib/python2.7/site-packages/django/conf/locale/he/formats.py
deleted file mode 100644
index 1c8b1b5..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/he/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j בF Y'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = 'j בF Y H:i:s'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j בF'
-SHORT_DATE_FORMAT = 'd/m/Y'
-SHORT_DATETIME_FORMAT = 'd/m/Y H:i:s'
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = '.'
-THOUSAND_SEPARATOR = ','
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/hi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/hi/LC_MESSAGES/django.mo
deleted file mode 100644
index 5f0434e..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/hi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/hi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/hi/LC_MESSAGES/django.po
deleted file mode 100644
index f7b4e1f..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/hi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1302 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# आलोक कुमार <alok.kumar@gmail.com>, 2013
-# Chandan kumar <chandankumar.093047@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# pratik kumar <kpratik217@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/"
-"hi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "अफ़्रीकांस"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "अरबी"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "आज़रबाइजानी"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "बलगारियन"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "बेलारूसी"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "बंगाली"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "ब्रेटन"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "बोस्नियन"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "कटलान"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "च्चेक"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "वेल्श"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "दानिश"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "जर्मन"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "ग्रीक"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "अंग्रेज़ी "
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "ब्रिटिश अंग्रेजी"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "एस्परेन्तो"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "स्पानिश"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "अर्जेंटीना स्पैनिश "
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "मेक्सिकन स्पैनिश"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "निकारागुआ स्पैनिश"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "वेनेज़ुएलाई स्पेनिश"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "एस्टोनियन"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "बास्क"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "पारसी"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "फ़िन्निश"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "फ्रेंच"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "फ्रिसियन"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "आयरिश"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "गलिशियन"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "हि‍ब्रू"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "हिंदी"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "क्रोयेशियन"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "हंगेरियन"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "इंतर्लिंगुआ"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "इन्डोनेशियन "
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "आयिस्लान्डिक"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "इटैलियन"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "जपानी"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "ज्योर्जियन"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "कज़ाख"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "ख्मेर"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "कन्‍नड़"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "कोरियन"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "लक्संबर्गी"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "लिथुवेनियन"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "लात्वियन"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "मेसिडोनियन"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "मलयालम"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "मंगोलियन"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "बर्मीज़"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "नार्वेजियन बोकमाल"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "नेपाली"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "डच"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "नार्वेजियन नायनॉर्स्क"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "ओस्सेटिक"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "पंजाबी"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "पोलिश"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "पुर्तगाली"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "ब्रजिलियन पुर्तगाली"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "रोमानियन"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "रूसी"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "स्लोवाक"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "स्लोवेनियन"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "अल्बेनियन्"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "सर्बियन"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "सर्बियाई लैटिन"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "स्वीडिश"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "स्वाहिली"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "तमिल"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "तेलुगु"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "थाई"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "तुर्किश"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "तातार"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "उद्मर्त"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "यूक्रानियन"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "उर्दू"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "वियतनामी"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "सरल चीनी"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "पारम्परिक चीनी"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "एक मान्य मूल्य दर्ज करें"
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "वैध यू.आर.एल भरें ।"
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "वैध डाक पता प्रविष्ट करें।"
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "एक वैध 'काउंटर' वर्णों, संख्याओं,रेखांकित चिन्ह ,या हाइफ़न से मिलाकर दर्ज करें ।"
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "वैध आइ.पि वी 4 पता भरें ।"
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "वैध IPv6 पता दर्ज करें."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "वैध IPv4 या IPv6 पता दर्ज करें."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "अल्पविराम अंक मात्र ही भरें ।"
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"सुनिश्चित करें कि यह मान %(limit_value)s (यह\n"
-" %(show_value)s है) है ।"
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "सुनिश्चित करें कि यह मान %(limit_value)s से कम या बराबर है ।"
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "सुनिश्चित करें यह मान %(limit_value)s से बड़ा या बराबर है ।"
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr " %(date_field)s %(lookup)s के लिए %(field_name)s अद्वितीय होना चाहिए."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "और"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "इस %(field_label)s के साथ एक %(model_name)s पहले से ही उपस्थित है ।"
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "यह मूल्य खाली नहीं हो सकता ।"
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "इस फ़ील्ड रिक्त नहीं हो सकता है."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "फील्ड के प्रकार: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "पूर्णांक"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "बूलियन (सही अथ‌वा गलत)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "स्ट्रिंग (अधिकतम लम्बाई %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "अल्पविराम सीमांकित संख्या"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "तिथि (बिना समय)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "तिथि (समय के साथ)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "दशमलव संख्या"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "ईमेल पता"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "संचिका पथ"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "चल बिन्दु संख्या"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "बड़ा (8 बाइट) पूर्णांक "
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 पता"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "आइ.पि पता"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "बूलियन (सही, गलत या कुछ नहीं)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "धनात्मक पूर्णांक"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "धनात्मक छोटा पूर्णांक"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "स्लग (%(max_length)s तक)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "छोटा पूर्णांक"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "पाठ"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "समय"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "यू.आर.एल"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "फाइल"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "छवि"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "विदेशी कुंजी (संबंधित क्षेत्र के द्वारा प्रकार निर्धारित)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "एक-एक संबंध"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "बहुत से कई संबंध"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "यह क्षेत्र अपेक्षित हैं"
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "एक पूर्ण संख्या दर्ज करें ।"
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "एक संख्या दर्ज करें ।"
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "वैध तिथि भरें ।"
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "वैध समय भरें ।"
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "वैध तिथि/समय भरें ।"
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "कोई संचिका निवेदित नहीं हुई । कृपया कूटलेखन की जाँच करें ।"
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "कोई संचिका निवेदित नहीं हुई ।"
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "निवेदित संचिका खाली है ।"
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "कृपया या फ़ाइल प्रस्तुत करे या साफ जांचपेटी की जाँच करे,दोनों नहीं ."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr "वैध चित्र निवेदन करें । आप के द्वारा निवेदित संचिका अमान्य अथवा दूषित है ।"
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "मान्य इच्छा चयन करें । %(value)s लभ्य इच्छाओं में उप्लब्ध नहीं हैं ।"
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "मूल्य सूची दर्ज करें ।"
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "छाटें"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "मिटाएँ"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "कृपया %(field)s के लिए डुप्लिकेट डेटा को सही करे."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "कृपया %(field)s के डुप्लिकेट डेटा जो अद्वितीय होना चाहिए को सही करें."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"कृपया %(field_name)s के लिए डुप्लिकेट डेटा को सही करे जो %(date_field)s में "
-"%(lookup)s के लिए अद्वितीय होना चाहिए."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "कृपया डुप्लिकेट मानों को सही करें."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "इनलाइन विदेशी कुंजी पैरेंट आवृत्ति प्राथमिक कुंजी से मेल नहीं खाता है ."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "मान्य विकल्प चयन करें । यह विकल्प उपस्थित विकल्पों में नहीं है ।"
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "एक से अधिक का चयन करने के लिए मैक पर \"कमांड\",या\"नियंत्रण\" नीचे दबाए रखें."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(current_timezone)s समय क्षेत्र में %(datetime)s का व्याख्या नहीं कर सकता है, यह "
-"अस्पष्ट हो सकता है या नहीं मौजूद हो सकते हैं."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "फिलहाल"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "बदलें"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "रिक्त करें"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "अनजान"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "हाँ"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "नहीं"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "हाँ, नहीं, शायद"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d बाइट"
-msgstr[1] "%(size)d बाइट"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s केबी "
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s मेबी "
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s जीबी "
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s टीबी"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s पीबी"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "बजे"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "बजे"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "बजे"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "बजे"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "मध्यरात्री"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "दोपहर"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "सोम‌वार"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "मंगलवार"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "बुधवार"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "गुरूवार"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "शुक्रवार"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "शनिवार"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "रविवार"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "सोम"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "मंगल"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "बुध"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "गुरू"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "शुक्र"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "शनि"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "रवि"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "जनवरी"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "फ़रवरी"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "मार्च"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "अप्रैल"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "मई"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "जून"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "जुलाई"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "अगस्त"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "सितमबर"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "अक्टूबर"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "नवमबर"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "दिसमबर"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "जन"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "फ़र"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "मा"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "अप्र"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "मई"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "जून"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "जुल"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "अग"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "सित"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "अक्ट"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "नव"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "दिस्"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "जनवरी."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "फ़रवरी."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "मार्च"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "अप्रैल"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "मई"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "जून"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "जुलाई"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "अग."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "सितम्बर."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "अक्टूबर"
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "नवम्बर."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "दिसम्बर"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "जनवरी"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "फरवरी"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "मार्च"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "अप्रैल"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "मई"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "जून"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "जुलाई"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "अगस्त"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "सितंबर"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "अक्टूबर"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "नवंबर"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "दिसंबर"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "अथवा"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "निर्देशिका अनुक्रमित की अनुमति यहाँ नहीं है."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" मौजूद नहीं है"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "%(directory)s का अनुक्रमणिका"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "कोई साल निर्दिष्ट नहीं किया गया "
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "कोई महीने निर्दिष्ट नहीं किया गया "
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "कोई दिन निर्दिष्ट नहीं किया गया "
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "कोई सप्ताह निर्दिष्ट नहीं किया गया "
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s उपलब्ध नहीं है"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"भविष्य %(verbose_name_plural)s उपलब्ध नहीं है क्योंकि %(class_name)s.allow_future "
-"गलत है."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "तिथि स्ट्रिंग '%(datestr)s' दिया गया प्रारूप '%(format)s' अवैध है "
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr " इस प्रश्न %(verbose_name)s से मेल नहीं खाते है"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "पृष्ठ 'अंतिम' नहीं है और न ही यह एक पूर्णांक के लिए परिवर्तित किया जा सकता है."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "अवैध पन्ना (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "रिक्त सूची और '%(class_name)s.allow_empty' गलत है."
diff --git a/lib/python2.7/site-packages/django/conf/locale/hi/__init__.py b/lib/python2.7/site-packages/django/conf/locale/hi/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/hi/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/hi/formats.py b/lib/python2.7/site-packages/django/conf/locale/hi/formats.py
deleted file mode 100644
index f4fabe0..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/hi/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j F Y'
-TIME_FORMAT = 'g:i:s A'
-# DATETIME_FORMAT =
-# YEAR_MONTH_FORMAT =
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'd-m-Y'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = '.'
-THOUSAND_SEPARATOR = ','
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/hr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/hr/LC_MESSAGES/django.mo
deleted file mode 100644
index 11968fe..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/hr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/hr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/hr/LC_MESSAGES/django.po
deleted file mode 100644
index 3f8183d..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/hr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1329 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# aljosa <aljosa.mohorovic@gmail.com>, 2011,2013
-# Bojan Mihelač <bmihelac@mihelac.org>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ninopoopmap <ninonandroid@gmail.com>, 2013
-# senko <senko.rasic@dobarkod.hr>, 2012
-# Ylodi <stjepan@gmail.com>, 2011
-# zmasek <zlatko.masek@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/"
-"hr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hr\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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikaans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arapski"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azarbejdžanac"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Unesite ispravnu IPv4 adresu."
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Bjeloruski"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengalski"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretonski"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bošnjački"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Katalanski"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Češki"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Velški"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Danski"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Njemački"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Grčki"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Engleski"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Britanski engleski"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Španjolski"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Argentinski španjolski"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Meksički španjolski"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Nikaragvanski Španjolski"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Venezuelanski Španjolski"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estonski"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Baskijski"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Perzijski"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finski"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Francuski"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frizijski"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irski"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galičanski"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebrejski"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Hrvatski"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Mađarski"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonezijski"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islandski"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Talijanski"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japanski"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Gruzijski"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazaški"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Kambođanski"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Koreanski"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Luksemburški"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Litvanski"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Latvijski"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Makedonski"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongolski"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norveški Bokmal"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepalski"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Nizozemski"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norveški Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Pendžabljanin"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Poljski"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugalski"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Brazilski portugalski"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Rumunjski"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Ruski"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slovački"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slovenski"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albanski"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Srpski"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Latinski srpski"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Švedski"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Swahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamilski"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Teluški"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Thai (tajlandski)"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turski"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatarski"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurtski"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukrajinski"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vijetnamski"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Pojednostavljeni kineski"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Tradicionalni kineski"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Unesite ispravnu vrijednost."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Unesite ispravan URL."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Unesite ispravnu e-mail adresu."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Unesite ispravan 'slug' koji se sastoji samo od slova, brojeva, povlaka ili "
-"crtica."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Unesite ispravnu IPv4 adresu."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Unesite ispravnu IPv6 adresu."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Unesite ispravnu IPv4 ili IPv6 adresu."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Unesite samo brojeve razdvojene zarezom."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Osigurajte da ova vrijednost ima %(limit_value)s (trenutno je "
-"%(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Osigurajte da je ova vrijednost manja ili jednaka %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Osigurajte da je ova vrijednost veća ili jednaka %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"%(field_name)s mora biti jedinstven pojam za %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "i"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s sa navedenim %(field_label)s već postoji."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Ovo polje ne može biti null."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Ovo polje ne može biti prazno."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Polje tipa: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Cijeli broj"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (True ili False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Slova (do %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Cijeli brojevi odvojeni zarezom"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Datum (bez vremena/sati)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Datum (sa vremenom/satima)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Decimalni broj"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-mail adresa"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Put do datoteke"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Broj s pomičnim zarezom (floating point number)"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Big (8 byte) integer"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 adresa"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP adresa"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (True, False ili None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Pozitivan cijeli broj"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Pozitivan mali cijeli broj"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "'Slug' (do %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Mali broj"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Tekst"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Vrijeme"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Datoteka"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Slika"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Foreign Key (type determined by related field)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "One-to-one relationship"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Many-to-many relationship"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Unos za ovo polje je obavezan."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Unesite cijeli broj."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Unesite broj."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Unesite ispravan datum."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Unesite ispravno vrijeme."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Unesite ispravan datum/vrijeme."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Datoteka nije poslana. Provjerite 'encoding type' forme."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Datoteka nije poslana."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Poslana datoteka je prazna."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Molimo Vas da pošaljete ili datoteku ili označite izbor, a ne oboje."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Upload-ajte ispravnu sliku. Datoteka koju ste upload-ali ili nije slika ili "
-"je oštečena."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Odaberite iz ponuđenog. %(value)s nije ponuđen kao opcija."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Unesite listu vrijednosti."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Redoslijed:"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Izbriši"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Ispravite duplicirane podatke za %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Molimo ispravite duplicirane podatke za %(field)s, koji moraju biti "
-"jedinstveni."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Molimo ispravite duplicirane podatke za %(field_name)s koji moraju biti "
-"jedinstveni za %(lookup)s u %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Molimo ispravite duplicirane vrijednosti ispod."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "The inline foreign key did not match the parent instance primary key."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Izaberite ispravnu opciju. Ta opcija nije jedna od dostupnih opcija."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Držite \"Control\", ili \"Command\" na Mac-u, da bi odabrali više od jednog "
-"objekta."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s ne može biti interpretirano u vremenskoj zoni "
-"%(current_timezone)s; možda je dvosmisleno ili ne postoji."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Trenutno"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Promijeni"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Isprazni"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Nepoznat pojam"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Da"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Ne"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "da,ne,možda"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d byte-a"
-msgstr[2] "%(size)d byte-a"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "popodne"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "ujutro"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "popodne"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "ujutro"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "ponoć"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "podne"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Ponedjeljak"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Utorak"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Srijeda"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Četvrtak"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Petak"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Subota"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Nedjelja"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Pon"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Uto"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Sri"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Čet"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Pet"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sub"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Ned"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Siječanj"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Veljača"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Ožujak"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Travanj"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Svibanj"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Lipanj"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Srpanj"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Kolovoz"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Rujan"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Listopad"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Studeni"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Prosinac"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "sij."
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "velj."
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "ožu."
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "tra."
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "svi."
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "lip."
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "srp."
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "kol."
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "ruj."
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "lis."
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "stu."
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "pro."
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Sij."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Velj."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Ožu."
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Tra."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Svi."
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Lip."
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Srp."
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Kol."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Ruj."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Lis."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Stu."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Pro."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "siječnja"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "veljače"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "ožujka"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "travnja"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "svibnja"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "lipnja"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "srpnja"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "kolovoza"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "rujna"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "listopada"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "studenoga"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "prosinca"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "ili"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minuta"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Sadržaji direktorija ovdje nisu dozvoljeni."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" ne postoji"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Sadržaj direktorija %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Nije navedena godina"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Nije naveden mjesec"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Nije naveden dan"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Tjedan nije određen"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Nije dostupno: %(verbose_name_plural)s"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"%(verbose_name_plural)s nije dostupno jer je %(class_name)s.allow_future "
-"False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Neispravan datum '%(datestr)s' za format '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "%(verbose_name)s - pretragom nisu pronađeni rezultati za upit"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Stranica nije 'zadnja', niti se može pretvoriti u cijeli broj."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Nevažeća stranica (%(page_number)s):%(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Prazna lista i '%(class_name)s.allow_empty' je False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/hr/__init__.py b/lib/python2.7/site-packages/django/conf/locale/hr/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/hr/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/hr/formats.py b/lib/python2.7/site-packages/django/conf/locale/hr/formats.py
deleted file mode 100644
index 96a724b..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/hr/formats.py
+++ /dev/null
@@ -1,50 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j. E Y.'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = 'j. E Y. H:i'
-YEAR_MONTH_FORMAT = 'F Y.'
-MONTH_DAY_FORMAT = 'j. F'
-SHORT_DATE_FORMAT = 'j.m.Y.'
-SHORT_DATETIME_FORMAT = 'j.m.Y. H:i'
-FIRST_DAY_OF_WEEK = 1
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# Kept ISO formats as they are in first position
-DATE_INPUT_FORMATS = (
- '%Y-%m-%d', # '2006-10-25'
- '%d.%m.%Y.', '%d.%m.%y.', # '25.10.2006.', '25.10.06.'
- '%d. %m. %Y.', '%d. %m. %y.', # '25. 10. 2006.', '25. 10. 06.'
-)
-DATETIME_INPUT_FORMATS = (
- '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
- '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
- '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
- '%Y-%m-%d', # '2006-10-25'
- '%d.%m.%Y. %H:%M:%S', # '25.10.2006. 14:30:59'
- '%d.%m.%Y. %H:%M:%S.%f', # '25.10.2006. 14:30:59.000200'
- '%d.%m.%Y. %H:%M', # '25.10.2006. 14:30'
- '%d.%m.%Y.', # '25.10.2006.'
- '%d.%m.%y. %H:%M:%S', # '25.10.06. 14:30:59'
- '%d.%m.%y. %H:%M:%S.%f', # '25.10.06. 14:30:59.000200'
- '%d.%m.%y. %H:%M', # '25.10.06. 14:30'
- '%d.%m.%y.', # '25.10.06.'
- '%d. %m. %Y. %H:%M:%S', # '25. 10. 2006. 14:30:59'
- '%d. %m. %Y. %H:%M:%S.%f',# '25. 10. 2006. 14:30:59.000200'
- '%d. %m. %Y. %H:%M', # '25. 10. 2006. 14:30'
- '%d. %m. %Y.', # '25. 10. 2006.'
- '%d. %m. %y. %H:%M:%S', # '25. 10. 06. 14:30:59'
- '%d. %m. %y. %H:%M:%S.%f',# '25. 10. 06. 14:30:59.000200'
- '%d. %m. %y. %H:%M', # '25. 10. 06. 14:30'
- '%d. %m. %y.', # '25. 10. 06.'
-)
-
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/hu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/hu/LC_MESSAGES/django.mo
deleted file mode 100644
index 3874878..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/hu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/hu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/hu/LC_MESSAGES/django.po
deleted file mode 100644
index 539a326..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/hu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1333 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Attila Nagy <>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# János Péter Ronkay <transifex@hangya.net>, 2011-2012
-# Máté Őry <orymate@iit.bme.hu>, 2013
-# Szilveszter Farkas <szilveszter.farkas@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/"
-"language/hu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikaans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arab"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "azerbajdzsáni"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bolgár"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Belarusz"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengáli"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Breton"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosnyák"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Katalán"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Cseh"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Walesi"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Dán"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Német"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Görög"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Angol"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Brit angol"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Eszperantó"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Spanyol"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Argentin spanyol"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Mexikói spanyol"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Nicaraguai spanyol"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Venezuelai spanyol"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Észt"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Baszk "
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Perzsa"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finn"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Francia"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Fríz"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Ír"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Gall"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Héber"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Horvát"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Magyar"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonéz"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Izlandi"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Olasz"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japán"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Grúz"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazak"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Koreai"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Luxemburgi"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Litván"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Lett"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Macedón"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malajálam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongol"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Burmai"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Bokmål norvég"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepáli"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Holland"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Nynorsk norvég"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Oszét"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Punjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Lengyel"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugál"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Brazíliai portugál"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Román"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Orosz"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Szlovák"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Szlovén"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albán"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Szerb"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Latin betűs szerb"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Svéd"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Szuahéli"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Thai"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Török"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatár"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurt"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukrán"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnámi"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Egyszerű kínai"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Hagyományos kínai"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Adjon meg egy érvényes értéket."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Adjon meg egy érvényes URL-t."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Írjon be egy érvényes e-mail címet."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Az URL barát cím csak betűket, számokat, aláhúzásokat és kötőjeleket "
-"tartalmazhat."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Írjon be egy érvényes IPv4 címet."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Írjon be egy érvényes IPv6 címet."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Írjon be egy érvényes IPv4 vagy IPv6 címet."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Csak számokat adjon meg, vesszővel elválasztva."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Bizonyosodjon meg arról, hogy az érték %(limit_value)s (jelenleg: "
-"%(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Bizonyosodjon meg arról, hogy az érték %(limit_value)s, vagy kisebb."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Bizonyosodjon meg arról, hogy az érték %(limit_value)s, vagy nagyobb."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Bizonyosodjon meg arról, hogy ez az érték legalább %(limit_value)d karaktert "
-"tartalmaz (jelenlegi hossza: %(show_value)d)."
-msgstr[1] ""
-"Bizonyosodjon meg arról, hogy ez az érték legalább %(limit_value)d karaktert "
-"tartalmaz (jelenlegi hossza: %(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Bizonyosodjon meg arról, hogy ez az érték legfeljebb %(limit_value)d "
-"karaktert tartalmaz (jelenlegi hossza: %(show_value)d)."
-msgstr[1] ""
-"Bizonyosodjon meg arról, hogy ez az érték legfeljebb %(limit_value)d "
-"karaktert tartalmaz (jelenlegi hossza: %(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"%(field_name)s egyedi kell hogy legyen %(lookup)s alapján a dátum mezőn: "
-"%(date_field)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "és"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "Már létezik %(model_name)s ilyennel: %(field_label)s."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Ez a mező nem lehet nulla."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Ez a mező nem lehet üres."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Mezőtípus: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Egész"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Logikai (True vagy False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Karakterlánc (%(max_length)s hosszig)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Vesszővel elválasztott egészek"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Dátum (idő nélkül)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Dátum (idővel)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Tizes számrendszerű (decimális) szám"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-mail cím"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Elérési út"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Lebegőpontos szám"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Nagy egész szám (8 bájtos)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 cím"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP cím"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Logikai (True, False vagy None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Pozitív egész"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Pozitív kis egész"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "URL-barát cím (%(max_length)s hosszig)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Kis egész"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Szöveg"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Idő"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Nyers bináris adat"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Fájl"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Kép"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Idegen kulcs (típusa a kapcsolódó mezőtől függ)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Egy-egy kapcsolat"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Több-több kapcsolat"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Ennek a mezőnek a megadása kötelező."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Adjon meg egy egész számot."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Adj meg egy számot."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Adjon meg egy érvényes dátumot."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Adjon meg egy érvényes időt."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Adjon meg egy érvényes dátumot/időt."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Nem küldött el fájlt. Ellenőrizze a kódolás típusát az űrlapon."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Semmilyen fájl sem került feltöltésre."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "A küldött fájl üres."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Bizonyosodjon meg arról, hogy a fájlnév legfeljebb %(max)d karakterből áll "
-"(jelenlegi hossza: %(length)d)."
-msgstr[1] ""
-"Bizonyosodjon meg arról, hogy a fájlnév legfeljebb %(max)d karakterből áll "
-"(jelenlegi hossza: %(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Küldjön egy új fájlt, vagy jelölje be a törlés négyzetet, de ne mindkettőt "
-"egyszerre."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Töltsön fel egy érvényes képfájlt. A feltöltött fájl nem kép volt, vagy "
-"megsérült."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Válasszon érvényes elemet. '%(value)s' nincs az elérhető lehetőségek között."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Adja meg értékek egy listáját."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Rejtett mező: %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Sorrend"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Törlés"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Javítsa a mezőhöz tartozó duplikált adatokat: %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Javítsa a mezőhöz tartozó duplikált adatokat: %(field)s (egyedinek kell "
-"lenniük)."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Javítsa a mezőhöz tartozó duplikált adatokat: %(field_name)s (egyedinek kell "
-"lenniük %(lookup)s alapján a dátum mezőn: %(date_field)s)."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Javítsa az alábbi duplikált értékeket."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"A beágyazott idegen kulcs nem egyezik meg a szülő példány elsődleges "
-"kulcsával."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Válasszon érvényes elemet. Az Ön választása nincs az elérhető lehetőségek "
-"között."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Tartsa lenyomva a \"Control\"-t (vagy Mac-en a \"Command\"-ot) több elem "
-"kiválasztásához."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s értelmezhetetlen a megadott %(current_timezone)s időzónában; "
-"vagy félreérthető, vagy nem létezik."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Jelenleg"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Módosítás"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Törlés"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Ismeretlen"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Igen"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Nem"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "igen,nem,talán"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bájt"
-msgstr[1] "%(size)d bájt"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "du"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "de"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "DU"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "DE"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "éjfél"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "dél"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "hétfő"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "kedd"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "szerda"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "csütörtök"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "péntek"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "szombat"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "vasárnap"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "hét"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "kedd"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "sze"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "csüt"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "pén"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "szo"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "vas"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "január"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "február"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "március"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "április"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "május"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "június"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "július"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "augusztus"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "szeptember"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "október"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "december"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "már"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "ápr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "máj"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jún"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "júl"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sze"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "febr."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "márc."
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "ápr."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "máj."
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "jún."
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "júl."
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "aug."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "szept."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "okt."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "dec."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "január"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "február"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "március"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "április"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "május"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "június"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "július"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "augusztus"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "szeptember"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "október"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "december"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "vagy"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d év"
-msgstr[1] "%d év"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d hónap"
-msgstr[1] "%d hónap"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d hét"
-msgstr[1] "%d hét"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d nap"
-msgstr[1] "%d nap"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d óra"
-msgstr[1] "%d óra"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d perc"
-msgstr[1] "%d perc"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 perc"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "A könyvtárak listázása itt nincs engedélyezve."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" nem létezik"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "A %(directory)s könyvtár tartalma"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Nincs év megadva"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Nincs hónap megadva"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Nincs nap megadva"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Nincs hét megadva"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Nincsenek elérhető %(verbose_name_plural)s"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Jövőbeli %(verbose_name_plural)s nem elérhetők, mert %(class_name)s."
-"allow_future értéke False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-"'%(datestr)s' érvénytelen a meghatározott formátum alapján: '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Nincs a keresési feltételeknek megfelelő %(verbose_name)s"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Az oldal nem 'last', vagy nem lehet egésszé alakítani."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Érvénytelen oldal (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Üres lista, és '%(class_name)s.allow_empty' értéke False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/hu/__init__.py b/lib/python2.7/site-packages/django/conf/locale/hu/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/hu/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/hu/formats.py b/lib/python2.7/site-packages/django/conf/locale/hu/formats.py
deleted file mode 100644
index 9b6630d..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/hu/formats.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'Y. F j.'
-TIME_FORMAT = 'G.i.s'
-DATETIME_FORMAT = 'Y. F j. G.i.s'
-YEAR_MONTH_FORMAT = 'Y. F'
-MONTH_DAY_FORMAT = 'F j.'
-SHORT_DATE_FORMAT = 'Y.m.d.'
-SHORT_DATETIME_FORMAT = 'Y.m.d. G.i.s'
-FIRST_DAY_OF_WEEK = 1 # Monday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%Y.%m.%d.', # '2006.10.25.'
-)
-TIME_INPUT_FORMATS = (
- '%H.%M.%S', # '14.30.59'
- '%H.%M', # '14.30'
-)
-DATETIME_INPUT_FORMATS = (
- '%Y.%m.%d. %H.%M.%S', # '2006.10.25. 14.30.59'
- '%Y.%m.%d. %H.%M.%S.%f', # '2006.10.25. 14.30.59.000200'
- '%Y.%m.%d. %H.%M', # '2006.10.25. 14.30'
- '%Y.%m.%d.', # '2006.10.25.'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = ' ' # Non-breaking space
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/ia/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/ia/LC_MESSAGES/django.mo
deleted file mode 100644
index 10c0bf6..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ia/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/ia/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/ia/LC_MESSAGES/django.po
deleted file mode 100644
index 8005bfb..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ia/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1310 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Martijn Dekker <mcdutchie@hotmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/"
-"language/ia/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ia\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "arabe"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "azeri"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "bulgaro"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "bengali"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "bosniaco"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "catalano"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "tcheco"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "gallese"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "danese"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "germano"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "greco"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "anglese"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "anglese britannic"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "espaniol"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "espaniol argentin"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "espaniol mexican"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "espaniol nicaraguan"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "estoniano"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "basco"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "persiano"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "finnese"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "francese"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "frison"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "irlandese"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "galiciano"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "hebreo"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "croato"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "hungaro"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "indonesiano"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "islandese"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "italiano"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "japonese"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "georgiano"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "kazakh"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "coreano"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "lituano"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "letton"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "macedone"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "malayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "mongolico"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "norvegiano, bokmål"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "nepali"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "hollandese"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "norvegiano, nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "punjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "polonese"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "portugese"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "portugese brasilian"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "romaniano"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "russo"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "slovaco"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "sloveno"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "albanese"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "serbo"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "serbo latin"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "svedese"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "swahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "tamil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "thailandese"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "turco"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "tartaro"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ukrainiano"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "vietnamese"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "chinese simplificate"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "chinese traditional"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Specifica un valor valide."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Specifica un URL valide."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Specifica un denotation valide, consistente de litteras, numeros, tractos de "
-"sublineamento o tractos de union."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Specifica un adresse IPv4 valide."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Specifica un adresse IPv6 valide."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Specifica un adresse IPv4 o IPv6 valide."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Scribe solmente digitos separate per commas."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Assecura te que iste valor es %(limit_value)s (illo es %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Assecura te que iste valor es inferior o equal a %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Assecura te que iste valor es superior o equal a %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s debe esser unic pro %(lookup)s de %(date_field)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "e"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s con iste %(field_label)s jam existe."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Iste campo non pote esser nulle."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Iste campo non pote esser vacue."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Campo de typo: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Numero integre"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Booleano (ver o false)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Catena (longitude maxime: %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Numeros integre separate per commas"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Data (sin hora)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Data (con hora)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Numero decimal"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Adresse de e-mail"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Cammino de file"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Numero a comma flottante"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Numero integre grande (8 bytes)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Adresse IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Adresse IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Booleano (ver, false o nulle)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Numero integre positive"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Parve numero integre positive"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Denotation (longitude maxime: %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Parve numero integre"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Texto"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Hora"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "File"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Imagine"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Clave estranier (typo determinate per le campo associate)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Relation un a un"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Relation multes a multes"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Iste campo es obligatori."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Specifica un numero integre."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Specifica un numero."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Specifica un data valide."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Specifica un hora valide."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Specifica un data e hora valide."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"Nulle file esseva submittite. Verifica le typo de codification in le "
-"formulario."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Nulle file esseva submittite."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Le file submittite es vacue."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Per favor o submitte un file o marca le quadrato \"rader\", non ambes."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Per favor incarga un imagine valide. Le file que tu incargava o non esseva "
-"un imagine o esseva un imagine corrumpite."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Selige un option valide. %(value)s non es inter le optiones disponibile."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Scribe un lista de valores."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Ordine"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Deler"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Per favor corrige le datos duplicate pro %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Per favor corrige le datos duplicate pro %(field)s, que debe esser unic."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Per favor corrige le datos duplicate pro %(field_name)s, que debe esser unic "
-"pro le %(lookup)s in %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Per favor corrige le sequente valores duplicate."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Le clave estranier incorporate non correspondeva al clave primari del "
-"instantia genitor."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Per favor selige un option valide. Iste option non es inter le optiones "
-"disponibile."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Tene premite \"Control\" o \"Command\" sur un Mac pro seliger plures."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s non poteva esser interpretate in le fuso horari "
-"%(current_timezone)s; illo pote esser ambigue o illo pote non exister."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Actualmente"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Cambiar"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Rader"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Incognite"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Si"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "No"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "si,no,forsan"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "pm."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "am."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "medienocte"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "mediedie"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "lunedi"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "martedi"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "mercuridi"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "jovedi"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "venerdi"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "sabbato"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "dominica"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "lun"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "mar"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "mer"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "jov"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "ven"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "sab"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "dom"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "januario"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "februario"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "martio"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "maio"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "junio"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "julio"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "augusto"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "septembre"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "octobre"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "novembre"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "decembre"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "oct"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Mar."
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Maio"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Junio"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Julio"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Aug."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Oct."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Dec."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Januario"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Februario"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Martio"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Maio"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Junio"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Julio"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Augusto"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Septembre"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Octobre"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Novembre"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Decembre"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "o"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Le indices de directorio non es permittite hic."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" non existe"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Indice de %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Nulle anno specificate"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Nulle mense specificate"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Nulle die specificate"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Nulle septimana specificate"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Il non ha %(verbose_name_plural)s disponibile"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"In le futuro, %(verbose_name_plural)s non essera disponibile perque "
-"%(class_name)s.allow_future es False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Le data '%(datestr)s' es invalide secundo le formato '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Nulle %(verbose_name)s trovate que corresponde al consulta"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Pagina non es 'last', ni pote esser convertite in un numero integre."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Le lista es vacue e '%(class_name)s.allow_empty' es False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/id/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/id/LC_MESSAGES/django.mo
deleted file mode 100644
index 0a473c5..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/id/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/id/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/id/LC_MESSAGES/django.po
deleted file mode 100644
index 4908224..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/id/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1298 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# rodin <romihardiyanto@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arab"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azerbaijani"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgaria"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengali"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosnia"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Catalan"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Ceska"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Wales"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Denmark"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Jerman"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Yunani"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Inggris"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Inggris Britania"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Spanyol"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Spanyol Argentina"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Spanyol Meksiko"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Spanyol Nikaragua"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estonia"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Basque"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persia"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finlandia"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Perancis"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frisia"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irlandia"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galicia"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Ibrani"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Kroasia"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Hungaria"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonesia"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islandia"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italia"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Jepang"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgia"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazakhstan"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Korea"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Lithuania"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Latvia"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Makedonia"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongolia"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norwegia Bokmal"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepal"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Belanda"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norwegia Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Punjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Polandia"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugis"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Portugis Brazil"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Romania"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Rusia"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slovakia"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slovenia"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albania"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbia"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serbia Latin"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Swedia"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Swahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Thailand"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turki"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatar"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukrainia"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnam"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Cina Sederhana"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Cina Tradisionil"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Masukkan nilai yang valid."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Masukkan URL yang valid."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Masukkan alamat email yang valid."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Masukkan 'slug' yang terdiri dari huruf, bilangan, garis bawah, atau tanda "
-"minus."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Masukkan alamat IPv4 yang valid."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Masukkan alamat IPv6 yang valid"
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Masukkan alamat IPv4 atau IPv6 yang valid"
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Hanya masukkan angka yang dipisahkan dengan koma."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Pastikan nilai ini %(limit_value)s (saat ini %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Pastikan nilai ini lebih kecil dari atau sama dengan %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Pastikan nilai ini lebih besar dari atau sama dengan %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s harus unik untuk %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "dan"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s dengan %(field_label)s telah ada."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Field ini tidak boleh null."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Field ini tidak boleh kosong."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Field dengan tipe: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Bilangan Asli"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Nilai Boolean (Salah satu dari True atau False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "String (maksimum %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Bilangan asli yang dipisahkan dengan koma"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Tanggal (tanpa waktu)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Tanggal (dengan waktu)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Bilangan desimal"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Alamat email"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Lokasi berkas"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Bilangan 'floating point'"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Bilangan asli raksasa (8 byte)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Alamat IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Alamat IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (Salah satu dari True, False, atau None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Bilangan asli positif"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Bilangan asli kecil positif"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (hingga %(max_length)s karakter)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Bilangan asli kecil"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Teks"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Waktu"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Berkas"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Gambar"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Kunci Asing (tipe tergantung dari bidang yang berkaitan)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Hubungan satu-ke-satu"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Hubungan banyak-ke-banyak"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Bidang ini tidak boleh kosong."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Masukkan keseluruhan angka bilangan."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Masukkan sebuah bilangan."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Masukkan tanggal yang valid."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Masukkan waktu yang valid."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Masukkan tanggal/waktu yang valid."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Tidak ada berkas yang dikirimkan. Periksa tipe pengaksaraan formulir."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Tidak ada berkas yang dikirimkan."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Berkas yang dikirimkan kosong."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Pilih antara mengirimkan berkas atau menghapus tanda centang pada kotak "
-"centang"
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Unggah gambar yang valid. Berkas yang Anda unggah bukan merupakan berkas "
-"gambar atau gambarnya rusak."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Masukkan pilihan yang valid. %(value)s bukan salah satu dari pilihan yang "
-"tersedia."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Masukkan beberapa nilai."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Urutan"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Hapus"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Perbaiki data ganda untuk %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Perbaiki data ganda untuk %(field)s yang nilainya harus unik."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Perbaiki data ganda untuk %(field_name)s yang nilainya harus unik untuk "
-"pencarian %(lookup)s pada %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Perbaiki nilai ganda di bawah ini."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Kunci asing 'inline' tidak cocok dengan kunci utama 'instance' milik induk."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Masukkan pilihan yang valid. Pilihan tersebut bukan salah satu dari pilihan "
-"yang tersedia."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Tekan \"Control\", atau \"Command\" pada Mac untuk memilih lebih dari satu."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s tidak dapat diinterpretasikan pada zona waktu "
-"%(current_timezone)s; mungkin nilainya ambigu atau mungkin tidak ada."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Saat ini"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Ubah"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Hapus"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Tidak diketahui"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Ya"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Tidak"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "ya,tidak,mungkin"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bita"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "tengah malam"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "siang"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Senin"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Selasa"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Rabu"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Kamis"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Jumat"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Sabtu"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Minggu"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Sen"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Sel"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Rab"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Kam"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Jum"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sab"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Min"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Januari"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Februari"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Maret"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Mei"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Juli"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Agustus"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Oktober"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "November"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Desember"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mei"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "agu"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "des"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Maret"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Mei"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Juli"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Agu"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Sep."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Okt."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Des."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Januari"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Februari"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Maret"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Mei"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Juli"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Agustus"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Oktober"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "November"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Desember"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "atau"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Indeks direktori tidak diizinkan di sini."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" tidak ada"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Daftar isi %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Tidak ada tahun dipilih"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Tidak ada bulan dipilih"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Tidak ada hari dipilih"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Tidak ada minggu dipilih"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Tidak ada %(verbose_name_plural)s tersedia"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"%(verbose_name_plural)s di masa depan tidak tersedia karena %(class_name)s."
-"allow_future bernilai False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Teks tanggal tidak valid '%(datestr)s' dalam format '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Tidak ada %(verbose_name)s yang cocok dengan kueri"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"Laman bukan yang 'terakhir' atau juga tidak dapat dikonversikan ke bilangan "
-"bulat."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Daftar kosong dan '%(class_name)s.allow_empty' bernilai False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/id/__init__.py b/lib/python2.7/site-packages/django/conf/locale/id/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/id/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/id/formats.py b/lib/python2.7/site-packages/django/conf/locale/id/formats.py
deleted file mode 100644
index d2a6ce6..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/id/formats.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j N Y'
-DATETIME_FORMAT = "j N Y, G.i.s"
-TIME_FORMAT = 'G.i.s'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'd-m-Y'
-SHORT_DATETIME_FORMAT = 'd-m-Y G.i.s'
-FIRST_DAY_OF_WEEK = 1 #Monday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d-%m-%y', '%d/%m/%y', # '25-10-09', 25/10/09'
- '%d-%m-%Y', '%d/%m/%Y', # '25-10-2009', 25/10/2009'
- '%d %b %Y', # '25 Oct 2006',
- '%d %B %Y', # '25 October 2006'
-)
-
-TIME_INPUT_FORMATS = (
- '%H.%M.%S', # '14.30.59'
- '%H.%M', # '14.30'
-)
-
-DATETIME_INPUT_FORMATS = (
- '%d-%m-%Y %H.%M.%S', # '25-10-2009 14.30.59'
- '%d-%m-%Y %H.%M.%S.%f', # '25-10-2009 14.30.59.000200'
- '%d-%m-%Y %H.%M', # '25-10-2009 14.30'
- '%d-%m-%Y', # '25-10-2009'
- '%d-%m-%y %H.%M.%S', # '25-10-09' 14.30.59'
- '%d-%m-%y %H.%M.%S.%f', # '25-10-09' 14.30.59.000200'
- '%d-%m-%y %H.%M', # '25-10-09' 14.30'
- '%d-%m-%y', # '25-10-09''
- '%m/%d/%y %H.%M.%S', # '10/25/06 14.30.59'
- '%m/%d/%y %H.%M.%S.%f', # '10/25/06 14.30.59.000200'
- '%m/%d/%y %H.%M', # '10/25/06 14.30'
- '%m/%d/%y', # '10/25/06'
- '%m/%d/%Y %H.%M.%S', # '25/10/2009 14.30.59'
- '%m/%d/%Y %H.%M.%S.%f', # '25/10/2009 14.30.59.000200'
- '%m/%d/%Y %H.%M', # '25/10/2009 14.30'
- '%m/%d/%Y', # '10/25/2009'
-)
-
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/is/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/is/LC_MESSAGES/django.mo
deleted file mode 100644
index d7ec334..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/is/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/is/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/is/LC_MESSAGES/django.po
deleted file mode 100644
index e679e0f..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/is/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1330 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# gudmundur <gudmundur.bjarni@gmail.com>, 2011
-# Hafsteinn Einarsson <haffi67@gmail.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# saevarom <saevar@saevar.is>, 2011
-# saevarom <saevar@saevar.is>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-09-05 10:10+0000\n"
-"Last-Translator: saevarom <saevar@saevar.is>\n"
-"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/"
-"language/is/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: is\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arabíska"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Aserbaídsjíska"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Búlgarska"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengalska"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosníska"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Katalónska"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Tékkneska"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Velska"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Danska"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Þýska"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Gríska"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Enska"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Bresk enska"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Spænska"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Argentínsk spænska"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Mexíkósk Spænska"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Níkaragva spænska"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Eistland"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Baskneska"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persneska"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finnska"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Franska"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frísneska"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Írska"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galíska"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebreska"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindí"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Króatíska"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Ungverska"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indónesíska"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Íslenska"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Ítalska"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japanska"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgíska"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Kmeríska"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannadanska"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Kóreska"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Litháenska"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Lettneska"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Makedónska"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malajalamska"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongólska"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norska bókmál"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Hollenska"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Nýnorska"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Púndjabíska"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Pólska"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portúgalska"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Brasilísk Portúgalska"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Rúmenska"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Rússneska"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slóvaska"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slóvenska"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albanska"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbneska"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serbnesk latína"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Sænska"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamílska"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telúgúska"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Tælenska"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Tyrkneska"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Úkraínska"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Úrdú"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Víetnamska"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Einfölduð kínverska "
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Hefðbundin kínverska"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Sláðu inn gilt gildi."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Sláðu inn gilt veffang (URL)."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Sláðu inn gilda heiltölu."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Sláðu inn gilt netfang."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Settu inn gildan vefslóðartitil sem samanstendur af latneskum bókstöfum, "
-"númerin, undirstrikum og bandstrikum."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Sláðu inn gilda IPv4 tölu."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Sláðu inn gilt IPv6 vistfang."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Sláðu inn gilt IPv4 eða IPv6 vistfang."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Skrifaðu einungis tölur aðskildar með kommum."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Gakktu úr skugga um að gildi sé %(limit_value)s (það er %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-"Gakktu úr skugga um að gildið sé minna en eða jafnt og %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-"Gakktu úr skugga um að gildið sé stærra en eða jafnt og %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Gildið má mest vera %(limit_value)d stafur að lengd (það er %(show_value)d "
-"nú)"
-msgstr[1] ""
-"Gildið má mest vera %(limit_value)d stafir að lengd (það er %(show_value)d "
-"nú)"
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"%(field_name)s verður að vera einkvæmt fyrir %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "og"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s með þetta %(field_label)s er nú þegar til."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "Gildið %(value)r er ógilt."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Þessi reitur getur ekki haft tómgildi (null)."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Þessi reitur má ekki vera tómur."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Reitur af gerð: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Heiltala"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "Gildi '%(value)s' verður að vera heiltala."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "'%(value)s' verður að vera annaðhvort satt eða ósatt."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boole-gildi (True eða False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Strengur (mest %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Heiltölur aðgreindar með kommum"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"'%(value)s' er ógilt dagsetningarsnið. Það verður að vera á sniðinu YYYY-MM-"
-"DD."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr "'%(value)s' hefur rétt snið (YYYY-MM-DD) en dagsetningin er ógild."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Dagsetning (án tíma)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"'%(value)s' hefur ógilt snið. Það verður að vera á sniðinu: YYYY-MM-DD HH:MM"
-"[:ss[.uuuuuu]][TZ]."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"'%(value)s' hefur rétt snið (YYYY-MM-DD HH:MM [:ss[.uuuuuu]][TZ]) en það er "
-"ógild dagsetning/tími."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Dagsetning (með tíma)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "'%(value)s' verður að vera heiltala."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Tugatala"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Netfang"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Skjalaslóð"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "'%(value)s' verður að vera fleytitala."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Fleytitala (floating point number)"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Stór (8 bæta) heiltala"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 vistfang"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP tala"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "'%(value)s' verður að vera eitt eftirtalinna: None, True eða False."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boole-gildi (True, False eða None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Jákvæð heiltala"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Jákvæð lítil heiltala"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slögg (allt að %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Lítil heiltala"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Texti"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"'%(value)s' er á ógildu sniði. Það verður að vera á sniðinu HH:MM[:ss[."
-"uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"'%(value)s' er á réttu sniði (HH:MM[:ss[.uuuuuu]]), en það er ógild "
-"dagsetning/tími."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Tími"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "Veffang"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Skrá"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Mynd"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "Módel %(model)s með lykil %(pk)r er ekki til."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Ytri lykill (Gerð ákveðin af skyldum reit)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Einn-á-einn samband."
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Margir-til-margra samband."
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Þennan reit þarf að fylla út."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Sláðu inn heila tölu."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Sláðu inn heila tölu."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Gildið má ekki hafa fleiri en %(max)s tölu."
-msgstr[1] "Gildið má ekki hafa fleiri en %(max)s tölur."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Sláðu inn gilda dagsetningu."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Sláðu inn gilda tímasetningu."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Sláðu inn gilda dagsetningu ásamt tíma."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Engin skrá var send. Athugaðu kótunartegund á forminu (encoding type)."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Engin skrá var send."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Innsend skrá er tóm."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Skráarnafnið má mest vera %(max)d stafur að lengd (það er %(length)d nú)"
-msgstr[1] ""
-"Skráarnafnið má mest vera %(max)d stafir að lengd (það er %(length)d nú)"
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Vinsamlegast sendu annað hvort inn skrá eða merktu í boxið, ekki bæði."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Halaðu upp gildri myndskrá. Skráin sem þú halaðir upp var annað hvort gölluð "
-"eða ekki mynd."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Veldu gildan valmöguleika. %(value)s er ekki eitt af gildum valmöguleikum."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Sláðu inn lista af gildum."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "Gögn fyrir ManagementForm vantar eða hefur verið breytt"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Röð"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Eyða"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Vinsamlegast leiðréttu tvítekin gögn í reit %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Vinsamlegast lagfærðu gögn í reit %(field)s, sem verða að vera einstök."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Vinsamlegast leiðréttu tvítekin gögn í reit %(field_name)s sem verða að vera "
-"einstök fyrir %(lookup)s í %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Vinsamlegast lagfærðu tvítöldu gögnin fyrir neðan."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Ytri lykill virðist ekki passa við aðallykil eiganda."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Veldu gildan valmöguleika. Valið virðist ekki vera eitt af gildum "
-"valmöguleikum."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "'%(pk)s' er ekki gilt sem lykill."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Haltu inni „Control“, eða „Command“ á Mac til þess að velja fleira en eitt."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s er ekki hægt að túlka í tímabelti %(current_timezone)s, það "
-"getur verið óljóst eða að það er ekki til."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Eins og er:"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Breyta"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Hreinsa"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Óþekkt"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Já"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Nei"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "já,nei,kannski"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bæti"
-msgstr[1] "%(size)d bæti"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "eftirmiðdegi"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "morgun"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "Eftirmiðdegi"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "Morgun"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "miðnætti"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "hádegi"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "mánudagur"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "þriðjudagur"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "miðvikudagur"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "fimmtudagur"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "föstudagur"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "laugardagur"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "sunnudagur"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Mán"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Þri"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Mið"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Fim"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Fös"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Lau"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Sun"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "janúar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "febrúar"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "mars"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "apríl"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "maí"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "júní"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "júlí"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "ágúst"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "október"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "nóvember"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "desember"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "Jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "maí"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jún"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "júl"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ágú"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nóv"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "des"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Mars"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Apríl"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Maí"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Júní"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Júlí"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Ág."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Okt."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nóv."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Des."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Janúar"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Febrúar"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Mars"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Apríl"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Maí"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Júní"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Júlí"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Ágúst"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Október"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Nóvember"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Desember"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Þetta er ekki gilt IPv6 vistfang."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "eða"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d ár"
-msgstr[1] "%d ár"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d mánuður"
-msgstr[1] "%d mánuðir"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d vika"
-msgstr[1] "%d vikur"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d dagur"
-msgstr[1] "%d dagar"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d klukkustund"
-msgstr[1] "%d klukkustundir"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d mínúta"
-msgstr[1] "%d mínútur"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 mínútur"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Möppulistar eru ekki leyfðir hér."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" er ekki til"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Innihald %(directory)s "
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Ekkert ár tilgreint"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Enginn mánuður tilgreindur"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Enginn dagur tilgreindur"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Engin vika tilgreind"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Ekkert %(verbose_name_plural)s í boði."
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Framtíðar %(verbose_name_plural)s ekki í boði því %(class_name)s."
-"allow_future er Ósatt."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Ógilt snið dagsetningar \"%(datestr)s\" gefið sniðið \"%(format)s\""
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Ekkert %(verbose_name)s sem uppfyllir skilyrði"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Þetta er hvorki síðasta síða, né er hægt að breyta í heiltölu."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Tómur listi og '%(class_name)s.allow_empty er Ósatt."
diff --git a/lib/python2.7/site-packages/django/conf/locale/is/__init__.py b/lib/python2.7/site-packages/django/conf/locale/is/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/is/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/is/formats.py b/lib/python2.7/site-packages/django/conf/locale/is/formats.py
deleted file mode 100644
index 90f251a..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/is/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j. F Y'
-TIME_FORMAT = 'H:i:s'
-# DATETIME_FORMAT =
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j. F'
-SHORT_DATE_FORMAT = 'j.n.Y'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/it/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/it/LC_MESSAGES/django.mo
deleted file mode 100644
index 80e9632..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/it/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/it/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/it/LC_MESSAGES/django.po
deleted file mode 100644
index 7d33922..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/it/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1339 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# C8E <C8E@miron.it>, 2011
-# Denis Darii <sinednx@gmail.com>, 2011
-# Flavio Curella <flavio.curella@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Themistoklis Savvidis <themhs@gmail.com>, 2013
-# Nicola Larosa <transifex@teknico.net>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-10-23 16:31+0000\n"
-"Last-Translator: Flavio Curella <flavio.curella@gmail.com>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/django/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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikaans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "arabo"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azero"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "bulgaro"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Bielorusso"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "bengali"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretone"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "bosniaco"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "catalano"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "ceco"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "gallese"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "danese"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "tedesco"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "greco"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "inglese"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "inglese britannico"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "spagnolo"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "spagnolo argentino"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Spagnolo messicano"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Spagnolo nicaraguense"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Spagnolo venezuelano"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "estone"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "basco"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "persiano"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "finlandese"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "francese"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "frisone"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "irlandese"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "galiziano"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "ebraico"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "croato"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "ungherese"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "indonesiano"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "islandese"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "italiano"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "giapponese"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "georgiano"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazakh"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "coreano"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Lussemburghese"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "lituano"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "lettone"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "macedone"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "malayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "mongolo"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Burmese"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "norvegese bokmal"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepali"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "olandese"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "norvegese nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Ossetico"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "punjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "polacco"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "portoghese"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "brasiliano portoghese"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "rumeno"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "russo"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "slovacco"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "sloveno"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "albanese"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "serbo"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "serbo latino"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "svedese"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Swahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "tamil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "tailandese"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "turco"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatar"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurt"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ucraino"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "vietnamita"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "cinese semplificato"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "cinese tradizionale"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Inserisci un valore valido."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Inserisci una URL valida."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Inserire un intero valido."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Inserisci un indirizzo email valido."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Inserisci uno 'slug' valido contenente lettere, cifre, sottolineati o "
-"trattini."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Inserisci un indirizzo IPv4 valido."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Inserisci un indirizzo IPv6 valido."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Inserisci un indirizzo IPv4 o IPv6 valido."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Inserisci solo cifre separate da virgole."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Assicurati che questo valore sia %(limit_value)s (ora è %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Assicurati che questo valore sia minore o uguale a %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Assicuratii che questo valore sia maggiore o uguale a %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Assicurati che questo valore contenga almeno %(limit_value)d carattere (ne "
-"ha %(show_value)d)."
-msgstr[1] ""
-"Assicurati che questo valore contenga almeno %(limit_value)d caratteri (ne "
-"ha %(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Assicurati che questo valore non contenga più di %(limit_value)d carattere "
-"(ne ha %(show_value)d)."
-msgstr[1] ""
-"Assicurati che questo valore non contenga più di %(limit_value)d caratteri "
-"(ne ha %(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s deve essere unico per %(lookup)s %(date_field)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "e"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s con questo %(field_label)s esiste già."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "Il valore %(value)r non è un'opzione valida."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Questo campo non può essere nullo."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Questo campo non può essere vuoto."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Campo di tipo: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Intero"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "Il valore di '%(value)s' deve essere un intero."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "Il valore dir '%(value)s' deve essere Vero oppure Falso."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Booleano (True o False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Stringa (fino a %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Interi separati da virgole"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"Il valore di '%(value)s' ha un formato di data invalido. Deve essere nel "
-"formato AAAA-MM-GG."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"Il valore di '%(value)s' ha il corretto formato (AAAA-MM-DD) ma è una data "
-"invalida."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Data (senza ora)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"Il valore di '%(value)s' ha un formato non valido. Deve essere nel formato "
-"AAAA-MM-GG HH:MM[:ss[.uuuuuu]][TZ]"
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"Il valore di '%(value)s' ha il corretto formato (AAAA-MM-GG HH:MM[:ss[."
-"uuuuuu]][TZ]) ma è una data/ora non valida."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Data (con ora)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "Il valore di '%(value)s' deve essere un numero decimale."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Numero decimale"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Indirizzo email"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Percorso di file"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "Il valore di '%(value)s' deve essere un numero a virgola mobile."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Numero decimale"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Intero grande (8 byte)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Indirizzo IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Indirizzo IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "Il valore di '%(value)s' deve essere Nessuno, Vero oppure Falso."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Booleano (True, False o None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Intero positivo"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Piccolo intero positivo"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (fino a %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Piccolo intero"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Testo"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"Il valore di '%(value)s' ha un formato non valido. Deve essere nel formato "
-"HH:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"Il valore di '%(value)s' ha il corretto formato (HH:MM[:ss[.uuuuuu]]) ma è "
-"un'ora non valida."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Ora"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Dati binari grezzi"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "File"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Immagine"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "instanze %(model)s con pk %(pk)r non esiste."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Foreign Key (tipo determinato dal campo collegato)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Relazione uno a uno"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Relazione molti a molti"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Questo campo è obbligatorio."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Inserisci un numero intero."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Inserisci un numero."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Assicurati che non vi sia più di %(max)s cifra in totale."
-msgstr[1] "Assicurati che non vi siano più di %(max)s cifre in totale."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Assicurati che non vi sia più di %(max)s cifra decimale."
-msgstr[1] "Assicurati che non vi siano più di %(max)s cifre decimali."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] "Assicurati che non vi sia più di %(max)s cifra prima della virgola."
-msgstr[1] ""
-"Assicurati che non vi siano più di %(max)s cifre prima della virgola."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Inserisci una data valida."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Inserisci un'ora valida."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Inserisci una data/ora valida."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"Non è stato inviato alcun file. Verifica il tipo di codifica sulla form."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Nessun file è stato inviato."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Il file inviato è vuoto."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Assicurati che questo nome di file non contenga più di %(max)d carattere (ne "
-"ha %(length)d)."
-msgstr[1] ""
-"Assicurati che questo nome di file non contenga più di %(max)d caratteri (ne "
-"ha %(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"È possibile inviare un file o selezionare la casella \"svuota\", ma non "
-"entrambi."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Carica un'immagine valida. Il file caricato non è un'immagine o è corrotto."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Scegli un'opzione valida. %(value)s non compare tra quelle disponibili."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Inserisci una lista di valori."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Campo nascosto %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "I dati del ManagementForm sono mancanti oppure sono stati manomessi."
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Inoltrare %d o meno form."
-msgstr[1] "Inoltrare %d o meno form."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Ordine"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Cancella"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Correggi i dati duplicati di %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Correggi i dati duplicati di %(field)s, che deve essere unico."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Correggi i dati duplicati di %(field_name)s che deve essere unico/a per "
-"%(lookup)s in %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Correggi i dati duplicati qui sotto."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"La foreign key inline non concorda con la chiave primaria dell'istanza padre."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Scegli un'opzione valida. La scelta effettuata non compare tra quelle "
-"disponibili."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" non è un valore valido per una chiave primaria."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Tieni premuto \"Control\", o \"Command\" su Mac, per selezionarne più di uno."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-" %(datetime)s non può essere interpretato nel fuso orario "
-"%(current_timezone)s: potrebbe essere ambiguo o non esistere."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Attualmente"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Modifica"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Svuota"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Sconosciuto"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Sì"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "No"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "sì,no,forse"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d byte"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "mezzanotte"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "mezzogiorno"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "lunedì"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "martedì"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "mercoledì"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "giovedì"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "venerdì"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "sabato"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "domenica"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "lun"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "mar"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "mer"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "gio"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "ven"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "sab"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "dom"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "gennaio"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "febbraio"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "marzo"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "aprile"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "maggio"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "giugno"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "luglio"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "agosto"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "settembre"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "ottobre"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "novembre"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "dicembre"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "gen"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mag"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "giu"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "lug"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ago"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "set"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "ott"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dic"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Gen."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Mar."
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Apr."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Mag."
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Giu."
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Lug."
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Ago."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Set."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Ott."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Dic."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Gennaio"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Febbraio"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Marzo"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Aprile"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Maggio"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Giugno"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Luglio"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Agosto"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Settembre"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Ottobre"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Novembre"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Dicembre"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Impossibile importare Pillow nè PIL: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "Impossibile importare il modulo '_imaging' per PIL: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Questo non è un indirizzo IPv6 valido."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr " %(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "o"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d anno"
-msgstr[1] "%d anni"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d mese"
-msgstr[1] "%d mesi"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d settimana"
-msgstr[1] "%d settimane"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d giorno"
-msgstr[1] "%d giorni"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d ora"
-msgstr[1] "%d ore"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minuto"
-msgstr[1] "%d minuti"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minuti"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Indici di directory non sono consentiti qui."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" non esiste"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Indice di %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Anno non specificato"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Mese non specificato"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Giorno non specificato"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Settimana non specificata"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Nessun %(verbose_name_plural)s disponibile"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"%(verbose_name_plural)s futuri/e non disponibili/e poichè %(class_name)s."
-"allow_future è False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Data non valida '%(datestr)s' con il formato '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Trovato nessun %(verbose_name)s corrispondente alla query"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "La pagina non è 'ultima', né può essere convertita in un int."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Pagina non valida (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Elenco vuoto e '%(class_name)s.allow_empty' è False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/it/__init__.py b/lib/python2.7/site-packages/django/conf/locale/it/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/it/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/it/formats.py b/lib/python2.7/site-packages/django/conf/locale/it/formats.py
deleted file mode 100644
index b12e478..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/it/formats.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'd F Y' # 25 Ottobre 2006
-TIME_FORMAT = 'H:i:s' # 14:30:59
-DATETIME_FORMAT = 'l d F Y H:i:s' # Mercoledì 25 Ottobre 2006 14:30:59
-YEAR_MONTH_FORMAT = 'F Y' # Ottobre 2006
-MONTH_DAY_FORMAT = 'j/F' # 10/2006
-SHORT_DATE_FORMAT = 'd/m/Y' # 25/12/2009
-SHORT_DATETIME_FORMAT = 'd/m/Y H:i:s' # 25/10/2009 14:30:59
-FIRST_DAY_OF_WEEK = 1 # Lunedì
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d/%m/%Y', '%Y/%m/%d', # '25/10/2006', '2008/10/25'
- '%d-%m-%Y', '%Y-%m-%d', # '25-10-2006', '2008-10-25'
- '%d-%m-%y', '%d/%m/%y', # '25-10-06', '25/10/06'
-)
-DATETIME_INPUT_FORMATS = (
- '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59'
- '%d/%m/%Y %H:%M:%S.%f', # '25/10/2006 14:30:59.000200'
- '%d/%m/%Y %H:%M', # '25/10/2006 14:30'
- '%d/%m/%Y', # '25/10/2006'
- '%d/%m/%y %H:%M:%S', # '25/10/06 14:30:59'
- '%d/%m/%y %H:%M:%S.%f', # '25/10/06 14:30:59.000200'
- '%d/%m/%y %H:%M', # '25/10/06 14:30'
- '%d/%m/%y', # '25/10/06'
- '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
- '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
- '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
- '%Y-%m-%d', # '2006-10-25'
- '%d-%m-%Y %H:%M:%S', # '25-10-2006 14:30:59'
- '%d-%m-%Y %H:%M:%S.%f', # '25-10-2006 14:30:59.000200'
- '%d-%m-%Y %H:%M', # '25-10-2006 14:30'
- '%d-%m-%Y', # '25-10-2006'
- '%d-%m-%y %H:%M:%S', # '25-10-06 14:30:59'
- '%d-%m-%y %H:%M:%S.%f', # '25-10-06 14:30:59.000200'
- '%d-%m-%y %H:%M', # '25-10-06 14:30'
- '%d-%m-%y', # '25-10-06'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/ja/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/ja/LC_MESSAGES/django.mo
deleted file mode 100644
index 063470c..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ja/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/ja/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/ja/LC_MESSAGES/django.po
deleted file mode 100644
index 94d46c1..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ja/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1311 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Shinya Okano <tokibito@gmail.com>, 2012-2013
-# Tetsuya Morimoto <tetsuya.morimoto@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-10-05 06:37+0000\n"
-"Last-Translator: Shinya Okano <tokibito@gmail.com>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/"
-"ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "アフリカーンス語"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "アラビア語"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "アゼルバイジャン語"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "ブルガリア語"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "ベラルーシ語"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "ベンガル語"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "ブルトン語"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "ボスニア語"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "カタロニア語"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "チェコ語"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "ウェールズ語"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "デンマーク語"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "ドイツ語"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "ギリシャ語"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "英語(米国)"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "英語(英国)"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "エスペラント語"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "スペイン語"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "アルゼンチンスペイン語"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "メキシコスペイン語"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "ニカラグアスペイン語"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "ベネズエラスペイン語"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "エストニア語"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "バスク語"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "ペルシア語"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "フィンランド語"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "フランス語"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "フリジア語"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "アイルランド語"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "ガリシア語"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "ヘブライ語"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "ヒンディー語"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "クロアチア語"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "ハンガリー語"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "インターリングア"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "インドネシア語"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "アイスランド語"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "イタリア語"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "日本語"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "グルジア語"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "カザフ語"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "クメール語"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "カンナダ語"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "韓国語"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "ルクセンブルグ語"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "リトアニア語"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "ラトビア語"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "マケドニア語"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "マラヤーラム語"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "モンゴル語"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "ビルマ語"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "ノルウェーのブークモール"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "ネパール語"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "オランダ語"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "ノルウェーのニーノシュク"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "オセット語"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "パンジャブ語"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "ポーランド語"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "ポルトガル語"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "ブラジルポルトガル語"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "ルーマニア語"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "ロシア語"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "スロバキア語"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "スロヴェニア語"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "アルバニア語"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "セルビア語"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "セルビア語ラテン文字"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "スウェーデン語"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "スワヒリ語"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "タミル語"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "テルグ語"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "タイ語"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "トルコ語"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "タタール語"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "ウドムルト語"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ウクライナ語"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "ウルドゥー語"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "ベトナム語"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "簡体字中国語"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "繁体字中国語"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "値を正しく入力してください。"
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "URLを正しく入力してください。"
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "整数を正しく入力してください。"
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "有効なメールアドレスを入力してください。"
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "slug には半角の英数字、アンダースコア、ハイフン以外は使用できません。"
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "有効なIPアドレス (IPv4) を入力してください。"
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "IPv6の正しいアドレスを入力してください。"
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "IPv4またはIPv6の正しいアドレスを入力してください。"
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "カンマ区切りの数字だけを入力してください。"
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"この値は %(limit_value)s でなければなりません(実際には %(show_value)s でし"
-"た) 。"
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "この値は %(limit_value)s 以下でなければなりません。"
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "この値は %(limit_value)s 以上でなければなりません。"
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"この値が少なくとも %(limit_value)d 文字以上であることを確認してください"
-"( %(show_value)d 文字になっています)。"
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"この値は %(limit_value)d 文字以下でなければなりません( %(show_value)d 文字に"
-"なっています)。"
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"%(date_field)s %(lookup)s では %(field_name)s がユニークである必要がありま"
-"す。"
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "と"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "この %(field_label)s を持った %(model_name)s が既に存在します。"
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "%(value)r は有効な選択肢ではありません。"
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "このフィールドには NULL を指定できません。"
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "このフィールドは空ではいけません。"
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "タイプが %(field_type)s のフィールド"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "整数"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "'%(value)s' は整数値にしなければなりません。"
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "'%(value)s' は真偽値にしなければなりません。"
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "ブール値 (真: True または偽: False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "文字列 ( %(max_length)s 字まで )"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "カンマ区切りの整数"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"'%(value)s' は無効な日付形式です。YYYY-MM-DD形式にしなければなりません。"
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr "'%(value)s' は有効な日付形式(YYYY-MM-DD)ですが、日付が不正です。"
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "日付"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"'%(value)s' は無効な形式の値です。 YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] 形式で"
-"なければなりません。"
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"'%(value)s' は正しい形式(YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ])の値ですが、無効"
-"な日時です。"
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "日時"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "'%(value)s' は10進浮動小数値にしなければなりません。"
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "10 進数 (小数可)"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "メールアドレス"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "ファイルの場所"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "'%(value)s' は小数値にしなければなりません。"
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "浮動小数点"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "大きな(8バイト)整数"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4アドレス"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP アドレス"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "'%(value)s' はNone、TrueまたはFalseの値でなければなりません。"
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "ブール値 (真: True 、偽: False または None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "正の整数"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "小さな正の整数"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "スラグ(%(max_length)s文字以内)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "小さな整数"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "テキスト"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"'%(value)s' は無効な形式の値です。 HH:MM[:ss[.uuuuuu]] 形式でなければなりませ"
-"ん。"
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr "'%(value)s' は正しい形式(HH:MM[:ss[.uuuuuu]])ですが、無効な時刻です。"
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "時刻"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "生のバイナリデータ"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "ファイル"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "画像"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "主キーが %(pk)r である %(model)s インスタンスは存在しません。"
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "外部キー(型は関連フィールドによって決まります)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "1対1の関連"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "多対多の関連"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "このフィールドは必須です。"
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "整数を入力してください。"
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "整数を入力してください。"
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "この値は合計 %(max)s 桁以内でなければなりません。"
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "この値は小数点以下が合計 %(max)s 桁以内でなければなりません。"
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] "この値は小数点より前が合計 %(max)s 桁以内でなければなりません。"
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "日付を正しく入力してください。"
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "時間を正しく入力してください。"
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "日付/時間を正しく入力してください。"
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"ファイルが取得できませんでした。formのencoding typeを確認してください。"
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "ファイルが送信されていません。"
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "入力されたファイルは空です。"
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"このファイル名は %(max)d 文字以下でなければなりません( %(length)d 文字になっ"
-"ています)。"
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"ファイルを投稿するか、クリアチェックボックスをチェックするかどちらかを選択し"
-"てください。両方とも行ってはいけません。"
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"画像をアップロードしてください。アップロードしたファイルは画像でないか、また"
-"は壊れています。"
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "正しく選択してください。 %(value)s は候補にありません。"
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "リストを入力してください。"
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(隠しフィールド %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "ManagementFormデータが見つからないか、改竄されています。"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "%d 個またはそれより少ないフォームを送信してください。"
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "並び変え"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "削除"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "%(field)s の重複したデータを修正してください。"
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"%(field)s の重複したデータを修正してください。このフィールドはユニークである"
-"必要があります。"
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"%(field_name)s の重複したデータを修正してください。%(date_field)s %(lookup)s "
-"では %(field_name)s がユニークである必要があります。"
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "下記の重複したデータを修正してください。"
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "インライン外部キーが親インスタンスの主キーと一致しません。"
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "正しく選択してください。選択したものは候補にありません。"
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" は主キーとして無効な値です。"
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"複数選択するときには Control キーを押したまま選択してください。Mac は "
-"Command キーを使ってください"
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s は%(current_timezone)sのタイムゾーンでは解釈できませんでした。そ"
-"れは曖昧であるか、存在しない可能性があります。"
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "現在"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "変更"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "クリア"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "不明"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "はい"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "いいえ"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "はい,いいえ,たぶん"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d バイト"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "0時"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "12時"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "月曜日"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "火曜日"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "水曜日"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "木曜日"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "金曜日"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "土曜日"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "日曜日"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "月"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "火"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "水"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "木"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "金"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "土"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "日"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "1月"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "2月"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "3月"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "4月"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "5月"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "6月"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "7月"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "8月"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "9月"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "10月"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "11月"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "12月"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "1月"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "2月"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "3月"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "4月"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "5月"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "6月"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "7月"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "8月"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "9月"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "10月"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "11月"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "12月"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "1月"
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "2月"
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "3月"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "4月"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "5月"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "6月"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "7月"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "8月"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "9月"
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "10月"
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "11月"
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "12月"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "1月"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "2月"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "3月"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "4月"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "5月"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "6月"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "7月"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "8月"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "9月"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "10月"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "11月"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "12月"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "PillowとPILのどちらもインポートできませんでした: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "PILの '_imaging' モジュールがインポートできませんでした: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "これは有効なIPv6アドレスではありません。"
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "または"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d 年"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d ヶ月"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d 週間"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d 日"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d 時間"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d 分"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 分"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Directory indexes are not allowed here."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" does not exist"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Index of %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "年が未指定です"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "月が未指定です"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "日が未指定です"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "週が未指定です"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s は利用できません"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"%(class_name)s.allow_futureがFalseであるため、未来の%(verbose_name_plural)sは"
-"利用できません。"
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "指定された形式 '%(format)s' では '%(datestr)s' は無効な日付文字列です"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "クエリーに一致する %(verbose_name)s は見つかりませんでした"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "ページは数値に変換できる値、または 'last' ではありません。"
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "無効なページです (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "空の一覧かつ '%(class_name)s.allow_empty' がFalseです。"
diff --git a/lib/python2.7/site-packages/django/conf/locale/ja/__init__.py b/lib/python2.7/site-packages/django/conf/locale/ja/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ja/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/ja/formats.py b/lib/python2.7/site-packages/django/conf/locale/ja/formats.py
deleted file mode 100644
index 263aa0a..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ja/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'Y年n月j日'
-TIME_FORMAT = 'G:i:s'
-DATETIME_FORMAT = 'Y年n月j日G:i:s'
-YEAR_MONTH_FORMAT = 'Y年n月'
-MONTH_DAY_FORMAT = 'n月j日'
-SHORT_DATE_FORMAT = 'Y/m/d'
-SHORT_DATETIME_FORMAT = 'Y/m/d G:i:s'
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = '.'
-THOUSAND_SEPARATOR = ','
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/ka/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/ka/LC_MESSAGES/django.mo
deleted file mode 100644
index ac12ad9..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ka/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/ka/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/ka/LC_MESSAGES/django.po
deleted file mode 100644
index 25bea9e..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ka/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1293 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Bouatchidzé <a@anbz.net>, 2013
-# David Avsajanishvili <avsd05@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/"
-"ka/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ka\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "აფრიკაანსი"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "არაბული"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "აზერბაიჯანული"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "ბულგარული"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "ბელარუსული"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "ბენგალიური"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "ბრეტონული"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "ბოსნიური"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "კატალანური"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "ჩეხური"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "უელსური"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "დანიური"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "გერმანული"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "ბერძნული"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "ინგლისური"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "ბრიტანეთის ინგლისური"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "ესპერანტო"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "ესპანური"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "არგენტინის ესპანური"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "მექსიკური ესპანური"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "ნიკარაგუული ესპანური"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "ვენესუელის ესპანური"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "ესტონური"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "ბასკური"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "სპარსული"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "ფინური"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "ფრანგული"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "ფრისიული"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "ირლანდიური"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "გალიციური"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "ებრაული"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "ჰინდი"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "ხორვატიული"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "უნგრული"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "ინტერლინგუა"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "ინდონეზიური"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "ისლანდიური"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "იტალიური"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "იაპონური"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "ქართული"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "ყაზახური"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "ხმერული"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "კანნადა"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "კორეული"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "ლუქსემბურგული"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "ლიტვური"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "ლატვიური"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "მაკედონიური"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "მალაიზიური"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "მონღოლური"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "ნორვეგიული-ბოკმალი"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "ნეპალური"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "ჰოლანდიური"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "ნორვეგიული-ნინორსკი"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "ოსური"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "პუნჯაბი"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "პოლონური"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "პორტუგალიური"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "ბრაზილიური პორტუგალიური"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "რუმინული"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "რუსული"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "სლოვაკური"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "სლოვენიური"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "ალბანური"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "სერბული"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "სერბული (ლათინური)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "შვედური"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "სუაჰილი"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "თამილური"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "ტელუგუ"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "ტაი"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "თურქული"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "თათრული"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "უდმურტული"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "უკრაინული"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "ურდუ"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "ვიეტნამური"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "გამარტივებული ჩინური"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "ტრადიციული ჩინური"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "შეიყვანეთ სწორი მნიშვნელობა."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "შეიყვანეთ სწორი URL."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "შეიყვანეთ მართებული ელფოსტის მისამართი."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"შეიყვანეთ სწორი 'slug'-მნიშვნელობა, რომელიც შეიცავს მხოლოდ ასოებს, ციფრებს, "
-"ხაზგასმის ნიშნებს და დეფისებს."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "შეიყვანეთ სწორი IPv4 მისამართი."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "შეიყვანეთ მართებული IPv6 მისამართი."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "შეიყვანეთ მართებული IPv4 ან IPv6 მისამართი."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "შეიყვანეთ მხოლოდ მძიმეებით გამოყოფილი ციფრები."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "მნიშვნელობა უნდა იყოს %(limit_value)s (იგი არის %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "მნიშვნელობა უნდა იყოს %(limit_value)s-ზე ნაკლები ან ტოლი."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "მნიშვნელობა უნდა იყოს %(limit_value)s-ზე მეტი ან ტოლი."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s უნიკალური უნდა იყოს %(date_field)s-თვის %(lookup)s-ზე."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "და"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s მოცემული %(field_label)s-ით უკვე არსებობს."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "ეს ველი არ შეიძლება იყოს null."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "ეს ველი არ შეიძლება იყოს ცარიელი."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "ველის ტიპი: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "მთელი"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "ლოგიკური (True ან False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "სტრიქონი (%(max_length)s სიმბოლომდე)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "მძიმით გამოყოფილი მთელი რიცხვები"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "თარიღი (დროის გარეშე)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "თარიღი (დროსთან ერთად)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "ათობითი რიცხვი"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "ელ. ფოსტის მისამართი"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "გზა ფაილისაკენ"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "რიცხვი მცოცავი წერტილით"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "დიდი მთელი (8-ბაიტიანი)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 მისამართი"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP-მისამართი"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "ლოგიკური (True, False ან None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "დადებითი მთელი რიცხვი"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "დადებითი პატარა მთელი რიცხვი"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "სლაგი (%(max_length)s-მდე)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "პატარა მთელი რიცხვი"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "ტექსტი"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "დრო"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "ფაილი"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "გამოსახულება"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "გარე გასაღები (ტიპი განისაზღვრება დაკავშირებული ველის ტიპით)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "კავშირი ერთი-ერთტან"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "კავშირი მრავალი-მრავალთან"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "ეს ველი აუცილებელია."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "შეიყვანეთ მთელი რიცხვი"
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "შეიყვანეთ რიცხვი."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "შეიყვანეთ სწორი თარიღი."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "შეიყვანეთ სწორი დრო."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "შეიყვანეთ სწორი თარიღი და დრო."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"ფაილი არ იყო გამოგზავნილი. შეამოწმეთ კოდირების ტიპი მოცემული ფორმისათვის."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "ფაილი არ იყო გამოგზავნილი."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "გამოგზავნილი ფაილი ცარიელია."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "ან გამოგზავნეთ ფაილი, ან მონიშნეთ \"წაშლის\" დროშა."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"ატვირთეთ დასაშვები გამოსახულება. თქვენს მიერ გამოგზავნილი ფაილი ან არ არის "
-"გამოსახულება, ან დაზიანებულია."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "აირჩიეთ დასაშვები მნიშვნელობა. %(value)s დასაშვები არ არის."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "შეიყვანეთ მნიშვნელობების სია."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "დალაგება"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "წავშალოთ"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "გთხოვთ, შეასწოროთ დუბლირებული მონაცემები %(field)s-თვის."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"გთხოვთ, შეასწოროთ დუბლირებული მნიშვნელობა %(field)s ველისთვის, რომელიც უნდა "
-"იყოს უნიკალური."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"გთხოვთ, შეასწოროთ დუბლირებული მნიშვნელობა %(field_name)s ველისთვის, რომელიც "
-"უნდა იყოს უნიკალური %(lookup)s-ზე, %(date_field)s-თვის."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "გთხოვთ, შეასწოროთ დუბლირებული მნიშვნელობები."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "გარე გასაღების მნიშვნელობა მშობლის პირველად გასაღებს არ ემთხვევა."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "აირჩიეთ დასაშვები მნიშვნელობა. ეს არჩევანი დასაშვები არ არის."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"დააჭირეთ \"Control\", ან \"Command\" Mac-ზე, ერთზე მეტი მნიშვნელობის "
-"ასარჩევად."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "ამჟამად"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "შეცვლა"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "წაშლა"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "გაურკვეველი"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "კი"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "არა"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "კი,არა,შესაძლოა"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d ბაიტი"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s კბ"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s მბ"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s გბ"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s ტბ"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s პბ"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "შუაღამე"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "შუადღე"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "ორშაბათი"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "სამშაბათი"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "ოთხშაბათი"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "ხუთშაბათი"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "პარასკევი"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "შაბათი"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "კვირა"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "ორშ"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "სამ"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "ოთხ"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "ხუთ"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "პარ"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "შაბ"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "კვრ"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "იანვარი"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "თებერვალი"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "მარტი"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "აპრილი"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "მაისი"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "ივნისი"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "ივლისი"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "აგვისტო"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "სექტემბერი"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "ოქტომბერი"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "ნოემბერი"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "დეკემბერი"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "იან"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "თებ"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "მარ"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "აპრ"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "მაი"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "ივნ"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "ივლ"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "აგვ"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "სექ"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "ოქტ"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "ნოე"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "დეკ"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "იან."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "თებ."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "მარ."
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "აპრ."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "მაი"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "ივნ."
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "ივლ."
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "აგვ."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "სექტ."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "ოქტ."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "ნოემ."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "დეკ."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "იანვარი"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "თებერვალი"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "მარტი"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "აპრილი"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "მაისი"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "ივნისი"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "ივლისი"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "აგვისტო"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "სექტემბერი"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "ოქტომბერი"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "ნოემბერი"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "დეკემბერი"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "ან"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d წელი"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d თვე"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d კვირა"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d დღე"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d საათი"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d წუთი"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 წუთი"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" არ არსებობს"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "არ არის მითითებული წელი"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "არ არის მითითებული თვე"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "არ არის მითითებული დღე"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "არ არის მითითებული კვირა"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s არ არსებობს"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"მომავალი %(verbose_name_plural)s არ არსებობს იმიტომ, რომ %(class_name)s."
-"allow_future არის False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-"არასწორი თარიღის სტრიქონი '%(datestr)s' გამომდინარე ფორმატიდან '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "არ მოიძებნა არცერთი მოთხოვნის თანმხვედრი %(verbose_name)s"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "ცარიელი სია და '%(class_name)s.allow_empty' არის False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/ka/__init__.py b/lib/python2.7/site-packages/django/conf/locale/ka/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ka/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/ka/formats.py b/lib/python2.7/site-packages/django/conf/locale/ka/formats.py
deleted file mode 100644
index bb26bec..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ka/formats.py
+++ /dev/null
@@ -1,50 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'l, j F, Y'
-TIME_FORMAT = 'h:i:s a'
-DATETIME_FORMAT = 'j F, Y h:i:s a'
-YEAR_MONTH_FORMAT = 'F, Y'
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'j.M.Y'
-SHORT_DATETIME_FORMAT = 'j.M.Y H:i:s'
-FIRST_DAY_OF_WEEK = 1 # (Monday)
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# Kept ISO formats as they are in first position
-DATE_INPUT_FORMATS = (
- '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
- # '%d %b %Y', '%d %b, %Y', '%d %b. %Y', # '25 Oct 2006', '25 Oct, 2006', '25 Oct. 2006'
- # '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006'
- # '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06'
-)
-DATETIME_INPUT_FORMATS = (
- '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
- '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
- '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
- '%Y-%m-%d', # '2006-10-25'
- '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
- '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
- '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
- '%d.%m.%Y', # '25.10.2006'
- '%d.%m.%y %H:%M:%S', # '25.10.06 14:30:59'
- '%d.%m.%y %H:%M:%S.%f', # '25.10.06 14:30:59.000200'
- '%d.%m.%y %H:%M', # '25.10.06 14:30'
- '%d.%m.%y', # '25.10.06'
- '%m/%d/%Y %H:%M:%S', # '10/25/2006 14:30:59'
- '%m/%d/%Y %H:%M:%S.%f', # '10/25/2006 14:30:59.000200'
- '%m/%d/%Y %H:%M', # '10/25/2006 14:30'
- '%m/%d/%Y', # '10/25/2006'
- '%m/%d/%y %H:%M:%S', # '10/25/06 14:30:59'
- '%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200'
- '%m/%d/%y %H:%M', # '10/25/06 14:30'
- '%m/%d/%y', # '10/25/06'
-)
-DECIMAL_SEPARATOR = '.'
-THOUSAND_SEPARATOR = " "
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/kk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/kk/LC_MESSAGES/django.mo
deleted file mode 100644
index 8117504..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/kk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/kk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/kk/LC_MESSAGES/django.po
deleted file mode 100644
index 762dbc3..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/kk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1294 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# jarjan <zharzhan@gmail.com>, 2011
-# Nurlan Rakhimzhanov <nurlan.rakhimzhanov@gmail.com>, 2011
-# yun_man_ger <germanilyin@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/"
-"kk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kk\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Араб"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Әзірбайжан"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Болгар"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Бенгал"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Босния"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Каталан"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Чех"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Валлий"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Дания"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Неміс"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Грек"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Ағылшын"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Британдық ағылшын"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Испан"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Аргентиналық испан"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Мексикалық испан"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Никарагуа испан"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Эстон"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Баск"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Парсы"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Фин"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Француз"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Фриз"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Ирландия"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Галиц"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Иврит"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Хинди"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Кроат"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Венгрия"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Индонезия"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Исладия"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Итальян"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Жапон"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Грузин"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Кхмер"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Канада"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Корей"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Литва"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Латвия"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Македон"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Малаялам"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Монғол"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Норвегиялық букмол"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Дат"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Норвегиялық нюнор"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Пенджаб"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Поляк"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Португал"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Бразилиялық португал"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Роман"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Орыс"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Словак"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Славян"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Албан"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Серб"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Сербиялық латын"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Швед"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Тамиль"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Телугу"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Тай"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Түрік"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Украин"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Урду"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Вьетнам"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Жеңілдетілген қытай"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Дәстүрлі қытай"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Тура мәнін енгізіңіз."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Тура URL-ді енгізіңіз."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Тек әріптерден, сандардан, астыңғы сызықтардан немесе дефистерден құралатын "
-"тура 'slug'-ті енгізіңіз."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Тура IPv4 адресті енгізіңіз."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr ""
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr ""
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Тек үтірлермен бөлінген цифрлерді енгізіңіз."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Бұл мәннің %(limit_value)s екендігін тексеріңіз (қазір ол %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-"Бұл мәннің мынадан %(limit_value)s кіші немесе тең екендігін тексеріңіз."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-"Бұл мәннің мынадан %(limit_value)s үлкен немесе тең екендігін тексеріңіз."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"%(field_name)s мәні %(date_field)s жолақтың ішінде %(lookup)s үшін бірегей "
-"болу керек."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "және"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s %(field_label)s жолақпен бұрыннан бар."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Бұл жолақ null болмау керек."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Бұл жолақ бос болмау керек."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Жолақтын түрі: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Бүтін сан"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (True немесе False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Жол (%(max_length)s символға дейін)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Үтірмен бөлінген бүтін сандар"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Дата (уақытсыз)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Дата (уақытпен)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Ондық сан"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Email адрес"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Файл жолы"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Реал сан"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Ұзын (8 байт) бүтін сан"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP мекенжайы"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Булеан (True, False немесе None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Мәтін"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Уақыт"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr ""
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr ""
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Foreign Key (тип related field арқылы анықталады)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "One-to-one қатынас"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Many-to-many қатынас"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Бұл өрісті толтыру міндетті."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Толық санды енгізіңіз."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Сан енгізіңіз."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Дұрыс күнді енгізіңіз."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Дұрыс уақытты енгізіңіз."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Дұрыс күнді/уақытты енгізіңіз."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Ешқандай файл жіберілмеді. Форманың кодтау түрін тексеріңіз."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Ешқандай файл жіберілмеді."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Бос файл жіберілді."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Файлды жіберіңіз немесе тазалауды белгіленіз, екеуін бірге емес."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Дұрыс сүретті жүктеңіз. Сіз жүктеген файл - сүрет емес немесе бұзылған сүрет."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Дұрыс тандау жасаңыз. %(value)s дұрыс тандау емес."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Мәндер тізімін енгізіңіз."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Сұрыптау"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Жою"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "%(field)s жолақтағы қайталанған мәнді түзетіңіз."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "%(field)s жолақтағы мәнді түзетіңіз, ол бірегей болу керек."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"%(field_name)s жолақтағы мәнді түзетіңіз. Ол %(date_field)s жолақтың ішінде "
-"%(lookup)s үшін бірегей болу керек."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Қайталанатын мәндерді түзетіңіз."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Кірістірілген сыртқы кілт аталық дананың бастапқы кілтімен сәйкес келмейді."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Дұрыс нұсқаны таңдаңыз. Бұл нұсқа дұрыс таңдаулардың арасында жоқ."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Бірден көп элемент таңдау үшін \"Control\" немесе МасBook-те \"Command\" "
-"батырмасын басып тұрыңыз."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Кәзіргі"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Түзету"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Тазалау"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Белгісіз"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Иә"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Жоқ"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "иә,жоқ,мүмкін"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d байт"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s КБ"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s МБ"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s ГБ"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s ТБ"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s ПБ"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "Т.Қ."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "Т.Ж."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "ТҚ"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "ТЖ"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "түнжарым"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "түсқайта"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Дүйсенбі"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Сейсенбі"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Сәрсенбі"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Бейсенбі"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Жума"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Сенбі"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Жексенбі"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Дб"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Сб"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Ср"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Бс"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Жм"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Сн"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Жк"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Қаңтар"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Ақпан"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Наурыз"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Сәуір"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Мамыр"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Маусым"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Шілде"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Тамыз"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Қыркүйек"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Қазан"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Қараша"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Желтоқсан"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "қан"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "ақп"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "нау"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "сәу"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "мам"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "мау"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "шіл"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "там"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "қыр"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "қаз"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "қар"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "жел"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Ақп."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Қаң."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Наурыз"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Сәуір"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Мамыр"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Маусым"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Шілде"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Там."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Қыр."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Қаз."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Қар."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Жел."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Қаңтар"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Ақпан"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Наурыз"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Сәуір"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Мамыр"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Маусым"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Шілде"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Тамыз"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Қыркүйек"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Қазан"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Қараша"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Желтоқсан"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr "немесе"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Жыл таңдалмаған"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Ай таңдалмаған"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Күн таңдалмаған"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Апта таңдалмаған"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s қол жеткізгісіз"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Болашақ %(verbose_name_plural)s қол жеткізгісіз, себебі %(class_name)s."
-"allow_future False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "'%(format)s' пішімі үшін дұрыс емес '%(datestr)s' уақыт жолы"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "%(verbose_name)s табылған жоқ"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Бет соңғы емес және оны санға түрлендіруге болмайды."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Бос тізім және '%(class_name)s.allow_empty' - False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/km/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/km/LC_MESSAGES/django.mo
deleted file mode 100644
index bbcd7ad..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/km/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/km/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/km/LC_MESSAGES/django.po
deleted file mode 100644
index 14f08f2..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/km/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1278 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Khmer (http://www.transifex.com/projects/p/django/language/"
-"km/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: km\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "ភាសាអារ៉ាប់"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr ""
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr ""
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "ភាសាបេឡារុស្ស"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr ""
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr ""
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "ភាសាឆេក"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "ភាសាអ៊ុយក្រែន"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "ភាសាដាណឺម៉ាក"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "ភាសាអាល្លឺម៉ង់"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "ភាសាហ្កែលិគ"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "ភាសាអង់គ្លេស"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr ""
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "ភាសាអេស្ប៉ាញ"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr ""
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr ""
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr ""
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr ""
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr ""
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "ភាសាហ្វាំងឡង់"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "ភាសាបារាំង"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr ""
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr ""
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "ភាសាហ្កែលិគ"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "ភាសាហេប្រិ"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr ""
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr ""
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "ភាសាហុងគ្រី"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr ""
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "ភាសាអ៉ីស្លង់"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "ភាសាអ៊ីតាលី"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "ភាសាជប៉ុន"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr ""
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr ""
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr ""
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr ""
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr ""
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr ""
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr ""
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr ""
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr ""
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr ""
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "ភាសាហ្វាំងឡង់"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr ""
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr ""
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr ""
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr ""
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr ""
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "ភាសារូម៉ានី"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "ភាសាรัរូស្ស៉ី"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "ភាសាស្លូវ៉ាគី"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "ភាសាស្លូវ៉ានី"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr ""
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr ""
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr ""
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "ភាសាស៊ុយអែដ"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "ភាសាតាមីល"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr ""
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr ""
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "ភាសាទួរគី"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ភាសាអ៊ុយក្រែន"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr ""
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr ""
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "ភាសាចិនសាមញ្ញ"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "ភាសាចិនបុរាណ"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr ""
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr ""
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr ""
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr ""
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr ""
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "បំពេញតែលេខហើយផ្តាច់ចេញពីគ្នាដោយសញ្ញាក្បៀស។"
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "និង"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "ចាំបាច់បំពេញទិន្នន័យកន្លែងនេះ។"
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr ""
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr ""
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "ចំនួនពិត(Integer)"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (អាច​ជា True រឺ False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "ចំនួនពិត(Integer) ដែលផ្តាច់ចេញពីគ្នាដោយ​ក្បៀស"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "កាល​បរិច្ឆេទ (Date) (មិនមានសរសេរម៉ោង)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "កាល​បរិច្ឆេទ (Date) (មានសរសេរម៉ោង)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "ចំនួនទសភាគ (Decimal)"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "ផ្លូវទៅកាន់ឯកសារ"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr ""
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "លេខ IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (អាចជា True​ រឺ False រឺ None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "អត្ថបទ"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "ពេលវេលា"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "អាស័យដ្ឋានគេហទំព័រ(URL)"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr ""
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr ""
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr ""
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr ""
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr ""
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "ចាំបាច់បំពេញទិន្នន័យកន្លែងនេះ។"
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "បំពេញចំនួនទាំងអស់។"
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr ""
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr ""
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr ""
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr ""
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "មិនមានឯកសារត្រូវបានជ្រើសរើស។ សូមពិនិត្យប្រភេទឯកសារម្តងទៀត។"
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr ""
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "ពុំមានឯកសារ។​"
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr "រូបភាពដែលទាញយកមិនត្រឹមត្រូវ ប្រហែលជាមិនមែនជារូបភាព ឬក៏ជា រូបភាពខូច។"
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr ""
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr ""
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "លប់"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr ""
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr ""
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"សូមចុចប៉ូតុន \"Control\", ឬ \"Command\" ចំពោះកុំព្យូទ័រ Mac, ដើម្បីជ្រើសរើសច្រើនជាងមួយ។"
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr ""
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "ផ្លាស់ប្តូរ"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr ""
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "មិន​ដឹង"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "យល់ព្រម"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "មិនយល់ព្រម"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "យល់ព្រម មិនយល់ព្រម​ ប្រហែល"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] ""
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr ""
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr ""
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr ""
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr ""
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr ""
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr ""
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr ""
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr ""
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr ""
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr ""
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "ច័ន្ទ"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "អង្គារ"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "ពុធ"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "ព្រហស្បតិ៍"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "សុក្រ"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "សៅរ៍"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "អាទិត្យ"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr ""
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr ""
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "មករា"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "កុម្ភៈ"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "មិនា"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "មេសា"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "ឧសភា"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "មិថុនា"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "កក្កដា"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "សីហា"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "កញ្ញា"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "តុលា"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "វិច្ឆិកា"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "ធ្នូ"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "មករា"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "កុម្ភះ"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "មិនា"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "មេសា"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "ឧសភា"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "មិថុនា"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "កក្កដា"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "សីហា"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "កញ្ញា"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "តុលា"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "វិច្ឆិកា"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "ធ្នូ"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr ""
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr ""
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "មិនា"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "មេសា"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "ឧសភា"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "មិថុនា"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "កក្កដា"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr ""
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr ""
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr ""
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr ""
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr ""
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "មករា"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "កុម្ភៈ"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "មិនា"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "មេសា"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "ឧសភា"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "មិថុនា"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "កក្កដា"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "សីហា"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "កញ្ញា"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "តុលា"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "វិច្ឆិកា"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "ធ្នូ"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr ""
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ""
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr ""
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr ""
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr ""
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr ""
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr ""
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr ""
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/conf/locale/km/__init__.py b/lib/python2.7/site-packages/django/conf/locale/km/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/km/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/km/formats.py b/lib/python2.7/site-packages/django/conf/locale/km/formats.py
deleted file mode 100644
index ace2fc1..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/km/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j ខែ F ឆ្នាំ Y'
-TIME_FORMAT = 'G:i:s'
-DATETIME_FORMAT = 'j ខែ F ឆ្នាំ Y, G:i:s'
-# YEAR_MONTH_FORMAT =
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'j M Y'
-SHORT_DATETIME_FORMAT = 'j M Y, G:i:s'
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/kn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/kn/LC_MESSAGES/django.mo
deleted file mode 100644
index 7488257..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/kn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/kn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/kn/LC_MESSAGES/django.po
deleted file mode 100644
index 6c02080..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/kn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1304 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# karthikbgl <karthikbgl@gmail.com>, 2011-2012
-# Ramakrishna Yekulla <ramkrsna@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/"
-"kn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kn\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "ಅರೇಬಿಕ್"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "ಆಜೆರ್ಬೈಜನಿ"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "ಬಲ್ಗೇರಿಯನ್"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "ಬೆಂಗಾಲಿ"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "ಬೋಸ್ನಿಯನ್"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "ಕೆಟಲಾನ್"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "ಝೆಕ್"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "ವೆಲ್ಷ್"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "ಡ್ಯಾನಿಷ್"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "ಜರ್ಮನ್"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "ಗ್ರೀಕ್"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "ಇಂಗ್ಲಿಷ್"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "ಬ್ರಿಟೀಶ್ ಇಂಗ್ಲಿಷ್"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "ಸ್ಪ್ಯಾನಿಷ್"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "ಅರ್ಜೆಂಟಿನಿಯನ್ ಸ್ಪಾನಿಷ್"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "ಮೆಕ್ಸಿಕನ್ ಸ್ಪಾನಿಷ್"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "nicarguan ಸ್ಪಾನಿಷ್"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "ಎಷ್ಟೋನಿಯನ್"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "ಬಾಸ್ಕ್‍"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "ಪರ್ಶಿಯನ್"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "ಫಿನ್ನಿಶ್"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "ಫ್ರೆಂಚ್"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "ಫ್ರಿಸಿಯನ್"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "ಐರಿಶ್"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "ಗೆಲಿಶಿಯನ್"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "ಹೀಬ್ರೂ"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "ಹಿಂದಿ"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "ಕ್ರೊಯೇಶಿಯನ್"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "ಹಂಗೇರಿಯನ್"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "ಇಂಡೋನಿಶಿಯನ್"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "ಐಸ್‌ಲ್ಯಾಂಡಿಕ್"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "ಇಟಾಲಿಯನ್"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "ಜಾಪನೀಸ್"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "ಜಾರ್ಜೆಯನ್ "
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "ಖಮೇರ್"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "ಕನ್ನಡ"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "ಕೊರಿಯನ್"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "ಲಿತುವಾನಿಯನ್ "
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "ಲಾಟ್ವಿಯನ್"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "ಮೆಸಡೊನಿಯನ್"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "ಮಲಯಾಳಂ"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "ಮಂಗೊಲಿಯನ್"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "ನಾರ್ವೇಜಿಯನ್ ಬೋಕ್ಮಲ್"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "ಡಚ್"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "ನಾರ್ವೇಜಿಯನ್ ನಿನೋರ್ಕ್"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "ಪಂಜಾಬಿ"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "ಪೋಲಿಷ್"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "ಪೋರ್ಚುಗೀಸ್"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "ಬ್ರಜೀಲಿಯನ್ ಪೋರ್ಚುಗೀಸ್"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "ರೋಮೇನಿಯನ್"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "ರಶಿಯನ್"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "ಸ್ಲೋವಾಕ್"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "ಸ್ಲೋವೇನಿಯನ್"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "ಅಲ್ಬೆನಿಯನ್ "
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "ಸರ್ಬಿಯನ್"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "ಸರ್ಬಿಯನ್ ಲ್ಯಾಟಿನ್"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "ಸ್ವೀಡಿಷ್"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "ತಮಿಳು"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "ತೆಲುಗು"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "ಥಾಯ್"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "ಟರ್ಕಿಶ್"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ಉಕ್ರೇನಿಯನ್"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "ಉರ್ದು"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "ವಿಯೆತ್ನಾಮೀಸ್"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "ಸರಳೀಕೃತ ಚೈನೀಸ್"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "ಸಂಪ್ರದಾಯಿಕ ಚೈನೀಸ್ "
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "ಸಿಂಧುವಾದ ಮೌಲ್ಯವನ್ನು ನಮೂದಿಸಿ."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "ಸರಿಯಾದ ಒಂದು URL ಅನ್ನು ನಮೂದಿಸಿ."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"ಅಕ್ಷರಗಳು, ಅಂಕೆಗಳು, ಅಡಿಗೆರೆಗಳು (ಅಂಡರ್ಸ್ಕೋರ್) ಹಾಗು ಅಡ್ಡಗೆರೆಗಳನ್ನು ಹೊಂದಿರುವ ಒಂದು "
-"ಸರಿಯಾದ 'slug' ಅನ್ನು ನಮೂದಿಸಿ."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "ಒಂದು ಸರಿಯಾದ IPv4 ವಿಳಾಸವನ್ನು ನಮೂದಿಸಿ."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "ಮಾನ್ಯವಾದ IPv6 ವಿಳಾಸ ದಾಖಲಿಸಿ"
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "ಮಾನ್ಯವಾದ IPv4 ಅಥವಾ IPv6 ವಿಳಾಸ ದಾಖಲಿಸಿ"
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "ಅಲ್ಪವಿರಾಮ(,)ಗಳಿಂದ ಬೇರ್ಪಟ್ಟ ಅಂಕೆಗಳನ್ನು ಮಾತ್ರ ಬರೆಯಿರಿ."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"ಈ ಮೌಲ್ಯವು %(limit_value)s ಆಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ (ಇದು %(show_value)s ಆಗಿದೆ)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-"ಈ ಮೌಲ್ಯವು %(limit_value)s ಕ್ಕಿಂತ ಕಡಿಮೆಯ ಅಥವ ಸಮನಾದ ಮೌಲ್ಯವಾಗಿದೆ ಎಂದು ಖಾತ್ರಿ "
-"ಮಾಡಿಕೊಳ್ಳಿ."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-"ಈ ಮೌಲ್ಯವು %(limit_value)s ಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ಅಥವ ಸಮನಾದ ಮೌಲ್ಯವಾಗಿದೆ ಎಂದು ಖಾತ್ರಿ "
-"ಮಾಡಿಕೊಳ್ಳಿ."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"%(field_name)s ಎನ್ನುವುದು %(date_field)s %(lookup)s ಗಾಗಿ ವಿಶಿಷ್ಟವಾಗಿರಬೇಕು."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "ಮತ್ತು"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr ""
-"ಈ %(field_label)s ಅನ್ನು ಹೊಂದಿರುವ ಒಂದು %(model_name)s ಈಗಾಗಲೆ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "ಈ ಅಂಶವನ್ನು ಖಾಲಿ ಬಿಡುವಂತಿಲ್ಲ."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "ಈ ಸ್ಥಳವು ಖಾಲಿ ಇರುವಂತಿಲ್ಲ."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "ಕ್ಷೇತ್ರದ ಬಗೆ: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "ಪೂರ್ಣಾಂಕ"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "ಬೂಲಿಯನ್ (ಹೌದು ಅಥವ ಅಲ್ಲ)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "ಪದಪುಂಜ (%(max_length)s ವರೆಗೆ)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "ಅಲ್ಪವಿರಾಮ(,) ದಿಂದ ಬೇರ್ಪಟ್ಟ ಪೂರ್ಣಸಂಖ್ಯೆಗಳು"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "ದಿನಾಂಕ (ಸಮಯವಿಲ್ಲದೆ)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "ದಿನಾಂಕ (ಸಮಯದೊಂದಿಗೆ)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "ದಶಮಾನ ಸಂಖ್ಯೆ"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "ಕಡತದ ಸ್ಥಾನಪಥ"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "ತೇಲುವ-ಬಿಂದು ಸಂಖ್ಯೆ"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "ಬೃಹತ್ (೮ ಬೈಟ್) ಪೂರ್ಣ ಸಂಖ್ಯೆ"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 ವಿಳಾಸ"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP ವಿಳಾಸ"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "ಬೂಲಿಯನ್ (ನಿಜ, ಸುಳ್ಳು ಅಥವ ಯಾವುದೂ ಅಲ್ಲ ಇವುಗಳಲ್ಲಿ ಒಂದು)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "ಪಠ್ಯ"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "ಸಮಯ"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr ""
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr ""
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "ಬಾಹ್ಯ ಕೀಲಿ (ಸಂಬಂಧಿತ ಸ್ಥಳದಿಂದ ಪ್ರಕಾರವನ್ನು ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "ಒನ್-ಟು-ಒನ್ (ಪರಸ್ಪರ) ಸಂಬಂಧ"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "ಮೆನಿ-ಟು-ಮೆನಿ (ಸಾರ್ವಜನಿಕ) ಸಂಬಂಧ"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "ಈ ಸ್ಥಳವು ಅಗತ್ಯವಿರುತ್ತದೆ."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "ಪೂರ್ಣಾಂಕವೊಂದನ್ನು ನಮೂದಿಸಿ."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "ಒಂದು ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "ಸರಿಯಾದ ದಿನಾಂಕವನ್ನು ನಮೂದಿಸಿ."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "ಸರಿಯಾದ ಸಮಯವನ್ನು ನಮೂದಿಸಿ."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "ಸರಿಯಾದ ದಿನಾಂಕ/ಸಮಯವನ್ನು ನಮೂದಿಸಿ."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"ಯಾವದೇ ಕಡತವನ್ನೂ ಸಲ್ಲಿಸಲಾಗಿಲ್ಲ. ನಮೂನೆಯ ಮೇಲಿನ ಸಂಕೇತೀಕರಣ (ಎನ್ಕೋಡಿಂಗ್) ಬಗೆಯನ್ನು "
-"ಪರೀಕ್ಷಿಸಿ."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "ಯಾವದೇ ಕಡತವನ್ನೂ ಸಲ್ಲಿಸಲಾಗಿಲ್ಲ."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "ಸಲ್ಲಿಸಲಾದ ಕಡತ ಖಾಲಿ ಇದೆ."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"ದಯವಿಟ್ಟು ಕಡತವನ್ನು ಸಲ್ಲಿಸಿ ಅಥವ ಅಳಿಸುವ ಗುರುತುಚೌಕವನ್ನು ಗುರುತು ಹಾಕಿ, ಎರಡನ್ನೂ ಒಟ್ಟಿಗೆ "
-"ಮಾಡಬೇಡಿ."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"ಸರಿಯಾದ ಚಿತ್ರವನ್ನು ಸೇರಿಸಿ. ನೀವು ಸೇರಿಸಿದ ಕಡತವು ಚಿತ್ರವೇ ಅಲ್ಲ ಅಥವಾ ಅದು ಒಂದು ಹಾಳಾದ "
-"ಚಿತ್ರವಾಗಿದೆ. "
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "ಸರಿಯಾದ ಒಂದು ಆಯ್ಕೆಯನ್ನು ಆರಿಸಿ. %(value)s ಎನ್ನುವುದು ಲಭ್ಯವಿರುವ ಆಯ್ಕೆಗಳಲ್ಲಿ ಇಲ್ಲ."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "ಮೌಲ್ಯಗಳ ಒಂದು ಪಟ್ಟಿಯನ್ನು ನಮೂದಿಸಿ."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "ಕ್ರಮ"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "ಅಳಿಸಿಹಾಕಿ"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "%(field)s ಗಾಗಿ ಎರಡು ಬಾರಿ ನಮೂದಿಸಲಾದ ಮಾಹಿತಿಯನ್ನು ಸರಿಪಡಿಸಿ."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"%(field)s ಗಾಗಿ ಎರಡು ಬಾರಿ ನಮೂದಿಸಲಾದ ಮಾಹಿತಿಯನ್ನು ಸರಿಪಡಿಸಿ, ಇದರ ಮೌಲ್ಯವು "
-"ವಿಶಿಷ್ಟವಾಗಿರಬೇಕು."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"%(field_name)s ಗಾಗಿ ಎರಡು ಬಾರಿ ನಮೂದಿಸಲಾದ ಮಾಹಿತಿಯನ್ನು ಸರಿಪಡಿಸಿ, %(date_field)s "
-"ನಲ್ಲಿನ %(lookup)s ಗಾಗಿ ಇದರ ಮೌಲ್ಯವು ವಿಶಿಷ್ಟವಾಗಿರಬೇಕು."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "ದಯವಿಟ್ಟು ಈ ಕೆಳಗೆ ಎರಡು ಬಾರಿ ನಮೂದಿಸಲಾದ ಮೌಲ್ಯವನ್ನು ಸರಿಪಡಿಸಿ."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "ಸಾಲಿನೊಳಗಿನ ಪ್ರಾಥಮಿಕ ಕೀಲಿಯು ಮೂಲ ಇನ್‌ಸ್ಟನ್ಸ್‍ ಪ್ರಾಥಮಿಕ ಕೀಲಿಗೆ ತಾಳೆಯಾಗುತ್ತಿಲ್ಲ."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "ಸರಿಯಾದ ಒಂದು ಆಯ್ಕೆಯನ್ನು ಆರಿಸಿ. ಆ ಆಯ್ಕೆಯು ಲಭ್ಯವಿರುವ ಆಯ್ಕೆಗಳಲ್ಲಿ ಇಲ್ಲ."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚನ್ನು ಆಯ್ದುಕೊಳ್ಳಲು ಮ್ಯಾಕ್ ಗಣಕದಲ್ಲಿನ \"ಕಂಟ್ರೋಲ್\", ಅಥವಾ \"ಕಮ್ಯಾಂಡ್\" ಅನ್ನು "
-"ಒತ್ತಿ ಹಿಡಿಯಿರಿ."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "ಪ್ರಸಕ್ತ"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "ಬದಲಾವಣೆ"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "ಮುಕ್ತಗೊಳಿಸು"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "ಗೊತ್ತಿರದ"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "ಹೌದು"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "ಇಲ್ಲ"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "ಹೌದು,ಇಲ್ಲ,ಇರಬಹುದು"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d ಬೈಟ್‌ಗಳು"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "ಅಪರಾಹ್ನ"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "ಪೂರ್ವಾಹ್ನ"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "ಅಪರಾಹ್ನ"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "ಪೂರ್ವಾಹ್ನ"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "ಮಧ್ಯರಾತ್ರಿ"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "ಮಧ್ಯಾಹ್ನ"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "ಸೋಮವಾರ"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "ಮಂಗಳವಾರ"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "ಬುಧವಾರ"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "ಗುರುವಾರ"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "ಶುಕ್ರವಾರ"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "ಶನಿವಾರ"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "ರವಿವಾರ"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "ಸೋಮ"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "ಮಂಗಳ"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "ಬುಧ"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "ಗುರು"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "ಶುಕ್ರ"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "ಶನಿ"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "ರವಿ"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "ಜನವರಿ"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "ಫೆಬ್ರುವರಿ"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "ಮಾರ್ಚ್"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "ಎಪ್ರಿಲ್"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "ಮೇ"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "ಜೂನ್"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "ಜುಲೈ"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "ಆಗಸ್ಟ್"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "ಸೆಪ್ಟೆಂಬರ್"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "ಅಕ್ಟೋಬರ್"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "ನವೆಂಬರ್"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "ಡಿಸೆಂಬರ್"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ಜನವರಿ"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "ಫೆಬ್ರವರಿ"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "ಮಾರ್ಚ್"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "ಏಪ್ರಿಲ್"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "ಮೇ"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "ಜೂನ್"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "ಜುಲೈ"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ಆಗಸ್ಟ್‍"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "ಸೆಪ್ಟೆಂಬರ್"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "ಅಕ್ಟೋಬರ್"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "ನವೆಂಬರ್"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "ಡಿಸೆಂಬರ್"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "ಜನ."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "ಫೆಬ್ರ."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "ಮಾರ್ಚ್"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "ಏಪ್ರಿಲ್"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "ಮೇ"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "ಜೂನ್"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "ಜುಲೈ"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "ಆಗ."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "ಸೆಪ್ಟೆ."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "ಅಕ್ಟೋ."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "ನವೆಂ."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "ಡಿಸೆಂ."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "ಜನವರಿ"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "ಫೆಬ್ರವರಿ"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "ಮಾರ್ಚ್"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "ಏಪ್ರಿಲ್"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "ಮೇ"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "ಜೂನ್"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "ಜುಲೈ"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "ಆಗಸ್ಟ್‍"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "ಸಪ್ಟೆಂಬರ್"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "ಅಕ್ಟೋಬರ್"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "ನವೆಂಬರ್"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "ಡಿಸೆಂಬರ್"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr "ಅಥವ"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "ಯಾವುದೆ ವರ್ಷವನ್ನು ಸೂಚಿಲಾಗಿಲ್ಲ"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "ಯಾವುದೆ ತಿಂಗಳನ್ನು ಸೂಚಿಸಲಾಗಿಲ್ಲ"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "ಯಾವುದೆ ದಿನವನ್ನು ಸೂಚಿಸಲಾಗಿಲ್ಲ"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "ಯಾವುದೆ ವಾರವನ್ನು ಸೂಚಿಸಲಾಗಿಲ್ಲ"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "ಯಾವುದೆ %(verbose_name_plural)s ಲಭ್ಯವಿಲ್ಲ"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"ಭವಿಷ್ಯದ %(verbose_name_plural)s ಲಭ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ %(class_name)s.allow_future "
-"ಎನ್ನುವುದು ಅಸತ್ಯವಾಗಿದೆ (ಫಾಲ್ಸ್‍) ಆಗಿದೆ."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-"ಅಸಿಂಧುವಾದ '%(datestr)s' ದಿನಾಂಕ ಪದಪುಂಜ ಒದಗಿಸಲಾದ ವಿನ್ಯಾಸವು '%(format)s' ಆಗಿದೆ"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "ಮನವಿಗೆ ತಾಳೆಯಾಗುವ ಯಾವುದೆ %(verbose_name)s ಕಂಡುಬಂದಿಲ್ಲ"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "ಪುಟವು 'ಕೊನೆಯ'ದಲ್ಲ, ಅಥವ ಅದನ್ನು ಒಂದು int ಆಗಿ ಮಾರ್ಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
-"ಖಾಲಿ ಪಟ್ಟಿ ಹಾಗು '%(class_name)s.allow_empty' ಎನ್ನುವುದು ಅಸತ್ಯವಾಗಿದೆ (ಫಾಲ್ಸ್‍)."
diff --git a/lib/python2.7/site-packages/django/conf/locale/kn/__init__.py b/lib/python2.7/site-packages/django/conf/locale/kn/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/kn/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/kn/formats.py b/lib/python2.7/site-packages/django/conf/locale/kn/formats.py
deleted file mode 100644
index ce1999a..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/kn/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j F Y'
-TIME_FORMAT = 'h:i:s A'
-# DATETIME_FORMAT =
-# YEAR_MONTH_FORMAT =
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'j M Y'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-# DECIMAL_SEPARATOR =
-# THOUSAND_SEPARATOR =
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/ko/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/ko/LC_MESSAGES/django.mo
deleted file mode 100644
index e43e93d..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ko/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/ko/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/ko/LC_MESSAGES/django.po
deleted file mode 100644
index 6a905ac..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ko/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1289 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jaehong Kim <mixe@korea.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/"
-"ko/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ko\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "아랍어"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "아제르바이잔어"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "불가리어"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "방글라데시어"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "보스니아어"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "카탈로니아어"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "체코어"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "웨일즈어"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "덴마크어"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "독일어"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "그리스어"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "영어"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "영어 (영국)"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "스페인어"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "아르헨티나 스페인어"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "멕시컨 스페인어"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "에스토니아어"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "바스크어"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "페르시아어"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "핀란드어"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "프랑스어"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "프리슬란트어"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "아일랜드어"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "갈리시아어"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "히브리어"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "힌두어"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "크로아티아어"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "헝가리어"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "인도네시아어"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "아이슬란드어"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "이탈리아어"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "일본어"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "조지아어"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "크메르어"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "칸나다어"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "한국어"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "리투아니아어"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "라트비아어"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "마케도니아어"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "말레이지아어"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "몽고어"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "노르웨이어 (보크몰)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "네덜란드어"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "노르웨이어 (뉘노르스크)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "펀자브어"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "폴란드어"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "포르투갈어"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "브라질 포르투갈어"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "루마니아어"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "러시아어"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "슬로바키아어"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "슬로베니아어"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "알바니아어"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "세르비아어"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "세르비아어"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "스웨덴어"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "타밀어"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "텔루구어"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "태국어"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "터키어"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "우크라이나어"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "우르드어"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "베트남어"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "중국어 간체"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "중국어 번체"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "올바른 값을 입력하세요."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "올바른 URL을 입력하세요."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "문자, 숫자, '_', '-'만 가능합니다."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "올바른 IPv4 주소를 입력하세요."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr ""
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr ""
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "콤마로 구분된 숫자만 입력하세요."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"%(limit_value)s 안의 값을 입력해 주세요. (입력하신 값은 %(show_value)s입니"
-"다.)"
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "%(limit_value)s 이하의 값을 입력해 주세요."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "%(limit_value)s 이상의 값을 입력해 주세요."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"%(field_name)s(은)는 반드시 %(date_field)s %(lookup)s에 대해 유일해야 합니다."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "또한"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s의 %(field_label)s(은)는 이미 존재합니다."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "이 필드는 null 값은 사용할 수 없습니다. "
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "이 필드는 null 값은 사용할 수 없습니다. "
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "%(field_type)s 형식 필드"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "정수"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "boolean(참 또는 거짓)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "문자열(%(max_length)s 글자까지)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "정수(콤마로 구분)"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "날짜(시간 제외)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "날짜(시간 포함)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "10진수"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "이메일 주소"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "파일 경로"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "부동소수점 숫자"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "큰 정수 (8 byte)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP 주소"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "boolean (참, 거짓 또는 none)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "텍스트"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "시각"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr ""
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr ""
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "외래 키 (연관 필드에 의해 형식 결정)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "일대일 관계"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "다대다 관계"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "필수 항목입니다."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "정수를 입력하세요."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "숫자를 입력하세요."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "올바른 날짜를 입력하세요."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "올바른 시각을 입력하세요."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "올바른 날짜/시각을 입력하세요."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "등록된 파일이 없습니다. 인코딩 형식을 확인하세요."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "파일이 전송되지 않았습니다."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "입력하신 파일은 빈 파일입니다."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "파일을 보내거나 취소 체크박스를 체크하세요. 또는 둘다 비워두세요."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"올바른 이미지를 업로드하세요. 업로드하신 파일은 이미지 파일이 아니거나 파일"
-"이 깨져 있습니다."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "올바르게 선택해 주세요. %(value)s (이)가 선택가능항목에 없습니다."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "리스트를 입력하세요."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "순서:"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "삭제"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "%(field)s의 중복된 데이터를 고쳐주세요."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "%(field)s의 중복된 데이터를 고쳐주세요. 유일한 값이어야 합니다."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"%(field_name)s의 값은 %(date_field)s의 %(lookup)s에 대해 유일해야 합니다. 중"
-"복된 데이터를 고쳐주세요."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "아래의 중복된 값들을 고쳐주세요."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "부모 오브젝트의 primary key와 inline foreign key가 맞지 않습니다."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "올바르게 선택해 주세요. 선택하신 것이 선택가능항목에 없습니다."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"복수 선택 시에는 \"Control\" 키를 누른 상태에서 선택해 주세요.(Mac은 "
-"\"Command\" 키)"
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "현재"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "변경"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "취소"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "알 수 없습니다."
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "예"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "아니오"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "예,아니오,아마도"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d 바이트"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "오후"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "오전"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "오후"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "오전"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "자정"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "정오"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "월요일"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "화요일"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "수요일"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "목요일"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "금요일"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "토요일"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "일요일"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "월요일"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "화요일"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "수요일"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "목요일"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "금요일"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "토요일"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "일요일"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "1월"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "2월"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "3월"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "4월"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "5월"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "6월"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "7월"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "8월"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "9월"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "10월"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "11월"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "12월"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "1월"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "2월"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "3월"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "4월"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "5월"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "6월"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "7월"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "8월"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "9월"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "10월"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "11월"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "12월"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "1"
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "2"
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "3"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "4"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "5"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "6"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "7"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "8"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "9"
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "10"
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "11월"
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "12월"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "1월"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "2월"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "3월"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "4월"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "5월"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "6월"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "7월"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "8월"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "9월"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "10월"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "11월"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "12월"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr "또는"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "년도가 없습니다."
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "월이 없습니다."
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "날짜가 없습니다."
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "주가 없습니다."
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr " %(verbose_name_plural)s를 사용할 수 없습니다."
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Future 모듈 %(verbose_name_plural)s을 사용할 수 없습니다. %(class_name)s."
-"allow_future가 False 입니다."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "날짜 문자열 '%(datestr)s'이 표준 형식 '%(format)s'과 다릅니다."
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "쿼리 결과에 %(verbose_name)s가 없습니다."
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "'마지막' 페이지가 아니거나, 정수형으로 변환할 수 없습니다."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "빈 리스트이고 '%(class_name)s.allow_empty'가 False입니다."
diff --git a/lib/python2.7/site-packages/django/conf/locale/ko/__init__.py b/lib/python2.7/site-packages/django/conf/locale/ko/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ko/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/ko/formats.py b/lib/python2.7/site-packages/django/conf/locale/ko/formats.py
deleted file mode 100644
index 28b4d06..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ko/formats.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'Y년 n월 j일'
-TIME_FORMAT = 'A g:i:s'
-DATETIME_FORMAT = 'Y년 n월 j일 g:i:s A'
-YEAR_MONTH_FORMAT = 'Y년 F월'
-MONTH_DAY_FORMAT = 'F월 j일'
-SHORT_DATE_FORMAT = 'Y-n-j.'
-SHORT_DATETIME_FORMAT = 'Y-n-j H:i'
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# Kept ISO formats as they are in first position
-DATE_INPUT_FORMATS = (
- '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
- # '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006'
- # '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006'
- # '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006'
- # '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006'
- '%Y년 %m월 %d일', # '2006년 10월 25일', with localized suffix.
-)
-TIME_INPUT_FORMATS = (
- '%H:%M:%S', # '14:30:59'
- '%H:%M:%S.%f', # '14:30:59.000200'
- '%H:%M', # '14:30'
- '%H시 %M분 %S초', # '14시 30분 59초'
- '%H시 %M분', # '14시 30분'
-)
-DATETIME_INPUT_FORMATS = (
- '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
- '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
- '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
- '%Y-%m-%d', # '2006-10-25'
- '%m/%d/%Y %H:%M:%S', # '10/25/2006 14:30:59'
- '%m/%d/%Y %H:%M:%S.%f', # '10/25/2006 14:30:59.000200'
- '%m/%d/%Y %H:%M', # '10/25/2006 14:30'
- '%m/%d/%Y', # '10/25/2006'
- '%m/%d/%y %H:%M:%S', # '10/25/06 14:30:59'
- '%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200'
- '%m/%d/%y %H:%M', # '10/25/06 14:30'
- '%m/%d/%y', # '10/25/06'
-
- '%Y년 %m월 %d일 %H시 %M분 %S초', # '2006년 10월 25일 14시 30분 59초'
- '%Y년 %m월 %d일 %H시 %M분', # '2006년 10월 25일 14시 30분'
-)
-
-DECIMAL_SEPARATOR = '.'
-THOUSAND_SEPARATOR = ','
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/lb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/lb/LC_MESSAGES/django.mo
deleted file mode 100644
index ec9de0d..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/lb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/lb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/lb/LC_MESSAGES/django.po
deleted file mode 100644
index b3f65b6..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/lb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1292 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# sim0n <sim0n@trypill.org>, 2011,2013
-# sim0n <sim0n@trypill.org>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-11-03 23:25+0000\n"
-"Last-Translator: sim0n <sim0n@trypill.org>\n"
-"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/django/"
-"language/lb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikaans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arabesch"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr ""
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgaresch"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Wäissrussesch"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengalesch"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosnesch"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Katalanesch"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Tschechesch"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Walisesch"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Dänesch"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Däitsch"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Griichesch"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Englesch"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Britesch Englesch"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Spuenesch"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Argentinesch Spuenesch"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Mexikanesch Spuenesch"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estonesch"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Baskesch"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persesch"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finnesch"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Franséisch"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frisesch"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Iresch"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galesch"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebräesch"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Kroatesch"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Ungaresch"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonesesch"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islännesch"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italienesch"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japanesch"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgesch"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kanadesch"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Koreanesch"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Lëtzebuergesch"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Lithuanesesch"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Lättesch"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Macedonesch"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongolesch"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norwegesch Bokmal"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Hollännesch"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norwegesch Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Punjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Polnesch"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugisesch"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Brasilianesch Portugisesch"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Rumänesch"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Russesch"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slowakesch"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slowenesch"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albanesch"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbesch"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serbesch Latäinesch"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Schwedesch"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Thai"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Tierkesch"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukrainesch"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr ""
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnamesesch"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Einfach d'Chinesesch"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Traditionell d'Chinesesch"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Gëff en validen Wärt an."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Gëff eng valid URL an."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Gëff eng valid e-mail Adress an."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Gëff eng valid IPv4 Adress an."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Gëff eng valid IPv6 Adress an."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Gëff eng valid IPv4 oder IPv6 Adress an."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr ""
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "an"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr ""
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr ""
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr ""
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Zuel"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr ""
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr ""
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Datum (ouni Zäit)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Datum (mat Zäit)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Dezimalzuel"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-mail Adress"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr ""
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Kommazuel"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Grouss (8 byte) Zuel"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 Adress"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP Adress"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Positiv Zuel"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Kleng positiv Zuel"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Kleng Zuel"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Text"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Zäit"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Rei Binär Daten"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Fichier"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Bild"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr ""
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr ""
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr ""
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr ""
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr ""
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr ""
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr ""
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr ""
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr ""
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Et ass keng Datei geschéckt ginn."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr ""
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Gëff eng Lescht vun Wäerter an."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Sortéier"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Läsch"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr ""
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr ""
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Momentan"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Änner"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Maach eidel"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Onbekannt"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Jo"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Nee"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "jo,nee,vläit"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr ""
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Méindeg"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Dënschdeg"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Mëttwoch"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Donneschdes"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Freides"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Samschdes"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Sonndes"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Mei"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Dën"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Mett"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Don"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Fre"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sam"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Son"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Januar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Februar"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "März"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Abrell"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Juli"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "August"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Oktober"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "November"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Dezember"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mär"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "abr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "März"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Abrell"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr ""
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Juli"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Aug."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Okt."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Dec."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Januar"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Februar"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "März"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Abrell"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr ""
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Juli"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "August"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Oktober"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "November"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "December"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr "oder"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d Joer"
-msgstr[1] "%d Joren"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d Mount"
-msgstr[1] "%d Meint"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d Woch"
-msgstr[1] "%d Wochen"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d Dag"
-msgstr[1] "%d Deeg"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d Stonn"
-msgstr[1] "%d Stonnen"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d Minutt"
-msgstr[1] "%d Minutten"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 Minutten"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr ""
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr ""
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr ""
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr ""
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr ""
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr ""
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/conf/locale/lt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/lt/LC_MESSAGES/django.mo
deleted file mode 100644
index e7cd1e5..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/lt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/lt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/lt/LC_MESSAGES/django.po
deleted file mode 100644
index 67aca36..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/lt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1362 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kostas <tamosiunas@gmail.com>, 2011
-# lauris <lauris@runbox.com>, 2011
-# naktinis <naktinis@gmail.com>, 2012
-# Nikolajus Krauklis <nikolajus@gmail.com>, 2013
-# Povilas Balzaravičius <pavvka@gmail.com>, 2011-2012
-# Simonas Kazlauskas <simonas@kazlauskas.me>, 2012-2013
-# Vytautas Astrauskas <vastrauskas@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-10-23 15:55+0000\n"
-"Last-Translator: Simonas Kazlauskas <simonas@kazlauskas.me>\n"
-"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/"
-"language/lt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lt\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
-"%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikiečių"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arabų"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azerbaidžaniečių"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgarų"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Gudų"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengalų"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretonų"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosnių"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Katalonų"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Čekų"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Velso"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Danų"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Vokiečių"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Graikų"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Anglų"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Britų Anglų"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Ispanų"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Argentiniečių Ispanų"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Meksikiečių Ispanų"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Nikaragvos Ispanijos"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Venesuelos Ispanų"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estų"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Baskų"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persų"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Suomių"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Prancūzų"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Fryzų"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Airių"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galų"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebrajų"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Kroatų"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Vengrų"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indoneziečių"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islandų"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italų"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japonų"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Gruzinų"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazachų"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmerų"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Dravidų"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Korėjiečių"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Liuksemburgų"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Lietuvių"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Latvių"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Makedonų"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malajalių"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongolų"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Mjanmų"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norvegų Bokmal"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepalų"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Olandų"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norvegų Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Osetinų"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Pandžabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Lenkų"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Protugalų"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Brazilijos Portugalų"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Rumunų"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Rusų"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slovakų"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slovėnų"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albanų"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbų"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serbų Lotynų"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Švedų"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Svahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamilų"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugų"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Tailando"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turkų"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Totorių"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurtų"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukrainiečių"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnamiečių"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Supaprastinta kinų"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Tradicinė kinų"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Įveskite tinkamą reikšmę."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Įveskite tinkamą URL adresą."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Įveskite tinkamą skaičių."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Įveskite teisingą el. pašto adresą."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Šią reikšmę gali sudaryti tik raidės, skaičiai, pabraukimo arba paprasto "
-"brūkšnio simboliai."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Įveskite validų IPv4 adresą."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Įveskite validų IPv6 adresą."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Įveskite validų IPv4 arba IPv6 adresą."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Įveskite skaitmenis atskirtus kableliais."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Įsitikinkite, kad reikšmę sudaro %(limit_value)s simbolių (dabar yra "
-"%(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Įsitikinkite, kad reikšmė yra mažesnė arba lygi %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Įsitikinkite, kad reikšmė yra didesnė arba lygi %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Įsitikinkite, kad reikšmė sudaryta iš nemažiau kaip %(limit_value)d ženklo "
-"(dabartinis ilgis %(show_value)d)."
-msgstr[1] ""
-"Įsitikinkite, kad reikšmė sudaryta iš nemažiau kaip %(limit_value)d ženklų "
-"(dabartinis ilgis %(show_value)d)."
-msgstr[2] ""
-"Įsitikinkite, kad reikšmė sudaryta iš nemažiau kaip %(limit_value)d ženklų "
-"(dabartinis ilgis %(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Įsitikinkite, kad reikšmė sudaryta iš nedaugiau kaip %(limit_value)d ženklo "
-"(dabartinis ilgis %(show_value)d)."
-msgstr[1] ""
-"Įsitikinkite, kad reikšmė sudaryta iš nedaugiau kaip %(limit_value)d ženklų "
-"(dabartinis ilgis %(show_value)d)."
-msgstr[2] ""
-"Įsitikinkite, kad reikšmė sudaryta iš nedaugiau kaip %(limit_value)d ženklų "
-"(dabartinis ilgis %(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s privalo būti unikalus %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "ir"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s su šiuo %(field_label)s jau egzistuoja."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "Reikšmės %(value)r rinktis negalima."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Šis laukas negali būti null."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Lauką privaloma užpildyti."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Lauko tipas: %(field_type)s "
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Sveikas skaičius"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "'%(value)s' turi būti skaičius."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "'%(value)s' reikšmė turi būti arba True, arba False."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Loginė reikšmė (True arba False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Eilutė (ilgis iki %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Kableliais atskirti sveikieji skaičiai"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"'%(value)s' reikšmė yra netinkamu datos formatu. Reikšmė turi būti YYYY-MM-"
-"DD formatu."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"'%(value)s' reikšmė yra teisingo YYYY-MM-DD formato, tačiau tai nėra "
-"teisinga data."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Data (be laiko)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"'%(value)s' reikšmė yra neteisingo formato. Reikšmė turi būti pateikta YYYY-"
-"MM-DD HH:MM[:ss[.uuuuuu]][TZ] formatu."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"'%(value)s' reikšmė yra teisingo YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] formato, "
-"tačiau tai nėra teisinga data ar laikas."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Data (su laiku)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "'%(value)s' reikšmė turi būti dešimtainis skaičius."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Dešimtainis skaičius"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "El. pašto adresas"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Kelias iki failo"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "'%(value)s' reikšmė turi būti slankiojo kablelio skaičius."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Slankaus kablelio skaičius"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Didelis (8 baitų) sveikas skaičius"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 adresas"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP adresas"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "'%(value)s' reikšmė turi būti None, True arba False."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Loginė reikšmė (True, False arba None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Teigiamas sveikasis skaičius"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Nedidelis teigiamas sveikasis skaičius"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Unikalus adresas (iki %(max_length)s ženklų)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Nedidelis sveikasis skaičius"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Tekstas"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"'%(value)s' reikšmė yra neteisingo formato. Reikšmė turi būti pateikta HH:MM"
-"[:ss[.uuuuuu]] formatu."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"'%(value)s' reikšmė yra teisingo HH:MM[:ss[.uuuuuu]] formato, tačiau tai "
-"nėra teisingas laikas."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Laikas"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Neapdorota informacija"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Failas"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Paveiksliukas"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "%(model)s modelio instancija su pirminiu raktu %(pk)r neegzistuoja."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Išorinis raktas (tipas nustatomas susijusiame lauke)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Sąryšis vienas su vienu"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Sąryšis daug su daug"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Šis laukas yra privalomas."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Įveskite pilną skaičių."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Įveskite skaičių."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmuo."
-msgstr[1] "Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmenys."
-msgstr[2] "Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmenų."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmuo po kablelio."
-msgstr[1] "Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmenys po kablelio."
-msgstr[2] "Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmenų po kablelio."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] "Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmuo prieš kablelį."
-msgstr[1] ""
-"Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmenys prieš kablelį."
-msgstr[2] ""
-"Įsitikinkite, kad yra nedaugiau nei %(max)s skaitmenų prieš kablelį."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Įveskite tinkamą datą."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Įveskite tinkamą laiką."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Įveskite tinkamą datą/laiką."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Nebuvo nurodytas failas. Patikrinkite formos koduotę."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Failas nebuvo nurodytas."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Nurodytas failas yra tuščias."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Įsitikinkite, kad failo pavadinimas sudarytas iš nedaugiau kaip %(max)d "
-"ženklo (dabartinis ilgis %(length)d)."
-msgstr[1] ""
-"Įsitikinkite, kad failo pavadinimas sudarytas iš nedaugiau kaip %(max)d "
-"ženklų (dabartinis ilgis %(length)d)."
-msgstr[2] ""
-"Įsitikinkite, kad failo pavadinimas sudarytas iš nedaugiau kaip %(max)d "
-"ženklų (dabartinis ilgis %(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Nurodykite failą arba pažymėkite išvalyti. Abu pasirinkimai negalimi."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Atsiųskite tinkamą paveiksliuką. Failas, kurį siuntėte nebuvo paveiksliukas, "
-"arba buvo sugadintas."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Nurodykite tinkamą reikšmę. %(value)s nėra galimas pasirinkimas."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Įveskite reikšmių sarašą."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Paslėptas laukelis %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "ManagementForm duomenys buvo sugadinti arba neegzistuoja"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Prašome pateikti %d arba mažiau formų."
-msgstr[1] "Prašome pateikti %d arba mažiau formų."
-msgstr[2] "Prašome pateikti %d arba mažiau formų."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Nurodyti"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Ištrinti"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Pataisykite pasikartojančius duomenis laukui %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Pataisykite pasikartojančius duomenis laukui %(field)s. Duomenys privalo "
-"būti unikalūs."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Pataisykite pasikartojančius duomenis laukui %(field_name)s. Duomenys "
-"privalo būti unikalūs %(lookup)s peržiūroms per %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Pataisykite žemiau esančias pasikartojančias reikšmes."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Išorinis raktas neatitinka tėvinio objekto pirminio rakto."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Pasirinkite tinkamą reikšmę. Parinkta reikšmė nėra galima."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" nėra pirminiam raktui tinkama reikšmė."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Nuspauskite \"Control\", arba \"Command\" Mac kompiuteriuose, kad pasirinkti "
-"daugiau nei vieną."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"Nepavyko interpretuoti %(datetime)s %(current_timezone)s laiko juostoje; "
-"Data gali turėti keletą reikšmių arba neegzistuoti."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Šiuo metu"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Pakeisti"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Išvalyti"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Nežinomas"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Taip"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Ne"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "taip,ne,galbūt"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d baitas"
-msgstr[1] "%(size)d baitai"
-msgstr[2] "%(size)d baitai"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "vidurnaktis"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "vidurdienis"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Pirmadienis"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Antradienis"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Trečiadienis"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Ketvirtadienis"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Penktadienis"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Šeštadienis"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Sekmadienis"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Pr"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "A"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "T"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "K"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "P"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Š"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "S"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "sausis"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "vasaris"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "kovas"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "balandis"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "gegužė"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "birželis"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "liepa"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "rugpjūtis"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "rugsėjis"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "spalis"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "lapkritis"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "gruodis"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "sau"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "vas"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "kov"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "bal"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "geg"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "bir"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "lie"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "rugp"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "rugs"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "spa"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "lap"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "grd"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "saus."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "vas."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "kov."
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "bal."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "geg."
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "birž."
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "liep."
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "rugpj."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "rugs."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "spal."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "lapkr."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "gruod."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "sausio"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "vasario"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "kovo"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "balandžio"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "gegužės"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "birželio"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "liepos"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "rugpjūčio"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "rugsėjo"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "spalio"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "lapkričio"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "gruodžio"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Nepavyko importuoti nei PIL nei Pillow bibliotekos: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "Nepavyko importuoti '_imaging' modulio iš PIL paketo: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Tai nėra teisingas IPv6 adresas."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "arba"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d metas"
-msgstr[1] "%d metai"
-msgstr[2] "%d metų"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d mėnuo"
-msgstr[1] "%d mėnesiai"
-msgstr[2] "%d mėnesių"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d savaitė"
-msgstr[1] "%d savaitės"
-msgstr[2] "%d savaičių"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d diena"
-msgstr[1] "%d dienos"
-msgstr[2] "%d dienų"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d valanda"
-msgstr[1] "%d valandos"
-msgstr[2] "%d valandų"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minutė"
-msgstr[1] "%d minutės"
-msgstr[2] "%d minučių"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minučių"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Aplankų indeksai čia neleidžiami."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" neegzistuoja"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "%(directory)s indeksas"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Nenurodyti metai"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Nenurodytas mėnuo"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Nenurodyta diena"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Nenurodyta savaitė"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Nėra %(verbose_name_plural)s"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Ateities %(verbose_name_plural)s nėra prieinami, nes %(class_name)s."
-"allow_future yra False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Data '%(datestr)s' neatitinka formato '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Atitinkantis užklausą %(verbose_name)s nerastas"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"Puslapis nėra 'paskutinis', taip pat negali būti paverstas į sveiką skaičių."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Neegzistuojantis puslapis (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Tuščias sąrašas ir '%(class_name)s.allow_empty' yra False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/lt/__init__.py b/lib/python2.7/site-packages/django/conf/locale/lt/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/lt/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/lt/formats.py b/lib/python2.7/site-packages/django/conf/locale/lt/formats.py
deleted file mode 100644
index 1bff4d9..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/lt/formats.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = r'Y \m. E j \d.'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = r'Y \m. E j \d., H:i:s'
-YEAR_MONTH_FORMAT = r'Y \m. F'
-MONTH_DAY_FORMAT = r'E j \d.'
-SHORT_DATE_FORMAT = 'Y-m-d'
-SHORT_DATETIME_FORMAT = 'Y-m-d H:i'
-FIRST_DAY_OF_WEEK = 1 # Monday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%Y-%m-%d', '%d.%m.%Y', '%d.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06'
-)
-TIME_INPUT_FORMATS = (
- '%H:%M:%S', # '14:30:59'
- '%H:%M:%S.%f', # '14:30:59.000200'
- '%H:%M', # '14:30'
- '%H.%M.%S', # '14.30.59'
- '%H.%M.%S.%f', # '14.30.59.000200'
- '%H.%M', # '14.30'
-)
-DATETIME_INPUT_FORMATS = (
- '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
- '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
- '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
- '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
- '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
- '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
- '%d.%m.%Y', # '25.10.2006'
- '%d.%m.%y %H:%M:%S', # '25.10.06 14:30:59'
- '%d.%m.%y %H:%M:%S.%f', # '25.10.06 14:30:59.000200'
- '%d.%m.%y %H:%M', # '25.10.06 14:30'
- '%d.%m.%y %H.%M.%S', # '25.10.06 14.30.59'
- '%d.%m.%y %H.%M.%S.%f', # '25.10.06 14.30.59.000200'
- '%d.%m.%y %H.%M', # '25.10.06 14.30'
- '%d.%m.%y', # '25.10.06'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/lv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/lv/LC_MESSAGES/django.mo
deleted file mode 100644
index 77b92b7..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/lv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/lv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/lv/LC_MESSAGES/django.po
deleted file mode 100644
index 74160ac..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/lv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1316 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# edgars <edgars.jekabsons@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/"
-"lv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lv\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "arābu"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr ""
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "bulgāru"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "bengāļu"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "bosniešu"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "katalāņu"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "čehu"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "velsiešu"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "dāņu"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "vācu"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "grieķu"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "angļu"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Lielbritānijas angļu"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "spāņu"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr ""
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr ""
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "igauņu"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "basku"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "persiešu"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "somu"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "franču"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "frīzu"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "īru"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "galīciešu"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "ebreju"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "horvātu"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "ungāru"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr ""
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "islandiešu"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "itāļu"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japāņu"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "vācu"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "khmeru"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "kannādiešu"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "korejiešu"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "lietuviešu"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "latviešu"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "maķedoniešu"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr ""
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr ""
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr ""
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "holandiešu"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr ""
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr ""
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "poļu"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "portugāļu"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Brazīlijas portugāļu"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "rumāņu"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "krievu"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "slovāku"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "slovēņu"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "albāņu"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "serbu"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "serbu latīņu"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "zviedru"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "tamilu"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "taizemiešu"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "turku"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ukraiņu"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr ""
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "vjetnamiešu"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "vienkāršā ķīniešu"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "tradicionālā ķīniešu"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Ievadiet korektu vērtību."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Ievadiet korektu URL adresi."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Ievadiet korektu vērtību, kas satur tikai burtus, numurus, apakšsvītras vai "
-"šķērssvītras."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Ievadiet korektu IPv4 adresi."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr ""
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr ""
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Ievadiet tikai numurus, atdalītus ar komatiem."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Nodrošiniet, ka vērtība ir %(limit_value)s (tā satur %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Šai vērtībai jabūt mazākai vai vienādai ar %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Vērtībai jābūt lielākai vai vienādai ar %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s jābūt unikālam %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "un"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s ar nosaukumu %(field_label)s jau eksistē."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Šis lauks nevar neksistēt (būt null)."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Šis lauks nevar būt tukšs"
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Lauks ar tipu: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Vesels skaitlis"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (True vai False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Simbolu virkne (līdz pat %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Ar komatu atdalīti veselie skaitļi"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Datums (bez laika)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Datums (ar laiku)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Decimāls skaitlis"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-pasta adrese"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Faila ceļš"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Plūstošā punkta skaitlis"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Liels (8 baitu) vesels skaitlis"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP adrese"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (jā, nē vai neviens)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Teksts"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Laiks"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr ""
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr ""
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Ārējā atslēga (tipu nosaka lauks uz kuru attiecas)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Attiecība viens pret vienu"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Attiecība daudzi pret daudziem"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Šis lauks ir obligāts."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Ievadiet veselu skaitli."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Ievadiet skaitli."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Ievadiet korektu datumu."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Ievadiet korektu laiku."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Ievadiet korektu datumu/laiku."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Nav nosūtīts fails. Pārbaudiet formas kodējuma tipu."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Netika nosūtīts fails."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Jūsu nosūtītais fails ir tukšs."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Augšupielādējiet korektu attēlu. Fails, ko augšupielādējāt, vai nu nav "
-"attēls, vai arī ir bojāts."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Izvēlieties korektu izvēli. %(value)s nav pieejamo izvēļu sarakstā."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Ievadiet sarakstu ar vērtībām."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Sakārtojums"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Dzēst"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Lūdzu izlabojiet dublicētos datus priekš %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Lūdzu izlabojiet dublicētos datus laukam %(field)s, kam jābūt unikālam."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Lūdzu izlabojiet dublicētos datus laukam %(field_name)s, kam jābūt unikālam "
-"priekš %(lookup)s iekš %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Lūdzu izlabojiet dublicētās vērtības zemāk."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Iekļautā ārējā atslēga nesakrita ar vecāka elementa primāro atslēgu"
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Izvēlaties pareizu izvēli. Jūsu izvēlele neietilpst pieejamo sarakstā."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Lai iezīmētu vairāk par vienu, pieturiet \"Ctrl\" (\"Command\" uz Mac "
-"datora) taustiņu."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr ""
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Izmainīt"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr ""
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Nezināms"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Jā"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Nē"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "jā,nē,varbūt"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d baits"
-msgstr[1] "%(size)d baiti"
-msgstr[2] "%(size)d baitu"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr ""
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr ""
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr ""
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr ""
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr ""
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "pusnakts"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "dienasvidus"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "pirmdiena"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "otrdiena"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "trešdiena"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "ceturdiena"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "piektdiena"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "sestdiena"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "svētdiena"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "pr"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "ot"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "tr"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "ce"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "pk"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "se"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "sv"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "janvāris"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "februāris"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "marts"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "aprīlis"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "maijs"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "jūnijs"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "jūlijs"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "augusts"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "septembris"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "oktobris"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "novembris"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "decembris"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jūn"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jūl"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr ""
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr ""
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "marts"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "aprīlis"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "maijs"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "jūnijs"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "jūlijs"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr ""
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr ""
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr ""
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr ""
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr ""
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "janvāris"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "februāris"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "marts"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "aprīlis"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "maijs"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "jūnijs"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "jūlijs"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "augusts"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "septembris"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "oktobris"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "novembris"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "decembris"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr "vai"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ""
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr ""
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr ""
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr ""
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr ""
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr ""
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr ""
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/conf/locale/lv/__init__.py b/lib/python2.7/site-packages/django/conf/locale/lv/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/lv/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/lv/formats.py b/lib/python2.7/site-packages/django/conf/locale/lv/formats.py
deleted file mode 100644
index db1952e..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/lv/formats.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = r'Y. \g\a\d\a j. F'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = r'Y. \g\a\d\a j. F, H:i:s'
-YEAR_MONTH_FORMAT = r'Y. \g. F'
-MONTH_DAY_FORMAT = 'j. F'
-SHORT_DATE_FORMAT = r'j.m.Y'
-SHORT_DATETIME_FORMAT = 'j.m.Y H:i:s'
-FIRST_DAY_OF_WEEK = 1 #Monday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# Kept ISO formats as they are in first position
-DATE_INPUT_FORMATS = (
- '%Y-%m-%d', '%d.%m.%Y', '%d.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06'
-)
-TIME_INPUT_FORMATS = (
- '%H:%M:%S', # '14:30:59'
- '%H:%M:%S.%f', # '14:30:59.000200'
- '%H:%M', # '14:30'
- '%H.%M.%S', # '14.30.59'
- '%H.%M.%S.%f', # '14.30.59.000200'
- '%H.%M', # '14.30'
-)
-DATETIME_INPUT_FORMATS = (
- '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
- '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
- '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
- '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
- '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
- '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
- '%d.%m.%Y', # '25.10.2006'
- '%d.%m.%y %H:%M:%S', # '25.10.06 14:30:59'
- '%d.%m.%y %H:%M:%S.%f', # '25.10.06 14:30:59.000200'
- '%d.%m.%y %H:%M', # '25.10.06 14:30'
- '%d.%m.%y %H.%M.%S', # '25.10.06 14.30.59'
- '%d.%m.%y %H.%M.%S.%f', # '25.10.06 14.30.59.000200'
- '%d.%m.%y %H.%M', # '25.10.06 14.30'
- '%d.%m.%y', # '25.10.06'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = ' ' # Non-breaking space
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/mk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/mk/LC_MESSAGES/django.mo
deleted file mode 100644
index abf6583..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/mk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/mk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/mk/LC_MESSAGES/django.po
deleted file mode 100644
index eaeade0..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/mk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1340 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# vvangelovski <vvangelovski@gmail.com>, 2013
-# vvangelovski <vvangelovski@gmail.com>, 2011-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-09-23 11:24+0000\n"
-"Last-Translator: vvangelovski <vvangelovski@gmail.com>\n"
-"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/"
-"language/mk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mk\n"
-"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Африканс"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Арапски"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Азербејџански"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Бугарски"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Белоруски"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Бенгалски"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Бретонски"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Босански"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Каталански"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Чешки"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Велшки"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Дански"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Германски"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Грчки"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Англиски"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Британскиот англиски"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Есперанто"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Шпански"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Аргентински Шпански"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Мексикански шпански"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Никарагва шпански"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Венецуела шпански"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Естонски"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Баскиски"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Персиски"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Фински"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Француски"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Фризиски"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Ирски"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Галски"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Еврејски"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Хинди"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Хрватски"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Унгарски"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Интерлингва"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Индонезиски"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Исландски"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Италијански"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Јапонски"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Грузиски"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Казахстански"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Кмер"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Канада"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Корејски"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Луксембуршки"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Литвански"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Латвиски"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Македонски"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Малајалам"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Монголски"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Бурмански"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Норвешка bokmål"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Непалски"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Холандски"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Норвешки Нинорск"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Осетски"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Пунџаби"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Полски"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Португалкски"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Бразилско португалски"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Романски"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Руски"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Словачки"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Словенечки"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Албански"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Српски"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Српски Латиница"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Шведски"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Свахили"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Тамил"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Телугу"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Тајландски"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Турски"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Татарски"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Удмурт"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Украински"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Урду"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Виетнамски"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Упростен кинески"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Традиционален кинески"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Внесете правилна вредност."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Внесете правилна веб адреса."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Внесете валиден цел број."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Внесете валидна email адреса."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Внесете правилно кратко име (slug) кое се соддржи од букви, цифри, долна "
-"црта или тире."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Внесeте правилна IPv4 адреса."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Внесете валидна IPv6 адреса."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Внесете валидна IPv4 или IPv6 адреса."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Внесете само цифри одделени со запирки."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Осигурајте се дека оваа вредност е %(limit_value)s (моментално е "
-"%(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-"Осигурајте се дека оваа вредност е помала или еднаква со %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-"Осигурајте се дека оваа вредност е поголема или еднаква со %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Осигурајте се дека оваа вредност има најмалку %(limit_value)d карактер (има "
-"%(show_value)d)."
-msgstr[1] ""
-"Осигурајте се дека оваа вредност има најмалку %(limit_value)d карактери (има "
-"%(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Осигурајте се дека оваа вредност има најмногу %(limit_value)d карактер (има "
-"%(show_value)d)."
-msgstr[1] ""
-"Осигурајте се дека оваа вредност има најмногу %(limit_value)d карактери (има "
-"%(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s мора да биде уникатно за %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "и"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s со %(field_label)s веќе постои."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "Вредноста %(value)r не е валиден избор."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Оваа вредност неможе да биде null."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Ова поле не може да биде празно"
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Поле од тип: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Цел број"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "'%(value)s' вредноста мора да биде цел број."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "'%(value)s' вредноста мора да биде Точно или Неточно."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Логичка (или точно или неточно)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Збор (до %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Целобројни вредности одделени со запирка"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"'%(value)s' вредноста има невалидно форматиран датум. Мора да биде во ГГГГ-"
-"ММ-ДД формат."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"'%(value)s' вредноста има точен формат (ГГГГ-ММ-ДД) но не е валиден датум."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Датум (без час)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"'%(value)s' вредноста има невалиден формат. Мора да биде во YYYY-MM-DD HH:MM"
-"[:ss[.uuuuuu]][TZ] формат."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"'%(value)s' вредноста има точен формат (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) "
-"но не е валиден датум со време."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Датум (со час)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "'%(value)s' вредноста мора да биде децимален број."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Децимален број"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Е-пошта"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Патека на датотека"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "'%(value)s' вредноста мора да биде број со подвижна запирка."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Децимален број"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Голем (8 бајти) цел број"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 адреса"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "ИП адреса"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "'%(value)s' вредноста мора да биде Ништо, Точно или Неточно."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Логичка (точно,неточно или празно)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Позитивен цел број"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Позитивен мал цел број"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Скратено име (до %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Мал цел број"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Текст"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"'%(value)s' вредноста има неточен формат. Мора да биде во HH:MM[:ss[."
-"uuuuuu]] format."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"'%(value)s' вредноста има точен формат (HH:MM[:ss[.uuuuuu]]) но е невалидно "
-"време."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Час"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Сурови бинарни податоци"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Датотека"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Слика"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "%(model)s инстанца со примарен клуч %(pk)r не постои."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Надворешен клуч (типот е одреден според сврзаното поле)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Еден-према-еден релација"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Повеќе-према-повеќе релација"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Ова поле е задолжително."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Внеси цел број."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Внесете број."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Осигурајте се дека вкупно нема повеќе од %(max)s цифра."
-msgstr[1] "Осигурајте се дека вкупно нема повеќе од %(max)s цифри."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Осигурајте се дека нема повеќе од %(max)s децимално место."
-msgstr[1] "Осигурајте се дека нема повеќе од %(max)s децимални места."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-"Осигурајте се дека нема повеќе одs %(max)s цифра пред децималната запирка."
-msgstr[1] ""
-"Осигурајте се дека нема повеќе од %(max)s цифри пред децималната запирка."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Внесете правилен датум."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Внесете правилно време."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Внесете правилен датум со време."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Не беше пратена датотека. Проверете го типот на енкодирање на формата."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Не беше пратена датотека."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Пратената датотека е празна."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Осигурајте се дека ова име на датотека има најмногу %(max)d карактер (има "
-"%(length)d)."
-msgstr[1] ""
-"Осигурајте се дека ова име на датотека има најмногу %(max)d карактери (има "
-"%(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Или прикачете датотека или оттштиклирајте го полето."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Качете валидна слика. Датотеката која ја качивте или не беше слика или беше "
-"расипана датотеката."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Внесете валиден избор. %(value)s не е еден од можните избори."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Внесете листа на вредности."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Скриено поле %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "податоците од ManagementForm недостасуваат или се променети"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Ве молиме поднесете %d или помалку форми."
-msgstr[1] "Ве молиме поднесете %d или помалку форми."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Редослед"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Избриши"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Ве молам поправете ја дуплираната вредност за %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Ве молам поправете ја дуплираната вредност за %(field)s, која мора да биде "
-"уникатна."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Ве молам поправете ја дуплираната вредност за %(field_name)s која мора да "
-"биде уникатна за %(lookup)s во %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Ве молам поправете ги дуплираните вредности подолу."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Надворешниот клуч на вгезденото поле не се совпаѓа со примарниот клуч на "
-"родителската инстанца."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Изберете правилно. Тоа не е еден од можните избори."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" не е правилна вредност за примарен клуч."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Држете го „Control“, или „Command“ на Мекинтош, за да изберете повеќе од "
-"едно."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s не може да се толкува во временска зона %(current_timezone)s; "
-"можеби е двосмислена или не постои."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Моментално"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Измени"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Исчисти"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Непознато"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Да"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Не"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "да, не, можеби"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d бајт"
-msgstr[1] "%(size)d бајти"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "попладне"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "наутро"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "попладне"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "наутро"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "полноќ"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "пладне"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Понеделник"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Вторник"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Среда"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Четврток"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Петок"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Сабота"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Недела"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Пон"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Вто"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Сре"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Чет"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Пет"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Саб"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Нед"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Јануари"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Февруари"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Март"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Април"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Мај"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Јуни"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Јули"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "август"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Септември"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Октомври"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Ноември"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Декември"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "јан"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "фев"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "мар"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "апр"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "мај"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "јун"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "јул"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "авг"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "сеп"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "окт"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "ное"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "дек"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Јан."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Фев."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Март"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Април"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Мај"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Јуни"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Јули"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Авг."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Септ."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Окт."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Ное."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Дек."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Јануари"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Февруари"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Март"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Април"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Мај"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Јуни"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Јули"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Август"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Септември"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Октомври"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Ноември"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Декември"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Ниту Pillow нити PIL можат да се импортираат: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "'_imaging' модулот PIL не може да се импортира: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Ова не е валидна IPv6 адреса."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "или"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d година"
-msgstr[1] "%d години"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d месец"
-msgstr[1] "%d месеци"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d недела"
-msgstr[1] "%d недели"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d ден"
-msgstr[1] "%d дена"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d час"
-msgstr[1] "%d часови"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d минута"
-msgstr[1] "%d минути"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 минути"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Индекси на директориуми не се дозволени тука."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" не постои"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Индекс на %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Не е дадена година"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Не е даден месец"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Не е даден ден"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Не е дадена недела"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Нема достапни %(verbose_name_plural)s"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Идни %(verbose_name_plural)s не се достапни бидејќи %(class_name)s."
-"allow_future е False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Невалиден текст за датум '%(datestr)s' даден формат '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Нема %(verbose_name)s што се совпаѓа со пребарувањето"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"Страницата не е \"последна\", ниту пак може да се конвертира во еден цел "
-"број."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Невалидна страна (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Празна листа и '%(class_name)s .allow_empty' е False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/mk/__init__.py b/lib/python2.7/site-packages/django/conf/locale/mk/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/mk/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/mk/formats.py b/lib/python2.7/site-packages/django/conf/locale/mk/formats.py
deleted file mode 100644
index 2a0df6c..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/mk/formats.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'd F Y'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = 'j. F Y. H:i'
-YEAR_MONTH_FORMAT = 'F Y.'
-MONTH_DAY_FORMAT = 'j. F'
-SHORT_DATE_FORMAT = 'j.m.Y.'
-SHORT_DATETIME_FORMAT = 'j.m.Y. H:i'
-FIRST_DAY_OF_WEEK = 1
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d.%m.%Y.', '%d.%m.%y.', # '25.10.2006.', '25.10.06.'
- '%d. %m. %Y.', '%d. %m. %y.', # '25. 10. 2006.', '25. 10. 06.'
-)
-
-DATETIME_INPUT_FORMATS = (
- '%d.%m.%Y. %H:%M:%S', # '25.10.2006. 14:30:59'
- '%d.%m.%Y. %H:%M:%S.%f', # '25.10.2006. 14:30:59.000200'
- '%d.%m.%Y. %H:%M', # '25.10.2006. 14:30'
- '%d.%m.%Y.', # '25.10.2006.'
- '%d.%m.%y. %H:%M:%S', # '25.10.06. 14:30:59'
- '%d.%m.%y. %H:%M:%S.%f', # '25.10.06. 14:30:59.000200'
- '%d.%m.%y. %H:%M', # '25.10.06. 14:30'
- '%d.%m.%y.', # '25.10.06.'
- '%d. %m. %Y. %H:%M:%S', # '25. 10. 2006. 14:30:59'
- '%d. %m. %Y. %H:%M:%S.%f', # '25. 10. 2006. 14:30:59.000200'
- '%d. %m. %Y. %H:%M', # '25. 10. 2006. 14:30'
- '%d. %m. %Y.', # '25. 10. 2006.'
- '%d. %m. %y. %H:%M:%S', # '25. 10. 06. 14:30:59'
- '%d. %m. %y. %H:%M:%S.%f', # '25. 10. 06. 14:30:59.000200'
- '%d. %m. %y. %H:%M', # '25. 10. 06. 14:30'
- '%d. %m. %y.', # '25. 10. 06.'
-)
-
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/ml/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/ml/LC_MESSAGES/django.mo
deleted file mode 100644
index d1421d0..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ml/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/ml/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/ml/LC_MESSAGES/django.po
deleted file mode 100644
index 4c22ac2..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ml/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# anivar <anivar.aravind@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Jeffy <jeffymj@gmail.com>, 2012
-# Rajeesh Nair <rajeeshrnair@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-11-19 15:38+0000\n"
-"Last-Translator: anivar <anivar.aravind@gmail.com>\n"
-"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/"
-"language/ml/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ml\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "ആഫ്രിക്കാന്‍സ്"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "അറബിക്"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "അസര്‍ബൈജാനി"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "ബള്‍ഗേറിയന്‍"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "ബെലറൂഷ്യന്‍"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "ബംഗാളി"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "ബ്രെട്ടണ്‍"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "ബോസ്നിയന്‍"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "കാറ്റലന്‍"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "ചെക്"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "വെല്‍ഷ്"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "ഡാനിഷ്"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "ജര്‍മന്‍"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "ഗ്രീക്ക്"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "ഇംഗ്ളീഷ്"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "ബ്രിട്ടീഷ് ഇംഗ്ളീഷ്"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "എസ്പെരാന്റോ"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "സ്പാനിഷ്"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "അര്‍ജന്റീനിയന്‍ സ്പാനിഷ്"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "മെക്സിക്കന്‍ സ്പാനിഷ്"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "നിക്കരാഗ്വന്‍ സ്പാനിഷ്"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "വെനിസ്വലന്‍ സ്പാനിഷ്"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "എസ്ടോണിയന്‍ സ്പാനിഷ്"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "ബാസ്ക്യു"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "പേര്‍ഷ്യന്‍"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "ഫിന്നിഷ്"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "ഫ്രെഞ്ച്"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "ഫ്രിസിയന്‍"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "ഐറിഷ്"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "ഗലിഷ്യന്‍"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "ഹീബ്റു"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "ഹിന്ദി"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "ക്രൊയേഷ്യന്‍"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "ഹംഗേറിയന്‍"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "ഇന്റര്‍ലിംഗ്വാ"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "ഇന്തൊനേഷ്യന്‍"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "ഐസ്ലാന്‍ഡിക്"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "ഇറ്റാലിയന്‍"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "ജാപ്പനീസ്"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "ജോര്‍ജിയന്‍"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "കസാക്"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "ഖ്മേര്‍"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "കന്നഡ"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "കൊറിയന്‍"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "ലക്സംബര്‍ഗിഷ് "
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "ലിത്വാനിയന്‍"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "ലാറ്റ്വിയന്‍"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "മാസിഡോണിയന്‍"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "മലയാളം"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "മംഗോളിയന്‍"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "ബര്‍മീസ്"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "നോര്‍വീജിയന്‍ ബൊക്മാല്‍"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "നേപ്പാളി"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "ഡച്ച്"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "നോര്‍വീജിയന്‍ നിനോഷ്ക്"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "ഒസ്സെറ്റിക്"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "പഞ്ചാബി"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "പോളിഷ്"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "പോര്‍ചുഗീസ്"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "ബ്റസീലിയന്‍ പോര്‍ചുഗീസ്"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "റൊമാനിയന്‍"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "റഷ്യന്‍"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "സ്ളൊവാക്"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "സ്ളൊവേനിയന്‍"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "അല്‍ബേനിയന്‍"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "സെര്‍ബിയന്‍"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "സെര്‍ബിയന്‍ ലാറ്റിന്‍"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "സ്വീഡിഷ്"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "സ്വാഹിലി"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "തമിഴ്"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "തെലുങ്ക്"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "തായ്"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "ടര്‍ക്കിഷ്"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "തൊതാര്‍"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "ഉദ്മര്‍ത്"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "യുക്രേനിയന്‍"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "ഉര്‍ദു"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "വിയറ്റ്നാമീസ്"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "ലഘു ചൈനീസ്"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "പരമ്പരാഗത ചൈനീസ്"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "സാധുതയുള്ള മൂല്യം നല്‍കുക."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "സാധുതയുള്ള URL നല്‍കുക"
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "സാധുതയുള്ള ഇമെയില്‍ വിലാസം നല്‍കുക"
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"അക്ഷരങ്ങള്‍, അക്കങ്ങള്‍, അണ്ടര്‍സ്കോര്‍, ഹൈഫന്‍ എന്നിവ മാത്രം അടങ്ങിയ സാധുതയുള്ള ഒരുവാക്ക് "
-"ചുരുക്കവാക്കായി നല്‍കുക "
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "ശരിയായ IPv4 വിലാസം നല്കണം"
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "ശരിയായ ഒരു IPv6 വിലാസം നല്കുക."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "ശരിയായ ഒരു IPv4 വിലാസമോ IPv6 വിലാസമോ നല്കുക."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "അക്കങ്ങള്‍ മാത്രം (കോമയിട്ടു വേര്‍തിരിച്ചത്)"
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "ഇത് %(limit_value)s ആവണം. (ഇപ്പോള്‍ %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "ഇത് %(limit_value)s-ഓ അതില്‍ കുറവോ ആവണം"
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "ഇത് %(limit_value)s-ഓ അതില്‍ കൂടുതലോ ആവണം"
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(date_field)s %(lookup)s-നു %(field_name)s ആവര്‍ത്തിക്കാന്‍ പാടില്ല."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "ഉം"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(field_label)s-ഓടു കൂടിയ %(model_name)s നിലവിലുണ്ട്."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "ഈ കളം (ഫീല്‍ഡ്) ഒഴിച്ചിടരുത്."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "ഈ കളം (ഫീല്‍ഡ്) ഒഴിച്ചിടരുത്."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "%(field_type)s എന്ന തരത്തിലുള്ള കളം (ഫീല്‍ഡ്)"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "പൂര്‍ണ്ണസംഖ്യ"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "ശരിയോ തെറ്റോ (True അഥവാ False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "സ്ട്രിങ്ങ് (%(max_length)s വരെ നീളമുള്ളത്)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "കോമയിട്ട് വേര്‍തിരിച്ച സംഖ്യകള്‍"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "തീയതി (സമയം വേണ്ട)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "തീയതി (സമയത്തോടൊപ്പം)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "ദശാംശസംഖ്യ"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "ഇ-മെയില്‍ വിലാസം"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "ഫയല്‍ സ്ഥാനം"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "ദശാംശസംഖ്യ"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "8 ബൈറ്റ് പൂര്‍ണസംഖ്യ."
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 വിലാസം"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP വിലാസം"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "ശരിയോ തെറ്റോ എന്നു മാത്രം (True, False, None എന്നിവയില്‍ ഏതെങ്കിലും ഒന്ന്)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "ധന പൂര്‍ണസംഖ്യ"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "ധന ഹ്രസ്വ പൂര്‍ണസംഖ്യ"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "സ്ലഗ് (%(max_length)s വരെ)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "ഹ്രസ്വ പൂര്‍ണസംഖ്യ"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "ടെക്സ്റ്റ്"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "സമയം"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL(വെബ്-വിലാസം)"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "ഫയല്‍"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "ചിത്രം"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "ഫോറിന്‍ കീ (ടൈപ്പ് ബന്ധപ്പെട്ട ഫീല്‍ഡില്‍ നിന്നും നിര്‍ണ്ണയിക്കുന്നതാണ്)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "വണ്‍-ടു-വണ്‍ ബന്ധം"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "മെനി-ടു-മെനി ബന്ധം"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "ഈ കള്ളി(ഫീല്‍ഡ്) നിര്‍ബന്ധമാണ്."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "ഒരു പൂര്‍ണസംഖ്യ നല്കുക."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "ഒരു സംഖ്യ നല്കുക."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "ശരിയായ തീയതി നല്കുക."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "ശരിയായ സമയം നല്കുക."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "ശരിയായ തീയതിയും സമയവും നല്കുക."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "ഫയലൊന്നും ലഭിച്ചിട്ടില്ല. ഫോമിലെ എന്‍-കോഡിംഗ് പരിശോധിക്കുക."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "ഫയലൊന്നും ലഭിച്ചിട്ടില്ല."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "ലഭിച്ച ഫയല്‍ ശൂന്യമാണ്."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"ഒന്നുകില്‍ ഫയല്‍ സമര്‍പ്പിക്കണം, അല്ലെങ്കില്‍ ക്ളിയര്‍ എന്ന ചെക്ബോക്സ് ടിക് ചെയ്യണം. ദയവായി രണ്ടും "
-"കൂടി ചെയ്യരുത്."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"ശരിയായ ചിത്രം അപ് ലോഡ് ചെയ്യുക. നിങ്ങള്‍ നല്കിയ ഫയല്‍ ഒന്നുകില്‍ ഒരു ചിത്രമല്ല, അല്ലെങ്കില്‍ "
-"വികലമാണ്."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "യോഗ്യമായത് തെരഞ്ഞെടുക്കുക. %(value)s ലഭ്യമായവയില്‍ ഉള്‍പ്പെടുന്നില്ല."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "മൂല്യങ്ങളുടെ പട്ടിക(ലിസ്റ്റ്) നല്കുക."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "ക്രമം"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "ഡിലീറ്റ്"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "%(field)s-നായി നല്കുന്ന വിവരം ആവര്‍ത്തിച്ചത് ദയവായി തിരുത്തുക."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "%(field)s-നായി നല്കുന്ന വിവരം ആവര്‍ത്തിക്കാന്‍ പാടില്ല. ദയവായി തിരുത്തുക."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"%(date_field)s ലെ %(lookup)s നു വേണ്ടി %(field_name)s നു നല്കുന്ന വിവരം ആവര്‍ത്തിക്കാന്‍ "
-"പാടില്ല. ദയവായി തിരുത്തുക."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "താഴെ കൊടുത്തവയില്‍ ആവര്‍ത്തനം ഒഴിവാക്കുക."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "ഇന്‍ലൈനായി നല്കിയ ഫോറിന്‍ കീ മാത്രു വസ്തുവിന്റെ പ്രാഥമിക കീയുമായി യോജിക്കുന്നില്ല."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "യോഗ്യമായത് തെരഞ്ഞെടുക്കുക. നിങ്ങള്‍ നല്കിയത് ലഭ്യമായവയില്‍ ഉള്‍പ്പെടുന്നില്ല."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "\"Control\" എന്ന കീ അമര്‍ത്തിപ്പിടിക്കുക. (Macലാണെങ്കില്‍ \"Command\")."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s %(current_timezone)s എന്ന സമയമേഖലയിലേക്ക് വ്യാഖ്യാനിക്കാന്‍ "
-"സാധിച്ചിട്ടില്ല; ഇത് ഒന്നുകില്‍ അവ്യക്തമാണ്, അല്ലെങ്കില്‍ നിലവിലില്ല."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "നിലവിലുള്ളത്"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "മാറ്റുക"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "കാലിയാക്കുക"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "അജ്ഞാതം"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "അതെ"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "അല്ല"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "ഉണ്ട്, ഇല്ല, ഉണ്ടായേക്കാം"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d ബൈറ്റ്"
-msgstr[1] "%(size)d ബൈറ്റുകള്‍"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s കെ.ബി"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s എം.ബി"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s ജി.ബി"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s ടി.ബി"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s പി.ബി"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "പി. എം (ഉച്ചയ്ക്കു ശേഷം) "
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "എ. എം (ഉച്ചയ്ക്കു മുമ്പ്)"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "പി. എം (ഉച്ചയ്ക്കു ശേഷം) "
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "എ. എം (ഉച്ചയ്ക്കു മുമ്പ്)"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "അര്‍ധരാത്രി"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "ഉച്ച"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "തിങ്കള്‍"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "ചൊവ്വ"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "ബുധന്‍"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "വ്യാഴം"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "വെള്ളി"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "ശനി"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "ഞായര്‍"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "തിങ്കള്‍"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "ചൊവ്വ"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "ബുധന്‍"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "വ്യാഴം"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "വെള്ളി"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "ശനി"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "ഞായര്‍"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "ജനുവരി"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "ഫെബ്രുവരി"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "മാര്‍ച്ച്"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "ഏപ്രില്‍"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "മേയ്"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "ജൂണ്‍"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "ജൂലൈ"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "ആഗസ്ത്"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "സെപ്തംബര്‍"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "ഒക്ടോബര്‍"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "നവംബര്‍"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "ഡിസംബര്‍"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ജനു."
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "ഫെബ്രു."
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "മാര്‍ച്ച്"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "ഏപ്രില്‍"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "മേയ്"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "ജൂണ്‍"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "ജൂലൈ"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ആഗസ്ത്"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "സെപ്ടം."
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "ഒക്ടോ."
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "നവം."
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "ഡിസം."
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "ജനു."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "ഫെബ്രു."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "മാര്‍ച്ച്"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "ഏപ്രില്‍"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "മേയ്"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "ജൂണ്‍"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "ജൂലൈ"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "ആഗ."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "സെപ്തം."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "ഒക്ടോ."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "നവം."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "ഡിസം."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "ജനുവരി"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "ഫെബ്രുവരി"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "മാര്‍ച്ച്"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "ഏപ്രില്‍"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "മേയ്"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "ജൂണ്‍"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "ജൂലൈ"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "ആഗസ്ത്"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "സെപ്തംബര്‍"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "ഒക്ടോബര്‍"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "നവംബര്‍"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "ഡിസംബര്‍"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "അഥവാ"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "ഡയറക്ടറി സൂചികകള്‍ ഇവിടെ അനുവദനീയമല്ല."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" നിലവിലില്ല"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "%(directory)s യുടെ സൂചിക"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "വര്‍ഷം പരാമര്‍ശിച്ചിട്ടില്ല"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "മാസം പരാമര്‍ശിച്ചിട്ടില്ല"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "ദിവസം പരാമര്‍ശിച്ചിട്ടില്ല"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "ആഴ്ച പരാമര്‍ശിച്ചിട്ടില്ല"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s ഒന്നും ലഭ്യമല്ല"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"%(class_name)s.allow_future ന് False എന്നു നല്കിയിട്ടുള്ളതിനാല്‍ Future "
-"%(verbose_name_plural)s ഒന്നും ലഭ്യമല്ല."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "'%(datestr)s' എന്ന തെറ്റായ തീയതി '%(format)s' എന്ന മാതൃകയില്‍."
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "ചോദ്യത്തിനു ചേരുന്ന് %(verbose_name)s ഇല്ല"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"പേജ് നമ്പറായി സംഖ്യയാക്കി മാറ്റാന്‍ കഴിയുന്ന മൂല്യമോ 'last' എന്ന മൂല്യമോ അല്ല നല്കിയിട്ടുള്ളത്."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "ലിസ്റ്റ് കാലിയുമാണ് %(class_name)s.allow_empty എന്നത് False എന്നു നല്കിയിട്ടുമുണ്ട്."
diff --git a/lib/python2.7/site-packages/django/conf/locale/ml/__init__.py b/lib/python2.7/site-packages/django/conf/locale/ml/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ml/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/ml/formats.py b/lib/python2.7/site-packages/django/conf/locale/ml/formats.py
deleted file mode 100644
index e73bc62..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ml/formats.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'N j, Y'
-TIME_FORMAT = 'P'
-DATETIME_FORMAT = 'N j, Y, P'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'F j'
-SHORT_DATE_FORMAT = 'm/d/Y'
-SHORT_DATETIME_FORMAT = 'm/d/Y P'
-FIRST_DAY_OF_WEEK = 0 # Sunday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# Kept ISO formats as they are in first position
-DATE_INPUT_FORMATS = (
- '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
- # '%b %d %Y', '%b %d, %Y', # 'Oct 25 2006', 'Oct 25, 2006'
- # '%d %b %Y', '%d %b, %Y', # '25 Oct 2006', '25 Oct, 2006'
- # '%B %d %Y', '%B %d, %Y', # 'October 25 2006', 'October 25, 2006'
- # '%d %B %Y', '%d %B, %Y', # '25 October 2006', '25 October, 2006'
-)
-DATETIME_INPUT_FORMATS = (
- '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
- '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
- '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
- '%Y-%m-%d', # '2006-10-25'
- '%m/%d/%Y %H:%M:%S', # '10/25/2006 14:30:59'
- '%m/%d/%Y %H:%M:%S.%f', # '10/25/2006 14:30:59.000200'
- '%m/%d/%Y %H:%M', # '10/25/2006 14:30'
- '%m/%d/%Y', # '10/25/2006'
- '%m/%d/%y %H:%M:%S', # '10/25/06 14:30:59'
- '%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200'
- '%m/%d/%y %H:%M', # '10/25/06 14:30'
- '%m/%d/%y', # '10/25/06'
-)
-DECIMAL_SEPARATOR = '.'
-THOUSAND_SEPARATOR = ','
-NUMBER_GROUPING = 3
-
diff --git a/lib/python2.7/site-packages/django/conf/locale/mn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/mn/LC_MESSAGES/django.mo
deleted file mode 100644
index fa00ff9..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/mn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/mn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/mn/LC_MESSAGES/django.po
deleted file mode 100644
index c6e1993..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/mn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1340 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# ankhaa1002 <ankhaa1002@gmail.com>, 2013
-# Jacara <baskhuujacara@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jargalan <jargalanch@gmail.com>, 2011
-# Tsolmon <mnts26@gmail.com>, 2011
-# zorig <zorig_ezd@yahoo.com>, 2013
-# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2013
-# Баясгалан Цэвлээ <bayasaa_7672@yahoo.com>, 2011
-# Ганзориг БП <ganzo.bp@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-11-30 18:45+0000\n"
-"Last-Translator: zorig <zorig_ezd@yahoo.com>\n"
-"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/"
-"language/mn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Африк"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Араб"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Азербажан"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Болгар"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Беларус"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Бенгал"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Бэрэйтон "
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Босни"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Каталан"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Чех"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Уэльс"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Дани"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Герман"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Грек"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Англи"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Британи Англи"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Эсперанто"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Испани"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Аргентинийн Испани"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Мексикийн Испани"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Никрагуан Испани"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Венесуэлийн Спани"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Эстони"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Баск"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Перс"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Финлянд"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Франц"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Фриз"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Ирланд"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Галици"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Еврэй"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Хинди"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Хорват"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Унгар"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Индонези"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Исланд"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Итали"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Япон"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Гүрж"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Казак"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Кхмер"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Канад"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Солонгос"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Лүксенбүргиш"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Литва"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Латви"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Македон"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Малайз"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Монгол"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Бирм"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Норвеги бокмал"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Непал"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Голланд"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Норвегийн нюнорск"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Оссетик"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Панжаби"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Польш"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Португал"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Бразилийн Португали"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Румын"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Орос"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Словак"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Словен"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Альбани"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Серби"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Серби латин"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Щвед"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Савахил"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Тамил"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Тэлүгү"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Тайланд"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Турк"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Татар"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Удмурт"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Украйн"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Урду"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Вьетнам"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Хятад (хялбаршуулсан) "
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Хятад (уламжлалт)"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Зөв утга оруулна уу."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Зөв, хүчинтэй хаяг (URL) оруулна уу."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Зөв цаг оруулна уу."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Зөв email хаяг оруулна уу"
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Үсэг, тоо, доогуур зураас, дундуур зурааснаас бүрдэх зөв 'slug' оруулна уу."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Зөв IPv4 хаяг оруулна уу. "
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Зөв IPv6 хаяг оруулна уу."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Зөв IPv4 эсвэл IPv6 хаяг оруулна уу."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Зөвхөн таслалаар тусгаарлагдсан цифр оруулна уу."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Энэ утга хамгийн ихдээ %(limit_value)s байх ёстой. (одоо %(show_value)s "
-"байна)"
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Энэ утга %(limit_value)s -с бага эсвэл тэнцүү байх ёстой."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Энэ утга %(limit_value)s -с их эсвэл тэнцүү байх нөхцлийг хангана уу."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Хамгийн ихдээ %(limit_value)d тэмдэгт байх нөхцлийг хангана уу. "
-"(%(show_value)d-ийн дагуу)"
-msgstr[1] ""
-"Хамгийн ихдээ %(limit_value)d тэмдэгт байх нөхцлийг хангана уу. "
-"(%(show_value)d-ийн дагуу)"
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[1] ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"%(field_name)s талбарт давхардахгүй %(date_field)s %(lookup)s оруулна."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "ба"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(field_label)s-тэй %(model_name)s-ийг аль хэдийнэ оруулсан байна."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "Энэ утга %(value)r буруу сонголт байна."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Энэ хэсгийг хоосон орхиж болохгүй."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Энэ хэсэг хоосон байж болохгүй."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Талбарийн төрөл нь : %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Бүхэл тоо"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "'%(value)s' заавал бүхэл тоо байна"
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "'%(value)s' заавал True эсвэл False утга авах."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (Үнэн худлын аль нэг нь)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Бичвэр (%(max_length)s хүртэл)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Таслалаар тусгаарлагдсан бүхэл тоо"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"'%(value)s' утга буруу форматтай байна. Формат нь YYYY-MM-DD байх хэрэгтэй."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"'%(value)s' утга зөв форматтай байна. Гэвч огнооны хэсэгийн формат буруу "
-"байна. Формат нь (YYYY-MM-DD) байх хэрэгтэй."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Огноо (цаггүй)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"'%(value)s' утга буруу форматтай байна. Формат нь заавал YYYY-MM-DD HH:MM[:ss"
-"[.uuuuuu]][TZ] байх хэрэгтэй."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"'%(value)s' утга зөв форматтай байна(YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) "
-"гэвч буруу огноо/цаг байна. "
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Огноо (цагтай)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "'%(value)s' заавал decimal утга байх."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Аравтын бутархайт тоо"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Цахим шуудангийн хаяг"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Файлын зам "
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "'%(value)s' заавал float утга байх."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Хөвөгч таслалтай тоо"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Том (8 байт) бүхэл тоо"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 хаяг"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP хаяг"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "'%(value)s' заавал None, True эсвэл False утга авах."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (Үнэн, худал, эсвэл юу ч биш)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Бүхэл тоох утга"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Бага бүхэл тоон утга"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Слаг (ихдээ %(max_length)s )"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Бага тоон утна"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Текст"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"'%(value)s' утга буруу форматтай байна. Формат нь заавал HH:MM[:ss[.uuuuuu]] "
-"байх хэрэгтэй."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"'%(value)s' утгын формат нь зөв байна гэвч цагийн формат нь буруу байна. "
-"Цагийн формат заавал (HH:MM[:ss[.uuuuuu]]) байна."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Цаг"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Бинари өгөгдөл"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Файл"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Зураг"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "%(pk)r пк-тэй %(model)s модель байхгүй байна"
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Гадаад түлхүүр (тодорхой төрлийн холбоос талбар)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Нэг-нэг холбоос"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Олон-олон холбоос"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Энэ талбарыг бөглөх шаардлагатай."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Бүхэл тоон утга оруулна уу."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Тоон утга оруулна уу."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "%(max)s -ээс ихгүй утга оруулна уу "
-msgstr[1] "%(max)s -ээс ихгүй утга оруулна уу "
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Энд %(max)s -аас олонгүй бутархайн орон байх ёстой. "
-msgstr[1] "Энд %(max)s -аас олонгүй бутархайн орон байх ёстой. "
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] "Энд бутархайн таслалаас өмнө %(max)s-аас олонгүй цифр байх ёстой."
-msgstr[1] "Энд бутархайн таслалаас өмнө %(max)s-аас олонгүй цифр байх ёстой."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Зөв огноо оруулна уу."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Зөв цаг оруулна уу."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Огноо/цаг-ыг зөв оруулна уу."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Файл оруулаагүй байна. Маягтаас кодлох төрлийг чагтал. "
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Файл оруулаагүй байна."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Оруулсан файл хоосон байна. "
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[1] ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Нэг бол сонголтын чягтыг авах эсвэл файл оруулна уу. Зэрэг хэрэгжих "
-"боломжгүй."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Зөв зураг оруулна уу. Таны оруулсан файл нэг бол зургийн файл биш эсвэл "
-"гэмтсэн зураг байна."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Зөв сонголт хийнэ үү. %(value)s гэсэн сонголт байхгүй байна."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Өгөгдхүүний жагсаалтаа оруулна уу."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Нууц талбар%(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "УдирдахФормын мэдээлэл олдсонгүй эсвэл өөрчлөгдсөн байна"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "%d ихгүй форм илгээн үү"
-msgstr[1] "%d ихгүй форм илгээн үү"
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Эрэмбэлэх"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Устгах"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "%(field)s хэсэг дэх давхардсан утгыг засварлана уу. "
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"%(field)s хэсэг дэх давхардсан утгыг засварлана уу. Түүний утгууд "
-"давхардахгүй байх ёстой."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"%(field_name)s хэсэг дэх давхардсан утгыг засварлана уу. %(date_field)s-н "
-"%(lookup)s хувьд давхардахгүй байх ёстой."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Доорх давхардсан утгуудыг засна уу."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Inline обектийн гадаад түлхүүр Эцэг обектийн түлхүүртэй таарахгүй байна. "
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Зөв сонголт хийнэ үү. Энэ утга сонголтонд алга."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" нь primary key талбарт тохирохгүй утга байна."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Олон утга сонгохын тулд \"Control\" (Mac дээр \"Command\") товчыг ашиглана."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s цагийн бүсийг хөрвүүлэж чадахгүй байна. %(current_timezone)s; "
-"цагийн бүс буруу эсвэл байхгүй байж магадгүй."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Одоогийн"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Засах"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Цэвэрлэх"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Тодорхойгүй"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Тийм"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Үгүй"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "тийм,үгүй,магадгүй"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d байт"
-msgstr[1] "%(size)d байт"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "шөнө дунд"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "үд дунд"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Даваа гариг"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Мягмар гариг"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Лхагва гариг"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Пүрэв гариг"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Баасан гариг"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Бямба гариг"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Ням гариг"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Дав"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Мяг"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Лха"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Пүр"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Баа"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Бям"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Ням"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "1-р сар"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "2-р сар"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "3-р сар"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "4-р сар"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "5-р сар"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "6-р сар"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "7-р сар"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "8-р сар"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "9-р сар"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "10-р сар"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "11-р сар"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "12-р сар"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "1-р сар"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "2-р сар"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "3-р сар"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "4-р сар"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "5-р сар"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "6-р сар"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "7-р сар"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "8-р сар "
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "9-р сар"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "10-р сар"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "11-р сар"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "12-р сар"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "1-р сар."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "2-р сар."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "3-р сар."
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "4-р сар."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "5-р сар."
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "6-р сар."
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "7-р сар."
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "8-р сар."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "9-р сар."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "10-р сар."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "11-р сар."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "12-р сар."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Хулгана"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Үхэр"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Бар"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Туулай"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Луу"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Могой"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Морь"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Хонь"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Бич"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Тахиа"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Нохой"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Гахай"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Пиллов, Пил аль аль нь дуудах боломжгүй: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "_imaging -н модель ПИЛ %s дуудагдах боломжгүй "
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Зөв IPv6 хаяг оруулна уу."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "буюу"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d жил"
-msgstr[1] "%d жил"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d сар"
-msgstr[1] "%d сар"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d долоо хоног"
-msgstr[1] "%d долоо хоног"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d өдөр"
-msgstr[1] "%d өдөр"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d цаг"
-msgstr[1] "%d цаг"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d минут"
-msgstr[1] "%d минут"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 минут"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Файлын жагсаалтыг энд зөвшөөрөөгүй."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" байхгүй байна."
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "%(directory)s ийн жагсаалт"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Он тодорхойлоогүй байна"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Сар тодорхойлоогүй байна"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Өдөр тодорхойлоогүй байна"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Долоо хоног тодорхойлоогүй байна"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s боломжгүй"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"%(class_name)s.allow_future нь худлаа учраас %(verbose_name_plural)s нь "
-"боломжгүй."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-"Буруу огноо. '%(datestr)s' огноо '%(format)s' хэлбэрт тохирохгүй байна."
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Шүүлтүүрт таарах %(verbose_name)s олдсонгүй "
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Хуудас нь 'last' биш, эсвэл тоонд хөрвүүлэж болохгүй байна."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Буруу хуудас (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
-"Жагсаалт хоосон байна бас '%(class_name)s.allow_empty' ийг False гэж өгсөн."
diff --git a/lib/python2.7/site-packages/django/conf/locale/mn/__init__.py b/lib/python2.7/site-packages/django/conf/locale/mn/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/mn/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/mn/formats.py b/lib/python2.7/site-packages/django/conf/locale/mn/formats.py
deleted file mode 100644
index 50ab9f1..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/mn/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'd F Y'
-TIME_FORMAT = 'g:i:s A'
-# DATETIME_FORMAT =
-# YEAR_MONTH_FORMAT =
-# MONTH_DAY_FORMAT =
-SHORT_DATE_FORMAT = 'j M Y'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-# DECIMAL_SEPARATOR =
-# THOUSAND_SEPARATOR =
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/my/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/my/LC_MESSAGES/django.mo
deleted file mode 100644
index 027762c..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/my/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/my/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/my/LC_MESSAGES/django.po
deleted file mode 100644
index d3d079a..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/my/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1277 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Yhal Htet Aung <jumoun@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Burmese (http://www.transifex.com/projects/p/django/language/"
-"my/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: my\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "အာရပ်"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr ""
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "ဘူဂေးရီယန်"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "ဘင်းဂလီ"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "ဘော့်စ်နီယန်"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "ကက်တလန်"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "ချက်"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "ဝေးလ်"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "ဒိန်းမတ်"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "ဂျာမန်"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "ဂရိ"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "အင်္ဂလိပ်"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "ဗြိတိသျှအင်္ဂလိပ်"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "စပိန်"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr ""
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr ""
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr ""
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr ""
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr ""
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr ""
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr ""
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr ""
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr ""
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr ""
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr ""
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr ""
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr ""
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr ""
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr ""
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr ""
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr ""
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr ""
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr ""
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr ""
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr ""
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr ""
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr ""
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr ""
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr ""
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr ""
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr ""
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr ""
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr ""
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr ""
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr ""
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr ""
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr ""
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr ""
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr ""
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr ""
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr ""
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr ""
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr ""
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr ""
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr ""
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr ""
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr ""
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr ""
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr ""
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr ""
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr ""
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr ""
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr ""
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr ""
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr ""
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr ""
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr ""
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr ""
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr ""
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr ""
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr ""
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "နှင့်"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr ""
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr ""
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr ""
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "ကိန်းပြည့်"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr ""
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr ""
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr ""
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr ""
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr ""
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "အီးမေးလ်လိပ်စာ"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr ""
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr ""
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "အိုင်ပီဗီ၄လိပ်စာ"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "အိုင်ပီလိပ်စာ"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "စာသား"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr ""
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "ယူအာအယ်"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "ဖိုင်"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "ပံု"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr ""
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr ""
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr ""
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr ""
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr ""
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr ""
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr ""
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr ""
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr ""
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr ""
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr ""
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr ""
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "မှာကြား"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "ပယ်ဖျက်"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr ""
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr ""
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr ""
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr ""
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr ""
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "အမည်မသိ"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "ဟုတ်"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "မဟုတ်"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr ""
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d ဘိုက်များ"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s ကီလိုဘိုက်"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s မက်ဂါဘိုက်"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s ဂစ်ဂါဘိုက်"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s တီရာဘိုက်"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s ပီတာဘိုက်"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "ညနေ"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "မနက်"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "ညနေ"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "မနက်"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "သန်းခေါင်"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "မွန်းတည့်"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "တနင်္လာနေ့"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr ""
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr ""
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr ""
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr ""
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "January"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "February"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "March"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "April"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "May"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "June"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "July"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "August"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "September"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "October"
-msgstr ""
-
-#: utils/dates.py:19
-msgid "November"
-msgstr ""
-
-#: utils/dates.py:20
-msgid "December"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "may"
-msgstr ""
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr ""
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr ""
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr ""
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr ""
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr ""
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr ""
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr ""
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr ""
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr ""
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr ""
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr ""
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr ""
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr ""
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr ""
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr ""
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr ""
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr ""
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr ""
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr ""
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr ""
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr ""
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr ""
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr ""
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr ""
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr ""
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr ""
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr ""
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ""
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr ""
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr ""
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr ""
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr ""
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr ""
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr ""
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/conf/locale/nb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/nb/LC_MESSAGES/django.mo
deleted file mode 100644
index b4eb2a4..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/nb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/nb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/nb/LC_MESSAGES/django.po
deleted file mode 100644
index 70a2503..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/nb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1326 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jonklo <jonklo@gmail.com>, 2013
-# jonklo <jonklo@gmail.com>, 2011
-# Sigurd Gartmann <sigurdga-transifex@sigurdga.no>, 2012
-# injectedreality <transifex@ireality.no>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-09-02 16:41+0000\n"
-"Last-Translator: jonklo <jonklo@gmail.com>\n"
-"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/"
-"language/nb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikaans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arabisk"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Aserbajdsjansk"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgarsk"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Hviterussisk"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengalsk"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretonsk"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosnisk"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Katalansk"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Tsjekkisk"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Walisisk"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Dansk"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Tysk"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Gresk"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Engelsk"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Engelsk (britisk)"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Spansk"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Argentinsk spansk"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Meksikansk spansk"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Nicaraguansk spansk"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Venezuelanske spansk"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estisk"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Baskisk"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persisk"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finsk"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Fransk"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frisisk"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irsk"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galisisk"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebraisk"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Kroatisk"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Ungarsk"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonesisk"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islandsk"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italiensk"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japansk"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgisk"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kasakhisk"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Koreansk"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Luxembourgsk"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Litauisk"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Latvisk"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Makedonsk"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongolsk"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Burmesisk"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norsk (bokmål)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepali"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Nederlandsk"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norsk (nynorsk)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Ossetisk"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Panjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Polsk"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugisisk"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Brasiliansk portugisisk"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Rumensk"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Russisk"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slovakisk"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slovensk"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albansk"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbisk"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serbisk latin"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Svensk"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Swahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Thai"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Tyrkisk"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatarisk"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurtisk"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukrainsk"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnamesisk"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Forenklet kinesisk"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Tradisjonell kinesisk"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Oppgi en gyldig verdi."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Oppgi en gyldig nettadresse."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Oppgi et gyldig heltall."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Oppgi en gyldig e-postadresse"
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Oppgi en gyldig «slug» bestående av bokstaver, nummer, understreker eller "
-"bindestreker."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Oppgi en gyldig IPv4-adresse."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Oppgi en gyldig IPv6-adresse."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Oppgi en gyldig IPv4- eller IPv6-adresse."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Oppgi kun tall adskilt med komma."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Verdien må være %(limit_value)s (den er %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Verdien må være mindre enn eller lik %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Verdien må være større enn eller lik %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Sørg for denne verdien har minst %(limit_value)d tegn (den har "
-"%(show_value)d)."
-msgstr[1] ""
-"Sørg for denne verdien har minst %(limit_value)d tegn (den har "
-"%(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Sørg for denne verdien har %(limit_value)d tegn (den har nå %(show_value)d)."
-msgstr[1] ""
-"Sørg for denne verdien har %(limit_value)d eller færre tegn (den har nå "
-"%(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s må være unik for %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "og"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s med %(field_label)s finnes allerede."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "Verdien %(value)r er ikke et gyldig valg."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Feltet kan ikke være tomt."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Feltet kan ikke være blankt."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Felt av typen: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Heltall"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "«%(value)s»-verdien må være et heltall."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "«%(value)s»-verdien må være enten True eller False."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolsk (True eller False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Tekst (opp til %(max_length)s tegn)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Heltall adskilt med komma"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"«%(value)s»-verdien har et ugyldig datoformat. Det må være på formen YYYY-MM-"
-"DD."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"«%(value)s»-verdien er på den korrekte formen (YYYY-MM-DD), men det er en "
-"ugyldig dato."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Dato (uten tid)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"«%(value)s»-verdien har et ugyldig datoformat. Det må være på formen YYYY-MM-"
-"DD HH:MM[:ss[.uuuuuu]][TZ]."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"«%(value)s»-verdien er på den korrekte formen (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]), men er ugyldig dato/tid."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Dato (med tid)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "«%(value)s»-verdien må være et desimaltall."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Desimaltall"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-postadresse"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Filsti"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "«%(value)s»-verdien må være et flyttall."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Flyttall"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Stort (8 byte) heltall"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4-adresse"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP-adresse"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "«%(value)s»-verdien må være enten None, True eller False."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolsk (True, False eller None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Positivt heltall"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Positivt lite heltall"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (opp til %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Lite heltall"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Tekst"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"«%(value)s»-verdien har et ugyldig format. Det må være på formen HH:MM[:ss[."
-"uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"«%(value)s»-verdien er på den korrekte formen (HH:MM[:ss[.uuuuuu]]), men er "
-"et ugyldig tidspunkt."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Tid"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "Nettadresse"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Rå binærdata"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Fil"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Bilde"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "%(model)s-instansen med primærnøkkelen %(pk)r finnes ikke."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Fremmednøkkel (type bestemmes av relatert felt)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "En-til-en-relasjon"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Mange-til-mange-relasjon"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Feltet er påkrevet."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Oppgi et heltall."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Oppgi et tall."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Sørg for at det er kun %(max)s tall."
-msgstr[1] "Sørg for at det er %(max)s eller færre tall totalt."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Sørg for at det er kun %(max)s desimal."
-msgstr[1] "Sørg for at det er %(max)s eller færre desimaler."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] "Sørg for at det kun %(max)s tall før desimalpunkt."
-msgstr[1] "Sørg for at det er %(max)s eller færre tall før desimalpunkt."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Oppgi en gyldig dato."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Oppgi et gyldig tidspunkt."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Oppgi gyldig dato og tidspunkt."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Ingen fil ble sendt. Sjekk «encoding»-typen på skjemaet."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Ingen fil ble sendt."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Filen er tom."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] "Sørg for at filnavnet har %(max)d tegn (det har nå %(length)d)."
-msgstr[1] ""
-"Sørg for at filnavnet har færre enn %(max)d tegn (det har nå %(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Vennligst last opp en ny fil eller marker fjern-boksen, ikke begge."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Last opp et gyldig bilde. Filen du lastet opp var ødelagt eller ikke et "
-"bilde."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Velg et gyldig valg. %(value)s er ikke et av de tilgjengelige valgene."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Oppgi en liste med verdier."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Skjult felt %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "ManagementForm-data mangler eller har blitt tuklet med"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Vennligst oppgi %d skjema."
-msgstr[1] "Vennligst oppgi %d eller færre skjema."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Rekkefølge"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Slett"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Vennligst korriger dupliserte data for %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Vennligst korriger dupliserte data for %(field)s, som må være unike."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Vennligst korriger dupliserte data for %(field_name)s, som må være unike for "
-"%(lookup)s i %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Vennligst korriger de dupliserte verdiene nedenfor."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Primærnøkkelen er ikke den samme som foreldreinstansens primærnøkkel."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Velg et gyldig valg. Valget er ikke av de tilgjengelige valgene."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "«%(pk)s» er ikke en gyldig verdi for en primærnøkkel."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Hold nede «Control», eller «Command» på en Mac, for å velge mer enn en."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s kunne ikke tolkes i tidssonen %(current_timezone)s, det kan "
-"være tvetydig eller ikke eksistere."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Nåværende"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Endre"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Fjern"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Ukjent"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Ja"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Nei"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "ja,nei,kanskje"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d byte"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "midnatt"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "12:00"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "mandag"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "tirsdag"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "onsdag"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "torsdag"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "fredag"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "lørdag"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "søndag"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "man"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "tir"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "ons"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "tor"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "fre"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "lør"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "søn"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "januar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "februar"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "mars"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "mai"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "juni"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "juli"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "august"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "oktober"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "desember"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "des"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "mar."
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "apr."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "mai"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "jun."
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "jul."
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "aug."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "sept."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "okt."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "des."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Januar"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Februar"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Mars"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Mai"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Juli"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "August"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Oktober"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "November"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Desember"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Hverken Pillow eller PIL kunne importeres: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "'_imaging' modulen for PIL kunne ikke importeres: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Dette er ikke en gyldig IPv6-adresse."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s…"
-
-#: utils/text.py:224
-msgid "or"
-msgstr "eller"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d år"
-msgstr[1] "%d år"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d måned"
-msgstr[1] "%d måneder"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d uke"
-msgstr[1] "%d uker"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d dag"
-msgstr[1] "%d dager"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d time"
-msgstr[1] "%d timer"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minutt"
-msgstr[1] "%d minutter"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minutter"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Mappeinnhold er ikke tillatt her."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "«%(path)s» finnes ikke"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Innhold i %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "År ikke spesifisert"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Måned ikke spesifisert"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Dag ikke spesifisert"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Uke ikke spesifisert"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Ingen %(verbose_name_plural)s tilgjengelig"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Fremtidig %(verbose_name_plural)s ikke tilgjengelig fordi %(class_name)s."
-"allow_future er False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Ugyldig datostreng «%(datestr)s» gitt formatet «%(format)s»"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Fant ingen %(verbose_name)s som passet spørringen"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Siden er ikke «last», og kan heller ikke konverteres til et tall."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Ugyldig side (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Tom liste og «%(class_name)s.allow_empty» er False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/nb/__init__.py b/lib/python2.7/site-packages/django/conf/locale/nb/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/nb/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/nb/formats.py b/lib/python2.7/site-packages/django/conf/locale/nb/formats.py
deleted file mode 100644
index 8f976d7..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/nb/formats.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j. F Y'
-TIME_FORMAT = 'H:i'
-DATETIME_FORMAT = 'j. F Y H:i'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j. F'
-SHORT_DATE_FORMAT = 'd.m.Y'
-SHORT_DATETIME_FORMAT = 'd.m.Y H:i'
-FIRST_DAY_OF_WEEK = 1 # Monday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# Kept ISO formats as they are in first position
-DATE_INPUT_FORMATS = (
- '%Y-%m-%d', '%d.%m.%Y', '%d.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06'
- # '%d. %b %Y', '%d %b %Y', # '25. okt 2006', '25 okt 2006'
- # '%d. %b. %Y', '%d %b. %Y', # '25. okt. 2006', '25 okt. 2006'
- # '%d. %B %Y', '%d %B %Y', # '25. oktober 2006', '25 oktober 2006'
-)
-DATETIME_INPUT_FORMATS = (
- '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
- '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
- '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
- '%Y-%m-%d', # '2006-10-25'
- '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
- '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
- '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
- '%d.%m.%Y', # '25.10.2006'
- '%d.%m.%y %H:%M:%S', # '25.10.06 14:30:59'
- '%d.%m.%y %H:%M:%S.%f', # '25.10.06 14:30:59.000200'
- '%d.%m.%y %H:%M', # '25.10.06 14:30'
- '%d.%m.%y', # '25.10.06'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '\xa0' # non-breaking space
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/ne/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/ne/LC_MESSAGES/django.mo
deleted file mode 100644
index 5fb0ae9..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ne/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/ne/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/ne/LC_MESSAGES/django.po
deleted file mode 100644
index a51d64b..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ne/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1310 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Paras Nath Chaudhary <opnchaudhary@gmail.com>, 2012
-# Sagar Chalise <chalisesagar@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-10-02 17:03+0000\n"
-"Last-Translator: Sagar Chalise <chalisesagar@gmail.com>\n"
-"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/"
-"ne/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ne\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "अफ्रिकन"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "अरबिक"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "अजरबैजानी"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "बुल्गेरियाली"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "बेलारुसियन"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "बंगाली"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "ब्रेटोन"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "बोस्नियाली"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "क्याटालान"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "चेक"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "वेल्स"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "डेनिस"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "जर्मन"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "ग्रिक"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "अंग्रेजी"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "बेलायती अंग्रेजी"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "स्पेनिस"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "अर्जेन्टिनाली स्पेनिस"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "मेक्सिकन स्पेनिस"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "निकारागुँवा स्पेनिस"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "भेनेजुएला स्पेनिस"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "इस्टोनियन"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "बास्क"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "फारसी"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "फिन्निस"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "फ्रान्सेली"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "फ्रिसियन"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "आयरिस"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "ग्यलिसियन"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "हिब्रु"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "हिन्दि "
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "क्रोषियन"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "हन्गेरियन"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "इन्डोनेसियाली"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "आइसल्यान्डिक"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "ईटालियन"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "जापनिज"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "जर्जीयन"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "कजाक"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "ख्मेर"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "कन्नडा"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "कोरियाली"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "लिथुवानियाली"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "लाट्भियन"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "म्यासेडोनियन"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "मलायलम"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "मंगोलियन"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "बर्मेली"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "नर्वेली बोक्मल"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "नेपाली"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "डच"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "नर्वेली न्योर्स्क"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "पञ्जावी"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "पोलिस"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "पुर्तगाली"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "ब्राजिली पुर्तगाली"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "रोमानियाली"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "रुसी"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "सलोभाक"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "स्लोभेनियाली"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "अल्बानियाली"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "सर्वियाली"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "सर्वियाली ल्याटिन"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "स्विडिस"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "स्वाहिली"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "तामिल"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "तेलुगु"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "थाई"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "टर्किस"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "टाटर"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "युक्रेनि"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "उर्दु"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "भियतनामी"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "सरल चिनि"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "प्राचिन चिनि"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "उपयुक्त मान राख्नुहोस ।"
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "उपयुक्त URL राख्नुहोस ।"
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "मनासिव अंक राख्नु होस ।"
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "सही ई-मेल ठेगाना राख्नु होस ।"
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "अक्षर, अंक, _ र - भएका 'स्लग' मात्र हाल्नुहोस ।"
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "उपयुक्त IPv4 ठेगाना राख्नुहोस"
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "उपयुक्त आइ.पी.६ ठेगाना राख्नुहोस ।"
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "उपयुक्त आइ.पी.६ र आइ.पी.४ ठेगाना राख्नुहोस ।"
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "कम्मा सहितका वर्ण मात्र राख्नुहोस ।"
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "यो मान %(limit_value)s छ भन्ने निश्चित गर्नुहोस । (यो %(show_value)s हो ।)"
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "यो मान %(limit_value)s भन्दा कम अथवा बराबर छ भन्ने निश्चित गर्नुहोस ।"
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "यो मान %(limit_value)s भन्दा बढी अथवा बराबर छ भन्ने निशचित गर्नुहोस ।"
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"यो मान कम्तिमा पनि %(limit_value)d अक्षर छ भन्ने निश्चित गर्नुहोस । (यसमा "
-"%(show_value)d छ ।)"
-msgstr[1] ""
-"यो मान कम्तिमा पनि %(limit_value)d अक्षरहरु छ भन्ने निश्चित गर्नुहोस । (यसमा "
-"%(show_value)d छ ।)"
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"यो मान बढिमा पनि %(limit_value)d अक्षर छ भन्ने निश्चित गर्नुहोस । (यसमा "
-"%(show_value)d छ ।)"
-msgstr[1] ""
-"यो मान बढिमा पनि %(limit_value)d अक्षरहरु छ भन्ने निश्चित गर्नुहोस । (यसमा "
-"%(show_value)d छ ।)"
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(date_field)s %(lookup)s को %(field_name)s नौलो हुनुपर्दछ ।"
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "र"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(field_label)s भएको %(model_name)s पहिलै विद्धमान छ ।"
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "यो फाँट शून्य हुन सक्दैन ।"
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "यो फाँट खाली हुन सक्दैन ।"
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "फाँटको प्रकार: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "अंक"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "'%(value)s' मान अंक हुनु पर्छ ।"
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "बुलियन (True अथवा False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "वर्ण (%(max_length)s सम्म)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "कम्माले छुट्याइएका अंकहरु ।"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "मिति (समय रहित)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "मिति (समय सहित)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "दश्मलव संख्या"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "ई-मेल ठेगाना"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "फाइलको मार्ग"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "दश्मलव हुने संख्या"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "ठूलो (८ बाइटको) अंक"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "आइ.पी.भी४ ठेगाना"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP ठेगाना"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "बुलियन (True, False अथवा None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "सकारात्मक पूर्णांक"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "सानो जोड अङ्क"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "स्लग(%(max_length)s सम्म)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "सानो अङ्क"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "पाठ"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "समय"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "र बाइनरी डाटा"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "फाइल"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "चित्र"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "फोरेन कि (प्रकार नातागत फाँटले जनाउछ)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "एक-देखि-एक नाता"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "अनेक-देखि-अनेक नाता"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "यो फाँट अनिवार्य छ ।"
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "संख्या राख्नुहोस ।"
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "संख्या राख्नुहोस ।"
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "जम्मा %(max)s भन्दा बढी अक्षर नभएको निश्चित पार्नु होस ।"
-msgstr[1] "जम्मा %(max)s भन्दा बढी अक्षरहरु नभएको निश्चित पार्नु होस ।"
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "दशमलव पछि %(max)s भन्दा बढी अक्षर नभएको निश्चित पार्नु होस ।"
-msgstr[1] "दशमलव पछि %(max)s भन्दा बढी अक्षरहरु नभएको निश्चित पार्नु होस ।"
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] "दशमलव अघि %(max)s भन्दा बढी अक्षर नभएको निश्चित पार्नु होस ।"
-msgstr[1] "दशमलव अघि %(max)s भन्दा बढी अक्षरहरु नभएको निश्चित पार्नु होस ।"
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "उपयुक्त मिति राख्नुहोस ।"
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "उपयुक्त समय राख्नुहोस ।"
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "उपयुक्त मिति/समय राख्नुहोस ।"
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "कुनै फाईल पेश गरिएको छैन । फारममा ईनकोडिङको प्रकार जाँच गर्नुहोस । "
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "कुनै फाईल पेश गरिएको छैन ।"
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "पेश गरिएको फाइल खाली छ ।"
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"यो फाइलको नाममा बाढीमा %(max)d अङ्क भएको निश्चित गर्नु होस । (यसमा %(length)d छ "
-"।)"
-msgstr[1] ""
-"यो फाइलको नाममा बढी मा %(max)d अङ्कहरू भएको निश्चित गर्नु होस । (यसमा %(length)d "
-"छ ।)"
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "दुवै नछान्नुहोस, कि त फाइल पेश गर्नुहोस वा चेक बाकस मा छान्नुहोस ।"
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"उपयुक्त चित्र अपलोड गर्नुहोस । तपाइले अपलोड गर्नु भएको फाइल चित्र होइन वा बिग्रेको चित्र "
-"हो ।"
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "उपयुक्त विकल्प छान्नुहोस । %(value)s प्रस्तावित विकल्प होइन ।"
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "मानहरु राख्नुहोस"
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(लुकेका %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "कृपया %d अथवा सो भन्दा थोरै फारम बुझाउनु होस ।"
-msgstr[1] "कृपया %d अथवा सो भन्दा थोरै फारमहरु बुझाउनु होस ।"
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "क्रम"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "मेट्नुहोस"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "कृपया %(field)s का लागि दोहोरिइका तथ्याङ्कहरु सच्याउनुहोस ।"
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "कृपया %(field)s का लागि दोहोरिइका तथ्याङ्कहरु नौलो तथ्याङ्क सहित सच्याउनुहोस ।"
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"कृपया %(field_name)s का लागि दोहोरिइका तथ्याङ्कहरु सच्याउनुहोस जसमा "
-"%(date_field)sको %(lookup)s नौलो हुनुपर्दछ ।"
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "कृपया तलका दोहोरिइका मानहरु सच्याउनुहोस ।"
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "भित्रि फोरेन की र अभिभावक प्राइमरी की मिलेन ।"
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "उपयुक्त विकल्प छान्नुहोस । छानिएको विकल्प प्रस्तावित विकल्प होइन ।"
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "एक भन्दा बढी छान्न म्याकमा \"Control\" अथवा \"Command\" थिच्नुहोस ।"
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "अहिले"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "फेर्नुहोस"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "सबै खाली गर्नु होस ।"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "अज्ञात"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "हुन्छ"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "होइन"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "हो, होइन, सायद"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d बाइट"
-msgstr[1] "%(size)d बाइटहरु"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s किलोबाइट"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s मेगाबाइट"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s गिगाबाइट"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s टेराबाइट"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s पिटाबाइट"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "मध्यरात"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "मध्यान्ह"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "सोमवार"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "मंगलवार"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "बुधवार"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "बिहीवार"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "शुक्रवार"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "शनिवार"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "आइतवार"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "सोम"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "मंगल"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "बुध"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "बिहि"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "शुक्र"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "शनि"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "आइत"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "जनवरी"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "फेब्रुअरी"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "मार्च"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "अप्रिल"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "मई"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "जुन"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "जुलै"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "अगस्त"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "सेप्टेम्बर"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "अक्टुवर"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "नभम्वर"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "डिसम्वर"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "जनवरी"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "फेब्रुअरी"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "मार्च"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "अप्रिल"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "मई"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "जुन"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "जुलै"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "अग्सत"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "सेप्तेम्बर"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "अक्टुवर"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "नभम्वर"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "डिसम्वर"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "जनवरी"
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "फेब्रुअरी"
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "मार्च"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "अप्रिल"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "मई"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "जुन"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "जुलै"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "अगस्त"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "सेप्तेम्बर"
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "अक्टुवर"
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "नभम्वर"
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "डिसम्वर"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "जनवरी"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "फेब्रुअरी"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "मार्च"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "अप्रिल"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "मई"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "जुन"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "जुलै"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "अगस्त"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "सेप्टेम्बर"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "अक्टुवर"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "नभम्वर"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "डिसम्वर"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "PIL अथवा Pillow, कुनै पनो आयात गर्न सकिएन : %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "PIL को '_imaging' मोडुल आयात गर्न सकिएन : %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "यो मनासिव IPv6 होइन ।"
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "अथवा"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d वर्ष"
-msgstr[1] "%d वर्षहरु"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d महिना"
-msgstr[1] "%d महिनाहरु"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d सप्ताह"
-msgstr[1] "%d सप्ताहहरु"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d दिन"
-msgstr[1] "%d दिनहरु"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d घण्टा"
-msgstr[1] "%d घण्टाहरु"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d मिनट"
-msgstr[1] "%d मिनटहरु"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "० मिनट"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" नभएको पाइयो ।"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "साल तोकिएको छैन ।"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "महिना तोकिएको छैन ।"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "दिन तोकिएको छैन ।"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "साता तोकिएको छैन ।"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s उपलब्ध छैन ।"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"%(class_name)s.allow_future 'False' हुनाले आगामी %(verbose_name_plural)s उपलब्ध "
-"छैन ।"
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "मिति ढाँचा'%(format)s'को लागि अनुपयुक्त मिति '%(datestr)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "%(verbose_name)s भेटिएन ।"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "पृष्ठ अन्तिमा पनि होइन र अंकमा बदलिन पनि सकिदैन ।"
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "रद्द पृष्ठ (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "'%(class_name)s.allow_empty' 'False' छ र लिस्ट पनि खालि छ । "
diff --git a/lib/python2.7/site-packages/django/conf/locale/nl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/nl/LC_MESSAGES/django.mo
deleted file mode 100644
index 2211c17..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/nl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/nl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/nl/LC_MESSAGES/django.po
deleted file mode 100644
index c4d8405..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/nl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1342 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Bas Peschier <bas.peschier@gmail.com>, 2011,2013
-# Blue <alexandervanratingen@gmail.com>, 2011-2012
-# Bouke Haarsma <bouke@webatoom.nl>, 2013
-# erikr <transifex@solidlinks.nl>, 2013
-# Harro van der Klauw <hvdklauw@gmail.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Jeffrey Gelens <jeffrey@noppo.pro>, 2011-2012
-# Tino de Bruijn <tinodb@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-11-22 07:48+0000\n"
-"Last-Translator: Bouke Haarsma <bouke@webatoom.nl>\n"
-"Language-Team: Dutch (http://www.transifex.com/projects/p/django/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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikaans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arabisch"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azerbaijani"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgaars"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Wit-Russisch"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengaals"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretons"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosnisch"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Catalaans"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Tjechisch"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Welsh"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Deens"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Duits"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Grieks"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Engels"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Brits-Engels"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Spaans"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Argentijns-Spaans"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Mexicaans Spaans"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Nicaraguaans Spaans"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Venezolaans Spaans"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Ests"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Baskisch"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Perzisch"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Fins"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Frans"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Fries"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Iers"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galicisch"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebreews"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Kroatisch"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Hongaars"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonesisch"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "IJslands"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italiaans"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japans"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgisch"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazachs"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Koreaans"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Luxemburgs"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Litouws"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Lets"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Macedonisch"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongolisch"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Birmaans"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Noorse Bokmål"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepalees"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Nederlands"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Noorse Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Ossetisch"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Punjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Pools"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugees"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Braziliaans Portugees"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Roemeens"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Russisch"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slovaaks"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Sloveens"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albanisch"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Servisch"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Servisch Latijn"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Zweeds"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Swahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telegu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Thais"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turks"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tataars"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Oedmoerts"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Oekraïens"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnamees"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Vereenvoudigd Chinees"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Traditioneel Chinees"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Geef een geldige waarde."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Geef een geldige URL op."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Geef een geldig geheel getal op."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Vul een geldig emailadres in."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Vul een geldigde 'slug' in, bestaande uit letters, cijfers, liggende "
-"streepjes en verbindingsstreepjes."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Geef een geldig IPv4-adres op."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Voer een geldig IPv6-adres in."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Voer een geldig IPv4 of IPv6-adres in."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Geef alleen cijfers op, gescheiden door komma's."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Zorg ervoor dat deze waarde gelijk is aan %(limit_value)s (het is nu "
-"%(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Zorg ervoor dat deze waarde hoogstens %(limit_value)s is."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Zorg ervoor dat deze waarde minstens %(limit_value)s is."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Zorg dat deze waarde ten minste %(limit_value)d teken bevat (het zijn er nu "
-"%(show_value)d)."
-msgstr[1] ""
-"Zorg dat deze waarde ten minste %(limit_value)d tekens bevat (het zijn er nu "
-"%(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Zorg dat deze waarde niet meer dan %(limit_value)d teken bevat (het zijn er "
-"nu %(show_value)d)."
-msgstr[1] ""
-"Zorg dat deze waarde niet meer dan %(limit_value)d tekens bevat (het zijn er "
-"nu %(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s moet uniek zijn voor %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "en"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "Er bestaat al een %(model_name)s met eenzelfde %(field_label)s."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "Waarde %(value)r is geen geldige keuze."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Dit veld mag niet leeg zijn."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Dit veld kan niet leeg zijn"
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Veld van type: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Geheel getal"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "'%(value)s' waarde moet een geheel getal zijn."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "'%(value)s' waarde moet True of False zijn."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (True danwel False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Karakterreeks (hooguit %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Komma-gescheiden gehele getallen"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"'%(value)s' waarde heeft een ongeldig datumformaat. Het juiste formaat is "
-"YYYY-MM-DD."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"'%(value)s' waarde heeft een correct formaat (YYYY-MM-DD), maar is echter "
-"geen geldige datum."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Datum (zonder tijd)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"'%(value)s' waarde heeft een ongeldig formaat. Het juiste formaat is YYYY-MM-"
-"DD HH:MM[:ss[.uuuuuu]][TZ]."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"'%(value)s' waarde heeft een geldig formaat (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]), maar is een ongeldige datum/tijd."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Datum (met tijd)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "'%(value)s' waarde moet een decimaal getal zijn."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Decimaal getal"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-mailadres"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Bestandspad"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "'%(value)s' waarde moet een float zijn."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Decimaal getal"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Groot (8 byte) geheel getal"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 address"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP-adres"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "'%(value)s' waarde moet None, True of False zijn."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (True, False of None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Positief geheel getal"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Postitief klein geheel getal"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (max. lengte %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Klein geheel getal"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Tekst"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"'%(value)s' waarde heeft een ongeldig formaat. Het juiste formaat is HH:MM[:"
-"ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"'%(value)s' waarde heeft het juiste formaat (HH:MM[:ss[.uuuuuu]]), maar is "
-"een ongeldige tijd."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Tijd"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Ruwe binaire data"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Bestand"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Plaatje"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "%(model)s-instantie met pk %(pk)r bestaat niet."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Refererende sleutel (type wordt bepaalde door gerelateerde veld)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Één-op-één relatie"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Veel-op-veel relatie"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Dit veld is verplicht."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Geef een geheel getal op."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Geef een getal op."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Zorg dat er niet meer dan %(max)s cijfer is."
-msgstr[1] "Zorg dat er niet meer dan %(max)s cijfers zijn."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Zorg dat er niet meer dan %(max)s cijfer achter de komma staat."
-msgstr[1] "Zorg dat er niet meer dan %(max)s cijfers achter de komma staan."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] "Zorg dat er niet meer dan %(max)s cijfer voor de komma staat."
-msgstr[1] "Zorg dat er niet meer dan %(max)s cijfers voor de komma staan."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Geef een geldige datum op."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Geef een geldige tijd op."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Geef een geldige datum/tijd op."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"Er was geen bestand verstuurd. Controleer het coderingstype van het "
-"formulier."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Er was geen bestand verstuurd."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Het verstuurde bestand is leeg."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Zorg dat deze bestandsnaam niet meer dan %(max)d teken bevat (het zijn er nu "
-"%(length)d)."
-msgstr[1] ""
-"Zorg dat deze bestandsnaam niet meer dan %(max)d tekens bevat (het zijn er "
-"nu %(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Upload a.u.b. een bestand of vink de verwijder vink, niet allebei."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Bestand ongeldig. Het bestand dat is gegeven is geen afbeelding of is "
-"beschadigd."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Selecteer een geldige keuze. %(value)s is geen beschikbare keuze."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Geef een lijst op met waardes."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Verborgen veld %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "Gegevens van ManagementForm ontbreken of zijn onrechtmatig gewijzigd"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Verstuur niet meer dan %d formulier."
-msgstr[1] "Verstuur niet meer dan %d formulieren."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Volgorde"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Verwijderen"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Verbeter de dubbele gegevens voor %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Verbeter de dubbele gegevens voor %(field)s, welke uniek moet zijn."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Verbeter de dubbele gegevens voor %(field_name)s, welke uniek moet zijn voor "
-"de %(lookup)s in %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Verbeter de dubbele waarden hieronder."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"De secundaire sleutel komt niet overeen met de primaire sleutel van de "
-"bovenliggende instantie."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Selecteer een geldige keuze. Deze keuze is niet beschikbaar."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" is geen geldige waarde voor een primaire sleutel."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Houd \"Control\", of \"Command\" op een Mac, ingedrukt om meerdere te "
-"selecteren."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s kon niet worden geïnterpreteerd in tijdzone "
-"%(current_timezone)s. Waarschijnlijk is deze ambigu of bestaat niet."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Huidige"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Wijzigen"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Verwijder"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Onbekend"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Ja"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Nee"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "ja,nee,misschien"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "middernacht"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "middag"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "maandag"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "dinsdag"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "woensdag"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "donderdag"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "vrijdag"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "zaterdag"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "zondag"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "ma"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "di"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "woe"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "don"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "vrij"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "zat"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "zon"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "januari"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "februari"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "maart"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "mei"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "juni"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "juli"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "augustus"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "oktober"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "december"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mrt"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mei"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "jan"
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "feb"
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "mrt"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "apr"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "mei"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "jun"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "jul"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "aug"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "sep"
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "okt"
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "nov"
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "dec"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "januari"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "februari"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "maart"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "mei"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "juni"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "july"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "augustus"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "oktober"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "december"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Zowel Pillow als PIL konden niet geïmporteerd worden: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "De '_imaging'-module voor PIL kon niet geïmporteerd worden: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Dit is geen geldig IPv6-adres."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "of"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d jaar"
-msgstr[1] "%d jaren"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d maand"
-msgstr[1] "%d maanden"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d week"
-msgstr[1] "%d weken"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d dag"
-msgstr[1] "%d dagen"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d uur"
-msgstr[1] "%d uren"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minuut"
-msgstr[1] "%d minuten"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minuten"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Directory overzicht is hier niet toegestaan"
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" bestaat niet"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Overzicht van %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Geen jaar opgegeven"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Geen maand opgegeven"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Geen dag opgegeven"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Geen week opgegeven"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Geen %(verbose_name_plural)s beschikbaar"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Geen toekomstige %(verbose_name_plural)s beschikbaar omdat %(class_name)s."
-"allow_future de waarde False (Onwaar) heeft."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Ongeldige datum tekst '%(datestr)s' op basis van formaat '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Geen %(verbose_name)s gevonden die voldoet aan de query"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"Pagina is niet 'last' en kan ook niet geconverteerd worden naar een int."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Ongeldige pagina (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
-"Lege lijst en %(class_name)s.allow_empty heeft de waarde False (Onwaar)."
diff --git a/lib/python2.7/site-packages/django/conf/locale/nl/__init__.py b/lib/python2.7/site-packages/django/conf/locale/nl/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/nl/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/nl/formats.py b/lib/python2.7/site-packages/django/conf/locale/nl/formats.py
deleted file mode 100644
index 5db1f81..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/nl/formats.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j F Y' # '20 januari 2009'
-TIME_FORMAT = 'H:i' # '15:23'
-DATETIME_FORMAT = 'j F Y H:i' # '20 januari 2009 15:23'
-YEAR_MONTH_FORMAT = 'F Y' # 'januari 2009'
-MONTH_DAY_FORMAT = 'j F' # '20 januari'
-SHORT_DATE_FORMAT = 'j-n-Y' # '20-1-2009'
-SHORT_DATETIME_FORMAT = 'j-n-Y H:i' # '20-1-2009 15:23'
-FIRST_DAY_OF_WEEK = 1 # Monday (in Dutch 'maandag')
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d-%m-%Y', '%d-%m-%y', # '20-01-2009', '20-01-09'
- # '%d %b %Y', '%d %b %y', # '20 jan 2009', '20 jan 09'
- # '%d %B %Y', '%d %B %y', # '20 januari 2009', '20 januari 09'
-)
-# Kept ISO formats as one is in first position
-TIME_INPUT_FORMATS = (
- '%H:%M:%S', # '15:23:35'
- '%H:%M:%S.%f', # '15:23:35.000200'
- '%H.%M:%S', # '15.23:35'
- '%H.%M:%S.%f', # '15.23:35.000200'
- '%H.%M', # '15.23'
- '%H:%M', # '15:23'
-)
-DATETIME_INPUT_FORMATS = (
- # With time in %H:%M:%S :
- '%d-%m-%Y %H:%M:%S', '%d-%m-%y %H:%M:%S', '%Y-%m-%d %H:%M:%S', # '20-01-2009 15:23:35', '20-01-09 15:23:35', '2009-01-20 15:23:35'
- # '%d %b %Y %H:%M:%S', '%d %b %y %H:%M:%S', # '20 jan 2009 15:23:35', '20 jan 09 15:23:35'
- # '%d %B %Y %H:%M:%S', '%d %B %y %H:%M:%S', # '20 januari 2009 15:23:35', '20 januari 2009 15:23:35'
- # With time in %H:%M:%S.%f :
- '%d-%m-%Y %H:%M:%S.%f', '%d-%m-%y %H:%M:%S.%f', '%Y-%m-%d %H:%M:%S.%f', # '20-01-2009 15:23:35.000200', '20-01-09 15:23:35.000200', '2009-01-20 15:23:35.000200'
- # With time in %H.%M:%S :
- '%d-%m-%Y %H.%M:%S', '%d-%m-%y %H.%M:%S', # '20-01-2009 15.23:35', '20-01-09 15.23:35'
- # '%d %b %Y %H.%M:%S', '%d %b %y %H.%M:%S', # '20 jan 2009 15.23:35', '20 jan 09 15.23:35'
- # '%d %B %Y %H.%M:%S', '%d %B %y %H.%M:%S', # '20 januari 2009 15.23:35', '20 januari 2009 15.23:35'
- # With time in %H.%M:%S.%f :
- '%d-%m-%Y %H.%M:%S.%f', '%d-%m-%y %H.%M:%S.%f', # '20-01-2009 15.23:35.000200', '20-01-09 15.23:35.000200'
- # With time in %H:%M :
- '%d-%m-%Y %H:%M', '%d-%m-%y %H:%M', '%Y-%m-%d %H:%M', # '20-01-2009 15:23', '20-01-09 15:23', '2009-01-20 15:23'
- # '%d %b %Y %H:%M', '%d %b %y %H:%M', # '20 jan 2009 15:23', '20 jan 09 15:23'
- # '%d %B %Y %H:%M', '%d %B %y %H:%M', # '20 januari 2009 15:23', '20 januari 2009 15:23'
- # With time in %H.%M :
- '%d-%m-%Y %H.%M', '%d-%m-%y %H.%M', # '20-01-2009 15.23', '20-01-09 15.23'
- # '%d %b %Y %H.%M', '%d %b %y %H.%M', # '20 jan 2009 15.23', '20 jan 09 15.23'
- # '%d %B %Y %H.%M', '%d %B %y %H.%M', # '20 januari 2009 15.23', '20 januari 2009 15.23'
- # Without time :
- '%d-%m-%Y', '%d-%m-%y', '%Y-%m-%d', # '20-01-2009', '20-01-09', '2009-01-20'
- # '%d %b %Y', '%d %b %y', # '20 jan 2009', '20 jan 09'
- # '%d %B %Y', '%d %B %y', # '20 januari 2009', '20 januari 2009'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/nn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/nn/LC_MESSAGES/django.mo
deleted file mode 100644
index d5915a8..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/nn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/nn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/nn/LC_MESSAGES/django.po
deleted file mode 100644
index 4486173..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/nn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1309 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# hgrimelid <havard@grimelid.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jensadne <jensadne@pvv.ntnu.no>, 2013
-# Sigurd Gartmann <sigurdga-transifex@sigurdga.no>, 2012
-# velmont <odin.omdal@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-11-06 15:25+0000\n"
-"Last-Translator: jensadne <jensadne@pvv.ntnu.no>\n"
-"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/"
-"language/nn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikaans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arabisk"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Aserbajansk"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgarsk"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Kviterussisk"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengalsk"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretonsk"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosnisk"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Katalansk"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Tsjekkisk"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Walisisk"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Dansk"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Tysk"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Gresk"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Engelsk"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Engelsk (britisk)"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Spansk"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Spansk (argentinsk)"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Spansk (meksikansk)"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Spansk (nicaraguansk)"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Spansk (venezuelansk)"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estisk"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Baskisk"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persisk"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finsk"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Fransk"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frisisk"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irsk"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galisisk"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebraisk"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Kroatisk"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Ungarsk"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonesisk"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islandsk"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italiensk"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japansk"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgisk"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kasakhisk"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Koreansk"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Luxembourgsk"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Litauisk"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Latvisk"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Makedonsk"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongolsk"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Burmesisk"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norsk (bokmål)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepali"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Nederlandsk"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norsk (nynorsk)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Ossetisk"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Punjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Polsk"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugisisk"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Brasiliansk portugisisk"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Rumensk"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Russisk"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slovakisk"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slovensk"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albansk"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbisk"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serbisk latin"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Svensk"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Swahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Thai"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Tyrkisk"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatarisk"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurtisk"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukrainsk"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnamesisk"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Simplifisert kinesisk"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Tradisjonell kinesisk"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Oppgje ein gyldig verdi."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Oppgje ei gyldig nettadresse."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Oppgje eit gyldig heiltal"
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Oppgje ei gyldig e-postadresse."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Oppgje ein gyldig 'slug' som består av bokstavar, nummer, understrekar eller "
-"bindestrekar."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Oppgje ei gyldig IPv4-adresse."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Skriv inn ei gyldig IPv6-adresse."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Skriv inn ei gyldig IPv4- eller IPv6-adresse."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Oppgje berre tall skild med komma."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Verdien må minimum ha %(limit_value)s teikn (den er %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Verdien må vere mindre enn eller lik %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Verdien må vere større enn eller lik %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] "Verdien må ha minst %(limit_value)d teikn (den har %(show_value)d)."
-msgstr[1] "Verdien må ha minst %(limit_value)d teikn (den har %(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s må vere unik for %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "og"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s med %(field_label)s fins allereie."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Feltet kan ikkje vere tomt."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Feltet kan ikkje vere tomt."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Felt av typen: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Heiltal"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "Verdien '%(value)s' må vere eit heiltal."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "Verdien '%(value)s' må vere anten True eller False."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolsk (True eller False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Tekst (opp til %(max_length)s teikn)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Heiltal skild med komma"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Dato (utan tid)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Dato (med tid)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Desimaltall"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-postadresse"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Filsti"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Flyttall"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Stort (8 bitar) heiltal"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4-adresse"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP-adresse"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolsk (True, False eller None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Positivt heiltal"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Positivt lite heiltal"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (opp til %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Lite heiltal"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Tekst"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Tid"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "Nettadresse"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Fil"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Bilete"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Primærnøkkel (type bestemt av relatert felt)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Ein-til-ein-forhold"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Mange-til-mange-forhold"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Feltet er påkravd."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Oppgje eit heiltall."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Oppgje eit tall."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Oppgje ein gyldig dato."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Oppgje eit gyldig tidspunkt."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Oppgje gyldig dato og tidspunkt."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Inga fil vart sendt. Sjekk \"encoding\"-typen på skjemaet."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Inga fil vart sendt."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Fila er tom."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Last enten opp ei fil eller huk av i avkryssingsboksen."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Last opp eit gyldig bilete. Fila du lasta opp var ødelagt eller ikkje eit "
-"bilete."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Velg eit gyldig valg. %(value)s er ikkje eit av dei tilgjengelege valga."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Oppgje ei liste med verdiar."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Rekkefølge"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Slett"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Korriger dupliserte data for %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Korriger dupliserte data for %(field)s, som må vere unike."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Korriger dupliserte data for %(field_name)s, som må vere unike for "
-"%(lookup)s i %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Korriger dei dupliserte verdiane nedanfor."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Primærnøkkelen er ikkje den samme som foreldreinstansen sin primærnøkkel."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Velg eit gyldig valg. Valget er ikkje eit av dei tilgjengelege valga."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Hald nede \"Control\", eller \"Command\" på ein Mac, for å velge meir enn "
-"éin."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s kunne ikkje bli tolka i tidssona %(current_timezone)s. Verdien "
-"er anten tvetydig eller ugyldig."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Noverande"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Endre"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Tøm"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Ukjend"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Ja"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Nei"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "ja,nei,kanskje"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "midnatt"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "12:00"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "måndag"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "tysdag"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "onsdag"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "torsdag"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "fredag"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "laurdag"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "søndag"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "man"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "tys"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "ons"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "tor"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "fre"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "lau"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "søn"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "januar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "februar"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "mars"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "mai"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "juni"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "juli"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "august"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "oktober"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "desember"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mars"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "april"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "juni"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "juli"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "des"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "mars"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "mai"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "juni"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "juli"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "aug."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "sep."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "okt."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "des."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Januar"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Februar"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Mars"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Mai"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Juli"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "August"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Oktober"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "November"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Desember"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Dette er ikkje ei gyldig IPv6-adresse."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s…"
-
-#: utils/text.py:224
-msgid "or"
-msgstr "eller"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d år"
-msgstr[1] "%d år"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d månad"
-msgstr[1] "%d månader"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d veke"
-msgstr[1] "%d veker"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d dag"
-msgstr[1] "%d dagar"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d time"
-msgstr[1] "%d timar"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minutt"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Mappeindeksar er ikkje tillate her."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "«%(path)s» finst ikkje."
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Indeks for %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Årstal ikkje spesifisert"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Månad ikkje spesifisert"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Dag ikkje spesifisert"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Veke ikkje spesifisert"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s tilgjengeleg"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Framtidig %(verbose_name_plural)s er ikkje tilgjengeleg fordi %(class_name)s."
-"allow_future er sett til False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Ugyldig datostreng '%(datestr)s' gitt format '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Fann ingen %(verbose_name)s som korresponderte med spørringa"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Sida er ikkje 'last' og kan heller ikkje konverterast til eit tal."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Tom liste og '%(class_name)s.allow_empty' er False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/nn/__init__.py b/lib/python2.7/site-packages/django/conf/locale/nn/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/nn/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/nn/formats.py b/lib/python2.7/site-packages/django/conf/locale/nn/formats.py
deleted file mode 100644
index 528ae30..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/nn/formats.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j. F Y'
-TIME_FORMAT = 'H:i'
-DATETIME_FORMAT = 'j. F Y H:i'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j. F'
-SHORT_DATE_FORMAT = 'd.m.Y'
-SHORT_DATETIME_FORMAT = 'd.m.Y H:i'
-FIRST_DAY_OF_WEEK = 1 # Monday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# Kept ISO formats as they are in first position
-DATE_INPUT_FORMATS = (
- '%Y-%m-%d', '%d.%m.%Y', '%d.%m.%y', # '2006-10-25', '25.10.2006', '25.10.06'
- # '%d. %b %Y', '%d %b %Y', # '25. okt 2006', '25 okt 2006'
- # '%d. %b. %Y', '%d %b. %Y', # '25. okt. 2006', '25 okt. 2006'
- # '%d. %B %Y', '%d %B %Y', # '25. oktober 2006', '25 oktober 2006'
-)
-DATETIME_INPUT_FORMATS = (
- '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
- '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
- '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
- '%Y-%m-%d', # '2006-10-25'
- '%Y-%m-%d', # '2006-10-25'
- '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
- '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
- '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
- '%d.%m.%Y', # '25.10.2006'
- '%d.%m.%y %H:%M:%S', # '25.10.06 14:30:59'
- '%d.%m.%y %H:%M:%S.%f', # '25.10.06 14:30:59.000200'
- '%d.%m.%y %H:%M', # '25.10.06 14:30'
- '%d.%m.%y', # '25.10.06'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '\xa0' # non-breaking space
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/os/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/os/LC_MESSAGES/django.mo
deleted file mode 100644
index aae1ed6..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/os/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/os/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/os/LC_MESSAGES/django.po
deleted file mode 100644
index 9d5b2c4..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/os/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1319 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Ossetic (http://www.transifex.com/projects/p/django/language/"
-"os/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: os\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Африкаанс"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Араббаг"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Тӕтӕйраг"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Болгайраг"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Беларусаг"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Бенгалаг"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Бретойнаг"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Босниаг"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Каталайнаг"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Чехаг"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Уельсаг"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Даниаг"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Немыцаг"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Грекъаг"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Англисаг"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Бритайнаг англисаг"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Есперанто"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Испайнаг"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Аргентинаг испайнаг"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Мексикайнаг Испайнаг"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Никарагуайаг испайнаг"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Венесуелаг испайнаг"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Эстойнаг"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Баскаг"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Персайнаг"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Финнаг"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Францаг"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Фризаг"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Ирландиаг"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Галициаг"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Иврит"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Хинди"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Хорватаг"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Венгриаг"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Интерлингва"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Индонезиаг"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Исландаг"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Италиаг"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Япойнаг"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Гуырдзиаг"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Казахаг"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Хмераг"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Каннадаг"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Корейаг"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Люксембургаг"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Литвайаг"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Латвийаг"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Мӕчъидон"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Малайаг"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Монголиаг"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Бурмизаг"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Норвегийаг бокмал"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Непалаг"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Нидерландаг"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Норвегийаг Нинорск"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Ирон"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Пенджабаг"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Полаг"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Португалаг"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Бразилаг португалаг"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Румынаг"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Уырыссаг"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Словакиаг"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Словенаг"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Албайнаг"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Сербаг"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Латинаг Сербаг"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Шведаг"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Суахили"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Тамилаг"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Телугу"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Тайаг"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Туркаг"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Тӕтӕйраг"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Удмуртаг"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Украинаг"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Урду"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Вьетнамаг"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Ӕнцонгонд Китайаг"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Традицион Китайаг"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Раст бӕрц бафысс."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Раст URL бафысс."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Раст email адрис бафысс."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Раст бӕрӕг ном бафысс, цӕмӕй дзы уой дамгъӕтӕ, нымӕцтӕ бынылхӕххытӕ кӕнӕ "
-"дефистӕ."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Раст IPv4 адрис бафысс."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Раст IPv6 адрис бафысс."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Раст IPv4 кӕнӕ IPv6 адрис бафысс."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Бафысс ӕрмӕст нымӕцтӕ, къӕдзгуытӕй дихгонд."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Ацы бӕрц хъуамӕ уа %(limit_value)s (у %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Ацы бӕрц хъуамӕ уа %(limit_value)s, кӕнӕ цъусдӕр."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Ацы бӕрц хъуамӕ уа %(limit_value)s, кӕнӕ цъусдӕр."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Дӕ хъус бадар цӕмӕй ам %(limit_value)d дамгъӕ уӕддӕр уа (ис дзы "
-"%(show_value)d)."
-msgstr[1] ""
-"Дӕ хъус бадар цӕмӕй ам %(limit_value)d дамгъӕйы уӕддӕр уа (ис дзы "
-"%(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Дӕ хъус бадар цӕмӕй ам %(limit_value)d дамгъӕйӕ фылдӕр ма уа (ис дзы "
-"%(show_value)d)."
-msgstr[1] ""
-"Дӕ хъус бадар цӕмӕй ам %(limit_value)d дамгъӕйӕ фылдӕр ма уа (ис дзы "
-"%(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s хъуамӕ уникалон уа %(date_field)s %(lookup)s-ӕн."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "ӕмӕ"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s ацы %(field_label)s-имӕ нырид ис."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Ацы быдыр нул ма хъуамӕ уа."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Ацы быдыр афтид ма хъуамӕ уа."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Быдыры хуыз: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Ӕгас нымӕц"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Булон (Бӕлвырд кӕнӕ Мӕнг)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Рӕнхъ (%(max_length)s-ы йонг)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Къӕдзыгӕй хицӕнгонд ӕгас нымӕцтӕ"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Бон (ӕнӕ рӕстӕг)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Бон (ӕд рӕстӕг)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Дӕсон нымӕц"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Электрон посты адрис"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Файлы фӕт"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Уӕгъд стъӕлфимӕ нымӕц"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Стыр (8 байты) ӕгас нымӕц"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 адрис"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP адрис"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Булон (Бӕлвырд, Мӕнг кӕнӕ Ницы)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Позитивон ӕгас нымӕц"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Позитивон гыццыл ӕгас нымӕц"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Слаг (ӕппӕты фылдӕр %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Гыццыл ӕгас нымӕц"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Текст"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Рӕстӕг"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Хом бинарон рардтӕ"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Файл"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Ныв"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Ӕттагон Амонӕн (хӕстӕг быдырӕй бӕрӕггонд хуыз)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Иуӕн-иу бастдзинад"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Бирӕйӕн-бирӕ бастдзинад"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Ацы быдыр ӕнӕмӕнг у."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Бафысс ӕнӕхъӕн нымӕц."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Бафысс нымӕц."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Дӕ хъус бадар цӕмӕй иууыл иумӕ %(max)s цифрӕйӕ фылдӕр уой."
-msgstr[1] "Дӕ хъус бадар цӕмӕй иууыл иумӕ %(max)s цифрӕйӕ фылдӕр уой."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Дӕ хъус бадар цӕмӕй дӕсон бынӕттӕ %(max)s-ӕй фылдӕр ма уой."
-msgstr[1] "Дӕ хъус бадар цӕмӕй дӕсон бынӕттӕ %(max)s-ӕй фылдӕр ма уой."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-"Дӕ хъус бадар цӕмӕй дӕсон стъӕлфы размӕ %(max)s цифрӕйӕ фылдӕр ма уа."
-msgstr[1] ""
-"Дӕ хъус бадар цӕмӕй дӕсон стъӕлфы размӕ %(max)s цифрӕйӕ фылдӕр ма уа."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Раст бон бафысс."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Раст рӕстӕг бафысс."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Раст бон/рӕстӕг бафысс."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Ницы файл уыд лӕвӕрд. Абӕрӕг кӕн формӕйы кодкӕнынады хуыз."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Ницы файл уыд лӕвӕрд."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Лӕвӕрд файл афтид у."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Дӕ хъус бадар цӕмӕй ацы файлы номы %(max)d дамгъӕйӕ фылдӕр ма уа(ис дзы "
-"%(length)d)."
-msgstr[1] ""
-"Дӕ хъус бадар цӕмӕй ацы файлы номы %(max)d дамгъӕйӕ фылдӕр ма уа(ис дзы "
-"%(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Дӕ хорзӕхӕй, кӕнӕ бадӕтт файл, кӕнӕ банысан кӕн сыгъдӕг чекбокс. Дыууӕ иумӕ "
-"нӕ."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Раст ныв бавгӕн. Ды цы файл бавгӕдтай, уый кӕнӕ ныв нӕ уыд, кӕнӕ хӕлд ныв "
-"уыд."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Раст фадат равзар. %(value)s фадӕтты ӕхсӕн нӕй."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Бафысс мидисты номхыгъд."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Ӕмбӕхст быдыр %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Рад"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Схафын"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Дӕ хорзӕхӕй, %(field)s-ы дывӕр рардтӕ сраст кӕн."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Дӕ хорзӕхӕй, %(field)s-ы дывӕр рардтӕ сраст кӕн. Хъуамӕ уникалон уа."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Дӕ хорзӕхӕй, %(field_name)s-ы дывӕр рардтӕ сраст кӕн. Хъуамӕ %(date_field)s-"
-"ы %(lookup)s-ӕн уникалон уа. "
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Дӕ хорзӕхӕй, бындӕр цы дывӕр рардтӕ ис, уыдон сраст кӕн."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Ӕддагон амонӕнӕн нӕ разынд хистӕры фыццаг амонӕн."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Раст фадат равзар. УКыцы фадат фадӕтты ӕхсӕн нӕй."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" фыццаг амонӕнӕн нӕ бӕззы."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Ныххӕц \"Control\", кӕнӕ \"Command\" Mac-ыл, цӕмӕй иуӕй фылдӕр равзарай."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s нӕ бӕрӕг кӕны ацы рӕстӕджы тагы %(current_timezone)s; гӕнӕн ис "
-"бирӕнысанон у кӕнӕ та нӕй."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Ныр"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Фӕивын"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Сыгъдӕг"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Ӕнӕбӕрӕг"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "О"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Нӕ"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "о,нӕ,гӕнӕн ис"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d байт"
-msgstr[1] "%(size)d байты"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s КБ"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s МБ"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s ГБ"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s ТБ"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s ПБ"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "ӕ.ф."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "ӕ.р."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "ӔФ"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "ӔР"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "ӕмбисӕхсӕв"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "ӕмбисбон"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Къуырисӕр"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Дыццӕг"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Ӕртыццӕг"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Цыппӕрӕм"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Майрӕмбон"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Сабат"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Хуыцаубон"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Крс"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Дцг"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Ӕрт"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Цпр"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Мрб"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Сбт"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Хцб"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Январь"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Февраль"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Мартъи"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Апрель"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Май"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Июнь"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Июль"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Август"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Сентябрь"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Октябрь"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Ноябрь"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Декабрь"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "янв"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "фев"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "мар"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "апр"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "май"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "июн"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "июл"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "авг"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "сен"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "окт"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "ноя"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "дек"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Янв."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Фев."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Мартъи"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Апрель"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Май"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Июнь"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Июль"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Авг."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Сен."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Окт."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Ноя."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Дек."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Январь"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Февраль"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Мартъи"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Апрель"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Май"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Июнь"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Июль"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Август"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Сентябрь"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Октябрь"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Ноябрь"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Декабрь"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "кӕнӕ"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d аз"
-msgstr[1] "%d азы"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d мӕй"
-msgstr[1] "%d мӕйы"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d къуыри"
-msgstr[1] "%d къуырийы"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d бон"
-msgstr[1] "%d боны"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d сахат"
-msgstr[1] "%d сахаты"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d минут"
-msgstr[1] "%d минуты"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 минуты"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Ам директориты индекстӕ нӕй гӕнӕн."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" нӕй"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "%(directory)s-ы индекс"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Аз амынд нӕ уыд"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Мӕй амынд нӕ уыд"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Бон амынд нӕ уыд"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Къуыри амынд нӕ уыд"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Ницы %(verbose_name_plural)s ис"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Фидӕн %(verbose_name_plural)s-мӕ бавналӕн нӕй, уымӕн ӕмӕ %(class_name)s."
-"allow_future Мӕнг у."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Боны рӕнхъ '%(datestr)s'-ы лӕвӕрд формат '%(format)s' раст нӕу"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Домӕнӕн ницы %(verbose_name)s ӕмбӕлы"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Фарс 'last' нӕу, нӕдӕр ӕй int-мӕ ис гӕнӕн раивын."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Мӕнг фарс (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Номхыгъд афтид у, ӕмӕ '%(class_name)s.allow_empty' мӕнг у."
diff --git a/lib/python2.7/site-packages/django/conf/locale/pa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/pa/LC_MESSAGES/django.mo
deleted file mode 100644
index d3aacfb..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/pa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/pa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/pa/LC_MESSAGES/django.po
deleted file mode 100644
index 4ef7134..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/pa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1292 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# A S Alam <apreet.alam@gmail.com>, 2011,2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/"
-"language/pa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pa\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "ਅਫਰੀਕੀ"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "ਅਰਬੀ"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "ਅਜ਼ਰਬਾਈਜਾਨੀ"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "ਬੁਲਗਾਰੀਆਈ"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "ਬੇਲਾਰੂਸੀ"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "ਬੰਗਾਲੀ"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "ਬਰੇਟੋਨ"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "ਬੋਸਨੀਆਈ"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "ਕਾਟਾਲਾਨ"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "ਚੈੱਕ"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "ਵੈਲਸ਼"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "ਡੈਨਿਸ਼"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "ਜਰਮਨ"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "ਗਰੀਕ"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "ਅੰਗਰੇਜ਼ੀ"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "ਬਰਤਾਨੀਵੀਂ ਅੰਗਰੇਜ਼ੀ"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "ਸਪੇਨੀ"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "ਅਰਜਨਟੀਨੀ ਸਪੇਨੀ"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "ਮੈਕਸੀਕਨ ਸਪੇਨੀ"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "ਈਸਟੋਨੀਆਈ"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "ਬਸਕਿਊ"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "ਪਰਸ਼ੀਆਈ"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "ਫੈਨਿਸ਼"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "ਫਰੈਂਚ"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "ਫ਼ਾਰਸੀ"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "ਆਈਰਸ਼"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "ਗਲੀਸੀਆਈ"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "ਹੈਬਰਿਊ"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "ਹਿੰਦੀ"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "ਕਰੋਆਟੀਆਈ"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "ਹੰਗਰੀਆਈ"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "ਇੰਡੋਨੇਸ਼ੀਆਈ"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "ਆਈਸਲੈਂਡਿਕ"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "ਇਤਾਲਵੀ"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "ਜਾਪਾਨੀ"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "ਜਾਰਜੀਆਈ"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "ਕਜ਼ਾਖ"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "ਖਮੀਰ"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "ਕੰਨੜ"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "ਕੋਰੀਆਈ"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "ਲੀਥੁਨੀਆਈ"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "ਲਾਟਵੀਅਨ"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "ਮੈਕਡੋਨੀਆਈ"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "ਮਲਿਆਲਮ"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "ਮੰਗੋਲੀਆਈ"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "ਨਾਰਵੇਗੀਆਈ ਬੋਕਮਾਲ"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "ਨੇਪਾਲੀ"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "ਡੱਚ"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "ਨਾਰਵੇਗੀਅਨ ਨਯਨੋਰਸਕ"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "ਪੰਜਾਬੀ"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "ਪੋਲੈਂਡੀ"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "ਪੁਰਤਗਾਲੀ"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "ਬਰਾਜ਼ੀਲੀ ਪੁਰਤਗਾਲੀ"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "ਰੋਮਾਨੀਆਈ"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "ਰੂਸੀ"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "ਸਲੋਵਾਕ"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "ਸਲੋਵੀਨੀਆਈ"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "ਅਲਬੀਨੀਆਈ"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "ਸਰਬੀਆਈ"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "ਸਰਬੀਆਈ ਲੈਟਿਨ"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "ਸਵੀਡਨੀ"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "ਤਾਮਿਲ"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "ਤੇਲਗੂ"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "ਥਾਈ"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "ਤੁਰਕ"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "ਤਤਾਰ"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ਯੂਕਰੇਨੀ"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "ਉਰਦੂ"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "ਵੀਅਤਨਾਮੀ"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "ਸਧਾਰਨ ਚੀਨੀ"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "ਮੂਲ ਚੀਨੀ"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "ਠੀਕ ਮੁੱਲ ਦਿਓ"
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "ਠੀਕ URL ਦਿਉ।"
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "ਢੁੱਕਵਾਂ ਈਮੇਲ ਸਿਰਨਾਵਾਂ ਦਿਉ ਜੀ।"
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr ""
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr ""
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr ""
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr ""
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "ਅਤੇ"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr ""
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "ਇਹ ਖੇਤਰ ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ।"
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "ਖੇਤਰ ਦੀ ਕਿਸਮ: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "ਅੰਕ"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr ""
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr ""
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "ਮਿਤੀ (ਬਿਨਾਂ ਸਮਾਂ)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "ਮਿਤੀ (ਸਮੇਂ ਨਾਲ)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "ਦਸ਼ਮਲਵ ਅੰਕ"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "ਈਮੇਲ ਐਡਰੈੱਸ"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "ਫਾਇਲ ਪਾਥ"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr ""
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 ਸਿਰਨਾਵਾਂ"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP ਐਡਰੈੱਸ"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "ਟੈਕਸਟ"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "ਸਮਾਂ"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "ਫਾਇਲ"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "ਚਿੱਤਰ"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr ""
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "ਇੱਕ-ਤੋਂ-ਇੱਕ ਸਬੰਧ"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "ਕਈ-ਤੋਂ-ਕਈ ਸਬੰਧ"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "ਇਹ ਖੇਤਰ ਲਾਜ਼ਮੀ ਹੈ।"
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "ਪੂਰਨ ਨੰਬਰ ਦਿਉ।"
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "ਨੰਬਰ ਦਿਓ।"
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "ਠੀਕ ਮਿਤੀ ਦਿਓ।"
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "ਠੀਕ ਸਮਾਂ ਦਿਓ।"
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "ਠੀਕ ਮਿਤੀ/ਸਮਾਂ ਦਿਓ।"
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "ਕੋਈ ਫਾਇਲ ਨਹੀਂ ਭੇਜੀ।"
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "ਦਿੱਤੀ ਫਾਇਲ ਖਾਲੀ ਹੈ।"
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "ਮੁੱਲ ਦੀ ਲਿਸਟ ਦਿਓ।"
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "ਲੜੀ"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "ਹਟਾਓ"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr ""
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr ""
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "ਮੌਜੂਦਾ"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "ਬਦਲੋ"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "ਸਾਫ਼ ਕਰੋ"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "ਅਣਜਾਣ"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "ਹਾਂ"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "ਨਹੀਂ"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "ਹਾਂ,ਨਹੀਂ,ਸ਼ਾਇਦ"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d ਬਾਈਟ"
-msgstr[1] "%(size)d ਬਾਈਟ"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "ਸ਼ਾਮ"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "ਸਵੇਰ"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "ਅੱਧੀ-ਰਾਤ"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "ਨੂਨ"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "ਸੋਮਵਾਰ"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "ਮੰਗਲਵਾਰ"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "ਬੁੱਧਵਾਰ"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "ਵੀਰਵਾਰ"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "ਸ਼ੁੱਕਰਵਾਰ"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "ਸ਼ਨਿੱਚਰਵਾਰ"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "ਐਤਵਾਰ"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "ਸੋਮ"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "ਮੰਗ"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "ਬੁੱਧ"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "ਵੀਰ"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "ਸ਼ੁੱਕ"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "ਸ਼ਨਿੱ"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "ਐਤ"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "ਜਨਵਰੀ"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "ਫਰਵਰੀ"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "ਮਾਰਚ"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "ਅਪਰੈਲ"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "ਮਈ"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "ਜੂਨ"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "ਜੁਲਾਈ"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "ਅਗਸਤ"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "ਸਤੰਬਰ"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "ਅਕਤੂਬਰ"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "ਨਵੰਬਰ"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "ਦਸੰਬਰ"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ਜਨ"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "ਫਰ"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "ਮਾਰ"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "ਅਪ"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "ਮਈ"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "ਜੂਨ"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "ਜੁਲ"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ਅਗ"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "ਸਤੰ"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "ਅਕ"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "ਨਵੰ"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "ਦਸੰ"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "ਜਨ"
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "ਫਰ"
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "ਮਾਰ"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "ਅਪ"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "ਮਈ"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "ਜੂਨ"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "ਜੁਲ"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "ਅਗ"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "ਸਤੰ"
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "ਅਕਤੂ"
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "ਨਵੰ"
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "ਦਸੰ"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "ਜਨਵਰੀ"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "ਫਰਵਰੀ"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "ਮਾਰਚ"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "ਅਪਰੈਲ"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "ਮਈ"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "ਜੂਨ"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "ਜੁਲਾਈ"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "ਅਗਸਤ"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "ਸਤੰਬਰ"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "ਅਕਤੂਬਰ"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "ਨਵੰਬਰ"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "ਦਸੰਬਰ"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "ਜਾਂ"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d ਸਾਲ"
-msgstr[1] "%d ਸਾਲ"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d ਮਹੀਨਾ"
-msgstr[1] "%d ਮਹੀਨੇ"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d ਹਫ਼ਤਾ"
-msgstr[1] "%d ਹਫ਼ਤੇ"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d ਦਿਨ"
-msgstr[1] "%d ਦਿਨ"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d ਘੰਟਾ"
-msgstr[1] "%d ਘੰਟੇ"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d ਮਿੰਟ"
-msgstr[1] "%d ਮਿੰਟ"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 ਮਿੰਟ"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" ਮੌਜੂਦ ਨਹੀਂ ਹੈ"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "%(directory)s ਦਾ ਇੰਡੈਕਸ"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "ਕੋਈ ਸਾਲ ਨਹੀਂ ਦਿੱਤਾ"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "ਕੋਈ ਮਹੀਨਾ ਨਹੀਂ ਦਿੱਤਾ"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "ਕੋਈ ਦਿਨ ਨਹੀਂ ਦਿੱਤਾ"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "ਕੋਈ ਹਫ਼ਤਾ ਨਹੀਂ ਦਿੱਤਾ"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr ""
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr ""
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/conf/locale/pl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/pl/LC_MESSAGES/django.mo
deleted file mode 100644
index 670dd0b..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/pl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/pl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/pl/LC_MESSAGES/django.po
deleted file mode 100644
index 4246f58..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/pl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1340 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# angularcircle, 2011,2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kacper Krupa <pagenoare@gmail.com>, 2013
-# Karol <kfuks2@o2.pl>, 2012
-# konryd <konryd@gmail.com>, 2011
-# Łukasz Rekucki <lrekucki@gmail.com>, 2011
-# mpasternak <michal.dtz@gmail.com>, 2013
-# p <poczciwiec@gmail.com>, 2012
-# rczajka <radoslaw.czajka@nowoczesnapolska.org.pl>, 2013
-# Roman Barczyński <rombar@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-11-02 15:12+0000\n"
-"Last-Translator: mpasternak <michal.dtz@gmail.com>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/django/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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afryknerski"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "arabski"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "azerski"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "bułgarski"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "białoruski"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "bengalski"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "bretoński"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "bośniacki"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "kataloński"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "czeski"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "walijski"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "duński"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "niemiecki"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "grecki"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "angielski"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "angielski brytyjski"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "hiszpański"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "hiszpański argentyński"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "hiszpański meksykański"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "hiszpański nikaraguański"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "hiszpański wenezuelski"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "estoński"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "baskijski"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "perski"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "fiński"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "francuski"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "fryzyjski"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "irlandzki"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "galicyjski"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "hebrajski"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "chorwacki"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "węgierski"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "indonezyjski"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "islandzki"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "włoski"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "japoński"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "gruziński"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "kazachski"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "khmerski"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "koreański"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "luksemburski"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "litewski"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "łotewski"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "macedoński"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "malajski"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "mongolski"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "birmański"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "norweski (Bokmal)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "nepalski"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "holenderski"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "norweski (Nynorsk)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "osetyjski"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "pendżabski"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "polski"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "portugalski"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "brazylijski portugalski"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "rumuński"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "rosyjski"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "słowacki"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "słoweński"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "albański"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "serbski"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "serbski (łaciński)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "szwedzki"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "suahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "tamilski"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "tajski"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "turecki"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "tatarski"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "udmurcki"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ukraiński"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "wietnamski"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "chiński uproszczony"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "chiński tradycyjny"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Wpisz poprawną wartość."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Wpisz poprawny URL."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Wprowadź poprawny adres email."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "To pole może zawierać jedynie litery, cyfry, podkreślenia i myślniki."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Wprowadź poprawny adres IPv4."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Wprowadź poprawny adres IPv6."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Wprowadź poprawny adres IPv4 lub IPv6."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Wpisz tylko cyfry oddzielone przecinkami."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Upewnij się, że ta wartość jest %(limit_value)s (jest %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Upewnij się, że ta wartość jest mniejsza lub równa %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Upewnij się, że ta wartość jest większa lub równa %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Upewnij się, że ta wartość ma przynajmniej %(limit_value)d znak (obecnie ma "
-"%(show_value)d)."
-msgstr[1] ""
-"Upewnij się, że ta wartość ma przynajmniej %(limit_value)d znaki (obecnie ma "
-"%(show_value)d)."
-msgstr[2] ""
-"Upewnij się, że ta wartość ma przynajmniej %(limit_value)d znaków (obecnie "
-"ma %(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"Wartości w %(field_name)s muszą być unikalne dla wyszukiwań %(lookup)s w "
-"%(date_field)s"
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "i"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(field_label)s już istnieje w %(model_name)s."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "To pole nie może być puste."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "To pole nie może być puste."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Pole typu: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Liczba całkowita"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Wartość logiczna (True, False - prawda lub fałsz)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Łańcuch (do %(max_length)s znaków)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Liczby całkowite rozdzielone przecinkami"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Data (bez godziny)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Data (z godziną)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Liczba dziesiętna"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Adres e-mail"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Ścieżka do pliku"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Liczba zmiennoprzecinkowa"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Duża liczba całkowita (8 bajtów)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "adres IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Adres IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Wartość logiczna (True, False, None - prawda, fałsz lub nic)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Dodatnia liczba całkowita"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Dodatnia mała liczba całkowita"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (max. %(max_length)s znaków)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Mała liczba całkowita"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Tekst"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Czas"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Dane w postaci binarnej"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Plik"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Plik graficzny"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Klucz obcy (typ określony przez pole powiązane)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Powiązanie jeden do jednego"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Powiązanie wiele do wiele"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "To pole jest wymagane."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Wpisz liczbę całkowitą."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Wpisz liczbę."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Upewnij się, że jest nie więcej niż %(max)s cyfra."
-msgstr[1] "Upewnij się, że jest nie więcej niż %(max)s cyfr."
-msgstr[2] "Upewnij się, że jest nie więcej niż %(max)s cyfr."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Wpisz poprawną datę."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Wpisz poprawną godzinę."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Wpisz poprawną datę/godzinę."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Nie wysłano żadnego pliku. Sprawdź typ kodowania formularza."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Żaden plik nie został przesłany."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Wysłany plik jest pusty."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Prześlij plik lub zaznacz by usunąć, ale nie oba na raz."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Wgraj poprawny plik graficzny. Ten, który został wgrany, nie jest obrazem, "
-"albo jest uszkodzony."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Wybierz poprawną wartość. %(value)s nie jest jednym z dostępnych wyborów."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Podaj listę wartości."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Ukryte pole %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Porządek"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Usuń"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Popraw zduplikowane dane w %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Popraw zduplikowane dane w %(field)s, które wymaga unikalności."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Popraw zduplikowane dane w %(field_name)s, które wymaga unikalności dla "
-"%(lookup)s w polu %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Popraw poniższe zduplikowane wartości."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Osadzony klucz obcy nie pasuje do klucza głównego obiektu rodzica."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Wybierz poprawną wartość. Podana nie jest jednym z dostępnych wyborów."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" nie jest poprawną wartością klucza głównego."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Przytrzymaj wciśnięty klawisz \"Ctrl\" lub \"Command\" na Mac'u aby "
-"zaznaczyć więcej niż jeden wybór."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s nie może być interpretowany w strefie czasowej "
-"%(current_timezone)s; może być niejednoznaczne lub nie istnieć."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Teraz"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Zmień"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Wyczyść"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Nieznany"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Tak"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Nie"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "tak,nie,może"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bajt"
-msgstr[1] "%(size)d bajty"
-msgstr[2] "%(size)d bajtów"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "po południu"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "rano"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "po południu"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "rano"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "północ"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "południe"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Poniedziałek"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Wtorek"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Środa"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Czwartek"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Piątek"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Sobota"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Niedziela"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Pon"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Wt"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Śr"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Czw"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Pt"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "So"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Nd"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Styczeń"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Luty"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Marzec"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Kwiecień"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Maj"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Czerwiec"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Lipiec"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Sierpień"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Wrzesień"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Październik"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Listopad"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Grudzień"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "sty"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "luty"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "marz"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "kwie"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "maj"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "czerw"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "lip"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "sier"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "wrze"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "paź"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "list"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "gru"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Sty"
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Lut"
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Mar"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Kwi"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Maj"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Cze"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Lip"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Sie"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Wrz"
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Paź"
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Lis"
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Gru"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "stycznia"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "lutego"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "marca"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "kwietnia"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "maja"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "czerwca"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "lipca"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "sierpnia"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "września"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "października"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "listopada"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "grudnia"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr " %(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "lub"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d rok"
-msgstr[1] "%d lata"
-msgstr[2] "%d lat"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d miesiąc"
-msgstr[1] "%d miesiące"
-msgstr[2] "%d miesięcy"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d tydzień"
-msgstr[1] "%d tygodnie"
-msgstr[2] "%d tygodni"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d dzień"
-msgstr[1] "%d dni"
-msgstr[2] "%d dni"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d godzina"
-msgstr[1] "%d godziny"
-msgstr[2] "%d godzin"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minuta"
-msgstr[1] "%d minuty"
-msgstr[2] "%d minut"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minut"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Wyświetlanie zawartości katalogu jest tu niedozwolone."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\" %(path)s \" nie istnieje"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Zawartość %(directory)s "
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Nie określono roku"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Nie określono miesiąca"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Nie określono dnia"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Nie określono tygodnia"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s nie jest dostępny"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Wyświetlanie %(verbose_name_plural)s z datą przyszłą jest niedostępne, gdyż "
-"atrybut '%(class_name)s.allow_future' ma wartość 'False'."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-"Ciąg znaków '%(datestr)s' jest niezgodny z podanym formatem daty '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Nie znaleziono %(verbose_name)s spełniających wybrane kryteria"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"Podanego numeru strony nie można przekształcić na liczbę całkowitą, nie "
-"przyjął on również wartości 'last' oznaczającej ostatnią stronę z dostępnego "
-"zakresu."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Nieprawidłowy numer strony (%(page_number)s): %(message)s "
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
-"Lista nie zawiera żadnych elementów, a atrybut '%(class_name)s.allow_empty' "
-"ma wartość 'False'."
diff --git a/lib/python2.7/site-packages/django/conf/locale/pl/__init__.py b/lib/python2.7/site-packages/django/conf/locale/pl/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/pl/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/pl/formats.py b/lib/python2.7/site-packages/django/conf/locale/pl/formats.py
deleted file mode 100644
index 25cfc79..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/pl/formats.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j E Y'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = 'j E Y H:i:s'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'd-m-Y'
-SHORT_DATETIME_FORMAT = 'd-m-Y H:i:s'
-FIRST_DAY_OF_WEEK = 1 # Monday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06'
- '%y-%m-%d', # '06-10-25'
- # '%d. %B %Y', '%d. %b. %Y', # '25. October 2006', '25. Oct. 2006'
-)
-DATETIME_INPUT_FORMATS = (
- '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
- '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
- '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
- '%d.%m.%Y', # '25.10.2006'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = ' '
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/pt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/pt/LC_MESSAGES/django.mo
deleted file mode 100644
index 4c889ef..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/pt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/pt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/pt/LC_MESSAGES/django.po
deleted file mode 100644
index dc546a9..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/pt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1336 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Bruno Miguel Custódio <bruno@brunomcustodio.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nuno Mariz <nmariz@gmail.com>, 2011-2013
-# Paulo Köch <paulo.koch@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-10-31 16:09+0000\n"
-"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
-"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Africâner"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Árabe"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azerbaijano"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Búlgaro"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Bielorusso"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengalês"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretão"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bósnio"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Catalão"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Checo"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Galês"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Dinamarquês"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Alemão"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Grego"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Inglês"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Inglês Britânico"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Espanhol"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Espanhol Argentino"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Espanhol mexicano"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Nicarágua Espanhol"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Espanhol Venezuelano"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estónio"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Basco"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persa"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Filandês"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Francês"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frisão"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irlandês"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galaciano"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebraico"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Croata"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Húngaro"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlíngua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonésio"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islandês"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italiano"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japonês"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgiano"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Cazaque"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Canarês"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Coreano"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Luxemburguês"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Lituano"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Letão"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Macedónio"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malaiala"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongol"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Birmanês"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norueguês (Bokmål)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepali"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Holandês"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norueguês (Nynors)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Ossetic"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Panjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Polaco"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Português"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Português Brasileiro"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Romeno"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Russo"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Eslovaco"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Esloveno"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albanês"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Sérvio"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Sérvio Latim"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Sueco"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Suaíli"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Thai"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turco"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatar"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurte"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ucraniano"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnamita"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Chinês Simplificado"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Chinês Tradicional"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Introduza um valor válido."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Introduza um URL válido."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Introduza um número inteiro válido."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Introduza um endereço de e-mail válido."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Este valor apenas poderá conter letras, números, undercores ou hífenes."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Introduza um endereço IPv4 válido."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Insira um endereço IPv6 válido."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Digite um endereço válido IPv4 ou IPv6."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Introduza apenas números separados por vírgulas."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Garanta que este valor seja %(limit_value)s (tem %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Garanta que este valor seja menor ou igual a %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Garanta que este valor seja maior ou igual a %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Garanta que este valor tenha pelo menos %(limit_value)d caractere (tem "
-"%(show_value)d)."
-msgstr[1] ""
-"Garanta que este valor tenha pelo menos %(limit_value)d caracteres (tem "
-"%(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Garanta que este valor tenha no máximo %(limit_value)d caractere (tem "
-"%(show_value)d)."
-msgstr[1] ""
-"Garanta que este valor tenha no máximo %(limit_value)d caracteres (tem "
-"%(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s deverá ser único para %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "e"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s com este %(field_label)s já existe."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "O valor %(value)r não é uma opção válida."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Este campo não pode ser nulo."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Este campo não pode ser vazio."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Campo do tipo: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Inteiro"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "O valor '%(value)s' deve ser um inteiro."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "O valor '%(value)s' deve ser True ou False."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (Pode ser True ou False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "String (até %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Inteiros separados por virgula"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"O valor '%(value)s' tem um formato de data inválido. Deve ser no formato "
-"YYYY-MM-DD."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"O valor '%(value)s' tem o formato correto (YYYY-MM-DD) mas é uma data "
-"inválida."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Data (sem hora)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"O valor '%(value)s' tem um formato inválido. Deve ser no formato YYYY-MM-DD "
-"HH:MM[:ss[.uuuuuu]][TZ]."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"O valor '%(value)s' tem o formato correto (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) mas é uma data/hora inválida."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Data (com hora)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "O valor '%(value)s' deve ser um número decimal."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Número décimal"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Endereço de e-mail"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Caminho do ficheiro"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "O valor '%(value)s' deve ser um número em vírgula flutuante."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Número em vírgula flutuante"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Inteiro grande (8 byte)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Endereço IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Endereço IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "O valor '%(value)s' deve ser None, True ou False."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (Pode ser True, False ou None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Inteiro positivo"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Pequeno número inteiro positivo"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (até %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Inteiro pequeno"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Texto"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"O valor '%(value)s' tem um formato inválido. Deve ser no formato HH:MM[:ss[."
-"uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"O valor '%(value)s' tem o formato correto (HH:MM[:ss[.uuuuuu]]) mas a hora é "
-"inválida."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Hora"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Dados binários simples"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Ficheiro"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Imagem"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "A instância de %(model)s com pk %(pk)r não existe."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Chave Estrangeira (tipo determinado pelo campo relacionado)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Relação de um-para-um"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Relação de muitos-para-muitos"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Este campo é obrigatório."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Introduza um número inteiro."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Introduza um número."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Garanta que não tem mais de %(max)s dígito no total."
-msgstr[1] "Garanta que não tem mais de %(max)s dígitos no total."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Garanta que não tem mais %(max)s casa decimal."
-msgstr[1] "Garanta que não tem mais %(max)s casas decimais."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] "Garanta que não tem mais de %(max)s dígito antes do ponto decimal."
-msgstr[1] "Garanta que não tem mais de %(max)s dígitos antes do ponto decimal."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Introduza uma data válida."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Introduza uma hora válida."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Introduza uma data/hora válida."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"Nenhum ficheiro foi submetido. Verifique o tipo de codificação do formulário."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Nenhum ficheiro submetido."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "O ficheiro submetido encontra-se vazio."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Garanta que o nome deste ficheiro tenha no máximo %(max)d caractere (tem "
-"%(length)d)."
-msgstr[1] ""
-"Garanta que o nome deste ficheiro tenha no máximo %(max)d caracteres (tem "
-"%(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Por favor, submeta um ficheiro ou remova a seleção da caixa, não ambos."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Introduza uma imagem válida. O ficheiro que introduziu ou não é uma imagem "
-"ou está corrompido."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Selecione uma opção válida. %(value)s não se encontra nas opções disponíveis."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Introduza uma lista de valores."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Campo oculto %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "Os dados do ManagementForm está omisso ou foi adulterado"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Por favor submeta %d ou menos formulários."
-msgstr[1] "Por favor submeta %d ou menos formulários."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Ordem"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Remover"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Por favor corrija os dados duplicados em %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Por favor corrija os dados duplicados em %(field)s, que deverá ser único."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Por favor corrija os dados duplicados em %(field_name)s que deverá ser único "
-"para o %(lookup)s em %(date_field)s.\""
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Por favor corrija os valores duplicados abaixo."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"A chave estrangeira em linha não coincide com a chave primária na instância "
-"pai."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Selecione uma opção válida. Esse valor não se encontra opções disponíveis."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" não é um valor válido para uma chave primária."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Mantenha pressionado o \"Control\", ou \"Command\" no Mac, para selecionar "
-"mais do que um."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s não pode ser interpretada de fuso horário %(current_timezone)s; "
-"pode ser ambígua ou não podem existir."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Atualmente"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Modificar"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Limpar"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Desconhecido"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Sim"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Não"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "sim,não,talvez"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "meia-noite"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "meio-dia"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Segunda-feira"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Terça-feira"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Quarta-feira"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Quinta-feira"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Sexta-feira"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Sábado"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Domingo"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Seg"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Ter"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Qua"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Qui"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Sex"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sáb"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Dom"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Janeiro"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Fevereiro"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Março"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Maio"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Junho"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Julho"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Agosto"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Setembro"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Outubro"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Novembro"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Dezembro"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "fev"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "abr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ago"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "set"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "out"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dez"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Fev."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Março"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Maio"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Jun."
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Jul."
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Ago."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Set."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Out."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Dez."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Janeiro"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Fevereiro"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Março"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Maio"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Junho"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Julho"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Agosto"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Setembro"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Outubro"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Novembro"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Dezembro"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Nem Pillow ou PIL podem ser importados: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "O módulo '_imaging' para o PIL não pode ser importados: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Este não é um endereço IPv6 válido."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "ou"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d ano"
-msgstr[1] "%d anos"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d mês"
-msgstr[1] "%d meses"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d semana"
-msgstr[1] "%d semanas"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d dia"
-msgstr[1] "%d dias"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d hora"
-msgstr[1] "%d horas"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minuto"
-msgstr[1] "%d minutos"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minutos"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Índices de diretório não são permitidas aqui."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" não existe"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Índice de %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Nenhum ano especificado"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Nenhum mês especificado"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Nenhum dia especificado"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Nenhuma semana especificado"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Nenhum %(verbose_name_plural)s disponível"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"%(verbose_name_plural)s futuros indisponíveis porque %(class_name)s."
-"allow_future é False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Data inválida '%(datestr)s' formato '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Nenhum %(verbose_name)s de acordo com a procura."
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Página não é 'última' ou não é possível converter para um inteiro."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Página inválida (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Lista vazia e '%(class_name)s.allow_empty' é False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/pt/__init__.py b/lib/python2.7/site-packages/django/conf/locale/pt/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/pt/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/pt/formats.py b/lib/python2.7/site-packages/django/conf/locale/pt/formats.py
deleted file mode 100644
index 9452428..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/pt/formats.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = r'j \d\e F \d\e Y'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = r'j \d\e F \d\e Y à\s H:i'
-YEAR_MONTH_FORMAT = r'F \d\e Y'
-MONTH_DAY_FORMAT = r'j \d\e F'
-SHORT_DATE_FORMAT = 'd/m/Y'
-SHORT_DATETIME_FORMAT = 'd/m/Y H:i'
-FIRST_DAY_OF_WEEK = 0 # Sunday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# Kept ISO formats as they are in first position
-DATE_INPUT_FORMATS = (
- '%Y-%m-%d', '%d/%m/%Y', '%d/%m/%y', # '2006-10-25', '25/10/2006', '25/10/06'
- # '%d de %b de %Y', '%d de %b, %Y', # '25 de Out de 2006', '25 Out, 2006'
- # '%d de %B de %Y', '%d de %B, %Y', # '25 de Outubro de 2006', '25 de Outubro, 2006'
-)
-DATETIME_INPUT_FORMATS = (
- '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
- '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
- '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
- '%Y-%m-%d', # '2006-10-25'
- '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59'
- '%d/%m/%Y %H:%M:%S.%f', # '25/10/2006 14:30:59.000200'
- '%d/%m/%Y %H:%M', # '25/10/2006 14:30'
- '%d/%m/%Y', # '25/10/2006'
- '%d/%m/%y %H:%M:%S', # '25/10/06 14:30:59'
- '%d/%m/%y %H:%M:%S.%f', # '25/10/06 14:30:59.000200'
- '%d/%m/%y %H:%M', # '25/10/06 14:30'
- '%d/%m/%y', # '25/10/06'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/pt_BR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/pt_BR/LC_MESSAGES/django.mo
deleted file mode 100644
index bd09997..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/pt_BR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/pt_BR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/pt_BR/LC_MESSAGES/django.po
deleted file mode 100644
index 15b8cd7..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/pt_BR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1340 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# dudanogueira <dudanogueira@gmail.com>, 2012
-# Elyézer Rezende <elyezermr@gmail.com>, 2013
-# Gladson Simplício Brito <gladsonbrito@gmail.com>, 2013
-# Guilherme Gondim <semente@taurinus.org>, 2011-2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sandro <sandrossv@hotmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-21 13:06+0000\n"
-"Last-Translator: Elyézer Rezende <elyezermr@gmail.com>\n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
-"django/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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Africânder"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Árabe"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azerbaijão"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Búlgaro"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Bielorrussa"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengali"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretão"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bósnio"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Catalão"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Tcheco"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Galês"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Dinamarquês"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Alemão"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Grego"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Inglês"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Inglês Britânico"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Espanhol"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Espanhol Argentino"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Espanhol Mexicano"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Espanhol Nicaraguense"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Espanhol Venuzuelano"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estoniano"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Basco"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persa"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finlandês"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Francês"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frísia"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irlandês"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galiciano"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebraico"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Croata"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Húngaro"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlíngua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonésio"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islandês"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italiano"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japonês"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgiano"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Cazaque"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Canarês"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Coreano"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Luxemburguês"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Lituano"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Letão"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Macedônio"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malaiala"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongol"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Birmanês"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Dano-norueguês"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepalês"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Neerlandês"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Novo Norueguês"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Osseto"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Punjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Polonês"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Português"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Português Brasileiro"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Romeno"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Russo"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Eslovaco"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Esloveno"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albanesa"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Sérvio"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Sérvio Latino"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Sueco"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Suaíli"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tâmil"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Tailandês"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turco"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatar"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurt"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ucraniano"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnamita"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Chinês Simplificado"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Chinês Tradicional"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Informe um valor válido."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Informe uma URL válida."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Digite um número inteiro válido."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Informe um endereço de email válido."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Insira um \"slug\" válido consistindo de letras, números, sublinhados (_) ou "
-"hífens."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Insira um endereço IPv4 válido."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Insira um endereço IPv6 válido."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Insira um endereço IPv4 ou IPv6 válido."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Insira apenas dígitos separados por vírgulas."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Certifique-se de que o valor é %(limit_value)s (ele é %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Certifique-se que este valor seja menor ou igual a %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Certifique-se que este valor seja maior ou igual a %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Certifique-se de que o valor tenha no mínimo %(limit_value)d caractere (ele "
-"possui %(show_value)d)."
-msgstr[1] ""
-"Certifique-se de que o valor tenha no mínimo %(limit_value)d caracteres (ele "
-"possui %(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Certifique-se de que o valor tenha no máximo %(limit_value)d caractere (ele "
-"possui %(show_value)d)."
-msgstr[1] ""
-"Certifique-se de que o valor tenha no máximo %(limit_value)d caracteres (ele "
-"possui %(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"O campo \"%(field_name)s\" deve ser único para %(lookup)s de \"%(date_field)s"
-"\"."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "e"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s com este %(field_label)s já existe."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "O valor %(value)r não é uma opção válida."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Este campo não pode ser nulo."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Este campo não pode estar vazio."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Campo do tipo: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Inteiro"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "O valor '%(value)s' deve ser um inteiro."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "O valor '%(value)s' deve ser True ou False."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Booleano (Verdadeiro ou Falso)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "String (até %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Inteiros separados por vírgula"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"O valor '%(value)s' tem um formato de data inválido. Ele deve estar no "
-"formato YYYY-MM-DD."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"O valor '%(value)s' tem o formato correto (YYYY-MM-DD), mas é uma data "
-"inválida."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Data (sem hora)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"O valor '%(value)s' tem um formato inválido. Ele deve estar no formato YYYY-"
-"MM-DD HH:MM[:ss[.uuuuuu]][TZ]."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"O valor '%(value)s' tem o formato correto (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]), mas é uma data/hora inválida."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Data (com hora)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "O valor '%(value)s' deve ser um número decimal."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Número decimal"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Endereço de e-mail"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Caminho do arquivo"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "O valor '%(value)s' deve ser um float."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Número de ponto flutuante"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Inteiro grande (8 byte)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Endereço IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Endereço IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "O valor '%(value)s' deve ser None, verdadeiro ou falso."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Booleano (Verdadeiro, Falso ou Nada)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Inteiro positivo"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Inteiro curto positivo"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (até %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Inteiro curto"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Texto"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"O valor '%(value)s' tem um formato inválido. Ele deve estar no formato HH:MM"
-"[:ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"O valor '%(value)s' tem o formato correto (HH:MM[:ss[.uuuuuu]]), mas é uma "
-"hora inválida."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Hora"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Dados binários crus"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Arquivo"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Imagem"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "A instância de %(model)s com pk %(pk)r não existe."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Chave Estrangeira (tipo determinado pelo campo relacionado)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Relacionamento um-para-um"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Relacionamento muitos-para-muitos"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Este campo é obrigatório."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Informe um número inteiro."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Informe um número."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Certifique-se de que não tenha mais de %(max)s dígito no total."
-msgstr[1] "Certifique-se de que não tenha mais de %(max)s dígitos no total."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Certifique-se de que não tenha mais de %(max)s casa decimal."
-msgstr[1] "Certifique-se de que não tenha mais de %(max)s casas decimais."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-"Certifique-se de que não tenha mais de %(max)s dígito antes do ponto decimal."
-msgstr[1] ""
-"Certifique-se de que não tenha mais de %(max)s dígitos antes do ponto "
-"decimal."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Informe uma data válida."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Informe uma hora válida."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Informe uma data/hora válida."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Nenhum arquivo enviado. Verifique o tipo de codificação do formulário."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Nenhum arquivo foi enviado."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "O arquivo enviado está vazio."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Certifique-se de que o arquivo tenha no máximo %(max)d caractere (ele possui "
-"%(length)d)."
-msgstr[1] ""
-"Certifique-se de que o arquivo tenha no máximo %(max)d caracteres (ele "
-"possui %(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Por favor, envie um arquivo ou marque o checkbox, mas não ambos."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Envie uma imagem válida. O arquivo enviado não é uma imagem ou está "
-"corrompido."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Faça uma escolha válida. %(value)s não é uma das escolhas disponíveis."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Informe uma lista de valores."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Campo oculto %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "Os dados do ManagementForm não foram encontrados ou foram adulterados"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Por favor envie %d ou menos formulário."
-msgstr[1] "Por favor envie %d ou menos formulários."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Ordem"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Remover"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Por favor, corrija o valor duplicado para %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Por favor, corrija o valor duplicado para %(field)s, o qual deve ser único."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Por favor, corrija o dado duplicado para %(field_name)s, o qual deve ser "
-"único para %(lookup)s em %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Por favor, corrija os valores duplicados abaixo."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"A chave estrangeira no inline não coincide com a chave primária na instância "
-"pai."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Faça uma escolha válida. Sua escolha não é uma das disponíveis."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" não é um valor válido para uma chave primária."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Mantenha o \"Control\", ou \"Command\" no Mac, pressionado para selecionar "
-"mais de uma opção."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-" %(datetime)s não pôde ser interpretado no fuso horário "
-"%(current_timezone)s; pode estar ambíguo ou pode não existir."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Atualmente"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Modificar"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Limpar"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Desconhecido"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Sim"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Não"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "sim,não,talvez"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "meia-noite"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "meio-dia"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Segunda-feira"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Terça-feira"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Quarta-feira"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Quinta-feira"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Sexta-feira"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Sábado"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Domingo"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Seg"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Ter"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Qua"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Qui"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Sex"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sab"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Dom"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Janeiro"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Fevereiro"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Março"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Maio"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Junho"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Julho"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Agosto"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Setembro"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Outubro"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Novembro"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Dezembro"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "fev"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "abr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ago"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "set"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "out"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dez"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Fev."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Março"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Maio"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Junho"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Julho"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Ago."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Set."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Out."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Dez."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Janeiro"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Fevereiro"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Março"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Abril"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Maio"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Junho"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Julho"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Agosto"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Setembro"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Outubro"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Novembro"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Dezembro"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Nem o Pillow ou o PIL pode ser importado: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "A '_imaging' módulo do PIL não pode ser importado: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Este não é um endereço IPv6 válido."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr " %(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "ou"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d ano"
-msgstr[1] "%d anos"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d mês"
-msgstr[1] "%d meses"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d semana"
-msgstr[1] "%d semanas"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d dia"
-msgstr[1] "%d dias"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d hora"
-msgstr[1] "%d horas"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minuto"
-msgstr[1] "%d minutos"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minutos"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Índices de diretório não são permitidos aqui."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" não existe"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Índice de %(directory)s "
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Ano não especificado"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Mês não especificado"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Dia não especificado"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Semana não especificada"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Nenhum(a) %(verbose_name_plural)s disponível"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"%(verbose_name_plural)s futuros não disponíveis pois %(class_name)s."
-"allow_future é False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "' %(datestr)s ' string de data inválida dado o formato ' %(format)s '"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "%(verbose_name)s não encontrado de acordo com a consulta"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "A página não é a 'última', nem pode ser convertido para um int."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Página inválida (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Lista vazia e '%(class_name)s.allow_empty' é False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/pt_BR/__init__.py b/lib/python2.7/site-packages/django/conf/locale/pt_BR/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/pt_BR/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/pt_BR/formats.py b/lib/python2.7/site-packages/django/conf/locale/pt_BR/formats.py
deleted file mode 100644
index a5ec333..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/pt_BR/formats.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = r'j \d\e F \d\e Y'
-TIME_FORMAT = 'H:i'
-DATETIME_FORMAT = r'j \d\e F \d\e Y à\s H:i'
-YEAR_MONTH_FORMAT = r'F \d\e Y'
-MONTH_DAY_FORMAT = r'j \d\e F'
-SHORT_DATE_FORMAT = 'd/m/Y'
-SHORT_DATETIME_FORMAT = 'd/m/Y H:i'
-FIRST_DAY_OF_WEEK = 0 # Sunday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06'
- # '%d de %b de %Y', '%d de %b, %Y', # '25 de Out de 2006', '25 Out, 2006'
- # '%d de %B de %Y', '%d de %B, %Y', # '25 de Outubro de 2006', '25 de Outubro, 2006'
-)
-DATETIME_INPUT_FORMATS = (
- '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59'
- '%d/%m/%Y %H:%M:%S.%f', # '25/10/2006 14:30:59.000200'
- '%d/%m/%Y %H:%M', # '25/10/2006 14:30'
- '%d/%m/%Y', # '25/10/2006'
- '%d/%m/%y %H:%M:%S', # '25/10/06 14:30:59'
- '%d/%m/%y %H:%M:%S.%f', # '25/10/06 14:30:59.000200'
- '%d/%m/%y %H:%M', # '25/10/06 14:30'
- '%d/%m/%y', # '25/10/06'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/ro/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/ro/LC_MESSAGES/django.mo
deleted file mode 100644
index a4e5a28..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ro/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/ro/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/ro/LC_MESSAGES/django.po
deleted file mode 100644
index ff98434..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ro/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1331 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# mihneasim <contact@mesimian.com>, 2011
-# Daniel Ursache-Dogariu <contact@danniel.net>, 2011
-# Denis Darii <sinednx@gmail.com>, 2011
-# Ionel Cristian Mărieș <ionel.mc@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/"
-"ro/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1));\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arabă"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azeră"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgară"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengaleză"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosniacă"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Catalană"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Cehă"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Galeză"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Daneză"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Germană"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Greacă"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Engleză"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Engleză britanică"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Spaniolă"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Spaniolă Argentiniană"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Spaniolă Mexicană"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Spaniolă Nicaragua"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estonă"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Bască"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persană"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finlandeză"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Franceză"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frizian"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irlandeză"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galiciană"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Ebraică"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Croată"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Ungară"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indoneză"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islandeză"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italiană"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japoneză"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgiană"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmeră"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Limba kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Koreană"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Lituaniană"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Letonă"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Macedoneană"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongolă"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norvegiană Bokmal"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Olandeză"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norvegiană Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Punjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Poloneză"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugheză"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Portugheză braziliană"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Română"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Rusă"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slovacă"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slovenă"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albaneză"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Sârbă"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Sârbă latină"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Suedeză"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Limba tamila"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Limba telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Tailandeză"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turcă"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ucraineană"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnameză"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Chineză simplificată"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Chineză tradițională"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Introduceți o valoare validă."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Introduceți un URL valid."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Introduceți un 'slug' valabil, compus numai din litere, numere, underscore "
-"sau cratime."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Introduceţi o adresă IPv4 validă."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Intoduceți o adresă IPv6 validă."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Introduceți o adresă IPv4 sau IPv6 validă."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Introduceţi numai numere separate de virgule."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Asiguraţi-vă că această valoare este %(limit_value)s (este %(show_value)s )."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-"Asiguraţi-vă că această valoare este mai mică sau egală cu %(limit_value)s ."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-"Asiguraţi-vă că această valoare este mai mare sau egală cu %(limit_value)s ."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s trebuie să fie unic pentru %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "și"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s cu %(field_label)s deja există."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Câmpul nu poate fi gol."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Acest câmp nu poate fi gol."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Câmp de tip: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Întreg"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (adevărat sau fals)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Şir de caractere (cel mult %(max_length)s caractere)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Numere întregi separate de virgule"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Dată (fară oră)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Dată (cu oră)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Număr zecimal"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Adresă e-mail"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Calea fisierului"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Număr cu virgulă"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Întreg mare (8 octeți)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Adresă IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Adresă IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolean (adevărat, fals sau niciuna)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Întreg pozitiv"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Întreg pozitiv mic"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (până la %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Întreg mic"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Text"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Timp"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Fișier"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Imagine"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Foreign Key (tipul determinat de către câmpul relativ)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Relaţie unul-la-unul"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Relație multe-la-multe"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Acest câmp este obligatoriu."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Introduceţi un număr întreg."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Introduceţi un număr."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Introduceți o dată validă."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Introduceți o oră validă."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Introduceți o dată/oră validă."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Nici un fișier nu a fost trimis. Verificați tipul fișierului."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Nici un fișier nu a fost trimis."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Fișierul încărcat este gol."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Fie indicați un fişier, fie bifaţi caseta de selectare, nu ambele."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Încărcaţi o imagine validă. Fişierul încărcat nu era o imagine sau era o "
-"imagine coruptă."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Selectați o opțiune validă. %(value)s nu face parte din opțiunile "
-"disponibile."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Introduceți o listă de valori."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Ordine"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Șterge"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Corectaţi datele duplicate pentru %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Corectaţi datele duplicate pentru %(field)s , ce trebuie să fie unic."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Corectaţi datele duplicate pentru %(field_name)s , care trebuie să fie unice "
-"pentru %(lookup)s în %(date_field)s ."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Corectaţi valorile duplicate de mai jos."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Foreign key-ul inline nu se potrivește cu cheia primară a istanței mamă."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Selectați o opțiune validă. Această opțiune nu face parte din opțiunile "
-"disponibile."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-" Ţine apăsat \"Control\", sau \"Command\" pe un Mac, pentru selecție "
-"multiplă."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s nu poate fi interpetat in fusul orar %(current_timezone)s; este "
-"ambiguu sau nu există."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "În prezent"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Schimbă"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Șterge"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Necunoscut"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Da"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Nu"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "da,nu,poate"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d bytes"
-msgstr[2] "%(size)d bytes"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KO"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MO"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GO"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TO"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PO"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "miezul nopții"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "amiază"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Luni"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Marți"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Miercuri"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Joi"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Vineri"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Sâmbătă"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Duminică"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Lun"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Mar"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Mie"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Joi"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Vin"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sâm"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Dum"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Ianuarie"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Februarie"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Martie"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Aprilie"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Mai"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Iunie"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Iulie"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "August"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Septembrie"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Octombrie"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Noiembrie"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Decembrie"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ian"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mai"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "iun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "iul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "oct"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "noi"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Ian."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Martie"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Aprilie"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Mai"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Iunie"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Iulie"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Aug."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Oct."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Noie."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Dec."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Ianuarie"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Februarie"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Martie"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Aprilie"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Mai"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Iunie"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Iulie"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "August"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Septembrie"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Octombrie"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Noiembrie"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Decembrie"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "sau"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Aici nu sunt permise indexuri la directoare"
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" nu există"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Index pentru %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Niciun an specificat"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Nicio lună specificată"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Nicio zi specificată"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Nicio săptămîna specificată"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s nu e disponibil"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Viitorul %(verbose_name_plural)s nu e disponibil deoarece %(class_name)s ."
-"allow_future este Fals."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Dată incorectă '%(datestr)s' considerând formatul '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Niciun rezultat pentru %(verbose_name)s care se potrivesc interogării"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"Pagina nu este \"ultima\" și nici nu poate fi convertită într-un întreg."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Listă goală și '%(class_name)s.allow_empty' este Fals."
diff --git a/lib/python2.7/site-packages/django/conf/locale/ro/__init__.py b/lib/python2.7/site-packages/django/conf/locale/ro/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ro/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/ro/formats.py b/lib/python2.7/site-packages/django/conf/locale/ro/formats.py
deleted file mode 100644
index 5435837..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ro/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j F Y'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = 'j F Y, H:i:s'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'd.m.Y'
-SHORT_DATETIME_FORMAT = 'd.m.Y, H:i:s'
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/ru/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/ru/LC_MESSAGES/django.mo
deleted file mode 100644
index b55bc94..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ru/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/ru/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/ru/LC_MESSAGES/django.po
deleted file mode 100644
index 70f222b..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ru/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1368 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Denis Darii <sinednx@gmail.com>, 2011
-# Dimmus <dmitri.chudinov@gmail.com>, 2011
-# eigrad <andrew@ei-grad.ru>, 2012
-# Eugene MechanisM <contact@mechanism.name>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Mikhail Zholobov <legal90@gmail.com>, 2013
-# Алексей Борискин <sun.void@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-10-27 16:12+0000\n"
-"Last-Translator: Алексей Борискин <sun.void@gmail.com>\n"
-"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/"
-"ru/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Бурский"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Арабский"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Азербайджанский"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Болгарский"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Белоруский"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Бенгальский"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Бретонский"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Боснийский"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Каталанский"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Чешский"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Уэльский"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Датский"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Немецкий"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Греческий"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Английский"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Британский английский"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Эсперанто"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Испанский"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Аргентинский испанский"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Мексиканский испанский"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Никарагуанский испанский"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Венесуэльский Испанский"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Эстонский"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Баскский"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Персидский"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Финский"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Французский"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Фризский"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Ирландский"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Галисийский"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Иврит"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Хинди"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Хорватский"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Венгерский"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Интерлингва"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Индонезийский"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Исландский"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Итальянский"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Японский"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Грузинский"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Казахский"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Кхмерский"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Каннада"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Корейский"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Люксембургский"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Литовский"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Латвийский"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Македонский"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Малаялам"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Монгольский"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Бирманский"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Норвежский (Букмол)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Непальский"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Голландский"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Норвежский (Нюнорск)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Осетинский"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Панджаби"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Польский"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Португальский"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Бразильский португальский"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Румынский"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Русский"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Словацкий"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Словенский"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Албанский"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Сербский"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Сербский (латиница)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Шведский"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Суахили"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Тамильский"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Телугу"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Тайский"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Турецкий"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Татарский"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Удмуртский"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Украинский"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Урду"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Вьетнамский"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Упрощенный китайский"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Традиционный китайский"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Введите правильное значение."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Введите правильный URL."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Введите правильное целое число."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Введите правильный адрес электронной почты."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Значение должно состоять только из букв, цифр, знаков подчеркивания или "
-"дефиса."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Введите правильный IPv4 адрес."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Введите действительный IPv6 адрес."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Введите действительный IPv4 или IPv6 адрес."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Введите цифры, разделенные запятыми."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Убедитесь, что это значение — %(limit_value)s (сейчас оно — %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Убедитесь, что это значение меньше либо равно %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Убедитесь, что это значение больше либо равно %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Убедитесь, что это значение содержит не менее %(limit_value)d символ (сейчас "
-"%(show_value)d)."
-msgstr[1] ""
-"Убедитесь, что это значение содержит не менее %(limit_value)d символов "
-"(сейчас %(show_value)d)."
-msgstr[2] ""
-"Убедитесь, что это значение содержит не менее %(limit_value)d символов "
-"(сейчас %(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Убедитесь, что это значение содержит не более %(limit_value)d символ (сейчас "
-"%(show_value)d)."
-msgstr[1] ""
-"Убедитесь, что это значение содержит не более %(limit_value)d символов "
-"(сейчас %(show_value)d)."
-msgstr[2] ""
-"Убедитесь, что это значение содержит не более %(limit_value)d символов "
-"(сейчас %(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"Значение в поле %(field_name)s должно быть уникальным для %(lookup)s в поле "
-"%(date_field)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "и"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s с таким %(field_label)s уже существует."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "%(value)r не является одним из допустимых вариантов."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Это поле не может иметь значение NULL."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Это поле не может быть пустым."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Поле типа %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Целое"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "Значение '%(value)s' должно быть целым числом."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "Значение '%(value)s' должно быть True или False."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Логическое (True или False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Строка (до %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Целые, разделенные запятыми"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"Значение '%(value)s' имеет неверный формат даты. Оно должно быть в формате "
-"YYYY-MM-DD."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"Значение '%(value)s' имеет корректный формат (YYYY-MM-DD), но это "
-"недействительная дата."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Дата (без указания времени)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"Значение '%(value)s' имеет неверный формат. Оно должно быть в формате YYYY-"
-"MM-DD HH:MM[:ss[.uuuuuu]][TZ]."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"Значение '%(value)s' имеет корректный формат (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]), но это недействительные дата/время."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Дата (с указанием времени)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "Значение '%(value)s' должно быть числом с фиксированной запятой."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Число с фиксированной запятой"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Адрес электронной почты"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Путь к файлу"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "Значение '%(value)s' должно быть числом с плавающей запятой."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Число с плавающей запятой"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Длинное целое (8 байт)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 адрес"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP-адрес"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "Значение '%(value)s' должно быть None, True или False."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Логическое (True, False или None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Положительное целое число"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Положительное малое целое число"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Слаг (до %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Малое целое число"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Текст"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"Значение '%(value)s' имеет неверный формат. Оно должно быть в формате HH:MM[:"
-"ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"Значение '%(value)s' имеет корректный формат (HH:MM[:ss[.uuuuuu]]), но это "
-"недействительное время."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Время"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Необработанные двоичные данные"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Файл"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Изображение"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "Объект модели %(model)s с первичным ключом %(pk)r не существует."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Внешний Ключ (тип определен по связанному полю)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Связь \"один к одному\""
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Связь \"многие ко многим\""
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Обязательное поле."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Введите целое число."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Введите число."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Убедитесь, что вы ввели не более %(max)s цифры."
-msgstr[1] "Убедитесь, что вы ввели не более %(max)s цифр."
-msgstr[2] "Убедитесь, что вы ввели не более %(max)s цифр."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Убедитесь, что вы ввели не более %(max)s цифры после запятой."
-msgstr[1] "Убедитесь, что вы ввели не более %(max)s цифр после запятой."
-msgstr[2] "Убедитесь, что вы ввели не более %(max)s цифр после запятой."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] "Убедитесь, что вы ввели не более %(max)s цифры перед запятой."
-msgstr[1] "Убедитесь, что вы ввели не более %(max)s цифр перед запятой."
-msgstr[2] "Убедитесь, что вы ввели не более %(max)s цифр перед запятой."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Введите правильную дату."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Введите правильное время."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Введите правильную дату и время."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Ни одного файла не было отправлено. Проверьте тип кодировки формы."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Ни одного файла не было отправлено."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Отправленный файл пуст."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Убедитесь, что это имя файла содержит не более %(max)d символ (сейчас "
-"%(length)d)."
-msgstr[1] ""
-"Убедитесь, что это имя файла содержит не более %(max)d символов (сейчас "
-"%(length)d)."
-msgstr[2] ""
-"Убедитесь, что это имя файла содержит не более %(max)d символов (сейчас "
-"%(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Пожалуйста, загрузите файл или поставьте флажок \"Очистить\", но не "
-"совершайте оба действия одновременно."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Загрузите правильное изображение. Файл, который вы загрузили, поврежден или "
-"не является изображением."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Выберите корректный вариант. %(value)s нет среди допустимых значений."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Введите список значений."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Скрытое поле %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "Данные управляющей формы отсутствуют или были повреждены"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Пожалуйста, заполните не более %d формы."
-msgstr[1] "Пожалуйста, заполните не более %d форм."
-msgstr[2] "Пожалуйста, заполните не более %d форм."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Порядок"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Удалить"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Пожалуйста, измените повторяющееся значение в поле \"%(field)s\"."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Пожалуйста, измените значение в поле %(field)s, оно должно быть уникальным."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Пожалуйста, измените значение в поле %(field_name)s, оно должно быть "
-"уникальным для %(lookup)s в поле %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Пожалуйста, измените повторяющиеся значения ниже."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Внешний ключ не совпадает с первичным ключом родителя."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Выберите корректный вариант. Вашего варианта нет среди допустимых значений."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" не является верным значением для первичного ключа."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Удерживайте \"Control\" (или \"Command\" на Mac), для выбора нескольких "
-"значений."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s не может быть интерпретирована в часовом поясе "
-"%(current_timezone)s; дата может быть неоднозначной или оказаться "
-"несуществующей."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "На данный момент"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Изменить"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Очистить"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Неизвестно"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Да"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Нет"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "да,нет,может быть"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d байт"
-msgstr[1] "%(size)d байта"
-msgstr[2] "%(size)d байт"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s КБ"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s МБ"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s ГБ"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s ТБ"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s ПБ"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "п.п."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "д.п."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "ПП"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "ДП"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "полночь"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "полдень"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Понедельник"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Вторник"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Среда"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Четверг"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Пятница"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Суббота"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Воскресенье"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Пнд"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Втр"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Срд"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Чтв"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Птн"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Сбт"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Вск"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Январь"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Февраль"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Март"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Апрель"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Май"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Июнь"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Июль"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Август"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Сентябрь"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Октябрь"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Ноябрь"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Декабрь"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "янв"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "фев"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "мар"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "апр"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "май"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "июн"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "июл"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "авг"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "сен"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "окт"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "ноя"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "дек"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Янв."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Фев."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Март"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Апрель"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Май"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Июнь"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Июль"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Авг."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Сен."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Окт."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Ноя."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Дек."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "января"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "февраля"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "марта"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "апреля"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "мая"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "июня"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "июля"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "августа"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "сентября"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "октября"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "ноября"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "декабря"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Ни Pillow ни PIL не могут быть импортированы: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "Модуль '_imaging' для PIL не может быть импотирован: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Значение не является корректным адресом IPv6."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "или"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d год"
-msgstr[1] "%d лет"
-msgstr[2] "%d лет"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d месяц"
-msgstr[1] "%d месяцев"
-msgstr[2] "%d месяцев"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d неделя"
-msgstr[1] "%d недель"
-msgstr[2] "%d недель"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d день"
-msgstr[1] "%d дней"
-msgstr[2] "%d дней"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d час"
-msgstr[1] "%d часов"
-msgstr[2] "%d часов"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d минута"
-msgstr[1] "%d минут"
-msgstr[2] "%d минут"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 минут"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Просмотр списка файлов директории здесь не разрешен."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" не существует"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Список файлов директории %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Не указан год"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Не указан месяц"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Не указан день"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Не указана неделя"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s не доступен"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Будущие %(verbose_name_plural)s недоступны, потому что %(class_name)s."
-"allow_future выставлен в значение \"Ложь\"."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-"Не удалось распознать строку с датой '%(datestr)s', используя формат "
-"'%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Не найден ни один %(verbose_name)s, соответствующий запросу"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"Номер страницы не содержит особое значение 'last', и его не удалось "
-"преобразовать к целому числу."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Неправильная страница (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
-"Список пуст, но '%(class_name)s.allow_empty' выставлено в значение \"Ложь\", "
-"что запрещает показывать пустые списки."
diff --git a/lib/python2.7/site-packages/django/conf/locale/ru/__init__.py b/lib/python2.7/site-packages/django/conf/locale/ru/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ru/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/ru/formats.py b/lib/python2.7/site-packages/django/conf/locale/ru/formats.py
deleted file mode 100644
index 413ce27..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ru/formats.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j E Y г.'
-TIME_FORMAT = 'G:i:s'
-DATETIME_FORMAT = 'j E Y г. G:i:s'
-YEAR_MONTH_FORMAT = 'F Y г.'
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'd.m.Y'
-SHORT_DATETIME_FORMAT = 'd.m.Y H:i'
-FIRST_DAY_OF_WEEK = 1 # Monday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d.%m.%Y', # '25.10.2006'
- '%d.%m.%y', # '25.10.06'
-)
-DATETIME_INPUT_FORMATS = (
- '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
- '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
- '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
- '%d.%m.%Y', # '25.10.2006'
- '%d.%m.%y %H:%M:%S', # '25.10.06 14:30:59'
- '%d.%m.%y %H:%M:%S.%f', # '25.10.06 14:30:59.000200'
- '%d.%m.%y %H:%M', # '25.10.06 14:30'
- '%d.%m.%y', # '25.10.06'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '\xa0' # non-breaking space
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/sk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/sk/LC_MESSAGES/django.mo
deleted file mode 100644
index 12f5bf7..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/sk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/sk/LC_MESSAGES/django.po
deleted file mode 100644
index c4e6299..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1356 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Juraj Bubniak <translations@jbub.eu>, 2012-2013
-# Marian Andre <marian@andre.sk>, 2013
-# Martin Kosír <martin@martinkosir.net>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-10-30 15:47+0000\n"
-"Last-Translator: Juraj Bubniak <translations@jbub.eu>\n"
-"Language-Team: Slovak (http://www.transifex.com/projects/p/django/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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "afrikánsky"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "arabský"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "azerbajdžanský"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "bulharský"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "bieloruský"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "bengálsky"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "bretónsky"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "bosniansky"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "katalánsky"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "český"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "waleský"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "dánsky"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "nemecký"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "grécky"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "anglický"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "britský"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "esperantský"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "španielsky"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "argentínska španielčina"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "mexická španielčina"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "nikaragujská španielčina"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "venezuelská španielčina"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "estónsky"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "baskický"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "perzský"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "fínsky"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "francúzsky"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "frízsky"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "írsky"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "galícijský"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "hebrejský"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "hindský"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "chorvátsky"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "maďarský"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "interlinguánsky"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "indonézsky"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "islandský"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "taliansky"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "japonský"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "gruzínsky"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "kazašský"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "kmérsky"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "kanadský"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "kórejský"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "luxemburský"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "litovský"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "lotyšský"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "macedónsky"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "malajalámsky"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "mongolský"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "barmsky"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "nórsky (Bokmal)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "nepálsky"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "holandský"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "nórsky (Nynorsk)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "osetsky"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "pandžábsky"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "poľský"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "portugalský"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "portugalský (Brazília)"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "rumunský"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "ruský"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "slovenský"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "slovinský"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "albánsky"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "srbský"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "srbský (Latin)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "švédsky"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "svahilský"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "tamilský"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "telúgsky"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "thajský"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "turecký"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "tatársky"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "udmurtský"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ukrajinský"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "urdský"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "vietnamský"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "čínsky (zjednodušene)"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "čínsky (tradične)"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Zadajte platnú hodnotu."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Zadajte platnú URL adresu."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Zadajte platné celé číslo."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Zadajte platnú e-mailovú adresu."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Zadajte platný 'slug' pozostávajúci z písmen, čísel, podčiarkovníkov alebo "
-"pomlčiek."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Zadajte platnú IPv4 adresu."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Zadajte platnú IPv6 adresu."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Zadajte platnú IPv4 alebo IPv6 adresu."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Zadajte len číslice oddelené čiarkami."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Uistite sa, že táto hodnota je %(limit_value)s (je to %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Uistite sa, že táto hodnota je menšia alebo rovná %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Uistite sa, že hodnota je väčšia alebo rovná %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Uistite sa, že zadaná hodnota má najmenej %(limit_value)d znak (má "
-"%(show_value)d)."
-msgstr[1] ""
-"Uistite sa, že zadaná hodnota má najmenej %(limit_value)d znaky (má "
-"%(show_value)d)."
-msgstr[2] ""
-"Uistite sa, že zadaná hodnota má najmenej %(limit_value)d znakov (má "
-"%(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Uistite sa, že táto hodnota má najviac %(limit_value)d znak (má "
-"%(show_value)d)."
-msgstr[1] ""
-"Uistite sa, že táto hodnota má najviac %(limit_value)d znaky (má "
-"%(show_value)d)."
-msgstr[2] ""
-"Uistite sa, že táto hodnota má najviac %(limit_value)d znakov (má "
-"%(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s musí byť unikátne pre %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "a"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s s týmto %(field_label)s už existuje."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "Hodnota %(value)r nie je platná možnosť."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Toto pole nemôže byť prázdne."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Toto pole nemôže byť prázdne."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Pole typu: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Celé číslo"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "'%(value)s' musí byť celé číslo."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "'%(value)s' value musí byť True alebo False."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Logická hodnota (buď True alebo False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Reťazec (až do %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Celé čísla oddelené čiarkou"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr "'%(value)s' má neplatný tvar dátumu. Musí byť v tvare YYYY-MM-DD."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"'%(value)s' je v správnom tvare (YYYY-MM-DD), ale je to neplatný dátum."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Dátum (bez času)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"'%(value)s' má neplatný tvar. Musí byť v tvare YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ]."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"'%(value)s' je v správnom tvare (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]), ale je "
-"to neplatný dátum/čas."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Dátum (a čas)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "'%(value)s' musí byť desatinné číslo."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Desatinné číslo"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-mail adresa"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Cesta k súboru"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "'%(value)s' musí byť desatinné číslo."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Číslo s plávajúcou desatinnou čiarkou"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Veľké celé číslo (8 bajtov)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 adresa"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP adresa"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "'%(value)s' musí byť buď None, True alebo False."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Logická hodnota (buď True, False alebo None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Kladné celé číslo"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Malé kladné celé číslo"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Identifikátor (najviac %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Malé celé číslo"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Text"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr "'%(value)s' má neplatný tvar. Musí byť v tvare HH:MM[:ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"'%(value)s' je v správnom tvare (HH:MM[:ss[.uuuuuu]]), ale je to neplatný "
-"čas."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Čas"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Binárne dáta"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Súbor"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Obrázok"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "%(model)s inštancia s primárnym kľúčom %(pk)r neexistuje."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Cudzí kľúč (typ určuje pole v relácii)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Typ relácie: jedna k jednej"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Typ relácie: M ku N"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Toto pole je povinné."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Zadajte celé číslo."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Zadajte číslo."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Uistite sa, že nie je zadaných celkovo viac ako %(max)s číslica."
-msgstr[1] "Uistite sa, že nie je zadaných celkovo viac ako %(max)s číslice."
-msgstr[2] "Uistite sa, že nie je zadaných celkovo viac ako %(max)s číslic."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Uistite sa, že nie je zadané viac ako %(max)s desatinné miesto."
-msgstr[1] "Uistite sa, že nie sú zadané viac ako %(max)s desatinné miesta."
-msgstr[2] "Uistite sa, že nie je zadaných viac ako %(max)s desatinných miest."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-"Uistite sa, že nie je zadaných viac ako %(max)s číslica pred desatinnou "
-"čiarkou."
-msgstr[1] ""
-"Uistite sa, že nie sú zadané viac ako %(max)s číslice pred desatinnou "
-"čiarkou."
-msgstr[2] ""
-"Uistite sa, že nie je zadaných viac ako %(max)s číslic pred desatinnou "
-"čiarkou."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Zadajte platný dátum."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Zadajte platný čas."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Zadajte platný dátum a čas."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Súbor nebol odoslaný. Skontrolujte typ kódovania vo formulári."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Žiaden súbor nebol odoslaný."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Odoslaný súbor je prázdny."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Uistite sa, že názov súboru má najviac %(max)d znak (má %(length)d)."
-msgstr[1] ""
-"Uistite sa, že názov súboru má najviac %(max)d znaky (má %(length)d)."
-msgstr[2] ""
-"Uistite sa, že názov súboru má najviac %(max)d znakov (má %(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Odošlite prosím súbor alebo zaškrtnite políčko pre vymazanie vstupného poľa, "
-"nie oboje."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Nahrajte platný obrázok. Súbor, ktorý ste odoslali nebol obrázok alebo bol "
-"poškodený."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Vyberte platnú voľbu. %(value)s nepatrí medzi dostupné možnosti."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Vložte zoznam hodnôt."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Skryté pole %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "Dáta ManagementForm chýbajú alebo boli sfalšované"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Prosím odošlite %d alebo menej formulárov."
-msgstr[1] "Prosím odošlite %d alebo menej formulárov."
-msgstr[2] "Prosím odošlite %d alebo menej formulárov."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Poradie"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Odstrániť"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Prosím, opravte duplicitné dáta pre %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Dáta pre %(field)s musia byť unikátne, prosím, opravte duplikáty."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Dáta pre %(field_name)s musia byť unikátne pre %(lookup)s v %(date_field)s, "
-"prosím, opravte duplikáty."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Prosím, opravte nižšie uvedené duplicitné hodnoty. "
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Vnorený cudzí kľúč sa nezhoduje s nadradenou inštanciou primárnho kľúča."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Vyberte platnú možnosť. Vybraná položka nepatrí medzi dostupné možnosti."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" nie je platná hodnota pre primárny kľúč."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Ak chcete vybrať viac ako jednu položku, podržte \"Control\", alebo \"Command"
-"\" na počítači Mac."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"Hodnota %(datetime)s v časovej zóne %(current_timezone)s sa nedá "
-"interpretovať; môže byť nejednoznačná alebo nemusí existovať."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Súčasne"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Zmeniť"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Vymazať"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Neznámy"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Áno"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Nie"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "áno,nie,možno"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bajt"
-msgstr[1] "%(size)d bajty"
-msgstr[2] "%(size)d bajtov"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "popoludní"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "dopoludnia"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "popoludní"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "dopoludnia"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "polnoc"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "poludnie"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "pondelok"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "utorok"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "streda"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "štvrtok"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "piatok"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "sobota"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "nedeľa"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "po"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "ut"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "st"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "št"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "pi"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "so"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "ne"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "január"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "február"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "marec"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "apríl"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "máj"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "jún"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "júl"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "august"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "október"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "december"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "máj"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jún"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "júl"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "mar."
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "apr."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "máj"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "jún"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "júl"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "aug."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "sep."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "okt."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "dec."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "január"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "február"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "marec"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "apríl"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "máj"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "jún"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "júl"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "august"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "október"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "december"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "PIL ani Pillow sa nedá naimportovať: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "Modul '_imaging' pre PIL sa nedá naimportovať: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Toto nieje platná IPv6 adresa."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "alebo"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d rok"
-msgstr[1] "%d roky"
-msgstr[2] "%d rokov"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d mesiac"
-msgstr[1] "%d mesiace"
-msgstr[2] "%d mesiacov"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d týždeň"
-msgstr[1] "%d týždne"
-msgstr[2] "%d týždňov"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d deň"
-msgstr[1] "%d dni"
-msgstr[2] "%d dní"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d hodina"
-msgstr[1] "%d hodiny"
-msgstr[2] "%d hodín"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minúta"
-msgstr[1] "%d minúty"
-msgstr[2] "%d minút"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minút"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Výpis adresárov tu nieje povolený."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" neexistuje"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Výpis %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Nešpecifikovaný rok"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Nešpecifikovaný mesiac"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Nešpecifikovaný deň"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Nešpecifikovaný týždeň"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s nie sú dostupné"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Budúce %(verbose_name_plural)s nie sú dostupné pretože %(class_name)s."
-"allow_future má hodnotu False. "
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Neplatný dátumový reťazec '%(datestr)s' pre formát '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr ""
-"Nebol nájdený žiadny %(verbose_name)s zodpovedajúci databázovému dopytu"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"Stránka nemá hodnotu 'last' a taktiež nie je možné prekonvertovať hodnotu na "
-"celé číslo."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Nesprávna stránka (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
-"Zoznam je prázdny a zároveň má '%(class_name)s.allow_empty' hodnotu False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/sk/__init__.py b/lib/python2.7/site-packages/django/conf/locale/sk/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sk/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/sk/formats.py b/lib/python2.7/site-packages/django/conf/locale/sk/formats.py
deleted file mode 100644
index 6ff8ca7..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sk/formats.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j. F Y'
-TIME_FORMAT = 'G:i:s'
-DATETIME_FORMAT = 'j. F Y G:i:s'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j. F'
-SHORT_DATE_FORMAT = 'd.m.Y'
-SHORT_DATETIME_FORMAT = 'd.m.Y G:i:s'
-FIRST_DAY_OF_WEEK = 1 # Monday
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06'
- '%y-%m-%d', # '06-10-25'
- # '%d. %B %Y', '%d. %b. %Y', # '25. October 2006', '25. Oct. 2006'
-)
-DATETIME_INPUT_FORMATS = (
- '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
- '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
- '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
- '%d.%m.%Y', # '25.10.2006'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '\xa0' # non-breaking space
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/sl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/sl/LC_MESSAGES/django.mo
deleted file mode 100644
index dc036e0..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/sl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/sl/LC_MESSAGES/django.po
deleted file mode 100644
index 8500caf..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1378 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# iElectric <domen@dev.si>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Jure Cuhalev <gandalf@owca.info>, 2012-2013
-# zejn <zejn@kiberpipa.org>, 2013
-# zejn <zejn@kiberpipa.org>, 2011-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-10-23 14:27+0000\n"
-"Last-Translator: zejn <zejn@kiberpipa.org>\n"
-"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/"
-"language/sl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikanščina"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arabščina"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azerbajdžanščina"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bolgarščina"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Belorusko"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengalščina"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretonščina"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosanščina"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Katalonščina"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Češčina"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Valežanski jezik"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Danščina"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Nemščina"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Grščina"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Angleščina"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Britanska Angleščina"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Španščina"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Argentinska španščina"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Mehiška španščina"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Nikaragvijska španščina"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Španščina (Venezuela)"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estonščina"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Baskovščina"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Perzijščina"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finščina"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Francoščina"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frizijščina"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irščina"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galičanski jezik"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebrejski jezik"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindujščina"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Hrvaščina"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Madžarščina"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonezijski"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islandski jezik"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italijanščina"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japonščina"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Gruzijščina"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazaščina"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Kmerščina"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kanareščina"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Korejščina"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Luksemburščina"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Litvanščina"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Latvijščina"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Makedonščina"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malajalščina"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongolščina"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Burmanski jezik"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norveščina Bokmal"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepalščina"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Nizozemščina"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norveščina Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Osetski jezik"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Pandžabščina"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Poljščina"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugalščina"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Brazilska portugalščina"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Romunščina"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Ruščina"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slovaščina"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slovenščina"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albanščina"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Srbščina"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Srbščina v latinici"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Švedščina"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Svahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamilščina"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Teluščina"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Tajski jezik"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turščina"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatarščina"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurski jezik"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukrajinščina"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Jezik Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnamščina"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Poenostavljena kitajščina"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Tradicionalna kitajščina"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Vnesite veljavno vrednost."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Vnesite veljaven URL naslov."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Vnesite veljavno število."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Vnesite veljaven e-poštni naslov."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Vnesite veljavno URL okrajšavo. Vrednost sme vsebovati le črke, števila, "
-"podčrtaje ali pomišljaje."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Vnesite veljaven IPv4 naslov."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Vnesite veljaven IPv6 naslov."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Vnesite veljaven IPv4 ali IPv6 naslov."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Vnesite samo števila, ločena z vejicami."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Poskrbite, da bo ta vrednost %(limit_value)s. Trenutno je %(show_value)s."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Poskrbite, da bo ta vrednost manj kot ali natanko %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Poskrbite, da bo ta vrednost večja ali enaka %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Preverite, da ima ta vrednost vsaj %(limit_value)d znak (trenutno ima "
-"%(show_value)d)."
-msgstr[1] ""
-"Preverite, da ima ta vrednost vsaj %(limit_value)d znaka (trenutno ima "
-"%(show_value)d)."
-msgstr[2] ""
-"Preverite, da ima ta vrednost vsaj %(limit_value)d znake (trenutno ima "
-"%(show_value)d)."
-msgstr[3] ""
-"Preverite, da ima ta vrednost vsaj %(limit_value)d znakov (trenutno ima "
-"%(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Preverite, da ima ta vrednost največ %(limit_value)d znak (trenutno ima "
-"%(show_value)d)."
-msgstr[1] ""
-"Preverite, da ima ta vrednost največ %(limit_value)d znaka (trenutno ima "
-"%(show_value)d)."
-msgstr[2] ""
-"Preverite, da ima ta vrednost največ %(limit_value)d znake (trenutno ima "
-"%(show_value)d)."
-msgstr[3] ""
-"Preverite, da ima ta vrednost največ %(limit_value)d znakov (trenutno ima "
-"%(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s mora biti edinstveno za %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "in"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s s tem %(field_label)s že obstaja."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "Vrednost %(value)r ni veljavna izbira."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "To polje ne more biti prazno."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "To polje ne more biti prazno."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Polje tipa: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Celo število (integer)"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "Vrednost '%(value)s' mora biti celo število."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "Vrednost '%(value)s' mora biti bodisi Da ali Ne."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolova vrednost (True ali False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Niz znakov (vse do %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Z vejico ločena cela števila (integer)"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"Vrednost '%(value)s' ni v prepoznani obliki datuma. Biti mora v obliki LLLL-"
-"MM-DD."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"Vrednost '%(value)s' je v prepoznani obliki zapisa datuma (LLLL-MM-DD), a ta "
-"datum ne obstaja. "
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Datum (brez ure)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"Vrednost '%(value)s' je v neprepoznani obliki. Biti mora v obliki LLLL-MM-DD "
-"UU:MM[:ss[.uuuuuu]][ČP]."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"Vrednost '%(value)s' je v pravi obliki (LLLL-MM-DD UU:MM[:ss[.uuuuuu]][ČP]), "
-"a ta datum oziroma točka v času ne obstaja."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Datum (z uro)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "Vrednost '%(value)s' mora biti decimalno število."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Decimalno število"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-poštni naslov"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Pot do datoteke"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "Vrednost '%(value)s' mora biti decimalno število v plavajoči vejici."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Število s plavajočo vejico"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Velika (8 bajtna) cela števila "
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 naslov"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP naslov"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "Vrednost '%(value)s' mora biti bodisi brez vrednosti, Da ali Ne."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolova vrednost (True, False ali None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Pozitivno celo število"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Pozitivno celo število (do 64 tisoč)"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Okrajšava naslova (do največ %(max_length)s znakov)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Celo število"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Besedilo"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"Vrednost '%(value)s' je v napačnem zapisu. Biti mora v obliki UU:MM[:ss[."
-"uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"Vrednost '%(value)s' je v prepoznanem zapisu (UU:MM[:ss[.uuuuuu]]), a ta čas "
-"ne obstaja."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Čas"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL (spletni naslov)"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Surovi binarni podatki"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Datoteka"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Slika"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "Instanca %(model)s s primarnim ključem %(pk)r ne obstaja."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Tuji ključ (tip odvisen od povezanega polja)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Relacija ena-na-ena"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Relacija več-na-več"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "To polje je obvezno."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Vnesite celo število."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Vnesite število."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Poskrbite, da skupno ne bo več kot %(max)s števka."
-msgstr[1] "Poskrbite, da skupno ne bosta več kot %(max)s števki."
-msgstr[2] "Poskrbite, da skupno ne bojo več kot %(max)s števke."
-msgstr[3] "Poskrbite, da skupno ne bo več kot %(max)s števk."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Poskrbite, da skupno ne bo več kot %(max)s decimalnih mesto."
-msgstr[1] "Poskrbite, da skupno ne bosta več kot %(max)s decimalnih mesti."
-msgstr[2] "Poskrbite, da skupno ne bo več kot %(max)s decimalnih mest."
-msgstr[3] "Poskrbite, da skupno ne bo več kot %(max)s decimalnih mest."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-"Poskrbite, da skupno ne bo več kot %(max)s števka pred decimalno vejico."
-msgstr[1] ""
-"Poskrbite, da skupno ne bosta več kot %(max)s števki pred decimalno vejico."
-msgstr[2] ""
-"Poskrbite, da skupno ne bo več kot %(max)s števk pred decimalno vejico."
-msgstr[3] ""
-"Poskrbite, da skupno ne bo več kot %(max)s števk pred decimalno vejico."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Vnesite veljaven datum."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Vnesite veljaven čas."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Vnesite veljaven datum/čas."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Datoteka ni bila poslana. Preverite nabor znakov v formi."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Poslali niste nobene datoteke."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Poslana datoteka je prazna."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Poskrbite, da bo imelo to ime datoteke največ %(max)d znak (trenutno ima "
-"%(length)d)."
-msgstr[1] ""
-"Poskrbite, da bo imelo to ime datoteke največ %(max)d znaka (trenutno ima "
-"%(length)d)."
-msgstr[2] ""
-"Poskrbite, da bo imelo to ime datoteke največ %(max)d znake (trenutno ima "
-"%(length)d)."
-msgstr[3] ""
-"Poskrbite, da bo imelo to ime datoteke največ %(max)d znakov (trenutno ima "
-"%(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Prosim oddaj datoteko ali izberi počisti okvir, ampak ne oboje hkrati."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Naložite veljavno sliko. Naložena datoteka ni bila slika ali pa je bila le-"
-"ta okvarjena."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Izberite veljavno možnost. %(value)s ni med ponujenimi izbirami."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Vnesite seznam vrednosti."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Skrito polje %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "Manjkajo ManagementForm podatki ali pa so bili spremenjeni"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Pošljite največ %d obrazec."
-msgstr[1] "Pošljite največ %d obrazca."
-msgstr[2] "Pošljite največ %d obrazce."
-msgstr[3] "Pošljite največ %d obrazcev."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Razvrsti"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Izbriši"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Prosimo, odpravite podvojene vrednosti za %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Prosimo popravite podvojene vrednosti za %(field)s, ki morajo biti unikatne."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Prosimo popravite podvojene vrednosti za polje %(field_name)s, ki mora biti "
-"edinstveno za %(lookup)s po %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Prosimo odpravite podvojene vrednosti spodaj."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Tuji ključ se ne ujema z glavnim ključem povezanega vnosa."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Izberite veljavno možnost. Te možnosti ni med ponujenimi izbirami."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" ni veljavna vrednost za glavni ključ."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Držite \"Control\" (ali \"Command\" na Mac-u) za izbiro več kot enega."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"Vrednosti %(datetime)s ni bilo možno razumeti v časovnem pasu "
-"%(current_timezone)s; ali je izraz dvoumen ali pa ne obstaja."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Trenutno"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Spremeni"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Počisti"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Neznano"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Da"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Ne"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "da,ne,morda"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bajt"
-msgstr[1] "%(size)d bajta"
-msgstr[2] "%(size)d bajti"
-msgstr[3] "%(size)d bajtov"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "polnoč"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "poldne"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "ponedeljek"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "torek"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "sreda"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "četrtek"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "petek"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "sobota"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "nedelja"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "pon"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "tor"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "sre"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "čet"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "pet"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "sob"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "ned"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "januar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "februar"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "marec"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "maj"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "junij"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "julij"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "avgust"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "oktober"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "december"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "maj"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "avg"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Jan"
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Marec"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Maj"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Junij"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Julij"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Avg."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Okt."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Dec."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Januar"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Februar"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Marec"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Maj"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Junij"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Julij"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Avgust"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "September"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Oktober"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "November"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "December"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Ni bilo možno najti knjižnice Pillow ali PIL: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "Modula '_imaging' iz knjižnice PIL ni bilo možno uporabiti: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "To ni veljaven IPv6 naslov."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "ali"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d leto"
-msgstr[1] "%d leti"
-msgstr[2] "%d leta"
-msgstr[3] "%d let"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d mesec"
-msgstr[1] "%d meseca"
-msgstr[2] "%d meseci"
-msgstr[3] "%d mesecev"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d teden"
-msgstr[1] "%d tedna"
-msgstr[2] "%d tedni"
-msgstr[3] "%d tednov"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d dan"
-msgstr[1] "%d dneva"
-msgstr[2] "%d dnevi"
-msgstr[3] "%d dni"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d ura"
-msgstr[1] "%d uri"
-msgstr[2] "%d ure"
-msgstr[3] "%d ur"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minuta"
-msgstr[1] "%d minuti"
-msgstr[2] "%d minute"
-msgstr[3] "%d minut"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minut"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Prikaz vsebine mape ni dovoljen."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" ne obstaja."
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Vsebina mape %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Leto ni vnešeno"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Mesec ni vnešen"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Dan ni vnešen"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Teden ni vnešen"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Na voljo ni noben %(verbose_name_plural)s"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Prihodnje %(verbose_name_plural)s niso na voljo, ker je vrednost "
-"%(class_name)s.allow_future False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-"Neveljavna oblika datuma '%(datestr)s' glede na pričakovano obliko "
-"'%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Noben %(verbose_name)s ne ustreza poizvedbi"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Strani niti ni 'last' niti ni celo število."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Neveljavna stran (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Prazen seznam ob nastavitvi '%(class_name)s.allow_empty = False'."
diff --git a/lib/python2.7/site-packages/django/conf/locale/sl/__init__.py b/lib/python2.7/site-packages/django/conf/locale/sl/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sl/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/sl/formats.py b/lib/python2.7/site-packages/django/conf/locale/sl/formats.py
deleted file mode 100644
index ada379f..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sl/formats.py
+++ /dev/null
@@ -1,50 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'd. F Y'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = 'j. F Y. H:i'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j. F'
-SHORT_DATE_FORMAT = 'j. M. Y'
-SHORT_DATETIME_FORMAT = 'j.n.Y. H:i'
-FIRST_DAY_OF_WEEK = 0
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d.%m.%Y', '%d.%m.%y', # '25.10.2006', '25.10.06'
- '%d-%m-%Y', # '25-10-2006'
- '%d. %m. %Y', '%d. %m. %y', # '25. 10. 2006', '25. 10. 06'
-)
-
-DATETIME_INPUT_FORMATS = (
- '%d.%m.%Y %H:%M:%S', # '25.10.2006 14:30:59'
- '%d.%m.%Y %H:%M:%S.%f', # '25.10.2006 14:30:59.000200'
- '%d.%m.%Y %H:%M', # '25.10.2006 14:30'
- '%d.%m.%Y', # '25.10.2006'
- '%d.%m.%y %H:%M:%S', # '25.10.06 14:30:59'
- '%d.%m.%y %H:%M:%S.%f', # '25.10.06 14:30:59.000200'
- '%d.%m.%y %H:%M', # '25.10.06 14:30'
- '%d.%m.%y', # '25.10.06'
- '%d-%m-%Y %H:%M:%S', # '25-10-2006 14:30:59'
- '%d-%m-%Y %H:%M:%S.%f', # '25-10-2006 14:30:59.000200'
- '%d-%m-%Y %H:%M', # '25-10-2006 14:30'
- '%d-%m-%Y', # '25-10-2006'
- '%d. %m. %Y %H:%M:%S', # '25. 10. 2006 14:30:59'
- '%d. %m. %Y %H:%M:%S.%f', # '25. 10. 2006 14:30:59.000200'
- '%d. %m. %Y %H:%M', # '25. 10. 2006 14:30'
- '%d. %m. %Y', # '25. 10. 2006'
- '%d. %m. %y %H:%M:%S', # '25. 10. 06 14:30:59'
- '%d. %m. %y %H:%M:%S.%f', # '25. 10. 06 14:30:59.000200'
- '%d. %m. %y %H:%M', # '25. 10. 06 14:30'
- '%d. %m. %y', # '25. 10. 06'
-)
-
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/sq/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/sq/LC_MESSAGES/django.mo
deleted file mode 100644
index db1e171..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sq/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/sq/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/sq/LC_MESSAGES/django.po
deleted file mode 100644
index 3eaf230..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sq/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1329 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Besnik <besnik@programeshqip.org>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/"
-"sq/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sq\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikaans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arabe"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azerbaixhanase"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgare"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Bjelloruse"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengaleze"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretone"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Boshnjake"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Katalane"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Çeke"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Uellsiane"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Daneze"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Gjermane"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Greke"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Angleze"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Anglishte Britanike"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Spanjolle"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Spanjishte Argjentinase"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Spanjishte Meksikane"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Spanjishte Nikaraguane"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Spanjishte Venezueliane"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estoneze"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Baske"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persiane"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finlandeze"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Frënge"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frisiane"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irlandeze"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galike"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebraishte"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Indiane"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Kroate"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Hungareze"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indoneziane"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Islandeze"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italiane"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japoneze"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Gjeorgjiane"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazake"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmere"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Koreane"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Luksemburgase"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Lituaneze"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Latviane"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Maqedone"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malajalame"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongoliane"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Burmeze"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norvegjeze Bokmal"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepaleze"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Holandeze"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norvegjeze Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Osetishte"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Panxhabe"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Polake"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugeze"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Portugeze Braziliane"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Rumune"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Ruse"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slovake"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slovene"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Shqipe"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbe"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serbe Latine"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Suedeze"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Swahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamileze"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Tailandeze"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turke"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatare"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurt"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukrainase"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnameze"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Kineze e Thjeshtuar"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Kineze Tradicionale"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Jepni vlerë të vlefshme."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Jepni një URL të vlefshme."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Jepni një adresë email të vlefshme."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Jepni një 'slug' të vlefshëm, të përbërë nga shkronja, numra, nëvija ose "
-"vija në mes."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Jepni një vendndodhje të vlefshme IPv4."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Jepni një adresë IPv6 të vlefshme"
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Jepninjë adresë IPv4 ose IPv6 të vlefshme."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Jepni vetëm shifra të ndara nga presje."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Sigurohuni që kjo vlerë të jetë %(limit_value)s (është %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-"Sigurohuni që kjo vlerë të jetë më e vogël ose baraz me %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Sigurohuni që kjo vlerë është më e madhe ose baraz me %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Sigurohuni që kjo vlerë ka të paktën %(limit_value)d shenjë (ka "
-"%(show_value)d)."
-msgstr[1] ""
-"Sigurohuni që kjo vlerë ka të paktën %(limit_value)d shenja (ka "
-"%(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Sigurohuni që kjo vlerë ka të shumtën %(limit_value)d shenjë (ka "
-"%(show_value)d)."
-msgstr[1] ""
-"Sigurohuni që kjo vlerë ka të shumtën %(limit_value)d shenja (ka "
-"%(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s duhet të jetë unike për %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr " dhe "
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "Ka tashmë një %(model_name)s me këtë %(field_label)s."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Kjo fushë nuk mund të jetë bosh."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Kjo fushë nuk mund të jetë e zbrazët."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Fushë e llojit: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Numër i plotë"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Buleane (Ose True, ose False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Varg (deri në %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Numra të plotë të ndarë me presje"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Datë (pa kohë)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Datë (me kohë)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Numër dhjetor"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Adresë email"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Shteg kartele"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr ""
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Numër i plotë i madh (8 bajte)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Adresë IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Adresë IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Buleane (Ose True, ose False, ose None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Numër i plotë pozitiv"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Identifikues (deri në %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Tekst"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Kohë"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Të dhëna dyore të papërpunuara"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Kartelë"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Figurë"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Kyç i Jashtëm (lloj i përcaktuar nga fusha përkatëse)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Marrëdhënie një-për-një"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Marrëdhënie shumë-për-shumë"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Kjo fushë është e domosdoshme."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Jepni një numër të tërë."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Jepni një numër."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Jepni një datë të vlefshme."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Jepni një kohë të vlefshme."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Jepni një datë/kohë të vlefshme."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-"Nuk u parashtrua ndonjë kartelë. Kontrolloni llojin e kodimit te forma."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Nuk u parashtrua kartelë."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Kartela e parashtruar është bosh."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Sigurohuni që ky emër kartele ka të shumtën %(max)d shenjë (it has "
-"%(length)d)."
-msgstr[1] ""
-"Sigurohuni që ky emër kartele ka të shumtën %(max)d shenja (it has "
-"%(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Ju lutem, ose parashtroni një kartelë, ose i vini shenjë kutizës për "
-"pastrim, jo që të dyja."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Ngarkoni një figurë të vlefshme. Kartela që ngarkuat ose nuk qe figurë, ose "
-"qe figurë e dëmtuar."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Përzgjidhni një zgjedhje të vlefshme. %(value)s nuk është nga zgjedhjet e "
-"mundshme."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Jepni një listë vlerash."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Fushë e fshehur %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Rend"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Fshije"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Ju lutem, ndreqni të dhënat dyfishe për %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Ju lutem, ndreqni të dhënat dyfishe për %(field)s, të cilat duhet të jenë "
-"unike."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Ju lutem, ndreqni të dhënat dyfishe për %(field_name)s të cilat duhet të "
-"jenë unike për %(lookup)s te %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Ju lutem, ndreqni vlerat dyfishe më poshtë."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Kyçi i jashtëm \"inline\" nuk u përputh me kyçin parësor të instancës mëmë."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Përzgjidhni një zgjedhje të vlefshme. Ajo zgjedhje nuk është një nga "
-"zgjedhjet e mundshme."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Mbani të shtypur \"Control\", ose \"Command\" në Mac, për të përzgjedhur më "
-"shumë se një."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s nuk u interpretua dot brenda zonë kohore %(current_timezone)s; "
-"mund të jetë e dykuptimtë ose mund të mos ekzistojë."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Tani"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Ndryshoje"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Pastroje"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "E panjohur"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Po"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Jo"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "po,jo,ndoshta"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bajt"
-msgstr[1] "%(size)d bajte"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "mesnatë"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "meditë"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "E hënë"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "E martë"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "E mërkurë"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "E enjte"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "E premte"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "E shtunë"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "E dielë"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Hën"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Mar"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Mër"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Enj"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Pre"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Sht"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Die"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Janar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Shkurt"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Mars"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Prill"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Maj"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Qershor"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Korrik"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Gusht"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Shtator"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Tetor"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Nëntor"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Dhjetor"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "shk"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "pri"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "maj"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "qer"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "kor"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "gus"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sht"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "oct"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nën"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dhj"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Shk."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Mars"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Prill"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Maj"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Qershor"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Korrik"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Gus."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Shta."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Tet."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nën."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Dhj."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Janar"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Shkurt"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Mars"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Prill"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Maj"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Qershor"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Korrik"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Gusht"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Shtator"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Tetor"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Nëntor"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Dhjetor"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "ose"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d vit"
-msgstr[1] "%d vjetë"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d muaj"
-msgstr[1] "%d muaj"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d javë"
-msgstr[1] "%d javë"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d ditë"
-msgstr[1] "%d ditë"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d orë"
-msgstr[1] "%d orë"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minutë"
-msgstr[1] "%d minuta"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minuta"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Këtu nuk lejohen treguesa drejtorish."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" nuk ekziston"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Tregues i %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Nuk është caktuar vit"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Nuk është caktuar muaj"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Nuk është caktuar ditë"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Nuk është caktuar javë"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Nuk ka %(verbose_name_plural)s të përcaktuar"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"%(verbose_name_plural)s i ardhshëm jo i passhëm, ngaqë %(class_name)s."
-"allow_future është False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-"U dha varg i pavlefshëm date '%(datestr)s' formati i dhënë '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Nuk u gjetën %(verbose_name)s me përputhje"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Faqja nuk është 'last', as mund të shndërrohet në një int."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Faqe e pavlefshme (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Listë e zbrazët dhe '%(class_name)s.allow_empty' është False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/sq/__init__.py b/lib/python2.7/site-packages/django/conf/locale/sq/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sq/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/sq/formats.py b/lib/python2.7/site-packages/django/conf/locale/sq/formats.py
deleted file mode 100644
index 1c04e2e..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sq/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'd F Y'
-TIME_FORMAT = 'g.i.s.A'
-# DATETIME_FORMAT =
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'Y-m-d'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/sr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/sr/LC_MESSAGES/django.mo
deleted file mode 100644
index ef9a95c..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/sr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/sr/LC_MESSAGES/django.po
deleted file mode 100644
index 42b8173..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1321 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/"
-"sr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr\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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "арапски"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "азербејџански"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "бугарски"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "бенгалски"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "босански"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "каталонски"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "чешки"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "велшки"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "дански"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "немачки"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "грчки"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "енглески"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "британски енглески"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "шпански"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "аргентински шпански"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "мексички шпански"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "никарагвански шпански"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "естонски"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "баскијски"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "персијски"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "фински"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "француски"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "фризијски"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "ирски"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "галски"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "хебрејски"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "хинду"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "хрватски"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "мађарски"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "индонежански"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "исландски"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "италијански"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "јапански"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "грузијски"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "камбодијски"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "канада"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "корејски"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "литвански"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "латвијски"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "македонски"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "малајаламски"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "монголски"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "норвешки кнјжевни"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "холандски"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "норвешки нови"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Панџаби"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "пољски"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "португалски"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "бразилски португалски"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "румунски"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "руски"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "словачки"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "словеначки"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "албански"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "српски"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "српски (латиница)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "шведски"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "тамилски"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "телугу"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "тајландски"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "турски"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "украјински"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Урду"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "вијетнамски"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "новокинески"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "старокинески"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Унесите исправну вредност."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Унесите исправан URL."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Унесите исрпаван „слаг“, који се састоји од слова, бројки, доњих црта или "
-"циртица."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Унесите исправну IPv4 адресу."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Унесите исправну IPv6 адресу."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Унесите исправну IPv4 или IPv6 адресу."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Унесите само бројке раздвојене запетама."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Ово поље мора да буде %(limit_value)s (тренутно има %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Ова вредност мора да буде мања од %(limit_value)s. или тачно толико."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Ова вредност мора бити већа од %(limit_value)s или тачно толико."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s мора да буде јединствен за %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "и"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s са овом вредношћу %(field_label)s већ постоји."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Ово поље не може да остане празно."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Ово поље не може да остане празно."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Поње типа: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Цео број"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Булова вредност (True или False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Стринг (највише %(max_length)s знакова)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Цели бројеви раздвојени запетама"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Датум (без времена)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Датум (са временом)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Децимални број"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Имејл адреса"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Путања фајла"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Број са покреном запетом"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Велики цео број"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 adresa"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP адреса"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Булова вредност (True, False или None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Позитиван цео број"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Позитиван мали цео број"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Слаг (не дужи од %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Мали цео број"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Текст"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Време"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Фајл"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Слика"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Страни кључ (тип одређује референтно поље)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Релација један на један"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Релација више на више"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Ово поље се мора попунити."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Унесите цео број."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Унесите број."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Унесите исправан датум."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Унесите исправно време"
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Унесите исправан датум/време."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Фајл није пребачен. Проверите тип енкодирања формулара."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Фајл није пребачен."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Пребачен фајл је празан."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Може се само послати фајл или избрисати, не оба."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Пребаците исправан фајл. Фајл који је пребачен или није слика, или је "
-"оштећен."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"%(value)s није међу понуђеним вредностима. Одаберите једну од понуђених."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Унесите листу вредности."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Редослед"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Обриши"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Исправите дуплиран садржај за поља: %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Исправите дуплиран садржај за поља: %(field)s, који мора да буде јединствен."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Исправите дуплиран садржај за поља: %(field_name)s, који мора да буде "
-"јединствен за %(lookup)s у %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Исправите дуплиране вредности доле."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Страни кључ се није поклопио са инстанцом родитељског кључа."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Одабрана вредност није међу понуђенима. Одаберите једну од понуђених."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Држите „Control“, или „Command“ на Mac-у да бисте обележили више од једне "
-"ставке."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"Време %(datetime)s не може се представити у временској зони "
-"%(current_timezone)s."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Тренутно"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Измени"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Очисти"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Непознато"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Да"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Не"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "да,не,можда"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d бајт"
-msgstr[1] "%(size)d бајта"
-msgstr[2] "%(size)d бајтова"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "по п."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "пре п."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "поноћ"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "подне"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "понедељак"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "уторак"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "среда"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "четвртак"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "петак"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "субота"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "недеља"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "пон."
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "уто."
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "сре."
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "чет."
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "пет."
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "суб."
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "нед."
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "јануар"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "фебруар"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "март"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "април"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "мај"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "јун"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "јул"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "август"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "септембар"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "октобар"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "новембар"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "децембар"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "јан."
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "феб."
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "мар."
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "апр."
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "мај."
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "јун."
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "јул."
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ауг."
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "сеп."
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "окт."
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "нов."
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "дец."
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Јан."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Феб."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Март"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Април"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Мај"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Јун"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Јул"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Авг."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Септ."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Окт."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Нов."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Дец."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Јануар"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Фебруар"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Март"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Април"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Мај"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Јун"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Јул"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Август"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Септембар"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Октобар"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Новембар"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Децембар"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "или"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Индекси директоријума нису дозвољени овде."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "„%(path)s“ не постоји"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Индекс директоријума %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Година није назначена"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Месец није назначен"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Дан није назначен"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Недеља није назначена"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Недоступни објекти %(verbose_name_plural)s"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Опција „future“ није доступна за „%(verbose_name_plural)s“ јер "
-"%(class_name)s.allow_future има вредност False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Неисправан датум „%(datestr)s“ дат формату „%(format)s“"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Ниједан објекат класе %(verbose_name)s није нађен датим упитом."
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Страница није последња, нити може бити конвертована у тип int."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Празна листа и „%(class_name)s.allow_empty“ има вредност False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/sr/__init__.py b/lib/python2.7/site-packages/django/conf/locale/sr/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sr/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/sr/formats.py b/lib/python2.7/site-packages/django/conf/locale/sr/formats.py
deleted file mode 100644
index 8e9e9a4..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sr/formats.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j. F Y.'
-TIME_FORMAT = 'H:i'
-DATETIME_FORMAT = 'j. F Y. H:i'
-YEAR_MONTH_FORMAT = 'F Y.'
-MONTH_DAY_FORMAT = 'j. F'
-SHORT_DATE_FORMAT = 'j.m.Y.'
-SHORT_DATETIME_FORMAT = 'j.m.Y. H:i'
-FIRST_DAY_OF_WEEK = 1
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d.%m.%Y.', '%d.%m.%y.', # '25.10.2006.', '25.10.06.'
- '%d. %m. %Y.', '%d. %m. %y.', # '25. 10. 2006.', '25. 10. 06.'
- # '%d. %b %y.', '%d. %B %y.', # '25. Oct 06.', '25. October 06.'
- # '%d. %b \'%y.', '%d. %B \'%y.', # '25. Oct '06.', '25. October '06.'
- # '%d. %b %Y.', '%d. %B %Y.', # '25. Oct 2006.', '25. October 2006.'
-)
-DATETIME_INPUT_FORMATS = (
- '%d.%m.%Y. %H:%M:%S', # '25.10.2006. 14:30:59'
- '%d.%m.%Y. %H:%M:%S.%f', # '25.10.2006. 14:30:59.000200'
- '%d.%m.%Y. %H:%M', # '25.10.2006. 14:30'
- '%d.%m.%Y.', # '25.10.2006.'
- '%d.%m.%y. %H:%M:%S', # '25.10.06. 14:30:59'
- '%d.%m.%y. %H:%M:%S.%f', # '25.10.06. 14:30:59.000200'
- '%d.%m.%y. %H:%M', # '25.10.06. 14:30'
- '%d.%m.%y.', # '25.10.06.'
- '%d. %m. %Y. %H:%M:%S', # '25. 10. 2006. 14:30:59'
- '%d. %m. %Y. %H:%M:%S.%f', # '25. 10. 2006. 14:30:59.000200'
- '%d. %m. %Y. %H:%M', # '25. 10. 2006. 14:30'
- '%d. %m. %Y.', # '25. 10. 2006.'
- '%d. %m. %y. %H:%M:%S', # '25. 10. 06. 14:30:59'
- '%d. %m. %y. %H:%M:%S.%f', # '25. 10. 06. 14:30:59.000200'
- '%d. %m. %y. %H:%M', # '25. 10. 06. 14:30'
- '%d. %m. %y.', # '25. 10. 06.'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/sr_Latn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/sr_Latn/LC_MESSAGES/django.mo
deleted file mode 100644
index 70c418e..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sr_Latn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/sr_Latn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/sr_Latn/LC_MESSAGES/django.po
deleted file mode 100644
index 42e0991..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sr_Latn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1321 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/"
-"language/sr@latin/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr@latin\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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "arapski"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "azerbejdžanski"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "bugarski"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "bengalski"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "bosanski"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "katalonski"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "češki"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "velški"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "danski"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "nemački"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "grčki"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "engleski"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "britanski engleski"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "španski"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "argentinski španski"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "meksički španski"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "nikaragvanski španski"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "estonski"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "baskijski"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "persijski"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "finski"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "francuski"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "frizijski"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "irski"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "galski"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "hebrejski"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "hindu"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "hrvatski"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "mađarski"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "indonežanski"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "islandski"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "italijanski"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "japanski"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "gruzijski"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "kambodijski"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "kanada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "korejski"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "litvanski"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "latvijski"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "makedonski"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "malajalamski"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "mongolski"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "norveški knjževni"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "holandski"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "norveški novi"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Pandžabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "poljski"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "portugalski"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "brazilski portugalski"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "rumunski"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "ruski"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "slovački"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "slovenački"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "albanski"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "srpski"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "srpski (latinica)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "švedski"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "tamilski"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "tajlandski"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "turski"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ukrajinski"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "vijetnamski"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "novokineski"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "starokineski"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Unesite ispravnu vrednost."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Unesite ispravan URL."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Unesite isrpavan „slag“, koji se sastoji od slova, brojki, donjih crta ili "
-"cirtica."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Unesite ispravnu IPv4 adresu."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Unesite ispravnu IPv6 adresu."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Unesite ispravnu IPv4 ili IPv6 adresu."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Unesite samo brojke razdvojene zapetama."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Ovo polje mora da bude %(limit_value)s (trenutno ima %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Ova vrednost mora da bude manja od %(limit_value)s. ili tačno toliko."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Ova vrednost mora biti veća od %(limit_value)s ili tačno toliko."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s mora da bude jedinstven za %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "i"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s sa ovom vrednošću %(field_label)s već postoji."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Ovo polje ne može da ostane prazno."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Ovo polje ne može da ostane prazno."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Ponje tipa: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Ceo broj"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Bulova vrednost (True ili False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "String (najviše %(max_length)s znakova)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Celi brojevi razdvojeni zapetama"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Datum (bez vremena)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Datum (sa vremenom)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Decimalni broj"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Imejl adresa"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Putanja fajla"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Broj sa pokrenom zapetom"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Veliki ceo broj"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 adresa"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP adresa"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Bulova vrednost (True, False ili None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Pozitivan ceo broj"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Pozitivan mali ceo broj"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slag (ne duži od %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Mali ceo broj"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Tekst"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Vreme"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Fajl"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Slika"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Strani ključ (tip određuje referentno polje)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Relacija jedan na jedan"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Relacija više na više"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Ovo polje se mora popuniti."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Unesite ceo broj."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Unesite broj."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Unesite ispravan datum."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Unesite ispravno vreme"
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Unesite ispravan datum/vreme."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Fajl nije prebačen. Proverite tip enkodiranja formulara."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Fajl nije prebačen."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Prebačen fajl je prazan."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Može se samo poslati fajl ili izbrisati, ne oba."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Prebacite ispravan fajl. Fajl koji je prebačen ili nije slika, ili je "
-"oštećen."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"%(value)s nije među ponuđenim vrednostima. Odaberite jednu od ponuđenih."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Unesite listu vrednosti."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Redosled"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Obriši"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Ispravite dupliran sadržaj za polja: %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Ispravite dupliran sadržaj za polja: %(field)s, koji mora da bude jedinstven."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Ispravite dupliran sadržaj za polja: %(field_name)s, koji mora da bude "
-"jedinstven za %(lookup)s u %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Ispravite duplirane vrednosti dole."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Strani ključ se nije poklopio sa instancom roditeljskog ključa."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Odabrana vrednost nije među ponuđenima. Odaberite jednu od ponuđenih."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Držite „Control“, ili „Command“ na Mac-u da biste obeležili više od jedne "
-"stavke."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"Vreme %(datetime)s ne može se predstaviti u vremenskoj zoni "
-"%(current_timezone)s."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Trenutno"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Izmeni"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Očisti"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Nepoznato"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Da"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Ne"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "da,ne,možda"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bajt"
-msgstr[1] "%(size)d bajta"
-msgstr[2] "%(size)d bajtova"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "po p."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "pre p."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "ponoć"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "podne"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "ponedeljak"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "utorak"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "sreda"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "četvrtak"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "petak"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "subota"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "nedelja"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "pon."
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "uto."
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "sre."
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "čet."
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "pet."
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "sub."
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "ned."
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "januar"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "februar"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "mart"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "maj"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "jun"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "jul"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "avgust"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "septembar"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "oktobar"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "novembar"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "decembar"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan."
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb."
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar."
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr."
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "maj."
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun."
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul."
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug."
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep."
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt."
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov."
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec."
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Mart"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Maj"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Jun"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Jul"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Avg."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Sept."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Okt."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Dec."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Januar"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Februar"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Mart"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "April"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Maj"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Jun"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Jul"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Avgust"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Septembar"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Oktobar"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Novembar"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Decembar"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "ili"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Indeksi direktorijuma nisu dozvoljeni ovde."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "„%(path)s“ ne postoji"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Indeks direktorijuma %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Godina nije naznačena"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Mesec nije naznačen"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Dan nije naznačen"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Nedelja nije naznačena"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Nedostupni objekti %(verbose_name_plural)s"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Opcija „future“ nije dostupna za „%(verbose_name_plural)s“ jer "
-"%(class_name)s.allow_future ima vrednost False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Neispravan datum „%(datestr)s“ dat formatu „%(format)s“"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Nijedan objekat klase %(verbose_name)s nije nađen datim upitom."
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Stranica nije poslednja, niti može biti konvertovana u tip int."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Prazna lista i „%(class_name)s.allow_empty“ ima vrednost False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/sr_Latn/__init__.py b/lib/python2.7/site-packages/django/conf/locale/sr_Latn/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sr_Latn/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/sr_Latn/formats.py b/lib/python2.7/site-packages/django/conf/locale/sr_Latn/formats.py
deleted file mode 100644
index 8e9e9a4..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sr_Latn/formats.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j. F Y.'
-TIME_FORMAT = 'H:i'
-DATETIME_FORMAT = 'j. F Y. H:i'
-YEAR_MONTH_FORMAT = 'F Y.'
-MONTH_DAY_FORMAT = 'j. F'
-SHORT_DATE_FORMAT = 'j.m.Y.'
-SHORT_DATETIME_FORMAT = 'j.m.Y. H:i'
-FIRST_DAY_OF_WEEK = 1
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d.%m.%Y.', '%d.%m.%y.', # '25.10.2006.', '25.10.06.'
- '%d. %m. %Y.', '%d. %m. %y.', # '25. 10. 2006.', '25. 10. 06.'
- # '%d. %b %y.', '%d. %B %y.', # '25. Oct 06.', '25. October 06.'
- # '%d. %b \'%y.', '%d. %B \'%y.', # '25. Oct '06.', '25. October '06.'
- # '%d. %b %Y.', '%d. %B %Y.', # '25. Oct 2006.', '25. October 2006.'
-)
-DATETIME_INPUT_FORMATS = (
- '%d.%m.%Y. %H:%M:%S', # '25.10.2006. 14:30:59'
- '%d.%m.%Y. %H:%M:%S.%f', # '25.10.2006. 14:30:59.000200'
- '%d.%m.%Y. %H:%M', # '25.10.2006. 14:30'
- '%d.%m.%Y.', # '25.10.2006.'
- '%d.%m.%y. %H:%M:%S', # '25.10.06. 14:30:59'
- '%d.%m.%y. %H:%M:%S.%f', # '25.10.06. 14:30:59.000200'
- '%d.%m.%y. %H:%M', # '25.10.06. 14:30'
- '%d.%m.%y.', # '25.10.06.'
- '%d. %m. %Y. %H:%M:%S', # '25. 10. 2006. 14:30:59'
- '%d. %m. %Y. %H:%M:%S.%f', # '25. 10. 2006. 14:30:59.000200'
- '%d. %m. %Y. %H:%M', # '25. 10. 2006. 14:30'
- '%d. %m. %Y.', # '25. 10. 2006.'
- '%d. %m. %y. %H:%M:%S', # '25. 10. 06. 14:30:59'
- '%d. %m. %y. %H:%M:%S.%f', # '25. 10. 06. 14:30:59.000200'
- '%d. %m. %y. %H:%M', # '25. 10. 06. 14:30'
- '%d. %m. %y.', # '25. 10. 06.'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/sv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/sv/LC_MESSAGES/django.mo
deleted file mode 100644
index aaf3e85..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/sv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/sv/LC_MESSAGES/django.po
deleted file mode 100644
index 4f1c561..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1341 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Alex Nordlund <deep.alexander@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Mattias Jansson <mattias@colourandcode.se>, 2011
-# Samuel Linde <samuel@linde.im>, 2011
-# biljettshop <thomas@biljettshop.se>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-10-28 10:00+0000\n"
-"Last-Translator: biljettshop <thomas@biljettshop.se>\n"
-"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/"
-"sv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sv\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikaans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arabiska"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azerbajdzjanska"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgariska"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Vitryska"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengaliska"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretonska"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Bosniska"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Katalanska"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Tjeckiska"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Walesiska"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Danska"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Tyska"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Grekiska"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Engelska"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Brittisk engelska"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Spanska"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Argentinsk spanska"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Mexikansk Spanska"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Nicaraguansk spanska"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Spanska (Venezuela)"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estländska"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Baskiska"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Persiska"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Finska"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Franska"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frisiska"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Irländska"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galisiska"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Hebreiska"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Kroatiska"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Ungerska"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Indonesiska"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Isländska"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Italienska"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japanska"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgiska"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazakiska"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Khmer"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Koreanska"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Luxemburgiska"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Lettiska"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Lettiska"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Makedonska"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Mongoliska"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Burmesiska"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norska (bokmål)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepali"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Holländska"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norska (nynorsk)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Ossetiska"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Punjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Polska"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portugisiska"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Brasiliensk portugisiska"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Rumänska"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Ryska"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slovakiska"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slovenska"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Albanska"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Serbiska"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serbiska (latin)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Svenska"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Swahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamilska"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Thailändska"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Turkiska"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatariska"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurtiska"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukrainska"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnamesiska"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Förenklad Kinesiska"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Traditionell Kinesiska"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Fyll i ett giltigt värde."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Fyll i en giltig URL."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Fyll i ett giltigt heltal."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Fyll i en giltig e-postadress."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Fyll i en giltig 'slug', beståendes av enbart bokstäver, siffror, "
-"understreck samt bindestreck."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Fyll i en giltig IPv4 adress."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Ange en giltig IPv6-adress."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Ange en giltig IPv4 eller IPv6-adress."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Fyll enbart i siffror separerade med kommatecken."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Kontrollera att detta värde är %(limit_value)s (det är %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-"Kontrollera att detta värde är mindre än eller lika med %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-"Kontrollera att detta värde är större än eller lika med %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Säkerställ att detta värde åtminstone har %(limit_value)d tecken (den har "
-"%(show_value)d)."
-msgstr[1] ""
-"Säkerställ att detta värde åtminstone har %(limit_value)d tecken (den har "
-"%(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Säkerställ att detta värde har som mest %(limit_value)d tecken (den har "
-"%(show_value)d)."
-msgstr[1] ""
-"Säkerställ att detta värde har som mest %(limit_value)d tecken (den har "
-"%(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s måste vara unikt för %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "och"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s med detta %(field_label)s finns redan."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "Värdet %(value)r är inget giltigt alternativ."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Detta fält får inte vara null."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Detta fält får inte vara tomt."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Fält av typ: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Heltal"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "Värdet '%(value)s' måste vara ett heltal."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "Värdet '%(value)s' måste vara antingen True eller False."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolesk (antingen True eller False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Sträng (upp till %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Komma-separerade heltal"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"Värdet '%(value)s' har ett ogiltigt datumformat. Det måste vara i formatet "
-"YYYY-MM-DD."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"Värdet '%(value)s' har det giltiga formatet (YYYY-MM-DD) men det är ett "
-"ogiltigt datum."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Datum (utan tid)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"Värdet '%(value)s' har ett ogiltigt datumformat. Det måste vara i formatet "
-"YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"Värdet '%(value)s' har det giltiga formatet (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) men det är ett ogiltigt datum/tid."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Datum (med tid)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "Värdet '%(value)s' måste vara ett decimaltal."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Decimaltal"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-postadress"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Sökväg till fil"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "Värdet '%(value)s' måste vara ett flyttal."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Flyttal"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Stort (8 byte) heltal"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4-adress"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP-adress"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "Värdet '%(value)s' måste vara antingen \"None\", True or False."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Boolesk (antingen True, False eller None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Positivt heltal"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Positivt litet heltal"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (upp till %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Litet heltal"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Text"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"Värdet '%(value)s' har ett ogiltigt format. Det måste vara i formatet HH:MM[:"
-"ss[.uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"Värdet '%(value)s' har det korrekta formatet (HH:MM[:ss[.uuuuuu]]) men är en "
-"ogiltig tid."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Tid"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Rå binärdata"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Fil"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Bild"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "Modell %(model)s med primärnyckel %(pk)r finns inte."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Främmande nyckel (typ bestäms av relaterat fält)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Ett-till-ett-samband"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Många-till-många-samband"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Detta fält måste fyllas i."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Fyll i ett heltal."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Fyll i ett tal."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Säkerställ att det inte är mer än %(max)s siffra totalt."
-msgstr[1] "Säkerställ att det inte är mer än %(max)s siffror totalt."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Säkerställ att det inte är mer än %(max)s decimal."
-msgstr[1] "Säkerställ att det inte är mer än %(max)s decimaler."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-"Säkerställ att det inte är mer än %(max)s siffra före decimalavskiljaren."
-msgstr[1] ""
-"Säkerställ att det inte är mer än %(max)s siffror före decimalavskiljaren."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Fyll i ett giltigt datum."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Fyll i en giltig tid."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Fyll i ett giltigt datum/tid."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Ingen fil skickades. Kontrollera kodningstypen i formuläret."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Ingen fil skickades."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Den skickade filen är tom."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Säkerställ att filnamnet har som mest %(max)d tecken (den har %(length)d)."
-msgstr[1] ""
-"Säkerställ att filnamnet har som mest %(max)d tecken (den har %(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Var vänlig antingen skicka en fil eller markera kryssrutan för att rensa, "
-"inte både och. "
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Ladda upp en giltig bild. Filen du laddade upp var antingen ingen bild eller "
-"en korrupt bild."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Välj ett giltigt alternativ. %(value)s finns inte bland tillgängliga "
-"alternativ."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Fyll i en lista med värden."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Gömt fält %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "ManagementForm data saknas eller har manipulerats"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Vänligen lämna %d eller färre formulär."
-msgstr[1] "Vänligen lämna %d eller färre formulär."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Sortering"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Radera"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Var vänlig korrigera duplikatdata för %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Var vänlig korrigera duplikatdata för %(field)s, som måste vara unik."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Var vänlig korrigera duplikatdata för %(field_name)s som måste vara unik för "
-"%(lookup)s i %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Vänligen korrigera duplikatvärdena nedan."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Den infogade främmande nyckeln matchade inte den överordnade instansens "
-"primära nyckel."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Välj ett giltigt alternativ. Det valet finns inte bland tillgängliga "
-"alternativ."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" är inte ett giltigt värde för en primärnyckel."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Håll ner \"Control\" eller \"Command\" på en Mac för att välja fler än en."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s kunde inte tolkas i tidszonen %(current_timezone)s; det kan "
-"vara en ogiltig eller tvetydigt tidpunkt"
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Nuvarande"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Ändra"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Rensa"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Okänt"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Ja"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Nej"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "ja,nej,kanske"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-msgstr[1] "%(size)d byte"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s kB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "e.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "f.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "FM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "EM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "midnatt"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "middag"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "måndag"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "tisdag"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "onsdag"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "torsdag"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "fredag"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "lördag"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "söndag"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "mån"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "tis"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "ons"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "tors"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "fre"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "lör"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "sön"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "januari"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "februari"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "mars"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "maj"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "juni"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "juli"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "augusti"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "oktober"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "december"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "maj"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "jun"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "aug"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dec"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "jan"
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "feb"
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "mars"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "maj"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "juni"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "juli"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "aug"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "sep"
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "okt"
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "nov"
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "dec"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "januari"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "februari"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "mars"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "april"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "maj"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "juni"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "juli"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "augusti"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "september"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "oktober"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "november"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "december"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Varken Pillow eller PIL kunde importeras: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "'_imaging' modulen för PIL kunde inte importeras: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Detta är inte en giltig IPv6 adress."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "eller"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d år"
-msgstr[1] "%d år"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d månad"
-msgstr[1] "%d månader"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d vecka"
-msgstr[1] "%d veckor"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d dag"
-msgstr[1] "%d dagar"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d timme"
-msgstr[1] "%d timmar"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d minut"
-msgstr[1] "%d minuter"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 minuter"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Kataloglistningar är inte tillåtna här."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" finns inte"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Innehåll i %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Inget år angivet"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Ingen månad angiven"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Ingen dag angiven"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Ingen vecka angiven"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Inga %(verbose_name_plural)s är tillgängliga"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Framtida %(verbose_name_plural)s är inte tillgängliga eftersom "
-"%(class_name)s.allow_future är False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Ogiltig datumsträng '%(datestr)s' med givet format '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Hittade inga %(verbose_name)s som matchar frågan"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Sidan är inte 'last', och kan inte heller omvandlas till en int."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Ogiltig sida (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Tom lista och '%(class_name)s.allow_empty' är False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/sv/__init__.py b/lib/python2.7/site-packages/django/conf/locale/sv/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sv/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/sv/formats.py b/lib/python2.7/site-packages/django/conf/locale/sv/formats.py
deleted file mode 100644
index 8874da7..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sv/formats.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j F Y'
-TIME_FORMAT = 'H:i'
-DATETIME_FORMAT = 'j F Y H:i'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'Y-m-d'
-SHORT_DATETIME_FORMAT = 'Y-m-d H:i'
-FIRST_DAY_OF_WEEK = 1
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# Kept ISO formats as they are in first position
-DATE_INPUT_FORMATS = (
- '%Y-%m-%d', # '2006-10-25'
- '%m/%d/%Y', # '10/25/2006'
- '%m/%d/%y', # '10/25/06'
-)
-DATETIME_INPUT_FORMATS = (
- '%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
- '%Y-%m-%d %H:%M:%S.%f', # '2006-10-25 14:30:59.000200'
- '%Y-%m-%d %H:%M', # '2006-10-25 14:30'
- '%Y-%m-%d', # '2006-10-25'
- '%m/%d/%Y %H:%M:%S', # '10/25/2006 14:30:59'
- '%m/%d/%Y %H:%M:%S.%f', # '10/25/2006 14:30:59.000200'
- '%m/%d/%Y %H:%M', # '10/25/2006 14:30'
- '%m/%d/%Y', # '10/25/2006'
- '%m/%d/%y %H:%M:%S', # '10/25/06 14:30:59'
- '%m/%d/%y %H:%M:%S.%f', # '10/25/06 14:30:59.000200'
- '%m/%d/%y %H:%M', # '10/25/06 14:30'
- '%m/%d/%y', # '10/25/06'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '\xa0' # non-breaking space
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/sw/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/sw/LC_MESSAGES/django.mo
deleted file mode 100644
index 380c292..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sw/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/sw/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/sw/LC_MESSAGES/django.po
deleted file mode 100644
index 7f5af35..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/sw/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1302 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/"
-"sw/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sw\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Kiarabu"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Kiazerbaijani"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Kibulgaria"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Kibengali"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Kibosnia"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Kikatalani"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Kicheki"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Kiweli"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Kideni"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Kijerumani"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Kigiriki"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Kiingereza"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Kiingereza cha Uingereza"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Kiesperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Kihispania"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Kihispania cha Argentina"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Kihispania cha Mexico"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Kihispania cha Nikaragua"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Kiestonia"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Kibaskyue"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Kipershia"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Kifini"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Kifaransa"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Kifrisi"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Kiairishi"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Kigalatia"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Kiyahudi"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Kihindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Kikroeshia"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Kihangaria"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Kiindonesia"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Kiaiselandi"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Kiitaliano"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Kijapani"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Kijiojia"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kizakhi"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Kihema"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kikanada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Kikorea"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Kilithuania"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Kilatvia"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Kimacedonia"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Kimalayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Kimongolia"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "kibekmali cha Kinorwei"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Kinepali"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Kidachi"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Kinynorki cha Kinorwei"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Kipanjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Kipolishi"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Kireno"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Kireno cha Kibrazili"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Kiromania"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Kirusi"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Kislovakia"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Kislovenia"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Kialbania"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Kiserbia"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Kilatini cha Kiserbia"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Kiswidi"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Kiswahili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Kitamili"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "kitegulu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Kithai"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Kituruki"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Kitatari"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Kiukreni"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Kiurdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Kivietinamu"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Kichina Kilichorahisishwa"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Kichina Asilia"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Ingiza thamani halali"
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Ingiza URL halali."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "Ingiza slagi halali yenye herufi, namba, \"_\" au \"-\""
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Ingiza anuani halali ya IPV4"
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Ingiza anuani halali ya IPV6"
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Ingiza anuani halali za IPV4 au IPV6"
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Ingiza tarakimu zilizotenganishwa kwa koma tu."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Hakikisha thamani hii ni %(limit_value)s (ni %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Hakikisha thamani hii ni ndogo kuliko au sawa na %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Hakikisha thamani hii ni kubwa kuliko au sawa na %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "Ni lazima %(field_name)s kuwa pekee kwa %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "na"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "Tayari kuna %(field_label)s kwa %(model_name)s nyingine."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Uga huu hauwezi kuwa hauna kitu."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Uga huu hauwezi kuwa mtupu"
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Uga wa aina %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Inteja"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Buleani (Aidha Kweli au Si kweli)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Tungo (hadi %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Inteja zilizotengwa kwa koma"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Tarehe (bila ya muda)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Tarehe (pamoja na muda)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Namba ya desimali"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Anuani ya baruapepe"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Njia ya faili"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Namba ya `floating point`"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Inteja kubwa (baiti 8)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "anuani ya IPV4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "anuani ya IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Buleani (Aidha kweli, Si kweli au Hukuna)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Inteja chanya"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Inteja chanya ndogo"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slagi (hadi %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Inteja ndogo"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Maandishi"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Muda"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Faili"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Picha"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "'Foreign Key' (aina inapatikana kwa uga unaohusiana)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Uhusiano wa moja-kwa-moja"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Uhusiano wa vingi-kwa-vingi"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Sehemu hii inahitajika"
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Ingiza namba kamili"
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Ingiza namba"
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Ingiza tarehe halali"
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Ingiza muda halali"
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Ingiza tarehe/muda halali"
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Hakuna faili lililokusanywa. Angalia aina ya msimbo kwenye fomu."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Hakuna faili lililokusanywa."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Faili lililokusanywa ni tupu."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Tafadhali aidha kusanya faili au tiki kisanduku kilicho wazi, si yote."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Pakia picha halali. Faili ulilopakia lilikua aidha si picha au ni picha "
-"iliyopotoshwa."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Chagua chaguo halali. %(value)s si moja kati ya machaguo yaliyopo."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Ingiza orodha ya thamani"
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Panga"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Futa"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Tafadhali rekebisha data zilizojirudia kwa %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Tafadhali rekebisha data zilizojirudia kwa %(field)s, zinazotakiwa kuwa za "
-"kipekee."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Tafadhali sahihisha data zilizojirudia kwa %(field_name)s ,uga huu ni lazima "
-"kuwa wa pekee kwa %(lookup)s katika %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Tafadhali sahihisha thamani zilizojirudia hapo chini."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "`Inline foreign key` haijafanana tukio la `primary key` mama."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Chagua chaguo halali. Chaguo hilo si moja kati ya chaguzi halali"
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Shikilia chini \"Control\", au \"Command\" kwenye Mac, ili kuchagua zaidi ya "
-"moja. "
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"Imeshindikana kufasiri %(datetime)s katika majira ya %(current_timezone)s;"
-"Inawezekana kuwa kuna utata au kiti hichi hakipo."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Kwa sasa"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Badili"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Safisha"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Haijulikani"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Ndiyo"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Hapana"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "ndiyo,hapana,labda"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "baiti %(size)d"
-msgstr[1] "baiti %(size)d"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "KB %s"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "MB %s"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "GB %s"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "TB %s"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "PB %s"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "usiku wa manane"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "mchana"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Jumatatu"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Jumanne"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Jumatano"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Alhamisi"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Ijumaa"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Jumamosi"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Jumapili"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Jtatu"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Jnne"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "jtano"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Alh"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Ijmaa"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Jmosi"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Jpili"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Januari"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Februari"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Machi"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Aprili"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Mei"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Julai"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Agosti"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Septemba"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Oktoba"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Novemba"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Disemba"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "jan"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "feb"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "machi"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "apr"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "mei"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "Juni"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "jul"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ago"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "sep"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "okt"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "nov"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "dis"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Jan."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Feb."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Machi"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Aprili"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Mei"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Julai"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Ago."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Sep."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Okt."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Nov."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Dis."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Januari"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Februari"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Machi"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Aprili"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Mei"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Juni"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Julai"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Agosti"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Septemba"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Oktoba"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Novemba"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Disemba"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "au"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Sahirisi za saraka haziruhusiwi hapa."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" haipo"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Sahirisi ya %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Hakuna mwaka maalum uliotajwa"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Hakuna mwezi maalum uliotajwa"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Hakuna siku maalum iliyitajwa"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Hakuna wiki maalum iliyotajwa"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Hakujapatikana %(verbose_name_plural)s"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"%(verbose_name_plural)s kutoka wakati ujao haiwezekani kwani `"
-"%(class_name)s.allow_future` ni `False`."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Tungo batili ya tarehe '%(datestr)s' muundo ni '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "hakuna %(verbose_name)s kulingana na ulizo"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Ukurasa huu si 'mwisho', na wala hauwezi kubadilishwa kuwa int."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Orodha tupu na '%(class_name)s.allow_empty'.ni 'False'."
diff --git a/lib/python2.7/site-packages/django/conf/locale/ta/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/ta/LC_MESSAGES/django.mo
deleted file mode 100644
index 847dbbf..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ta/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/ta/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/ta/LC_MESSAGES/django.po
deleted file mode 100644
index 2f120b1..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ta/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1295 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/"
-"ta/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ta\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "அரபிக்"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr ""
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr ""
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "பெங்காலி"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr ""
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr ""
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "செக்"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "வெல்ஸ்"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "டேனிஷ்"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "ஜெர்மன்"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "கிரேக்கம்"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "ஆங்கிலம்"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr ""
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "ஸ்பானிஷ்"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr ""
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr ""
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr ""
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr ""
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr ""
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "பீனீஷ்"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "ப்ரென்சு"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr ""
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr ""
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "கலீஷீயன்"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "ஹீப்ரு"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr ""
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr ""
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "ஹங்கேரியன்"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr ""
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "ஐஸ்லான்டிக்"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "இத்தாலியன்"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "ஜப்பானிய"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr ""
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr ""
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr ""
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr ""
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr ""
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr ""
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr ""
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr ""
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr ""
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr ""
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "டச்சு"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr ""
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr ""
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr ""
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr ""
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr ""
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "ரோமானியன்"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "ரஷ்யன்"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "சுலோவாக்"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "ஸ்லோவேனியன்"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr ""
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "செர்பியன்"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr ""
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "சுவிடிஷ்"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "தமிழ்"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr ""
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr ""
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "துருக்கிஷ்"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "உக்ரேனியன்"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr ""
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr ""
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "எளிய சீன மொழி"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "மரபு சீன மொழி"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr ""
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr ""
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr ""
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr ""
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr ""
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "இங்கு எண்களை மட்டுமே எழுதவும் காமவாள் தனிமைபடுத்தவும் "
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "மற்றும்"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "இந்த புலம் காலியாக இருக்கக் கூடாது"
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr ""
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr ""
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "முழு எண்"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "பூலியன் (சரி அல்லது தவறு)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "கமாவாள் பிரிக்கப்பட்ட முழு எண்"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "தேதி (நேரமில்லாமல்)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "தேதி (நேரமுடன்)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "தசம எண்கள்"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "கோப்புப் பாதை"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr ""
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP விலாசம்"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "இலக்கு முறை (சரி, தவறு அல்லது ஒன்றும் இல்லை)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "உரை"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "நேரம்"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr ""
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr ""
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr ""
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr ""
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr ""
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "இந்த புலத்தில் மதிப்பு தேவை"
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "முழு எண் மட்டுமே எழுதவும்"
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr ""
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr ""
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr ""
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr ""
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "அந்த பக்கத்தின் encoding வகையைப் பரிசோதிக்க.கோப்பு சமர்பிக்கப் பட்டவில்லை "
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr ""
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "சமர்பிக்கப் பட்ட கோப்புக் காலியாக உள்ளது"
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"முறையான படம் மட்டுமே பதிவேற்றம் செய்யவும். நீங்கள் பதிவேற்றம் செய்த கோப்பு படம் அள்ளாத "
-"அல்லது கெட்டுப்போன கோப்பாகும்"
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr ""
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr ""
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "நீக்குக"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr ""
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr ""
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Mac இல், ஒன்றுக்கு மேற்பட்டவற்றை தேர்வு செய்ய \"Control\" அல்லது \"Command\" ஐ "
-"அழுத்தவும்"
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr ""
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "மாற்றுக"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr ""
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "தெரியாத"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "ஆம்"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "இல்லை"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "ஆம், இல்லை, இருக்கலாம்"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr ""
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr ""
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr ""
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr ""
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr ""
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr ""
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr ""
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr ""
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr ""
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr ""
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr ""
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "திங்கள்"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "செவ்வாய்"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "புதன்"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "வியாழன்"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "வெள்ளி"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "சனி"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "ஞாயிறு"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr ""
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr ""
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr ""
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr ""
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "ஜனவரி"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "பிப்ரவரி"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "மார்ச்"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "ஏப்ரல்"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "மே"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "ஜூன்"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "ஜூலை"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "ஆகஸ்டு"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "செப்டம்பர்"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "அக்டோபர்"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "நவம்பர்"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "டிசம்பர்"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ஜன"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "பிப்"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "மார்"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "ஏப்"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "மே"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "ஜூன்"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "ஜூலை"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ஆக"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "செப்"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "அக்"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "நவ"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "டிச"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr ""
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr ""
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "மார்ச்"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "ஏப்ரல்"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "மே"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "ஜூன்"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "ஜூலை"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr ""
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr ""
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr ""
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr ""
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr ""
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "ஜனவரி"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "பிப்ரவரி"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "மார்ச்"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "ஏப்ரல்"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "மே"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "ஜூன்"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "ஜூலை"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "ஆகஸ்டு"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "செப்டம்பர்"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "அக்டோபர்"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "நவம்பர்"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "டிசம்பர்"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr ""
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ""
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr ""
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr ""
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr ""
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr ""
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr ""
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr ""
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/conf/locale/ta/__init__.py b/lib/python2.7/site-packages/django/conf/locale/ta/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ta/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/ta/formats.py b/lib/python2.7/site-packages/django/conf/locale/ta/formats.py
deleted file mode 100644
index 1c08f17..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ta/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j F, Y'
-TIME_FORMAT = 'g:i:s A'
-# DATETIME_FORMAT =
-# YEAR_MONTH_FORMAT =
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'j M, Y'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-# DECIMAL_SEPARATOR =
-# THOUSAND_SEPARATOR =
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/te/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/te/LC_MESSAGES/django.mo
deleted file mode 100644
index 3310c71..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/te/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/te/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/te/LC_MESSAGES/django.po
deleted file mode 100644
index 636c36d..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/te/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1296 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# bhaskar teja yerneni <prudhviy@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# ప్రవీణ్ ఇళ్ళ <mail2ipn@gmail.com>, 2013
-# వీవెన్ వీరపనేని <veeven@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-09-19 08:27+0000\n"
-"Last-Translator: ప్రవీణ్ ఇళ్ళ <mail2ipn@gmail.com>\n"
-"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/"
-"te/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: te\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "ఆఫ్రికాన్స్"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "ఆరబిక్"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "అజేర్బైజని "
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "బల్గేరియన్"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "బెలారషియన్"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "బెంగాలీ"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "బ్రిటన్"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "బోస్నియన్"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "కాటలాన్"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "ఛెక్"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "వెల్ష్"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "డానిష్"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "జెర్మన్"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "గ్రీక్"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "ఆంగ్లం"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "బ్రిటీష్ ఆంగ్లం"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "ఎస్పరాంటో"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "స్పానిష్"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "అర్జెంటీనా స్పానిష్"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "మెక్షికన్ స్పానిష్ "
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "వెనుజులా స్పానిష్"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "ఎస్టొనియన్"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "బాస్క్"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "పారసీ"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "ఫీన్నిష్"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "ఫ్రెంచ్"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "ఫ్రిసియన్"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "ఐరిష్"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "గలిసియన్"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "హీబ్రూ"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "హిందీ"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "క్రొయేషియన్"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "హంగేరియన్"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "ఇంటర్లింగ్వా"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "ఇండోనేషియన్"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "ఐస్లాండిక్"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "ఇటాలియవ్"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "జపనీ"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "జార్జియన్"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "కజఖ్"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "ఖ్మెర్"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "కన్నడ"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "కొరియన్"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "లగ్జెంబర్గిష్"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "లిథుయేనియన్"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "లాత్వియన్"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "మెసిడోనియన్"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "మలయాళం"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "మంగోలియన్"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "బర్మీస్"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "నోర్వేగియన్ బొక్మల్ "
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "నేపాలీ"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "డచ్"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "నోర్వేగియన్ న్య్నోర్స్క్ "
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "పంజాబీ"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "పొలిష్"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "పోర్చుగీస్"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "బ్రజీలియన్ పోర్చుగీస్"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "రొమానియన్"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "రష్యన్"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "స్లొవాక్"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "స్లొవానియన్"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "అల్బేనియన్"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "సెర్బియన్"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "సెర్బియన్ లాటిన్"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "స్వీడిష్"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "స్వాహిలి"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "తమిళం"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "తెలుగు"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "థాయి"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "టర్కిష్"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "టటర్"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ఉక్రేనియన్"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "ఉర్దూ"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "వియెత్నామీ"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "సరళ చైనీ"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "సాంప్రదాయ చైనీ"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "సరైన విలువని ఇవ్వండి."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "సరైన URL ఇవ్వండి."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "దయచేసి సరైన ఈమెయిల్ చిరునామాను ప్రవేశపెట్టండి."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "దయచేసి సరైన IPv4 అడ్రస్ ఇవ్వండి"
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr ""
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr ""
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "కామాల తో అంకెలు విడడీసి ఇవ్వండి "
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"దయచేసి దీని విలువ %(limit_value)s గ ఉండేట్లు చూసుకొనుము. ( మీరు సమర్పించిన విలువ "
-"%(show_value)s )"
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "దయచేసి దీని విలువ %(limit_value)s కు సమానముగా లేక తక్కువగా ఉండేట్లు చూసుకొనుము."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "దయచేసి దీని విలువ %(limit_value)s కు సమానముగా లేక ఎక్కువగా ఉండేట్లు చూసుకొనుము."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "మరియు"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr ""
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "ఈ ఫీల్డ్ కాళీగా ఉందకూడడు "
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "ఈ ఖాళీని తప్పనిసరిగా పూరించాలి"
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr ""
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "పూర్ణసంఖ్య"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "బూలియన్ (అవునా లేక కాదా)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "పదబంధం (గరిష్ఠం %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "కామా తో విడడీసిన సంఖ్య"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "తేదీ (సమయం లేకుండా)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "తేది (సమయం తో)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "దశగణసంఖ్య"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "ఈమెయిలు చిరునామా"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "ఫైల్ పాత్"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr ""
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "ఐపీ చిరునామా"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "పాఠ్యం"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "సమయం"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "దస్త్రం"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "బొమ్మ"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr ""
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr ""
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr ""
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "ఈ ఫీల్డ్ అవసరము"
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "పూర్ణ సంఖ్య ఇవ్వండి"
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "దయచేసి పూర్ణ సంఖ్య ఇవ్వండి"
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "దయచేసి సరైన తేది ఇవ్వండి."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "దయచేసి సరైన సమయం ఇవ్వండి."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "దయచేసి సరైన తెది/సమయం ఇవ్వండి."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr ""
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "ఫైలు సమర్పించబడలేదు."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "మీరు సమర్పించిన ఫైల్ కాళీగా ఉంది "
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "సరైన విలువల జాబితాను ఇవ్వండి."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "అంతరము"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "తొలగించు"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "దయచేసి %(field)s యొక్క నకలు విలువను సరిదిద్దుకోండి."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "దయచేసి %(field)s యొక్క నకలు విలువను సరిదిద్దుకోండి. దీని విలువ అద్వితీయమయినది "
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "దయచేసి క్రింద ఉన్న నకలు విలువను సరిదిద్దుకోండి."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "\"Control\" కాని \"Command\" మాక్ లో నొక్కి ఉంచండి , ఒకటి కన్న ఎక్కువ ఎన్నుకోవటానికి"
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "ప్రస్తుతము "
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "మార్చు"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr ""
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "తెలియనది"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "అవును"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "కాదు"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "అవును, కాదు , ఏమొ"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d బైటు"
-msgstr[1] "%(size)d బైట్లు"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s కిబై"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s మెబై"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s గిబై"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr ""
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr ""
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "అర్ధరాత్రి"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "మధ్యాహ్నం"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "సోమవారం"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "మంగళవారం"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "బుధవారం"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "గురువారం"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "శుక్రవారం"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "శనివారం"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "ఆదివారం"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "సోమ"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "మంగళ"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "బుధ"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "గురు"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "శుక్ర"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "శని"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "ఆది"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "జనవరి"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "ఫిబ్రవరి"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "మార్చి"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "ఎప్రిల్"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "మే"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "జూన్"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "జులై"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "ఆగష్టు"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "సెప్టెంబర్"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "అక్టోబర్"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "నవంబర్"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "డిసెంబర్"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "జన"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "ఫిబ్ర"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "మార్చి"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "ఎప్రి"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "మే"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "జూన్"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "జూలై"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ఆగ"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "సెప్టెం"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "అక్టో"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "నవం"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "డిసెం"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "జన."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "ఫిబ్ర."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "మార్చి"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "ఏప్రి."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "మే"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "జూన్"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "జూలై"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "ఆగ."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "సెప్టెం."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "అక్టో."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "నవం."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "డిసెం."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "జనవరి"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "ఫిబ్రవరి"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "మార్చి"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "ఏప్రిల్"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "మే"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "జూన్"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "జూలై"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "ఆగస్ట్"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "సెప్టెంబర్"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "అక్టోబర్"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "నవంబర్"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "డిసెంబర్"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr "లేదా"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr ""
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr ""
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr ""
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr ""
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr ""
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr ""
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/conf/locale/te/__init__.py b/lib/python2.7/site-packages/django/conf/locale/te/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/te/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/te/formats.py b/lib/python2.7/site-packages/django/conf/locale/te/formats.py
deleted file mode 100644
index 02399d6..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/te/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j F Y'
-TIME_FORMAT = 'g:i:s A'
-# DATETIME_FORMAT =
-# YEAR_MONTH_FORMAT =
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'j M Y'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-# DECIMAL_SEPARATOR =
-# THOUSAND_SEPARATOR =
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/th/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/th/LC_MESSAGES/django.mo
deleted file mode 100644
index a028587..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/th/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/th/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/th/LC_MESSAGES/django.po
deleted file mode 100644
index 6ff3284..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/th/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1287 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Suteepat Damrongyingsupab <tianissimo@hotmail.com>, 2011-2012
-# Suteepat Damrongyingsupab <tianissimo@hotmail.com>, 2013
-# Vichai Vongvorakul <vongvichai@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/"
-"th/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: th\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "อัฟฟริกัน"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "อารบิก"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "อาเซอร์ไบจาน"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "บัลแกเรีย"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "เบลารุส"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "เบ็งกาลี"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "เบรตัน"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "บอสเนีย"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "คาตะลาน"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "เช็ก"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "เวลส์"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "เดนมาร์ก"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "เยอรมัน"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "กรีก"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "อังกฤษ"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "อังกฤษ - สหราชอาณาจักร"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "เอสเปรันโต"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "สเปน"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "สเปน - อาร์เจนติน่า"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "เม็กซิกันสเปน"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "นิการากัวสเปน"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "เวเนซุเอลาสเปน"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "เอสโตเนีย"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "แบ็ซค์"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "เปอร์เชีย"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "ฟินแลนด์"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "ฝรั่งเศส"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "ฟริเซียน"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "ไอริช"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "กาลิเซีย"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "ฮีบรู"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "ฮินดี"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "โครเอเชีย"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "ฮังการี"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "ภาษากลาง"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "อินโดนิเซีย"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "ไอซ์แลนด์"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "อิตาลี"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "ญี่ปุ่น"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "จอร์เจีย"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "คาซัค"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "เขมร"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "กัณณาท"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "เกาหลี"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "ลักแซมเบิร์ก"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "ลิทัวเนีย"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "ลัตเวีย"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "มาซิโดเนีย"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "มลายู"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "มองโกเลีย"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "พม่า"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "นอร์เวย์ - Bokmal"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "เนปาล"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "ดัตช์"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "นอร์เวย์ - Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "ปัญจาบี"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "โปแลนด์"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "โปรตุเกส"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "โปรตุเกส (บราซิล)"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "โรมาเนีย"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "รัสเซีย"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "สโลวัก"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "สโลวีเนีย"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "อัลแบเนีย"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "เซอร์เบีย"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "เซอร์เบียละติน"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "สวีเดน"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "สวาฮีลี"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "ทมิฬ"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "เตลุคู"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "ไทย"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "ตุรกี"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "ตาตาร์"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "อัดเมิร์ท"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "ยูเครน"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "เออร์ดู"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "เวียดนาม"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "จีนตัวย่อ"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "จีนตัวเต็ม"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "กรุณาใส่ค่าที่ถูกต้อง"
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "ใส่ URL ที่ถูกต้อง"
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "ป้อนที่อยู่อีเมลที่ถูกต้อง"
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "ใส่ 'slug' ประกอปด้วย ตัวหนังสือ ตัวเลข เครื่องหมายขีดล่าง หรือ เครื่องหมายขีด"
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "กรุณาใส่หมายเลขไอพีที่ถูกต้อง"
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "กรอก IPv6 address ให้ถูกต้อง"
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "กรอก IPv4 หรือ IPv6 address ให้ถูกต้อง"
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "ใส่ตัวเลขที่คั่นด้วยจุลภาคเท่านั้น"
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "ค่านี้ต้องเป็น %(limit_value)s (ปัจจุบันคือ %(show_value)s)"
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "ค่านี้ต้องน้อยกว่าหรือเท่ากับ %(limit_value)s"
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "ค่านี้ต้องมากกว่าหรือเท่ากับ %(limit_value)s"
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s จะต้องไม่ซ้ำกันสำหรับ %(date_field)s %(lookup)s"
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "และ"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s และ %(field_label)s มีอยู่แล้ว"
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "ฟิลด์นี้ไม่สารถปล่อยว่างได้"
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "ฟิลด์นี้เว้นว่างไม่ได้"
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "ฟิลด์ข้อมูล: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "จำนวนเต็ม"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "ตรรกะแบบบูลหมายถึง ค่า\"จริง\" (True) หรือ \"ไม่จริง \" (False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "สตริง(ได้ถึง %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "จำนวนเต็มแบบมีจุลภาค"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "วันที่ (ไม่มีเวลา)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "วันที่ (พร้อมด้วยเวลา)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "เลขฐานสิบหรือเลขทศนิยม"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "อีเมล"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "ตำแหน่งไฟล์"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "เลขทศนิยม"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "จำนวนเต็ม (8 byte)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 address"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "หมายเลขไอพี"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr ""
-"ตรรกะแบบบูลหมายถึง ค่า\"จริง\" (True) หรือ \"ไม่จริง \" (False) หรือ \"ไม่มี\" (None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "จํานวนเต็มบวก"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "จํานวนเต็มบวกขนาดเล็ก"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (ถึง %(max_length)s )"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "จำนวนเต็มขนาดเล็ก"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "ข้อความ"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "เวลา"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "ไฟล์"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "รูปภาพ"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Foreign Key (ชนิดของข้อมูลจะถูกกำหนดจากฟิลด์ที่เกี่ยวข้อง)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "ความสัมพันธ์แบบหนึ่งต่อหนึ่ง"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "ความสัมพันธ์แบบ many-to-many"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "ฟิลด์นี้จำเป็น"
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "กรอกหมายเลข"
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "กรอกหมายเลข"
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "กรุณาใส่วัน"
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "กรุณาใส่เวลา"
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "กรุณาใส่วันเวลา"
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "ไม่มีไฟล์ใดถูกส่ง. ตรวจสอบ encoding type ในฟอร์ม."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "ไม่มีไฟล์ใดถูกส่ง"
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "ไฟล์ที่ส่งว่างเปล่า"
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "โปรดเลือกไฟล์หรือติ๊ก clear checkbox อย่างใดอย่างหนึ่ง"
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr "อัพโหลดรูปที่ถูกต้อง. ไฟล์ที่อัพโหลดไปไม่ใช่รูป หรือรูปเสียหาย."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "เลือกตัวเลือกที่ถูกต้อง. %(value)s ไม่ใช่ตัวเลือกที่ใช้ได้."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "ใส่รายการ"
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "เรียงลำดับ"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "ลบ"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "โปรดแก้ไขข้อมูลที่ซ้ำซ้อนใน %(field)s"
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "โปรดแก้ไขข้อมูลที่ซ้ำซ้อนใน %(field)s ซึ่งจะต้องไม่ซ้ำกัน"
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"โปรดแก้ไขข้อมูลซ้ำซ้อนใน %(field_name)s ซึ่งจะต้องไม่ซ้ำกันสำหรับ %(lookup)s ใน "
-"%(date_field)s"
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "โปรดแก้ไขค่าที่ซ้ำซ้อนด้านล่าง"
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Foreign key ไม่สัมพันธ์กับ parent primary key"
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "เลือกตัวเลือกที่ถูกต้อง. ตัวเลือกนั้นไม่สามารถเลือกได้."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "กดปุ่ม \"Control\", หรือ \"Command\" บน Mac ค้างไว้, เพื่อเลือกหลายๆตัวเลือก"
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s ไม่สามารถแปลงให้อยู่ใน %(current_timezone)s time zone ได้ เนื่องจาก "
-"time zone ไม่ชัดเจน หรือไม่มีอยู่จริง"
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "ปัจจุบัน"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "เปลี่ยนแปลง"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "ล้าง"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "ไม่รู้"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "ใช่"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "ไม่ใช่"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "ใช่,ไม่ใช่,อาจจะ"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d ไบต์"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "เที่ยงคืน"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "เที่ยงวัน"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "จันทร์"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "อังคาร"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "พุธ"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "พฤหัสบดี"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "ศุกร์"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "เสาร์"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "อาทิตย์"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "จ."
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "อ."
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "พ."
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "พฤ."
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "ศ."
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "ส."
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "อ."
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "มกราคม"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "กุมภาพันธ์"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "มีนาคม"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "เมษายน"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "พฤษภาคม"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "มิถุนายน"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "กรกฎาคม"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "สิงหาคม"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "กันยายน"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "ตุลาคม"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "พฤศจิกายน"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "ธันวาคม"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "ม.ค."
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "ก.พ."
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "มี.ค."
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "เม.ย."
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "พ.ค."
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "มิ.ย."
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "ก.ค."
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ส.ค."
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "ก.ย."
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "ต.ค."
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "พ.ย."
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "ธ.ค."
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "ม.ค."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "ก.พ."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "มี.ค."
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "เม.ษ."
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "พ.ค."
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "มิ.ย."
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "ก.ค."
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "ส.ค."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "ก.ย."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "ต.ค."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "พ.ย."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "ธ.ค."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "มกราคม"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "กุมภาพันธ์"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "มีนาคม"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "เมษายน"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "พฤษภาคม"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "มิถุนายน"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "กรกฎาคม"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "สิงหาคม"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "กันยายน"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "ตุลาคม"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "พฤศจิกายน"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "ธันวาคม"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "หรือ"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d ปี"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d เดือน"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d สัปดาห์"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d วัน"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d ชั่วโมง"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d นาที"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 นาที"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "ไม่ได้รับอนุญาตให้ใช้ Directory indexes ที่นี่"
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" ไม่มีอยู่"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "ดัชนีของ %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "ไม่ระบุปี"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "ไม่ระบุเดือน"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "ไม่ระบุวัน"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "ไม่ระบุสัปดาห์"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "ไม่มี %(verbose_name_plural)s ที่ใช้ได้"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"%(verbose_name_plural)s ในอนาคตไม่สามารถใช้ได้ เนื่องจาก %(class_name)s."
-"allow_future มีค่าเป็น False"
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "สตริงค์ '%(datestr)s' ของวันไม่ถูกต้องกับฟอร์แมต '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "ไม่พบ %(verbose_name)s จาก query"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "ไม่ใช่หน้าสุดท้าย และไม่สามารถค่าแปลงเป็น int ได้"
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "หน้าไม่ถูกต้อง (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "list ว่างเปล่า และ '%(class_name)s.allow_empty' มีค่าเป็น False"
diff --git a/lib/python2.7/site-packages/django/conf/locale/th/__init__.py b/lib/python2.7/site-packages/django/conf/locale/th/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/th/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/th/formats.py b/lib/python2.7/site-packages/django/conf/locale/th/formats.py
deleted file mode 100644
index 7847a7c..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/th/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j F Y'
-TIME_FORMAT = 'G:i:s'
-DATETIME_FORMAT = 'j F Y, G:i:s'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'j M Y'
-SHORT_DATETIME_FORMAT = 'j M Y, G:i:s'
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = '.'
-THOUSAND_SEPARATOR = ','
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/tr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/tr/LC_MESSAGES/django.mo
deleted file mode 100644
index 0e74dd6..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/tr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/tr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/tr/LC_MESSAGES/django.po
deleted file mode 100644
index b2bed9a..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/tr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1345 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ahmet Emre Aladağ <emre.aladag@isik.edu.tr>, 2013
-# Caner BAŞARAN <basaran.caner@gmail.com>, 2013
-# cihad <cihadgundogdu@gmail.com>, 2012
-# cihad <cihadgundogdu@gmail.com>, 2013
-# Gökmen Görgen <gokmen@alageek.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# mesutcang <mesutcang@gmail.com>, 2013
-# Murat Çorlu <muratcorlu@gmail.com>, 2012
-# Murat Sahin <martinamca@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-10-23 15:55+0000\n"
-"Last-Translator: Ahmet Emre Aladağ <emre.aladag@isik.edu.tr>\n"
-"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/"
-"tr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Güney Afrika Hollanda Lehçesi"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Arapça"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Azerice"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Bulgarca"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Beyaz Rusça"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Bengali Dili"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Bretonca"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Boşnakça"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Katalanca"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Çekçe"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Galce"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Danca"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Almanca"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Yunanca"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "İngilizce"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "İngiltere İngilizce"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Esperanto"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "İspanyolca"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Arjantin İspanyolcası"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Meksika İspanyolcası"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Nikaragua İspanyolcası"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Venezüella İspanyolcası"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Estonca"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Baskça"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Farsça"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Fince"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Fransızca"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Frisce"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "İrlandaca"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Galler Dili"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "İbranice"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Hinduca"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Hırvatça"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Macarca"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Interlingua"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Endonezce"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "İzlanda dili"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "İtalyanca"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Japonca"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Gürcüce"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Kazakça"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Kamboçyaca"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Kannada Dili"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Korece"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Lüksemburgca"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Litovca"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Leton Dili"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Makedonca"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Malayamca"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Moğolca"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Birmanya dili"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Norveçce (Bokmal)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nepalce"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Flamanca"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Norveçce (Nynorsk)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Osetçe"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Punjabice"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Lehçe"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Portekizce"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Brezilya Portekizcesi"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Romence"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Rusça"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Slovakça"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Slovence"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Arnavutça"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Sırpça"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Sırp Latini"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "İsveççe"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Svahili Dili"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tamilce"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugu Dili"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Tayca"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Türkçe"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tatarca"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurtça"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Ukraynaca"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urduca"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Vietnamca"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Basiteştirilmiş Çince"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Geleneksel Çince"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Geçerli bir değer girin."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Geçerli bir URL girin."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Geçerli bir tamsayı girin."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Geçerli bir e-posta adresi girin."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "Lütfen sadece harf, rakam, altçizgi veya çizgiden oluşan değer girin."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Geçerli bir IPv4 adresi girin."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Geçerli bir IPv6 adresi girin."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Geçerli bir IPv4 veya IPv6 adresi girin"
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Sadece virgülle ayrılmış sayılar girin."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Bu değerin en az %(limit_value)s karakterden oluştuğundan emin olun (şu anki "
-"karakter sayısı: %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-"Bu değerin %(limit_value)s karakterden az veya eşit olduğundan emin olun."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-"Bu değerin %(limit_value)s karakterden çok veya eşit olduğundan emin olun."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Bu değerin en az %(limit_value)d karakterden oluştuğundan emin olun (şu anki "
-"karakter sayısı: %(show_value)d)."
-msgstr[1] ""
-"Bu değerin en az %(limit_value)d karakterden oluştuğundan emin olun (şu anki "
-"karakter sayısı: %(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Bu değerin en fazla %(limit_value)d karakterden oluştuğundan emin olun (şu "
-"anki karakter sayısı: %(show_value)d)."
-msgstr[1] ""
-"Bu değerin en fazla %(limit_value)d karakterden oluştuğundan emin olun (şu "
-"anki karakter sayısı: %(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"%(field_name)s değeri %(date_field)s alanı %(lookup)s işlemi için tek "
-"olmalıdır."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "ve"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(field_label)s alanına sahip %(model_name)s zaten mevcuttur."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "%(value)r değeri geçerli bir seçim değildir."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Bu alan boş bırakılamaz."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Bu alan boş bırakılamaz. "
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Alan türü: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Tamsayı"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "'%(value)s' değeri bir tamsayı olmalıdır."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "'%(value)s' değeri Doğru-True veya Yanlış-False olmalıdır."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Mantıksal (True ya da False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Karakter disizi (en fazla %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Virgülle ayrılmış tamsayılar"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"'%(value)s' değeri geçersiz tarih formatı. Bu YYYY-AA-GG biçiminde olmalıdır."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"'%(value)s' değeri doğru bir biçime sahip (YYYY-MM-DD) ancak bu geçersiz bir "
-"tarih."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Tarih (saat yok)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"'%(value)s' değeri geçersiz bir biçime sahip. YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ] biçiminde olması gerekiyor."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"'%(value)s' biçimsel olarak doğru (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) ancak "
-"bu geçersiz bir tarih/zaman."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Tarih (saat var)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "'%(value)s' değeri bir ondalık sayı olmalıdır."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Ondalık sayı"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-posta adresi"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Dosya yolu"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "'%(value)s' değeri float olmalı"
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Floating point rakamı"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Büyük (8 bayt) integer"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 adresi"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP adresi"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "'%(value)s' değeri None, True veya False olmak zorundadır."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Mantıksal (True, False, ya da None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Positif sayı"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Pozitif küçük sayı"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (%(max_length)s karaktere kadar)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Küçük sayı"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Metin"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"'%(value)s' değerinin geçersiz bir biçimi var. Bunun HH:MM[:ss[.uuuuuu]] "
-"biçiminde olması gerekiyor."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"'%(value)s' değeri doğru biçime sahip (HH:MM[:ss[.uuuuuu]]) ancak bu "
-"geçersiz bir zaman."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Saat"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Ham ikili veri"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Dosya"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Resim"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "Birincil anahtarı %(pk)r olan %(model)s nesnesi mevcut değil."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Yabancı Anahtar (türü ilişkili alana göre belirlenir)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Bire-bir ilişki"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Çoğa-çok ilişki"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Bu alan zorunludur."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Tam sayı girin."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Bir sayı girin."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Toplamda en fazla %(max)s rakam olduğundan emin olun."
-msgstr[1] "Toplamda en fazla %(max)s rakam olduğundan emin olun."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "En fazla %(max)s onluk yerin olduğundan emin olun."
-msgstr[1] "En fazla %(max)s onluk yerin olduğundan emin olun."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] "Onluk kısımdan önce en fazla %(max)s rakam olduğundan emin olun."
-msgstr[1] "Onluk kısımdan önce en fazla %(max)s rakam olduğundan emin olun."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Geçerli bir tarih girin."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Geçerli bir zaman girin."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Geçerli bir tarih/zaman girin."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Dosya gönderilmedi. Formdaki kodlama türünü kontrol edin."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Hiçbir dosya gönderilmedi."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Gönderilen dosya boş."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Bu dosya adının en fazla %(max)d karakterden oluştuğundan emin olun (şu anki "
-"karakter sayısı: %(length)d)."
-msgstr[1] ""
-"Bu dosya adının en fazla %(max)d karakterden oluştuğundan emin olun (şu anki "
-"karakter sayısı: %(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Lütfen ya dosya seçin, ya da sıfırla kutucuğunu işaretleyin. İkisini aynı "
-"anda yapmayın."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Geçerli bir resim girin. Gönderdiğiniz dosya resim değil, ya da bozuk bir "
-"dosya."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Geçerli bir seçimde bulunun; %(value)s mevcut değerlerden biri değil."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Değer listesi giriniz."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Gizli alan %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "ManagementForm verisi eksik veya tahrif edilmiş"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Lütfen %d ya da daha az form gönderin."
-msgstr[1] "Lütfen %d ya da daha az form gönderin."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Sıralama"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Sil"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Lütfen %(field)s alanları için mükerrer kayıt problemini düzeltin."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Lütfen %(field)s alanı için mükerrer verileri düzeltin, bunlar eşsiz "
-"olmalıdır."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Lütfen %(field_name)s alanı için mükerrer verileri düzeltin, bunlar "
-"%(date_field)s alanı %(lookup)s sorgulamaları için eşsiz olmalıdır."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Lütfen aşağıdaki mükerrer kayıtları düzeltin."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"İçeride belirtilmiş yabancı anahtar ebeveyin nesnenin birincil anahtarı ile "
-"uyuşmadı."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Geçerli bir seçimde bulunun; seçiminiz mevcut değerlerden birisi değil."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" birincil anahtar için geçerli bir değer değil."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"\"Ctrl\" (Mac'de \"Command\") tuşunu basılı tutularak birden fazla seçim "
-"yapılabilir."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-" %(datetime)s %(current_timezone)s saat dilimine yorumlanamadı; bu belirsiz "
-"olabilir ya da olmayabilir."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Geçerli"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Düzenle"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Sıfırla"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Bilinmiyor"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Evet"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Hayır"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "evet,hayır,olabilir"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d bayt"
-msgstr[1] "%(size)d bayt"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "ö.s."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "ö.ö."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "ÖS"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "ÖÖ"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "gece yarısı"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "öğlen"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Pazartesi"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Salı"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Çarşamba"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Perşembe"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Cuma"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Cumartesi"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Pazar"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Pzt"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Sal"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Çrş"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Prş"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Cum"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Cmt"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Paz"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Ocak"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Şubat"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Mart"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Nisan"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Mayıs"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Haziran"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Temmuz"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Ağustos"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Eylül"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Ekim"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Kasım"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Aralık"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "oca"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "şub"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "mar"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "nis"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "may"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "haz"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "tem"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "ağu"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "eyl"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "eki"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "kas"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "ara"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Oca."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Şub."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Mart"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Nisan"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Mayıs"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Haziran"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Temmuz"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Ağu."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Eyl."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Eki."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Kas."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Ara."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Ocak"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Şubat"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Mart"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Nisan"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Mayıs"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Haziran"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Temmuz"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Ağustos"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Eylül"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Ekim"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Kasım"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Aralık"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Pillow da PIL de import edilemedi: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "PIL için '_imaging' modülü import edilemedi: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Bu, geçerli bir IPv6 adresi değil."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "ya da"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d yıl"
-msgstr[1] "%d yıl"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d ay"
-msgstr[1] "%d ay"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d hafta"
-msgstr[1] "%d hafta"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d gün"
-msgstr[1] "%d gün"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d saat"
-msgstr[1] "%d saat"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d dakika"
-msgstr[1] "%d dakika"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 dakika"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Klasör indeksi görünümü kapalı."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" yok"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "%(directory)s indeksi"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Yıl bilgisi belirtilmedi"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Ay bilgisi belirtilmedi"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Gün bilgisi belirtilmedi"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Hafta bilgisi belirtilmedi"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Mevcut %(verbose_name_plural)s kaydı bulunamadı"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Gelecek %(verbose_name_plural)s mevcut değil, çünkü %(class_name)s."
-"allow_future değeri False olarak tanımlıdır."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Geçersiz tarih dizisi: '%(datestr)s', format: '%(format)s' "
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Sorguya uygun herhangi bir %(verbose_name)s bulunamadı"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Sayfa 'sonuncu' değil, veya int'e çevirilemez."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Geçersiz sayfa (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Liste boş ve '%(class_name)s.allow_empty' değeri False olarak tanımlı."
diff --git a/lib/python2.7/site-packages/django/conf/locale/tr/__init__.py b/lib/python2.7/site-packages/django/conf/locale/tr/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/tr/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/tr/formats.py b/lib/python2.7/site-packages/django/conf/locale/tr/formats.py
deleted file mode 100644
index 395fca9..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/tr/formats.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'd F Y'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = 'd F Y H:i:s'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'd F'
-SHORT_DATE_FORMAT = 'd M Y'
-SHORT_DATETIME_FORMAT = 'd M Y H:i:s'
-FIRST_DAY_OF_WEEK = 1 # Pazartesi
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-DATE_INPUT_FORMATS = (
- '%d/%m/%Y', '%d/%m/%y', # '25/10/2006', '25/10/06'
- '%y-%m-%d', # '06-10-25'
- # '%d %B %Y', '%d %b. %Y', # '25 Ekim 2006', '25 Eki. 2006'
-)
-DATETIME_INPUT_FORMATS = (
- '%d/%m/%Y %H:%M:%S', # '25/10/2006 14:30:59'
- '%d/%m/%Y %H:%M:%S.%f', # '25/10/2006 14:30:59.000200'
- '%d/%m/%Y %H:%M', # '25/10/2006 14:30'
- '%d/%m/%Y', # '25/10/2006'
-)
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-NUMBER_GROUPING = 3
diff --git a/lib/python2.7/site-packages/django/conf/locale/tt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/tt/LC_MESSAGES/django.mo
deleted file mode 100644
index d608e81..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/tt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/tt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/tt/LC_MESSAGES/django.po
deleted file mode 100644
index 18c9da0..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/tt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1297 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Azat Khasanshin <lordofbazuks@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/"
-"tt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tt\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Гарәп теле"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Азәрбайҗан"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Болгар теле"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Бенгалия теле"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Босния теле"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Каталан теле"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Чех теле"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Уэльс теле"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Дания теле"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Алман теле"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Грек теле"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Инглиз теле"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Британ инглиз теле"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Испан теле"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Аргентина испан теле"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Мексикалы испан"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Никарагуалы испан"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Эстон теле"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Баск теле"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Фарсы теле"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Финн теле"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Француз теле"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Фриз теле"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Ирланд теле"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Галлий теле"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Яһүд теле"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Хинд теле"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Хорват теле"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Венгр теле"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Индонезия теле"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Исланд теле"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Итальян теле"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Япон теле"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Грузин теле"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Кхмер теле"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Каннада теле"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Корея теле"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Литвалылар теле"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Латвия теле"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Македон теле"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Малаялам теле"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Монгол теле"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Норвегиялеләр (Букмол) теле"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Голланд теле"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Норвегиялеләр (Нюнорск) теле"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Паджаби теле"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Поляк теле"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Португал теле"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Бразилия португал теле"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Румын теле"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Рус теле"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Словак теле"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Словен теле"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Албан теле"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Серб теле"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Серб теле (латин алфавиты)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Швед теле"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Тамиль теле"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Телугу теле"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Тай теле"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Төрек теле"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Украин теле"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Урду"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Вьетнам теле"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Гадиләштерелгән кытай теле"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Традицион кытай теле"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Дөрес кыйммәтне кертегез."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Рөхсәт ителгән URLны кертегез."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Кыйммәт хәрефләрдән, сан билгеләреннән, астына сызу билгесеннән яки дефистан "
-"торырга тиеш."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Рөхсәт ителгән IPv4 адресын кертегез."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr ""
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr ""
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Өтерләр белән бүленгән сан билгеләрен кертегез"
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Бу кыйммәтнең %(limit_value)s булуын тикшерегез (хәзер ул - %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-"Бу кыйммәтнең %(limit_value)s карата кечерәк яки тигез булуын тикшерегез."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-"Бу кыйммәтнең %(limit_value)s карата зуррак яки тигез булуын тикшерегез."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"%(field_name)s кырындагы кыйммәт %(date_field)s кырындагы %(lookup)s өчен "
-"уникаль булырга тиеш."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "һәм"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "Мондый %(field_label)s белән булган %(model_name)s инде бар."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Бу кырның кыйммәте NULL булырга тиеш түгел."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Бу кыр буш булырга тиеш түгел."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "%(field_type)s типтагы кыр"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Бөтен сан"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Логик (True яисә False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Юл (күп дигәндә %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Өтерләр белән бүленгән бөтен саннар"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Дата (вакыт күрсәтмәсе булмаган)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Дата (вакыт күрсәтмәсе белән)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Унарлы вакланма"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Файл юлы"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Күчерелүчән өтер белән булган сан"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Зур бөтен (8 байт)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP-адрес"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Логик (True, False я None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Текст"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Вакыт"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr ""
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr ""
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Тыш ачкыч (тип бәйле кыр буенча билгеләнгән)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "\"Бергә бер\" элемтәсе"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "\"Күпкә куп\" элемтәсе"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Мәҗбүри кыр."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Бөтен сан кертегез."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Сан кертегез."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Рөхсәт ителгән датаны кертегез."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Рөхсәт ителгән вакытны кертегез."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Рөхсәт ителгән дата һәм вакытны кертегез."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Һишбер файл җибәрелмәгән. Форма кодлавын тикшерегез."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Һишбер файл җибәрелмәгән."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Җибәрелгән файл буш."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Зинһар, җибәрегез файлны яисә бушайту байракчасын билгеләгез, икесен бергә "
-"түгел."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Рөхсәт ителгән рәсемне йөкләгез. Сез йөкләгән файл рәсем түгел яисә бозылган."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Дөрес тәкъдимне сайлагыз. Рөхсәт ителгән кыйммәтләр арасында %(value)s юк. "
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Кыйммәтләр исемлеген кертегез."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Тәртип"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Бетерергә"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Зинһар, %(field)s кырындагы кабатлана торган кыйммәтне төзәтегез."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Зинһар, %(field)s кырындагы кыйммәтне төзәтегез, ул уникаль булырга тиеш."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Зинһар, %(field_name)s кырындагы кыйммәтне төзәтегез, ул %(date_field)s "
-"кырындагы %(lookup)s өчен уникаль булырга тиеш."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Зинһар, астагы кабатлана торган кыйммәтләрне төзәтегез."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Тыш ачкыч атаның баш ачкычы белән туры килмиләр."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Дөрес тәкъдимне сайлагыз. Рөхсәт ителгән кыйммәтләр арасында сезнең вариант "
-"юк."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Берничә кыйммәт сайлау өчен \"Control\" (Mac санакларында \"Command\") басып "
-"торыгыз."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Хәзерге вакытта"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Үзгәртергә"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Бушайтырга"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Билгесез"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Әйе"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Юк"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "әйе,юк,бәлки"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d байт"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s КБ"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s МБ"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s ГБ"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s ТБ"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s ПБ"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "т.с."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "т.к."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "ТС"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "ТК"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "төн уртасы"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "көн уртасы"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Дүшәмбе"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Сишәмбе"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Чәршәмбе"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Пәнҗешәмбе"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Җомга"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Шимбә"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Якшәмбе"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Дүш"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Сиш"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Чәр"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Пнҗ"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Җом"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Шим"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Якш"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Гыйнвар"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Февраль"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Март"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Апрель"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Май"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Июнь"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Июль"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Август"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Сентябрь"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Октябрь"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Ноябрь"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Декабрь"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "гый"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "фев"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "мар"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "апр"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "май"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "июн"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "июл"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "авг"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "сен"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "окт"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "ноя"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "дек"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Гый."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Фев."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Март"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Апрель"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Май"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Июнь"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Июль"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Авг."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Сен."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Окт."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Ноя."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Дек."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "гыйнвар"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "февраль"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "март"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "апрель"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "май"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "июнь"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "июль"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "август"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "сентябрь"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "октябрь"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "ноябрь"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "декабрь"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr "я"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Ел билгеләнмәгән"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Ай билгеләнмәгән"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Көн билгеләнмәгән"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Атна билгеләнмәгән"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Файдалана алырлык %(verbose_name_plural)s юк"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"%(class_name)s.allow_future False булуы сәбәпле, киләсе "
-"%(verbose_name_plural)s файдалана алырлык түгел"
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Дөрес булмаган дата '%(datestr)s', бирелгән формат '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Таләпкә туры килгән %(verbose_name)s табылмаган"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "Сәхифә ни соңгы түгел, ни аны бөтен санга әверелдереп булмый"
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Буш исемлек һәм '%(class_name)s.allow_empty' - False"
diff --git a/lib/python2.7/site-packages/django/conf/locale/udm/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/udm/LC_MESSAGES/django.mo
deleted file mode 100644
index 1591e3e..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/udm/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/udm/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/udm/LC_MESSAGES/django.po
deleted file mode 100644
index f400bde..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/udm/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1280 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Udmurt (http://www.transifex.com/projects/p/django/language/"
-"udm/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: udm\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Африкаанс"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Араб"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Азербайджан"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Болгар"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Беларус"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Бенгал"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Бретон"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Босниец"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Каталан"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Чех"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Уэльс"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Датчан"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Немец"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Грек"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Англи"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Британиысь англи"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Эсперанто"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Испан"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Аргентинаысь испан"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Мексикаысь испан"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Никарагуаысь испан"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Венесуэлаысь испан"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Эстон"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Баск"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Перс"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Финн"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Француз"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Фриз"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Ирланд"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Галисий"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Иврит"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Хинди"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Хорват"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Венгер"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Интерлингва"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Индонези"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Исланд"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Итальян"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Япон"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Грузин"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Казах"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Кхмер"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Каннада"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Корей"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Люксембург"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Литва"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Латвий"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Македон"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Малаялам"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Монгол"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Норвег (букмол)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Непал"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Голланд"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Норвег (нюнорск)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Панджаби"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Поляк"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Португал"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Бразилиысь португал"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Румын"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Ӟуч"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Словак"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Словен"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Албан"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Серб"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Серб (латиницаен)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Швед"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Суахили"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Тамиль"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Телугу"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Тай"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Турок"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Бигер"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Удмурт"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Украин"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Урду"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Вьетнам"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Китай (капчиятэм)"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Китай (традици)"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Тазэ шонер гожтэ."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Шонер URL гожтэ."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Электорн почта адресэз шонер гожтэ"
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Татчын букваос, лыдпусъёс, улӥ гож пусъёс но дефисъёс гинэ гожтыны яра."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Шонер IPv4-адрес гожтэ."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Шонер IPv6-адрес гожтэ."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Шонер IPv4 яке IPv6 адрес гожтэ."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Запятойёсын висъям лыдпусъёсты гожтэ"
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Эскере, та %(limit_value)s шуыса. Али татын %(show_value)s."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Талы %(limit_value)s-лэсь бадӟымгес луыны уг яра."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Талы %(limit_value)s-лэсь ӧжытгес луыны уг яра."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "но"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "Таӵе %(field_label)s-ен %(model_name)s вань ини."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Та NULL луыны уг яра."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Та буш луыны уг яра."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "%(field_type)s типъем бусы"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "целой"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "True яке False"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Чур (%(max_length)s пусозь кузьда)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Запятоен висъям быдэс лыдъёс"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Дата (час-минут пусйытэк)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Дата но час-минут"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Десятичной лыд."
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Электрон почта адрес"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Файллэн нимыз"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Вещественной лыд"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Бадӟым (8 байтъем) целой лыд"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 адрес"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP адрес"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "True, False яке None"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Целой, нольлэсь бадӟым лыд"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Нольлэсь бадӟым пичи целой лыд"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Компьютерной ним (%(max_length)s пусозь кузьда)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Пичи целой лыд"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Текст"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Час-минут"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Файл"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Суред"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Мукет моделен герӟет (тип герӟано бусыя валамын)."
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Одӥг-одӥг герӟет"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Трос-трос герӟет"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Та клуэ."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Целой лыд гожтэ."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Лыд гожтэ."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Шонер дата гожтэ."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Шонер час-минут гожтэ."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Шонер дата но час-минут гожтэ."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Одӥг файл но лэзьымтэ. Формалэсь код."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Файл лэземын ӧвӧл."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Лэзем файл буш."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Файл лэзе яке файл ӵушоно шуыса пусъе, огдыръя соиз но, таиз но уг яра."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr "Суред лэзе. Тӥляд файлды лэзьымтэ яке со суред ӧвӧл."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Шонер вариант быръе. %(value)s вариантъёс пӧлын ӧвӧл."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Список лэзе."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Рад"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Ӵушоно"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr ""
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr ""
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Тросэз быръён понна \"Control\", (яке, Mac-ын, \"Command\") кутэлэ."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Али"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Тупатъяно"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Буш кароно"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Тодымтэ"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Бен"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Ӧвӧл"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "бен,ӧвӧл,уг тодӥськы"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d байт"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s КБ"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s МБ"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s МБ"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s ТБ"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s ПБ"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "лымшор бере"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "лымшор азе"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "лымшор бере"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "лымшор азе"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "уйшор"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "лымшор"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Вордӥськон"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Пуксён"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Вирнунал"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Покчиарня"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Удмуртарня"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Кӧснунал"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Арнянунал"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "врд"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "пкс"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "врн"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "пкч"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "удм"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "ксн"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "арн"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "толшор"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "тулыспал"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "южтолэзь"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "оштолэзь"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "куартолэзь"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "инвожо"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "пӧсьтолэзь"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "гудырикошкон"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "куарусён"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "коньывуон"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "шуркынмон"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "толсур"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "тшт"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "тпт"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "южт"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "ошт"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "крт"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "ивт"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "пст"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "гкт"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "кут"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "квт"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "шкт"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "тст"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "тшт"
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "тпт"
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "южт"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "ошт"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "крт"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "ивт"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "пст"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "гкт"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "кут"
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "квт"
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "шкт"
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "тст"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "толшоре"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "тулыспалэ"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "южтолэзе"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "оштолэзе"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "куартолэзе"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "инвожое"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "пӧсьтолэзе"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "гудырикошконэ"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "куарусёнэ"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "коньывуонэ"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "шуркынмонэ"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "толсуре"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "яке"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Папкаослэсь пуштроссэс татын учкыны уг яра."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" ӧвӧл"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "%(directory)s папкалэн пушторсэз"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr ""
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr ""
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr ""
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr ""
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr ""
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr ""
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/conf/locale/uk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/uk/LC_MESSAGES/django.mo
deleted file mode 100644
index df280e9..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/uk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/uk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/uk/LC_MESSAGES/django.po
deleted file mode 100644
index e6125c6..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/uk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1367 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Boryslav Larin <brabadu@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Alex Bolotov <oleksandr.bolotov@gmail.com>, 2013
-# Roman Kozlovskiy <krzroman@gmail.com>, 2012
-# Sergiy Kuzmenko <s.kuzmenko@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-11-12 23:00+0000\n"
-"Last-Translator: Alex Bolotov <oleksandr.bolotov@gmail.com>\n"
-"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Африканська"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Арабська"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Азербайджанська"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Болгарська"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Білоруська"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Бенгальська"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Бретонська"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Боснійська"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Каталонська"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Чеська"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Валлійська"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Датська"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Німецька"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Грецька"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Англійська"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "Англійська (Великобританія)"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Есперанто"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Іспанська"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Іспанська (Аргентина)"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Мексиканьска (іспанська)"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Нікарагуанська іспанська"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Венесуельська іспанська"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Румунська"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Баскська"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Перська"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Фінська"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Французька"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Фризька"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Ірландська"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Галіційська"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Іврит"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Хінді"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Хорватська"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Угорська"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Інтерлінгва"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Індонезійська"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Ісландська"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Італійська"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Японська"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Грузинська"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Казахська"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Кхмерська"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Канадська"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Корейська"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Люксембурзький"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Литовська"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Латвійська"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Македонська"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Малаялам"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Монгольська"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "Бірманська"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Норвезька (Букмол)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Непальська"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Голландська"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Норвезька (Нюнорськ)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Осетинська"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Панджабі"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Польська"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Португальська"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Бразильска"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Румунська"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Російська"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Словацька"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Словенська"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Албанська"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Сербська"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Сербська (латинська)"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Шведська"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Суахілі"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Тамільська"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Телугу"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Тайська"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Турецька"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Татарська"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Удмуртський"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Українська"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Урду"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "В'єтнамська"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Китайська спрощена"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Китайська традиційна"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Уведіть коректне значення."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Уведіть коректний URL."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr "Введіть допустиме ціле число."
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Введіть коректну email адресу."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr ""
-"Введіть коректне значення 'slug' (короткого заголовку), що може містити "
-"тільки літери, числа, символи підкреслювання та дефіси."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Введіть коректну IPv4 адресу."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Введіть дійсну IPv6 адресу."
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Введіть дійсну IPv4 чи IPv6 адресу."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Введіть тільки цифри, що розділені комами."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"Переконайтеся, що це значення дорівнює %(limit_value)s (зараз "
-"%(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Переконайтеся, що це значення менше чи дорівнює %(limit_value)s."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Переконайтеся, що це значення більше чи дорівнює %(limit_value)s."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Переконайтеся, що це значення містить не менш ніж %(limit_value)d символ "
-"(зараз %(show_value)d)."
-msgstr[1] ""
-"Переконайтеся, що це значення містить не менш ніж %(limit_value)d символів "
-"(зараз %(show_value)d)."
-msgstr[2] ""
-"Переконайтеся, що це значення містить не менш ніж %(limit_value)d символів "
-"(зараз %(show_value)d)."
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Переконайтеся, що це значення містить не більше ніж %(limit_value)d символ "
-"(зараз %(show_value)d)."
-msgstr[1] ""
-"Переконайтеся, що це значення містить не більше ніж %(limit_value)d символи "
-"(зараз %(show_value)d)."
-msgstr[2] ""
-"Переконайтеся, що це значення містить не більше ніж %(limit_value)d символів "
-"(зараз %(show_value)d)."
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(field_name)s має бути унікальним для %(date_field)s %(lookup)s."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "та"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s з таким %(field_label)s вже існує."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr "Значення %(value)r не є дозволеним вибором."
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Це поле не може бути пустим."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Це поле не може бути порожнім."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Тип поля: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Ціле число"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr "'%(value)s' значення має бути цілим числом."
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr "Значення '%(value)s' має True або False."
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Булеве значення (True або False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Рядок (до %(max_length)s)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Цілі, розділені комою"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-"Значеня '%(value)s' має невірний формат дати. Воно має бути у форматі YYYY-"
-"MM-DD."
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-"Значення '%(value)s' має коректний формат (YYYY-MM-DD), але це недійсна дата."
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Дата (без часу)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-"Значення '%(value)s' має невірний формат. Воно повинне бути у форматі YYYY-"
-"MM-DD HH:MM[:ss[.uuuuuu]][TZ]."
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-"Значення '%(value)s' має вірний формат (YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]), "
-"але це не дійсна дата/час."
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Дата (з часом)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr "'%(value)s' має бути десятковим числом."
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Десяткове число"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "E-mail адреса"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Шлях до файла"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr "%(value)s' має бути числом з плаваючою комою."
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Число з плаваючою комою"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Велике (8 байтів) ціле число"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 адреса"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP адреса"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr "Значення '%(value)s' має бути None, True або False."
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Булеве значення (включаючи True, False або None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Додатнє ціле число"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Додатнє мале ціле число"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Слаг (до %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Мале ціле число"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Текст"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-"Значення '%(value)s' має невірний формат. Воно має бути у форматі HH:MM[:ss[."
-"uuuuuu]]."
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-"Значення '%(value)s' має вірний формат (HH:MM[:ss[.uuuuuu]]), але це не "
-"дійсний час."
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Час"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Необроблені двійкові дані"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "Файл"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Зображення"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr "Об'єкт моделі %(model)s з первинним ключем %(pk)r не існує."
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Зовнішній ключ (тип визначається відповідно поля)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Один-до-одного"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Багато-до-багатьох"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Це поле обов'язкове."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Введіть ціле число."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Введіть число."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Переконайтеся, що загалом тут не більше ніж %(max)s цифра."
-msgstr[1] "Переконайтеся, що загалом тут не більше ніж %(max)s цифер."
-msgstr[2] "Переконайтеся, що загалом тут не більше ніж %(max)s цифер."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-"Переконайтеся, що тут не більше ніж %(max)s цифра після десяткової коми."
-msgstr[1] ""
-"Переконайтеся, що тут не більше ніж %(max)s цифри після десяткової коми."
-msgstr[2] ""
-"Переконайтеся, що тут не більше ніж %(max)s цифер після десяткової коми."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-"Переконайтеся, що тут не більше ніж %(max)s цифра до десяткової коми."
-msgstr[1] ""
-"Переконайтеся, що тут не більше ніж %(max)s цифри до десяткової коми."
-msgstr[2] ""
-"Переконайтеся, що тут не більше ніж %(max)s цифер до десяткової коми."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Введіть коректну дату."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Введіть коректний час."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Уведіть коректну дату/час адресу."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Файл не надіслано. Перевірте тип кодування форми."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Файл не було надіслано."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Переданий файл порожній."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-"Переконайтеся, що це ім'я файлу містить не більше ніж з %(max)d символ "
-"(зараз %(length)d)."
-msgstr[1] ""
-"Переконайтеся, що це ім'я файлу містить не більше ніж з %(max)d символи "
-"(зараз %(length)d)."
-msgstr[2] ""
-"Переконайтеся, що це ім'я файлу містить не більше ніж з %(max)d символів "
-"(зараз %(length)d)."
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr ""
-"Будь ласка, або завантажте файл, або відмітьте прапорець очищення, а не "
-"обидва варіанти одразу"
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Завантажте правильний малюнок. Файл, який ви завантажили, не є малюнком, або "
-"є зіпсованим малюнком."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "Зробить коректний вибір, %(value)s немає серед варіантів вибору."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Введіть список значень."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Приховане поле %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr "ManagementForm даних відсутній або був підроблений"
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Будь ласка, відправте %d або менше форм."
-msgstr[1] "Будь ласка, відправте %d або менше форм."
-msgstr[2] "Будь ласка, відправте %d або менше форм."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Послідовність"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Видалити"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Будь ласка, виправте повторювані дані для поля %(field)s."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"Будь ласка, виправте повторювані дані для поля %(field)s, яке має бути "
-"унікальним."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Будь ласка, виправте повторювані дані для поля %(field_name)s, яке має бути "
-"унікальним для вибірки %(lookup)s на %(date_field)s."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Будь ласка, виправте повторювані значення нижче."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr ""
-"Зв'язаний зовнішній ключ не відповідає первісному ключу батьківського "
-"екземпляру."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "Зробить коректний вибір. Такого варіанту нема серед доступних."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" не є допустимим значенням для первинного ключа."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"Затисніть клавішу \"Control\", або \"Command\" на Маку, щоб обрати більше "
-"однієї опції."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s не може бути інтерпретована в часовому поясі "
-"%(current_timezone)s; дата може бути неодзначною або виявитись неіснуючою."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Наразі"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Змінити"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Очистити"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Невідомо"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Так"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Ні"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "так,ні,можливо"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d байт"
-msgstr[1] "%(size)d байти"
-msgstr[2] "%(size)d байтів"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s Кб"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s Мб"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s Гб"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s Тб"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s Пб"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "після полудня"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "до полудня"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "після полудня"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "до полудня"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "північ"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "полудень"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Понеділок"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Вівторок"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Середа"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Четвер"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "П'ятниця"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Субота"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Неділя"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Пн"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Вт"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Сер"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Чт"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Пт"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Сб"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Нед"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Січень"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Лютий"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Березень"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Квітень"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Травень"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Червень"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Липень"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Серпень"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Вересень"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Жовтень"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Листопад"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Грудень"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "січ"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "лют"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "бер"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "кві"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "тра"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "чер"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "лип"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "сер"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "вер"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "жов"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "лис"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "гру"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Січ."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Лют."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Березень"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Квітень"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Травень"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Червень"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Липень"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Сер."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Вер."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Жов."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Лис."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Гру."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "січня"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "лютого"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "березня"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "квітня"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "травня"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "червня"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "липня"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "серпня"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "вересня"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "жовтня"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "листопада"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "грудня"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Ні Pillow ні PIL не можуть бути імпортовані: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "Модуль '_imaging' для PIL не вдалося імпортувати: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr "Це не є правильною адресою IPv6."
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "або"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d рік"
-msgstr[1] "%d років"
-msgstr[2] "%d років"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d місяць"
-msgstr[1] "%d місяців"
-msgstr[2] "%d місяців"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d тиждень"
-msgstr[1] "%d тижнів"
-msgstr[2] "%d тижнів"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d день"
-msgstr[1] "%d днів"
-msgstr[2] "%d днів"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d час"
-msgstr[1] "%d часів"
-msgstr[2] "%d часів"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d хвилина"
-msgstr[1] "%d хвилин"
-msgstr[2] "%d хвилин"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 хвилин"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Перегляд списку файлів у цій директорії не дозволений."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" не існує"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Вміст директорії %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Рік не вказано"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Місяць не вказано"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "День не вказано"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Тиждень не вказано"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s недоступні"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"Майбутні %(verbose_name_plural)s недоступні, тому що %(class_name)s."
-"allow_future має нульове значення."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Недійсна дата '%(datestr)s' для формату '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Жодні %(verbose_name)s не були знайдені по запиту"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"Неправильна величина параметра сторінки: вона повинна бути задана цілим "
-"числом або значенням 'last'."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Невірна сторінка (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Порожній список і величина '%(class_name)s.allow_empty' є нульовою."
diff --git a/lib/python2.7/site-packages/django/conf/locale/uk/__init__.py b/lib/python2.7/site-packages/django/conf/locale/uk/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/uk/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/uk/formats.py b/lib/python2.7/site-packages/django/conf/locale/uk/formats.py
deleted file mode 100644
index 11293f0..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/uk/formats.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = 'j E Y р.'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = 'j E Y р. H:i:s'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'j M Y'
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = ' '
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/ur/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/ur/LC_MESSAGES/django.mo
deleted file mode 100644
index aa8a3f5..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ur/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/ur/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/ur/LC_MESSAGES/django.po
deleted file mode 100644
index 73f99e6..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/ur/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1305 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/"
-"ur/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ur\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr ""
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "عربی"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr ""
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "بلغاری"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr ""
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "بنگالی"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "بوسنیائی"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "کیٹالانی"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "زیچ"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "ویلش"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "ڈینش"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "جرمن"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "گریک"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "انگلش"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "برطانوی انگلش"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr ""
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "ھسپانوی"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "ارجنٹائنی سپینش"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr ""
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr ""
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "اسٹانین"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "باسک"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "فارسی"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "فنش"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "فرانسیسی"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "فریسی"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "آئرش"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "گیلیشین"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "عبرانی"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "ھندی"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "کروشن"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "ھونگارین"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "انڈونیشین"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "آئس لینڈک"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "اطالوی"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "جاپانی"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "جارجیائی"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr ""
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "خمر"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "کناڈا"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "کوریائی"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "لیتھونیائی"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "لتوینی"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "میسیڈونین"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "ملایالم"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "منگولین"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "نارویائی بوکمال"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr ""
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "ڈچ"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "نارویائی نینورسک"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "پنجابی"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "پولش"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "پورتگیز"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "برازیلی پورتگیز"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "رومانی"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "روسی"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "سلووک"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "سلووینین"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "البانوی"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "سربین"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "سربین لاطینی"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "سویڈش"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr ""
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "تاملی"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "تیلگو"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "تھائی"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "ترکش"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr ""
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "یوکرائنی"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr ""
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "ویتنامی"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "سادی چینی"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "روایتی چینی"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "درست قیمت (ویلیو) درج کریں۔"
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "درست یو آر ایل (URL) درج کریں۔"
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr ""
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "درست 'slug' درج کریں جو حروف، نمبروں، انڈرسکور یا ھائفنز پر مشتمل ھو۔"
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "IPv4 کا درست پتہ درج کریں۔"
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr ""
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr ""
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "صرف اعداد درج کریں جو کوموں سے الگ کئے ھوئے ھوں۔"
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr ""
-"اس بات کا یقین کر لیں کہ یہ قیمت (ویلیو) %(limit_value)s ھے۔ (یہ "
-"%(show_value)s ھے)%(show_value)s"
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr ""
-"اس بات کا یقین کر لیں کہ یہ قیمت (ویلیو) %(limit_value)s سے کم یا اس کے "
-"برابر ھے۔"
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr ""
-"اس بات کا یقین کر لیں کہ یہ قیمت (ویلیو) %(limit_value)s سے زیادہ یا اس کے "
-"برابر ھے۔"
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr ""
-"%(field_name)s کا %(date_field)s %(lookup)s کے لئے منفرد ھونا ضروری ھے۔"
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "اور"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s اس %(field_label)s کے ساتھ پہلے ہی موجود ھے۔"
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "یہ خانہ نامعلوم (null( نھیں رہ سکتا۔"
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "یہ خانہ خالی نھیں چھوڑا جا سکتا۔"
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "%(field_type)s قسم کا خانہ"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "صحیح عدد"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "بولین (True یا False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "سلسلۂ حروف (String) (%(max_length)s تک)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr " کومے سے الگ کئے ھوئے صحیح اعداد"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "تاریخ (وقت کے بغیر)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "تاریخ (بمع وقت)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "اعشاری نمبر"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "فائل کا راستہ(path("
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "نقطہ اعشاریہ والا نمبر"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "بڑا (8 بائٹ) صحیح عدد"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr ""
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP ایڈریس"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "بولین (True، False یا None("
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr ""
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr ""
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "متن"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "وقت"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "یو آر ایل"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr ""
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr ""
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr ""
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "بیرونی کلید (FK( (قسم متعلقہ خانے سے متعین ھو گی)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "ون-ٹو-ون ریلیشن شپ"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "مینی-ٹو-مینی ریلیشن شپ"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "یہ خانہ درکار ھے۔"
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "مکمل نمبر درج کریں۔"
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "نمبر درج کریں۔"
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "درست تاریخ درج کریں۔"
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "درست وقت درج کریں۔"
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "درست تاریخ/وقت درج کریں۔"
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "کوئی فائل پیش نہیں کی گئی۔ فارم پر اینکوڈنگ کی قسم چیک کریں۔"
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "کوئی فائل پیش نہیں کی گئی تھی۔"
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "پیش کی گئی فائل خالی ھے۔"
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "براہ مھربانی فائل پیش کریں یا Clear checkbox منتخب کریں۔ نہ کہ دونوں۔"
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"درست تصویر اپ لوڈ کریں۔ جو فائل آپ نے اپ لوڈ کی تھی وہ تصویر نہیں تھی یا "
-"خراب تصویر تھی۔"
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "درست انتخاب منتخب کریں۔ %(value)s دستیاب انتخابات میں سے کوئی نہیں۔"
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "قیمتوں (ویلیوز) کی لسٹ درج کریں۔"
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "ترتیب"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "مٹائیں"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "براہ کرم %(field)s کے لئے دوہرا مواد درست کریں۔"
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr ""
-"براہ کرم %(field)s کے لئے دوہرا مواد درست کریں جوکہ منفرد ھونا ضروری ھے۔"
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"براہ کرم %(field_name)s میں دوہرا مواد درست کریں جو کہ %(date_field)s میں "
-"%(lookup)s کے لئے منفرد ھونا ضروری ھے۔"
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "براہ کرم نیچے دوہری قیمتیں (ویلیوز) درست کریں۔"
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "ان لائن بیرونی کلید (FK) آبائی پرائمری کلید (PK) سے نھیں ملتی۔"
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "درست انتخاب منتخب کریں۔ یہ انتخاب دستیاب انتخابات میں سے کوئی نہیں ھے۔"
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr ""
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr ""
-"ایک سے زیادہ منتخب کرنے کے لئے \"Control\" دبا کر رکھیں۔ یا Mac OS پر "
-"\"Command\""
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "فی الحال"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "تبدیل کریں"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "صاف کریں"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "نامعلوم"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "ھاں"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "نھیں"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "ھاں،نہیں،ھوسکتاہے"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d بائٹ"
-msgstr[1] "%(size)d بائٹس"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s ک ۔ ب"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s م ۔ ب"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s ج ۔ ب"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s ٹ ۔ ب"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s پ ۔ پ"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "شام"
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "صبح"
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "شام"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "صبح"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "نصف رات"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "دوپہر"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "سوموار"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "منگل"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "بدھ"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "جمعرات"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "جمعہ"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "ھفتہ"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "اتوار"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "سوموار"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "منگل"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "بدھ"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "جمعرات"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "جمعہ"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "ھفتہ"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "اتوار"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "جنوری"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "فروری"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "مارچ"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "اپریل"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "مئی"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "جون"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "جولائی"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "اگست"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "ستمبر"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "اکتوبر"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "نومبر"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "دسمبر"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "جنوری"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "فروری"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "مارچ"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "اپریل"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "مئی"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "جون"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "جولائی"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "اگست"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "ستمبر"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "اکتوبر"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "نومبر"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "دسمبر"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "جنوری"
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "فروری"
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "مارچ"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "اپریل"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "مئی"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "جون"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "جولائی"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "اگست"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "ستمبر"
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "اکتوبر"
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "نومبر"
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "دسمبر"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "جنوری"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "فروری"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "مارچ"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "اپریل"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "مئی"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "جون"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "جولائی"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "اگست"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "ستمبر"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "اکتوبر"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "نومبر"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "دسمبر"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr ""
-
-#: utils/text.py:224
-msgid "or"
-msgstr "یا"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr "،"
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] ""
-msgstr[1] ""
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr ""
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr ""
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr ""
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr ""
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr ""
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr ""
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr ""
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr ""
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr ""
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr ""
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr ""
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr ""
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/conf/locale/vi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/vi/LC_MESSAGES/django.mo
deleted file mode 100644
index 3d40ab2..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/vi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/vi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/vi/LC_MESSAGES/django.po
deleted file mode 100644
index 9e3f494..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/vi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1299 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# ppanhh <vietnamesel10n@gmail.com>, 2013
-# Lê Thanh <lethanhx2k@gmail.com>, 2013
-# Tran <hongdiepkien@gmail.com>, 2011
-# Tran Van <vantxm@yahoo.co.uk>, 2011,2013
-# Vuong Nguyen <autalpha@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/"
-"language/vi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "Afrikaans"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "Tiếng Ả Rập"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "Tiếng Azerbaijan"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "Tiếng Bun-ga-ri"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "Tiếng Bê-la-rút"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "Tiếng Bengal"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "Tiếng Breton"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "Tiếng Bosnia"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "Tiếng Catala"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "Tiếng Séc"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "Xứ Wales"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "Tiếng Đan Mạch"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "Tiếng Đức"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "Tiếng Hy Lạp"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "Tiếng Anh"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "British English"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "Quốc Tế Ngữ"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "Tiếng Tây Ban Nha"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "Argentinian Spanish"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "Mexican Spanish"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "Tiếng Tây Ban Nha-Nicaragua"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "Tiếng Vê-nê-du-ê-la"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "Tiếng Estonia"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "Tiếng Baxcơ"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "Tiếng Ba Tư"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "Tiếng Phần Lan"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "Tiếng Pháp"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "Tiếng Frisco"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "Tiếng Ai-len"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "Tiếng Pháp cổ"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "Tiếng Do Thái cổ"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "Tiếng Hindi"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "Tiếng Croatia"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "Tiếng Hung-ga-ri"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "Tiếng Khoa học Quốc tế"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "Tiếng In-đô-nê-xi-a"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "Tiếng Aixơlen"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "Tiếng Ý"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "Tiếng Nhật Bản"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "Georgian"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "Tiếng Kazakh"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "Tiếng Khơ-me"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "Tiếng Kannada"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "Tiếng Hàn Quốc"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "Tiếng Luxembourg"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "Tiếng Lat-vi"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "Ngôn ngữ vùng Bantic"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "Tiếng Maxêđôni"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "Tiếng Malayalam"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "Tiếng Mông Cổ"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "My-an-ma"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "Tiếng Na Uy Bokmål"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "Nê-pan"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "Tiếng Hà Lan"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "Tiếng Na Uy Nynorsk"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "Ô-sét-ti-a"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "Punjabi"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "Tiếng Ba lan"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "Tiếng Bồ Đào Nha"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "Brazilian Portuguese"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "Tiếng Ru-ma-ni"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "Tiếng Nga"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "Ngôn ngữ Slô-vac"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "Tiếng Slôven"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "Tiếng Albania"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "Tiếng Xéc-bi"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "Serbian Latin"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "Tiếng Thụy Điển"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "Xì-qua-hi-đi thuộc ngôn ngữ Bantu"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "Tiếng Ta-min"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "Telugu"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "Tiếng Thái"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "Tiếng Thổ Nhĩ Kỳ"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "Tác-ta"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "Udmurt"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "Tiếng Ukraina"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "Urdu"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "Tiếng Việt Nam"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "Tiếng Tàu giản thể"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "Tiếng Tàu truyền thống"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "Nhập một giá trị hợp lệ."
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "Nhập một URL hợp lệ."
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "Nhập địa chỉ email."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "Nhập một 'slug' hợp lệ gồm chữ cái, số, gạch dưới và gạch nối."
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "Nhập một địa chỉ IPv4 hợp lệ."
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "Nhập địa chỉ IPv6 hợp lệ"
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "Nhập địa chỉ IPv4 hoặc IPv6 hợp lệ"
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "Chỉ nhập chữ số, cách nhau bằng dấu phẩy."
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "Đảm bảo giá trị này là %(limit_value)s (nó là %(show_value)s )."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "Đảm bảo giá trị này là nhỏ hơn hoặc bằng với %(limit_value)s ."
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "Đảm bảo giá trị này lớn hơn hoặc bằng với %(limit_value)s ."
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Giá trị này phải có ít nhất %(limit_value)d kí tự (hiện có %(show_value)d)"
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"Giá trị này chỉ có tối đa %(limit_value)d kí tự (hiện có %(show_value)d)"
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr " %(field_name)s phải là duy nhất cho %(date_field)s %(lookup)s ."
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "và"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "%(model_name)s có %(field_label)s đã tồn tại."
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "Trường này không thể để trống."
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "Trường này không được để trắng."
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Trường thuộc dạng: %(field_type)s "
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "Số nguyên"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (hoặc là Đúng hoặc là Sai)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "Chuỗi (dài đến %(max_length)s ký tự )"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "Các số nguyên được phân cách bằng dấu phẩy"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "Ngày (không có giờ)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "Ngày (có giờ)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "Số thập phân"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Địa chỉ email"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "Đường dẫn tắt tới file"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "Giá trị dấu chấm động"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "Big (8 byte) integer"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "Địa chỉ IPv4"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "Địa chỉ IP"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "Luận lý (Có thể Đúng, Sai hoặc Không cái nào đúng)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "Số nguyên dương"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "Số nguyên dương nhỏ"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug(lên đến %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "Số nguyên nhỏ"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "Đoạn văn"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "Giờ"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "Đường dẫn URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "Dữ liệu nhị phân "
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "File"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "Image"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "Khóa ngoại (kiểu được xác định bởi trường liên hệ)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "Mối quan hệ một-một"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "Mối quan hệ nhiều-nhiều"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "Trường này là bắt buộc."
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "Nhập một số tổng thể."
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "Nhập một số."
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "Đảm bảo rằng tối đa không có nhiều hơn %(max)s số."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "Hãy chắc chắn rằng không có nhiều hơn %(max)s chữ số thập phân."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-"Hãy chắc chắn rằng không có nhiều hơn %(max)s chữ số trước dấu phẩy thập "
-"phân."
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "Nhập một ngày hợp lệ."
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "Nhập một thời gian hợp lệ."
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "Nhập một ngày/thời gian hợp lệ."
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "Không có tập tin nào được gửi. Hãy kiểm tra kiểu mã hóa của biểu mẫu."
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "Không có tập tin nào được gửi."
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "Tập tin được gửi là rỗng."
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] "Tên tệp tin có tối đa %(max)d kí tự (Hiện có %(length)d)"
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "Vui lòng gửi một tập tin hoặc để ô chọn trắng, không chọn cả hai."
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr ""
-"Hãy tải lên một hình ảnh hợp lệ. Tập tin mà bạn đã tải không phải là hình "
-"ảnh hoặc đã bị hư hỏng."
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr ""
-"Hãy chọn một lựa chọn hợp lệ. %(value)s không phải là một trong các lựa chọn "
-"khả thi."
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "Nhập một danh sách giá trị."
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(Trường ẩn %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "Vui lòng đệ trình %d hoặc ít các mẫu đơn hơn."
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "Thứ tự"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "Xóa"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "Hãy sửa các dữ liệu trùng lặp cho %(field)s ."
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "Hãy sửa các dữ liệu trùng lặp cho %(field)s, mà phải là duy nhất."
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"Hãy sửa các dữ liệu trùng lặp cho %(field_name)s mà phải là duy nhất cho "
-"%(lookup)s tại %(date_field)s ."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "Hãy sửa các giá trị trùng lặp dưới đây."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "Khóa ngoại không tương ứng với khóa chính của đối tượng cha."
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr ""
-"Hãy chọn một lựa chọn hợp lệ. Lựa chọn đó không phải là một trong các lựa "
-"chọn khả thi."
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" không phải là giá trị hợp lệ cho khóa chính."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "Giữ \"Control\", hoặc \"Command\" trên Mac, để chọn nhiều hơn một."
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s không thích hợp với khu vực thời gian %(current_timezone)s; "
-"phần này có thể còn mơ hồ chưa rõ nghĩa hoặc không hề tồn tại."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "Hiện nay"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "Thay đổi"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "Xóa"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "Chưa xác định"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "Có"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "Không"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "Có, Không, Có thể"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d byte"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "chiều"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "sáng"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "Nửa đêm"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "Buổi trưa"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "Thứ 2"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "Thứ 3"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "Thứ 4"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "Thứ 5"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "Thứ 6"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "Thứ 7"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "Chủ nhật"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "Thứ 2"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "Thứ 3"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "Thứ 4"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "Thứ 5"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "Thứ 6"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "Thứ 7"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "Chủ nhật"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "Tháng 1"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "Tháng 2"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "Tháng 3"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "Tháng 4"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "Tháng 5"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "Tháng 6"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "Tháng 7"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "Tháng 8"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "Tháng 9"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "Tháng 10"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "Tháng 11"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "Tháng 12"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "Tháng 1"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "Tháng 2"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "Tháng 3"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "Tháng 4"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "Tháng 5"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "Tháng 6"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "Tháng 7"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "Tháng 8"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "Tháng 9"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "Tháng 10"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "Tháng 11"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "Tháng 12"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "Tháng 1."
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "Tháng 2."
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "Tháng ba"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "Tháng tư"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "Tháng năm"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "Tháng sáu"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "Tháng bảy"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "Tháng 8."
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "Tháng 9."
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "Tháng 10."
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "Tháng 11."
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "Tháng 12."
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "Tháng một"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "Tháng hai"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "Tháng ba"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "Tháng tư"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "Tháng năm"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "Tháng sáu"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "Tháng bảy"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "Tháng tám"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "Tháng Chín"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "Tháng Mười"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "Tháng mười một"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "Tháng mười hai"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "Thư viện xử lý ảnh Pillow hoặc PIL không được import: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "Mô đun '_imaging' cho PIL không được imported: '%s'"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "hoặc"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d năm"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d tháng"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d tuần"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d ngày"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d giờ"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d phút"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 phút"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "Tại đây không cho phép đánh số chỉ mục dành cho thư mục."
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" không tồn tại"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "Index của %(directory)s"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "Không có năm xác định"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "Không có tháng xác định"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "Không có ngày xác định"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "Không có tuần xác định"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "Không có %(verbose_name_plural)s phù hợp"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"%(verbose_name_plural)s trong tương lai không có sẵn vì %(class_name)s."
-"allow_future là False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "Chuỗi ngày không hợp lệ ' %(datestr)s' định dạng bởi '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "Không có %(verbose_name)s tìm thấy phù hợp với truy vấn"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr ""
-"Trang không phải là 'nhất', và cũng không nó có thể được chuyển đổi sang int."
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "Trang không hợp lệ (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "Danh sách rỗng và '%(class_name)s.allow_empty' là sai."
diff --git a/lib/python2.7/site-packages/django/conf/locale/vi/__init__.py b/lib/python2.7/site-packages/django/conf/locale/vi/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/vi/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/vi/formats.py b/lib/python2.7/site-packages/django/conf/locale/vi/formats.py
deleted file mode 100644
index b491c2d..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/vi/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-DATE_FORMAT = r'\N\gà\y d \t\há\n\g n \nă\m Y'
-TIME_FORMAT = 'H:i:s'
-DATETIME_FORMAT = r'H:i:s \N\gà\y d \t\há\n\g n \nă\m Y'
-YEAR_MONTH_FORMAT = 'F Y'
-MONTH_DAY_FORMAT = 'j F'
-SHORT_DATE_FORMAT = 'd-m-Y'
-SHORT_DATETIME_FORMAT = 'H:i:s d-m-Y'
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-DECIMAL_SEPARATOR = ','
-THOUSAND_SEPARATOR = '.'
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/zh_CN/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/zh_CN/LC_MESSAGES/django.mo
deleted file mode 100644
index dfec510..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/zh_CN/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/zh_CN/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/zh_CN/LC_MESSAGES/django.po
deleted file mode 100644
index 6532f5f..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/zh_CN/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1292 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Daniel Duan <DaNmarner@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Lele Long <schemacs@gmail.com>, 2011
-# pylemon <leeway1985@gmail.com>, 2013
-# slene <vslene@gmail.com>, 2011
-# Yin Jifeng <jifeng.yin@gmail.com>, 2013
-# Ziang Song <songziang@gmail.com>, 2011-2012
-# Kevin Shi <leiarix@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "南非语"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "阿拉伯语"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "阿塞拜疆语"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "保加利亚语"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "白俄罗斯语"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "孟加拉语"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr "布雷顿"
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "波斯尼亚语"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "加泰罗尼亚语"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "捷克语"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "威尔士语"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "丹麦语"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "德语"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "希腊语"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "英语"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "英国英语"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "世界语"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "西班牙语"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "阿根廷西班牙语"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "墨西哥西班牙语"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "尼加拉瓜西班牙语"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "委内瑞拉西班牙语"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "爱沙尼亚语"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "巴斯克语"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "波斯语"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "芬兰语"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "法语"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "夫里斯兰语"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "爱尔兰语"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "加利西亚语"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "希伯来语"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "北印度语"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "克罗地亚语"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "匈牙利语"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr "国际语"
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "印尼语"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "冰岛语"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "意大利语"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "日语"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "格鲁吉亚语"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "哈萨克语"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "高棉语"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "埃纳德语"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "韩语"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr "卢森堡语"
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "立陶宛语"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "拉脱维亚语"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "马其顿语"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "马来亚拉姆语"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "蒙古语"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr "缅甸语"
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "挪威博克马尔"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "尼泊尔语"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "荷兰语"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "新挪威语"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr "奥塞梯语"
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "旁遮普语 "
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "波兰语"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "葡萄牙语"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "巴西葡萄牙语"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "罗马尼亚语"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "俄语"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "斯洛伐克语"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "斯洛文尼亚语"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "阿尔巴尼亚语"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "塞尔维亚语"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "塞尔维亚拉丁语"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "瑞典语"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "斯瓦西里语"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "泰米尔语"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "泰卢固语"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "泰语"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "土耳其语"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "鞑靼语"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr "乌德穆尔特语"
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "乌克兰语"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "乌尔都语"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "越南语"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "简体中文"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "繁体中文"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "输入一个有效的值。"
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "输入一个有效的 URL。"
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "输入一个合法的Email地址."
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "输入一个有效的 'slug',由字母、数字、下划线或横线组成。"
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "输入一个有效的 IPv4 地址。"
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "填写合法的IPv6地址。"
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "输入可用的IPv4 或 IPv6 地址."
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "只能输入用逗号分隔的数字。"
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "确保该值为 %(limit_value)s (现在为 %(show_value)s)。"
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "确保该值小于或等于%(limit_value)s。"
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "确保该值大于或等于%(limit_value)s。"
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"确保该变量至少包含 %(limit_value)d 字符(目前字符数 %(show_value)d)。"
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-"确保该变量包含不超过 %(limit_value)d 字符 (目前字符数 %(show_value)d)。"
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "在%(date_field)s %(lookup)s 需要唯一的 %(field_name)s"
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "和"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "具有 %(field_label)s 的 %(model_name)s 已存在。"
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "这个值不能为 null。"
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "此字段不能为空。"
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "字段类型:%(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "整数"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "布尔值(真或假)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "字符串(最长 %(max_length)s 位)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "逗号分隔的整数"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "日期(无时间)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "日期(带时间)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "小数"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "Email 地址"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "文件路径"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "浮点数"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "大整数(8字节)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 地址"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP 地址"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "布尔值(真、假或无)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "正整数"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "正小整数"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "Slug (多达 %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "小整数"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "文本"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "时间"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "原始二进制数据"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "文件"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "图像"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "外键(由相关字段确定)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "一对一关系"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "多对多关系"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "这个字段是必填项。"
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "输入整数。"
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "输入一个数字。"
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "确认总共不超过 %(max)s 个数字."
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] "确认小数不超过 %(max)s 位."
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] "确认小数点前不超过 %(max)s 位。"
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "输入一个有效的日期。"
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "输入一个有效的时间。"
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "输入一个有效的日期/时间。"
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "未提交文件。请检查表单的编码类型。"
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "没有提交文件。"
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "所提交的是空文件。"
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] "确保该文件名长度不超过 %(max)d 字符(目前字符数 %(length)d)。"
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "请提交文件或勾选清除复选框,两者其一即可。"
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr "请上传一张有效的图片。您所上传的文件不是图片或者是已损坏的图片。"
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "选择一个有效的选项。 %(value)s 不在可用的选项中。"
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "输入一系列值。"
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ""
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr "(隐藏字段 %(name)s) %(error)s"
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ""
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] "请提交不超过 %d 个表格。"
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "排序"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "删除"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "请修改%(field)s的重复数据"
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "请修改%(field)s的重复数据.这个字段必须唯一"
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"请修正%(field_name)s的重复数据。%(date_field)s %(lookup)s 在 %(field_name)s "
-"必须保证唯一."
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "请修正重复的数据."
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "内联外键与父实例的主键不匹配。"
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "选择一个有效的选项: 该选择不在可用的选项中。"
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" 不是一个合法的主键值."
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "按下 \"Control\",或者在Mac上按 \"Command\" 来选择多个值。"
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s 不能在时区 %(current_timezone)s正确解读; 可能时间有歧义或者不存"
-"在."
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "目前"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "修改"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "清除"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "未知"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "是"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "否"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "是、否、也许"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d 字节"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "午夜"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "中午"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "星期一"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "星期二"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "星期三"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "星期四"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "星期五"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "星期六"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "星期日"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "星期一"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "星期二"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "星期三"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "星期四"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "星期五"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "星期六"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "星期日"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "一月"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "二月"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "三月"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "四月"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "五月"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "六月"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "七月"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "八月"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "九月"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "十月"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "十一月"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "十二月"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "一月"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "二月"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "三月"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "四月"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "五月"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "六月"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "七月"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "八月"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "九月"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "十月"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "十一月"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "十二月"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "一月"
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "二月"
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "三月"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "四月"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "五月"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "六月"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "七月"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "八月"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "九月"
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "十月"
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "十一月"
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "十二月"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "一月"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "二月"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "三月"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "四月"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "五月"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "六月"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "七月"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "八月"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "九月"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "十月"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "十一月"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "十二月"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr "无法导入Pillow 和 PIL: %s"
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr "无法导入 PIL 的 '_imaging' 模块: %s"
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "或"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ","
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d 年"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d 月"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d 周"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d 日"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d 小时"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d 分钟"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 分钟"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "这里不允许目录索引"
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" 不存在"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "%(directory)s的索引"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "没有指定年"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "没有指定月"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "没有指定天"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "没有指定周"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s 不存在"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"因为 %(class_name)s.allow_future 设置为 False,所以特性 "
-"%(verbose_name_plural)s 不可用。"
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "日期文字 '%(datestr)s' 不匹配格式 '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "没有找到符合查询的 %(verbose_name)s"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "page 不等于 'last',或者它不能被转为数字。"
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "非法页面 (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "列表是空的并且'%(class_name)s.allow_empty 设置为 False'"
diff --git a/lib/python2.7/site-packages/django/conf/locale/zh_CN/__init__.py b/lib/python2.7/site-packages/django/conf/locale/zh_CN/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/zh_CN/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/zh_CN/formats.py b/lib/python2.7/site-packages/django/conf/locale/zh_CN/formats.py
deleted file mode 100644
index 4355928..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/zh_CN/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-# DATE_FORMAT =
-# TIME_FORMAT =
-# DATETIME_FORMAT =
-# YEAR_MONTH_FORMAT =
-# MONTH_DAY_FORMAT =
-# SHORT_DATE_FORMAT =
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-# DECIMAL_SEPARATOR =
-# THOUSAND_SEPARATOR =
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/locale/zh_TW/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/conf/locale/zh_TW/LC_MESSAGES/django.mo
deleted file mode 100644
index 3fd5070..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/zh_TW/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/conf/locale/zh_TW/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/conf/locale/zh_TW/LC_MESSAGES/django.po
deleted file mode 100644
index 1158b8e..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/zh_TW/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,1289 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# EricHo <eric913@gmail.com>, 2013
-# ilay <ilay@ilay.tw>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# mail6543210 <mail6543210@yahoo.com.tw>, 2013
-# ming hsien tzang <tzangms@gmail.com>, 2011
-# tcc <tcchou@tcchou.org>, 2011
-# yyc1217 <yyc1217@gmail.com>, 2013
-# yyc1217 <yyc1217@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-22 09:54+0200\n"
-"PO-Revision-Date: 2013-08-17 08:48+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/"
-"language/zh_TW/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_TW\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: conf/global_settings.py:51
-msgid "Afrikaans"
-msgstr "南非語"
-
-#: conf/global_settings.py:52
-msgid "Arabic"
-msgstr "阿拉伯語"
-
-#: conf/global_settings.py:53
-msgid "Azerbaijani"
-msgstr "阿塞拜疆(Azerbaijani)"
-
-#: conf/global_settings.py:54
-msgid "Bulgarian"
-msgstr "保加利亞語"
-
-#: conf/global_settings.py:55
-msgid "Belarusian"
-msgstr "白俄羅斯人"
-
-#: conf/global_settings.py:56
-msgid "Bengali"
-msgstr "孟加拉語"
-
-#: conf/global_settings.py:57
-msgid "Breton"
-msgstr ""
-
-#: conf/global_settings.py:58
-msgid "Bosnian"
-msgstr "波士尼亞語"
-
-#: conf/global_settings.py:59
-msgid "Catalan"
-msgstr "嘉泰羅尼亞語"
-
-#: conf/global_settings.py:60
-msgid "Czech"
-msgstr "捷克語"
-
-#: conf/global_settings.py:61
-msgid "Welsh"
-msgstr "威爾斯語"
-
-#: conf/global_settings.py:62
-msgid "Danish"
-msgstr "丹麥語"
-
-#: conf/global_settings.py:63
-msgid "German"
-msgstr "德語"
-
-#: conf/global_settings.py:64
-msgid "Greek"
-msgstr "希臘語"
-
-#: conf/global_settings.py:65
-msgid "English"
-msgstr "英語"
-
-#: conf/global_settings.py:66
-msgid "British English"
-msgstr "英國英語"
-
-#: conf/global_settings.py:67
-msgid "Esperanto"
-msgstr "世界語(Esperanto)"
-
-#: conf/global_settings.py:68
-msgid "Spanish"
-msgstr "西班牙語"
-
-#: conf/global_settings.py:69
-msgid "Argentinian Spanish"
-msgstr "阿根廷西班牙語"
-
-#: conf/global_settings.py:70
-msgid "Mexican Spanish"
-msgstr "墨西哥西班牙語(Mexican Spanish)"
-
-#: conf/global_settings.py:71
-msgid "Nicaraguan Spanish"
-msgstr "尼加拉瓜西班牙語(Nicaraguan Spanish)"
-
-#: conf/global_settings.py:72
-msgid "Venezuelan Spanish"
-msgstr "委內瑞拉西班牙人"
-
-#: conf/global_settings.py:73
-msgid "Estonian"
-msgstr "愛沙尼亞語"
-
-#: conf/global_settings.py:74
-msgid "Basque"
-msgstr "巴斯克語"
-
-#: conf/global_settings.py:75
-msgid "Persian"
-msgstr "波斯語"
-
-#: conf/global_settings.py:76
-msgid "Finnish"
-msgstr "芬蘭語"
-
-#: conf/global_settings.py:77
-msgid "French"
-msgstr "法語"
-
-#: conf/global_settings.py:78
-msgid "Frisian"
-msgstr "弗里斯蘭語"
-
-#: conf/global_settings.py:79
-msgid "Irish"
-msgstr "愛爾蘭語"
-
-#: conf/global_settings.py:80
-msgid "Galician"
-msgstr "加里西亞語"
-
-#: conf/global_settings.py:81
-msgid "Hebrew"
-msgstr "希伯來語"
-
-#: conf/global_settings.py:82
-msgid "Hindi"
-msgstr "印度語"
-
-#: conf/global_settings.py:83
-msgid "Croatian"
-msgstr "克羅埃西亞語"
-
-#: conf/global_settings.py:84
-msgid "Hungarian"
-msgstr "匈牙利語"
-
-#: conf/global_settings.py:85
-msgid "Interlingua"
-msgstr ""
-
-#: conf/global_settings.py:86
-msgid "Indonesian"
-msgstr "印尼語"
-
-#: conf/global_settings.py:87
-msgid "Icelandic"
-msgstr "冰島語"
-
-#: conf/global_settings.py:88
-msgid "Italian"
-msgstr "義大利語"
-
-#: conf/global_settings.py:89
-msgid "Japanese"
-msgstr "日語"
-
-#: conf/global_settings.py:90
-msgid "Georgian"
-msgstr "喬治亞語"
-
-#: conf/global_settings.py:91
-msgid "Kazakh"
-msgstr "哈薩克(Kazakh)"
-
-#: conf/global_settings.py:92
-msgid "Khmer"
-msgstr "高棉語"
-
-#: conf/global_settings.py:93
-msgid "Kannada"
-msgstr "坎那達語"
-
-#: conf/global_settings.py:94
-msgid "Korean"
-msgstr "韓語"
-
-#: conf/global_settings.py:95
-msgid "Luxembourgish"
-msgstr ""
-
-#: conf/global_settings.py:96
-msgid "Lithuanian"
-msgstr "立陶宛語"
-
-#: conf/global_settings.py:97
-msgid "Latvian"
-msgstr "拉脫維亞語"
-
-#: conf/global_settings.py:98
-msgid "Macedonian"
-msgstr "馬其頓語"
-
-#: conf/global_settings.py:99
-msgid "Malayalam"
-msgstr "馬來亞拉姆語"
-
-#: conf/global_settings.py:100
-msgid "Mongolian"
-msgstr "蒙古語"
-
-#: conf/global_settings.py:101
-msgid "Burmese"
-msgstr ""
-
-#: conf/global_settings.py:102
-msgid "Norwegian Bokmal"
-msgstr "挪威語(波克默爾)"
-
-#: conf/global_settings.py:103
-msgid "Nepali"
-msgstr "尼泊爾(Nepali)"
-
-#: conf/global_settings.py:104
-msgid "Dutch"
-msgstr "荷蘭語"
-
-#: conf/global_settings.py:105
-msgid "Norwegian Nynorsk"
-msgstr "挪威語(尼諾斯克)"
-
-#: conf/global_settings.py:106
-msgid "Ossetic"
-msgstr ""
-
-#: conf/global_settings.py:107
-msgid "Punjabi"
-msgstr "旁遮普語"
-
-#: conf/global_settings.py:108
-msgid "Polish"
-msgstr "波蘭嶼"
-
-#: conf/global_settings.py:109
-msgid "Portuguese"
-msgstr "葡萄牙語"
-
-#: conf/global_settings.py:110
-msgid "Brazilian Portuguese"
-msgstr "巴西葡萄牙語"
-
-#: conf/global_settings.py:111
-msgid "Romanian"
-msgstr "羅馬尼亞語"
-
-#: conf/global_settings.py:112
-msgid "Russian"
-msgstr "俄語"
-
-#: conf/global_settings.py:113
-msgid "Slovak"
-msgstr "斯洛伐克語"
-
-#: conf/global_settings.py:114
-msgid "Slovenian"
-msgstr "斯洛維尼亞語"
-
-#: conf/global_settings.py:115
-msgid "Albanian"
-msgstr "阿爾巴尼亞語"
-
-#: conf/global_settings.py:116
-msgid "Serbian"
-msgstr "塞爾維亞語"
-
-#: conf/global_settings.py:117
-msgid "Serbian Latin"
-msgstr "塞爾維亞拉丁語"
-
-#: conf/global_settings.py:118
-msgid "Swedish"
-msgstr "瑞典語"
-
-#: conf/global_settings.py:119
-msgid "Swahili"
-msgstr "斯瓦希裡(Swahili)"
-
-#: conf/global_settings.py:120
-msgid "Tamil"
-msgstr "坦米爾語"
-
-#: conf/global_settings.py:121
-msgid "Telugu"
-msgstr "泰盧固語"
-
-#: conf/global_settings.py:122
-msgid "Thai"
-msgstr "泰語"
-
-#: conf/global_settings.py:123
-msgid "Turkish"
-msgstr "土耳其語"
-
-#: conf/global_settings.py:124
-msgid "Tatar"
-msgstr "韃靼(Tatar)"
-
-#: conf/global_settings.py:125
-msgid "Udmurt"
-msgstr ""
-
-#: conf/global_settings.py:126
-msgid "Ukrainian"
-msgstr "烏克蘭語"
-
-#: conf/global_settings.py:127
-msgid "Urdu"
-msgstr "烏爾都語(Urdu)"
-
-#: conf/global_settings.py:128
-msgid "Vietnamese"
-msgstr "越南語"
-
-#: conf/global_settings.py:129
-msgid "Simplified Chinese"
-msgstr "簡體中文"
-
-#: conf/global_settings.py:130
-msgid "Traditional Chinese"
-msgstr "繁體中文"
-
-#: core/validators.py:21
-msgid "Enter a valid value."
-msgstr "輸入有效的值"
-
-#: core/validators.py:53 forms/fields.py:650
-msgid "Enter a valid URL."
-msgstr "輸入有效的URL"
-
-#: core/validators.py:79
-msgid "Enter a valid integer."
-msgstr ""
-
-#: core/validators.py:83
-msgid "Enter a valid email address."
-msgstr "輸入有效的電子郵件地址。"
-
-#: core/validators.py:131
-msgid ""
-"Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."
-msgstr "輸入一個有效的 'slug',由字母、數字、底線與連字號組成。"
-
-#: core/validators.py:134 core/validators.py:153
-msgid "Enter a valid IPv4 address."
-msgstr "輸入有效的 IPv4 位址。"
-
-#: core/validators.py:139 core/validators.py:154
-msgid "Enter a valid IPv6 address."
-msgstr "請輸入有效的 IPv6 位址。"
-
-#: core/validators.py:149 core/validators.py:152
-msgid "Enter a valid IPv4 or IPv6 address."
-msgstr "請輸入有效的 IPv4 或 IPv6 位址。"
-
-#: core/validators.py:175 db/models/fields/__init__.py:712
-msgid "Enter only digits separated by commas."
-msgstr "輸入以逗號分隔的數字。"
-
-#: core/validators.py:181
-#, python-format
-msgid "Ensure this value is %(limit_value)s (it is %(show_value)s)."
-msgstr "確認這個是否為 %(limit_value)s (目前是 %(show_value)s)."
-
-#: core/validators.py:196
-#, python-format
-msgid "Ensure this value is less than or equal to %(limit_value)s."
-msgstr "確認這個數值是否小於或等於 %(limit_value)s。"
-
-#: core/validators.py:202
-#, python-format
-msgid "Ensure this value is greater than or equal to %(limit_value)s."
-msgstr "確認這個數值是否大於或等於 %(limit_value)s。"
-
-#: core/validators.py:210
-#, python-format
-msgid ""
-"Ensure this value has at least %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at least %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: core/validators.py:220
-#, python-format
-msgid ""
-"Ensure this value has at most %(limit_value)d character (it has "
-"%(show_value)d)."
-msgid_plural ""
-"Ensure this value has at most %(limit_value)d characters (it has "
-"%(show_value)d)."
-msgstr[0] ""
-
-#: db/models/base.py:884
-#, python-format
-msgid "%(field_name)s must be unique for %(date_field)s %(lookup)s."
-msgstr "%(date_field)s 的 %(lookup)s 在 %(field_name)s 必須是唯一的。"
-
-#: db/models/base.py:907 forms/models.py:686
-msgid "and"
-msgstr "和"
-
-#: db/models/base.py:908 db/models/fields/__init__.py:83
-#, python-format
-msgid "%(model_name)s with this %(field_label)s already exists."
-msgstr "這個 %(field_label)s 在 %(model_name)s 已經存在。"
-
-#: db/models/fields/__init__.py:80
-#, python-format
-msgid "Value %(value)r is not a valid choice."
-msgstr ""
-
-#: db/models/fields/__init__.py:81
-msgid "This field cannot be null."
-msgstr "這個值不能是 null。"
-
-#: db/models/fields/__init__.py:82
-msgid "This field cannot be blank."
-msgstr "這個欄位不能留白"
-
-#: db/models/fields/__init__.py:89
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "欄位型態: %(field_type)s"
-
-#: db/models/fields/__init__.py:570 db/models/fields/__init__.py:1063
-msgid "Integer"
-msgstr "整數"
-
-#: db/models/fields/__init__.py:574 db/models/fields/__init__.py:1061
-#, python-format
-msgid "'%(value)s' value must be an integer."
-msgstr ""
-
-#: db/models/fields/__init__.py:625
-#, python-format
-msgid "'%(value)s' value must be either True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:627
-msgid "Boolean (Either True or False)"
-msgstr "布林值 (True 或 False)"
-
-#: db/models/fields/__init__.py:679
-#, python-format
-msgid "String (up to %(max_length)s)"
-msgstr "字串 (最長到 %(max_length)s 個字)"
-
-#: db/models/fields/__init__.py:707
-msgid "Comma-separated integers"
-msgstr "逗號分隔的整數"
-
-#: db/models/fields/__init__.py:721
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid date format. It must be in YYYY-MM-DD "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:723 db/models/fields/__init__.py:817
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD) but it is an invalid "
-"date."
-msgstr ""
-
-#: db/models/fields/__init__.py:726
-msgid "Date (without time)"
-msgstr "日期 (不包括時間)"
-
-#: db/models/fields/__init__.py:815
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in YYYY-MM-DD HH:MM[:ss[."
-"uuuuuu]][TZ] format."
-msgstr ""
-
-#: db/models/fields/__init__.py:819
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (YYYY-MM-DD HH:MM[:ss[.uuuuuu]]"
-"[TZ]) but it is an invalid date/time."
-msgstr ""
-
-#: db/models/fields/__init__.py:823
-msgid "Date (with time)"
-msgstr "日期 (包括時間)"
-
-#: db/models/fields/__init__.py:921
-#, python-format
-msgid "'%(value)s' value must be a decimal number."
-msgstr ""
-
-#: db/models/fields/__init__.py:923
-msgid "Decimal number"
-msgstr "十進位數(小數可)"
-
-#: db/models/fields/__init__.py:983
-msgid "Email address"
-msgstr "電子郵件地址"
-
-#: db/models/fields/__init__.py:1002
-msgid "File path"
-msgstr "檔案路徑"
-
-#: db/models/fields/__init__.py:1029
-#, python-format
-msgid "'%(value)s' value must be a float."
-msgstr ""
-
-#: db/models/fields/__init__.py:1031
-msgid "Floating point number"
-msgstr "浮點數"
-
-#: db/models/fields/__init__.py:1098
-msgid "Big (8 byte) integer"
-msgstr "大整數(8位元組)"
-
-#: db/models/fields/__init__.py:1112
-msgid "IPv4 address"
-msgstr "IPv4 地址"
-
-#: db/models/fields/__init__.py:1128
-msgid "IP address"
-msgstr "IP 位址"
-
-#: db/models/fields/__init__.py:1175
-#, python-format
-msgid "'%(value)s' value must be either None, True or False."
-msgstr ""
-
-#: db/models/fields/__init__.py:1177
-msgid "Boolean (Either True, False or None)"
-msgstr "布林值 (True, False 或 None)"
-
-#: db/models/fields/__init__.py:1229
-msgid "Positive integer"
-msgstr "正整數"
-
-#: db/models/fields/__init__.py:1240
-msgid "Positive small integer"
-msgstr "正小整數"
-
-#: db/models/fields/__init__.py:1252
-#, python-format
-msgid "Slug (up to %(max_length)s)"
-msgstr "可讀網址 (長度最多 %(max_length)s)"
-
-#: db/models/fields/__init__.py:1270
-msgid "Small integer"
-msgstr "小整數"
-
-#: db/models/fields/__init__.py:1276
-msgid "Text"
-msgstr "文字"
-
-#: db/models/fields/__init__.py:1294
-#, python-format
-msgid ""
-"'%(value)s' value has an invalid format. It must be in HH:MM[:ss[.uuuuuu]] "
-"format."
-msgstr ""
-
-#: db/models/fields/__init__.py:1296
-#, python-format
-msgid ""
-"'%(value)s' value has the correct format (HH:MM[:ss[.uuuuuu]]) but it is an "
-"invalid time."
-msgstr ""
-
-#: db/models/fields/__init__.py:1299
-msgid "Time"
-msgstr "時間"
-
-#: db/models/fields/__init__.py:1368
-msgid "URL"
-msgstr "URL"
-
-#: db/models/fields/__init__.py:1384
-msgid "Raw binary data"
-msgstr "原始二進制數據"
-
-#: db/models/fields/files.py:217
-msgid "File"
-msgstr "檔案"
-
-#: db/models/fields/files.py:324
-msgid "Image"
-msgstr "影像"
-
-#: db/models/fields/related.py:1128
-#, python-format
-msgid "%(model)s instance with pk %(pk)r does not exist."
-msgstr ""
-
-#: db/models/fields/related.py:1130
-msgid "Foreign Key (type determined by related field)"
-msgstr "外鍵 (型態由關連欄位決定)"
-
-#: db/models/fields/related.py:1271
-msgid "One-to-one relationship"
-msgstr "一對一關連"
-
-#: db/models/fields/related.py:1338
-msgid "Many-to-many relationship"
-msgstr "多對多關連"
-
-#: forms/fields.py:56
-msgid "This field is required."
-msgstr "這個欄位是必須的。"
-
-#: forms/fields.py:225
-msgid "Enter a whole number."
-msgstr "輸入整數"
-
-#: forms/fields.py:266 forms/fields.py:294
-msgid "Enter a number."
-msgstr "輸入一個數字"
-
-#: forms/fields.py:296
-#, python-format
-msgid "Ensure that there are no more than %(max)s digit in total."
-msgid_plural "Ensure that there are no more than %(max)s digits in total."
-msgstr[0] "確認數字全長不超過 %(max)s 位。"
-
-#: forms/fields.py:300
-#, python-format
-msgid "Ensure that there are no more than %(max)s decimal place."
-msgid_plural "Ensure that there are no more than %(max)s decimal places."
-msgstr[0] ""
-
-#: forms/fields.py:304
-#, python-format
-msgid ""
-"Ensure that there are no more than %(max)s digit before the decimal point."
-msgid_plural ""
-"Ensure that there are no more than %(max)s digits before the decimal point."
-msgstr[0] ""
-
-#: forms/fields.py:415 forms/fields.py:1088
-msgid "Enter a valid date."
-msgstr "輸入有效的日期"
-
-#: forms/fields.py:439 forms/fields.py:1089
-msgid "Enter a valid time."
-msgstr "輸入有效的時間"
-
-#: forms/fields.py:461
-msgid "Enter a valid date/time."
-msgstr "輸入有效的日期/時間"
-
-#: forms/fields.py:539
-msgid "No file was submitted. Check the encoding type on the form."
-msgstr "沒有檔案被送出。請檢查表單的編碼類型。"
-
-#: forms/fields.py:540
-msgid "No file was submitted."
-msgstr "沒有檔案送出"
-
-#: forms/fields.py:541
-msgid "The submitted file is empty."
-msgstr "送出的檔案是空的。"
-
-#: forms/fields.py:543
-#, python-format
-msgid "Ensure this filename has at most %(max)d character (it has %(length)d)."
-msgid_plural ""
-"Ensure this filename has at most %(max)d characters (it has %(length)d)."
-msgstr[0] ""
-
-#: forms/fields.py:546
-msgid "Please either submit a file or check the clear checkbox, not both."
-msgstr "請提交一個檔案或確認清除核可項, 不能兩者都做。"
-
-#: forms/fields.py:607
-msgid ""
-"Upload a valid image. The file you uploaded was either not an image or a "
-"corrupted image."
-msgstr "上傳一個有效的圖檔。你上傳的檔案為非圖片,不然就是損壞的圖檔。"
-
-#: forms/fields.py:757 forms/fields.py:844 forms/models.py:1145
-#, python-format
-msgid "Select a valid choice. %(value)s is not one of the available choices."
-msgstr "請選擇有效的項目, %(value)s 不是一個可用的選擇。"
-
-#: forms/fields.py:845 forms/fields.py:957 forms/models.py:1144
-msgid "Enter a list of values."
-msgstr "輸入一個列表的值"
-
-#. Translators: This is the default suffix added to form field labels
-#: forms/forms.py:90
-msgid ":"
-msgstr ":"
-
-#: forms/forms.py:159
-#, python-format
-msgid "(Hidden field %(name)s) %(error)s"
-msgstr ""
-
-#. Translators: If found as last label character, these punctuation
-#. characters will prevent the default label_suffix to be appended to the
-#. label
-#: forms/forms.py:527
-msgid ":?.!"
-msgstr ":?.!"
-
-#: forms/formsets.py:88
-msgid "ManagementForm data is missing or has been tampered with"
-msgstr ""
-
-#: forms/formsets.py:321
-#, python-format
-msgid "Please submit %d or fewer forms."
-msgid_plural "Please submit %d or fewer forms."
-msgstr[0] ""
-
-#: forms/formsets.py:350 forms/formsets.py:352
-msgid "Order"
-msgstr "排序"
-
-#: forms/formsets.py:354
-msgid "Delete"
-msgstr "刪除"
-
-#: forms/models.py:680
-#, python-format
-msgid "Please correct the duplicate data for %(field)s."
-msgstr "請修正 %(field)s 的重覆資料"
-
-#: forms/models.py:684
-#, python-format
-msgid "Please correct the duplicate data for %(field)s, which must be unique."
-msgstr "請修正 %(field)s 的重覆資料, 必須為唯一值"
-
-#: forms/models.py:690
-#, python-format
-msgid ""
-"Please correct the duplicate data for %(field_name)s which must be unique "
-"for the %(lookup)s in %(date_field)s."
-msgstr ""
-"請修正 %(field_name)s 重複資料, %(date_field)s 的 %(lookup)s 必須是唯一值。"
-
-#: forms/models.py:698
-msgid "Please correct the duplicate values below."
-msgstr "請修正下方重覆的數值"
-
-#: forms/models.py:986
-msgid "The inline foreign key did not match the parent instance primary key."
-msgstr "內含的外鍵無法連接到對應的上層實體主鍵。"
-
-#: forms/models.py:1050
-msgid "Select a valid choice. That choice is not one of the available choices."
-msgstr "選擇有效的選項: 此選擇不在可用的選項中。"
-
-#: forms/models.py:1147
-#, python-format
-msgid "\"%(pk)s\" is not a valid value for a primary key."
-msgstr "\"%(pk)s\" 不是一個主鍵的有效資料。"
-
-#: forms/models.py:1158
-msgid ""
-"Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
-msgstr "按住 \"Control\", 或者在 Mac 上按 \"Command\", 以選取更多值"
-
-#: forms/util.py:83
-#, python-format
-msgid ""
-"%(datetime)s couldn't be interpreted in time zone %(current_timezone)s; it "
-"may be ambiguous or it may not exist."
-msgstr ""
-"%(datetime)s 無法被轉換成 %(current_timezone)s 時區格式; 可能是不符格式或不存"
-"在。"
-
-#: forms/widgets.py:326
-msgid "Currently"
-msgstr "目前"
-
-#: forms/widgets.py:327
-msgid "Change"
-msgstr "變更"
-
-#: forms/widgets.py:328
-msgid "Clear"
-msgstr "清除"
-
-#: forms/widgets.py:546
-msgid "Unknown"
-msgstr "未知"
-
-#: forms/widgets.py:547
-msgid "Yes"
-msgstr "是"
-
-#: forms/widgets.py:548
-msgid "No"
-msgstr "否"
-
-#: template/defaultfilters.py:784
-msgid "yes,no,maybe"
-msgstr "是、否、也許"
-
-#: template/defaultfilters.py:812 template/defaultfilters.py:824
-#, python-format
-msgid "%(size)d byte"
-msgid_plural "%(size)d bytes"
-msgstr[0] "%(size)d 位元組"
-
-#: template/defaultfilters.py:826
-#, python-format
-msgid "%s KB"
-msgstr "%s KB"
-
-#: template/defaultfilters.py:828
-#, python-format
-msgid "%s MB"
-msgstr "%s MB"
-
-#: template/defaultfilters.py:830
-#, python-format
-msgid "%s GB"
-msgstr "%s GB"
-
-#: template/defaultfilters.py:832
-#, python-format
-msgid "%s TB"
-msgstr "%s TB"
-
-#: template/defaultfilters.py:834
-#, python-format
-msgid "%s PB"
-msgstr "%s PB"
-
-#: utils/dateformat.py:47
-msgid "p.m."
-msgstr "p.m."
-
-#: utils/dateformat.py:48
-msgid "a.m."
-msgstr "a.m."
-
-#: utils/dateformat.py:53
-msgid "PM"
-msgstr "PM"
-
-#: utils/dateformat.py:54
-msgid "AM"
-msgstr "AM"
-
-#: utils/dateformat.py:103
-msgid "midnight"
-msgstr "午夜"
-
-#: utils/dateformat.py:105
-msgid "noon"
-msgstr "中午"
-
-#: utils/dates.py:6
-msgid "Monday"
-msgstr "星期一"
-
-#: utils/dates.py:6
-msgid "Tuesday"
-msgstr "星期二"
-
-#: utils/dates.py:6
-msgid "Wednesday"
-msgstr "星期三"
-
-#: utils/dates.py:6
-msgid "Thursday"
-msgstr "星期四"
-
-#: utils/dates.py:6
-msgid "Friday"
-msgstr "星期五"
-
-#: utils/dates.py:7
-msgid "Saturday"
-msgstr "星期六"
-
-#: utils/dates.py:7
-msgid "Sunday"
-msgstr "星期日"
-
-#: utils/dates.py:10
-msgid "Mon"
-msgstr "星期一"
-
-#: utils/dates.py:10
-msgid "Tue"
-msgstr "星期二"
-
-#: utils/dates.py:10
-msgid "Wed"
-msgstr "星期三"
-
-#: utils/dates.py:10
-msgid "Thu"
-msgstr "星期四"
-
-#: utils/dates.py:10
-msgid "Fri"
-msgstr "星期五"
-
-#: utils/dates.py:11
-msgid "Sat"
-msgstr "星期六"
-
-#: utils/dates.py:11
-msgid "Sun"
-msgstr "星期日"
-
-#: utils/dates.py:18
-msgid "January"
-msgstr "一月"
-
-#: utils/dates.py:18
-msgid "February"
-msgstr "二月"
-
-#: utils/dates.py:18
-msgid "March"
-msgstr "三月"
-
-#: utils/dates.py:18
-msgid "April"
-msgstr "四月"
-
-#: utils/dates.py:18
-msgid "May"
-msgstr "五月"
-
-#: utils/dates.py:18
-msgid "June"
-msgstr "六月"
-
-#: utils/dates.py:19
-msgid "July"
-msgstr "七月"
-
-#: utils/dates.py:19
-msgid "August"
-msgstr "八月"
-
-#: utils/dates.py:19
-msgid "September"
-msgstr "九月"
-
-#: utils/dates.py:19
-msgid "October"
-msgstr "十月"
-
-#: utils/dates.py:19
-msgid "November"
-msgstr "十一月"
-
-#: utils/dates.py:20
-msgid "December"
-msgstr "十二月"
-
-#: utils/dates.py:23
-msgid "jan"
-msgstr "一月"
-
-#: utils/dates.py:23
-msgid "feb"
-msgstr "二月"
-
-#: utils/dates.py:23
-msgid "mar"
-msgstr "三月"
-
-#: utils/dates.py:23
-msgid "apr"
-msgstr "四月"
-
-#: utils/dates.py:23
-msgid "may"
-msgstr "五月"
-
-#: utils/dates.py:23
-msgid "jun"
-msgstr "六月"
-
-#: utils/dates.py:24
-msgid "jul"
-msgstr "七月"
-
-#: utils/dates.py:24
-msgid "aug"
-msgstr "八月"
-
-#: utils/dates.py:24
-msgid "sep"
-msgstr "九月"
-
-#: utils/dates.py:24
-msgid "oct"
-msgstr "十月"
-
-#: utils/dates.py:24
-msgid "nov"
-msgstr "十一月"
-
-#: utils/dates.py:24
-msgid "dec"
-msgstr "十二月"
-
-#: utils/dates.py:31
-msgctxt "abbrev. month"
-msgid "Jan."
-msgstr "一月"
-
-#: utils/dates.py:32
-msgctxt "abbrev. month"
-msgid "Feb."
-msgstr "二月"
-
-#: utils/dates.py:33
-msgctxt "abbrev. month"
-msgid "March"
-msgstr "三月"
-
-#: utils/dates.py:34
-msgctxt "abbrev. month"
-msgid "April"
-msgstr "四月"
-
-#: utils/dates.py:35
-msgctxt "abbrev. month"
-msgid "May"
-msgstr "五月"
-
-#: utils/dates.py:36
-msgctxt "abbrev. month"
-msgid "June"
-msgstr "六月"
-
-#: utils/dates.py:37
-msgctxt "abbrev. month"
-msgid "July"
-msgstr "七月"
-
-#: utils/dates.py:38
-msgctxt "abbrev. month"
-msgid "Aug."
-msgstr "八月"
-
-#: utils/dates.py:39
-msgctxt "abbrev. month"
-msgid "Sept."
-msgstr "九月"
-
-#: utils/dates.py:40
-msgctxt "abbrev. month"
-msgid "Oct."
-msgstr "十月"
-
-#: utils/dates.py:41
-msgctxt "abbrev. month"
-msgid "Nov."
-msgstr "十一月"
-
-#: utils/dates.py:42
-msgctxt "abbrev. month"
-msgid "Dec."
-msgstr "十二月"
-
-#: utils/dates.py:45
-msgctxt "alt. month"
-msgid "January"
-msgstr "一月"
-
-#: utils/dates.py:46
-msgctxt "alt. month"
-msgid "February"
-msgstr "二月"
-
-#: utils/dates.py:47
-msgctxt "alt. month"
-msgid "March"
-msgstr "三月"
-
-#: utils/dates.py:48
-msgctxt "alt. month"
-msgid "April"
-msgstr "四月"
-
-#: utils/dates.py:49
-msgctxt "alt. month"
-msgid "May"
-msgstr "五月"
-
-#: utils/dates.py:50
-msgctxt "alt. month"
-msgid "June"
-msgstr "六月"
-
-#: utils/dates.py:51
-msgctxt "alt. month"
-msgid "July"
-msgstr "七月"
-
-#: utils/dates.py:52
-msgctxt "alt. month"
-msgid "August"
-msgstr "八月"
-
-#: utils/dates.py:53
-msgctxt "alt. month"
-msgid "September"
-msgstr "九月"
-
-#: utils/dates.py:54
-msgctxt "alt. month"
-msgid "October"
-msgstr "十月"
-
-#: utils/dates.py:55
-msgctxt "alt. month"
-msgid "November"
-msgstr "十一月"
-
-#: utils/dates.py:56
-msgctxt "alt. month"
-msgid "December"
-msgstr "十二月"
-
-#: utils/image.py:105
-#, python-format
-msgid "Neither Pillow nor PIL could be imported: %s"
-msgstr ""
-
-#: utils/image.py:127
-#, python-format
-msgid "The '_imaging' module for the PIL could not be imported: %s"
-msgstr ""
-
-#: utils/ipv6.py:9
-msgid "This is not a valid IPv6 address."
-msgstr ""
-
-#: utils/text.py:69
-#, python-format
-msgctxt "String to return when truncating text"
-msgid "%(truncated_text)s..."
-msgstr "%(truncated_text)s..."
-
-#: utils/text.py:224
-msgid "or"
-msgstr "或"
-
-#. Translators: This string is used as a separator between list elements
-#: utils/text.py:241 utils/timesince.py:56
-msgid ", "
-msgstr ", "
-
-#: utils/timesince.py:24
-#, python-format
-msgid "%d year"
-msgid_plural "%d years"
-msgstr[0] "%d 年"
-
-#: utils/timesince.py:25
-#, python-format
-msgid "%d month"
-msgid_plural "%d months"
-msgstr[0] "%d 月"
-
-#: utils/timesince.py:26
-#, python-format
-msgid "%d week"
-msgid_plural "%d weeks"
-msgstr[0] "%d 週"
-
-#: utils/timesince.py:27
-#, python-format
-msgid "%d day"
-msgid_plural "%d days"
-msgstr[0] "%d 日"
-
-#: utils/timesince.py:28
-#, python-format
-msgid "%d hour"
-msgid_plural "%d hours"
-msgstr[0] "%d 時"
-
-#: utils/timesince.py:29
-#, python-format
-msgid "%d minute"
-msgid_plural "%d minutes"
-msgstr[0] "%d 分"
-
-#: utils/timesince.py:45
-msgid "0 minutes"
-msgstr "0 分"
-
-#: views/static.py:56
-msgid "Directory indexes are not allowed here."
-msgstr "這裡不允許目錄索引。"
-
-#: views/static.py:58
-#, python-format
-msgid "\"%(path)s\" does not exist"
-msgstr "\"%(path)s\" 路徑不存在"
-
-#: views/static.py:99
-#, python-format
-msgid "Index of %(directory)s"
-msgstr "%(directory)s 的索引"
-
-#: views/generic/dates.py:42
-msgid "No year specified"
-msgstr "不指定年份"
-
-#: views/generic/dates.py:98
-msgid "No month specified"
-msgstr "不指定月份"
-
-#: views/generic/dates.py:157
-msgid "No day specified"
-msgstr "不指定日期"
-
-#: views/generic/dates.py:213
-msgid "No week specified"
-msgstr "不指定週數"
-
-#: views/generic/dates.py:368 views/generic/dates.py:396
-#, python-format
-msgid "No %(verbose_name_plural)s available"
-msgstr "%(verbose_name_plural)s 無法使用"
-
-#: views/generic/dates.py:649
-#, python-format
-msgid ""
-"Future %(verbose_name_plural)s not available because %(class_name)s."
-"allow_future is False."
-msgstr ""
-"未來的 %(verbose_name_plural)s 不可用,因 %(class_name)s.allow_future 為 "
-"False."
-
-#: views/generic/dates.py:681
-#, python-format
-msgid "Invalid date string '%(datestr)s' given format '%(format)s'"
-msgstr "無效的日期字串 '%(datestr)s' 可接受格式 '%(format)s'"
-
-#: views/generic/detail.py:54
-#, python-format
-msgid "No %(verbose_name)s found matching the query"
-msgstr "無 %(verbose_name)s 符合本次搜尋"
-
-#: views/generic/list.py:54
-msgid "Page is not 'last', nor can it be converted to an int."
-msgstr "頁面不是最後一頁,也無法被轉換為整數。"
-
-#: views/generic/list.py:59
-#, python-format
-msgid "Invalid page (%(page_number)s): %(message)s"
-msgstr "無效的頁面 (%(page_number)s): %(message)s"
-
-#: views/generic/list.py:150
-#, python-format
-msgid "Empty list and '%(class_name)s.allow_empty' is False."
-msgstr "為空list且 '%(class_name)s.allow_empty' 為False."
diff --git a/lib/python2.7/site-packages/django/conf/locale/zh_TW/__init__.py b/lib/python2.7/site-packages/django/conf/locale/zh_TW/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/zh_TW/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/locale/zh_TW/formats.py b/lib/python2.7/site-packages/django/conf/locale/zh_TW/formats.py
deleted file mode 100644
index 4355928..0000000
--- a/lib/python2.7/site-packages/django/conf/locale/zh_TW/formats.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# -*- encoding: utf-8 -*-
-# This file is distributed under the same license as the Django package.
-#
-from __future__ import unicode_literals
-
-# The *_FORMAT strings use the Django date format syntax,
-# see http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
-# DATE_FORMAT =
-# TIME_FORMAT =
-# DATETIME_FORMAT =
-# YEAR_MONTH_FORMAT =
-# MONTH_DAY_FORMAT =
-# SHORT_DATE_FORMAT =
-# SHORT_DATETIME_FORMAT =
-# FIRST_DAY_OF_WEEK =
-
-# The *_INPUT_FORMATS strings use the Python strftime format syntax,
-# see http://docs.python.org/library/datetime.html#strftime-strptime-behavior
-# DATE_INPUT_FORMATS =
-# TIME_INPUT_FORMATS =
-# DATETIME_INPUT_FORMATS =
-# DECIMAL_SEPARATOR =
-# THOUSAND_SEPARATOR =
-# NUMBER_GROUPING =
diff --git a/lib/python2.7/site-packages/django/conf/project_template/manage.py b/lib/python2.7/site-packages/django/conf/project_template/manage.py
deleted file mode 100644
index 391dd88..0000000
--- a/lib/python2.7/site-packages/django/conf/project_template/manage.py
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/usr/bin/env python
-import os
-import sys
-
-if __name__ == "__main__":
- os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")
-
- from django.core.management import execute_from_command_line
-
- execute_from_command_line(sys.argv)
diff --git a/lib/python2.7/site-packages/django/conf/project_template/project_name/__init__.py b/lib/python2.7/site-packages/django/conf/project_template/project_name/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/conf/project_template/project_name/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/conf/project_template/project_name/settings.py b/lib/python2.7/site-packages/django/conf/project_template/project_name/settings.py
deleted file mode 100644
index efe8091..0000000
--- a/lib/python2.7/site-packages/django/conf/project_template/project_name/settings.py
+++ /dev/null
@@ -1,82 +0,0 @@
-"""
-Django settings for {{ project_name }} project.
-
-For more information on this file, see
-https://docs.djangoproject.com/en/{{ docs_version }}/topics/settings/
-
-For the full list of settings and their values, see
-https://docs.djangoproject.com/en/{{ docs_version }}/ref/settings/
-"""
-
-# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
-import os
-BASE_DIR = os.path.dirname(os.path.dirname(__file__))
-
-
-# Quick-start development settings - unsuitable for production
-# See https://docs.djangoproject.com/en/{{ docs_version }}/howto/deployment/checklist/
-
-# SECURITY WARNING: keep the secret key used in production secret!
-SECRET_KEY = '{{ secret_key }}'
-
-# SECURITY WARNING: don't run with debug turned on in production!
-DEBUG = True
-
-TEMPLATE_DEBUG = True
-
-ALLOWED_HOSTS = []
-
-
-# Application definition
-
-INSTALLED_APPS = (
- 'django.contrib.admin',
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
-)
-
-MIDDLEWARE_CLASSES = (
- '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',
-)
-
-ROOT_URLCONF = '{{ project_name }}.urls'
-
-WSGI_APPLICATION = '{{ project_name }}.wsgi.application'
-
-
-# Database
-# https://docs.djangoproject.com/en/{{ docs_version }}/ref/settings/#databases
-
-DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
- }
-}
-
-# Internationalization
-# https://docs.djangoproject.com/en/{{ docs_version }}/topics/i18n/
-
-LANGUAGE_CODE = 'en-us'
-
-TIME_ZONE = 'UTC'
-
-USE_I18N = True
-
-USE_L10N = True
-
-USE_TZ = True
-
-
-# Static files (CSS, JavaScript, Images)
-# https://docs.djangoproject.com/en/{{ docs_version }}/howto/static-files/
-
-STATIC_URL = '/static/'
diff --git a/lib/python2.7/site-packages/django/conf/project_template/project_name/urls.py b/lib/python2.7/site-packages/django/conf/project_template/project_name/urls.py
deleted file mode 100644
index f03a294..0000000
--- a/lib/python2.7/site-packages/django/conf/project_template/project_name/urls.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from django.conf.urls import patterns, include, url
-
-from django.contrib import admin
-admin.autodiscover()
-
-urlpatterns = patterns('',
- # Examples:
- # url(r'^$', '{{ project_name }}.views.home', name='home'),
- # url(r'^blog/', include('blog.urls')),
-
- url(r'^admin/', include(admin.site.urls)),
-)
diff --git a/lib/python2.7/site-packages/django/conf/project_template/project_name/wsgi.py b/lib/python2.7/site-packages/django/conf/project_template/project_name/wsgi.py
deleted file mode 100644
index 94d60c8..0000000
--- a/lib/python2.7/site-packages/django/conf/project_template/project_name/wsgi.py
+++ /dev/null
@@ -1,14 +0,0 @@
-"""
-WSGI config for {{ project_name }} project.
-
-It exposes the WSGI callable as a module-level variable named ``application``.
-
-For more information on this file, see
-https://docs.djangoproject.com/en/{{ docs_version }}/howto/deployment/wsgi/
-"""
-
-import os
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")
-
-from django.core.wsgi import get_wsgi_application
-application = get_wsgi_application()
diff --git a/lib/python2.7/site-packages/django/conf/urls/__init__.py b/lib/python2.7/site-packages/django/conf/urls/__init__.py
deleted file mode 100644
index c0340c0..0000000
--- a/lib/python2.7/site-packages/django/conf/urls/__init__.py
+++ /dev/null
@@ -1,63 +0,0 @@
-from django.core.urlresolvers import (RegexURLPattern,
- RegexURLResolver, LocaleRegexURLResolver)
-from django.core.exceptions import ImproperlyConfigured
-from django.utils.importlib import import_module
-from django.utils import six
-
-
-__all__ = ['handler400', 'handler403', 'handler404', 'handler500', 'include', 'patterns', 'url']
-
-handler400 = 'django.views.defaults.bad_request'
-handler403 = 'django.views.defaults.permission_denied'
-handler404 = 'django.views.defaults.page_not_found'
-handler500 = 'django.views.defaults.server_error'
-
-def include(arg, namespace=None, app_name=None):
- if isinstance(arg, tuple):
- # callable returning a namespace hint
- if namespace:
- raise ImproperlyConfigured('Cannot override the namespace for a dynamic module that provides a namespace')
- urlconf_module, app_name, namespace = arg
- else:
- # No namespace hint - use manually provided namespace
- urlconf_module = arg
-
- if isinstance(urlconf_module, six.string_types):
- urlconf_module = import_module(urlconf_module)
- patterns = getattr(urlconf_module, 'urlpatterns', urlconf_module)
-
- # Make sure we can iterate through the patterns (without this, some
- # testcases will break).
- if isinstance(patterns, (list, tuple)):
- for url_pattern in patterns:
- # Test if the LocaleRegexURLResolver is used within the include;
- # this should throw an error since this is not allowed!
- if isinstance(url_pattern, LocaleRegexURLResolver):
- raise ImproperlyConfigured(
- 'Using i18n_patterns in an included URLconf is not allowed.')
-
- return (urlconf_module, app_name, namespace)
-
-def patterns(prefix, *args):
- pattern_list = []
- for t in args:
- if isinstance(t, (list, tuple)):
- t = url(prefix=prefix, *t)
- elif isinstance(t, RegexURLPattern):
- t.add_prefix(prefix)
- pattern_list.append(t)
- return pattern_list
-
-def url(regex, view, kwargs=None, name=None, prefix=''):
- if isinstance(view, (list,tuple)):
- # For include(...) processing.
- urlconf_module, app_name, namespace = view
- return RegexURLResolver(regex, urlconf_module, kwargs, app_name=app_name, namespace=namespace)
- else:
- if isinstance(view, six.string_types):
- if not view:
- raise ImproperlyConfigured('Empty URL pattern view name not permitted (for pattern %r)' % regex)
- if prefix:
- view = prefix + '.' + view
- return RegexURLPattern(regex, view, kwargs, name)
-
diff --git a/lib/python2.7/site-packages/django/conf/urls/i18n.py b/lib/python2.7/site-packages/django/conf/urls/i18n.py
deleted file mode 100644
index 426c2b2..0000000
--- a/lib/python2.7/site-packages/django/conf/urls/i18n.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from django.conf import settings
-from django.conf.urls import patterns, url
-from django.core.urlresolvers import LocaleRegexURLResolver
-
-def i18n_patterns(prefix, *args):
- """
- Adds the language code prefix to every URL pattern within this
- function. This may only be used in the root URLconf, not in an included
- URLconf.
-
- """
- pattern_list = patterns(prefix, *args)
- if not settings.USE_I18N:
- return pattern_list
- return [LocaleRegexURLResolver(pattern_list)]
-
-
-urlpatterns = patterns('',
- url(r'^setlang/$', 'django.views.i18n.set_language', name='set_language'),
-)
diff --git a/lib/python2.7/site-packages/django/conf/urls/shortcut.py b/lib/python2.7/site-packages/django/conf/urls/shortcut.py
deleted file mode 100644
index c00d176..0000000
--- a/lib/python2.7/site-packages/django/conf/urls/shortcut.py
+++ /dev/null
@@ -1,10 +0,0 @@
-import warnings
-
-from django.conf.urls import patterns
-
-warnings.warn("django.conf.urls.shortcut will be removed in Django 1.8.",
- PendingDeprecationWarning)
-
-urlpatterns = patterns('django.views',
- (r'^(?P<content_type_id>\d+)/(?P<object_id>.*)/$', 'defaults.shortcut'),
-)
diff --git a/lib/python2.7/site-packages/django/conf/urls/static.py b/lib/python2.7/site-packages/django/conf/urls/static.py
deleted file mode 100644
index 8d30565..0000000
--- a/lib/python2.7/site-packages/django/conf/urls/static.py
+++ /dev/null
@@ -1,25 +0,0 @@
-import re
-from django.conf import settings
-from django.conf.urls import patterns, url
-from django.core.exceptions import ImproperlyConfigured
-
-def static(prefix, view='django.views.static.serve', **kwargs):
- """
- Helper function to return a URL pattern for serving files in debug mode.
-
- from django.conf import settings
- from django.conf.urls.static import static
-
- urlpatterns = patterns('',
- # ... the rest of your URLconf goes here ...
- ) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
-
- """
- # No-op if not in debug mode or an non-local prefix
- if not settings.DEBUG or (prefix and '://' in prefix):
- return []
- elif not prefix:
- raise ImproperlyConfigured("Empty static prefix not permitted")
- return patterns('',
- url(r'^%s(?P<path>.*)$' % re.escape(prefix.lstrip('/')), view, kwargs=kwargs),
- )
diff --git a/lib/python2.7/site-packages/django/contrib/__init__.py b/lib/python2.7/site-packages/django/contrib/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/admin/__init__.py b/lib/python2.7/site-packages/django/contrib/admin/__init__.py
deleted file mode 100644
index 1084784..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/__init__.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# ACTION_CHECKBOX_NAME is unused, but should stay since its import from here
-# has been referenced in documentation.
-from django.contrib.admin.helpers import ACTION_CHECKBOX_NAME
-from django.contrib.admin.options import ModelAdmin, HORIZONTAL, VERTICAL
-from django.contrib.admin.options import StackedInline, TabularInline
-from django.contrib.admin.sites import AdminSite, site
-from django.contrib.admin.filters import (ListFilter, SimpleListFilter,
- FieldListFilter, BooleanFieldListFilter, RelatedFieldListFilter,
- ChoicesFieldListFilter, DateFieldListFilter, AllValuesFieldListFilter)
-
-
-def autodiscover():
- """
- Auto-discover INSTALLED_APPS admin.py modules and fail silently when
- not present. This forces an import on them to register any admin bits they
- may want.
- """
-
- import copy
- from django.conf import settings
- from django.utils.importlib import import_module
- from django.utils.module_loading import module_has_submodule
-
- for app in settings.INSTALLED_APPS:
- mod = import_module(app)
- # Attempt to import the app's admin module.
- try:
- before_import_registry = copy.copy(site._registry)
- import_module('%s.admin' % app)
- except:
- # Reset the model registry to the state before the last import as
- # this import will have to reoccur on the next request and this
- # could raise NotRegistered and AlreadyRegistered exceptions
- # (see #8245).
- site._registry = before_import_registry
-
- # Decide whether to bubble up this error. If the app just
- # doesn't have an admin module, we can ignore the error
- # attempting to import it, otherwise we want it to bubble up.
- if module_has_submodule(mod, 'admin'):
- raise
diff --git a/lib/python2.7/site-packages/django/contrib/admin/actions.py b/lib/python2.7/site-packages/django/contrib/admin/actions.py
deleted file mode 100644
index a4c5828..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/actions.py
+++ /dev/null
@@ -1,84 +0,0 @@
-"""
-Built-in, globally-available admin actions.
-"""
-
-from django.core.exceptions import PermissionDenied
-from django.contrib import messages
-from django.contrib.admin import helpers
-from django.contrib.admin.util import get_deleted_objects, model_ngettext
-from django.db import router
-from django.template.response import TemplateResponse
-from django.utils.encoding import force_text
-from django.utils.translation import ugettext_lazy, ugettext as _
-
-def delete_selected(modeladmin, request, queryset):
- """
- Default action which deletes the selected objects.
-
- This action first displays a confirmation page whichs shows all the
- deleteable objects, or, if the user has no permission one of the related
- childs (foreignkeys), a "permission denied" message.
-
- Next, it deletes all selected objects and redirects back to the change list.
- """
- opts = modeladmin.model._meta
- app_label = opts.app_label
-
- # Check that the user has delete permission for the actual model
- if not modeladmin.has_delete_permission(request):
- raise PermissionDenied
-
- using = router.db_for_write(modeladmin.model)
-
- # Populate deletable_objects, a data structure of all related objects that
- # will also be deleted.
- deletable_objects, perms_needed, protected = get_deleted_objects(
- queryset, opts, request.user, modeladmin.admin_site, using)
-
- # The user has already confirmed the deletion.
- # Do the deletion and return a None to display the change list view again.
- if request.POST.get('post'):
- if perms_needed:
- raise PermissionDenied
- n = queryset.count()
- if n:
- for obj in queryset:
- obj_display = force_text(obj)
- modeladmin.log_deletion(request, obj, obj_display)
- queryset.delete()
- modeladmin.message_user(request, _("Successfully deleted %(count)d %(items)s.") % {
- "count": n, "items": model_ngettext(modeladmin.opts, n)
- }, messages.SUCCESS)
- # Return None to display the change list page again.
- return None
-
- if len(queryset) == 1:
- objects_name = force_text(opts.verbose_name)
- else:
- objects_name = force_text(opts.verbose_name_plural)
-
- if perms_needed or protected:
- title = _("Cannot delete %(name)s") % {"name": objects_name}
- else:
- title = _("Are you sure?")
-
- context = {
- "title": title,
- "objects_name": objects_name,
- "deletable_objects": [deletable_objects],
- 'queryset': queryset,
- "perms_lacking": perms_needed,
- "protected": protected,
- "opts": opts,
- "app_label": app_label,
- 'action_checkbox_name': helpers.ACTION_CHECKBOX_NAME,
- }
-
- # Display the confirmation page
- return TemplateResponse(request, modeladmin.delete_selected_confirmation_template or [
- "admin/%s/%s/delete_selected_confirmation.html" % (app_label, opts.model_name),
- "admin/%s/delete_selected_confirmation.html" % app_label,
- "admin/delete_selected_confirmation.html"
- ], context, current_app=modeladmin.admin_site.name)
-
-delete_selected.short_description = ugettext_lazy("Delete selected %(verbose_name_plural)s")
diff --git a/lib/python2.7/site-packages/django/contrib/admin/bin/compress.py b/lib/python2.7/site-packages/django/contrib/admin/bin/compress.py
deleted file mode 100644
index e15f2d3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/bin/compress.py
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env python
-import os
-import optparse
-import subprocess
-import sys
-
-js_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'static', 'admin', 'js')
-
-def main():
- usage = "usage: %prog [file1..fileN]"
- description = """With no file paths given this script will automatically
-compress all jQuery-based files of the admin app. Requires the Google Closure
-Compiler library and Java version 6 or later."""
- parser = optparse.OptionParser(usage, description=description)
- parser.add_option("-c", dest="compiler", default="~/bin/compiler.jar",
- help="path to Closure Compiler jar file")
- parser.add_option("-v", "--verbose",
- action="store_true", dest="verbose")
- parser.add_option("-q", "--quiet",
- action="store_false", dest="verbose")
- (options, args) = parser.parse_args()
-
- compiler = os.path.expanduser(options.compiler)
- if not os.path.exists(compiler):
- sys.exit("Google Closure compiler jar file %s not found. Please use the -c option to specify the path." % compiler)
-
- if not args:
- if options.verbose:
- sys.stdout.write("No filenames given; defaulting to admin scripts\n")
- args = [os.path.join(js_path, f) for f in [
- "actions.js", "collapse.js", "inlines.js", "prepopulate.js"]]
-
- for arg in args:
- if not arg.endswith(".js"):
- arg = arg + ".js"
- to_compress = os.path.expanduser(arg)
- if os.path.exists(to_compress):
- to_compress_min = "%s.min.js" % "".join(arg.rsplit(".js"))
- cmd = "java -jar %s --js %s --js_output_file %s" % (compiler, to_compress, to_compress_min)
- if options.verbose:
- sys.stdout.write("Running: %s\n" % cmd)
- subprocess.call(cmd.split())
- else:
- sys.stdout.write("File %s not found. Sure it exists?\n" % to_compress)
-
-if __name__ == '__main__':
- main()
diff --git a/lib/python2.7/site-packages/django/contrib/admin/exceptions.py b/lib/python2.7/site-packages/django/contrib/admin/exceptions.py
deleted file mode 100644
index 2e094c6..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/exceptions.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from django.core.exceptions import SuspiciousOperation
-
-
-class DisallowedModelAdminLookup(SuspiciousOperation):
- """Invalid filter was passed to admin view via URL querystring"""
- pass
diff --git a/lib/python2.7/site-packages/django/contrib/admin/filters.py b/lib/python2.7/site-packages/django/contrib/admin/filters.py
deleted file mode 100644
index 2515bab..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/filters.py
+++ /dev/null
@@ -1,409 +0,0 @@
-"""
-This encapsulates the logic for displaying filters in the Django admin.
-Filters are specified in models with the "list_filter" option.
-
-Each filter subclass knows how to display a filter for a field that passes a
-certain test -- e.g. being a DateField or ForeignKey.
-"""
-import datetime
-
-from django.db import models
-from django.core.exceptions import ImproperlyConfigured, ValidationError
-from django.utils.encoding import smart_text, force_text
-from django.utils.translation import ugettext_lazy as _
-from django.utils import timezone
-from django.contrib.admin.util import (get_model_from_relation,
- reverse_field_path, get_limit_choices_to_from_path, prepare_lookup_value)
-from django.contrib.admin.options import IncorrectLookupParameters
-
-class ListFilter(object):
- title = None # Human-readable title to appear in the right sidebar.
- template = 'admin/filter.html'
-
- def __init__(self, request, params, model, model_admin):
- # This dictionary will eventually contain the request's query string
- # parameters actually used by this filter.
- self.used_parameters = {}
- if self.title is None:
- raise ImproperlyConfigured(
- "The list filter '%s' does not specify "
- "a 'title'." % self.__class__.__name__)
-
- def has_output(self):
- """
- Returns True if some choices would be output for this filter.
- """
- raise NotImplementedError
-
- def choices(self, cl):
- """
- Returns choices ready to be output in the template.
- """
- raise NotImplementedError
-
- def queryset(self, request, queryset):
- """
- Returns the filtered queryset.
- """
- raise NotImplementedError
-
- def expected_parameters(self):
- """
- Returns the list of parameter names that are expected from the
- request's query string and that will be used by this filter.
- """
- raise NotImplementedError
-
-
-class SimpleListFilter(ListFilter):
- # The parameter that should be used in the query string for that filter.
- parameter_name = None
-
- def __init__(self, request, params, model, model_admin):
- super(SimpleListFilter, self).__init__(
- request, params, model, model_admin)
- if self.parameter_name is None:
- raise ImproperlyConfigured(
- "The list filter '%s' does not specify "
- "a 'parameter_name'." % self.__class__.__name__)
- lookup_choices = self.lookups(request, model_admin)
- if lookup_choices is None:
- lookup_choices = ()
- self.lookup_choices = list(lookup_choices)
- if self.parameter_name in params:
- value = params.pop(self.parameter_name)
- self.used_parameters[self.parameter_name] = value
-
- def has_output(self):
- return len(self.lookup_choices) > 0
-
- def value(self):
- """
- Returns the value (in string format) provided in the request's
- query string for this filter, if any. If the value wasn't provided then
- returns None.
- """
- return self.used_parameters.get(self.parameter_name, None)
-
- def lookups(self, request, model_admin):
- """
- Must be overriden to return a list of tuples (value, verbose value)
- """
- raise NotImplementedError
-
- def expected_parameters(self):
- return [self.parameter_name]
-
- def choices(self, cl):
- yield {
- 'selected': self.value() is None,
- 'query_string': cl.get_query_string({}, [self.parameter_name]),
- 'display': _('All'),
- }
- for lookup, title in self.lookup_choices:
- yield {
- 'selected': self.value() == force_text(lookup),
- 'query_string': cl.get_query_string({
- self.parameter_name: lookup,
- }, []),
- 'display': title,
- }
-
-
-class FieldListFilter(ListFilter):
- _field_list_filters = []
- _take_priority_index = 0
-
- def __init__(self, field, request, params, model, model_admin, field_path):
- self.field = field
- self.field_path = field_path
- self.title = getattr(field, 'verbose_name', field_path)
- super(FieldListFilter, self).__init__(
- request, params, model, model_admin)
- for p in self.expected_parameters():
- if p in params:
- value = params.pop(p)
- self.used_parameters[p] = prepare_lookup_value(p, value)
-
- def has_output(self):
- return True
-
- def queryset(self, request, queryset):
- try:
- return queryset.filter(**self.used_parameters)
- except ValidationError as e:
- raise IncorrectLookupParameters(e)
-
- @classmethod
- def register(cls, test, list_filter_class, take_priority=False):
- if take_priority:
- # This is to allow overriding the default filters for certain types
- # of fields with some custom filters. The first found in the list
- # is used in priority.
- cls._field_list_filters.insert(
- cls._take_priority_index, (test, list_filter_class))
- cls._take_priority_index += 1
- else:
- cls._field_list_filters.append((test, list_filter_class))
-
- @classmethod
- def create(cls, field, request, params, model, model_admin, field_path):
- for test, list_filter_class in cls._field_list_filters:
- if not test(field):
- continue
- return list_filter_class(field, request, params,
- model, model_admin, field_path=field_path)
-
-
-class RelatedFieldListFilter(FieldListFilter):
- def __init__(self, field, request, params, model, model_admin, field_path):
- other_model = get_model_from_relation(field)
- if hasattr(field, 'rel'):
- rel_name = field.rel.get_related_field().name
- else:
- rel_name = other_model._meta.pk.name
- self.lookup_kwarg = '%s__%s__exact' % (field_path, rel_name)
- self.lookup_kwarg_isnull = '%s__isnull' % field_path
- self.lookup_val = request.GET.get(self.lookup_kwarg, None)
- self.lookup_val_isnull = request.GET.get(
- self.lookup_kwarg_isnull, None)
- self.lookup_choices = field.get_choices(include_blank=False)
- super(RelatedFieldListFilter, self).__init__(
- field, request, params, model, model_admin, field_path)
- if hasattr(field, 'verbose_name'):
- self.lookup_title = field.verbose_name
- else:
- self.lookup_title = other_model._meta.verbose_name
- self.title = self.lookup_title
-
- def has_output(self):
- if (isinstance(self.field, models.related.RelatedObject)
- and self.field.field.null or hasattr(self.field, 'rel')
- and self.field.null):
- extra = 1
- else:
- extra = 0
- return len(self.lookup_choices) + extra > 1
-
- def expected_parameters(self):
- return [self.lookup_kwarg, self.lookup_kwarg_isnull]
-
- def choices(self, cl):
- from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE
- yield {
- 'selected': self.lookup_val is None and not self.lookup_val_isnull,
- 'query_string': cl.get_query_string({},
- [self.lookup_kwarg, self.lookup_kwarg_isnull]),
- 'display': _('All'),
- }
- for pk_val, val in self.lookup_choices:
- yield {
- 'selected': self.lookup_val == smart_text(pk_val),
- 'query_string': cl.get_query_string({
- self.lookup_kwarg: pk_val,
- }, [self.lookup_kwarg_isnull]),
- 'display': val,
- }
- if (isinstance(self.field, models.related.RelatedObject)
- and self.field.field.null or hasattr(self.field, 'rel')
- and self.field.null):
- yield {
- 'selected': bool(self.lookup_val_isnull),
- 'query_string': cl.get_query_string({
- self.lookup_kwarg_isnull: 'True',
- }, [self.lookup_kwarg]),
- 'display': EMPTY_CHANGELIST_VALUE,
- }
-
-FieldListFilter.register(lambda f: (
- bool(f.rel) if hasattr(f, 'rel') else
- isinstance(f, models.related.RelatedObject)), RelatedFieldListFilter)
-
-
-class BooleanFieldListFilter(FieldListFilter):
- def __init__(self, field, request, params, model, model_admin, field_path):
- self.lookup_kwarg = '%s__exact' % field_path
- self.lookup_kwarg2 = '%s__isnull' % field_path
- self.lookup_val = request.GET.get(self.lookup_kwarg, None)
- self.lookup_val2 = request.GET.get(self.lookup_kwarg2, None)
- super(BooleanFieldListFilter, self).__init__(field,
- request, params, model, model_admin, field_path)
-
- def expected_parameters(self):
- return [self.lookup_kwarg, self.lookup_kwarg2]
-
- def choices(self, cl):
- for lookup, title in (
- (None, _('All')),
- ('1', _('Yes')),
- ('0', _('No'))):
- yield {
- 'selected': self.lookup_val == lookup and not self.lookup_val2,
- 'query_string': cl.get_query_string({
- self.lookup_kwarg: lookup,
- }, [self.lookup_kwarg2]),
- 'display': title,
- }
- if isinstance(self.field, models.NullBooleanField):
- yield {
- 'selected': self.lookup_val2 == 'True',
- 'query_string': cl.get_query_string({
- self.lookup_kwarg2: 'True',
- }, [self.lookup_kwarg]),
- 'display': _('Unknown'),
- }
-
-FieldListFilter.register(lambda f: isinstance(f,
- (models.BooleanField, models.NullBooleanField)), BooleanFieldListFilter)
-
-
-class ChoicesFieldListFilter(FieldListFilter):
- def __init__(self, field, request, params, model, model_admin, field_path):
- self.lookup_kwarg = '%s__exact' % field_path
- self.lookup_val = request.GET.get(self.lookup_kwarg)
- super(ChoicesFieldListFilter, self).__init__(
- field, request, params, model, model_admin, field_path)
-
- def expected_parameters(self):
- return [self.lookup_kwarg]
-
- def choices(self, cl):
- yield {
- 'selected': self.lookup_val is None,
- 'query_string': cl.get_query_string({}, [self.lookup_kwarg]),
- 'display': _('All')
- }
- for lookup, title in self.field.flatchoices:
- yield {
- 'selected': smart_text(lookup) == self.lookup_val,
- 'query_string': cl.get_query_string({
- self.lookup_kwarg: lookup}),
- 'display': title,
- }
-
-FieldListFilter.register(lambda f: bool(f.choices), ChoicesFieldListFilter)
-
-
-class DateFieldListFilter(FieldListFilter):
- def __init__(self, field, request, params, model, model_admin, field_path):
- self.field_generic = '%s__' % field_path
- self.date_params = dict([(k, v) for k, v in params.items()
- if k.startswith(self.field_generic)])
-
- now = timezone.now()
- # When time zone support is enabled, convert "now" to the user's time
- # zone so Django's definition of "Today" matches what the user expects.
- if timezone.is_aware(now):
- now = timezone.localtime(now)
-
- if isinstance(field, models.DateTimeField):
- today = now.replace(hour=0, minute=0, second=0, microsecond=0)
- else: # field is a models.DateField
- today = now.date()
- tomorrow = today + datetime.timedelta(days=1)
- if today.month == 12:
- next_month = today.replace(year=today.year + 1, month=1, day=1)
- else:
- next_month = today.replace(month=today.month + 1, day=1)
- next_year = today.replace(year=today.year + 1, month=1, day=1)
-
- self.lookup_kwarg_since = '%s__gte' % field_path
- self.lookup_kwarg_until = '%s__lt' % field_path
- self.links = (
- (_('Any date'), {}),
- (_('Today'), {
- self.lookup_kwarg_since: str(today),
- self.lookup_kwarg_until: str(tomorrow),
- }),
- (_('Past 7 days'), {
- self.lookup_kwarg_since: str(today - datetime.timedelta(days=7)),
- self.lookup_kwarg_until: str(tomorrow),
- }),
- (_('This month'), {
- self.lookup_kwarg_since: str(today.replace(day=1)),
- self.lookup_kwarg_until: str(next_month),
- }),
- (_('This year'), {
- self.lookup_kwarg_since: str(today.replace(month=1, day=1)),
- self.lookup_kwarg_until: str(next_year),
- }),
- )
- super(DateFieldListFilter, self).__init__(
- field, request, params, model, model_admin, field_path)
-
- def expected_parameters(self):
- return [self.lookup_kwarg_since, self.lookup_kwarg_until]
-
- def choices(self, cl):
- for title, param_dict in self.links:
- yield {
- 'selected': self.date_params == param_dict,
- 'query_string': cl.get_query_string(
- param_dict, [self.field_generic]),
- 'display': title,
- }
-
-FieldListFilter.register(
- lambda f: isinstance(f, models.DateField), DateFieldListFilter)
-
-
-# This should be registered last, because it's a last resort. For example,
-# if a field is eligible to use the BooleanFieldListFilter, that'd be much
-# more appropriate, and the AllValuesFieldListFilter won't get used for it.
-class AllValuesFieldListFilter(FieldListFilter):
- def __init__(self, field, request, params, model, model_admin, field_path):
- self.lookup_kwarg = field_path
- self.lookup_kwarg_isnull = '%s__isnull' % field_path
- self.lookup_val = request.GET.get(self.lookup_kwarg, None)
- self.lookup_val_isnull = request.GET.get(self.lookup_kwarg_isnull,
- None)
- parent_model, reverse_path = reverse_field_path(model, field_path)
- queryset = parent_model._default_manager.all()
- # optional feature: limit choices base on existing relationships
- # queryset = queryset.complex_filter(
- # {'%s__isnull' % reverse_path: False})
- limit_choices_to = get_limit_choices_to_from_path(model, field_path)
- queryset = queryset.filter(limit_choices_to)
-
- self.lookup_choices = (queryset
- .distinct()
- .order_by(field.name)
- .values_list(field.name, flat=True))
- super(AllValuesFieldListFilter, self).__init__(
- field, request, params, model, model_admin, field_path)
-
- def expected_parameters(self):
- return [self.lookup_kwarg, self.lookup_kwarg_isnull]
-
- def choices(self, cl):
- from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE
- yield {
- 'selected': (self.lookup_val is None
- and self.lookup_val_isnull is None),
- 'query_string': cl.get_query_string({},
- [self.lookup_kwarg, self.lookup_kwarg_isnull]),
- 'display': _('All'),
- }
- include_none = False
- for val in self.lookup_choices:
- if val is None:
- include_none = True
- continue
- val = smart_text(val)
- yield {
- 'selected': self.lookup_val == val,
- 'query_string': cl.get_query_string({
- self.lookup_kwarg: val,
- }, [self.lookup_kwarg_isnull]),
- 'display': val,
- }
- if include_none:
- yield {
- 'selected': bool(self.lookup_val_isnull),
- 'query_string': cl.get_query_string({
- self.lookup_kwarg_isnull: 'True',
- }, [self.lookup_kwarg]),
- 'display': EMPTY_CHANGELIST_VALUE,
- }
-
-FieldListFilter.register(lambda f: True, AllValuesFieldListFilter)
diff --git a/lib/python2.7/site-packages/django/contrib/admin/forms.py b/lib/python2.7/site-packages/django/contrib/admin/forms.py
deleted file mode 100644
index 6814fc9..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/forms.py
+++ /dev/null
@@ -1,33 +0,0 @@
-from __future__ import unicode_literals
-
-from django import forms
-
-from django.contrib.auth import authenticate
-from django.contrib.auth.forms import AuthenticationForm
-from django.utils.translation import ugettext_lazy
-
-ERROR_MESSAGE = ugettext_lazy("Please enter the correct %(username)s and password "
- "for a staff account. Note that both fields may be case-sensitive.")
-
-
-class AdminAuthenticationForm(AuthenticationForm):
- """
- A custom authentication form used in the admin app.
-
- """
- this_is_the_login_form = forms.BooleanField(widget=forms.HiddenInput, initial=1,
- error_messages={'required': ugettext_lazy("Please log in again, because your session has expired.")})
-
- def clean(self):
- username = self.cleaned_data.get('username')
- password = self.cleaned_data.get('password')
- message = ERROR_MESSAGE
- params = {'username': self.username_field.verbose_name}
-
- if username and password:
- self.user_cache = authenticate(username=username, password=password)
- if self.user_cache is None:
- raise forms.ValidationError(message, code='invalid', params=params)
- elif not self.user_cache.is_active or not self.user_cache.is_staff:
- raise forms.ValidationError(message, code='invalid', params=params)
- return self.cleaned_data
diff --git a/lib/python2.7/site-packages/django/contrib/admin/helpers.py b/lib/python2.7/site-packages/django/contrib/admin/helpers.py
deleted file mode 100644
index b6d5bde..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/helpers.py
+++ /dev/null
@@ -1,356 +0,0 @@
-from __future__ import unicode_literals
-
-from django import forms
-from django.contrib.admin.util import (flatten_fieldsets, lookup_field,
- display_for_field, label_for_field, help_text_for_field)
-from django.contrib.admin.templatetags.admin_static import static
-from django.contrib.contenttypes.models import ContentType
-from django.core.exceptions import ObjectDoesNotExist
-from django.db.models.fields.related import ManyToManyRel
-from django.forms.util import flatatt
-from django.template.defaultfilters import capfirst
-from django.utils.encoding import force_text, smart_text
-from django.utils.html import conditional_escape, format_html
-from django.utils.safestring import mark_safe
-from django.utils import six
-from django.utils.translation import ugettext_lazy as _
-from django.conf import settings
-
-
-ACTION_CHECKBOX_NAME = '_selected_action'
-
-class ActionForm(forms.Form):
- action = forms.ChoiceField(label=_('Action:'))
- select_across = forms.BooleanField(label='', required=False, initial=0,
- widget=forms.HiddenInput({'class': 'select-across'}))
-
-checkbox = forms.CheckboxInput({'class': 'action-select'}, lambda value: False)
-
-class AdminForm(object):
- def __init__(self, form, fieldsets, prepopulated_fields, readonly_fields=None, model_admin=None):
- self.form, self.fieldsets = form, normalize_fieldsets(fieldsets)
- self.prepopulated_fields = [{
- 'field': form[field_name],
- 'dependencies': [form[f] for f in dependencies]
- } for field_name, dependencies in prepopulated_fields.items()]
- self.model_admin = model_admin
- if readonly_fields is None:
- readonly_fields = ()
- self.readonly_fields = readonly_fields
-
- def __iter__(self):
- for name, options in self.fieldsets:
- yield Fieldset(self.form, name,
- readonly_fields=self.readonly_fields,
- model_admin=self.model_admin,
- **options
- )
-
- def first_field(self):
- try:
- fieldset_name, fieldset_options = self.fieldsets[0]
- field_name = fieldset_options['fields'][0]
- if not isinstance(field_name, six.string_types):
- field_name = field_name[0]
- return self.form[field_name]
- except (KeyError, IndexError):
- pass
- try:
- return next(iter(self.form))
- except StopIteration:
- return None
-
- def _media(self):
- media = self.form.media
- for fs in self:
- media = media + fs.media
- return media
- media = property(_media)
-
-class Fieldset(object):
- def __init__(self, form, name=None, readonly_fields=(), fields=(), classes=(),
- description=None, model_admin=None):
- self.form = form
- self.name, self.fields = name, fields
- self.classes = ' '.join(classes)
- self.description = description
- self.model_admin = model_admin
- self.readonly_fields = readonly_fields
-
- def _media(self):
- if 'collapse' in self.classes:
- extra = '' if settings.DEBUG else '.min'
- js = ['jquery%s.js' % extra,
- 'jquery.init.js',
- 'collapse%s.js' % extra]
- return forms.Media(js=[static('admin/js/%s' % url) for url in js])
- return forms.Media()
- media = property(_media)
-
- def __iter__(self):
- for field in self.fields:
- yield Fieldline(self.form, field, self.readonly_fields, model_admin=self.model_admin)
-
-class Fieldline(object):
- def __init__(self, form, field, readonly_fields=None, model_admin=None):
- self.form = form # A django.forms.Form instance
- if not hasattr(field, "__iter__") or isinstance(field, six.text_type):
- self.fields = [field]
- else:
- self.fields = field
- self.model_admin = model_admin
- if readonly_fields is None:
- readonly_fields = ()
- self.readonly_fields = readonly_fields
-
- def __iter__(self):
- for i, field in enumerate(self.fields):
- if field in self.readonly_fields:
- yield AdminReadonlyField(self.form, field, is_first=(i == 0),
- model_admin=self.model_admin)
- else:
- yield AdminField(self.form, field, is_first=(i == 0))
-
- def errors(self):
- return mark_safe('\n'.join([self.form[f].errors.as_ul() for f in self.fields if f not in self.readonly_fields]).strip('\n'))
-
-class AdminField(object):
- def __init__(self, form, field, is_first):
- self.field = form[field] # A django.forms.BoundField instance
- self.is_first = is_first # Whether this field is first on the line
- self.is_checkbox = isinstance(self.field.field.widget, forms.CheckboxInput)
-
- def label_tag(self):
- classes = []
- contents = conditional_escape(force_text(self.field.label))
- if self.is_checkbox:
- classes.append('vCheckboxLabel')
-
- if self.field.field.required:
- classes.append('required')
- if not self.is_first:
- classes.append('inline')
- attrs = {'class': ' '.join(classes)} if classes else {}
- # checkboxes should not have a label suffix as the checkbox appears
- # to the left of the label.
- return self.field.label_tag(contents=mark_safe(contents), attrs=attrs,
- label_suffix='' if self.is_checkbox else None)
-
- def errors(self):
- return mark_safe(self.field.errors.as_ul())
-
-class AdminReadonlyField(object):
- def __init__(self, form, field, is_first, model_admin=None):
- label = label_for_field(field, form._meta.model, model_admin)
- # Make self.field look a little bit like a field. This means that
- # {{ field.name }} must be a useful class name to identify the field.
- # For convenience, store other field-related data here too.
- if callable(field):
- class_name = field.__name__ if field.__name__ != '<lambda>' else ''
- else:
- class_name = field
- self.field = {
- 'name': class_name,
- 'label': label,
- 'field': field,
- 'help_text': help_text_for_field(class_name, form._meta.model)
- }
- self.form = form
- self.model_admin = model_admin
- self.is_first = is_first
- self.is_checkbox = False
- self.is_readonly = True
-
- def label_tag(self):
- attrs = {}
- if not self.is_first:
- attrs["class"] = "inline"
- label = self.field['label']
- return format_html('<label{0}>{1}:</label>',
- flatatt(attrs),
- capfirst(force_text(label)))
-
- def contents(self):
- from django.contrib.admin.templatetags.admin_list import _boolean_icon
- from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE
- field, obj, model_admin = self.field['field'], self.form.instance, self.model_admin
- try:
- f, attr, value = lookup_field(field, obj, model_admin)
- except (AttributeError, ValueError, ObjectDoesNotExist):
- result_repr = EMPTY_CHANGELIST_VALUE
- else:
- if f is None:
- boolean = getattr(attr, "boolean", False)
- if boolean:
- result_repr = _boolean_icon(value)
- else:
- result_repr = smart_text(value)
- if getattr(attr, "allow_tags", False):
- result_repr = mark_safe(result_repr)
- else:
- if isinstance(f.rel, ManyToManyRel) and value is not None:
- result_repr = ", ".join(map(six.text_type, value.all()))
- else:
- result_repr = display_for_field(value, f)
- return conditional_escape(result_repr)
-
-class InlineAdminFormSet(object):
- """
- A wrapper around an inline formset for use in the admin system.
- """
- def __init__(self, inline, formset, fieldsets, prepopulated_fields=None,
- readonly_fields=None, model_admin=None):
- self.opts = inline
- self.formset = formset
- self.fieldsets = fieldsets
- self.model_admin = model_admin
- if readonly_fields is None:
- readonly_fields = ()
- self.readonly_fields = readonly_fields
- if prepopulated_fields is None:
- prepopulated_fields = {}
- self.prepopulated_fields = prepopulated_fields
-
- def __iter__(self):
- for form, original in zip(self.formset.initial_forms, self.formset.get_queryset()):
- yield InlineAdminForm(self.formset, form, self.fieldsets,
- self.prepopulated_fields, original, self.readonly_fields,
- model_admin=self.opts)
- for form in self.formset.extra_forms:
- yield InlineAdminForm(self.formset, form, self.fieldsets,
- self.prepopulated_fields, None, self.readonly_fields,
- model_admin=self.opts)
- yield InlineAdminForm(self.formset, self.formset.empty_form,
- self.fieldsets, self.prepopulated_fields, None,
- self.readonly_fields, model_admin=self.opts)
-
- def fields(self):
- fk = getattr(self.formset, "fk", None)
- for i, field_name in enumerate(flatten_fieldsets(self.fieldsets)):
- if fk and fk.name == field_name:
- continue
- if field_name in self.readonly_fields:
- yield {
- 'label': label_for_field(field_name, self.opts.model, self.opts),
- 'widget': {
- 'is_hidden': False
- },
- 'required': False,
- 'help_text': help_text_for_field(field_name, self.opts.model),
- }
- else:
- yield self.formset.form.base_fields[field_name]
-
- def _media(self):
- media = self.opts.media + self.formset.media
- for fs in self:
- media = media + fs.media
- return media
- media = property(_media)
-
-class InlineAdminForm(AdminForm):
- """
- A wrapper around an inline form for use in the admin system.
- """
- def __init__(self, formset, form, fieldsets, prepopulated_fields, original,
- readonly_fields=None, model_admin=None):
- self.formset = formset
- self.model_admin = model_admin
- self.original = original
- if original is not None:
- self.original_content_type_id = ContentType.objects.get_for_model(original).pk
- self.show_url = original and hasattr(original, 'get_absolute_url')
- super(InlineAdminForm, self).__init__(form, fieldsets, prepopulated_fields,
- readonly_fields, model_admin)
-
- def __iter__(self):
- for name, options in self.fieldsets:
- yield InlineFieldset(self.formset, self.form, name,
- self.readonly_fields, model_admin=self.model_admin, **options)
-
- def needs_explicit_pk_field(self):
- # Auto fields are editable (oddly), so need to check for auto or non-editable pk
- if self.form._meta.model._meta.has_auto_field or not self.form._meta.model._meta.pk.editable:
- return True
- # Also search any parents for an auto field. (The pk info is propagated to child
- # models so that does not need to be checked in parents.)
- for parent in self.form._meta.model._meta.get_parent_list():
- if parent._meta.has_auto_field:
- return True
- return False
-
- def field_count(self):
- # tabular.html uses this function for colspan value.
- num_of_fields = 0
- if self.has_auto_field():
- num_of_fields += 1
- num_of_fields += len(self.fieldsets[0][1]["fields"])
- if self.formset.can_order:
- num_of_fields += 1
- if self.formset.can_delete:
- num_of_fields += 1
- return num_of_fields
-
- def pk_field(self):
- return AdminField(self.form, self.formset._pk_field.name, False)
-
- def fk_field(self):
- fk = getattr(self.formset, "fk", None)
- if fk:
- return AdminField(self.form, fk.name, False)
- else:
- return ""
-
- def deletion_field(self):
- from django.forms.formsets import DELETION_FIELD_NAME
- return AdminField(self.form, DELETION_FIELD_NAME, False)
-
- def ordering_field(self):
- from django.forms.formsets import ORDERING_FIELD_NAME
- return AdminField(self.form, ORDERING_FIELD_NAME, False)
-
-class InlineFieldset(Fieldset):
- def __init__(self, formset, *args, **kwargs):
- self.formset = formset
- super(InlineFieldset, self).__init__(*args, **kwargs)
-
- def __iter__(self):
- fk = getattr(self.formset, "fk", None)
- for field in self.fields:
- if fk and fk.name == field:
- continue
- yield Fieldline(self.form, field, self.readonly_fields,
- model_admin=self.model_admin)
-
-class AdminErrorList(forms.util.ErrorList):
- """
- Stores all errors for the form/formsets in an add/change stage view.
- """
- def __init__(self, form, inline_formsets):
- if form.is_bound:
- self.extend(list(six.itervalues(form.errors)))
- for inline_formset in inline_formsets:
- self.extend(inline_formset.non_form_errors())
- for errors_in_inline_form in inline_formset.errors:
- self.extend(list(six.itervalues(errors_in_inline_form)))
-
-def normalize_fieldsets(fieldsets):
- """
- Make sure the keys in fieldset dictionaries are strings. Returns the
- normalized data.
- """
- result = []
- for name, options in fieldsets:
- result.append((name, normalize_dictionary(options)))
- return result
-
-def normalize_dictionary(data_dict):
- """
- Converts all the keys in "data_dict" to strings. The keys must be
- convertible using str().
- """
- for key, value in data_dict.items():
- if not isinstance(key, str):
- del data_dict[key]
- data_dict[str(key)] = value
- return data_dict
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/af/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/af/LC_MESSAGES/django.mo
deleted file mode 100644
index 2bda63d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/af/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/af/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/af/LC_MESSAGES/django.po
deleted file mode 100644
index 06dcf3d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/af/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,857 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Christopher Penkin <chris.penkin@gmail.com>, 2012
-# Piet Delport <pjdelport@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Afrikaans (http://www.transifex.com/projects/p/django/"
-"language/af/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: af\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Het %(count)d %(items)s suksesvol geskrap."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Kan %(name)s nie skrap nie"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Is jy seker?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Skrap gekose %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Alles"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Ja"
-
-#: filters.py:239
-msgid "No"
-msgstr "Geen"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Onbekend"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Enige datum"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Vandag"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Vorige 7 dae"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Hierdie maand"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Hierdie jaar"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Teken asseblief weer in, want jou sessie het verstryk."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Aksie:"
-
-#: models.py:25
-msgid "action time"
-msgstr "aksie tyd"
-
-#: models.py:28
-msgid "object id"
-msgstr "objek id"
-
-#: models.py:29
-msgid "object repr"
-msgstr "objek repr"
-
-#: models.py:30
-msgid "action flag"
-msgstr "aksie vlag"
-
-#: models.py:31
-msgid "change message"
-msgstr "verandering boodskap"
-
-#: models.py:36
-msgid "log entry"
-msgstr ""
-
-#: models.py:37
-msgid "log entries"
-msgstr ""
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Het \"%(object)s\" bygevoeg."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Het \"%(object)s\" verander - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Het \"%(object)s\" geskrap."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "None"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Het %s verander."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "en"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Het %(name)s \"%(object)s\" bygevoeg."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Het %(list)s vir %(name)s \"%(object)s\" verander."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Het %(name)s \"%(object)s\" geskrap."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Geen velde verander nie."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Die %(name)s \"%(obj)s\" was suksesvol verander. Jy mag dit weereens "
-"hieronder wysig."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Die %(name)s \"%(obj)s\" was suksesvol bygevoeg."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Die %(name)s \"%(obj)s\" was suksesvol verander."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Items moet gekies word om aksies op hulle uit te voer. Geen items is "
-"verander."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Geen aksie gekies nie."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Voeg %s by"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s voorwerp met primêre sleutel %(key)r bestaan ​​nie."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Verander %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Databasis fout"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s was suksesvol verander."
-msgstr[1] "%(count)s %(name)s was suksesvol verander."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s gekies"
-msgstr[1] "Al %(total_count)s gekies"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 uit %(cnt)s gekies"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Die %(name)s \"%(obj)s\" was suksesvol geskrap."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Verander geskiedenis: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Teken in"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Werf administrasie"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s administrasie"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Datum:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Tyd:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Soek"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Voeg nog een by"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Bladsy nie gevind nie"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Ons is jammer, maar die aangevraagde bladsy kon nie gevind word nie."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Tuisblad"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Bedienerfout"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Bedienerfout (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Bedienerfout <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Hardloop die gekose aksie"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Gaan"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Kliek hier om die objekte oor alle bladsye te kies."
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Kies al %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Verwyder keuses"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Welkom,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentasie"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Verander wagwoord"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Teken uit"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django werf admin"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administrasie"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Voeg by"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Geskiedenis"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Bekyk op werf"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Korrigeer asseblief die foute hieronder."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Voeg %(name)s by"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filter"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Verwyder van sortering"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Sortering prioriteit: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Wissel sortering"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Skrap"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Om die %(object_name)s '%(escaped_object)s' te skrap sou vereis dat die "
-"volgende beskermde verwante objekte geskrap word:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Ja, ek is seker"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Skrap meerdere objekte"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Om die gekose %(objects_name)s te skrap sou verwante objekte skrap, maar jou "
-"rekening het nie toestemming om die volgende tipes objekte te skrap nie:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Om die gekose %(objects_name)s te skrap veries dat die volgende beskermde "
-"verwante objekte geskrap word:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Is jy seker jy wil die gekose %(objects_name)s skrap? Al die volgende "
-"objekte en hul verwante items sal geskrap word:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Deur %(filter_title)s"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Verander"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Jy het nie toestemming om enigiets te wysig nie."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Onlangse Aksies"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "My Aksies"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Niks beskikbaar nie"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Onbekend inhoud"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Wagwoord:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Wagwoord of gebruikersnaam vergeet?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Datum/tyd"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Gebruiker"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Aksie"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Hierdie item het nie 'n veranderingsgeskiedenis nie. Dit was waarskynlik nie "
-"deur middel van hierdie admin werf bygevoeg nie."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Wys alle"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Stoor"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Soek"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s resultaat"
-msgstr[1] "%(counter)s resultate"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s in totaal"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Stoor as nuwe"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Stoor en voeg 'n ander by"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Stoor en wysig verder"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Vul eers 'n gebruikersnaam en wagwoord in. Dan sal jy in staat wees om meer "
-"gebruikersopsies te wysig."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Vul 'n gebruikersnaam en wagwoord in."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Vul 'n nuwe wagwoord vir gebruiker <strong>%(username)s</strong> in."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Wagwoord"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Wagwoord (weer)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Vul dieselfde wagwoord in as hierbo, for bevestiging."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Verwyder"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Voeg nog 'n %(verbose_name)s by"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Skrap?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr ""
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Teken weer in"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Wagwoord verandering"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Wagwoord verandering suksesvol"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Jou wagwoord was verander."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Tik jou ou wagwoord, ter wille van sekuriteit's, en dan 'n nuwe wagwoord "
-"twee keer so dat ons kan seker wees dat jy dit korrek ingetik het."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Ou wagwoord"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nuwe wagwoord"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Verander my wagwoord"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Wagwoord herstel"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Wagwoord herstel voltooi"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Jou wagwoord is gestel. Jy kan nou voort gaan en aanteken."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Wagwoord herstel bevestiging"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Vul 'n nuwe wagwoord in"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Tik jou nuwe wagwoord twee keer in so ons kan seker wees dat jy dit korrek "
-"ingetik het."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nuwe wagwoord:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Bevestig wagwoord:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Wagwoord herstel onsuksesvol"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Wagwoord herstel suksesvol"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Gaan asseblief na die volgende bladsy en kies 'n nuwe wagwoord:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Jou gebruikersnaam, in geval jy vergeet het:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Dankie vir die gebruik van ons webwerf!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Die %(site_name)s span"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Herstel my wagwoord"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Alle datums"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Geen)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Kies %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Kies %s om te verander"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/af/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/af/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index f906b80..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/af/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/af/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/af/LC_MESSAGES/djangojs.po
deleted file mode 100644
index f4b6d35..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/af/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,169 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Piet Delport <pjdelport@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Afrikaans (http://www.transifex.com/projects/p/django/"
-"language/af/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: af\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Beskikbare %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filter"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Kies alle"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Kies"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Verwyder"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Gekose %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Verwyder alle"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] ""
-msgstr[1] ""
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr ""
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Wys"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Versteek"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Nou"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Klok"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Kies 'n tyd"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Middernag"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 v.m."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Middag"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Kanselleer"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Vandag"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalender"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Gister"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Môre"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ar/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ar/LC_MESSAGES/django.mo
deleted file mode 100644
index 1417c10..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ar/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ar/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ar/LC_MESSAGES/django.po
deleted file mode 100644
index a4d34dc..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ar/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,884 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# dado_eyad <d.eyad.t@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-10-28 09:21+0000\n"
-"Last-Translator: dado_eyad <d.eyad.t@gmail.com>\n"
-"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/"
-"ar/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "تم حذف %(count)d %(items)s بنجاح."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "لا يمكن حذف %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "هل أنت متأكد؟"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "حذف سجلات %(verbose_name_plural)s المحددة"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "الكل"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "نعم"
-
-#: filters.py:239
-msgid "No"
-msgstr "لا"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "مجهول"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "أي تاريخ"
-
-#: filters.py:309
-msgid "Today"
-msgstr "اليوم"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "الأيام السبعة الماضية"
-
-#: filters.py:317
-msgid "This month"
-msgstr "هذا الشهر"
-
-#: filters.py:321
-msgid "This year"
-msgstr "هذه السنة"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr "الرجاء إدخال ال%(username)s و كلمة السر الصحيحين لحساب الطاقم."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "رجاءً ادخل مرةً أخرى لأن جلستك انتهت."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "إجراء:"
-
-#: models.py:25
-msgid "action time"
-msgstr "وقت الإجراء"
-
-#: models.py:28
-msgid "object id"
-msgstr "معرف العنصر"
-
-#: models.py:29
-msgid "object repr"
-msgstr "ممثل العنصر"
-
-#: models.py:30
-msgid "action flag"
-msgstr "علامة الإجراء"
-
-#: models.py:31
-msgid "change message"
-msgstr "غيّر الرسالة"
-
-#: models.py:36
-msgid "log entry"
-msgstr "مُدخل السجل"
-
-#: models.py:37
-msgid "log entries"
-msgstr "مُدخلات السجل"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "تم إضافة العناصر \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "تم تعديل العناصر \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "تم حذف العناصر \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "كائن LogEntry"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "لاشيء"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "عدّل %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "و"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "أضاف %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "غيّر %(list)s في %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "حذف %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "لم يتم تغيير أية حقول."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "تمت إضافة %(name)s \"%(obj)s\" بنجاح، يمكنك تعديله مرة أخرى بالأسفل."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr "تمت إضافة %(name)s \"%(obj)s\" بنجاح، يمكنك إضافة %(name)s أخر أدناه."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "تم اضافة %(name)s \"%(obj)s\" بنجاح."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr "تم تعديل %(name)s \"%(obj)s\" بنجاح، يمكنك تعديله مرة أخرى أدناه."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr "تم تعديل %(name)s \"%(obj)s\" بنجاح، يمكنك إضافة %(name)s أخر أدناه."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "تم تغيير %(name)s \"%(obj)s\" بنجاح."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr "يجب تحديد العناصر لتطبيق الإجراءات عليها. لم يتم تغيير أية عناصر."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "لم يحدد أي إجراء."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "أضف %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "العنصر %(name)s الذي به الحقل الأساسي %(key)r غير موجود."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "عدّل %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "خطـأ في قاعدة البيانات"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "لم يتم تغيير أي شيء"
-msgstr[1] "تم تغيير %(count)s %(name)s بنجاح."
-msgstr[2] "تم تغيير %(count)s %(name)s بنجاح."
-msgstr[3] "تم تغيير %(count)s %(name)s بنجاح."
-msgstr[4] "تم تغيير %(count)s %(name)s بنجاح."
-msgstr[5] "تم تغيير %(count)s %(name)s بنجاح."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "لم يتم تحديد أي شيء"
-msgstr[1] "تم تحديد %(total_count)s"
-msgstr[2] "تم تحديد %(total_count)s"
-msgstr[3] "تم تحديد %(total_count)s"
-msgstr[4] "تم تحديد %(total_count)s"
-msgstr[5] "تم تحديد %(total_count)s"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "لا شيء محدد من %(cnt)s"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "تم حذف %(name)s \"%(obj)s\" بنجاح."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "تاريخ التغيير: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"حذف %(class_name)s %(instance)s سيتسبب أيضاً بحذف العناصر المرتبطة التالية: "
-"%(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "ادخل"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "إدارة الموقع"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "إدارة %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "التاريخ:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "الوقت:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "ابحث"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "أضف آخر"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "حالياً:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "تغيير:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "تعذر العثور على الصفحة"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "نحن آسفون، لكننا لم نعثر على الصفحة المطلوبة."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "الرئيسية"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "خطأ في المزود"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "خطأ في المزود (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "خطأ في المزود <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"كان هناك خطأ. تم إعلام المسؤولين عن الموقع عبر البريد الإلكتروني وسوف يتم "
-"إصلاح الخطأ قريباً. شكراً على صبركم."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "نفذ الإجراء المحدّد"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "نفّذ"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "اضغط هنا لتحديد جميع العناصر في جميع الصفحات"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "اختيار %(total_count)s %(module_name)s جميعها"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "إزالة الاختيار"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "أهلا، "
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "الوثائق"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "غيّر كلمة المرور"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "اخرج"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "إدارة موقع جانغو"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "إدارة جانغو"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "أضف"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "تاريخ"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "مشاهدة على الموقع"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "الرجاء تصحيح الخطأ أدناه."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "الرجاء تصحيح الأخطاء أدناه."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "أضف %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "مرشّح"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "إزالة من الترتيب"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "أولوية الترتيب: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "عكس الترتيب"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "احذف"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"حذف العنصر %(object_name)s '%(escaped_object)s' سيتسبب بحذف العناصر المرتبطة "
-"به، إلا أنك لا تملك صلاحية حذف العناصر التالية:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"حذف %(object_name)s '%(escaped_object)s' سيتسبب أيضاً بحذف العناصر المرتبطة، "
-"إلا أن حسابك ليس لديه صلاحية حذف أنواع العناصر التالية:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"متأكد أنك تريد حذف العنصر %(object_name)s \"%(escaped_object)s\"؟ سيتم حذف "
-"جميع العناصر التالية المرتبطة به:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "نعم، أنا متأكد"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "حذف عدّة عناصر"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"حذف عناصر %(objects_name)s المُحدّدة سيتسبب بحذف العناصر المرتبطة، إلا أن "
-"حسابك ليس له صلاحية حذف أنواع العناصر التالية:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"حذف عناصر %(objects_name)s المحدّدة قد يتطلب حذف العناصر المحميّة المرتبطة "
-"التالية:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"أأنت متأكد أنك تريد حذف عناصر %(objects_name)s المحددة؟ جميع العناصر التالية "
-"والعناصر المرتبطة بها سيتم حذفها:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " حسب %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "النماذج في تطبيق %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "عدّل"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "ليست لديك الصلاحية لتعديل أي شيء."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "آخر الإجراءات"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "إجراءاتي"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "لا يوجد"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "مُحتوى مجهول"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"هنالك أمر خاطئ في تركيب قاعدة بياناتك، تأكد من أنه تم انشاء جداول قاعدة "
-"البيانات الملائمة، وأن قاعدة البيانات قابلة للقراءة من قبل المستخدم الملائم."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "كلمة المرور:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "نسيت كلمة السر أو اسم المستخدم الخاص بك؟"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "التاريخ/الوقت"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "المستخدم"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "إجراء"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"ليس لهذا العنصر سجلّ تغييرات، على الأغلب أنه لم يُنشأ من خلال نظام إدارة "
-"الموقع."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "أظهر الكل"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "احفظ"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "ابحث"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "لا نتائج"
-msgstr[1] "نتيجة واحدة"
-msgstr[2] "نتيجتان"
-msgstr[3] "%(counter)s نتائج"
-msgstr[4] "%(counter)s نتيجة"
-msgstr[5] "%(counter)s نتيجة"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "المجموع %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "احفظ كجديد"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "احفظ وأضف آخر"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "احفظ واستمر بالتعديل"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"أولاً، أدخل اسم مستخدم وكلمة مرور. ومن ثم تستطيع تعديل المزيد من خيارات "
-"المستخدم."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "أدخل اسم مستخدم وكلمة مرور."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "أدخل كلمة مرور جديدة للمستخدم <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "كلمة المرور"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "كلمة المرور (مجدداً)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "أدخل كلمة المرور ذاتها التي أعلاه لتأكيدها."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "أزل"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "إضافة سجل %(verbose_name)s آخر"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "احذفه؟"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "شكراً لك على قضائك بعض الوقت مع الموقع اليوم."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "ادخل مجدداً"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "غيّر كلمة مرورك"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "تم تغيير كلمة المرور بنجاح"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "تمّ تغيير كلمة مرورك."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"رجاءً أدخل كلمة مرورك القديمة، للأمان، ثم أدخل كلمة مرور الجديدة مرتين كي "
-"تتأكّد من كتابتها بشكل صحيح."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "كلمة المرور القديمة"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "كلمة المرور الجديدة"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "غيّر كلمة مروري"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "استعادة كلمة المرور"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "تم استعادة كلمة المرور"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "تم تعيين كلمة مرورك. يمكن الاستمرار وتسجيل دخولك الآن."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "تأكيد استعادة كلمة المرور"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "أدخل كلمة المرور الجديدة"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr "رجاءً أدخل كلمة مرورك الجديدة مرتين كي تتأكّد من كتابتها بشكل صحيح."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "كلمة المرور الجديدة:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "أكّد كلمة المرور:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "تم إعادة تعيين كلمة المرور بنجاح"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"رابط استعادة كلمة المرور غير صحيح، ربما لأنه استُخدم من قبل. رجاءً اطلب "
-"استعادة كلمة المرور مرة أخرى."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "تم إعادة ضبط كلمة المرور بنجاح"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"تم إرسال بريد إلكتروني بالتعليمات لوضع كلمة السر الخاصة بك. سوف تستقبل "
-"البريد الإلكتروني قريباً"
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"في حال عدم إستقبال البريد الإلكتروني، الرجاء التأكد من إدخال عنوان بريدك "
-"الإلكتروني بشكل صحيح ومراجعة مجلد الرسائل غير المرغوب فيها."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"لقد قمت بتلقى هذه الرسالة لطلبك بإعادة تعين كلمة السر لحسابك الشخصي على "
-"%(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "رجاءً اذهب إلى الصفحة التالية واختر كلمة مرور جديدة:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "اسم المستخدم الخاص بك، في حال كنت قد نسيته:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "شكراً لاستخدامك موقعنا!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "فريق %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"هل فقدت كلمة السر؟ أدخل عنوان بريدك الإلكتروني أدناه وسوف نقوم بإرسال "
-"تعليمات للحصول على كلمة سر جديدة."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "عنوان البريد الإلكتروني:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "استعد كلمة مروري"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "كافة التواريخ"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(لاشيء)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "اختر %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "اختر %s لتغييره"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 6d5732c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.po
deleted file mode 100644
index d627b95..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ar/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,183 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/"
-"ar/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s المتوفرة"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"هذه قائمة %s المتوفرة. يمكنك اختيار بعضها بانتقائها في الصندوق أدناه ثم "
-"الضغط على سهم الـ\"اختيار\" بين الصندوقين."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "اكتب في هذا الصندوق لتصفية قائمة %s المتوفرة."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "انتقاء"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "اختر الكل"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "اضغط لاختيار جميع %s جملة واحدة."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "اختيار"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "احذف"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s المُختارة"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"هذه قائمة %s المحددة. يمكنك إزالة بعضها باختيارها في الصندوق أدناه ثم اضغط "
-"على سهم الـ\"إزالة\" بين الصندوقين."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "إزالة الكل"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "اضغط لإزالة جميع %s المحددة جملة واحدة."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "لا شي محدد"
-msgstr[1] "%(sel)s من %(cnt)s محدد"
-msgstr[2] "%(sel)s من %(cnt)s محدد"
-msgstr[3] "%(sel)s من %(cnt)s محددة"
-msgstr[4] "%(sel)s من %(cnt)s محدد"
-msgstr[5] "%(sel)s من %(cnt)s محدد"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"لديك تعديلات غير محفوظة على بعض الحقول القابلة للتعديل. إن نفذت أي إجراء "
-"فسوف تخسر تعديلاتك."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"اخترت إجراءً لكن دون أن تحفظ تغييرات التي قمت بها. رجاء اضغط زر الموافقة "
-"لتحفظ تعديلاتك. ستحتاج إلى إعادة تنفيذ الإجراء."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr "اخترت إجراءً دون تغيير أي حقل. لعلك تريد زر التنفيذ بدلاً من زر الحفظ."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"يناير فبراير مارس إبريل مايو يونيو يوليو أغسطس سبتمبر أكتوبر نوفمبر ديسمبر"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "أ إ ث أ خ ج س"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "أظهر"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "اخف"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "الآن"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "الساعة"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "اختر وقتاً"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "منتصف الليل"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 ص."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "الظهر"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "ألغ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "اليوم"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "التقويم"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "أمس"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "غداً"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/az/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/az/LC_MESSAGES/django.mo
deleted file mode 100644
index 8dfa211..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/az/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/az/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/az/LC_MESSAGES/django.po
deleted file mode 100644
index 2747178..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/az/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,868 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/"
-"language/az/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: az\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s uğurla silindi."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "%(name)s silinmir"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Əminsiniz?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Seçilmiş %(verbose_name_plural)s-ləri sil"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Hamısı"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Hə"
-
-#: filters.py:239
-msgid "No"
-msgstr "Yox"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Bilinmir"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "İstənilən tarix"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Bu gün"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Son 7 gündə"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Bu ay"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Bu il"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Yenidən daxil olun, çünki seansın vaxtı bitmişdir."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Əməliyyat:"
-
-#: models.py:25
-msgid "action time"
-msgstr "əməliyyat vaxtı"
-
-#: models.py:28
-msgid "object id"
-msgstr "obyekt id"
-
-#: models.py:29
-msgid "object repr"
-msgstr "obyekt repr"
-
-#: models.py:30
-msgid "action flag"
-msgstr "bayraq"
-
-#: models.py:31
-msgid "change message"
-msgstr "dəyişmə mesajı"
-
-#: models.py:36
-msgid "log entry"
-msgstr "loq yazısı"
-
-#: models.py:37
-msgid "log entries"
-msgstr "loq yazıları"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" əlavə olundu."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "\"%(object)s\" - %(changes)s dəyişiklikləri qeydə alındı."
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" silindi."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "LogEntry obyekti"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Heç nə"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s dəyişdi."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "və"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" əlavə olundu."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr " %(list)s %(name)s \"%(object)s\" üçün dəyişdi."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" siyahısından silindi."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Heç bir sahə dəyişmədi."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" siyahısına uğurla əlavə olundu. Yenə onu aşağıda "
-"redaktə edə bilərsiniz."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" siyahısına uğurla əlavə edildi."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" siyahısında uğurla dəyişdirildi."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Biz elementlər üzərində nəsə əməliyyat aparmaq üçün siz onları seçməlisiniz. "
-"Heç bir element dəyişmədi."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Heç bir əməliyyat seçilmədi."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%s əlavə et"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(key)r əsas açarı ilə %(name)s mövcud deyil."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s dəyiş"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Bazada xəta"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s uğurla dəyişdirildi."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s - hamısı seçilib"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "%(cnt)s-dan 0 seçilib"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" uğurla silindi."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Dəyişmə tarixi: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Daxil ol"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Sayt administrasiyası"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s administrasiyası"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Tarix:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Vaxt:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Sorğu"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Yenisini əlavə et"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Səhifə tapılmadı"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Üzrlər, amma soruşduğunuz sayt tapılmadı."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Ev"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Serverdə xəta"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Serverdə xəta (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Serverdə xəta <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Xəta baş verdi. Sayt administratorlarına e-poçt göndərildi və onlar xəta ilə "
-"tezliklə məşğul olacaqlar. Səbrli olun."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Seçdiyim əməliyyatı yerinə yetir"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Getdik"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Bütün səhifələr üzrə obyektləri seçmək üçün bura tıqlayın"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Bütün %(total_count)s sayda %(module_name)s seç"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Seçimi təmizlə"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Xoş gördük,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Sənədləşdirmə"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Parolu dəyiş"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Çıx"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django sayt administratoru"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administrasiya"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Əlavə et"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Tarix"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Saytda göstər"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr ""
-"one: Aşağıdakı səhvi düzəltməyi xahiş edirik.\n"
-"other: Aşağıdakı səhvləri düzəltməyi xahiş edirik."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s əlavə et"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Süzgəc"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Sıralamadan çıxar"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Sıralama prioriteti: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Sıralamanı çevir"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Sil"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"%(object_name)s \"%(escaped_object)s\" obyektini sildikdə onun bağlı olduğu "
-"obyektlər də silinməlidir. Ancaq sizin hesabın aşağıdakı tip obyektləri "
-"silməyə səlahiyyəti çatmır:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"%(object_name)s \"%(escaped_object)s\" obyektini silmək üçün aşağıdakı "
-"qorunan obyektlər də silinməlidir:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"%(object_name)s \"%(escaped_object)s\" obyektini silməkdə əminsiniz? Ona "
-"bağlı olan aşağıdakı obyektlər də silinəcək:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Hə, əminəm"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Bir neçə obyekt sil"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"%(objects_name)s obyektini silmək üçün ona bağlı obyektlər də silinməlidir. "
-"Ancaq sizin hesabınızın aşağıdakı tip obyektləri silmək səlahiyyətinə malik "
-"deyil:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"%(objects_name)s obyektini silmək üçün aşağıdakı qorunan obyektlər də "
-"silinməlidir:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Seçdiyiniz %(objects_name)s obyektini silməkdə əminsiniz? Aşağıdakı bütün "
-"obyektlər və ona bağlı digər obyektlər də silinəcək:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s görə "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "%(name)s proqramındakı modellər"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Dəyiş"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Üzrlər, amma sizin nəyisə dəyişməyə səlahiyyətiniz çatmır."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Son əməliyyatlar"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Mənim etdiklərim"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Heç nə yoxdur"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Naməlum"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Bazanın qurulması ilə nəsə problem var. Lazımi cədvəllərin bazada "
-"yaradıldığını və uyğun istifadəçinin bazadan oxuya bildiyini yoxlayın."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Parol:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Parol və ya istifadəçi adını unutmusan?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Tarix/vaxt"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "İstifadəçi"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Əməliyyat"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Bu obyektin dəyişməsinə aid tarix mövcud deyil. Yəqin ki, o, bu admin saytı "
-"vasitəsilə yaradılmayıb."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Hamısını göstər"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Yadda saxla"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Axtar"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s nəticə"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "Hamısı birlikdə %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Yenisi kimi yadda saxla"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Yadda saxla və yenisini əlavə et"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Yadda saxla və redaktəyə davam et"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Əvvəlcə istifadəçi adını və parolu daxil edin. Ondan sonra daha çox "
-"istifadəçi imkanlarını redaktə edə biləcəksiniz."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "İstifadəçi adını və parolu daxil edin."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "<strong>%(username)s</strong> üçün yeni parol daxil edin."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Parol"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Parol (bir daha)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Yuxarıdakı parolu yenidən daxil edin, dəqiqləşdirmək üçün"
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Yığışdır"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Daha bir %(verbose_name)s əlavə et"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Silək?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Sayt ilə səmərəli vaxt keçirdiyiniz üçün təşəkkür."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Yenidən daxil ol"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Parol dəyişmək"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Parol uğurla dəyişdi"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Sizin parolunuz dəyişdi."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Yoxlama üçün köhnə parolunuzu daxil edin. Sonra isə yeni parolu iki dəfə "
-"daxil edin ki, səhv etmədiyinizə əmin olaq."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Köhnə parol"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Yeni parol"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Mənim parolumu dəyiş"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Parolun sıfırlanması"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Parolun sıfırlanması başa çatdı"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Yeni parol artıq qüvvədədir. Yenidən daxil ola bilərsiniz."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Parolun sıfırlanması üçün təsdiq"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Yeni parolu daxil edin"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr "Yeni parolu iki dəfə daxil edin ki, səhv etmədiyinizə əmin olaq."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Yeni parol:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Yeni parol (bir daha):"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Parolun sıfırlanması baş tutmadı"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Parolun sıfırlanması üçün olan keçid, yəqin ki, artıq istifadə olunub. "
-"Parolu sıfırlamaq üçün yenə müraciət edin."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Parolun sıfırlanması uğurla başa çatdı."
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"%(site_name)s saytında parolu yeniləmək istədiyinizə görə bu məktubu "
-"göndərdik."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Növbəti səhifəyə keçid alın və yeni parolu seçin:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Sizin istifadəçi adınız:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Bizim saytdan istifadə etdiyiniz üçün təşəkkür edirik!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s komandası"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Parolu unutmusunuz? Aşağıda e-poçt ünvanınızı təqdim edin, biz isə yeni "
-"parol seçmək təlimatlarını sizə göndərək."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "E-poçt:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Parolumu sıfırla"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Bütün tarixlərdə"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Heç nə)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s seç"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "%s dəyişmək üçün seç"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/az/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/az/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index b0a46bc..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/az/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/az/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/az/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 5e0b2c7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/az/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,180 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Ismayilov <ali@ismailov.info>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/"
-"language/az/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: az\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Mümkün %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Bu, mümkün %s siyahısıdır. Onlardan bir neçəsini qarşısındakı xanaya işarə "
-"qoymaq və iki xana arasındakı \"Seç\"i tıqlamaqla seçmək olar."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Bu xanaya yazmaqla mümkün %s siyahısını filtrləyə bilərsiniz."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Süzgəc"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Hamısını seç"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Bütün %s siyahısını seçmək üçün tıqlayın."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Seç"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Yığışdır"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Seçilmiş %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Bu, seçilmiş %s siyahısıdır. Onlardan bir neçəsini aşağıdakı xanaya işarə "
-"qoymaq və iki xana arasındakı \"Sil\"i tıqlamaqla silmək olar."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Hamısını sil"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Seçilmiş %s siyahısının hamısını silmək üçün tıqlayın."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(cnt)s-dan %(sel)s seçilib"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Bəzi sahələrdə etdiyiniz dəyişiklikləri hələ yadda saxlamamışıq. Əgər "
-"əməliyyatı işə salsanız, dəyişikliklər əldən gedəcək."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Əməliyyatı seçmisiniz, amma bəzi sahələrdəki dəyişiklikləri hələ yadda "
-"saxlamamışıq. Bunun üçün OK seçməlisiniz. Ondan sonra əməliyyatı yenidən işə "
-"salmağa cəhd edin."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Siz əməliyyatı seçmisiniz və heç bir sahəyə dəyişiklik etməmisiniz. Siz "
-"yəqin ki, Yadda saxla düyməsini deyil, Getdik düyməsini axtarırsınız."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Yanvar Fevral Mart Aprel May İyun İyul Avqust Sentyabr Oktyabr Noyabr Dekabr"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "B B Ç Ç C C Ş"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Göstər"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Gizlət"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "İndi"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Saat"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Vaxtı seçin"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Gecə yarısı"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Günorta"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Ləğv et"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Bu gün"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Təqvim"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Dünən"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Sabah"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/be/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/be/LC_MESSAGES/django.mo
deleted file mode 100644
index 1cd3f67..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/be/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/be/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/be/LC_MESSAGES/django.po
deleted file mode 100644
index b6f113f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/be/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,866 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/"
-"language/be/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: be\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Выдалілі %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Не ўдаецца выдаліць %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Ці ўпэўненыя вы?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Выдаліць абраныя %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Усе"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Так"
-
-#: filters.py:239
-msgid "No"
-msgstr "Не"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Невядома"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Хоць-якая дата"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Сёньня"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Апошні тыдзень"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Гэты месяц"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Гэты год"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Тэрмін сэансу скончыўся, таму ўвайдзіце зноўку."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Дзеяньне:"
-
-#: models.py:25
-msgid "action time"
-msgstr "час дзеяньня"
-
-#: models.py:28
-msgid "object id"
-msgstr "нумар аб’екта"
-
-#: models.py:29
-msgid "object repr"
-msgstr "прадстаўленьне аб’екта"
-
-#: models.py:30
-msgid "action flag"
-msgstr "від дзеяньня"
-
-#: models.py:31
-msgid "change message"
-msgstr "паведамленьне пра зьмену"
-
-#: models.py:36
-msgid "log entry"
-msgstr "запіс у справаздачы"
-
-#: models.py:37
-msgid "log entries"
-msgstr "запісы ў справаздачы"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Дадалі «%(object)s»."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Зьмянілі «%(object)s» — %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Выдалілі «%(object)s»."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Запіс у справаздачы"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Няма"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Зьмянілі %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "і"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Дадалі %(name)s «%(object)s»."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Зьмянілі %(list)s для %(name)s «%(object)s»."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Выдалілі %(name)s «%(object)s»."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Палі не зьмяняліся."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "Дадалі %(name)s «%(obj)s». Ніжэй яго можна зноўку правіць."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Дадалі %(name)s «%(obj)s»."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Зьмянілі %(name)s «%(obj)s»."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Каб нешта рабіць, трэба спачатку абраць, з чым гэта рабіць. Нічога не "
-"зьмянілася."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Не абралі дзеяньняў."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Дадаць %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Аб’ект %(name)s з галоўным ключом %(key)r не існуе."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Зьмяніць %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "База зьвестак дала хібу"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "Зьмянілі %(count)s %(name)s."
-msgstr[1] "Зьмянілі %(count)s %(name)s."
-msgstr[2] "Зьмянілі %(count)s %(name)s."
-msgstr[3] "Зьмянілі %(count)s %(name)s."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "Абралі %(total_count)s"
-msgstr[1] "Абралі ўсе %(total_count)s"
-msgstr[2] "Абралі ўсе %(total_count)s"
-msgstr[3] "Абралі ўсе %(total_count)s"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "Абралі 0 аб’ектаў з %(cnt)s"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Сьцерлі %(name)s «%(obj)s»."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Гісторыя зьменаў: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Увайсьці"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Кіраваць пляцоўкаю"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Кіраваць %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Дата:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Час:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Шукаць"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Дадаць яшчэ"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Бачыну не знайшлі"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "На жаль, запытаную бачыну немагчыма знайсьці."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Пачатак"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Паслужнік даў хібу"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Паслужнік даў хібу (памылка 500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Паслужнік даў хібу <em>(памылка 500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Выканаць абранае дзеяньне"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Выканаць"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Каб абраць аб’екты на ўсіх бачынах, націсьніце сюды"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Абраць усе %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Не абіраць нічога"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Вітаем,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Дакумэнтацыя"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Зьмяніць пароль"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Выйсьці"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Кіраўнічая пляцоўка «Джэнґа»"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Кіраваць «Джэнґаю»"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Дадаць"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Гісторыя"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Зірнуць на пляцоўцы"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Выпраўце хібы, апісаныя ніжэй."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Дадаць %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Прасеяць"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Прыбраць з упарадкаванага"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Парадак: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Парадкаваць наадварот"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Выдаліць"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Калі выдаліць %(object_name)s «%(escaped_object)s», выдаляцца зьвязаныя "
-"аб’екты, але ваш рахунак ня мае дазволу выдаляць наступныя віды аб’ектаў:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Каб выдаліць %(object_name)s «%(escaped_object)s», трэба выдаліць і "
-"зьвязаныя абароненыя аб’екты:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Ці выдаліць %(object_name)s «%(escaped_object)s»? Усе наступныя зьвязаныя "
-"складнікі выдаляцца:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Так, дакладна"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Выдаліць некалькі аб’ектаў"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Калі выдаліць абранае (%(objects_name)s), выдаляцца зьвязаныя аб’екты, але "
-"ваш рахунак ня мае дазволу выдаляць наступныя віды аб’ектаў:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Каб выдаліць абранае (%(objects_name)s), трэба выдаліць і зьвязаныя "
-"абароненыя аб’екты:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Ці выдаліць абранае (%(objects_name)s)? Усе наступныя аб’екты ды зьвязаныя "
-"зь імі складнікі выдаляцца:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Зьмяніць"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Вы ня маеце дазволу нешта зьмяняць."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Нядаўнія дзеяньні"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Мае дзеяньні"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Недаступнае"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Невядомае зьмесьціва"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Нешта ня так з усталяванаю базаю зьвестак. Упэўніцеся, што ў базе стварылі "
-"патрэбныя табліцы, і што базу можа чытаць адпаведны карыстальнік."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Пароль:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Забыліся на імя ці пароль?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Час, дата"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Карыстальнік"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Дзеяньне"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Аб’ект ня мае гісторыі зьменаў. Мажліва, яго дадавалі не праз кіраўнічую "
-"пляцоўку."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Паказаць усё"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Захаваць"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Шукаць"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s вынік"
-msgstr[1] "%(counter)s вынікі"
-msgstr[2] "%(counter)s вынікаў"
-msgstr[3] "%(counter)s вынікаў"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "Разам %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Захаваць як новы"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Захаваць і дадаць іншы"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Захаваць і працягваць правіць"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Спачатку пазначце імя карыстальніка ды пароль. Потым можна будзе наставіць "
-"іншыя можнасьці."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Пазначце імя карыстальніка ды пароль."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Пазначце пароль для карыстальніка «<strong>%(username)s</strong>»."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Пароль"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Пароль (яшчэ раз)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Дзеля пэўнасьці набярыце такі самы пароль яшчэ раз."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Прыбраць"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Дадаць яшчэ %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Ці выдаліць?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Дзякуем за час, які вы сёньня правялі на гэтай пляцоўцы."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Увайсьці зноўку"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Зьмяніць пароль"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Пароль зьмянілі"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Ваш пароль зьмяніўся."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Дзеля бясьпекі пазначце стары пароль, а потым набярыце новы пароль двойчы "
-"— каб упэўніцца, што набралі без памылак."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Стары пароль"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Новы пароль"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Зьмяніць пароль"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Узнавіць пароль"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Пароль узнавілі"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Вам усталявалі пароль. Можаце вярнуцца ды ўвайсьці зноўку."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Пацьвердзіце, што трэба ўзнавіць пароль"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Пазначце новы пароль"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr "Набярыце новы пароль двойчы — каб упэўніцца, што набралі без памылак."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Новы пароль:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Пацьвердзіце пароль:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Не ўдалося ўзнавіць пароль"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Спасылка ўзнавіць пароль хібная: мажліва таму, што ёю ўжо скарысталіся. "
-"Запытайцеся ўзнавіць пароль яшчэ раз."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Пароль узнавілі"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Перайдзіце да наступнае бачыны ды абярыце новы пароль:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Імя карыстальніка, калі раптам вы забыліся:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Дзякуем, што карыстаецеся нашаю пляцоўкаю!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Каманда «%(site_name)s»"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Узнавіць пароль"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Усе даты"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Нічога)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Абраць %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Абярыце %s, каб зьмяніць"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/be/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/be/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 2bb2909..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/be/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/be/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/be/LC_MESSAGES/djangojs.po
deleted file mode 100644
index d4c920f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/be/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,183 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/"
-"language/be/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: be\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Даступныя %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Сьпіс даступных %s. Каб нешта абраць, пазначце патрэбнае ў полі ніжэй і "
-"пстрыкніце па стрэлцы «Абраць» між двума палямі."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Каб прасеяць даступныя %s, друкуйце ў гэтым полі."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Прасеяць"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Абраць усе"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Каб абраць усе %s, пстрыкніце тут."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Абраць"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Прыбраць"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Абралі %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Сьпіс абраных %s. Каб нешта прыбраць, пазначце патрэбнае ў полі ніжэй і "
-"пстрыкніце па стрэлцы «Прыбраць» між двума палямі."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Прыбраць усё"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Каб прыбраць усе %s, пстрыкніце тут."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "Абралі %(sel)s з %(cnt)s"
-msgstr[1] "Абралі %(sel)s з %(cnt)s"
-msgstr[2] "Абралі %(sel)s з %(cnt)s"
-msgstr[3] "Абралі %(sel)s з %(cnt)s"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"У пэўных палях засталіся незахаваныя зьмены. Калі выканаць дзеяньне, "
-"незахаванае страціцца."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Абралі дзеяньне, але не захавалі зьмены ў пэўных палях. Каб захаваць, "
-"націсьніце «Добра». Дзеяньне потым трэба будзе запусьціць нанова."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Абралі дзеяньне, а ў палях нічога не зьмянялі. Мажліва, вы хацелі націснуць "
-"кнопку «Выканаць», а ня кнопку «Захаваць»."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Студзень Люты Сакавік Красавік Травень Чэрвень Ліпень Жнівень Верасень "
-"Кастрычнік Лістапад Сьнежань"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "Н П А С Ч П С"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Паказаць"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Схаваць"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Цяпер"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Гадзіньнік"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Абярыце час"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Поўнач"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 папоўначы"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Поўдзень"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Скасаваць"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Сёньня"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Каляндар"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Учора"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Заўтра"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/bg/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/bg/LC_MESSAGES/django.mo
deleted file mode 100644
index e9dad55..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/bg/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/bg/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/bg/LC_MESSAGES/django.po
deleted file mode 100644
index 9f74f65..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/bg/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,872 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Boris Chervenkov <office@sentido.bg>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/"
-"language/bg/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bg\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Успешно изтрити %(count)d %(items)s ."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Не можете да изтриете %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Сигурни ли сте?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Изтриване на избраните %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Всички"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Да"
-
-#: filters.py:239
-msgid "No"
-msgstr "Не"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Неизвестно"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Коя-да-е дата"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Днес"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Последните 7 дни"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Този месец"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Тази година"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Моля, влезте отново, тъй като сесията е изтекла."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Действие:"
-
-#: models.py:25
-msgid "action time"
-msgstr "време на действие"
-
-#: models.py:28
-msgid "object id"
-msgstr "id на обекта"
-
-#: models.py:29
-msgid "object repr"
-msgstr "repr на обекта"
-
-#: models.py:30
-msgid "action flag"
-msgstr "флаг за действие"
-
-#: models.py:31
-msgid "change message"
-msgstr "промени съобщение"
-
-#: models.py:36
-msgid "log entry"
-msgstr "записка"
-
-#: models.py:37
-msgid "log entries"
-msgstr "записки"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Добавен \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Променени \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Изтрит \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "LogEntry обект"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Празно"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Променено %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "и"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Добавени %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Променени %(list)s за %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Изтрити %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Няма променени полета."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Обектът %(name)s \"%(obj)s\" бе успешно добавен. Може да го редактирате по-"
-"долу. "
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Обектът %(name)s \"%(obj)s\" бе успешно добавен. "
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Обектът %(name)s \"%(obj)s\" бе успешно актуализиран. "
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Елементите трябва да бъдат избрани, за да се извършат действия по тях. Няма "
-"променени елементи."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Няма избрани действия."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Добави %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s обект с първичен ключ %(key)r не съществува."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Промени %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Грешка в базата данни"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s беше променено успешно."
-msgstr[1] "%(count)s %(name)s бяха променени успешно."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s е избран"
-msgstr[1] "Всички %(total_count)s са избрани"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 от %(cnt)s са избрани"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Обектът %(name)s \"%(obj)s\" бе успешно изтрит. "
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "История на промените: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Вход"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Администрация на сайта"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s администрация"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Дата:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Час:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Търсене"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Добави друг"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Страница не е намерена"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Съжалявам, но исканата страница не е намерена."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Начало"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Сървърна грешка"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Сървърна грешка (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Сървърна грешка <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Станала е грешка. Съобщава се на администраторите на сайта по електронна "
-"поща и трябва да бъде поправено скоро. Благодарим ви за търпението."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Стартирай избраните действия"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Търси"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Щракнете тук, за да изберете обектите във всички страници"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Избери всички %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Изтрий избраното"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Добре дошли,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Документация"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Промени парола"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Изход"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Административен панел"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Административен панел"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Добави"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "История"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Разгледай в сайта"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Моля, поправете грешките по-долу."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Добави %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Филтър"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Премахни от подреждането"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Ред на подреждане: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Обърни подреждането"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Изтрий"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Изтриването на обекта %(object_name)s '%(escaped_object)s' не може да бъде "
-"извършено без да се изтрият и някои свързани обекти, върху които обаче "
-"нямате права: "
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Изтриването на %(object_name)s '%(escaped_object)s' ще доведе до "
-"заличаването на следните защитени свързани обекти:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Наистина ли искате да изтриете обектите %(object_name)s \"%(escaped_object)s"
-"\"? Следните свързани елементи също ще бъдат изтрити:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Да, сигурен съм"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Изтриване на множество обекти"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Изтриването на избраните %(objects_name)s ще доведе до изтриване на свързани "
-"обекти. Вашият профил няма права за изтриване на следните типове обекти:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Изтриването на избраните %(objects_name)s ще доведе до заличаването на "
-"следните защитени свързани обекти:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Наистина ли искате да изтриете избраните %(objects_name)s? Всички изброени "
-"обекти и свързаните с тях ще бъдат изтрити:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " По %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Моделите в %(name)s приложение"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Промени"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Нямате права да редактирате каквото и да е."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Последни действия"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Моите действия"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Няма налични"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Неизвестно съдържание"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Проблем с базата данни. Проверете дали необходимите таблици са създадени и "
-"дали съответния потребител има необходимите права за достъп. "
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Парола:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Забравена парола или потребителско име?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Дата/час"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Потребител"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Действие"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Този обект няма исторя на промените. Вероятно не е добавен чрез "
-"административния панел. "
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Покажи всички"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Запис"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Търсене"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s резултат"
-msgstr[1] "%(counter)s резултати"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s общо"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Запис като нов"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Запис и нов"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Запис и продължение"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Първо въведете потребител и парола. След това ще можете да редактирате "
-"повече детайли. "
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Въведете потребителско име и парола."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Въведете нова парола за потребител <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Парола"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Парола (отново)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Въведете същата парола още веднъж за проверка. "
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Премахване"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Добави друг %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Изтриване?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Благодарим Ви, че използвахте този сайт днес."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Влез пак"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Промяна на парола"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Паролата е сменена успешно"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Паролата ви е променена."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Въведете старата си парола /за сигурност/. След това въведете желаната нова "
-"парола два пъти от съображения за сигурност"
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Стара парола"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Нова парола"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Промяна на парола"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Нова парола"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Промяната на парола завърши"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Паролата е променена. Вече можете да се впишете"
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Парола за потвърждение"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Въведете нова парола"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Моля, въведете новата парола два пъти, за да може да се потвърди, че сте я "
-"написали правилно."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Нова парола:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Потвърдете паролата:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Неуспешна промяна на паролата "
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Връзката за възстановяване на паролата е невалидна, може би защото вече е "
-"използвана. Моля, поискайте нова промяна на паролата."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Паролата е успешно променена."
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Вие сте получили този имейл, защото сте поискали да промените паролата за "
-"вашия потребителски акаунт в %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Моля, отидете на следната страница и изберете нова парола:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Вашето потребителско име, в случай, че сте го забравили:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Благодарим, че ползвате сайта ни!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Екипът на %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Забравили сте си паролата? Въведете своя имейл адрес по-долу, а ние ще ви "
-"изпратим инструкции за създаване на нова."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "E-mail адреси:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Нова парола"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Всички дати"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Празен)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Изберете %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Изберете %s за промяна"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 6089d1c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.po
deleted file mode 100644
index ff4036a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/bg/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,183 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/"
-"language/bg/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bg\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Налични %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Това е списък на наличните %s . Можете да изберете някои, като ги изберете в "
-"полето по-долу и след това кликнете върху \"Избор\" стрелка между двете "
-"кутии."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Въведете в това поле, за да филтрирате списъка на наличните %s."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Филтър"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Избери всички"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Кликнете, за да изберете всички %s наведнъж."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Избирам"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Премахни"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Избрахме %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Това е списък на избрания %s. Можете да премахнете някои, като ги изберете в "
-"полето по-долу и след това щракнете върху \"Премахни\" стрелка между двете "
-"кутии."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Премахване на всички"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Кликнете, за да премахнете всички избрани %s наведнъж."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s на %(cnt)s е избран"
-msgstr[1] "%(sel)s на %(cnt)s са избрани"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Имате незапазени промени по отделни полета за редактиране. Ако започнете "
-"друго, незаписаните промени ще бъдат загубени."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Вие сте избрали действие, но не сте записали промените по полета. Моля, "
-"кликнете ОК, за да се запишат. Трябва отново да започнете действие."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Вие сте избрали дадена дейност, а не сте направили някакви промени по "
-"полетата. Вероятно търсите Go бутон, а не бутона Save."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Януари Февруари Март Април Май Юни Юли Август Септември Октомври Ноември "
-"Декември"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "Н П В С Ч П С"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Покажи"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Скрий"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Сега"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Часовник"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Избери време"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Полунощ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "По обяд"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Отказ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Днес"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Календар"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Вчера"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Утре"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/bn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/bn/LC_MESSAGES/django.mo
deleted file mode 100644
index c09b48f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/bn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/bn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/bn/LC_MESSAGES/django.po
deleted file mode 100644
index 415f5eb..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/bn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,862 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# anubhab91, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Tahmid Rafi <rafi.tahmid@gmail.com>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/"
-"bn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d টি %(items)s সফলভাবে মুছে ফেলা হয়েছে"
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "%(name)s ডিলিট করা সম্ভব নয়"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "আপনি কি নিশ্চিত?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "চিহ্নিত অংশটি %(verbose_name_plural)s মুছে ফেলুন"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "সকল"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "হ্যাঁ"
-
-#: filters.py:239
-msgid "No"
-msgstr "না"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "অজানা"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "যে কোন তারিখ"
-
-#: filters.py:309
-msgid "Today"
-msgstr "‍আজ"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "শেষ ৭ দিন"
-
-#: filters.py:317
-msgid "This month"
-msgstr "এ মাসে"
-
-#: filters.py:321
-msgid "This year"
-msgstr "এ বছরে"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "অনুগ্রহ করে পুনরায় প্রবেশ করুন, কেননা আপনার সেশনের মেয়াদ শেষ।"
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "কাজ:"
-
-#: models.py:25
-msgid "action time"
-msgstr "কার্য সময়"
-
-#: models.py:28
-msgid "object id"
-msgstr "অবজেক্ট আইডি"
-
-#: models.py:29
-msgid "object repr"
-msgstr "অবজেক্ট উপস্থাপক"
-
-#: models.py:30
-msgid "action flag"
-msgstr "কার্যচিহ্ন"
-
-#: models.py:31
-msgid "change message"
-msgstr "বার্তা পরিবর্তন করুন"
-
-#: models.py:36
-msgid "log entry"
-msgstr "লগ এন্ট্রি"
-
-#: models.py:37
-msgid "log entries"
-msgstr "লগ এন্ট্রিসমূহ"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "%(object)s অ্যাড করা হয়েছে"
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" ডিলিট করা হয়েছে"
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "লগ-এন্ট্রি দ্রব্য"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "কিছু না"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s পরিবর্তিত হয়েছে।"
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "এবং"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" যুক্ত হয়েছে।"
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" এর জন্য %(list)s পরিবর্তিত হয়েছে।"
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" মোছা হয়েছে।"
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "কোন ফিল্ড পরিবর্তন হয়নি।"
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" সফলতার সাথে যুক্ত হয়েছে। আপনি নিচে থেকে এটি পুনরায় সম্পাদন "
-"করতে পারেন।"
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"\"%(obj)s\" %(name)s টি সফলতার সাথে যোগ করা হয়েছে। আপনি চাইলে নিচ থেকে আরো "
-"একটি %(name)s যোগ করতে পারেন।"
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" সফলতার সাথে যুক্ত হয়েছে।"
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" সফলতার সাথে পরিবর্তিত হয়েছে।"
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr "কাজ করার আগে বস্তুগুলিকে অবশ্যই চিহ্নিত করতে হবে। কোনো বস্তু পরিবর্তিত হয়নি।"
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "কোনো কাজ "
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%s যোগ করুন"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(key)r প্রাইমারি কি সম্বলিত %(name)s অবজেক্ট এর অস্তিত্ব নেই।"
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s পরিবর্তন করুন"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "ডাটাবেস সমস্যা"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] ""
-msgstr[1] ""
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] ""
-msgstr[1] ""
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "%(cnt)s টি থেকে ০ টি সিলেক্ট করা হয়েছে"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" সফলতার সাথে মুছে ফেলা হয়েছে।"
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "ইতিহাস পরিবর্তনঃ %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "প্রবেশ করুন"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "সাইট প্রশাসন"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s প্রশাসন"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "তারিখঃ"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "সময়ঃ"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "খুঁজুন"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "আরেকটি যোগ করুন"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "বর্তমান অবস্থা:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "পরিবর্তন:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "পৃষ্ঠা পাওয়া যায়নি"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "দুঃখিত, অনুরোধকৃত পাতাটি পাওয়া যায়নি।"
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "নীড়পাতা"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "সার্ভার সমস্যা"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "সার্ভার সমস্যা (৫০০)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "সার্ভার সমস্যা <em>(৫০০)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "চিহ্নিত কাজটি শুরু করুন"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "যান"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "সকল পৃষ্ঠার দ্রব্য পছন্দ করতে এখানে ক্লিক করুন"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "%(total_count)s টি %(module_name)s এর সবগুলোই সিলেক্ট করুন"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "চিহ্নিত অংশের চিহ্ন মুছে ফেলুন"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "স্বাগতম,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "সহায়িকা"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "পাসওয়ার্ড বদলান"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "প্রস্থান"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "জ্যাঙ্গো সাইট প্রশাসক"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "জ্যাঙ্গো প্রশাসন"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "যোগ করুন"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "ইতিহাস"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "সাইটে দেখুন"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "অনুগ্রহ করে নিচের ভুলগুলো সংশোধন করুন।"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s যোগ করুন"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "ফিল্টার"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "ক্রমানুসারে সাজানো থেকে বিরত হোন"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "সাজানোর ক্রম: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "ক্রমানুসারে সাজানো চালু করুন/ বন্ধ করুন"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "মুছুন"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' মুছে ফেললে এর সম্পর্কিত অবজেক্টগুলোও মুছে "
-"যাবে, কিন্তু আপনার নিম্নবর্ণিত অবজেক্টগুলো মোছার অধিকার নেইঃ"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"আপনি কি %(object_name)s \"%(escaped_object)s\" মুছে ফেলার ব্যাপারে নিশ্চিত? "
-"নিম্নে বর্ণিত সকল আইটেম মুছে যাবেঃ"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "হ্যা়ঁ, আমি নিশ্চিত"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "একাধিক জিনিস মুছে ফেলুন"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s অনুযায়ী "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "%(name)s এপ্লিকেশন এর মডেল গুলো"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "পরিবর্তন"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "কোন কিছু পরিবর্তনে আপনার অধিকার নেই।"
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "সাম্প্রতিক কার্যাবলী"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "আমার কার্যাবলী"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "কিছুই পাওয়া যায়নি"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "অজানা বিষয়"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"আপনার ডাটাবেস ইনস্টলে সমস্যা হয়েছে। নিশ্চিত করুন যে, ডাটাবেস টেবিলগুলো সঠিকভাবে "
-"তৈরী হয়েছে, এবং যথাযথ সদস্যের ডাটাবেস পড়ার অধিকার রয়েছে।"
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "পাসওয়ার্ডঃ"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "ইউজার নেইম অথবা পাসওয়ার্ড ভুলে গেছেন?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "তারিখ/সময়"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "সদস্য"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "কার্য"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr "এই অবজেক্টের কোন ইতিহাস নেই। সম্ভবত এটি প্রশাসন সাইট দিয়ে তৈরী করা হয়নি।"
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "সব দেখান"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "সংরক্ষণ করুন"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "সার্চ"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "মোট %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "নতুনভাবে সংরক্ষণ করুন"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "সংরক্ষণ করুন এবং আরেকটি যোগ করুন"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "সংরক্ষণ করুন এবং সম্পাদনা চালিয়ে যান"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"প্রথমে একটি সদস্যনাম ও পাসওয়ার্ড প্রবেশ করান। তারপরে আপনি ‍আরও সদস্য-অপশন যুক্ত করতে "
-"পারবেন।"
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "ইউজার নেইম এবং পাসওয়ার্ড টাইপ করুন।"
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "<strong>%(username)s</strong> সদস্যের জন্য নতুন পাসওয়ার্ড দিন।"
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "পাসওয়ার্ড"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "পাসওয়ার্ড (পুনরায়)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "উপরের পাসওয়ার্ডটি পুনরায় প্রবেশ করান, যাচাইয়ের জন্য।"
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "মুছে ফেলুন"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "আরো একটি %(verbose_name)s যোগ করুন"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "মুছে ফেলুন?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "ওয়েবসাইটে কিছু সময় কাটানোর জন্য আপনাকে আন্তরিক ধন্যবাদ।"
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "পুনরায় প্রবেশ করুন"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "পাসওয়ার্ড বদলান"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "পাসওয়ার্ড বদল সফল হয়েছে"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "আপনার পাসওয়ার্ড বদলানো হয়েছে।"
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"অনুগ্রহ করে আপনার পুরনো পাসওয়ার্ড প্রবেশ করান, নিরাপত্তার কাতিরে, এবং পরপর দু’বার "
-"নতুন পাসওয়ার্ড প্রবেশ করান, যাচাই করার জন্য।"
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "পুরনো পাসওয়ার্ড"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "নতুন পাসওয়ার্ড"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "আমার পাসওয়ার্ড পরিবর্তন করুন"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "পাসওয়ার্ড রিসেট করুন"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "পাসওয়ার্ড রিসেট সম্পন্ন হয়েছে"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "আপনার পাসওয়ার্ড দেয়া হয়েছে। আপনি এখন প্রবেশ (লগইন) করতে পারেন।"
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "পাসওয়ার্ড রিসেট নিশ্চিত করুন"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "নতুন পাসওয়ার্ড দিন"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"অনুগ্রহ করে আপনার পাসওয়ার্ড দুবার প্রবেশ করান, যাতে আমরা যাচাই করতে পারি আপনি "
-"সঠিকভাবে টাইপ করেছেন।"
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "নতুন পাসওয়ার্ডঃ"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "পাসওয়ার্ড নিশ্চিতকরণঃ"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "পাসওয়ার্ড রিসেট সফল হয়নি"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"পাসওয়ার্ড রিসেট লিঙ্কটি ঠিক নয়, হয়তো এটা ইতোমধ্যে ব্যবহৃত হয়েছে। পাসওয়ার্ড "
-"রিসেটের জন্য অনুগ্রহ করে নতুনভাবে আবেদন করুন।"
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "পাসওয়ার্ড রিসেট সফল হয়েছে"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"আমরা আপনার পাসওয়ার্ড সেট করার নিয়ম-কানুন আপনার দেয়া ইমেইল এড্রেসে পাঠিয়ে "
-"দিয়েছি। শীঘ্রই আপনি ইমেইলটি পাবেন।"
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"আপনি এই ই-মেইলটি পেয়েছেন কারন আপনি %(site_name)s এ আপনার ইউজার একাউন্টের "
-"পাসওয়ার্ড রিসেট এর জন্য অনুরোধ করেছেন।"
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "অনুগ্রহ করে নিচের পাতাটিতে যান এবং নতুন পাসওয়ার্ড বাছাই করুনঃ"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "আপনার সদস্যনাম, যদি ভুলে গিয়ে থাকেনঃ"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "আমাদের সাইট ব্যবহারের জন্য ধন্যবাদ!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s দল"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"পাসওয়ার্ড ভুলে গেছেন? নিচে আপনার ইমেইল এড্রেস দিন, এবং আমরা নতুন পাসওয়ার্ড সেট "
-"করার নিয়ম-কানুন আপনাকে ই-মেইল করব।"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "ইমেইল ঠিকানা:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "আমার পাসওয়ার্ড রিসেট করুন"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "সকল তারিখ"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(কিছুই না)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s বাছাই করুন"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "%s পরিবর্তনের জন্য বাছাই করুন"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 79e3e4f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 8164c26..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/bn/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,171 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Tahmid Rafi <rafi.tahmid@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/"
-"bn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s বিদ্যমান"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "ফিল্টার"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "সব বাছাই করুন"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "সব %s একবারে বাছাই করার জন্য ক্লিক করুন।"
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "বাছাই করুন"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "মুছে ফেলুন"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s বাছাই করা হয়েছে"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "সব মুছে ফেলুন"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] ""
-msgstr[1] ""
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"জানুয়ারি ফেব্রুয়ারি মার্চ এপ্রিল মে জুন জুলাই অাগস্ট সেপ্টেম্বর অক্টোবর নভেম্বর ডিসেম্বর"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "র স ম ব ব শ শ"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "দেখান"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "লুকান"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "এখন"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "ঘড়ি"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "সময় নির্বাচন করুন"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "মধ্যরাত"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "৬ পূর্বাহ্ন"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "দুপুর"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "বাতিল"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "আজ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "দিনপঞ্জিকা"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "গতকাল"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "আগামীকাল"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/br/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/br/LC_MESSAGES/django.mo
deleted file mode 100644
index 48caaf0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/br/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/br/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/br/LC_MESSAGES/django.po
deleted file mode 100644
index 103c91f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/br/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,836 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Fulup <fulup.jakez@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/"
-"br/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: br\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr ""
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr ""
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Ha sur oc'h ?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr ""
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "An holl"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Ya"
-
-#: filters.py:239
-msgid "No"
-msgstr "Ket"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Dianav"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Forzh pegoulz"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Hiziv"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Er 7 devezh diwezhañ"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Ar miz-mañ"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Ar bloaz-mañ"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr ""
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Ober :"
-
-#: models.py:25
-msgid "action time"
-msgstr "eur an ober"
-
-#: models.py:28
-msgid "object id"
-msgstr ""
-
-#: models.py:29
-msgid "object repr"
-msgstr ""
-
-#: models.py:30
-msgid "action flag"
-msgstr ""
-
-#: models.py:31
-msgid "change message"
-msgstr "Kemennadenn gemmañ"
-
-#: models.py:36
-msgid "log entry"
-msgstr ""
-
-#: models.py:37
-msgid "log entries"
-msgstr ""
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Traezenn eus ar marilh"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Hini ebet"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Kemmet %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "ha"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "N'eus bet kemmet maezienn ebet."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr ""
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr ""
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-
-#: options.py:1037
-msgid "No action selected."
-msgstr ""
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Ouzhpennañ %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr ""
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Kemmañ %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Fazi en diaz roadennoù"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] ""
-msgstr[1] ""
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] ""
-msgstr[1] ""
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr ""
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr ""
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Istor ar c'hemmoù : %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Kevreañ"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Merañ al lec'hienn"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Merañ %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Deiziad :"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Eur :"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Klask"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Ouzhpennañ unan all"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "N'eo ket bet kavet ar bajenn"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr ""
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Degemer"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Fazi servijer"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Fazi servijer (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Fazi servijer <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Mont"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr ""
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr ""
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Riñsañ an diuzadenn"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Degemer mat,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Teulioù"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Cheñch ger-tremen"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Digevreañ"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Lec'hienn verañ Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Merañ Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Ouzhpennañ"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Istor"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Gwelet war al lec'hienn"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr ""
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Ouzhpennañ %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Sil"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Eilpennañ an diuzadenn"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Diverkañ"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Ya, sur on"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " dre %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Kemmañ"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr ""
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr ""
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Ma oberoù"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr ""
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Endalc'had dianav"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Ger-tremen :"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Disoñjet ho ker-tremen pe hoc'h anv implijer ganeoc'h ?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Deiziad/eur"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Implijer"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Ober"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Diskouez pep tra"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Enrollañ"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Klask"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr ""
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Enrollañ evel nevez"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Enrollañ hag ouzhpennañ unan all"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Enrollañ ha derc'hel da gemmañ"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Merkit un anv implijer hag ur ger-tremen."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Ger-tremen"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Ger-tremen (adarre)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr ""
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Lemel kuit"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr ""
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Diverkañ ?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr ""
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Kevreañ en-dro"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Cheñch ho ker-tremen"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Ger-termen cheñchet ervat"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Cheñchet eo bet ho ker-tremen."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Ger-tremen kozh"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Ger-tremen nevez"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Cheñch ma ger-tremen"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Adderaouekaat ar ger-tremen"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Adderaouekaet eo bet ar ger-tremen ervat"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Kadarnaat eo bet cheñchet ar ger-tremen"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Merkañ ur ger-tremen nevez"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Ger-tremen nevez :"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Kadarnaat ar ger-tremen :"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Ur fazi zo c'hoarvezet en ur cheñch ger-tremen"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Cheñchet eo bet ar ger-tremen ervat"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Ho trugarekaat da ober gant hol lec'hienn !"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr ""
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "An holl zeiziadoù"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(hini)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Diuzañ %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/br/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/br/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index a320f1a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/br/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/br/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/br/LC_MESSAGES/djangojs.po
deleted file mode 100644
index e9a9efd..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/br/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,170 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Fulup <fulup.jakez@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/"
-"br/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: br\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Hegerz %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Sil"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Dibab an holl"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Klikañ evit dibab an holl %s war un dro."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Dibab"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Lemel kuit"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Dibabet %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Lemel kuit pep tra"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Klikañ evit dilemel an holl %s dibabet war un dro."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] ""
-msgstr[1] ""
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Genver C'hwevrer Meurzh Ebrel Mae Mezheven Gouere Eost Gwengolo Here Du Kerzu"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "S L M M Y G S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Diskouez"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Kuzhat"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Bremañ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Horolaj"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Dibab un eur"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Hanternoz"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6e00"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Kreisteiz"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Nullañ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Hiziv"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Deiziadur"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Dec'h"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Warc'hoazh"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/bs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/bs/LC_MESSAGES/django.mo
deleted file mode 100644
index ecc5f04..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/bs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/bs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/bs/LC_MESSAGES/django.po
deleted file mode 100644
index f327761..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/bs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,863 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Filip Dupanović <filip.dupanovic@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/"
-"bs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bs\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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Uspješno izbrisano %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr ""
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Da li ste sigurni?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Izbriši odabrane %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Svi"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Da"
-
-#: filters.py:239
-msgid "No"
-msgstr "Ne"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Nepoznato"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Svi datumi"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Danas"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Poslednjih 7 dana"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Ovaj mesec"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Ova godina"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Molimo da se prijavite ponovo, pošto je vaša sesija istekla."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Radnja:"
-
-#: models.py:25
-msgid "action time"
-msgstr "vrijeme radnje"
-
-#: models.py:28
-msgid "object id"
-msgstr "id objekta"
-
-#: models.py:29
-msgid "object repr"
-msgstr "repr objekta"
-
-#: models.py:30
-msgid "action flag"
-msgstr "oznaka radnje"
-
-#: models.py:31
-msgid "change message"
-msgstr "opis izmjene"
-
-#: models.py:36
-msgid "log entry"
-msgstr "zapis u logovima"
-
-#: models.py:37
-msgid "log entries"
-msgstr "zapisi u logovima"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Nijedan"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Promijenjeno %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "i"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Dodano %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Promijeni %(list)s za %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Izbrisani %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Nije bilo izmjena polja."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Objekat „%(obj)s“ klase %(name)s dodat je uspješno. Dole možete unjeti "
-"dodatne izmjene."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Objekat „%(obj)s“ klase %(name)s sačuvan je uspješno."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Objekat „%(obj)s“ klase %(name)s izmjenjen je uspješno."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Predmeti moraju biti izabrani da bi se mogla obaviti akcija nad njima. "
-"Nijedan predmet nije bio izmjenjen."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Nijedna akcija nije izabrana."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Dodaj objekat klase %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Objekat klase %(name)s sa primarnim ključem %(key)r ne postoji."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Izmjeni objekat klase %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Greška u bazi podataka"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 od %(cnt)s izabrani"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Objekat „%(obj)s“ klase %(name)s obrisan je uspješno."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Historijat izmjena: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Prijava"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Administracija sistema"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Administracija %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Datum:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Vrijeme:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Pretraži"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Dodaj još jedan"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Stranica nije pronađena"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Žao nam je, tražena stranica nije pronađena."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Početna"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Greška na serveru"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Greška na serveru (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Greška na serveru <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Pokreni odabranu radnju"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Počni"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Kliknite ovdje da izaberete objekte preko svih stranica"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Izaberite svih %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Izbrišite izbor"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Dobrodošli,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentacija"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Promjena lozinke"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Odjava"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django administracija sajta"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administracija"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Dodaj"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Historijat"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Pregled na sajtu"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr ""
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Dodaj objekat klase %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filter"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Obriši"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Uklanjanje %(object_name)s „%(escaped_object)s“ povlači uklanjanje svih "
-"objekata koji su povezani sa ovim objektom, ali vaš nalog nema dozvole za "
-"brisanje slijedećih tipova objekata:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Da li ste sigurni da želite da obrišete %(object_name)s "
-"„%(escaped_object)s“? Slijedeći objekti koji su u vezi sa ovim objektom će "
-"također biti obrisani:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Da, siguran sam"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Brisanje više objekata"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Izmjeni"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Nemate dozvole da unosite bilo kakve izmjene."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Posjlednje radnje"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Moje radnje"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Nema podataka"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Nepoznat sadržaj"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Nešto nije uredu sa vašom bazom podataka. Provjerite da li postoje "
-"odgovarajuće tabele i da li odgovarajući korisnik ima pristup bazi."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Lozinka:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr ""
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Datum/vrijeme"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Korisnik"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Radnja"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Ovaj objekat nema zabilježen historijat izmjena. Vjerovatno nije dodan kroz "
-"ovaj sajt za administraciju."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Prikaži sve"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Sačuvaj"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Pretraga"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "ukupno %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Sačuvaj kao novi"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Sačuvaj i dodaj slijedeći"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Sačuvaj i nastavi sa izmjenama"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Prvo unesite korisničko ime i lozinku. Potom ćete moći da mijenjate još "
-"korisničkih podešavanja."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Unesite novu lozinku za korisnika <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Lozinka"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Lozinka (ponovite)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Radi provjere tačnosti ponovo unesite lozinku koju ste unijeli gore."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Obriši"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Dodaj još jedan %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Brisanje?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Hvala što ste danas proveli vrijeme na ovom sajtu."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Ponovna prijava"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Izmjena lozinke"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "uspješna izmjena lozinke"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Vaša lozinka je izmjenjena."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Iz bezbjednosnih razloga prvo unesite svoju staru lozinku, a novu zatim "
-"unesite dva puta da bismo mogli da provjerimo da li ste je pravilno unijeli."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Stara lozinka"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nova lozinka"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Izmijeni moju lozinku"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Resetovanje lozinke"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Resetovanje lozinke uspješno"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Vaša lozinka je postavljena. Možete se prijaviti."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Potvrda resetovanja lozinke"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Unesite novu lozinku"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Unesite novu lozinku dva puta kako bismo mogli da provjerimo da li ste je "
-"pravilno unijeli."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nova lozinka:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Potvrda lozinke:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Resetovanje lozinke neuspješno"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Link za resetovanje lozinke nije važeći, vjerovatno zato što je već "
-"iskorišćen. Ponovo zatražite resetovanje lozinke."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Resetovanje lozinke uspješno."
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Idite na slijedeću stranicu i postavite novu lozinku."
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Ukoliko ste zaboravili, vaše korisničko ime:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Hvala što koristite naš sajt!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Uredništvo sajta %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Resetuj moju lozinku"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Svi datumi"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr ""
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Odaberi objekat klase %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Odaberi objekat klase %s za izmjenu"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 3efd709..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 33cc566..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/bs/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,173 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Filip Dupanović <filip.dupanovic@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/"
-"bs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bs\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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Dostupno %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filter"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Odaberi sve"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Ukloni"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Odabrani %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "Izabran %(sel)s od %(cnt)s"
-msgstr[1] "Izabrano %(sel)s od %(cnt)s"
-msgstr[2] "Izabrano %(sel)s od %(cnt)s"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Imate nespašene izmjene na pojedinim uređenim poljima. Ako pokrenete ovu "
-"akciju, te izmjene će biti izgubljene."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr ""
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr ""
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Danas"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ca/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ca/LC_MESSAGES/django.mo
deleted file mode 100644
index afeb30a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ca/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ca/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ca/LC_MESSAGES/django.po
deleted file mode 100644
index 6dc78b0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ca/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,884 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Carles Barrobés <carles@barrobes.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Catalan (http://www.transifex.com/projects/p/django/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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Eliminat/s %(count)d %(items)s satisfactòriament."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "No es pot esborrar %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "N'esteu segur?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Eliminar els %(verbose_name_plural)s seleccionats"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Tots"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Sí"
-
-#: filters.py:239
-msgid "No"
-msgstr "No"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Desconegut"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Qualsevol data"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Avui"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Últims 7 dies"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Aquest mes"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Aquest any"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Si us plau, introduïu un %(username)s i clau correcta per un compte de "
-"personal. Observeu que ambdós camps són sensibles a majúscules."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Si us plau, entreu de nou perquè la vostra sessió ha caducat."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Acció:"
-
-#: models.py:25
-msgid "action time"
-msgstr "moment de l'acció"
-
-#: models.py:28
-msgid "object id"
-msgstr "id de l'objecte"
-
-#: models.py:29
-msgid "object repr"
-msgstr "'repr' de l'objecte"
-
-#: models.py:30
-msgid "action flag"
-msgstr "indicador de l'acció"
-
-#: models.py:31
-msgid "change message"
-msgstr "missatge del canvi"
-
-#: models.py:36
-msgid "log entry"
-msgstr "entrada del registre"
-
-#: models.py:37
-msgid "log entries"
-msgstr "entrades del registre"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Afegit \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Modificat \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Eliminat \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Objecte entrada del registre"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "cap"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Modificat %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "i"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Afegit %(name)s \"%(object)s\""
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Modificat %(list)s per a %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Eliminat %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Cap camp modificat."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"S'ha afegit amb èxit el/la %(name)s \"%(obj)s\". Pot editar-lo de nou a sota."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"El %(name)s \"%(obj)s fou afegit satisfactòriament. Pos afegir un altre "
-"%(name)s a continuació."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "El/la %(name)s \"%(obj)s\" ha estat afegit/da amb èxit."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"El %(name)s \"%(obj)s\" fou canviat satisfactòriament. Pot editar-lo un "
-"altra vegada a continuació."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"El %(name)s \"%(obj)s\" fou canviat satisfactòriament. Pots afegir un altre "
-"%(name)s a continuació."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "S'ha modificat amb èxit el/la %(name)s \"%(obj)s."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Heu de seleccionar els elements per poder realitzar-hi accions. No heu "
-"seleccionat cap element."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "no heu seleccionat cap acció"
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Afegir %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "No existeix cap objecte %(name)s amb la clau primària %(key)r."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Modificar %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Error de base de dades"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s s'ha modificat amb èxit."
-msgstr[1] "%(count)s %(name)s s'han modificat amb èxit."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s seleccionat(s)"
-msgstr[1] "Tots %(total_count)s seleccionat(s)"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 de %(cnt)s seleccionats"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "El/la %(name)s \"%(obj)s\" s'ha eliminat amb èxit."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Modificar històric: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Iniciar sessió"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Administració del lloc"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Administració de %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Data:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Hora:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Cercar"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Afegir-ne un altre"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Actualment:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Canviar:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "No s'ha pogut trobar la pàgina"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Ho sentim, però no s'ha pogut trobar la pàgina sol·licitada"
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Inici"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Error del servidor"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Error del servidor (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Error del servidor <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"S'ha produït un error. Se n'ha informat els administradors del lloc per "
-"correu electrònic, i hauria d'arreglar-se en breu. Gràcies per la vostra "
-"paciència."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Executar l'acció seleccionada"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Anar"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Feu clic aquí per seleccionar els objectes a totes les pàgines"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Seleccioneu tots %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Netejar la selecció"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Benvingut/da,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Documentació"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Canviar contrasenya"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Finalitzar sessió"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Lloc administratiu de Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administració de Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Afegir"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Històric"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Veure al lloc"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Si us plau, corregiu els errors mostrats a sota."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Afegir %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtre"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Treure de la ordenació"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Prioritat d'ordenació: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Commutar ordenació"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Eliminar"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Eliminar el/la %(object_name)s '%(escaped_object)s' provocaria l'eliminació "
-"d'objectes relacionats, però el vostre compte no te permisos per esborrar "
-"els tipus d'objecte següents:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Esborrar %(object_name)s '%(escaped_object)s' requeriria esborrar els "
-"següents objectes relacionats protegits:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Esteu segurs de voler esborrar els/les %(object_name)s \"%(escaped_object)s"
-"\"? S'esborraran els següents elements relacionats:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Sí, n'estic segur"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Eliminar múltiples objectes"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Esborrar els %(objects_name)s seleccionats faria que s'esborréssin objectes "
-"relacionats, però el vostre compte no té permisos per esborrar els següents "
-"tipus d'objectes:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Esborrar els %(objects_name)s seleccionats requeriria esborrar els següents "
-"objectes relacionats protegits:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"N'esteu segur de voler esborrar els %(objects_name)s seleccionats? "
-"S'esborraran tots els objects següents i els seus elements relacionats:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Per %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Models en l'aplicació %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Modificar"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "No teniu permís per editar res."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Accions recents"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Les meves accions"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Cap disponible"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Contingut desconegut"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Hi ha algun problema a la instal·lació de la vostra base de dades. Assegureu-"
-"vos que s'han creat les taules adients, i que la base de dades és llegible "
-"per l'usuari apropiat."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Contrasenya:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Heu oblidat la vostra contrasenya o nom d'usuari?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Data/hora"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Usuari"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Acció"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Aquest objecte no té historial de canvis. Probablement no es va afegir "
-"utilitzant aquest lloc administratiu."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Mostrar tots"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Desar"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Cerca"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s resultat"
-msgstr[1] "%(counter)s resultats"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s en total"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Desar com a nou"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Desar i afegir-ne un de nou"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Desar i continuar editant"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Primer, entreu un nom d'usuari i una contrasenya. Després podreu editar més "
-"opcions de l'usuari."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Introduïu un nom d'usuari i contrasenya."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Introduïu una contrasenya per l'usuari <strong>%(username)s</strong>"
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Contrasenya"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Contrasenya (de nou)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Introduïu la mateixa contrasenya de dalt, per fer-ne la verificació."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Eliminar"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Afegir un/a altre/a %(verbose_name)s."
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Eliminar?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Gràcies per passar una estona de qualitat al web durant el dia d'avui."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Iniciar sessió de nou"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Canvi de contrasenya"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Contrasenya canviada amb èxit"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "La seva contrasenya ha estat canviada."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Si us plau, introduïu la vostra contrasenya antiga, per seguretat, i tot "
-"seguit introduïu la vostra contrasenya nova dues vegades per verificar que "
-"l'heu escrita correctament."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Contrasenya antiga"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Contrasenya nova"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Canviar la meva contrasenya:"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Restablir contrasenya"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Contrasenya restablerta"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-"S'ha canviat la vostra contrasenya. Ara podeu continuar i iniciar sessió."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Confirmació de restabliment de contrasenya"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Introduïu la nova contrasenya"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Si us plau, introduïu la vostra nova contrasenya dues vegades, per verificar "
-"que l'heu escrita correctament."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Contrasenya nova:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Confirmar contrasenya:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Restabliment de contrasenya fallat"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"L'enllaç de restabliment de contrasenya era invàlid, potser perquè ja s'ha "
-"utilitzat. Si us plau, sol·liciteu un nou reestabliment de contrasenya."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Restabliment de contrasenya amb èxit"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Heu rebut aquest correu perquè vau sol·licitar restablir la contrasenya per "
-"al vostre compte d'usuari a %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Si us plau, aneu a la pàgina següent i escolliu una nova contrasenya:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "El vostre nom d'usuari, en cas que l'hagueu oblidat:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Gràcies per fer ús del nostre lloc!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "L'equip de %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Heu oblidat la vostra contrasenya? Introduïu la vostra adreça de correu "
-"electrònic a sota, i us enviarem instruccions per canviar-la."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Adreça de correu electrònic:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Restablir la meva contrasenya"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Totes les dates"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Cap)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Seleccioneu %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Seleccioneu %s per modificar"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 47fb690..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 14a4101..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ca/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,185 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Carles Barrobés <carles@barrobes.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Catalan (http://www.transifex.com/projects/p/django/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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s Disponibles"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Aquesta és la llista de %s disponibles. En podeu escollir alguns "
-"seleccionant-los a la caixa de sota i fent clic a la fletxa \"Escollir\" "
-"entre les dues caixes."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Escriviu en aquesta caixa per a filtrar la llista de %s disponibles."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtre"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Escollir-los tots"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Feu clic per escollir tots els %s d'un cop."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Escollir"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Eliminar"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Escollit %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Aquesta és la llista de %s escollits. En podeu eliminar alguns seleccionant-"
-"los a la caixa de sota i fent clic a la fletxa \"Eliminar\" entre les dues "
-"caixes."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Esborrar-los tots"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Feu clic per eliminar tots els %s escollits d'un cop."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s de %(cnt)s seleccionat"
-msgstr[1] "%(sel)s of %(cnt)s seleccionats"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Teniu canvis sense desar a camps editables individuals. Si executeu una "
-"acció, es perdran aquests canvis no desats."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Heu seleccionat una acció, però encara no heu desat els vostres canvis a "
-"camps individuals. Si us plau premeu OK per desar. Haureu de tornar a "
-"executar l'acció."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Heu seleccionat una acció i no heu fet cap canvi a camps individuals. "
-"Probablement esteu cercant el botó 'Anar' enlloc de 'Desar'."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Gener Febrer Març Abril Maig Juny Juliol Agost Setembre Octubre Novembre "
-"Desembre"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "dg dl dt dc dj dv ds"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Mostrar"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Ocultar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Ara"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Rellotge"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Escolliu una hora"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Mitjanit"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Migdia"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Cancel·lar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Avui"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Calendari"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Ahir"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Demà"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/django.mo
deleted file mode 100644
index 6479620..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/django.po
deleted file mode 100644
index 13c2864..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,891 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Jirka Vejrazka <Jirka.Vejrazka@gmail.com>, 2011
-# Vlada Macek <macek@sandbox.cz>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-06 13:32+0000\n"
-"Last-Translator: Vlada Macek <macek@sandbox.cz>\n"
-"Language-Team: Czech (http://www.transifex.com/projects/p/django/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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Úspěšně odstraněno: %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Nelze smazat %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Jste si jisti?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Odstranit vybrané položky typu %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Vše"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Ano"
-
-#: filters.py:239
-msgid "No"
-msgstr "Ne"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Neznámé"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Libovolné datum"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Dnes"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Posledních 7 dní"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Tento měsíc"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Tento rok"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Zadejte správné %(username)s a heslo pro personál. Obě pole mohou rozlišovat "
-"velká a malá písmena."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Přihlaste se znovu, vaše sezení vypršelo."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Operace:"
-
-#: models.py:25
-msgid "action time"
-msgstr "čas operace"
-
-#: models.py:28
-msgid "object id"
-msgstr "id položky"
-
-#: models.py:29
-msgid "object repr"
-msgstr "reprez. položky"
-
-#: models.py:30
-msgid "action flag"
-msgstr "příznak operace"
-
-#: models.py:31
-msgid "change message"
-msgstr "zpráva o změně"
-
-#: models.py:36
-msgid "log entry"
-msgstr "položka protokolu"
-
-#: models.py:37
-msgid "log entries"
-msgstr "položky protokolu"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Přidán objekt \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Změněn objekt \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Odstraněn objekt \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Objekt záznam v protokolu"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Žádný"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Změněno: %s"
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "a"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Položka \"%(object)s\" typu %(name)s byla přidána."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Změna polí: %(list)s pro položku \"%(object)s\" typu %(name)s."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Položka \"%(object)s\" typu %(name)s byla odstraněna."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Nebyla změněna žádná pole."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Položka \"%(obj)s\" typu %(name)s byla úspěšně přidána. Níže můžete v "
-"úpravách pokračovat."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"Objekt \"%(obj)s\" typu %(name)s byl úspěšně přidán. Níže můžete přidat "
-"další %(name)s."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Položka \"%(obj)s\" typu %(name)s byla úspěšně přidána."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"Objekt \"%(obj)s\" typu %(name)s byl úspěšně změněn. Níže ho můžete znovu "
-"upravovat."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"Objekt \"%(obj)s\" typu %(name)s byl úspěšně změněn. Níže můžete přidat "
-"další %(name)s."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Položka \"%(obj)s\" typu %(name)s byla úspěšně změněna."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"K provedení hromadných operací je třeba vybrat nějaké položky. Nedošlo k "
-"žádným změnám."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Nebyla vybrána žádná operace."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%s: přidat"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Položka \"%(name)s\" s primárním klíčem \"%(key)r\" neexistuje."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s: změnit"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Chyba databáze"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "Položka %(name)s byla úspěšně změněna."
-msgstr[1] "%(count)s položky %(name)s byly úspěšně změněny."
-msgstr[2] "%(count)s položek %(name)s bylo úspěšně změněno."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s položka vybrána."
-msgstr[1] "Všechny %(total_count)s položky vybrány."
-msgstr[2] "Vybráno všech %(total_count)s položek."
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "Vybraných je 0 položek z celkem %(cnt)s."
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Položka \"%(obj)s\" typu %(name)s byla úspěšně odstraněna."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Historie změn: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s: %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Odstranění položky \"%(instance)s\" typu %(class_name)s by vyžadovalo "
-"odstranění těchto souvisejících chráněných položek: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Přihlášení"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Správa webu"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Správa aplikace %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Datum:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Čas:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Hledat"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Přidat další"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Aktuálně:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Změna:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Stránka nenalezena"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Požadovaná stránka nebyla bohužel nalezena."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Domů"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Chyba serveru"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Chyba serveru (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Chyba serveru <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"V systému došlo k chybě. Byla e-mailem nahlášena správcům, kteří by ji měli "
-"v krátké době opravit. Děkujeme za trpělivost."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Provést vybranou operaci"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Provést"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Klepnutím zde vyberete položky ze všech stránek."
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Vybrat všechny položky typu %(module_name)s, celkem %(total_count)s."
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Zrušit výběr"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Vítejte, uživateli"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentace"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Změnit heslo"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Odhlásit se"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Správa webu Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Správa systému Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Přidat"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Historie"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Zobrazení na webu"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Opravte níže uvedené chyby."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Opravte níže uvedené chyby."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s: přidat"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtr"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Přestat řadit"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Priorita řazení: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Přehodit řazení"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Odstranit"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Odstranění položky \"%(escaped_object)s\" typu %(object_name)s by vyústilo v "
-"odstranění souvisejících položek. Nemáte však oprávnění k odstranění položek "
-"následujících typů:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Odstranění položky '%(escaped_object)s' typu %(object_name)s by vyžadovalo "
-"odstranění souvisejících chráněných položek:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Opravdu má být odstraněna položka \"%(escaped_object)s\" typu "
-"%(object_name)s? Následující související položky budou všechny odstraněny:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Ano, jsem si jist(a)"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Odstranit vybrané položky"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Odstranění položky typu %(objects_name)s by vyústilo v odstranění "
-"souvisejících položek. Nemáte však oprávnění k odstranění položek "
-"následujících typů:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Odstranění vybrané položky typu %(objects_name)s by vyžadovalo odstranění "
-"následujících souvisejících chráněných položek:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Opravdu má být odstraněny vybrané položky typu %(objects_name)s? Všechny "
-"vybrané a s nimi související položky budou odstraněny:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Dle: %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modely v aplikaci %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Změnit"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Nemáte oprávnění nic měnit."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Poslední operace"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Vaše operace"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Nic"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Neznámý obsah"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Potíže s nainstalovanou databází. Ujistěte se, že byly vytvořeny "
-"odpovídající tabulky a že databáze je přístupná pro čtení příslušným "
-"uživatelem."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Heslo:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Zapomněli jste heslo nebo uživatelské jméno?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Datum a čas"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Uživatel"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Operace"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Tato položka nemá historii změn. Pravděpodobně nebyla přidána tímto "
-"administračním rozhraním."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Zobrazit vše"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Uložit"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Hledat"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s výsledek"
-msgstr[1] "%(counter)s výsledky"
-msgstr[2] "%(counter)s výsledků"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "Celkem %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Uložit jako novou položku"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Uložit a přidat další položku"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Uložit a pokračovat v úpravách"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Nejdříve vložte uživatelské jméno a heslo. Poté budete moci upravovat více "
-"uživatelských nastavení."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Vložte uživatelské jméno a heslo."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Vložte nové heslo pro uživatele <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Heslo"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Heslo (znovu)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Pro ověření vložte stejné heslo znovu."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Odebrat"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Přidat %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Odstranit?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Děkujeme za čas strávený s tímto webem."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Přihlaste se znovu"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Změna hesla"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Změna hesla byla úspěšná"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Vaše heslo bylo změněno."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Vložte svoje současné heslo a poté vložte dvakrát heslo nové. Omezíme tak "
-"možnost překlepu."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Současné heslo"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nové heslo"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Změnit heslo"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Obnovení hesla"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Heslo bylo obnoveno"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Vaše heslo bylo nastaveno. Nyní se můžete přihlásit."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Potvrzení obnovy hesla"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Vložte nové heslo"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr "Vložte dvakrát nové heslo. Tak ověříme, že bylo zadáno správně."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nové heslo:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Potvrdit heslo:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Obnovení hesla bylo neúspěšné"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Odkaz pro obnovení hesla byl neplatný, možná již byl použit. Požádejte o "
-"obnovení hesla znovu."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Obnovení hesla bylo úspěšné"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Návod na nastavení hesla byl odeslán na zadanou e-mailovou adresu. Měl by za "
-"okamžik dorazit."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Pokud e-mail neobdržíte, ujistěte se, že zadaná e-mailová adresa je stejná "
-"jako ta registrovaná u vašeho účtu a zkontrolujte složku nevyžádané pošty, "
-"tzv. spamu."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Tento e-mail vám byl zaslán na základě vyžádání obnovy hesla vašeho "
-"uživatelskému účtu na systému %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Přejděte na následující stránku a zadejte nové heslo:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Pro jistotu vaše uživatelské jméno:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Děkujeme za používání našeho webu!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Tým aplikace %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Zapomněli jste heslo? Zadejte níže e-mailovou adresu a systém vám odešle "
-"instrukce k nastavení nového."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "E-mailová adresa:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Obnovit heslo"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Všechna data"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(None)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s: vybrat"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Vyberte položku %s ke změně"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 0218c0a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.po
deleted file mode 100644
index c0a0513..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/cs/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,186 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Jirka Vejrazka <Jirka.Vejrazka@gmail.com>, 2011
-# Vlada Macek <macek@sandbox.cz>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Czech (http://www.transifex.com/projects/p/django/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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Dostupné položky: %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Seznam dostupných položek %s. Jednotlivě je lze vybrat tak, že na ně v "
-"rámečku klepnete a pak klepnete na šipku \"Vybrat\" mezi rámečky."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-"Chcete-li filtrovat ze seznamu dostupných položek %s, začněte psát do tohoto "
-"pole."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtr"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Vybrat vše"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Chcete-li najednou vybrat všechny položky %s, klepněte sem."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Vybrat"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Odebrat"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Vybrané položky %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Seznam vybraných položek %s. Jednotlivě je lze odebrat tak, že na ně v "
-"rámečku klepnete a pak klepnete na šipku \"Odebrat mezi rámečky."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Odebrat vše"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Chcete-li najednou odebrat všechny vybrané položky %s, klepněte sem."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "Vybrána je %(sel)s položka z celkem %(cnt)s."
-msgstr[1] "Vybrány jsou %(sel)s položky z celkem %(cnt)s."
-msgstr[2] "Vybraných je %(sel)s položek z celkem %(cnt)s."
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"V jednotlivých polích jsou neuložené změny, které budou ztraceny, pokud "
-"operaci provedete."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Byla vybrána operace, ale dosud nedošlo k uložení změn jednotlivých polí. "
-"Uložíte klepnutím na tlačítko OK. Pak bude třeba operaci spustit znovu."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Byla vybrána operace a jednotlivá pole nejsou změněná. Patrně hledáte "
-"tlačítko Provést spíše než Uložit."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"leden únor březen duben květen červen červenec srpen září říjen listopad "
-"prosinec"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "n p ú s č p s"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Zobrazit"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Skrýt"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Nyní"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Hodiny"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Vyberte čas"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Půlnoc"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6h ráno"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Poledne"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Storno"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Dnes"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalendář"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Včera"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Zítra"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/cy/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/cy/LC_MESSAGES/django.mo
deleted file mode 100644
index e77f988..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/cy/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/cy/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/cy/LC_MESSAGES/django.po
deleted file mode 100644
index 9fc0c42..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/cy/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,847 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/"
-"cy/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cy\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
-"11) ? 2 : 3;\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr ""
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr ""
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Ydych yn sicr?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr ""
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr ""
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Ie"
-
-#: filters.py:239
-msgid "No"
-msgstr "Na"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr ""
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Unrhyw dyddiad"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Heddiw"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "7 diwrnod gorffennol"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Mis yma"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Blwyddyn yma"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr ""
-
-#: helpers.py:23
-msgid "Action:"
-msgstr ""
-
-#: models.py:25
-msgid "action time"
-msgstr "amser gweithred"
-
-#: models.py:28
-msgid "object id"
-msgstr "id gwrthrych"
-
-#: models.py:29
-msgid "object repr"
-msgstr "repr gwrthrych"
-
-#: models.py:30
-msgid "action flag"
-msgstr "fflag gweithred"
-
-#: models.py:31
-msgid "change message"
-msgstr "neges newid"
-
-#: models.py:36
-msgid "log entry"
-msgstr "cofnod"
-
-#: models.py:37
-msgid "log entries"
-msgstr "cofnodion"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr ""
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Newidiwyd %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "ac"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:781
-msgid "No fields changed."
-msgstr ""
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr ""
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr ""
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-
-#: options.py:1037
-msgid "No action selected."
-msgstr ""
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Ychwanegu %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr ""
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Newidio %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr ""
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr ""
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr ""
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Hanes newid: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Mewngofnodi"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Gweinyddiad safle"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr ""
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Dyddiad:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Amser:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr ""
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr ""
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Tudalen heb ei ddarganfod"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Mae'n ddrwg gennym, ond nid darganfwyd y dudalen a dymunwyd"
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Adref"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Gwall gweinyddwr"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Gwall gweinyddwr (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Gwall Gweinyddwr <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Ewch"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr ""
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr ""
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr ""
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr ""
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Croeso,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dogfennaeth"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Newid cyfrinair"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Allgofnodi"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Gweinyddiad safle Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Gweinyddiad Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Ychwanegu"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Hanes"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Gweld ar safle"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr ""
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Ychwanegu %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr ""
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Dileu"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Yndw, rwy'n sicr"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr ""
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Newidio"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Does genych ddim hawl i olygu unrhywbeth."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Gweithredau Diweddar"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Fy Ngweithredau"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Dim ar gael"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr ""
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Cyfrinair:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr ""
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Dyddiad/amser"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Defnyddiwr"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Gweithred"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Does dim hanes newid gan y gwrthrych yma. Mae'n debyg ni ychwanegwyd drwy'r "
-"safle gweinydd yma."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr ""
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Cadw"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr ""
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Cadw fel newydd"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Cadw ac ychwanegu un arall"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Cadw ac parhau i olygu"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr ""
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr ""
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr ""
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr ""
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Diolch am dreulio amser ansawdd gyda'r safle we heddiw 'ma."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Ailmewngofnodi"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Newid cyfrinair"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Newid cyfrinair yn lwyddianus"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Newidwyd eich cyfrinair."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Rhowch eich cyfrinair hen, er mwyn gwarchodaeth, yna rhowch eich cyfrinair "
-"newydd dwywaith er mwyn i ni wirio y teipiwyd yn gywir."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr ""
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr ""
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Newidio fy nghyfrinair"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Ailosod cyfrinair"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Cyfrinair newydd:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Cadarnhewch cyfrinair:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Ailosod cyfrinair yn lwyddianus"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Eich enw defnyddiwr, rhag ofn chi wedi anghofio:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Diolch am ddefnyddio ein safle!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Y tîm %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Ailosodi fy nghyfrinair"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Dyddiadau i gyd"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr ""
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Dewis %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Dewis %s i newid"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index cca872d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.po
deleted file mode 100644
index e6bb39e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/cy/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,174 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/"
-"cy/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cy\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
-"11) ? 2 : 3;\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Ionawr Chwefror Mawrth Ebrill Mai Mehefin Gorffennaf Medi Hydref Tachwedd "
-"Rhagfyr"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "S Ll M M I G S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr ""
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Nawr"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Cloc"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Dewis amser"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Hanner nos"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 y.b."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Hanner dydd"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Diddymu"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Heddiw"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Calendr"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Ddoe"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Yfory"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/django.mo
deleted file mode 100644
index 3063fbb..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/django.po
deleted file mode 100644
index 48fd7be..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,889 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Christian Joergensen <christian@gmta.info>, 2012
-# Dimitris Glezos <glezos@transifex.com>, 2012
-# Erik Wognsen <r4mses@gmail.com>, 2013
-# Finn Gruwier, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-10-27 03:03+0000\n"
-"Last-Translator: Erik Wognsen <r4mses@gmail.com>\n"
-"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/"
-"da/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: da\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s blev slettet."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Kan ikke slette %(name)s "
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Er du sikker?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Slet valgte %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Alle"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Ja"
-
-#: filters.py:239
-msgid "No"
-msgstr "Nej"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Ukendt"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Når som helst"
-
-#: filters.py:309
-msgid "Today"
-msgstr "I dag"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "De sidste 7 dage"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Denne måned"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Dette år"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Indtast venligst det korrekte %(username)s og adgangskode for en "
-"personalekonto. Bemærk at begge felter kan være versalfølsomme."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Log venligst ind igen, da din session er udløbet."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Handling"
-
-#: models.py:25
-msgid "action time"
-msgstr "handlingstid"
-
-#: models.py:28
-msgid "object id"
-msgstr "objekt-ID"
-
-#: models.py:29
-msgid "object repr"
-msgstr "objekt repr"
-
-#: models.py:30
-msgid "action flag"
-msgstr "handlingsflag"
-
-#: models.py:31
-msgid "change message"
-msgstr "ændringsmeddelelse"
-
-#: models.py:36
-msgid "log entry"
-msgstr "logmeddelelse"
-
-#: models.py:37
-msgid "log entries"
-msgstr "logmeddelelser"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Tilføjede \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Ændrede \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Slettede \"%(object)s\"."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "LogEntry-objekt"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Ingen"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Ændrede %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "og"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Tilføjede %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Ændrede %(list)s for %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Slettede %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Ingen felter ændret."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" blev tilføjet. Du kan redigere den/det igen herunder."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" blev tilføjet. Du kan endnu en/et %(name)s herunder."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" blev tilføjet."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" blev ændret. Du kan redigere den/det igen herunder."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" blev ændret. Du kan tilføje endnu en/et %(name)s "
-"herunder."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" blev ændret."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Der skal være valgt nogle emner for at man kan udføre handlinger på dem. "
-"Ingen emner er blev ændret."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Ingen handling valgt."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Tilføj %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Der findes ikke et %(name)s-objekt med primærnøgle %(key)r."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Ret %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "databasefejl"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s blev ændret."
-msgstr[1] "%(count)s %(name)s blev ændret."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s valgt"
-msgstr[1] "Alle %(total_count)s valgt"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 af %(cnt)s valgt"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" blev slettet."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Ændringshistorik: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Sletning af %(class_name)s %(instance)s vil kræve sletning af følgende "
-"beskyttede relaterede objekter: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Log ind"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Website-administration"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Administration af %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Dato:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Tid:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Slå op"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Tilføj endnu en"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Nuværende:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Ændring:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Siden blev ikke fundet"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Vi beklager, men den ønskede side kunne ikke findes"
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Hjem"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Serverfejl"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Serverfejl (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Serverfejl <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Der opstod en fejl. Fejlen er rapporteret til website-administratoren via e-"
-"mail, og vil blive rettet hurtigst muligt. Tak for din tålmodighed."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Udfør den valgte handling"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Udfør"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Klik her for at vælge objekter på tværs af alle sider"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Vælg alle %(total_count)s %(module_name)s "
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Ryd valg"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Velkommen,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentation"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Skift adgangskode"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Log ud"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django website-administration"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administration"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Tilføj"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Historik"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Se på website"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Ret venligst fejlene herunder."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Ret venligst fejlene herunder."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Tilføj %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtrer"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Fjern fra sortering"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Sorteringsprioritet: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Skift sortering"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Slet"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Hvis du sletter %(object_name)s '%(escaped_object)s', vil du også slette "
-"relaterede objekter, men din konto har ikke rettigheder til at slette "
-"følgende objekttyper:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Sletning af %(object_name)s ' %(escaped_object)s ' vil kræve sletning af "
-"følgende beskyttede relaterede objekter:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Er du sikker på du vil slette %(object_name)s \"%(escaped_object)s\"? Alle "
-"de følgende relaterede objekter vil blive slettet:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Ja, jeg er sikker"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Slet flere objekter"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Sletning af de valgte %(objects_name)s ville resultere i sletning af "
-"relaterede objekter, men din konto har ikke tilladelse til at slette "
-"følgende typer af objekter:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Sletning af de valgte %(objects_name)s vil kræve sletning af følgende "
-"beskyttede relaterede objekter:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Er du sikker på du vil slette de valgte %(objects_name)s? Alle de følgende "
-"objekter og deres relaterede emner vil blive slettet:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Efter %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modeller i applikationen %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Ret"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Du har ikke rettigheder til at foretage ændringer."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Seneste handlinger"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Mine handlinger"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Ingen tilgængelige"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Ukendt indhold"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Der er noget galt med databaseinstallationen. Kontroller om "
-"databasetabellerne er blevet oprettet og at databasen er læsbar for den "
-"pågældende bruger."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Adgangskode:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Har du glemt dit password eller brugernavn?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Dato/tid"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Bruger"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Funktion"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Dette objekt har ingen ændringshistorik. Det blev formentlig ikke tilføjet "
-"via dette administrations-site"
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Vis alle"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Gem"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Søg"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s resultat"
-msgstr[1] "%(counter)s resultater"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s i alt"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Gem som ny"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Gem og tilføj endnu en"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Gem og fortsæt med at redigere"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Indtast først et brugernavn og en adgangskode. Derefter får du yderligere "
-"redigeringsmuligheder."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Indtast et brugernavn og en adgangskode."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Indtast en ny adgangskode for brugeren <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Adgangskode"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Adgangskode (igen)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Indtast den samme adgangskode som ovenfor for verifikation."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Fjern"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Tilføj endnu en %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Slet?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Tak for den kvalitetstid du brugte på websitet i dag."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Log ind igen"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Skift adgangskode"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Adgangskoden blev ændret"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Din adgangskode blev ændret."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Indtast venligst din gamle adgangskode for en sikkerheds skyld og indtast så "
-"din nye adgangskode to gange, så vi kan være sikre på, at den er indtastet "
-"korrekt."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Gammel adgangskode"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Ny adgangskode"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Skift min adgangskode"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Nulstil adgangskode"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Adgangskoden blev nulstillet"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Din adgangskode er blevet sat. Du kan logge ind med den nu."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Bekræftelse for nulstilling af adgangskode"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Indtast ny adgangskode"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Indtast venligst din nye adgangskode to gange, så vi kan være sikre på, at "
-"den er indtastet korrekt."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Ny adgangskode:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Bekræft ny adgangskode:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Adgangskoden blev ikke nulstillet"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Linket for nulstilling af adgangskoden er ugyldigt, måske fordi det allerede "
-"har været brugt. Anmod venligst påny om nulstilling af adgangskoden."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Adgangskoden blev nulstillet"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Vi har sendt dig instruktioner i at vælge en adgangskode til den e-mail-"
-"adresse, du angav. Du skulle modtage dem inden længe."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Hvis du ikke modtager en e-mail, så tjek venligst, at du har indtastet den e-"
-"mail-adresse, du registrerede dig med, og tjek din spam-mappe."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Du modtager denne e-mail, fordi du har anmodet om en nulstilling af "
-"adgangskoden til din brugerkonto ved %(site_name)s ."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Gå venligst til denne side og vælg en ny adgangskode:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "For det tilfælde at du skulle have glemt dit brugernavn er det:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Tak fordi du brugte vores website!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Med venlig hilsen %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Har du glemt din adgangskode? Skriv din e-mail-adresse herunder, så sender "
-"vi dig instruktioner i at vælge en ny adgangskode."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "E-mail-adresse:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Nulstil min adgangskode"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Alle datoer"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Ingen)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Vælg %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Vælg %s, der skal ændres"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 398e9c0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/djangojs.po
deleted file mode 100644
index bbc469a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/da/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,186 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Christian Joergensen <christian@gmta.info>, 2012
-# Erik Wognsen <r4mses@gmail.com>, 2012
-# Finn Gruwier, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/"
-"da/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: da\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Tilgængelige %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Dette er listen over tilgængelige %s. Du kan vælge dem enkeltvis ved at "
-"markere dem i kassen nedenfor og derefter klikke på \"Vælg\"-pilen mellem de "
-"to kasser."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Skriv i dette felt for at filtrere listen af tilgængelige %s."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtrér"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Vælg alle"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Klik for at vælge alle %s med det samme."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Vælg"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Fjern"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Valgte %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Dette er listen over valgte %s. Du kan fjerne dem enkeltvis ved at markere "
-"dem i kassen nedenfor og derefter klikke på \"Fjern\"-pilen mellem de to "
-"kasser."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Fjern alle"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Klik for at fjerne alle valgte %s med det samme."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s af %(cnt)s valgt"
-msgstr[1] "%(sel)s af %(cnt)s valgt"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Du har ugemte ændringer af et eller flere redigerbare felter. Hvis du "
-"udfører en handling fra drop-down-menuen, vil du miste disse ændringer."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Du har valgt en handling, men du har ikke gemt dine ændringer til et eller "
-"flere felter. Klik venligst OK for at gemme og vælg dernæst handlingen igen."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Du har valgt en handling, og du har ikke udført nogen ændringer på felter. "
-"Det, du søger er formentlig Udfør-knappen i stedet for Gem-knappen."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Januar Februar Marts April Maj Juni Juli August September Oktober November "
-"December"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "S M T O T F L"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Vis"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Skjul"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Nu"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Ur"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Vælg et tidspunkt"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Midnat"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 morgen"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Middag"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Annuller"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "I dag"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalender"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "I går"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "I morgen"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/de/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/de/LC_MESSAGES/django.mo
deleted file mode 100644
index 9c99f79..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/de/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/de/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/de/LC_MESSAGES/django.po
deleted file mode 100644
index 1142847..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/de/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,897 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Hagenbruch <ahagenbruch@googlemail.com>, 2012
-# apollo13 <florian@apolloner.eu>, 2011
-# Dimitris Glezos <glezos@transifex.com>, 2012
-# Jannis , 2013
-# Jannis Leidel <jannis@leidel.info>, 2013
-# Markus Holtermann <inyoka@markusholtermann.eu>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-10-23 08:24+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/django/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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Erfolgreich %(count)d %(items)s gelöscht."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Kann %(name)s nicht löschen"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Sind Sie sicher?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Ausgewählte %(verbose_name_plural)s löschen"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Alle"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Ja"
-
-#: filters.py:239
-msgid "No"
-msgstr "Nein"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Unbekannt"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Alle Daten"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Heute"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Letzte 7 Tage"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Diesen Monat"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Dieses Jahr"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Bitte einen gültigen %(username)s und ein Passwort für einen Staff-Account "
-"eingeben. Beide Felder berücksichtigen die Groß-/Kleinschreibung."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Bitte melden Sie sich erneut an, da Ihre Sitzung abgelaufen ist."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Aktion:"
-
-#: models.py:25
-msgid "action time"
-msgstr "Zeitpunkt der Aktion"
-
-#: models.py:28
-msgid "object id"
-msgstr "Objekt-ID"
-
-#: models.py:29
-msgid "object repr"
-msgstr "Objekt Darst."
-
-#: models.py:30
-msgid "action flag"
-msgstr "Aktionskennzeichen"
-
-#: models.py:31
-msgid "change message"
-msgstr "Änderungsmeldung"
-
-#: models.py:36
-msgid "log entry"
-msgstr "Logeintrag"
-
-#: models.py:37
-msgid "log entries"
-msgstr "Logeinträge"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" hinzufügt."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "\"%(object)s\" verändert - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" gelöscht."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "LogEntry Objekt"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "-"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s geändert."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "und"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" hinzugefügt."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(list)s von %(name)s \"%(object)s\" geändert."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" gelöscht."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Keine Felder geändert."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" wurde erfolgreich hinzugefügt und kann unten geändert "
-"werden."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" wurde erfolgreich hinzugefügt. Es kann jetzt ein "
-"weiteres %(name)s unten hinzugefügt werden."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" wurde erfolgreich hinzugefügt."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" wurde erfolgreich geändert. Weitere Änderungen können "
-"unten vorgenommen werden."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" wurde erfolgreich geändert. Es kann jetzt ein weiteres "
-"%(name)s unten hinzugefügt werden."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" wurde erfolgreich geändert."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Es müssen Objekte aus der Liste ausgewählt werden, um Aktionen "
-"durchzuführen. Es wurden keine Objekte geändert."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Keine Aktion ausgewählt."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%s hinzufügen"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr ""
-"Das %(name)s-Objekt mit dem Primärschlüssel %(key)r ist nicht vorhanden."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s ändern"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Datenbankfehler"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s \"%(name)s\" wurde erfolgreich geändert."
-msgstr[1] "%(count)s \"%(name)s\" wurden erfolgreich geändert."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s ausgewählt"
-msgstr[1] "Alle %(total_count)s ausgewählt"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 von %(cnt)s ausgewählt"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" wurde erfolgreich gelöscht."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Änderungsgeschichte: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Das Löschen des %(class_name)s-Objekts „%(instance)s“ würde ein Löschen der "
-"folgenden geschützten verwandten Objekte erfordern: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Anmelden"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Website-Verwaltung"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s-Verwaltung"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Datum:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Zeit:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Suchen"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Neu hinzufügen"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Aktuell:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Ändern:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Seite nicht gefunden"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr ""
-"Es tut uns leid, aber die angeforderte Seite konnte nicht gefunden werden."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Start"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Serverfehler"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Serverfehler (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Serverfehler <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Ein Fehler ist aufgetreten und wurde an die Administratoren per E-Mail "
-"gemeldet. Danke für die Geduld, der Fehler sollte in Kürze behoben sein."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Ausgewählte Aktion ausführen"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Ausführen"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Hier klicken, um die Objekte aller Seiten auszuwählen"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Alle %(total_count)s %(module_name)s auswählen"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Auswahl widerrufen"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Willkommen,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentation"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Passwort ändern"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Abmelden"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django-Systemverwaltung"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django-Verwaltung"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Hinzufügen"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Geschichte"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Auf der Website anzeigen"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Bitte die aufgeführten Fehler korrigieren."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Bitte die unten aufgeführten Fehler korrigieren."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s hinzufügen"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filter"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Aus der Sortierung entfernen"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Sortierung: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Sortierung ein-/ausschalten"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Löschen"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Das Löschen des %(object_name)s \"%(escaped_object)s\" hätte das Löschen "
-"davon abhängiger Daten zur Folge, aber Sie haben nicht die nötigen Rechte, "
-"um die folgenden davon abhängigen Daten zu löschen:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Das Löschen von %(object_name)s „%(escaped_object)s“ würde ein Löschen der "
-"folgenden geschützten verwandten Objekte erfordern:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Sind Sie sicher, dass Sie %(object_name)s \"%(escaped_object)s\" löschen "
-"wollen? Es werden zusätzlich die folgenden davon abhängigen Daten gelöscht:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Ja, ich bin sicher"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Mehrere Objekte löschen"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Das Löschen der ausgewählten %(objects_name)s würde im Löschen geschützter "
-"verwandter Objekte resultieren, allerdings besitzt Ihr Benutzerkonto nicht "
-"die nötigen Rechte, um diese zu löschen:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Das Löschen der ausgewählten %(objects_name)s würde ein Löschen der "
-"folgenden geschützten verwandten Objekte erfordern:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Sind Sie sicher, dass Sie die ausgewählten %(objects_name)s löschen wollen? "
-"Alle folgenden Objekte und ihre verwandten Objekte werden gelöscht:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Nach %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modelle der %(name)s-Anwendung"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Ändern"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Sie haben keine Berechtigung, irgendetwas zu ändern."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Kürzliche Aktionen"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Meine Aktionen"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Keine vorhanden"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Unbekannter Inhalt"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Etwas stimmt nicht mit der Datenbankkonfiguration. Bitte sicherstellen, dass "
-"die richtigen Datenbanktabellen angelegt wurden und die Datenbank vom "
-"verwendeten Datenbankbenutzer auch lesbar ist."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Passwort:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Benutzername oder Passwort vergessen?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Datum/Zeit"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Benutzer"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Aktion"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Dieses Objekt hat keine Änderungsgeschichte. Es wurde möglicherweise nicht "
-"über diese Verwaltungsseiten angelegt."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Zeige alle"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Sichern"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Suchen"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s Ergebnis"
-msgstr[1] "%(counter)s Ergebnisse"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s gesamt"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Als neu sichern"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Sichern und neu hinzufügen"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Sichern und weiter bearbeiten"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Zuerst einen Benutzer und ein Passwort eingeben. Danach können weitere "
-"Optionen für den Benutzer geändert werden."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Bitte einen Benutzernamen und ein Passwort eingeben."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Bitte geben Sie ein neues Passwort für den Benutzer <strong>%(username)s</"
-"strong> ein."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Passwort"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Passwort (wiederholen)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Bitte das gleiche Passwort zur Überprüfung nochmal eingeben."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Entfernen"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "%(verbose_name)s hinzufügen"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Löschen?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Vielen Dank, dass Sie hier ein paar nette Minuten verbracht haben."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Erneut anmelden"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Passwort ändern"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Passwort erfolgreich geändert"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Ihr Passwort wurde geändert."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Bitte geben Sie aus Sicherheitsgründen erst Ihr altes Passwort und darunter "
-"dann zweimal (um sicherzustellen, dass Sie es korrekt eingegeben haben) das "
-"neue Passwort ein."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Altes Passwort"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Neues Passwort"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Mein Passwort ändern"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Passwort zurücksetzen"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Passwort zurücksetzen beendet"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Ihr Passwort wurde zurückgesetzt. Sie können sich nun anmelden."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Zurücksetzen des Passworts bestätigen"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Neues Passwort eingeben"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Bitte geben Sie Ihr neues Passwort zweimal ein, damit wir überprüfen können, "
-"ob es richtig eingetippt wurde."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Neues Passwort:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Passwort wiederholen:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Passwort wurde nicht erfolgreich zurückgesetzt"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Der Link zum Zurücksetzen Ihres Passworts ist ungültig, wahrscheinlich weil "
-"er schon einmal benutzt wurde. Bitte setzen Sie Ihr Passwort erneut zurück."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Passwort wurde erfolgreich zurückgesetzt"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Wir haben eine E-Mail zum Setzen eines neuen Passwortes an die angegebene E-"
-"Mail-Adresse gesendet. Sie sollte in Kürze ankommen."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Falls die E-Mail nicht angekommen sein sollte, bitte die E-Mail-Adresse auf "
-"Richtigkeit und gegebenenfalls den Spam-Ordner überprüfen."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Diese E-Mail wurde aufgrund einer Anfrage zum Zurücksetzen des Passworts auf "
-"der Website %(site_name)s versendet."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Bitte öffnen Sie folgende Seite, um Ihr neues Passwort einzugeben:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Ihr Benutzername, falls Sie ihn vergessen haben:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Vielen Dank, dass Sie unsere Webseite benutzen!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Das Team von %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Passwort vergessen? Einfach die E-Mail-Adresse unten eingeben und den "
-"Anweisungen zum Zurücksetzen des Passworts in der E-Mail folgen."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "E-Mail-Adresse:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Mein Passwort zurücksetzen"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Alle Daten"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(leer)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s auswählen"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "%s zur Änderung auswählen"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/de/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/de/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 253b500..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/de/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/de/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/de/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 35c7ad1..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/de/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,189 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Hagenbruch <ahagenbruch@googlemail.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/django/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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Verfügbare %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Dies ist die Liste der verfügbaren %s. Durch Markierung im unten stehenden "
-"Feld und Klicken des 'Auswählen'-Pfeils zwischen den beiden Feldern lassen "
-"sich einige auswählen."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-"Durch Tippen in diesem Feld lässt sich die Liste der verfügbaren %s "
-"eingrenzen."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filter"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Alle auswählen"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Klicken, um alle %s auf einmal auszuwählen."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Auswählen"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Entfernen"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Ausgewählte %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Dies ist die Liste der ausgewählten %s. Durch Markierung im unten stehenden "
-"Feld und Klicken des \"Entfernen\"-Pfeils zwischen den Feldern lassen sich "
-"einige entfernen."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Alle entfernen"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Klicken, um alle ausgewählten %s auf einmal zu entfernen."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s von %(cnt)s ausgewählt"
-msgstr[1] "%(sel)s von %(cnt)s ausgewählt"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Sie haben Änderungen an editierbaren Feldern vorgenommen und nicht "
-"gespeichert. Wollen Sie die Aktion trotzdem ausführen und Ihre Änderungen "
-"verwerfen?"
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Sie haben eine Aktion ausgewählt, aber ihre vorgenommenen Änderungen nicht "
-"gespeichert. Klicken Sie OK, um dennoch zu speichern. Danach müssen Sie die "
-"Aktion erneut ausführen."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Sie haben eine Aktion ausgewählt, aber keine Änderungen an editierbaren "
-"Feldern vorgenommen. Sie wollten wahrscheinlich auf 'Ausführen' und nicht "
-"auf 'Speichern' klicken."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Januar Februar März April Mai Juni Juli August September Oktober November "
-"Dezember"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "S M D M D F S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Einblenden"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Ausblenden"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Jetzt"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Uhr"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Uhrzeit"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Mitternacht"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 Uhr"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Mittag"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Abbrechen"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Heute"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalender"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Gestern"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Morgen"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/el/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/el/LC_MESSAGES/django.mo
deleted file mode 100644
index c2e956e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/el/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/el/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/el/LC_MESSAGES/django.po
deleted file mode 100644
index 05fd23b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/el/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,885 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Dimitris Glezos <glezos@transifex.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Yorgos Pagles <y.pagles@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/"
-"el/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: el\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Επιτυχημένη διαγραφή %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Αδύνατη τη διαγραφή του %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Είστε σίγουροι;"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Διαγραφη επιλεγμένων %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Όλα"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Ναι"
-
-#: filters.py:239
-msgid "No"
-msgstr "Όχι"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Άγνωστο"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Οποιαδήποτε ημερομηνία"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Σήμερα"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Τελευταίες 7 ημέρες"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Αυτόν το μήνα"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Αυτόν το χρόνο"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Η συνεδρία σας έχει λήξει. Παρακαλούμε συνδεθείτε ξανά."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Ενέργεια:"
-
-#: models.py:25
-msgid "action time"
-msgstr "ώρα ενέργειας"
-
-#: models.py:28
-msgid "object id"
-msgstr "κωδικός αντικειμένου"
-
-#: models.py:29
-msgid "object repr"
-msgstr "αναπαράσταση αντικειμένου"
-
-#: models.py:30
-msgid "action flag"
-msgstr "σημαία ενέργειας"
-
-#: models.py:31
-msgid "change message"
-msgstr "αλλαγή μηνύματος"
-
-#: models.py:36
-msgid "log entry"
-msgstr "εγγραφή καταγραφής"
-
-#: models.py:37
-msgid "log entries"
-msgstr "εγγραφές καταγραφής"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Προστέθηκαν \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Αλλάχθηκαν \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Διαγράφηκαν \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "LogEntry Object"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Κανένα"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Έγινε επεξεργασία του %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "και"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Προστέθηκε %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Έγινε επεξεργασία %(list)s για %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Διαγράφη %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Κανένα πεδίο δεν άλλαξε."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Το %(name)s \"%(obj)s\" αποθηκεύτηκε με επιτυχία. Μπορείτε να το "
-"επεξεργαστείτε πάλι παρακάτω."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Το %(name)s \"%(obj)s\" αποθηκεύτηκε με επιτυχία."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Το %(name)s \"%(obj)s\" αλλάχτηκε με επιτυχία."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Καμμία αλλαγή δεν έχει πραγματοποιηθεί ακόμα γιατί δεν έχετε επιλέξει κανένα "
-"αντικείμενο. Πρέπει να επιλέξετε ένα ή περισσότερα αντικείμενα για να "
-"πραγματοποιήσετε ενέργειες σε αυτά."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Δεν έχει επιλεγεί ενέργεια."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Προσθήκη %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr " Το αντικείμενο %(name)s με πρωτεύον κλειδί %(key)r δεν βρέθηκε."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Αλλαγή του %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Σφάλμα βάσης δεδομένων"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s άλλαξε επιτυχώς."
-msgstr[1] "%(count)s %(name)s άλλαξαν επιτυχώς."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "Επιλέχθηκε %(total_count)s"
-msgstr[1] "Επιλέχθηκαν και τα %(total_count)s"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "Επιλέγησαν 0 από %(cnt)s"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Το %(name)s \"%(obj)s\" διαγράφηκε με επιτυχία."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Ιστορικό αλλαγών: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Σύνδεση"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Διαχείριση του ιστότοπου"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Διαχείριση %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Ημ/νία:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Ώρα:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Αναζήτηση"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Προσθέστε κι άλλο"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Η σελίδα δε βρέθηκε"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Λυπόμαστε, αλλά η σελίδα που ζητήθηκε δε μπόρεσε να βρεθεί."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Αρχική"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Σφάλμα εξυπηρετητή"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Σφάλμα εξυπηρετητή (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Σφάλμα εξυπηρετητή <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Εκτέλεση της επιλεγμένης ενέργειας"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Μετάβαση"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Κάντε κλικ εδώ για να επιλέξετε τα αντικείμενα σε όλες τις σελίδες"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Επιλέξτε και τα %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Καθαρισμός επιλογής"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Καλωσήρθατε,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Τεκμηρίωση"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Αλλαγή συνθηματικού"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Αποσύνδεση"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Διαχειριστής ιστότοπου Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Διαχείριση Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Προσθήκη"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Ιστορικό"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Προβολή στην ιστοσελίδα"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Παρακαλούμε διορθώστε τα παρακάτω λάθη."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Προσθήκη %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Φίλτρο"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Διαγραφή από την ταξινόμηση"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Προτεραιότητα ταξινόμησης: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Εναλλαγή ταξινόμησης"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Διαγραφή"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Επιλέξατε την διαγραφή του αντικειμένου '%(escaped_object)s' είδους "
-"%(object_name)s. Αυτό συνεπάγεται την διαγραφή συσχετισμένων αντικειμενων "
-"για τα οποία δεν έχετε δικάιωμα διαγραφής. Τα είδη των αντικειμένων αυτών "
-"είναι:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Η διαγραφή του %(object_name)s '%(escaped_object)s' απαιτεί την διαγραφή "
-"των παρακάτω προστατευμένων αντικειμένων:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Επιβεβαιώστε ότι επιθημείτε την διαγραφή του %(object_name)s "
-"\"%(escaped_object)s\". Αν προχωρήσετε με την διαγραφή όλα τα παρακάτω "
-"συσχετισμένα αντικείμενα θα διαγραφούν επίσης:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Ναι, είμαι βέβαιος"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Διαγραφή πολλών αντικειμένων"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Η διαγραφή των επιλεγμένων %(objects_name)s θα είχε σαν αποτέλεσμα την "
-"διαγραφή συσχετισμένων αντικειμένων για τα οποία δεν έχετε το διακαίωμα "
-"διαγραφής:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Η διαγραφή των επιλεγμένων %(objects_name)s απαιτεί την διαγραφή των "
-"παρακάτω προστατευμένων αντικειμένων:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Επιβεβαιώστε ότι επιθημείτε την διαγραφή των επιλεγμένων %(objects_name)s . "
-"Αν προχωρήσετε με την διαγραφή όλα τα παρακάτω συσχετισμένα αντικείμενα θα "
-"διαγραφούν επίσης:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Ανά %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Επεξεργασία"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Δεν έχετε δικαίωμα να επεξεργαστείτε τίποτα."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Πρόσφατες ενέργειες"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Οι ενέργειες μου"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Κανένα διαθέσιμο"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Άγνωστο περιεχόμενο"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Φαίνεται να υπάρχει πρόβλημα με την εγκατάσταση της βάσης σας. Θα πρέπει να "
-"βεβαιωθείτε ότι οι απαραίτητοι πίνακες έχουν δημιουργηθεί και ότι η βάση "
-"είναι προσβάσιμη από τον αντίστοιχο χρήστη που έχετε δηλώσει."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Συνθηματικό:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Ξεχάσατε το συνθηματικό ή τον κωδικό χρήστη σας;"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Ημερομηνία/ώρα"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Χρήστης"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Ενέργεια"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Δεν υπάρχει ιστορικό αλλαγών γι' αυτό το αντικείμενο. Είναι πιθανό η "
-"προσθήκη του να μην πραγματοποιήθηκε χρησιμοποιώντας το διαχειριστικό."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Εμφάνιση όλων"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Αποθήκευση"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Αναζήτηση"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s αποτέλεσμα"
-msgstr[1] "%(counter)s αποτελέσματα"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s συνολικά"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Αποθήκευση ως νέο"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Αποθήκευση και προσθήκη καινούριου"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Αποθήκευση και συνέχεια επεξεργασίας"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Αρχικά εισάγετε το όνομα χρήστη και τον κωδικό πρόσβασης. Μετά την "
-"ολοκλήρωση αυτού του βήματος θα έχετε την επιλογή να προσθέσετε όλα τα "
-"υπόλοιπα στοιχεία για τον χρήστη."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Εισάγετε όνομα χρήστη και κωδικό πρόσβασης."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Εισάγετε ένα νέο κωδικό πρόσβασης για τον χρήστη <strong>%(username)s</"
-"strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Συνθηματικό"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Συνθηματικό (ξανά)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Εισάγετε το ίδιο συνθηματικό όπως παραπάνω, για λόγους επιβεβαίωσης."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Αφαίρεση"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Προσθήκη νέου %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Θέλετε να πραγματοποιηθεί διαγραφή?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Ευχαριστούμε που διαθέσατε κάποιο ποιοτικό χρόνο στον ιστότοπο σήμερα."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Σύνδεση ξανά"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Αλλαγή συνθηματικού"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Επιτυχής αλλαγή συνθηματικού"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Το συνθηματικό σας έχει αλλαχτεί."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Παρακαλούμε εισάγετε το παλιό σας συνθηματικό, για λόγους ασφάλειας, και "
-"κατόπιν εισάγετε το νέο σας συνθηματικό δύο φορές ούτως ώστε να "
-"πιστοποιήσουμε ότι το πληκτρολογήσατε σωστά."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Προηγούμενος κωδικός πρόσβασης"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Νέος κωδικός πρόσβασης"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Αλλαγή του συνθηματικού μου"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Επαναφορά συνθηματικού"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Ολοκληρώθηκε η επαναφορά του κωδικού πρόσβασης."
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-"Ορίσατε επιτυχώς έναν κωδικό πρόσβασής. Πλέον έχετε την δυνατότητα να "
-"συνδεθήτε."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Επιβεβαίωση επαναφοράς κωδικού πρόσβασης"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Πληκτρολογήστε νέο συνθηματικό"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Παρακαλούμε πληκτρολογήστε το νέο κωδικό πρόσβασης δύο φορές ώστε να "
-"βεβαιωθούμε ότι δεν πληκτρολογήσατε κάποιον χαρακτήρα λανθασμένα."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Νέο συνθηματικό:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Επιβεβαίωση συνθηματικού:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Επαναφορά συνθηματικού ανεπιτυχής"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Ο σύνδεσμος που χρησιμοποιήσατε για την επαναφορά του κωδικού πρόσβασης δεν "
-"είναι πλεόν διαθέσιμος. Πιθανώς έχει ήδη χρησιμοποιηθεί. Θα χρειαστεί να "
-"πραγματοποιήσετε και πάλι την διαδικασία αίτησης επαναφοράς του κωδικού "
-"πρόσβασης."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Επιτυχής επαναφορά συνθηματικού"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-"Παρακαλούμε επισκεφθήτε την ακόλουθη σελίδα και επιλέξτε ένα νέο κωδικό "
-"πρόσβασης: "
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr ""
-"Το όνομα χρήστη με το οποίο είστε καταχωρημένος για την περίπτωση στην οποία "
-"το έχετε ξεχάσει:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Ευχαριστούμε που χρησιμοποιήσατε τον ιστότοπο μας!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Η ομάδα του %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Επαναφορά του συνθηματικού μου"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Όλες οι ημερομηνίες"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Κενό)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Επιλέξτε %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Επιλέξτε %s προς αλλαγή"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/el/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/el/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 5315558..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/el/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/el/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/el/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 7bdbe45..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/el/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,180 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Dimitris Glezos <glezos@indifex.com>, 2011.
-# glogiotatidis <seadog@sealabs.net>, 2011.
-# Jannis Leidel <jannis@leidel.info>, 2011.
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-23 02:35+0100\n"
-"PO-Revision-Date: 2012-03-08 10:42+0000\n"
-"Last-Translator: Dimitris Glezos <glezos@transifex.com>\n"
-"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/"
-"el/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: el\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Διαθέσιμο %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Φίλτρο"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Επιλογή Όλων"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Αφαίρεση"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Επιλεχθέντα %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s από %(cnt)s επιλέγηκε"
-msgstr[1] "%(sel)s από %(cnt)s επιλέγηκαν"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Έχετε μη αποθηκευμένες αλλαγές σε επιμέρους επεξεργάσημα πεδία. Εάν "
-"εκτελέσετε μια ενέργεια, οι αλλαγές σας θα χαθούν."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Έχετε επιλέξει μια ενέργεια, αλλά ακόμη δεν έχετε αποθηκεύσει τις αλλαγές "
-"επιμέρους πεδίων. Παρακαλώ επιλέξτε ΟΚ για να αποθηκεύσετε. Θα χρειαστεί να "
-"επαναλάβετε την ενέργεια."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Έχετε επιλέξει μια ενέργεια και δεν έχετε κάνει καμία αλλαγή σε επιμέρους "
-"πεδία. Πιθανώς ψάχνετε για το κουμπί Go και όχι το κουμπί Αποθήκευση."
-
-#: static/admin/js/calendar.js:26
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Ιανουάριος Φεβρουάριος Μάρτιος Απρίλιος Μάιος Ιούνιος Ιούλιος Αύγουστος "
-"Σεπτέμβριος Οκτώβριος Νοέμβριος Δεκέμβριος"
-
-#: static/admin/js/calendar.js:27
-msgid "S M T W T F S"
-msgstr "Κ Δ Τ Τ Π Π Σ"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Εμφάνιση"
-
-#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Απόκρυψη"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:49
-#: static/admin/js/admin/DateTimeShortcuts.js:85
-msgid "Now"
-msgstr "Τώρα"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:53
-msgid "Clock"
-msgstr "Ρολόι"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:81
-msgid "Choose a time"
-msgstr "Διαλέξτε ώρα"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:86
-msgid "Midnight"
-msgstr "Μεσάνυχτα"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:87
-msgid "6 a.m."
-msgstr "6 π.μ."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Noon"
-msgstr "Μεσημέρι"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:92
-#: static/admin/js/admin/DateTimeShortcuts.js:204
-msgid "Cancel"
-msgstr "Άκυρο"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:144
-#: static/admin/js/admin/DateTimeShortcuts.js:197
-msgid "Today"
-msgstr "Σήμερα"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-msgid "Calendar"
-msgstr "Ημερολόγιο"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:195
-msgid "Yesterday"
-msgstr "Χθες"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Tomorrow"
-msgstr "Αύριο"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/django.mo
deleted file mode 100644
index a74825b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/django.po
deleted file mode 100644
index 8994d24..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,831 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2010-05-13 15:35+0200\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr ""
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr ""
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr ""
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr ""
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr ""
-
-#: filters.py:238
-msgid "Yes"
-msgstr ""
-
-#: filters.py:239
-msgid "No"
-msgstr ""
-
-#: filters.py:253
-msgid "Unknown"
-msgstr ""
-
-#: filters.py:308
-msgid "Any date"
-msgstr ""
-
-#: filters.py:309
-msgid "Today"
-msgstr ""
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr ""
-
-#: filters.py:317
-msgid "This month"
-msgstr ""
-
-#: filters.py:321
-msgid "This year"
-msgstr ""
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr ""
-
-#: helpers.py:23
-msgid "Action:"
-msgstr ""
-
-#: models.py:25
-msgid "action time"
-msgstr ""
-
-#: models.py:28
-msgid "object id"
-msgstr ""
-
-#: models.py:29
-msgid "object repr"
-msgstr ""
-
-#: models.py:30
-msgid "action flag"
-msgstr ""
-
-#: models.py:31
-msgid "change message"
-msgstr ""
-
-#: models.py:36
-msgid "log entry"
-msgstr ""
-
-#: models.py:37
-msgid "log entries"
-msgstr ""
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr ""
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr ""
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr ""
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:781
-msgid "No fields changed."
-msgstr ""
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr ""
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr ""
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-
-#: options.py:1037
-msgid "No action selected."
-msgstr ""
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr ""
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr ""
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr ""
-
-#: options.py:1257
-msgid "Database error"
-msgstr ""
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] ""
-msgstr[1] ""
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] ""
-msgstr[1] ""
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr ""
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr ""
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr ""
-
-#. Translators: Model verbose name and instance representation, suitable to be an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr ""
-
-#: sites.py:386
-msgid "Site administration"
-msgstr ""
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr ""
-
-#: widgets.py:90
-msgid "Date:"
-msgstr ""
-
-#: widgets.py:91
-msgid "Time:"
-msgstr ""
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr ""
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr ""
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr ""
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr ""
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr ""
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr ""
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr ""
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr ""
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr ""
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr ""
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr ""
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr ""
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr ""
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr ""
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr ""
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr ""
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr ""
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr ""
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr ""
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr ""
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr ""
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr ""
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr ""
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr ""
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr ""
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr ""
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr ""
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr ""
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr ""
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr ""
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr ""
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr ""
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr ""
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr ""
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr ""
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr ""
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr ""
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr ""
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr ""
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr ""
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr ""
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr ""
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr ""
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr ""
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr ""
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr ""
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr ""
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr ""
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr ""
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr ""
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr ""
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr ""
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr ""
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr ""
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr ""
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr ""
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr ""
-
-#: views/main.py:35
-msgid "(None)"
-msgstr ""
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr ""
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 08a7b68..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/djangojs.po
deleted file mode 100644
index c913eee..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/en/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,165 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2010-05-13 15:35+0200\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] ""
-msgstr[1] ""
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr ""
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr ""
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/en_GB/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/en_GB/LC_MESSAGES/django.mo
deleted file mode 100644
index 8c72844..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/en_GB/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/en_GB/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/en_GB/LC_MESSAGES/django.po
deleted file mode 100644
index 10af3e3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/en_GB/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,867 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# jon_atkinson <jon@jonatkinson.co.uk>, 2011-2012
-# Ross Poulton <ross@rossp.org>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
-"django/language/en_GB/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: en_GB\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Successfully deleted %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Cannot delete %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Are you sure?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Delete selected %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "All"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Yes"
-
-#: filters.py:239
-msgid "No"
-msgstr "No"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Unknown"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Any date"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Today"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Past 7 days"
-
-#: filters.py:317
-msgid "This month"
-msgstr "This month"
-
-#: filters.py:321
-msgid "This year"
-msgstr "This year"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Please log in again, because your session has expired."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Action:"
-
-#: models.py:25
-msgid "action time"
-msgstr "action time"
-
-#: models.py:28
-msgid "object id"
-msgstr "object id"
-
-#: models.py:29
-msgid "object repr"
-msgstr "object repr"
-
-#: models.py:30
-msgid "action flag"
-msgstr "action flag"
-
-#: models.py:31
-msgid "change message"
-msgstr "change message"
-
-#: models.py:36
-msgid "log entry"
-msgstr "log entry"
-
-#: models.py:37
-msgid "log entries"
-msgstr "log entries"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Added \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Changed \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Deleted \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "LogEntry Object"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "None"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Changed %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "and"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Added %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Changed %(list)s for %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Deleted %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "No fields changed."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "The %(name)s \"%(obj)s\" was added successfully."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "The %(name)s \"%(obj)s\" was changed successfully."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "No action selected."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Add %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s object with primary key %(key)r does not exist."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Change %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Database error"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s was changed successfully."
-msgstr[1] "%(count)s %(name)s were changed successfully."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s selected"
-msgstr[1] "All %(total_count)s selected"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 of %(cnt)s selected"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "The %(name)s \"%(obj)s\" was deleted successfully."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Change history: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Log in"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Site administration"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s administration"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Date:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Time:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Lookup"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Add Another"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Page not found"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "We're sorry, but the requested page could not be found."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Home"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Server error"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Server error (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Server Error <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Run the selected action"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Go"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Click here to select the objects across all pages"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Select all %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Clear selection"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Welcome,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Documentation"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Change password"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Log out"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django site admin"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administration"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Add"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "History"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "View on site"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Please correct the errors below."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Add %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filter"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Remove from sorting"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Sorting priority: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Toggle sorting"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Delete"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Yes, I'm sure"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Delete multiple objects"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " By %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Change"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "You don't have permission to edit anything."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Recent Actions"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "My Actions"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "None available"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Unknown content"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Password:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Forgotten your password or username?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Date/time"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "User"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Action"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Show all"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Save"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Search"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s result"
-msgstr[1] "%(counter)s results"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s total"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Save as new"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Save and add another"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Save and continue editing"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Enter a username and password."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Enter a new password for the user <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Password"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Password (again)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Enter the same password as above, for verification."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Remove"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Add another %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Delete?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Thanks for spending some quality time with the Web site today."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Log in again"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Password change"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Password change successful"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Your password was changed."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Old password"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "New password"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Change my password"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Password reset"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Password reset complete"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Your password has been set. You may go ahead and log in now."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Password reset confirmation"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Enter new password"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "New password:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Confirm password:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Password reset unsuccessful"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Password reset successful"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Please go to the following page and choose a new password:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Your username, in case you've forgotten:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Thanks for using our site!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "The %(site_name)s team"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Reset my password"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "All dates"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(None)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Select %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Select %s to change"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 4d60a8b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 5e05676..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/en_GB/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,184 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# jon_atkinson <jon@jonatkinson.co.uk>, 2012
-# Ross Poulton <ross@rossp.org>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
-"django/language/en_GB/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: en_GB\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Available %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Type into this box to filter down the list of available %s."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filter"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Choose all"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Click to choose all %s at once."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Choose"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Remove"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Chosen %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Remove all"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Click to remove all chosen %s at once."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s of %(cnt)s selected"
-msgstr[1] "%(sel)s of %(cnt)s selected"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"January February March April May June July August September October November "
-"December"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "S M T W T F S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Show"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Hide"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Now"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Clock"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Choose a time"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Midnight"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Noon"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Cancel"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Today"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Calendar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Yesterday"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Tomorrow"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/django.mo
deleted file mode 100644
index 8980b75..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/django.po
deleted file mode 100644
index a339ffa..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,890 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Baptiste <baptiste+transifex@darthenay.fr>, 2012-2013
-# Baptiste <baptiste+transifex@darthenay.fr>, 2013
-# Dinu Gherman <gherman@darwin.in-berlin.de>, 2011
-# kristjan <kristjan.schmidt@googlemail.com>, 2012
-# sagittarian <adam.raizen@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-13 16:01+0000\n"
-"Last-Translator: Baptiste <baptiste+transifex@darthenay.fr>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/"
-"language/eo/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Sukcese forigis %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Ne povas forigi %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Ĉu vi certas?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Forigi elektitajn %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Ĉio"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Jes"
-
-#: filters.py:239
-msgid "No"
-msgstr "Ne"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Nekonata"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Ajna dato"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Hodiaŭ"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Lastaj 7 tagoj"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Ĉi tiu monato"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Ĉi tiu jaro"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Bonvolu eniri la ĝustan %(username)s-n kaj pasvorton por personara konto. "
-"Notu, ke ambaŭ kampoj povas esti usklecodistinga."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Bonvolu ensaluti denove, ĉar via seanco senvalidiĝis."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Ago:"
-
-#: models.py:25
-msgid "action time"
-msgstr "aga tempo"
-
-#: models.py:28
-msgid "object id"
-msgstr "objekta identigaĵo"
-
-#: models.py:29
-msgid "object repr"
-msgstr "objekta prezento"
-
-#: models.py:30
-msgid "action flag"
-msgstr "aga marko"
-
-#: models.py:31
-msgid "change message"
-msgstr "ŝanĝmesaĝo"
-
-#: models.py:36
-msgid "log entry"
-msgstr "protokolero"
-
-#: models.py:37
-msgid "log entries"
-msgstr "protokoleroj"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" aldonita."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Ŝanĝita \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Forigita \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Protokolera objekto"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Neniu"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Ŝanĝita %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "kaj"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Aldonita %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Ŝanĝita %(list)s por %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Forigita %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Neniu kampo ŝanĝita."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"La %(name)s \"%(obj)s\" estis aldonita sukcese. Vi rajtas ĝin redakti denove "
-"sube."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"La %(name)s \"%(obj)s\" estis sukcese aldonita. Vi povas sube aldoni alian "
-"%(name)s-n."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "La %(name)s \"%(obj)s\" estis aldonita sukcese."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"La %(name)s \"%(obj)s\" estis sukcese ŝanĝita. Vi povas sube redakti ĝin "
-"denove."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"La %(name)s \"%(obj)s\" estis sukcese ŝanĝita. Vi povas sube aldoni alian "
-"%(name)s-n."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "La %(name)s \"%(obj)s\" estis ŝanĝita sukcese."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Elementoj devas esti elektitaj por elfari agojn sur ilin. Neniu elemento "
-"estis ŝanĝita."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Neniu ago elektita."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Aldoni %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s objekto kun ĉefŝlosilo %(key)r ne ekzistas."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Ŝanĝi %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Datumbaza eraro"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s estis sukcese ŝanĝita."
-msgstr[1] "%(count)s %(name)s estis sukcese ŝanĝitaj."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s elektitaj"
-msgstr[1] "Ĉiuj %(total_count)s elektitaj"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 el %(cnt)s elektita"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "La %(name)s \"%(obj)s\" estis forigita sukcese."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Ŝanĝa historio: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Forigi la %(class_name)s-n “%(instance)s” postulus forigi la sekvajn "
-"protektitajn rilatajn objektojn: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Ensaluti"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Reteja administrado"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s administrado"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Dato:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Horo:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Trarigardo"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Aldoni ankoraŭ unu"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Nuntempe:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Ŝanĝo:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Paĝo ne trovita"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Bedaŭrinde la petitan paĝon ne povas esti trovita."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Ĉefpaĝo"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Servila eraro"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Servila eraro (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Servila eraro <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Okazis eraro. Ĝi estis raportita al la retejaj administrantoj tra retpoŝto "
-"kaj baldaŭ devus esti riparita. Dankon por via pacienco."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Lanĉi la elektita agon"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Ek"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Klaku ĉi-tie por elekti la objektojn trans ĉiuj paĝoj"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Elekti ĉiuj %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Viŝi elekton"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Bonvenon,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentaro"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Ŝanĝi pasvorton"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Elsaluti"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Djanga reteja administrado"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Djanga administrado"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Aldoni"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Historio"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Vidi sur retejo"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Bonvolu ĝustigi la erarojn sube."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Bonvolu ĝustigi la erarojn sube."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Aldoni %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtri"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Forigi el ordigado"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Ordiga prioritato: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Ŝalti ordigadon"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Forigi"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Foriganti la %(object_name)s '%(escaped_object)s' rezultus en foriganti "
-"rilatajn objektojn, sed via konto ne havas permeson por forigi la sekvantajn "
-"tipojn de objektoj:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Forigi la %(object_name)s '%(escaped_object)s' postulus forigi la sekvajn "
-"protektitajn rilatajn objektojn:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Ĉu vi certas, ke vi volas forigi %(object_name)s \"%(escaped_object)s\"? "
-"Ĉiuj el la sekvaj rilataj eroj estos forigitaj:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Jes, mi certas"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Forigi plurajn objektojn"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Forigi la %(objects_name)s rezultus en forigi rilatajn objektojn, sed via "
-"konto ne havas permeson por forigi la sekvajn tipojn de objektoj:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Forigi la %(objects_name)s postulus forigi la sekvajn protektitajn rilatajn "
-"objektojn:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Ĉu vi certas, ke vi volas forigi la elektitajn %(objects_name)s? Ĉiuj el la "
-"sekvaj objektoj kaj iliaj rilataj eroj estos forigita:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Laŭ %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modeloj en la %(name)s aplikaĵo"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Ŝanĝi"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Vi ne havas permeson por redakti ĉion ajn."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Lastaj agoj"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Miaj agoj"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Neniu disponebla"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Nekonata enhavo"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Io malbonas en via datumbaza instalo. Bonvolu certigi ke la konvenaj tabeloj "
-"de datumbazo estis kreitaj, kaj ke la datumbazo estas legebla per la ĝusta "
-"uzanto."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Pasvorto:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Ĉu vi forgesis vian pasvorton aŭ salutnomo?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Dato/horo"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Uzanto"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Ago"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Ĉi tiu objekto ne havas ŝanĝ-historion. Eble ĝi ne estis aldonita per la "
-"administranta retejo."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Montri ĉion"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Konservi"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Serĉu"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s resulto"
-msgstr[1] "%(counter)s resultoj"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s entute"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Konservi kiel novan"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Konservi kaj aldoni alian"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Konservi kaj daŭre redakti"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Unue, bovolu tajpi salutnomon kaj pasvorton. Tiam, vi povos redakti pli da "
-"uzantaj agordoj."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Enigu salutnomon kaj pasvorton."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Enigu novan pasvorton por la uzanto <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Pasvorto"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Pasvorto (denove)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Entajpu la saman pasvorton kiel supre, por konfirmo."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Forigu"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Aldoni alian %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Forviŝi?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Dankon pro pasigo de kvalita tempon kun la retejo hodiaŭ."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Ensaluti denove"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Pasvorta ŝanĝo"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Pasvorto sukcese ŝanĝita"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Via pasvorto estis sukcese ŝanĝita."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Bonvolu enigi vian malnovan pasvorton, pro sekureco, kaj tiam enigi vian "
-"novan pasvorton dufoje, tiel ni povas konfirmi ke vi ĝuste tajpis ĝin."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Malnova pasvorto"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nova pasvorto"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Ŝanĝi mian passvorton"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Pasvorta rekomencigo"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Pasvorta rekomencigo plenumita"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Via pasvorto estis ŝanĝita. Vi povas iri antaŭen kaj ensaluti nun."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Pasvorta rekomenciga konfirmo"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Enigu novan pasvorton"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Bonvolu entajpi vian novan pasvorton dufoje, tiel ni povas konfirmi ke vi "
-"ĝuste tajpis ĝin."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nova pasvorto:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Konfirmi pasvorton:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Pasvorta rekomencigo malsuksesis"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"La pasvorta rekomenciga ligo malvalidis, eble ĉar ĝi jam estis uzata. "
-"Bonvolu peti novan pasvortan rekomencigon."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Pasvorta rekomencigo suksesis"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Ni retpoŝte sendis al vi instrukciojn por agordi la pasvorton al la retpoŝto "
-"vi sendis. Vi baldaŭ devus ĝin ricevi."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Se vi ne ricevas retpoŝton, bonvolu certigi vin eniris la adreson kun kiu vi "
-"registris, kaj kontroli vian spaman dosierujon."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Vi ricevis ĉi tiun retpoŝton ĉar vi petis pasvortan rekomencigon por via "
-"uzanta konto ĉe %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Bonvolu iri al la sekvanta paĝo kaj elekti novan pasvorton:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Via salutnomo, se vi forgesis:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Dankon pro uzo de nia retejo!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "La %(site_name)s teamo"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Vi forgesis vian pasvorton? Malsupre enigu vian retpoŝtan adreson kaj ni "
-"retpoŝte sendos instrukciojn por agordi novan."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Retpoŝto:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Rekomencigi mian pasvorton"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Ĉiuj datoj"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Neniu)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Elekti %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Elekti %s por ŝanĝi"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index c90b26e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 885abeb..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/eo/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,185 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Baptiste <baptiste+transifex@darthenay.fr>, 2012
-# Jaffa McNeill <jaffa.mcneill@gmail.com>, 2011
-# sagittarian <adam.raizen@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/"
-"language/eo/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Disponebla %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Tio ĉi estas la listo de disponeblaj %s. Vi povas forigi kelkajn elektante "
-"ilin en la suba skatolo kaj tiam klakante la \"Elekti\" sagon inter la du "
-"skatoloj."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Entipu en ĉi-tiu skatolo por filtri la liston de haveblaj %s."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtru"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Elekti ĉiuj"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Klaku por tuj elekti ĉiuj %s."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Elekti"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Forigu"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Elektita %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Tio ĉi estas la listo de elektitaj %s. Vi povas forigi kelkajn elektante "
-"ilin en la suba skatolo kaj tiam klakante la \"Forigi\" sagon inter la du "
-"skatoloj."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Forigu ĉiujn"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Klaku por tuj forigi ĉiujn %s elektitajn."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s de %(cnt)s elektita"
-msgstr[1] "%(sel)s de %(cnt)s elektitaj"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Vi havas neŝirmitajn ŝanĝojn je unuopaj redakteblaj kampoj. Se vi faros "
-"agon, viaj neŝirmitaj ŝanĝoj perdiĝos."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Vi elektas agon, sed vi ne ŝirmis viajn ŝanĝojn al individuaj kampoj ĝis "
-"nun. Bonvolu klaku BONA por ŝirmi. Vi devos ripeton la agon"
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Vi elektas agon, kaj vi ne faris ajnajn ŝanĝojn ĉe unuopaj kampoj. Vi "
-"verŝajne serĉas la Iru-butonon prefere ol la Ŝirmu-butono."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Januaro Februaro Marto Aprilo Majo Junio Julio Aŭgusto Septembro Oktobro "
-"Novembro Decembro"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "D L M M Ĵ V S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Montru"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Kaŝu"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Nun"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Horloĝo"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Elektu tempon"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Noktomezo"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 a.t.m."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Tagmezo"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Malmendu"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Hodiaŭ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalendaro"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Hieraŭ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Morgaŭ"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/es/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/es/LC_MESSAGES/django.mo
deleted file mode 100644
index 166d1ec..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/es/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/es/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/es/LC_MESSAGES/django.po
deleted file mode 100644
index 3a4c5b0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/es/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,900 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antoni Aloy <aaloy@apsl.net>, 2011-2013
-# franchukelly <inactive+franchukelly@transifex.com>, 2011
-# guillem <serra.guillem@gmail.com>, 2012
-# Igor Támara <igor@tamarapatino.org>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Marc Garcia <garcia.marc@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-09-04 20:35+0000\n"
-"Last-Translator: Antoni Aloy <aaloy@apsl.net>\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/django/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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Eliminado/s %(count)d %(items)s satisfactoriamente."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "No se puede eliminar %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "¿Está seguro?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Eliminar %(verbose_name_plural)s seleccionado/s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Todo"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Sí"
-
-#: filters.py:239
-msgid "No"
-msgstr "No"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Desconocido"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Cualquier fecha"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Hoy"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Últimos 7 días"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Este mes"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Este año"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Por favor introduce el %(username)s y la clave correctos para una cuenta de "
-"personal. Observa que campos pueden ser sensibles a mayúsculas."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Por favor, inicie sesión de nuevo, ya que su sesión ha caducado."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Acción:"
-
-#: models.py:25
-msgid "action time"
-msgstr "hora de acción"
-
-#: models.py:28
-msgid "object id"
-msgstr "id de objeto"
-
-#: models.py:29
-msgid "object repr"
-msgstr "repr de objeto"
-
-#: models.py:30
-msgid "action flag"
-msgstr "marca de acción"
-
-#: models.py:31
-msgid "change message"
-msgstr "mensaje de cambio"
-
-#: models.py:36
-msgid "log entry"
-msgstr "entrada de registro"
-
-#: models.py:37
-msgid "log entries"
-msgstr "entradas de registro"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Añadidos \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Cambiados \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Eliminados \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Objeto de registro de Log"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Ninguno"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Modificado/a %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "y"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Añadido/a \"%(object)s\" %(name)s."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Modificados %(list)s para \"%(object)s\" %(name)s."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Eliminado/a \"%(object)s\" %(name)s."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "No ha cambiado ningún campo."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Se añadió con éxito el %(name)s \"%(obj)s. Puede editarlo de nuevo abajo."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"El %(name)s \"%(obj)s\" fue añadido satisfactoriamente. Puedes añadir otro "
-"%(name)s a continuación."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Se añadió con éxito el %(name)s \"%(obj)s\"."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"El %(name)s \"%(obj)s\" fue cambiado satisfactoriamente. Puedes editarlo "
-"otra vez a continuación."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"El %(name)s \"%(obj)s\" fue cambiado satisfactoriamente. Puedes añadir otro "
-"%(name)s a continuación."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Se modificó con éxito el %(name)s \"%(obj)s\"."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Se deben seleccionar elementos para poder realizar acciones sobre estos. No "
-"se han modificado elementos."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "No se seleccionó ninguna acción."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Añadir %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "No existe ningún objeto %(name)s con la clave primaria %(key)r."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Modificar %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Error en la base de datos"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s fué modificado con éxito."
-msgstr[1] "%(count)s %(name)s fueron modificados con éxito."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s seleccionado"
-msgstr[1] "Todos %(total_count)s seleccionados"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "seleccionados 0 de %(cnt)s"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Se eliminó con éxito el %(name)s \"%(obj)s\"."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Histórico de modificaciones: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"La eliminación de %(object_name)s %(escaped_object)s requeriría eliminar los "
-"siguientes objetos relacionados protegidos:"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Iniciar sesión"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Sitio administrativo"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Administración de %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Fecha:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Hora:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Buscar"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Añadir otro"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Actualmente:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Cambiar:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Página no encontrada"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Lo sentimos, pero no se encuentra la página solicitada."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Inicio"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Error del servidor"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Error del servidor (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Error de servidor <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Ha habido un error. Ha sido comunicado al administrador del sitio por correo "
-"electrónico y debería solucionarse a la mayor brevedad. Gracias por tu "
-"paciencia y comprensión."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Ejecutar la acción seleccionada"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Ir"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Pulse aquí para seleccionar los objetos a través de todas las páginas"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Seleccionar todos los %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Limpiar selección"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Bienvenido/a,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Documentación"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Cambiar contraseña"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Terminar sesión"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Sitio de administración de Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administración de Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Añadir"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Histórico"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Ver en el sitio"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Por favor, corrija los siguientes errores."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Por favor, corrija los siguientes errores."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Añadir %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtro"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Elimina de la ordenación"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Prioridad de la ordenación: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Activar la ordenación"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Eliminar"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Eliminar el %(object_name)s '%(escaped_object)s' provocaría la eliminación "
-"de objetos relacionados, pero su cuenta no tiene permiso para borrar los "
-"siguientes tipos de objetos:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"La eliminación de %(object_name)s %(escaped_object)s requeriría eliminar los "
-"siguientes objetos relacionados protegidos:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"¿Está seguro de que quiere borrar los %(object_name)s \"%(escaped_object)s"
-"\"? Se borrarán los siguientes objetos relacionados:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Sí, estoy seguro"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Eliminar múltiples objetos."
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"La eliminación del %(objects_name)s seleccionado resultaría en el borrado de "
-"objetos relacionados, pero su cuenta no tiene permisos para borrar los "
-"siguientes tipos de objetos:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"La eliminación de %(objects_name)s seleccionado requeriría el borrado de los "
-"siguientes objetos protegidos relacionados:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"¿Está usted seguro que quiere eliminar el %(objects_name)s seleccionado? "
-"Todos los siguientes objetos y sus elementos relacionados serán borrados:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Por %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modelos en la aplicación %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Modificar"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "No tiene permiso para editar nada."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Acciones recientes"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Mis acciones"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Ninguno disponible"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Contenido desconocido"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Algo va mal con la instalación de la base de datos. Asegúrese que las tablas "
-"necesarias han sido creadas, y que la base de datos puede ser leída por el "
-"usuario apropiado."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Contraseña:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "¿Olvidaste la contraseña o el nombre de usuario?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Fecha/hora"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Usuario"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Acción"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Este objeto no tiene histórico de cambios. Probablemente no fue añadido "
-"usando este sitio de administración."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Mostrar todo"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Grabar"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Buscar"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s resultado"
-msgstr[1] "%(counter)s resultados"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s total"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Grabar como nuevo"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Grabar y añadir otro"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Grabar y continuar editando"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Primero introduzca un nombre de usuario y una contraseña. Luego podrá editar "
-"el resto de opciones del usuario."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Entre un nombre de usuario y contraseña"
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Introduzca una nueva contraseña para el usuario <strong>%(username)s</"
-"strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Contraseña"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Contraseña (de nuevo)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Introduzca la misma contraseña que arriba, para verificación."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Eliminar"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Agregar %(verbose_name)s adicional."
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "¿Eliminar?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Gracias por el tiempo que ha dedicado hoy al sitio web."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Iniciar sesión de nuevo"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Cambio de contraseña"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Cambio de contraseña exitoso"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Su contraseña ha sido cambiada."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Por favor, introduzca su contraseña antigua, por seguridad, y después "
-"introduzca la nueva contraseña dos veces para verificar que la ha escrito "
-"correctamente."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Contraseña antigua"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Contraseña nueva"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Cambiar mi contraseña"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Restablecer contraseña"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Restablecimiento de contraseña completado"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-"Su contraseña ha sido establecida. Ahora puede seguir adelante e iniciar "
-"sesión."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Confirmación de restablecimiento de contraseña"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Introduzca una nueva contraseña"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Por favor, introduzca su contraseña nueva dos veces para verificar que la ha "
-"escrito correctamente."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Contraseña nueva:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Confirme contraseña:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Restablecimiento de contraseña fallido"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"El enlace de restablecimiento de contraseña era invalido, seguramente por "
-"haberse utilizado previamente. Por favor, solicite un nuevo restablecimiento "
-"de contraseña."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Restablecimiento de contraseña exitoso"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Le hemos enviado por correo electrónico sus instrucciones para restablecer "
-"la contraseña a la dirección de correo que indicó. Debería recibirlas en "
-"breve."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Si no recibe un correo, por favor asegúrese que ha introducido la dirección "
-"de correo con la que se registró y verifique su carpeta de spam."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Recibes este correo electrónico porqué has solicitado restablecer tu clave "
-"para tu cuenta en %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Por favor, vaya a la página siguiente y escoja una nueva contraseña."
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Su nombre de usuario, en caso de haberlo olvidado:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "¡Gracias por usar nuestro sitio!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "El equipo de %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"¿Has olvidado tu clave? Introduce tu dirección de correo a continuación y te "
-"enviaremos por correo electrónico las instrucciones para establecer una "
-"nueva."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Correo electrónico:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Restablecer mi contraseña"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Todas las fechas"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Nada)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Escoja %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Escoja %s a modificar"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/es/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/es/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 7a1d6e2..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/es/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/es/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/es/LC_MESSAGES/djangojs.po
deleted file mode 100644
index aee96e9..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/es/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,187 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antoni Aloy <aaloy@apsl.net>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/django/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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s Disponibles"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Esta es la lista de %s disponibles. Puedes elegir algunos seleccionándolos "
-"en la caja inferior y luego haciendo clic en la flecha \"Elegir\" que hay "
-"entre las dos cajas."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Escribe en este cuadro para filtrar la lista de %s disponibles"
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtro"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Selecciona todos"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Haz clic para seleccionar todos los %s de una vez"
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Elegir"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Remover"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s Elegidos"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Esta es la lista de los %s elegidos. Puedes elmininar algunos "
-"seleccionándolos en la caja inferior y luego haciendo click en la flecha "
-"\"Eliminar\" que hay entre las dos cajas."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Eliminar todos"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Haz clic para eliminar todos los %s elegidos"
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s de %(cnt)s seleccionado"
-msgstr[1] "%(sel)s de %(cnt)s seleccionados"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Tienes cambios sin guardar en campos editables individuales. Si ejecutas una "
-"acción, los cambios no guardados se perderán."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Has seleccionado una acción, pero no has guardado los cambios en los campos "
-"individuales todavía. Pulsa OK para guardar. Tendrás que volver a ejecutar "
-"la acción."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Has seleccionado una acción y no has hecho ningún cambio en campos "
-"individuales. Probablemente estés buscando el botón Ejecutar en lugar del "
-"botón Guardar."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Enero Febrero Marzo Abril Mayo Junio Julio Agosto Septiembre Octubre "
-"Noviembre Diciembre"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "D L M M J V S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Mostrar"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Esconder"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Ahora"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Reloj"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Elige una hora"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Medianoche"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Mediodía"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Hoy"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Calendario"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Ayer"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Mañana"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo
deleted file mode 100644
index 0a5fc71..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po
deleted file mode 100644
index 028f1a0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,900 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# ljguzman <ljguzman@gmail.com>, 2013
-# Ramiro Morales <cramm0@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-05 09:34+0000\n"
-"Last-Translator: Ramiro Morales <cramm0@gmail.com>\n"
-"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
-"django/language/es_AR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_AR\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Se eliminaron con éxito %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "No se puede eliminar %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "¿Está seguro?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Eliminar %(verbose_name_plural)s seleccionados/as"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Todos/as"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Sí"
-
-#: filters.py:239
-msgid "No"
-msgstr "No"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Desconocido"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Cualquier fecha"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Hoy"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Últimos 7 días"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Este mes"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Este año"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Por favor introduza %(username)s y contraseña correctos de una cuenta de "
-"staff. Note que puede que ambos campos sean estrictos en relación a "
-"diferencias entre mayúsculas y minúsculas."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Por favor, identifíquese de nuevo porque su sesión ha caducado."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Acción:"
-
-#: models.py:25
-msgid "action time"
-msgstr "hora de la acción"
-
-#: models.py:28
-msgid "object id"
-msgstr "id de objeto"
-
-#: models.py:29
-msgid "object repr"
-msgstr "repr de objeto"
-
-#: models.py:30
-msgid "action flag"
-msgstr "marca de acción"
-
-#: models.py:31
-msgid "change message"
-msgstr "mensaje de cambio"
-
-#: models.py:36
-msgid "log entry"
-msgstr "entrada de registro"
-
-#: models.py:37
-msgid "log entries"
-msgstr "entradas de registro"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Se agrega \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Se modifica \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Se elimina \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Objeto LogEntry"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Ninguno"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Modifica %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "y"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Se agregó %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Se modificaron %(list)s en %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Se eliminó %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "No ha modificado ningún campo."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Se agregó con éxito %(name)s \"%(obj)s\". Puede modificarlo/a nuevamente "
-"abajo."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"Se agregó con éxito %(name)s \"%(obj)s\". Puede agregar otro %(name)s abajo."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Se agregó con éxito %(name)s \"%(obj)s\"."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"Se modificó con éxito %(name)s \"%(obj)s\". Puede modificarlo/a nuevamente "
-"abajo."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"Se modificó con éxito %(name)s \"%(obj)s\". Puede agregar otro %(name)s "
-"abajo."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Se modificó con éxito %(name)s \"%(obj)s\"."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Deben existir items seleccionados para poder realizar acciones sobre los "
-"mismos. No se modificó ningún item."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "No se ha seleccionado ninguna acción."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Agregar %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "No existe un objeto %(name)s con una clave primaria %(key)r."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Modificar %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Error de base de datos"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "Se ha modificado con éxito %(count)s %(name)s."
-msgstr[1] "Se han modificado con éxito %(count)s %(name)s."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s seleccionados/as"
-msgstr[1] "Todos/as (%(total_count)s en total) han sido seleccionados/as"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 de %(cnt)s seleccionados/as"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Se eliminó con éxito %(name)s \"%(obj)s\"."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Historia de modificaciones: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"La eliminación de %(class_name)s %(instance)s provocaría la eliminación de "
-"los siguientes objetos relacionados protegidos: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Identificarse"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Administración de sitio"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Administración de %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Fecha:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Hora:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Buscar"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Agregar otro/a"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Actualmente:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Cambiar:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Página no encontrada"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Lo sentimos, pero no se encuentra la página solicitada."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Inicio"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Error del servidor"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Error del servidor (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Error de servidor <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Ha ocurrido un error. Se ha reportado el mismo a los administradores del "
-"sitio vía email y debería ser solucionado en breve. Le damos gracias por su "
-"paciencia."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Ejecutar la acción seleccionada"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Ejecutar"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Haga click aquí para seleccionar los objetos de todas las páginas"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Seleccionar lo(s)/a(s) %(total_count)s %(module_name)s existentes"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Borrar selección"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Bienvenido/a,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Documentación"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Cambiar contraseña"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Cerrar sesión"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Administración de sitio Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administración de Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Agregar"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Historia"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Ver en el sitio"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Por favor, corrija los siguientes errores."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Por favor corrija los errores detallados abajo."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Agregar %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtrar"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Remover de ordenamiento"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Prioridad de ordenamiento: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "(des)activar ordenamiento"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Eliminar"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Eliminar el %(object_name)s '%(escaped_object)s' provocaría la eliminación "
-"de objetos relacionados, pero su cuenta no tiene permiso para eliminar los "
-"siguientes tipos de objetos:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Eliminar los %(object_name)s '%(escaped_object)s' requeriría eliminar "
-"también los siguientes objetos relacionados protegidos:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"¿Está seguro de que desea eliminar los %(object_name)s \"%(escaped_object)s"
-"\"? Se eliminarán los siguientes objetos relacionados:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Sí, estoy seguro"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Eliminar múltiples objetos"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Eliminar el/los objetos %(objects_name)s seleccionados provocaría la "
-"eliminación de objetos relacionados a los mismos, pero su cuenta de usuario "
-"no tiene los permisos necesarios para eliminar los siguientes tipos de "
-"objetos:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Eliminar el/los objetos %(objects_name)s seleccionados requeriría eliminar "
-"también los siguientes objetos relacionados protegidos:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"¿Está seguro de que desea eliminar el/los objetos %(objects_name)s?. Todos "
-"los siguientes objetos e items relacionados a los mismos también serán "
-"eliminados:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Por %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modelos en la aplicación %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Modificar"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "No tiene permiso para editar nada."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Acciones recientes"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Mis acciones"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Ninguna disponible"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Contenido desconocido"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Hay algún problema con su instalación de base de datos. Asegúrese de que las "
-"tablas de la misma hayan sido creadas, y asegúrese de que el usuario "
-"apropiado tenga permisos de lectura en la base de datos."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Contraseña:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "¿Olvidó su contraseña o nombre de usuario?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Fecha/hora"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Usuario"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Acción"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Este objeto no tiene historia de modificaciones. Probablemente no fue "
-"añadido usando este sitio de administración."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Mostrar todos/as"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Guardar"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Buscar"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s resultado"
-msgstr[1] "%(counter)s resultados"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "total: %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Guardar como nuevo"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Guardar y agregar otro"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Guardar y continuar editando"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Primero introduzca un nombre de usuario y una contraseña. Luego podrá "
-"configurar opciones adicionales acerca del usuario."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Introduzca un nombre de usuario y una contraseña."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Introduzca una nueva contraseña para el usuario <strong>%(username)s</"
-"strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Contraseña"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Contraseña (de nuevo)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr ""
-"Para verificación, introduzca la misma contraseña que introdujo arriba."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Eliminar"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Agregar otro/a %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "¿Eliminar?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Gracias por el tiempo que ha dedicado al sitio web hoy."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Identificarse de nuevo"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Cambio de contraseña"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Cambio de contraseña exitoso"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Su contraseña ha sido cambiada."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Por favor, por razones de seguridad, introduzca primero su contraseña "
-"antigua y luego introduzca la nueva contraseña dos veces para verificar que "
-"la ha escrito correctamente."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Contraseña antigua"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Contraseña nueva"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Cambiar mi contraseña"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Recuperar contraseña"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Reinicialización de contraseña completada"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Su contraseña ha sido cambiada. Ahora puede continuar e ingresar."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Confirmación de reincialización de contraseña"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Introduzca la nueva contraseña"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Por favor introduzca su nueva contraseña dos veces de manera que podamos "
-"verificar que la ha escrito correctamente."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Contraseña nueva:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Confirme contraseña:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Reinicialización de contraseña fallida"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"El enlace de reinicialización de contraseña es inválido, posiblemente debido "
-"a que ya ha sido usado. Por favor solicite una nueva reinicialización de "
-"contraseña."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Recuperación de contraseña exitosa"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Se le han enviado intrucciones sobre como establecer su contraseña. Debería "
-"recibir las mismas pronto."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Si no ha recibido un email, por favor asegúrese de que ha introducido la "
-"dirección de correo con la que se había registrado y verifique su carpeta de "
-"Correo no deseado."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Le enviamos este email porque Ud. ha solicitado que se reestablezca la "
-"contraseña para su cuenta de usuario en %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-"Por favor visite la página que se muestra a continuación y elija una nueva "
-"contraseña:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Su nombre de usuario, en caso de haberlo olvidado:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "¡Gracias por usar nuestro sitio!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "El equipo de %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"¿Olvidó su contraseña? Introduzca su dirección de email abajo y le "
-"enviaremos instrucciones para establecer una nueva."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Dirección de email:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Recuperar mi contraseña"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Todas las fechas"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Ninguno/a)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Seleccione %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Seleccione %s a modificar"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 53f122c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.po
deleted file mode 100644
index ed04823..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/es_AR/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,185 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
-"django/language/es_AR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_AR\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s disponibles"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Esta es la lista de %s disponibles. Puede elegir algunos/as seleccionándolos/"
-"as en el cuadro de abajo y luego haciendo click en la flecha \"Seleccionar\" "
-"ubicada entre las dos listas."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Escriba en esta caja para filtrar la lista de %s disponibles."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtro"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Seleccionar todos/as"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Haga click para seleccionar todos/as los/as %s."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Seleccionar"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Eliminar"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s seleccionados/as"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Esta es la lista de %s seleccionados. Puede deseleccionar algunos de ellos "
-"activándolos en la lista de abajo y luego haciendo click en la flecha "
-"\"Eliminar\" ubicada entre las dos listas."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Eliminar todos/as"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Haga clic para deselecionar todos/as los/as %s."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s de %(cnt)s seleccionado/a"
-msgstr[1] "%(sel)s de %(cnt)s seleccionados/as"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Tiene modificaciones sin guardar en campos modificables individuales. Si "
-"ejecuta una acción las mismas se perderán."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Ha seleccionado una acción, pero todavía no ha grabado las modificaciones "
-"que ha realizado en campos individuales. Por favor haga click en Aceptar "
-"para grabarlas. Necesitará ejecutar la acción nuevamente."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Ha seleccionado una acción pero no ha realizado ninguna modificación en "
-"campos individuales. Es probable que lo que necesite usar en realidad sea el "
-"botón Ejecutar y no el botón Guardar."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Enero Febrero Marzo Abril Mayo Junio Julio Agosto Setiembre Octubre "
-"Noviembre Diciembre"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "D L M M J V S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Mostrar"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Ocultar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Ahora"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Reloj"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Elija una hora"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Medianoche"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Mediodía"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Hoy"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Calendario"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Ayer"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Mañana"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/es_MX/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/es_MX/LC_MESSAGES/django.mo
deleted file mode 100644
index d241d19..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/es_MX/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/es_MX/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/es_MX/LC_MESSAGES/django.po
deleted file mode 100644
index 45fe957..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/es_MX/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,893 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Abraham Estrada <abraham.estrada@gmail.com>, 2011-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-06 21:49+0000\n"
-"Last-Translator: Abraham Estrada <abraham.estrada@gmail.com>\n"
-"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/"
-"language/es_MX/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_MX\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Se eliminaron con éxito %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "No se puede eliminar %(name)s "
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "¿Está seguro?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Eliminar %(verbose_name_plural)s seleccionados/as"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Todos/as"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Sí"
-
-#: filters.py:239
-msgid "No"
-msgstr "No"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Desconocido"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Cualquier fecha"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Hoy"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Últimos 7 días"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Este mes"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Este año"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Por favor introduza %(username)s y contraseña correctos de una cuenta de "
-"staff. Note que puede que ambos campos sean estrictos en relación a "
-"diferencias entre mayúsculas y minúsculas."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Por favor, identifíquese de nuevo porque su sesión ha expirado."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Acción:"
-
-#: models.py:25
-msgid "action time"
-msgstr "hora de la acción"
-
-#: models.py:28
-msgid "object id"
-msgstr "id de objeto"
-
-#: models.py:29
-msgid "object repr"
-msgstr "repr de objeto"
-
-#: models.py:30
-msgid "action flag"
-msgstr "marca de acción"
-
-#: models.py:31
-msgid "change message"
-msgstr "mensaje de cambio"
-
-#: models.py:36
-msgid "log entry"
-msgstr "entrada de registro"
-
-#: models.py:37
-msgid "log entries"
-msgstr "entradas de registro"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Añadidos \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Modificados \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Eliminados \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Objeto de registro de Log"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Ninguno"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Modifica %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "y"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Se agregó %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Se modificaron %(list)s en %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Se eliminó %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "No ha modificado ningún campo."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Se agregó con éxito %(name)s \"%(obj)s\". Puede modificarlo/a nuevamente "
-"abajo."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"Se agregó con éxito %(name)s \"%(obj)s\". Puede agregar otro %(name)s abajo."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Se agregó con éxito %(name)s \"%(obj)s\"."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"Se modificó con éxito %(name)s \"%(obj)s\". Puede modificarlo/a nuevamente "
-"abajo."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"Se modificó con éxito %(name)s \"%(obj)s\". Puede agregar otro %(name)s "
-"abajo."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Se modificó con éxito %(name)s \"%(obj)s\"."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Deben existir items seleccionados para poder realizar acciones sobre los "
-"mismos. No se modificó ningún item."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "No se ha seleccionado ninguna acción."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Agregar %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "No existe un objeto %(name)s con una clave primaria %(key)r."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Modificar %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Error en la base de datos"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "Se ha modificado con éxito %(count)s %(name)s."
-msgstr[1] "Se han modificado con éxito %(count)s %(name)s."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s seleccionados/as"
-msgstr[1] "Todos/as (%(total_count)s en total) han sido seleccionados/as"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 de %(cnt)s seleccionados/as"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Se eliminó con éxito %(name)s \"%(obj)s\"."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Historia de modificaciones: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"La eliminación de %(class_name)s %(instance)s provocaría la eliminación de "
-"los siguientes objetos relacionados protegidos: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Identificarse"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Administración del sitio"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Administración de %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Fecha:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Hora:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Buscar"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Agregar otro/a"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Actualmente:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Modificar:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Página no encontrada"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Lo sentimos, pero no se encuentra la página solicitada."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Inicio"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Error del servidor"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Error del servidor (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Error de servidor <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Ha habido un error. Se ha informado a los administradores del sitio a través "
-"de correo electrónico y debe ser reparado en breve. Gracias por su paciencia."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Ejecutar la acción seleccionada"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Ejecutar"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Haga click aquí para seleccionar los objetos de todas las páginas"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Seleccionar lo(s)/a(s) %(total_count)s de %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Borrar selección"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Bienvenido,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Documentación"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Cambiar contraseña"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Cerrar sesión"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Sitio de administración de Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administración de Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Agregar"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Historia"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Ver en el sitio"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Por favor, corrija los siguientes errores."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Por favor, corrija los siguientes errores."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Agregar %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtrar"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Elimina de la clasificación"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Prioridad de la clasificación: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Activar la clasificación"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Eliminar"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Eliminar el %(object_name)s '%(escaped_object)s' provocaría la eliminación "
-"de objetos relacionados, pero su cuenta no tiene permiso para eliminar los "
-"siguientes tipos de objetos:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Para eliminar %(object_name)s '%(escaped_object)s' requiere eliminar los "
-"siguientes objetos relacionados protegidos:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"¿Está seguro de que quiere eliminar los %(object_name)s \"%(escaped_object)s"
-"\"? Se eliminarán los siguientes objetos relacionados:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Sí, estoy seguro"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Eliminar múltiples objetos"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Para eliminar %(objects_name)s requiere eliminar los objetos relacionado, "
-"pero tu cuenta no tiene permisos para eliminar los siguientes tipos de "
-"objetos:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Eliminar el seleccionado %(objects_name)s requiere eliminar los siguientes "
-"objetos relacionados protegidas:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"¿Está seguro que desea eliminar el seleccionado %(objects_name)s ? Todos los "
-"objetos siguientes y sus elementos asociados serán eliminados:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Por %(filter_title)s"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modelos en la aplicación %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Modificar"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "No tiene permiso para editar nada"
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Acciones recientes"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Mis acciones"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Ninguna disponible"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Contenido desconocido"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Hay algún problema con su instalación de base de datos. Asegúrese de que las "
-"tablas de la misma hayan sido creadas, y asegúrese de que el usuario "
-"apropiado tenga permisos de lectura en la base de datos."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Contraseña:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "¿Ha olvidado su contraseña o nombre de usuario?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Fecha/hora"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Usuario"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Acción"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Este objeto no tiene historia de modificaciones. Probablemente no fue "
-"añadido usando este sitio de administración."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Mostrar todos/as"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Guardar"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Buscar"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s results"
-msgstr[1] "%(counter)s resultados"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "total: %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Guardar como nuevo"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Guardar y agregar otro"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Guardar y continuar editando"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Primero introduzca un nombre de usuario y una contraseña. Luego podrá "
-"configurar opciones adicionales acerca del usuario."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Introduzca un nombre de usuario y una contraseña."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Introduzca una nueva contraseña para el usuario <strong>%(username)s</"
-"strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Contraseña"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Contraseña (de nuevo)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Para verificar, introduzca la misma contraseña que introdujo arriba."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Eliminar"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Agregar otro/a %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Eliminar?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Gracias por el tiempo que ha dedicado al sitio web hoy."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Identificarse de nuevo"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Cambio de contraseña"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Cambio de contraseña exitoso"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Su contraseña ha sido cambiada."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Por favor, por razones de seguridad, introduzca primero su contraseña "
-"antigua y luego introduzca la nueva contraseña dos veces para verificar que "
-"la ha escrito correctamente."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Contraseña anterior"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nueva contraseña"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Cambiar mi contraseña"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Recuperar contraseña"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Reinicialización de contraseña completada"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Se le ha enviado su contraseña. Ahora puede continuar e ingresar."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Confirmación de reincialización de contraseña"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Introduzca la nueva contraseña"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Por favor introduzca su nueva contraseña dos veces de manera que podamos "
-"verificar que la ha escrito correctamente."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nueva contraseña:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Confirme contraseña:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Reinicialización de contraseña no exitosa"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"El enlace de reinicialización de contraseña es inválido, posiblemente debido "
-"a que ya ha sido usado. Por favor solicite una nueva reinicialización de "
-"contraseña."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Recuperación de contraseña exitosa"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Le hemos enviado un correo electrónico con las instrucciones para configurar "
-"la contraseña. Usted debe recibirlo en cualquier momento."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Si usted no recibe un correo electrónico, por favor, asegúrese de que ha "
-"introducido la dirección con la que se registró, y revise su carpeta de spam."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Usted está recibiendo este correo electrónico porque ha solicitado un "
-"restablecimiento de contraseña para la cuenta de usuario en %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-"Por favor visite la página que se muestra a continuación y elija una nueva "
-"contraseña:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Su nombre de usuario, en caso de haberlo olvidado:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "¡Gracias por usar nuestro sitio!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "El equipo de %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"¿Olvidó su contraseña? Ingrese su dirección de correo electrónico, y le "
-"enviaremos las instrucciones para establecer una nueva."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Correo electrónico:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Recuperar mi contraseña"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Todas las fechas"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Ninguno)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Seleccione %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Seleccione %s a modificar"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index dfd4c50..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 882e579..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/es_MX/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,185 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Abraham Estrada <abraham.estrada@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/"
-"language/es_MX/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_MX\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Disponible %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Esta es la lista de los %s disponibles. Usted puede elegir algunos "
-"seleccionándolos en el cuadro de abajo y haciendo click en la flecha "
-"\"Seleccionar\" entre las dos cajas."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Escriba en esta casilla para filtrar la lista de %s disponibles."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtro"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Seleccionar todos"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Da click para seleccionar todos los %s de una vez."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Seleccionar"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Quitar"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s seleccionados"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Esta es la lista de los %s elegidos. Usted puede eliminar algunos "
-"seleccionándolos en el cuadro de abajo y haciendo click en la flecha "
-"\"Eliminar\" entre las dos cajas."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Eliminar todos"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Da click para eliminar todos los %s seleccionados de una vez."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s de %(cnt)s seleccionado/a"
-msgstr[1] "%(sel)s de %(cnt)s seleccionados/as"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Tiene modificaciones sin guardar en campos modificables individuales. Si "
-"ejecuta una acción las mismas se perderán."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Ha seleccionado una acción, pero todavía no ha grabado las modificaciones "
-"que ha realizado en campos individuales. Por favor haga click en Aceptar "
-"para grabarlas. Necesitará ejecutar la acción nuevamente."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Ha seleccionado una acción pero no ha realizado ninguna modificación en "
-"campos individuales. Es probable que lo que necesite usar en realidad sea el "
-"botón Ejecutar y no el botón Guardar."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Enero Febrero Marzo Abril Mayo Junio Julio Agosto Setiembre Octubre "
-"Noviembre Diciembre"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "D L M M J V S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Mostrar"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Ocultar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Ahora"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Reloj"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Elija una hora"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Medianoche"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Mediodía"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Hoy"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Calendario"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Ayer"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Mañana"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/et/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/et/LC_MESSAGES/django.mo
deleted file mode 100644
index c1421d6..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/et/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/et/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/et/LC_MESSAGES/django.po
deleted file mode 100644
index 7b2e35a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/et/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,886 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# eallik <eallik@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jannolii <jannolii@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-06 11:45+0000\n"
-"Last-Translator: jannolii <jannolii@gmail.com>\n"
-"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/"
-"et/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: et\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s kustutamine õnnestus."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Ei saa kustutada %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Kas olete kindel?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Kustuta valitud %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Kõik"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Jah"
-
-#: filters.py:239
-msgid "No"
-msgstr "Ei"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Tundmatu"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Suvaline kuupäev"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Täna"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Viimased 7 päeva"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Käesolev kuu"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Käesolev aasta"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Palun sisestage personali kontole õige %(username)s ja parool. Teadke, et "
-"mõlemad väljad võivad olla tõstutundlikud."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Teie sessioon on aegunud. Palun logige uuesti sisse."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Toiming:"
-
-#: models.py:25
-msgid "action time"
-msgstr "toimingu aeg"
-
-#: models.py:28
-msgid "object id"
-msgstr "objekti id"
-
-#: models.py:29
-msgid "object repr"
-msgstr "objekti esitus"
-
-#: models.py:30
-msgid "action flag"
-msgstr "toimingu lipp"
-
-#: models.py:31
-msgid "change message"
-msgstr "muudatuse tekst"
-
-#: models.py:36
-msgid "log entry"
-msgstr "logisissekanne"
-
-#: models.py:37
-msgid "log entries"
-msgstr "logisissekanded"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Lisatud \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Muudetud \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Kustutatud \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Objekt LogEntry"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Puudub"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Muutsin %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "ja"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Lisatud %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Muudetud %(list)s objektil %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Kustutatud %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Ühtegi välja ei muudetud."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" lisamine õnnestus. Te võite seda muuta."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" lisamine õnnestus. Allpool saate lisada uue %(name)s."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" lisamine õnnestus."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" muutmine õnnestus. Allpool saate seda uuesti muuta."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" muutmine õnnestus. Allpool saate lisada uue %(name)s."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" muutmine õnnestus."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Palun märgistage elemendid, millega soovite toiminguid sooritada. Ühtegi "
-"elementi ei muudetud."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Toiming valimata."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Lisa %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s objekt primaarvõtmega %(key)r ei eksisteeri."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Muuda %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Andmebaasi viga"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s muutmine õnnestus."
-msgstr[1] "%(count)s %(name)s muutmine õnnestus."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s valitud"
-msgstr[1] "Kõik %(total_count)s valitud"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "valitud 0/%(cnt)s"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" kustutati."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Muudatuste ajalugu: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Et kustutada %(class_name)s %(instance)s, on vaja kustutada järgmised "
-"kaitstud seotud objektid: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Sisene"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Saidi administreerimine"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s - administreerimine"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Kuupäev:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Aeg:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Otsi"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Lisa Uus"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Hetkel:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Muuda:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Lehte ei leitud"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Vabandame, kuid soovitud lehte ei leitud."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Kodu"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Serveri viga"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Serveri viga (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Serveri Viga <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Ilmnes viga. Sellest on e-posti teel teavitatud lehe administraatorit ja "
-"viga parandatakse esimesel võimalusel. Täname kannatlikkuse eest."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Käivita valitud toiming"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Mine"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Kliki siin, et märgistada objektid üle kõigi lehekülgede"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Märgista kõik %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Tühjenda valik"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Tere tulemast,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentatsioon"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Muuda salasõna"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Logi välja"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django administreerimisliides"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administreerimisliides"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Lisa"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Ajalugu"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Näita lehel"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Palun parandage allolevad vead"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Palun parandage allolevad vead."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Lisa %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtreeri"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Eemalda sorteerimisest"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Sorteerimisjärk: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Sorteerimine"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Kustuta"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Selleks, et kustutada %(object_name)s '%(escaped_object)s', on vaja "
-"kustutada lisaks ka kõik seotud objecktid, aga teil puudub õigus järgnevat "
-"tüüpi objektide kustutamiseks:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Et kustutada %(object_name)s '%(escaped_object)s', on vaja kustutada "
-"järgmised kaitstud seotud objektid:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Kas olete kindel, et soovite kustutada objekti %(object_name)s "
-"\"%(escaped_object)s\"? Kõik järgnevad seotud objektid kustutatakse koos "
-"sellega:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Jah, olen kindel"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Kustuta mitu objekti"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Kui kustutada valitud %(objects_name)s, peaks kustutama ka seotud objektid, "
-"aga sinu kasutajakontol pole õigusi järgmiste objektitüüpide kustutamiseks:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Et kustutada valitud %(objects_name)s, on vaja kustutada ka järgmised "
-"kaitstud seotud objektid:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Kas oled kindel, et soovid kustutada valitud %(objects_name)s? Kõik "
-"järgnevad objektid ja seotud objektid kustutatakse:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Rakenduse %(name)s moodulid"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Muuda"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Teil ei ole õigust midagi muuta."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Hiljutised Toimingud"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Minu Toimingud"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Ei leitud ühtegi"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Tundmatu sisu"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"On tekkinud viga seoses andmebaasiga. Veenduge, et kõik vajalikud "
-"andmebaasitabelid on loodud ning et andmebaas on vastava kasutaja poolt "
-"loetav."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Salasõna:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Unustasite oma parooli või kasutajanime?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Kuupäev/kellaaeg"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Kasutaja"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Toiming"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Sellel objektil puudub muudatuste ajalugu. Tõenäoliselt ei kasutatud selle "
-"objekti lisamisel käesolevat administreerimislidest."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Näita kõiki"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Salvesta"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Otsing"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s tulemus"
-msgstr[1] "%(counter)s tulemust"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "Kokku %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Salvesta uuena"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Salvesta ja lisa uus"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Salvesta ja jätka muutmist"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Kõige pealt sisestage kasutajatunnus ja salasõna, seejärel on võimalik muuta "
-"täiendavaid kasutajaandmeid."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Sisestage kasutajanimi ja salasõna."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Sisestage uus salasõna kasutajale <strong>%(username)s</strong>"
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Salasõna"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Salasõna (uuesti)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr ""
-"Sisestage sama salasõna uuesti veendumaks, et sisestamisel ei tekkinud vigu"
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Eemalda"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Lisa veel üks %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Kustutan?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Tänan, et veetsite aega meie lehel."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Logi uuesti sisse"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Salasõna muutmine"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Salasõna muutmine õnnestus"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Teie salasõna on vahetatud."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Turvalisuse tagamiseks palun sisestage oma praegune salasõna ning seejärel "
-"uus salasõna.Veendumaks, et uue salasõna sisestamisel ei tekkinud vigu, "
-"palun sisestage see kaks korda."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Vana salasõna"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Uus salasõna"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Muuda salasõna"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Uue parooli loomine"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Uue salasõna loomine valmis"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Teie salasõna on määratud. Võite nüüd sisse logida."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Uue salasõna loomise kinnitamine"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Sisestage uus salasõna"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Palun sisestage uus salasõna kaks korda, et saaksime veenduda, et "
-"sisestamisel ei tekkinud vigu."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Uus salasõna:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Kinnita salasõna:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Uue salasõna loomine ebaõnnestus"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Uue salasõna loomise link ei olnud korrektne. Võimalik, et seda on varem "
-"kasutatud. Esitage uue salasõna taotlus uuesti."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Uue parooli loomine õnnestus"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Saatsime teie poolt määratud e-postile parooli muutmise juhendi. Peaksite "
-"selle lähiajal kätte saama."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Kui te ei saa kirja siis kontrollige, et sisestasite e-posti aadressi "
-"millega registreerisite ning kontrollige oma rämpsposti kausta."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Saite käesoleva kirja kuna soovisite muuta lehel %(site_name)s oma "
-"kasutajakontoga seotud parooli."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Palun minge järmisele lehele ning sisestage uus salasõna"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Teie kasutajatunnus juhul, kui olete unustanud:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Täname meie lehte külastamast!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s meeskond"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Unustasite oma parooli? Sisestage allpool oma e-posti aadress ja me saadame "
-"teile juhendi, kuidas parooli muuta."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "E-posti aadress:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Reseti parool"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Kõik kuupäevad"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Puudub)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Vali %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Vali %s mida muuta"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/et/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/et/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 7281fd4..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/et/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/et/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/et/LC_MESSAGES/djangojs.po
deleted file mode 100644
index b85c886..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/et/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,185 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# eallik <eallik@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jannolii <jannolii@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-28 15:19+0000\n"
-"Last-Translator: jannolii <jannolii@gmail.com>\n"
-"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/"
-"et/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: et\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Saadaval %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Nimekiri välja \"%s\" võimalikest väärtustest. Saad valida ühe või mitu "
-"kirjet allolevast kastist ning vajutades noolt \"Vali\" liigutada neid ühest "
-"kastist teise."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Filtreeri selle kasti abil välja \"%s\" nimekirja."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filter"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Vali kõik"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Kliki, et valida kõik %s korraga."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Vali"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Eemalda"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Valitud %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Nimekiri välja \"%s\" valitud väärtustest. Saad valida ühe või mitu kirjet "
-"allolevast kastist ning vajutades noolt \"Eemalda\" liigutada neid ühest "
-"kastist teise."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Eemalda kõik"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Kliki, et eemaldada kõik valitud %s korraga."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s %(cnt)sst valitud"
-msgstr[1] "%(sel)s %(cnt)sst valitud"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Muudetavates lahtrites on salvestamata muudatusi. Kui sooritate mõne "
-"toimingu, lähevad salvestamata muudatused kaotsi."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Valisid toimingu, kuid pole salvestanud muudatusi lahtrites. Salvestamiseks "
-"palun vajuta OK. Pead toimingu uuesti käivitama."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Valisid toimingu, kuid sa pole ühtegi lahtrit muutnud. Tõenäoliselt peaksid "
-"vajutama 'Mine' mitte 'Salvesta' nuppu."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Jaanuar Veebruar Märts Aprill Mai Juuni Juuli August September Oktoober "
-"November Detsember"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "P E T K N R L"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Näita"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Varja"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Praegu"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Kell"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Vali aeg"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Kesköö"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 hommikul"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Keskpäev"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Tühista"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Täna"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalender"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Eile"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Homme"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/eu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/eu/LC_MESSAGES/django.mo
deleted file mode 100644
index 5420b98..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/eu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/eu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/eu/LC_MESSAGES/django.po
deleted file mode 100644
index 4f70540..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/eu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,886 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Aitzol Naberan <anaberan@codesyntax.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# julen <julenx@gmail.com>, 2012-2013
-# julen <julenx@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-06 12:05+0000\n"
-"Last-Translator: Aitzol Naberan <anaberan@codesyntax.com>\n"
-"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/"
-"eu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s elementu ezabatu dira."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Ezin da %(name)s ezabatu"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Ziur zaude?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Ezabatu aukeratutako %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Dena"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Bai"
-
-#: filters.py:239
-msgid "No"
-msgstr "Ez"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Ezezaguna"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Edozein data"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Gaur"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Aurreko 7 egunak"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Hilabete hau"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Urte hau"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Idatzi kudeaketa gunerako %(username)s eta pasahitz zuzena. Kontuan izan "
-"biek maiuskula/minuskulak desberdintzen dituztela."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Hasi saioa berriro, zure sesioa iraungitu egin da."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Ekintza:"
-
-#: models.py:25
-msgid "action time"
-msgstr "Ekintza hordua"
-
-#: models.py:28
-msgid "object id"
-msgstr "Objetuaren id-a"
-
-#: models.py:29
-msgid "object repr"
-msgstr "Objeturaren aurkezpena"
-
-#: models.py:30
-msgid "action flag"
-msgstr "Ekintza botoia"
-
-#: models.py:31
-msgid "change message"
-msgstr "Mezua aldatu"
-
-#: models.py:36
-msgid "log entry"
-msgstr "Log sarrera"
-
-#: models.py:37
-msgid "log entries"
-msgstr "log sarrerak"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" gehituta."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "\"%(object)s\" aldatuta - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" ezabatuta."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "LogEntry objektua"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Bat ere ez"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s aldatuta."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "eta"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" gehituta."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Changed %(list)s for %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" ezabatuta."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Ez da eremurik aldatu."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" ondo gehitu da. Jarraian aldatu dezakezu berriro."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" ondo gehitu da. Beste %(name)s bat gehitu dezakezu "
-"jarraian."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" ondo gehitu da."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" ondo aldatu da. Aldaketa gehiago egin ditzazkezu "
-"jarraian."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" ondo aldatu da. Beste %(name)s bat gehitu dezakezu "
-"jarraian."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" ondo aldatu da."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Elementuak aukeratu behar dira beraien gain ekintzak burutzeko. Ez da "
-"elementurik aldatu."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Ez dago ekintzarik aukeratuta."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Gehitu %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Ez dago %(key)r gakodun %(name)s objekturik."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Aldatu %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Datu-basearen errorea"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(name)s %(count)s ondo aldatu da."
-msgstr[1] "%(count)s %(name)s ondo aldatu dira."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "Guztira %(total_count)s aukeratuta"
-msgstr[1] "Guztira %(total_count)s aukeratuta"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "Guztira %(cnt)s, 0 aukeratuta"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" ondo ezabatu da."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Aldaketen historia: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"%(class_name)s klaseko %(instance)s instantziak ezabatzeak erlazionatutako "
-"objektu hauek ezabatzea eragingo du:\n"
-"%(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Sartu"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Webgunearen kudeaketa"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s kudeaketa"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Data:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Ordua:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Lookup"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Beste bat gehitu"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Oraingoa:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Aldatu:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Ez da orririk aurkitu"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Barkatu, eskatutako orria ezin daiteke aurkitu"
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Hasiera"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Zerbitzariaren errorea"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Zerbitzariaren errorea (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Zerbitzariaren errorea <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Errore bat gertatu da. Errorea guneko kudeatzaileari jakinarazi zaio email "
-"bidez eta laister egon beharko luke konponduta. Barkatu eragozpenak."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Burutu hautatutako ekintza"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Joan"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Egin klik hemen orri guztietako objektuak aukeratzeko"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Hautatu %(total_count)s %(module_name)s guztiak"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Garbitu hautapena"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Ongi etorri,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentazioa"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Aldatu pasahitza"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Irten"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django kudeaketa gunea"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django kudeaketa"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Gehitu"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Historia"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Ikusi gunean"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Zuzendu azpiko erroreak."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Gehitu %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Iragazkia"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Kendu ordenaziotik"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Ordenatzeko lehentasuna: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Txandakatu ordenazioa"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Ezabatu"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"%(object_name)s ezabatzean bere '%(escaped_object)s' ere ezabatzen dira, "
-"baina zure kontuak ez dauka baimenik objetu mota hauek ezabatzeko:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' ezabatzeak erlazionatutako objektu "
-"babestu hauek ezabatzea eskatzen du:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Ziur zaude %(object_name)s \"%(escaped_object)s\" ezabatu nahi dituzula? "
-"Erlazionaturik dauden hurrengo elementuak ere ezabatuko dira:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Bai, ziur nago"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Ezabatu hainbat objektu"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Hautatutako %(objects_name)s ezabatzeak erlazionatutako objektuak ezabatzea "
-"eskatzen du baina zure kontuak ez dauka baimen nahikorik objektu mota hauek "
-"ezabatzeko: "
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Hautatutako %(objects_name)s ezabatzeak erlazionatutako objektu babestu "
-"hauek ezabatzea eskatzen du:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Ziur zaude hautatutako %(objects_name)s ezabatu nahi duzula? Objektu guzti "
-"hauek eta erlazionatutako elementu guztiak ezabatuko dira:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Irizpidea: %(filter_title)s"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "%(name)s aplikazioaren modeloak"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Aldatu"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Ez daukazu ezer aldatzeko baimenik."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Azken ekintzak"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Nire ekintzak"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Ez dago ezer"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Eduki ezezaguna"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Zerbait gaizki dago zure datu-basearekin. Ziurtatu datu-baseko taulak sortu "
-"direla eta erabiltzaile egokiak irakurtzeko baimena duela."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Pasahitza:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Pasahitza edo erabiltzaile-izena ahaztu duzu?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Data/ordua"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Erabiltzailea"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Ekintza"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Objektu honek ez dauka aldaketen historiarik. Ziurrenik kudeaketa gunetik "
-"kanpo gehituko zen."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Erakutsi dena"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Gorde"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Bilatu"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "Emaitza %(counter)s "
-msgstr[1] "%(counter)s emaitza"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s guztira"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Gorde berri gisa"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Gorde eta gehitu beste bat"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Gorde eta jarraitu editatzen"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Lehenik idatzi erabiltzaile-izena eta pasahitza. Gero erabiltzaile-aukera "
-"gehiago aldatu ahal izango dituzu."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Idatzi erabiltzaile-izen eta pasahitza."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Idatzi pasahitz berria <strong>%(username)s</strong> erabiltzailearentzat."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Pasahitza"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Pasahitza (berriro)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Idatzi goiko pasahitz bera, egiaztapenerako."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Kendu"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Gehitu beste %(verbose_name)s bat"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Ezabatu?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Eskerrik asko webguneari zure probetxuzko denbora eskaintzeagatik."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Hasi saioa berriro"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Aldatu pasahitza"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Pasahitza ondo aldatu da"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Zure pasahitza aldatu egin da."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Idatzi pasahitz zaharra segurtasun arrazoiengatik eta gero pasahitz berria "
-"bi aldiz, akatsik egiten ez duzula ziurta dezagun."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Pasahitz zaharra"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Pasahitz berria"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Aldatu nire pasahitza"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Berrezarri pasahitza"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Pasahitza berrezartzea burutu da"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Zure pasahitza ezarri da. Orain aurrera egin eta sartu zaitezke."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Pasahitza berrezartzeko berrespena"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Idatzi pasahitz berria"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr "Idatzi pasahitz berria birritan ondo idatzita dagoela ziurta dezagun."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Pasahitz berria:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Berretsi pasahitza:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Pasahitza ez da berrezarri"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Pasahitza berrezartzeko loturak baliogabea dirudi. Baliteke lotura aurretik "
-"erabilita egotea. Eskatu berriro pasahitza berrezartzea."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Pasahitza ondo berrezarri da"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Emandako helbide elektronikora bidali dizkizugu pasahitza berrezartzeko "
-"jarraibideak. Epe laburrean jaso behar zenuke."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Ez baduzu mezurik jasotzen, ziurtatu izena ematean erabilitako helbide "
-"berdina idatzi duzula eta egiaztatu spam karpeta."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Mezu hau %(site_name)s webgunean pasahitza berrezartzea eskatu duzulako jaso "
-"duzu"
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Zoaz hurrengo orrira eta aukeratu pasahitz berria:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Zure erabiltzaile-izena (ahaztu baduzu):"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Mila esker gure webgunea erabiltzeagatik!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s webguneko taldea"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Pasahitza ahaztu duzu? Idatzi zure helbide elektronikoa eta berri bat "
-"ezartzeko jarraibideak bidaliko dizkizugu."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Helbide elektronikoa:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Berrezarri pasahitza"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Data guztiak"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Bat ere ez)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Hautatu %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Hautatu %s aldatzeko"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 65d78e6..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 01f7872..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/eu/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,184 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Aitzol Naberan <anaberan@codesyntax.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# julen <julenx@gmail.com>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/"
-"eu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s Erabilgarri"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Hau da aukeran dauden %s zerrenda. Hauetako zenbait aukera ditzakezu "
-"azpiko \n"
-"kaxan hautatu eta kutxen artean dagoen \"Aukeratu\" gezian klik eginez."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Idatzi kutxa honetan erabilgarri dauden %s objektuak iragazteko."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtroa"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Denak aukeratu"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Egin klik %s guztiak batera aukeratzeko."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Aukeratu"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Kendu"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s Aukeratuak"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Hau da aukeratutako %s zerrenda. Hauetako zenbait ezaba ditzakezu azpiko "
-"kutxan hautatu eta bi kutxen artean dagoen \"Ezabatu\" gezian klik eginez."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Kendu guztiak"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Egin klik aukeratutako %s guztiak kentzeko."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(cnt)s-etik %(sel)s aukeratuta"
-msgstr[1] "%(cnt)s-etik %(sel)s aukeratuta"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Gorde gabeko aldaketak dauzkazu eremuetan. Ekintza bat exekutatzen baduzu, "
-"gorde gabeko aldaketak galduko dira."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Ekintza bat hautatu duzu, baina oraindik ez duzu eremuetako aldaketak gorde. "
-"Mesedez, sakatu OK gordetzeko. Ekintza berriro exekutatu beharko duzu."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Ekintza bat hautatu duzu, baina ez duzu inongo aldaketarik egin eremuetan. "
-"Litekeena da, Gorde botoia beharrean Aurrera botoiaren bila aritzea."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Urtarrila Otsaila Martxoa Apirila Maiatza Ekaina Uztaila Abuztua Iraila "
-"Urria Azaroa Abendua"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "I A A A O O L"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Erakutsi"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Izkutatu"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Orain"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Erlojua"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Aukeratu ordu bat"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Gauerdia"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Eguerdia"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Atzera"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Gaur"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Egutegia"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Atzo"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Bihar"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/django.mo
deleted file mode 100644
index c6b20e7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/django.po
deleted file mode 100644
index d98f495..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,882 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Arash Fazeli <a.fazeli@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Reza Mohammadi <reza@teeleh.ir>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-05 09:11+0000\n"
-"Last-Translator: Reza Mohammadi <reza@teeleh.ir>\n"
-"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/"
-"fa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d عدد از %(items)s با موفقیت پاک شد"
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "ناتوان در حذف %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "آیا مطمئن هستید؟"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "حذف %(verbose_name_plural)s های انتخاب شده"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "همه"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "بله"
-
-#: filters.py:239
-msgid "No"
-msgstr "خیر"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "ناشناخته"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "هر تاریخی"
-
-#: filters.py:309
-msgid "Today"
-msgstr "امروز"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "۷ روز اخیر"
-
-#: filters.py:317
-msgid "This month"
-msgstr "این ماه"
-
-#: filters.py:321
-msgid "This year"
-msgstr "امسال"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"لطفا %(username)s و گذرواژهٔ را برای حساب کارکنان وارد کنید.\n"
-"توجه داشته باشید که هر دو میتوانند به کوچکی و بزرگی حروف حساس باشند."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "لطفا دوباره وارد شوید، جلسه شما منقضی شد."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "حرکت"
-
-#: models.py:25
-msgid "action time"
-msgstr "زمان اتفاق"
-
-#: models.py:28
-msgid "object id"
-msgstr "شناسهٔ شیء"
-
-#: models.py:29
-msgid "object repr"
-msgstr "صورت شیء"
-
-#: models.py:30
-msgid "action flag"
-msgstr "نشانه عمل"
-
-#: models.py:31
-msgid "change message"
-msgstr "پیغام تغییر"
-
-#: models.py:36
-msgid "log entry"
-msgstr "مورد اتفاقات"
-
-#: models.py:37
-msgid "log entries"
-msgstr "موارد اتفاقات"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" افروده شد."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "تغییر \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" حدف شد."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "شئ LogEntry"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "هیچ"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s تغییر یافته."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "و"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s «%(object)s» اضافه شد."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(list)s %(name)s «%(object)s» تغییر یافت."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s «%(object)s» حذف شد."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "فیلدی تغییر نیافته است."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s·\"%(obj)s\" با موفقیت اضافه شد. می‌توانید در این پایین ویرایشش کنید."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" با موفقیت اضافه شد. شما می‌توانید در ذیل یک %(name)s "
-"دیگر اضافه نمایید."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s «%(obj)s» با موفقیت اضافه شد."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" با موفقیت تغییر یافت. شما می‌توانید در ذیل مجدداُ آنرا "
-"ویرایش نمایید."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" با موفقیت تغییر یافت. شما می‌توانید در ذیل یک %(name)s "
-"دیگر اضافه نمایید."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s·\"%(obj)s\" با موفقیت تغییر یافت."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"آیتم ها باید به منظور انجام عملیات بر روی آنها انتخاب شود. هیچ آیتمی با "
-"تغییر نیافته است."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "حرکتی انتخاب نشده"
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "اضافه کردن %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "ایتم%(name)s با کلید اصلی %(key)r وجود ندارد."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "تغییر %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "خطا در بانک اطلاعاتی"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s با موفقیت تغییر کرد."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "همه موارد %(total_count)s انتخاب شده"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 از %(cnt)s انتخاب شده‌اند"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s·\"%(obj)s\" با موفقیت حذف شد."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "تاریخچهٔ تغییر: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"برای حذف %(class_name)s %(instance)s لازم است اشیای حفاظت شدهٔ زیر هم حذف "
-"شوند: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "ورود"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "مدیریت وبگاه"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "مدیریت %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "تاریخ:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "زمان:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "جستجو"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "اضافه کردن یکی دیگر"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "در حال حاضر:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "تغییر یافته:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "صفحه یافت نشد"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "متأسفیم، صفحه مورد تقاضا یافت نشد."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "آغازه"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "خطای کارگزار"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "خطای کارگزار (۵۰۰)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "خطای کارگزار <em>(۵۰۰)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"مشکلی پیش آمده. این مشکل از طریق ایمیل به مدیران سایت اطلاع داده شد و به "
-"زودی اصلاح میگردد. از صبر شما ممنونیم"
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "اجرای حرکت انتخاب شده"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "برو"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "برای انتخاب موجودیت‌ها در تمام صفحات اینجا را کلیک کنید"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "انتخاب تمامی %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "لغو انتخاب‌ها"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "خوش آمدید،"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "مستندات"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "تغییر گذرواژه"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "خروج"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "وب‌گاه مدیریت Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "مدیریت Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "اضافه کردن"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "تاریخچه"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "مشاهده در وبگاه"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "لطفاً خطای زیر را حل کنید."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "لطفاً خطاهای زیر را تصحیح کنید."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "اضافه‌کردن %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "فیلتر"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "حذف از مرتب سازی"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "اولویت مرتب‌سازی: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "تعویض مرتب سازی"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "حذف"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"حذف %(object_name)s·'%(escaped_object)s' می تواند باعث حذف اشیاء مرتبط شود. "
-"اما حساب شما دسترسی لازم برای حذف اشیای از انواع زیر را ندارد:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"حذف %(object_name)s '%(escaped_object)s' نیاز به حذف موجودیت‌های مرتبط محافظت "
-"شده ذیل دارد:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"آیا مطمئنید که می‌خواهید %(object_name)s·\"%(escaped_object)s\" را حذف کنید؟ "
-"کلیهٔ اشیای مرتبط زیر حذف خواهند شد:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "بله، مطمئن هستم."
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "حذف اشیاء متعدد"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"حذف %(objects_name)s انتخاب شده منجر به حذف موجودیت‌های مرتبط خواهد شد، ولی "
-"شناسه شما اجازه حذف اینگونه از موجودیت‌های ذیل را ندارد:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"حذف %(objects_name)s انتخاب شده نیاز به حذف موجودیت‌های مرتبط محافظت شده ذیل "
-"دارد:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"آیا در خصوص حذف %(objects_name)s انتخاب شده اطمینان دارید؟ تمام موجودیت‌های "
-"ذیل به همراه موارد مرتبط با آنها حذف خواهند شد:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "براساس %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "مدلها در برنامه %(name)s "
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "تغییر"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "شما اجازهٔ ویرایش چیزی را ندارید."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "اعمال اخیر"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "اعمال من"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "چیزی در دسترس نیست"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "محتوا ناشناخته"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"در نصب بانک اطلاعاتی شما مشکلی وجود دارد. مطمئن شوید که جداول مربوطه به "
-"درستی ایجاد شده‌اند و اطمینان حاصل کنید که بانک اطلاعاتی توسط کاربر مربوطه "
-"قابل خواندن می باشد."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "گذرواژه:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "آیا گذرواژه یا نام کاربری خود را فراموش کرده؟"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "تاریخ/ساعت"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "کاربر"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "عمل"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"این شیء تاریخچهٔ تغییرات ندارد. احتمالا این شیء توسط وبگاه مدیریت ایجاد نشده "
-"است."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "نمایش همه"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "ذخیره"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "جستجو"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s نتیجه"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "در مجموع %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "ذخیره به عنوان جدید"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "ذخیره و ایجاد یکی دیگر"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "ذخیره و ادامه ویرایش"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"ابتدا یک نام کاربری و گذرواژه وارد کنید. سپس می توانید مشخصات دیگر کاربر را "
-"ویرایش کنید."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "یک نام کاربری و رمز عبور را وارد کنید."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "برای کابر <strong>%(username)s</strong> یک گذرنامهٔ جدید وارد کنید."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "گذرواژه"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "گذرواژه (تکرار)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "همان گذرواژهٔ بالایی را برای اطمینان دوباره وارد کنید."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "حذف"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "افزودن یک %(verbose_name)s دیگر"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "حذف؟"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "متشکر از اینکه مدتی از وقت خود را به ما اختصاص دادید."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "ورود دوباره"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "تغییر گذرواژه"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "گذرواژه تغییر یافت."
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "گذرواژهٔ شما تغییر یافت."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"گذرواژهٔ قدیمی خود را، برای امنیت بیشتر، وارد کنید و سپس گذرواژهٔ جدیدتان را "
-"دوبار وارد کنید تا ما بتوانیم چک کنیم که به درستی تایپ کرده‌اید."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "گذرواژهٔ قدیمی"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "گذرواژهٔ جدید"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "تغییر گذرواژهٔ من"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "ایجاد گذرواژهٔ جدید"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "گذرواژهٔ جدید ایجاد شد"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "گذرواژهٔ جدیدتان تنظیم شد. اکنون می‌توانید وارد وبگاه شوید."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "تصدیق گذرواژهٔ جدید"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "ورود گذرواژهٔ جدید"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"گذرواژهٔ جدیدتان را دوبار وارد کنید تا ما بتوانیم چک کنیم که به درستی تایپ "
-"کرده‌اید."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "گذرواژهٔ جدید"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "تکرار گذرواژه"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "گذرواژهٔ جدید ایجاد نشد."
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"پیوند ایجاد گذرواژهٔ جدید نامعتبر بود، احتمالاً به این علت که قبلاً از آن "
-"استفاده شده است. لطفاً برای یک گذرواژهٔ جدید درخواست دهید."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "گذرواژهٔ جدید ایجاد شد."
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"دستورالعمل تنظیم گذرواژه را برایتان ایمیل کردیم. به زودی باید به دستتان برسد."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"اگر ایمیلی دریافت نمی‌کنید، لطفاً بررسی کنید که آدرسی که وارد کرده‌اید همان است "
-"که با آن ثبت نام کرده‌اید، و پوشهٔ اسپم خود را نیز چک کنید."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"شما این ایمیل را بخاطر تقاضای تغییر رمز حساب در %(site_name)s. دریافت کرده "
-"اید."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "لطفاً به صفحهٔ زیر بروید و یک گذرواژهٔ جدید انتخاب کنید:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "نام کاربریتان، اگر یادتان رفته است:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "متشکر از استفادهٔ شما از وبگاه ما"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "گروه %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"رمز خود را فراموش کرده اید؟ آدرس ایمیل خود را در زیر وارد کنید، و ما روش "
-"تنظیم رمز جدید را برایتان می فرستیم."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "آدرس ایمیل:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "ایجاد گذرواژهٔ جدید"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "همهٔ تاریخ‌ها"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(هیچ)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s انتخاب کنید"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "%s را برای تغییر انتخاب کنید"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 55229d7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.po
deleted file mode 100644
index ee5272b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/fa/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,182 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Nikneshan <ali@nikneshan.com>, 2011-2012
-# Alireza Savand <alireza.savand@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sina Cheraghi <sinacher@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/"
-"fa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s موجود"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"این لیست%s های در دسترس است. شما ممکن است برخی از آنها را در محل زیرانتخاب "
-"نمایید و سپس روی \"انتخاب\" بین دو جعبه کلیک کنید."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "درون این جعبه تایپ کنید تا لیست %s های موجود فیلتر شود."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "فیلتر"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "انتخاب همه"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "کلیک کنید را انتخاب کنید تمام %s را در یک بار."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "انتخاب"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "حذف"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s انتخاب شده"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"این فهرست %s های انتخاب شده است. شما ممکن است برخی از انتخاب آنها را در محل "
-"زیر وارد نمایید و سپس روی \"حذف\" جهت دار بین دو جعبه حذف شده است."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "حذف همه"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "کلیک کنید تا تمام %s های انتخاب شده حذف شوند."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] " %(sel)s از %(cnt)s انتخاب شده است."
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"شما تغییراتی در بعضی فیلدهای قابل تغییر انجام داده اید. اگر کاری انجام "
-"دهید، تغییرات از دست خواهند رفت"
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"شما کاری را انتخاب کرده اید، ولی هنوز تغییرات بعضی فیلد ها را ذخیره نکرده "
-"اید. لطفا OK را فشار دهید تا ذخیره شود.\n"
-"شما باید عملیات را دوباره انجام دهید."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"شما عملی را انجام داده اید، ولی تغییری انجام نداده اید. احتمالا دنبال کلید "
-"Go به جای Save میگردید."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "ژانویه فوریه مارس آوریل مه ژوئن ژوئیه اوت سپتامبر اکتبر نوامبر دسامبر"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "یکشنبه دوشنبه سه‌شنبه چهارشنبه پنجشنبه جمعه شنبه"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "نمایش"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "پنهان کردن"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "حالا"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "ساعت"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "یک زمان انتخاب کنید"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "نیمه‌شب"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "۶ صبح"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "ظهر"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "انصراف"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "امروز"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "تقویم"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "دیروز"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "فردا"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/fi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/fi/LC_MESSAGES/django.mo
deleted file mode 100644
index a80e7ad..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/fi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/fi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/fi/LC_MESSAGES/django.po
deleted file mode 100644
index 88d0fae..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/fi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,866 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antti Kaihola <antti-2013@ambitone.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# nanook <klaus.dahlen@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Finnish (http://www.transifex.com/projects/p/django/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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d \"%(items)s\"-kohdetta poistettu."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Ei voida poistaa: %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Oletko varma?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Poista valitut \"%(verbose_name_plural)s\"-kohteet"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Kaikki"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Kyllä"
-
-#: filters.py:239
-msgid "No"
-msgstr "Ei"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Tuntematon"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Mikä tahansa päivä"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Tänään"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Viimeiset 7 päivää"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Tässä kuussa"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Tänä vuonna"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Kirjaudu uudelleen sisään, sillä istuntosi on vanhentunut."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Toiminto:"
-
-#: models.py:25
-msgid "action time"
-msgstr "tapahtumahetki"
-
-#: models.py:28
-msgid "object id"
-msgstr "kohteen tunniste"
-
-#: models.py:29
-msgid "object repr"
-msgstr "kohteen tiedot"
-
-#: models.py:30
-msgid "action flag"
-msgstr "tapahtumatyyppi"
-
-#: models.py:31
-msgid "change message"
-msgstr "selitys"
-
-#: models.py:36
-msgid "log entry"
-msgstr "lokimerkintä"
-
-#: models.py:37
-msgid "log entries"
-msgstr "lokimerkinnät"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Ei arvoa"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Muokattu: %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "ja"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Lisätty %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Muutettu %(list)s kohteelle %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Poistettu %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Ei muutoksia kenttiin."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" on lisätty. Voit muokata sitä uudelleen alla."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" on lisätty."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" on muutettu."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Kohteiden täytyy olla valittuna, jotta niihin voi kohdistaa toimintoja. "
-"Kohteita ei ole muutettu."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Ei toimintoa valittuna."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Lisää %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s perusavaimella %(key)r ei ole olemassa."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Muokkaa %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Tietokantavirhe"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s on muokattu."
-msgstr[1] "%(count)s \"%(name)s\"-kohdetta on muokattu."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s valittu"
-msgstr[1] "Kaikki %(total_count)s valittu"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 valittuna %(cnt)s mahdollisesta"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" on poistettu."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Muokkaushistoria: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Kirjaudu sisään"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Sivuston ylläpito"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s ylläpito"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Pvm:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Klo:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Etsi"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Lisää seuraava"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Sivua ei löydy"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Pahoittelemme, pyydettyä sivua ei löytynyt."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Etusivu"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Palvelinvirhe"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Palvelinvirhe (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Palvelinvirhe <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Suorita valittu toiminto"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Suorita"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Klikkaa tästä valitaksesi kohteet kaikilta sivuilta"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Valitse kaikki %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Tyhjennä valinta"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Tervetuloa,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Ohjeita"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Vaihda salasana"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Kirjaudu ulos"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django-sivuston ylläpito"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Djangon ylläpito"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Lisää"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Muokkaushistoria"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Näytä lopputulos"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Korjaa allaolevat virheet."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Lisää %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Suodatin"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Poista"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Kohteen '%(escaped_object)s' (%(object_name)s) poisto poistaisi myös siihen "
-"liittyviä kohteita, mutta sinulla ei ole oikeutta näiden kohteiden "
-"poistamiseen:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s': poistettaessa joudutaan poistamaan "
-"myös seuraavat suojatut siihen liittyvät kohteet:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Haluatko varmasti poistaa kohteen \"%(escaped_object)s\" (%(object_name)s)? "
-"Myös seuraavat kohteet poistettaisiin samalla:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Kyllä, olen varma"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Poista useita kohteita"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Jos valitut %(objects_name)s poistettaisiin, jouduttaisiin poistamaan niihin "
-"liittyviä kohteita. Sinulla ei kuitenkaan ole oikeutta poistaa seuraavia "
-"kohdetyyppejä:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Jos valitut %(objects_name)s poistetaan, pitää poistaa myös seuraavat "
-"suojatut niihin liittyvät kohteet:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Haluatki varmasti poistaa valitut %(objects_name)s? Samalla poistetaan "
-"kaikki alla mainitut ja niihin liittyvät kohteet:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Muokkaa"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Sinulla ei ole oikeutta muokata mitään."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Viimeisimmät tapahtumat"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Omat tapahtumani"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Ei yhtään"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Tuntematon sisältö"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Tietokanta-asennuksessa on jotain vialla. Varmista, että sopivat taulut on "
-"luotu ja että oikea käyttäjä voi lukea tietokantaa."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Salasana:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Unohditko salasanasi tai käyttäjätunnuksesi?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Pvm/klo"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Käyttäjä"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Tapahtuma"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Tällä kohteella ei ole muutoshistoriaa. Sitä ei ole ilmeisesti lisätty tämän "
-"ylläpitosivun avulla."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Näytä kaikki"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Tallenna ja poistu"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Haku"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s osuma"
-msgstr[1] "%(counter)s osumaa"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "yhteensä %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Tallenna uutena"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Tallenna ja lisää toinen"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Tallenna välillä ja jatka muokkaamista"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Syötä ensin käyttäjätunnus ja salasana. Sen jälkeen voit muokata muita "
-"käyttäjän tietoja."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Syötä käyttäjätunnus ja salasana."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Syötä käyttäjän <strong>%(username)s</strong> uusi salasana."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Salasana"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Salasana toistamiseen"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Syötä sama salasana tarkistuksen vuoksi toistamiseen."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Poista"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Lisää toinen %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Poista?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Kiitos sivuillamme viettämästäsi ajasta."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Kirjaudu uudelleen sisään"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Salasanan vaihtaminen"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Salasanan vaihtaminen onnistui"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Salasanasi on vaihdettu."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Syötä vanha salasanasi varmistukseksi, ja syötä sitten uusi salasanasi kaksi "
-"kertaa, jotta se tulee varmasti oikein."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Vanha salasana"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Uusi salasana"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Vaihda salasana"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Salasanan nollaus"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Salasanan nollaus valmis"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Salasanasi on asetettu. Nyt voit kirjautua sisään."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Salasanan nollauksen vahvistus"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Syötä uusi salasana"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Syötä uusi salasanasi kaksi kertaa, jotta voimme varmistaa että syötit sen "
-"oikein."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Uusi salasana:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Varmista uusi salasana:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Salasanan nollaus ei onnistunut"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Salasanan nollauslinkki oli virheellinen, mahdollisesti siksi että se on jo "
-"käytetty. Ole hyvä ja pyydä uusi salasanan nollaus."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Salasanan nollaus onnistui"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Määrittele uusi salasanasi oheisella sivulla:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Käyttäjätunnuksesi siltä varalta, että olet unohtanut sen:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Kiitos vierailustasi sivuillamme!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s -sivuston ylläpitäjät"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Sähköpostiosoite:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Nollaa salasanani"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Kaikki päivät"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Ei mitään)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Valitse %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Valitse muokattava %s"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index d5314d2..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 156c009..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/fi/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,179 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antti Kaihola <antti-2013@ambitone.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Finnish (http://www.transifex.com/projects/p/django/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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Mahdolliset %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Suodatin"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Valitse kaikki"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Poista"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Valitut %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s valittuna %(cnt)s mahdollisesta"
-msgstr[1] "%(sel)s valittuna %(cnt)s mahdollisesta"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Sinulla on tallentamattomia muutoksia yksittäisissä muokattavissa kentissä. "
-"Jos suoritat toiminnon, tallentamattomat muutoksesi katoavat."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Olet valinnut toiminnon, mutta et ole vielä tallentanut muutoksiasi "
-"yksittäisiin kenttiin. Paina OK tallentaaksesi. Sinun pitää suorittaa "
-"toiminto uudelleen."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Olet valinnut toiminnon etkä ole tehnyt yhtään muutosta yksittäisissä "
-"kentissä. Etsit todennäköisesti Suorita-nappia Tallenna-napin sijaan."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Tammikuu Helmikuu Maaliskuu Huhtikuu Toukokuu Kesäkuu Heinäkuu Elokuu "
-"Syyskuu Lokakuu Marraskuu Joulukuu"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "S M T K T P L"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Näytä"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Piilota"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Nyt"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Kello"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Valitse kellonaika"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "24"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "06"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "12"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Peruuta"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Tänään"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalenteri"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Eilen"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Huomenna"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/django.mo
deleted file mode 100644
index d4c6e29..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/django.po
deleted file mode 100644
index 49634b0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,900 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# claudep <claude@2xlibre.net>, 2013
-# claudep <claude@2xlibre.net>, 2011,2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-22 07:09+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: French (http://www.transifex.com/projects/p/django/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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "La suppression de %(count)d %(items)s a réussi."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Impossible de supprimer %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Êtes-vous sûr ?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Supprimer les %(verbose_name_plural)s sélectionnés"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Tout"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Oui"
-
-#: filters.py:239
-msgid "No"
-msgstr "Non"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Inconnu"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Toutes les dates"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Aujourd'hui"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Les 7 derniers jours"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Ce mois-ci"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Cette année"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Veuillez compléter correctement les champs « %(username)s » et « mot de "
-"passe » d'un compte autorisé. Sachez que les deux champs peuvent être "
-"sensibles à la casse."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Reconnectez-vous car votre session a expiré."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Action :"
-
-#: models.py:25
-msgid "action time"
-msgstr "heure de l'action"
-
-#: models.py:28
-msgid "object id"
-msgstr "id de l'objet"
-
-#: models.py:29
-msgid "object repr"
-msgstr "représentation de l'objet"
-
-#: models.py:30
-msgid "action flag"
-msgstr "indicateur de l'action"
-
-#: models.py:31
-msgid "change message"
-msgstr "message de modification"
-
-#: models.py:36
-msgid "log entry"
-msgstr "entrée d'historique"
-
-#: models.py:37
-msgid "log entries"
-msgstr "entrées d'historique"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "%(object)s ajouté(e)s."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "%(object)s modifié(e)s - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "%(object)s supprimé(e)s"
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Objet de journal"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Aucun(e)"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Modifié %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "et"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s « %(object)s » ajouté."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(list)s modifié pour %(name)s « %(object)s »."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s « %(object)s » supprimé."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Aucun champ modifié."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"L'objet %(name)s « %(obj)s » a été ajouté avec succès. Vous pouvez continuer "
-"l'édition ci-dessous."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"L'objet %(name)s « %(obj)s » a été ajouté avec succès. Vous pouvez ajouter "
-"un autre objet « %(name)s » ci-dessous."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "L'objet %(name)s « %(obj)s » a été ajouté avec succès."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"L'objet %(name)s « %(obj)s » a été modifié avec succès. Vous pouvez "
-"continuer l'édition ci-dessous."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"L'objet %(name)s « %(obj)s » a été modifié avec succès. Vous pouvez ajouter "
-"un autre objet %(name)s ci-dessous."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "L'objet %(name)s « %(obj)s » a été modifié avec succès."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Des éléments doivent être sélectionnés afin d'appliquer les actions. Aucun "
-"élément n'a été modifié."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Aucune action sélectionnée."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Ajout %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "L'objet %(name)s avec la clef primaire %(key)r n'existe pas."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Modification de %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Erreur de base de données"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s objet %(name)s a été modifié avec succès."
-msgstr[1] "%(count)s objets %(name)s ont été modifiés avec succès."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s sélectionné"
-msgstr[1] "Tous les %(total_count)s sélectionnés"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 sur %(cnt)s sélectionné"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "L'objet %(name)s « %(obj)s » a été supprimé avec succès."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Historique des changements : %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Supprimer l'objet %(class_name)s « %(instance)s » provoquerait la "
-"suppression des objets liés et protégés suivants : %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Connexion"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Administration du site"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Administration %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Date :"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Heure :"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Recherche"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Ajouter un autre"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Actuellement :"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Modifier :"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Cette page n'a pas été trouvée"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Nous sommes désolés, mais la page demandée est introuvable."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Accueil"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Erreur du serveur"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Erreur du serveur (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Erreur du serveur <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Une erreur est survenue. Elle a été transmise par courriel aux "
-"administrateurs du site et sera corrigée dans les meilleurs délais. Merci "
-"pour votre patience."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Exécuter l'action sélectionnée"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Envoyer"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Cliquez ici pour sélectionner tous les objets sur l'ensemble des pages"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Sélectionner tous les %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Effacer la sélection"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Bienvenue,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Documentation"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Modifier votre mot de passe"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Déconnexion"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Site d'administration de Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administration de Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Ajouter"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Historique"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Voir sur le site"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Corrigez les erreurs suivantes."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Corrigez les erreurs ci-dessous."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Ajouter %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtre"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Enlever du tri"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Priorité de tri : %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Inverser le tri"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Supprimer"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Supprimer l'objet %(object_name)s « %(escaped_object)s » provoquerait la "
-"suppression des objets qui lui sont liés, mais votre compte ne possède pas "
-"la permission de supprimer les types d'objets suivants :"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Supprimer l'objet %(object_name)s « %(escaped_object)s » provoquerait la "
-"suppression des objets liés et protégés suivants :"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Voulez-vous vraiment supprimer l'objet %(object_name)s "
-"« %(escaped_object)s » ? Les éléments suivants sont liés à celui-ci et "
-"seront aussi supprimés :"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Oui, je suis sûr"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Supprimer plusieurs objets"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"La suppression des objets %(objects_name)s sélectionnés provoquerait la "
-"suppression d'objets liés, mais votre compte n'est pas autorisé à supprimer "
-"les types d'objet suivants :"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"La suppression des objets %(objects_name)s sélectionnés provoquerait la "
-"suppression des objets liés et protégés suivants :"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Voulez-vous vraiment supprimer les objets %(objects_name)s sélectionnés ? "
-"Tous les objets suivants et les éléments liés seront supprimés :"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Par %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modèles de l'application %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Modifier"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Vous n'avez pas la permission de modifier quoi que ce soit."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Actions récentes"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Mes actions"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Aucun(e) disponible"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Contenu inconnu"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"L'installation de votre base de données est incorrecte. Vérifiez que les "
-"tables utiles ont été créées, et que la base est accessible par "
-"l'utilisateur concerné."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Mot de passe :"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Mot de passe ou nom d'utilisateur oublié ?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Date/heure"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Utilisateur"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Action"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Cet objet n'a pas d'historique de modification. Il n'a probablement pas été "
-"ajouté au moyen de ce site d'administration."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Tout afficher"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Enregistrer"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Rechercher"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s résultat"
-msgstr[1] "%(counter)s résultats"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s résultats"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Enregistrer en tant que nouveau"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Enregistrer et ajouter un nouveau"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Enregistrer et continuer les modifications"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Saisissez tout d'abord un nom d'utilisateur et un mot de passe. Vous pourrez "
-"ensuite modifier plus d'options."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Saisissez un nom d'utilisateur et un mot de passe."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Saisissez un nouveau mot de passe pour l'utilisateur <strong>%(username)s</"
-"strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Mot de passe"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Mot de passe (à nouveau)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Saisissez le même mot de passe que précédemment, pour vérification."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Supprimer"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Ajouter un objet %(verbose_name)s supplémentaire"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Supprimer ?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Merci pour le temps que vous avez accordé à ce site aujourd'hui."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Connectez-vous à nouveau"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Modification de votre mot de passe"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Mot de passe modifié avec succès"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Votre mot de passe a été modifié."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Pour des raisons de sécurité, saisissez votre ancien mot de passe puis votre "
-"nouveau mot de passe à deux reprises afin de vérifier qu'il est correctement "
-"saisi."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Ancien mot de passe"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nouveau mot de passe"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Modifier mon mot de passe"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Réinitialisation du mot de passe"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Mise à jour du mot de passe effectuée avec succès"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-"Votre mot de passe a été défini. Vous pouvez maintenant vous authentifier."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Confirmation de mise à jour du mot de passe"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Saisissez un nouveau mot de passe"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Saisissez deux fois votre nouveau mot de passe afin de vérifier qu'il est "
-"correctement saisi."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nouveau mot de passe :"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Confirmation du mot de passe :"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Échec lors de la mise à jour du mot de passe"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Le lien de mise à jour du mot de passe n'était pas valide, probablement en "
-"raison de sa précédente utilisation. Veuillez renouveler votre demande de "
-"mise à jour de mot de passe."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Mot de passe mis à jour avec succès"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Nous vous avons envoyé par courriel les instructions pour changer de mot de "
-"passe à l'adresse que vous avez indiquée. Vous devriez le recevoir "
-"rapidement."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Si vous ne recevez pas de message, vérifiez que vous avez saisi l'adresse "
-"avec laquelle vous vous êtes enregistré et contrôlez votre dossier de "
-"pourriels."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Vous recevez ce message en réponse à votre demande de réinitialisation du "
-"mot de passe de votre compte sur %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-"Veuillez vous rendre sur cette page et choisir un nouveau mot de passe :"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Votre nom d'utilisateur, en cas d'oubli :"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Merci d'utiliser notre site !"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "L'équipe %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Mot de passe perdu ? Saisissez votre adresse électronique ci-dessous et nous "
-"vous enverrons les instructions pour en créer un nouveau."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Adresse électronique :"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Réinitialiser mon mot de passe"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Toutes les dates"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(aucun-e)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Sélectionnez %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Sélectionnez l'objet %s à changer"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 9dda617..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.po
deleted file mode 100644
index b075276..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/fr/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,186 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# claudep <claude@2xlibre.net>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: French (http://www.transifex.com/projects/p/django/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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s disponible(s)"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Ceci est une liste des « %s » disponibles. Vous pouvez en choisir en les "
-"sélectionnant dans la zone ci-dessous, puis en cliquant sur la flèche "
-"« Choisir » entre les deux zones."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Écrivez dans cette zone pour filtrer la liste des « %s » disponibles."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtrer"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Tout choisir"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Cliquez pour choisir tous les « %s » en une seule opération."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Choisir"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Enlever"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Choix des « %s »"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Ceci est la liste des « %s » choisi(e)s. Vous pouvez en enlever en les "
-"sélectionnant dans la zone ci-dessous, puis en cliquant sur la flèche « "
-"Enlever » entre les deux zones."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Tout enlever"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Cliquez pour enlever tous les « %s » en une seule opération."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s sur %(cnt)s sélectionné"
-msgstr[1] "%(sel)s sur %(cnt)s sélectionnés"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Vous avez des modifications non sauvegardées sur certains champs éditables. "
-"Si vous lancez une action, ces modifications vont être perdues."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Vous avez sélectionné une action, mais vous n'avez pas encore sauvegardé "
-"certains champs modifiés. Cliquez sur OK pour sauver. Vous devrez "
-"réappliquer l'action."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Vous avez sélectionné une action, et vous n'avez fait aucune modification "
-"sur des champs. Vous cherchez probablement le bouton Envoyer et non le "
-"bouton Sauvegarder."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Janvier Février Mars Avril Mai Juin Juillet Août Septembre Octobre Novembre "
-"Décembre"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "D L M M J V S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Afficher"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Masquer"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Maintenant"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Horloge"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Choisir une heure"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Minuit"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6:00"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Midi"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Annuler"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Aujourd'hui"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Calendrier"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Hier"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Demain"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/fy_NL/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/fy_NL/LC_MESSAGES/django.mo
deleted file mode 100644
index 23b56a2..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/fy_NL/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/fy_NL/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/fy_NL/LC_MESSAGES/django.po
deleted file mode 100644
index 415beb9..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/fy_NL/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,835 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-04-25 07:05+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Western Frisian (Netherlands) (http://www.transifex.com/"
-"projects/p/django/language/fy_NL/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fy_NL\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr ""
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr ""
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr ""
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr ""
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr ""
-
-#: filters.py:238
-msgid "Yes"
-msgstr ""
-
-#: filters.py:239
-msgid "No"
-msgstr ""
-
-#: filters.py:253
-msgid "Unknown"
-msgstr ""
-
-#: filters.py:308
-msgid "Any date"
-msgstr ""
-
-#: filters.py:309
-msgid "Today"
-msgstr ""
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr ""
-
-#: filters.py:317
-msgid "This month"
-msgstr ""
-
-#: filters.py:321
-msgid "This year"
-msgstr ""
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr ""
-
-#: helpers.py:23
-msgid "Action:"
-msgstr ""
-
-#: models.py:25
-msgid "action time"
-msgstr ""
-
-#: models.py:28
-msgid "object id"
-msgstr ""
-
-#: models.py:29
-msgid "object repr"
-msgstr ""
-
-#: models.py:30
-msgid "action flag"
-msgstr ""
-
-#: models.py:31
-msgid "change message"
-msgstr ""
-
-#: models.py:36
-msgid "log entry"
-msgstr ""
-
-#: models.py:37
-msgid "log entries"
-msgstr ""
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr ""
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr ""
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr ""
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:781
-msgid "No fields changed."
-msgstr ""
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr ""
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr ""
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-
-#: options.py:1037
-msgid "No action selected."
-msgstr ""
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr ""
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr ""
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr ""
-
-#: options.py:1257
-msgid "Database error"
-msgstr ""
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] ""
-msgstr[1] ""
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] ""
-msgstr[1] ""
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr ""
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr ""
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr ""
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr ""
-
-#: sites.py:386
-msgid "Site administration"
-msgstr ""
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr ""
-
-#: widgets.py:90
-msgid "Date:"
-msgstr ""
-
-#: widgets.py:91
-msgid "Time:"
-msgstr ""
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr ""
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr ""
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr ""
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr ""
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr ""
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr ""
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr ""
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr ""
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr ""
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr ""
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr ""
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr ""
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr ""
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr ""
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr ""
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr ""
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr ""
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr ""
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr ""
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr ""
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr ""
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr ""
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr ""
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr ""
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr ""
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr ""
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr ""
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr ""
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr ""
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr ""
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr ""
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr ""
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr ""
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr ""
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr ""
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr ""
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr ""
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr ""
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr ""
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr ""
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr ""
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr ""
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr ""
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr ""
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr ""
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr ""
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr ""
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr ""
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr ""
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr ""
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr ""
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr ""
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr ""
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr ""
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr ""
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr ""
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr ""
-
-#: views/main.py:35
-msgid "(None)"
-msgstr ""
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr ""
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/fy_NL/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/fy_NL/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 8f20b69..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/fy_NL/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/fy_NL/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/fy_NL/LC_MESSAGES/djangojs.po
deleted file mode 100644
index f4e0e3e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/fy_NL/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,166 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-23 02:35+0100\n"
-"PO-Revision-Date: 2011-03-15 15:26+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: fy_NL\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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] ""
-msgstr[1] ""
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-
-#: static/admin/js/calendar.js:26
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-
-#: static/admin/js/calendar.js:27
-msgid "S M T W T F S"
-msgstr ""
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr ""
-
-#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:49
-#: static/admin/js/admin/DateTimeShortcuts.js:85
-msgid "Now"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:53
-msgid "Clock"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:81
-msgid "Choose a time"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:86
-msgid "Midnight"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:87
-msgid "6 a.m."
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Noon"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:92
-#: static/admin/js/admin/DateTimeShortcuts.js:204
-msgid "Cancel"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:144
-#: static/admin/js/admin/DateTimeShortcuts.js:197
-msgid "Today"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-msgid "Calendar"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:195
-msgid "Yesterday"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Tomorrow"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ga/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ga/LC_MESSAGES/django.mo
deleted file mode 100644
index 1482744..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ga/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ga/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ga/LC_MESSAGES/django.po
deleted file mode 100644
index d9884dc..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ga/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,883 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Michael Thornhill <michael@maithu.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/"
-"ga/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ga\n"
-"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
-"4);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "D'éirigh le scriosadh %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Ní féidir scriosadh %(name)s "
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "An bhfuil tú cinnte?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Scrios %(verbose_name_plural) roghnaithe"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Gach"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Tá"
-
-#: filters.py:239
-msgid "No"
-msgstr "Níl"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Gan aithne"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Aon dáta"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Inniu"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "7 lá a chuaigh thart"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Táim cinnte"
-
-#: filters.py:321
-msgid "This year"
-msgstr "An blian seo"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Le do thoil, logáil isteach arís cé go bhfuil to seisúin críochnaithe."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Aicsean:"
-
-#: models.py:25
-msgid "action time"
-msgstr "am aicsean"
-
-#: models.py:28
-msgid "object id"
-msgstr "id oibiacht"
-
-#: models.py:29
-msgid "object repr"
-msgstr "repr oibiacht"
-
-#: models.py:30
-msgid "action flag"
-msgstr "brat an aicsean"
-
-#: models.py:31
-msgid "change message"
-msgstr "teachtaireacht athrú"
-
-#: models.py:36
-msgid "log entry"
-msgstr "loga iontráil"
-
-#: models.py:37
-msgid "log entries"
-msgstr "loga iontrálacha"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" curtha isteach."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "\"%(object)s\" - %(changes)s aithrithe"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s.\" scrioste"
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Oibiacht LogEntry"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Dada"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Athraithe %s"
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "agus"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Suimithe %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Athraithe %(list)s le %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Scriosaithe %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Dada réimse aithraithe"
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Chuir an %(name)s·\"%(obj)s\"·go rathúil.·Is féidir leat é a cuir in eagar "
-"thíos."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Bhí %(name)s \"%(obj)s\" breisithe go rathúil"
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Bhí an %(name)s \"%(obj)s\" aithraithe to rathúil"
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Ní mór Míreanna a roghnú chun caingne a dhéanamh orthu. Níl aon mhíreanna a "
-"athrú."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Uimh gníomh roghnaithe."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Cuir %s le"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Níl réad le hainm %(name)s agus eochair %(key)r ann."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Aithrigh %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Botún bunachar sonraí"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s athraithe go rathúil"
-msgstr[1] "%(count)s %(name)s athraithe go rathúil"
-msgstr[2] "%(count)s %(name)s athraithe go rathúil"
-msgstr[3] "%(count)s %(name)s athraithe go rathúil"
-msgstr[4] "%(count)s %(name)s athraithe go rathúil"
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s roghnaithe"
-msgstr[1] "Gach %(total_count)s roghnaithe"
-msgstr[2] "Gach %(total_count)s roghnaithe"
-msgstr[3] "Gach %(total_count)s roghnaithe"
-msgstr[4] "Gach %(total_count)s roghnaithe"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 as %(cnt)s roghnaithe."
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Bhí %(name)s \"%(obj)s\" scrioste go rathúil."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Athraigh stáir %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Logáil isteach"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Riaracháin an suíomh"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s riaracháin"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Dáta:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Am:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Cuardach"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Cuir le"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Ní bhfuarthas an leathanach"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Tá brón orainn, ach ní bhfuarthas an leathanach iarraite."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Baile"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Botún freastalaí"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Botún freastalaí (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Botún Freastalaí <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Rith an gníomh roghnaithe"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Té"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr ""
-"Cliceáil anseo chun na hobiacht go léir a roghnú ar fud gach leathanach"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Roghnaigh gach %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Scroiseadh modhnóir"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Fáilte"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Doiciméadúchán"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Athraigh focal faire"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Logáil amach"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Riarthóir suíomh Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Riarachán Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Cuir le"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Stair"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Breath ar suíomh"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Ceartaigh na botúin thíos le do thoil"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Cuir %(name)s le"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Scagaire"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Bain as sórtáil"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Sórtáil tosaíocht: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Toggle sórtáil"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Cealaigh"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Má scriossan tú %(object_name)s '%(escaped_object)s' scriosfaidh oibiachtí "
-"gaolta. Ach níl cead ag do cuntas na oibiacht a leanúint a scriosadh:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Bheadh Scriosadh an %(object_name)s '%(escaped_object)s' a cheangal ar an "
-"méid seo a leanas a scriosadh nithe cosanta a bhaineann le:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"An bhfuil tú cinnte na %(object_name)s \"%(escaped_object)s\" a scroiseadh?"
-"Beidh gach oibiacht a leanúint scroiste freisin:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Táim cinnte"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Scrios na réadanna"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Scriosadh an roghnaithe %(objects_name)s a bheadh mar thoradh ar na nithe "
-"gaolmhara a scriosadh, ach níl cead do chuntas a scriosadh na cineálacha seo "
-"a leanas na cuspóirí:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Teastaíonn scriosadh na %(objects_name)s roghnaithe scriosadh na hoibiacht "
-"gaolta cosainte a leanúint:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"An bhfuil tú cinnte gur mian leat a scriosadh %(objects_name)s roghnaithe? "
-"Beidh gach ceann de na nithe seo a leanas agus a n-ítimí gaolta scroiste:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Trí %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Athraigh"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Níl cead agat aon rud a cuir in eagar."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Aicsean úrnua"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Mo Aicseain"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Dada ar fáil"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Inneachair anaithnid"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Tá rud éigin mícheart le suitéail do bunachar sonraí. Déan cinnte go bhfuil "
-"boird an bunachar sonraI cruthaithe cheana, agus déan cinnte go bhfuil do "
-"úsaideoir in ann an bunacchar sonraí a léamh."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Focal faire:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Dearmad déanta ar do focal faire nó ainm úsaideora"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Dáta/am"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Úsaideoir"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Aicsean"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Níl stáir aitraithe ag an oibiacht seo agús is dócha ná cuir le tríd an an "
-"suíomh riarachán."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Taispéan gach rud"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Sábháil"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Cuardach"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s toradh"
-msgstr[1] "%(counter)s torthaí"
-msgstr[2] "%(counter)s torthaí"
-msgstr[3] "%(counter)s torthaí"
-msgstr[4] "%(counter)s torthaí"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s iomlán"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Sabháil mar nua"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Sabháil agus cuir le ceann eile"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Sábhail agus lean ag cuir in eagar"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Ar dtús, iontráil ainm úsaideoir agus focal faire. Ansin, beidh tú in ann "
-"cuir in eagar níos mó roghaí úsaideoira."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Cuir isteach ainm úsáideora agus focal faire."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Iontráil focal faire nua le hadhaigh an úsaideor <strong>%(username)s</"
-"strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Focal faire"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Focal faire (arís)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Iontráíl an focal faire céanna mar thuas, le fíorúchán."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Tóg amach"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Cuir eile %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Cealaigh?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Go raibh maith agat le hadhaigh do cuairt ar an suíomh idirlínn inniú."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Logáil isteacj arís"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Athrú focal faire"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Athrú an focal faire rathúil"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Bhí do focal faire aithraithe."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Le do thoil, iontráil do sean-focal faire, ar son slándáil, agus ansin "
-"iontráil do focal faire dhá uaire cé go mbeimid in ann a seiceal go bhfuil "
-"sé scríobhte isteach i gceart."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Sean-focal faire "
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Focal faire nua"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Athraigh mo focal faire"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Athsocraigh focal faire"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Athshocraigh an focal faire críochnaithe"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Tá do focal faire réidh. Is féidir leat logáil isteach anois."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Deimhniú athshocraigh focal faire"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Cuir isteach focal faire nua"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Le do thoil, iontráil do focal faire dhá uaire cé go mbeimid in ann a "
-"seiceal go bhfuil sé scríobhte isteach i gceart."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Focal faire nua:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Deimhnigh focal faire:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Athshocraigh focal faire mí-rathúil"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Bhí nasc athshocraigh an focal faire mícheart, b'fheidir mar go raibh sé "
-"úsaidte cheana. Le do thoil, iarr ar athsocraigh focal faire nua."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Athshocraigh focal faire mí-rathúil"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-"Le do thoil té go dtí an leathanach a leanúint agus roghmaigh focal faire "
-"nua:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Do ainm úsaideoir, má tá dearmad déanta agat."
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Go raibh maith agat le hadhaigh do cuairt!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Foireann an %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Athsocraigh mo focal faire"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Gach dáta"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Dada)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Roghnaigh %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Roghnaigh %s a athrú"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 9321a79..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.po
deleted file mode 100644
index bfed3a7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ga/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,189 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Michael Thornhill <michael@maithu.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/"
-"ga/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ga\n"
-"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
-"4);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s ar fáil"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Is é seo an liosta %s ar fáil. Is féidir leat a roghnú roinnt ag roghnú acu "
-"sa bhosca thíos agus ansin cliceáil ar an saighead \"Roghnaigh\" idir an dá "
-"boscaí."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-"Scríobh isteach sa bhosca seo a scagadh síos ar an liosta de %s ar fáil."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Scagaire"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Roghnaigh iomlán"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Cliceáil anseo chun %s go léir a roghnú."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Roghnaigh"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Bain amach"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Roghnófar %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Is é seo an liosta de %s roghnaithe. Is féidir leat iad a bhaint amach má "
-"roghnaionn tú cuid acu sa bhosca thíos agus ansin cliceáil ar an saighead "
-"\"Bain\" idir an dá boscaí."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Scrois gach ceann"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Cliceáil anseo chun %s go léir roghnaithe a scroiseadh."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s de %(cnt)s roghnaithe"
-msgstr[1] "%(sel)s de %(cnt)s roghnaithe"
-msgstr[2] "%(sel)s de %(cnt)s roghnaithe"
-msgstr[3] "%(sel)s de %(cnt)s roghnaithe"
-msgstr[4] "%(sel)s de %(cnt)s roghnaithe"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Tá aithrithe nach bhfuil sabhailte ar chuid do na réimse. Má ritheann tú "
-"gníomh, caillfidh tú do chuid aithrithe."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Tá gníomh roghnaithe agat, ach níl do aithrithe sabhailte ar cuid de na "
-"réímse. Clic OK chun iad a sábháil. Caithfidh tú an gníomh a rith arís."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Tá gníomh roghnaithe agat, ach níl do aithrithe sabhailte ar cuid de na "
-"réímse. Is dócha go bhfuil tú ag iarraidh an cnaipe Té ná an cnaipe Sábháil."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Eanair Feabhra Márta Aibreán Bealtaine Meitheamh Iúil Lúnasa Mean Fómhair "
-"Deireadh Fómhair Nollaig"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "D L M C D A S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Taispeán"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Folaigh"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Anois"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Clog"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Roghnaigh am"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Meán oíche"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Nóin"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Cealaigh"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Inniu"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Féilire"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Inné"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Amárach"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/gl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/gl/LC_MESSAGES/django.mo
deleted file mode 100644
index 988c9b6..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/gl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/gl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/gl/LC_MESSAGES/django.po
deleted file mode 100644
index 646ccb3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/gl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,889 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# fasouto <fsoutomoure@gmail.com>, 2011-2012
-# fonso <fonzzo@gmail.com>, 2011,2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Leandro Regueiro <leandro.regueiro@gmail.com>, 2013
-# Oscar Carballal <oscar.carballal@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-09-07 12:02+0000\n"
-"Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
-"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/"
-"gl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Borrado exitosamente %(count)d %(items)s"
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Non foi posíbel eliminar %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "¿Está seguro?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Borrar %(verbose_name_plural)s seleccionados."
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Todo"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Si"
-
-#: filters.py:239
-msgid "No"
-msgstr "Non"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Descoñecido"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Calquera data"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Hoxe"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Últimos 7 días"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Este mes"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Este ano"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Por favor, insira os %(username)s e contrasinal dunha conta de persoal. Teña "
-"en conta que ambos os dous campos distingues maiúsculas e minúsculas."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Por favor ingrese de novo, a súa sesión expirou."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Acción:"
-
-#: models.py:25
-msgid "action time"
-msgstr "hora da acción"
-
-#: models.py:28
-msgid "object id"
-msgstr "id do obxecto"
-
-#: models.py:29
-msgid "object repr"
-msgstr "repr do obxecto"
-
-#: models.py:30
-msgid "action flag"
-msgstr "código do tipo de acción"
-
-#: models.py:31
-msgid "change message"
-msgstr "cambiar mensaxe"
-
-#: models.py:36
-msgid "log entry"
-msgstr "entrada de rexistro"
-
-#: models.py:37
-msgid "log entries"
-msgstr "entradas de rexistro"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Engadido \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Modificados \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Borrados \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Obxecto LogEntry"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Ningún"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Modificado(s) %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "e"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Engadido %(name)s \"%(object)s\""
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Modificáronse %(list)s en %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Elimináronse %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Non se modificou ningún campo."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "Engadiuse correctamente o/a %(name)s \"%(obj)s\" Pode editalo embaixo."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"O/a %(name)s \"%(obj)s\" foi engadido correctamente. Pode engadir outro/a "
-"%(name)s embaixo."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Engadiuse correctamente o/a %(name)s \"%(obj)s\"."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"O/a %(name)s \"%(obj)s\" foi modificado correctamente. Pode editalo de novo "
-"embaixo."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"O/a %(name)s \"%(obj)s\" for modificalo correctamente. Pode engadir outro/a "
-"%(name)s embaixo."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Modificouse correctamente o/a %(name)s \"%(obj)s\"."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Deb seleccionar ítems para poder facer accións con eles. Ningún ítem foi "
-"cambiado."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Non se elixiu ningunha acción."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Engadir %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "O obxecto %(name)s con primary key %(key)r non existe."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Modificar %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Erro da base de datos"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s foi cambiado satisfactoriamente."
-msgstr[1] "%(count)s %(name)s foron cambiados satisfactoriamente."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s seleccionado."
-msgstr[1] "Tódolos %(total_count)s seleccionados."
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 de %(cnt)s seleccionados."
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Eliminouse correctamente o/a %(name)s \"%(obj)s\"."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Histórico de cambios: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Iniciar sesión"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Administración do sitio"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s administración"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Data:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Hora:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Procurar"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Engadir outro"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Actualmente:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Modificar:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Páxina non atopada"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Sentímolo, pero non se atopou a páxina solicitada."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Inicio"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Erro no servidor"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Erro no servidor (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Erro no servidor <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Ocorreu un erro. Os administradores do sitio foron informados por email e "
-"debería ser arranxado pronto. Grazas pola súa paciencia."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Executar a acción seleccionada"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Ir"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Fai clic aquí para seleccionar os obxectos en tódalas páxinas"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Seleccionar todos os %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Limpar selección"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Benvido,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Documentación"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Cambiar contrasinal"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Rematar sesión"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Administración de sitio Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administración de Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Engadir"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Historial"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Ver no sitio"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Corrixa os erros de embaixo."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Engadir %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtro"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Eliminar da clasificación"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Prioridade de clasificación: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Activar clasificación"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Eliminar"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Borrar o %(object_name)s '%(escaped_object)s' resultaría na eliminación de "
-"elementos relacionados, pero a súa conta non ten permiso para borrar os "
-"seguintes tipos de elementos:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Para borrar o obxecto %(object_name)s '%(escaped_object)s' requiriríase "
-"borrar os seguintes obxectos protexidos relacionados:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Seguro que quere borrar o %(object_name)s \"%(escaped_object)s\"? "
-"Eliminaranse os seguintes obxectos relacionados:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Si, estou seguro"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Eliminar múltiples obxectos"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Borrar os obxectos %(objects_name)s seleccionados resultaría na eliminación "
-"de obxectos relacionados, pero a súa conta non ten permiso para borrar os "
-"seguintes tipos de obxecto:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Para borrar os obxectos %(objects_name)s relacionados requiriríase eliminar "
-"os seguintes obxectos protexidos relacionados:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Está seguro de que quere borrar os obxectos %(objects_name)s seleccionados? "
-"Serán eliminados todos os seguintes obxectos e elementos relacionados on "
-"eles:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Por %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modelos na aplicación %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Modificar"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Non ten permiso para editar nada."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Accións recentes"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "As miñas accións"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Ningunha dispoñíbel"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Contido descoñecido"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Hai un problema coa súa instalación de base de datos. Asegúrese de que se "
-"creasen as táboas axeitadas na base de datos, e de que o usuario apropiado "
-"teña permisos para lela."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Contrasinal:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "¿Olvidou o usuario ou contrasinal?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Data/hora"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Usuario"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Acción"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Este obxecto non ten histórico de cambios. Posibelmente non se creou usando "
-"este sitio de administración."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Amosar todo"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Gardar"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Busca"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s resultado. "
-msgstr[1] "%(counter)s resultados."
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s en total"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Gardar como novo"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Gardar e engadir outro"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Gardar e seguir modificando"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Primeiro insira un nome de usuario e un contrasinal. Despois poderá editar "
-"máis opcións de usuario."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Introduza un nome de usuario e contrasinal."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Insira un novo contrasinal para o usuario <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Contrasinal"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Contrasinal (outra vez)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Insira o mesmo contrasinal ca enriba para verificalo."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Retirar"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Engadir outro %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "¿Eliminar?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Grazas polo tempo que dedicou ao sitio web."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Entrar de novo"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Cambiar o contrasinal"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "O seu contrasinal cambiouse correctamente."
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Cambiouse o seu contrasinal."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Por razóns de seguridade, introduza o contrasinal actual. Despois introduza "
-"dúas veces o contrasinal para verificarmos que o escribiu correctamente."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Contrasinal antigo"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Contrasinal novo"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Cambiar o contrasinal"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Recuperar o contrasinal"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Reseteo do contrasinal completo"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-"A túa clave foi gardada.\n"
-"Xa podes entrar."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Confirmación de reseteo da contrasinal"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Insira o novo contrasinal"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Por favor insira a súa contrasinal dúas veces para que podamos verificar se "
-"a escribiu correctamente."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Contrasinal novo:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Confirmar contrasinal:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Reseteo da contrasinal non satisfactorio."
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"A ligazón de reseteo da contrasinal non é válida, posiblemente porque xa foi "
-"usada. Por favor pida un novo reseteo da contrasinal."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "O contrasinal foi recuperado correctamente"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Acabamos de enviarlle as instrucións para configurar o contrasinal ao "
-"enderezo de email que nos indicou. Debería recibilas axiña."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Recibe este email porque solicitou restablecer o contrasinal para a súa "
-"conta de usuario en %(site_name)s"
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Por favor vaia á seguinte páxina e elixa una nova contrasinal:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "No caso de que o esquecese, o seu nome de usuario é:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Grazas por usar o noso sitio web!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "O equipo de %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Esqueceu o contrasinal? Insira o seu enderezo de email embaixo e "
-"enviarémoslle as instrucións para configurar un novo."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Enderezo de correo electrónico:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Recuperar o meu contrasinal"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Todas as datas"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Ningún)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Seleccione un/unha %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Seleccione %s que modificar"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 3fc94ec..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 3c55641..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/gl/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,187 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# fasouto <fsoutomoure@gmail.com>, 2011
-# fonso <fonzzo@gmail.com>, 2011,2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Leandro Regueiro <leandro.regueiro@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-09-07 11:49+0000\n"
-"Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
-"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/"
-"gl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s dispoñíbeis"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Esta é unha lista de %s dispoñíbeis. Pode escoller algúns seleccionándoos na "
-"caixa inferior e a continuación facendo clic na frecha \"Escoller\" situada "
-"entre as dúas caixas."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Escriba nesta caixa para filtrar a lista de %s dispoñíbeis."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtro"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Escoller todo"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Prema para escoller todos/as os/as '%s' dunha vez."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Escoller"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Retirar"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s escollido/a(s)"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Esta é a lista de %s escollidos/as. Pode eliminar algúns seleccionándoos na "
-"caixa inferior e a continuación facendo clic na frecha \"Eliminar\" situada "
-"entre as dúas caixas."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Retirar todos"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Faga clic para eliminar da lista todos/as os/as '%s' escollidos/as."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s de %(cnt)s escollido"
-msgstr[1] "%(sel)s de %(cnt)s escollidos"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Tes cambios sen guardar en campos editables individuales. Se executas unha "
-"acción, os cambios non gardados perderanse."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Escolleu unha acción, pero aínda non gardou os cambios nos campos "
-"individuais. Prema OK para gardar. Despois terá que volver executar a acción."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Escolleu unha acción, pero aínda non gardou os cambios nos campos "
-"individuais. Probabelmente estea buscando o botón Ir no canto do botón "
-"Gardar."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"xaneiro febreiro marzo abril maio xuño xullo agosto setembro outubro "
-"novembro decembro"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "D L M M X V S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Amosar"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Esconder"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Agora"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Reloxo"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Escolla unha hora"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Medianoite"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 da mañá"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Mediodía"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Hoxe"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Calendario"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Onte"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Mañá"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/he/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/he/LC_MESSAGES/django.mo
deleted file mode 100644
index b076a30..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/he/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/he/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/he/LC_MESSAGES/django.po
deleted file mode 100644
index e4dda5b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/he/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,872 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Alex Gaynor <alex.gaynor@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Meir Kriheli <mkriheli@gmail.com>, 2011-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-02 11:45+0000\n"
-"Last-Translator: Meir Kriheli <mkriheli@gmail.com>\n"
-"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s נמחקו בהצלחה."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "לא ניתן למחוק %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "האם את/ה בטוח/ה ?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "מחק %(verbose_name_plural)s שנבחרו"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "הכל"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "כן"
-
-#: filters.py:239
-msgid "No"
-msgstr "לא"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "לא ידוע"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "כל תאריך"
-
-#: filters.py:309
-msgid "Today"
-msgstr "היום"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "בשבוע האחרון"
-
-#: filters.py:317
-msgid "This month"
-msgstr "החודש"
-
-#: filters.py:321
-msgid "This year"
-msgstr "השנה"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"נא להזין את %(username)s והסיסמה הנכונים לחשבון איש צוות. נא לשים לב כי שני "
-"השדות רגישים לאותיות גדולות/קטנות."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "עליך להתחבר שנית כי פג הזמן המוקצב לך."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "פעולה"
-
-#: models.py:25
-msgid "action time"
-msgstr "זמן פעולה"
-
-#: models.py:28
-msgid "object id"
-msgstr "מזהה אובייקט"
-
-#: models.py:29
-msgid "object repr"
-msgstr "ייצוג אובייקט"
-
-#: models.py:30
-msgid "action flag"
-msgstr "דגל פעולה"
-
-#: models.py:31
-msgid "change message"
-msgstr "הערה לשינוי"
-
-#: models.py:36
-msgid "log entry"
-msgstr "רישום יומן"
-
-#: models.py:37
-msgid "log entries"
-msgstr "רישומי יומן"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "בוצעה הוספת \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "בוצע שינוי \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "בוצעה מחיקת \"%(object)s\"."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "אובייקט LogEntry"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "ללא"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s שונה."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "ו"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "בוצעה הוספת %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "בוצע שינוי %(list)s עבור %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "בוצעה מחיקת %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "אף שדה לא השתנה."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "הוספת %(name)s \"%(obj)s\" בוצעה בהצלחה. ניתן לערוך אותו שוב מתחת."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"הוספת %(name)s \"%(obj)s\" בוצעה בהצלחה. ניתן להוסיף עוד %(name)s מתחת."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "הוספת %(name)s \"%(obj)s\" בוצעה בהצלחה."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr "עדכון %(name)s \"%(obj)s\" בוצע בהצלחה. ניתן לערוך שוב מתחת."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr "עדכון %(name)s \"%(obj)s\" בוצע בהצלחה. ניתן להוסיף עוד %(name)s מתחת."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "שינוי %(name)s \"%(obj)s\" בוצע בהצלחה."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr "יש לסמן פריטים כדי לבצע עליהם פעולות. לא שונו פריטים."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "לא נבחרה פעולה."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "הוספת %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "הפריט %(name)s עם המפתח הראשי %(key)r אינו קיים."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "שינוי %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "שגיאת בסיס נתונים"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "שינוי %(count)s %(name)s בוצע בהצלחה."
-msgstr[1] "שינוי %(count)s %(name)s בוצע בהצלחה."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s נבחר"
-msgstr[1] "כל ה־%(total_count)s נבחרו"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 מ %(cnt)s נבחרים"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "מחיקת %(name)s \"%(obj)s\" בוצעה בהצלחה."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "היסטוריית שינוי: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"מחיקת %(class_name)s %(instance)s תדרוש מחיקת האובייקטים הקשורים והמוגנים "
-"הבאים: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "כניסה"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "ניהול אתר"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "ניהול %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "תאריך:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "שעה:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "חפש"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "הוסף עוד אחת"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "נוכחי:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "שינוי:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "דף לא קיים"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "אנו מצטערים, לא ניתן למצוא את הדף המבוקש."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "דף הבית"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "שגיאת שרת"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "שגיאת שרת (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "שגיאת שרת <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"התרחשה שגיאה. היא דווחה למנהלי האתר בדוא\"ל ותתוקן בקרוב. תודה על סבלנותך."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "הפעל את הפעולה שבחרת בה."
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "בצע"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "לחיצה כאן תבחר את האובייקטים בכל העמודים"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "בחירת כל %(total_count)s ה־%(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "איפוס בחירה"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "שלום,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "תיעוד"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "שינוי סיסמה"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "יציאה"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "ניהול אתר Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "ניהול Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "הוספה"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "היסטוריה"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "צפיה באתר"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "נא לתקן את השגיאות המופיעות מתחת."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "נא לתקן את השגיאות מתחת."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "הוספת %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "סינון"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "הסרה ממיון"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "עדיפות מיון: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "החלף כיוון מיון"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "מחיקה"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"מחיקת %(object_name)s '%(escaped_object)s' מצריכה מחיקת אובייקטים מקושרים, "
-"אך לחשבון שלך אין הרשאות למחיקת סוגי האובייקטים הבאים:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"מחיקת ה%(object_name)s '%(escaped_object)s' תדרוש מחיקת האובייקטים הקשורים "
-"והמוגנים הבאים:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"האם ברצונך למחוק את %(object_name)s \"%(escaped_object)s\"? כל הפריטים "
-"הקשורים הבאים יימחקו:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "כן, אני בטוח/ה"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "מחק כמה פריטים"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"מחיקת ב%(objects_name)s הנבחרת תביא במחיקת אובייקטים קשורים, אבל החשבון שלך "
-"אינו הרשאה למחוק את הסוגים הבאים של אובייקטים:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"מחיקת ה%(objects_name)s אשר סימנת תדרוש מחיקת האובייקטים הקשורים והמוגנים "
-"הבאים:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"האם אתה בטוח שאתה רוצה למחוק את ה%(objects_name)s הנבחר? כל האובייקטים הבאים "
-"ופריטים הקשורים להם יימחקו:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " לפי %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "מודלים ביישום %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "שינוי"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "אין לך הרשאות לעריכה."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "פעולות אחרונות"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "הפעולות שלי"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "לא נמצאו"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "תוכן לא ידוע"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"משהו שגוי בהתקנת בסיס הנתונים שלך. נא לוודא שנוצרו טבלאות בסיס הנתונים "
-"המתאימות, ובסיס הנתונים ניתן לקריאה על ידי המשתמש המתאים."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "סיסמה:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "שכחת את שם המשתמש והסיסמה שלך ?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "תאריך/שעה"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "משתמש"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "פעולה"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"לאובייקט זה אין היסטוריית שינוי. כנראה לא השתמשו בממשק הניהול הזה להוספתו."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "הצג הכל"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "שמירה"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "חיפוש"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "תוצאה %(counter)s"
-msgstr[1] "%(counter)s תוצאות"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s סה\"כ"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "שמירה כחדש"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "שמירה והוספת אחר"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "שמירה והמשך עריכה"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"ראשית יש להזין שם משתמש וסיסמה. לאחר מכן יהיה ביכולתך לערוך אפשרויות נוספות "
-"עבור המשתמש."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "נא לשים שם משתמש וסיסמה."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "יש להזין סיסמה חדשה עבור המשתמש <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "סיסמה"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "סיסמה (שוב)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "יש להזין את אותה סיסמה שוב,לאימות."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "להסיר"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "הוספת %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "מחיקה ?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "תודה על בילוי זמן איכות עם האתר."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "התחבר/י שוב"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "שינוי סיסמה"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "הסיסמה שונתה בהצלחה"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "סיסמתך שונתה."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"נא להזין את סיסמתך הישנה, לצרכי אבטחה, ולאחר מכן את סיסמתך החדשה פעמיים כדי "
-"שנוכל לוודא שהקלדת אותה כראוי."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "סיסמה ישנה"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "סיסמה חדשה"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "שנה את סיסמתי"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "איפוס סיסמה"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "איפוס הסיסמה הושלם"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "ססמתך נשמרה. כעת ניתן להתחבר."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "אימות איפוס סיסמה"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "הזנת סיסמה חדשה"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr "נא להזין את סיסמתך החדשה פעמיים כדי שנוכל לוודא שהקלדת אותה כראוי."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "סיסמה חדשה:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "אימות סיסמה:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "איפוס הסיסמה נכשל"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"הקישור לאיפוס הסיסמה אינו חוקי. ייתכן והשתמשו בו כבר. נא לבקש איפוס סיסמה "
-"חדש."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "הסיסמה אופסה בהצלחה"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"שלחנו אליך דוא\"ל עם הוראות לאיפוס הסיסמה. ההוראות אמורות להתקבל בקרוב."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"אם הדוא\"ל לא הגיע, נא לוודא שהזנת כתובת נכונה בעת הרישום ולבדוק את תיקיית "
-"דואר הזבל."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"הודעה זו נשלחה אליך עקב בקשתך לאיפוס הסיסמה עבור המשתמש שלך באתר "
-"%(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "נא להגיע לעמוד הבא ולבחור סיסמה חדשה:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "שם המשתמש שלך, במקרה ששכחת:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "תודה על השימוש באתר שלנו!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "צוות %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"שכחת את סיסמתך ? נא להזין את כתובת הדוא\"ל מתחת, ואנו נשלח הוראות לקביעת "
-"סיסמה חדשה."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "כתובת דוא\"ל:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "אפס את סיסמתי"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "כל התאריכים"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(אין)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "בחירת %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "בחירת %s לשינוי"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 708081d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 7e3fdab..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/he/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,182 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Alex Gaynor <alex.gaynor@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Meir Kriheli <mkriheli@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s זמינות"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"זו רשימת %s הזמינים לבחירה. ניתן לבחור חלק ע\"י סימון בתיבה מתחת ולחיצה על "
-"חץ \"בחר\" בין שתי התיבות."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "ניתן להקליד בתיבה זו כדי לסנן %s."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "סינון"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "בחירת הכל"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "בחירת כל ה%s בבת אחת."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "בחר"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "הסרה"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s אשר נבחרו"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"זו רשימת %s אשר נבחרו. ניתן להסיר חלק ע\"י בחירה בתיבה מתחת ולחיצה על חץ "
-"\"הסרה\" בין שתי התיבות."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "הסרת הכל"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "הסרת כל %s אשר נבחרו בבת אחת."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s מ %(cnt)s נבחרות"
-msgstr[1] "%(sel)s מ %(cnt)s נבחרות"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"יש לך שינויים שלא נשמרו על שדות יחידות. אם אתה מפעיל פעולה, שינויים שלא "
-"נשמרו יאבדו."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"בחרת פעולה, אבל עוד לא שמרת את השינויים לשדות בודדים. אנא לחץ על אישור כדי "
-"לשמור. יהיה עליך להפעיל את הפעולה עוד פעם."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"בחרת פעולה, ולא עשיתה שינויימ על שדות. אתה כנראה מחפש את הכפתור ללכת במקום "
-"הכפתור לשמור."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"ינואר פברואר מרץ אפריל מאי יוני יולי אוגוסט ספטמבר אוקטובר נובמבר דצמבר"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "א ב ג ד ה ו ש"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "הצג"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "הסתר"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "כעת"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "שעון"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "בחירת שעה"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "חצות"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 בבוקר"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "12 בצהריים"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "ביטול"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "היום"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "לוח שנה"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "אתמול"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "מחר"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/hi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/hi/LC_MESSAGES/django.mo
deleted file mode 100644
index b2dea30..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/hi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/hi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/hi/LC_MESSAGES/django.po
deleted file mode 100644
index e444f8b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/hi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,881 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# आलोक कुमार <alok.kumar@gmail.com>, 2013
-# Chandan kumar <chandankumar.093047@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# pratik kumar <kpratik217@gmail.com>, 2013
-# Sandeep Satavlekar <sandysat@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/"
-"hi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s सफलतापूर्वक हटा दिया गया है| |"
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "%(name)s नहीं हटा सकते"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "क्या आप निश्चित हैं?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "चुने हुए %(verbose_name_plural)s हटा दीजिये "
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "सभी"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "हाँ"
-
-#: filters.py:239
-msgid "No"
-msgstr "नहीं"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "अनजान"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "कोई भी तारीख"
-
-#: filters.py:309
-msgid "Today"
-msgstr "आज"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "पिछले 7 दिन"
-
-#: filters.py:317
-msgid "This month"
-msgstr "इस महीने"
-
-#: filters.py:321
-msgid "This year"
-msgstr "इस साल"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"कृपया कर्मचारी खाते का सही %(username)s व कूटशब्द भरें। भरते समय दीर्घाक्षर और लघु अक्षर "
-"का खयाल रखें।"
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "कृपया फिर से प्रवेश करें, क्योंकि आपका सत्र समाप्त हो गया है |"
-
-#: helpers.py:23
-msgid "Action:"
-msgstr " क्रिया:"
-
-#: models.py:25
-msgid "action time"
-msgstr "कार्य समय"
-
-#: models.py:28
-msgid "object id"
-msgstr "वस्तु आई डी "
-
-#: models.py:29
-msgid "object repr"
-msgstr "वस्तु प्रतिनिधित्व"
-
-#: models.py:30
-msgid "action flag"
-msgstr "कार्य ध्वज"
-
-#: models.py:31
-msgid "change message"
-msgstr "परिवर्तन सन्देश"
-
-#: models.py:36
-msgid "log entry"
-msgstr "लॉग प्रविष्टि"
-
-#: models.py:37
-msgid "log entries"
-msgstr "लॉग प्रविष्टियाँ"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" को जोड़ा गया."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "परिवर्तित \"%(object)s\" - %(changes)s "
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" को नष्ट कर दिया है."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "LogEntry ऑब्जेक्ट"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "कोई नहीं"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s को बदला गया हैं"
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "और"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" को जोडा गया हैं"
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" की %(list)s बदला गया है"
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" निकाला गया है"
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "कोई क्षेत्र नहीं बदला"
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" कामयाबी से जोडा गया हैं । आप इसे फिर से संपादित कर सकते हैं"
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-" %(name)s \"%(obj)s\" सफलतापूर्वक जोड़ दिया गया। आप चाहें तो नीचे एक और %(name)s "
-"जोड़ सकते हैं।"
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" को कामयाबी से जोडा गया है"
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-" %(name)s \"%(obj)s\" सफलतापूर्वक जोड़ दिया गया। आप चाहें तो नीचे इसे बदल भी सकते हैं।"
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-" %(name)s \"%(obj)s\" सफलतापूर्वक बदल दिया गया। आप चाहें तो नीचे एक और %(name)s "
-"जोड़ सकते हैं।"
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" को कामयाबी से बदला गया हैं"
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr "कार्रवाई हेतु आयटम सही अनुक्रम में चुने जाने चाहिए | कोई आइटम नहीं बदले गये हैं."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "कोई कार्रवाई नहीं चुनी है |"
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%s बढाएं"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s नामक कोई वस्तू जिस की प्राथमिक कुंजी %(key)r हो, अस्तित्व में नहीं हैं |"
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s बदलो"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "डेटाबेस त्रुटि"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s का परिवर्तन कामयाब हुआ |"
-msgstr[1] "%(count)s %(name)s का परिवर्तन कामयाब हुआ |"
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s चुने"
-msgstr[1] "सभी %(total_count)s चुने "
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "%(cnt)s में से 0 चुने"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" को कामयाबी से निकाला गया है"
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "इतिहास बदलो: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"%(object_name)s को हटाने के लिए '%(escaped_object)s' को निम्नलिखित संरक्षित संबंधित "
-"वस्तुओं को हटाने की आवश्यकता होगी:"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "लॉगिन"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "साइट प्रशासन"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s प्रशासन"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "तिथि:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "समय:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "लुक अप"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "अन्य बढाएं"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "फ़िलहाल - "
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "बदलाव -"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "पृष्ठ लापता"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "क्षमा कीजिए पर निवेदित पृष्ठ लापता है ।"
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "गृह"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "सर्वर त्रुटि"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "सर्वर त्रुटि (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "सर्वर त्रुटि <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"एक त्रुटि मिली है। इसकी जानकारी स्थल के संचालकों को डाक द्वारा दे दी गई है, और यह जल्द "
-"ठीक हो जानी चाहिए। धीरज रखने के लिए शुक्रिया।"
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "चयनित कार्रवाई चलाइये"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "आगे बढ़े"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "सभी पृष्ठों पर मौजूद वस्तुओं को चुनने के लिए यहाँ क्लिक करें "
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "तमाम %(total_count)s %(module_name)s चुनें"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "चयन खालिज किया जाये "
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "आपका स्वागत है,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "दस्तावेज़ीकरण"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "कूटशब्द बदलें"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "लॉग आउट"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "ज्याँगो साइट प्रशासन"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "ज्याँगो प्रशासन"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "बढाएं"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "इतिहास"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "साइट पे देखें"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "कृपया नीचे पायी गयी गलतियाँ ठीक करें ।"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s बढाएं"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "छन्नी"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "श्रेणीकरण से हटाये "
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "श्रेणीकरण प्राथमिकता : %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "टॉगल श्रेणीकरण"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "मिटाएँ"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' को मिटाने पर सम्बंधित वस्तुएँ भी मिटा दी "
-"जाएगी, परन्तु आप के खाते में निम्नलिखित प्रकार की वस्तुओं को मिटाने की अनुमति नहीं हैं |"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' को हटाने के लिए उनसे संबंधित निम्नलिखित "
-"संरक्षित वस्तुओं को हटाने की आवश्यकता होगी:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"क्या आप %(object_name)s \"%(escaped_object)s\" हटाना चाहते हैं? निम्नलिखित सभी "
-"संबंधित वस्तुएँ नष्ट की जाएगी"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "हाँ, मैंने पक्का तय किया हैं "
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "अनेक वस्तुएं हटाएँ"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"चयनित %(objects_name)s हटाने पर उस से सम्बंधित वस्तुएं भी हट जाएगी, परन्तु आपके खाते में "
-"वस्तुओं के निम्नलिखित प्रकार हटाने की अनुमति नहीं है:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"चयनित %(objects_name)s को हटाने के पश्चात् निम्नलिखित संरक्षित संबंधित वस्तुओं को हटाने "
-"की आवश्यकता होगी |"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"क्या आप ने पक्का तय किया हैं की चयनित %(objects_name)s को नष्ट किया जाये ? "
-"निम्नलिखित सभी वस्तुएं और उनसे सम्बंधित वस्तुए भी नष्ट की जाएगी:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "%(filter_title)s द्वारा"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "%(name)s अनुप्रयोग के प्रतिरूप"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "बदलें"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "आपके पास कुछ भी संपादन करने के लिये अनुमति नहीं है ।"
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "हाल क्रियाएँ"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "मेरे कार्य"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr " कोई भी उपलब्ध नहीं"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "अज्ञात सामग्री"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"अपने डेटाबेस स्थापना के साथ कुछ गलत तो है | सुनिश्चित करें कि उचित डेटाबेस तालिका बनायीं "
-"गयी है, और सुनिश्चित करें कि डेटाबेस उपयुक्त उपयोक्ता के द्वारा पठनीय है |"
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "कूटशब्द"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "अपना पासवर्ड या उपयोगकर्ता नाम भूल गये हैं?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "तिथि / समय"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "उपभोक्ता"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "कार्य"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"इस वस्तु का बदलाव इतिहास नहीं है. शायद वह इस साइट व्यवस्थापक के माध्यम से नहीं जोड़ा "
-"गया है."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "सभी दिखाएँ"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "सुरक्षित कीजिये"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "खोज"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s परिणाम"
-msgstr[1] "%(counter)s परिणाम"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s कुल परिणाम"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "नये सा सहेजें"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "सहेजें और एक और जोडें"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "सहेजें और संपादन करें"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"पहले प्रदवोक्ता नाम और कूटशब्द दर्ज करें । उसके पश्चात ही आप अधिक प्रवोक्ता विकल्प बदल "
-"सकते हैं ।"
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "उपयोगकर्ता का नाम और कूटशब्द दर्ज करें."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "<strong>%(username)s</strong> प्रवोक्ता के लिए नयी कूटशब्द दर्ज करें ।"
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "कूटशब्द"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "शब्दकूट (दुबारा)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "सत्याप्ती के लिए ऊपर दर्ज किए कूटशब्द को फिर से प्रवेश करें"
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "निकालें"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "एक और %(verbose_name)s जोड़ें "
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "मिटाएँ ?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "आज हमारे वेब साइट पर आने के लिए धन्यवाद ।"
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "फिर से लॉगिन कीजिए"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "कूटशब्द बदलें"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "कूटशब्द कदली कामयाब"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "आपके कूटशब्द को बदला गया है"
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"सुरक्षा कारणों के लिए कृपया पुराना कूटशब्द दर्ज करें । उसके पश्चात नए कूटशब्द को दो बार दर्ज "
-"करें ताकि हम उसे सत्यापित कर सकें ।"
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "पुराना कूटशब्द "
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "नया कूटशब्द "
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "कूटशब्द बदलें"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "कूटशब्द पुनस्थाप"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "कूटशब्द पुनस्थाप कामयाब"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "आपके कूटशब्द को स्थापित किया गया है । अब आप लॉगिन कर सकते है ।"
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "कूटशब्द पुष्टि"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "नया कूटशब्द दीजिएं"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr "कृपया आपके नये कूटशब्द को दो बार दर्ज करें ताकि हम उसकी सत्याप्ती कर सकते है ।"
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "नया कूटशब्द "
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "कूटशब्द पुष्टि कीजिए"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "कूटशब्द पुनस्थाप असफल"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"कूटशब्द पुनस्थाप संपर्क अमान्य है, संभावना है कि उसे उपयोग किया गया है। कृपया फिर से कूटशब्द "
-"पुनस्थाप की आवेदन करें ।"
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "कूटशब्द पुनस्थाप सफल"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"हमने आपके डाक पते पर कूटशब्द स्थापित करने के निर्देश भेजे है । थोडी ही देर में ये आपको मिल "
-"जाएँगे।"
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"अगर आपको कोई ईमेल प्राप्त नई होता है,यह ध्यान रखे की आपने सही पता रजिस्ट्रीकृत किया है "
-"और आपने स्पॅम फोल्डर को जाचे|"
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"आपको यह डाक इसलिए आई है क्योंकि आप ने %(site_name)s पर अपने खाते का कूटशब्द बदलने का "
-"अनुरोध किया था |"
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "कृपया निम्नलिखित पृष्ठ पर नया कूटशब्द चुनिये :"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "आपका प्रवोक्ता नाम, यदि भूल गये हों :"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "हमारे साइट को उपयोग करने के लिए धन्यवाद ।"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s दल"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"कूटशब्द भूल गए? नीचे अपना डाक पता भरें, वहाँ पर हम आपको नया कूटशब्द रखने के निर्देश भेजेंगे।"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "डाक पता -"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr " मेरे कूटशब्द की पुनःस्थापना"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "सभी तिथियों"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(कोई नहीं)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s चुनें"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "%s के बदली के लिए चयन करें"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 5e63d14..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 1237cac..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/hi/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,182 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Chandan kumar <chandankumar.093047@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sandeep Satavlekar <sandysat@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/"
-"hi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "उपलब्ध %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"यह उपलब्ध %s की सूची है. आप उन्हें नीचे दिए गए बॉक्स में से चयन करके कुछ को चुन सकते हैं और "
-"उसके बाद दो बॉक्स के बीच \"चुनें\" तीर पर क्लिक करें."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "इस बॉक्स में टाइप करने के लिए नीचे उपलब्ध %s की सूची को फ़िल्टर करें."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "छानना"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "सभी चुनें"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "एक ही बार में सभी %s को चुनने के लिए क्लिक करें."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "चुनें"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "हटाना"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "चुनें %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"यह उपलब्ध %s की सूची है. आप उन्हें नीचे दिए गए बॉक्स में से चयन करके कुछ को हटा सकते हैं और "
-"उसके बाद दो बॉक्स के बीच \"हटायें\" तीर पर क्लिक करें."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "सभी को हटाएँ"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "एक ही बार में सभी %s को हटाने के लिए क्लिक करें."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(cnt)s में से %(sel)s चुना गया हैं"
-msgstr[1] "%(cnt)s में से %(sel)s चुने गए हैं"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"स्वतंत्र सम्पादनक्षम क्षेत्र/स्तम्भ में किये हुए बदल अभी रक्षित नहीं हैं | अगर आप कुछ कार्रवाई "
-"करते हो तो वे खो जायेंगे |"
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"आप ने कार्रवाई तो चुनी हैं, पर स्वतंत्र सम्पादनक्षम क्षेत्र/स्तम्भ में किये हुए बदल अभी सुरक्षित "
-"नहीं किये हैं| उन्हें सुरक्षित करने के लिए कृपया 'ओके' क्लिक करे | आप को चुनी हुई कार्रवाई "
-"दोबारा चलानी होगी |"
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"आप ने कार्रवाई चुनी हैं, और आप ने स्वतंत्र सम्पादनक्षम क्षेत्र/स्तम्भ में बदल नहीं किये हैं| "
-"संभवतः 'सेव' बटन के बजाय आप 'गो' बटन ढून्ढ रहे हो |"
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "जनवरी फ़रवरी मार्च अप्रैल मई जून जुलाई अगस्त सेप्टम्बर अक्टूबर नवंबर दिसम्‍बर"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "आ सो म बु गु शु श"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "दिखाओ"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr " छिपाओ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "अब"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "घड़ी"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "एक समय चुनें"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "मध्यरात्री"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "सुबह 6 बजे"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "दोपहर"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "रद्द करें"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "आज"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "तिथि-पत्र "
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "कल (बीता)"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "कल"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/hr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/hr/LC_MESSAGES/django.mo
deleted file mode 100644
index 4e00afc..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/hr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/hr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/hr/LC_MESSAGES/django.po
deleted file mode 100644
index 2defc08..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/hr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,885 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# aljosa <aljosa.mohorovic@gmail.com>, 2011,2013
-# Bojan Mihelač <bmihelac@mihelac.org>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# mislav <mislav.cimpersak@gmail.com>, 2013
-# Ylodi <stjepan@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-10-28 14:36+0000\n"
-"Last-Translator: mislav <mislav.cimpersak@gmail.com>\n"
-"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/"
-"hr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hr\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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Uspješno izbrisano %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Nije moguće izbrisati %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Jeste li sigurni?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Izbrišite odabrane %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Svi"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Da"
-
-#: filters.py:239
-msgid "No"
-msgstr "Ne"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Nepoznat pojam"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Bilo koji datum"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Danas"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Prošlih 7 dana"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Ovaj mjesec"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Ova godina"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Molimo unesite ispravno %(username)s i lozinku za pristup. Imajte na umu da "
-"oba polja mogu biti velika i mala slova."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Molim prijavite se ponovo jer je vaš session istekao."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Akcija:"
-
-#: models.py:25
-msgid "action time"
-msgstr "vrijeme akcije"
-
-#: models.py:28
-msgid "object id"
-msgstr "id objekta"
-
-#: models.py:29
-msgid "object repr"
-msgstr "repr objekta"
-
-#: models.py:30
-msgid "action flag"
-msgstr "oznaka akcije"
-
-#: models.py:31
-msgid "change message"
-msgstr "promijeni poruku"
-
-#: models.py:36
-msgid "log entry"
-msgstr "zapis"
-
-#: models.py:37
-msgid "log entries"
-msgstr "zapisi"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Dodano \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Promijenjeno \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Obrisano \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Log zapis"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Nijedan"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Promijenjeno %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "i"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Dodano %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Promijeni %(list)s za %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Izbrisani %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Nije bilo promjena polja."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" uspješno dodan. Možete ponovo urediti unos dolje."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"Unos %(name)s \"%(obj)s\" je uspješno dodan. Možete dodati još jedan unos "
-"(%(name)s) u nastavku."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" uspješno je dodano."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"Unos %(name)s \"%(obj)s\" je uspješno promijenjen. Možete ga urediti ponovno "
-"ispod."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"Unos %(name)s \"%(obj)s\" je uspješno promijenjen. Možete dodati još jedan "
-"(%(name)s) u nastavku."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" uspješno promijenjeno."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Unosi moraju biti odabrani da bi se nad njima mogle izvršiti akcije. Nijedan "
-"unos nije promijenjen."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Nije odabrana akcija."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Novi unos (%s)"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Unos %(name)s sa primarnim ključem %(key)r ne postoji."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Promijeni %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Pogreška u bazi"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s uspješno promijenjen."
-msgstr[1] "%(count)s %(name)s uspješno promijenjeno."
-msgstr[2] "%(count)s %(name)s uspješno promijenjeno."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s odabrano"
-msgstr[1] "Svih %(total_count)s odabrano"
-msgstr[2] "Svih %(total_count)s odabrano"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 od %(cnt)s odabrano"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" uspješno izbrisan."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Promijeni povijest: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Prijavi se"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Administracija stranica"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s administracija"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Datum:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Vrijeme:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Potraži"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Unesi još"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Trenutno:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Promijeni:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Stranica nije pronađena"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Ispričavamo se, ali tražena stranica nije pronađena."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Početna"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Greška na serveru"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Greška na serveru (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Greška na serveru <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Dogodila se greška. Administratori su obaviješteni putem elektroničke pošte "
-"te bi greška uskoro trebala biti ispravljena. Hvala na strpljenju."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Izvrši odabranu akciju"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Idi"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Klikni ovdje da bi odabrao unose kroz sve stranice"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Odaberi svih %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Očisti odabir"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Dobrodošli,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentacija"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Promijeni lozinku"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Odjava"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django administracija stranica"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administracija"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Novi unos"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Povijest"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Pogledaj na stranicama"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Molimo ispravite navedene greške."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Molimo ispravite navedene greške."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Novi unos - %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filter"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Odstrani iz sortiranja"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Prioritet sortiranja: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Preklopi sortiranje"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Izbriši"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Brisanje %(object_name)s '%(escaped_object)s' rezultiralo bi brisanjem "
-"povezanih objekta, ali vi nemate privilegije za brisanje navedenih objekta: "
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Brisanje %(object_name)s '%(escaped_object)s' bi zahtijevalo i brisanje "
-"sljedećih zaštićenih povezanih objekata:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Jeste li sigurni da želite izbrisati %(object_name)s \"%(escaped_object)s\"? "
-"Svi navedeni objekti biti će izbrisani:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Da, siguran sam"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Izbriši više unosa."
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Brisanje odabranog %(objects_name)s rezultiralo bi brisanjem povezanih "
-"objekta, ali vaš korisnički račun nema dozvolu za brisanje sljedeće vrste "
-"objekata:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Brisanje odabranog %(objects_name)s će zahtijevati brisanje sljedećih "
-"zaštićenih povezanih objekata:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Jeste li sigurni da želite izbrisati odabrane %(objects_name)s ? Svi "
-"sljedeći objekti i povezane stavke će biti izbrisani:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Po %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modeli u aplikaciji %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Promijeni"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Nemate privilegije za promjenu podataka."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Nedavne promjene"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Moje promjene"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Nije dostupno"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Sadržaj nepoznat"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Nešto nije uredu sa instalacijom/postavkama baze. Provjerite jesu li "
-"potrebne tablice u bazi kreirane i provjerite je li baza dostupna korisniku."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Lozinka:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Zaboravili ste lozinku ili korisničko ime?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Datum/vrijeme"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Korisnik"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Akcija"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Ovaj objekt nema povijest promjena. Moguće je da nije dodan korištenjem ove "
-"administracije."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Prikaži sve"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Spremi"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Traži"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s rezultat"
-msgstr[1] "%(counter)s rezultata"
-msgstr[2] "%(counter)s rezultata"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s ukupno"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Spremi kao novi unos"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Spremi i unesi novi unos"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Spremi i nastavi uređivati"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Prvo, unesite korisničko ime i lozinku. Onda možete promijeniti više "
-"postavki korisnika."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Unesite korisničko ime i lozinku."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Unesite novu lozinku za korisnika <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Lozinka"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Lozinka (unesi ponovo)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Unesite istu lozinku, za potvrdu."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Ukloni"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Dodaj još jedan %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Izbriši?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Hvala što ste proveli malo kvalitetnog vremena na stranicama danas."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Prijavite se ponovo"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Promjena lozinke"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Promjena lozinke uspješna"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Vaša lozinka je promijenjena."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Molim unesite staru lozinku, zbog sigurnosti, i onda unesite novu lozinku "
-"dvaput da bi mogli provjeriti jeste li je ispravno unijeli."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Stara lozinka"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nova lozinka"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Promijeni moju lozinku"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Resetiranje lozinke"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Resetiranje lozinke završeno"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Vaša lozinka je postavljena. Sada se možete prijaviti."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Potvrda promjene lozinke"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Unesite novu lozinku"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Molimo vas da unesete novu lozinku dvaput da bi mogli provjeriti jeste li je "
-"ispravno unijeli."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nova lozinka:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Potvrdi lozinku:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Resetiranje lozinke neuspješno"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Link za resetiranje lozinke je neispravan, vjerojatno jer je već korišten. "
-"Molimo zatražite novo resetiranje lozinke."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Resetiranje lozinke uspješno"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Primili ste ovu poruku jer ste zatražili postavljanje nove lozinke za svoj "
-"korisnički račun na %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Molimo otiđite do sljedeće stranice i odaberite novu lozinku:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Vaše korisničko ime, u slučaju da ste zaboravili:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Hvala šta koristite naše stranice!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s tim"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Zaboravili ste lozinku? Unesite vašu e-mail adresu ispod i poslati ćemo vam "
-"upute kako postaviti novu."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "E-mail adresa:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Resetiraj moju lozinku"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Svi datumi"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Nijedan)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Odaberi %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Odaberi za promjenu - %s"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 068ecb8..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 37a6085..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/hr/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,186 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# aljosa <aljosa.mohorovic@gmail.com>, 2011
-# Bojan Mihelač <bmihelac@mihelac.org>, 2012
-# Davor Lučić <r.dav.lc@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/"
-"hr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hr\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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Dostupno %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Ovo je popis dostupnih %s. Možete dodati pojedine na način da ih izaberete u "
-"polju ispod i kliknete \"Izaberi\" strelicu između dva polja. "
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Tipkajte u ovo polje da filtrirate listu dostupnih %s."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filter"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Odaberi sve"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Kliknite da odabrete sve %s odjednom."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Izaberi"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Ukloni"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Odabrano %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Ovo je popis odabranih %s. Možete ukloniti pojedine na način da ih izaberete "
-"u polju ispod i kliknete \"Ukloni\" strelicu između dva polja. "
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Ukloni sve"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Kliknite da uklonite sve izabrane %s odjednom."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "odabrano %(sel)s od %(cnt)s"
-msgstr[1] "odabrano %(sel)s od %(cnt)s"
-msgstr[2] "odabrano %(sel)s od %(cnt)s"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Neke promjene nisu spremljene na pojedinim polja za uređivanje. Ako "
-"pokrenete akciju, nespremljene promjene će biti izgubljene."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Odabrali ste akciju, ali niste još spremili promjene na pojedinim polja. "
-"Molimo kliknite OK za spremanje. Morat ćete ponovno pokrenuti akciju."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Odabrali ste akciju, a niste napravili nikakve izmjene na pojedinim poljima. "
-"Vjerojatno tražite gumb Idi umjesto gumb Spremi."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Siječanj Veljača Ožujak Travanj Svibanj Lipanj Srpanj Kolovoz Rujan Listopad "
-"Studeni Prosinac"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "N P U S Č P S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Prikaži"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Sakri"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Sada"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Sat"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Izaberite vrijeme"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Ponoć"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 ujutro"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Podne"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Odustani"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Danas"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalendar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Jučer"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Sutra"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/django.mo
deleted file mode 100644
index 8c4eedb..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/django.po
deleted file mode 100644
index f9ab0aa..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,882 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kristóf Gruber <>, 2012
-# slink <gabor@20y.hu>, 2011
-# Szilveszter Farkas <szilveszter.farkas@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/"
-"language/hu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s sikeresen törölve lett."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "%(name)s törlése nem sikerült"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Biztos benne?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Kiválasztott %(verbose_name_plural)s törlése"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Mind"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Igen"
-
-#: filters.py:239
-msgid "No"
-msgstr "Nem"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Ismeretlen"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Bármely dátum"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Ma"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Utolsó 7 nap"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Ez a hónap"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Ez az év"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Adja meg egy adminisztrációra jogosult %(username)s és jelszavát. Vegye "
-"figyelembe, hogy mindkét mező megkülönböztetheti a kis- és nagybetűket."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Jelentkezzen be újra, mert a munkamenete lejárt."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Művelet:"
-
-#: models.py:25
-msgid "action time"
-msgstr "művelet időpontja"
-
-#: models.py:28
-msgid "object id"
-msgstr "objektum id"
-
-#: models.py:29
-msgid "object repr"
-msgstr "objektum repr"
-
-#: models.py:30
-msgid "action flag"
-msgstr "művelet jelölés"
-
-#: models.py:31
-msgid "change message"
-msgstr "üzenet módosítása"
-
-#: models.py:36
-msgid "log entry"
-msgstr "naplóbejegyzés"
-
-#: models.py:37
-msgid "log entries"
-msgstr "naplóbejegyzések"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" hozzáadva."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "\"%(object)s\" megváltoztatva: %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" törölve."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Naplóbejegyzés objektum"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Egyik sem"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s módosítva."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "és"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "\"%(object)s\" %(name)s létrehozva."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "\"%(object)s\" %(name)s tulajdonságai (%(list)s) megváltoztak."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "\"%(object)s\" %(name)s törlésre került."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Egy mező sem változott."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "\"%(obj)s\" %(name)s sikeresen létrehozva. Alább ismét szerkesztheti."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"\"%(obj)s\" %(name)s sikeresen létrehozva. Alább újabb %(name)s hozható "
-"létre."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "\"%(obj)s\" %(name)s sikeresen létrehozva."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr "\"%(obj)s\" %(name)s sikeresen létrehozva. Alább ismét szerkeszthető."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"\"%(obj)s\" %(name)s sikeresen módosítva. Alább újabb %(name)s hozható létre."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "\"%(obj)s\" %(name)s sikeresen módosítva."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"A műveletek végrehajtásához ki kell választani legalább egy elemet. Semmi "
-"sem lett módosítva."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Nem választott ki műveletet."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Új %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s objektum %(key)r elsődleges kulccsal nem létezik."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s módosítása"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Adatbázishiba"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s sikeresen módosítva lett."
-msgstr[1] "%(count)s %(name)s sikeresen módosítva lett."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s kiválasztva"
-msgstr[1] "%(total_count)s kiválasztva"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 kiválasztva ennyiből: %(cnt)s"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "\"%(obj)s\" %(name)s sikeresen törölve."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Változások története: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Bejelentkezés"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Honlap karbantartása"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s adminisztráció"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Dátum:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Idő:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Keresés"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Újabb hozzáadása"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Jelenleg:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Módosítás:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Nincs ilyen oldal"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Sajnáljuk, de a kért oldal nem található."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Kezdőlap"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Szerverhiba"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Szerverhiba (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Szerverhiba <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Hiba történt, melyet e-mailben jelentettünk az oldal karbantartójának. A "
-"rendszer remélhetően hamar megjavul. Köszönjük a türelmét."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Kiválasztott művelet futtatása"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Mehet"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Kattintson ide több oldalnyi objektum kiválasztásához"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Az összes %(module_name)s kiválasztása, összesen %(total_count)s db"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Kiválasztás törlése"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Üdvözlöm,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentáció"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Jelszó megváltoztatása"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Kijelentkezés"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django honlapadminisztráció"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django adminisztráció"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Új"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Történet"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Megtekintés a honlapon"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Kérem, javítsa az alábbi hibákat."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Új %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Szűrő"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Eltávolítás a rendezésből"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Prioritás rendezésnél: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Rendezés megfordítása"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Törlés"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"\"%(escaped_object)s\" %(object_name)s törlése a kapcsolódó objektumok "
-"törlését is eredményezi, de a hozzáférése nem engedi a következő típusú "
-"objektumok törlését:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"\"%(escaped_object)s\" %(object_name)s törlése az alábbi kapcsolódó "
-"objektumok törlését is maga után vonja:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Biztos hogy törli a következőt: \"%(escaped_object)s\" (típus: "
-"%(object_name)s)? A összes további kapcsolódó elem is törlődik:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Igen, biztos vagyok benne"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Több elem törlése"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"A kiválasztott %(objects_name)s törlése kapcsolódó objektumok törlését vonja "
-"maga után, de az alábbi objektumtípusok törléséhez nincs megfelelő "
-"jogosultsága:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"A kiválasztott %(objects_name)s törlése az alábbi védett kapcsolódó "
-"objektumok törlését is maga után vonja:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Biztosan törölni akarja a kiválasztott %(objects_name)s objektumokat? Minden "
-"alábbi objektum, és a hozzájuk kapcsolódóak is törlésre kerülnek:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s szerint "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "%(name)s alkalmazásban elérhető modellek."
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Módosítás"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Nincs joga szerkeszteni."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Utolsó műveletek"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Az én műveleteim"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Nincs elérhető"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Ismeretlen tartalom"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Valami nem stimmel a telepített adatbázissal. Bizonyosodjon meg arról, hogy "
-"a megfelelő táblák létre lettek-e hozva, és hogy a megfelelő felhasználó "
-"tudja-e őket olvasni."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Jelszó:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Elfelejtette jelszavát vagy felhasználónevét?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Dátum/idő"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Felhasználó"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Művelet"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr "Honlap karbantartása"
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Mutassa mindet"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Mentés"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Keresés"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s találat"
-msgstr[1] "%(counter)s találat"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s összesen"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Mentés újként"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Mentés és másik hozzáadása"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Mentés és a szerkesztés folytatása"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Először adjon meg egy felhasználói nevet és egy jelszót. Ezek után további "
-"módosításokat is végezhet a felhasználó adatain."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Írjon be egy felhasználónevet és jelszót."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Adjon meg egy új jelszót <strong>%(username)s</strong> nevű felhasználónak."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Jelszó"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Jelszó újra"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Írja be a fenti jelszót ellenőrzés céljából."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Törlés"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Újabb %(verbose_name)s hozzáadása"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Törli?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Köszönjük hogy egy kis időt eltöltött ma a honlapunkon."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Jelentkezzen be újra"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Jelszó megváltoztatása"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Sikeres jelszóváltoztatás"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Megváltozott a jelszava."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Írja be a régi jelszavát biztonsági okokból, majd az újat kétszer, hogy "
-"biztosan ne gépelje el."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Régi jelszó"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Új jelszó"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Jelszavam megváltoztatása"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Jelszó beállítása"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Jelszó beállítása kész"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Jelszava beállításra került. Most már bejelentkezhet."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Jelszó beállítás megerősítése"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Írja be az új jelszavát"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Írja be az új jelszavát kétszer, hogy megbizonyosodhassunk annak "
-"helyességéről."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Új jelszó:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Jelszó megerősítése:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Jelszó beállítása sikertelen"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"A jelszóbeállító link érvénytelen. Ennek egyik oka az lehet, hogy már "
-"felhasználták. Kérem indítson új jelszóbeállítást."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Sikeres jelszótörlés"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Az információkat elküldtük e-mailben a megadott címre. Hamarosan meg kell "
-"érkeznie."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Amennyiben nem kapta meg az e-mailt, ellenőrizze, hogy ezzel a címmel "
-"regisztrált-e, valamint hogy nem került-e a levélszemét mappába."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Azért kapja ezt az e-mailt, mert jelszavának visszaállítását kérte ezen a "
-"weboldalon: %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Kérjük látogassa meg a következő oldalt, és válasszon egy új jelszót:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Felhasználóneve, ha elfelejtette volna:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Köszönjük, hogy használta honlapunkat!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s csapat"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Elfelejtette a jelszavát? Írja be az e-mail címét, és küldünk egy levelet a "
-"teendőkről."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "E-mail cím:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Jelszavam törlése"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Minden dátum"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(nincs)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s kiválasztása"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Válasszon ki egyet a módosításhoz (%s)"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index a5ef85f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.po
deleted file mode 100644
index fb5725e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/hu/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,186 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Attila Nagy <>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# János Péter Ronkay <transifex@hangya.net>, 2011
-# Máté Őry <orymate@iit.bme.hu>, 2012
-# Szilveszter Farkas <szilveszter.farkas@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/"
-"language/hu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Elérhető %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Ez az elérhető %s listája. Úgy választhat közülük, hogy rákattint az alábbi "
-"dobozban, és megnyomja a dobozok közti \"Választás\" nyilat."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Írjon a mezőbe az elérhető %s szűréséhez."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Szűrő"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Mindet kijelölni"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Kattintson az összes %s kiválasztásához."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Választás"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Eltávolítás"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s kiválasztva"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Ez a kiválasztott %s listája. Eltávolíthat közülük, ha rákattint, majd a két "
-"doboz közti \"Eltávolítás\" nyílra kattint."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Összes törlése"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Kattintson az összes %s eltávolításához."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s/%(cnt)s kijelölve"
-msgstr[1] "%(sel)s/%(cnt)s kijelölve"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Még el nem mentett módosításai vannak egyes szerkeszthető mezőkön. Ha most "
-"futtat egy műveletet, akkor a módosítások elvesznek."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Kiválasztott egy műveletet, de nem mentette az egyes mezőkhöz kapcsolódó "
-"módosításait. Kattintson az OK gombra a mentéshez. Újra kell futtatnia az "
-"műveletet."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Kiválasztott egy műveletet, és nem módosított egyetlen mezőt sem. "
-"Feltehetően a Mehet gombot keresi a Mentés helyett."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"január február március április május június július augusztus szeptember "
-"október november december"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "V H K Sz Cs P Szo"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Mutat"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Elrejt"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Most"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Óra"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Válassza ki az időt"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Éjfél"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "Reggel 6 óra"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Dél"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Mégsem"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Ma"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Naptár"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Tegnap"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Holnap"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ia/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ia/LC_MESSAGES/django.mo
deleted file mode 100644
index 024729a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ia/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ia/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ia/LC_MESSAGES/django.po
deleted file mode 100644
index f4b2370..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ia/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,870 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Martijn Dekker <mcdutchie@hotmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/"
-"language/ia/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ia\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s delite con successo."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Non pote deler %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Es tu secur?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Deler le %(verbose_name_plural)s seligite"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Totes"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Si"
-
-#: filters.py:239
-msgid "No"
-msgstr "No"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Incognite"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Omne data"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Hodie"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Ultime 7 dies"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Iste mense"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Iste anno"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Per favor aperi session de novo, perque tu session ha expirate."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Action:"
-
-#: models.py:25
-msgid "action time"
-msgstr "hora de action"
-
-#: models.py:28
-msgid "object id"
-msgstr "id de objecto"
-
-#: models.py:29
-msgid "object repr"
-msgstr "repr de objecto"
-
-#: models.py:30
-msgid "action flag"
-msgstr "marca de action"
-
-#: models.py:31
-msgid "change message"
-msgstr "message de cambio"
-
-#: models.py:36
-msgid "log entry"
-msgstr "entrata de registro"
-
-#: models.py:37
-msgid "log entries"
-msgstr "entratas de registro"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" addite."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "\"%(object)s\" cambiate - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" delite."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Objecto LogEntry"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Nulle"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s cambiate."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "e"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" addite."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(list)s cambiate pro %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" delite."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Nulle campo cambiate."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Le %(name)s \"%(obj)s\" ha essite addite con successo. Tu pote modificar lo "
-"de novo hic infra."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Le %(name)s \"%(obj)s\" ha essite addite con successo."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Le %(name)s \"%(obj)s\" ha essite cambiate con successo."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Es necessari seliger elementos pro poter exequer actiones. Nulle elemento ha "
-"essite cambiate."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Nulle action seligite."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Adder %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Le objecto %(name)s con le clave primari %(key)r non existe."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Cambiar %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Error in le base de datos"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s cambiate con successo."
-msgstr[1] "%(count)s %(name)s cambiate con successo."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s seligite"
-msgstr[1] "Tote le %(total_count)s seligite"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 de %(cnt)s seligite"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Le %(name)s \"%(obj)s\" ha essite delite con successo."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Historia de cambiamentos: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Aperir session"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Administration del sito"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Administration de %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Data:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Hora:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Recerca"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Adder un altere"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Pagina non trovate"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Regrettabilemente, le pagina requestate non poteva esser trovate."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Initio"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Error del servitor"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Error del servitor (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Error del servitor <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Exequer le action seligite"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Va"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Clicca hic pro seliger le objectos in tote le paginas"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Seliger tote le %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Rader selection"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Benvenite,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Documentation"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Cambiar contrasigno"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Clauder session"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Administration del sito Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administration de Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Adder"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Historia"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Vider in sito"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Per favor corrige le errores sequente."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Adder %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtro"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Remover del ordination"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Prioritate de ordination: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Alternar le ordination"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Deler"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Deler le %(object_name)s '%(escaped_object)s' resultarea in le deletion de "
-"objectos associate, me tu conto non ha le permission de deler objectos del "
-"sequente typos:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Deler le %(object_name)s '%(escaped_object)s' necessitarea le deletion del "
-"sequente objectos associate protegite:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Es tu secur de voler deler le %(object_name)s \"%(escaped_object)s\"? Tote "
-"le sequente objectos associate essera delite:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Si, io es secur"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Deler plure objectos"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Deler le %(objects_name)s seligite resultarea in le deletion de objectos "
-"associate, ma tu conto non ha le permission de deler objectos del sequente "
-"typos:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Deler le %(objects_name)s seligite necessitarea le deletion del sequente "
-"objectos associate protegite:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Es tu secur de voler deler le %(objects_name)s seligite? Tote le sequente "
-"objectos e le objectos associate a illo essera delite:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Per %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Cambiar"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Tu non ha le permission de modificar alcun cosa."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Actiones recente"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Mi actiones"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Nihil disponibile"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Contento incognite"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Il ha un problema con le installation del base de datos. Assecura te que le "
-"tabellas correcte ha essite create, e que le base de datos es legibile pro "
-"le usator appropriate."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Contrasigno:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Contrasigno o nomine de usator oblidate?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Data/hora"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Usator"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Action"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Iste objecto non ha un historia de cambiamentos. Illo probabilemente non "
-"esseva addite per medio de iste sito administrative."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Monstrar toto"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Salveguardar"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Cercar"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s resultato"
-msgstr[1] "%(counter)s resultatos"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s in total"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Salveguardar como nove"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Salveguardar e adder un altere"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Salveguardar e continuar le modification"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Primo, specifica un nomine de usator e un contrasigno. Postea, tu potera "
-"modificar plus optiones de usator."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Specifica un nomine de usator e un contrasigno."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Specifica un nove contrasigno pro le usator <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Contrasigno"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Contrasigno (repete)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Scribe le mesme contrasigno que antea, pro verification."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Remover"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Adder un altere %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Deler?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Gratias pro haber passate un tempore agradabile con iste sito web."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Aperir session de novo"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Cambio de contrasigno"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Contrasigno cambiate con successo"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Tu contrasigno ha essite cambiate."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Per favor specifica tu ancian contrasigno, pro securitate, e postea "
-"specifica tu nove contrasigno duo vices pro verificar que illo es scribite "
-"correctemente."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Ancian contrasigno"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nove contrasigno"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Cambiar mi contrasigno"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Reinitialisar contrasigno"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Contrasigno reinitialisate con successo"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Tu contrasigno ha essite reinitialisate. Ora tu pote aperir session."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Confirmation de reinitialisation de contrasigno"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Specifica nove contrasigno"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Per favor scribe le nove contrasigno duo vices pro verificar que illo es "
-"scribite correctemente."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nove contrasigno:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Confirma contrasigno:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Reinitialisation de contrasigno fallite"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Le ligamine pro le reinitialisation del contrasigno esseva invalide, forsan "
-"perque illo ha jam essite usate. Per favor submitte un nove demanda de "
-"reinitialisation del contrasigno."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Contrasigno reinitialisate con successo"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Per favor va al sequente pagina pro eliger un nove contrasigno:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Tu nomine de usator, in caso que tu lo ha oblidate:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Gratias pro usar nostre sito!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Le equipa de %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Reinitialisar mi contrasigno"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Tote le datas"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Nulle)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Selige %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Selige %s a modificar"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 097cb90..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.po
deleted file mode 100644
index c1b28ad..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ia/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,182 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Martijn Dekker <mcdutchie@hotmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/"
-"language/ia/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ia\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s disponibile"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Ecce le lista de %s disponibile. Tu pote seliger alcunes in le quadro "
-"sequente; postea clicca le flecha \"Seliger\" inter le duo quadros."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Scribe in iste quadro pro filtrar le lista de %s disponibile."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtrar"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Seliger totes"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Clicca pro seliger tote le %s immediatemente."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Seliger"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Remover"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Le %s seligite"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Ecce le lista de %s seligite. Tu pote remover alcunes per seliger los in le "
-"quadro sequente e cliccar le flecha \"Remover\" inter le duo quadros."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Remover totes"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Clicca pro remover tote le %s seligite immediatemente."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s de %(cnt)s seligite"
-msgstr[1] "%(sel)s de %(cnt)s seligite"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Il ha cambiamentos non salveguardate in certe campos modificabile. Si tu "
-"exeque un action, iste cambiamentos essera perdite."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Tu ha seligite un action, ma tu non ha salveguardate le cambiamentos in "
-"certe campos. Per favor clicca OK pro salveguardar los. Tu debera re-exequer "
-"le action."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Tu ha seligite un action, e tu non ha facite cambiamentos in alcun campo. Tu "
-"probabilemente cerca le button Va e non le button Salveguardar."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Januario Februario Martio April Maio Junio Julio Augusto Septembre Octobre "
-"Novembre Decembre"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "D L M M J V S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Monstrar"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Celar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Ora"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Horologio"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Selige un hora"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Medienocte"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Mediedie"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Cancellar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Hodie"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Calendario"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Heri"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Deman"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/django.mo
deleted file mode 100644
index 2e17ee9..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/django.po
deleted file mode 100644
index a370e36..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,870 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# rodin <romihardiyanto@gmail.com>, 2011-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Sukes menghapus %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Tidak dapat menghapus %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Yakin?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Hapus %(verbose_name_plural)s yang dipilih"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Semua"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Ya"
-
-#: filters.py:239
-msgid "No"
-msgstr "Tidak"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Tidak diketahui"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Kapanpun"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Hari ini"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Tujuh hari terakhir"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Bulan ini"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Tahun ini"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Anda harus mengulangi proses masuk karena sesi Anda telah habis."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Aksi:"
-
-#: models.py:25
-msgid "action time"
-msgstr "waktu aksi"
-
-#: models.py:28
-msgid "object id"
-msgstr "id objek"
-
-#: models.py:29
-msgid "object repr"
-msgstr "representasi objek"
-
-#: models.py:30
-msgid "action flag"
-msgstr "jenis aksi"
-
-#: models.py:31
-msgid "change message"
-msgstr "ganti pesan"
-
-#: models.py:36
-msgid "log entry"
-msgstr "entri pencatatan"
-
-#: models.py:37
-msgid "log entries"
-msgstr "entri pencatatan"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" ditambahkan."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "\"%(object)s\" diubah - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" dihapus."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Objek LogEntry"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "None"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s diubah"
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "dan"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" ditambahkan."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(list)s untuk %(name)s \"%(object)s\" diubah."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" dihapus."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Tidak ada bidang yang berubah."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" berhasil ditambahkan. Anda dapat mengeditnya lagi di "
-"bawah ini."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" berhasil ditambahkan."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" berhasil diubah."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Objek harus dipilih sebelum dimanipulasi. Tidak ada objek yang berubah."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Tidak ada aksi yang dipilih."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Tambahkan %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Objek %(name)s dengan kunci utama %(key)r tidak ada."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Ubah %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Galat basis data"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s berhasil diubah."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s dipilih"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 dari %(cnt)s dipilih"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" berhasil dihapus."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Ubah riwayat: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Masuk"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Administrasi situs"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Administrasi %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Tanggal:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Waktu:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Cari"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Tambah Lagi"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Laman tidak ditemukan"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Maaf, laman yang Anda minta tidak ditemukan."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Beranda"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Galat server"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Galat server (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Galat Server <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Galat terjadi dan telah dilaporkan ke administrator situs lewat email untuk "
-"diperbaiki. Terima kasih atas pengertiannya."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Jalankan aksi terpilih"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Buka"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Klik di sini untuk memilih semua objek pada semua laman"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Pilih seluruh %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Bersihkan pilihan"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Selamat datang,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentasi"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Ganti sandi"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Keluar"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Admin situs Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administrasi Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Tambah"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Riwayat"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Lihat di situs"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Perbaiki galat di bawah ini."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Tambahkan %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filter"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Dihapus dari pengurutan"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Prioritas pengurutan: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Ubah pengurutan"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Hapus"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Menghapus %(object_name)s '%(escaped_object)s' akan menghapus objek lain "
-"yang terkait, tetapi akun Anda tidak memiliki izin untuk menghapus objek "
-"dengan tipe berikut:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Menghapus %(object_name)s '%(escaped_object)s' memerlukan penghapusan objek "
-"terlindungi yang terkait sebagai berikut:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Yakin ingin menghapus %(object_name)s \"%(escaped_object)s\"? Semua objek "
-"lain yang terkait juga akan dihapus:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Ya, tentu saja"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Hapus beberapa objek sekaligus"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Menghapus %(objects_name)s terpilih akan menghapus objek yang terkait, "
-"tetapi akun Anda tidak memiliki izin untuk menghapus objek dengan tipe "
-"berikut:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Menghapus %(objects_name)s terpilih memerlukan penghapusan objek terlindungi "
-"yang terkait sebagai berikut:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Yakin akan menghapus %(objects_name)s terpilih? Semua objek berikut beserta "
-"objek terkait juga akan dihapus:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Berdasarkan %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Model pada aplikasi %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Ubah"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Anda tidak memiliki izin untuk mengubah apapun."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Aktivitas Terbaru"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Aktivitas Saya"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Tidak ada yang tersedia"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Konten tidak diketahui"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Ada masalah dengan instalasi basis data Anda. Pastikan tabel yang sesuai "
-"pada basis data telah dibuat dan dapat dibaca oleh pengguna yang benar."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Sandi:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Lupa nama pengguna atau sandi?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Tanggal/waktu"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Pengguna"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Aksi"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Objek ini tidak memiliki riwayat perubahan. Kemungkinan objek ini tidak "
-"ditambahkan melalui situs administrasi ini."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Tampilkan semua"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Simpan"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Cari"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s buah"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s total"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Simpan sebagai baru"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Simpan dan tambahkan lagi"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Simpan dan terus mengedit"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Pertama-tama, masukkan nama pengguna dan sandi. Anda akan dapat mengubah "
-"opsi pengguna lain setelah itu."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Masukkan nama pengguna dan sandi."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Masukkan sandi baru untuk pengguna <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Sandi"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Sandi (ulangi)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Masukkan sandi yang sama dengan di atas, untuk verifikasi."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Hapus"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Tambahkan %(verbose_name)s lagi"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Hapus?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Terima kasih telah menggunakan situs ini hari ini."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Masuk kembali"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Ubah sandi"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Sandi berhasil diubah"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Sandi Anda telah diubah."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Dengan alasan keamanan, masukkan sandi lama Anda dua kali untuk memastikan "
-"Anda tidak salah mengetikkannya."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Sandi lama"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Sandi baru"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Ubah sandi saya"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Setel ulang sandi"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Sandi telah disetel ulang"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Sandi Anda telah diperbarui. Silakan masuk."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Konfirmasi penyetelan ulang sandi"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Masukkan sandi baru"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Masukkan sandi baru dua kali untuk memastikan Anda tidak salah "
-"mengetikkannya."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Sandi baru:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Konfirmasi sandi:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Penyetelan ulang sandi gagal"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Tautan penyetelan ulang sandi tidak valid. Kemungkinan karena tautan "
-"tersebut telah dipakai sebelumnya. Ajukan permintaan penyetelan sandi sekali "
-"lagi."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Penyetelan ulang sandi berhasil"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Anda menerima email ini karena Anda meminta penyetelan ulang sandi untuk "
-"akun pengguna di %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Kunjungi laman di bawah ini dan ketikkan sandi baru:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Nama pengguna Anda, jika lupa:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Terima kasih telah menggunakan situs kami!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Tim %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Lupa sandinya? Masukkan alamat email Anda di bawah ini agar kami dapat "
-"mengirimkan petunjuk untuk menyetel ulang sandinya."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Alamat email:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Setel ulang sandi saya"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Semua tanggal"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Tidak ada)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Pilih %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Pilih %s untuk diubah"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 3ccbb5b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 33db83e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/id/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,184 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# rodin <romihardiyanto@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s yang tersedia"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Berikut adalah daftar %s yang tersedia. Anda dapat memilih satu atau lebih "
-"dengan memilihnya pada kotak di bawah, lalu mengeklik tanda panah \"Pilih\" "
-"di antara kedua kotak."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Ketik pada kotak ini untuk menyaring daftar %s yang tersedia."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filter"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Pilih semua"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Pilih untuk memilih seluruh %s sekaligus."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Pilih"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Hapus"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s terpilih"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Berikut adalah daftar %s yang terpilih. Anda dapat menghapus satu atau lebih "
-"dengan memilihnya pada kotak di bawah, lalu mengeklik tanda panah \"Hapus\" "
-"di antara kedua kotak."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Hapus semua"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Klik untuk menghapus semua pilihan %s sekaligus."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s dari %(cnt)s terpilih"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Beberapa perubahan bidang yang Anda lakukan belum tersimpan. Perubahan yang "
-"telah dilakukan akan hilang."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Anda telah memilih sebuah aksi, tetapi belum menyimpan perubahan ke bidang "
-"yang ada. Klik OK untuk menyimpan perubahan ini. Anda akan perlu mengulangi "
-"aksi tersebut kembali."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Anda telah memilih sebuah aksi, tetapi belum mengubah bidang apapun. "
-"Kemungkinan Anda mencari tombol Buka dan bukan tombol Simpan."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Januari Februari Maret April Mei Juni Juli Agustus September Oktober "
-"November Desember"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "M S S R K J S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Bentangkan"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Ciutkan"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Sekarang"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Jam"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Pilih waktu"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Tengah malam"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 pagi"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Siang"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Batal"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Hari ini"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalender"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Kemarin"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Besok"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/django.mo
deleted file mode 100644
index 027846b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/django.po
deleted file mode 100644
index 30b8740..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,873 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Hafsteinn Einarsson <haffi67@gmail.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# einherji <kthelgason@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/"
-"language/is/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: is\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Eyddi %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Get ekki eytt %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Ertu viss?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Eyða völdum %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Allt"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Já"
-
-#: filters.py:239
-msgid "No"
-msgstr "Nei"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Óþekkt"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Allar dagsetningar"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Dagurinn í dag"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Síðustu 7 dagar"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Þessi mánuður"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Þetta ár"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Vinsamlegast sláðu inn rétt %(username)s og lykilorð fyrir starfsmanna "
-"aðgang. Takið eftir að í báðum reitum skipta há- og lágstafir máli."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Vinsamlegast skráðu þig inn aftur vegna þess að setan þín rann út. "
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Aðgerð:"
-
-#: models.py:25
-msgid "action time"
-msgstr "tími aðgerðar"
-
-#: models.py:28
-msgid "object id"
-msgstr "kenni hlutar"
-
-#: models.py:29
-msgid "object repr"
-msgstr "framsetning hlutar"
-
-#: models.py:30
-msgid "action flag"
-msgstr "aðgerðarveifa"
-
-#: models.py:31
-msgid "change message"
-msgstr "breyta skilaboði"
-
-#: models.py:36
-msgid "log entry"
-msgstr "kladdafærsla"
-
-#: models.py:37
-msgid "log entries"
-msgstr "kladdafærslur"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" bætt við."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Breytti \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Eyddi \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "LogEntry hlutur"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Ekkert"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Breytti %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "og"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Bætti við %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Breytti %(list)s fyrir %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Eyddi %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Engum reitum breytt."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s „%(obj)s“ hefur verið bætt við. Þú getur breytt því aftur að neðan."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s „%(obj)s“ var bætt við."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" hefur verið breytt. Þú getur breytt því aftur að neðan."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" hefur verið breytt. Þú getur bætt við öðru %(name)s að "
-"neðan."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s „%(obj)s“ hefur verið breytt."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Hlutir verða að vera valdir til að framkvæma aðgerðir á þeim. Engu hefur "
-"verið breytt."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Engin aðgerð valin."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Bæta við %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s hlutur með lykilinn %(key)r er ekki til."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Breyta %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Gagnagrunnsvilla"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s var breytt."
-msgstr[1] "%(count)s %(name)s var breytt."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "Allir %(total_count)s valdir"
-msgstr[1] "Allir %(total_count)s valdir"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 af %(cnt)s valin"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s „%(obj)s“ var eytt."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Breytingarsaga: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Til að eyða %(object_name)s ' %(escaped_object)s ' þyrfti að eyða "
-"eftirfarandi tengdum hlutum:"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Skrá inn"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Vefstjóri"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s vefstjórn"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Dagsetning:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Tími:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Fletta upp"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Bæta við öðru"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Síða fannst ekki"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Því miður fannst umbeðin síða ekki."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Heim"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Kerfisvilla"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Kerfisvilla (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Kerfisvilla <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Keyra valda aðgerð"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Áfram"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Smelltu hér til að velja alla hluti"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Velja alla %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Hreinsa val"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Velkomin(n),"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Skjölun"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Breyta lykilorði"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Skrá út"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django vefstjóri"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django vefstjórn"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Bæta við"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Saga"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Skoða á vef"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Vinsamlegast leiðréttu villurnar hér að neðan:"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Bæta við %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Sía"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Taka úr röðun"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Forgangur röðunar: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Röðun af/á"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Eyða"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Eyðing á %(object_name)s „%(escaped_object)s“ hefði í för með sér eyðingu á "
-"tengdum hlutum en þú hefur ekki réttindi til að eyða eftirfarandi hlutum:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Að eyða %(object_name)s ' %(escaped_object)s ' þyrfti að eyða eftirfarandi "
-"tengdum hlutum:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Ertu viss um að þú viljir eyða %(object_name)s „%(escaped_object)s“? Öllu "
-"eftirfarandi verður eytt:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Já ég er viss."
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Eyða mörgum hlutum."
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Að eyða völdu %(objects_name)s leiðir til þess að skyldum hlutum er eytt, en "
-"þinn aðgangur hefur ekki réttindi til að eyða eftirtöldum hlutum:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Að eyða völdum %(objects_name)s myndi leiða til þess að eftirtöldum skyldum "
-"hlutum yrði eytt:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Ertu viss um að þú viljir eyða völdum %(objects_name)s? Öllum eftirtöldum "
-"hlutum og skyldum hlutum verður eytt:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Eftir %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Breyta"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Þú hefur ekki réttindi til að breyta neinu"
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Nýlegar aðgerðir"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Mínar aðgerðir"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Engin fáanleg"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Óþekkt innihald"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Eitthvað er að gagnagrunnsuppsetningu. Gakktu úr skuggum um að allar töflur "
-"séu til staðar og að notandinn hafi aðgang að grunninum."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Lykilorð:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Gleymt notandanafn eða lykilorð?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Dagsetning/tími"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Notandi"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Aðgerð"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Þessi hlutur hefur enga breytingasögu. Hann var líklega ekki búinn til á "
-"þessu stjórnunarsvæði."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Sýna allt"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Vista"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Leita"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s niðurstaða"
-msgstr[1] "%(counter)s niðurstöður"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s í heildina"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Vista sem nýtt"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Vista og búa til nýtt"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Vista og halda áfram að breyta"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Fyrst, settu inn notendanafn og lykilorð. Svo geturðu breytt öðrum "
-"notendamöguleikum."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Sláðu inn notandanafn og lykilorð."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Settu inn nýtt lykilorð fyrir notandann <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Lykilorð"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Lykilorð (aftur)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Settu inn sama lykilorðið aftur til staðfestingar."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Fjarlægja"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Bæta við öðrum %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Eyða?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Takk fyrir að verja tíma í vefsíðuna í dag."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Skráðu þig inn aftur"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Breyta lykilorði"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Breyting á lykilorði tókst"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Lykilorði þínu var breytt"
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Vinsamlegast skrifaðu gamla lykilorðið þitt til öryggis. Sláðu svo nýja "
-"lykilorðið tvisvar inn svo að hægt sé að ganga úr skugga um að þú hafir ekki "
-"gert innsláttarvillu."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Gamalt lykilorð"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nýtt lykilorð"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Breyta lykilorðinu mínu"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Endurstilla lykilorð"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Endurstilling lykilorðs tókst"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Lykilorðið var endurstillt. Þú getur núna skráð þig inn á vefsvæðið."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Staðfesting endurstillingar lykilorðs"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Settu inn nýtt lykilorð"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Vinsamlegast settu inn nýja lykilorðið tvisvar til að forðast "
-"innsláttarvillur."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nýtt lykilorð:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Staðfestu lykilorð:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Endurstilling á lykilorði mistókst"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Endurstilling lykilorðs tókst ekki. Slóðin var ógild. Hugsanlega hefur hún "
-"nú þegar verið notuð. Vinsamlegast biddu um nýja endurstillingu."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Endurstilling á lykilorði tókst"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Vinsamlegast farðu á eftirfarandi síðu og veldu nýtt lykilorð:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Notandanafnið þitt ef þú skyldir hafa gleymt því:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Takk fyrir að nota vefinn okkar!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s hópurinn"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Endursstilla lykilorðið mitt"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Allar dagsetningar"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Ekkert)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Veldu %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Veldu %s til að breyta"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index a15185b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 39215ca..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/is/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,183 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# gudbergur <gudbergur@gmail.com>, 2012
-# Hafsteinn Einarsson <haffi67@gmail.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/"
-"language/is/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: is\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Fáanleg %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Þetta er listi af því %s sem er í boði. Þú getur ákveðið hluti með því að "
-"velja þá í boxinu að neðan og ýta svo á \"Velja\" örina milli boxana tveggja."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Skrifaðu í boxið til að sía listann af því %s sem er í boði."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Sía"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Velja öll"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Smelltu til að velja allt %s í einu."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Veldu"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Fjarlægja"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Valin %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Þetta er listinn af völdu %s. Þú getur fjarlægt hluti með því að velja þá í "
-"boxinu að neðan og ýta svo á \"Eyða\" örina á milli boxana tveggja."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Eyða öllum"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Smelltu til að fjarlægja allt valið %s í einu."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] " %(sel)s í %(cnt)s valin"
-msgstr[1] " %(sel)s í %(cnt)s valin"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Enn eru óvistaðar breytingar í reitum. Ef þú keyrir aðgerð munu breytingar "
-"ekki verða vistaðar."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Þú hefur valið aðgerð en hefur ekki vistað breytingar á reitum. Vinsamlegast "
-"veldu 'Í lagi' til að vista. Þú þarft að endurkeyra aðgerðina."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Þú hefur valið aðgerð en hefur ekki gert breytingar á reitum. Þú ert líklega "
-"að leita að 'Fara' hnappnum frekar en 'Vista' hnappnum."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"janúar febrúar mars apríl maí júní júlí ágúst september október nóvember "
-"desember"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "S M Þ M F F L"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Sýna"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Fela"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Núna"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Klukka"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Veldu tíma"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Miðnætti"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 f.h."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Hádegi"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Hætta við"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Í dag"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Dagatal"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Í gær"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Á morgun"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/django.mo
deleted file mode 100644
index e7aae0a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/django.po
deleted file mode 100644
index ddae1ac..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,891 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Denis Darii <sinednx@gmail.com>, 2011
-# Flavio Curella <flavio.curella@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nicola Larosa <transifex@teknico.net>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-06 11:44+0000\n"
-"Last-Translator: Nicola Larosa <transifex@teknico.net>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/django/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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Cancellati/e con successo %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Impossibile cancellare %(name)s "
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Sei sicuro?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Cancella %(verbose_name_plural)s selezionati/e"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Tutti"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Sì"
-
-#: filters.py:239
-msgid "No"
-msgstr "No"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Sconosciuto"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Qualsiasi data"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Oggi"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Ultimi 7 giorni"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Questo mese"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Quest'anno"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Inserisci %(username)s e password corretti per un account di staff. Nota che "
-"entrambi i campi distinguono maiuscole e minuscole."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Effettua di nuovo l'accesso, perché la tua sessione è scaduta."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Azione:"
-
-#: models.py:25
-msgid "action time"
-msgstr "momento dell'azione"
-
-#: models.py:28
-msgid "object id"
-msgstr "id dell'oggetto"
-
-#: models.py:29
-msgid "object repr"
-msgstr "rappr. dell'oggetto"
-
-#: models.py:30
-msgid "action flag"
-msgstr "flag di azione"
-
-#: models.py:31
-msgid "change message"
-msgstr "messaggio di modifica"
-
-#: models.py:36
-msgid "log entry"
-msgstr "voce di log"
-
-#: models.py:37
-msgid "log entries"
-msgstr "voci di log"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Aggiunto \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Cambiato \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Cancellato \"%(object)s .\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Oggetto LogEntry"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Nessuno"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s modificato/a."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "e"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Aggiunto/a %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Cambiato %(list)s per %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Cancellato/a %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Nessun campo modificato."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" aggiunto/a correttamente. Puoi modificare ancora qui "
-"sotto."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" è stato inserito correttamente. Puoi aggiungere un "
-"altro %(name)s qui di seguito."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" aggiunto/a correttamente."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" è stato modificato correttamente. Puoi modificarlo di "
-"nuovo qui di seguito."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" è stato modificato correttamente. Puoi aggiungere un "
-"altro %(name)s qui di seguito."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" modificato/a correttamente."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Occorre selezionare degli oggetti per potervi eseguire azioni. Nessun "
-"oggetto è stato cambiato."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Nessuna azione selezionata."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Aggiungi %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "L'oggetto %(name)s con chiave primaria %(key)r non esiste."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Modifica %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Errore nel database"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s modificato/a correttamente."
-msgstr[1] "%(count)s %(name)s modificati/e correttamente."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s selezionato/a"
-msgstr[1] "Tutti i %(total_count)s selezionati/e"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 di %(cnt)s selezionati/e"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" cancellato/a correttamente."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Tracciato delle modifiche: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"La cancellazione di %(class_name)s %(instance)s richiederebbe l'eliminazione "
-"dei seguenti oggetti protetti correlati: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Accedi"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Amministrazione sito"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Amministrazione %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Data:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Ora:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Consultazione"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Aggiungi un Altro"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Attualmente:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Modifica:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Pagina non trovata"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Spiacenti, ma la pagina richiesta non è stata trovata."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Pagina iniziale"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Errore del server"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Errore del server (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Errore del server <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Si è verificato un errore. Gli amministratori del sito ne sono stati "
-"informati per email, e vi porranno rimedio a breve. Grazie per la pazienza."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Esegui l'azione selezionata"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Vai"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Clicca qui per selezionare gli oggetti da tutte le pagine."
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Seleziona tutti/e %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Annulla la selezione"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Benvenuto/a,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Documentazione"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Cambia la password"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Annulla l'accesso"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Ammin. sito Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Amministrazione Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Aggiungi"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Storia"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Vedi sul sito"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Correggi l'errore qui sotto."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Correggi gli errori qui sotto."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Aggiungi %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtra"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Elimina dall'ordinamento"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Priorità d'ordinamento: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Abilita/disabilita ordinamento"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Cancella"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"La cancellazione di %(object_name)s '%(escaped_object)s' causerebbe la "
-"cancellazione di oggetti collegati, ma questo account non ha i permessi per "
-"cancellare gli oggetti dei seguenti tipi:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"La cancellazione di %(object_name)s '%(escaped_object)s' richiederebbe "
-"l'eliminazione dei seguenti oggetti protetti correlati:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Sicuro di voler cancellare %(object_name)s \"%(escaped_object)s\"? Tutti i "
-"seguenti oggetti collegati verranno cancellati:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Sì, sono sicuro"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Cancella più oggetti"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Cancellare %(objects_name)s selezionato/a comporterebbe l'eliminazione di "
-"oggetti correlati, ma il tuo account non dispone dell'autorizzazione a "
-"eliminare i seguenti tipi di oggetti:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Cancellare %(objects_name)s selezionato/a richiederebbe l'eliminazione dei "
-"seguenti oggetti protetti correlati:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Sei sicuro di voler cancellare %(objects_name)s? Tutti i seguenti oggetti e "
-"le loro voci correlate verranno cancellati:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Per %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modelli nell'applicazione %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Modifica"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Non hai i privilegi per modificare alcunché."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Azioni Recenti"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Azioni Proprie"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Nessuna disponibile"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Contenuto sconosciuto"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Ci sono problemi nell'installazione del database. Assicurarsi che le tabelle "
-"appropriate del database siano state create, e che il database sia leggibile "
-"dall'utente appropriato."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Password:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Hai dimenticato la password o il nome utente?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Data/ora"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Utente"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Azione"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Questo oggetto non ha cambiamenti registrati. Probabilmente non è stato "
-"creato con questo sito di amministrazione."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Mostra tutto"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Salva"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Cerca"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s risultato"
-msgstr[1] "%(counter)s risultati"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s in tutto"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Salva come nuovo"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Salva e aggiungi un altro"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Salva e continua le modifiche"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Inserisci innanzitutto nome utente e password. Potrai poi modificare le "
-"altre impostazioni dell'utente."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Inserisci il nome utente e password."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Inserisci una nuova password per l'utente <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Password"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Password (di nuovo)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Inserisci la stessa password inserita sopra, come verifica."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Elimina"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Aggiungi un/a altro/a %(verbose_name)s."
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Cancellare?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Grazie per aver speso il tuo tempo prezioso su questo sito oggi."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Accedi di nuovo"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Cambio password"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Cambio password avvenuto correttamente"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "La password è stata cambiata."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Inserisci la password attuale, per ragioni di sicurezza, e poi la nuova "
-"password due volte, per verificare di averla scritta correttamente."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Password attuale"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nuova password"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Modifica la mia password"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Reimposta la password"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Password reimpostata"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "La tua password è stata impostata. Ora puoi effettuare l'accesso."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Conferma reimpostazione password"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Inserisci la nuova password"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Inserisci la nuova password due volte, per verificare di averla scritta "
-"correttamente."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nuova password:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Conferma la password:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Password non reimpostata"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Il link per la reimpostazione della password non era valido, forse perché "
-"era già stato usato. Richiedi una nuova reimpostazione della password."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Password reimpostata correttamente"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Abbiamo inviato istruzioni per impostare la password all'indirizzo email che "
-"hai indicato. Dovresti riceverle a breve."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Se non ricevi un messaggio email, accertati di aver inserito l'indirizzo con "
-"cui ti sei registrato, e controlla la cartella dello spam."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Ricevi questa mail perché hai richiesto di reimpostare la password del tuo "
-"account utente presso %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Vai alla pagina seguente e scegli una nuova password:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Il tuo nome utente, in caso tu l'abbia dimenticato:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Grazie per aver usato il nostro sito!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Il team di %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Password dimenticata? Inserisci il tuo indirizzo email qui sotto, e ti "
-"invieremo istruzioni per impostarne una nuova."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Indirizzo email:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Reimposta la mia password"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Tutte le date"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Nessuno)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Scegli %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Scegli %s da modificare"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 8aa8389..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 944c76a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/it/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,185 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Denis Darii <sinednx@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nicola Larosa <transifex@teknico.net>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/django/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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s disponibili"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Questa è la lista dei %s disponibili. Puoi sceglierne alcuni selezionandoli "
-"nella casella qui sotto e poi facendo clic sulla freccia \"Scegli\" tra le "
-"due caselle."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Scrivi in questa casella per filtrare l'elenco dei %s disponibili."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtro"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Scegli tutto"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Fai clic per scegliere tutti i %s in una volta."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Scegli"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Elimina"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s scelti"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Questa è la lista dei %s scelti. Puoi eliminarne alcuni selezionandoli nella "
-"casella qui sotto e poi facendo clic sulla freccia \"Elimina\" tra le due "
-"caselle."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Elimina tutti"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Fai clic per eliminare tutti i %s in una volta."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s di %(cnt)s selezionato"
-msgstr[1] "%(sel)s di %(cnt)s selezionati"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Hai delle modifiche in campi singoli. Se esegui un'azione, le modifiche non "
-"salvate andranno perse."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Hai selezionato un'azione, ma non hai ancora salvato le modifiche apportate "
-"a campi singoli. Fai clic su OK per salvare. Poi dovrai ri-eseguire l'azione."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Hai selezionato un'azione, e non hai ancora apportato alcuna modifica a "
-"campi singoli. Probabilmente stai cercando il pulsante Go, invece di Save."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"gennaio febbraio marzo aprile maggio giugno luglio agosto settembre ottobre "
-"novembre dicembre"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "D L M M G V S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Mostra"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Nascondi"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Adesso"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Orologio"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Scegli un orario"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Mezzanotte"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 del mattino"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Mezzogiorno"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Annulla"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Oggi"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Calendario"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Ieri"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Domani"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/django.mo
deleted file mode 100644
index b6e08c0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/django.po
deleted file mode 100644
index 87aa60c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,877 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Shinya Okano <tokibito@gmail.com>, 2012-2013
-# Tetsuya Morimoto <tetsuya.morimoto@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-10-05 06:38+0000\n"
-"Last-Translator: Shinya Okano <tokibito@gmail.com>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/"
-"ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d 個の %(items)s を削除しました。"
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "%(name)s が削除できません"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "よろしいですか?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "選択された %(verbose_name_plural)s の削除"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "全て"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "はい"
-
-#: filters.py:239
-msgid "No"
-msgstr "いいえ"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "不明"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "いつでも"
-
-#: filters.py:309
-msgid "Today"
-msgstr "今日"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "過去 7 日間"
-
-#: filters.py:317
-msgid "This month"
-msgstr "今月"
-
-#: filters.py:321
-msgid "This year"
-msgstr "今年"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"スタッフアカウントの正しい%(username)sとパスワードを入力してください。どちら"
-"のフィールドも大文字と小文字は区別されます。"
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr ""
-"再ログインしてください。ログインセッションが有効期間切れしてしまいました。"
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "操作:"
-
-#: models.py:25
-msgid "action time"
-msgstr "操作時刻"
-
-#: models.py:28
-msgid "object id"
-msgstr "オブジェクト ID"
-
-#: models.py:29
-msgid "object repr"
-msgstr "オブジェクトの文字列表現"
-
-#: models.py:30
-msgid "action flag"
-msgstr "操作種別"
-
-#: models.py:31
-msgid "change message"
-msgstr "変更メッセージ"
-
-#: models.py:36
-msgid "log entry"
-msgstr "ログエントリー"
-
-#: models.py:37
-msgid "log entries"
-msgstr "ログエントリー"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" を追加しました。"
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "\"%(object)s\" を変更しました - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\"を削除しました。"
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "ログエントリー オブジェクト"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "None"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s を変更しました。"
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "と"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\"を追加しました。"
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" の %(list)s を変更しました。"
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" を削除しました。"
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "変更はありませんでした。"
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" を追加しました。続けて編集できます。"
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" を追加しました。 別の %(name)s を以下から追加できます。"
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" を追加しました。"
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr "%(name)s \"%(obj)s\" を変更しました。 以下から再度編集できます。"
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" を変更しました。 別の %(name)s を以下から追加できます。"
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" を変更しました。"
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"操作を実行するには、対象を選択する必要があります。何も変更されませんでした。"
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "操作が選択されていません。"
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%s を追加"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "主キーが %(key)r である %(name)s オブジェクトは存在しません。"
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s を変更"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "データベースエラー"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s 個の %(name)s を変更しました。"
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s 個選択されました"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "%(cnt)s個の内ひとつも選択されていません"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" を削除しました。"
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "変更履歴: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' を削除するためには、次の保護された関連オ"
-"ブジェクトの削除が必要です:"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "ログイン"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "サイト管理"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s サイト管理"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "日付:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "時刻:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "検索"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "追加"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "現在の値:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "変更後:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "ページが見つかりません"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "申し訳ありませんが、お探しのページは見つかりませんでした。"
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "ホーム"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "サーバーエラー"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "サーバーエラー (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "サーバーエラー <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"エラーが発生しました。サイト管理者にメールで報告されたので、修正されるまでし"
-"ばらくお待ちください。"
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "選択された操作を実行"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "実行"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "全ページの項目を選択するにはここをクリック"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "%(total_count)s個ある%(module_name)s を全て選択"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "選択を解除"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "ようこそ"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "ドキュメント"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "パスワードの変更"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "ログアウト"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django サイト管理"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django 管理サイト"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "追加"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "履歴"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "サイト上で表示"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "下記のエラーを修正してください。"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "下記のエラーを修正してください。"
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s を追加"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "フィルター"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "ソート条件から外します"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "ソート優先順位: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "昇順降順を切り替えます"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "削除"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' の削除時に関連づけられたオブジェクトも削"
-"除しようとしましたが、あなたのアカウントには以下のタイプのオブジェクトを削除"
-"するパーミッションがありません:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' を削除するには以下の保護された関連オブ"
-"ジェクトを削除することになります:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"%(object_name)s \"%(escaped_object)s\"を削除しますか? 関連づけられている以下"
-"のオブジェクトも全て削除されます:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "はい。"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "複数のオブジェクトを削除します"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"選択した %(objects_name)s を削除すると関連するオブジェクトも削除しますが、あ"
-"なたのアカウントは以下のオブジェクト型を削除する権限がありません:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"選択した %(objects_name)s を削除すると以下の保護された関連オブジェクトを削除"
-"することになります:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"本当に選択した %(objects_name)s を削除しますか? 以下の全てのオブジェクトと関"
-"連する要素が削除されます:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "%(filter_title)s で絞り込む"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "%(name)s アプリケーション内のモデル"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "変更"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "変更のためのパーミッションがありません。"
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "最近行った操作"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "操作"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "利用不可"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "不明なコンテント"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"データベースの設定に問題があるようです。適切なテーブルが作られていること、適"
-"切なユーザーでデータベースのデータを読み込めることを確認してください。"
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "パスワード:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "パスワードまたはユーザー名を忘れましたか?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "日付/時刻"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "ユーザー"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "操作"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"このオブジェクトには変更履歴がありません。おそらくこの管理サイトで追加したも"
-"のではありません。"
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "全件表示"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "保存"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "検索"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "結果 %(counter)s"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "全 %(full_result_count)s 件"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "新規保存"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "保存してもう一つ追加"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "保存して編集を続ける"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"まずユーザー名とパスワードを登録してください。その後詳細情報が編集可能になり"
-"ます。"
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "ユーザー名とパスワードを入力してください。"
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"<strong>%(username)s</strong>さんの新しいパスワードを入力してください。"
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "パスワード"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "パスワード(確認用)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "確認のため、再度パスワードを入力してください。"
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "削除"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "%(verbose_name)s の追加"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "削除しますか?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "ご利用ありがとうございました。"
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "もう一度ログイン"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "パスワードの変更"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "パスワードを変更しました"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "あなたのパスワードは変更されました"
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"セキュリティ上の理由から元のパスワードの入力が必要です。新しいパスワードは正"
-"しく入力したか確認できるように二度入力してください。"
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "元のパスワード"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "新しいパスワード"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "パスワードの変更"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "パスワードをリセット"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "パスワードがリセットされました"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "パスワードがセットされました。ログインしてください。"
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "パスワードリセットの確認"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "新しいパスワードを入力してください"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr "確認のために、新しいパスワードを二回入力してください。"
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "新しいパスワード:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "新しいパスワード (確認用) :"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "パスワードのリセットに失敗しました"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"パスワードリセットのリンクが不正です。おそらくこのリンクは既に使われていま"
-"す。もう一度パスワードリセットしてください。"
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "パスワードをリセットしました"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"送信されたメールアドレスに、パスワードを変更する方法をメールしました。受け"
-"取った内容を確認してください。"
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"メールが届かない場合は、登録したメールアドレスを入力したか確認し、スパムフォ"
-"ルダに入っていないか確認してください。"
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"このメールは %(site_name)s で、あなたのアカウントのパスワードリセットが要求さ"
-"れたため、送信されました。"
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "次のページで新しいパスワードを選んでください:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "あなたのユーザー名 (念のため):"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "ご利用ありがとうございました!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr " %(site_name)s チーム"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"パスワードを忘れましたか? メールアドレスを以下に入力すると、新しいパスワード"
-"の設定方法をお知らせします。"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "メールアドレス:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "パスワードをリセット"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "いつでも"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(なし)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s を選択"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "変更する %s を選択"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index c00b436..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 6000709..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ja/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,179 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Shinya Okano <tokibito@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/"
-"ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "利用可能 %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"これが使用可能な %s のリストです。下のボックスで項目を選択し、2つのボックス間"
-"の \"選択\"の矢印をクリックして、いくつかを選択することができます。"
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "使用可能な %s のリストを絞り込むには、このボックスに入力します。"
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "フィルター"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "全て選択"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "クリックするとすべての %s を選択します。"
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "選択"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "削除"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "選択された %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"これが選択された %s のリストです。下のボックスで選択し、2つのボックス間の "
-"\"削除\"矢印をクリックして一部を削除することができます。"
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "すべて削除"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "クリックするとすべての %s を選択から削除します。"
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(cnt)s個中%(sel)s個選択"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"フィールドに未保存の変更があります。操作を実行すると未保存の変更は失われま"
-"す。"
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"操作を選択しましたが、フィールドに未保存の変更があります。OKをクリックして保"
-"存してください。その後、操作を再度実行する必要があります。"
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"操作を選択しましたが、フィールドに変更はありませんでした。もしかして保存ボタ"
-"ンではなくて実行ボタンをお探しですか。"
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "日 月 火 水 木 金 土"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "表示"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "非表示"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "現在"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "時計"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "時間を選択"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "0時"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "午前 6 時"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "12時"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "キャンセル"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "今日"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "カレンダー"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "昨日"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "明日"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ka/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ka/LC_MESSAGES/django.mo
deleted file mode 100644
index dca4d48..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ka/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ka/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ka/LC_MESSAGES/django.po
deleted file mode 100644
index 8afe42c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ka/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,884 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Bouatchidzé <a@anbz.net>, 2013
-# David Avsajanishvili <avsd05@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/"
-"ka/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ka\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s წარმატებით წაიშალა."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "%(name)s ვერ იშლება"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "დარწმუნებული ხართ?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "არჩეული %(verbose_name_plural)s-ის წაშლა"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "ყველა"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "კი"
-
-#: filters.py:239
-msgid "No"
-msgstr "არა"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "გაურკვეველი"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "ნებისმიერი თარიღი"
-
-#: filters.py:309
-msgid "Today"
-msgstr "დღეს"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "ბოლო 7 დღე"
-
-#: filters.py:317
-msgid "This month"
-msgstr "მიმდინარე თვე"
-
-#: filters.py:321
-msgid "This year"
-msgstr "მიმდინარე წელი"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"გთხოვთ, შეიყვანოთ სწორი %(username)s და პაროლი პერსონალის ანგარიშისთვის. "
-"იქონიეთ მხედველობაში, რომ ორივე ველი ითვალისწინებს მთავრულს."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "გთხოვთ, შეხვიდეთ კიდევ ერთხელ, რადგანაც თქვენი სესიის დრო ამოიწურა."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "მოქმედება:"
-
-#: models.py:25
-msgid "action time"
-msgstr "მოქმედების დრო"
-
-#: models.py:28
-msgid "object id"
-msgstr "ობიექტის id"
-
-#: models.py:29
-msgid "object repr"
-msgstr "ობიექტის წარმ."
-
-#: models.py:30
-msgid "action flag"
-msgstr "მოქმედების დროშა"
-
-#: models.py:31
-msgid "change message"
-msgstr "შეცვლის შეტყობინება"
-
-#: models.py:36
-msgid "log entry"
-msgstr "ლოგის ერთეული"
-
-#: models.py:37
-msgid "log entries"
-msgstr "ლოგის ერთეულები"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "დამატებულია \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "შეცვლილია \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "წაშლილია \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "ჟურნალის ჩანაწერის ობიექტი"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "არცერთი"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s შეცვლილია."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "და"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "დამატებულია %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "შეცვლილია %(list)s for %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "წაშლილია %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "არცერთი ველი არ შეცვლილა."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" წარმატებით დაემატა. შეგიძლიათ განაგრძოთ მისი "
-"რედაქტირება."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" წარმატებით იქნა დამატებული. თქვენ შეგიძლიათ დაამატოთ "
-"სხვა %(name)s ქვემოთ."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" წარმატებით დაემატა."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" წარმატებით შეიცვალა. თქვენ შეგიძლიათ ისევ დაარედაქტიროთ "
-"ის ქვემოთ."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" წარმატებით შეიცვალა. თქვენ შეგიძლიათ დაამატოთ სხვა "
-"%(name)s ქვემოთ."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" წარმატებით შეიცვალა."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"ობიექტებზე მოქმედებების შესასრულებლად ისინი არჩეული უნდა იყოს. არცერთი "
-"ობიექტი არჩეული არ არის."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "მოქმედება არჩეული არ არის."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "დავამატოთ %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s-ის ობიექტი პირველადი გასაღებით %(key)r არ არსებობს."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "შევცვალოთ %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "მონაცემთა ბაზის შეცდომა"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s წარმატებით შეიცვალა."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s-ია არჩეული"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "%(cnt)s-დან არცერთი არჩეული არ არის"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" წარმატებით წაიშალა."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "ცვლილებების ისტორია: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "შესვლა"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "საიტის ადმინისტრირება"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s ადმინისტრირება"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "თარიღი;"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "დრო:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "ძიება"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "ახლის დამატება"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "ამჟამად:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "შეცვლა:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "გვერდი ვერ მოიძებნა"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "უკაცრავად, მოთხოვნილი გვერდი ვერ მოიძებნა."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "საწყისი გვერდი"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "სერვერის შეცდომა"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "სერვერის შეცდომა (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "სერვერის შეცდომა <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"მოხდა შეცდომა. ინფორმაცია მასზე გადაეცა საიტის ადმინისტრატორებს ელ. ფოსტით "
-"და ის უნდა შესწორდეს უმოკლეს ვადებში. გმადლობთ მოთმინებისთვის."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "არჩეული მოქმედების შესრულება"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "გადასვლა"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "ყველა გვერდზე არსებული ობიექტის მოსანიშნად დააწკაპეთ აქ"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "ყველა %(total_count)s %(module_name)s-ის მონიშვნა"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "მონიშვნის გასუფთავება"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "კეთილი იყოს თქვენი მობრძანება,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "დოკუმენტაცია"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "პაროლის შეცვლა"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "გამოსვლა"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django-ს ადმინისტრირების საიტი"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django-ს ადმინისტრირება"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "დამატება"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "ისტორია"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "წარმოდგენა საიტზე"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "გთხოვთ, გაასწოროთ შეცდომები."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "დავამატოთ %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "ფილტრი"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "დალაგებიდან მოშორება"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "დალაგების პრიორიტეტი: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "დალაგების გადართვა"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "წავშალოთ"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"ობიექტების წაშლა: %(object_name)s '%(escaped_object)s' გამოიწვევს "
-"დაკავშირებული ობიექტების წაშლას, მაგრამ თქვენ არა გაქვთ შემდეგი ტიპების "
-"ობიექტების წაშლის უფლება:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"%(object_name)s ტიპის '%(escaped_object)s' ობიექტის წაშლა მოითხოვს ასევე "
-"შემდეგი დაკავშირებული ობიექტების წაშლას:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"ნამდვილად გსურთ, წაშალოთ %(object_name)s \"%(escaped_object)s\"? ყველა "
-"ქვემოთ მოყვანილი დაკავშირებული ობიექტი წაშლილი იქნება:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "კი, ნამდვილად"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "რამდენიმე ობიექტის წაშლა"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"%(objects_name)s ტიპის ობიექტის წაშლა ითხოვს ასევე შემდეგი ობიექტების "
-"წაშლას, მაგრამ თქვენ არ გაქვთ ამის ნებართვა:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"არჩეული %(objects_name)s ობიექტის წაშლა მოითხოვს ასევე შემდეგი დაცული "
-"დაკავშირეული ობიექტების წაშლას:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"დარწმუნებული ხართ, რომ გსურთ %(objects_name)s ობიექტის წაშლა? ყველა შემდეგი "
-"ობიექტი, და მათზე დამოკიდებული ჩანაწერები წაშლილი იქნება:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s მიხედვით "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "მოდელები %(name)s აპლიკაციაში"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "შეცვლა"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "თქვენ არა გაქვთ რედაქტირების უფლება."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "ბოლო მოქმედებები"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "ჩემი მოქმედებები"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "არ არის მისაწვდომი"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "უცნობი შიგთავსი"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"თქვენი მონაცემთა ბაზის ინსტალაცია არაკორექტულია. დარწმუნდით, რომ მონაცემთა "
-"ბაზის შესაბამისი ცხრილები შექმნილია, და მონაცემთა ბაზის წაკითხვა შეუძლია "
-"შესაბამის მომხმარებელს."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "პაროლი:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "დაგავიწყდათ თქვენი პაროლი ან მომხმარებლის სახელი?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "თარიღი/დრო"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "მომხმარებელი"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "მოქმედება"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"ამ ობიექტს ცვლილებების ისტორია არა აქვს. როგორც ჩანს, იგი არ იყო დამატებული "
-"ადმინისტრირების საიტის მეშვეობით."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "ვაჩვენოთ ყველა"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "შევინახოთ"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "ძებნა"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s შედეგი"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "სულ %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "შევინახოთ, როგორც ახალი"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "შევინახოთ და დავამატოთ ახალი"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "შევინახოთ და გავაგრძელოთ რედაქტირება"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"ჯერ შეიყვანეთ მომხმარებლის სახელი და პაროლი. ამის შემდეგ თქვენ გექნებათ "
-"მომხმარებლის სხვა ოპციების რედაქტირების შესაძლებლობა."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "შეიყვანეთ მომხმარებლის სახელი და პაროლი"
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"შეიყვანეთ ახალი პაროლი მომხმარებლისათვის <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "პაროლი"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "პაროლი (განმეორებით)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "შეიყვანეთ იგივე პაროლი, დამოწმებისათვის."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "წაშლა"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "კიდევ ერთი %(verbose_name)s-ის დამატება"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "წავშალოთ?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "გმადლობთ, რომ დღეს ამ საიტთან მუშაობას დაუთმეთ დრო."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "ხელახლა შესვლა"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "პაროლის შეცვლა"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "პაროლი წარმატებით შეიცვალა"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "თქვენი პაროლი შეიცვალა."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"გთხოვთ, უსაფრთხოების დაცვის მიზნით, შეიყვანოთ თქვენი ძველი პაროლი, შემდეგ კი "
-"ახალი პაროლი ორჯერ, რათა დარწმუნდეთ, რომ იგი შეყვანილია სწორად."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "ძველი პაროლი"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "ახალი პაროლი"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "შევცვალოთ ჩემი პაროლი"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "პაროლის აღდგენა"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "პაროლის აღდგენა დასრულებულია"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-"თქვენი პაროლი დაყენებულია. ახლა შეგიძლიათ გადახვიდეთ შემდეგ გვერდზე და "
-"შეხვიდეთ სისტემაში."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "პაროლი შეცვლის დამოწმება"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "შეიყვანეთ ახალი პაროლი:"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"გთხოვთ, შეიყვანეთ თქვენი ახალი პაროლი ორჯერ, რათა დავრწმუნდეთ, რომ იგი "
-"სწორად ჩაბეჭდეთ."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "ახალი პაროლი:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "პაროლის დამოწმება:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "პაროლის აღდგენა წარუმატებლად დასრულდა"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"პაროლის აღდგენის ბმული არასწორი იყო, შესაძლოა იმის გამო, რომ იგი უკვე ყოფილა "
-"გამოყენებული. გთხოვთ, კიდევ ერთხელ სცადოთ პაროლის აღდგენა."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "პაროლის აღდგენა წარმატებით დასრულდა"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"ჩვენ გამოვაგზავნეთ მითითებები პაროლის დასაყენებლად ელ. ფოსტის მისამართზე, "
-"რომელიც თქვენ შეიყვანეთ. თქვენ მალე უნდა მიიღოთ ისინი."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"თქვენ მიიღეთ ეს წერილი იმიტომ, რომ გააკეთეთ პაროლის თავიდან დაყენების "
-"მოთხოვნა თქვენი მომხმარებლის ანგარიშისთვის %(site_name)s-ზე."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "გთხოვთ, გადახვიდეთ შემდეგ გვერდზე და აირჩიოთ ახალი პაროლი:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "თქვენი მომხმარებლის სახელი (თუ დაგავიწყდათ):"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "გმადლობთ, რომ იყენებთ ჩვენს საიტს!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s საიტის გუნდი"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"დაგავიწყდათ თქვენი პაროლი? შეიყვანეთ თქვენი ელ. ფოსტის მისამართი ქვემოთ და "
-"ჩვენ გამოგიგზავნით მითითებებს ახალი პაროლის დასაყენებლად."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "ელ. ფოსტის მისამართი:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "აღვადგინოთ ჩემი პაროლი"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "ყველა თარიღი"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(არცერთი)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "ავირჩიოთ %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "აირჩიეთ %s შესაცვლელად"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index b6f74ed..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.po
deleted file mode 100644
index fd0a65b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ka/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,183 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Bouatchidzé <a@anbz.net>, 2013
-# David Avsajanishvili <avsd05@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/"
-"ka/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ka\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "მისაწვდომი %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"ეს არის მისაწვდომი %s-ის სია. ზოგიერთი მათგანის ასარჩევად, მონიშვნით ისინი "
-"ქვედა სარკმელში და დააწკაპუნეთ ორ სარკმელს შორის მდებარე ისარზე \"არჩევა\" ."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "აკრიფეთ ამ სარკმელში მისაწვდომი %s-ის სიის გასაფილტრად."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "ფილტრი"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "ავირჩიოთ ყველა"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "დააწკაპუნეთ ერთდროულად ყველა %s-ის ასარჩევად."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "არჩევა"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "წავშალოთ"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "არჩეული %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"ეს არის არჩეული %s-ის სია. ზოგიერთი მათგანის მოსაშორებლად, მონიშვნით ისინი "
-"ქვედა სარკმელში და დააწკაპუნეთ ორ სარკმელს შორის მდებარე ისარზე \"მოშორება"
-"\" ."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "ყველას მოშორება"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "დააწკაპუნეთ ყველა არჩეული %s-ის ერთდროულად მოსაშორებლად."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(cnt)s-დან არჩეულია %(sel)s"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"ცალკეულ ველებში შეუნახავი ცვლილებები გაქვთ! თუ მოქმედებას შეასრულებთ, "
-"შეუნახავი ცვლილებები დაიკარაგება."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"აგირჩევიათ მოქმედება, მაგრამ ცალკეული ველები ჯერ არ შეგინახიათ! გთხოვთ, "
-"შენახვისთვის დააჭიროთ OK. მოქმედების ხელახლა გაშვება მოგიწევთ."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"აგირჩევიათ მოქმედება, მაგრამ ცალკეულ ველებში ცვლილებები არ გაგიკეთებიათ! "
-"სავარაუდოდ, ეძებთ ღილაკს \"Go\", და არა \"შენახვა\""
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"იანვარი თებერვალი მარტი აპრილი მაისი ივნისი ივლისი აგვისტო სექტემბერი "
-"ოქტომბერი ნოემბერი დეკემბერი"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "კ ო ს ო ხ პ შ"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "ვაჩვენოთ"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "დავმალოთ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "ახლა"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "საათი"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "ავირჩიოთ დრო"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "შუაღამე"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "დილის 6 სთ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "შუადღე"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "უარი"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "დღეს"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "კალენდარი"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "გუშინ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "ხვალ"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/kk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/kk/LC_MESSAGES/django.mo
deleted file mode 100644
index 77028e7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/kk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/kk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/kk/LC_MESSAGES/django.po
deleted file mode 100644
index d2ac573..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/kk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,865 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Nurlan Rakhimzhanov <nurlan.rakhimzhanov@gmail.com>, 2011
-# yun_man_ger <germanilyin@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/"
-"kk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kk\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Таңдалған %(count)d %(items)s элемент өшірілді."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "%(name)s өшіре алмайды"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Сенімдісіз бе?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Таңдалған %(verbose_name_plural)s өшірілді"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Барлығы"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Иә"
-
-#: filters.py:239
-msgid "No"
-msgstr "Жоқ"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Белгісіз"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Кез келген күн"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Бүгін"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Өткен 7 күн"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Осы ай"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Осы жыл"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Сіздің сессия уақытыңыз өтіп кентті, өтініш, қайты кіріп көріңіз,"
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Әрекет:"
-
-#: models.py:25
-msgid "action time"
-msgstr "әрекет уақыты"
-
-#: models.py:28
-msgid "object id"
-msgstr "объекттің id-i"
-
-#: models.py:29
-msgid "object repr"
-msgstr "объекттің repr-i"
-
-#: models.py:30
-msgid "action flag"
-msgstr "әрекет белгісі"
-
-#: models.py:31
-msgid "change message"
-msgstr "хабарламаны өзгерту"
-
-#: models.py:36
-msgid "log entry"
-msgstr "Жорнал жазуы"
-
-#: models.py:37
-msgid "log entries"
-msgstr "Жорнал жазулары"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Ешнәрсе"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s өзгертілді."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "және"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" қосылды."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "\"%(object)s\" %(name)s-нің %(list)s өзгертілді."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" өшірілді."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Ешқандай толтырма өзгермеді."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" сәтті қосылды. Оны төменде өзгерте аласыз."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" сәтті қосылды."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" сәтті өзгертілді."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Бірнәрсені өзгерту үшін бірінші оларды таңдау керек. Ешнәрсе өзгертілмеді."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Ешқандай әрекет таңдалмады."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%s қосу"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Бірінші кілті %(key)r бар %(name)s объекті жоқ."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s өзгету"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Мәліметтер базасының қатесі"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] ""
-"one: %(count)s %(name)s өзгертілді.\n"
-"\n"
-"other: %(count)s %(name)s таңдалғандарының барі өзгертілді."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] ""
-"one: %(total_count)s таңдалды\n"
-"\n"
-"other: Барлығы %(total_count)s таңдалды"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 of %(cnt)s-ден 0 таңдалды"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" сәтті өшірілді."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Өзгерес тарихы: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Кіру"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Сайт әкімшілігі"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s әкімшілігі"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Күнтізбелік күн:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Уақыт:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Іздеу"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Тағы қосу"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Бет табылмады"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Кешірім сұраймыз, сіздің сұраған бетіңіз табылмады."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Негізгі"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Сервердің қатесі"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Сервердің қатесі (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Сервердің қатесі <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Таңдалған әрәкетті іске қосу"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Алға"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Осы беттегі барлық объекттерді таңдау үшін осы жерді шертіңіз"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Осылардың %(total_count)s %(module_name)s барлығын таңдау"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Белгілерді өшіру"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Қош келдіңіз,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Құжаттама"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Құпия сөзді өзгерту"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Шығу"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Даңғо сайтының әкімі"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Даңғо әкімшілігі"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Қосу"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Тарих"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Сайтта көру"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr ""
-"one: Астындағы қатені дұрыстаңыз.\n"
-"other: Астындағы қателерді дұрыстаңыз."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s қосу"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Сүзгіз"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Өшіру"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' объектты өшіруы байланысты объекттерін "
-"өшіруді қажет етеді, бырақ сізде осындай объектерді өшіру рұқсаты жоқ:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' объектті өшіру осындай байлансты "
-"объекттерды өшіруді қажет етеді:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"%(object_name)s \"%(escaped_object)s\" объекттерді өшіруге сенімдісіз бе? "
-"Бұл байланысты элементтер де өшіріледі:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Иә, сенімдімін"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Бірнеше объекттерді өшіру"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"%(objects_name)s объектты өшіруы байланысты объекттерін өшіруді қажет етеді, "
-"бырақ сізде осындай объектерді өшіру рұқсаты жоқ:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Таңдалған %(objects_name)s-ді(ы) өшіру, онымен байланыстағы қорғалған "
-"объектілердің барлығын жояды:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Таңдаған %(objects_name)s объектіңізді өшіруге сенімдісіз бе? Себебі, "
-"таңдағын объектіліріңіз және онымен байланыстағы барлық элементтер жойылады:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Өзгетру"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Бірденке түзетуге рұқсатыңыз жоқ."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Соңғы әрекеттер"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Менің әрекеттерім"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Қол жетімдісі жоқ"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Белгісіз мазмұн"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Дерекқор орнатуыңызда бір қате бар. Дерекқор кестелері дұрыс құрылғаның және "
-"дерекқор көрсетілген дерекқор пайдаланушыда оқұ рұқсаты бар."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Құпия сөз:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr ""
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Өшіру/Уақыт"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Қолданушы"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Әрекет"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Бұл объекттың өзгерту тарихы жоқ. Мүмкін ол бұл сайт арқылы енгізілген жоқ."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Барлығын көрсету"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Сақтау"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Іздеу"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s нәтиже"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "Барлығы %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Жаңадан сақтау"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Сақта және жаңасын қос"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Сақта және өзгертуді жалғастыр"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Алдымен, пайдаланушының атын және құпия сөзді енгізіңіз. Содан соң, тағы "
-"басқа пайдаланушы параметрлерін енгізе аласыз."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Пайдаланушының атын және құпия сөзді енгізіңіз."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"<strong>%(username)s</strong> пайдаланушы үшін жаңа құпия сөзді енгізіңіз."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Құпия сөз"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Құпия сөз(қайтадан)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Растау үшін жоғардағыдай құпия сөзді енгізіңіз."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Өшіру"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Тағы басқа %(verbose_name)s кос"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Өшіру?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Бүгін Веб-торапқа уақыт бөлгеніңіз үшін рахмет."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Қайтадан кіріңіз"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Құпия сөзді өзгерту"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Құпия сөз сәтті өзгертілді"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Құпия сөзіңіз өзгертілді."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Ескі құпия сөзіңізді енгізіңіз, содан сон сенімді болу үшін жаңа құпия "
-"сөзіңізді екі рет енгізіңіз."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Ескі құпия сөз"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Жаңа құпия сөз"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Құпия сөзімді өзгерту"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Құпия сөзді өзгерту"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Құпия сөзді өзгерту бітті"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Сіздің құпия сөзіңіз енгізілді. Жүйеге кіруіңізге болады."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Құпия сөзді өзгерту растау"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Жаңа құпия сөзді енгізіңіз"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr "Сенімді болу үшін жаңа құпия сөзіңізді екі рет енгізіңіз."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Жаңа құпия сөз:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Құпия сөз (растау):"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Құпия сөзді өзгертуы сәтсіз аяқталды"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Құпия сөзді өзгерту байланыс дұрыс емес, мүмкін ол осыған дейін "
-"пайдаланылды. Жаңа құпия сөзді өзгерту сұрау жіберіңіз."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Құпия сөз сәтті өзгертілді"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Жаңа құпия сөзді тандау үшін мынау бетке кіріңіз:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Егер ұмытып қалған болсаңыз, пайдалануш атыңыз:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Біздің веб-торабын қолданғаныңыз үшін рахмет!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s тобы"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Құпия сөзді жаңала"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Барлық мерзімдер"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Ешнарсе)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s таңда"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "%s өзгерту үщін таңда"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index e7aeb7e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.po
deleted file mode 100644
index c1456cc..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/kk/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,176 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Nurlan Rakhimzhanov <nurlan.rakhimzhanov@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/"
-"kk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kk\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s бар"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Сүзгіш"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Өшіру(жою)"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(cnt)s-ң %(sel)s-ы(і) таңдалды"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Сіздің төмендегі өзгермелі алаңдарда(fields) өзгерістеріңіз бар. Егер артық "
-"әрекет жасасаңызб сіз өзгерістеріңізді жоғалтасыз."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Сіз өз өзгерістеріңізді сақтамай, әрекет жасадыңыз. Өтініш, сақтау үшін ОК "
-"батырмасын басыңыз және өз әрекетіңізді қайта жасап көріңіз. "
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Сіз Сақтау батырмасына қарағанда, Go(Алға) батырмасын іздеп отырған "
-"боларсыз, себебі ешқандай өзгеріс жасамай, әрекет жасадыңыз."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Қаңтар Ақпан Наурыз Сәуір Мамыр Маусым Шілде Тамыз Қыркүйек Қазан Қараша "
-"Желтоқсан"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "Ж Д С С Б Ж С"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Көрсету"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Жасыру"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Қазір"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Сағат"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Уақытты таңда"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Түн жарым"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "06"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Талтүс"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Болдырмау"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Бүгін"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Күнтізбе"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Кеше"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Ертең"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/km/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/km/LC_MESSAGES/django.mo
deleted file mode 100644
index 0edddd2..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/km/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/km/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/km/LC_MESSAGES/django.po
deleted file mode 100644
index 2875707..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/km/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,843 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Khmer (http://www.transifex.com/projects/p/django/language/"
-"km/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: km\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr ""
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr ""
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "តើលោកអ្នកប្រាកដទេ?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr ""
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "ទាំងអស់"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "យល់ព្រម"
-
-#: filters.py:239
-msgid "No"
-msgstr "មិនយល់ព្រម"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "មិន​ដឹង"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "កាល​បរិច្ឆេទណាមួយ"
-
-#: filters.py:309
-msgid "Today"
-msgstr "ថ្ងៃនេះ"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "៧​ថ្ងៃ​កន្លង​មក"
-
-#: filters.py:317
-msgid "This month"
-msgstr "ខែ​នេះ"
-
-#: filters.py:321
-msgid "This year"
-msgstr "ឆ្នាំ​នេះ"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr ""
-
-#: helpers.py:23
-msgid "Action:"
-msgstr ""
-
-#: models.py:25
-msgid "action time"
-msgstr "ពេលវេលាប្រតិបត្តិការ"
-
-#: models.py:28
-msgid "object id"
-msgstr "លេខ​សំគាល់​កម្មវិធី (object id)"
-
-#: models.py:29
-msgid "object repr"
-msgstr "object repr"
-
-#: models.py:30
-msgid "action flag"
-msgstr "សកម្មភាព"
-
-#: models.py:31
-msgid "change message"
-msgstr "ផ្លាស់ប្តូរ"
-
-#: models.py:36
-msgid "log entry"
-msgstr "កំណត់ហេតុ"
-
-#: models.py:37
-msgid "log entries"
-msgstr "កំណត់ហេតុ"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr ""
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "បានផ្លាស់ប្តូរ %s"
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "និង"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "ពុំមានទិន្នន័យត្រូវបានផ្លាស់ប្តូរ។"
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"ឈ្មោះកម្មវីធី %(name)s \"%(obj)s\" ត្រូវបានបន្ថែមដោយជោគជ័យ។"
-" លោកអ្នកអាចផ្លាស់ប្តូរម្តងទៀតនៅខាងក្រោម។"
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "ឈ្មោះកម្មវិធី %(name)s \"%(obj)s\" បានបញ្ជូលដោយជោគជ័យ​។"
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "កម្មវិធីឈ្មោះ %(name)s \"%(obj)s\" ត្រូវបានផ្លាស់ប្តូរដោយជោគជ័យ។"
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-
-#: options.py:1037
-msgid "No action selected."
-msgstr ""
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "បន្ថែម %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr ""
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "ផ្លាស់ប្តូរ %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "ទិន្នន័យមូលដ្ឋានមានបញ្ហា"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] ""
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] ""
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr ""
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "ឈ្មោះកម្មវិធី %(name)s \"%(obj)s\" ត្រូវបានលប់ដោយជោគជ័យ។"
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "សកម្មភាពផ្លាស់ប្តូរកន្លងមក : %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "ពិនិត្យចូល"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "ទំព័រគ្រប់គ្រង"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr ""
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "កាលបរិច្ឆេទ"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "ម៉ោង"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr ""
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr ""
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "ទំព័រ​ដែល​លោកអ្នកចង់​រក​នេះពុំមាន​នៅក្នុងម៉ាស៊ីនរបស់យើងខ្ញុំទេ"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "សួមអភ័យទោស ទំព័រ​ដែល​លោកអ្នកចង់​រក​នេះពុំមាន​នឹងក្នុងម៉ាស៊ីនរបស់យើងខ្ញុំទេ"
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "គេហទំព័រ"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "ម៉ាស៊ីនផ្តល់សេវាកម្ម​ មានបញ្ហា"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "ម៉ាស៊ីនផ្តល់សេវាកម្ម​ មានបញ្ហា (៥០០)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "ម៉ាស៊ីនផ្តល់សេវាកម្ម​ មានបញ្ហា  <em>(៥០០)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "ស្វែងរក"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr ""
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr ""
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr ""
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "សូមស្វាគមន៏"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "ឯកសារ"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "ផ្លាស់ប្តូរពាក្យសំងាត់"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "ចាកចេញ"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "ទំព័រគ្រប់គ្រងរបស់ Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "ការ​គ្រប់គ្រង​របស់ ​Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "បន្ថែម"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "សកម្មភាព​កន្លង​មក"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "មើលនៅលើគេហទំព័រដោយផ្ទាល់"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr ""
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "បន្ថែម %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "ស្វែងរកជាមួយ"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "លប់"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"ការលប់ %(object_name)s '%(escaped_object)s' អាចធ្វើអោយ​កម្មវិធីដែលពាក់​ព័ន្ធបាត់បង់ ។"
-" ក៏ប៉ន្តែលោកអ្នក​ពុំមាន​សិទ្ធិលប់​កម្មវិធី​ប្រភេទនេះទេ។"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"តើលោកអ្នកប្រាកដជាចង់លប់ %(object_name)s \"%(escaped_object)s"
-"\"? ការលប់ %(object_name)s '%(escaped_object)s' អាចធ្វើអោយ​កម្មវិធីដែលពាក់​ព័ន្ធបាត់បង់។"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "ខ្ញុំច្បាស់​ជាចង់លប់"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "ដោយ​  %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "ផ្លាស់ប្តូរ"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "លោកអ្នកពុំមានសិទ្ធិ ផ្លាស់​ប្តូរ ទេ។"
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "សកម្មភាពបច្ចុប្បន្ន"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "សកម្មភាពរបស់ខ្ញុំ"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "គ្មាន"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr ""
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"មូលដ្ឋាន​ទិន្នន័យ​​​ របស់លោកអ្នក មានបញ្ហា។ តើ លោកអ្នកបាន បង្កើត តារាង​ របស់មូលដ្ឋានទិន្នន័យ​"
-" ហើយឬនៅ? តើ​ លោកអ្នកប្រាកដថាសមាជិកអាចអានមូលដ្ឋានទិន្នន័យនេះ​​បានឬទេ? "
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "ពាក្យ​សំងាត់"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr ""
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Date/time"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "សមាជិក"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "សកម្មភាព"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"កម្មវិធីនេះមិនមានសកម្មភាព​កន្លងមកទេ។ ប្រហែលជាសកម្មភាពទាំងនេះមិនបានធ្វើនៅទំព័រគ្រប់គ្រងនេះ។"
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "បង្ហាញទាំងអស់"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "រក្សាទុក"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "សរុបទាំងអស់ %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "រក្សាទុក"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "រក្សាទុក ហើយ បន្ថែម​ថ្មី"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "រក្សាទុក ហើយ កែឯកសារដដែល"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"តំបូងសូមបំពេញ ឈ្មោះជាសមាជិក និង ពាក្យសំងាត់​។ បន្ទាប់មកលោកអ្នកអាចបំពេញបន្ថែមជំរើសផ្សេងៗទៀតបាន។ "
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "ពាក្យសំងាត់"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "ពាក្យសំងាត់ (ម្តងទៀត)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "សូមបំពេញពាក្យសំងាត់ដូចខាងលើ ដើម្បីត្រួតពិនិត្យ។ "
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "លប់ចេញ"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr ""
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr ""
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "សូមថ្លែងអំណរគុណ ដែលបានចំណាយ ពេលវេលាដ៏មានតំលៃ របស់លោកអ្នកមកទស្សនាគេហទំព័ររបស់យើងខ្ញុំ"
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "ពិនិត្យចូលម្តងទៀត"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "ផ្លាស់ប្តូរពាក្យសំងាត់"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "ពាក្យសំងាត់បានផ្លាស់ប្តូរដោយជោគជ័យ"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "ពាក្យសំងាត់របស់លោកអ្នកបានផ្លាស់ប្តូរហើយ"
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr "សូមបំពេញពាក្យសំងាត់ចាស់របស់លោកអ្នក។ ដើម្បីសុវត្ថភាព សូមបំពេញពាក្យសំងាត់ថ្មីខាងក្រោមពីរដង។"
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr ""
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr ""
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "ផ្លាស់ប្តូរពាក្យសំងាត់"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "ពាក្យសំងាត់បានកំណត់សារជាថ្មី"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "ពាក្យសំងាត់ថ្មី"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "បំពេញពាក្យសំងាត់ថ្មីម្តងទៀត"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "ពាក្យសំងាត់បានផ្លាស់ប្តូរដោយជោគជ័យ"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "ឈ្មោះជាសមាជិកក្នុងករណីភ្លេច:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "សូមអរគុណដែលបានប្រើប្រាស់សេវាកម្មរបស់យើងខ្ញុំ"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "ក្រុមរបស់គេហទំព័រ %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "កំណត់ពាក្យសំងាត់សារជាថ្មី"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "កាលបរិច្ឆេទទាំងអស់"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr ""
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "ជ្រើសរើស %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "ជ្រើសរើស %s ដើម្បីផ្លាស់ប្តូរ"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/km/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/km/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 949e364..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/km/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/km/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/km/LC_MESSAGES/djangojs.po
deleted file mode 100644
index a167015..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/km/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,170 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Khmer (http://www.transifex.com/projects/p/django/language/"
-"km/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: km\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s ដែលអាច​ជ្រើសរើសបាន"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "ស្វែងរកជាមួយ"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "ជ្រើសរើសទាំងអស់"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "លប់ចេញ"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s ដែលបានជ្រើសរើស"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] ""
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"January February March April May June July August September October November "
-"December"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "S M T W T F S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr ""
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "ឥឡូវនេះ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "នាឡិការ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "ជ្រើសរើសម៉ោង"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "អធ្រាត្រ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "ម៉ោង ៦ ព្រឹក"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "ពេលថ្ងែត្រង់"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "លប់ចោល"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "ថ្ងៃនេះ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "ប្រក្រតិទិន"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "ម្សិលមិញ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "ថ្ងៃស្អែក"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/kn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/kn/LC_MESSAGES/django.mo
deleted file mode 100644
index 11d8712..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/kn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/kn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/kn/LC_MESSAGES/django.po
deleted file mode 100644
index f5c3933..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/kn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,845 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/"
-"kn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kn\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr ""
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr ""
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "ಖಚಿತಪಡಿಸುವಿರಾ? "
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr ""
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "ಎಲ್ಲಾ"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "ಹೌದು"
-
-#: filters.py:239
-msgid "No"
-msgstr "ಇಲ್ಲ"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "ಗೊತ್ತಿಲ್ಲ(ದ/ದ್ದು)"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "ಯಾವುದೇ ದಿನಾಂಕ"
-
-#: filters.py:309
-msgid "Today"
-msgstr "ಈದಿನ"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "ಕಳೆದ ೭ ದಿನಗಳು"
-
-#: filters.py:317
-msgid "This month"
-msgstr "ಈ ತಿಂಗಳು"
-
-#: filters.py:321
-msgid "This year"
-msgstr "ಈ ವರ್ಷ"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr ""
-
-#: helpers.py:23
-msgid "Action:"
-msgstr ""
-
-#: models.py:25
-msgid "action time"
-msgstr "ಕ್ರಮದ(ಕ್ರಿಯೆಯ) ಸಮಯ"
-
-#: models.py:28
-msgid "object id"
-msgstr "ವಸ್ತುವಿನ ಐಡಿ"
-
-#: models.py:29
-msgid "object repr"
-msgstr "ವಸ್ತು ಪ್ರಾತಿನಿಧ್ಯ"
-
-#: models.py:30
-msgid "action flag"
-msgstr "ಕ್ರಮದ(ಕ್ರಿಯೆಯ) ಪತಾಕೆ"
-
-#: models.py:31
-msgid "change message"
-msgstr "ಬದಲಾವಣೆಯ ಸಂದೇಶ/ಸಂದೇಶ ಬದಲಿಸಿ"
-
-#: models.py:36
-msgid "log entry"
-msgstr "ಲಾಗ್ ದಾಖಲೆ"
-
-#: models.py:37
-msgid "log entries"
-msgstr "ಲಾಗ್ ದಾಖಲೆಗಳು"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr ""
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s ಬದಲಾಯಿಸಲಾಯಿತು."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "ಮತ್ತು"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "ಯಾವುದೇ ಅಂಶಗಳು ಬದಲಾಗಲಿಲ್ಲ."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಸೇರಿಸಲಾಯಿತು. ನೀವು ಕೆಳಗೆ ಅದನ್ನು ಮತ್ತೆ "
-"ಬದಲಾಯಿಸಬಹುದು."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr " %(name)s \"%(obj)s\" ಅನ್ನು ಯಶಸ್ವಿಯಾಗಿ ಸೇರಿಸಲಾಯಿತು."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" ಸಫಲವಾಗಿ ಬದಲಾಯಿಸಲಾಯಿತು."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-
-#: options.py:1037
-msgid "No action selected."
-msgstr ""
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%s ಸೇರಿಸಿ"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr ""
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s ಅನ್ನು ಬದಲಿಸು"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "ದತ್ತಸಂಚಯದ ದೋಷ"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] ""
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] ""
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr ""
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" ಯಶಸ್ವಿಯಾಗಿ ಅಳಿಸಲಾಯಿತು."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "ಬದಲಾವಣೆಗಳ ಇತಿಹಾಸ: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "ಒಳಗೆ ಬನ್ನಿ"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "ತಾಣ ನಿರ್ವಹಣೆ"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr ""
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "ದಿನಾಂಕ:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "ಸಮಯ:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr ""
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr ""
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "ಪುಟ ಸಿಗಲಿಲ್ಲ"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "ಕ್ಷಮಿಸಿ, ನೀವು ಕೇಳಿದ ಪುಟ ಸಿಗಲಿಲ್ಲ"
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "ಪ್ರಾರಂಭಸ್ಥಳ(ಮನೆ)"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "ಸರ್ವರ್ ದೋಷ"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "ಸರ್ವರ್ ದೋಷ(೫೦೦)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "ಸರ್ವರ್ ದೋಷ<em>(೫೦೦)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "ಹೋಗಿ"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr ""
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr ""
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr ""
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "ಸುಸ್ವಾಗತ."
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "ವಿವರಮಾಹಿತಿ"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "ಪ್ರವೇಶಪದ ಬದಲಿಸಿ"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "ಹೊರಕ್ಕೆ ಹೋಗಿ"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "ಜಾಂಗೋ ತಾಣದ ಆಡಳಿತಗಾರರು"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "ಜಾಂಗೋ ಆಡಳಿತ"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "ಸೇರಿಸಿ"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "ಚರಿತ್ರೆ"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "ತಾಣದಲ್ಲಿ ನೋಡಿ"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr ""
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s ಸೇರಿಸಿ"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "ಸೋಸಕ"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "ಅಳಿಸಿಹಾಕಿ"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"'%(escaped_object)s' %(object_name)s ಅನ್ನು ತೆಗೆದುಹಾಕುವುದರಿಂದ ಸಂಬಂಧಿತ ವಸ್ತುಗಳೂ "
-"ಕಳೆದುಹೋಗುತ್ತವೆ. ಆದರೆ ನಿಮ್ಮ ಖಾತೆಗೆ ಕೆಳಕಂಡ ಬಗೆಗಳ ವಸ್ತುಗಳನ್ನು ತೆಗೆದುಹಾಕಲು "
-"ಅನುಮತಿಯಿಲ್ಲ."
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "ಹೌದು,ನನಗೆ ಖಚಿತವಿದೆ"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "%(filter_title)s ಇಂದ"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "ಬದಲಿಸಿ/ಬದಲಾವಣೆ"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "ಯಾವುದನ್ನೂ ತಿದ್ದಲು ನಿಮಗೆ ಅನುಮತಿ ಇಲ್ಲ ."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "ಇತ್ತೀಚಿನ ಕ್ರಮಗಳು"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "ನನ್ನ ಕ್ರಮಗಳು"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "ಯಾವುದೂ ಲಭ್ಯವಿಲ್ಲ"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr ""
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"ಡಾಟಾಬೇಸನ್ನು ಇನ್ಸ್ಟಾಲ್ ಮಾಡುವಾಗ ಏನೋ ತಪ್ಪಾಗಿದೆ. ಸೂಕ್ತ ಡಾಟಾಬೇಸ್ ಕೋಷ್ಟಕಗಳು ರಚನೆಯಾಗಿ ಅರ್ಹ "
-"ಬಳಕೆದಾರರು ಅವುಗಳನ್ನು ಓದಬಹುದಾಗಿದೆಯೇ ಎಂಬುದನ್ನು ಖಾತರಿ ಪಡಿಸಿಕೊಳ್ಳಿ."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "ಪ್ರವೇಶಪದ:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr ""
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "ದಿನಾಂಕ/ಸಮಯ"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "ಬಳಕೆದಾರ"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "ಕ್ರಮ(ಕ್ರಿಯೆ)"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"ಈ ವಸ್ತುವಿಗೆ ಬದಲಾವಣೆಯ ಇತಿಹಾಸವಿಲ್ಲ. ಅದು ಬಹುಶಃ ಈ ಆಡಳಿತತಾಣದ ಮೂಲಕ ಸೇರಿಸಲ್ಪಟ್ಟಿಲ್ಲ."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "ಎಲ್ಲವನ್ನೂ ತೋರಿಸು"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "ಉಳಿಸಿ"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "ಒಟ್ಟು %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "ಹೊಸದರಂತೆ ಉಳಿಸಿ"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "ಉಳಿಸಿ ಮತ್ತು ಇನ್ನೊಂದನ್ನು ಸೇರಿಸಿ"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "ಉಳಿಸಿ ಮತ್ತು ತಿದ್ದುವುದನ್ನು ಮುಂದುವರಿಸಿರಿ."
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"ಮೊದಲು ಬಳಕೆದಾರ-ಹೆಸರು ಮತ್ತು ಪ್ರವೇಶಪದವನ್ನು ಕೊಡಿರಿ. ನಂತರ, ನೀವು ಇನ್ನಷ್ಟು ಆಯ್ಕೆಗಳನ್ನು "
-"ಬದಲಿಸಬಹುದಾಗಿದೆ."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "ಪ್ರವೇಶಪದ"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "ಪ್ರವೇಶಪದ(ಇನ್ನೊಮ್ಮೆ)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "ಖಚಿತಗೊಳಿಸಲು ಮೇಲಿನ ಪ್ರವೇಶಪದವನ್ನು ಇನ್ನೊಮ್ಮೆ ಬರೆಯಿರಿ."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "ತೆಗೆದು ಹಾಕಿ"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr ""
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr ""
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "ಈದಿನ ತಮ್ಮ ಅತ್ಯಮೂಲ್ಯವಾದ ಸಮಯವನ್ನು ನಮ್ಮ ತಾಣದಲ್ಲಿ ಕಳೆದುದಕ್ಕಾಗಿ ಧನ್ಯವಾದಗಳು."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "ಮತ್ತೆ ಒಳಬನ್ನಿ"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "ಪ್ರವೇಶಪದ ಬದಲಾವಣೆ"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "ಪ್ರವೇಶಪದ ಬದಲಾವಣೆ ಯಶಸ್ವಿ"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "ನಿಮ್ಮ ಪ್ರವೇಶಪದ ಬದಲಾಯಿಸಲಾಗಿದೆ"
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"ಭದ್ರತೆಯ ದೃಷ್ಟಿಯಿಂದ ದಯವಿಟ್ಟು ನಿಮ್ಮ ಹಳೆಯ ಪ್ರವೇಶಪದವನ್ನು ಸೂಚಿಸಿರಿ. ಆನಂತರ ನೀವು ಸರಿಯಾಗಿ "
-"ಬರೆದಿದ್ದೀರೆಂದು ನಾವು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಹೊಸ ಪ್ರವೇಶಪದವನ್ನು ಎರಡು ಬಾರಿ ಬರೆಯಿರಿ."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "ಹಳೆಯ ಪ್ರವೇಶಪದ"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "ಹೊಸ ಪ್ರವೇಶಪದ"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "ನನ್ನ ಪ್ರವೇಶಪದ ಬದಲಿಸಿ"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "ಪ್ರವೇಶಪದವನ್ನು ಬದಲಿಸುವಿಕೆ"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "ಹೊಸ ಪ್ರವೇಶಪದ:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "ಪ್ರವೇಶಪದವನ್ನು ಖಚಿತಪಡಿಸಿ:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "ಪ್ರವೇಶಪದದ ಮರುನಿರ್ಧಾರ ಸಾಧ್ಯವಾಗಿದೆ"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "ನೀವು ಮರೆತಿದ್ದಲ್ಲಿ , ನಿಮ್ಮ ಬಳಕೆದಾರ-ಹೆಸರು"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "ನಮ್ಮ ತಾಣವನ್ನು ಬಳಸಿದ್ದಕ್ದಾಗಿ ಧನ್ಯವಾದಗಳು!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s ತಂಡ"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "ನನ್ನ ಪ್ರವೇಶಪದವನ್ನು ಮತ್ತೆ ನಿರ್ಧರಿಸಿ "
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "ಎಲ್ಲಾ ದಿನಾಂಕಗಳು"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr ""
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s ಆಯ್ದುಕೊಳ್ಳಿ"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "ಬದಲಾಯಿಸಲು %s ಆಯ್ದುಕೊಳ್ಳಿ"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 6f62a37..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 75a4b25..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/kn/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,171 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# karthikbgl <karthikbgl@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/"
-"kn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kn\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "ಲಭ್ಯ %s "
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "ಶೋಧಕ"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "ಎಲ್ಲವನ್ನೂ ಆಯ್ದುಕೊಳ್ಳಿ"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "ತೆಗೆದು ಹಾಕಿ"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s ಆಯ್ದುಕೊಳ್ಳಲಾಗಿದೆ"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "ಎಲ್ಲಾ ತೆಗೆದುಹಾಕಿ"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] ""
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"ನೀವು ಪ್ರತ್ಯೇಕ ತಿದ್ದಬಲ್ಲ ಕ್ಷೇತ್ರಗಳಲ್ಲಿ ಬದಲಾವಣೆ ಉಳಿಸಿಲ್ಲ. ನಿಮ್ಮ ಉಳಿಸದ ಬದಲಾವಣೆಗಳು "
-"ನಾಶವಾಗುತ್ತವೆ"
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "ಜನವರಿ ಫೆಬ್ರುವರಿ ಮಾರ್ಚ್ ಎಪ್ರಿಲ್ ಮೇ ಜೂನ್ ಜುಲೈ ಆಗಸ್ಟ್ ಸೆಪ್ಟೆಂಬರ್ ನವೆಂಬರ್ ಡಿಸೆಂಬರ್"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "ರ ಸೋ ಮ ಬು ಗು ಶು ಶ"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "ಪ್ರದರ್ಶನ"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "ಮರೆಮಾಡಲು"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "ಈಗ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "ಗಡಿಯಾರ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "ಸಮಯವೊಂದನ್ನು ಆರಿಸಿ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "ಮಧ್ಯರಾತ್ರಿ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "ಬೆಳಗಿನ ೬ ಗಂಟೆ "
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "ಮಧ್ಯಾಹ್ನ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "ರದ್ದುಗೊಳಿಸಿ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "ಈ ದಿನ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "ಪಂಚಾಂಗ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "ನಿನ್ನೆ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "ನಾಳೆ"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/django.mo
deleted file mode 100644
index 700cb4b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/django.po
deleted file mode 100644
index 9ed023b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,859 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jaehong Kim <mixe@korea.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/"
-"ko/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ko\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d개의 %(items)s (을)를 성공적으로 삭제하였습니다."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "%(name)s를 삭제할 수 없습니다."
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "확실합니까?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "선택된 %(verbose_name_plural)s (을)를 삭제합니다."
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "모두"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "예"
-
-#: filters.py:239
-msgid "No"
-msgstr "아니오"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "알 수 없습니다."
-
-#: filters.py:308
-msgid "Any date"
-msgstr "언제나"
-
-#: filters.py:309
-msgid "Today"
-msgstr "오늘"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "지난 7일"
-
-#: filters.py:317
-msgid "This month"
-msgstr "이번 달"
-
-#: filters.py:321
-msgid "This year"
-msgstr "이번 해"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "로그인 세션이 끊겼습니다. 다시 로그인 하세요."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "액션:"
-
-#: models.py:25
-msgid "action time"
-msgstr "액션 타임"
-
-#: models.py:28
-msgid "object id"
-msgstr "오브젝트 아이디"
-
-#: models.py:29
-msgid "object repr"
-msgstr "오브젝트 표현"
-
-#: models.py:30
-msgid "action flag"
-msgstr "액션 플래그"
-
-#: models.py:31
-msgid "change message"
-msgstr "메시지 변경"
-
-#: models.py:36
-msgid "log entry"
-msgstr "로그 엔트리"
-
-#: models.py:37
-msgid "log entries"
-msgstr "로그 엔트리"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "없음"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s (이)가 변경되었습니다."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "또한"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" (을)를 추가하였습니다."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(list)s에 대한 %(name)s \"%(object)s\" (을)를 변경하였습니다."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" (을)를 삭제하였습니다."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "변경된 필드가 없습니다."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" (이)가 추가되었습니다. 계속해서 편집하세요."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" (이)가 추가되었습니다."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" (이)가 변경되었습니다."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"항목들에 액션을 적용하기 위해선 먼저 항목들이 선택되어 있어야 합니다. 아무 항"
-"목도 변경되지 않았습니다."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "액션이 선택되지 않았습니다."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%s 추가"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Primary key %(key)r에 대한 오브젝트 %(name)s(이)가 존재하지 않습니다."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s 변경"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "데이터베이스 오류"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s개의 %(name)s(이)가 변경되었습니다."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "모두 %(total_count)s개가 선택되었습니다."
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "%(cnt)s 중 아무것도 선택되지 않았습니다."
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\"(이)가 삭제되었습니다."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "변경 히스토리: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "로그인"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "사이트 관리"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s 사이트 관리"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "날짜:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "시각:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "찾아보기"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "하나 더 추가하기"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "해당 페이지가 없습니다."
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "죄송합니다, 요청하신 페이지를 찾을 수 없습니다."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "홈"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "서버 오류"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "서버 오류 (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "서버 오류 <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "선택한 액션을 실행합니다."
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "실행"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "모든 페이지의 항목들을 선택하려면 여기를 클릭하세요."
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "%(total_count)s개의 %(module_name)s 모두를 선택합니다."
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "선택을 해제합니다."
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "환영합니다,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "문서"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "비밀번호 변경"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "로그아웃"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django 사이트 관리"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django 관리"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "추가"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "히스토리"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "사이트에서 보기"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "아래의 오류를 수정하십시오."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s 추가"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "필터"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "삭제"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"%(object_name)s \"%(escaped_object)s\" (을)를 삭제하면서관련 오브젝트를 제거"
-"하고자 했으나, 지금 사용하시는 계정은 다음 타입의 오브젝트를 제거할 권한이 없"
-"습니다. :"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s'를 삭제하려면 다음 보호상태의 연관 오브젝"
-"트를 삭제해야 합니다."
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"정말로 %(object_name)s \"%(escaped_object)s\"(을)를 삭제하시겠습니까? 다음의 "
-"관련 항목들이 모두 삭제됩니다. :"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "네, 확실합니다."
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "여러 개의 오브젝트 삭제"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"연관 오브젝트 삭제로 선택한 %(objects_name)s의 삭제 중, 그러나 당신의 계정은 "
-"다음 오브젝트의 삭제 권한이 없습니다. "
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"%(objects_name)s를 삭제하려면 다음 보호상태의 오브젝트를 삭제해야 합니다."
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"선택한 %(objects_name)s를 정말 삭제하시겠습니까? 다음의 오브젝트와 연관 아이"
-"템들이 모두 삭제됩니다:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "%(filter_title)s (으)로"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "변경"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "수정할 권한이 없습니다."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "최근 액션"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "나의 액션"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "이용할 수 없습니다."
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "내용 형식이 지정되지 않았습니다."
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"데이터베이스 설정에 문제가 발생했습니다. 해당 데이터베이스 테이블이 생성되었"
-"는지, 해당 유저가 데이터베이스를 읽어 들일 수 있는지 확인하세요."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "비밀번호"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr ""
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "날짜/시간"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "사용자"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "액션"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"오브젝트에 변경사항이 없습니다. 이 admin 사이트를 통해 추가된 것이 아닐 수 있"
-"습니다."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "모두 표시"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "저장"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "검색"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "결과 %(counter)s개 나옴"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "총 %(full_result_count)s건"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "새로 저장"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "저장 및 다른 이름으로 추가"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "저장 및 편집 계속"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"사용자명와 비밀번호를 입력하세요.더 많은 사용자 옵션을 사용하실 수 있습니다."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "유저명과 암호를 입력하세요."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "<strong>%(username)s</strong> 새로운 비밀번호를 입력하세요."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "비밀번호"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "비밀번호 (확인)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "확인을 위해 위와 동일한 비밀번호를 입력하세요. "
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "삭제하기"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "%(verbose_name)s 더 추가하기"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "삭제"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "사이트를 이용해 주셔서 고맙습니다."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "다시 로그인하기"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "비밀번호 변경"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "비밀번호를 변경하였습니다."
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "비밀번호가 변경되었습니다."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"보안상 필요하오니 기존에 사용하시던 비밀번호를 입력해 주세요. 새로운 비밀번호"
-"는 정확히 입력했는지 확인할 수 있도록 두 번 입력하시기 바랍니다."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "기존 비밀번호:"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "새 비밀번호:"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "비밀번호 변경"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "비밀번호 초기화"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "비밀번호가 초기화 완료"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "비밀번호가 설정되었습니다. 이제 로그인하세요."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "비밀번호 초기화 확인"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "새 비밀번호 입력"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"새로운 비밀번호를 정확히 입력했는지 확인할 수 있도록두 번 입력하시기 바랍니"
-"다."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "새로운 비밀번호:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "새로운 비밀번호(확인):"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "비밀번호가 초기화를 실패하였습니다."
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"비밀번호 초기화 링크가 이미 사용되어 올바르지 않습니다.비밀번호 초기화을 다"
-"시 해주세요."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "비밀번호가 초기화되었습니다."
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "이어지는 페이지에서 새 비밀번호를 선택하세요."
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "사용자명:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "사이트를 이용해 주셔서 고맙습니다."
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s 팀"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "비밀번호 초기화"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "언제나"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(없음)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s 선택"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "변경할 %s 선택"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index beb7a7e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 6258860..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ko/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,175 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jaehong Kim <mixe@korea.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/"
-"ko/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ko\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "이용 가능한 %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "필터"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "모두 선택"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "삭제"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "선택된 %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s개가 %(cnt)s개 중에 선택됨."
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"개별 편집 가능한 필드에 저장되지 않은 값이 있습니다. 액션을 수행하면 저장되"
-"지 않은 값들을 잃어버리게 됩니다."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"개별 필드의 값들을 저장하지 않고 액션을 선택했습니다. OK를 누르면 저장되며, "
-"액션을 한 번 더 실행해야 합니다."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"개별 필드에 아무런 변경이 없는 상태로 액션을 선택했습니다. 저장 버튼이 아니"
-"라 진행 버튼을 찾아보세요."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "일 월 화 수 목 금 토"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "보기"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "감추기"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "현재"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "시계"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "시간 선택"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "자정"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "오전 6시"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "정오"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "취소"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "오늘"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "달력"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "어제"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "내일"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/lb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/lb/LC_MESSAGES/django.mo
deleted file mode 100644
index 8a4bfb7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/lb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/lb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/lb/LC_MESSAGES/django.po
deleted file mode 100644
index 42862dd..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/lb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,836 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# sim0n <sim0n@trypill.org>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-03 23:27+0000\n"
-"Last-Translator: sim0n <sim0n@trypill.org>\n"
-"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/django/"
-"language/lb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr ""
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr ""
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr ""
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr ""
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "All"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Jo"
-
-#: filters.py:239
-msgid "No"
-msgstr "Nee"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Onbekannt"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Iergendeen Datum"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Haut"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Läscht 7 Deeg"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Dëse Mount"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Dëst Joer"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr ""
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Aktioun:"
-
-#: models.py:25
-msgid "action time"
-msgstr ""
-
-#: models.py:28
-msgid "object id"
-msgstr ""
-
-#: models.py:29
-msgid "object repr"
-msgstr ""
-
-#: models.py:30
-msgid "action flag"
-msgstr ""
-
-#: models.py:31
-msgid "change message"
-msgstr ""
-
-#: models.py:36
-msgid "log entry"
-msgstr ""
-
-#: models.py:37
-msgid "log entries"
-msgstr ""
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr ""
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr ""
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr ""
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:781
-msgid "No fields changed."
-msgstr ""
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr ""
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr ""
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-
-#: options.py:1037
-msgid "No action selected."
-msgstr ""
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr ""
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr ""
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr ""
-
-#: options.py:1257
-msgid "Database error"
-msgstr ""
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] ""
-msgstr[1] ""
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] ""
-msgstr[1] ""
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr ""
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr ""
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr ""
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr ""
-
-#: sites.py:386
-msgid "Site administration"
-msgstr ""
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr ""
-
-#: widgets.py:90
-msgid "Date:"
-msgstr ""
-
-#: widgets.py:91
-msgid "Time:"
-msgstr ""
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr ""
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr ""
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr ""
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr ""
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr ""
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr ""
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr ""
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr ""
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr ""
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr ""
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr ""
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr ""
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr ""
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr ""
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr ""
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr ""
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr ""
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr ""
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr ""
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr ""
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr ""
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr ""
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr ""
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr ""
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr ""
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Läschen"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr ""
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Änner"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr ""
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr ""
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr ""
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr ""
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr ""
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr ""
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr ""
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr ""
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr ""
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr ""
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr ""
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr ""
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr ""
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr ""
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr ""
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr ""
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr ""
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr ""
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr ""
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr ""
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr ""
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr ""
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr ""
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr ""
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr ""
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr ""
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr ""
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr ""
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr ""
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr ""
-
-#: views/main.py:35
-msgid "(None)"
-msgstr ""
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr ""
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 422adcc..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.po
deleted file mode 100644
index d2a63fb..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/lb/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,168 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-23 02:35+0100\n"
-"PO-Revision-Date: 2011-01-19 15:01+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/django/"
-"language/lb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] ""
-msgstr[1] ""
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-
-#: static/admin/js/calendar.js:26
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-
-#: static/admin/js/calendar.js:27
-msgid "S M T W T F S"
-msgstr ""
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr ""
-
-#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:49
-#: static/admin/js/admin/DateTimeShortcuts.js:85
-msgid "Now"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:53
-msgid "Clock"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:81
-msgid "Choose a time"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:86
-msgid "Midnight"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:87
-msgid "6 a.m."
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Noon"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:92
-#: static/admin/js/admin/DateTimeShortcuts.js:204
-msgid "Cancel"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:144
-#: static/admin/js/admin/DateTimeShortcuts.js:197
-msgid "Today"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-msgid "Calendar"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:195
-msgid "Yesterday"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Tomorrow"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/django.mo
deleted file mode 100644
index 5150cf1..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/django.po
deleted file mode 100644
index 9f95fb4..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,892 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# lauris <lauris@runbox.com>, 2011
-# Nikolajus Krauklis <nikolajus@gmail.com>, 2013
-# Simonas Kazlauskas <simonas@kazlauskas.me>, 2012-2013
-# Mantas Zimnickas <sirexas@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-10-23 16:01+0000\n"
-"Last-Translator: Simonas Kazlauskas <simonas@kazlauskas.me>\n"
-"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/"
-"language/lt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lt\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
-"%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Sėkmingai ištrinta %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Ištrinti %(name)s negalima"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Ar esate tikras?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Ištrinti pasirinktus %(verbose_name_plural)s "
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Visi"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Taip"
-
-#: filters.py:239
-msgid "No"
-msgstr "Ne"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Nežinomas"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Betkokia data"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Šiandien"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Paskutinės 7 dienos"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Šį mėnesį"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Šiais metais"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Prašome įvesti tinkamą personalo paskyros %(username)s ir slaptažodį. "
-"Atminkite, kad abu laukeliai yra jautrūs raidžių dydžiui."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Prisijunkite dar kartą, nes sesijos laikas baigėsi."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Veiksmas:"
-
-#: models.py:25
-msgid "action time"
-msgstr "veiksmo laikas"
-
-#: models.py:28
-msgid "object id"
-msgstr "objekto id"
-
-#: models.py:29
-msgid "object repr"
-msgstr "objekto repr"
-
-#: models.py:30
-msgid "action flag"
-msgstr "veiksmo žymė"
-
-#: models.py:31
-msgid "change message"
-msgstr "pakeisti žinutę"
-
-#: models.py:36
-msgid "log entry"
-msgstr "log įrašas"
-
-#: models.py:37
-msgid "log entries"
-msgstr "log įrašai"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "„%(object)s“ pridėti."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Pakeisti „%(object)s“ - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "„%(object)s“ ištrinti."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "LogEntry objektas"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "None"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Pakeistas %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "ir"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Įrašyta %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Pakeistas %(list)s šiam %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Pašalinta %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Nei vienas laukas nepakeistas"
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" pridėtas sėkmingai. Gali taisytį jį dar kartą žemiau."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" buvo sėkmingai pridėtas. Jūs galite pridėti naują "
-"%(name)s žemiau."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" pridėtas sėkmingai."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" buvo sėkmingai pakeistas. Jūs galite jį koreguoti "
-"žemiau."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" buvo sėkmingai pakeistas. Jūs galite pridėti naują "
-"%(name)s žemiau."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" buvo sėkmingai pakeistas."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Įrašai turi būti pasirinkti, kad būtų galima atlikti veiksmus. Įrašai "
-"pakeisti nebuvo."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Veiksmai atlikti nebuvo."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Pridėti %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Įrašas %(name)s su pirminiu raktu %(key)r neegzistuoja."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Pakeisti %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Duomenų bazės klaida"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s sėkmingai pakeistas."
-msgstr[1] "%(count)s %(name)s sėkmingai pakeisti."
-msgstr[2] "%(count)s %(name)s "
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s pasirinktas"
-msgstr[1] "%(total_count)s pasirinkti"
-msgstr[2] "Visi %(total_count)s pasirinkti"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 iš %(cnt)s pasirinkta"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" sėkmingai ištrintas."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Pakeisti istoriją: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Prieš pašalinant %(object_name)s '%(escaped_object)s' būtina pašalinti šiuos "
-"apsaugotus susijusius objektus:"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Prisijungti"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Saito administravimas"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s administravimas"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Data:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Laikas:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Paieška"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Pridėti dar viena"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Šiuo metu:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Pakeisti:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Puslapis nerastas"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Atsiprašome, bet prašytas puslapis nerastas."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Pradinis"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Serverio klaida"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Serverio klaida (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Serverio klaida <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Netikėta klaida. Apie ją buvo pranešta administratoriams el. paštu ir ji "
-"turėtų būti greitai sutvarkyta. Dėkui už kantrybę."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Vykdyti pasirinktus veiksmus"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Vykdyti"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Spauskite čia norėdami pasirinkti visus įrašus"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Pasirinkti visus %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Atstatyti į pradinę būseną"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Sveiki,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentacija"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Keisti slaptažodį"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Atsijungti"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django saito administravimas"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administravimas"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Pridėti"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Istorija"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Matyti saite"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Ištaisykite žemiau esancias klaidas."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Ištaisykite žemiau esančias klaidas."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Naujas %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtras"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Pašalinti iš rikiavimo"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Rikiavimo prioritetas: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Perjungti rikiavimą"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Ištrinti"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Trinant %(object_name)s '%(escaped_object)s' turi būti ištrinti ir susiję "
-"objektai, bet tavo vartotojas neturi teisių ištrinti šių objektų:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Ištrinant %(object_name)s '%(escaped_object)s' būtų ištrinti šie apsaugoti "
-"ir susiję objektai:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Ar tu esi tikras, kad nori ištrinti %(object_name)s \"%(escaped_object)s\"? "
-"Visi susiję objektai bus ištrinti:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Taip, esu tikras"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Ištrinti kelis objektus"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Ištrinant pasirinktą %(objects_name)s būtų ištrinti susiję objektai, tačiau "
-"jūsų vartotojas neturi reikalingų teisių ištrinti šiuos objektų tipus:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Ištrinant pasirinktus %(objects_name)s būtų ištrinti šie apsaugoti ir susiję "
-"objektai:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Ar esate tikri, kad norite ištrinti pasirinktus %(objects_name)s? Sekantys "
-"pasirinkti bei susiję objektai bus ištrinti:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Pagal %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "%(name)s aplikacijos modeliai"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Pakeisti"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Neturite teisių ką nors keistis."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Paskutiniai Veiksmai"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Mano Veiksmai"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Nėra prieinamų"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Nežinomas turinys"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Kažkas yra negerai su jūsų duomenų bazės instaliacija. Įsitikink, kad visos "
-"reikalingos lentelės sukurtos ir vartotojas turi teises skaityti duomenų "
-"bazę."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Slaptažodis:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Pamiršote slaptažodį ar vartotojo vardą?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Data/laikas"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Naudotojas"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Veiksmas"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Šis objektas neturi pakeitimų istorijos. Tikriausiai jis buvo pridėtas ne "
-"per admin puslapį."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Rodyti visus"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Išsaugoti"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Ieškoti"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s rezultatas"
-msgstr[1] "%(counter)s rezultatai"
-msgstr[2] "%(counter)s rezultatai"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s iš viso"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Išsaugoti kaip naują"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Išsaugoti ir pridėti naują"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Išsaugoti ir tęsti redagavimą"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Pirmiausia įveskite naudotojo vardą ir slaptažodį. Tada galėsite keisti "
-"daugiau naudotojo nustatymų."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Įveskite naudotojo vardą ir slaptažodį."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Įveskite naują slaptažodį naudotojui <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Slaptažodis"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Slaptažodis (dar kartą)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Patikrinimui įvesk tokį patį slaptažodį, kaip viršuje."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Pašalinti"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Pridėti dar viena %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Ištrinti?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Dėkui už praleistą laiką šiandien."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Prisijungti dar kartą"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Slaptažodžio keitimas"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Slaptažodis sėkmingai pakeistas"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Jūsų slaptažodis buvo pakeistas."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Saugumo sumetimais įvesk seną slaptažodį ir tada du kartus naują, kad "
-"įsitikinti, jog nesuklydai rašydamas"
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Senas slaptažodis"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Naujas "
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Keisti mano slaptažodį"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Slaptažodžio atstatymas"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Slaptažodžio atstatymas baigtas"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Jūsų slaptažodis buvo išsaugotas. Dabas galite prisijungti."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Slaptažodžio atstatymo patvirtinimas"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Įveskite naują slaptažodį"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Įveskite naująjį slaptažodį du kartus, taip užtikrinant, jog nesuklydote "
-"rašydami."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Naujasis slaptažodis:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Slaptažodžio patvirtinimas:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Slaptažodžio atstatymas nesėkmingas"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Slaptažodžio atstatymo nuoroda buvo negaliojanti, nes ja tikriausiai jau "
-"buvo panaudota. Prašykite naujo slaptažodžio pakeitimo."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Slaptažodis sėkmingai atstatytas"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Instrukcijos kaip nustatyti slaptažodį buvo išsiųstos jūsų nurodytų el. "
-"pašto adresu. Instrukcijas turėtumėte gauti netrukus."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Jei el. laiško negavote, prašome įsitikinti ar įvedėte tą el. pašto adresą "
-"kuriuo registravotės ir patikrinkite savo šlamšto aplanką."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Jūs gaunate šį laišką nes prašėte paskyros slaptažodžio atkūrimo "
-"%(site_name)s svetainėje."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Prašome eiti į šį puslapį ir pasirinkti naują slaptažodį:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Jūsų naudotojo vardas, jei netyčia jį užmiršote:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Dėkui, kad naudojatės mūsų saitu!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s komanda"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Pamiršote slaptažodį? Įveskite savo el. pašto adresą ir mes išsiųsime laišką "
-"su instrukcijomis kaip nustatyti naują slaptažodį."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "El. pašto adresas:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Atstatyti slaptažodį"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Visos datos"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "()"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Pasirinkti %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Pasirinkite %s kurį norite keisti"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index c6a14f4..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 92a4b11..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/lt/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,187 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kostas <tamosiunas@gmail.com>, 2011
-# Povilas Balzaravičius <pavvka@gmail.com>, 2011
-# Simonas Kazlauskas <simonas@kazlauskas.me>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/"
-"language/lt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lt\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
-"%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Galimi %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Tai yra sąrašas prieinamų %s. Dėžutėje žemiau pažymėdami keletą iš jų ir "
-"paspausdami „Pasirinkti“ rodyklę tarp dviejų dėžučių jūs galite pasirinkti "
-"keletą iš jų."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Rašykite į šią dėžutę, kad išfiltruotumėte prieinamų %s sąrašą."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtras"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Pasirinkti visus"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Spustelėkite, kad iš karto pasirinktumėte visus %s."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Pasirinkti"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Pašalinti"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Pasirinktas %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Tai yra sąrašas pasirinktų %s. Dėžutėje žemiau pažymėdami keletą iš jų ir "
-"paspausdami „Pašalinti“ rodyklę tarp dviejų dėžučių jūs galite pašalinti "
-"keletą iš jų."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Pašalinti visus"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Spustelėkite, kad iš karto pašalintumėte visus pasirinktus %s."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "pasirinktas %(sel)s iš %(cnt)s"
-msgstr[1] "pasirinkti %(sel)s iš %(cnt)s"
-msgstr[2] "pasirinkti %(sel)s iš %(cnt)s"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Turite neišsaugotų pakeitimų. Jeigu tęsite, Jūsų pakeitimai bus prarasti."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Pasirinkote veiksmą, bet dar neesate išsaugoję pakeitimų. Nuspauskite Gerai "
-"norėdami išsaugoti. Jus reikės iš naujo paleisti veiksmą."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Pasirinkote veiksmą, bet neesate pakeitę laukų reikšmių. Jūs greičiausiai "
-"ieškote mygtuko Vykdyti, o ne mygtuko Saugoti."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Sausis Vasaris Kovas Balandis Gegužė Birželis Liepa Rugpjūtis Rugsėjis "
-"Spalis Lapkritis Gruodis"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "S Pr A T K Pn Š"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Parodyti"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Slėpti"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Dabar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Laikrodis"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Pasirinkite laiką"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Vidurnaktis"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Vidurdienis"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Atšaukti"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Šiandien"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalendorius"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Vakar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Rytoj"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/django.mo
deleted file mode 100644
index 0a67354..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/django.po
deleted file mode 100644
index 4c37df3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,857 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# edgars <edgars.jekabsons@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/"
-"lv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lv\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Veiksmīgi izdzēsti %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr ""
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Vai esat pārliecināts?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Izdzēst izvēlēto %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Visi"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Jā"
-
-#: filters.py:239
-msgid "No"
-msgstr "Nē"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Nezināms"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Jebkurš datums"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Šodien"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Pēdējās 7 dienas"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Šomēnes"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Šogad"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Lūdzu pieslēdzieties vēlreiz, jūsu sesija ir beigusies."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Darbība:"
-
-#: models.py:25
-msgid "action time"
-msgstr "darbības laiks"
-
-#: models.py:28
-msgid "object id"
-msgstr "objekta id"
-
-#: models.py:29
-msgid "object repr"
-msgstr "objekta attēlojums"
-
-#: models.py:30
-msgid "action flag"
-msgstr "darbības atzīme"
-
-#: models.py:31
-msgid "change message"
-msgstr "izmaiņas teksts"
-
-#: models.py:36
-msgid "log entry"
-msgstr "žurnāla ieraksts"
-
-#: models.py:37
-msgid "log entries"
-msgstr "žurnāla ieraksti"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "nekas"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Izmainīts %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "un"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Pievienots %(name)s \"%(object)s\""
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Izmainīts %(list)s priekš %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Dzēsts %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Lauki nav izmainīti"
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" pievienots sekmīgi. Zemāk varat to labot."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" pievienots sekmīgi."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" nomainīts sekmīgi."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr "Lai veiktu darbību, jāizvēlas rindas. Rindas nav izmainītas."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Nav izvēlēta darbība."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Pievienot %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s objekts ar primāro atslēgu %(key)r neeksistē."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Labot %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Datubāzes kļūda"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s ir laboti sekmīgi"
-msgstr[1] "%(count)s %(name)s ir sekmīgi rediģēts"
-msgstr[2] "%(count)s %(name)s ir sekmīgi rediģēti."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s izvēlēti"
-msgstr[1] "%(total_count)s izvēlēts"
-msgstr[2] "%(total_count)s izvēlēti"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 no %(cnt)s izvēlēti"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" sekmīgi izdzēsts."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Izmaiņu vēsture: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Pieslēgties"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Lapas administrācija"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s administrācija"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Datums:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Laiks:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Pārlūkot"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Pievienot vēl vienu"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Lapa nav atrasta"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Atvainojiet, pieprasītā lapa neeksistē."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Sākums"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Servera kļūda"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Servera kļūda (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Servera kļūda <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Izpildīt izvēlēto darbību"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Aiziet!"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Spiest šeit, lai iezīmētu objektus no visām lapām"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Izvēlēties visus %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Atcelt iezīmēto"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Sveicināti,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentācija"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Paroles maiņa"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Atslēgties"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django administrācijas lapa"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administrācija"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Pievienot"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Vēsture"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Apskatīt lapā"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Lūdzu, izlabojiet kļūdas zemāk."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Pievienot %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtrs"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Dzēst"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Izdzēšot objektu %(object_name)s '%(escaped_object)s', tiks dzēsti visi "
-"saistītie objekti, bet jums nav tiesību dzēst sekojošus objektu tipus:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Vai esat pārliecināts, ka vēlaties dzēst %(object_name)s \"%(escaped_object)s"
-"\"? Tiks dzēsti arī sekojoši saistītie objekti:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Jā, esmu pārliecināts"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Dzēst vairākus objektus"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Pēc %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Izmainīt"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Jums nav tiesības neko labot."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Nesenās darbības"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Manas darbības"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Nav pieejams"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Nezināms saturs"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Problēma ar datubāzes instalāciju. Pārliecinieties, ka attiecīgās tabulas ir "
-"izveidotas un attiecīgajam lietotājam ir tiesības tai piekļūt."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Parole:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr ""
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Datums/laiks"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Lietotājs"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Darbība"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Šim objektam nav izmaiņu vēstures. Tas visdrīzāk netika pievienots, "
-"izmantojot šo administrācijas rīku."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Rādīt visu"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Saglabāt"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Meklēt"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "kopā - %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Saglabāt kā jaunu"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Saglabāt un pievienot vēl vienu"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Saglabāt un turpināt labošanu"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Vispirms ievadiet lietotāja vārdu un paroli. Tad varēsiet labot pārējos "
-"lietotāja uzstādījumus."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Ievadiet jaunu paroli lietotājam <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Parole"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Parole (vēlreiz)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Pārbaudei atkārtoti ievadiet to pašu paroli kā augstāk."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Dzēst"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Pievienot vēl %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Dzēst?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Paldies par pavadīto laiku mājas lapā."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Pieslēgties vēlreiz"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Paroles maiņa"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Paroles nomaiņa sekmīga"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Jūsu parole tika nomainīta."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Drošības nolūkos ievadiet veco paroli un pēc tam ievadiet jauno paroli "
-"divreiz, lai varētu pārbaudīt, ka tā ir uzrakstīta pareizi."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Vecā parole"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Jaunā parole"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Nomainīt manu paroli"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Paroles pārstatīšana(reset)"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Paroles pārstatīšana pabeigta"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Jūsu parole ir uzstādīta. Varat pieslēgties."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Paroles pārstatīšanas apstiprinājums"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Ievadiet jauno paroli"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Lūdzu ievadiet jauno paroli divreiz, lai varētu pārbaudīt, ka tā ir "
-"uzrakstīta pareizi."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Jaunā parole:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Apstiprināt paroli:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Paroles pārstatīšana nesekmīga"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Paroles pārstatīšanas saite bija nekorekta, iespējams, tā jau ir izmantota. "
-"Lūdzu pieprasiet paroles pārstatīšanu vēlreiz."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Paroles pārstatīšana sekmīga"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Lūdzu apmeklējiet sekojošo lapu un ievadiet jaunu paroli:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Jūsu lietotājvārds, ja gadījumā tas ir aizmirsts:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Paldies par mūsu lapas lietošanu!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s komanda"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Paroles pārstatīšana"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Visi datumi"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr ""
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Izvēlēties %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Izvēlēties %s, lai izmainītu"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 4a52e2c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 552a69c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/lv/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,179 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/"
-"lv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lv\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Pieejams %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtrs"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Izvēlēties visu"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Izņemt"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Izvēlies %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s no %(cnt)s izvēlēts"
-msgstr[1] "%(sel)s no %(cnt)s izvēlēti"
-msgstr[2] "%(sel)s no %(cnt)s izvēlēti"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Jūs neesat saglabājis izmaiņas rediģējamiem laukiem. Ja jūs tagad "
-"izpildīsiet izvēlēto darbību, šīs izmaiņas netiks saglabātas."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Jūs esat izvēlējies veikt darbību un neesat saglabājis veiktās izmaiņas. "
-"Lūdzu nospiežat OK, lai saglabātu. Jums nāksies šo darbību izpildīt vēlreiz."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Jūs esat izvēlējies veikt darbību un neesat izmainījis nevienu lauku. Jūs "
-"droši vien meklējat pogu 'Aiziet' nevis 'Saglabāt'."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Janvāris Februāris Marts Aprīlis Maijs Jūnijs Jūlijs Augusts Septembris "
-"Oktobris Novembris Decembris"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "S P O T C P S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Parādīt"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Slēpt"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Tagad"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Pulkstens"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Izvēlieties laiku"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Pusnakts"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "06.00"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Pusdienas laiks"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Atcelt"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Šodien"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalendārs"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Vakar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Rīt"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/mk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/mk/LC_MESSAGES/django.mo
deleted file mode 100644
index d172a85..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/mk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/mk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/mk/LC_MESSAGES/django.po
deleted file mode 100644
index 38b3dd0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/mk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,889 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# vvangelovski <vvangelovski@gmail.com>, 2013
-# vvangelovski <vvangelovski@gmail.com>, 2011-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-09-23 10:59+0000\n"
-"Last-Translator: vvangelovski <vvangelovski@gmail.com>\n"
-"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/"
-"language/mk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mk\n"
-"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Успешно беа избришани %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Не може да се избрише %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Сигурни сте?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Избриши ги избраните %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Сите"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Да"
-
-#: filters.py:239
-msgid "No"
-msgstr "Не"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Непознато"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Било кој датум"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Денеска"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Последните 7 дена"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Овој месец"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Оваа година"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Ве молиме внесете ги точните %(username)s и лозинка за член. Внимавајте, "
-"двете полиња се осетливи на големи и мали букви."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Ве молам најавете се повторно бидејќи вашата сесија е истечена."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Акција:"
-
-#: models.py:25
-msgid "action time"
-msgstr "време на акција"
-
-#: models.py:28
-msgid "object id"
-msgstr "идентификационен број на објект"
-
-#: models.py:29
-msgid "object repr"
-msgstr "репрезентација на објект"
-
-#: models.py:30
-msgid "action flag"
-msgstr "знакче за акција"
-
-#: models.py:31
-msgid "change message"
-msgstr "измени ја пораката"
-
-#: models.py:36
-msgid "log entry"
-msgstr "ставка во записникот"
-
-#: models.py:37
-msgid "log entries"
-msgstr "ставки во записникот"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Додадено \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Променето \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Избришано \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Запис во дневник"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Ништо"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Изменета %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "и"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Додадено %(name)s „%(object)s“."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Изменето %(list)s за %(name)s „%(object)s“."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Избришан %(name)s „%(object)s“."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Не беше изменето ниедно поле."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Ставката %(name)s \"%(obj)s\" беше успешно додадена. Подолу можете повторно "
-"да ја уредите."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"Ставката %(name)s \"%(obj)s\" беше успешно додаден. Можете да додадете нов "
-"%(name)s подолу."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Ставката %(name)s \"%(obj)s\" беше успешно додадена."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"Ставката %(name)s \"%(obj)s\" беше успешно уредена. Подолу можете повторно "
-"да ја уредите."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"Ставката %(name)s \"%(obj)s\" беше успешно уредена. Подолу можете да "
-"додадете нов %(name)s."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" беше успешно изменета."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Мора да се одберат предмети за да се изврши акција врз нив. Ниеден предмет "
-"не беше променет."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Ниедна акција не е одбрана."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Додади %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "објект %(name)s со примарен клуч %(key)r не постои."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Измени %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Грешка во базата на податоци"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s ставка %(name)s беше успешно изменета."
-msgstr[1] "%(count)s ставки %(name)s беа успешно изменети."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s одбран"
-msgstr[1] "Сите %(total_count)s одбрани"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 од %(cnt)s избрани"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Ставаката %(name)s \"%(obj)s\" беше избришана успешно."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Историја на измени: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Бришење на %(object_name)s '%(escaped_object)s' ќе резултира со бришење на "
-"следниве заштитени објекти:"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Најава"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Администрација на сајт"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s администрација"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Датум:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Време:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Побарај"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Додади друго"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Моментално:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Измени:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Страницата не е најдена"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Се извинуваме, но неможе да ја најдеме страницата која ја баравте."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Дома"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Грешка со серверот"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Грешка со серверот (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Грешка со серверот <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Имаше грешка. Администраторите на сајтот се известени и треба да биде брзо "
-"поправена. Ви благодариме за вашето трпение."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Изврши ја избраната акција"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Оди"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Кликнете тука за да изберете објекти низ повеќе страници"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Избери ги сите %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Откажи го изборот"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Добредојдовте,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Документација"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Промени лозинка"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Одјава"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Џанго администрација на сајт"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Џанго администрација"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Додади"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Историја"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Погледни на сајтот"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Ве молам поправете ги грешките подолу."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Ве молам поправете ги грешките подолу."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Додади %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Филтер"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Отстрани од сортирање"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Приоритет на сортирање: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Вклучи/исклучи сортирање"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Избриши"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Бришење на %(object_name)s '%(escaped_object)s' ќе резултира со бришење на "
-"поврзаните објекти, но со вашата сметка немате доволно привилегии да ги "
-"бришете следните типови на објекти:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Бришење на %(object_name)s '%(escaped_object)s' ќе резултира со бришење на "
-"следниве заштитени објекти:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Сигурне сте дека сакате да ги бришете %(object_name)s „%(escaped_object)s“? "
-"Сите овие ставки ќе бидат избришани:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Да, сигурен сум"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Избриши повеќе ставки"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Бришење на избраните %(objects_name)s ќе резултира со бришење на поврзани "
-"објекти, но немате одобрување да ги избришете следниве типови објекти:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Бришење на избраните %(objects_name)s бара бришење на следните поврзани "
-"објекти кои се заштитени:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Дали сте сигурни дека сакате да го избришете избраниот %(objects_name)s? "
-"Сите овие објекти и оние поврзани со нив ќе бидат избришани:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Според %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Модели во %(name)s апликација"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Измени"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Немате дозвола ништо да уредува."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Последни акции"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Мои акции"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Ништо не е достапно"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Непозната содржина"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Нешто не е во ред со инсталацијата на базата на податоци. Потврдете дека "
-"соодветни табели во базата се направени и потврдете дека базата може да биде "
-"прочитана од соодветниот корисник."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Лозинка:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Ја заборавивте вашата лозинка или корисничко име?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Датум/час"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Корисник"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Акција"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Овој објект нема историја на измени. Најверојатно не бил додаден со админ "
-"сајтот."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Прикажи ги сите"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Сними"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Барај"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s резултат"
-msgstr[1] "%(counter)s резултати"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "вкупно %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Сними како нова"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Сними и додади уште"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Сними и продолжи со уредување"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Прво, внесете корисничко име и лозинка. Потоа ќе можете да уредувате повеќе "
-"кориснички опции."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Внесете корисничко име и лозинка."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Внесете нова лозинка за корисникот <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Лозинка"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Лозинка (повторно)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Заради верификација внесете ја истата лозинка како и горе."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Отстрани"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Додадете уште %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Избриши?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr ""
-"Ви благодариме што денеска поминавте квалитетно време со интернет страницава."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Најавете се повторно"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Измена на лозинка"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Успешна промена на лозинката"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Вашата лозинка беше сменета."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Заради сигурност ве молам внесете ја вашата стара лозинка и потоа внесете ја "
-"новата двапати за да може да се потврди дека правилно сте ја искуцале."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Стара лозинка"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Нова лозинка"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Промени ја мојата лозинка"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Ресетирање на лозинка"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Ресетирањето на лозинката заврши"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Вашата лозинка беше поставена. Сега можете да се најавите."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Одобрување за ресетирање на лозинка"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Внесете нова лозинка"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Ве молам внесете ја вашата нова лозинка двапати за да може да бидете сигурни "
-"дека правилно сте ја внеле."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Нова лозинка:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Потврди лозинка:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Неуспеа ресетирањето на лозинката"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Врската за ресетирање на лозинката беше невалидна, најверојатно бидејќи веќе "
-"била искористена. Ве молам повторно побарајте ресетирање на вашата лозинката."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Успешно е ресетирањето на лозинката"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Ви испративме инстуркции за внесување на вашата лозинка на email адресата "
-"што ја внесовте. Треба да ги добиете за кратко време."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Ако не примивте email, ве молиме осигурајте се дека сте ја внесле правата "
-"адреса кога се регистриравте и проверете го spam фолдерот."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Го примате овој email бидејќи побаравте ресетирање на лозинка за вашето "
-"корисничко име на %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Ве молам одите на следната страница и внесете нова лозинка:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Вашето корисничко име, во случај да сте го заборавиле:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Ви благодариме што го користите овој сајт!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Тимот на %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Ја заборавивте вашата лозинка? Внесете ја вашата email адреса подолу, ќе "
-"добиете порака со инструкции за промена на лозинката."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Email адреса:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Ресетирај ја мојата лозинка"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Сите датуми"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Ништо)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Изберете %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Изберете %s за измена"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 608bb2d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 2ad7591..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/mk/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,183 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# vvangelovski <vvangelovski@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/"
-"language/mk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mk\n"
-"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Достапно %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Ова е листа на достапни %s. Можете да изберете неколку кликајќи на нив во "
-"полето подолу и со кликање на стрелката \"Одбери\" помеѓу двете полиња."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Пишувајте во ова поле за да ја филтрирате листата на достапни %s."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Филтер"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Избери ги сите"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Кликнете за да ги изберете сите %s од еднаш."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Изберете"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Отстрани"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Избрано %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Ова е листа на избрани %s. Можете да отстраните неколку кликајќи на нив во "
-"полето подолу и со кликање на стрелката \"Отстрани\" помеѓу двете полиња."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Отстрани ги сите"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Кликнете за да ги отстраните сите одбрани %s одеднаш."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "избрано %(sel)s од %(cnt)s"
-msgstr[1] "избрани %(sel)s од %(cnt)s"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Имате незачувани промени на поединечни полиња. Ако извршите акција вашите "
-"незачувани промени ќе бидат изгубени."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Избравте акција, но сеуште ги немате зачувано вашите промени на поединечни "
-"полиња. Кликнете ОК за да ги зачувате. Ќе треба повторно да ја извршите "
-"акцијата."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Избравте акција и немате направено промени на поединечни полиња. Веројатно "
-"го барате копчето Оди наместо Зачувај."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Јануари Февруари Март Април Мај Јуни Јули Август Септември Октомври Ноември "
-"Декември"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "Н П В С Ч П С"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Прикажи"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Сокриј"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Сега"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Часовник"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Избери време"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Полноќ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 наутро"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Пладне"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Откажи"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Денеска"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Календар"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Вчера"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Утре"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ml/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ml/LC_MESSAGES/django.mo
deleted file mode 100644
index 07fd1e3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ml/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ml/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ml/LC_MESSAGES/django.po
deleted file mode 100644
index 3d90bc3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ml/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,862 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Junaid <junu.pv@gmail.com>, 2012
-# Rajeesh Nair <rajeeshrnair@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/"
-"language/ml/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ml\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s വിജയകരമായി ഡിലീറ്റ് ചെയ്തു."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Cannot delete %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "തീര്‍ച്ചയാണോ?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "തെരഞ്ഞെടുത്ത %(verbose_name_plural)s ഡിലീറ്റ് ചെയ്യുക."
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "എല്ലാം"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "അതെ"
-
-#: filters.py:239
-msgid "No"
-msgstr "അല്ല"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "അജ്ഞാതം"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "ഏതെങ്കിലും തീയതി"
-
-#: filters.py:309
-msgid "Today"
-msgstr "ഇന്ന്"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "കഴിഞ്ഞ ഏഴു ദിവസം"
-
-#: filters.py:317
-msgid "This month"
-msgstr "ഈ മാസം"
-
-#: filters.py:321
-msgid "This year"
-msgstr "ഈ വര്‍ഷം"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "താങ്കളുടെ സെഷന്റെ കാലാവധി കഴിഞ്ഞു. വീണ്ടും ലോഗിന്‍ ചെയ്യണം."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "ആക്ഷന്‍"
-
-#: models.py:25
-msgid "action time"
-msgstr "ആക്ഷന്‍ സമയം"
-
-#: models.py:28
-msgid "object id"
-msgstr "ഒബ്ജെക്ട് ഐഡി"
-
-#: models.py:29
-msgid "object repr"
-msgstr "ഒബ്ജെക്ട് സൂചന"
-
-#: models.py:30
-msgid "action flag"
-msgstr "ആക്ഷന്‍ ഫ്ളാഗ്"
-
-#: models.py:31
-msgid "change message"
-msgstr "സന്ദേശം മാറ്റുക"
-
-#: models.py:36
-msgid "log entry"
-msgstr "ലോഗ് എന്ട്രി"
-
-#: models.py:37
-msgid "log entries"
-msgstr "ലോഗ് എന്ട്രികള്‍"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" ചേര്‍ത്തു."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "\"%(object)s\"ല്‍ %(changes)s മാറ്റം വരുത്തി"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" നീക്കം ചെയ്തു."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "ലോഗ്‌എന്‍ട്രി വസ്തു"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "ഒന്നുമില്ല"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s മാറ്റി."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "ഉം"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" ചേര്‍ത്തു."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" ന്റെ %(list)s മാറ്റി."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" ഡിലീറ്റ് ചെയ്തു."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "ഒരു മാറ്റവുമില്ല."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" കൂട്ടി ചേര്‍ത്തു. താഴെ നിന്നും മാറ്റം വരുത്താം."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" വിജയകരമായി കൂട്ടിച്ചേര്ത്തു."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" ല്‍ മാറ്റം വരുത്തി."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr "ആക്ഷന്‍ നടപ്പിലാക്കേണ്ട വകകള്‍ തെരഞ്ഞെടുക്കണം. ഒന്നും മാറ്റിയിട്ടില്ല."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "ആക്ഷനൊന്നും തെരഞ്ഞെടുത്തില്ല."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%s ചേര്‍ക്കുക"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(key)r എന്ന പ്രാഥമിക കീ ഉള്ള %(name)s വസ്തു ഒന്നും നിലവിലില്ല."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s മാറ്റാം"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "ഡേറ്റാബേസ് തകരാറാണ്."
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s ല്‍ മാറ്റം വരുത്തി."
-msgstr[1] "%(count)s %(name)s ല്‍ മാറ്റം വരുത്തി."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s തെരഞ്ഞെടുത്തു."
-msgstr[1] "%(total_count)sഉം തെരഞ്ഞെടുത്തു."
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "%(cnt)s ല്‍ ഒന്നും തെരഞ്ഞെടുത്തില്ല."
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" ഡിലീറ്റ് ചെയ്തു."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "%s ലെ മാറ്റങ്ങള്‍."
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "ലോഗ്-ഇന്‍"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "സൈറ്റ് ഭരണം"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s ഭരണം"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "തീയതി:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "സമയം:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "തിരയുക"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "ഒന്നു കൂടി ചേര്‍ക്കുക"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "പേജ് കണ്ടില്ല"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "ക്ഷമിക്കണം, ആവശ്യപ്പെട്ട പേജ് കണ്ടെത്താന്‍ കഴിഞ്ഞില്ല."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "പൂമുഖം"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "സെര്‍വര്‍ തകരാറാണ്"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "സെര്‍വര്‍ തകരാറാണ് (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "സെര്‍വര്‍ തകരാറാണ് <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "തെരഞ്ഞെടുത്ത ആക്ഷന്‍ നടപ്പിലാക്കുക"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Go"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "എല്ലാ പേജിലേയും വസ്തുക്കള്‍ തെരഞ്ഞെടുക്കാന്‍ ഇവിടെ ക്ലിക് ചെയ്യുക."
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "മുഴുവന്‍ %(total_count)s %(module_name)s ഉം തെരഞ്ഞെടുക്കുക"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "തെരഞ്ഞെടുത്തത് റദ്ദാക്കുക."
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "സ്വാഗതം, "
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "സഹായക്കുറിപ്പുകള്‍"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "പാസ് വേര്‍ഡ് മാറ്റുക."
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "പുറത്ത് കടക്കുക."
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "ജാംഗോ സൈറ്റ് അഡ്മിന്‍"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "ജാംഗോ ഭരണം"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Add"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "ചരിത്രം"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "View on site"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "ദയവായി താഴെയുള്ള തെറ്റുകള്‍ പരിഹരിക്കുക."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Add %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filter"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "ക്രമീകരണത്തില്‍ നിന്നും ഒഴിവാക്കുക"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "ക്രമീകരണത്തിനുള്ള മുന്‍ഗണന: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "ക്രമീകരണം വിപരീത ദിശയിലാക്കുക."
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Delete"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s ഡിലീറ്റ് ചെയ്യുമ്പോള്‍ അതുമായി ബന്ധമുള്ള "
-"വസ്തുക്കളുംഡിലീറ്റ് ആവും. പക്ഷേ നിങ്ങള്‍ക്ക് താഴെ പറഞ്ഞ തരം വസ്തുക്കള്‍ ഡിലീറ്റ് ചെയ്യാനുള്ള അനുമതി "
-"ഇല്ല:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"%(object_name)s \"%(escaped_object)s\" ഡിലീറ്റ് ചെയ്യണമെന്ന് തീര്‍ച്ചയാണോ?അതുമായി "
-"ബന്ധമുള്ള താഴെപ്പറയുന്ന വസ്തുക്കളെല്ലാം ഡിലീറ്റ് ആവും:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "അതെ, തീര്‍ച്ചയാണ്"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "ഒന്നിലേറെ വസ്തുക്കള്‍ ഡിലീറ്റ് ചെയ്തോളൂ"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " By %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "മാറ്റുക"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "ഒന്നിലും മാറ്റം വരുത്താനുള്ള അനുമതി ഇല്ല."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "സമീപകാല പ്രവ്രുത്തികള്‍"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "എന്റെ പ്രവ്രുത്തികള്‍"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "ഒന്നും ലഭ്യമല്ല"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "ഉള്ളടക്കം അറിയില്ല."
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"നിങ്ങളുടെ ഡേറ്റാബേസ് ഇന്‍സ്ടാലേഷനില്‍ എന്തോ പിശകുണ്ട്. ശരിയായ ടേബിളുകള്‍ ഉണ്ടെന്നും ഡേറ്റാബേസ് "
-"വായനായോഗ്യമാണെന്നും ഉറപ്പു വരുത്തുക."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "പാസ് വേര്‍ഡ്"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "രഹസ്യവാക്കോ ഉപയോക്തൃനാമമോ മറന്നുപോയോ?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "തീയതി/സമയം"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "യൂസര്‍"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "ആക്ഷന്‍"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"ഈ വസ്തുവിന്റെ മാറ്റങ്ങളുടെ ചരിത്രം ലഭ്യമല്ല. ഒരുപക്ഷെ ഇത് അഡ്മിന്‍ സൈറ്റ് വഴി "
-"ചേര്‍ത്തതായിരിക്കില്ല."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "എല്ലാം കാണട്ടെ"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "സേവ് ചെയ്യണം"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "പരതുക"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s results"
-msgstr[1] "%(counter)s results"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "ആകെ %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "പുതിയതായി സേവ് ചെയ്യണം"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "സേവ് ചെയ്ത ശേഷം വേറെ ചേര്‍ക്കണം"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "സേവ് ചെയ്ത ശേഷം മാറ്റം വരുത്താം"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr "ആദ്യം, യൂസര്‍ നാമവും പാസ് വേര്‍ഡും നല്കണം. പിന്നെ, കൂടുതല്‍ കാര്യങ്ങള്‍ മാറ്റാവുന്നതാണ്."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Enter a username and password."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "<strong>%(username)s</strong> ന് പുതിയ പാസ് വേര്‍ഡ് നല്കുക."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "പാസ് വേര്‍ഡ്"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "പാസ് വേര്‍ഡ് (വീണ്ടും)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "പാസ് വേര്‍ഡ് മുകളിലെ പോലെ തന്നെ നല്കുക. (ഉറപ്പു വരുത്താനാണ്.)"
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "നീക്കം ചെയ്യുക"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "%(verbose_name)s ഒന്നു കൂടി ചേര്‍ക്കുക"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "ഡിലീറ്റ് ചെയ്യട്ടെ?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "ഈ വെബ് സൈറ്റില്‍ കുറെ നല്ല സമയം ചെലവഴിച്ചതിനു നന്ദി."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "വീണ്ടും ലോഗ്-ഇന്‍ ചെയ്യുക."
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "പാസ് വേര്‍ഡ് മാറ്റം"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "പാസ് വേര്‍ഡ് മാറ്റം വിജയിച്ചു"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "നിങ്ങളുടെ പാസ് വേര്‍ഡ് മാറ്റിക്കഴിഞ്ഞു."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"സുരക്ഷയ്ക്കായി നിങ്ങളുടെ പഴയ പാസ് വേര്‍ഡ് നല്കുക. പിന്നെ, പുതിയ പാസ് വേര്‍ഡ് രണ്ട് തവണ നല്കുക. "
-"(ടയ്പ് ചെയ്തതു ശരിയാണെന്ന് ഉറപ്പാക്കാന്‍)"
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "പഴയ പാസ് വേര്‍ഡ്"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "പുതിയ പാസ് വേര്‍ഡ്"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "എന്റെ പാസ് വേര്‍ഡ് മാറ്റണം"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "പാസ് വേര്‍ഡ് പുനസ്ഥാപിക്കല്‍"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "പാസ് വേര്‍ഡ് പുനസ്ഥാപിക്കല്‍ പൂര്‍ണം"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "നിങ്ങളുടെ പാസ് വേര്‍ഡ് തയ്യാര്‍. ഇനി ലോഗ്-ഇന്‍ ചെയ്യാം."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "പാസ് വേര്‍ഡ് പുനസ്ഥാപിക്കല്‍ ഉറപ്പാക്കല്‍"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "പുതിയ പാസ് വേര്‍ഡ് നല്കൂ"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"ദയവായി നിങ്ങളുടെ പുതിയ പാസ് വേര്‍ഡ് രണ്ടു തവണ നല്കണം. ശരിയായാണ് ടൈപ്പു ചെയ്തത് എന്നു "
-"ഉറപ്പിക്കാനാണ്."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "പുതിയ പാസ് വേര്‍ഡ്:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "പാസ് വേര്‍ഡ് ഉറപ്പാക്കൂ:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "പാസ് വേര്‍ഡ് പുനസ്ഥാപിക്കല്‍ പരാജയം"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"പാസ് വേര്‍ഡ് പുനസ്ഥാപിക്കാന്‍ നല്കിയ ലിങ്ക് യോഗ്യമല്ല. ഒരു പക്ഷേ, അതു മുന്പ് തന്നെ ഉപയോഗിച്ചു "
-"കഴിഞ്ഞതാവാം. പുതിയ ഒരു ലിങ്കിന് അപേക്ഷിക്കൂ."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "പാസ് വേര്‍ഡ് പുനസ്ഥാപിക്കല്‍ വിജയം"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "ദയവായി താഴെ പറയുന്ന പേജ് സന്ദര്‍ശിച്ച് പുതിയ പാസ് വേര്‍ഡ് തെരഞ്ഞെടുക്കുക:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "നിങ്ങള്‍ മറന്നെങ്കില്‍, നിങ്ങളുടെ യൂസര്‍ നാമം, :"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "ഞങ്ങളുടെ സൈറ്റ് ഉപയോഗിച്ചതിന് നന്ദി!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "The %(site_name)s team"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "എന്റെ പാസ് വേര്‍ഡ് പുനസ്ഥാപിക്കൂ"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "എല്ലാ തീയതികളും"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(None)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s തെരഞ്ഞെടുക്കൂ"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "മാറ്റാനുള്ള %s തെരഞ്ഞെടുക്കൂ"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index ffa9b77..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.po
deleted file mode 100644
index a9fd88f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ml/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,180 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Rajeesh Nair <rajeeshrnair@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/"
-"language/ml/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ml\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "ലഭ്യമായ %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"ഇതാണ് ലഭ്യമായ %s പട്ടിക. അതില്‍ ചിലത് തിരഞ്ഞെടുക്കാന്‍ താഴെ കളത്തില്‍ നിന്നും ഉചിതമായവ സെലക്ട് "
-"ചെയ്ത ശേഷം രണ്ടു കളങ്ങള്‍ക്കുമിടയിലെ \"തെരഞ്ഞെടുക്കൂ\" അടയാളത്തില്‍ ക്ലിക് ചെയ്യുക."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "ലഭ്യമായ %s പട്ടികയെ ഫില്‍ട്ടര്‍ ചെയ്തെടുക്കാന്‍ ഈ ബോക്സില്‍ ടൈപ്പ് ചെയ്യുക."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filter"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "എല്ലാം തെരഞ്ഞെടുക്കുക"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "%s എല്ലാം ഒന്നിച്ച് തെരഞ്ഞെടുക്കാന്‍ ക്ലിക് ചെയ്യുക."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "തെരഞ്ഞെടുക്കൂ"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "നീക്കം ചെയ്യൂ"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "തെരഞ്ഞെടുത്ത %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"തെരഞ്ഞെടുക്കപ്പെട്ട %s പട്ടികയാണിത്. അവയില്‍ ചിലത് ഒഴിവാക്കണമെന്നുണ്ടെങ്കില്‍ താഴെ കളത്തില്‍ "
-"നിന്നും അവ സെലക്ട് ചെയ്ത് കളങ്ങള്‍ക്കിടയിലുള്ള \"നീക്കം ചെയ്യൂ\" എന്ന അടയാളത്തില്‍ ക്ലിക് ചെയ്യുക."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "എല്ലാം നീക്കം ചെയ്യുക"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "തെരഞ്ഞെടുക്കപ്പെട്ട %s എല്ലാം ഒരുമിച്ച് നീക്കം ചെയ്യാന്‍ ക്ലിക് ചെയ്യുക."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(cnt)sല്‍ %(sel)s തെരഞ്ഞെടുത്തു"
-msgstr[1] "%(cnt)sല്‍ %(sel)s എണ്ണം തെരഞ്ഞെടുത്തു"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"വരുത്തിയ മാറ്റങ്ങള്‍ സേവ് ചെയ്തിട്ടില്ല. ഒരു ആക്ഷന്‍ പ്രയോഗിച്ചാല്‍ സേവ് ചെയ്യാത്ത മാറ്റങ്ങളെല്ലാം "
-"നഷ്ടപ്പെടും."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"നിങ്ങള്‍ ഒരു ആക്ഷന്‍ തെരഞ്ഞെടുത്തിട്ടുണ്ട്. പക്ഷേ, കളങ്ങളിലെ മാറ്റങ്ങള്‍ ഇനിയും സേവ് ചെയ്യാനുണ്ട്. "
-"ആദ്യം സേവ്ചെയ്യാനായി OK ക്ലിക് ചെയ്യുക. അതിനു ശേഷം ആക്ഷന്‍ ഒന്നു കൂടി പ്രയോഗിക്കേണ്ടി വരും."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"നിങ്ങള്‍ ഒരു ആക്ഷന്‍ തെരഞ്ഞെടുത്തിട്ടുണ്ട്. കളങ്ങളില്‍ സേവ് ചെയ്യാത്ത മാറ്റങ്ങള്‍ ഇല്ല. നിങ്ങള്‍സേവ് ബട്ടണ്‍ "
-"തന്നെയാണോ അതോ ഗോ ബട്ടണാണോ ഉദ്ദേശിച്ചത്."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "ജനുവരി ഫെബൃവരി മാര്‍ച്ച് ഏപ്രില്‍ മെയ് ജൂണ്‍ ജൂലൈ ആഗസ്ത് സെപ്തംബര്‍ ഒക്ടോബര്‍ നവംബര്‍ ഡിസംബര്‍"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "ഞാ തി ചൊ ബു വ്യാ വെ ശ"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "കാണട്ടെ"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "മറയട്ടെ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "ഇപ്പോള്‍"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "ഘടികാരം (ക്ലോക്ക്)"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "സമയം തെരഞ്ഞെടുക്കൂ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "അര്‍ധരാത്രി"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "ഉച്ച"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "റദ്ദാക്കൂ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "ഇന്ന്"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "കലണ്ടര്‍"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "ഇന്നലെ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "നാളെ"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/django.mo
deleted file mode 100644
index 42da351..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/django.po
deleted file mode 100644
index 748e461..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,888 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# ankhaa1002 <ankhaa1002@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jargalan <jargalanch@gmail.com>, 2011
-# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2013
-# Баясгалан Цэвлээ <bayasaa_7672@yahoo.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-09-30 09:37+0000\n"
-"Last-Translator: ankhaa1002 <ankhaa1002@gmail.com>\n"
-"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/"
-"language/mn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(items)s ээс %(count)d-ийг амжилттай устгалаа."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "%(name)s устгаж чадахгүй."
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Итгэлтэй байна уу?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Сонгосон %(verbose_name_plural)s-ийг устга"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Бүх "
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Тийм"
-
-#: filters.py:239
-msgid "No"
-msgstr "Үгүй"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Тодорхойгүй"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Бүх өдөр"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Өнөөдөр"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Өнгөрсөн долоо хоног"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Энэ сар"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Энэ жил"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Ажилтан хэрэглэгчийн %(username)s ба нууц үгийг зөв оруулна уу. Хоёр талбарт "
-"том жижигээр үсгээр бичих ялгаатай."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Орсон хуудас тань хүчингүй болсон тул ахин нэвтрэнэ үү."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Үйлдэл:"
-
-#: models.py:25
-msgid "action time"
-msgstr "үйлдлийн хугацаа"
-
-#: models.py:28
-msgid "object id"
-msgstr "обектийн id"
-
-#: models.py:29
-msgid "object repr"
-msgstr "обектийн хамаарал"
-
-#: models.py:30
-msgid "action flag"
-msgstr "үйлдэлийн тэмдэг"
-
-#: models.py:31
-msgid "change message"
-msgstr "өөрчлөлтийн мэдээлэл"
-
-#: models.py:36
-msgid "log entry"
-msgstr "лог өгөгдөл"
-
-#: models.py:37
-msgid "log entries"
-msgstr "лог өгөгдөлүүд"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" нэмсэн."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "\"%(object)s\"-ийг %(changes)s өөрчилсөн."
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" устгасан."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Лог бүртгэлийн обект"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Хоосон"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Өөрчлөгдсөн %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "ба"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Нэмэгдсэн %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\"-ийн өөрчлөгдсөн %(list)s"
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Устгасан %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Өөрчилсөн талбар алга байна."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" амжилттай нэмэгдлээ. Доорх хэсэгт үүнийг ахин засварлах "
-"боломжтой."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" амжилттай нэмэгдлээ. Доорх хэсгээс %(name)s өөрийн "
-"нэмэх боломжтой."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr " %(name)s \"%(obj)s\" амжилттай нэмэгдлээ."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" амжилттай өөрчлөгдлөө. Доорх хэсэгт дахин засах "
-"боломжтой."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" амжилттай өөрчлөгдлөө. Доорх %(name)s хэсгээс дахин "
-"нэмэх боломжтой."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr " %(name)s \"%(obj)s\" амжилттай өөрчлөгдлөө. "
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Үйлдэл хийхийн тулд Та ядаж 1-ийг сонгох хэрэгтэй. Өөрчилөлт хийгдсэнгүй."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Үйлдэл сонгоогүй."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%s-ийг нэмэх"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s обектийн үндсэн түлхүүр %(key)r олдохгүй байна."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s-ийг өөрчлөх"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Өгөгдлийн сангийн алдаа"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s-ийг амжилттай өөрчиллөө."
-msgstr[1] "%(count)s %(name)s-ийг амжилттай өөрчиллөө."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "Бүгд %(total_count)s сонгогдсон"
-msgstr[1] "Бүгд %(total_count)s сонгогдсон"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "%(cnt)s оос 0 сонгосон"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr " %(name)s \"%(obj)s\" амжилттай устгагдлаа."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Өөрчлөлтийн түүх: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(instance)s %(class_name)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-" %(object_name)s '%(escaped_object)s'-ийг устгаж байна. Дараах хамгаадагдсан "
-"обектуудтай холбогдсон байна:"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Нэвтрэх"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Сайтын удирдлага"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s удирдлага"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Огноо:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Цаг:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Хайх"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Ахиад нэмэх"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Одоогийнх:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Өөрчилөлт:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Хуудас олдсонгүй."
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Уучлаарай, хандахыг хүссэн хуудас тань олдсонгүй."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Нүүр"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Серверийн алдаа"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Серверийн алдаа (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Серверийн алдаа <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Алдаа гарсан байна. Энэ алдааг сайт хариуцагчид цахим шуудангаар мэдэгдсэн "
-"бөгөөд тэд нэн даруй засах хэрэгтэй. Хүлээцтэй хандсанд баярлалаа."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Сонгосон үйлдэлийг ажилуулах"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Гүйцэтгэх"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Бүх хуудаснууд дээрх объектуудыг сонгох"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Бүгдийг сонгох %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Сонгосонг цэвэрлэх"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Тавтай морилно уу"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Баримтжуулалт"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Нууц үг өөрчлөх"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Гарах"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Сайтын удирдлага"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Удирдлага"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Нэмэх"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Түүх"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Сайтаас харах"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Доорх алдаануудыг засна уу."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Доор гарсан алдаануудыг засна уу."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s нэмэх"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Шүүлтүүр"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Эрэмблэлтээс хасах"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Эрэмблэх урьтамж: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Эрэмбэлэлтийг харуул"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Устгах"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s'-ийг устгавал холбогдох объект нь устах "
-"ч бүртгэл тань дараах төрлийн объектуудийг устгах зөвшөөрөлгүй байна:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-" %(object_name)s обектийг устгаж байна. '%(escaped_object)s' холбоотой "
-"хамгаалагдсан обектуудыг заавал утсгах хэрэгтэй :"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Та %(object_name)s \"%(escaped_object)s\"-ийг устгахдаа итгэлтэй байна уу? "
-"Үүнийг устгавал дараах холбогдох зүйлс нь бүгд устана:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Тийм, итгэлтэй байна."
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Олон обектууд устгах"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Сонгосон %(objects_name)s обектуудыг устгасанаар хамаатай бүх обкетууд устах "
-"болно. Гэхдээ таньд эрх эдгээр төрлийн обектуудыг утсгах эрх байхгүй байна: "
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"%(objects_name)s обектуудыг утсгаж байна дараах холбоотой хамгаалагдсан "
-"обектуудыг устгах шаардлагатай:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Та %(objects_name)s ийг устгах гэж байна итгэлтэй байна? Дараах обектууд "
-"болон холбоотой зүйлс хамт устагдах болно:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s -ээр"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "%(name)s хэрэглүүр дэх моделууд."
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Өөрчлөх"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Та ямар нэг зүйл засварлах зөвшөөрөлгүй байна."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Сүүлд хийсэн үйлдлүүд"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Миний үйлдлүүд"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Үйлдэл алга"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Тодорхойгүй агуулга"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Өгөгдлийн сангийн ямар нэг зүйл буруу суугдсан байна. Өгөгдлийн сангийн "
-"зохих хүснэгт үүсгэгдсэн эсэх, өгөгдлийн санг зохих хэрэглэгч унших "
-"боломжтой байгаа эсэхийг шалгаарай."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Нууц үг:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Таны мартсан нууц үг эсвэл нэрвтэр нэр?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Огноо/цаг"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Хэрэглэгч"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Үйлдэл"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Уг объектэд өөрчлөлтийн түүх байхгүй байна. Магадгүй үүнийг уг удирдлагын "
-"сайтаар дамжуулан нэмээгүй байх."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Бүгдийг харуулах"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Хадгалах"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Хайлт"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s үр дүн"
-msgstr[1] "%(counter)s үр дүн"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "Нийт %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Шинээр хадгалах"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Хадгалаад өөрийг нэмэх"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Хадгалаад нэмж засах"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Эхлээд хэрэглэгчийн нэр нууц үгээ оруулна уу. Ингэснээр та хэрэглэгчийн "
-"сонголтыг нэмж засварлах боломжтой болно. "
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Хэрэглэгчийн нэр ба нууц үгээ оруулна."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "<strong>%(username)s</strong>.хэрэглэгчид шинэ нууц үг оруулна уу."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Нууц үг "
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Нууц үг (ахиад)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Батлахын тулд дээрх нууц үгээ ахин хийнэ үү."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Хасах"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Өөр %(verbose_name)s нэмэх "
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Устгах уу?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Манай вэб сайтыг ашигласанд баярлалаа."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Ахин нэвтрэх "
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Нууц үгийн өөрчлөлт"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Нууц үгийн өөрчлөлт амжилттай"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Нууц үг тань өөрчлөгдлөө."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Аюулгүй байдлын үүднээс хуучин нууц үгээ оруулаад шинэ нууц үгээ хоёр удаа "
-"хийнэ үү. Ингэснээр нууц үгээ зөв бичиж байгаа эсэхийг тань шалгах юм."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Хуучин нууц үг"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Шинэ нууц үг"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Нууц үгээ солих"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Нууц үг шинэчилэх"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Нууц үг шинэчилэх явц дууслаа"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Та нууц үгтэй боллоо. Одоо бүртгэлд нэвтрэх боломжтой."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Нууц үг шинэчилэхийг баталгаажуулах"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Шинэ нууц үг оруулах"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Шинэ нууц үгээ хоёр удаа оруулна уу. Ингэснээр нууц үгээ зөв бичиж байгаа "
-"эсэхийг тань шалгах юм. "
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Шинэ нууц үг:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Нууц үгээ батлах:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Нууц үг шинэчилэх амжилтгүй боллоо"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Нууц үг авах холбоос болохгүй байна. Үүнийг аль хэдийнэ хэрэглэснээс болсон "
-"байж болзошгүй. Шинэ нууц үг авахаар хүсэлт гаргана уу. "
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Нууц үг шинэчилэх амжилттай боллоо"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Бид таний оруулсан email хаягруу нууц үг оруулах заавар явуулсан. Та удахгүй "
-"хүлээж авах болно. "
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Хэрвээ та email хүлээж аваагүй бол оруулсан email хаягаараа бүртгүүлсэн "
-"эсхээ шалгаад мөн email ийнхаа Spam фолдер ийг шалгана уу."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"%(site_name)s сайтанд бүртгүүлсэн эрхийн нууц үгийг сэргээх хүсэлт гаргасан "
-"учир энэ имайл ийг та хүлээн авсан болно. "
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Дараах хуудас руу орон шинэ нууц үг сонгоно уу:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Хэрэглэгчийн нэрээ мартсан бол :"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Манай сайтыг хэрэглэсэнд баярлалаа!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s баг"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Нууц үгээ мартчихсан уу? Доорх хэсэгт цахим шуудангийн хаягаа оруулвал бид "
-"хаягаар тань нууц үг сэргэх зааварчилгаа явуулах болно."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "ИМайл хаяг:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Нууц үгээ шинэчлэх"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Бүх огноо"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Хоосон)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s-г сонго"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Өөрчлөх %s-г сонгоно уу"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index e7ab547..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po
deleted file mode 100644
index d24118d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/mn/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,181 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Tsolmon <mnts26@gmail.com>, 2012
-# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011-2012
-# Ганзориг БП <ganzo.bp@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/"
-"language/mn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Боломжтой %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Энэ %s жагсаалт нь боломжит утгын жагсаалт. Та аль нэгийг нь сонгоод \"Сонгох"
-"\" дээр дарж нөгөө хэсэгт оруулах боломжтой."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Энэ нүдэнд бичээд дараах %s жагсаалтаас шүүнэ үү. "
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Шүүлтүүр"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Бүгдийг нь сонгох"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Бүгдийг сонгох бол %s дарна уу"
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Сонгох"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Хас"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Сонгогдсон %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Энэ %s сонгогдсон утгуудыг жагсаалт. Та аль нэгийг нь хасахыг хүсвэл сонгоох "
-"\"Хас\" дээр дарна уу."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Бүгдийг арилгах"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "%s ийн сонгоод бүгдийг нь арилгана"
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s ээс %(cnt)s сонгосон"
-msgstr[1] "%(sel)s ээс %(cnt)s сонгосон"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Хадгалаагүй өөрчлөлтүүд байна. Энэ үйлдэлийг хийвэл өөрчлөлтүүд устах болно."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Та 1 үйлдлийг сонгосон байна, гэвч та өөрийн өөрчлөлтүүдээ тодорхой "
-"талбаруудад нь оруулагүй байна. OK дарж сануулна уу. Энэ үйлдлийг та дахин "
-"хийх шаардлагатай."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Та 1 үйлдлийг сонгосон байна бас та ямарваа өөрчлөлт оруулсангүй. Та Save "
-"товчлуур биш Go товчлуурыг хайж байгаа бололтой."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "Хулгана Үхэр Бар Туулай Луу Могой Морь Хонь Бич Тахиа Нохой Гахай"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "Ня Да Мя Лх Пү Ба Бя"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Үзэх"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Нуух"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Одоо"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Цаг"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Цаг сонгох"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Шөнө дунд"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 цаг"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Үд дунд"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Болих"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Өнөөдөр"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Хуанли"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Өчигдөр"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Маргааш"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/my/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/my/LC_MESSAGES/django.mo
deleted file mode 100644
index 16b20cf..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/my/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/my/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/my/LC_MESSAGES/django.po
deleted file mode 100644
index 04deb29..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/my/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,833 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Yhal Htet Aung <jumoun@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Burmese (http://www.transifex.com/projects/p/django/language/"
-"my/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: my\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr ""
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr ""
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr ""
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr ""
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "အားလံုး"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "ဟုတ်"
-
-#: filters.py:239
-msgid "No"
-msgstr "မဟုတ်"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "အမည်မသိ"
-
-#: filters.py:308
-msgid "Any date"
-msgstr ""
-
-#: filters.py:309
-msgid "Today"
-msgstr "ယနေ့"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr ""
-
-#: filters.py:317
-msgid "This month"
-msgstr ""
-
-#: filters.py:321
-msgid "This year"
-msgstr ""
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr ""
-
-#: helpers.py:23
-msgid "Action:"
-msgstr ""
-
-#: models.py:25
-msgid "action time"
-msgstr ""
-
-#: models.py:28
-msgid "object id"
-msgstr ""
-
-#: models.py:29
-msgid "object repr"
-msgstr ""
-
-#: models.py:30
-msgid "action flag"
-msgstr ""
-
-#: models.py:31
-msgid "change message"
-msgstr ""
-
-#: models.py:36
-msgid "log entry"
-msgstr ""
-
-#: models.py:37
-msgid "log entries"
-msgstr ""
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr ""
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr ""
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "နှင့်"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:781
-msgid "No fields changed."
-msgstr ""
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr ""
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr ""
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-
-#: options.py:1037
-msgid "No action selected."
-msgstr ""
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr ""
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr ""
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr ""
-
-#: options.py:1257
-msgid "Database error"
-msgstr ""
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] ""
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] ""
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr ""
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr ""
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr ""
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "ဖွင့်ဝင်"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr ""
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr ""
-
-#: widgets.py:90
-msgid "Date:"
-msgstr ""
-
-#: widgets.py:91
-msgid "Time:"
-msgstr ""
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr ""
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr ""
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr ""
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr ""
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "ပင်မ"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "ဆာဗာအမှားပြ"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "ဆာဗာအမှားပြ (၅၀၀)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "ဆာဗာအမှားပြ <em>(၅၀၀)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr ""
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr ""
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr ""
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr ""
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr ""
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "ကြိုဆို၊ "
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "စာရွက်စာတမ်း"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr ""
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "ဖွင့်ထွက်"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr ""
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr ""
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr ""
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr ""
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr ""
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr ""
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr ""
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "စီစစ်မှု"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "ပယ်ဖျက်"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr ""
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr ""
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr ""
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr ""
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr ""
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr ""
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr ""
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "စကားဝှက်:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr ""
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr ""
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr ""
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr ""
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr ""
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr ""
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr ""
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr ""
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr ""
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr ""
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "စကားဝှက်"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr ""
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "ဖယ်ရှား"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr ""
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr ""
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr ""
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr ""
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr ""
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr ""
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr ""
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr ""
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr ""
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr ""
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "အီးမေးလ်လိပ်စာ:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr ""
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr ""
-
-#: views/main.py:35
-msgid "(None)"
-msgstr ""
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr ""
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/my/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/my/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 5aa4e8e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/my/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/my/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/my/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 8d6e0dc..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/my/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,172 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Yhal Htet Aung <jumoun@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-01 13:16+0000\n"
-"Last-Translator: Yhal Htet Aung <jumoun@gmail.com>\n"
-"Language-Team: Burmese (http://www.transifex.com/projects/p/django/language/"
-"my/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: my\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s ကိုရယူနိုင်"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"%s သည်ရယူနိုင်သောစာရင်းဖြစ်။ အောက်ဖော်ပြပါဘူးများတွင်အချို့ကိုရွေးချယ်နိုင်ပြီးဘူးနှစ်ခုကြားရှိ\"ရွေး"
-"\"များကိုကလစ်နှိပ်။"
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "ယခုဘူးထဲတွင်စာသားရိုက်ထည့်ပြီး %s ရယူနိုင်သောစာရင်းကိုစိစစ်နိုင်။"
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "စီစစ်မှု"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "အားလံုးရွေး"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "%s အားလံုးကိုတစ်ကြိမ်တည်းဖြင့်ရွေးချယ်ရန်ကလစ်နှိပ်။"
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "ရွေး"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "ဖယ်ရှား"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s ရွေးပြီး"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"%s သည်ရယူနိုင်သောစာရင်းဖြစ်။ အောက်ဖော်ပြပါဘူးများတွင်အချို့ကိုဖယ်ရှားနိုင်ပြီးဘူးနှစ်ခုကြားရှိ\"ဖယ်ရှား"
-"\"ကိုကလစ်နှိပ်။"
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "အားလံုးဖယ်ရှား"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "%s အားလံုးကိုတစ်ကြိမ်တည်းဖြင့်ဖယ်ရှားရန်ကလစ်နှိပ်။"
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(cnt)s မှ %(sel)s ရွေးချယ်ပြီး"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "နွေ လာ ဂါ ဟူး တေး ကြာ နေ"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "ပြသ"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "ဖုံးကွယ်"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "ယခု"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "နာရီ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "အချိန်ရွေးပါ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "သန်းခေါင်"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "မနက်၆နာရီ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "မွန်းတည့်"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "ပယ်ဖျက်"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "ယနေ့"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "ပြက္ခဒိန်"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "မနေ့"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "မနက်ဖြန်"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/django.mo
deleted file mode 100644
index f2f1f34..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/django.po
deleted file mode 100644
index 5a0b625..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,885 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jensadne <jensadne@pvv.ntnu.no>, 2013
-# jonklo <jonklo@gmail.com>, 2013
-# jonklo <jonklo@gmail.com>, 2011,2013
-# Sigurd Gartmann <sigurdga-transifex@sigurdga.no>, 2012
-# injectedreality <transifex@ireality.no>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-06 12:00+0000\n"
-"Last-Translator: jensadne <jensadne@pvv.ntnu.no>\n"
-"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/"
-"language/nb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Slettet %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Kan ikke slette %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Er du sikker?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Slett valgte %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Alle"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Ja"
-
-#: filters.py:239
-msgid "No"
-msgstr "Nei"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Ukjent"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Når som helst"
-
-#: filters.py:309
-msgid "Today"
-msgstr "I dag"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Siste syv dager"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Denne måneden"
-
-#: filters.py:321
-msgid "This year"
-msgstr "I år"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Vennligst oppgi gyldig %(username)s og passord til en "
-"administrasjonsbrukerkonto. Merk at det er forskjell på små og store "
-"bokstaver."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Økten din har tidsavbrutt, vennligst logg inn igjen."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Handling:"
-
-#: models.py:25
-msgid "action time"
-msgstr "tid for handling"
-
-#: models.py:28
-msgid "object id"
-msgstr "objekt-ID"
-
-#: models.py:29
-msgid "object repr"
-msgstr "objekt-repr"
-
-#: models.py:30
-msgid "action flag"
-msgstr "handlingsflagg"
-
-#: models.py:31
-msgid "change message"
-msgstr "endre melding"
-
-#: models.py:36
-msgid "log entry"
-msgstr "logginnlegg"
-
-#: models.py:37
-msgid "log entries"
-msgstr "logginnlegg"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "La til «%(object)s»."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Endret «%(object)s» - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Slettet «%(object)s»."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "LogEntry-objekt"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Ingen"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Endret %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "og"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Opprettet %(name)s «%(object)s»."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Endret %(list)s for %(name)s «%(object)s»."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Slettet %(name)s «%(object)s»."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Ingen felt endret."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s «%(obj)s» ble lagt til. Du kan redigere videre nedenfor."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" ble lagt til. Du kan legge til en ny %(name)s nedenfor."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s «%(obj)s» ble lagt til."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr "%(name)s \"%(obj)s\" ble endret. Du kan redigere videre nedenfor."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" ble endret. Du kan legge til en ny %(name)s nedenfor."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s «%(obj)s» ble endret."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Du må velge objekter for å utføre handlinger på dem. Ingen objekter har "
-"blitt endret."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Ingen handling valgt."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Legg til ny %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s-objekt med primærnøkkelen %(key)r finnes ikke."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Endre %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Databasefeil"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s ble endret."
-msgstr[1] "%(count)s %(name)s ble endret."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s valgt"
-msgstr[1] "Alle %(total_count)s valgt"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 av %(cnt)s valgt"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s «%(obj)s» ble slettet."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Endringshistorikk: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Sletting av %(class_name)s «%(instance)s» krever sletting av følgende "
-"beskyttede relaterte objekter: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Logg inn"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Nettstedsadministrasjon"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s-administrasjon"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Dato:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Tid:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Oppslag"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Legg til ny"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Nåværende:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Endre:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Fant ikke siden"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Beklager, men siden du spør etter finnes ikke."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Hjem"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Tjenerfeil"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Tjenerfeil (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Tjenerfeil <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Det har oppstått en feil. Feilen er blitt rapportert til administrator via e-"
-"post, og vil bli fikset snart. Takk for din tålmodighet."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Utfør den valgte handlingen"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Gå"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Trykk her for å velge samtlige objekter fra alle sider"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Velg alle %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Nullstill valg"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Velkommen,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentasjon"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Endre passord"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Logg ut"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django administrasjonsside"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django-administrasjon"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Legg til"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Historikk"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Vis på nettsted"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Vennligst korriger feilene under."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Vennligst korriger feilene under."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Legg til ny %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtrering"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Fjern fra sortering"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Sorteringsprioritet: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Slå av og på sortering"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Slett"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Om du sletter %(object_name)s «%(escaped_object)s», vil også relaterte "
-"objekter slettes, men du har ikke tillatelse til å slette følgende "
-"objekttyper:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Sletting av %(object_name)s «%(escaped_object)s» krever sletting av følgende "
-"beskyttede relaterte objekter:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Er du sikker på at du vil slette %(object_name)s «%(escaped_object)s»? Alle "
-"de følgende relaterte objektene vil bli slettet:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Ja, jeg er sikker"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Slett flere objekter"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Sletting av det valgte %(objects_name)s ville resultere i sletting av "
-"relaterte objekter, men kontoen din har ikke tillatelse til å slette "
-"følgende objekttyper:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Sletting av det valgte %(objects_name)s ville kreve sletting av følgende "
-"beskyttede relaterte objekter:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Er du sikker på vil slette det valgte %(objects_name)s? De følgende "
-"objektene og deres relaterte objekter vil bli slettet:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Etter %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modeller i %(name)s-applikasjonen"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Endre"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Du har ikke rettigheter til å redigere noe."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Siste handlinger"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Mine handlinger"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Ingen tilgjengelige"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Ukjent innhold"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Noe er galt med databaseinstallasjonen din. Sørg for at databasetabellene er "
-"opprettet og at brukeren har de nødvendige rettighetene."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Passord:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Glemt brukernavnet eller passordet ditt?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Dato/tid"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Bruker"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Handling"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Dette objektet har ingen endringshistorikk. Det ble sannsynligvis ikke lagt "
-"til på denne administrasjonssiden."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Vis alle"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Lagre"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Søk"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s resultat"
-msgstr[1] "%(counter)s resultater"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s totalt"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Lagre som ny"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Lagre og legg til ny"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Lagre og fortsett å redigere"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Skriv først inn brukernavn og passord. Deretter vil du få mulighet til å "
-"endre flere brukerinnstillinger."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Skriv inn brukernavn og passord."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Skriv inn et nytt passord for brukeren <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Passord"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Passord (gjenta)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Skriv inn det samme passordet som ovenfor, for verifisering."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Fjern"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Legg til ny %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Slette?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Takk for i dag."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Logg inn igjen"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Endre passord"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Passord endret"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Ditt passord ble endret."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Av sikkerhetsgrunner må du oppgi ditt gamle passord. Deretter oppgir du det "
-"nye passordet ditt to ganger, slik at vi kan kontrollere at det er korrekt."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Gammelt passord"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nytt passord"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Endre passord"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Nullstill passord"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Passord nullstilt"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Passordet ditt er satt. Du kan nå logge inn."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Bekreftelse på nullstilt passord"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Oppgi nytt passord"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Oppgi det nye passordet to ganger, for å sikre at det er skrevet korrekt."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nytt passord:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Gjenta nytt passord:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Passordet ble ikke nullstilt"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Nullstillingslenken er ugyldig, kanskje fordi den allerede har vært brukt. "
-"Vennligst nullstill passordet ditt på nytt."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Passord-nullstilling klar"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Vi har sendt deg en e-post med instruksjoner for nullstilling av passord. Du "
-"bør motta den om kort tid."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Hvis du ikke mottar en epost, sjekk igjen at du har oppgitt den adressen du "
-"er registrert med og sjekk ditt spam filter."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Du mottar denne e-posten fordi du har bedt om nullstilling av passordet ditt "
-"på %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Vennligst gå til følgende side og velg et nytt passord:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Brukernavnet ditt, i tilfelle du har glemt det:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Takk for at du bruker siden vår!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Hilsen %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Glemt passordet ditt? Oppgi e-postadressen din under, så sender vi deg en e-"
-"post med instruksjoner for nullstilling av passord."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "E-postadresse:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Nullstill mitt passord"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Alle datoer"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Ingen)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Velg %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Velg %s du ønsker å endre"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 7bda1fc..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.po
deleted file mode 100644
index ac7681a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/nb/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,183 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jonklo <jonklo@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/"
-"language/nb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Tilgjengelige %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Dette er listen over tilgjengelige %s. Du kan velge noen ved å markere de i "
-"boksen under og så klikke på \"Velg\"-pilen mellom de to boksene."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Skriv i dette feltet for å filtrere ned listen av tilgjengelige %s."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filter"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Velg alle"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Klikk for å velge alle %s samtidig"
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Velg"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Slett"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Valgt %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Dette er listen over valgte %s. Du kan fjerne noen ved å markere de i boksen "
-"under og så klikke på \"Fjern\"-pilen mellom de to boksene."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Fjern alle"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Klikk for å fjerne alle valgte %s samtidig"
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s av %(cnt)s valgt"
-msgstr[1] "%(sel)s av %(cnt)s valgt"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Du har ulagrede endringer i individuelle felter. Hvis du utfører en "
-"handling, vil dine ulagrede endringer gå tapt."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Du har valgt en handling, men du har ikke lagret dine endringer i "
-"individuelle felter enda. Vennligst trykk OK for å lagre. Du må utføre "
-"handlingen på nytt."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Du har valgt en handling, og har ikke gjort noen endringer i individuelle "
-"felter. Du ser mest sannsynlig etter Gå-knappen, ikke Lagre-knappen."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Januar Februar Mars April Mai Juni Juli August September Oktober November "
-"Desember"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "S M T O T F L"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Vis"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Skjul"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Nå"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Klokke"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Velg et klokkeslett"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Midnatt"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "06:00"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "12:00"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Avbryt"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "I dag"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalender"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "I går"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "I morgen"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ne/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ne/LC_MESSAGES/django.mo
deleted file mode 100644
index b284c4e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ne/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ne/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ne/LC_MESSAGES/django.po
deleted file mode 100644
index c98d970..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ne/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,856 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Sagar Chalise <chalisesagar@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-22 01:20+0000\n"
-"Last-Translator: Sagar Chalise <chalisesagar@gmail.com>\n"
-"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/"
-"ne/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ne\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "सफलतापूर्वक मेटियो %(count)d %(items)s ।"
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "%(name)s मेट्न सकिएन "
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "के तपाई पक्का हुनुहुन्छ ?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "%(verbose_name_plural)s छानिएको मेट्नुहोस"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "सबै"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "हो"
-
-#: filters.py:239
-msgid "No"
-msgstr "होइन"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "अज्ञात"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "कुनै मिति"
-
-#: filters.py:309
-msgid "Today"
-msgstr "आज"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "पूर्व ७ दिन"
-
-#: filters.py:317
-msgid "This month"
-msgstr "यो महिना"
-
-#: filters.py:321
-msgid "This year"
-msgstr "यो साल"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"कृपया स्टाफ खाताको लागि सही %(username)s र पासवर्ड राख्नु होस । दुवै खाली ठाउँ केस "
-"सेन्सिटिव हुन सक्छन् ।"
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "कृपया पुन: लगिन गर्नुहोस, किनकी तपाइको अवधि सिद्धिएको छ ।"
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "कार्य:"
-
-#: models.py:25
-msgid "action time"
-msgstr "कार्य समय"
-
-#: models.py:28
-msgid "object id"
-msgstr "वस्तु परिचय"
-
-#: models.py:29
-msgid "object repr"
-msgstr ""
-
-#: models.py:30
-msgid "action flag"
-msgstr "एक्सन फ्ल्याग"
-
-#: models.py:31
-msgid "change message"
-msgstr "सन्देश परिवर्तन गर्नुहोस"
-
-#: models.py:36
-msgid "log entry"
-msgstr "लग"
-
-#: models.py:37
-msgid "log entries"
-msgstr "लगहरु"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr " \"%(object)s\" थपिएको छ ।"
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "\"%(object)s\" - %(changes)s फेरियो ।"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" मेटिएको छ ।"
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "लग ईन्ट्री वस्तु"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "शुन्य"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s परिवर्तित ।"
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "र"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" थपिएको छ ।"
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s को %(list)s फेरियो ।"
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" मेटिएको छ ।"
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "कुनै फाँट फेरिएन ।"
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" सफलतापूर्वक थप भयो । तपाई यो पुन: संशोधन गर्न सक्नुहुनेछ ।"
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" सफलता पूर्वक थप भयो । तपाई अर्को %(name)s तल राख्न सक्नु हुनेछ।"
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" सफलतापूर्वक परिवर्तन भयो । "
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" सफलता पूर्वक फेर बदल भयो । तपाई तल यो पुन: संशोधन गर्न सक्नु "
-"हुनेछ ।"
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" सफलता पूर्वक फेर बदल भयो । तपाई अर्को %(name)s तल राख्न सक्नु "
-"हुनेछ।"
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" सफलतापूर्वक परिवर्तन भयो । "
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr "कार्य गर्नका निम्ति वस्तु छान्नु पर्दछ । कुनैपनि छस्तु छानिएको छैन । "
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "कार्य छानिएको छैन ।"
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%s थप्नुहोस"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "प्राइमरी की %(key)r भएको %(name)s अब्जेक्ट"
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s परिवर्तित ।"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "डाटाबेस त्रुटि"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s सफलतापूर्वक परिवर्तन भयो ।"
-msgstr[1] "%(count)s %(name)sहरु सफलतापूर्वक परिवर्तन भयो ।"
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s चयन भयो"
-msgstr[1] "सबै %(total_count)s चयन भयो"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "%(cnt)s को ० चयन गरियो"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" सफलतापूर्वक मेटियो । "
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "इतिहास फेर्नुहोस : %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "लगिन"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "साइट प्रशासन"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s प्रशासन"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "मिति:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "समय:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "खोज तलास"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "अर्को थप्नुहोस"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "अहिले :"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "फेर्नु होस :"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "पृष्ठ भेटिएन"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "क्षमापार्थी छौं तर अनुरोध गरिएको पृष्ठ भेटिएन ।"
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "गृह"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "सर्भर त्रुटि"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "सर्भर त्रुटि (५००)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "सर्भर त्रुटि <em>(५००)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"त्रुटी भयो । साइट प्रशासकलाई ई-मेलबाट खबर गरिएको छ र चाँडै समाधान हुनेछ । धैर्यताको "
-"लागि धन्यवाद ।"
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "छानिएको कार्य गर्नुहोस ।"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "बढ्नुहोस"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "सबै पृष्ठभरमा वस्तु छान्न यहाँ थिच्नुहोस ।"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "%(total_count)s %(module_name)s सबै छान्नुहोस "
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "चुनेको कुरा हटाउनुहोस ।"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "स्वागतम्"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "विस्तृत विवरण"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "पासवर्ड फेर्नुहोस "
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "लग आउट"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "ज्याङ्गो साइट प्रशासन"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "ज्याङ्गो प्रशासन"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "थप्नुहोस "
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "इतिहास"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "साइटमा हेर्नुहोस"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "कृपया तलका त्रुटिहरु सच्याउनुहोस ।"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "कृपया तलका त्रुटी सुधार्नु होस ।"
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s थप्नुहोस"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "छान्नुहोस"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "मेट्नुहोस"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "हुन्छ, म पक्का छु ।"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "वहु वस्तुहरु मेट्नुहोस ।"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr "%(objects_name)s "
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s द्वारा"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "%(name)s एप्लिकेसनमा भएको मोडेलहरु"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "फेर्नुहोस"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "तपाइलाई केही पनि संपादन गर्ने अनुमति छैन ।"
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "हालैका कार्यहरु"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "मेरो कार्यहरु"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "कुनै पनि उपलब्ध छैन ।"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "अज्ञात सामग्री"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"डाटाबेस स्थापनामा केही त्रुटी छ । सम्वद्ध टेबल बनाएको र प्रयोगकर्तालाई डाटाबेसमा अनुमति "
-"भएको छ छैन जाच्नुहोस ।"
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "पासवर्ड"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "पासवर्ड अथवा प्रयोगकर्ता नाम भुल्नुभयो ।"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "मिति/समय"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "प्रयोगकर्ता"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "कार्य:"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr "यो अब्जेक्टको पुर्व परिवर्तन छैन । यो यस "
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "सबै देखाउनुहोस"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "बचत गर्नुहोस"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "खोज्नुहोस"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s नतिजा"
-msgstr[1] "%(counter)s नतिजाहरु"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "जम्मा %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "नयाँ रुपमा बचत गर्नुहोस"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "बचत गरेर अर्को थप्नुहोस"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "बचत गरेर संशोधन जारी राख्नुहोस"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"सर्वप्रथम प्रयोगकर्ता नाम र पासवर्ड हाल्नुहोस । अनिपछि तपाइ प्रयोगकर्ताका विकल्पहरु "
-"संपादन गर्न सक्नुहुनेछ ।"
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "प्रयोगकर्ता नाम र पासवर्ड राख्नुहोस।"
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "प्रयोगकर्ता <strong>%(username)s</strong> को लागि नयाँ पासवर्ड राख्नुहोस ।"
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "पासवर्ड"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "पासवर्ड (पुन:)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "प्रमाणिकरणको लागि माथी कै पासवर्ड राख्नुहोस ।"
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "हटाउनुहोस"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "अर्को %(verbose_name)s थप्नुहोस ।"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "मेट्नुहुन्छ ?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "वेब साइटमा समय बिताउनु भएकोमा धन्यवाद ।"
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "पुन: लगिन गर्नुहोस"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "पासवर्ड फेरबदल"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "पासवर्ड सफलतापूर्वक फेरिएको छ ।"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "तपाइको पासवर्ड फेरिएको छ ।"
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"सुरक्षाको निम्ति आफ्नो पुरानो पासवर्ड राख्नुहोस र कृपया दोहर्याएर आफ्नो नयाँ पासवर्ड "
-"राख्नुहोस ताकी प्रमाणीकरण होस । "
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "पुरानो पासवर्ड"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "नयाँ पासवर्ड"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "मेरो पासवर्ड फेर्नुहोस "
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "पासवर्डपून: राख्नुहोस । "
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "पासवर्डपुन: राख्ने कार्य सम्पन्न भयो ।"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "तपाइको पासवर्ड राखियो । कृपया लगिन गर्नुहोस ।"
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "पासवर्ड पुनर्स्थापना पुष्टि"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "नयाँ पासवर्ड राख्नुहोस"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr "ठीक तरिकाले राखिएको पुष्टि गर्न कृपया नयाँ पासवर्ड दोहोर्याएर राख्नुहोस ।"
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "नयाँ पासवर्ड :"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "पासवर्ड पुष्टि:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "पासवर्ड पुन: राख्ने काम असफल भयो ।"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr "पासवर्ड पुनर्स्थापना प्रयोग भइसकेको छ । कृपया नयाँ पासवर्ड रिसेट माग्नुहोस ।"
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "सफलतापूर्वक पासवर्ड पुन: राखियो ।"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr "पासवर्ड मिलाउने तरिका ई-मेल गरेका छौँ । "
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"ई-मेल नपाइए मा कृपया ई-मेल ठेगाना सही राखेको नराखेको जाँच गर्नु होला र साथै आफ्नो ई-"
-"मेलको स्प्याम पनि जाँच गर्नु होला ।"
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-" %(site_name)s को लागि तपाइले पासवर्ड पुन: राख्न आग्रह गरेको हुनाले ई-मेल पाउनुहुदैंछ । "
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "कृपया उक्त पृष्ठमा जानुहोस र नयाँ पासवर्ड राख्नुहोस :"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "तपाइको प्रयोगकर्ता नाम, बिर्सनुभएको भए :"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "हाम्रो साइट प्रयोग गरेकोमा धन्यवाद"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s टोली"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"पासवर्ड बिर्सनु भयो ? तल ई-मेल दिनु होस र हामी नयाँ पासवर्ड हाल्ने प्रकृया पठाइ दिनेछौँ ।"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "ई-मेल ठेगाना :"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "मेरो पासवर्ड पुन: राख्नुहोस ।"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "सबै मिति"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(शुन्य)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s छान्नुहोस"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "%s परिवर्तन गर्न छान्नुहोस ।"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index ec7e796..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.po
deleted file mode 100644
index b31d9d4..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ne/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,178 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Paras Nath Chaudhary <opnchaudhary@gmail.com>, 2012
-# Sagar Chalise <chalisesagar@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/"
-"ne/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ne\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "उपलब्ध %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"यो उपलब्ध %s को सुची हो। तपाईंले यी मध्य केही बक्सबाट चयन गरी बक्स बीच्को \"छान्नुहोस "
-"\" तीरमा क्लिक गरी छान्नसक्नुहुन्छ । "
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr " उपलब्ध %s को सुचिबाट छान्न यो बक्समा टाइप गर्नुहोस "
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "छान्नुहोस"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "सबै छान्नुहोस "
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "एकै क्लिकमा सबै %s छान्नुहोस "
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "छान्नुहोस "
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "हटाउनुहोस"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "छानिएको %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"यो छानिएका %s को सुची हो । तपाईंले यी मध्य केही बक्सबाट चयन गरी बक्स बीच्को "
-"\"हटाउनुहोस\" तीरमा क्लिक गरी हटाउन सक्नुहुन्छ । "
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "सबै हटाउनुहोस "
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "एकै क्लिकमा सबै छानिएका %s हटाउनुहोस ।"
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(cnt)s को %(sel)s चयन गरियो"
-msgstr[1] "%(cnt)s को %(sel)s चयन गरियो"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr "तपाइको फेरबदल बचत भएको छैन । कार्य भएमा बचत नभएका फेरबदल हराउने छन् ।"
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"तपाइले कार्य छाने पनि फेरबदलहरु बचत गर्नु भएको छैन । कृपया बचत गर्न हुन्छ थिच्नुहोस । कार्य "
-"पुन: सञ्चालन गर्नुपर्नेछ ।"
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"तपाइले कार्य छाने पनि फाँटहरुमा फेरबदलहरु गर्नु भएको छैन । बचत गर्नु भन्दा पनि अघि बढ्नुहोस "
-"।"
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "जनवरी फेब्रुअरी मार्च अप्रिल मई जुन जुलै अगस्त सेप्टेम्बर अक्टुवर नभम्वर डिसम्वर"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "आइत सोम मंगल बुध बिही शुक्र शनि"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "देखाउनुहोस "
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "लुकाउनुहोस "
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "यतिखेर"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "घडी"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "समय चयन गर्नुहोस"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "मध्यरात"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "बिहान ६ बजे"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "मध्यान्ह"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "रद्द गर्नुहोस "
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "आज"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "पात्रो "
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "हिजो"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "भोलि"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/nl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/nl/LC_MESSAGES/django.mo
deleted file mode 100644
index 4a9756e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/nl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/nl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/nl/LC_MESSAGES/django.po
deleted file mode 100644
index 2ede935..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/nl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,890 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Bas Peschier <bas.peschier@gmail.com>, 2013
-# Harro van der Klauw <hvdklauw@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Jeffrey Gelens <jeffrey@noppo.pro>, 2011-2012
-# Tino de Bruijn <tinodb@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-10-23 17:46+0000\n"
-"Last-Translator: Bas Peschier <bas.peschier@gmail.com>\n"
-"Language-Team: Dutch (http://www.transifex.com/projects/p/django/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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s succesvol verwijderd."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "%(name)s kan niet worden verwijderd "
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Weet u het zeker?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Verwijder geselecteerde %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Alle"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Ja"
-
-#: filters.py:239
-msgid "No"
-msgstr "Nee"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Onbekend"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Elke datum"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Vandaag"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Afgelopen zeven dagen"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Deze maand"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Dit jaar"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Voer de correcte %(username)s en wachtwoord voor een stafaccount in. Let op "
-"dat beide velden hoofdlettergevoelig zijn."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Uw sessie is verlopen, meld u opnieuw aan."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Actie:"
-
-#: models.py:25
-msgid "action time"
-msgstr "actietijd"
-
-#: models.py:28
-msgid "object id"
-msgstr "object-id"
-
-#: models.py:29
-msgid "object repr"
-msgstr "object-repr"
-
-#: models.py:30
-msgid "action flag"
-msgstr "actievlag"
-
-#: models.py:31
-msgid "change message"
-msgstr "wijzig bericht"
-
-#: models.py:36
-msgid "log entry"
-msgstr "logregistratie"
-
-#: models.py:37
-msgid "log entries"
-msgstr "logregistraties"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Toegevoegd \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Gewijzigd \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Verwijderd \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "LogEntry Object"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Geen"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s gewijzigd."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "en"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" toegevoegd."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(list)s aangepast voor %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" verwijderd."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Geen velden gewijzigd."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "De %(name)s \"%(obj)s\" was toegevoegd. U kunt het hieronder wijzigen."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"De %(name)s \"%(obj)s\" was succesvol gewijzigd. Je kan hieronder een andere "
-"%(name)s toevoegen."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "De %(name)s \"%(obj)s\" is toegevoegd."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"De %(name)s \"%(obj)s\" was succesvol gewijzigd. Je kunt het hieronder "
-"wijzigen."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"De %(name)s \"%(obj)s\" was succesvol gewijzigd. Je kan hieronder een andere "
-"%(name)s toevoegen."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Het wijzigen van %(name)s \"%(obj)s\" is geslaagd."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Er moeten items worden geselecteerd om acties op uit te voeren. Geen items "
-"zijn veranderd."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Geen actie geselecteerd."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Toevoegen %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s object met primaire sleutel %(key)r bestaat niet."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Wijzig %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Databasefout"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s is succesvol gewijzigd."
-msgstr[1] "%(count)s %(name)s zijn succesvol gewijzigd."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s geselecteerd"
-msgstr[1] "Alle %(total_count)s geselecteerd"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 van de %(cnt)s geselecteerd"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Gebruiker %(name)s \"%(obj)s\" is verwijderd."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Wijzigingsgeschiedenis: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Het verwijderen van %(class_name)s %(instance)s vereist het verwijderen van "
-"de volgende beschermde gerelateerde objecten: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Inloggen"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Sitebeheer"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s beheer"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Datum:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Tijd:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Opzoeken"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Voeg nog één toe"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Huidig:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Wijzig:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Pagina niet gevonden"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Onze excuses, maar de gevraagde pagina bestaat niet."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Voorpagina"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Serverfout"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Serverfout (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Serverfout <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Er heeft zich een fout voorgedaan. De fout is via email gemeld aan de "
-"website administrators en zou snel verholpen moeten zijn. Bedankt voor uw "
-"geduld."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Voer de geselecteerde actie uit"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Voer Uit"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Klik hier om alle objecten op alle pagina's te selecteren"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Selecteer alle %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Leeg selectie"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Welkom,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Documentatie"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Wachtwoord wijzigen"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Afmelden"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django sitebeheer"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Djangobeheer"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Toevoegen"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Geschiedenis"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Toon op site"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Herstel de fouten hieronder."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Herstel de fouten hieronder."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s toevoegen"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filter"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Verwijder uit de sortering"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Sorteer prioriteit: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Sortering aan/uit"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Verwijderen"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Het verwijderen van %(object_name)s '%(escaped_object)s' zal ook "
-"gerelateerde objecten verwijderen. Echter u heeft geen rechten om de "
-"volgende typen objecten te verwijderen:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Het verwijderen van %(object_name)s '%(escaped_object)s' vereist het "
-"verwijderen van de volgende gerelateerde objecten:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Weet u zeker dat u %(object_name)s \"%(escaped_object)s\" wilt verwijderen? "
-"Alle volgende objecten worden verwijderd:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Ja, ik weet het zeker"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Verwijder meerdere objecten"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Het verwijderen van de geselecteerde %(objects_name)s vereist het "
-"verwijderen van gerelateerde objecten, maar uw account heeft geen "
-"toestemming om de volgende soorten objecten te verwijderen:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Het verwijderen van de geselecteerde %(objects_name)s vereist het "
-"verwijderen van de volgende beschermde gerelateerde objecten:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Weet u zeker dat u de geselecteerde %(objects_name)s wilt verwijderen? Alle "
-"volgende objecten en hun aanverwante items zullen worden verwijderd:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Op %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modellen in de %(name)s applicatie"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Wijzigen"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "U heeft geen rechten om iets te wijzigen."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Recente acties"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Mijn acties"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Geen beschikbaar"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Onbekende inhoud"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Er is iets mis met de database. Verzeker u ervan dat de benodigde tabellen "
-"zijn aangemaakt en dat de database toegankelijk is voor de juiste gebruiker."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Wachtwoord:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Wachtwoord of gebruikersnaam vergeten?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Datum/tijd"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Gebruiker"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Actie"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Dit object heeft geen wijzigingsgeschiedenis. Het is mogelijk niet via de "
-"beheersite toegevoegd."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Alles tonen"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Opslaan"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Zoek"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s resultaat"
-msgstr[1] "%(counter)s resultaten"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s totaal"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Opslaan als nieuw item"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Opslaan en nieuwe toevoegen"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Opslaan en opnieuw bewerken"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Vul allereerst een gebruikersnaam en wachtwoord in. Vervolgens kunt u de "
-"andere opties instellen."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Voer een gebruikersnaam en wachtwoord in."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Geef een nieuw wachtwoord voor gebruiker <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Wachtwoord"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Wachtwoord (nogmaals)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Vul hetzelfde wachtwoord als hierboven in, ter bevestiging."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Verwijderen"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Voeg nog een %(verbose_name)s toe"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Verwijderen?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Bedankt voor de aanwezigheid op de site vandaag."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Log opnieuw in"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Wachtwoordwijziging"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Wachtwoord wijzigen is geslaagd"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Uw wachtwoord is gewijzigd."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Vanwege de beveiliging moet u uw oude en twee keer uw nieuwe wachtwoord "
-"invoeren, zodat we kunnen controleren of er geen typefouten zijn gemaakt."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Oud wachtwoord"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nieuw wachtwoord"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Wijzig mijn wachtwoord"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Wachtwoord hersteld"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Wachtwoord herstellen voltooid"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Uw wachtwoord is ingesteld. U kunt nu verder gaan en inloggen."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Bevestiging wachtwoord herstellen"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Voer nieuw wachtwoord in"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Voer het nieuwe wachtwoord twee keer in, zodat we kunnen controleren of er "
-"geen typefouten zijn gemaakt."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nieuw wachtwoord:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Bevestig wachtwoord:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Wachtwoord herstel mislukt"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"De link voor het herstellen van het wachtwoord is ongeldig, waarschijnlijk "
-"omdat de link al eens is gebruikt. Vraag opnieuw een wachtwoord aan."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Wachtwoord herstel geslaagd"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"We hebben u instructies voor het instellen van uw wachtwoord gemaild. U zou "
-"deze binnenkort moeten ontvangen."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Als u geen e-mail ontvangt, controleer dan of u het e-mailadres hebt "
-"opgegeven waar u zich mee geregistreerd heeft en controleer uw spam-map."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"U ontvangt deze email omdat u heeft verzocht het wachtwoord te resetten voor "
-"uw account op %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Gaat u naar de volgende pagina en kies een nieuw wachtwoord:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Uw gebruikersnaam, mocht u deze vergeten zijn:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Bedankt voor het gebruik van onze site!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Het %(site_name)s team"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Wachtwoord vergeten? Vul uw emailadres hieronder in, en we zullen "
-"instructies voor het opnieuw instellen van uw wachtwoord mailen."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Emailadres:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Herstel mijn wachtwoord"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Alle data"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Geen)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Selecteer %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Selecteer %s om te wijzigen"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index f4458a4..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.po
deleted file mode 100644
index b3add7c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/nl/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,189 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Bouke Haarsma <bouke@webatoom.nl>, 2013
-# Harro van der Klauw <hvdklauw@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Jeffrey Gelens <jeffrey@noppo.pro>, 2011-2012
-# wunki <petar@wunki.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-30 08:16+0000\n"
-"Last-Translator: Bouke Haarsma <bouke@webatoom.nl>\n"
-"Language-Team: Dutch (http://www.transifex.com/projects/p/django/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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Beschikbare %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Dit is de lijst met beschikbare %s. U kunt kiezen uit een aantal door ze te "
-"selecteren in het vak hieronder en vervolgens op de \"Kiezen\" pijl tussen "
-"de twee lijsten te klikken."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Type in dit vak om te filteren in de lijst met beschikbare %s."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filter"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Kies alle"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Klik om alle %s te kiezen."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Kiezen"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Verwijderen"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Gekozen %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Dit is de lijst van de gekozen %s. Je kunt ze verwijderen door ze te "
-"selecteren in het vak hieronder en vervolgens op de \"Verwijderen\" pijl "
-"tussen de twee lijsten te klikken."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Verwijder alles"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Klik om alle gekozen %s tegelijk te verwijderen."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s van de %(cnt)s geselecteerd"
-msgstr[1] "%(sel)s van de %(cnt)s geselecteerd"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"U heeft niet opgeslagen wijzigingen op enkele indviduele velden. Als u nu "
-"een actie uitvoert zullen uw wijzigingen verloren gaan."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"U heeft een actie geselecteerd, maar heeft de wijzigingen op de individuele "
-"velden nog niet opgeslagen. Klik alstublieft op OK om op te slaan. U zult "
-"vervolgens de actie opnieuw moeten uitvoeren."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"U heeft een actie geselecteerd en heeft geen wijzigingen gemaakt op de "
-"individuele velden. U zoekt waarschijnlijk naar de Gaan knop in plaats van "
-"de Opslaan knop."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"januari februari maart april mei juni juli augustus september oktober "
-"november december"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "Z M D W D V Z"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Tonen"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Verbergen"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Nu"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Klok"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Kies een tijd"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Middernacht"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "Zes uur 's ochtends"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Twaalf uur 's middags"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Annuleren"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Vandaag"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalender"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Gisteren"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Morgen"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/nn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/nn/LC_MESSAGES/django.mo
deleted file mode 100644
index a1af647..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/nn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/nn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/nn/LC_MESSAGES/django.po
deleted file mode 100644
index f38c581..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/nn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,868 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# hgrimelid <havard@grimelid.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jensadne <jensadne@pvv.ntnu.no>, 2013
-# Sigurd Gartmann <sigurdga-transifex@sigurdga.no>, 2012
-# velmont <odin.omdal@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-06 12:01+0000\n"
-"Last-Translator: jensadne <jensadne@pvv.ntnu.no>\n"
-"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/"
-"language/nn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Sletta %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Kan ikkje slette %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Er du sikker?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Slett valgte %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Alle"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Ja"
-
-#: filters.py:239
-msgid "No"
-msgstr "Nei"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Ukjend"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Når som helst"
-
-#: filters.py:309
-msgid "Today"
-msgstr "I dag"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Siste sju dagar"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Denne månaden"
-
-#: filters.py:321
-msgid "This year"
-msgstr "I år"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Økta har tidsavbrot, logg inn att."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Handling:"
-
-#: models.py:25
-msgid "action time"
-msgstr "tid for handling"
-
-#: models.py:28
-msgid "object id"
-msgstr "objekt-ID"
-
-#: models.py:29
-msgid "object repr"
-msgstr "objekt repr"
-
-#: models.py:30
-msgid "action flag"
-msgstr "handlingsflagg"
-
-#: models.py:31
-msgid "change message"
-msgstr "endre melding"
-
-#: models.py:36
-msgid "log entry"
-msgstr "logginnlegg"
-
-#: models.py:37
-msgid "log entries"
-msgstr "logginnlegg"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "La til «%(object)s»."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Endra «%(object)s» - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Sletta «%(object)s»."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "LogEntry-objekt"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Ingen"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Endra %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "og"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Oppretta %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Endra %(list)s for %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Sletta %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Ingen felt endra."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" vart endra Du kan redigere vidare nedanfor."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" vart oppretta."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" vart endra."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Objekt må vere valde for at dei skal kunne utførast handlingar på. Ingen "
-"object er endra."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Inga valt handling."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Opprett %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s-objekt med primærnøkkelen %(key)r eksisterer ikkje."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Rediger %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Databasefeil"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s vart endra."
-msgstr[1] "%(count)s %(name)s vart endra."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s valde"
-msgstr[1] "Alle %(total_count)s valde"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "Ingen av %(cnt)s valde"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" vart sletta."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Endringshistorikk: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Sletting av %(class_name)s «%(instance)s» krev sletting av følgande beskytta "
-"relaterte objekt: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Logg inn"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Nettstadsadministrasjon"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s-administrasjon"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Dato:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Tid:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Oppslag"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Legg til ny"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Fann ikkje sida"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Sida du spør etter finst ikkje."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Heim"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Tenarfeil"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Tenarfeil (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Tenarfeil <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Utfør den valde handlinga"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Gå"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Klikk her for å velje objekt på tvers av alle sider"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Velg alle %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Nullstill utval"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Velkommen,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentasjon"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Endre passord"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Logg ut"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django administrasjonsside"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django-administrasjon"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Opprett"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Historikk"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Vis på nettstad"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Korriger feila under."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Opprett %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtrering"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Fjern frå sortering"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Sorteringspriorite: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Slår av eller på sortering"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Slett"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Dersom du slettar %(object_name)s '%(escaped_object)s', vil også slette "
-"relaterte objekt, men du har ikkje løyve til å slette følgande objekttypar:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Sletting av %(object_name)s '%(escaped_object)s' krevar sletting av "
-"følgjande beskytta relaterte objekt:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Er du sikker på at du vil slette %(object_name)s \"%(escaped_object)s\"? "
-"Alle dei følgjande relaterte objekta vil bli sletta:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Ja, eg er sikker"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Slett fleire objekt"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Sletting av %(objects_name)s vil føre til at relaterte objekt blir sletta, "
-"men kontoen din manglar løyve til å slette følgjande objekttypar:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Sletting av %(objects_name)s krevar sletting av følgjande beskytta relaterte "
-"objekt:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Er du sikker på at du vil slette dei valgte objekta %(objects_name)s? "
-"Følgjande objekt og deira relaterte objekt vil bli sletta:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Etter %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Endre"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Du har ikkje løyve til å redigere noko."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Siste handlingar"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Mine handlingar"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Ingen tilgjengelege"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Ukjent innhald"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Noko er gale med databaseinstallasjonen din. Syt for at databasetabellane er "
-"oppretta og at brukaren har dei naudsynte løyve."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Passord:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Gløymd brukarnamn eller passord?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Dato/tid"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Brukar"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Handling"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Dette objektet har ingen endringshistorikk. Det var sannsynlegvis ikkje "
-"oppretta med administrasjonssida."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Vis alle"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Lagre"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Søk"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s resultat"
-msgstr[1] "%(counter)s resultat"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s totalt"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Lagre som ny"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Lagre og opprett ny"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Lagre og hald fram å redigere"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Skriv først inn brukernamn og passord. Deretter vil du få høve til å endre "
-"fleire brukarinnstillingar."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Skriv inn nytt brukarnamn og passord."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Skriv inn eit nytt passord for brukaren <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Passord"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Passord (gjenta)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Skriv inn det samme passordet som over, for verifisering."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Fjern"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Legg til ny %(verbose_name)s."
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Slette?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Takk for at du brukte kvalitetstid på nettstaden i dag."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Logg inn att"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Endre passord"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Passord endra"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Passordet ditt vart endret."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Av sikkerheitsgrunnar må du oppgje det gamle passordet ditt. Oppgje så det "
-"nye passordet ditt to gonger, slik at vi kan kontrollere at det er korrekt."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Gammalt passord"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nytt passord"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Endre passord"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Nullstill passord"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Passord nullstilt"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Passordet ditt er sett. Du kan logge inn."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Stadfesting på nullstilt passord"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Oppgje nytt passord"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Oppgje det nye passordet ditt to gonger, for å sikre at du oppgjev det "
-"korrekt."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nytt passord:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Gjenta nytt passord:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Passordet vart ikkje nullstilt"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Nullstillingslinken er ugyldig, kanskje fordi den allereie har vore brukt. "
-"Nullstill passordet ditt på nytt."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Passordet vart nullstilt"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Gå til følgjande side og velg eit nytt passord:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Brukarnamnet ditt, i tilfelle du har gløymt det:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Takk for at du brukar sida vår!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Helsing %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Nullstill passordet"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Alle datoar"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Ingen)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Velg %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Velg %s du ønskar å redigere"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index b14c44b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.po
deleted file mode 100644
index c9ee6be..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/nn/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,183 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# hgrimelid <havard@grimelid.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# velmont <odin.omdal@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/"
-"language/nn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Tilgjengelege %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Dette er lista over tilgjengelege %s. Du kan velja nokon ved å markera dei i "
-"boksen under og so klikka på «Velg»-pila mellom dei to boksane."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Skriv i dette feltet for å filtrera ned lista av tilgjengelege %s."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filter"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Velg alle"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Klikk for å velja alle %s samtidig."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Vel"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Slett"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Valde %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Dette er lista over valte %s. Du kan fjerna nokon ved å markera dei i boksen "
-"under og so klikka på «Fjern»-pila mellom dei to boksane."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Fjern alle"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Klikk for å fjerna alle valte %s samtidig."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s av %(cnt)s vald"
-msgstr[1] "%(sel)s av %(cnt)s valde"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Det er endringar som ikkje er lagra i individuelt redigerbare felt. "
-"Endringar som ikkje er lagra vil gå tapt."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Du har vald ei handling, men du har framleis ikkje lagra endringar for "
-"individuelle felt. Klikk OK for å lagre. Du må gjere handlinga på nytt."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Du har vald ei handling og du har ikkje gjort endringar i individuelle felt. "
-"Du ser sannsynlegvis etter Gå vidare-knappen - ikkje Lagre-knappen."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Januar Februar Mars April Mai Juni Juli August September Oktober November "
-"Desember"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "S M T O T F L"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Vis"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Skjul"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "No"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Klokke"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Velg eit klokkeslett"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Midnatt"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "06:00"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "12:00"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Avbryt"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "I dag"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalender"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "I går"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "I morgon"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/os/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/os/LC_MESSAGES/django.mo
deleted file mode 100644
index fd803ca..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/os/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/os/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/os/LC_MESSAGES/django.po
deleted file mode 100644
index b39d0ea..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/os/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,875 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Ossetic (http://www.transifex.com/projects/p/django/language/"
-"os/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: os\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s хафт ӕрцыдысты."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Нӕ уайы схафын %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Ӕцӕг дӕ фӕнды?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Схафын ӕвзӕрст %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Иууылдӕр"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "О"
-
-#: filters.py:239
-msgid "No"
-msgstr "Нӕ"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Ӕнӕбӕрӕг"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Цыфӕнды бон"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Абон"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Фӕстаг 7 бон"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Ацы мӕй"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Ацы аз"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Дӕ хорзӕхӕй, раст кусӕджы аккаунты %(username)s ӕмӕ пароль бафысс. Дӕ сӕры "
-"дар уый, ӕмӕ дыууӕ дӕр гӕнӕн ис стыр ӕмӕ гыццыл дамгъӕ ӕвзарой."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Дӕ хорзӕхӕй, ногӕй бахиз, уымӕн ӕмӕ дӕ сессийы рӕстӕг фӕцис."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Ми:"
-
-#: models.py:25
-msgid "action time"
-msgstr "мийы рӕстӕг"
-
-#: models.py:28
-msgid "object id"
-msgstr "объекты бӕрӕггӕнӕн"
-
-#: models.py:29
-msgid "object repr"
-msgstr "объекты хуыз"
-
-#: models.py:30
-msgid "action flag"
-msgstr "мийы флаг"
-
-#: models.py:31
-msgid "change message"
-msgstr "фыстӕг фӕивын"
-
-#: models.py:36
-msgid "log entry"
-msgstr "логы иуӕг"
-
-#: models.py:37
-msgid "log entries"
-msgstr "логы иуӕгтӕ"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Ӕфтыд ӕрцыд \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Ивд ӕрцыд \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Хафт ӕрцыд \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "ЛогыИуӕг Объект"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Никӕцы"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Ивд %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "ӕмӕ"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Бафтыдта %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Changed %(name)s \"%(object)s\"-ы %(list)s."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Схафта %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Ивд бынат нӕй."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" ӕфтыд ӕрцыд. Дӕ бон у бындӕр та йӕ ивай."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" ӕфтыд ӕрцыд. Дӕ бон у ӕндӕр %(name)s бындӕр бафтауын."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" ӕфтыд ӕрцыд."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr "%(name)s \"%(obj)s\" ивд ӕрцыд. Дӕ бон у бындӕ ӕй ногӕй ивай."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" ивд ӕрцыд. Дӕ бон у ӕндӕр %(name)s бындӕр бафтауын."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" ивд ӕрцыд."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Иуӕгтӕ хъуамӕ ӕвзӕрст уой, цӕмӕй цын исты ми бакӕнай. Ницы иуӕг ӕрцыд ивд."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Ницы ми у ӕвзӕрст."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Бафтауын %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(key)r фыццаг амонӕнимӕ %(name)s-ы объект нӕй."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Фӕивын %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Бӕрӕгдоны рӕдыд"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s ивд ӕрцыд."
-msgstr[1] "%(count)s %(name)s ивд ӕрцыдысты."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s у ӕвзӕрст"
-msgstr[1] "%(total_count)s дӕр иууылдӕр сты ӕвзӕрст"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "%(cnt)s-ӕй 0 у ӕвзӕрст"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" хафт ӕрцыд."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Ивынты истори: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' хафын домы ацы хъахъхъӕд баст объекттӕ "
-"хафын дӕр:"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Бахизын"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Сайты администраци"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s-ы администраци"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Бон:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Рӕстӕг:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Акӕсын"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Бафтауын ӕндӕр"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Нырыккон:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Ивд:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Фарс нӕ зыны"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Хатыр, фӕлӕ домд фарс нӕ зыны."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Хӕдзар"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Серверы рӕдыд"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Серверы рӕдыд (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Серверы Рӕдыд <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Рӕдыд разынд. Уый тыххӕй сайты администратормӕ электрон фыстӕг ӕрвыст ӕрцыд "
-"ӕмӕ йӕ тагъд сраст кӕндзысты. Бузныг кӕй лӕууыс."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Бакӕнын ӕвзӕрст ми"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Бацӕуын"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Ам ныххӕц цӕмӕй алы фарсы объекттӕ равзарын"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Равзарын %(total_count)s %(module_name)s иууылдӕр"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Ӕвзӕрст асыгъдӕг кӕнын"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Ӕгас цу,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Документаци"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Пароль фӕивын"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Рахизын"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django сайты админ"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django администраци"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Бафтауын"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Истори"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Сайты фенын"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Дӕ хорзӕхӕй, бындӕр цы рӕдыдтытӕ ис, уыдон сраст кӕн."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Бафтауын %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Фӕрсудзӕн"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Радӕй айсын"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Рады приоритет: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Рад аивын"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Схафын"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' хафыны тыххӕй баст объекттӕ дӕр хафт "
-"ӕрцӕудзысты, фӕлӕ дӕ аккаунтӕн нӕй бар ацы объекты хуызтӕ хафын:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' хафын домы ацы хъахъхъӕд баст объекттӕ "
-"хафын дӕр:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Ӕцӕг дӕ фӕнды %(object_name)s \"%(escaped_object)s\" схафын? Ацы баст иуӕгтӕ "
-"иууылдӕр хафт ӕрцӕудзысты:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "О, ӕцӕг мӕ фӕнды"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Цалдӕр объекты схафын"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Ӕвзӕрст %(objects_name)s хафыны тыххӕй йемӕ баст объекттӕ дӕр схафт "
-"уыдзысты, фӕлӕ дӕ аккаунтӕн нӕй бар ацы объекты хуызтӕ хафын:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Ӕвзӕрст %(objects_name)s хафын домы ацы хъахъхъӕд баст объекттӕ хафын дӕр:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Ӕцӕг дӕ фӕнды ӕвзӕрст %(objects_name)s схафын? ацы объекттӕ иууылдӕр, ӕмӕ "
-"семӕ баст иуӕгтӕ хафт ӕрцӕудзысты:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "%(filter_title)s-мӕ гӕсгӕ"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Моделтӕ %(name)s ӕфтуаны"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Фӕивын"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Нӕй дын бар исты ивын."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Фӕстаг митӕ"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Фылдӕр митӕ"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Ницы ис"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Ӕнӕбӕрӕг мидис"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Дӕ бӕрӕгдоны цыдӕр раст ӕвӕрд нӕу. Сбӕрӕг кӕн, хъӕугӕ бӕрӕгдоны таблицӕтӕ "
-"конд кӕй сты ӕмӕ амынд архайӕгӕн бӕрӕгдон фӕрсыны бар кӕй ис, уый."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Пароль:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Дӕ пароль кӕнӕ дӕ фӕсномыг ферох кодтай?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Бон/рӕстӕг"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Архайӕг"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Ми"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr "Ацы объектӕн ивдтыты истори нӕй. Уӕццӕгӕн ацы админӕй ӕфтыд нӕ уыд."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Иууылдӕр равдисын"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Нывӕрын"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Агурын"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s фӕстиуӕг"
-msgstr[1] "%(counter)s фӕстиуӕджы"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s иумӕ"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Нывӕрын куыд ног"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Нывӕрын ӕмӕ ног бафтауын"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Нывӕрын ӕмӕ дарддӕр ивын"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Фыццаг бафысс фӕсномыг ӕмӕ пароль. Стӕй дӕ бон уыдзӕн фылдӕр архайӕджы "
-"фадӕттӕ ивын."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Бафысс фӕсномыг ӕмӕ пароль."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Бафысс ног пароль архайӕг <strong>%(username)s</strong>-ӕн."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Пароль"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Пароль (ногӕй)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Уӕлдӕр цы пароль бафыстай, уый бафысс, цӕмӕй бӕлвырд уа."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Схафын"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Бафтауын ӕндӕр %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Хъӕуы схафын?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Бузныг дӕ рӕстӕг абон ацы веб сайтимӕ кӕй арвыстай."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Ногӕй бахизын"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Пароль ивын"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Пароль ивд ӕрцыд"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Дӕ пароль ивд ӕрцыд."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Дӕ хорзӕхӕй, ӕдасдзинады тыххӕй, бафысс дӕ зӕронд пароль ӕмӕ стӕй та дыууӕ "
-"хатт дӕ нӕуӕг пароль, цӕмӕй мах сбӕлвырд кӕнӕм раст ӕй кӕй ныффыстай, уый."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Зӕронд пароль"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Ног пароль"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Мӕ пароль фӕивын"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Пароль рацаразын"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Паролы ног арӕзт ӕххӕст у"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Дӕ пароль ӕвӕрд ӕрцыд. Дӕ бон у дарддӕр ацӕуын ӕмӕ бахизын."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Пароль ӕвӕрыны бӕлвырдгӕнӕн"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Бафысс ног пароль"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Дӕ хорзӕхӕй, дӕ ног пароль дыууӕ хатт бафысс, цӕмӕй мах сбӕрӕг кӕнӕм раст ӕй "
-"кӕй ныффыстай, уый."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Ног пароль:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Бӕлвырд пароль:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Пароль ӕвӕрд нӕ ӕрцыд"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Парол ӕвӕрыны ӕрвитӕн раст нӕ уыд. Уӕццӕгӕн уый тыххӕй, ӕмӕ нырид пайдагонд "
-"ӕрцыд. Дӕ хорзӕхӕй, ӕрдом ног пароль ӕвӕрын."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Пароль ӕвӕрд ӕрцыд"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Мах ды цы электрон адрис бацамыдтай, уырдӕм арвыстам дӕ пароль сӕвӕрыны "
-"тыххӕй амынд. Тагъд ӕй хъуамӕ айсай."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Кӕд ницы фыстӕг райстай, уӕд, дӕ хорзӕхӕй, сбӕрӕг кӕн цы электрон постимӕ "
-"срегистраци кодтай, уый бацамыдтай, ӕви нӕ, ӕмӕ абӕрӕг кӕн дӕ спамтӕ."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Ды райстай ацы фыстӕг, уымӕн ӕмӕ %(site_name)s-ы дӕ архайӕджы аккаунтӕн "
-"пароль сӕвӕрын ӕрдомдтай."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Дӕ хорзӕхӕй, ацу ацы фарсмӕ ӕмӕ равзар дӕ ног пароль:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Дӕ фӕсномыг, кӕд дӕ ферох ис:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Бузныг нӕ сайтӕй нын кӕй пайда кӕныс!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s-ы бал"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Ферох дӕ ис дӕ пароль? Дӕ пароль бындӕр бафысс, ӕмӕ дӕм мах email-ӕй ног "
-"пароль сывӕрыны амынд арвитдзыстӕм."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Email адрис:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Мӕ пароль ногӕй сӕвӕрын"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Бонтӕ иууылдӕр"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Никӕцы)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Равзарын %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Равзарын %s ивынӕн"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/os/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/os/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 07262ac..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/os/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/os/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/os/LC_MESSAGES/djangojs.po
deleted file mode 100644
index adb83bc..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/os/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,182 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Ossetic (http://www.transifex.com/projects/p/django/language/"
-"os/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: os\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Уӕвӕг %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Уӕвӕг %s-ты номхыгъд. Дӕ бон у искӕцытӕ дзы рауӕлдай кӕнай, куы сӕ равзарай "
-"бындӕр къӕртты ӕмӕ дыууӕ къӕртты ӕхсӕн \"Равзарын\"-ы ӕгънӕгыл куы ныххӕцай, "
-"уӕд."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Бафысс ацы къӕртты, уӕвӕг %s-ты номхыгъд фӕрсудзынӕн."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Фӕрсудзӕн"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Равзарын алкӕцыдӕр"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Ныххӕц, алы %s равзарынӕн."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Равзарын"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Схафын"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Ӕвзӕрст %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Ай у ӕвзӕрст %s-ты номхыгъд. Сӕ хафынӕн сӕ дӕ бон у бындӕр къӕртты равзарын "
-"ӕмӕ дыууӕ ӕгънӕджы ӕхсӕн \"Схфын\"-ыл ныххӕцын."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Схафын алкӕцыдӕр"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Ныххӕц, алы ӕвзӕрст %s схафынӕн."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(cnt)s-ӕй %(sel)s ӕвзӕрст"
-msgstr[1] "%(cnt)s-ӕй %(sel)s ӕвзӕрст"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Ӕнӕвӕрд ивдтытӕ баззадысты ивыны бынӕтты. Кӕд исты ми саразай, уӕд дӕ "
-"ӕнӕвӕрд ивдтытӕ фесӕфдзысты."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Ды равзӕрстай цыдӕр ми, фӕлӕ ивӕн бынӕтты цы фӕивтай, уыдон нӕ бавӕрдтай. Дӕ "
-"хорзӕхӕй, ныххӕц Хорзыл цӕмӕй бавӕрд уой. Стӕй дын хъӕудзӕн ацы ми ногӕй "
-"бакӕнын."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Ды равзӕртай цыдӕр ми, фӕлӕ ивӕн бынӕтты ницы баивтай. Уӕццӕгӕн дӕ Ацӕуыны "
-"ӕгънӕг хъӕуы, Бавӕрыны нӕ фӕлӕ."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Январь Февраль Мартъи Апрель Июнь Июль Август Сентябрь Октябрь Ноябрь Декабрь"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "Х К Д Ӕ Ц М С"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Равдисын"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Айсын"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Ныр"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Сахат"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Рӕстӕг равзарын"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Ӕмбисӕхсӕв"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 ӕ.р."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Ӕмбисбон"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Раздӕхын"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Абон"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Къӕлиндар"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Знон"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Сом"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/django.mo
deleted file mode 100644
index 8138d75..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/django.po
deleted file mode 100644
index a81a1bd..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,841 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/"
-"language/pa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pa\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s ਠੀਕ ਤਰ੍ਹਾਂ ਹਟਾਈਆਂ ਗਈਆਂ।"
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr ""
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "ਕੀ ਤੁਸੀਂ ਇਹ ਚਾਹੁੰਦੇ ਹੋ?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "ਚੁਣੇ %(verbose_name_plural)s ਹਟਾਓ"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "ਸਭ"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "ਹਾਂ"
-
-#: filters.py:239
-msgid "No"
-msgstr "ਨਹੀਂ"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "ਅਣਜਾਣ"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "ਕੋਈ ਵੀ ਮਿਤੀ"
-
-#: filters.py:309
-msgid "Today"
-msgstr "ਅੱਜ"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "ਪਿਛਲੇ ੭ ਦਿਨ"
-
-#: filters.py:317
-msgid "This month"
-msgstr "ਇਹ ਮਹੀਨੇ"
-
-#: filters.py:321
-msgid "This year"
-msgstr "ਇਹ ਸਾਲ"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "ਫੇਰ ਲਾਗਇਨ ਕਰੋ ਜੀ, ਕਿਉਂਕਿ ਤੁਹਾਡੇ ਸ਼ੈਸ਼ਨ ਦੀ ਮਿਆਦ ਪੁੱਗ ਗਈ ਸੀ।"
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "ਕਾਰਵਾਈ:"
-
-#: models.py:25
-msgid "action time"
-msgstr "ਕਾਰਵਾਈ ਸਮਾਂ"
-
-#: models.py:28
-msgid "object id"
-msgstr "ਆਬਜੈਕਟ id"
-
-#: models.py:29
-msgid "object repr"
-msgstr "ਆਬਜੈਕਟ repr"
-
-#: models.py:30
-msgid "action flag"
-msgstr "ਕਾਰਵਾਈ ਫਲੈਗ"
-
-#: models.py:31
-msgid "change message"
-msgstr "ਸੁਨੇਹਾ ਬਦਲੋ"
-
-#: models.py:36
-msgid "log entry"
-msgstr "ਲਾਗ ਐਂਟਰੀ"
-
-#: models.py:37
-msgid "log entries"
-msgstr "ਲਾਗ ਐਂਟਰੀਆਂ"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "ਕੋਈ ਨਹੀਂ"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s ਬਦਲਿਆ।"
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "ਅਤੇ"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" ਸ਼ਾਮਲ ਕੀਤਾ।"
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" ਲਈ %(list)s ਨੂੰ ਬਦਲਿਆ"
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" ਹਟਾਇਆ ਗਿਆ।"
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "ਕੋਈ ਖੇਤਰ ਨਹੀਂ ਬਦਲਿਆ।"
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" ਠੀਕ ਤਰ੍ਹਾਂ ਜੋੜਿਆ ਗਿਆ ਸੀ। ਤੁਸੀਂ ਇਸ ਨੂੰ ਹੇਠਾਂ ਸੋਧ ਸਕਦੇ ਹੋ।"
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" ਠੀਕ ਤਰ੍ਹਾਂ ਹਟਾਇਆ ਗਿਆ ਹੈ।"
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" ਨੂੰ ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲਿਆ ਗਿਆ ਸੀ।"
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "ਕੋਈ ਕਾਰਵਾਈ ਨਹੀਂ ਚੁਣੀ ਗਈ।"
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%s ਸ਼ਾਮਲ"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr ""
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s ਬਦਲੋ"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "ਡਾਟਾਬੇਸ ਗਲਤੀ"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲਿਆ ਗਿਆ।"
-msgstr[1] "%(count)s %(name)s ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲੇ ਗਏ ਹਨ।"
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s ਚੁਣਿਆ।"
-msgstr[1] "%(total_count)s ਚੁਣੇ"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr ""
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" ਠੀਕ ਤਰ੍ਹਾਂ ਹਟਾਇਆ ਗਿਆ ਹੈ।"
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "ਅਤੀਤ ਬਦਲੋ: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "ਲਾਗ ਇਨ"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "ਸਾਈਟ ਪਰਬੰਧ"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s ਪਰਸ਼ਾਸ਼ਨ"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "ਮਿਤੀ:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "ਸਮਾਂ:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "ਖੋਜ"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "ਹੋਰ ਸ਼ਾਮਲ"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "ਸਫ਼ਾ ਨਹੀਂ ਲੱਭਿਆ"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "ਸਾਨੂੰ ਅਫਸੋਸ ਹੈ, ਪਰ ਅਸੀਂ ਮੰਗਿਆ ਗਿਆ ਸਫ਼ਾ ਨਹੀਂ ਲੱਭ ਸਕੇ।"
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "ਘਰ"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "ਸਰਵਰ ਗਲਤੀ"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "ਸਰਵਰ ਗਲਤੀ (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "ਸਰਵਰ ਗਲਤੀ <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "ਚੁਣੀ ਕਾਰਵਾਈ ਕਰੋ"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "ਜਾਓ"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "ਸਭ ਸਫ਼ਿਆਂ ਵਿੱਚੋਂ ਆਬਜੈਕਟ ਚੁਣਨ ਲਈ ਇੱਥੇ ਕਲਿੱਕ ਕਰੋ"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "ਸਭ %(total_count)s %(module_name)s ਚੁਣੋ"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "ਚੋਣ ਸਾਫ਼ ਕਰੋ"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "ਜੀ ਆਇਆਂ ਨੂੰ, "
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "ਡੌਕੂਮੈਂਟੇਸ਼ਨ"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "ਪਾਸਵਰਡ ਬਦਲੋ"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "ਲਾਗ ਆਉਟ"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "ਡੀਜਾਂਗੋ ਸਾਈਟ ਐਡਮਿਨ"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "ਡੀਜਾਂਗੋ ਪਰਸ਼ਾਸ਼ਨ"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "ਸ਼ਾਮਲ"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "ਅਤੀਤ"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "ਸਾਈਟ ਉੱਤੇ ਜਾਓ"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "ਹੇਠ ਦਿੱਤੀਆਂ ਗਲਤੀਆਂ ਠੀਕ ਕਰੋ ਜੀ।"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s ਸ਼ਾਮਲ"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "ਫਿਲਟਰ"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "ਹਟਾਓ"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "ਹਾਂ, ਮੈਂ ਚਾਹੁੰਦਾ ਹਾਂ"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "ਕਈ ਆਬਜੈਕਟ ਹਟਾਓ"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s ਵਲੋਂ "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "ਬਦਲੋ"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "ਤੁਹਾਨੂੰ ਕੁਝ ਵੀ ਸੋਧਣ ਦਾ ਅਧਿਕਾਰ ਨਹੀਂ ਹੈ।"
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "ਤਾਜ਼ਾ ਕਾਰਵਾਈਆਂ"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "ਮੇਰੀਆਂ ਕਾਰਵਾਈਆਂ"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "ਕੋਈ ਉਪਲੱਬਧ ਨਹੀਂ"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "ਅਣਜਾਣ ਸਮੱਗਰੀ"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "ਪਾਸਵਰਡ:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr ""
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "ਮਿਤੀ/ਸਮਾਂ"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "ਯੂਜ਼ਰ"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "ਕਾਰਵਾਈ"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "ਸਭ ਵੇਖੋ"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "ਸੰਭਾਲੋ"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "ਖੋਜ"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s ਕੁੱਲ"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "ਨਵੇਂ ਵਜੋਂ ਵੇਖੋ"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "ਸੰਭਾਲੋ ਤੇ ਹੋਰ ਸ਼ਾਮਲ"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "ਸੰਭਾਲੋ ਤੇ ਸੋਧਣਾ ਜਾਰੀ ਰੱਖੋ"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr "ਪਹਿਲਾਂ ਆਪਣਾ ਯੂਜ਼ਰ ਨਾਂ ਤੇ ਪਾਸਵਰਡ ਦਿਉ। ਫੇਰ ਤੁਸੀਂ ਹੋਰ ਯੂਜ਼ਰ ਚੋਣਾਂ ਨੂੰ ਸੋਧ ਸਕਦੇ ਹੋ।"
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "ਯੂਜ਼ਰ <strong>%(username)s</strong> ਲਈ ਨਵਾਂ ਪਾਸਵਰਡ ਦਿਓ।"
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "ਪਾਸਵਰਡ"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "ਪਾਸਵਰਡ (ਫੇਰ)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "ਜਾਂਚ ਲਈ, ਉੱਤੇ ਦਿੱਤਾ ਪਾਸਵਰਡ ਹੀ ਦਿਓ।"
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "ਹਟਾਓ"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "%(verbose_name)s ਹੋਰ ਸ਼ਾਮਲ"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "ਹਟਾਉਣਾ?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "ਅੱਜ ਵੈੱਬਸਾਈਟ ਨੂੰ ਕੁਝ ਚੰਗਾ ਸਮਾਂ ਦੇਣ ਲਈ ਧੰਨਵਾਦ ਹੈ।"
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "ਫੇਰ ਲਾਗਇਨ ਕਰੋ"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "ਪਾਸਵਰਡ ਬਦਲੋ"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "ਪਾਸਵਰਡ ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲਿਆ ਗਿਆ"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "ਤੁਹਾਡਾ ਪਾਸਵਰਡ ਬਦਲਿਆ ਗਿਆ ਹੈ।"
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"ਸੁਰੱਖਿਆ ਲਈ ਪਹਿਲਾਂ ਆਪਣਾ ਪੁਰਾਣਾ ਪਾਸਵਰਡ ਦਿਉ, ਅਤੇ ਫੇਰ ਆਪਣਾ ਨਵਾਂ ਪਾਸਵਰਡ ਦੋ ਵਰਾ ਦਿਉ ਤਾਂ ਕਿ "
-"ਅਸੀਂ ਜਾਂਚ ਸਕੀਏ ਕਿ ਤੁਸੀਂ ਇਹ ਠੀਕ ਤਰ੍ਹਾਂ ਲਿਖਿਆ ਹੈ।"
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "ਪੁਰਾਣਾ ਪਾਸਵਰਡ"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "ਨਵਾਂ ਪਾਸਵਰਡ"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "ਮੇਰਾ ਪਾਸਵਰਡ ਬਦਲੋ"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "ਪਾਸਵਰਡ ਮੁੜ-ਸੈੱਟ"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "ਪਾਸਵਰਡ ਮੁੜ-ਸੈੱਟ ਕਰਨਾ ਪੂਰਾ ਹੋਇਆ"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "ਤੁਹਾਡਾ ਪਾਸਵਰਡ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੈ। ਤੁਸੀਂ ਜਾਰੀ ਰੱਖ ਕੇ ਹੁਣੇ ਲਾਗਇਨ ਕਰ ਸਕਦੇ ਹੋ।"
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "ਪਾਸਵਰਡ ਮੁੜ-ਸੈੱਟ ਕਰਨ ਪੁਸ਼ਟੀ"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "ਨਵਾਂ ਪਾਸਵਰਡ ਦਿਓ"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"ਆਪਣਾ ਨਵਾਂ ਪਾਸਵਰਡ ਦੋ ਵਾਰ ਦਿਉ ਤਾਂ ਕਿ ਅਸੀਂ ਜਾਂਚ ਕਰ ਸਕੀਏ ਕਿ ਤੁਸੀਂ ਠੀਕ ਤਰ੍ਹਾਂ ਲਿਖਿਆ ਹੈ।"
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "ਨਵਾਂ ਪਾਸਵਰਡ:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "ਪਾਸਵਰਡ ਪੁਸ਼ਟੀ:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "ਪਾਸਵਰਡ ਮੁੜ-ਸੈੱਟ ਕਰਨ ਅਸਫ਼ਲ"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"ਪਾਸਵਰਡ ਰੀ-ਸੈੱਟ ਲਿੰਕ ਗਲਤ ਹੈ, ਸੰਭਵ ਤੌਰ ਉੱਤੇ ਇਹ ਪਹਿਲਾਂ ਹੀ ਵਰਤਿਆ ਜਾ ਚੁੱਕਾ ਹੈ। ਨਵਾਂ ਪਾਸਵਰਡ ਰੀ-"
-"ਸੈੱਟ ਲਈ ਬੇਨਤੀ ਭੇਜੋ ਜੀ।"
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "ਪਾਸਵਰਡ ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲਿਆ ਗਿਆ"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "ਅੱਗੇ ਦਿੱਤੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਉ ਤੇ ਨਵਾਂ ਪਾਸਵਰਡ ਚੁਣੋ:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "ਤੁਹਾਡਾ ਯੂਜ਼ਰ ਨਾਂ, ਜੇ ਕਿਤੇ ਗਲਤੀ ਨਾਲ ਭੁੱਲ ਗਏ ਹੋਵੋ:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "ਸਾਡੀ ਸਾਈਟ ਵਰਤਣ ਲਈ ਧੰਨਵਾਦ ਜੀ!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s ਟੀਮ"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "ਮੇਰਾ ਪਾਸਵਰਡ ਮੁੜ-ਸੈੱਟ ਕਰੋ"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "ਸਭ ਮਿਤੀਆਂ"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr ""
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s ਚੁਣੋ"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "ਬਦਲਣ ਲਈ %s ਚੁਣੋ"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 377e335..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 4561451..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/pa/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,169 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/"
-"language/pa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pa\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "ਉਪਲੱਬਧ %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "ਫਿਲਟਰ"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "ਸਭ ਚੁਣੋ"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "ਹਟਾਓ"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s ਚੁਣੋ"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] ""
-msgstr[1] ""
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "ਜਨਵਰੀ ਫਰਵਰੀ ਮਾਰਚ ਅਪਰੈਲ ਮਈ ਜੂਨ ਜੁਲਾਈ ਅਗਸਤ ਸਤੰਬਰ ਅਕਤੂਬਰ ਨਵੰਬਰ ਦਸੰਬਰ"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "S M T W T F S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "ਵੇਖੋ"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "ਓਹਲੇ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "ਹੁਣੇ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "ਘੜੀ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "ਸਮਾਂ ਚੁਣੋ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "ਅੱਧੀ-ਰਾਤ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 ਸਵੇਰ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "ਦੁਪਹਿਰ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "ਰੱਦ ਕਰੋ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "ਅੱਜ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "ਕੈਲੰਡਰ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "ਕੱਲ੍ਹ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "ਭਲਕੇ"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/django.mo
deleted file mode 100644
index 2093dca..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/django.po
deleted file mode 100644
index cdbd858..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,896 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# angularcircle, 2011-2013
-# angularcircle, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Karol <kfuks2@o2.pl>, 2012
-# konryd <konryd@gmail.com>, 2011
-# ola <ola@sitarska.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/django/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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Usunięto %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Nie można usunąć %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Jesteś pewien?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Usuń wybrane %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Wszystko"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Tak"
-
-#: filters.py:239
-msgid "No"
-msgstr "Nie"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Nieznany"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Dowolna data"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Dzisiaj"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Ostatnie 7 dni"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Ten miesiąc"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Ten rok"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Wprowadź poprawną %(username)s i hasło dla konta należącego do zespołu. "
-"Uwaga: wielkość liter może mieć znaczenie."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Twoja sesja wygasła, zaloguj się ponownie."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Akcja:"
-
-#: models.py:25
-msgid "action time"
-msgstr "czas akcji"
-
-#: models.py:28
-msgid "object id"
-msgstr "id obiektu"
-
-#: models.py:29
-msgid "object repr"
-msgstr "reprezentacja obiektu"
-
-#: models.py:30
-msgid "action flag"
-msgstr "flaga akcji"
-
-#: models.py:31
-msgid "change message"
-msgstr "zmień wiadomość"
-
-#: models.py:36
-msgid "log entry"
-msgstr "log"
-
-#: models.py:37
-msgid "log entries"
-msgstr "logi"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Dodano \" %(object)s \"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Zmieniono \" %(object)s \" - %(changes)s "
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Usunięto \" %(object)s \"."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Obiekt typu LogEntry"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "brak"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Zmieniono %s"
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "i"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Dodano %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Zmieniono %(list)s w %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Usunięto %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Żadne pole nie zmienione."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" dodane pomyślnie. Możesz edytować ponownie wpis poniżej."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"Pomyślnie dodano %(name)s \"%(obj)s\". Poniżej możesz dodać dodać kolejny "
-"%(name)s."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" dodany pomyślnie."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"Zmiany w %(name)s \"%(obj)s\" zostały zapisane. Poniżej możesz edytować go "
-"ponownie."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"Zmiany w %(name)s \"%(obj)s\" zostały zapisane. Poniżej możesz dodać dodać "
-"kolejny %(name)s."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" zostało pomyślnie zmienione."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Wykonanie akcji wymaga wybrania obiektów. Żaden obiekt nie został zmieniony."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Nie wybrano akcji."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Dodaj %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Obiekt %(name)s o kluczu głównym %(key)r nie istnieje."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Zmień %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Błąd bazy danych"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s został pomyślnie zmieniony."
-msgstr[1] "%(count)s %(name)s zostały pomyślnie zmienione."
-msgstr[2] "%(count)s %(name)s zostało pomyślnie zmienionych."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s wybrany"
-msgstr[1] "%(total_count)s wybrane"
-msgstr[2] "%(total_count)s wybranych"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 z %(cnt)s wybranych"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" usunięty pomyślnie."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Historia zmian: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Usunięcie %(object_name)s '%(escaped_object)s' wymaga skasowania "
-"następujących chronionych obiektów, które są z nim powiązane:"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Zaloguj się"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Administracja stroną"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s - administracja"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Data:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Czas:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Szukaj"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Dodaj kolejny"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Aktualny:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Zmień:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Strona nie znaleziona"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Niestety, żądana strona nie została znaleziona."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Początek"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Błąd serwera"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Błąd serwera (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Błąd Serwera <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Niestety wystąpił błąd. Administratorzy strony zostali o nim powiadomieni "
-"poprzez email i niebawem zaistniały problem powinien zostać rozwiązany. "
-"Dziękujemy za wyrozumiałość."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Wykonaj wybraną akcję"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Wykonaj"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Kliknij by wybrać obiekty na wszystkich stronach"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Wybierz wszystkie %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Wyczyść wybór"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Witaj,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentacja"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Zmiana hasła"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Wyloguj się"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Administracja stroną Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administracja Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Dodaj"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Historia"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Pokaż na stronie"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Proszę, popraw poniższe błędy."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Dodaj %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtr"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Usuń z sortowania"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Priorytet sortowania: %(priority_number)s "
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Zmień sortowanie"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Usuń"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Usunięcie %(object_name)s '%(escaped_object)s' spowoduje skasowanie "
-"obiektów, które są z nim powiązane. Niestety nie posiadasz uprawnień do "
-"usunięcia następujących typów obiektów:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Usunięcie %(object_name)s '%(escaped_object)s' wymaga skasowania "
-"następujących chronionych obiektów, które są z nim powiązane:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Czy chcesz skasować %(object_name)s \"%(escaped_object)s\"? Następujące "
-"zależne obiekty zostaną skasowane:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Tak, na pewno"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Usuwanie wielu obiektów"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Usunięcie %(objects_name)s spowoduje skasowanie obiektów, które są z nim "
-"powiązane. Niestety nie posiadasz uprawnień do usunięcia następujących typów "
-"obiektów:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Usunięcie %(objects_name)s wymaga skasowania następujących chronionych "
-"obiektów, które są z nim powiązane:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Czy chcesz skasować zaznaczone %(objects_name)s? Następujące obiekty oraz "
-"obiekty od nich zależne zostaną skasowane:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Używając %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modele w aplikacji %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Zmień"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Nie masz uprawnień by edytować cokolwiek."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Ostatnie akcje"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Moje akcje"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Brak"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Zawartość nieznana"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Instalacja Twojej bazy danych jest niepoprawna. Upewnij się, że odpowiednie "
-"tabele zostały utworzone i odpowiedni użytkownik jest uprawniony do ich "
-"odczytu."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Hasło:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Nie pamiętasz swojego hasła, bądź nazwy konta użytkownika?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Data/czas"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Użytkownik"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Akcja"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Ten obiekt nie ma historii zmian. Najprawdopodobniej wpis ten nie został "
-"dodany poprzez panel administracyjny."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Pokaż wszystko"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Zapisz"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Szukaj"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s wynik"
-msgstr[1] "%(counter)s wyniki"
-msgstr[2] "%(counter)s wyników"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s trafień"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Zapisz jako nowe"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Zapisz i dodaj nowe"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Zapisz i kontynuuj edycję"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Najpierw podaj nazwę użytkownika i hasło. Następnie będziesz mógł edytować "
-"więcej opcji użytkownika."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Podaj nazwę użytkownika i hasło."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Podaj nowe hasło dla użytkownika <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Hasło"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Hasło (powtórz)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Podaj powyższe hasło w celu weryfikacji."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Usuń"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Dodaj kolejne %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Usunąć?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Dziękujemy za odwiedzenie serwisu."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Zaloguj się ponownie"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Zmiana hasła"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Hasło zmienione"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Twoje hasło zostało zmienione."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr "Podaj swoje stare hasło i dwa razy nowe."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Stare hasło"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nowe hasło"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Zmień hasło"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Zresetuj hasło"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Hasło zostało zresetowane"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Twoje hasło zostało ustawione. Możesz się teraz zalogować."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Potwierdzenie zresetowania hasła"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Podaj nowe hasło"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Podaj dwukrotnie nowe hasło, by można było zweryfikować, czy zostało wpisane "
-"poprawnie."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nowe hasło:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Potwierdź hasło:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Zresetowanie hasła nie powiodło się"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Link pozwalający na reset hasła jest niepoprawny - być może dlatego, że "
-"został już raz użyty. Możesz ponownie zażądać zresetowania hasła."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Zresetowanie hasła zakończyło się powodzeniem"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Instrukcja pozwalająca ustawić nowe hasło dla podanego adresu email została "
-"wysłana. Niebawem powinna się pojawić na Twoim koncie pocztowym."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"W przypadku nieotrzymania wiadomości email: upewnij się czy adres "
-"wprowadzony jest zgodny z tym podanym podczas rejestracji i sprawdź "
-"zawartość folderu SPAM na swoim koncie."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Otrzymujesz tę wiadomość, gdyż skorzystano z opcji resetu hasła dla Twojego "
-"konta na stronie %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-"Aby wprowadzić nowe hasło, proszę przejść na stronę, której adres widnieje "
-"poniżej:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Twoja nazwa użytkownika:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Dziękujemy za skorzystanie naszej strony."
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Zespół %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Nie pamiętasz swojego hasła? Wprowadź w poniższym polu swój adres email, a "
-"wyślemy Ci instrukcję opisującą sposób ustawienia nowego hasła."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Adres email:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Zresetuj moje hasło"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Wszystkie daty"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Brak)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Zaznacz %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Zaznacz %s aby zmienić"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index c394a84..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 12a16ec..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/pl/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,186 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# angularcircle, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# konryd <konryd@gmail.com>, 2011
-# Roman Barczyński <rombar@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/django/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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Dostępne %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"To jest lista dostępnych %s. Aby wybrać pozycje zaznacz je i kliknij "
-"strzałkę \"Wybierz\" pomiędzy listami."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Pisz tutaj aby wyfiltrować listę dostępnych %s."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtr"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Wybierz wszystko"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Kliknij aby wybrać wszystkie %s na raz."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Wybierz"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Usuń"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Wybrano %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"To jest lista wybranych %s. Aby usunąć zaznacz pozycje wybrane do usunięcia "
-"i kliknij strzałkę \"Usuń\" pomiędzy listami."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Usuń wszystkie"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Kliknij aby usunąć wszystkie wybrane %s na raz."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "Zaznaczono %(sel)s z %(cnt)s"
-msgstr[1] "Zaznaczono %(sel)s z %(cnt)s"
-msgstr[2] "Zaznaczono %(sel)s z %(cnt)s"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Zmiany w niektórych polach nie zostały zachowane. Po wykonaniu akcji zmiany "
-"te zostaną utracone."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Wybrano akcję, lecz część zmian w polach nie została zachowana. Kliknij OK "
-"aby zapisać. Aby wykonać akcję, należy ją ponownie uruchomić."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Wybrano akcję, lecz nie dokonano żadnych zmian. Prawdopodobnie szukasz "
-"przycisku \"Wykonaj\" (a nie \"Zapisz\")"
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Styczeń Luty Marzec Kwiecień Maj Czerwiec Lipiec Sierpień Wrzesień "
-"Październik Listopad Grudzień"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "N Pn Wt Śr Cz Pt So"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Pokaż"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Ukryj"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Teraz"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Zegar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Wybierz czas"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Północ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 rano"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Południe"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Anuluj"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Dzisiaj"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalendarz"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Wczoraj"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Jutro"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/pt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/pt/LC_MESSAGES/django.mo
deleted file mode 100644
index 024431f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/pt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/pt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/pt/LC_MESSAGES/django.po
deleted file mode 100644
index 8ca7fea..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/pt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,894 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nuno Mariz <nmariz@gmail.com>, 2013
-# Paulo Köch <paulo.koch@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-10-31 16:32+0000\n"
-"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
-"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Foram removidos com sucesso %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Não é possível remover %(name)s "
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Tem a certeza?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Remover %(verbose_name_plural)s selecionados"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Todos"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Sim"
-
-#: filters.py:239
-msgid "No"
-msgstr "Não"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Desconhecido"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Qualquer data"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Hoje"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Últimos 7 dias"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Este mês"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Este ano"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Por favor introduza o %(username)s e password corretos para a conta de "
-"equipa. Tenha em atenção às maiúsculas e minúsculas."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Por favor autentique-se novamente, porque a sua sessão expirou."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Ação:"
-
-#: models.py:25
-msgid "action time"
-msgstr "hora da ação"
-
-#: models.py:28
-msgid "object id"
-msgstr "id do objeto"
-
-#: models.py:29
-msgid "object repr"
-msgstr "repr do objeto"
-
-#: models.py:30
-msgid "action flag"
-msgstr "flag de ação"
-
-#: models.py:31
-msgid "change message"
-msgstr "modificar mensagem"
-
-#: models.py:36
-msgid "log entry"
-msgstr "entrada de log"
-
-#: models.py:37
-msgid "log entries"
-msgstr "entradas de log"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Adicionado \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Foram modificados \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Foram removidos \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Objeto LogEntry"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Nenhum"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Foi modificado %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "e"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Foram adicionados %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Foram modificados %(list)s para %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Foram removidos %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Nenhum campo foi modificado."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"O(A) %(name)s \"%(obj)s\" foi adicionado(a) com sucesso. Pode voltar a "
-"editar novamente abaixo."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"O %(name)s \"%(obj)s\" foi adicionado corretamente. Pode adicionar um novo "
-"%(name)s abaixo."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "O(A) %(name)s \"%(obj)s\" foi adicionado(a) com sucesso."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"O %(name)s \"%(obj)s\" foi modificado corretamente. Pode editá-lo novamente "
-"abaixo."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"O %(name)s \"%(obj)s\" foi modificado corretamente. Pode adicionar um novo "
-"%(name)s abaixo."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "O(A) %(name)s \"%(obj)s\" foi modificado(a) com sucesso."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Os itens devem ser selecionados de forma a efectuar ações sobre eles. Nenhum "
-"item foi modificado."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Nenhuma ação selecionada."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Adicionar %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "O object %(name)s com a chave primária %(key)r não existe."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Modificar %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Erro de base de dados"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s foi modificado com sucesso."
-msgstr[1] "%(count)s %(name)s foram modificados com sucesso."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s selecionado"
-msgstr[1] "Todos %(total_count)s selecionados"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 de %(cnt)s selecionados"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "O(A) %(name)s \"%(obj)s\" foi removido(a) com sucesso."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Histórico de modificações: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Remover o %(object_name)s ' %(escaped_object)s ' exigiria a remoção dos "
-"seguintes objetos protegidos relacionados:"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Entrar"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Administração do site"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Administração de %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Data:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Hora:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Procurar"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Adicionar Outro"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Atualmente:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Modificar:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Página não encontrada"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Pedimos desculpa, mas a página solicitada não foi encontrada."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Início"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Erro do servidor"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Erro do servidor (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Erro do servidor <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Ocorreu um erro. Foi enviada uma notificação para os administradores do "
-"site, devendo o mesmo ser corrigido em breve. Obrigado pela atenção."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Executar a acção selecionada"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Ir"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Clique aqui para selecionar os objetos em todas as páginas"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Selecionar todos %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Remover seleção"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Bem-vindo,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Documentação"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Modificar palavra-passe"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Sair"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Site de administração do Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administração do Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Adicionar"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "História"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Ver no site"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Por favor corrija os erros abaixo."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Por favor corrija os erros abaixo."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Adicionar %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtro"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Remover da ordenação"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Prioridade de ordenação: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Altenar ordenação"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Remover"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"A remoção de %(object_name)s '%(escaped_object)s' resultará na remoção dos "
-"objetos relacionados, mas a sua conta não tem permissão de remoção dos "
-"seguintes tipos de objetos:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Remover o %(object_name)s ' %(escaped_object)s ' exigiria a remoção dos "
-"seguintes objetos protegidos relacionados:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Tem a certeza que deseja remover %(object_name)s \"%(escaped_object)s\"? "
-"Todos os items relacionados seguintes irão ser removidos:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Sim, tenho a certeza"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Remover múltiplos objetos."
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Remover o %(objects_name)s selecionado poderia resultar na remoção de "
-"objetos relacionados, mas a sua conta não tem permissão para remover os "
-"seguintes tipos de objetos:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Remover o %(objects_name)s selecionado exigiria remover os seguintes objetos "
-"protegidos relacionados:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Tem certeza de que deseja remover %(objects_name)s selecionado? Todos os "
-"objetos seguintes e seus itens relacionados serão removidos:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Por %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modelos na aplicação %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Modificar"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Não tem permissão para modificar nada."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Ações Recentes"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "As minhas Ações"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Nenhum disponível"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Conteúdo desconhecido"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Passa-se algo de errado com a instalação da sua base de dados. Verifique se "
-"as tabelas da base de dados foram criadas apropriadamente e verifique se a "
-"base de dados pode ser lida pelo utilizador definido."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Palavra-passe:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Esqueceu-se da sua palavra-passe ou utilizador?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Data/hora"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Utilizador"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Ação"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Este objeto não tem histórico de modificações. Provavelmente não foi "
-"modificado via site de administração."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Mostrar todos"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Gravar"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Pesquisar"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s resultado"
-msgstr[1] "%(counter)s resultados"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s no total"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Gravar como novo"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Gravar e adicionar outro"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Gravar e continuar a editar"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Primeiro introduza o nome do utilizador e palavra-passe. Depois poderá "
-"editar mais opções do utilizador."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Introduza o utilizador e palavra-passe."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Introduza uma nova palavra-passe para o utilizador <strong>%(username)s</"
-"strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Palavra-passe"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Palavra-passe (novamente)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Introduza a palavra-passe como acima, para verificação."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Remover"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Adicionar outro %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Remover?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Obrigado pela sua visita."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Entrar novamente"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Modificação da palavra-passe"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Palavra-passe modificada com sucesso"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "A sua palavra-passe foi modificada."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Por razões de segurança, por favor introduza a sua palavra-passe antiga e "
-"depois introduza a nova duas vezes para que possamos verificar se introduziu "
-"corretamente."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Palavra-passe antiga"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nova palavra-passe"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Modificar a minha palavra-passe"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Palavra-passe de reinicialização"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Reinicialização da palavra-passe concluída"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "A sua palavra-passe foi atribuída. Pode entrar agora."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Confirmação da reinicialização da palavra-passe"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Introduza a nova palavra-passe"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Por favor, introduza a sua nova palavra-passe duas vezes para verificarmos "
-"se está correcta."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nova palavra-passe:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Confirmação da palavra-passe:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Palavra-passe reinicializada sem sucesso"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"O endereço de reinicialização da palavra-passe é inválido, possivelmente "
-"porque já foi usado. Por favor requisite uma nova reinicialização da palavra-"
-"passe."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Palavra-passe reinicializada com sucesso"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Foram enviadas para o e-mail indicado as instruções de configuração da "
-"palavra-passe. Deverá recebê-las brevemente."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Se não receber um email, por favor assegure-se de que introduziu o endereço "
-"com o qual se registou e verifique a sua pasta de correio electrónico não "
-"solicitado."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Está a receber este email porque pediu para redefinir a palavra-chave para o "
-"seu utilizador no site %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Por favor siga a seguinte página e escolha a sua nova palavra-passe:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "O seu nome de utilizador, no caso de se ter esquecido:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Obrigado pela sua visita ao nosso site!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "A equipa do %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Esqueceu-se da sua palavra-chave? Introduza o seu endereço de email e enviar-"
-"lhe-emos instruções para definir uma nova."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Endereço de email:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Reinicializar a minha palavra-passe"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Todas as datas"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Nada)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Selecionar %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Selecione %s para modificar"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 40cbd0c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.po
deleted file mode 100644
index d1bc36e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/pt/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,183 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nuno Mariz <nmariz@gmail.com>, 2011-2012
-# Paulo Köch <paulo.koch@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-31 16:33+0000\n"
-"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
-"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Disponível %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Esta é a lista de %s disponíveis. Poderá escolher alguns, selecionando-os na "
-"caixa abaixo e clicando na seta \"Escolher\" entre as duas caixas."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Digite nesta caixa para filtrar a lista de %s disponíveis."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtrar"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Escolher todos"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Clique para escolher todos os %s de uma vez."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Escolher"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Remover"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Escolhido %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Esta é a lista de %s escolhidos. Poderá remover alguns, selecionando-os na "
-"caixa abaixo e clicando na seta \"Remover\" entre as duas caixas."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Remover todos"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Clique para remover todos os %s escolhidos de uma vez."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s de %(cnt)s selecionado"
-msgstr[1] "%(sel)s de %(cnt)s selecionados"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Tem mudanças por guardar nos campos individuais. Se usar uma ação, as suas "
-"mudanças por guardar serão perdidas."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Selecionou uma ação mas ainda não guardou as mudanças dos campos "
-"individuais. Carregue em OK para gravar. Precisará de correr de novo a ação."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Selecionou uma ação mas ainda não guardou as mudanças dos campos "
-"individuais. Provavelmente quererá o botão Ir ao invés do botão Guardar."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro "
-"Novembro Dezembro"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "D S T Q Q S S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Mostrar"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Ocultar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Agora"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Relógio"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Escolha a hora"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Meia-noite"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Meio-dia"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Hoje"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Calendário"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Ontem"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Amanhã"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo
deleted file mode 100644
index 3047347..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po
deleted file mode 100644
index fc4fa7d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,891 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# dudanogueira <dudanogueira@gmail.com>, 2012
-# Elyézer Rezende <elyezermr@gmail.com>, 2013
-# Gladson Simplício Brito <gladsonbrito@gmail.com>, 2013
-# Guilherme Gondim <semente@taurinus.org>, 2012-2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-09-23 20:34+0000\n"
-"Last-Translator: Guilherme Gondim <semente@taurinus.org>\n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
-"django/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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Removido %(count)d %(items)s com sucesso."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Não é possível excluir %(name)s "
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Tem certeza?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Remover %(verbose_name_plural)s selecionados"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Todos"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Sim"
-
-#: filters.py:239
-msgid "No"
-msgstr "Não"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Desconhecido"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Qualquer data"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Hoje"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Últimos 7 dias"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Este mês"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Este ano"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Por favor, insira um %(username)s e senha corretos para uma conta de equipe. "
-"Note que ambos campos são sensíveis a maiúsculas e minúsculas."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Por favor acesse novamente, pois sua sessão expirou."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Ação:"
-
-#: models.py:25
-msgid "action time"
-msgstr "hora da ação"
-
-#: models.py:28
-msgid "object id"
-msgstr "id do objeto"
-
-#: models.py:29
-msgid "object repr"
-msgstr "repr do objeto"
-
-#: models.py:30
-msgid "action flag"
-msgstr "flag de ação"
-
-#: models.py:31
-msgid "change message"
-msgstr "modificar mensagem"
-
-#: models.py:36
-msgid "log entry"
-msgstr "entrada de log"
-
-#: models.py:37
-msgid "log entries"
-msgstr "entradas de log"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Adicionado \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Modificado \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Removido \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Objeto LogEntry"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Nenhum"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Modificado %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "e"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Adicionado %(name)s \"%(object)s\""
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Modificado %(list)s para %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Deletado %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Nenhum campo modificado."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\": adicionado com sucesso. Você pode editar novamente "
-"abaixo."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" adicionado com sucesso. Você pode adicionar um outro "
-"%(name)s abaixo."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\": adicionado com sucesso."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" modificado com sucesso. Você pode editá-lo novamente "
-"abaixo."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" alterado com sucesso. Você pode adicionar um outro "
-"%(name)s abaixo."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\": modificado com sucesso."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Os itens devem ser selecionados a fim de executar ações sobre eles. Nenhum "
-"item foi modificado."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Nenhuma ação selecionada."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Adicionar %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Objeto %(name)s com chave primária %(key)r não existe."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Modificar %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Erro no banco de dados"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s modificado com sucesso."
-msgstr[1] "%(count)s %(name)s modificados com sucesso."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s selecionado"
-msgstr[1] "Todos %(total_count)s selecionados"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 de %(cnt)s selecionados"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\": excluído com sucesso."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Histórico de modificações: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Excluir o %(object_name)s '%(escaped_object)s' exigiria excluir os seguintes "
-"objetos protegidos relacionados:"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Acessar"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Administração do Site"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Administração de %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Data:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Hora:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Olhar"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Adicionar Outro(a)"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Atualmente:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Alterar:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Página não encontrada"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Desculpe, mas a página requisitada não pode ser encontrada."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Início"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Erro no servidor"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Erro no servidor (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Erro no Servidor <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Houve um erro, que já foi reportado aos administradores do site por email e "
-"deverá ser consertado em breve. Obrigado pela sua paciência."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Executar ação selecionada"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Fazer"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Clique aqui para selecionar os objetos de todas as páginas"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Selecionar todos %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Limpar seleção"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Bem-vindo(a),"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Documentação"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Alterar senha"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Encerrar sessão"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Site de administração do Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administração do Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Adicionar"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Histórico"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Ver no site"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Por favor, corrija os erros abaixo."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Por favor, corrija os erros abaixo."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Adicionar %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtro"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Remover da ordenação"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Prioridade da ordenação: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Alternar ordenção"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Apagar"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"A remoção de '%(object_name)s' %(escaped_object)s pode resultar na remoção "
-"de objetos relacionados, mas sua conta não tem a permissão para remoção dos "
-"seguintes tipos de objetos:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Excluir o %(object_name)s ' %(escaped_object)s ' exigiria excluir os "
-"seguintes objetos protegidos relacionados:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Você tem certeza que quer remover %(object_name)s \"%(escaped_object)s\"? "
-"Todos os seguintes itens relacionados serão removidos:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Sim, tenho certeza"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Remover múltiplos objetos"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Excluir o %(objects_name)s selecionado pode resultar na remoção de objetos "
-"relacionados, mas sua conta não tem permissão para excluir os seguintes "
-"tipos de objetos:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Excluir o %(objects_name)s selecionado exigiria excluir os seguintes objetos "
-"relacionados protegidos:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Tem certeza de que deseja apagar o %(objects_name)s selecionado? Todos os "
-"seguintes objetos e seus itens relacionados serão removidos:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Por %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modelos na aplicação %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Modificar"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Você não tem permissão para edição."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Ações Recentes"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Minhas Ações"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Nenhum disponível"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Conteúdo desconhecido"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Alguma coisa está errada com a instalação do banco de dados. Certifique-se "
-"que as tabelas necessárias foram criadas e que o banco de dados pode ser "
-"acessado pelo usuário apropriado."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Senha:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Esqueceu sua senha ou nome de usuário?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Data/hora"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Usuário"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Ação"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Este objeto não tem um histórico de alterações. Ele provavelmente não foi "
-"adicionado por este site de administração."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Mostrar tudo"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Salvar"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Pesquisar"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s resultado"
-msgstr[1] "%(counter)s resultados"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s total"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Salvar como novo"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Salvar e adicionar outro(a)"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Salvar e continuar editando"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Primeiro, informe um nome de usuário e senha. Depois você será capaz de "
-"editar mais opções do usuário."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Digite um nome de usuário e senha."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Informe uma nova senha para o usuário <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Senha"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Senha (novamente)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Informe a mesma senha digitada acima, para verificação."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Remover"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Adicionar outro(a) %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Apagar?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Obrigado por visitar nosso Web site hoje."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Acessar novamente"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Alterar senha"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Senha alterada com sucesso"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Sua senha foi alterada."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Por favor, informe sua senha antiga, por segurança, e então informe sua nova "
-"senha duas vezes para que possamos verificar se você digitou corretamente."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Senha antiga"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nova senha"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Alterar minha senha"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Recuperar senha"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Recuperação de senha completa"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Sua senha foi definida. Você pode prosseguir e se autenticar agora."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Confirmação de recuperação de senha"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Insira a nova senha"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Por favor, informe sua nova senha duas vezes para que possamos verificar se "
-"você a digitou corretamente."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nova senha:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Confirme a senha:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Recuperação de senha sem sucesso"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"O link para a recuperação de senha era inválido, possivelmente porque jã foi "
-"utilizado. Por favor, solicite uma nova recuperação de senha."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Senha recuperada com sucesso"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Nós te enviamos as instruções para definição da sua senha para o endereço de "
-"email fornecido. Você receberá a mensagem em instantes."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Se você não receber um e-mail, por favor verifique se você digitou o "
-"endereço que você usou para se registrar, e verificar a sua pasta de spam."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Você está recebendo este email porque solicitou a redefinição da senha da "
-"sua conta em %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Por favor, acesse a seguinte página e escolha uma nova senha:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Seu nome de usuário, caso tenha esquecido:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Obrigado por usar nosso site!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Equipe %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Esqueceu a senha? Forneça o seu endereço de email abaixo e te enviaremos "
-"instruções para definir uma nova."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Endereço de email:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Reinicializar minha senha"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Todas as datas"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Nenhum)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Selecione %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Selecione %s para modificar"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 242bf60..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 0bba547..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/pt_BR/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,183 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Eduardo Carvalho <eduardocereto@gmail.com>, 2011
-# Guilherme Gondim <semente@taurinus.org>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
-"django/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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s disponíveis"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Esta é a lista de %s disponíveis. Você pode escolhê-los(as) selecionando-os"
-"(as) abaixo e clicando na seta \"Escolher\" entre as duas caixas."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Digite nessa caixa para filtrar a lista de %s disponíveis."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtro"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Escolher todos"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Clique para escolher todos os %s de uma só vez"
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Escolher"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Remover"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s escolhido(s)"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Esta é a lista de %s disponíveis. Você pode removê-los(as) selecionando-os"
-"(as) abaixo e clicando na seta \"Remover\" entre as duas caixas."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Remover todos"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Clique para remover de uma só vez todos os %s escolhidos."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s de %(cnt)s selecionado"
-msgstr[1] "%(sel)s de %(cnt)s selecionados"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Você tem alterações não salvas em campos editáveis individuais. Se você "
-"executar uma ação suas alterações não salvas serão perdidas."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Você selecionou uma ação, mas você não salvou as alterações de cada campo "
-"ainda. Clique em OK para salvar. Você vai precisar executar novamente a ação."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Você selecionou uma ação, e você não fez alterações em campos individuais. "
-"Você provavelmente está procurando o botão Ir ao invés do botão \"Salvar\"."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro "
-"Novembro Dezembro"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "D S T Q Q S S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Mostrar"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Esconder"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Agora"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Relógio"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Escolha uma hora"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Meia-noite"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 da manhã"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Meio-dia"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Cancelar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Hoje"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Calendário"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Ontem"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Amanhã"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/django.mo
deleted file mode 100644
index 5b7e1d9..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/django.po
deleted file mode 100644
index 6b9ea36..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,877 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Daniel Ursache-Dogariu <contact@danniel.net>, 2011
-# Denis Darii <sinednx@gmail.com>, 2011
-# Ionel Cristian Mărieș <ionel.mc@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/"
-"ro/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1));\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s eliminate cu succes."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Nu se poate șterge %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Sigur?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Elimină %(verbose_name_plural)s selectate"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Toate"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Da"
-
-#: filters.py:239
-msgid "No"
-msgstr "Nu"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Necunoscut"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Orice dată"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Astăzi"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Ultimele 7 zile"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Luna aceasta"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Anul acesta"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Autentificațți-vă din nou, deoarece sesiunea dumneavoastră a expirat."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Acțiune:"
-
-#: models.py:25
-msgid "action time"
-msgstr "timp acțiune"
-
-#: models.py:28
-msgid "object id"
-msgstr "id obiect"
-
-#: models.py:29
-msgid "object repr"
-msgstr "repr obiect"
-
-#: models.py:30
-msgid "action flag"
-msgstr "marcaj acțiune"
-
-#: models.py:31
-msgid "change message"
-msgstr "schimbă mesaj"
-
-#: models.py:36
-msgid "log entry"
-msgstr "intrare jurnal"
-
-#: models.py:37
-msgid "log entries"
-msgstr "intrări jurnal"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "S-au adăugat \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "S-au schimbat \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "S-au șters \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Obiect LogEntry"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Nimic"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "S-a schimbat %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "și"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "S-a adăugat %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "S-a schimbat %(list)s în %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "S-a șters %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Niciun câmp modificat."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" a fost adăugat(ă) cu succes. Puteți edita din nou mai "
-"jos."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" a fost adăugat cu succes."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" a fost modificat(ă) cu succes."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Itemii trebuie selectați pentru a putea îndeplini sarcini asupra lor. Niciun "
-"item nu a fost modificat."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Nicio acțiune selectată."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Adaugă %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Obiectul %(name)s ce are cheie primară %(key)r nu există."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Schimbă %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Eroare de bază de date"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s s-a modificat cu succes."
-msgstr[1] "%(count)s %(name)s s-au modificat cu succes."
-msgstr[2] "%(count)s de %(name)s s-au modificat cu succes."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s selectat(ă)"
-msgstr[1] "Toate %(total_count)s selectate"
-msgstr[2] "Toate %(total_count)s selectate"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 din %(cnt)s selectat"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" eliminat(ă) cu succes."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Istoric schimbări: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Autentificare"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Administrare site"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Administrare %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Dată:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Oră:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Căutare"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Mai adăugați"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Pagină inexistentă"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Ne pare rău, dar pagina solicitată nu a putut fi găsită."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Acasă"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Eroare de server"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Eroare de server (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Eroare server <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Pornește acțiunea selectată"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Start"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Clic aici pentru a selecta obiectele la nivelul tuturor paginilor"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Selectați toate %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Deselectați"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Bun venit,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Documentație"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Schimbă parola"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Deautentificare"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Administrare sit Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administrare Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Adaugă"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Istoric"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Vizualizează pe sit"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Corectați erorile de mai jos"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Adaugă %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtru"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Elimină din sortare"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Prioritate sortare: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Alternează sortarea"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Șterge"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Ștergerea %(object_name)s '%(escaped_object)s' va duce și la ștergerea "
-"obiectelor asociate, însă contul dumneavoastră nu are permisiunea de a "
-"șterge următoarele tipuri de obiecte:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Ștergerea %(object_name)s '%(escaped_object)s' ar putea necesita și "
-"ștergerea următoarelor obiecte protejate asociate:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Sigur doriți ștergerea %(object_name)s \"%(escaped_object)s\"? Următoarele "
-"itemuri asociate vor fi șterse:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Da, cu siguranță"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Ștergeți obiecte multiple"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Ștergerea %(objects_name)s conform selecției ar putea duce la ștergerea "
-"obiectelor asociate, însă contul dvs. de utilizator nu are permisiunea de a "
-"șterge următoarele tipuri de obiecte:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Ştergerea %(objects_name)s conform selecției ar necesita și ștergerea "
-"următoarelor obiecte protejate asociate:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Sigur doriţi să ștergeți %(objects_name)s conform selecției? Toate obiectele "
-"următoare alături de cele asociate lor vor fi șterse:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "După %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Schimbă"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Nu nicio permisiune de editare."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Acțiuni recente"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Acțiunile mele"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Niciuna"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Conținut necunoscut"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Există o problema cu baza de date. Verificați dacă tabelele necesare din "
-"baza de date au fost create și verificați dacă baza de date poate fi citită "
-"de utilizatorul potrivit."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Parolă:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Ați uitat parola sau utilizatorul ?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Dată/oră"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Utilizator"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Acțiune"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Acest obiect nu are un istoric al schimbărilor. Probabil nu a fost adăugat "
-"prin intermediul acestui sit de administrare."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Arată totul"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Salvează"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Caută"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s rezultat"
-msgstr[1] "%(counter)s rezultate"
-msgstr[2] "%(counter)s de rezultate"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s în total"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Salvați ca nou"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Salvați și mai adăugați"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Salvați și continuați editarea"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Introduceți mai întâi un nume de utilizator și o parolă. Apoi veți putea "
-"modifica mai multe opțiuni ale utilizatorului."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Introduceți un nume de utilizator și o parolă."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Introduceți o parolă nouă pentru utilizatorul <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Parolă"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Parolă (din nou)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Introduceți parola din nou, pentru verificare."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Elimină"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Adăugati încă un/o %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Elimină?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Mulţumiri pentru timpul petrecut astăzi pe sit."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Reautentificare"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Schimbare parolă"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Schimbare reușită a parolei"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Parola a fost schimbată."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Din motive de securitate, introduceți parola veche, apoi de două ori parola "
-"nouă, pentru a putea verifica dacă ați scris-o corect. "
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Parolă veche"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Parolă nouă"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Schimbă-mi parola"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Resetare parolă"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Resetare completă a parolei"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-"Parola dumneavoastră a fost stabilită. Acum puteți continua să vă "
-"autentificați."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Confirmare resetare parolă"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Introduceți parolă nouă"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Introduceți parola de două ori, pentru a putea verifica dacă ați scris-o "
-"corect."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Parolă nouă:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Confirmare parolă:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Resetare nereușită a parolei"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Link-ul de resetare a parolei a fost nevalid, probabil din cauză că acesta a "
-"fost deja utilizat. Solicitați o nouă resetare a parolei."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Parolă resetată cu succes"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Mergeți la următoarea pagină și alegeți o parolă nouă:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Numele de utilizator, în caz că l-ați uitat:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Mulțumiri pentru utilizarea sitului nostru!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Echipa %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Resetează-mi parola"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Toate datele"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Nimic)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Selectează %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Selectează %s pentru schimbare"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index d34ee74..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 8666e1f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ro/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,189 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Daniel Ursache-Dogariu <contact@danniel.net>, 2011
-# Denis Darii <sinednx@gmail.com>, 2011
-# Ionel Cristian Mărieș <ionel.mc@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/"
-"ro/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1));\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s disponibil"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Aceasta este o listă cu %s disponibile. Le puteți alege selectând mai multe "
-"in chenarul de mai jos și apăsând pe săgeata \"Alege\" dintre cele două "
-"chenare."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Scrie în acest chenar pentru a filtra lista de %s disponibile."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtru"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Alege toate"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Click pentru a alege toate %s."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Alege"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Elimină"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s alese"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Aceasta este lista de %s alese. Puteți elimina din ele selectându-le in "
-"chenarul de mai jos și apasand pe săgeata \"Elimină\" dintre cele două "
-"chenare."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Elimină toate"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Click pentru a elimina toate %s alese."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s din %(cnt)s selectate"
-msgstr[1] "%(sel)s din %(cnt)s selectate"
-msgstr[2] "de %(sel)s din %(cnt)s selectate"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Aveţi modificări nesalvate în cîmpuri individuale editabile. Dacă executaţi "
-"o acțiune, modificările nesalvate vor fi pierdute."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Aţi selectat o acţiune, dar nu aţi salvat încă modificările la câmpuri "
-"individuale. Faceţi clic pe OK pentru a salva. Va trebui să executați "
-"acțiunea din nou."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Ați selectat o acţiune și nu ațţi făcut modificări în cîmpuri individuale. "
-"Probabil căutați butonul Go, în loc de Salvează."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Ianuarie Februare Martie Aprilie Mai Iunie Iulie August Septembrie Octombrie "
-"Noiembrie Decembrie"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "D L M M J V S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Arată"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Ascunde"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Acum"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Ceas"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Alege o oră"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Miezul nopții"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Amiază"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Anulează"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Astăzi"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Calendar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Ieri"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Mâine"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/django.mo
deleted file mode 100644
index 1458817..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/django.po
deleted file mode 100644
index 80bb7d3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,892 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# defuz <defuz.net@gmail.com>, 2013
-# Denis Darii <sinednx@gmail.com>, 2011
-# Dimmus <dmitri.chudinov@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Алексей Борискин <sun.void@gmail.com>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-07 12:41+0000\n"
-"Last-Translator: Алексей Борискин <sun.void@gmail.com>\n"
-"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/"
-"ru/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Успешно удалены %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Не удается удалить %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Вы уверены?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Удалить выбранные %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Все"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Да"
-
-#: filters.py:239
-msgid "No"
-msgstr "Нет"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Неизвестно"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Любая дата"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Сегодня"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Последние 7 дней"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Этот месяц"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Этот год"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Пожалуйста, введите корректные %(username)s и пароль для аккаунта. Оба поля "
-"могут быть чувствительны к регистру."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Пожалуйста, войдите снова, поскольку ваша сессия устарела."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Действие:"
-
-#: models.py:25
-msgid "action time"
-msgstr "время действия"
-
-#: models.py:28
-msgid "object id"
-msgstr "идентификатор объекта"
-
-#: models.py:29
-msgid "object repr"
-msgstr "представление объекта"
-
-#: models.py:30
-msgid "action flag"
-msgstr "тип действия"
-
-#: models.py:31
-msgid "change message"
-msgstr "сообщение об изменении"
-
-#: models.py:36
-msgid "log entry"
-msgstr "запись в журнале"
-
-#: models.py:37
-msgid "log entries"
-msgstr "записи в журнале"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Добавлено \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Изменено \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Удалено \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Запись в журнале"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Нет"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Изменен %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "и"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Добавлен %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Изменены %(list)s для %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Удален %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Ни одно поле не изменено."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" был успешно добавлен. Ниже вы можете снова его "
-"отредактировать."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" успешно добавлен. Ниже вы можете добавить еще %(name)s."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" был успешно добавлен."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" успешно изменен. Ниже вы можете редактировать снова."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" успешно изменен. Ниже вы можете добавить еще %(name)s."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" был успешно изменен."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Чтобы произвести действия над объектами, необходимо их выбрать. Объекты не "
-"были изменены."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Действие не выбрано."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Добавить %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s с первичным ключом %(key)r не существует."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Изменить %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Ошибка базы данных"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s был успешно изменен."
-msgstr[1] "%(count)s %(name)s были успешно изменены."
-msgstr[2] "%(count)s %(name)s были успешно изменены."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "Выбран %(total_count)s"
-msgstr[1] "Выбраны все %(total_count)s"
-msgstr[2] "Выбраны все %(total_count)s"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "Выбрано 0 объектов из %(cnt)s "
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" был успешно удален."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "История изменений: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Удаление объекта %(instance)s типа %(class_name)s будет требовать удаления "
-"следующих связанных объектов: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Войти"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Администрирование сайта"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s администрирование"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Дата:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Время:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Поиск"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Добавить еще"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Сейчас:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Изменить:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Страница не найдена"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "К сожалению, запрашиваемая вами страница не найдена."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Начало"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Ошибка сервера"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Ошибка сервера (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Ошибка сервера <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Произошла ошибка. О ней сообщено администраторам сайта по электронной почте, "
-"ошибка должна быть вскоре исправлена. Благодарим вас за терпение."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Выполнить выбранное действие"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Выполнить"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Нажмите здесь, чтобы выбрать объекты на всех страницах"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Выбрать все %(module_name)s (%(total_count)s)"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Снять выделение"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Добро пожаловать,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Документация"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Изменить пароль"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Выйти"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Административный сайт Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Администрирование Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Добавить"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "История"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Смотреть на сайте"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Пожалуйста, исправьте ошибки ниже."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Пожалуйста, исправьте ошибки ниже."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Добавить %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Фильтр"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Удалить из сортировки"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Приоритет сортировки: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Сортировать в другом направлении"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Удалить"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Удаление %(object_name)s '%(escaped_object)s' приведет к удалению связанных "
-"объектов, но ваша учетная запись не имеет прав для удаления следующих типов "
-"объектов:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Удаление %(object_name)s '%(escaped_object)s' потребует удаления следующих "
-"связанных защищенных объектов:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Вы уверены, что хотите удалить %(object_name)s \"%(escaped_object)s\"? Все "
-"следующие связанные объекты также будут удалены:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Да, я уверен"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Удалить несколько объектов"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Удаление выбранной %(objects_name)s приведет к удалению связанных объектов, "
-"но ваша учетная запись не имеет прав на удаление следующих типов объектов:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Удаление %(objects_name)s потребует удаления следующих связанных защищенных "
-"объектов:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Вы уверены, что хотите удалить %(objects_name)s? Все следующие объекты и "
-"связанные с ними элементы будут удалены:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "%(filter_title)s"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Модели в приложении %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Изменить"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "У вас недостаточно прав для редактирования."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Последние действия"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Мои действия"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Недоступно"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Неизвестный тип"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Ваша база данных неправильно настроена. Убедитесь, что соответствующие "
-"таблицы были созданы, и что соответствующему пользователю разрешен к ним "
-"доступ."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Пароль:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Забыли свой пароль или имя пользователя?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Дата и время"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Пользователь"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Действие"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Данный объект не имеет истории изменений. Возможно, он был добавлен не через "
-"данный административный сайт."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Показать все"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Сохранить"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Найти"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s результат"
-msgstr[1] "%(counter)s результата"
-msgstr[2] "%(counter)s результатов"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s всего"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Сохранить как новый объект"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Сохранить и добавить другой объект"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Сохранить и продолжить редактирование"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Сначала введите имя пользователя и пароль. Затем вы сможете ввести больше "
-"информации о пользователе."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Введите имя пользователя и пароль."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Введите новый пароль для пользователя <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Пароль"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Пароль (еще раз)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Введите тот же пароль, что и выше, для подтверждения."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Удалить"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Добавить еще один %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Удалить?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Благодарим вас за время, проведенное на этом сайте."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Войти снова"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Изменение пароля"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Пароль успешно изменен"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Ваш пароль был изменен."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"В целях безопасности, пожалуйста, введите свой старый пароль, затем введите "
-"новый пароль дважды, чтобы мы могли убедиться в правильности написания."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Старый пароль"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Новый пароль"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Изменить мой пароль"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Восстановление пароля"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Восстановление пароля завершено"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Ваш пароль был сохранен. Теперь вы можете войти."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Подтверждение восстановления пароля"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Введите новый пароль:"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Пожалуйста, введите новый пароль дважды, чтобы мы могли убедиться в "
-"правильности написания."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Новый пароль:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Подтвердите пароль:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Ошибка восстановления пароля"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Неверная ссылка для восстановления пароля. Возможно, ей уже воспользовались. "
-"Пожалуйста, попробуйте восстановить пароль еще раз."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Пароль успешно восстановлен"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Мы отправили вам инструкцию по установке пароля на указанный адрес "
-"электронной почты. Вы должны получить ее в ближайшее время."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Если вы не получили письмо, пожалуйста, убедитесь, что вы ввели адрес с "
-"которым Вы зарегистрировались, и проверьте папку со спамом."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Вы получили это письмо, потому что вы (или кто-то другой) запросили "
-"восстановление пароля от учётной записи на сайте %(site_name)s, которая "
-"связана с этим адресом электронной почты."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Пожалуйста, перейдите на эту страницу и введите новый пароль:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Ваше имя пользователя (на случай, если вы его забыли):"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Спасибо, что используете наш сайт!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Команда сайта %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Забыли пароль? Введите свой адрес электронной почты ниже, и мы вышлем вам "
-"инструкцию, как установить новый пароль."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Адрес электронной почты:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Восстановить мой пароль"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Все даты"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Ничего)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Выберите %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Выберите %s для изменения"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 0db7bd2..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 789589a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ru/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,190 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Denis Darii <sinednx@gmail.com>, 2011
-# Dimmus <dmitri.chudinov@gmail.com>, 2011
-# Eugene MechanisM <contact@mechanism.name>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Алексей Борискин <sun.void@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/"
-"ru/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Доступные %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Это список всех доступных %s. Вы можете выбрать некоторые из них, выделив их "
-"в поле ниже и кликнув \"Выбрать\", либо двойным щелчком."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-"Начните вводить текст в этом поле, чтобы отфитровать список доступных %s."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Фильтр"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Выбрать все"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Нажмите, чтобы выбрать все %s сразу."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Выбрать"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Удалить"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Выбранные %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Это список выбранных %s. Вы можете удалить некоторые из них, выделив их в "
-"поле ниже и кликнув \"Удалить\", либо двойным щелчком."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Удалить все"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Нажмите чтобы удалить все %s сразу."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "Выбран %(sel)s из %(cnt)s"
-msgstr[1] "Выбрано %(sel)s из %(cnt)s"
-msgstr[2] "Выбрано %(sel)s из %(cnt)s"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Имеются несохраненные изменения в отдельных полях для редактирования. Если "
-"вы запустите действие, несохраненные изменения будут потеряны."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Вы выбрали действие, но еще не сохранили изменения, внесенные в некоторых "
-"полях для редактирования. Нажмите OK, чтобы сохранить изменения. После "
-"сохранения вам придется запустить действие еще раз."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Вы выбрали действие и не внесли изменений в данные. Возможно, вы хотели "
-"воспользоваться кнопкой \"Выполнить\", а не кнопкой \"Сохранить\". Если это "
-"так, то нажмите \"Отмена\", чтобы вернуться в интерфейс редактирования. "
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Январь Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь "
-"Декабрь"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "В П В С Ч П С"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Показать"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Скрыть"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Сейчас"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Часы"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Выберите время"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Полночь"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 часов"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Полдень"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Отмена"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Сегодня"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Календарь"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Вчера"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Завтра"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/sk/LC_MESSAGES/django.mo
deleted file mode 100644
index a77acf0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/sk/LC_MESSAGES/django.po
deleted file mode 100644
index 66e6d8d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,891 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Juraj Bubniak <translations@jbub.eu>, 2012-2013
-# Marian Andre <marian@andre.sk>, 2013
-# Martin Kosír <martin@martinkosir.net>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-10 12:53+0000\n"
-"Last-Translator: Marian Andre <marian@andre.sk>\n"
-"Language-Team: Slovak (http://www.transifex.com/projects/p/django/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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Úspešne zmazaných %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Nedá sa vymazať %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Ste si istý?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Zmazať označené %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Všetko"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Áno"
-
-#: filters.py:239
-msgid "No"
-msgstr "Nie"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Neznámy"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Ľubovoľný dátum"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Dnes"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Posledných 7 dní"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Tento mesiac"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Tento rok"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Zadajte prosím správne %(username)s a heslo pre účet personálu - \"staff "
-"account\". Obe polia môžu obsahovať veľké a malé písmená."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Vaše prihlásenie vypršalo. Prosím, prihláste sa znovu."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Akcia:"
-
-#: models.py:25
-msgid "action time"
-msgstr "čas akcie"
-
-#: models.py:28
-msgid "object id"
-msgstr "identifikátor objektu"
-
-#: models.py:29
-msgid "object repr"
-msgstr "reprezentácia objektu"
-
-#: models.py:30
-msgid "action flag"
-msgstr "príznak akcie"
-
-#: models.py:31
-msgid "change message"
-msgstr "zmeniť správu"
-
-#: models.py:36
-msgid "log entry"
-msgstr "položka záznamu"
-
-#: models.py:37
-msgid "log entries"
-msgstr "položky záznamu"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Pridané \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Zmenené \" %(object)s \" - %(changes)s "
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Odstránené \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Objekt LogEntry"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Žiadne"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Zmenené %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "a"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Pridaný %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Zmenený %(list)s pre %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Zmazaný %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Polia nezmenené."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Objekt %(name)s \"%(obj)s\" bol úspešne pridaný. Ďalšie zmeny môžete urobiť "
-"nižšie."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" bol úspešne pridaný. Môžete pridať ďaľší %(name)s "
-"nižšie."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Objekt %(name)s \"%(obj)s\" bol úspešne pridaný."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" bol úspešne zmenený. Môžete ho znovu upraviť nižšie."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" bol úspešne zmenený. Môžete pridať ďaľšie %(name)s "
-"nižšie."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Objekt %(name)s \"%(obj)s\" bol úspešne zmenený."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Položky musia byť vybrané, ak chcete na nich vykonať akcie. Neboli vybrané "
-"žiadne položky."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Nebola vybraná žiadna akcia."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Pridať %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Objekt %(name)s s primárnym kľúčom %(key)r neexistuje."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Zmeniť %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Chyba databázy"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s bola úspešne zmenená."
-msgstr[1] "%(count)s %(name)s boli úspešne zmenené."
-msgstr[2] "%(count)s %(name)s bolo úspešne zmenených."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s vybraná"
-msgstr[1] "Všetky %(total_count)s vybrané"
-msgstr[2] "Všetkých %(total_count)s vybraných"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 z %(cnt)s vybraných"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Objekt %(name)s \"%(obj)s\" bol úspešne vymazaný."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Zmeniť históriu: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Vymazanie %(class_name)s %(instance)s vyžaduje vymazanie nasledovných "
-"súvisiacich chránených objektov: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Prihlásenie"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Správa stránky"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s správa"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Dátum:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Čas:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Vyhľadanie"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Pridať ďalší"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Aktuálne:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Zmeniť:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Stránka nenájdená"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Ľutujeme, ale požadovanú stránku nie je možné nájsť."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Domov"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Chyba servera"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Chyba servera (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Chyba servera <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Došlo k chybe. Chyba bola nahlásená správcovi webu prostredníctvom e-mailu a "
-"zanedlho by mala byť odstránená. Ďakujeme za vašu trpezlivosť."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Vykonať vybranú akciu"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Vykonať"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Kliknite sem pre výber objektov na všetkých stránkach"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Vybrať všetkých %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Zrušiť výber"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Vitajte,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentácia"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Zmeniť heslo"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Odhlásiť"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Správa Django stránky"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Správa Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Pridať"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "História"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Pozrieť na stránke"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Prosím, opravte chyby uvedené nižšie."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Prosím, opravte chyby uvedené nižšie."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Pridať %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtrovať"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Odstrániť z triedenia"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Triedenie priority: %(priority_number)s "
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Prepnúť triedenie"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Odstrániť"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Odstránenie objektu %(object_name)s '%(escaped_object)s' by malo za následok "
-"aj odstránenie súvisiacich objektov. Váš účet však nemá oprávnenie na "
-"odstránenie nasledujúcich typov objektov:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Vymazanie %(object_name)s '%(escaped_object)s' vyžaduje vymazanie "
-"nasledovných súvisiacich chránených objektov:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Ste si istý, že chcete odstrániť objekt %(object_name)s \"%(escaped_object)s"
-"\"? Všetky nasledujúce súvisiace objekty budú odstránené:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Áno, som si istý"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Zmazať viacero objektov"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Vymazanie označených %(objects_name)s by spôsobilo vymazanie súvisiacich "
-"objektov, ale váš účet nemá oprávnenie na vymazanie nasledujúcich typov "
-"objektov:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Vymazanie označených %(objects_name)s vyžaduje vymazanie nasledujúcich "
-"chránených súvisiacich objektov:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Ste si isty, že chcete vymazať označené %(objects_name)s? Vymažú sa všetky "
-"nasledujúce objekty a ich súvisiace položky:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Podľa %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modely v %(name)s aplikácii"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Zmeniť"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Nemáte právo na vykonávanie zmien."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Posledné akcie"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Moje akcie"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Nedostupné"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Neznámy obsah"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Niečo nie je v poriadku s vašou inštaláciou databázy. Uistite sa, že boli "
-"vytvorené potrebné databázové tabuľky a taktiež skontrolujte, či príslušný "
-"používateľ môže databázu čítať."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Heslo:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Zabudli ste heslo alebo používateľské meno?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Dátum a čas"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Používateľ"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Akcia"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Tento objekt nemá históriu zmien. Pravdepodobne nebol pridaný "
-"prostredníctvom tejto správcovskej stránky."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Zobraziť všetky"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Uložiť"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Vyhľadávanie"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s výsledok"
-msgstr[1] "%(counter)s výsledky"
-msgstr[2] "%(counter)s výsledkov"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s spolu"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Uložiť ako nový"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Uložiť a pridať ďalší"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Uložiť a pokračovať v úpravách"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Najskôr zadajte používateľské meno a heslo. Potom budete môcť upraviť viac "
-"používateľských nastavení."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Zadajte používateľské meno a heslo."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Zadajte nové heslo pre používateľa <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Heslo"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Heslo (znova)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Kvôli overeniu zadajte rovnaké heslo ako vyššie."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Odstrániť"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Pridať ďalší %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Zmazať?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Ďakujeme za čas strávený na našich stránkach."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Znova sa prihlásiť"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Zmena hesla"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Zmena hesla úspešná"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Vaše heslo bolo zmenené."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Z bezpečnostných dôvodov zadajte staré heslo a potom nové heslo dvakrát, aby "
-"sme mohli overiť, že ste ho zadali správne."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Staré heslo"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nové heslo"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Zmeniť moje heslo"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Obnovenie hesla"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Obnovenie hesla ukončené"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Vaše heslo bolo nastavené. Môžete pokračovať a prihlásiť sa."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Potvrdenie obnovenia hesla"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Zadajte nové heslo"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Zadajte nové heslo dvakrát, aby sme mohli overiť, že ste ho zadali správne."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nové heslo:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Potvrdenie hesla:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Obnova hesla sa nepodarila"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Odkaz na obnovenie hesla je neplatný, pretože už bol pravdepodobne raz "
-"použitý. Prosím, požiadajte znovu o obnovu hesla."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Obnovenie hesla úspešné"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Na e-mailovú adresu, ktorú ste zadali, sme odoslali pokyny pre nastavenie "
-"hesla. Mali by ste ho dostať čoskoro."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Ak ste nedostali email, uistite sa, že ste zadali adresu, s ktorou ste sa "
-"registrovali a skontrolujte svoj spamový priečinok."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Tento e-mail ste dostali preto, lebo ste požiadali o obnovenie hesla pre "
-"užívateľský účet na %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Prosím, choďte na túto stránku a zvoľte si nové heslo:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Vaše používateľské meno, pre prípad, že ste ho zabudli:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Ďakujeme, že používate našu stránku!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Tím %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Zabudli ste heslo? Zadajte svoju e-mailovú adresu a my vám pošleme "
-"inštrukcie pre nastavenie nového hesla."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "E-mailová adresa:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Obnova môjho hesla"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Všetky dátumy"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Žiadne)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Vybrať %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Vybrať \"%s\" na úpravu"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index edc6016..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 8329785..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sk/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,186 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Dimitris Glezos <glezos@transifex.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Juraj Bubniak <translations@jbub.eu>, 2012
-# Marian Andre <marian@andre.sk>, 2012
-# Martin Kosír <martin@martinkosir.net>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Slovak (http://www.transifex.com/projects/p/django/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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Dostupné %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Toto je zoznam dostupných %s. Pre výber je potrebné označiť ich v poli a "
-"následne kliknutím na šípku \"Vybrať\" presunúť."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Píšte do tohto poľa pre vyfiltrovanie dostupných %s."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtrovať"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Vybrať všetko"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Kliknite sem pre vybratie všetkých %s naraz."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Vybrať"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Odstrániť"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Vybrané %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Toto je zoznam dostupných %s. Pre vymazanie je potrebné označiť ich v poli a "
-"následne kliknutím na šípku \"Vymazať\" vymazať."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Odstrániť všetky"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Kliknite sem pre vymazanie vybratých %s naraz."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s z %(cnt)s vybrané"
-msgstr[1] "%(sel)s z %(cnt)s vybrané"
-msgstr[2] "%(sel)s z %(cnt)s vybraných"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Vrámci jednotlivých editovateľných polí máte neuložené zmeny. Ak vykonáte "
-"akciu, vaše zmeny budú stratené."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Vybrali ste akciu, ale neuložili ste jednotlivé polia. Prosím, uložte zmeny "
-"kliknutím na OK. Akciu budete musieť vykonať znova."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Vybrali ste akciu, ale neurobili ste žiadne zmeny v jednotlivých poliach. "
-"Pravdepodobne ste chceli použiť tlačidlo vykonať namiesto uložiť."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"január február marec apríl máj jún júl august september október november "
-"december"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "N P U S Š P S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Zobraziť"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Skryť"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Teraz"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Hodiny"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Vybrať čas"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Polnoc"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6:00"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Poludnie"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Zrušiť"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Dnes"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalendár"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Včera"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Zajtra"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/sl/LC_MESSAGES/django.mo
deleted file mode 100644
index 3ebec7a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/sl/LC_MESSAGES/django.po
deleted file mode 100644
index 78dd0c0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,892 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# zejn <zejn@kiberpipa.org>, 2013
-# zejn <zejn@kiberpipa.org>, 2011-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-10-23 14:16+0000\n"
-"Last-Translator: zejn <zejn@kiberpipa.org>\n"
-"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/"
-"language/sl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Uspešno izbrisano %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Ni mogoče izbrisati %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Ste prepričani?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Izbriši izbrano: %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Vse"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Da"
-
-#: filters.py:239
-msgid "No"
-msgstr "Ne"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Neznano"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Kadarkoli"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Danes"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Zadnjih 7 dni"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Ta mesec"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Letos"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Vnesite veljavno %(username)s in geslo za račun osebja. Opomba: obe polji "
-"upoštevata velikost črk."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Vaša seja je pretekla; prosimo da se ponovno prijavite."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Dejanje:"
-
-#: models.py:25
-msgid "action time"
-msgstr "čas dejanja"
-
-#: models.py:28
-msgid "object id"
-msgstr "id objekta"
-
-#: models.py:29
-msgid "object repr"
-msgstr "predstavitev objekta"
-
-#: models.py:30
-msgid "action flag"
-msgstr "zastavica dejanja"
-
-#: models.py:31
-msgid "change message"
-msgstr "spremeni sporočilo"
-
-#: models.py:36
-msgid "log entry"
-msgstr "dnevniški vnos"
-
-#: models.py:37
-msgid "log entries"
-msgstr "dnevniški vnosi"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Dodan \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Spremenjen \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Izbrisan \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Dnevniški vnos"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Brez vrednosti"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Spremenjen %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "in"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Dodal %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Spremenjeno %(list)s za %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Izbrisan %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Nobeno polje ni bilo spremenjeno."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" je bil uspešno dodan. Ponovno ga lahko uredite spodaj."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" je bil uspešno dodan. Spodaj lahko dodate še kak "
-"%(name)s."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" je bil uspešno dodan."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" je bil uspešno posodobljen. Spodaj ga lahko urejate še "
-"dalje."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" je bil uspešno posodobljen. Spodaj lahko dodate še kak "
-"%(name)s."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" je bil uspešno spremenjen."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Izbrati morate vnose, nad katerimi želite izvesti operacijo. Noben vnos ni "
-"bil spremenjen."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Brez dejanja."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Dodaj %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Objekt %(name)s z glavnim ključem %(key)r ne obstaja."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Spremeni %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Napaka v podatkovni bazi"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s je bil uspešno spremenjen."
-msgstr[1] "%(count)s %(name)s sta bila uspešno spremenjena."
-msgstr[2] "%(count)s %(name)s so bili uspešno spremenjeni."
-msgstr[3] "%(count)s %(name)s je bilo uspešno spremenjenih."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s izbran"
-msgstr[1] "%(total_count)s izbrana"
-msgstr[2] "%(total_count)s izbrani"
-msgstr[3] "%(total_count)s izbranih"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 od %(cnt)s izbranih"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" je bil uspešno izbrisan."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Zgodovina sprememb: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Brisanje %(object_name)s '%(escaped_object)s' bi zahtevalo brisanje "
-"naslednjih zaščitenih povezanih objektov:"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Prijavite se"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Administracija strani"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Administracija %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Datum:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Ura:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Poizvedba"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Dodaj še enega"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Trenutno:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Spremembe:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Strani ni mogoče najti"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Opravičujemo se, a zahtevane strani ni mogoče najti."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Domov"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Napaka na strežniku"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Napaka na strežniku (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Napaka na strežniku <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Prišlo je do nepričakovane napake. Napaka je bila javljena administratorjem "
-"spletne strani in naj bi jo v kratkem odpravili. Hvala za potrpljenje."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Izvedi izbrano dejanje"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Pojdi"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Kliknite tu za izbiro vseh vnosov na vseh straneh"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Izberi vse %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Počisti izbiro"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Dobrodošli,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentacija"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Spremeni geslo"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Odjava"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django administrativni vmesnik"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administracija"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Dodaj"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Zgodovina"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Poglej na strani"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Prosimo, odpravite sledeče napake."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Prosimo popravite spodnje napake."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Dodaj %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filter"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Odstrani iz razvrščanja"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Prioriteta razvrščanja: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Preklopi razvrščanje"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Izbriši"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Izbris %(object_name)s '%(escaped_object)s' bi pomenil izbris povezanih "
-"objektov, vendar nimate dovoljenja za izbris naslednjih tipov objektov:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Brisanje %(object_name)s '%(escaped_object)s' bi zahtevalo brisanje "
-"naslednjih zaščitenih povezanih objektov:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Ste prepričani, da želite izbrisati %(object_name)s \"%(escaped_object)s\"? "
-"Vsi naslednji povezani elementi bodo izbrisani:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Ja, prepričan sem"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Izbriši več objektov"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Brisanje naslendjih %(objects_name)s bi imelo za posledico izbris naslednjih "
-"povezanih objektov, vendar vaš račun nima pravic za izbris naslednjih tipov "
-"objektov:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Brisanje izbranih %(objects_name)s zahteva brisanje naslednjih zaščitenih "
-"povezanih objektov:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Ali res želite izbrisati izbrane %(objects_name)s? Vsi naslednji objekti in "
-"njihovi povezani vnosi bodo izbrisani:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Po %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Model v %(name)s aplikaciji"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Spremeni"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Nimate dovoljenja za urejanje."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Zadnja dejanja"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Moja dejanja"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Ni na voljo"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Neznana vsebina"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Nekaj je narobe z namestitvijo vaše podatkovne baze. Preverite, da so bile "
-"ustvarjene prave tabele v podatkovni bazi in da je dostop do branja baze "
-"omogočen pravemu uporabniku."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Geslo:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Ste pozabili geslo ali uporabniško ime?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Datum/čas"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Uporabnik"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Dejanje"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Ta objekt nima zgodovine sprememb. Verjetno ni bil dodan preko te strani za "
-"administracijo."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Prikaži vse"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Shrani"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Išči"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s zadetkov"
-msgstr[1] "%(counter)s zadetek"
-msgstr[2] "%(counter)s zadetka"
-msgstr[3] "%(counter)s zadetki"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s skupno"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Shrani kot novo"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Shrani in dodaj še eno"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Shrani in nadaljuj z urejanjem"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Najprej vpišite uporabniško ime in geslo, nato boste lahko urejali druge "
-"lastnosti uporabnika."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Vnesite uporabniško ime in geslo."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Vpišite novo geslo za uporabnika <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Geslo"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Geslo (ponovno)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Vpišite enako geslo kot zgoraj, da se izognete tipkarskim napakam."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Odstrani"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Dodaj še en %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Izbrišem?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Hvala, ker ste si danes vzeli nekaj časa za to spletno stran."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Ponovna prijava"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Sprememba gesla"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Sprememba gesla je uspela"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Vaše geslo je bilo spremenjeno."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Vnesite vaše staro geslo (zaradi varnosti) in nato še dvakrat novo, da se "
-"izognete tipkarskim napakam."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Staro geslo"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Novo geslo"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Spremeni moje geslo"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Ponastavitev gesla"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Ponastavitev gesla zaključena"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Vaše geslo je bilo nastavljeno. Zdaj se lahko prijavite."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Potrdite ponastavitev gesla"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Vpišite novo geslo"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr "Vnesite vaše novo geslo dvakrat, da se izognete tipkarskim napakam."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Novo geslo:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Potrditev gesla:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Ponastavitev gesla ni uspela"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Povezava za ponastavitev gesla ni bila veljavna, morda je bila že "
-"uporabljena. Prosimo zahtevajte novo ponastavitev gesla."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Ponastavitev gesla je uspela"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Na e-poštni naslov, ki ste ga navedli, smo vam poslali navodila za "
-"nastavitev gesla. Pošto bi morali prejeti v kratkem."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Če e-pošte niste prejeli, prosimo preverite, da ste vnesli pravilen e-poštni "
-"naslov in preverite nezaželeno pošto."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"To e-pošto ste prejeli, ker je ste zahtevali ponastavitev gesla za vaš "
-"uporabniški račun na %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Prosimo pojdite na sledečo stran in izberite novo geslo:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Vaše uporabniško ime (za vsak primer):"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Hvala, ker uporabljate našo stran!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Ekipa strani %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Ste pozabili geslo? Vnesite vaš e-poštni naslov in poslali vam bomo navodila "
-"za ponastavitev gesla."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "E-poštni naslov:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Ponastavi moje geslo"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Vsi datumi"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(None)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Izberite %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Izberite %s, ki ga želite spremeniti"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 5ccd6cc..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 85dc8e7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sl/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,186 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# zejn <zejn@kiberpipa.org>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/"
-"language/sl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Možne %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"To je seznam možnih %s. Izbrane lahko izberete z izbiro v spodnjem okvirju "
-"in s klikom na puščico \"Izberi\" med okvirjema."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Z vpisom niza v to polje, zožite izbor %s."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtriraj"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Izberi vse"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Kliknite za izbor vseh %s hkrati."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Izberi"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Odstrani"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Izbran %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"To je seznam možnih %s. Odvečne lahko odstranite z izbiro v okvirju in "
-"klikom na puščico \"Odstrani\" med okvirjema."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Odstrani vse"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Kliknite za odstranitev vseh %s hkrati."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s od %(cnt)s izbranih"
-msgstr[1] "%(sel)s od %(cnt)s izbran"
-msgstr[2] "%(sel)s od %(cnt)s izbrana"
-msgstr[3] "%(sel)s od %(cnt)s izbrani"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Na nekaterih poljih, kjer je omogočeno urejanje, so neshranjene spremembe. V "
-"primeru nadaljevanja bodo neshranjene spremembe trajno izgubljene."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Izbrali ste dejanje, vendar niste shranili sprememb na posameznih poljih. "
-"Kliknite na 'V redu', da boste shranili. Dejanje boste morali ponovno "
-"izvesti."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Izbrali ste dejanje, vendar niste naredili nobenih sprememb na posameznih "
-"poljih. Verjetno iščete gumb Pojdi namesto Shrani."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Januar Februar Marec April Maj Junij Julij Avgust September Oktober November "
-"December"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "N P T S Č P S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Prikaži"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Skrij"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Takoj"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Ura"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Izbor časa"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Polnoč"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "Ob 6h"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Opoldne"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Prekliči"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Danes"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Koledar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Včeraj"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Jutri"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/django.mo
deleted file mode 100644
index 2ff4b7a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/django.po
deleted file mode 100644
index 880d243..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,890 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Besnik <besnik@programeshqip.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/"
-"sq/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sq\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "U fshinë me sukses %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "S'mund të fshijë %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Jeni i sigurt?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Fshiji %(verbose_name_plural)s e përzgjdhur"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Krejt"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Po"
-
-#: filters.py:239
-msgid "No"
-msgstr "Jo"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "E panjohur"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Çfarëdo date"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Sot"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "7 ditët e shkuara"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Këtë muaj"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Këtë vit"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Ju lutemi, jepni %(username)s dhe fjalëkalimin e saktë për një llogari "
-"ekipi. Kini parasysh se që të dyja fushat mund të jenë të ndjeshme ndaj "
-"shkrimit me shkronja të mëdha ose të vogla."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Ju lutem, hyni sërish, sepse sesioni juaj ka skaduar."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Veprim:"
-
-#: models.py:25
-msgid "action time"
-msgstr "kohë veprimi"
-
-#: models.py:28
-msgid "object id"
-msgstr "id objekti"
-
-#: models.py:29
-msgid "object repr"
-msgstr ""
-
-#: models.py:30
-msgid "action flag"
-msgstr "shenjë veprimi"
-
-#: models.py:31
-msgid "change message"
-msgstr "mesazh ndryshimi"
-
-#: models.py:36
-msgid "log entry"
-msgstr "zë regjistrimi"
-
-#: models.py:37
-msgid "log entries"
-msgstr "zëra regjistrimi"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "U shtua \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "U ndryshua \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "U fshi \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Asnjë"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Ndryshoi %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr " dhe "
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "U shtua %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "U ndryshua %(list)s për %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "U fshi %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Nuk u ndryshuan fusha."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" u shtua me sukses. Mund ta përpunoni sërish më poshtë."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" u shtua me sukses. Mund të shtoni një tjetër %(name)s "
-"më poshtë."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" u shtua me sukses."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" u shtua me sukses. Mund ta përpunoni sërish më poshtë."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" u ndryshua me sukses. Mund të shtoni një tjetër "
-"%(name)s më poshtë."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" u ndryshua me sukses."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Duhen përzgjedhur objekte që të kryhen veprime mbi ta. Nuk u ndryshua ndonjë "
-"objekt."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Pa përzgjedhje veprimi."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Shtoni %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Objekti %(name)s me kyç parësor %(key)r nuk ekziston."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Ndrysho %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Gabimi baze të dhënash"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s u ndryshua me sukses."
-msgstr[1] "%(count)s %(name)s u ndryshuan me sukses."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s të përzgjedhur"
-msgstr[1] "Krejt %(total_count)s të përzgjedhurat"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 nga %(cnt)s të përzgjedhur"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" u fshi me sukses."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Ndryshoni historikun: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Fshirja e %(class_name)s %(instance)s do të lypte fshirjen e objekteve "
-"vijuese të mbrojtura që kanë lidhje me ta: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Hyni"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Administrim site-i"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Administrim i %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Datë:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Kohë:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Kërkim"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Shtoni Një Tjetër"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Tani:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Ndryshim:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Nuk u gjet faqe"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Na ndjeni, por faqja e kërkuar nuk gjendet dot."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Hyrje"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Gabim shërbyesi"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Gabim shërbyesi (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Gabim Shërbyesi <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Pati një gabim. Iu është njoftuar përgjegjësve të site-it përmes email-it "
-"dhe do të duhej të ndreqej shpejt. Faleminderit për durimin."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Xhironi veprimin e përzgjedhur"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Shko tek"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Klikoni këtu që të përzgjidhni objektet nëpër krejt faqet"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Përzgjidhni krejt %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Pastroje përzgjedhjen"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Mirë se vini,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentim"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Ndryshoni fjalëkalimin"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Dilni"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Përgjegjësi i site-it Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Administrim i Django-s"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Shtoni"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Historik"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Shiheni në site"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Ju lutem, ndreqini gabimet e mëposhtme."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Shto %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtër"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Hiqe prej renditjeje"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Përparësi renditjesh: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Këmbe renditjen"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Fshije"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Fshirja e %(object_name)s '%(escaped_object)s' do të shpinte në fshirjen e "
-"objekteve të lidhur me të, por llogaria juaj nuk ka leje për fshirje të "
-"objekteve të llojeve të mëposhtëm:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Fshirja e %(object_name)s '%(escaped_object)s' do të kërkonte fshirjen e "
-"objekteve vijues, të mbrojtur, të lidhur me të:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Jeni i sigurt se doni të fshihet %(object_name)s \"%(escaped_object)s\"? "
-"Krejt objektet vijues të lidhur me të do të fshihen:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Po, jam i sigurt"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Fshini disa objekte njëherësh"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Fshirja e %(objects_name)s të përzgjedhur do të shpjerë në fshirjen e "
-"objekteve të lidhur me të, por llogaria juaj nuk ka leje të fshijë llojet "
-"vijuese të objekteve:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Fshirja e %(objects_name)s të përzgjedhur do të kërkonte fshirjen e "
-"objekteve vijues, të mbrojtur, të lidhur me të:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Jeni i sigurt se doni të fshihen e %(objects_name)s përzgjedhur? Krejt "
-"objektet vijues dhe gjëra të lidhura me ta do të fshihen:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Nga %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modele te zbatimi %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Ndryshoje"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Nuk keni leje për të përpunuar ndonjë gjë."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Veprime Së Fundi"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Veprimet e Mia"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Asnjë i passhëm"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Lëndë e panjohur"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Ka diçka që nuk shkon me instalimin e bazës suaj të të dhënave. Sigurohuni "
-"që janë krijuar tabelat e duhura të bazës së të dhënave, dhe që baza e të "
-"dhënave është e lexueshme nga përdoruesi i duhur."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Fjalëkalim:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Harruat fjalëkalimin ose emrin tuaj të përdoruesit?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Datë/kohë"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Përdorues"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Veprim"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Ky objekt nuk ka historik ndryshimesh. Ndoshta nuk qe shtuar përmes këtij "
-"site-i administrimi."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Shfaqi krejt"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Ruaje"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Kërko"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s përfundim"
-msgstr[1] "%(counter)s përfundime"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s gjithsej"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Ruaje si të ri"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Ruajeni dhe shtoni një tjetër"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Ruajeni dhe vazhdoni përpunimin"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Së pari, jepni një emër përdoruesi dhe fjalëkalim. Mandej, do të jeni në "
-"gjendje të përpunoni më tepër mundësi përdoruesi."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Jepni emër përdoruesi dhe fjalëkalim."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-"Jepni një fjalëkalim të ri për përdoruesin <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Fjalëkalim"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Fjalëkalim (sërish)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Jepni, për verifikim, të njëjtin fjalëkalim si më sipër."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Hiqe"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Shtoni një tjetër %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Të fshihet?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Faleminderit që shpenzoni pak kohë të çmuar me site-in Web sot."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Hyni sërish"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Ndryshim fjalëkalimi"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Ndryshim i sukseshëm fjalëkalimi"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Fjalëkalimi juaj u ndryshua."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Ju lutem, jepni fjalëkalimin tuaj të vjetër, për hir të sigurisë, dhe mandej "
-"jepni dy herë fjalëkalimin tuaj të ri, që kështu të mund të verifikojmë se e "
-"shtypët saktë."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Fjalëkalim i vjetër"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Fjalëkalim i ri"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Ndrysho fjalëkalimin tim"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Ricaktim fjalëkalimi"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Ricaktim fjalëkalimi i plotësuar"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-"Fjakalimi juaj u caktua. Mund të vazhdoni më tej dhe të bëni hyrjen tani."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Ripohim ricaktimi fjalëkalimi"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Jepni fjalëkalim të ri"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Ju lutem, jepeni fjalëkalimin tuaj dy herë, që kështu të mund të verifikojmë "
-"që e shtypët saktë."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Fjalëkalim i ri:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Ripohoni fjalëkalimin:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Fjalëkalimi nuk u ricaktua me sukses"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Lidhja për ricaktimin e fjalëkalimit qe e pavlefshme, ndoshta ngaqë është "
-"përdorur tashmë një herë. Ju lutem, kërkoni një ricaktim të ri fjalëkalimi."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Ndryshim i sukseshëm fjalëkalimi"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Ju kemi dërguar me email udhëzime për caktimin e fjalëkalimit tuaj. Do të "
-"duhej t'ju vinin pas pak."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Nëse nuk merrni një email, ju lutemi, sigurohuni që keni dhënë adresën e "
-"saktë me të cilën u regjistruat, dhe kontrolloni dosjen tuaj të mesazheve "
-"hedhurinë."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Këtë email po e merrni ngaqë kërkuat ricaktim fjalëkalimi për llogarinë tuaj "
-"si përdorues te %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Ju lutem, shkoni te faqja vijuese dhe zgjidhni një fjalëkalim të ri:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Emri juaj i përdoruesit, në rast se e keni harruar:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Faleminderit që përdorni site-in tonë!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Ekipi i %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Harruat fjalëkalimin tuaj? Jepni më poshtë adresën tuaj email, dhe do t'ju "
-"dërgojmë udhëzimet për të caktuar një të ri."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Adresë email:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Ricakto fjalëkalimin tim"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Krejt datat"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Asnjë)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Përzgjidhni %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Përzgjidhni %s për ta ndryshuar"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 1f1e1b8..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 4d8b514..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sq/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,184 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Besnik <besnik@programeshqip.org>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/"
-"sq/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sq\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "I mundshëm %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Kjo është lista e %s të passhme. Mund të zgjidhni disa duke i përzgjedhur te "
-"kutiza më poshtë e mandej duke klikuar mbi shigjetën \"Zgjidhe\" mes dy "
-"kutizave."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Shkruani brenda kutizës që të filtrohet lista e %s të passhme."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtro"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Zgjidheni krejt"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Klikoni që të zgjidhen krejt %s njëherësh."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Zgjidhni"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Hiq"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "U zgjodh %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Kjo është lista e %s të passhme. Mund të hiqni disa duke i përzgjedhur te "
-"kutiza më poshtë e mandej duke klikuar mbi shigjetën \"Hiqe\" mes dy "
-"kutizave."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Hiqi krejt"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Klikoni që të hiqen krejt %s e zgjedhura njëherësh."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "U përzgjodh %(sel)s nga %(cnt)s"
-msgstr[1] "U përzgjodhën %(sel)s nga %(cnt)s"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Keni ndryshime të paruajtura te fusha individuale të ndryshueshme. Nëse "
-"kryeni një veprim, ndryshimet e paruajtura do të humbin."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Keni përzgjedhur një veprim, por nuk keni ruajtur ende ndryshimet që bëtë te "
-"fusha individuale. Ju lutem, klikoni OK që të bëhet ruajtja. Do t'ju duhet "
-"ta ribëni veprimin."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-".Keni përzgjedhur një veprim, dhe nuk keni bërë ndonjë ndryshim te fusha "
-"individuale. Ndoshta po kërkonit për butonin Shko, në vend se të butonit "
-"Ruaje."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Janar Shkurt Mars Prill Maj Qershor Korrik Gusht Shtator Tetor Nëntor Dhjetor"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "D H M M E P S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Shfaqe"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Fshihe"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Tani"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Orë"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Zgjidhni një kohë"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Mesnatë"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 a.m."
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Mesditë"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Anuloje"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Sot"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalendar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Dje"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Nesër"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/django.mo
deleted file mode 100644
index 77e33d0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/django.po
deleted file mode 100644
index 1609f6a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,871 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/"
-"sr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr\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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Успешно обрисано: %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Несуспело брисање %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Да ли сте сигурни?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Бриши означене објекте класе %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Сви"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Да"
-
-#: filters.py:239
-msgid "No"
-msgstr "Не"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Непознато"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Сви датуми"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Данас"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Последњих 7 дана"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Овај месец"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Ова година"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Пријавите се поново пошто је ваша сесија истекла."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Радња:"
-
-#: models.py:25
-msgid "action time"
-msgstr "време радње"
-
-#: models.py:28
-msgid "object id"
-msgstr "id објекта"
-
-#: models.py:29
-msgid "object repr"
-msgstr "опис објекта"
-
-#: models.py:30
-msgid "action flag"
-msgstr "ознака радње"
-
-#: models.py:31
-msgid "change message"
-msgstr "опис измене"
-
-#: models.py:36
-msgid "log entry"
-msgstr "запис у логовима"
-
-#: models.py:37
-msgid "log entries"
-msgstr "записи у логовима"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Додат објекат класе „%(object)s“."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Промењен објекат класе „%(object)s“ - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Уклоњен објекат класе „%(object)s“."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Објекат уноса лога"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Ништа"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Измењена поља %s"
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "и"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Сачуван објекат „%(object)s“ класе %(name)s."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Измењена поља %(list)s објеката „%(object)s“ класе %(name)s ."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Обрисан објекат „%(object)s“ класе %(name)s."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Без измена у пољима."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Објекат „%(obj)s“ класе %(name)s додат је успешно. Доле можете унети додатне "
-"измене."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Објекат „%(obj)s“ класе %(name)s сачуван је успешно."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Објекат „%(obj)s“ класе %(name)s измењен је успешно."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Потребно је изабрати објекте да би се извршила акција над њима. Ниједан "
-"објекат није промењен."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Није изабрана ниједна акција."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Додај објекат класе %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Објекат класе %(name)s са примарним кључем %(key)r не постоји."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Измени објекат класе %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Грешка у бази података"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "Успешно промењен %(count)s %(name)s."
-msgstr[1] "Успешно промењена %(count)s %(name)s."
-msgstr[2] "Успешно промењених %(count)s %(name)s."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s изабран"
-msgstr[1] "Сва %(total_count)s изабрана"
-msgstr[2] "Свих %(total_count)s изабраних"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 од %(cnt)s изабрано"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Објекат „%(obj)s“ класе %(name)s успешно је обрисан."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Историјат измена: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Пријава"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Администрација система"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Администрација %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Датум:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Време:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Претражи"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Додај још један"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Страница није пронађена"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Жао нам је, тражена страница није пронађена."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Почетна"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Грешка на серверу"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Грешка на серверу (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Грешка на серверу <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Покрени одабрану радњу"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Почни"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Изабери све објекте на овој страници."
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Изабери све %(module_name)s од %(total_count)s укупно."
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Поништи избор"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Добродошли,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Документација"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Промена лозинке"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Одјава"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django администрација сајта"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django администрација"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Додај"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Историјат"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Преглед на сајту"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Исправите наведене грешке."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Додај објекат класе %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Филтер"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Избаци из сортирања"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Приоритет сортирања: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Укључи/искључи сортирање"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Обриши"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Уклањање %(object_name)s „%(escaped_object)s“ повлачи уклањање свих објеката "
-"који су повезани са овим објектом, али ваш налог нема дозволе за брисање "
-"следећих типова објеката:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Да би избрисали изабран %(object_name)s „%(escaped_object)s“ потребно је "
-"брисати и следеће заштићене повезане објекте:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Да сигурни да желите да обришете %(object_name)s „%(escaped_object)s“? "
-"Следећи објекти који су у вези са овим објектом ће такође бити обрисани:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Да, сигуран сам"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Брисање више објеката"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Да би избрисали изабране %(objects_name)s потребно је брисати и заштићене "
-"повезане објекте, међутим ваш налог нема дозволе за брисање следећих типова "
-"објеката:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Да би избрисали изабране %(objects_name)s потребно је брисати и следеће "
-"заштићене повезане објекте:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Да ли сте сигурни да желите да избришете изабране %(objects_name)s? Сви "
-"следећи објекти и објекти са њима повезани ће бити избрисани:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Измени"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Немате дозволе да уносите било какве измене."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Последње радње"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Моје радње"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Нема података"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Непознат садржај"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Нешто није уреду са вашом базом података. Проверите да ли постоје "
-"одговарајуће табеле и да ли одговарајући корисник има приступ бази."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Лозинка:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Заборавили сте лозинку или корисничко име?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Датум/време"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Корисник"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Радња"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Овај објекат нема забележен историјат измена. Вероватно није додат кроз овај "
-"сајт за администрацију."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Прикажи све"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Сачувај"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Претрага"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s резултат"
-msgstr[1] "%(counter)s резултата"
-msgstr[2] "%(counter)s резултата"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "укупно %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Сачувај као нови"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Сачувај и додај следећи"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Сачувај и настави са изменама"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Прво унесите корисничко име и лозинку. Потом ћете моћи да мењате још "
-"корисничких подешавања."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Унесите корисничко име и лозинку"
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Унесите нову лозинку за корисника <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Лозинка"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Лозинка (поновите)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Ради провере тачности поново унесите лозинку коју сте унели горе."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Обриши"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Додај још један објекат класе %(verbose_name)s."
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Брисање?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Хвала што сте данас провели време на овом сајту."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Поновна пријава"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Измена лозинке"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Успешна измена лозинке"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Ваша лозинка је измењена."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Из безбедносних разлога прво унесите своју стару лозинку, а нову затим "
-"унесите два пута да бисмо могли да проверимо да ли сте је правилно унели."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Стара лозинка"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Нова лозинка"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Измени моју лозинку"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Ресетовање лозинке"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Ресетовање лозинке успешно"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Ваша лозинка је постављена. Можете се пријавити."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Потврда ресетовања лозинке"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Унесите нову лозинку"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Унесите нову лозинку два пута како бисмо могли да проверимо да ли сте је "
-"правилно унели."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Нова лозинка:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Потврда лозинке:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Ресетовање лозинке неуспешно"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Линк за ресетовање лозинке није важећи, вероватно зато што је већ "
-"искоришћен. Поново затражите ресетовање лозинке."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Ресетовање лозинке успешно."
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Идите на следећу страницу и поставите нову лозинку."
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Уколико сте заборавили, ваше корисничко име:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Хвала што користите наш сајт!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Екипа сајта %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Ресетуј моју лозинку"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Сви датуми"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Ништа)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Одабери објекат класе %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Одабери објекат класе %s за измену"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 524ca1c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 4e6f552..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sr/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,179 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/"
-"sr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr\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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Доступни %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Ово је листа доступних „%s“. Можете изабрати елементе тако што ћете их "
-"изабрати у листи и кликнути на „Изабери“."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Филтрирајте листу доступних елемената „%s“."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Филтер"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Изабери све"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Изаберите све „%s“ одједном."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Изабери"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Уклони"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Изабрано „%s“"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Ово је листа изабраних „%s“. Можете уклонити елементе тако што ћете их "
-"изабрати у листи и кликнути на „Уклони“."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Уклони све"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Уклоните све изабране „%s“ одједном."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s од %(cnt)s изабран"
-msgstr[1] "%(sel)s од %(cnt)s изабрана"
-msgstr[2] "%(sel)s од %(cnt)s изабраних"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Имате несачиване измене. Ако покренете акцију, измене ће бити изгубљене."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr "Изабрали сте акцију али нисте сачували промене поља."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr "Изабрали сте акцију али нисте изменили ни једно поље."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"јануар фебруар март април мај јун јул август септембар октобар новембар "
-"децембар"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "Н П У С Ч П С"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Покажи"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Сакриј"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Тренутно време"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Сат"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Одабир времена"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Поноћ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "18ч"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Подне"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Поништи"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Данас"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Календар"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Јуче"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Сутра"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.mo
deleted file mode 100644
index 0b6f32c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.po
deleted file mode 100644
index 2a08c90..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,871 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/"
-"language/sr@latin/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr@latin\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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Uspešno obrisano: %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Nesuspelo brisanje %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Da li ste sigurni?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Briši označene objekte klase %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Svi"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Da"
-
-#: filters.py:239
-msgid "No"
-msgstr "Ne"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Nepoznato"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Svi datumi"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Danas"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Poslednjih 7 dana"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Ovaj mesec"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Ova godina"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Prijavite se ponovo pošto je vaša sesija istekla."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Radnja:"
-
-#: models.py:25
-msgid "action time"
-msgstr "vreme radnje"
-
-#: models.py:28
-msgid "object id"
-msgstr "id objekta"
-
-#: models.py:29
-msgid "object repr"
-msgstr "opis objekta"
-
-#: models.py:30
-msgid "action flag"
-msgstr "oznaka radnje"
-
-#: models.py:31
-msgid "change message"
-msgstr "opis izmene"
-
-#: models.py:36
-msgid "log entry"
-msgstr "zapis u logovima"
-
-#: models.py:37
-msgid "log entries"
-msgstr "zapisi u logovima"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Dodat objekat klase „%(object)s“."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Promenjen objekat klase „%(object)s“ - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Uklonjen objekat klase „%(object)s“."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Objekat unosa loga"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Ništa"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Izmenjena polja %s"
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "i"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Sačuvan objekat „%(object)s“ klase %(name)s."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Izmenjena polja %(list)s objekata „%(object)s“ klase %(name)s ."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Obrisan objekat „%(object)s“ klase %(name)s."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Bez izmena u poljima."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Objekat „%(obj)s“ klase %(name)s dodat je uspešno. Dole možete uneti dodatne "
-"izmene."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Objekat „%(obj)s“ klase %(name)s sačuvan je uspešno."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Objekat „%(obj)s“ klase %(name)s izmenjen je uspešno."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Potrebno je izabrati objekte da bi se izvršila akcija nad njima. Nijedan "
-"objekat nije promenjen."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Nije izabrana nijedna akcija."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Dodaj objekat klase %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Objekat klase %(name)s sa primarnim ključem %(key)r ne postoji."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Izmeni objekat klase %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Greška u bazi podataka"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "Uspešno promenjen %(count)s %(name)s."
-msgstr[1] "Uspešno promenjena %(count)s %(name)s."
-msgstr[2] "Uspešno promenjenih %(count)s %(name)s."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s izabran"
-msgstr[1] "Sva %(total_count)s izabrana"
-msgstr[2] "Svih %(total_count)s izabranih"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 od %(cnt)s izabrano"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Objekat „%(obj)s“ klase %(name)s uspešno je obrisan."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Istorijat izmena: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Prijava"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Administracija sistema"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Administracija %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Datum:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Vreme:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Pretraži"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Dodaj još jedan"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Stranica nije pronađena"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Žao nam je, tražena stranica nije pronađena."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Početna"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Greška na serveru"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Greška na serveru (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Greška na serveru <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Pokreni odabranu radnju"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Počni"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Izaberi sve objekte na ovoj stranici."
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Izaberi sve %(module_name)s od %(total_count)s ukupno."
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Poništi izbor"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Dobrodošli,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentacija"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Promena lozinke"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Odjava"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django administracija sajta"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django administracija"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Dodaj"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Istorijat"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Pregled na sajtu"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Ispravite navedene greške."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Dodaj objekat klase %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filter"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Izbaci iz sortiranja"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Prioritet sortiranja: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Uključi/isključi sortiranje"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Obriši"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Uklanjanje %(object_name)s „%(escaped_object)s“ povlači uklanjanje svih "
-"objekata koji su povezani sa ovim objektom, ali vaš nalog nema dozvole za "
-"brisanje sledećih tipova objekata:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Da bi izbrisali izabran %(object_name)s „%(escaped_object)s“ potrebno je "
-"brisati i sledeće zaštićene povezane objekte:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Da sigurni da želite da obrišete %(object_name)s „%(escaped_object)s“? "
-"Sledeći objekti koji su u vezi sa ovim objektom će takođe biti obrisani:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Da, siguran sam"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Brisanje više objekata"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Da bi izbrisali izabrane %(objects_name)s potrebno je brisati i zaštićene "
-"povezane objekte, međutim vaš nalog nema dozvole za brisanje sledećih tipova "
-"objekata:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Da bi izbrisali izabrane %(objects_name)s potrebno je brisati i sledeće "
-"zaštićene povezane objekte:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Da li ste sigurni da želite da izbrišete izabrane %(objects_name)s? Svi "
-"sledeći objekti i objekti sa njima povezani će biti izbrisani:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Izmeni"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Nemate dozvole da unosite bilo kakve izmene."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Poslednje radnje"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Moje radnje"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Nema podataka"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Nepoznat sadržaj"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Nešto nije uredu sa vašom bazom podataka. Proverite da li postoje "
-"odgovarajuće tabele i da li odgovarajući korisnik ima pristup bazi."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Lozinka:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Zaboravili ste lozinku ili korisničko ime?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Datum/vreme"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Korisnik"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Radnja"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Ovaj objekat nema zabeležen istorijat izmena. Verovatno nije dodat kroz ovaj "
-"sajt za administraciju."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Prikaži sve"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Sačuvaj"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Pretraga"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s rezultat"
-msgstr[1] "%(counter)s rezultata"
-msgstr[2] "%(counter)s rezultata"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "ukupno %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Sačuvaj kao novi"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Sačuvaj i dodaj sledeći"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Sačuvaj i nastavi sa izmenama"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Prvo unesite korisničko ime i lozinku. Potom ćete moći da menjate još "
-"korisničkih podešavanja."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Unesite korisničko ime i lozinku"
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Unesite novu lozinku za korisnika <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Lozinka"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Lozinka (ponovite)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Radi provere tačnosti ponovo unesite lozinku koju ste uneli gore."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Obriši"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Dodaj još jedan objekat klase %(verbose_name)s."
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Brisanje?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Hvala što ste danas proveli vreme na ovom sajtu."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Ponovna prijava"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Izmena lozinke"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Uspešna izmena lozinke"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Vaša lozinka je izmenjena."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Iz bezbednosnih razloga prvo unesite svoju staru lozinku, a novu zatim "
-"unesite dva puta da bismo mogli da proverimo da li ste je pravilno uneli."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Stara lozinka"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nova lozinka"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Izmeni moju lozinku"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Resetovanje lozinke"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Resetovanje lozinke uspešno"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Vaša lozinka je postavljena. Možete se prijaviti."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Potvrda resetovanja lozinke"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Unesite novu lozinku"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Unesite novu lozinku dva puta kako bismo mogli da proverimo da li ste je "
-"pravilno uneli."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nova lozinka:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Potvrda lozinke:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Resetovanje lozinke neuspešno"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Link za resetovanje lozinke nije važeći, verovatno zato što je već "
-"iskorišćen. Ponovo zatražite resetovanje lozinke."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Resetovanje lozinke uspešno."
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Idite na sledeću stranicu i postavite novu lozinku."
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Ukoliko ste zaboravili, vaše korisničko ime:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Hvala što koristite naš sajt!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Ekipa sajta %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Resetuj moju lozinku"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Svi datumi"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Ništa)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Odaberi objekat klase %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Odaberi objekat klase %s za izmenu"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 0700aeb..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 6207f9e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sr_Latn/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,179 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/"
-"language/sr@latin/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr@latin\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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Dostupni %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Ovo je lista dostupnih „%s“. Možete izabrati elemente tako što ćete ih "
-"izabrati u listi i kliknuti na „Izaberi“."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Filtrirajte listu dostupnih elemenata „%s“."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filter"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Izaberi sve"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Izaberite sve „%s“ odjednom."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Izaberi"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Ukloni"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Izabrano „%s“"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Ovo je lista izabranih „%s“. Možete ukloniti elemente tako što ćete ih "
-"izabrati u listi i kliknuti na „Ukloni“."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Ukloni sve"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Uklonite sve izabrane „%s“ odjednom."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s od %(cnt)s izabran"
-msgstr[1] "%(sel)s od %(cnt)s izabrana"
-msgstr[2] "%(sel)s od %(cnt)s izabranih"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Imate nesačivane izmene. Ako pokrenete akciju, izmene će biti izgubljene."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr "Izabrali ste akciju ali niste sačuvali promene polja."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr "Izabrali ste akciju ali niste izmenili ni jedno polje."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"januar februar mart april maj jun jul avgust septembar oktobar novembar "
-"decembar"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "N P U S Č P S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Pokaži"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Sakrij"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Trenutno vreme"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Sat"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Odabir vremena"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Ponoć"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "18č"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Podne"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Poništi"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Danas"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalendar"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Juče"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Sutra"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/sv/LC_MESSAGES/django.mo
deleted file mode 100644
index ec36d05..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/sv/LC_MESSAGES/django.po
deleted file mode 100644
index 1284fc1..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,888 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Alex Nordlund <deep.alexander@gmail.com>, 2012
-# cvitan <tome@cvitan.com>, 2011
-# Cybjit <cybjit@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# sorl <mikko@aino.se>, 2011
-# biljettshop <thomas@biljettshop.se>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-10-28 10:03+0000\n"
-"Last-Translator: biljettshop <thomas@biljettshop.se>\n"
-"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/"
-"sv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sv\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Tog bort %(count)d %(items)s"
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Kan inte ta bort %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Är du säker?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Tag bort markerade %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Alla"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Ja"
-
-#: filters.py:239
-msgid "No"
-msgstr "Nej"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Okänt"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Alla datum"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Idag"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Senaste 7 dagarna"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Denna månad"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Detta år"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Ange %(username)s och lösenord för ett personalkonto. Notera att båda fälten "
-"är skiftlägeskänsliga."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Var god logga in igen, eftersom din session har förfallit."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Åtgärd:"
-
-#: models.py:25
-msgid "action time"
-msgstr "händelsetid"
-
-#: models.py:28
-msgid "object id"
-msgstr "objektets id"
-
-#: models.py:29
-msgid "object repr"
-msgstr "objektets beskrivning"
-
-#: models.py:30
-msgid "action flag"
-msgstr "händelseflagga"
-
-#: models.py:31
-msgid "change message"
-msgstr "ändra meddelande"
-
-#: models.py:36
-msgid "log entry"
-msgstr "loggpost"
-
-#: models.py:37
-msgid "log entries"
-msgstr "loggposter"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Lade till \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Ändrade \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Tog bort \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "LogEntry-Objekt"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Inget"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Ändrade %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "och"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Lade till %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Ändrade %(list)s på %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Tog bort %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Inga fält ändrade."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" lades till. Du kan redigera objektet igen nedanför."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" lades till. Du kan lägga till ytterligare %(name)s "
-"nedan."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" lades till."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr "%(name)s \"%(obj)s\" ändrades. Du kan ändra det igen nedan."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" ändrades."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Poster måste väljas för att genomföra åtgärder. Inga poster har ändrats."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Inga åtgärder valda."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Lägg till %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s-objekt med primärnyckel %(key)r finns inte."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Ändra %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Databasfel"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s ändrades."
-msgstr[1] "%(count)s %(name)s ändrades."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s vald"
-msgstr[1] "Alla %(total_count)s valda"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 av %(cnt)s valda"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" togs bort."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Ändringshistorik: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Borttagning av %(class_name)s %(instance)s kräver borttagning av följande "
-"skyddade relaterade objekt: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Logga in"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Webbplatsadministration"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Administration av %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Datum:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Tid:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Uppslag"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Lägg till ytterligare"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Nuvarande:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Ändra:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Sidan kunde inte hittas"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Vi beklagar men den begärda sidan hittades inte."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Hem"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Serverfel"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Serverfel (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Serverfel <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Det har uppstått ett fel. Det har rapporterats till "
-"webbplatsadministratörerna via e-post och bör bli rättat omgående. Tack för "
-"ditt tålamod."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Kör markerade operationer"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Utför"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Klicka här för att välja alla objekt från alla sidor"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Välj alla %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Rensa urval"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Välkommen,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokumentation"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Ändra lösenord"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Logga ut"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django webbplatsadministration"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django-administration"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Lägg till"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Historik"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Visa på webbplats"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Rätta till felen nedan."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Vänligen rätta till felen nedan."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Lägg till %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtrera"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Ta bort från sortering"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Sorteringsprioritet: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Ändra sorteringsordning"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Radera"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Att ta bort %(object_name)s '%(escaped_object)s' skulle innebära att "
-"relaterade objekt togs bort, men ditt konto har inte rättigheter att ta bort "
-"följande objekttyper:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Borttagning av %(object_name)s '%(escaped_object)s' kräver borttagning av "
-"följande skyddade relaterade objekt:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Är du säker på att du vill ta bort %(object_name)s \"%(escaped_object)s\"? "
-"Följande relaterade objekt kommer att tas bort:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Ja, jag är säker"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Tog bort %(name)s \"%(object)s\"."
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Borttagning av valda %(objects_name)s skulle resultera i borttagning av "
-"relaterade objekt, men ditt konto har inte behörighet att ta bort följande "
-"typer av objekt:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Borttagning av valda %(objects_name)s skulle kräva borttagning av följande "
-"skyddade objekt:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Är du säker på att du vill ta bort valda %(objects_name)s? Alla följande "
-"objekt samt relaterade objekt kommer att tas bort: "
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " På %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Modeller i applikationen %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Ändra"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Du har inte rättigheter att redigera något."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Senaste Händelser"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Mina händelser"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Inga tillgängliga"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Okänt innehåll"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Någonting är fel med din databasinstallation. Se till att de rätta "
-"databastabellerna har skapats och att databasen är läsbar av rätt användare."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Lösenord:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Har du glömt lösenordet eller användarnamnet?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Datum tid"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Användare"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Händelse"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Detta objekt har ingen ändringshistorik. Det lades antagligen inte till via "
-"denna administrationssida."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Visa alla"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Spara"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Sök"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s resultat"
-msgstr[1] "%(counter)s resultat"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s totalt"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Spara som ny"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Spara och lägg till ny"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Spara och fortsätt redigera"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Ange först ett användarnamn och ett lösenord. Efter det kommer du att få "
-"fler användaralternativ."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Mata in användarnamn och lösenord."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Ange nytt lösenord för användare <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Lösenord"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Lösenord (igen)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Fyll i samma lösenord som ovan för verifiering."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Tag bort"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Lägg till ytterligare %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Radera?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Tack för att du spenderade lite kvalitetstid med webbplatsen idag."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Logga in igen"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Ändra lösenord"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Lösenordet ändrades"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Ditt lösenord har ändrats."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Var god fyll i ditt gamla lösenord för säkerhets skull och skriv sedan in "
-"ditt nya lösenord två gånger så vi kan kontrollera att du skrev det rätt."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Gammalt lösenord"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nytt lösenord"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Ändra mitt lösenord"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Nollställ lösenord"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Nollställning av lösenord klar"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Ditt lösenord har ändrats. Du kan nu logga in."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Bekräftelse av lösenordsnollställning"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Fyll i lösenord"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Var god fyll i ditt nya lösenord två gånger så vi kan kontrollera att du "
-"skrev det rätt."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nytt lösenord:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Bekräfta lösenord:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Lösenordsnollställning misslyckad"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Länken för lösenordsnollställning var felaktig, möjligen därför att den "
-"redan använts. Var god skicka en ny nollställningsförfrågan."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Lösenordsnollställning lyckades"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Vi har skickat instruktioner för att sätta ert lösenord till er via e-post . "
-"De borde komma inom en snar framtid."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Om ni inte får ett e-brev, vänligen kontrollera att du har skrivit in "
-"adressen du registrerade dig med och kolla din skräppostmapp."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Du får detta e-postmeddelande för att du har begärt återställning av ditt "
-"lösenord av ditt konto på %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Var god gå till följande sida och välj ett nytt lösenord:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Ditt användarnamn (i fall du skulle ha glömt det):"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Tack för att du använder vår webbplats!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s-teamet"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Glömt ditt lösenord? Fyll i din e-postadress nedan så skickar vi ett e-"
-"postmeddelande med instruktioner för hur du ställer in ett nytt."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "E-postaddress:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Nollställ mitt lösenord"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Alla datum"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Ingen)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Välj %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Välj %s att ändra"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index cc917b3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.po
deleted file mode 100644
index b6b4398..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sv/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,186 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Andreas Pelme <andreas@pelme.se>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Mattias Jansson <mattias@colourandcode.se>, 2011
-# Samuel Linde <samuel@linde.im>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/"
-"sv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sv\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Tillgängliga %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Detta är listan med tillgängliga %s. Du kan välja ut vissa genom att markera "
-"dem i rutan nedan och sedan klicka på \"Välj\"-knapparna mellan de två "
-"rutorna."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Skriv i denna ruta för att filtrera listan av tillgängliga %s."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filter"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Välj alla"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Klicka för att välja alla %s på en gång."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Välj"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Ta bort"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Välj %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Detta är listan med utvalda %s. Du kan ta bort vissa genom att markera dem i "
-"rutan nedan och sedan klicka på \"Ta bort\"-pilen mellan de två rutorna."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Ta bort alla"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Klicka för att ta bort alla valda %s på en gång."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s av %(cnt)s markerade"
-msgstr[1] "%(sel)s av %(cnt)s markerade"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Du har ändringar som inte sparats i enskilda redigerbara fält. Om du kör en "
-"operation kommer de ändringar som inte sparats att gå förlorade."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Du har markerat en operation, men du har inte sparat sparat dina ändringar "
-"till enskilda fält ännu. Var vänlig klicka OK för att spara. Du kommer att "
-"behöva köra operationen på nytt."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Du har markerat en operation och du har inte gjort några ändringar i "
-"enskilda fält. Du letar antagligen efter Utför-knappen snarare än Spara."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Januari Februari Mars April Maj Juni Juli Augusti September Oktober November "
-"December"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "S M T O T F L"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Visa"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Göm"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Nu"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Klocka"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Välj en tidpunkt"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Midnatt"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "06:00"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Middag"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Avbryt"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "I dag"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalender"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "I går"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "I morgon"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sw/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/sw/LC_MESSAGES/django.mo
deleted file mode 100644
index 89dc275..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sw/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sw/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/sw/LC_MESSAGES/django.po
deleted file mode 100644
index 317ccd3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sw/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,888 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# machaku <bmachaku@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-12 08:35+0000\n"
-"Last-Translator: machaku <bmachaku@gmail.com>\n"
-"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/"
-"sw/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sw\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Umefanikiwa kufuta %(items)s %(count)d."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Huwezi kufuta %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Una uhakika?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Futa %(verbose_name_plural)s teule"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "yote"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Ndiyo"
-
-#: filters.py:239
-msgid "No"
-msgstr "Hapana"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Haijulikani"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Tarehe yoyote"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Leo"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Siku 7 zilizopita"
-
-#: filters.py:317
-msgid "This month"
-msgstr "mwezi huu"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Mwaka huu"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Tafadhali sahihisha %(username)s na nenosiri kwa akaunti ya mfanyakazi. "
-"Kumbuka sehemu zote mbili zinaweza kuwa zinazingatia herufi kubwa na ndogo."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Tafadhali ingia tena, kwani kipindi chako cha matumizi kimekwisha."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Tendo"
-
-#: models.py:25
-msgid "action time"
-msgstr "muda wa tendo"
-
-#: models.py:28
-msgid "object id"
-msgstr "Kitambulisho cha kitu"
-
-#: models.py:29
-msgid "object repr"
-msgstr "`repr` ya kitu"
-
-#: models.py:30
-msgid "action flag"
-msgstr "bendera ya tendo"
-
-#: models.py:31
-msgid "change message"
-msgstr "badilisha ujumbe"
-
-#: models.py:36
-msgid "log entry"
-msgstr "ingizo kwenye kumbukumbu"
-
-#: models.py:37
-msgid "log entries"
-msgstr "maingizo kwenye kumbukumbu"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Kuongezwa kwa \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Kubadilishwa kwa \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Kufutwa kwa \"%(object)s\"."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Kitu cha Ingizo la Kumbukumbu"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Hakuna"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Mabadiliko ya %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "na"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Ingizo la \"%(object)s\" %(name)s "
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Mabadiliko %(list)s kwa \"%(object)s\\v %(name)s."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Kumefutwa \"%(object)s\" %(name)s."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Hakuna uga uliobadilishwa."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"Ingizo la \"%(obj)s\" %(name)s limefanyika kwa mafanikio. Unaweza "
-"kuhariritena hapo chini."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"Ingizo la \"%(obj)s\" %(name)s limefanyika kwa mafanikio. Unaweza tena "
-"kuongeza %(name)s hapo chini."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "Ingizo la \"%(obj)s\" %(name)s limefanyika kwa mafanikio."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"Ingizo la \"%(obj)s\" %(name)s limebadilishwa kwa mafanikio. Unaweza tena "
-"kulihariri hapo chini."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"Ingizo la \"%(obj)s\" %(name)s limebadilishwa kwa mafanikio. Unaweza "
-"kuongeza %(name)s hapo chini."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "Mabadiliko ya \"%(obj)s\" %(name)s yamefanikiwa."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Nilazima kuchagua vitu ili kufanyia kitu fulani. Hakuna kitu "
-"kilichochaguliwa."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Hakuna tendo lililochaguliwa"
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Ongeza %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Hakuna %(name)s yenye `primary key` %(key)r."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Badilisha %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Hitilafu katika hifadhidata"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "mabadiliko ya %(name)s %(count)s yamefanikiwa."
-msgstr[1] "mabadiliko ya %(name)s %(count)s yamefanikiwa."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s kuchaguliwa"
-msgstr[1] "%(total_count)s (kila kitu) kuchaguliwa"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "Vilivyo chaguliwa ni 0 kati ya %(cnt)s"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "Ufutaji wa \"%(obj)s\" %(name)s umefanikiwa."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Badilisha historia: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(instance)s %(class_name)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Kufutwa kwa ingizo la %(instance)s %(class_name)s kutahitaji kufutwa kwa "
-"vitu vifuatavyo vyenye mahusiano vilivyokingwa: %(related_objects)s"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Ingia"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Utawala wa tovuti"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "utawala %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Tarehe"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Saa"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "`Lookup`"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Ongeza"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Kwa sasa:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Badilisha:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Ukurasa haujapatikana"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Samahani, ukurasa uliohitajika haukupatikana."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Sebule"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Hitilafu ya seva"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Hitilafu ya seva (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Hitilafu ya seva <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Kumekuwa na hitilafu. Imeripotiwa kwa watawala kupitia barua pepe na "
-"inatakiwa kurekebishwa mapema."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Fanya tendo lililochaguliwa."
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Nenda"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Bofya hapa kuchagua viumbile katika kurasa zote"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Chagua kila %(module_name)s, (%(total_count)s). "
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Safisha chaguo"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Karibu"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Nyaraka"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Badilisha nenosiri"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Toka"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Utawala wa tovuti ya django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Utawala wa Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Ongeza"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Historia"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Ona kwenye tovuti"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Tafadhali sahihisha makosa yafuatayo "
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Tafadhali sahihisha makosa yafuatayo."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Ongeza %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Chuja"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Ondoa katika upangaji"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Kipaumbele katika mpangilio: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Geuza mpangilio"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Futa"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Kufutwa kwa '%(escaped_object)s' %(object_name)s kutasababisha kufutwa kwa "
-"vitu vinavyohuisana, lakini akaunti yako haina ruhusa ya kufuta vitu vya "
-"aina zifuatazo:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Kufuta '%(escaped_object)s' %(object_name)s kutahitaji kufuta vitu "
-"vifuatavyo ambavyo vinavyohuisana na vimelindwa:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Una uhakika kuwa unataka kufuta \"%(escaped_object)s\" %(object_name)s ? "
-"Vitu vyote vinavyohuisana kati ya vifuatavyo vitafutwa:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Ndiyo, Nina uhakika"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Futa viumbile mbalimbali"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Kufutwa kwa %(objects_name)s chaguliwa kutasababisha kufutwa kwa "
-"vituvinavyohusiana, lakini akaunti yako haina ruhusa ya kufuta vitu vya "
-"vifuatavyo:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Kufutwa kwa %(objects_name)s kutahitaji kufutwa kwa vitu vifuatavyo vyenye "
-"uhusiano na vilivyolindwa:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Una uhakika kuwa unataka kufuta %(objects_name)s chaguliwa ? Vitu vyote kati "
-"ya vifuatavyo vinavyohusiana vitafutwa:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " Kwa %(filter_title)s"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Models katika application %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Badilisha"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Huna ruhusa ya kuhariri chochote"
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Matendo ya hivi karibuni"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Matendo yangu"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Hakuna kilichopatikana"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Maudhui hayajulikani"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Kuna tatizo limetokea katika usanikishaji wako wa hifadhidata. Hakikisha "
-"kuwa majedwali sahihi ya hifadhidata yameundwa, na hakikisha hifadhidata "
-"inaweza kusomwana mtumiaji sahihi."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "nenosiri"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Umesahau jina na nenosiri lako?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Tarehe/saa"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Mtumiaji"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Tendo"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Kiumbile hiki hakina historia ya kubadilika. Inawezekana hakikuwekwa kupitia "
-"hii tovuti ya utawala."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Onesha yotee"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Hifadhi"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Tafuta"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "tokeo %(counter)s"
-msgstr[1] "matokeo %(counter)s"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "jumla %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Hifadhi kama mpya"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Hifadhi na ongeza"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Hifadhi na endelea kuhariri"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Kwanza, ingiza jina lamtumiaji na nenosiri. Kisha, utaweza kuhariri zaidi "
-"machaguo ya mtumiaji."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Ingiza jina la mtumiaji na nenosiri."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "ingiza nenosiri la mtumiaji <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Nenosiri"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Nenosiri (tena)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Ingiza nenosiri linalofanana na la juu, kwa uthibitisho."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Ondoa"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Ongeza %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Futa?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Ahsante kwa kutumia muda wako katika Tovuti yetu leo. "
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "ingia tena"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Badilisha nenosiri"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Ubadilishaji wa nenosiri umefanikiwa"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Nenosiri lako lilibadilishwa"
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Tafadhali ingiza nenosiri lako la zamani, kwa ajili ya usalama, kisha ingiza "
-"nenosiri jipya mara mbili ili tuweze kuthibitisha kuwa umelichapisha kwa "
-"usahihi."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Nenosiri la zamani"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Nenosiri jipya"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Badilisha nenosiri langu"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Kuseti upya nenosiri"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Kuseti upya nenosiri kumekamilika"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Nenosiri lako limesetiwa. Unaweza kuendelea na kuingia sasa."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Uthibitisho wa kuseti upya nenosiri"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Ingiza nenosiri"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Tafadhali ingiza nenosiri mara mbili ili tuweze kuthibitisha kuwa "
-"umelichapisha kwa usahihi."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Nenosiri jipya"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Thibitisha nenosiri"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Kuseti upya nenosiri hakujafanikiwa"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Kiungo cha kuseti upya nenosiri ni batili, inawezekana ni kwa sababu kiungo "
-"hicho tayari kimetumika. tafadhali omba upya kuseti nenosiri"
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Kuseti upya nenosiri kumefaninikiwa"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Tumekutumia maelekezo ya kuseti nenosiri lako. Unapaswa kuyapata ndani ya "
-"muda mfupi."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Ikiwa hujapata barua pepe, tafadhali hakikisha umeingiza anuani ya barua "
-"pepe uliyoitumia kujisajili na angalia katika folda la spam"
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Umepata barua pepe hii kwa sababu ulihitaji ku seti upya nenosiri la akaunti "
-"yako ya %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Tafadhali nenda ukurasa ufuatao na uchague nenosiri jipya:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Jina lako la mtumiaji, ikiwa umesahau:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Ahsante kwa kutumia tovui yetu!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "timu ya %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Umesahau nenosiri? Ingiza anuani ya barua pepe hapo chini, nasi tutakutumia "
-"maelekezo ya kuseti nenosiri jipya. "
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Anuani ya barua pepe:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Seti upya nenosiri langu"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Tarehe zote"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Hakuna)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Chagua %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Chaguo %s kwa mabadilisho"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 3376349..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.po
deleted file mode 100644
index c233b04..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/sw/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,183 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# machaku <bmachaku@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-11-12 06:43+0000\n"
-"Last-Translator: machaku <bmachaku@gmail.com>\n"
-"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/"
-"sw/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sw\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Yaliyomo: %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Hii ni orodha ya %s uliyochagua. Unaweza kuchagua baadhi vitu kwa kuvichagua "
-"katika kisanduku hapo chini kisha kubofya mshale wa \"Chagua\" kati ya "
-"visanduku viwili."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Chapisha katika kisanduku hiki ili kuchuja orodha ya %s iliyopo."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Chuja"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Chagua vyote"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Bofya kuchagua %s kwa pamoja."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Chagua"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Ondoa"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Chaguo la %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Hii ni orodha ya %s uliyochagua. Unaweza kuondoa baadhi vitu kwa kuvichagua "
-"katika kisanduku hapo chini kisha kubofya mshale wa \"Ondoa\" kati ya "
-"visanduku viwili."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Ondoa vyote"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Bofya ili kuondoa %s chaguliwa kwa pamoja."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "umechagua %(sel)s kati ya %(cnt)s"
-msgstr[1] "umechagua %(sel)s kati ya %(cnt)s"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Umeacha kuhifadhi mabadiliko katika uga zinazoharirika. Ikiwa utafanya tendo "
-"lingine, mabadiliko ambayo hayajahifadhiwa yatapotea."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Umechagua tendo, lakini bado hujahifadhi mabadiliko yako katika uga husika. "
-"Tafadali bofya Sawa ukitaka kuhifadhi. Utahitajika kufanya upya kitendo "
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Umechagua tendo, lakini bado hujahifadhi mabadiliko yako katika uga husika. "
-"Inawezekana unatafuta kitufe cha Nenda badala ya Hifadhi"
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Januari Februari Machi Aprili Mei Juni Julai Agosti Septemba Oktoba Novemba "
-"Desemba"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "J2 J3 J4 J5 IJ JM JP"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Onesha"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Ficha"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Sasa"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Saa"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Chagua wakati"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Usiku wa manane"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "Saa 12 alfajiri"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Adhuhuri"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Ghairi"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Leo"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Kalenda"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Jana"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Kesho"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ta/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ta/LC_MESSAGES/django.mo
deleted file mode 100644
index fdc375f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ta/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ta/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ta/LC_MESSAGES/django.po
deleted file mode 100644
index 72c43c1..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ta/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,849 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/"
-"ta/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ta\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr ""
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr ""
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "உறுதியாக சொல்கிறீர்களா?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr ""
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "அனைத்தும்"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "ஆம்"
-
-#: filters.py:239
-msgid "No"
-msgstr "இல்லை"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "தெரியாத"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "எந்த தேதியும்"
-
-#: filters.py:309
-msgid "Today"
-msgstr "இன்று"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "கடந்த 7 நாட்களில்"
-
-#: filters.py:317
-msgid "This month"
-msgstr "இந்த மாதம்"
-
-#: filters.py:321
-msgid "This year"
-msgstr "இந்த வருடம்"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr ""
-
-#: helpers.py:23
-msgid "Action:"
-msgstr ""
-
-#: models.py:25
-msgid "action time"
-msgstr "செயல் நேரம்"
-
-#: models.py:28
-msgid "object id"
-msgstr "பொருள் அடையாளம்"
-
-#: models.py:29
-msgid "object repr"
-msgstr "பொருள் உருவகித்தம்"
-
-#: models.py:30
-msgid "action flag"
-msgstr "செயர்குறி"
-
-#: models.py:31
-msgid "change message"
-msgstr "செய்தியை மாற்று"
-
-#: models.py:36
-msgid "log entry"
-msgstr "புகுபதிவு உள்ளீடு"
-
-#: models.py:37
-msgid "log entries"
-msgstr "புகுபதிவு உள்ளீடுகள்"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr ""
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s மாற்றபட்டுள்ளது."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "மற்றும்"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "எந்த புலமும் மாறவில்லை."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" வெற்றிகரமாக சேர்க்கப்பட்டுள்ளது. நீங்கள் கீழே தொகுக்க முடியும்."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" வெற்றிகரமாகச் சேர்க்கப்பட்டது."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" வெற்றிகரமாக மாற்றப்பட்டது."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-
-#: options.py:1037
-msgid "No action selected."
-msgstr ""
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%s யை சேர்க்க"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr ""
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s யை மாற்று"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "தகவல்சேமிப்பு பிழை"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] ""
-msgstr[1] ""
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] ""
-msgstr[1] ""
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr ""
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" வெற்றிகரமாக அழிக்கப்பட்டுள்ளது."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "வரலாற்றை மாற்று: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "உள்ளே போ"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "இணைய மேலான்மை"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr ""
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "தேதி:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "நேரம்:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr ""
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr ""
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "பக்கத்தைக் காணவில்லை"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "நீங்கள் விரும்பிய பக்கத்தை காண இயலவில்லை,அதற்காக நாங்கள் வருந்துகிறோம்."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "வீடு"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "சேவகன் பிழை"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "சேவையகம் தவறு(500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "சேவையகம் பிழை<em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "செல்"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr ""
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr ""
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr ""
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "நல்வரவு,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "ஆவனமாக்கம்"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "கடவுச்சொல்லை மாற்று"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "வெளியேறு"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "டிஜாங்ஙோ தள நிர்வாகி"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "டிஜாங்ஙோ நிர்வாகம் "
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "சேர்க்க"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "வரலாறு"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "தளத்தில் பார்"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "கீழே உள்ள தவறுகளைத் திருத்துக"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s சேர்க்க"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "வடிகட்டி"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "நீக்குக"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"நீக்கும் '%(escaped_object)s' ஆனது %(object_name)s தொடர்புடைய மற்றவற்றையும் நீக்கும். "
-"ஆனால் அதை நீக்குவதற்குரிய உரிமை உங்களுக்கு இல்லை"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"நீங்கள் இந்த \"%(escaped_object)s\" %(object_name)s நீக்குவதில் நிச்சயமா?தொடர்புடைய "
-"மற்றவையும் நீக்கப்படும். "
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "ஆம், எனக்கு உறுதி"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "%(filter_title)s ஆல்"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "மாற்றுக"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "உங்களுக்கு மாற்றுவதற்குரிய உரிமையில்லை"
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "தற்போதைய செயல்கள்"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "எனது செயல்கள்"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "எதுவும் கிடைக்கவில்லை"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr ""
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"உங்களுடைய தகவல்சேமிப்பகத்தை நிறுவுவதில் சில தவறுகள் உள்ளது. அதற்கு இணையான "
-"தகவல்சேமிப்பு அட்டவணையைதயாரிக்கவும். மேலும் பயனர் படிக்கும் படியான தகவல்சேமிப்பகத்தை "
-"உருவாக்கவும்."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "கடவுச்சொல்:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr ""
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "தேதி/நேரம் "
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "பயனர்"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "செயல்"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"இந்த பொருள் மாற்று வரலாற்றில் இல்லைஒரு வேளை நிர்வாகத்தளத்தின் மூலம் சேர்க்கப்படாமலிருக்கலாம்"
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "எல்லாவற்றையும் காட்டு"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "சேமிக்க"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s மொத்தம்"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "புதியதாக சேமி"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "சேமித்து இன்னுமொன்றைச் சேர்"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "சேமித்து மாற்றத்தை தொடருக"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"முதலில்,பயனர்ப்பெயர் மற்றும் கடவுச்சொல்லை உள்ளிடவும்.அதன் பிறகு தான் நீங்கள் உங்கள் பெயரின் "
-"விவரங்களை திருத்த முடியும்"
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "கடவுச்சொல்"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "கடவுச்சொல்(மறுபடியும்)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "மேலே அதே கடவுச்சொல்லை உள்ளிடவும், சரிபார்ப்பதற்காக ."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "அழிக்க"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr ""
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr ""
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "வலைத்தளத்தில் உங்களது பொன்னான நேரத்தை செலவழித்தமைக்கு மிகுந்த நன்றி"
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "மீண்டும் உள்ளே பதிவு செய்யவும்"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "கடவுச்சொல் மாற்று"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "வெற்றிகரமாக கடவுச்சொல் மாற்றபட்டது"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "உங்களுடைய கடவுச்சொல் மாற்றபட்டது"
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"பாதுகாப்பு காரணங்களுக்காக , முதலில் உங்களது பழைய கடவுச்சொல்லை உள்ளிடுக. அதன் பிறகு "
-"புதிய கடவுச்சொல்லை இரு முறை உள்ளிடுக. இது உங்களது உள்ளிடுதலை சரிபார்க்க உதவும். "
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr ""
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr ""
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "கடவுச் சொல்லை மாற்றவும்"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "கடவுச்சொல்லை மாற்றியமை"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "புதிய கடவுச்சொல்:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "கடவுச்சொலின் மாற்றத்தை உறுதிப்படுத்து:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "கடவுச்சொல் மாற்றியமைத்தல் வெற்றி"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "உங்களது பயனாளர் பெயர், நீங்கள் மறந்திருந்தால்:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "எங்களது வலைத்தளத்தை பயன் படுத்தியதற்கு மிகுந்த நன்றி"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "இந்த %(site_name)s -இன் குழு"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "எனது கடவுச்சொல்லை மாற்றியமை"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "அனைத்து தேதியும்"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr ""
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s யை தேர்ந்தெடு"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "%s யை மாற்ற தேர்ந்தெடு"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 117bbf1..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 2ab1f4c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ta/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,169 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/"
-"ta/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ta\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%s இருக்கிறதா "
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "வடிகட்டி"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "எல்லாவற்றையும் தேர்ந்த்தெடுக்க"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "அழிக்க"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s தேர்ந்த்தெடுக்கப்பட்ட"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] ""
-msgstr[1] ""
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "ஜனவரி பிப்ரவரி மார்ச் ஏப்ரல் மே ஜூன் ஜூலை ஆகஸ்டு செப்டம்பர் அக்டோபர் நவம்பர் டிசம்பர்"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "ஞா தி செ பு வி வெ ச"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr ""
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "இப்பொழுது "
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "கடிகாரம் "
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "ஒரு நேரத்தை தேர்ந்த்தெடுக்க "
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "நடு இரவு "
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "காலை 6 மணி "
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "மதியம் "
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "வேண்டாம் "
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "இன்று "
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "நாள்காட்டி "
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "நேற்று "
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "நாளை"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/te/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/te/LC_MESSAGES/django.mo
deleted file mode 100644
index 65634a5..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/te/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/te/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/te/LC_MESSAGES/django.po
deleted file mode 100644
index 048de33..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/te/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,845 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# bhaskar teja yerneni <prudhviy@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# ప్రవీణ్ ఇళ్ళ <mail2ipn@gmail.com>, 2011,2013
-# వీవెన్ వీరపనేని <veeven@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/"
-"te/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: te\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s జయప్రదముగా తీసేవేయబడినది."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "%(name)s తొలగించుట వీలుకాదు"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "మీరు ఖచ్చితంగా ఇలా చేయాలనుకుంటున్నారా?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "ఎంచుకోన్న %(verbose_name_plural)s తీసివేయుము "
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "అన్నీ"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "అవును"
-
-#: filters.py:239
-msgid "No"
-msgstr "కాదు"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "తెలియనది"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "ఏ రోజైన"
-
-#: filters.py:309
-msgid "Today"
-msgstr "ఈ రోజు"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "గత 7 రోజుల గా"
-
-#: filters.py:317
-msgid "This month"
-msgstr "ఈ నెల"
-
-#: filters.py:321
-msgid "This year"
-msgstr "ఈ సంవత్సరం"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "దయచేసి మళ్ళీ లాగ్ ఇన్ అవ్వండి ఎందుకంటే మీ భాగము ముగిసింది ."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "చర్య:"
-
-#: models.py:25
-msgid "action time"
-msgstr "పని సమయము "
-
-#: models.py:28
-msgid "object id"
-msgstr "వస్తువు"
-
-#: models.py:29
-msgid "object repr"
-msgstr "వస్తువు"
-
-#: models.py:30
-msgid "action flag"
-msgstr "పని ఫ్లాగ్"
-
-#: models.py:31
-msgid "change message"
-msgstr "సందేశము ని మార్చంది"
-
-#: models.py:36
-msgid "log entry"
-msgstr "లాగ్ ఎంట్రీ"
-
-#: models.py:37
-msgid "log entries"
-msgstr "లాగ్ ఎంట్రీలు"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "వొకటీ లేదు"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr " %s మార్చబడిండి"
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "మరియు"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" జతచేయబడినది."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" కొరకు %(list)s మార్చబడినది."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" తొలగిబడినది"
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "క్షేత్రములు ఏమి మార్చబడలేదు"
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" జయప్రదంగా కలపబడ్డడి. మీరు మళ్ళీ దీనినీ క్రింద మార్చవచ్చు"
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\"జయప్రదంగా కలపబడ్డడి"
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" జయప్రదంగా మార్చబడిండి"
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"అంశములపయి తదుపరి చర్య తీసుకోనటకు వాటిని ఎంపిక చేసుకోవలెను. ప్రస్తుతం ఎటువంటి అంశములు "
-"మార్చబడలేదు."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "మీరు ఎటువంటి చర్య తీసుకొనలేదు "
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%sని జత చేయండి "
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(key)r ప్రధాన కీ గా వున్న %(name)s అంశం ఏమి లేదు."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%sని మార్చుము"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "దత్తాంశస్థానము పొరబాటు "
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s జయప్రదముగా మార్చబడినవి."
-msgstr[1] "%(count)s %(name)s జయప్రదముగా మార్చబడినవి."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s ఎంపికయినది."
-msgstr[1] "అన్ని %(total_count)s ఎంపికయినవి."
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 of %(cnt)s ఎంపికయినవి."
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" జయప్రదంగా తీసివేయబడ్డడి"
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "చరిత్రం మార్చు: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "ప్రవేశించండి"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "సైట్ నిర్వాహణ"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s నిర్వాహణ"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "తారీఖు:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "సమయం:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "అంశ శోధన."
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "మరివొక కలుపు"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "ప్రస్తుతం"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "మార్చు:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "పుట దొరకలేదు"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "క్షమించండి మీరు కోరిన పుట దొరకలేడు"
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "నివాసము"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "సర్వర్ పొరబాటు"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "సర్వర్ పొరబాటు (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "సర్వర్ పొరబాటు <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "ఎంచుకున్న చర్యను నడుపు"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "వెళ్లు"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr ""
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr ""
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "ఎంపికను తుడిచివేయి"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "సుస్వాగతం"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "పత్రీకరణ"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "సంకేతపదాన్ని మార్చుకోండి"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "నిష్క్రమించండి"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "జాంగొ యొక్క నిర్వాహణదారులు"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "జాంగొ నిర్వాహణ"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "చేర్చు"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "చరిత్ర"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "సైట్ లో చూడండి"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "క్రింద ఉన్న తప్పులు సరిదిద్దుకోండి"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s జత చేయు"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "వడపోత"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "క్రమీకరణ నుండి తొలగించు"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "తొలగించు"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "అవును "
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr ""
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "మార్చు"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "మీకు ఏది మార్చటానికి అధికారము లేదు"
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "ఇటీవలి చర్యలు"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "నా చర్యలు"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "ఏమి దొరకలేదు"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "తెలియని విషయం"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "సంకేతపదం:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "మీ సంకేతపదం లేదా వాడుకరిపేరును మర్చిపోయారా?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "తేదీ/సమయం"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "వాడుకరి"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "చర్య"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "అన్నీ చూపించు"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "భద్రపరుచు"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "వెతుకు"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s ఫలితం"
-msgstr[1] "%(counter)s ఫలితాలు"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s మొత్తము"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "కొత్త దాని లా దాచు"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "దాచి కొత్త దానిని కలపండి"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "దాచి మార్చుటా ఉందండి"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "ఒక వాడుకరిపేరు మరియు సంకేతపదాన్ని ప్రవేశపెట్టండి."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "సంకేతపదం"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "సంకేతపదం (మళ్ళీ)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "పైన ఇచ్చిన సంకేతపదాన్నే మళ్ళీ ఇవ్వండి, సరిచూత కోసం."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "తొలగించు"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr ""
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "తొలగించాలా?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr ""
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "మళ్ళీ ప్రవేశించండి"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "అనుమతి పదం మార్పు"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "అనుమతి పదం మార్పు జయప్రదమైండి "
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "మీ అనుమతి పదం మార్చబడిండి"
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"దయచేసి రక్షన కోసము, మీ పాత అనుమతి పదం ఇవ్వండి , కొత్త అనుమతి పదం రెండు సార్లు ఇవ్వండి , "
-"ఎం దుకంటే మీరు తప్పు ఇస్తే సరిచేయటానికి "
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "పాత సంకేతపదం"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "కొత్త సంకేతపదం"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "నా సంకేతపదాన్ని మార్చు"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "అనుమతి పదం తిరిగి అమర్చు"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "అనుమతి పదం తిరిగి మార్చు సంపూర్ణమైనది"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "మీ అనుమతి పదం మర్చుబడినది. మీరు ఇప్పుదు లాగ్ ఇన్ అవ్వచ్చు."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "అనుమతి పదం తిరిగి మార్చు ఖాయం చెయండి"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "కొత్త అనుమతి పదం ప్రవేశపెటండి"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"దయచేసి రక్షన కోసము, మీ పాత అనుమతి పదం ఇవ్వండి , కొత్త అనుమతి పదం రెండు సార్లు ఇవ్వండి , "
-"ఎం దుకంటే మీరు తప్పు ఇస్తే సరిచేయటానికి "
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "కొత్త సంకేతపదం:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "సంకేతపదాన్ని నిర్ధారించండి:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "సంకేతపదపు మార్పు విఫలమైంది"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "సంకేతపదపు మార్పు విజయవంతం"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "మీ వాడుకరిపేరు, ఒక వేళ మీరు మర్చిపోయివుంటే:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "మా సైటుని ఉపయోగిస్తున్నందుకు ధన్యవాదములు!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s జట్టు"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "ఈమెయిలు చిరునామా:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "అనుమతిపదం తిరిగి అమర్చు"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "అన్నీ తేదీలు"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(ఏదీకాదు)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s ని ఎన్నుకోండి"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "%s ని మార్చటానికి ఎన్నుకోండి"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/te/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/te/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index d637565..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/te/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/te/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/te/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 3277c83..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/te/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,170 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# bhaskar teja yerneni <prudhviy@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/"
-"te/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: te\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "ఆందుబాతులోఉన్న %s "
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "వడపోత"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "అన్నీ ఎన్నుకోండి"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "తీసివేయండి"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "ఎన్నుకున్న %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] ""
-msgstr[1] ""
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "ఙాన్వరి ఫిబ్రవరి మార్చి ఎప్రిల్ మే ఙూను ఙులై ఆగష్టు సెప్టెంబర్ అక్టోబర్ నవంబర్ డిసెంబర్"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "ఆ సో మం భు గు శు శ"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "చూపించుము"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "దాచు"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "ఇప్పుడు"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "గడియారము"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "ఒక సమయము ఎన్నుకోండి"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "ఆర్ధరాత్రి"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 a.m"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "మధ్యాహ్నము"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "రద్దు చేయు"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "ఈనాడు"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "కాలెండర్"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "నిన్న"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "రేపు"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/django.mo
deleted file mode 100644
index a847aaa..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/django.po
deleted file mode 100644
index db0f08a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,857 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kowit Charoenratchatabhan <kowit.s.c@gmail.com>, 2013
-# Piti Ongmongkolkul <piti118@gmail.com>, 2012
-# Suteepat Damrongyingsupab <tianissimo@hotmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/"
-"th/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: th\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s ถูกลบเรียบร้อยแล้ว"
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "ไม่สามารถลบ %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "แน่ใจหรือ"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "ลบ %(verbose_name_plural)s ที่เลือก"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "ทั้งหมด"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "ใช่"
-
-#: filters.py:239
-msgid "No"
-msgstr "ไม่ใช่"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "ไม่รู้"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "วันไหนก็ได้"
-
-#: filters.py:309
-msgid "Today"
-msgstr "วันนี้"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "สัปดาห์ที่แล้ว"
-
-#: filters.py:317
-msgid "This month"
-msgstr "เดือนนี้"
-
-#: filters.py:321
-msgid "This year"
-msgstr "ปีนี้"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr "กรุณาใส่ %(username)s และรหัสผ่านให้ถูกต้อง มีการแยกแยะตัวพิมพ์ใหญ่-เล็ก"
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "กรุณาลงชื่อเข้าใช้อีกครั้ง, เนื่องจากคุณไม่ได้ใช้งานนานเกินไป"
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "คำสั่ง :"
-
-#: models.py:25
-msgid "action time"
-msgstr "เวลาลงมือ"
-
-#: models.py:28
-msgid "object id"
-msgstr "อ็อบเจ็กต์ไอดี"
-
-#: models.py:29
-msgid "object repr"
-msgstr "object repr"
-
-#: models.py:30
-msgid "action flag"
-msgstr "action flag"
-
-#: models.py:31
-msgid "change message"
-msgstr "เปลี่ยนข้อความ"
-
-#: models.py:36
-msgid "log entry"
-msgstr "log entry"
-
-#: models.py:37
-msgid "log entries"
-msgstr "log entries"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" ถูกเพิ่ม"
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "\"%(object)s\" ถูกเปลี่ยน - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" ถูกลบ"
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "อ็อบเจ็กต์ LogEntry"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "ไม่มี"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s เปลี่ยนแล้ว"
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "และ"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "เพิ่ม %(name)s \"%(object)s\" แล้ว"
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "เปลี่ยน %(list)s สำหรับ %(name)s \"%(object)s\" แล้ว"
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "ลบ %(name)s \"%(object)s\" แล้ว"
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "ไม่มีฟิลด์ใดถูกเปลี่ยน"
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "เพิ่ม %(name)s \"%(obj)s\" เรียบร้อยแล้ว แก้ไขได้อีกที่ด้านล่าง"
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr "เพิ่ม %(name)s \"%(obj)s\" เรียบร้อยแล้ว เพิ่ม %(name)s ได้อีกที่ด้านล่าง"
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "เพิ่ม %(name)s \"%(obj)s\" เรียบร้อยแล้ว"
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr "เปลี่ยนแปลง %(name)s \"%(obj)s\" เรียบร้อยแล้ว แก้ไขได้อีกที่ด้านล่าง"
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr "เปลี่ยนแปลง %(name)s \"%(obj)s\" เรียบร้อยแล้ว เพิ่ม %(name)s ได้อีกที่ด้านล่าง"
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "เปลี่ยนแปลง %(name)s \"%(obj)s\" เรียบร้อยแล้ว"
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"ไม่มีรายการใดถูกเปลี่ยน\n"
-"รายการจะต้องถูกเลือกก่อนเพื่อที่จะทำตามคำสั่งได้"
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "ไม่มีคำสั่งที่ถูกเลือก"
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "เพิ่ม %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "Primary key %(key)r ของอ็อบเจ็กต์ %(name)s ไม่มีอยู่"
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "เปลี่ยน %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "เกิดความผิดพลาดที่ฐานข้อมูล"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(name)s จำนวน %(count)s อันได้ถูกเปลี่ยนแปลงเรียบร้อยแล้ว."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s ได้ถูกเลือก"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "เลือก 0 จาก %(cnt)s"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "ลบ %(name)s \"%(obj)s\" เรียบร้อยแล้ว"
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "เปลี่ยนแปลงประวัติ: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "เข้าสู่ระบบ"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "การจัดการไซต์"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s การจัดการ"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "วันที่ :"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "เวลา :"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "ดูที่"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "เพิ่มอีก"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "ปัจจุบัน:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "เปลี่ยนเป็น:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "ไม่พบหน้านี้"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "เสียใจด้วย ไม่พบหน้าที่ต้องการ"
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "หน้าหลัก"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "เซิร์ฟเวอร์ขัดข้อง"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "เซิร์ฟเวอร์ขัดข้อง (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "เซิร์ฟเวอร์ขัดข้อง <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"เกิดเหตุขัดข้องขี้น ทางเราได้รายงานไปยังผู้ดูแลระบบแล้ว และจะดำเนินการแก้ไขอย่างเร่งด่วน "
-"ขอบคุณสำหรับการรายงานความผิดพลาด"
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "รันคำสั่งที่ถูกเลือก"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "ไป"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "คลิกที่นี่เพื่อเลือกอ็อบเจ็กต์จากหน้าทั้งหมด"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "เลือกทั้งหมด %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "เคลียร์ตัวเลือก"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "ยินดีต้อนรับ,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "เอกสารประกอบ"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "เปลี่ยนรหัสผ่าน"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "ออกจากระบบ"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "ผู้ดูแลระบบ Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "การจัดการ Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "เพิ่ม"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "ประวัติ"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "ดูที่หน้าเว็บ"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "โปรดแก้ไขข้อผิดพลาดด้านล่าง"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "เพิ่ม %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "ตัวกรอง"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "เอาออกจาก sorting"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "ลำดับการ sorting: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "เปิด/ปิด sorting"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "ลบ"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"กำลังดำเนินการลบ %(object_name)s '%(escaped_object)s'และจะแสดงผลการลบ "
-"แต่บัญชีของคุณไม่สามารถทำการลบข้อมูลชนิดนี้ได้"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"การลบ %(object_name)s '%(escaped_object)s' จำเป็นจะต้องลบอ็อบเจ็กต์ที่เกี่ยวข้องต่อไปนี้:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"คุณแน่ใจหรือที่จะลบ %(object_name)s \"%(escaped_object)s\"?"
-"ข้อมูลที่เกี่ยวข้องทั้งหมดจะถูกลบไปด้วย:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "ใช่, ฉันแน่ใจ"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "ลบหลายอ็อบเจ็กต์"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"การลบ %(objects_name)s ที่เลือก จะทำให้อ็อบเจ็กต์ที่เกี่ยวข้องถูกลบไปด้วย "
-"แต่บัญชีของคุณไม่มีสิทธิ์ที่จะลบอ็อบเจ็กต์ชนิดนี้"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr "การลบ %(objects_name)s ที่ถูกเลือก จำเป็นจะต้องลบอ็อบเจ็กต์ที่เกี่ยวข้องต่อไปนี้:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"คุณแน่ใจหรือว่า ต้องการลบ %(objects_name)s ที่ถูกเลือก? เนื่องจากอ็อบเจ็กต์ "
-"และรายการที่เกี่ยวข้องทั้งหมดต่อไปนี้จะถูกลบด้วย"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " โดย %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "โมเดลในแอป %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "เปลี่ยนแปลง"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "คุณไม่สิทธิ์ในการเปลี่ยนแปลงข้อมูลใดๆ ได้"
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "คำสั่งที่ผ่านมา"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "คำสั่งของฉัน"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "ไม่ว่าง"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "ไม่ทราบเนื้อหา"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"มีสิ่งผิดปกติเกิดขึ้นกับการติดตั้งฐานข้อมูล กรุณาตรวจสอบอีกครั้งว่าฐานข้อมูลได้ถูกติดตั้งแล้ว "
-"หรือฐานข้อมูลสามารถอ่านและเขียนได้โคยผู้ใช้นี้"
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "รหัสผ่าน:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "ลืมรหัสผ่านหรือชื่อผู้ใช้ของคุณหรือไม่"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "วันที่/เวลา"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "ผู้ใช้"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "คำสั่ง"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr "อ็อบเจ็กต์นี้ไม่ได้แก้ไขประวัติ เป็นไปได้ว่ามันอาจจะไม่ได้ถูกเพิ่มเข้าไปโดยระบบ"
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "แสดงทั้งหมด"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "บันทึก"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "ค้นหา"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s ผลลัพธ์"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s ทั้งหมด"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "บันทึกใหม่"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "บันทึกและเพิ่ม"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "บันทึกและกลับมาแก้ไข"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr "ขั้นตอนแรก ใส่ชื่อผู้ใช้และรหัสผ่าน หลังจากนั้นคุณจะสามารถแก้ไขข้อมูลผู้ใช้ได้มากขึ้น"
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "กรุณาใส่ชื่อผู้ใช้และรหัสผ่าน"
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "ใส่รหัสผ่านใหม่สำหรับผู้ใช้ <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "รหัสผ่าน"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "รหัสผ่าน (อีกครั้ง)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "ใส่รหัสผ่านเหมือนด้านบน เพื่อตรวจสอบความถูกต้อง"
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "ถอดออก"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "เพิ่ม %(verbose_name)s อีก"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "ลบ?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "ขอบคุณที่สละเวลาอันมีค่าให้กับเว็บไซต์ของเราในวันนี้"
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "เข้าสู่ระบบอีกครั้ง"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "เปลี่ยนรหัสผ่าน"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "เปลี่ยนรหัสผ่านสำเร็จ"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "รหัสผ่านของคุณถูกเปลี่ยนไปแล้ว"
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"กรุณาใส่รหัสผ่านเดิม ด้วยเหตุผลทางด้านการรักษาความปลอดภัย "
-"หลังจากนั้นให้ใส่รหัสผ่านใหม่อีกสองครั้ง เพื่อตรวจสอบว่าคุณได้พิมพ์รหัสอย่างถูกต้อง"
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "รหัสผ่านเก่า"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "รหัสผ่านใหม่"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "เปลี่ยนรหัสผ่านของฉัน"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "ตั้งค่ารหัสผ่านใหม่"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "ตั้งค่ารหัสผ่านใหม่เรียบร้อย"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "รหัสผ่านของคุณได้รับการตั้งค่าแล้ว คุณสามารถเข้าสู่ระบบได้ทันที"
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "การยืนยันตั้งค่ารหัสผ่านใหม่"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "ใส่รหัสผ่านใหม่"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr "กรุณาใส่รหัสผ่านใหม่สองครั้ง เพื่อตรวจสอบว่าคุณได้พิมพ์รหัสอย่างถูกต้อง"
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "รหัสผ่านใหม่:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "ยืนยันรหัสผ่าน:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "การตั้งค่ารหัสผ่านใหม่ ไม่สำเร็จ"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"การตั้งรหัสผ่านใหม่ไม่สำเร็จ เป็นเพราะว่าหน้านี้ได้ถูกใช้งานไปแล้ว กรุณาทำการตั้งรหัสผ่านใหม่อีกครั้ง"
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "การตั้งค่ารหัสผ่านใหม่เรียบร้อย"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr "เราได้ส่งอีเมลวิธีการตั้งรหัสผ่าน ไปที่อีเมลที่คุณให้ไว้เรียบร้อยแล้ว และคุณจะได้รับเร็วๆ นี้"
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"หากคุณไม่ได้รับอีเมล โปรดให้แน่ใจว่าคุณได้ป้อนอีเมลที่คุณลงทะเบียน "
-"และตรวจสอบโฟลเดอร์สแปมของคุณแล้ว"
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"คุณได้รับอีเมล์ฉบับนี้ เนื่องจากคุณส่งคำร้องขอเปลี่ยนรหัสผ่านสำหรับบัญชีผู้ใช้ของคุณที่ %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "กรุณาไปที่หน้านี้และเลือกรหัสผ่านใหม่:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "ชื่อผู้ใช้ของคุณ ในกรณีที่คุณถูกลืม:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "ขอบคุณสำหรับการใช้งานเว็บไซต์ของเรา"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s ทีม"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr "ลืมรหัสผ่าน? กรุณาใส่อีเมลด้านล่าง เราจะส่งวิธีการในการตั้งรหัสผ่านใหม่ไปให้คุณทางอีเมล"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "อีเมล:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "ตั้งรหัสผ่านของฉันใหม่"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "ทุกวัน"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(ว่างเปล่า)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "เลือก %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "เลือก %s เพื่อเปลี่ยนแปลง"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 2fad245..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/djangojs.po
deleted file mode 100644
index ddc0259..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/th/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,181 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kowit Charoenratchatabhan <kowit.s.c@gmail.com>, 2011-2012
-# Suteepat Damrongyingsupab <tianissimo@hotmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/"
-"th/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: th\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "%sที่มีอยู่"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"นี่คือรายการที่ใช้ได้ของ %s คุณอาจเลือกบางรายการโดยการเลือกไว้ในกล่องด้านล่างแล้วคลิกที่ปุ่ม "
-"\"เลือก\" ระหว่างสองกล่อง"
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "พิมพ์ลงในช่องนี้เพื่อกรองรายการที่ใช้ได้ของ %s"
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "ตัวกรอง"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "เลือกทั้งหมด"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "คลิกเพื่อเลือก %s ทั้งหมดในครั้งเดียว"
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "เลือก"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "ลบออก"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%sที่ถูกเลือก"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"นี่คือรายการที่ถูกเลือกของ %s คุณอาจเอาบางรายการออกโดยการเลือกไว้ในกล่องด้านล่างแล้วคลิกที่ปุ่ม "
-"\"เอาออก\" ระหว่างสองกล่อง"
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "เอาออกทั้งหมด"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "คลิกเพื่อเอา %s ออกทั้งหมดในครั้งเดียว"
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s จาก %(cnt)s selected"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"คุณยังไม่ได้บันทึกการเปลี่ยนแปลงในแต่ละฟิลด์ ถ้าคุณเรียกใช้คำสั่ง "
-"ข้อมูลที่ไม่ได้บันทึกการเปลี่ยนแปลงของคุณจะหายไป"
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"คุณได้เลือกคำสั่ง แต่คุณยังไม่ได้บันทึกการเปลี่ยนแปลงของคุณไปยังฟิลด์ กรุณาคลิก OK เพื่อบันทึก "
-"คุณจะต้องเรียกใช้คำสั่งใหม่อีกครั้ง"
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"คุณได้เลือกคำสั่งและคุณยังไม่ได้ทำการเปลี่ยนแปลงใด ๆ ในฟิลด์ คุณอาจมองหาปุ่มไปมากกว่าปุ่มบันทึก"
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"มกราคม กุมภาพันธ์ มีนาคม เมษายน พฤษภาคม มิถุนายน กรกฎาคม สิงหาคม กันยายน ตุลาคม "
-"พฤศจิกายน ธันวาคม"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "อา. จ. อ. พ. พฤ. ศ. ส."
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "แสดง"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "ซ่อน"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "ขณะนี้"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "นาฬิกา"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "เลือกเวลา"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "เที่ยงคืน"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "หกโมงเช้า"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "เที่ยงวัน"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "ยกเลิก"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "วันนี้"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "ปฏิทิน"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "เมื่อวาน"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "พรุ่งนี้"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/django.mo
deleted file mode 100644
index 418fee6..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/django.po
deleted file mode 100644
index e3d7150..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,889 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Caner BAŞARAN <basaran.caner@gmail.com>, 2013
-# cihad <cihadgundogdu@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# mesutcang <mesutcang@gmail.com>, 2013
-# Murat Sahin <martinamca@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-24 13:14+0000\n"
-"Last-Translator: Caner BAŞARAN <basaran.caner@gmail.com>\n"
-"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/"
-"tr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d adet %(items)s başarıyla silindi."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "%(name)s silinemedi"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Emin misiniz?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Seçili %(verbose_name_plural)s nesnelerini sil"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Tümü"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Evet"
-
-#: filters.py:239
-msgid "No"
-msgstr "Hayır"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Bilinmiyor"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Herhangi bir tarih"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Bugün"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Son 7 gün"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Bu ay"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Bu yıl"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Lütfen yönetici hesap için %(username)s ve parolanızı doğru giriniz. İkisi "
-"de küçük harfe duyarlıdır."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Oturumunuzun süresi geçti. Lütfen tekrar giriş yapın."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "İşlem:"
-
-#: models.py:25
-msgid "action time"
-msgstr "işlem zamanı"
-
-#: models.py:28
-msgid "object id"
-msgstr "nesne no"
-
-#: models.py:29
-msgid "object repr"
-msgstr "nesne kodu"
-
-#: models.py:30
-msgid "action flag"
-msgstr "işlem adı"
-
-#: models.py:31
-msgid "change message"
-msgstr "mesajı değiştir"
-
-#: models.py:36
-msgid "log entry"
-msgstr "log girdisi"
-
-#: models.py:37
-msgid "log entries"
-msgstr "log girdileri"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" eklendi."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "\"%(object)s\" değiştirildi - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" silindi."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "LogEntry Nesnesi"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Hiç biri"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s değiştirildi."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "ve"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" eklenmiştir."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(list)s %(name)s \"%(object)s\" ile değiştirildi."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" silinmiştir."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Hiçbir alan değiştirilmedi."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"\"%(obj)s\" isimli %(name)s eklendi. Aşağıda tekrar düzenleyebilirsiniz."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" başarıyla eklendi. Aşağıda başka %(name)s "
-"ekleyebilirsiniz."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "\"%(obj)s\" isimli %(name)s eklendi."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" başarıyla değiştirildi. Aşağıda tekrar "
-"düzenleyebilirsiniz."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" başarıyla değiştirildi. Aşağıda başka %(name)s "
-"ekleyebilirsiniz."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "\"%(obj)s\" isimli %(name)s değiştirildi."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"İşlemlerin uygulanabilmesi için bir veya daha fazla nesne seçilmelidir. "
-"Herhangi bir değişiklik gerçekleştirilmedi."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "İşlem seçimi yapılmamış. Lütfen bir işlem seçiniz."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%s ekle"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(key)r birincil anahtarına sahip %(name)s nesnesi mevcut değil."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s değiştir"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Veritabanı hatası"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s adet %(name)s başarıyla değiştirildi."
-msgstr[1] "%(count)s adet %(name)s başarıyla değiştirildi."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "Toplam %(total_count)s nesne seçili"
-msgstr[1] "Toplam %(total_count)s nesne seçili"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "%(cnt)s nesne arasından seçim yapılmamış"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "\"%(obj)s\" isimli %(name)s silindi."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "%s için değişiklik geçmişi:"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' silinmesi aşağıda gösterilen ilişkili "
-"korunan nesnelerin de silinmesini gerektirir:"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Giriş yap"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Site yönetimi"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s yönetimi"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Tarih:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Saat:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Arama"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Yenisini Ekle"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Şu anda:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Değiştirin:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Sayfa bulunamadı"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Üzgünüz, aradığınız sayfa bulunamadı."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Anasayfa"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Sunucu hatası"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Sunucu hatası (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Sunucu Hatası <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Bir hata oluştu. Site yöneticilerine e-posta ile rapor edildi ve kısa süre "
-"içinde düzeltilecek. Sabrınız için teşekkür ederiz."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Seçili işlemi uygula"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Git"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Tüm sayfalardaki nesneleri seçmek için buraya tıklayınız"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Tüm %(total_count)s %(module_name)s nesnelerini seç"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Seçimi kaldır"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Hoşgeldiniz,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Dokümantasyon"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Şifre değiştir"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Çık"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django site yöneticisi"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django yönetimi"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Yeni"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Geçmiş"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Sitede görüntüle"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Lütfen aşağıdaki hataları düzeltin."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr "Lütfen aşağıdaki hataları düzeltin."
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Yeni %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Filtrele"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Sıralamadan çıkar"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Sıralama önceliği: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Sıralama tercihi"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Sil"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"'%(escaped_object)s' isimli %(object_name)s nesnesini silmek, bağlantılı "
-"nesnelerin silinmesini gerektiriyor, ancak aşağıdaki nesneleri silme "
-"yetkiniz yok."
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' silinmesi aşağıda gösterilen ilişkili "
-"nesnelerin de silinmesini gerektirir:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"\"%(escaped_object)s\" isimli %(object_name)s nesnesini silmek "
-"istediğinizden emin misiniz? Aşağıdaki bağlantılı öğeler silinecek:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Evet, eminim"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Birden fazla nesneyi sil"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Seçili %(objects_name)s nesnelerinin silinmesi hesabınızın silme yetkisine "
-"sahip olmadığı aşağıda gösterilen nesnelerin de silinmesini gerektirir:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Seçili %(objects_name)s nesnelerinin silinmesi aşağıda gösterilen ilişkili "
-"nesnelerin silinmesini de gerektirir:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Seçili %(objects_name)s nesnelerini silmek istediğinizden emin misiniz? "
-"Aşağıda gösterilen tüm nesneler ve ilişkili kalemler silinecektir:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " %(filter_title)s filtresi"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "%(name)s uygulamasındaki modeller"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Düzenle"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Düzenleme yapmaya yetkiniz yok."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "İşlem Geçmişi"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "İşlemlerim"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "İşlem geçmişi bulunamadı"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Bilinmeyen içerik"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Veritabanı kurulumu ile ilgili bir problem var. İlgili veritabanı "
-"tablolarının kurulu olduğundan ve veritabanının ilgili kullanıcı tarafından "
-"okunabilir olduğundan emin olun."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Şifre:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Kullanıcı adını veya parolanı mı unuttun?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Tarih/saat"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Kullanıcı"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "İşlem"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Bu nesnenin işlem geçmişi yok. Muhtemelen yönetici sayfası dışında bir "
-"yerden eklendi."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Tümünü göster"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Kaydet"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Ara"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s sonuç"
-msgstr[1] "%(counter)s sonuç"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "toplam %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Yeni olarak kaydet"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Kaydet ve yenisini ekle"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Kaydet ve düzenlemeye devam et"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Önce bir kullanıcı adı ve şifre girin. Daha sonra daha fazla bilgi "
-"girebilirsiniz."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Kullanıcı adı ve şifre girin."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "<strong>%(username)s</strong> için yeni şifre girin."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Şifre"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Şifre (tekrar)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Onaylamak için, yukarıdaki şifrenin aynısını girin."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Sil"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Yeni bir %(verbose_name)s ekle"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Silinsin Mi?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Web sitesinde bugün geçirdiğiniz zaman için teşekkür ederiz."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Tekrar giriş yap"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Şifre değişimi"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Şifre değişimi başarılı"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Şifreniz değiştirildi."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Güvenliğiniz için, lütfen eski şifrenizi girin, sonra yeni şifrenizi iki "
-"kere girerek doğru yazdığınızdan emin olun."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Eski şifre"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Yeni şifre"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Şifremi değiştir"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Şifreyi sıfırla"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Şifre sıfırlama tamamlandı"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Şifreniz atanmıştır. Şimdi sisteme giriş yapabilirsiniz."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Şifre sıfırlama onayı"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Yeni şifreyi girin"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Lütfen yeni şifrenizi iki kere girin, böylece doğru yazdığınızdan emin olun."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Yeni şifre:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Şifreyi onayla:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Şifre sıfırlaması başarısız oldu"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Şifre sıfırlama linki geçersiz bulunmuştur, büyük ihtimalle daha önce "
-"kullanılmış olduğu içindir. Lütfen yeni bir şifre sıfırlama talebinde "
-"bulunun."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Şifre başarıyla sıfırlandı"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Şifrenizin ayarlanması ile ilgili talimatlar, belirtmiş olduğunuz e-posta "
-"adresine gönderildi. Yakın zamanda ulaşması beklenir."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Eğer bir e-posta almadıysanız, lütfen kayıt olurken kullandığınız e-posta "
-"adresini girdiğinizden emin olun. Spam klasörünü kontrol edin."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Bu postayı %(site_name)s sitesindeki kullanıcı hesabınıza ait şifrenizi "
-"sıfırlama talebinde bulunduğunuz için alıyorsunuz."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Lütfen bu sayfaya gidip yeni şifre seçin:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Unutma ihtimaline karşı, kullanıcı adınız:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Sitemizi kullandığınız için teşekkürler!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s Ekibi"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Şifrenizi mi unuttunuz? Aşağıdaki alana e-posta adresinizi girin, yeni "
-"şifreniz için gereken talimatları göndereceğiz."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "E-posta adresi:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Şifremi sıfırla"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Tüm tarihler"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Yok)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s seç"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Değiştirilecek %s nesnesini seçin"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index b436318..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 56fe9a7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/tr/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,183 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Metin Amiroff <amiroff@gmail.com>, 2011
-# Murat Çorlu <muratcorlu@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/"
-"tr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Toplam %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Bu uygun %s listesidir. Aşağıdaki kutudan bazılarını işaretleyip, iki kutu "
-"arasındaki \"Seç\" okuna basarak seçebilirsiniz."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Uygun %s listesini filtrelemek için bu kutuya yazın."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Filtre"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Hepsini seç"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Bütün %s bir kerede seçilsin istiyorsanız tıklayın. "
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Seç"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Kaldır"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Seçilen %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Bu seçili %s listesidir. Aşağıdaki kutudan bazılarını işaretleyip, iki kutu "
-"arasındaki \"Kaldır\" okuna tıklayarak kaldırabilirsiniz."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Hepsini kaldır"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Bütün seçili %s kaldırılsın istiyorsanız tıklayın."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(sel)s / %(cnt)s seçili"
-msgstr[1] "%(sel)s / %(cnt)s seçili"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Alanlara girilmiş ve henüz kaydedilmemiş değişiklikler mevcut. Eğer devam "
-"ederseniz, kaydedilmemiş değişiklikleriniz yitirilecektir."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Bir işlem seçtiniz, fakat bazı alanlardaki değişiklikleri henüz "
-"kaydetmediniz. Kaydetmek için lütfen Tamam düğmesine tıklayınız. İşlemi "
-"tekrarlamanız gerekecektir."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Bir işlem seçtiniz, fakat hiçbir alan üzerinde değişiklik yapmadınız. Bu "
-"durumda Kaydet düğmesi yerine Git düğmesini kullanmanız önerilir."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Ocak Şubat Mart Nisan Mayıs Haziran Temmuz Ağustos Eylül Ekim Kasım Aralık"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "P P S Ç P C C"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Göster"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Gizle"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Şimdi"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Saat"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Saat seçin"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Geceyarısı"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "Sabah 6"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Öğle"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "İptal"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Bugün"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Takvim"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Dün"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Yarın"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/tt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/tt/LC_MESSAGES/django.mo
deleted file mode 100644
index dfb586d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/tt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/tt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/tt/LC_MESSAGES/django.po
deleted file mode 100644
index a7950c1..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/tt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,861 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Azat Khasanshin <lordofbazuks@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/"
-"tt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tt\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s уңышлы рәвештә бетерелгән."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "%(name)s бетереп булмады"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Сез инанып карар кылдыгызмы?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Сайланган %(verbose_name_plural)s бетерергә"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Барысы"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Әйе"
-
-#: filters.py:239
-msgid "No"
-msgstr "Юк"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Билгесез"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Теләсә нинди көн һәм вакыт"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Бүген"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Соңгы 7 көн"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Бу ай"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Бу ел"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Сезнең эш сеансыгыз искергән, зинһар, яңадан керегез."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Гамәл:"
-
-#: models.py:25
-msgid "action time"
-msgstr "гамәл вакыты"
-
-#: models.py:28
-msgid "object id"
-msgstr "объект идентификаторы"
-
-#: models.py:29
-msgid "object repr"
-msgstr "объект фаразы"
-
-#: models.py:30
-msgid "action flag"
-msgstr "гамәл тибы"
-
-#: models.py:31
-msgid "change message"
-msgstr "үзгәрү белдерүе"
-
-#: models.py:36
-msgid "log entry"
-msgstr "журнал язмасы"
-
-#: models.py:37
-msgid "log entries"
-msgstr "журнал язмалары"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Юк"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s үзгәртелгән."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "һәм"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" өстәлгән."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" өчен %(list)s үзгәртелгән."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" бетерелгән."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Үзгәртелгән кырлар юк."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" үңышлы рәвештә өстәлгән. Астарак сез аны тагын бер кат "
-"төзәтә аласыз."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" үңышлы рәвештә өстәлгән."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" уңышлы рәвештә үзгәртелгән."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Элементар өстеннән гамәл кылу өчен алар сайланган булырга тиеш. Элементлар "
-"үзгәртелмәгән."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Гамәл сайланмаган."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%s өстәргә"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(key)r беренчел ачкыч белән булган %(name)s юк."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s үзгәртергә"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Бирелмәләр базасы хатасы"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s уңышлы рәвештә үзгәртелгән."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s сайланган"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "Барлык %(cnt)s объектан 0 сайланган"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" уңышлы рәвештә бетерелгән."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Үзгәртү тарихы: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Керергә"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Сайт идарәсе"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s идарә итү"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Көн:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Вакыт:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Эзләү"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Тагын өстәргә"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Сәхифә табылмаган"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Кызганычка каршы, соралган сәхифә табылмады."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Башбит"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Сервер хатасы"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Сервер хатасы (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Сервер хатасы <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Сайланган гамәлне башкарырга"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Башкарырга"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Барлык сәхифәләрдә булган объектларны сайлау өчен монда чирттерегез"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Бөтен %(total_count)s %(module_name)s сайларга"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Сайланганлыкны алырга"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Рәхим итегез,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Документация"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Серсүзне үзгәртергә"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Чыгарга"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django сайты идарәсе"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django идарәсе"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Өстәргә"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Тарих"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Сайтта карарга"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Зинһар, биредәге хаталарны төзәтегез."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s өстәргә"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Филтер"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Бетерергә"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' бетереүе аның белән бәйләнгән "
-"объектларның бетерелүенә китерә ала, әмма сезнең хисап язмагызның киләсе "
-"объект тибларын бетерү өчен хокуклары җитми:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' бетерүе киләсе сакланган объектларның "
-"бетерелүен таләп итә:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Сез инанып %(object_name)s \"%(escaped_object)s\" бетерергә телисезме? "
-"Барлык киләсе бәйләнгән объектлар да бетерелер:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Әйе, мин инандым"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Берничә объектны бетерергә"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Сайланган %(objects_name)s бетерүе аның белән бәйләнгән объектларның "
-"бетерелүенә китерә ала, әмма сезнең хисап язмагызның киләсе объект тибларын "
-"бетерү өчен хокуклары җитми:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"%(objects_name)s бетерүе киләсе аның белән бәйләнгән сакланган объектларның "
-"бетерелүен таләп итә:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Сез инанып %(objects_name)s бетерергә телисезме? Барлык киләсе объектлар һәм "
-"алар белән бәйләнгән элементлар да бетерелер:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "%(filter_title)s буенча"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Үзгәртергә"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Төзәтү өчен хокукларыгыз җитми."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Соңгы гамәлләр"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Минем гамәлләр"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Тарих юк"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Билгесез тип"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Сезнең бирелмәләр базасы дөрес итем көйләнмәгән. Тиешле җәдвәлләр төзелгәнен "
-"һәм тиешле кулланучының хокуклары җитәрлек булуын тикшерегез."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Серсүз:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr ""
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Көн һәм вакыт"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Кулланучы"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Гамәл"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Әлеге объектның үзгәртү тарихы юк. Бу идарә итү сайты буенча өстәлмәгән "
-"булуы ихтимал."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Бөтенесен күрсәтергә"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Сакларга"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Эзләргә"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s нәтиҗә"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "барлыгы %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Яңа объект итеп сакларга"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Сакларга һәм бүтән объектны өстәргә"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Сакларга һәм төзәтүне дәвам итәргә"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Баштан логин һәм серсүзне кертегез. Аннан соң сез кулланучы турында күбрәк "
-"мәгълүматне төзәтә алырсыз."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Логин һәм серсүзне кертегез."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "<strong>%(username)s</strong> кулланучы өчен яңа серсүзне кертегез."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Серсүз"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Серсүз (тагын бер тапкыр)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Тикшерү өчен шул ук серсүзне яңадан кертегез."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Бетерергә"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Тагын бер %(verbose_name)s өстәргә"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Бетерергә?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Сайтыбызда үткәргән вакыт өчен рәхмәт."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Тагын керергә"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Серсүзне үзгәртү"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Серсүз уңышлы рәвештә үзгәртелгән"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Серсүзегез үзгәртелгән."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Хәвефсезлек сәбәпле, зинһар, үзегезнең иске серсүзне кертегез, аннан яңа "
-"серсүзне ике тапкыр кертегез (дөрес язылышын тикшерү өчен)."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Иске серсүз"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Яңа серсүз"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Серсүземне үзгәртергә"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Серсүзне торгызу"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Серсүзне торгызу тәмамланган"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Серсүзегез үзгәртелгән. Сез хәзер керә аласыз."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Серсүзне торгызу раслау"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Яңа серсүзне кертегез:"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr "Зинһар, тикшерү өчен яңа серсүзегезне ике тапкыр кертегез."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Яңа серсуз:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Серсүзне раслагыз:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Серсүзне торгызу хатасы"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Серсүзне торгызу өчен сылтама хаталы. Бәлки аның белән инде кулланганнар. "
-"Зинһар, серсүзне тагын бер тапкыр торгызып карагыз."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Серсүз уңышлы рәвештә торгызылган"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Зинһар, бу сәхифәгә юнәлегез һәм яңа серсүзне кертегез:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Сезнең кулланучы исемегез (оныткан булсагыз):"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Безнең сайтны куллану өчен рәхмәт!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s сайтының төркеме"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Серсүземне торгызырга"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Бөтен көннәр"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Юк)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s сайлагыз"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Үзгәртү өчен %s сайлагыз"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index ed14ab9..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.po
deleted file mode 100644
index cee75ab..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/tt/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,177 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Azat Khasanshin <lordofbazuks@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/"
-"tt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tt\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Рөхсәт ителгән %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Фильтр"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Барысын сайларга"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Бетерергә"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Сайланган %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(cnt)s арасыннан %(sel)s сайланган"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Кайбер кырларда сакланмаган төзәтүләр кала. Сез гамәлне башкарсагыз, сезнең "
-"сакланмаган үзгәртүләр югалачаклар."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Сез гамәлне сайладыгыз, әмма кайбер кырлардагы төзәтүләрне сакламадыгыз. "
-"Аларны саклау өчен OK төймәсенә басыгыз. Аннан соң гамәлне тагын бер тапкыр "
-"башкарырга туры килер."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Сез гамәлне сайладыгыз һәм төзәтүләрне башкармадыгыз. Бәлки сез \"Сакларга\" "
-"төймәсе урынына \"Башкарырга\" төймәсен кулланырга теләдегез."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Гыйнвар Февраль Март Апрель Май Июнь Июль Август Сентябрь Октябрь Ноябрь "
-"Декабрь"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "Я Д С Ч П Җ Ш"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Күрсәтергә"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Яшерергә"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Хәзер"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Сәгатьләр"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Вакыт сайлагыз"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Төн уртасы"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "Иртәнге 6"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Төш"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Юкка чыгарырга"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Бүген"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Календарь"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Кичә"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Иртәгә"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/udm/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/udm/LC_MESSAGES/django.mo
deleted file mode 100644
index 1e99b3a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/udm/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/udm/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/udm/LC_MESSAGES/django.po
deleted file mode 100644
index dd9505e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/udm/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,832 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Udmurt (http://www.transifex.com/projects/p/django/language/"
-"udm/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: udm\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr ""
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr ""
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr ""
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr ""
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr ""
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Бен"
-
-#: filters.py:239
-msgid "No"
-msgstr ""
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Тодымтэ"
-
-#: filters.py:308
-msgid "Any date"
-msgstr ""
-
-#: filters.py:309
-msgid "Today"
-msgstr ""
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr ""
-
-#: filters.py:317
-msgid "This month"
-msgstr ""
-
-#: filters.py:321
-msgid "This year"
-msgstr ""
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr ""
-
-#: helpers.py:23
-msgid "Action:"
-msgstr ""
-
-#: models.py:25
-msgid "action time"
-msgstr ""
-
-#: models.py:28
-msgid "object id"
-msgstr ""
-
-#: models.py:29
-msgid "object repr"
-msgstr ""
-
-#: models.py:30
-msgid "action flag"
-msgstr ""
-
-#: models.py:31
-msgid "change message"
-msgstr ""
-
-#: models.py:36
-msgid "log entry"
-msgstr ""
-
-#: models.py:37
-msgid "log entries"
-msgstr ""
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr ""
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr ""
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr ""
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr ""
-
-#: options.py:781
-msgid "No fields changed."
-msgstr ""
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr ""
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr ""
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-
-#: options.py:1037
-msgid "No action selected."
-msgstr ""
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr ""
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr ""
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr ""
-
-#: options.py:1257
-msgid "Database error"
-msgstr ""
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] ""
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] ""
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr ""
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr ""
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr ""
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr ""
-
-#: sites.py:386
-msgid "Site administration"
-msgstr ""
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr ""
-
-#: widgets.py:90
-msgid "Date:"
-msgstr ""
-
-#: widgets.py:91
-msgid "Time:"
-msgstr ""
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr ""
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr ""
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr ""
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr ""
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr ""
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr ""
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr ""
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr ""
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr ""
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr ""
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr ""
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr ""
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr ""
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr ""
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr ""
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr ""
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr ""
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr ""
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr ""
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr ""
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr ""
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr ""
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr ""
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr ""
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr ""
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Ӵушоно"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr ""
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Тупатъяно"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr ""
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr ""
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr ""
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr ""
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr ""
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr ""
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr ""
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr ""
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr ""
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr ""
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr ""
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr ""
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] ""
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr ""
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr ""
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr ""
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr ""
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr ""
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr ""
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr ""
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr ""
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr ""
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr ""
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr ""
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr ""
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr ""
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr ""
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr ""
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr ""
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr ""
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr ""
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr ""
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr ""
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr ""
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr ""
-
-#: views/main.py:35
-msgid "(None)"
-msgstr ""
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr ""
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 26dcca1..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 77aaf06..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/udm/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,167 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-23 02:35+0100\n"
-"PO-Revision-Date: 2011-01-19 15:01+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Udmurt (http://www.transifex.com/projects/p/django/language/"
-"udm/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: udm\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] ""
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-
-#: static/admin/js/calendar.js:26
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-
-#: static/admin/js/calendar.js:27
-msgid "S M T W T F S"
-msgstr ""
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr ""
-
-#: static/admin/js/collapse.js:15 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:49
-#: static/admin/js/admin/DateTimeShortcuts.js:85
-msgid "Now"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:53
-msgid "Clock"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:81
-msgid "Choose a time"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:86
-msgid "Midnight"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:87
-msgid "6 a.m."
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Noon"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:92
-#: static/admin/js/admin/DateTimeShortcuts.js:204
-msgid "Cancel"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:144
-#: static/admin/js/admin/DateTimeShortcuts.js:197
-msgid "Today"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-msgid "Calendar"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:195
-msgid "Yesterday"
-msgstr ""
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Tomorrow"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/uk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/uk/LC_MESSAGES/django.mo
deleted file mode 100644
index 8ae976c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/uk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/uk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/uk/LC_MESSAGES/django.po
deleted file mode 100644
index 64e230e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/uk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,887 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Boryslav Larin <brabadu@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sergiy Kuzmenko <s.kuzmenko@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Успішно видалено %(count)d %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Не можу видалити %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Ви впевнені?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Видалити обрані %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Всі"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Так"
-
-#: filters.py:239
-msgid "No"
-msgstr "Ні"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Невідомо"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Будь-яка дата"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Сьогодні"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "Останні 7 днів"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Цього місяця"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Цього року"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Будь ласка, введіть правильні %(username)s і пароль для облікового запису "
-"персоналу. Зауважте, що обидва поля можуть бути чутливі до регістру."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Будь ласка, увійдіть знову, ваша сесія закінчилася."
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Дія:"
-
-#: models.py:25
-msgid "action time"
-msgstr "час дії"
-
-#: models.py:28
-msgid "object id"
-msgstr "id об'єкту"
-
-#: models.py:29
-msgid "object repr"
-msgstr "представлення об'єкту(repr)"
-
-#: models.py:30
-msgid "action flag"
-msgstr "прапор дії"
-
-#: models.py:31
-msgid "change message"
-msgstr "змінити повідомлення"
-
-#: models.py:36
-msgid "log entry"
-msgstr "реєстрування записів"
-
-#: models.py:37
-msgid "log entries"
-msgstr "реєстрування записів"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Додано \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Змінено \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Видалено \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "Запис у журналі"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Ніщо"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "Змінено %s."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "та"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "Додано %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "Змінено %(list)s для %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "Видалено %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Поля не змінені."
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" був успішно доданий. Ви модете редагувати його знову "
-"внизу."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" було успішно додано. Ви можете додати ще одну %(name)s "
-"нижче."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" було додано успішно."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" було успішно змінено. Ви можете знову відредагувати її "
-"нижче."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" було успішно змінено. Ви можете додати ще одну %(name)s "
-"нижче."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" був успішно змінений."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Для виконання дії необхідно обрати елемент. Жодний елемент не був змінений."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Жодних дій не обрано."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Додати %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s об'єкт з первинним ключем %(key)r не існує."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Змінити %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Помилка бази даних"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s був успішно змінений."
-msgstr[1] "%(count)s %(name)s були успішно змінені."
-msgstr[2] "%(count)s %(name)s було успішно змінено."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s обраний"
-msgstr[1] "%(total_count)s обрані"
-msgstr[2] "Усі %(total_count)s обрано"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 з %(cnt)s обрано"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" був видалений успішно."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Історія змін: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Увійти"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Адміністрування сайта"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "Адміністрування %s"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Дата:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Час:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Пошук"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Додати інше"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "В даний час:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Змінено:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Сторінка не знайдена"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Ми шкодуємо, але сторінка яку ви запросили, не знайдена."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Домівка"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Помилка сервера"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Помилка сервера (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Помилка сервера <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Виникла помилка. Адміністратор сайту буде повідомлений про неї по "
-"електронній пошті і вона повинна бути виправлена ​​найближчим часом. Дякуємо "
-"за ваше терпіння."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Виконати обрану дію"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Уперед"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Натисніть тут, щоб вибрати об'єкти на всіх сторінках"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Обрати всі %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Скинути вибір"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "Додати %(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Вітаємо,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Документація"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Змінити пароль"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Вийти"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django сайт адміністрування"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django адміністрування"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Додати"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Історія"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Дивитися на сайті"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Будь ласка, виправте помилки нижче."
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Додати %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Відфільтрувати"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Видалити з сортування"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Пріорітет сортування: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Сортувати в іншому напрямку"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Видалити"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Видалення %(object_name)s '%(escaped_object)s' призведе до видалення "
-"пов'язаних об'єктів, але ваш реєстраційний запис не має дозволу видаляти "
-"наступні типи об'єктів:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Видалення %(object_name)s '%(escaped_object)s' вимагатиме видалення "
-"наступних пов'язаних об'єктів:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Ви впевнені що хочете видалити %(object_name)s \"%(escaped_object)s\"? Всі "
-"пов'язані записи, що перелічені, будуть видалені:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Так, я впевнений"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Видалити кілька об'єктів"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Видалення обраних %(objects_name)s вимагатиме видалення пов'язаних об'єктів, "
-"але ваш обліковий запис не має прав для видалення таких типів об'єктів:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Видалення обраних %(objects_name)s вимагатиме видалення наступних захищених "
-"пов'язаних об'єктів:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Ви впевнені, що хочете видалити вибрані %(objects_name)s? Всі наступні "
-"об'єкти та пов'язані з ними елементи будуть видалені:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "За %(filter_title)s"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Моделі у %(name)s додатку"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Змінити"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "У вас немає дозволу редагувати будь-що."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Недавні дії"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Мої дії"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Немає"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Невідомий зміст"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Щось не так з інсталяцією бази даних. Перевірте, що таблиці бази даних "
-"створено і база даних може бути прочитана відповідним користувачем."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Пароль:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Забули пароль або ім'я користувача?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Дата/час"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Користувач"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Дія"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Цей об'єкт не має історії змін. Напевно, він був доданий не через цей сайт "
-"адміністрування."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Показати всі"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Зберегти"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Пошук"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s результат"
-msgstr[1] "%(counter)s результати"
-msgstr[2] "%(counter)s результатів"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "%(full_result_count)s всього"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Зберегти як нове"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Зберегти і додати інше"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Зберегти і продовжити редагування"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Спочатку, введіть ім'я користувача і пароль. Потім ви зможете редагувати "
-"більше опцій користувача."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Введіть ім'я користувача і пароль."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Введіть новий пароль для користувача <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Пароль"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Пароль (знову)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Повторіть пароль для перевірки."
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Видалити"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Додати ще %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Видалити?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Дякуємо за час, проведений сьогодні на сайті."
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Увійти знову"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Зміна паролю"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Зміна паролю успішна"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Ваш пароль було змінено."
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Будь ласка введіть ваш старий пароль, задля безпеки, потім введіть ваш новий "
-"пароль двічі, щоб ми могли перевірити, що ви ввели його правильно"
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Старий пароль"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Новий пароль"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Змінити мій пароль"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Перевстановлення паролю"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Пароль перевстановлено"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Пароль встановлено. Ви можете увійти зараз."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Підтвердження перевстановлення паролю"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Новий пароль"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Будь ласка, введіть ваш старий пароль, задля безпеки, потім введіть ваш "
-"новий пароль двічі, щоб ми могли перевірити, що ви ввели його правильно."
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Новий пароль:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Підтвердіть пароль:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Пароль не перевстановлено"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Посилання на перевстановлення паролю було помилковим. Можливо тому, що воно "
-"було вже використано. Будь ласка, замовте нове перевстановлення паролю."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Пароль перевстановлено успішно"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"На електронну адресу, яку ви ввели, ми надіслали вам листа з інструкціями "
-"щодо встановлення пароля. Ви повинні отримати його найближчим часом."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Ви отримали цей лист, тому що ви зробили запит на перевстановлення пароля "
-"для облікового запису користувача на %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Будь ласка, перейдіть на цю сторінку, та оберіть новий пароль:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "У разі, якщо ви забули, ваше ім'я користувача:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Дякуємо за користування нашим сайтом!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Команда сайту %(site_name)s "
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Забули пароль? Введіть свою email-адресу нижче і ми вишлемо інструкції по "
-"встановленню нового."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Email адреса:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Перевстановіть мій пароль"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Всі дати"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(None)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Вибрати %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Виберіть %s щоб змінити"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index dd55ceb..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 6dbac5a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/uk/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,186 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Boryslav Larin <brabadu@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sergey Lysach <sergikoff88@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "В наявності %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Це список всіх доступних %s. Ви можете обрати деякі з них, виділивши їх у "
-"полі нижче і натиснувшт кнопку \"Обрати\"."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-"Почніть вводити текст в цьому полі щоб відфільтрувати список доступних %s."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Фільтр"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Обрати всі"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Натисніть щоб обрати всі %s відразу."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Обрати"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Видалити"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Обрано %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Це список обраних %s. Ви можете видалити деякі з них, виділивши їх у полі "
-"нижче і натиснувши кнопку \"Видалити\"."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Видалити все"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Натисніть щоб видалити всі обрані %s відразу."
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "Обрано %(sel)s з %(cnt)s"
-msgstr[1] "Обрано %(sel)s з %(cnt)s"
-msgstr[2] "Обрано %(sel)s з %(cnt)s"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Ви зробили якісь зміни у деяких полях. Якщо Ви виконаєте цю дію, всі "
-"незбережені зміни буде втрачено."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Ви обрали дію, але не зберегли зміни в окремих полях. Будь ласка, натисніть "
-"ОК, щоб зберегти. Вам доведеться повторно запустити дію."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Ви обрали дію і не зробили жодних змін у полях. Ви, напевно, шукаєте кнопку "
-"\"Виконати\", а не \"Зберегти\"."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Січень Лютий Березень Квітень Травень Червень Липень Серпень Вересень "
-"Жовтень Листопад Грудень"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "Нд Пн Вт Ср Чт Пт Сб"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Показати"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Сховати"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Зараз"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Годинник"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Оберіть час"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Північ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Полудень"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Відмінити"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Сьогодні"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Календар"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Вчора"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Завтра"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ur/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ur/LC_MESSAGES/django.mo
deleted file mode 100644
index d700674..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ur/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ur/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ur/LC_MESSAGES/django.po
deleted file mode 100644
index 0d4bc28..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ur/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,868 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/"
-"ur/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ur\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "%(count)d %(items)s کو کامیابی سے مٹا دیا گیا۔"
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "%(name)s نہیں مٹایا جا سکتا"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "آپ کو یقین ھے؟"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "منتخب شدہ %(verbose_name_plural)s مٹائیں"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "تمام"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "ھاں"
-
-#: filters.py:239
-msgid "No"
-msgstr "نھیں"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "نامعلوم"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "کوئی تاریخ"
-
-#: filters.py:309
-msgid "Today"
-msgstr "آج"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "گزشتہ سات دن"
-
-#: filters.py:317
-msgid "This month"
-msgstr "یہ مھینہ"
-
-#: filters.py:321
-msgid "This year"
-msgstr "یہ سال"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "براہ مھربانی دوباہ اندر جائیں، کیونکہ آپ کی نشست کی مدت ختم ھو چکی ھے۔"
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "کاروائی:"
-
-#: models.py:25
-msgid "action time"
-msgstr "کاروائی کا وقت"
-
-#: models.py:28
-msgid "object id"
-msgstr "شے کا شناختی نمبر"
-
-#: models.py:29
-msgid "object repr"
-msgstr "شے کا نمائندہ"
-
-#: models.py:30
-msgid "action flag"
-msgstr "کاروائی کا پرچم"
-
-#: models.py:31
-msgid "change message"
-msgstr "پیغام تبدیل کریں"
-
-#: models.py:36
-msgid "log entry"
-msgstr "لاگ کا اندراج"
-
-#: models.py:37
-msgid "log entries"
-msgstr "لاگ کے اندراج"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr ""
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr ""
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr ""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr ""
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "کوئی نھیں"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s تبدیل کریں۔"
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "اور"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" کا اضافہ کیا گیا۔"
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" %(list)s کی تبدیلی کی گئی۔"
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" مٹایا گیا۔۔"
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "کوئی خانہ تبدیل نھیں کیا گیا۔"
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" کا کامیابی سے اضافہ کیا گیا۔ نیچے آپ دوبارہ اسے مدوّن کر "
-"سکتے ھیں۔"
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" کا کامیابی سے اضافہ کیا گیا۔"
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" کی تبدیلی کامیابی سے ھو گئی۔"
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"اشیاء پر کاروائی سرانجام دینے کے لئے ان کا منتخب ھونا ضروری ھے۔ کوئی شے "
-"تبدیل نھیں کی گئی۔"
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "کوئی کاروائی منتخب نھیں کی گئی۔"
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "%s کا اضافہ کریں"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "%(name)s شے %(key)r پرائمری کلید کے ساتھ موجود نھیں ھے۔"
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "%s تبدیل کریں"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "ڈیٹا بیس کی خرابی"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "%(count)s %(name)s کامیابی سے تبدیل کیا گیا تھا۔"
-msgstr[1] "%(count)s %(name)s کامیابی سے تبدیل کیے گئے تھے۔"
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "%(total_count)s منتخب کیا گیا۔"
-msgstr[1] "تمام %(total_count)s منتخب کئے گئے۔"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "%(cnt)s میں سے 0 منتخب کیا گیا۔"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" کامیابی سے مٹایا گیا تھا۔"
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "%s کی تبدیلی کا تاریخ نامہ"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr ""
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "اندر جائیں"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "سائٹ کی انتظامیہ"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s کی انتظامیہ"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "تاریخ:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "وقت:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "ڈھونڈیں"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "اور اضافہ کریں"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr ""
-
-#: widgets.py:303
-msgid "Change:"
-msgstr ""
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "صفحہ نھیں ملا"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "ھم معذرت خواہ ھیں، مطلوبہ صفحہ نھیں مل سکا۔"
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "گھر"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "سرور کی خرابی"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "سرور کی خرابی (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "سرور کی خرابی <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "منتخب شدہ کاروائیاں چلائیں"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "جاؤ"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "تمام صفحات میں سے اشیاء منتخب کرنے کے لئے یہاں کلک کریں۔"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "تمام %(total_count)s %(module_name)s منتخب کریں"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "انتخاب صاف کریں"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "خوش آمدید،"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "طریق استعمال"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "لفظ اجازت تبدیل کریں"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "باہر جائیں"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "منتظم برائے جینگو سائٹ"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "انتظامیہ برائے جینگو سائٹ"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "اضافہ"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "تاریخ نامہ"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "سائٹ پر مشاھدہ کریں"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "براہ کرم نیچے غلطیاں درست کریں۔"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "%(name)s کا اضافہ کریں"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "چھانٹیں"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr ""
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr ""
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr ""
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "مٹائیں"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' کو مٹانے کے نتیجے میں معتلقہ اشیاء مٹ "
-"سکتی ھیں، مگر آپ کے کھاتے کو اشیاء کی مندرجہ ذیل اقسام مٹانے کا حق حاصل نھیں "
-"ھے۔"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"%(object_name)s '%(escaped_object)s' کو مٹانے کے لئے مندرجہ ذیل محفوظ متعلقہ "
-"اشیاء کو مٹانے کی ضرورت پڑ سکتی ھے۔"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"واقعی آپ %(object_name)s \"%(escaped_object)s\" کو مٹانا چاہتے ھیں۔ مندرجہ "
-"ذیل تمام متعلقہ اجزاء مٹ جائیں گے۔"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "ھاں، مجھے یقین ھے"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "متعدد اشیاء مٹائیں"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"منتخب شدہ %(objects_name)s کو مٹانے کے نتیجے میں متعلقہ اشیاء مٹ سکتی ھیں، "
-"لیکن آپ کے کھاتے کو اشیاء کی مندرجہ ذیل اقسام کو مٹانے کا حق حاصل نھیں ھے۔"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"منتخب شدہ %(objects_name)s کو مٹانے کے لئے مندرجہ ذیل محفوظ شدہ اشیاء کو "
-"مٹانے کی ضرورت پڑ سکتی ھے۔"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"واقعی آپ منتخب شدہ %(objects_name)s مٹانا چاھتے ھیں؟ مندرجہ ذیل اور ان سے "
-"متعلقہ تمام اشیاء حذف ھو جائیں گی۔"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "از %(filter_title)s"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr ""
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "تدوین"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "آپ کو کوئی چیز مدوّن کرنے کا حق نھیں ھے۔"
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "حالیہ کاروائیاں"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "میری کاروائیاں"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "کچھ دستیاب نھیں"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "نامعلوم مواد"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"آپ کی ڈیٹا بیس کی تنصیب میں کوئی چیز خراب ھے۔ یقین کر لیں کہ موزون ڈیٹا بیس "
-"ٹیبل بنائے گئے تھے، اور یقین کر لیں کہ ڈیٹ بیس مناسب صارف کے پڑھے جانے کے "
-"قابل ھے۔"
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "لفظ اجازت:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr ""
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "تاریخ/وقت"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "صارف"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "کاروائی"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"اس شے کا تبدیلی کا تاریخ نامہ نھیں ھے۔ اس کا غالباً بذریعہ اس منتظم سائٹ کے "
-"اضافہ نھیں کیا گیا۔"
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "تمام دکھائیں"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "محفوظ کریں"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "تلاش کریں"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s نتیجہ"
-msgstr[1] "%(counter)s نتائج"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "کل %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "بطور نیا محفوظ کریں"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "محفوظ کریں اور مزید اضافہ کریں"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "محفوظ کریں اور تدوین جاری رکھیں"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"پہلے نام صارف اور لفظ اجازت درج کریں۔ پھر آپ مزید صارف کے حقوق مدوّن کرنے کے "
-"قابل ھوں گے۔"
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "نام صارف اور لفظ اجازت درج کریں۔"
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "صارف <strong>%(username)s</strong> کے لئے نیا لفظ اجازت درج کریں۔"
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "لفظ اجازت"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "لفظ اجازت (دوبارہ)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "توثیق کے لئے ویسا ہی لفظ اجازت درج کریں جیسا اوپر کیا۔"
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "خارج کریں"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "دوسرا %(verbose_name)s درج کریں"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "مٹاؤں؟"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "ویب سائٹ پر آج کچھ معیاری وقت خرچ کرنے کے لئے شکریہ۔"
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "دوبارہ اندر جائیں"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "لفظ اجازت کی تبدیلی"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "لفظ اجازت کی تبدیلی کامیابی سے ھوگئی"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "آپ کا لفظ اجازت تبدیل کر دیا گیا تھا۔"
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"براہ کرم سیکیورٹی کی خاطر اپنا پرانا لفظ اجازت درج کریں اور پھر اپنا نیا لفظ "
-"اجازت دو مرتبہ درج کریں تاکہ ھم توثیق کر سکیں کہ آپ نے اسے درست درج کیا ھے۔"
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "پرانا لفظ اجازت"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "نیا لفظ اجازت"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "میرا لفظ تبدیل کریں"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "لفظ اجازت کی دوبارہ ترتیب"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "لفظ اجازت کی دوبارہ ترتیب مکمل ھو گئی"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr ""
-"آپ کا لفظ اجازت مرتب کر دیا گیا ھے۔ آپ کو آگے بڑھنے اور اندر جانے کی اجازت "
-"ھے۔"
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "لفظ اجازت دوبارہ مرتب کرنے کی توثیق"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "نیا لفظ اجازت درج کریں"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"براہ مھربانی اپنا نیا لفظ اجازت دو مرتبہ درج کریں تاکہ تاکہ ھم تصدیق کر سکیں "
-"کہ تم نے اسے درست درج کیا ھے۔"
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "نیا لفظ اجازت:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "لفظ اجازت کی توثیق:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "لفظ اجازت کی دوبارہ ترتیب ناکام ھو گئی۔"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"لفظ اجازت دوبارہ مرتب کرنے کا رابطہ (لنک) غلط تھا، غالباً یہ پہلے ھی استعمال "
-"کیا چکا تھا۔ براہ مھربانی نیا لفظ اجازت مرتب کرنے کی درخواست کریں۔"
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "لفظ اجازت کی دوبارہ ترتیب کامیاب ھو گئی۔"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "براہ مھربانی مندرجہ ذیل صفحے پر جائیں اور نیا لفظ اجازت پسند کریں:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "نام صارف، بھول جانے کی صورت میں:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "ھماری سائٹ استعمال کرنے کے لئے شکریہ"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s کی ٹیم"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr ""
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "میرا لفظ اجازت دوبارہ مرتب کریں"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "تمام تاریخیں"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(None)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "%s منتخب کریں"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "تبدیل کرنے کے لئے %s منتخب کریں"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 7b16ede..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 4e08743..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/ur/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,176 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/"
-"ur/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ur\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "دستیاب %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "چھانٹیں"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "سب منتخب کریں"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "خارج کریں"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "منتخب شدہ %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr ""
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr ""
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(cnt)s میں سے %(sel)s منتخب کیا گیا"
-msgstr[1] "%(cnt)s میں سے %(sel)s منتخب کیے گئے"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"آپ کے پاس ذاتی قابل تدوین خانوں میں غیر محفوظ تبدیلیاں موجود ھیں۔ اگر آپ "
-"کوئی کاروائی کریں گے تو آپ کی غیر محفوظ تبدیلیاں ضائع ھو جائیں گی۔"
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"آپ نے ایک کاروائی منتخب کی ھے لیکن ابھی تک آپ نے ذاتی خانوں میں اپنی "
-"تبدیلیاں محفوظ نہیں کی ہیں براہ مھربانی محفوط کرنے کے لئے OK پر کلک کریں۔ آپ "
-"کاوائی دوبارہ چلانے کی ضرورت ھوگی۔"
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"آپ نے ایک کاروائی منتخب کی ھے، اور آپ نے ذاتی خانوں میں کوئی تبدیلی نہیں کی "
-"غالباً آپ 'جاؤ' بٹن تلاش کر رھے ھیں بجائے 'مخفوظ کریں' بٹن کے۔"
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "جنوری فروری مارچ اپریل مئی جون جولائی اگست ستمبر اکتوبر نومبر دسمبر"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "ا س م ب ج جمعہ ھ"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "دکھائیں"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "چھپائیں"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "اب"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "گھڑی"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "وقت منتخب کریں"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "نصف رات"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 ص"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "دوپھر"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "منسوخ کریں"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "آج"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "تقویم"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "گزشتہ کل"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "آئندہ کل"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/vi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/vi/LC_MESSAGES/django.mo
deleted file mode 100644
index 8a760fc..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/vi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/vi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/vi/LC_MESSAGES/django.po
deleted file mode 100644
index 6ec1612..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/vi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,886 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Dimitris Glezos <glezos@transifex.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Lê Thanh <lethanhx2k@gmail.com>, 2013
-# Tran <hongdiepkien@gmail.com>, 2011
-# Tran Van <vantxm@yahoo.co.uk>, 2011-2013
-# Vuong Nguyen <autalpha@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/"
-"language/vi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "Đã xóa thành công %(count)d %(items)s ."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "Không thể xóa %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "Bạn có chắc chắn không?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "Xóa các %(verbose_name_plural)s đã chọn"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "Tất cả"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "Có"
-
-#: filters.py:239
-msgid "No"
-msgstr "Không"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "Chưa xác định"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "Bất kì ngày nào"
-
-#: filters.py:309
-msgid "Today"
-msgstr "Hôm nay"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "7 ngày trước"
-
-#: filters.py:317
-msgid "This month"
-msgstr "Tháng này"
-
-#: filters.py:321
-msgid "This year"
-msgstr "Năm nay"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr ""
-"Bạn hãy nhập đúng %(username)s và mật khẩu. (Có phân biệt chữ hoa, thường)"
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "Hãy đăng nhập lại vì giao dịch của bạn đã hết hiệu lực"
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "Hoạt động:"
-
-#: models.py:25
-msgid "action time"
-msgstr "Thời gian tác động"
-
-#: models.py:28
-msgid "object id"
-msgstr "Mã đối tượng"
-
-#: models.py:29
-msgid "object repr"
-msgstr "đối tượng repr"
-
-#: models.py:30
-msgid "action flag"
-msgstr "hiệu hành động"
-
-#: models.py:31
-msgid "change message"
-msgstr "thay đổi tin nhắn"
-
-#: models.py:36
-msgid "log entry"
-msgstr "đăng nhập"
-
-#: models.py:37
-msgid "log entries"
-msgstr "mục đăng nhập"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "Thêm \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "Đã thay đổi \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "Đối tượng \"%(object)s.\" đã được xoá."
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "LogEntry Object"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "Không"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s đã được thay đổi."
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "và"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" đã được thêm vào."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(list)s for %(name)s \"%(object)s\" đã được thay đổi."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" đã bị xóa."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "Không có trường nào thay đổi"
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr ""
-"%(name)s \"%(obj)s\" đã được thêm vào thành công. Bạn có thể sửa lại dưới "
-"đây."
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"Bạn đã thêm %(name)s \"%(obj)s\" thành công. Bạn có thể thêm các %(name)s "
-"khác dưới đây."
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" được thêm vào thành công."
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr ""
-"%(name)s \"%(obj)s\" đã được thay đổi thành công. Bạn có thể sửa lại dưới "
-"đây."
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-"%(name)s \"%(obj)s\" đã thay đổi thành công. Bạn có thể thêm %(name)s khác "
-"dưới đây."
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" đã được thay đổi thành công."
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr ""
-"Mục tiêu phải được chọn mới có thể thực hiện hành động trên chúng. Không có "
-"mục tiêu nào đã được thay đổi."
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "Không có hoạt động nào được lựa chọn."
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "Thêm %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr " đối tượng %(name)s với khóa chính %(key)r không tồn tại."
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "Thay đổi %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "Cơ sở dữ liệu bị lỗi"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] " %(count)s %(name)s đã được thay đổi thành công."
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "Tất cả %(total_count)s đã được chọn"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "0 của %(cnt)s được chọn"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" đã được xóa thành công."
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "Lịch sử thay đổi: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"Xóa %(object_name)s '%(escaped_object)s', các đối tượng liên quan sau đây "
-"cũng bị xóa theo:"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "Đăng nhập"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "Site quản trị hệ thống."
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s quản trị"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "Ngày:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "Giờ:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "Tìm"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "Thêm vào"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "Hiện nay:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "Thay đổi:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "Không tìm thấy trang nào"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "Xin lỗi bạn! Trang mà bạn yêu cầu không tìm thấy."
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "Trang chủ"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "Lỗi máy chủ"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "Lỗi máy chủ (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "Lỗi máy chủ <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"Có lỗi xảy ra. Lỗi sẽ được gửi đến quản trị website qua email và sẽ được "
-"khắc phục sớm. Cám ơn bạn."
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "Bắt đầu hành động lựa chọn"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "Đi đến"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "Click vào đây để lựa chọn các đối tượng trên tất cả các trang"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "Hãy chọn tất cả %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "Xóa lựa chọn"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "Chào mừng bạn,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "Tài liệu"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "Thay đổi mật khẩu"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "Thoát"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Trang web admin Django"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Trang quản trị cho Django"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "Thêm vào"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "Bản ghi nhớ"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "Xem trên trang web"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "Hãy sửa lỗi sai dưới đây"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "Thêm vào %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "Bộ lọc"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "Bỏ khỏi sắp xếp"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "Sắp xếp theo:%(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "Hoán đổi sắp xếp"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "Xóa"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"Xóa %(object_name)s '%(escaped_object)s' sẽ làm mất những dữ liệu có liên "
-"quan. Tài khoản của bạn không được cấp quyển xóa những dữ liệu đi kèm theo."
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"Xóa các %(object_name)s ' %(escaped_object)s ' sẽ bắt buộc xóa các đối "
-"tượng được bảo vệ sau đây:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"Bạn có chắc là muốn xóa %(object_name)s \"%(escaped_object)s\"?Tất cả những "
-"dữ liệu đi kèm dưới đây cũng sẽ bị mất:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "Có, tôi chắc chắn."
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "Xóa nhiều đối tượng"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"Xóa các %(objects_name)s sẽ bắt buộc xóa các đối tượng liên quan, nhưng tài "
-"khoản của bạn không có quyền xóa các loại đối tượng sau đây:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr ""
-"Xóa các %(objects_name)s sẽ bắt buộc xóa các đối tượng đã được bảo vệ sau "
-"đây:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"Bạn chắc chắn muốn xóa những lựa chọn %(objects_name)s? Tất cả những đối "
-"tượng sau và những đối tượng liên quan sẽ được xóa:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr "Bởi %(filter_title)s "
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "Các mô models trong %(name)s"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "Thay đổi"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "Bạn không được cấp quyền chỉnh sửa bất cứ cái gì."
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "Các hoạt động gần đây"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "Hoạt động của tôi"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "Không có sẵn"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "Không biết nội dung"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"Một vài lỗi với cơ sở dữ liệu cài đặt của bạn. Hãy chắc chắn bảng biểu dữ "
-"liệu được tạo phù hợp và dữ liệu có thể được đọc bởi những người sử dụng phù "
-"hợp."
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "Mật khẩu:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "Bạn quên mật khẩu hoặc tài khoản?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "Ngày/giờ"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "Người dùng"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "Hành động"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr ""
-"Đối tượng này không có một lịch sử thay đổi. Nó có lẽ đã không được thêm vào "
-"qua trang web admin."
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "Hiện tất cả"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "Lưu lại"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "Tìm kiếm"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s kết quả"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "tổng số %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "Lưu mới"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "Lưu và thêm mới"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "Lưu và tiếp tục chỉnh sửa"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr ""
-"Đầu tiên, điền tên đăng nhập và mật khẩu. Sau đó bạn mới có thể chỉnh sửa "
-"nhiều hơn lựa chọn của người dùng."
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "Điền tên đăng nhập và mật khẩu."
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "Hãy nhập mật khẩu mới cho người sử dụng <strong>%(username)s</strong>."
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "Mật khẩu"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "Nhập lại mật khẩu"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "Nhập dãy mật mã trên để xác minh lại"
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "Gỡ bỏ"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "Thêm một %(verbose_name)s "
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "Bạn muốn xóa?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "Cảm ơn bạn đã dành thời gian với website này"
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "Đăng nhập lại"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "Thay đổi mật khẩu"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "Mật khẩu được thay đổi thành công"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "Mật khẩu của bạn đã được thay đổi"
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"Hãy nhập lại mật khẩu cũ và sau đó nhập mật khẩu mới hai lần để chúng tôi có "
-"thể kiểm tra lại xem bạn đã gõ chính xác hay chưa."
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "Mật khẩu cũ"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "Mật khẩu mới"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "Thay đổi mật khẩu"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "Lập lại mật khẩu"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "Hoàn thành việc lập lại mật khẩu"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "Mật khẩu của bạn đã được lập lại. Bạn hãy thử đăng nhập."
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "Xác nhận việc lập lại mật khẩu"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "Nhập mật khẩu mới"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr ""
-"Hãy nhập mật khẩu mới hai lần để chúng tôi có thể kiểm tra xem bạn đã gõ "
-"chính xác chưa"
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "Mật khẩu mới"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "Nhập lại mật khẩu:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "Lập lại mật khẩu không thành công"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr ""
-"Liên kết đặt lại mật khẩu không hợp lệ, có thể vì nó đã được sử dụng. Xin "
-"vui lòng yêu cầu đặt lại mật khẩu mới."
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "Lấy lại mật khẩu thành công"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"Chúng tôi vừa email cho bạn hướng dẫn thiết lập mật khẩu. Hãy mở email để "
-"kiểm tra."
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"Nếu bạn không nhận được email, hãy kiểm tra lại địa chỉ email mà bạn dùng để "
-"đăng kí hoặc kiểm tra trong thư mục spam/rác"
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr ""
-"Bạn nhận được email này vì bạn đã yêu cầu làm mới lại mật khẩu cho tài khoản "
-"của bạn tại %(site_name)s."
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "Hãy vào đường link dưới đây và chọn một mật khẩu mới"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "Tên đăng nhập của bạn, trường hợp bạn quên nó:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "Cảm ơn bạn đã sử dụng website của chúng tôi!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "Đội của %(site_name)s"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"Quên mật khẩu? Nhập địa chỉ email vào ô dưới đây. Chúng tôi sẽ email cho bạn "
-"hướng dẫn cách thiết lập mật khẩu mới."
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "Địa chỉ Email:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "Làm lại mật khẩu"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "Tất cả các ngày"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(Không)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "Chọn %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "Chọn %s để thay đổi"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 474c83c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.po
deleted file mode 100644
index d4e0789..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/vi/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,184 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Tran <hongdiepkien@gmail.com>, 2011
-# Tran Van <vantxm@yahoo.co.uk>, 2013
-# Vuong Nguyen <autalpha@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-26 16:59+0000\n"
-"Last-Translator: Tran Van <vantxm@yahoo.co.uk>\n"
-"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/"
-"language/vi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "Có sẵn %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"Danh sách các lựa chọn đang có %s. Bạn có thể chọn bằng bách click vào mũi "
-"tên \"Chọn\" nằm giữa hai hộp."
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "Bạn hãy nhập vào ô này để lọc các danh sách sau %s."
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "Lọc"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "Chọn tất cả"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "Click để chọn tất cả %s ."
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "Chọn"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "Xóa"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "Chọn %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"Danh sách bạn đã chọn %s. Bạn có thể bỏ chọn bằng cách click vào mũi tên "
-"\"Xoá\" nằm giữa hai ô."
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "Xoá tất cả"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "Click để bỏ chọn tất cả %s"
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] " %(sel)s của %(cnt)s được chọn"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"Bạn chưa lưu những trường đã chỉnh sửa. Nếu bạn chọn hành động này, những "
-"chỉnh sửa chưa được lưu sẽ bị mất."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"Bạn đã lựa chọn một hành động, nhưng bạn không lưu thay đổi của bạn đến các "
-"lĩnh vực cá nhân được nêu ra. Xin vui lòng click OK để lưu lại. Bạn sẽ cần "
-"phải chạy lại các hành động."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"Bạn đã lựa chọn một hành động, và bạn đã không thực hiện bất kỳ thay đổi nào "
-"trên các trường. Có lẽ bạn đang tìm kiếm nút bấm Go thay vì nút bấm Save."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr ""
-"Tháng một Tháng hai Tháng ba Tháng tư Tháng năm Tháng sáu Tháng bảy Tháng "
-"tám Tháng chín Tháng mười Tháng mười một Tháng mười hai"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "S M T W T F S"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "Hiện ra"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "Dấu đi"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "Bây giờ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "Đồng hồ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "Chọn giờ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "Nửa đêm"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "6 giờ sáng"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "Buổi trưa"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "Hủy bỏ"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "Hôm nay"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "Lịch"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "Hôm qua"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "Ngày mai"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/zh_CN/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/zh_CN/LC_MESSAGES/django.mo
deleted file mode 100644
index dbad88e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/zh_CN/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/zh_CN/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/zh_CN/LC_MESSAGES/django.po
deleted file mode 100644
index 3681280..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/zh_CN/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,861 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Lele Long <schemacs@gmail.com>, 2011
-# 鸿宇 欧阳 <ouyanghongyu@gmail.com>, 2013
-# seansay <iseansay@gmail.com>, 2013
-# slene <vslene@gmail.com>, 2011
-# Ziang Song <songziang@gmail.com>, 2012
-# Kevin Shi <leiarix@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "成功删除了 %(count)d 个 %(items)s"
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "无法删除 %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "你确定吗?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "删除所选的 %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "全部"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "是"
-
-#: filters.py:239
-msgid "No"
-msgstr "否"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "未知"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "任意日期"
-
-#: filters.py:309
-msgid "Today"
-msgstr "今天"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "过去7天"
-
-#: filters.py:317
-msgid "This month"
-msgstr "本月"
-
-#: filters.py:321
-msgid "This year"
-msgstr "今年"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr "请输入一个正确的 %(username)s 和密码. 注意他们都是区分大小写的."
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "请重新登录,因为你的会话已经过期。"
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "动作"
-
-#: models.py:25
-msgid "action time"
-msgstr "动作时间"
-
-#: models.py:28
-msgid "object id"
-msgstr "对象id"
-
-#: models.py:29
-msgid "object repr"
-msgstr "对象表示"
-
-#: models.py:30
-msgid "action flag"
-msgstr "动作标志"
-
-#: models.py:31
-msgid "change message"
-msgstr "修改消息"
-
-#: models.py:36
-msgid "log entry"
-msgstr "日志记录"
-
-#: models.py:37
-msgid "log entries"
-msgstr "日志记录"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "已经添加了 \"%(object)s\"."
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "修改了 \"%(object)s\" - %(changes)s"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "删除了 \"%(object)s.\""
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "LogEntry对象"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "无"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "已修改 %s 。"
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "和"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "已添加 %(name)s \"%(object)s\"."
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "已变更 %(list)s for %(name)s \"%(object)s\"."
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "已删除 %(name)s \"%(object)s\"."
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "没有字段被修改。"
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" 添加成功。你可以在下面再次编辑它。"
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr ""
-" %(name)s \"%(obj)s\" 已经成功添加。你可以在下面添加另外的 %(name)s 。"
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" 添加成功。"
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr " %(name)s \"%(obj)s\" 已经成功进行变更。你可以在下面再次编辑它。"
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr ""
-" %(name)s \"%(obj)s\" 已经成功进行变更。你可以在下面添加其它的 %(name)s。"
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" 修改成功。"
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr "条目必须选中以对其进行操作。没有任何条目被更改。"
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "未选择动作"
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "增加 %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "具有主键 %(key)r 的对象 %(name)s 不存在。"
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "修改 %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "数据库错误"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "总共 %(count)s 个 %(name)s 变更成功。"
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "选中了 %(total_count)s 个"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "%(cnt)s 个中 0 个被选"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" 删除成功。"
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "变更历史: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"删除 %(object_name)s '%(escaped_object)s' 将需要删除以下受保护的相关对象:"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "登录"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "站点管理"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s 管理"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "日期:"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "时间:"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "查询"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "添加另一个"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "当前:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "更改:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "页面没有找到"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "很报歉,请求页面无法找到。"
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "首页"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "服务器错误"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "服务器错误(500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "服务器错误 <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"有一个错误。已经通过电子邮件通知网站管理员,不久以后应该可以修复。谢谢你的参"
-"与。"
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "运行选中的动作"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "执行"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "点击此处选择所有页面中包含的对象。"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "选中所有的 %(total_count)s 个 %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "清除选中"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "欢迎,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "文档"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "修改密码"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "注销"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django 站点管理员"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django 管理"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "增加"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "历史"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "在站点上查看"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "请修正下面的错误。"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "增加 %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "过滤器"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "删除排序"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "排序优先级: %(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "正逆序切换"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "删除"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"删除 %(object_name)s '%(escaped_object)s' 会导致删除相关的对象,但你的帐号无"
-"权删除下列类型的对象:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"要删除 %(object_name)s '%(escaped_object)s', 将要求删除以下受保护的相关对象:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"你确认想要删除 %(object_name)s \"%(escaped_object)s\"? 下列所有相关的项目都"
-"将被删除:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "是的,我确定"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "删除多个对象"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"要删除所选的 %(objects_name)s 结果会删除相关对象, 但你的账户没有权限删除这类"
-"对象:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr "要删除所选的 %(objects_name)s, 将要求删除以下受保护的相关对象:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"请确认要删除选中的 %(objects_name)s 吗?以下所有对象和余它们相关的条目将都会"
-"被删除:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " 以 %(filter_title)s"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "在应用程序 %(name)s 中的模型"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "修改"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "你无权修改任何东西。"
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "最近动作"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "我的动作"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "无可用的"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "未知内容"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"你的数据库安装有误。确保已经创建了相应的数据库表,并确保数据库可被相关的用户"
-"读取。"
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "密码:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "忘记了您的密码或用户名?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "日期/时间"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "用户"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "动作"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr "该对象没有变更历史记录。可能从未通过这个管理站点添加。"
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "显示全部"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "保存"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "搜索"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s 条结果。"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "总共 %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "保存为新的"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "保存并增加另一个"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "保存并继续编辑"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr "首先,输入一个用户名和密码。然后,你就可以编辑更多的用户选项。"
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "输入用户名和"
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "为用户 <strong>%(username)s</strong> 输入一个新的密码。"
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "密码"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "密码(重复)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "为了校验,输入与上面相同的密码。"
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "删除"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "添加另一个 %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "删除?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "感谢您今天在本站花费了一些宝贵时间。"
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "重新登录"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "密码修改"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "密码修改成功"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "你的密码已修改。"
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"请输入你的旧密码,为了安全起见,接着要输入两遍新密码,以便我们校验你输入的是"
-"否正确。"
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "旧密码"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "新密码"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "修改我的密码"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "密码重设"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "完成密码重设"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "你的口令己经设置。现在你可以继续进行登录。"
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "密码重设确认"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "输入新密码"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr "请输入两遍新密码,以便我们校验你输入的是否正确。"
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "新密码:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "确认密码:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "密码重设失败"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr "密码重置链接无效,可能是因为它已使用。可以请求一次新的密码重置。"
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "密码重设成功"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"我们将把设置你提供的email地址的密码的指南发到你的邮箱。 你很快将会收到。"
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"如果你没有收到邮件, 请确保您所输入的地址是正确的, 并检查您的垃圾邮件文件夹."
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr "你收到这封邮件是因为你请求重置你在网站 %(site_name)s上的用户账户密码。"
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "请访问该页面并选择一个新密码:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "你的用户名,如果已忘记的话:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "感谢使用我们的站点!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s 团队"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"忘记你的密码了?在下面输入你的电子邮件地址,我们将发送一封设置新密码的邮件给"
-"你。"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "电子邮件地址:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "重设我的密码"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "所有日期"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(None)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "选择 %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "选择 %s 来修改"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/zh_CN/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/zh_CN/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index ccc968b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/zh_CN/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/zh_CN/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/zh_CN/LC_MESSAGES/djangojs.po
deleted file mode 100644
index 39ec165..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/zh_CN/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,179 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Lele Long <schemacs@gmail.com>, 2011
-# slene <vslene@gmail.com>, 2011
-# Ziang Song <songziang@gmail.com>, 2012
-# Kevin Shi <leiarix@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "可用 %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"这是可用的%s列表。你可以在选择框下面进行选择,然后点击两选框之间的“选择”箭"
-"头。"
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "在此框中键入以过滤可用的%s列表"
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "过滤"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "全选"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "点击选择全部%s。"
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "选择"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "删除"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "选中的 %s"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr "这是已选%s的列表。你可以"
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "删除全部"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "删除所有选择的%s。"
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "选中了 %(cnt)s 个中的 %(sel)s 个"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr ""
-"你尚未保存一个可编辑栏位的变更. 如果你进行别的动作, 未保存的变更将会丢失."
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"你已选则执行一个动作, 但有一个可编辑栏位的变更尚未保存. 请点选确定进行保存. "
-"再重新执行该动作."
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"你已选则执行一个动作, 但可编辑栏位沒有任何改变. 你应该尝试 '去' 按钮, 而不是 "
-"'保存' 按钮."
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "日 一 二 三 四 五 六"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "显示"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "隐藏"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "现在"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "时钟"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "选择一个时间"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "午夜"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "上午6点"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "正午"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "取消"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "今天"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "日历"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "昨天"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "明天"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/zh_TW/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/zh_TW/LC_MESSAGES/django.mo
deleted file mode 100644
index fc08a51..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/zh_TW/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/zh_TW/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admin/locale/zh_TW/LC_MESSAGES/django.po
deleted file mode 100644
index f0e5340..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/zh_TW/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,859 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# ilay <ilay@ilay.tw>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# mail6543210 <mail6543210@yahoo.com.tw>, 2013
-# ming hsien tzang <tzangms@gmail.com>, 2011
-# tcc <tcchou@tcchou.org>, 2011
-# yyc1217 <yyc1217@gmail.com>, 2013
-# yyc1217 <yyc1217@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-17 08:29+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/"
-"language/zh_TW/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_TW\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: actions.py:49
-#, python-format
-msgid "Successfully deleted %(count)d %(items)s."
-msgstr "成功的刪除了 %(count)d 個 %(items)s."
-
-#: actions.py:61 options.py:1418
-#, python-format
-msgid "Cannot delete %(name)s"
-msgstr "無法刪除 %(name)s"
-
-#: actions.py:63 options.py:1420
-msgid "Are you sure?"
-msgstr "你確定嗎?"
-
-#: actions.py:84
-#, python-format
-msgid "Delete selected %(verbose_name_plural)s"
-msgstr "刪除所選的 %(verbose_name_plural)s"
-
-#: filters.py:101 filters.py:197 filters.py:237 filters.py:274 filters.py:380
-msgid "All"
-msgstr "全部"
-
-#: filters.py:238
-msgid "Yes"
-msgstr "是"
-
-#: filters.py:239
-msgid "No"
-msgstr "否"
-
-#: filters.py:253
-msgid "Unknown"
-msgstr "未知"
-
-#: filters.py:308
-msgid "Any date"
-msgstr "任何日期"
-
-#: filters.py:309
-msgid "Today"
-msgstr "今天"
-
-#: filters.py:313
-msgid "Past 7 days"
-msgstr "過去 7 天"
-
-#: filters.py:317
-msgid "This month"
-msgstr "本月"
-
-#: filters.py:321
-msgid "This year"
-msgstr "今年"
-
-#: forms.py:9
-#, python-format
-msgid ""
-"Please enter the correct %(username)s and password for a staff account. Note "
-"that both fields may be case-sensitive."
-msgstr "請輸入正確的工作人員%(username)s及密碼。請注意兩者皆區分大小寫。"
-
-#: forms.py:19
-msgid "Please log in again, because your session has expired."
-msgstr "請重新登入, 因為你的 session 已過期。"
-
-#: helpers.py:23
-msgid "Action:"
-msgstr "動作:"
-
-#: models.py:25
-msgid "action time"
-msgstr "動作時間"
-
-#: models.py:28
-msgid "object id"
-msgstr "物件 id"
-
-#: models.py:29
-msgid "object repr"
-msgstr "物件 repr"
-
-#: models.py:30
-msgid "action flag"
-msgstr "動作旗標"
-
-#: models.py:31
-msgid "change message"
-msgstr "變更訊息"
-
-#: models.py:36
-msgid "log entry"
-msgstr "紀錄項目"
-
-#: models.py:37
-msgid "log entries"
-msgstr "紀錄項目"
-
-#: models.py:46
-#, python-format
-msgid "Added \"%(object)s\"."
-msgstr "\"%(object)s\" 已新增。"
-
-#: models.py:48
-#, python-format
-msgid "Changed \"%(object)s\" - %(changes)s"
-msgstr "\"%(object)s\" - %(changes)s 已變更。"
-
-#: models.py:53
-#, python-format
-msgid "Deleted \"%(object)s.\""
-msgstr "\"%(object)s\" 已刪除。"
-
-#: models.py:55
-msgid "LogEntry Object"
-msgstr "紀錄項目"
-
-#: options.py:173 options.py:202
-msgid "None"
-msgstr "None"
-
-#: options.py:763
-#, python-format
-msgid "Changed %s."
-msgstr "%s 已變更。"
-
-#: options.py:763 options.py:773 options.py:1570
-msgid "and"
-msgstr "和"
-
-#: options.py:768
-#, python-format
-msgid "Added %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" 以新增。"
-
-#: options.py:772
-#, python-format
-msgid "Changed %(list)s for %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" 的 %(list)s 已變更。"
-
-#: options.py:777
-#, python-format
-msgid "Deleted %(name)s \"%(object)s\"."
-msgstr "%(name)s \"%(object)s\" 已刪除。"
-
-#: options.py:781
-msgid "No fields changed."
-msgstr "沒有欄位被變更。"
-
-#: options.py:884 options.py:927
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below."
-msgstr "%(name)s \"%(obj)s\" 新增成功。你可以在下面再次編輯它。"
-
-#: options.py:902
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was added successfully. You may add another "
-"%(name)s below."
-msgstr "%(name)s \"%(obj)s\" 新增成功。你可以在下方加入其他 %(name)s 。"
-
-#: options.py:906
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was added successfully."
-msgstr "%(name)s \"%(obj)s\" 已成功新增。"
-
-#: options.py:920
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may edit it again "
-"below."
-msgstr "%(name)s \"%(obj)s\" 變更成功。你可以在下方再次編輯。"
-
-#: options.py:934
-#, python-format
-msgid ""
-"The %(name)s \"%(obj)s\" was changed successfully. You may add another "
-"%(name)s below."
-msgstr "%(name)s \"%(obj)s\" 變更成功。你可以在下方加入其他 %(name)s 。"
-
-#: options.py:940
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was changed successfully."
-msgstr "%(name)s \"%(obj)s\" 已成功變更。"
-
-#: options.py:1018 options.py:1278
-msgid ""
-"Items must be selected in order to perform actions on them. No items have "
-"been changed."
-msgstr "必須要有項目被選到才能對它們進行動作。沒有項目變更。"
-
-#: options.py:1037
-msgid "No action selected."
-msgstr "沒有動作被選。"
-
-#: options.py:1117
-#, python-format
-msgid "Add %s"
-msgstr "新增 %s"
-
-#: options.py:1141 options.py:1386
-#, python-format
-msgid "%(name)s object with primary key %(key)r does not exist."
-msgstr "主鍵 %(key)r 的 %(name)s 物件不存在。"
-
-#: options.py:1207
-#, python-format
-msgid "Change %s"
-msgstr "變更 %s"
-
-#: options.py:1257
-msgid "Database error"
-msgstr "資料庫錯誤"
-
-#: options.py:1320
-#, python-format
-msgid "%(count)s %(name)s was changed successfully."
-msgid_plural "%(count)s %(name)s were changed successfully."
-msgstr[0] "共 %(count)s %(name)s 已變更成功。"
-
-#: options.py:1347
-#, python-format
-msgid "%(total_count)s selected"
-msgid_plural "All %(total_count)s selected"
-msgstr[0] "全部 %(total_count)s 個被選"
-
-#: options.py:1352
-#, python-format
-msgid "0 of %(cnt)s selected"
-msgstr "%(cnt)s 中 0 個被選"
-
-#: options.py:1403
-#, python-format
-msgid "The %(name)s \"%(obj)s\" was deleted successfully."
-msgstr "%(name)s \"%(obj)s\" 已成功刪除。"
-
-#: options.py:1459
-#, python-format
-msgid "Change history: %s"
-msgstr "變更歷史: %s"
-
-#. Translators: Model verbose name and instance representation, suitable to be
-#. an item in a list
-#: options.py:1564
-#, python-format
-msgid "%(class_name)s %(instance)s"
-msgstr "%(class_name)s %(instance)s"
-
-#: options.py:1571
-#, python-format
-msgid ""
-"Deleting %(class_name)s %(instance)s would require deleting the following "
-"protected related objects: %(related_objects)s"
-msgstr ""
-"刪除%(object_name)s '%(escaped_object)s'需一併刪除以下受保護的相關物件:"
-
-#: sites.py:318 tests.py:71 templates/admin/login.html:48
-#: templates/registration/password_reset_complete.html:19
-#: views/decorators.py:24
-msgid "Log in"
-msgstr "登入"
-
-#: sites.py:386
-msgid "Site administration"
-msgstr "網站管理"
-
-#: sites.py:440
-#, python-format
-msgid "%s administration"
-msgstr "%s 管理"
-
-#: widgets.py:90
-msgid "Date:"
-msgstr "日期"
-
-#: widgets.py:91
-msgid "Time:"
-msgstr "時間"
-
-#: widgets.py:165
-msgid "Lookup"
-msgstr "查詢"
-
-#: widgets.py:260
-msgid "Add Another"
-msgstr "新增其它"
-
-#: widgets.py:302
-msgid "Currently:"
-msgstr "目前:"
-
-#: widgets.py:303
-msgid "Change:"
-msgstr "變動:"
-
-#: templates/admin/404.html:4 templates/admin/404.html.py:8
-msgid "Page not found"
-msgstr "頁面沒有找到"
-
-#: templates/admin/404.html:10
-msgid "We're sorry, but the requested page could not be found."
-msgstr "很抱歉,請求頁面無法找到。"
-
-#: templates/admin/500.html:6 templates/admin/app_index.html:7
-#: templates/admin/base.html:47 templates/admin/change_form.html:19
-#: templates/admin/change_list.html:41
-#: templates/admin/delete_confirmation.html:7
-#: templates/admin/delete_selected_confirmation.html:7
-#: templates/admin/invalid_setup.html:6 templates/admin/object_history.html:7
-#: templates/admin/auth/user/change_password.html:13
-#: templates/registration/logged_out.html:4
-#: templates/registration/password_change_done.html:6
-#: templates/registration/password_change_form.html:7
-#: templates/registration/password_reset_complete.html:6
-#: templates/registration/password_reset_confirm.html:6
-#: templates/registration/password_reset_done.html:6
-#: templates/registration/password_reset_form.html:6
-msgid "Home"
-msgstr "首頁"
-
-#: templates/admin/500.html:7
-msgid "Server error"
-msgstr "伺服器錯誤"
-
-#: templates/admin/500.html:11
-msgid "Server error (500)"
-msgstr "伺服器錯誤 (500)"
-
-#: templates/admin/500.html:14
-msgid "Server Error <em>(500)</em>"
-msgstr "伺服器錯誤 <em>(500)</em>"
-
-#: templates/admin/500.html:15
-msgid ""
-"There's been an error. It's been reported to the site administrators via "
-"email and should be fixed shortly. Thanks for your patience."
-msgstr ""
-"存在一個錯誤。已透過電子郵件回報給網站管理員,並且應該很快就會被修正。謝謝你"
-"的關心。"
-
-#: templates/admin/actions.html:4
-msgid "Run the selected action"
-msgstr "執行選擇的動作"
-
-#: templates/admin/actions.html:4
-msgid "Go"
-msgstr "去"
-
-#: templates/admin/actions.html:11
-msgid "Click here to select the objects across all pages"
-msgstr "點選這裡可選取全部頁面的物件"
-
-#: templates/admin/actions.html:11
-#, python-format
-msgid "Select all %(total_count)s %(module_name)s"
-msgstr "選擇全部 %(total_count)s %(module_name)s"
-
-#: templates/admin/actions.html:13
-msgid "Clear selection"
-msgstr "清除選擇"
-
-#: templates/admin/app_index.html:10 templates/admin/index.html:21
-#, python-format
-msgid "%(name)s"
-msgstr "%(name)s"
-
-#: templates/admin/base.html:28
-msgid "Welcome,"
-msgstr "歡迎,"
-
-#: templates/admin/base.html:33
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Documentation"
-msgstr "文件"
-
-#: templates/admin/base.html:36
-#: templates/admin/auth/user/change_password.html:17
-#: templates/admin/auth/user/change_password.html:51
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Change password"
-msgstr "變更密碼"
-
-#: templates/admin/base.html:38
-#: templates/registration/password_change_done.html:3
-#: templates/registration/password_change_form.html:4
-msgid "Log out"
-msgstr "登出"
-
-#: templates/admin/base_site.html:4
-msgid "Django site admin"
-msgstr "Django 網站管理"
-
-#: templates/admin/base_site.html:7
-msgid "Django administration"
-msgstr "Django 管理"
-
-#: templates/admin/change_form.html:22 templates/admin/index.html:33
-msgid "Add"
-msgstr "新增"
-
-#: templates/admin/change_form.html:32 templates/admin/object_history.html:11
-msgid "History"
-msgstr "歷史"
-
-#: templates/admin/change_form.html:33
-#: templates/admin/edit_inline/stacked.html:9
-#: templates/admin/edit_inline/tabular.html:30
-msgid "View on site"
-msgstr "在網站上檢視"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the error below."
-msgstr "請更正下面的錯誤。"
-
-#: templates/admin/change_form.html:44 templates/admin/change_list.html:67
-#: templates/admin/login.html:17
-#: templates/admin/auth/user/change_password.html:27
-#: templates/registration/password_change_form.html:20
-msgid "Please correct the errors below."
-msgstr ""
-
-#: templates/admin/change_list.html:58
-#, python-format
-msgid "Add %(name)s"
-msgstr "新增 %(name)s"
-
-#: templates/admin/change_list.html:78
-msgid "Filter"
-msgstr "過濾器"
-
-#: templates/admin/change_list_results.html:17
-msgid "Remove from sorting"
-msgstr "從排序中移除"
-
-#: templates/admin/change_list_results.html:18
-#, python-format
-msgid "Sorting priority: %(priority_number)s"
-msgstr "優先排序:%(priority_number)s"
-
-#: templates/admin/change_list_results.html:19
-msgid "Toggle sorting"
-msgstr "切換排序"
-
-#: templates/admin/delete_confirmation.html:11
-#: templates/admin/submit_line.html:4
-msgid "Delete"
-msgstr "刪除"
-
-#: templates/admin/delete_confirmation.html:18
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would result in deleting "
-"related objects, but your account doesn't have permission to delete the "
-"following types of objects:"
-msgstr ""
-"刪除 %(object_name)s '%(escaped_object)s' 會把相關的物件也刪除,不過你的帳號"
-"並沒有刪除以下型態物件的權限:"
-
-#: templates/admin/delete_confirmation.html:26
-#, python-format
-msgid ""
-"Deleting the %(object_name)s '%(escaped_object)s' would require deleting the "
-"following protected related objects:"
-msgstr ""
-"要刪除 %(object_name)s '%(escaped_object)s', 將要求刪除下面受保護的相關物件:"
-
-#: templates/admin/delete_confirmation.html:34
-#, python-format
-msgid ""
-"Are you sure you want to delete the %(object_name)s \"%(escaped_object)s\"? "
-"All of the following related items will be deleted:"
-msgstr ""
-"你確定想要刪除 %(object_name)s \"%(escaped_object)s\"?以下所有的相關項目都會"
-"被刪除:"
-
-#: templates/admin/delete_confirmation.html:39
-#: templates/admin/delete_selected_confirmation.html:44
-msgid "Yes, I'm sure"
-msgstr "是的,我確定"
-
-#: templates/admin/delete_selected_confirmation.html:10
-msgid "Delete multiple objects"
-msgstr "刪除多個物件"
-
-#: templates/admin/delete_selected_confirmation.html:17
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would result in deleting related "
-"objects, but your account doesn't have permission to delete the following "
-"types of objects:"
-msgstr ""
-"要刪除所選的 %(objects_name)s, 結果會刪除相關物件, 但你的帳號無權刪除下面物件"
-"型態:"
-
-#: templates/admin/delete_selected_confirmation.html:25
-#, python-format
-msgid ""
-"Deleting the selected %(objects_name)s would require deleting the following "
-"protected related objects:"
-msgstr "要刪除所選的 %(objects_name)s, 將要求刪除下面受保護的相關物件:"
-
-#: templates/admin/delete_selected_confirmation.html:33
-#, python-format
-msgid ""
-"Are you sure you want to delete the selected %(objects_name)s? All of the "
-"following objects and their related items will be deleted:"
-msgstr ""
-"你是否確定要刪除已選的 %(objects_name)s? 下面全部物件及其相關項目都將被刪除:"
-
-#: templates/admin/filter.html:2
-#, python-format
-msgid " By %(filter_title)s "
-msgstr " 以 %(filter_title)s"
-
-#: templates/admin/index.html:20
-#, python-format
-msgid "Models in the %(name)s application"
-msgstr "%(name)s 應用程式中的Model"
-
-#: templates/admin/index.html:39
-msgid "Change"
-msgstr "變更"
-
-#: templates/admin/index.html:49
-msgid "You don't have permission to edit anything."
-msgstr "你沒有編輯任何東西的權限。"
-
-#: templates/admin/index.html:57
-msgid "Recent Actions"
-msgstr "最近的動作"
-
-#: templates/admin/index.html:58
-msgid "My Actions"
-msgstr "我的動作"
-
-#: templates/admin/index.html:62
-msgid "None available"
-msgstr "無可用的"
-
-#: templates/admin/index.html:76
-msgid "Unknown content"
-msgstr "未知內容"
-
-#: templates/admin/invalid_setup.html:12
-msgid ""
-"Something's wrong with your database installation. Make sure the appropriate "
-"database tables have been created, and make sure the database is readable by "
-"the appropriate user."
-msgstr ""
-"你的資料庫安裝有錯誤。確定資料庫表格已經建立,並確定資料庫可被合適的使用者讀"
-"取。"
-
-#: templates/admin/login.html:37
-msgid "Password:"
-msgstr "密碼:"
-
-#: templates/admin/login.html:44
-msgid "Forgotten your password or username?"
-msgstr "忘了你的密碼或是使用者名稱?"
-
-#: templates/admin/object_history.html:23
-msgid "Date/time"
-msgstr "日期/時間"
-
-#: templates/admin/object_history.html:24
-msgid "User"
-msgstr "使用者"
-
-#: templates/admin/object_history.html:25
-msgid "Action"
-msgstr "動作"
-
-#: templates/admin/object_history.html:39
-msgid ""
-"This object doesn't have a change history. It probably wasn't added via this "
-"admin site."
-msgstr "這個物件沒有變更的歷史。它可能不是透過這個管理網站新增的。"
-
-#: templates/admin/pagination.html:10
-msgid "Show all"
-msgstr "顯示全部"
-
-#: templates/admin/pagination.html:11 templates/admin/submit_line.html:3
-msgid "Save"
-msgstr "儲存"
-
-#: templates/admin/search_form.html:7
-msgid "Search"
-msgstr "搜尋"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(counter)s result"
-msgid_plural "%(counter)s results"
-msgstr[0] "%(counter)s 結果"
-
-#: templates/admin/search_form.html:9
-#, python-format
-msgid "%(full_result_count)s total"
-msgstr "總共 %(full_result_count)s"
-
-#: templates/admin/submit_line.html:5
-msgid "Save as new"
-msgstr "儲存為新的"
-
-#: templates/admin/submit_line.html:6
-msgid "Save and add another"
-msgstr "儲存並新增另一個"
-
-#: templates/admin/submit_line.html:7
-msgid "Save and continue editing"
-msgstr "儲存並繼續編輯"
-
-#: templates/admin/auth/user/add_form.html:6
-msgid ""
-"First, enter a username and password. Then, you'll be able to edit more user "
-"options."
-msgstr "首先,輸入一個使用者名稱和密碼。然後你可以編輯更多使用者選項。"
-
-#: templates/admin/auth/user/add_form.html:8
-msgid "Enter a username and password."
-msgstr "輸入一個使用者名稱和密碼。"
-
-#: templates/admin/auth/user/change_password.html:31
-#, python-format
-msgid "Enter a new password for the user <strong>%(username)s</strong>."
-msgstr "為使用者<strong>%(username)s</strong>輸入一個新的密碼。"
-
-#: templates/admin/auth/user/change_password.html:38
-msgid "Password"
-msgstr "密碼"
-
-#: templates/admin/auth/user/change_password.html:44
-#: templates/registration/password_change_form.html:42
-msgid "Password (again)"
-msgstr "密碼(重複)"
-
-#: templates/admin/auth/user/change_password.html:45
-msgid "Enter the same password as above, for verification."
-msgstr "為檢查用,請輸入與上面相同的密碼。"
-
-#: templates/admin/edit_inline/stacked.html:26
-#: templates/admin/edit_inline/tabular.html:76
-msgid "Remove"
-msgstr "移除"
-
-#: templates/admin/edit_inline/stacked.html:27
-#: templates/admin/edit_inline/tabular.html:75
-#, python-format
-msgid "Add another %(verbose_name)s"
-msgstr "新增其它 %(verbose_name)s"
-
-#: templates/admin/edit_inline/tabular.html:17
-msgid "Delete?"
-msgstr "刪除?"
-
-#: templates/registration/logged_out.html:8
-msgid "Thanks for spending some quality time with the Web site today."
-msgstr "感謝你今天花了重要的時間停留在本網站。"
-
-#: templates/registration/logged_out.html:10
-msgid "Log in again"
-msgstr "重新登入"
-
-#: templates/registration/password_change_done.html:7
-#: templates/registration/password_change_form.html:8
-#: templates/registration/password_change_form.html:12
-#: templates/registration/password_change_form.html:24
-msgid "Password change"
-msgstr "密碼變更"
-
-#: templates/registration/password_change_done.html:11
-#: templates/registration/password_change_done.html:15
-msgid "Password change successful"
-msgstr "密碼成功地變更"
-
-#: templates/registration/password_change_done.html:17
-msgid "Your password was changed."
-msgstr "你的密碼已變更。"
-
-#: templates/registration/password_change_form.html:26
-msgid ""
-"Please enter your old password, for security's sake, and then enter your new "
-"password twice so we can verify you typed it in correctly."
-msgstr ""
-"為了安全上的考量,請輸入你的舊密碼,再輸入新密碼兩次,讓我們核驗你已正確地輸"
-"入。"
-
-#: templates/registration/password_change_form.html:32
-msgid "Old password"
-msgstr "舊的密碼"
-
-#: templates/registration/password_change_form.html:37
-msgid "New password"
-msgstr "新的密碼"
-
-#: templates/registration/password_change_form.html:48
-#: templates/registration/password_reset_confirm.html:26
-msgid "Change my password"
-msgstr "變更我的密碼"
-
-#: templates/registration/password_reset_complete.html:7
-#: templates/registration/password_reset_confirm.html:11
-#: templates/registration/password_reset_done.html:7
-#: templates/registration/password_reset_form.html:7
-#: templates/registration/password_reset_form.html:11
-#: templates/registration/password_reset_form.html:15
-msgid "Password reset"
-msgstr "密碼重設"
-
-#: templates/registration/password_reset_complete.html:11
-#: templates/registration/password_reset_complete.html:15
-msgid "Password reset complete"
-msgstr "密碼重設成功"
-
-#: templates/registration/password_reset_complete.html:17
-msgid "Your password has been set. You may go ahead and log in now."
-msgstr "你的密碼已設置,現在可以繼續登入。"
-
-#: templates/registration/password_reset_confirm.html:7
-msgid "Password reset confirmation"
-msgstr "密碼重設確認"
-
-#: templates/registration/password_reset_confirm.html:17
-msgid "Enter new password"
-msgstr "輸入新的密碼"
-
-#: templates/registration/password_reset_confirm.html:19
-msgid ""
-"Please enter your new password twice so we can verify you typed it in "
-"correctly."
-msgstr "請輸入你的新密碼兩次, 這樣我們才能檢查你的輸入是否正確。"
-
-#: templates/registration/password_reset_confirm.html:23
-msgid "New password:"
-msgstr "新密碼:"
-
-#: templates/registration/password_reset_confirm.html:25
-msgid "Confirm password:"
-msgstr "確認密碼:"
-
-#: templates/registration/password_reset_confirm.html:31
-msgid "Password reset unsuccessful"
-msgstr "密碼重設失敗"
-
-#: templates/registration/password_reset_confirm.html:33
-msgid ""
-"The password reset link was invalid, possibly because it has already been "
-"used. Please request a new password reset."
-msgstr "密碼重設連結無效,可能因為他已使用。請重新請求密碼重設。"
-
-#: templates/registration/password_reset_done.html:11
-#: templates/registration/password_reset_done.html:15
-msgid "Password reset successful"
-msgstr "密碼成功地重設"
-
-#: templates/registration/password_reset_done.html:17
-msgid ""
-"We've emailed you instructions for setting your password. You should be "
-"receiving them shortly."
-msgstr ""
-"我們已將重設密碼的相關指示寄到您提交的電子郵件地址。您應該很快就會收到。"
-
-#: templates/registration/password_reset_done.html:19
-msgid ""
-"If you don't receive an email, please make sure you've entered the address "
-"you registered with, and check your spam folder."
-msgstr ""
-"如果您未收到電子郵件,請確認您輸入的電子郵件地址與您註冊時輸入的一致,並檢查"
-"您的垃圾郵件匣。"
-
-#: templates/registration/password_reset_email.html:2
-#, python-format
-msgid ""
-"You're receiving this email because you requested a password reset for your "
-"user account at %(site_name)s."
-msgstr "這封電子郵件來自 %(site_name)s,因為你要求為帳號重新設定密碼。"
-
-#: templates/registration/password_reset_email.html:4
-msgid "Please go to the following page and choose a new password:"
-msgstr "請到該頁面選擇一個新的密碼:"
-
-#: templates/registration/password_reset_email.html:8
-msgid "Your username, in case you've forgotten:"
-msgstr "你的使用者名稱,萬一你已經忘記的話:"
-
-#: templates/registration/password_reset_email.html:10
-msgid "Thanks for using our site!"
-msgstr "感謝使用本網站!"
-
-#: templates/registration/password_reset_email.html:12
-#, python-format
-msgid "The %(site_name)s team"
-msgstr "%(site_name)s 團隊"
-
-#: templates/registration/password_reset_form.html:17
-msgid ""
-"Forgotten your password? Enter your email address below, and we'll email "
-"instructions for setting a new one."
-msgstr ""
-"忘記你的密碼? 請在下面輸入你的電子郵件位址, 然後我們會寄出設定新密碼的操作指"
-"示。"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Email address:"
-msgstr "電子信箱:"
-
-#: templates/registration/password_reset_form.html:21
-msgid "Reset my password"
-msgstr "重設我的密碼"
-
-#: templatetags/admin_list.py:348
-msgid "All dates"
-msgstr "所有日期"
-
-#: views/main.py:35
-msgid "(None)"
-msgstr "(無)"
-
-#: views/main.py:84
-#, python-format
-msgid "Select %s"
-msgstr "選擇 %s"
-
-#: views/main.py:86
-#, python-format
-msgid "Select %s to change"
-msgstr "選擇 %s 來變更"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/zh_TW/LC_MESSAGES/djangojs.mo b/lib/python2.7/site-packages/django/contrib/admin/locale/zh_TW/LC_MESSAGES/djangojs.mo
deleted file mode 100644
index 367dd1f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/zh_TW/LC_MESSAGES/djangojs.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/locale/zh_TW/LC_MESSAGES/djangojs.po b/lib/python2.7/site-packages/django/contrib/admin/locale/zh_TW/LC_MESSAGES/djangojs.po
deleted file mode 100644
index a33fda3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/locale/zh_TW/LC_MESSAGES/djangojs.po
+++ /dev/null
@@ -1,178 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# ilay <ilay@ilay.tw>, 2012
-# mail6543210 <mail6543210@yahoo.com.tw>, 2013
-# tcc <tcchou@tcchou.org>, 2011
-# yyc1217 <yyc1217@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/"
-"language/zh_TW/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_TW\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: static/admin/js/SelectFilter2.js:45
-#, c-format
-msgid "Available %s"
-msgstr "可用 %s"
-
-#: static/admin/js/SelectFilter2.js:46
-#, c-format
-msgid ""
-"This is the list of available %s. You may choose some by selecting them in "
-"the box below and then clicking the \"Choose\" arrow between the two boxes."
-msgstr ""
-"可用的 %s 列表。你可以在下方的方框內選擇後,點擊兩個方框中的\"選取\"箭頭以選"
-"取。"
-
-#: static/admin/js/SelectFilter2.js:53
-#, c-format
-msgid "Type into this box to filter down the list of available %s."
-msgstr "輸入到這個方框以過濾可用的 %s 列表。"
-
-#: static/admin/js/SelectFilter2.js:57
-msgid "Filter"
-msgstr "過濾器"
-
-#: static/admin/js/SelectFilter2.js:61
-msgid "Choose all"
-msgstr "全選"
-
-#: static/admin/js/SelectFilter2.js:61
-#, c-format
-msgid "Click to choose all %s at once."
-msgstr "點擊以一次選取所有的 %s"
-
-#: static/admin/js/SelectFilter2.js:67
-msgid "Choose"
-msgstr "選取"
-
-#: static/admin/js/SelectFilter2.js:69
-msgid "Remove"
-msgstr "移除"
-
-#: static/admin/js/SelectFilter2.js:75
-#, c-format
-msgid "Chosen %s"
-msgstr "%s 被選"
-
-#: static/admin/js/SelectFilter2.js:76
-#, c-format
-msgid ""
-"This is the list of chosen %s. You may remove some by selecting them in the "
-"box below and then clicking the \"Remove\" arrow between the two boxes."
-msgstr ""
-"選取的 %s 列表。你可以在下方的方框內選擇後,點擊兩個方框中的\"移除\"箭頭以移"
-"除。"
-
-#: static/admin/js/SelectFilter2.js:80
-msgid "Remove all"
-msgstr "全部移除"
-
-#: static/admin/js/SelectFilter2.js:80
-#, c-format
-msgid "Click to remove all chosen %s at once."
-msgstr "點擊以一次移除所有選取的 %s"
-
-#: static/admin/js/actions.js:18 static/admin/js/actions.min.js:1
-msgid "%(sel)s of %(cnt)s selected"
-msgid_plural "%(sel)s of %(cnt)s selected"
-msgstr[0] "%(cnt)s 中 %(sel)s 個被選"
-
-#: static/admin/js/actions.js:109 static/admin/js/actions.min.js:5
-msgid ""
-"You have unsaved changes on individual editable fields. If you run an "
-"action, your unsaved changes will be lost."
-msgstr "你尚未儲存一個可編輯欄位的變更。如果你執行動作, 未儲存的變更將會遺失。"
-
-#: static/admin/js/actions.js:121 static/admin/js/actions.min.js:5
-msgid ""
-"You have selected an action, but you haven't saved your changes to "
-"individual fields yet. Please click OK to save. You'll need to re-run the "
-"action."
-msgstr ""
-"你已選了一個動作, 但有一個可編輯欄位的變更尚未儲存。請點選 OK 進行儲存。你需"
-"要重新執行該動作。"
-
-#: static/admin/js/actions.js:123 static/admin/js/actions.min.js:6
-msgid ""
-"You have selected an action, and you haven't made any changes on individual "
-"fields. You're probably looking for the Go button rather than the Save "
-"button."
-msgstr ""
-"你已選了一個動作, 但沒有任何改變。你可能動到 '去' 按鈕, 而不是 '儲存' 按鈕。"
-
-#: static/admin/js/calendar.js:8
-msgid ""
-"January February March April May June July August September October November "
-"December"
-msgstr "一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月"
-
-#: static/admin/js/calendar.js:9
-msgid "S M T W T F S"
-msgstr "日 一 二 三 四 五 六"
-
-#: static/admin/js/collapse.js:8 static/admin/js/collapse.js.c:19
-#: static/admin/js/collapse.min.js:1
-msgid "Show"
-msgstr "顯示"
-
-#: static/admin/js/collapse.js:16 static/admin/js/collapse.min.js:1
-msgid "Hide"
-msgstr "隱藏"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:52
-#: static/admin/js/admin/DateTimeShortcuts.js:88
-msgid "Now"
-msgstr "現在"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:56
-msgid "Clock"
-msgstr "時鐘"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:84
-msgid "Choose a time"
-msgstr "選擇一個時間"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:89
-msgid "Midnight"
-msgstr "午夜"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:90
-msgid "6 a.m."
-msgstr "上午 6 點"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:91
-msgid "Noon"
-msgstr "中午"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:95
-#: static/admin/js/admin/DateTimeShortcuts.js:208
-msgid "Cancel"
-msgstr "取消"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:148
-#: static/admin/js/admin/DateTimeShortcuts.js:201
-msgid "Today"
-msgstr "今天"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:152
-msgid "Calendar"
-msgstr "日曆"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:199
-msgid "Yesterday"
-msgstr "昨天"
-
-#: static/admin/js/admin/DateTimeShortcuts.js:203
-msgid "Tomorrow"
-msgstr "明天"
diff --git a/lib/python2.7/site-packages/django/contrib/admin/models.py b/lib/python2.7/site-packages/django/contrib/admin/models.py
deleted file mode 100644
index dc282b7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/models.py
+++ /dev/null
@@ -1,81 +0,0 @@
-from __future__ import unicode_literals
-
-from django.db import models
-from django.conf import settings
-from django.contrib.contenttypes.models import ContentType
-from django.contrib.admin.util import quote
-from django.core.urlresolvers import reverse, NoReverseMatch
-from django.utils.translation import ugettext, ugettext_lazy as _
-from django.utils.encoding import smart_text
-from django.utils.encoding import python_2_unicode_compatible
-
-ADDITION = 1
-CHANGE = 2
-DELETION = 3
-
-
-class LogEntryManager(models.Manager):
- def log_action(self, user_id, content_type_id, object_id, object_repr, action_flag, change_message=''):
- e = self.model(None, None, user_id, content_type_id, smart_text(object_id), object_repr[:200], action_flag, change_message)
- e.save()
-
-
-@python_2_unicode_compatible
-class LogEntry(models.Model):
- action_time = models.DateTimeField(_('action time'), auto_now=True)
- user = models.ForeignKey(settings.AUTH_USER_MODEL)
- content_type = models.ForeignKey(ContentType, blank=True, null=True)
- object_id = models.TextField(_('object id'), blank=True, null=True)
- object_repr = models.CharField(_('object repr'), max_length=200)
- action_flag = models.PositiveSmallIntegerField(_('action flag'))
- change_message = models.TextField(_('change message'), blank=True)
-
- objects = LogEntryManager()
-
- class Meta:
- verbose_name = _('log entry')
- verbose_name_plural = _('log entries')
- db_table = 'django_admin_log'
- ordering = ('-action_time',)
-
- def __repr__(self):
- return smart_text(self.action_time)
-
- def __str__(self):
- if self.action_flag == ADDITION:
- return ugettext('Added "%(object)s".') % {'object': self.object_repr}
- elif self.action_flag == CHANGE:
- return ugettext('Changed "%(object)s" - %(changes)s') % {
- 'object': self.object_repr,
- 'changes': self.change_message,
- }
- elif self.action_flag == DELETION:
- return ugettext('Deleted "%(object)s."') % {'object': self.object_repr}
-
- return ugettext('LogEntry Object')
-
- def is_addition(self):
- return self.action_flag == ADDITION
-
- def is_change(self):
- return self.action_flag == CHANGE
-
- def is_deletion(self):
- return self.action_flag == DELETION
-
- def get_edited_object(self):
- "Returns the edited object represented by this log entry"
- return self.content_type.get_object_for_this_type(pk=self.object_id)
-
- def get_admin_url(self):
- """
- Returns the admin URL to edit the object represented by this log entry.
- This is relative to the Django admin index page.
- """
- if self.content_type and self.object_id:
- url_name = 'admin:%s_%s_change' % (self.content_type.app_label, self.content_type.model)
- try:
- return reverse(url_name, args=(quote(self.object_id),))
- except NoReverseMatch:
- pass
- return None
diff --git a/lib/python2.7/site-packages/django/contrib/admin/options.py b/lib/python2.7/site-packages/django/contrib/admin/options.py
deleted file mode 100644
index 9dddcb0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/options.py
+++ /dev/null
@@ -1,1718 +0,0 @@
-import copy
-import operator
-from functools import partial, reduce, update_wrapper
-
-from django import forms
-from django.conf import settings
-from django.contrib import messages
-from django.contrib.admin import widgets, helpers
-from django.contrib.admin.util import (unquote, flatten_fieldsets, get_deleted_objects,
- model_format_dict, NestedObjects, lookup_needs_distinct)
-from django.contrib.admin import validation
-from django.contrib.admin.templatetags.admin_static import static
-from django.contrib.admin.templatetags.admin_urls import add_preserved_filters
-from django.contrib.auth import get_permission_codename
-from django.contrib.contenttypes.models import ContentType
-from django.core.exceptions import PermissionDenied, ValidationError, FieldError
-from django.core.paginator import Paginator
-from django.core.urlresolvers import reverse
-from django.db import models, transaction, router
-from django.db.models.constants import LOOKUP_SEP
-from django.db.models.related import RelatedObject
-from django.db.models.fields import BLANK_CHOICE_DASH, FieldDoesNotExist
-from django.db.models.sql.constants import QUERY_TERMS
-from django.forms.formsets import all_valid, DELETION_FIELD_NAME
-from django.forms.models import (modelform_factory, modelformset_factory,
- inlineformset_factory, BaseInlineFormSet, modelform_defines_fields)
-from django.http import Http404, HttpResponseRedirect
-from django.http.response import HttpResponseBase
-from django.shortcuts import get_object_or_404
-from django.template.response import SimpleTemplateResponse, TemplateResponse
-from django.utils.decorators import method_decorator
-from django.utils.datastructures import SortedDict
-from django.utils.html import escape, escapejs
-from django.utils.safestring import mark_safe
-from django.utils import six
-from django.utils.deprecation import RenameMethodsBase
-from django.utils.http import urlencode
-from django.utils.text import capfirst, get_text_list
-from django.utils.translation import ugettext as _
-from django.utils.translation import ungettext
-from django.utils.encoding import force_text
-from django.views.decorators.csrf import csrf_protect
-
-
-IS_POPUP_VAR = '_popup'
-
-HORIZONTAL, VERTICAL = 1, 2
-# returns the <ul> class for a given radio_admin field
-get_ul_class = lambda x: 'radiolist%s' % (' inline' if x == HORIZONTAL else '')
-
-
-class IncorrectLookupParameters(Exception):
- pass
-
-# Defaults for formfield_overrides. ModelAdmin subclasses can change this
-# by adding to ModelAdmin.formfield_overrides.
-
-FORMFIELD_FOR_DBFIELD_DEFAULTS = {
- models.DateTimeField: {
- 'form_class': forms.SplitDateTimeField,
- 'widget': widgets.AdminSplitDateTime
- },
- models.DateField: {'widget': widgets.AdminDateWidget},
- models.TimeField: {'widget': widgets.AdminTimeWidget},
- models.TextField: {'widget': widgets.AdminTextareaWidget},
- models.URLField: {'widget': widgets.AdminURLFieldWidget},
- models.IntegerField: {'widget': widgets.AdminIntegerFieldWidget},
- models.BigIntegerField: {'widget': widgets.AdminBigIntegerFieldWidget},
- models.CharField: {'widget': widgets.AdminTextInputWidget},
- models.ImageField: {'widget': widgets.AdminFileWidget},
- models.FileField: {'widget': widgets.AdminFileWidget},
- models.EmailField: {'widget': widgets.AdminEmailInputWidget},
-}
-
-csrf_protect_m = method_decorator(csrf_protect)
-
-
-class RenameBaseModelAdminMethods(forms.MediaDefiningClass, RenameMethodsBase):
- renamed_methods = (
- ('queryset', 'get_queryset', PendingDeprecationWarning),
- )
-
-
-class BaseModelAdmin(six.with_metaclass(RenameBaseModelAdminMethods)):
- """Functionality common to both ModelAdmin and InlineAdmin."""
-
- raw_id_fields = ()
- fields = None
- exclude = None
- fieldsets = None
- form = forms.ModelForm
- filter_vertical = ()
- filter_horizontal = ()
- radio_fields = {}
- prepopulated_fields = {}
- formfield_overrides = {}
- readonly_fields = ()
- ordering = None
-
- # validation
- validator_class = validation.BaseValidator
-
- @classmethod
- def validate(cls, model):
- validator = cls.validator_class()
- validator.validate(cls, model)
-
- def __init__(self):
- overrides = FORMFIELD_FOR_DBFIELD_DEFAULTS.copy()
- overrides.update(self.formfield_overrides)
- self.formfield_overrides = overrides
-
- def formfield_for_dbfield(self, db_field, **kwargs):
- """
- Hook for specifying the form Field instance for a given database Field
- instance.
-
- If kwargs are given, they're passed to the form Field's constructor.
- """
- request = kwargs.pop("request", None)
-
- # If the field specifies choices, we don't need to look for special
- # admin widgets - we just need to use a select widget of some kind.
- if db_field.choices:
- return self.formfield_for_choice_field(db_field, request, **kwargs)
-
- # ForeignKey or ManyToManyFields
- if isinstance(db_field, (models.ForeignKey, models.ManyToManyField)):
- # Combine the field kwargs with any options for formfield_overrides.
- # Make sure the passed in **kwargs override anything in
- # formfield_overrides because **kwargs is more specific, and should
- # always win.
- if db_field.__class__ in self.formfield_overrides:
- kwargs = dict(self.formfield_overrides[db_field.__class__], **kwargs)
-
- # Get the correct formfield.
- if isinstance(db_field, models.ForeignKey):
- formfield = self.formfield_for_foreignkey(db_field, request, **kwargs)
- elif isinstance(db_field, models.ManyToManyField):
- formfield = self.formfield_for_manytomany(db_field, request, **kwargs)
-
- # For non-raw_id fields, wrap the widget with a wrapper that adds
- # extra HTML -- the "add other" interface -- to the end of the
- # rendered output. formfield can be None if it came from a
- # OneToOneField with parent_link=True or a M2M intermediary.
- if formfield and db_field.name not in self.raw_id_fields:
- related_modeladmin = self.admin_site._registry.get(
- db_field.rel.to)
- can_add_related = bool(related_modeladmin and
- related_modeladmin.has_add_permission(request))
- formfield.widget = widgets.RelatedFieldWidgetWrapper(
- formfield.widget, db_field.rel, self.admin_site,
- can_add_related=can_add_related)
-
- return formfield
-
- # If we've got overrides for the formfield defined, use 'em. **kwargs
- # passed to formfield_for_dbfield override the defaults.
- for klass in db_field.__class__.mro():
- if klass in self.formfield_overrides:
- kwargs = dict(copy.deepcopy(self.formfield_overrides[klass]), **kwargs)
- return db_field.formfield(**kwargs)
-
- # For any other type of field, just call its formfield() method.
- return db_field.formfield(**kwargs)
-
- def formfield_for_choice_field(self, db_field, request=None, **kwargs):
- """
- Get a form Field for a database Field that has declared choices.
- """
- # If the field is named as a radio_field, use a RadioSelect
- if db_field.name in self.radio_fields:
- # Avoid stomping on custom widget/choices arguments.
- if 'widget' not in kwargs:
- kwargs['widget'] = widgets.AdminRadioSelect(attrs={
- 'class': get_ul_class(self.radio_fields[db_field.name]),
- })
- if 'choices' not in kwargs:
- kwargs['choices'] = db_field.get_choices(
- include_blank=db_field.blank,
- blank_choice=[('', _('None'))]
- )
- return db_field.formfield(**kwargs)
-
- def get_field_queryset(self, db, db_field, request):
- """
- If the ModelAdmin specifies ordering, the queryset should respect that
- ordering. Otherwise don't specify the queryset, let the field decide
- (returns None in that case).
- """
- related_admin = self.admin_site._registry.get(db_field.rel.to, None)
- if related_admin is not None:
- ordering = related_admin.get_ordering(request)
- if ordering is not None and ordering != ():
- return db_field.rel.to._default_manager.using(db).order_by(*ordering).complex_filter(db_field.rel.limit_choices_to)
- return None
-
- def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
- """
- Get a form Field for a ForeignKey.
- """
- db = kwargs.get('using')
- if db_field.name in self.raw_id_fields:
- kwargs['widget'] = widgets.ForeignKeyRawIdWidget(db_field.rel,
- self.admin_site, using=db)
- elif db_field.name in self.radio_fields:
- kwargs['widget'] = widgets.AdminRadioSelect(attrs={
- 'class': get_ul_class(self.radio_fields[db_field.name]),
- })
- kwargs['empty_label'] = _('None') if db_field.blank else None
-
- if not 'queryset' in kwargs:
- queryset = self.get_field_queryset(db, db_field, request)
- if queryset is not None:
- kwargs['queryset'] = queryset
-
- return db_field.formfield(**kwargs)
-
- def formfield_for_manytomany(self, db_field, request=None, **kwargs):
- """
- Get a form Field for a ManyToManyField.
- """
- # If it uses an intermediary model that isn't auto created, don't show
- # a field in admin.
- if not db_field.rel.through._meta.auto_created:
- return None
- db = kwargs.get('using')
-
- if db_field.name in self.raw_id_fields:
- kwargs['widget'] = widgets.ManyToManyRawIdWidget(db_field.rel,
- self.admin_site, using=db)
- kwargs['help_text'] = ''
- elif db_field.name in (list(self.filter_vertical) + list(self.filter_horizontal)):
- kwargs['widget'] = widgets.FilteredSelectMultiple(db_field.verbose_name, (db_field.name in self.filter_vertical))
-
- if not 'queryset' in kwargs:
- queryset = self.get_field_queryset(db, db_field, request)
- if queryset is not None:
- kwargs['queryset'] = queryset
-
- return db_field.formfield(**kwargs)
-
- def _declared_fieldsets(self):
- if self.fieldsets:
- return self.fieldsets
- elif self.fields:
- return [(None, {'fields': self.fields})]
- return None
- declared_fieldsets = property(_declared_fieldsets)
-
- def get_ordering(self, request):
- """
- Hook for specifying field ordering.
- """
- return self.ordering or () # otherwise we might try to *None, which is bad ;)
-
- def get_readonly_fields(self, request, obj=None):
- """
- Hook for specifying custom readonly fields.
- """
- return self.readonly_fields
-
- def get_prepopulated_fields(self, request, obj=None):
- """
- Hook for specifying custom prepopulated fields.
- """
- return self.prepopulated_fields
-
- def get_queryset(self, request):
- """
- Returns a QuerySet of all model instances that can be edited by the
- admin site. This is used by changelist_view.
- """
- qs = self.model._default_manager.get_queryset()
- # TODO: this should be handled by some parameter to the ChangeList.
- ordering = self.get_ordering(request)
- if ordering:
- qs = qs.order_by(*ordering)
- return qs
-
- def lookup_allowed(self, lookup, value):
- model = self.model
- # Check FKey lookups that are allowed, so that popups produced by
- # ForeignKeyRawIdWidget, on the basis of ForeignKey.limit_choices_to,
- # are allowed to work.
- for l in model._meta.related_fkey_lookups:
- for k, v in widgets.url_params_from_lookup_dict(l).items():
- if k == lookup and v == value:
- return True
-
- parts = lookup.split(LOOKUP_SEP)
-
- # Last term in lookup is a query term (__exact, __startswith etc)
- # This term can be ignored.
- if len(parts) > 1 and parts[-1] in QUERY_TERMS:
- parts.pop()
-
- # Special case -- foo__id__exact and foo__id queries are implied
- # if foo has been specifically included in the lookup list; so
- # drop __id if it is the last part. However, first we need to find
- # the pk attribute name.
- rel_name = None
- for part in parts[:-1]:
- try:
- field, _, _, _ = model._meta.get_field_by_name(part)
- except FieldDoesNotExist:
- # Lookups on non-existent fields are ok, since they're ignored
- # later.
- return True
- if hasattr(field, 'rel'):
- if field.rel is None:
- # This property or relation doesn't exist, but it's allowed
- # since it's ignored in ChangeList.get_filters().
- return True
- model = field.rel.to
- rel_name = field.rel.get_related_field().name
- elif isinstance(field, RelatedObject):
- model = field.model
- rel_name = model._meta.pk.name
- else:
- rel_name = None
- if rel_name and len(parts) > 1 and parts[-1] == rel_name:
- parts.pop()
-
- if len(parts) == 1:
- return True
- clean_lookup = LOOKUP_SEP.join(parts)
- return clean_lookup in self.list_filter or clean_lookup == self.date_hierarchy
-
- def has_add_permission(self, request):
- """
- Returns True if the given request has permission to add an object.
- Can be overridden by the user in subclasses.
- """
- opts = self.opts
- codename = get_permission_codename('add', opts)
- return request.user.has_perm("%s.%s" % (opts.app_label, codename))
-
- def has_change_permission(self, request, obj=None):
- """
- Returns True if the given request has permission to change the given
- Django model instance, the default implementation doesn't examine the
- `obj` parameter.
-
- Can be overridden by the user in subclasses. In such case it should
- return True if the given request has permission to change the `obj`
- model instance. If `obj` is None, this should return True if the given
- request has permission to change *any* object of the given type.
- """
- opts = self.opts
- codename = get_permission_codename('change', opts)
- return request.user.has_perm("%s.%s" % (opts.app_label, codename))
-
- def has_delete_permission(self, request, obj=None):
- """
- Returns True if the given request has permission to change the given
- Django model instance, the default implementation doesn't examine the
- `obj` parameter.
-
- Can be overridden by the user in subclasses. In such case it should
- return True if the given request has permission to delete the `obj`
- model instance. If `obj` is None, this should return True if the given
- request has permission to delete *any* object of the given type.
- """
- opts = self.opts
- codename = get_permission_codename('delete', opts)
- return request.user.has_perm("%s.%s" % (opts.app_label, codename))
-
-
-class ModelAdmin(BaseModelAdmin):
- "Encapsulates all admin options and functionality for a given model."
-
- list_display = ('__str__',)
- list_display_links = ()
- list_filter = ()
- list_select_related = False
- list_per_page = 100
- list_max_show_all = 200
- list_editable = ()
- search_fields = ()
- date_hierarchy = None
- save_as = False
- save_on_top = False
- paginator = Paginator
- preserve_filters = True
- inlines = []
-
- # Custom templates (designed to be over-ridden in subclasses)
- add_form_template = None
- change_form_template = None
- change_list_template = None
- delete_confirmation_template = None
- delete_selected_confirmation_template = None
- object_history_template = None
-
- # Actions
- actions = []
- action_form = helpers.ActionForm
- actions_on_top = True
- actions_on_bottom = False
- actions_selection_counter = True
-
- # validation
- validator_class = validation.ModelAdminValidator
-
- def __init__(self, model, admin_site):
- self.model = model
- self.opts = model._meta
- self.admin_site = admin_site
- super(ModelAdmin, self).__init__()
-
- def get_inline_instances(self, request, obj=None):
- inline_instances = []
- for inline_class in self.inlines:
- inline = inline_class(self.model, self.admin_site)
- if request:
- if not (inline.has_add_permission(request) or
- inline.has_change_permission(request, obj) or
- inline.has_delete_permission(request, obj)):
- continue
- if not inline.has_add_permission(request):
- inline.max_num = 0
- inline_instances.append(inline)
-
- return inline_instances
-
- def get_urls(self):
- from django.conf.urls import patterns, url
-
- def wrap(view):
- def wrapper(*args, **kwargs):
- return self.admin_site.admin_view(view)(*args, **kwargs)
- return update_wrapper(wrapper, view)
-
- info = self.model._meta.app_label, self.model._meta.model_name
-
- urlpatterns = patterns('',
- url(r'^$',
- wrap(self.changelist_view),
- name='%s_%s_changelist' % info),
- url(r'^add/$',
- wrap(self.add_view),
- name='%s_%s_add' % info),
- url(r'^(.+)/history/$',
- wrap(self.history_view),
- name='%s_%s_history' % info),
- url(r'^(.+)/delete/$',
- wrap(self.delete_view),
- name='%s_%s_delete' % info),
- url(r'^(.+)/$',
- wrap(self.change_view),
- name='%s_%s_change' % info),
- )
- return urlpatterns
-
- def urls(self):
- return self.get_urls()
- urls = property(urls)
-
- @property
- def media(self):
- extra = '' if settings.DEBUG else '.min'
- js = [
- 'core.js',
- 'admin/RelatedObjectLookups.js',
- 'jquery%s.js' % extra,
- 'jquery.init.js'
- ]
- if self.actions is not None:
- js.append('actions%s.js' % extra)
- if self.prepopulated_fields:
- js.extend(['urlify.js', 'prepopulate%s.js' % extra])
- return forms.Media(js=[static('admin/js/%s' % url) for url in js])
-
- def get_model_perms(self, request):
- """
- Returns a dict of all perms for this model. This dict has the keys
- ``add``, ``change``, and ``delete`` mapping to the True/False for each
- of those actions.
- """
- return {
- 'add': self.has_add_permission(request),
- 'change': self.has_change_permission(request),
- 'delete': self.has_delete_permission(request),
- }
-
- def get_fieldsets(self, request, obj=None):
- "Hook for specifying fieldsets for the add form."
- if self.declared_fieldsets:
- return self.declared_fieldsets
- form = self.get_form(request, obj, fields=None)
- fields = list(form.base_fields) + list(self.get_readonly_fields(request, obj))
- return [(None, {'fields': fields})]
-
- def get_form(self, request, obj=None, **kwargs):
- """
- Returns a Form class for use in the admin add view. This is used by
- add_view and change_view.
- """
- if 'fields' in kwargs:
- fields = kwargs.pop('fields')
- else:
- fields = flatten_fieldsets(self.get_fieldsets(request, obj))
- if self.exclude is None:
- exclude = []
- else:
- exclude = list(self.exclude)
- exclude.extend(self.get_readonly_fields(request, obj))
- if self.exclude is None and hasattr(self.form, '_meta') and self.form._meta.exclude:
- # Take the custom ModelForm's Meta.exclude into account only if the
- # ModelAdmin doesn't define its own.
- exclude.extend(self.form._meta.exclude)
- # if exclude is an empty list we pass None to be consistent with the
- # default on modelform_factory
- exclude = exclude or None
- defaults = {
- "form": self.form,
- "fields": fields,
- "exclude": exclude,
- "formfield_callback": partial(self.formfield_for_dbfield, request=request),
- }
- defaults.update(kwargs)
-
- if defaults['fields'] is None and not modelform_defines_fields(defaults['form']):
- defaults['fields'] = forms.ALL_FIELDS
-
- try:
- return modelform_factory(self.model, **defaults)
- except FieldError as e:
- raise FieldError('%s. Check fields/fieldsets/exclude attributes of class %s.'
- % (e, self.__class__.__name__))
-
- def get_changelist(self, request, **kwargs):
- """
- Returns the ChangeList class for use on the changelist page.
- """
- from django.contrib.admin.views.main import ChangeList
- return ChangeList
-
- def get_object(self, request, object_id):
- """
- Returns an instance matching the primary key provided. ``None`` is
- returned if no match is found (or the object_id failed validation
- against the primary key field).
- """
- queryset = self.get_queryset(request)
- model = queryset.model
- try:
- object_id = model._meta.pk.to_python(object_id)
- return queryset.get(pk=object_id)
- except (model.DoesNotExist, ValidationError, ValueError):
- return None
-
- def get_changelist_form(self, request, **kwargs):
- """
- Returns a Form class for use in the Formset on the changelist page.
- """
- defaults = {
- "formfield_callback": partial(self.formfield_for_dbfield, request=request),
- }
- defaults.update(kwargs)
- if (defaults.get('fields') is None
- and not modelform_defines_fields(defaults.get('form'))):
- defaults['fields'] = forms.ALL_FIELDS
-
- return modelform_factory(self.model, **defaults)
-
- def get_changelist_formset(self, request, **kwargs):
- """
- Returns a FormSet class for use on the changelist page if list_editable
- is used.
- """
- defaults = {
- "formfield_callback": partial(self.formfield_for_dbfield, request=request),
- }
- defaults.update(kwargs)
- return modelformset_factory(self.model,
- self.get_changelist_form(request), extra=0,
- fields=self.list_editable, **defaults)
-
- def get_formsets(self, request, obj=None):
- for inline in self.get_inline_instances(request, obj):
- yield inline.get_formset(request, obj)
-
- def get_paginator(self, request, queryset, per_page, orphans=0, allow_empty_first_page=True):
- return self.paginator(queryset, per_page, orphans, allow_empty_first_page)
-
- def log_addition(self, request, object):
- """
- Log that an object has been successfully added.
-
- The default implementation creates an admin LogEntry object.
- """
- from django.contrib.admin.models import LogEntry, ADDITION
- LogEntry.objects.log_action(
- user_id=request.user.pk,
- content_type_id=ContentType.objects.get_for_model(object).pk,
- object_id=object.pk,
- object_repr=force_text(object),
- action_flag=ADDITION
- )
-
- def log_change(self, request, object, message):
- """
- Log that an object has been successfully changed.
-
- The default implementation creates an admin LogEntry object.
- """
- from django.contrib.admin.models import LogEntry, CHANGE
- LogEntry.objects.log_action(
- user_id=request.user.pk,
- content_type_id=ContentType.objects.get_for_model(object).pk,
- object_id=object.pk,
- object_repr=force_text(object),
- action_flag=CHANGE,
- change_message=message
- )
-
- def log_deletion(self, request, object, object_repr):
- """
- Log that an object will be deleted. Note that this method is called
- before the deletion.
-
- The default implementation creates an admin LogEntry object.
- """
- from django.contrib.admin.models import LogEntry, DELETION
- LogEntry.objects.log_action(
- user_id=request.user.pk,
- content_type_id=ContentType.objects.get_for_model(self.model).pk,
- object_id=object.pk,
- object_repr=object_repr,
- action_flag=DELETION
- )
-
- def action_checkbox(self, obj):
- """
- A list_display column containing a checkbox widget.
- """
- return helpers.checkbox.render(helpers.ACTION_CHECKBOX_NAME, force_text(obj.pk))
- action_checkbox.short_description = mark_safe('<input type="checkbox" id="action-toggle" />')
- action_checkbox.allow_tags = True
-
- def get_actions(self, request):
- """
- Return a dictionary mapping the names of all actions for this
- ModelAdmin to a tuple of (callable, name, description) for each action.
- """
- # If self.actions is explicitly set to None that means that we don't
- # want *any* actions enabled on this page.
- from django.contrib.admin.views.main import _is_changelist_popup
- if self.actions is None or _is_changelist_popup(request):
- return SortedDict()
-
- actions = []
-
- # Gather actions from the admin site first
- for (name, func) in self.admin_site.actions:
- description = getattr(func, 'short_description', name.replace('_', ' '))
- actions.append((func, name, description))
-
- # Then gather them from the model admin and all parent classes,
- # starting with self and working back up.
- for klass in self.__class__.mro()[::-1]:
- class_actions = getattr(klass, 'actions', [])
- # Avoid trying to iterate over None
- if not class_actions:
- continue
- actions.extend([self.get_action(action) for action in class_actions])
-
- # get_action might have returned None, so filter any of those out.
- actions = filter(None, actions)
-
- # Convert the actions into a SortedDict keyed by name.
- actions = SortedDict([
- (name, (func, name, desc))
- for func, name, desc in actions
- ])
-
- return actions
-
- def get_action_choices(self, request, default_choices=BLANK_CHOICE_DASH):
- """
- Return a list of choices for use in a form object. Each choice is a
- tuple (name, description).
- """
- choices = [] + default_choices
- for func, name, description in six.itervalues(self.get_actions(request)):
- choice = (name, description % model_format_dict(self.opts))
- choices.append(choice)
- return choices
-
- def get_action(self, action):
- """
- Return a given action from a parameter, which can either be a callable,
- or the name of a method on the ModelAdmin. Return is a tuple of
- (callable, name, description).
- """
- # If the action is a callable, just use it.
- if callable(action):
- func = action
- action = action.__name__
-
- # Next, look for a method. Grab it off self.__class__ to get an unbound
- # method instead of a bound one; this ensures that the calling
- # conventions are the same for functions and methods.
- elif hasattr(self.__class__, action):
- func = getattr(self.__class__, action)
-
- # Finally, look for a named method on the admin site
- else:
- try:
- func = self.admin_site.get_action(action)
- except KeyError:
- return None
-
- if hasattr(func, 'short_description'):
- description = func.short_description
- else:
- description = capfirst(action.replace('_', ' '))
- return func, action, description
-
- def get_list_display(self, request):
- """
- Return a sequence containing the fields to be displayed on the
- changelist.
- """
- return self.list_display
-
- def get_list_display_links(self, request, list_display):
- """
- Return a sequence containing the fields to be displayed as links
- on the changelist. The list_display parameter is the list of fields
- returned by get_list_display().
- """
- if self.list_display_links or not list_display:
- return self.list_display_links
- else:
- # Use only the first item in list_display as link
- return list(list_display)[:1]
-
- def get_list_filter(self, request):
- """
- Returns a sequence containing the fields to be displayed as filters in
- the right sidebar of the changelist page.
- """
- return self.list_filter
-
- def get_search_results(self, request, queryset, search_term):
- """
- Returns a tuple containing a queryset to implement the search,
- and a boolean indicating if the results may contain duplicates.
- """
- # Apply keyword searches.
- def construct_search(field_name):
- if field_name.startswith('^'):
- return "%s__istartswith" % field_name[1:]
- elif field_name.startswith('='):
- return "%s__iexact" % field_name[1:]
- elif field_name.startswith('@'):
- return "%s__search" % field_name[1:]
- else:
- return "%s__icontains" % field_name
-
- use_distinct = False
- if self.search_fields and search_term:
- orm_lookups = [construct_search(str(search_field))
- for search_field in self.search_fields]
- for bit in search_term.split():
- or_queries = [models.Q(**{orm_lookup: bit})
- for orm_lookup in orm_lookups]
- queryset = queryset.filter(reduce(operator.or_, or_queries))
- if not use_distinct:
- for search_spec in orm_lookups:
- if lookup_needs_distinct(self.opts, search_spec):
- use_distinct = True
- break
-
- return queryset, use_distinct
-
- def get_preserved_filters(self, request):
- """
- Returns the preserved filters querystring.
- """
- match = request.resolver_match
- if self.preserve_filters and match:
- opts = self.model._meta
- current_url = '%s:%s' % (match.app_name, match.url_name)
- changelist_url = 'admin:%s_%s_changelist' % (opts.app_label, opts.model_name)
- if current_url == changelist_url:
- preserved_filters = request.GET.urlencode()
- else:
- preserved_filters = request.GET.get('_changelist_filters')
-
- if preserved_filters:
- return urlencode({'_changelist_filters': preserved_filters})
- return ''
-
- def construct_change_message(self, request, form, formsets):
- """
- Construct a change message from a changed object.
- """
- change_message = []
- if form.changed_data:
- change_message.append(_('Changed %s.') % get_text_list(form.changed_data, _('and')))
-
- if formsets:
- for formset in formsets:
- for added_object in formset.new_objects:
- change_message.append(_('Added %(name)s "%(object)s".')
- % {'name': force_text(added_object._meta.verbose_name),
- 'object': force_text(added_object)})
- for changed_object, changed_fields in formset.changed_objects:
- change_message.append(_('Changed %(list)s for %(name)s "%(object)s".')
- % {'list': get_text_list(changed_fields, _('and')),
- 'name': force_text(changed_object._meta.verbose_name),
- 'object': force_text(changed_object)})
- for deleted_object in formset.deleted_objects:
- change_message.append(_('Deleted %(name)s "%(object)s".')
- % {'name': force_text(deleted_object._meta.verbose_name),
- 'object': force_text(deleted_object)})
- change_message = ' '.join(change_message)
- return change_message or _('No fields changed.')
-
- def message_user(self, request, message, level=messages.INFO, extra_tags='',
- fail_silently=False):
- """
- Send a message to the user. The default implementation
- posts a message using the django.contrib.messages backend.
-
- Exposes almost the same API as messages.add_message(), but accepts the
- positional arguments in a different order to maintain backwards
- compatibility. For convenience, it accepts the `level` argument as
- a string rather than the usual level number.
- """
-
- if not isinstance(level, int):
- # attempt to get the level if passed a string
- try:
- level = getattr(messages.constants, level.upper())
- except AttributeError:
- levels = messages.constants.DEFAULT_TAGS.values()
- levels_repr = ', '.join('`%s`' % l for l in levels)
- raise ValueError('Bad message level string: `%s`. '
- 'Possible values are: %s' % (level, levels_repr))
-
- messages.add_message(request, level, message, extra_tags=extra_tags,
- fail_silently=fail_silently)
-
- def save_form(self, request, form, change):
- """
- Given a ModelForm return an unsaved instance. ``change`` is True if
- the object is being changed, and False if it's being added.
- """
- return form.save(commit=False)
-
- def save_model(self, request, obj, form, change):
- """
- Given a model instance save it to the database.
- """
- obj.save()
-
- def delete_model(self, request, obj):
- """
- Given a model instance delete it from the database.
- """
- obj.delete()
-
- def save_formset(self, request, form, formset, change):
- """
- Given an inline formset save it to the database.
- """
- formset.save()
-
- def save_related(self, request, form, formsets, change):
- """
- Given the ``HttpRequest``, the parent ``ModelForm`` instance, the
- list of inline formsets and a boolean value based on whether the
- parent is being added or changed, save the related objects to the
- database. Note that at this point save_form() and save_model() have
- already been called.
- """
- form.save_m2m()
- for formset in formsets:
- self.save_formset(request, form, formset, change=change)
-
- def render_change_form(self, request, context, add=False, change=False, form_url='', obj=None):
- opts = self.model._meta
- app_label = opts.app_label
- preserved_filters = self.get_preserved_filters(request)
- form_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, form_url)
- context.update({
- 'add': add,
- 'change': change,
- 'has_add_permission': self.has_add_permission(request),
- 'has_change_permission': self.has_change_permission(request, obj),
- 'has_delete_permission': self.has_delete_permission(request, obj),
- 'has_file_field': True, # FIXME - this should check if form or formsets have a FileField,
- 'has_absolute_url': hasattr(self.model, 'get_absolute_url'),
- 'form_url': form_url,
- 'opts': opts,
- 'content_type_id': ContentType.objects.get_for_model(self.model).id,
- 'save_as': self.save_as,
- 'save_on_top': self.save_on_top,
- })
- if add and self.add_form_template is not None:
- form_template = self.add_form_template
- else:
- form_template = self.change_form_template
-
- return TemplateResponse(request, form_template or [
- "admin/%s/%s/change_form.html" % (app_label, opts.model_name),
- "admin/%s/change_form.html" % app_label,
- "admin/change_form.html"
- ], context, current_app=self.admin_site.name)
-
- def response_add(self, request, obj, post_url_continue=None):
- """
- Determines the HttpResponse for the add_view stage.
- """
- opts = obj._meta
- pk_value = obj._get_pk_val()
- preserved_filters = self.get_preserved_filters(request)
-
- msg_dict = {'name': force_text(opts.verbose_name), 'obj': force_text(obj)}
- # Here, we distinguish between different save types by checking for
- # the presence of keys in request.POST.
- if IS_POPUP_VAR in request.POST:
- return SimpleTemplateResponse('admin/popup_response.html', {
- 'pk_value': escape(pk_value),
- 'obj': escapejs(obj)
- })
-
- elif "_continue" in request.POST:
- msg = _('The %(name)s "%(obj)s" was added successfully. You may edit it again below.') % msg_dict
- self.message_user(request, msg, messages.SUCCESS)
- if post_url_continue is None:
- post_url_continue = reverse('admin:%s_%s_change' %
- (opts.app_label, opts.model_name),
- args=(pk_value,),
- current_app=self.admin_site.name)
- post_url_continue = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, post_url_continue)
- return HttpResponseRedirect(post_url_continue)
-
- elif "_addanother" in request.POST:
- msg = _('The %(name)s "%(obj)s" was added successfully. You may add another %(name)s below.') % msg_dict
- self.message_user(request, msg, messages.SUCCESS)
- redirect_url = request.path
- redirect_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, redirect_url)
- return HttpResponseRedirect(redirect_url)
-
- else:
- msg = _('The %(name)s "%(obj)s" was added successfully.') % msg_dict
- self.message_user(request, msg, messages.SUCCESS)
- return self.response_post_save_add(request, obj)
-
- def response_change(self, request, obj):
- """
- Determines the HttpResponse for the change_view stage.
- """
- opts = self.model._meta
- pk_value = obj._get_pk_val()
- preserved_filters = self.get_preserved_filters(request)
-
- msg_dict = {'name': force_text(opts.verbose_name), 'obj': force_text(obj)}
- if "_continue" in request.POST:
- msg = _('The %(name)s "%(obj)s" was changed successfully. You may edit it again below.') % msg_dict
- self.message_user(request, msg, messages.SUCCESS)
- redirect_url = request.path
- redirect_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, redirect_url)
- return HttpResponseRedirect(redirect_url)
-
- elif "_saveasnew" in request.POST:
- msg = _('The %(name)s "%(obj)s" was added successfully. You may edit it again below.') % msg_dict
- self.message_user(request, msg, messages.SUCCESS)
- redirect_url = reverse('admin:%s_%s_change' %
- (opts.app_label, opts.model_name),
- args=(pk_value,),
- current_app=self.admin_site.name)
- redirect_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, redirect_url)
- return HttpResponseRedirect(redirect_url)
-
- elif "_addanother" in request.POST:
- msg = _('The %(name)s "%(obj)s" was changed successfully. You may add another %(name)s below.') % msg_dict
- self.message_user(request, msg, messages.SUCCESS)
- redirect_url = reverse('admin:%s_%s_add' %
- (opts.app_label, opts.model_name),
- current_app=self.admin_site.name)
- redirect_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, redirect_url)
- return HttpResponseRedirect(redirect_url)
-
- else:
- msg = _('The %(name)s "%(obj)s" was changed successfully.') % msg_dict
- self.message_user(request, msg, messages.SUCCESS)
- return self.response_post_save_change(request, obj)
-
- def response_post_save_add(self, request, obj):
- """
- Figure out where to redirect after the 'Save' button has been pressed
- when adding a new object.
- """
- opts = self.model._meta
- if self.has_change_permission(request, None):
- post_url = reverse('admin:%s_%s_changelist' %
- (opts.app_label, opts.model_name),
- current_app=self.admin_site.name)
- preserved_filters = self.get_preserved_filters(request)
- post_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, post_url)
- else:
- post_url = reverse('admin:index',
- current_app=self.admin_site.name)
- return HttpResponseRedirect(post_url)
-
- def response_post_save_change(self, request, obj):
- """
- Figure out where to redirect after the 'Save' button has been pressed
- when editing an existing object.
- """
- opts = self.model._meta
-
- if self.has_change_permission(request, None):
- post_url = reverse('admin:%s_%s_changelist' %
- (opts.app_label, opts.model_name),
- current_app=self.admin_site.name)
- preserved_filters = self.get_preserved_filters(request)
- post_url = add_preserved_filters({'preserved_filters': preserved_filters, 'opts': opts}, post_url)
- else:
- post_url = reverse('admin:index',
- current_app=self.admin_site.name)
- return HttpResponseRedirect(post_url)
-
- def response_action(self, request, queryset):
- """
- Handle an admin action. This is called if a request is POSTed to the
- changelist; it returns an HttpResponse if the action was handled, and
- None otherwise.
- """
-
- # There can be multiple action forms on the page (at the top
- # and bottom of the change list, for example). Get the action
- # whose button was pushed.
- try:
- action_index = int(request.POST.get('index', 0))
- except ValueError:
- action_index = 0
-
- # Construct the action form.
- data = request.POST.copy()
- data.pop(helpers.ACTION_CHECKBOX_NAME, None)
- data.pop("index", None)
-
- # Use the action whose button was pushed
- try:
- data.update({'action': data.getlist('action')[action_index]})
- except IndexError:
- # If we didn't get an action from the chosen form that's invalid
- # POST data, so by deleting action it'll fail the validation check
- # below. So no need to do anything here
- pass
-
- action_form = self.action_form(data, auto_id=None)
- action_form.fields['action'].choices = self.get_action_choices(request)
-
- # If the form's valid we can handle the action.
- if action_form.is_valid():
- action = action_form.cleaned_data['action']
- select_across = action_form.cleaned_data['select_across']
- func = self.get_actions(request)[action][0]
-
- # Get the list of selected PKs. If nothing's selected, we can't
- # perform an action on it, so bail. Except we want to perform
- # the action explicitly on all objects.
- selected = request.POST.getlist(helpers.ACTION_CHECKBOX_NAME)
- if not selected and not select_across:
- # Reminder that something needs to be selected or nothing will happen
- msg = _("Items must be selected in order to perform "
- "actions on them. No items have been changed.")
- self.message_user(request, msg, messages.WARNING)
- return None
-
- if not select_across:
- # Perform the action only on the selected objects
- queryset = queryset.filter(pk__in=selected)
-
- response = func(self, request, queryset)
-
- # Actions may return an HttpResponse-like object, which will be
- # used as the response from the POST. If not, we'll be a good
- # little HTTP citizen and redirect back to the changelist page.
- if isinstance(response, HttpResponseBase):
- return response
- else:
- return HttpResponseRedirect(request.get_full_path())
- else:
- msg = _("No action selected.")
- self.message_user(request, msg, messages.WARNING)
- return None
-
- @csrf_protect_m
- @transaction.atomic
- def add_view(self, request, form_url='', extra_context=None):
- "The 'add' admin view for this model."
- model = self.model
- opts = model._meta
-
- if not self.has_add_permission(request):
- raise PermissionDenied
-
- ModelForm = self.get_form(request)
- formsets = []
- inline_instances = self.get_inline_instances(request, None)
- if request.method == 'POST':
- form = ModelForm(request.POST, request.FILES)
- if form.is_valid():
- new_object = self.save_form(request, form, change=False)
- form_validated = True
- else:
- form_validated = False
- new_object = self.model()
- prefixes = {}
- for FormSet, inline in zip(self.get_formsets(request), inline_instances):
- prefix = FormSet.get_default_prefix()
- prefixes[prefix] = prefixes.get(prefix, 0) + 1
- if prefixes[prefix] != 1 or not prefix:
- prefix = "%s-%s" % (prefix, prefixes[prefix])
- formset = FormSet(data=request.POST, files=request.FILES,
- instance=new_object,
- save_as_new="_saveasnew" in request.POST,
- prefix=prefix, queryset=inline.get_queryset(request))
- formsets.append(formset)
- if all_valid(formsets) and form_validated:
- self.save_model(request, new_object, form, False)
- self.save_related(request, form, formsets, False)
- self.log_addition(request, new_object)
- return self.response_add(request, new_object)
- else:
- # Prepare the dict of initial data from the request.
- # We have to special-case M2Ms as a list of comma-separated PKs.
- initial = dict(request.GET.items())
- for k in initial:
- try:
- f = opts.get_field(k)
- except models.FieldDoesNotExist:
- continue
- if isinstance(f, models.ManyToManyField):
- initial[k] = initial[k].split(",")
- form = ModelForm(initial=initial)
- prefixes = {}
- for FormSet, inline in zip(self.get_formsets(request), inline_instances):
- prefix = FormSet.get_default_prefix()
- prefixes[prefix] = prefixes.get(prefix, 0) + 1
- if prefixes[prefix] != 1 or not prefix:
- prefix = "%s-%s" % (prefix, prefixes[prefix])
- formset = FormSet(instance=self.model(), prefix=prefix,
- queryset=inline.get_queryset(request))
- formsets.append(formset)
-
- adminForm = helpers.AdminForm(form, list(self.get_fieldsets(request)),
- self.get_prepopulated_fields(request),
- self.get_readonly_fields(request),
- model_admin=self)
- media = self.media + adminForm.media
-
- inline_admin_formsets = []
- for inline, formset in zip(inline_instances, formsets):
- fieldsets = list(inline.get_fieldsets(request))
- readonly = list(inline.get_readonly_fields(request))
- prepopulated = dict(inline.get_prepopulated_fields(request))
- inline_admin_formset = helpers.InlineAdminFormSet(inline, formset,
- fieldsets, prepopulated, readonly, model_admin=self)
- inline_admin_formsets.append(inline_admin_formset)
- media = media + inline_admin_formset.media
-
- context = {
- 'title': _('Add %s') % force_text(opts.verbose_name),
- 'adminform': adminForm,
- 'is_popup': IS_POPUP_VAR in request.REQUEST,
- 'media': media,
- 'inline_admin_formsets': inline_admin_formsets,
- 'errors': helpers.AdminErrorList(form, formsets),
- 'app_label': opts.app_label,
- 'preserved_filters': self.get_preserved_filters(request),
- }
- context.update(extra_context or {})
- return self.render_change_form(request, context, form_url=form_url, add=True)
-
- @csrf_protect_m
- @transaction.atomic
- def change_view(self, request, object_id, form_url='', extra_context=None):
- "The 'change' admin view for this model."
- model = self.model
- opts = model._meta
-
- obj = self.get_object(request, unquote(object_id))
-
- if not self.has_change_permission(request, obj):
- raise PermissionDenied
-
- if obj is None:
- raise Http404(_('%(name)s object with primary key %(key)r does not exist.') % {'name': force_text(opts.verbose_name), 'key': escape(object_id)})
-
- if request.method == 'POST' and "_saveasnew" in request.POST:
- return self.add_view(request, form_url=reverse('admin:%s_%s_add' %
- (opts.app_label, opts.model_name),
- current_app=self.admin_site.name))
-
- ModelForm = self.get_form(request, obj)
- formsets = []
- inline_instances = self.get_inline_instances(request, obj)
- if request.method == 'POST':
- form = ModelForm(request.POST, request.FILES, instance=obj)
- if form.is_valid():
- form_validated = True
- new_object = self.save_form(request, form, change=True)
- else:
- form_validated = False
- new_object = obj
- prefixes = {}
- for FormSet, inline in zip(self.get_formsets(request, new_object), inline_instances):
- prefix = FormSet.get_default_prefix()
- prefixes[prefix] = prefixes.get(prefix, 0) + 1
- if prefixes[prefix] != 1 or not prefix:
- prefix = "%s-%s" % (prefix, prefixes[prefix])
- formset = FormSet(request.POST, request.FILES,
- instance=new_object, prefix=prefix,
- queryset=inline.get_queryset(request))
-
- formsets.append(formset)
-
- if all_valid(formsets) and form_validated:
- self.save_model(request, new_object, form, True)
- self.save_related(request, form, formsets, True)
- change_message = self.construct_change_message(request, form, formsets)
- self.log_change(request, new_object, change_message)
- return self.response_change(request, new_object)
-
- else:
- form = ModelForm(instance=obj)
- prefixes = {}
- for FormSet, inline in zip(self.get_formsets(request, obj), inline_instances):
- prefix = FormSet.get_default_prefix()
- prefixes[prefix] = prefixes.get(prefix, 0) + 1
- if prefixes[prefix] != 1 or not prefix:
- prefix = "%s-%s" % (prefix, prefixes[prefix])
- formset = FormSet(instance=obj, prefix=prefix,
- queryset=inline.get_queryset(request))
- formsets.append(formset)
-
- adminForm = helpers.AdminForm(form, self.get_fieldsets(request, obj),
- self.get_prepopulated_fields(request, obj),
- self.get_readonly_fields(request, obj),
- model_admin=self)
- media = self.media + adminForm.media
-
- inline_admin_formsets = []
- for inline, formset in zip(inline_instances, formsets):
- fieldsets = list(inline.get_fieldsets(request, obj))
- readonly = list(inline.get_readonly_fields(request, obj))
- prepopulated = dict(inline.get_prepopulated_fields(request, obj))
- inline_admin_formset = helpers.InlineAdminFormSet(inline, formset,
- fieldsets, prepopulated, readonly, model_admin=self)
- inline_admin_formsets.append(inline_admin_formset)
- media = media + inline_admin_formset.media
-
- context = {
- 'title': _('Change %s') % force_text(opts.verbose_name),
- 'adminform': adminForm,
- 'object_id': object_id,
- 'original': obj,
- 'is_popup': IS_POPUP_VAR in request.REQUEST,
- 'media': media,
- 'inline_admin_formsets': inline_admin_formsets,
- 'errors': helpers.AdminErrorList(form, formsets),
- 'app_label': opts.app_label,
- 'preserved_filters': self.get_preserved_filters(request),
- }
- context.update(extra_context or {})
- return self.render_change_form(request, context, change=True, obj=obj, form_url=form_url)
-
- @csrf_protect_m
- def changelist_view(self, request, extra_context=None):
- """
- The 'change list' admin view for this model.
- """
- from django.contrib.admin.views.main import ERROR_FLAG
- opts = self.model._meta
- app_label = opts.app_label
- if not self.has_change_permission(request, None):
- raise PermissionDenied
-
- list_display = self.get_list_display(request)
- list_display_links = self.get_list_display_links(request, list_display)
- list_filter = self.get_list_filter(request)
-
- # Check actions to see if any are available on this changelist
- actions = self.get_actions(request)
- if actions:
- # Add the action checkboxes if there are any actions available.
- list_display = ['action_checkbox'] + list(list_display)
-
- ChangeList = self.get_changelist(request)
- try:
- cl = ChangeList(request, self.model, list_display,
- list_display_links, list_filter, self.date_hierarchy,
- self.search_fields, self.list_select_related,
- self.list_per_page, self.list_max_show_all, self.list_editable,
- self)
- except IncorrectLookupParameters:
- # Wacky lookup parameters were given, so redirect to the main
- # changelist page, without parameters, and pass an 'invalid=1'
- # parameter via the query string. If wacky parameters were given
- # and the 'invalid=1' parameter was already in the query string,
- # something is screwed up with the database, so display an error
- # page.
- if ERROR_FLAG in request.GET.keys():
- return SimpleTemplateResponse('admin/invalid_setup.html', {
- 'title': _('Database error'),
- })
- return HttpResponseRedirect(request.path + '?' + ERROR_FLAG + '=1')
-
- # If the request was POSTed, this might be a bulk action or a bulk
- # edit. Try to look up an action or confirmation first, but if this
- # isn't an action the POST will fall through to the bulk edit check,
- # below.
- action_failed = False
- selected = request.POST.getlist(helpers.ACTION_CHECKBOX_NAME)
-
- # Actions with no confirmation
- if (actions and request.method == 'POST' and
- 'index' in request.POST and '_save' not in request.POST):
- if selected:
- response = self.response_action(request, queryset=cl.get_queryset(request))
- if response:
- return response
- else:
- action_failed = True
- else:
- msg = _("Items must be selected in order to perform "
- "actions on them. No items have been changed.")
- self.message_user(request, msg, messages.WARNING)
- action_failed = True
-
- # Actions with confirmation
- if (actions and request.method == 'POST' and
- helpers.ACTION_CHECKBOX_NAME in request.POST and
- 'index' not in request.POST and '_save' not in request.POST):
- if selected:
- response = self.response_action(request, queryset=cl.get_queryset(request))
- if response:
- return response
- else:
- action_failed = True
-
- # If we're allowing changelist editing, we need to construct a formset
- # for the changelist given all the fields to be edited. Then we'll
- # use the formset to validate/process POSTed data.
- formset = cl.formset = None
-
- # Handle POSTed bulk-edit data.
- if (request.method == "POST" and cl.list_editable and
- '_save' in request.POST and not action_failed):
- FormSet = self.get_changelist_formset(request)
- formset = cl.formset = FormSet(request.POST, request.FILES, queryset=cl.result_list)
- if formset.is_valid():
- changecount = 0
- for form in formset.forms:
- if form.has_changed():
- obj = self.save_form(request, form, change=True)
- self.save_model(request, obj, form, change=True)
- self.save_related(request, form, formsets=[], change=True)
- change_msg = self.construct_change_message(request, form, None)
- self.log_change(request, obj, change_msg)
- changecount += 1
-
- if changecount:
- if changecount == 1:
- name = force_text(opts.verbose_name)
- else:
- name = force_text(opts.verbose_name_plural)
- msg = ungettext("%(count)s %(name)s was changed successfully.",
- "%(count)s %(name)s were changed successfully.",
- changecount) % {'count': changecount,
- 'name': name,
- 'obj': force_text(obj)}
- self.message_user(request, msg, messages.SUCCESS)
-
- return HttpResponseRedirect(request.get_full_path())
-
- # Handle GET -- construct a formset for display.
- elif cl.list_editable:
- FormSet = self.get_changelist_formset(request)
- formset = cl.formset = FormSet(queryset=cl.result_list)
-
- # Build the list of media to be used by the formset.
- if formset:
- media = self.media + formset.media
- else:
- media = self.media
-
- # Build the action form and populate it with available actions.
- if actions:
- action_form = self.action_form(auto_id=None)
- action_form.fields['action'].choices = self.get_action_choices(request)
- else:
- action_form = None
-
- selection_note_all = ungettext('%(total_count)s selected',
- 'All %(total_count)s selected', cl.result_count)
-
- context = {
- 'module_name': force_text(opts.verbose_name_plural),
- 'selection_note': _('0 of %(cnt)s selected') % {'cnt': len(cl.result_list)},
- 'selection_note_all': selection_note_all % {'total_count': cl.result_count},
- 'title': cl.title,
- 'is_popup': cl.is_popup,
- 'cl': cl,
- 'media': media,
- 'has_add_permission': self.has_add_permission(request),
- 'opts': cl.opts,
- 'app_label': app_label,
- 'action_form': action_form,
- 'actions_on_top': self.actions_on_top,
- 'actions_on_bottom': self.actions_on_bottom,
- 'actions_selection_counter': self.actions_selection_counter,
- 'preserved_filters': self.get_preserved_filters(request),
- }
- context.update(extra_context or {})
-
- return TemplateResponse(request, self.change_list_template or [
- 'admin/%s/%s/change_list.html' % (app_label, opts.model_name),
- 'admin/%s/change_list.html' % app_label,
- 'admin/change_list.html'
- ], context, current_app=self.admin_site.name)
-
- @csrf_protect_m
- @transaction.atomic
- def delete_view(self, request, object_id, extra_context=None):
- "The 'delete' admin view for this model."
- opts = self.model._meta
- app_label = opts.app_label
-
- obj = self.get_object(request, unquote(object_id))
-
- if not self.has_delete_permission(request, obj):
- raise PermissionDenied
-
- if obj is None:
- raise Http404(
- _('%(name)s object with primary key %(key)r does not exist.') %
- {'name': force_text(opts.verbose_name), 'key': escape(object_id)}
- )
-
- using = router.db_for_write(self.model)
-
- # Populate deleted_objects, a data structure of all related objects that
- # will also be deleted.
- (deleted_objects, perms_needed, protected) = get_deleted_objects(
- [obj], opts, request.user, self.admin_site, using)
-
- if request.POST: # The user has already confirmed the deletion.
- if perms_needed:
- raise PermissionDenied
- obj_display = force_text(obj)
- self.log_deletion(request, obj, obj_display)
- self.delete_model(request, obj)
-
- self.message_user(request, _(
- 'The %(name)s "%(obj)s" was deleted successfully.') % {
- 'name': force_text(opts.verbose_name),
- 'obj': force_text(obj_display)},
- messages.SUCCESS)
-
- if self.has_change_permission(request, None):
- post_url = reverse('admin:%s_%s_changelist' %
- (opts.app_label, opts.model_name),
- current_app=self.admin_site.name)
- preserved_filters = self.get_preserved_filters(request)
- post_url = add_preserved_filters(
- {'preserved_filters': preserved_filters, 'opts': opts}, post_url
- )
- else:
- post_url = reverse('admin:index',
- current_app=self.admin_site.name)
- return HttpResponseRedirect(post_url)
-
- object_name = force_text(opts.verbose_name)
-
- if perms_needed or protected:
- title = _("Cannot delete %(name)s") % {"name": object_name}
- else:
- title = _("Are you sure?")
-
- context = {
- "title": title,
- "object_name": object_name,
- "object": obj,
- "deleted_objects": deleted_objects,
- "perms_lacking": perms_needed,
- "protected": protected,
- "opts": opts,
- "app_label": app_label,
- 'preserved_filters': self.get_preserved_filters(request),
- }
- context.update(extra_context or {})
-
- return TemplateResponse(request, self.delete_confirmation_template or [
- "admin/%s/%s/delete_confirmation.html" % (app_label, opts.model_name),
- "admin/%s/delete_confirmation.html" % app_label,
- "admin/delete_confirmation.html"
- ], context, current_app=self.admin_site.name)
-
- def history_view(self, request, object_id, extra_context=None):
- "The 'history' admin view for this model."
- from django.contrib.admin.models import LogEntry
- # First check if the user can see this history.
- model = self.model
- obj = get_object_or_404(model, pk=unquote(object_id))
-
- if not self.has_change_permission(request, obj):
- raise PermissionDenied
-
- # Then get the history for this object.
- opts = model._meta
- app_label = opts.app_label
- action_list = LogEntry.objects.filter(
- object_id=unquote(object_id),
- content_type__id__exact=ContentType.objects.get_for_model(model).id
- ).select_related().order_by('action_time')
-
- context = {
- 'title': _('Change history: %s') % force_text(obj),
- 'action_list': action_list,
- 'module_name': capfirst(force_text(opts.verbose_name_plural)),
- 'object': obj,
- 'app_label': app_label,
- 'opts': opts,
- 'preserved_filters': self.get_preserved_filters(request),
- }
- context.update(extra_context or {})
- return TemplateResponse(request, self.object_history_template or [
- "admin/%s/%s/object_history.html" % (app_label, opts.model_name),
- "admin/%s/object_history.html" % app_label,
- "admin/object_history.html"
- ], context, current_app=self.admin_site.name)
-
-
-class InlineModelAdmin(BaseModelAdmin):
- """
- Options for inline editing of ``model`` instances.
-
- Provide ``name`` to specify the attribute name of the ``ForeignKey`` from
- ``model`` to its parent. This is required if ``model`` has more than one
- ``ForeignKey`` to its parent.
- """
- model = None
- fk_name = None
- formset = BaseInlineFormSet
- extra = 3
- max_num = None
- template = None
- verbose_name = None
- verbose_name_plural = None
- can_delete = True
-
- # validation
- validator_class = validation.InlineValidator
-
- def __init__(self, parent_model, admin_site):
- self.admin_site = admin_site
- self.parent_model = parent_model
- self.opts = self.model._meta
- super(InlineModelAdmin, self).__init__()
- if self.verbose_name is None:
- self.verbose_name = self.model._meta.verbose_name
- if self.verbose_name_plural is None:
- self.verbose_name_plural = self.model._meta.verbose_name_plural
-
- @property
- def media(self):
- extra = '' if settings.DEBUG else '.min'
- js = ['jquery%s.js' % extra, 'jquery.init.js', 'inlines%s.js' % extra]
- if self.prepopulated_fields:
- js.extend(['urlify.js', 'prepopulate%s.js' % extra])
- if self.filter_vertical or self.filter_horizontal:
- js.extend(['SelectBox.js', 'SelectFilter2.js'])
- return forms.Media(js=[static('admin/js/%s' % url) for url in js])
-
- def get_extra(self, request, obj=None, **kwargs):
- """Hook for customizing the number of extra inline forms."""
- return self.extra
-
- def get_max_num(self, request, obj=None, **kwargs):
- """Hook for customizing the max number of extra inline forms."""
- return self.max_num
-
- def get_formset(self, request, obj=None, **kwargs):
- """Returns a BaseInlineFormSet class for use in admin add/change views."""
- if 'fields' in kwargs:
- fields = kwargs.pop('fields')
- else:
- fields = flatten_fieldsets(self.get_fieldsets(request, obj))
- if self.exclude is None:
- exclude = []
- else:
- exclude = list(self.exclude)
- exclude.extend(self.get_readonly_fields(request, obj))
- if self.exclude is None and hasattr(self.form, '_meta') and self.form._meta.exclude:
- # Take the custom ModelForm's Meta.exclude into account only if the
- # InlineModelAdmin doesn't define its own.
- exclude.extend(self.form._meta.exclude)
- # if exclude is an empty list we use None, since that's the actual
- # default
- exclude = exclude or None
- can_delete = self.can_delete and self.has_delete_permission(request, obj)
- defaults = {
- "form": self.form,
- "formset": self.formset,
- "fk_name": self.fk_name,
- "fields": fields,
- "exclude": exclude,
- "formfield_callback": partial(self.formfield_for_dbfield, request=request),
- "extra": self.get_extra(request, obj, **kwargs),
- "max_num": self.get_max_num(request, obj, **kwargs),
- "can_delete": can_delete,
- }
-
- defaults.update(kwargs)
- base_model_form = defaults['form']
-
- class DeleteProtectedModelForm(base_model_form):
- def hand_clean_DELETE(self):
- """
- We don't validate the 'DELETE' field itself because on
- templates it's not rendered using the field information, but
- just using a generic "deletion_field" of the InlineModelAdmin.
- """
- if self.cleaned_data.get(DELETION_FIELD_NAME, False):
- using = router.db_for_write(self._meta.model)
- collector = NestedObjects(using=using)
- collector.collect([self.instance])
- if collector.protected:
- objs = []
- for p in collector.protected:
- objs.append(
- # Translators: Model verbose name and instance representation, suitable to be an item in a list
- _('%(class_name)s %(instance)s') % {
- 'class_name': p._meta.verbose_name,
- 'instance': p}
- )
- params = {'class_name': self._meta.model._meta.verbose_name,
- 'instance': self.instance,
- 'related_objects': get_text_list(objs, _('and'))}
- msg = _("Deleting %(class_name)s %(instance)s would require "
- "deleting the following protected related objects: "
- "%(related_objects)s")
- raise ValidationError(msg, code='deleting_protected', params=params)
-
- def is_valid(self):
- result = super(DeleteProtectedModelForm, self).is_valid()
- self.hand_clean_DELETE()
- return result
-
- defaults['form'] = DeleteProtectedModelForm
-
- if defaults['fields'] is None and not modelform_defines_fields(defaults['form']):
- defaults['fields'] = forms.ALL_FIELDS
-
- return inlineformset_factory(self.parent_model, self.model, **defaults)
-
- def get_fieldsets(self, request, obj=None):
- if self.declared_fieldsets:
- return self.declared_fieldsets
- form = self.get_formset(request, obj, fields=None).form
- fields = list(form.base_fields) + list(self.get_readonly_fields(request, obj))
- return [(None, {'fields': fields})]
-
- def get_queryset(self, request):
- queryset = super(InlineModelAdmin, self).get_queryset(request)
- if not self.has_change_permission(request):
- queryset = queryset.none()
- return queryset
-
- def has_add_permission(self, request):
- if self.opts.auto_created:
- # We're checking the rights to an auto-created intermediate model,
- # which doesn't have its own individual permissions. The user needs
- # to have the change permission for the related model in order to
- # be able to do anything with the intermediate model.
- return self.has_change_permission(request)
- return super(InlineModelAdmin, self).has_add_permission(request)
-
- def has_change_permission(self, request, obj=None):
- opts = self.opts
- if opts.auto_created:
- # The model was auto-created as intermediary for a
- # ManyToMany-relationship, find the target model
- for field in opts.fields:
- if field.rel and field.rel.to != self.parent_model:
- opts = field.rel.to._meta
- break
- codename = get_permission_codename('change', opts)
- return request.user.has_perm("%s.%s" % (opts.app_label, codename))
-
- def has_delete_permission(self, request, obj=None):
- if self.opts.auto_created:
- # We're checking the rights to an auto-created intermediate model,
- # which doesn't have its own individual permissions. The user needs
- # to have the change permission for the related model in order to
- # be able to do anything with the intermediate model.
- return self.has_change_permission(request, obj)
- return super(InlineModelAdmin, self).has_delete_permission(request, obj)
-
-
-class StackedInline(InlineModelAdmin):
- template = 'admin/edit_inline/stacked.html'
-
-
-class TabularInline(InlineModelAdmin):
- template = 'admin/edit_inline/tabular.html'
diff --git a/lib/python2.7/site-packages/django/contrib/admin/sites.py b/lib/python2.7/site-packages/django/contrib/admin/sites.py
deleted file mode 100644
index e0f43df..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/sites.py
+++ /dev/null
@@ -1,452 +0,0 @@
-from functools import update_wrapper
-from django.http import Http404, HttpResponseRedirect
-from django.contrib.admin import ModelAdmin, actions
-from django.contrib.admin.forms import AdminAuthenticationForm
-from django.contrib.auth import logout as auth_logout, REDIRECT_FIELD_NAME
-from django.contrib.contenttypes import views as contenttype_views
-from django.views.decorators.csrf import csrf_protect
-from django.db.models.base import ModelBase
-from django.core.exceptions import ImproperlyConfigured
-from django.core.urlresolvers import reverse, NoReverseMatch
-from django.template.response import TemplateResponse
-from django.utils import six
-from django.utils.text import capfirst
-from django.utils.translation import ugettext as _
-from django.views.decorators.cache import never_cache
-from django.conf import settings
-
-LOGIN_FORM_KEY = 'this_is_the_login_form'
-
-
-class AlreadyRegistered(Exception):
- pass
-
-
-class NotRegistered(Exception):
- pass
-
-
-class AdminSite(object):
- """
- An AdminSite object encapsulates an instance of the Django admin application, ready
- to be hooked in to your URLconf. Models are registered with the AdminSite using the
- register() method, and the get_urls() method can then be used to access Django view
- functions that present a full admin interface for the collection of registered
- models.
- """
- login_form = None
- index_template = None
- app_index_template = None
- login_template = None
- logout_template = None
- password_change_template = None
- password_change_done_template = None
-
- def __init__(self, name='admin', app_name='admin'):
- self._registry = {} # model_class class -> admin_class instance
- self.name = name
- self.app_name = app_name
- self._actions = {'delete_selected': actions.delete_selected}
- self._global_actions = self._actions.copy()
-
- def register(self, model_or_iterable, admin_class=None, **options):
- """
- Registers the given model(s) with the given admin class.
-
- The model(s) should be Model classes, not instances.
-
- If an admin class isn't given, it will use ModelAdmin (the default
- admin options). If keyword arguments are given -- e.g., list_display --
- they'll be applied as options to the admin class.
-
- If a model is already registered, this will raise AlreadyRegistered.
-
- If a model is abstract, this will raise ImproperlyConfigured.
- """
- if not admin_class:
- admin_class = ModelAdmin
-
- if isinstance(model_or_iterable, ModelBase):
- model_or_iterable = [model_or_iterable]
- for model in model_or_iterable:
- if model._meta.abstract:
- raise ImproperlyConfigured('The model %s is abstract, so it '
- 'cannot be registered with admin.' % model.__name__)
-
- if model in self._registry:
- raise AlreadyRegistered('The model %s is already registered' % model.__name__)
-
- # Ignore the registration if the model has been
- # swapped out.
- if not model._meta.swapped:
- # If we got **options then dynamically construct a subclass of
- # admin_class with those **options.
- if options:
- # For reasons I don't quite understand, without a __module__
- # the created class appears to "live" in the wrong place,
- # which causes issues later on.
- options['__module__'] = __name__
- admin_class = type("%sAdmin" % model.__name__, (admin_class,), options)
-
- if admin_class is not ModelAdmin and settings.DEBUG:
- admin_class.validate(model)
-
- # Instantiate the admin class to save in the registry
- self._registry[model] = admin_class(model, self)
-
- def unregister(self, model_or_iterable):
- """
- Unregisters the given model(s).
-
- If a model isn't already registered, this will raise NotRegistered.
- """
- if isinstance(model_or_iterable, ModelBase):
- model_or_iterable = [model_or_iterable]
- for model in model_or_iterable:
- if model not in self._registry:
- raise NotRegistered('The model %s is not registered' % model.__name__)
- del self._registry[model]
-
- def add_action(self, action, name=None):
- """
- Register an action to be available globally.
- """
- name = name or action.__name__
- self._actions[name] = action
- self._global_actions[name] = action
-
- def disable_action(self, name):
- """
- Disable a globally-registered action. Raises KeyError for invalid names.
- """
- del self._actions[name]
-
- def get_action(self, name):
- """
- Explicitly get a registered global action whether it's enabled or
- not. Raises KeyError for invalid names.
- """
- return self._global_actions[name]
-
- @property
- def actions(self):
- """
- Get all the enabled actions as an iterable of (name, func).
- """
- return six.iteritems(self._actions)
-
- def has_permission(self, request):
- """
- Returns True if the given HttpRequest has permission to view
- *at least one* page in the admin site.
- """
- return request.user.is_active and request.user.is_staff
-
- def check_dependencies(self):
- """
- Check that all things needed to run the admin have been correctly installed.
-
- The default implementation checks that LogEntry, ContentType and the
- auth context processor are installed.
- """
- from django.contrib.admin.models import LogEntry
- from django.contrib.contenttypes.models import ContentType
-
- if not LogEntry._meta.installed:
- raise ImproperlyConfigured("Put 'django.contrib.admin' in your "
- "INSTALLED_APPS setting in order to use the admin application.")
- if not ContentType._meta.installed:
- raise ImproperlyConfigured("Put 'django.contrib.contenttypes' in "
- "your INSTALLED_APPS setting in order to use the admin application.")
- if not ('django.contrib.auth.context_processors.auth' in settings.TEMPLATE_CONTEXT_PROCESSORS or
- 'django.core.context_processors.auth' in settings.TEMPLATE_CONTEXT_PROCESSORS):
- raise ImproperlyConfigured("Put 'django.contrib.auth.context_processors.auth' "
- "in your TEMPLATE_CONTEXT_PROCESSORS setting in order to use the admin application.")
-
- def admin_view(self, view, cacheable=False):
- """
- Decorator to create an admin view attached to this ``AdminSite``. This
- wraps the view and provides permission checking by calling
- ``self.has_permission``.
-
- You'll want to use this from within ``AdminSite.get_urls()``:
-
- class MyAdminSite(AdminSite):
-
- def get_urls(self):
- from django.conf.urls import patterns, url
-
- urls = super(MyAdminSite, self).get_urls()
- urls += patterns('',
- url(r'^my_view/$', self.admin_view(some_view))
- )
- return urls
-
- By default, admin_views are marked non-cacheable using the
- ``never_cache`` decorator. If the view can be safely cached, set
- cacheable=True.
- """
- def inner(request, *args, **kwargs):
- if LOGIN_FORM_KEY in request.POST and request.user.is_authenticated():
- auth_logout(request)
- if not self.has_permission(request):
- if request.path == reverse('admin:logout',
- current_app=self.name):
- index_path = reverse('admin:index', current_app=self.name)
- return HttpResponseRedirect(index_path)
- return self.login(request)
- return view(request, *args, **kwargs)
- if not cacheable:
- inner = never_cache(inner)
- # We add csrf_protect here so this function can be used as a utility
- # function for any view, without having to repeat 'csrf_protect'.
- if not getattr(view, 'csrf_exempt', False):
- inner = csrf_protect(inner)
- return update_wrapper(inner, view)
-
- def get_urls(self):
- from django.conf.urls import patterns, url, include
-
- if settings.DEBUG:
- self.check_dependencies()
-
- def wrap(view, cacheable=False):
- def wrapper(*args, **kwargs):
- return self.admin_view(view, cacheable)(*args, **kwargs)
- return update_wrapper(wrapper, view)
-
- # Admin-site-wide views.
- urlpatterns = patterns('',
- url(r'^$',
- wrap(self.index),
- name='index'),
- url(r'^logout/$',
- wrap(self.logout),
- name='logout'),
- url(r'^password_change/$',
- wrap(self.password_change, cacheable=True),
- name='password_change'),
- url(r'^password_change/done/$',
- wrap(self.password_change_done, cacheable=True),
- name='password_change_done'),
- url(r'^jsi18n/$',
- wrap(self.i18n_javascript, cacheable=True),
- name='jsi18n'),
- url(r'^r/(?P<content_type_id>\d+)/(?P<object_id>.+)/$',
- wrap(contenttype_views.shortcut),
- name='view_on_site'),
- url(r'^(?P<app_label>\w+)/$',
- wrap(self.app_index),
- name='app_list')
- )
-
- # Add in each model's views.
- for model, model_admin in six.iteritems(self._registry):
- urlpatterns += patterns('',
- url(r'^%s/%s/' % (model._meta.app_label, model._meta.model_name),
- include(model_admin.urls))
- )
- return urlpatterns
-
- @property
- def urls(self):
- return self.get_urls(), self.app_name, self.name
-
- def password_change(self, request):
- """
- Handles the "change password" task -- both form display and validation.
- """
- from django.contrib.auth.views import password_change
- url = reverse('admin:password_change_done', current_app=self.name)
- defaults = {
- 'current_app': self.name,
- 'post_change_redirect': url
- }
- if self.password_change_template is not None:
- defaults['template_name'] = self.password_change_template
- return password_change(request, **defaults)
-
- def password_change_done(self, request, extra_context=None):
- """
- Displays the "success" page after a password change.
- """
- from django.contrib.auth.views import password_change_done
- defaults = {
- 'current_app': self.name,
- 'extra_context': extra_context or {},
- }
- if self.password_change_done_template is not None:
- defaults['template_name'] = self.password_change_done_template
- return password_change_done(request, **defaults)
-
- def i18n_javascript(self, request):
- """
- Displays the i18n JavaScript that the Django admin requires.
-
- This takes into account the USE_I18N setting. If it's set to False, the
- generated JavaScript will be leaner and faster.
- """
- if settings.USE_I18N:
- from django.views.i18n import javascript_catalog
- else:
- from django.views.i18n import null_javascript_catalog as javascript_catalog
- return javascript_catalog(request, packages=['django.conf', 'django.contrib.admin'])
-
- @never_cache
- def logout(self, request, extra_context=None):
- """
- Logs out the user for the given HttpRequest.
-
- This should *not* assume the user is already logged in.
- """
- from django.contrib.auth.views import logout
- defaults = {
- 'current_app': self.name,
- 'extra_context': extra_context or {},
- }
- if self.logout_template is not None:
- defaults['template_name'] = self.logout_template
- return logout(request, **defaults)
-
- @never_cache
- def login(self, request, extra_context=None):
- """
- Displays the login form for the given HttpRequest.
- """
- from django.contrib.auth.views import login
- context = {
- 'title': _('Log in'),
- 'app_path': request.get_full_path(),
- REDIRECT_FIELD_NAME: request.get_full_path(),
- }
- context.update(extra_context or {})
-
- defaults = {
- 'extra_context': context,
- 'current_app': self.name,
- 'authentication_form': self.login_form or AdminAuthenticationForm,
- 'template_name': self.login_template or 'admin/login.html',
- }
- return login(request, **defaults)
-
- @never_cache
- def index(self, request, extra_context=None):
- """
- Displays the main admin index page, which lists all of the installed
- apps that have been registered in this site.
- """
- app_dict = {}
- user = request.user
- for model, model_admin in self._registry.items():
- app_label = model._meta.app_label
- has_module_perms = user.has_module_perms(app_label)
-
- if has_module_perms:
- perms = model_admin.get_model_perms(request)
-
- # Check whether user has any perm for this module.
- # If so, add the module to the model_list.
- if True in perms.values():
- info = (app_label, model._meta.model_name)
- model_dict = {
- 'name': capfirst(model._meta.verbose_name_plural),
- 'object_name': model._meta.object_name,
- 'perms': perms,
- }
- if perms.get('change', False):
- try:
- model_dict['admin_url'] = reverse('admin:%s_%s_changelist' % info, current_app=self.name)
- except NoReverseMatch:
- pass
- if perms.get('add', False):
- try:
- model_dict['add_url'] = reverse('admin:%s_%s_add' % info, current_app=self.name)
- except NoReverseMatch:
- pass
- if app_label in app_dict:
- app_dict[app_label]['models'].append(model_dict)
- else:
- app_dict[app_label] = {
- 'name': app_label.title(),
- 'app_label': app_label,
- 'app_url': reverse('admin:app_list', kwargs={'app_label': app_label}, current_app=self.name),
- 'has_module_perms': has_module_perms,
- 'models': [model_dict],
- }
-
- # Sort the apps alphabetically.
- app_list = list(six.itervalues(app_dict))
- app_list.sort(key=lambda x: x['name'])
-
- # Sort the models alphabetically within each app.
- for app in app_list:
- app['models'].sort(key=lambda x: x['name'])
-
- context = {
- 'title': _('Site administration'),
- 'app_list': app_list,
- }
- context.update(extra_context or {})
- return TemplateResponse(request, self.index_template or
- 'admin/index.html', context,
- current_app=self.name)
-
- def app_index(self, request, app_label, extra_context=None):
- user = request.user
- has_module_perms = user.has_module_perms(app_label)
- app_dict = {}
- for model, model_admin in self._registry.items():
- if app_label == model._meta.app_label:
- if has_module_perms:
- perms = model_admin.get_model_perms(request)
-
- # Check whether user has any perm for this module.
- # If so, add the module to the model_list.
- if True in perms.values():
- info = (app_label, model._meta.model_name)
- model_dict = {
- 'name': capfirst(model._meta.verbose_name_plural),
- 'object_name': model._meta.object_name,
- 'perms': perms,
- }
- if perms.get('change', False):
- try:
- model_dict['admin_url'] = reverse('admin:%s_%s_changelist' % info, current_app=self.name)
- except NoReverseMatch:
- pass
- if perms.get('add', False):
- try:
- model_dict['add_url'] = reverse('admin:%s_%s_add' % info, current_app=self.name)
- except NoReverseMatch:
- pass
- if app_dict:
- app_dict['models'].append(model_dict),
- else:
- # First time around, now that we know there's
- # something to display, add in the necessary meta
- # information.
- app_dict = {
- 'name': app_label.title(),
- 'app_label': app_label,
- 'app_url': '',
- 'has_module_perms': has_module_perms,
- 'models': [model_dict],
- }
- if not app_dict:
- raise Http404('The requested admin page does not exist.')
- # Sort the models alphabetically within each app.
- app_dict['models'].sort(key=lambda x: x['name'])
- context = {
- 'title': _('%s administration') % capfirst(app_label),
- 'app_list': [app_dict],
- }
- context.update(extra_context or {})
-
- return TemplateResponse(request, self.app_index_template or [
- 'admin/%s/app_index.html' % app_label,
- 'admin/app_index.html'
- ], context, current_app=self.name)
-
-# This global object represents the default admin site, for the common case.
-# You can instantiate AdminSite in your own code to create a custom admin site.
-site = AdminSite()
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/base.css b/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/base.css
deleted file mode 100644
index 1439b5d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/base.css
+++ /dev/null
@@ -1,840 +0,0 @@
-/*
- DJANGO Admin styles
-*/
-
-body {
- margin: 0;
- padding: 0;
- font-size: 12px;
- font-family: "Lucida Grande","DejaVu Sans","Bitstream Vera Sans",Verdana,Arial,sans-serif;
- color: #333;
- background: #fff;
-}
-
-/* LINKS */
-
-a:link, a:visited {
- color: #5b80b2;
- text-decoration: none;
-}
-
-a:hover {
- color: #036;
-}
-
-a img {
- border: none;
-}
-
-a.section:link, a.section:visited {
- color: white;
- text-decoration: none;
-}
-
-/* GLOBAL DEFAULTS */
-
-p, ol, ul, dl {
- margin: .2em 0 .8em 0;
-}
-
-p {
- padding: 0;
- line-height: 140%;
-}
-
-h1,h2,h3,h4,h5 {
- font-weight: bold;
-}
-
-h1 {
- font-size: 18px;
- color: #666;
- padding: 0 6px 0 0;
- margin: 0 0 .2em 0;
-}
-
-h2 {
- font-size: 16px;
- margin: 1em 0 .5em 0;
-}
-
-h2.subhead {
- font-weight: normal;
- margin-top: 0;
-}
-
-h3 {
- font-size: 14px;
- margin: .8em 0 .3em 0;
- color: #666;
- font-weight: bold;
-}
-
-h4 {
- font-size: 12px;
- margin: 1em 0 .8em 0;
- padding-bottom: 3px;
-}
-
-h5 {
- font-size: 10px;
- margin: 1.5em 0 .5em 0;
- color: #666;
- text-transform: uppercase;
- letter-spacing: 1px;
-}
-
-ul li {
- list-style-type: square;
- padding: 1px 0;
-}
-
-ul.plainlist {
- margin-left: 0 !important;
-}
-
-ul.plainlist li {
- list-style-type: none;
-}
-
-li ul {
- margin-bottom: 0;
-}
-
-li, dt, dd {
- font-size: 11px;
- line-height: 14px;
-}
-
-dt {
- font-weight: bold;
- margin-top: 4px;
-}
-
-dd {
- margin-left: 0;
-}
-
-form {
- margin: 0;
- padding: 0;
-}
-
-fieldset {
- margin: 0;
- padding: 0;
-}
-
-blockquote {
- font-size: 11px;
- color: #777;
- margin-left: 2px;
- padding-left: 10px;
- border-left: 5px solid #ddd;
-}
-
-code, pre {
- font-family: "Bitstream Vera Sans Mono", Monaco, "Courier New", Courier, monospace;
- background: inherit;
- color: #666;
- font-size: 11px;
-}
-
-pre.literal-block {
- margin: 10px;
- background: #eee;
- padding: 6px 8px;
-}
-
-code strong {
- color: #930;
-}
-
-hr {
- clear: both;
- color: #eee;
- background-color: #eee;
- height: 1px;
- border: none;
- margin: 0;
- padding: 0;
- font-size: 1px;
- line-height: 1px;
-}
-
-/* TEXT STYLES & MODIFIERS */
-
-.small {
- font-size: 11px;
-}
-
-.tiny {
- font-size: 10px;
-}
-
-p.tiny {
- margin-top: -2px;
-}
-
-.mini {
- font-size: 9px;
-}
-
-p.mini {
- margin-top: -3px;
-}
-
-.help, p.help {
- font-size: 10px !important;
- color: #999;
-}
-
-img.help-tooltip {
- cursor: help;
-}
-
-p img, h1 img, h2 img, h3 img, h4 img, td img {
- vertical-align: middle;
-}
-
-.quiet, a.quiet:link, a.quiet:visited {
- color: #999 !important;
- font-weight: normal !important;
-}
-
-.quiet strong {
- font-weight: bold !important;
-}
-
-.float-right {
- float: right;
-}
-
-.float-left {
- float: left;
-}
-
-.clear {
- clear: both;
-}
-
-.align-left {
- text-align: left;
-}
-
-.align-right {
- text-align: right;
-}
-
-.example {
- margin: 10px 0;
- padding: 5px 10px;
- background: #efefef;
-}
-
-.nowrap {
- white-space: nowrap;
-}
-
-/* TABLES */
-
-table {
- border-collapse: collapse;
- border-color: #ccc;
-}
-
-td, th {
- font-size: 11px;
- line-height: 13px;
- border-bottom: 1px solid #eee;
- vertical-align: top;
- padding: 5px;
- font-family: "Lucida Grande", Verdana, Arial, sans-serif;
-}
-
-th {
- text-align: left;
- font-size: 12px;
- font-weight: bold;
-}
-
-thead th,
-tfoot td {
- color: #666;
- padding: 2px 5px;
- font-size: 11px;
- background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;
- border-left: 1px solid #ddd;
- border-bottom: 1px solid #ddd;
-}
-
-tfoot td {
- border-bottom: none;
- border-top: 1px solid #ddd;
-}
-
-thead th:first-child,
-tfoot td:first-child {
- border-left: none !important;
-}
-
-thead th.optional {
- font-weight: normal !important;
-}
-
-fieldset table {
- border-right: 1px solid #eee;
-}
-
-tr.row-label td {
- font-size: 9px;
- padding-top: 2px;
- padding-bottom: 0;
- border-bottom: none;
- color: #666;
- margin-top: -1px;
-}
-
-tr.alt {
- background: #f6f6f6;
-}
-
-.row1 {
- background: #EDF3FE;
-}
-
-.row2 {
- background: white;
-}
-
-/* SORTABLE TABLES */
-
-thead th {
- padding: 2px 5px;
- line-height: normal;
-}
-
-thead th a:link, thead th a:visited {
- color: #666;
-}
-
-thead th.sorted {
- background: #c5c5c5 url(../img/nav-bg-selected.gif) top left repeat-x;
-}
-
-thead th.sorted .text {
- padding-right: 42px;
-}
-
-table thead th .text span {
- padding: 2px 5px;
- display:block;
-}
-
-table thead th .text a {
- display: block;
- cursor: pointer;
- padding: 2px 5px;
-}
-
-table thead th.sortable:hover {
- background: white url(../img/nav-bg-reverse.gif) 0 -5px repeat-x;
-}
-
-thead th.sorted a.sortremove {
- visibility: hidden;
-}
-
-table thead th.sorted:hover a.sortremove {
- visibility: visible;
-}
-
-table thead th.sorted .sortoptions {
- display: block;
- padding: 4px 5px 0 5px;
- float: right;
- text-align: right;
-}
-
-table thead th.sorted .sortpriority {
- font-size: .8em;
- min-width: 12px;
- text-align: center;
- vertical-align: top;
-}
-
-table thead th.sorted .sortoptions a {
- width: 14px;
- height: 12px;
- display: inline-block;
-}
-
-table thead th.sorted .sortoptions a.sortremove {
- background: url(../img/sorting-icons.gif) -4px -5px no-repeat;
-}
-
-table thead th.sorted .sortoptions a.sortremove:hover {
- background: url(../img/sorting-icons.gif) -4px -27px no-repeat;
-}
-
-table thead th.sorted .sortoptions a.ascending {
- background: url(../img/sorting-icons.gif) -5px -50px no-repeat;
-}
-
-table thead th.sorted .sortoptions a.ascending:hover {
- background: url(../img/sorting-icons.gif) -5px -72px no-repeat;
-}
-
-table thead th.sorted .sortoptions a.descending {
- background: url(../img/sorting-icons.gif) -5px -94px no-repeat;
-}
-
-table thead th.sorted .sortoptions a.descending:hover {
- background: url(../img/sorting-icons.gif) -5px -115px no-repeat;
-}
-
-/* ORDERABLE TABLES */
-
-table.orderable tbody tr td:hover {
- cursor: move;
-}
-
-table.orderable tbody tr td:first-child {
- padding-left: 14px;
- background-image: url(../img/nav-bg-grabber.gif);
- background-repeat: repeat-y;
-}
-
-table.orderable-initalized .order-cell, body>tr>td.order-cell {
- display: none;
-}
-
-/* FORM DEFAULTS */
-
-input, textarea, select, .form-row p {
- margin: 2px 0;
- padding: 2px 3px;
- vertical-align: middle;
- font-family: "Lucida Grande", Verdana, Arial, sans-serif;
- font-weight: normal;
- font-size: 11px;
-}
-
-textarea {
- vertical-align: top !important;
-}
-
-input[type=text], input[type=password], input[type=email], input[type=url], input[type=number],
-textarea, select, .vTextField {
- border: 1px solid #ccc;
-}
-
-/* FORM BUTTONS */
-
-.button, input[type=submit], input[type=button], .submit-row input {
- background: white url(../img/nav-bg.gif) bottom repeat-x;
- padding: 3px 5px;
- color: black;
- border: 1px solid #bbb;
- border-color: #ddd #aaa #aaa #ddd;
-}
-
-.button:active, input[type=submit]:active, input[type=button]:active {
- background-image: url(../img/nav-bg-reverse.gif);
- background-position: top;
-}
-
-.button[disabled], input[type=submit][disabled], input[type=button][disabled] {
- background-image: url(../img/nav-bg.gif);
- background-position: bottom;
- opacity: 0.4;
-}
-
-.button.default, input[type=submit].default, .submit-row input.default {
- border: 2px solid #5b80b2;
- background: #7CA0C7 url(../img/default-bg.gif) bottom repeat-x;
- font-weight: bold;
- color: white;
- float: right;
-}
-
-.button.default:active, input[type=submit].default:active {
- background-image: url(../img/default-bg-reverse.gif);
- background-position: top;
-}
-
-.button[disabled].default, input[type=submit][disabled].default, input[type=button][disabled].default {
- background-image: url(../img/default-bg.gif);
- background-position: bottom;
- opacity: 0.4;
-}
-
-
-/* MODULES */
-
-.module {
- border: 1px solid #ccc;
- margin-bottom: 5px;
- background: white;
-}
-
-.module p, .module ul, .module h3, .module h4, .module dl, .module pre {
- padding-left: 10px;
- padding-right: 10px;
-}
-
-.module blockquote {
- margin-left: 12px;
-}
-
-.module ul, .module ol {
- margin-left: 1.5em;
-}
-
-.module h3 {
- margin-top: .6em;
-}
-
-.module h2, .module caption, .inline-group h2 {
- margin: 0;
- padding: 2px 5px 3px 5px;
- font-size: 11px;
- text-align: left;
- font-weight: bold;
- background: #7CA0C7 url(../img/default-bg.gif) top left repeat-x;
- color: white;
-}
-
-.module table {
- border-collapse: collapse;
-}
-
-/* MESSAGES & ERRORS */
-
-ul.messagelist {
- padding: 0 0 5px 0;
- margin: 0;
-}
-
-ul.messagelist li {
- font-size: 12px;
- display: block;
- padding: 4px 5px 4px 25px;
- margin: 0 0 3px 0;
- border-bottom: 1px solid #ddd;
- color: #666;
- background: #ffc url(../img/icon_success.gif) 5px .3em no-repeat;
-}
-
-ul.messagelist li.warning{
- background-image: url(../img/icon_alert.gif);
-}
-
-ul.messagelist li.error{
- background-image: url(../img/icon_error.gif);
-}
-
-.errornote {
- font-size: 12px !important;
- display: block;
- padding: 4px 5px 4px 25px;
- margin: 0 0 3px 0;
- border: 1px solid red;
- color: red;
- background: #ffc url(../img/icon_error.gif) 5px .3em no-repeat;
-}
-
-ul.errorlist {
- margin: 0 !important;
- padding: 0 !important;
-}
-
-.errorlist li {
- font-size: 12px !important;
- display: block;
- padding: 4px 5px 4px 25px;
- margin: 0 0 3px 0;
- border: 1px solid red;
- color: white;
- background: red url(../img/icon_alert.gif) 5px .3em no-repeat;
-}
-
-.errorlist li a {
- color: white;
- text-decoration: underline;
-}
-
-td ul.errorlist {
- margin: 0 !important;
- padding: 0 !important;
-}
-
-td ul.errorlist li {
- margin: 0 !important;
-}
-
-.errors {
- background: #ffc;
-}
-
-.errors input, .errors select, .errors textarea {
- border: 1px solid red;
-}
-
-div.system-message {
- background: #ffc;
- margin: 10px;
- padding: 6px 8px;
- font-size: .8em;
-}
-
-div.system-message p.system-message-title {
- padding: 4px 5px 4px 25px;
- margin: 0;
- color: red;
- background: #ffc url(../img/icon_error.gif) 5px .3em no-repeat;
-}
-
-.description {
- font-size: 12px;
- padding: 5px 0 0 12px;
-}
-
-/* BREADCRUMBS */
-
-div.breadcrumbs {
- background: white url(../img/nav-bg-reverse.gif) 0 -10px repeat-x;
- padding: 2px 8px 3px 8px;
- font-size: 11px;
- color: #999;
- border-top: 1px solid white;
- border-bottom: 1px solid #ccc;
- text-align: left;
-}
-
-/* ACTION ICONS */
-
-.addlink {
- padding-left: 12px;
- background: url(../img/icon_addlink.gif) 0 .2em no-repeat;
-}
-
-.changelink {
- padding-left: 12px;
- background: url(../img/icon_changelink.gif) 0 .2em no-repeat;
-}
-
-.deletelink {
- padding-left: 12px;
- background: url(../img/icon_deletelink.gif) 0 .25em no-repeat;
-}
-
-a.deletelink:link, a.deletelink:visited {
- color: #CC3434;
-}
-
-a.deletelink:hover {
- color: #993333;
-}
-
-/* OBJECT TOOLS */
-
-.object-tools {
- font-size: 10px;
- font-weight: bold;
- font-family: Arial,Helvetica,sans-serif;
- padding-left: 0;
- float: right;
- position: relative;
- margin-top: -2.4em;
- margin-bottom: -2em;
-}
-
-.form-row .object-tools {
- margin-top: 5px;
- margin-bottom: 5px;
- float: none;
- height: 2em;
- padding-left: 3.5em;
-}
-
-.object-tools li {
- display: block;
- float: left;
- background: url(../img/tool-left.gif) 0 0 no-repeat;
- padding: 0 0 0 8px;
- margin-left: 2px;
- height: 16px;
-}
-
-.object-tools li:hover {
- background: url(../img/tool-left_over.gif) 0 0 no-repeat;
-}
-
-.object-tools a:link, .object-tools a:visited {
- display: block;
- float: left;
- color: white;
- padding: .1em 14px .1em 8px;
- height: 14px;
- background: #999 url(../img/tool-right.gif) 100% 0 no-repeat;
-}
-
-.object-tools a:hover, .object-tools li:hover a {
- background: #5b80b2 url(../img/tool-right_over.gif) 100% 0 no-repeat;
-}
-
-.object-tools a.viewsitelink, .object-tools a.golink {
- background: #999 url(../img/tooltag-arrowright.gif) top right no-repeat;
- padding-right: 28px;
-}
-
-.object-tools a.viewsitelink:hover, .object-tools a.golink:hover {
- background: #5b80b2 url(../img/tooltag-arrowright_over.gif) top right no-repeat;
-}
-
-.object-tools a.addlink {
- background: #999 url(../img/tooltag-add.gif) top right no-repeat;
- padding-right: 28px;
-}
-
-.object-tools a.addlink:hover {
- background: #5b80b2 url(../img/tooltag-add_over.gif) top right no-repeat;
-}
-
-/* OBJECT HISTORY */
-
-table#change-history {
- width: 100%;
-}
-
-table#change-history tbody th {
- width: 16em;
-}
-
-/* PAGE STRUCTURE */
-
-#container {
- position: relative;
- width: 100%;
- min-width: 760px;
- padding: 0;
-}
-
-#content {
- margin: 10px 15px;
-}
-
-#header {
- width: 100%;
-}
-
-#content-main {
- float: left;
- width: 100%;
-}
-
-#content-related {
- float: right;
- width: 18em;
- position: relative;
- margin-right: -19em;
-}
-
-#footer {
- clear: both;
- padding: 10px;
-}
-
-/* COLUMN TYPES */
-
-.colMS {
- margin-right: 20em !important;
-}
-
-.colSM {
- margin-left: 20em !important;
-}
-
-.colSM #content-related {
- float: left;
- margin-right: 0;
- margin-left: -19em;
-}
-
-.colSM #content-main {
- float: right;
-}
-
-.popup .colM {
- width: 95%;
-}
-
-.subcol {
- float: left;
- width: 46%;
- margin-right: 15px;
-}
-
-.dashboard #content {
- width: 500px;
-}
-
-/* HEADER */
-
-#header {
- background: #417690;
- color: #ffc;
- overflow: hidden;
-}
-
-#header a:link, #header a:visited {
- color: white;
-}
-
-#header a:hover {
- text-decoration: underline;
-}
-
-#branding h1 {
- padding: 0 10px;
- font-size: 18px;
- margin: 8px 0;
- font-weight: normal;
- color: #f4f379;
-}
-
-#branding h2 {
- padding: 0 10px;
- font-size: 14px;
- margin: -8px 0 8px 0;
- font-weight: normal;
- color: #ffc;
-}
-
-#user-tools {
- position: absolute;
- top: 0;
- right: 0;
- padding: 1.2em 10px;
- font-size: 11px;
- text-align: right;
-}
-
-/* SIDEBAR */
-
-#content-related h3 {
- font-size: 12px;
- color: #666;
- margin-bottom: 3px;
-}
-
-#content-related h4 {
- font-size: 11px;
-}
-
-#content-related .module h2 {
- background: #eee url(../img/nav-bg.gif) bottom left repeat-x;
- color: #666;
-}
-
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/changelists.css b/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/changelists.css
deleted file mode 100644
index 28021d0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/changelists.css
+++ /dev/null
@@ -1,293 +0,0 @@
-/* CHANGELISTS */
-
-#changelist {
- position: relative;
- width: 100%;
-}
-
-#changelist table {
- width: 100%;
-}
-
-.change-list .hiddenfields { display:none; }
-
-.change-list .filtered table {
- border-right: 1px solid #ddd;
-}
-
-.change-list .filtered {
- min-height: 400px;
-}
-
-.change-list .filtered {
- background: white url(../img/changelist-bg.gif) top right repeat-y !important;
-}
-
-.change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull {
- margin-right: 160px !important;
- width: auto !important;
-}
-
-.change-list .filtered table tbody th {
- padding-right: 1em;
-}
-
-#changelist-form .results {
- overflow-x: auto;
-}
-
-#changelist .toplinks {
- border-bottom: 1px solid #ccc !important;
-}
-
-#changelist .paginator {
- color: #666;
- border-top: 1px solid #eee;
- border-bottom: 1px solid #eee;
- background: white url(../img/nav-bg.gif) 0 180% repeat-x;
- overflow: hidden;
-}
-
-.change-list .filtered .paginator {
- border-right: 1px solid #ddd;
-}
-
-/* CHANGELIST TABLES */
-
-#changelist table thead th {
- padding: 0;
- white-space: nowrap;
- vertical-align: middle;
-}
-
-#changelist table thead th.action-checkbox-column {
- width: 1.5em;
- text-align: center;
-}
-
-#changelist table tbody td, #changelist table tbody th {
- border-left: 1px solid #ddd;
-}
-
-#changelist table tbody td:first-child, #changelist table tbody th:first-child {
- border-left: 0;
- border-right: 1px solid #ddd;
-}
-
-#changelist table tbody td.action-checkbox {
- text-align:center;
-}
-
-#changelist table tfoot {
- color: #666;
-}
-
-/* TOOLBAR */
-
-#changelist #toolbar {
- padding: 3px;
- border-bottom: 1px solid #ddd;
- background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;
- color: #666;
-}
-
-#changelist #toolbar form input {
- font-size: 11px;
- padding: 1px 2px;
-}
-
-#changelist #toolbar form #searchbar {
- padding: 2px;
-}
-
-#changelist #changelist-search img {
- vertical-align: middle;
-}
-
-/* FILTER COLUMN */
-
-#changelist-filter {
- position: absolute;
- top: 0;
- right: 0;
- z-index: 1000;
- width: 160px;
- border-left: 1px solid #ddd;
- background: #efefef;
- margin: 0;
-}
-
-#changelist-filter h2 {
- font-size: 11px;
- padding: 2px 5px;
- border-bottom: 1px solid #ddd;
-}
-
-#changelist-filter h3 {
- font-size: 12px;
- margin-bottom: 0;
-}
-
-#changelist-filter ul {
- padding-left: 0;
- margin-left: 10px;
-}
-
-#changelist-filter li {
- list-style-type: none;
- margin-left: 0;
- padding-left: 0;
-}
-
-#changelist-filter a {
- color: #999;
-}
-
-#changelist-filter a:hover {
- color: #036;
-}
-
-#changelist-filter li.selected {
- border-left: 5px solid #ccc;
- padding-left: 5px;
- margin-left: -10px;
-}
-
-#changelist-filter li.selected a {
- color: #5b80b2 !important;
-}
-
-/* DATE DRILLDOWN */
-
-.change-list ul.toplinks {
- display: block;
- background: white url(../img/nav-bg-reverse.gif) 0 -10px repeat-x;
- border-top: 1px solid white;
- float: left;
- padding: 0 !important;
- margin: 0 !important;
- width: 100%;
-}
-
-.change-list ul.toplinks li {
- padding: 3px 6px;
- font-weight: bold;
- list-style-type: none;
- display: inline-block;
-}
-
-.change-list ul.toplinks .date-back a {
- color: #999;
-}
-
-.change-list ul.toplinks .date-back a:hover {
- color: #036;
-}
-
-/* PAGINATOR */
-
-.paginator {
- font-size: 11px;
- padding-top: 10px;
- padding-bottom: 10px;
- line-height: 22px;
- margin: 0;
- border-top: 1px solid #ddd;
-}
-
-.paginator a:link, .paginator a:visited {
- padding: 2px 6px;
- border: solid 1px #ccc;
- background: white;
- text-decoration: none;
-}
-
-.paginator a.showall {
- padding: 0 !important;
- border: none !important;
-}
-
-.paginator a.showall:hover {
- color: #036 !important;
- background: transparent !important;
-}
-
-.paginator .end {
- border-width: 2px !important;
- margin-right: 6px;
-}
-
-.paginator .this-page {
- padding: 2px 6px;
- font-weight: bold;
- font-size: 13px;
- vertical-align: top;
-}
-
-.paginator a:hover {
- color: white;
- background: #5b80b2;
- border-color: #036;
-}
-
-/* ACTIONS */
-
-.filtered .actions {
- margin-right: 160px !important;
- border-right: 1px solid #ddd;
-}
-
-#changelist table input {
- margin: 0;
-}
-
-#changelist table tbody tr.selected {
- background-color: #FFFFCC;
-}
-
-#changelist .actions {
- color: #999;
- padding: 3px;
- border-top: 1px solid #fff;
- border-bottom: 1px solid #ddd;
- background: white url(../img/nav-bg-reverse.gif) 0 -10px repeat-x;
-}
-
-#changelist .actions.selected {
- background: #fffccf;
- border-top: 1px solid #fffee8;
- border-bottom: 1px solid #edecd6;
-}
-
-#changelist .actions span.all,
-#changelist .actions span.action-counter,
-#changelist .actions span.clear,
-#changelist .actions span.question {
- font-size: 11px;
- margin: 0 0.5em;
- display: none;
-}
-
-#changelist .actions:last-child {
- border-bottom: none;
-}
-
-#changelist .actions select {
- border: 1px solid #aaa;
- margin-left: 0.5em;
- padding: 1px 2px;
-}
-
-#changelist .actions label {
- font-size: 11px;
- margin-left: 0.5em;
-}
-
-#changelist #action-toggle {
- display: none;
-}
-
-#changelist .actions .button {
- font-size: 11px;
- padding: 1px 2px;
-}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/dashboard.css b/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/dashboard.css
deleted file mode 100644
index 05808bc..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/dashboard.css
+++ /dev/null
@@ -1,30 +0,0 @@
-/* DASHBOARD */
-
-.dashboard .module table th {
- width: 100%;
-}
-
-.dashboard .module table td {
- white-space: nowrap;
-}
-
-.dashboard .module table td a {
- display: block;
- padding-right: .6em;
-}
-
-/* RECENT ACTIONS MODULE */
-
-.module ul.actionlist {
- margin-left: 0;
-}
-
-ul.actionlist li {
- list-style-type: none;
-}
-
-ul.actionlist li {
- overflow: hidden;
- text-overflow: ellipsis;
- -o-text-overflow: ellipsis;
-}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/forms.css b/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/forms.css
deleted file mode 100644
index 4885f62..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/forms.css
+++ /dev/null
@@ -1,364 +0,0 @@
-@import url('widgets.css');
-
-/* FORM ROWS */
-
-.form-row {
- overflow: hidden;
- padding: 8px 12px;
- font-size: 11px;
- border-bottom: 1px solid #eee;
-}
-
-.form-row img, .form-row input {
- vertical-align: middle;
-}
-
-form .form-row p {
- padding-left: 0;
- font-size: 11px;
-}
-
-/* FORM LABELS */
-
-form h4 {
- margin: 0 !important;
- padding: 0 !important;
- border: none !important;
-}
-
-label {
- font-weight: normal !important;
- color: #666;
- font-size: 12px;
-}
-
-.required label, label.required {
- font-weight: bold !important;
- color: #333 !important;
-}
-
-/* RADIO BUTTONS */
-
-form ul.radiolist li {
- list-style-type: none;
-}
-
-form ul.radiolist label {
- float: none;
- display: inline;
-}
-
-form ul.inline {
- margin-left: 0;
- padding: 0;
-}
-
-form ul.inline li {
- float: left;
- padding-right: 7px;
-}
-
-/* ALIGNED FIELDSETS */
-
-.aligned label {
- display: block;
- padding: 3px 10px 0 0;
- float: left;
- width: 8em;
- word-wrap: break-word;
-}
-
-.aligned ul label {
- display: inline;
- float: none;
- width: auto;
-}
-
-.colMS .aligned .vLargeTextField, .colMS .aligned .vXMLLargeTextField {
- width: 350px;
-}
-
-form .aligned p, form .aligned ul {
- margin-left: 7em;
- padding-left: 30px;
-}
-
-form .aligned table p {
- margin-left: 0;
- padding-left: 0;
-}
-
-form .aligned p.help {
- padding-left: 38px;
-}
-
-.aligned .vCheckboxLabel {
- float: none !important;
- display: inline;
- padding-left: 4px;
-}
-
-.colM .aligned .vLargeTextField, .colM .aligned .vXMLLargeTextField {
- width: 610px;
-}
-
-.checkbox-row p.help {
- margin-left: 0;
- padding-left: 0 !important;
-}
-
-fieldset .field-box {
- float: left;
- margin-right: 20px;
-}
-
-/* WIDE FIELDSETS */
-
-.wide label {
- width: 15em !important;
-}
-
-form .wide p {
- margin-left: 15em;
-}
-
-form .wide p.help {
- padding-left: 38px;
-}
-
-.colM fieldset.wide .vLargeTextField, .colM fieldset.wide .vXMLLargeTextField {
- width: 450px;
-}
-
-/* COLLAPSED FIELDSETS */
-
-fieldset.collapsed * {
- display: none;
-}
-
-fieldset.collapsed h2, fieldset.collapsed {
- display: block !important;
-}
-
-fieldset.collapsed h2 {
- background-image: url(../img/nav-bg.gif);
- background-position: bottom left;
- color: #999;
-}
-
-fieldset.collapsed .collapse-toggle {
- background: transparent;
- display: inline !important;
-}
-
-/* MONOSPACE TEXTAREAS */
-
-fieldset.monospace textarea {
- font-family: "Bitstream Vera Sans Mono",Monaco,"Courier New",Courier,monospace;
-}
-
-/* SUBMIT ROW */
-
-.submit-row {
- padding: 5px 7px;
- text-align: right;
- background: white url(../img/nav-bg.gif) 0 100% repeat-x;
- border: 1px solid #ccc;
- margin: 5px 0;
- overflow: hidden;
-}
-
-body.popup .submit-row {
- overflow: auto;
-}
-
-.submit-row input {
- margin: 0 0 0 5px;
-}
-
-.submit-row p {
- margin: 0.3em;
-}
-
-.submit-row p.deletelink-box {
- float: left;
-}
-
-.submit-row .deletelink {
- background: url(../img/icon_deletelink.gif) 0 50% no-repeat;
- padding-left: 14px;
-}
-
-/* CUSTOM FORM FIELDS */
-
-.vSelectMultipleField {
- vertical-align: top !important;
-}
-
-.vCheckboxField {
- border: none;
-}
-
-.vDateField, .vTimeField {
- margin-right: 2px;
-}
-
-.vURLField {
- width: 30em;
-}
-
-.vLargeTextField, .vXMLLargeTextField {
- width: 48em;
-}
-
-.flatpages-flatpage #id_content {
- height: 40.2em;
-}
-
-.module table .vPositiveSmallIntegerField {
- width: 2.2em;
-}
-
-.vTextField {
- width: 20em;
-}
-
-.vIntegerField {
- width: 5em;
-}
-
-.vBigIntegerField {
- width: 10em;
-}
-
-.vForeignKeyRawIdAdminField {
- width: 5em;
-}
-
-/* INLINES */
-
-.inline-group {
- padding: 0;
- border: 1px solid #ccc;
- margin: 10px 0;
-}
-
-.inline-group .aligned label {
- width: 8em;
-}
-
-.inline-related {
- position: relative;
-}
-
-.inline-related h3 {
- margin: 0;
- color: #666;
- padding: 3px 5px;
- font-size: 11px;
- background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;
- border-bottom: 1px solid #ddd;
-}
-
-.inline-related h3 span.delete {
- float: right;
-}
-
-.inline-related h3 span.delete label {
- margin-left: 2px;
- font-size: 11px;
-}
-
-.inline-related fieldset {
- margin: 0;
- background: #fff;
- border: none;
- width: 100%;
-}
-
-.inline-related fieldset.module h3 {
- margin: 0;
- padding: 2px 5px 3px 5px;
- font-size: 11px;
- text-align: left;
- font-weight: bold;
- background: #bcd;
- color: #fff;
-}
-
-.inline-group .tabular fieldset.module {
- border: none;
- border-bottom: 1px solid #ddd;
-}
-
-.inline-related.tabular fieldset.module table {
- width: 100%;
-}
-
-.last-related fieldset {
- border: none;
-}
-
-.inline-group .tabular tr.has_original td {
- padding-top: 2em;
-}
-
-.inline-group .tabular tr td.original {
- padding: 2px 0 0 0;
- width: 0;
- _position: relative;
-}
-
-.inline-group .tabular th.original {
- width: 0px;
- padding: 0;
-}
-
-.inline-group .tabular td.original p {
- position: absolute;
- left: 0;
- height: 1.1em;
- padding: 2px 7px;
- overflow: hidden;
- font-size: 9px;
- font-weight: bold;
- color: #666;
- _width: 700px;
-}
-
-.inline-group ul.tools {
- padding: 0;
- margin: 0;
- list-style: none;
-}
-
-.inline-group ul.tools li {
- display: inline;
- padding: 0 5px;
-}
-
-.inline-group div.add-row,
-.inline-group .tabular tr.add-row td {
- color: #666;
- padding: 3px 5px;
- border-bottom: 1px solid #ddd;
- background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;
-}
-
-.inline-group .tabular tr.add-row td {
- padding: 4px 5px 3px;
- border-bottom: none;
-}
-
-.inline-group ul.tools a.add,
-.inline-group div.add-row a,
-.inline-group .tabular tr.add-row td a {
- background: url(../img/icon_addlink.gif) 0 50% no-repeat;
- padding-left: 14px;
- font-size: 11px;
- outline: 0; /* Remove dotted border around link */
-}
-
-.empty-form {
- display: none;
-}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/ie.css b/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/ie.css
deleted file mode 100644
index fd00f7f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/ie.css
+++ /dev/null
@@ -1,63 +0,0 @@
-/* IE 6 & 7 */
-
-/* Proper fixed width for dashboard in IE6 */
-
-.dashboard #content {
- *width: 768px;
-}
-
-.dashboard #content-main {
- *width: 535px;
-}
-
-/* IE 6 ONLY */
-
-/* Keep header from flowing off the page */
-
-#container {
- _position: static;
-}
-
-/* Put the right sidebars back on the page */
-
-.colMS #content-related {
- _margin-right: 0;
- _margin-left: 10px;
- _position: static;
-}
-
-/* Put the left sidebars back on the page */
-
-.colSM #content-related {
- _margin-right: 10px;
- _margin-left: -115px;
- _position: static;
-}
-
-.form-row {
- _height: 1%;
-}
-
-/* Fix right margin for changelist filters in IE6 */
-
-#changelist-filter ul {
- _margin-right: -10px;
-}
-
-/* IE ignores min-height, but treats height as if it were min-height */
-
-.change-list .filtered {
- _height: 400px;
-}
-
-/* IE doesn't know alpha transparency in PNGs */
-
-.inline-deletelink {
- background: transparent url(../img/inline-delete-8bit.png) no-repeat;
-}
-
-/* IE7 doesn't support inline-block */
-.change-list ul.toplinks li {
- zoom: 1;
- *display: inline;
-} \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/login.css b/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/login.css
deleted file mode 100644
index a91de11..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/login.css
+++ /dev/null
@@ -1,60 +0,0 @@
-/* LOGIN FORM */
-
-body.login {
- background: #eee;
-}
-
-.login #container {
- background: white;
- border: 1px solid #ccc;
- width: 28em;
- min-width: 300px;
- margin-left: auto;
- margin-right: auto;
- margin-top: 100px;
-}
-
-.login #content-main {
- width: 100%;
-}
-
-.login form {
- margin-top: 1em;
-}
-
-.login .form-row {
- padding: 4px 0;
- float: left;
- width: 100%;
-}
-
-.login .form-row label {
- padding-right: 0.5em;
- line-height: 2em;
- font-size: 1em;
- clear: both;
- color: #333;
-}
-
-.login .form-row #id_username, .login .form-row #id_password {
- clear: both;
- padding: 6px;
- width: 100%;
- -webkit-box-sizing: border-box;
- -moz-box-sizing: border-box;
- box-sizing: border-box;
-}
-
-.login span.help {
- font-size: 10px;
- display: block;
-}
-
-.login .submit-row {
- clear: both;
- padding: 1em 0 0 9.4em;
-}
-
-.login .password-reset-link {
- text-align: center;
-}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/rtl.css b/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/rtl.css
deleted file mode 100644
index ba9f1b5..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/rtl.css
+++ /dev/null
@@ -1,250 +0,0 @@
-body {
- direction: rtl;
-}
-
-/* LOGIN */
-
-.login .form-row {
- float: right;
-}
-
-.login .form-row label {
- float: right;
- padding-left: 0.5em;
- padding-right: 0;
- text-align: left;
-}
-
-.login .submit-row {
- clear: both;
- padding: 1em 9.4em 0 0;
-}
-
-/* GLOBAL */
-
-th {
- text-align: right;
-}
-
-.module h2, .module caption {
- text-align: right;
-}
-
-.addlink, .changelink {
- padding-left: 0px;
- padding-right: 12px;
- background-position: 100% 0.2em;
-}
-
-.deletelink {
- padding-left: 0px;
- padding-right: 12px;
- background-position: 100% 0.25em;
-}
-
-.object-tools {
- float: left;
-}
-
-thead th:first-child,
-tfoot td:first-child {
- border-left: 1px solid #ddd !important;
-}
-
-/* LAYOUT */
-
-#user-tools {
- right: auto;
- left: 0;
- text-align: left;
-}
-
-div.breadcrumbs {
- text-align: right;
-}
-
-#content-main {
- float: right;
-}
-
-#content-related {
- float: left;
- margin-left: -19em;
- margin-right: auto;
-}
-
-.colMS {
- margin-left: 20em !important;
- margin-right: 10px !important;
-}
-
-/* SORTABLE TABLES */
-
-table thead th.sorted .sortoptions {
- float: left;
-}
-
-thead th.sorted .text {
- padding-right: 0;
- padding-left: 42px;
-}
-
-/* dashboard styles */
-
-.dashboard .module table td a {
- padding-left: .6em;
- padding-right: 12px;
-}
-
-/* changelists styles */
-
-.change-list .filtered {
- background: white url(../img/changelist-bg_rtl.gif) top left repeat-y !important;
-}
-
-.change-list .filtered table {
- border-left: 1px solid #ddd;
- border-right: 0px none;
-}
-
-#changelist-filter {
- right: auto;
- left: 0;
- border-left: 0px none;
- border-right: 1px solid #ddd;
-}
-
-.change-list .filtered .results, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull {
- margin-right: 0px !important;
- margin-left: 160px !important;
-}
-
-#changelist-filter li.selected {
- border-left: 0px none;
- padding-left: 0px;
- margin-left: 0;
- border-right: 5px solid #ccc;
- padding-right: 5px;
- margin-right: -10px;
-}
-
-.filtered .actions {
- border-left:1px solid #DDDDDD;
- margin-left:160px !important;
- border-right: 0 none;
- margin-right:0 !important;
-}
-
-#changelist table tbody td:first-child, #changelist table tbody th:first-child {
- border-right: 0;
- border-left: 1px solid #ddd;
-}
-
-/* FORMS */
-
-.aligned label {
- padding: 0 0 3px 1em;
- float: right;
-}
-
-.submit-row {
- text-align: left
-}
-
-.submit-row p.deletelink-box {
- float: right;
-}
-
-.submit-row .deletelink {
- background: url(../img/icon_deletelink.gif) 0 50% no-repeat;
- padding-right: 14px;
-}
-
-.vDateField, .vTimeField {
- margin-left: 2px;
-}
-
-form ul.inline li {
- float: right;
- padding-right: 0;
- padding-left: 7px;
-}
-
-input[type=submit].default, .submit-row input.default {
- float: left;
-}
-
-fieldset .field-box {
- float: right;
- margin-left: 20px;
- margin-right: 0;
-}
-
-.errorlist li {
- background-position: 100% .3em;
- padding: 4px 25px 4px 5px;
-}
-
-.errornote {
- background-position: 100% .3em;
- padding: 4px 25px 4px 5px;
-}
-
-/* WIDGETS */
-
-.calendarnav-previous {
- top: 0;
- left: auto;
- right: 0;
-}
-
-.calendarnav-next {
- top: 0;
- right: auto;
- left: 0;
-}
-
-.calendar caption, .calendarbox h2 {
- text-align: center;
-}
-
-.selector {
- float: right;
-}
-
-.selector .selector-filter {
- text-align: right;
-}
-
-.inline-deletelink {
- float: left;
-}
-
-/* MISC */
-
-.inline-related h2, .inline-group h2 {
- text-align: right
-}
-
-.inline-related h3 span.delete {
- padding-right: 20px;
- padding-left: inherit;
- left: 10px;
- right: inherit;
- float:left;
-}
-
-.inline-related h3 span.delete label {
- margin-left: inherit;
- margin-right: 2px;
-}
-
-/* IE7 specific bug fixes */
-
-div.colM {
- position: relative;
-}
-
-.submit-row input {
- float: left;
-} \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/widgets.css b/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/widgets.css
deleted file mode 100644
index d61cd3a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/css/widgets.css
+++ /dev/null
@@ -1,578 +0,0 @@
-/* SELECTOR (FILTER INTERFACE) */
-
-.selector {
- width: 840px;
- float: left;
-}
-
-.selector select {
- width: 400px;
- height: 17.2em;
-}
-
-.selector-available, .selector-chosen {
- float: left;
- width: 400px;
- text-align: center;
- margin-bottom: 5px;
-}
-
-.selector-chosen select {
- border-top: none;
-}
-
-.selector-available h2, .selector-chosen h2 {
- border: 1px solid #ccc;
-}
-
-.selector .selector-available h2 {
- background: white url(../img/nav-bg.gif) bottom left repeat-x;
- color: #666;
-}
-
-.selector .selector-filter {
- background: white;
- border: 1px solid #ccc;
- border-width: 0 1px;
- padding: 3px;
- color: #999;
- font-size: 10px;
- margin: 0;
- text-align: left;
-}
-
-.selector .selector-filter label,
-.inline-group .aligned .selector .selector-filter label {
- width: 16px;
- padding: 2px;
-}
-
-.selector .selector-available input {
- width: 360px;
-}
-
-.selector ul.selector-chooser {
- float: left;
- width: 22px;
- height: 50px;
- background: url(../img/chooser-bg.gif) top center no-repeat;
- margin: 10em 5px 0 5px;
- padding: 0;
-}
-
-.selector-chooser li {
- margin: 0;
- padding: 3px;
- list-style-type: none;
-}
-
-.selector select {
- margin-bottom: 10px;
- margin-top: 0;
-}
-
-.selector-add, .selector-remove {
- width: 16px;
- height: 16px;
- display: block;
- text-indent: -3000px;
- overflow: hidden;
-}
-
-.selector-add {
- background: url(../img/selector-icons.gif) 0 -161px no-repeat;
- cursor: default;
- margin-bottom: 2px;
-}
-
-.active.selector-add {
- background: url(../img/selector-icons.gif) 0 -187px no-repeat;
- cursor: pointer;
-}
-
-.selector-remove {
- background: url(../img/selector-icons.gif) 0 -109px no-repeat;
- cursor: default;
-}
-
-.active.selector-remove {
- background: url(../img/selector-icons.gif) 0 -135px no-repeat;
- cursor: pointer;
-}
-
-a.selector-chooseall, a.selector-clearall {
- display: inline-block;
- text-align: left;
- margin-left: auto;
- margin-right: auto;
- font-weight: bold;
- color: #666;
-}
-
-a.selector-chooseall {
- padding: 3px 18px 3px 0;
-}
-
-a.selector-clearall {
- padding: 3px 0 3px 18px;
-}
-
-a.active.selector-chooseall:hover, a.active.selector-clearall:hover {
- color: #036;
-}
-
-a.selector-chooseall {
- background: url(../img/selector-icons.gif) right -263px no-repeat;
- cursor: default;
-}
-
-a.active.selector-chooseall {
- background: url(../img/selector-icons.gif) right -289px no-repeat;
- cursor: pointer;
-}
-
-a.selector-clearall {
- background: url(../img/selector-icons.gif) left -211px no-repeat;
- cursor: default;
-}
-
-a.active.selector-clearall {
- background: url(../img/selector-icons.gif) left -237px no-repeat;
- cursor: pointer;
-}
-
-/* STACKED SELECTORS */
-
-.stacked {
- float: left;
- width: 500px;
-}
-
-.stacked select {
- width: 480px;
- height: 10.1em;
-}
-
-.stacked .selector-available, .stacked .selector-chosen {
- width: 480px;
-}
-
-.stacked .selector-available {
- margin-bottom: 0;
-}
-
-.stacked .selector-available input {
- width: 442px;
-}
-
-.stacked ul.selector-chooser {
- height: 22px;
- width: 50px;
- margin: 0 0 3px 40%;
- background: url(../img/chooser_stacked-bg.gif) top center no-repeat;
-}
-
-.stacked .selector-chooser li {
- float: left;
- padding: 3px 3px 3px 5px;
-}
-
-.stacked .selector-chooseall, .stacked .selector-clearall {
- display: none;
-}
-
-.stacked .selector-add {
- background: url(../img/selector-icons.gif) 0 -57px no-repeat;
- cursor: default;
-}
-
-.stacked .active.selector-add {
- background: url(../img/selector-icons.gif) 0 -83px no-repeat;
- cursor: pointer;
-}
-
-.stacked .selector-remove {
- background: url(../img/selector-icons.gif) 0 -5px no-repeat;
- cursor: default;
-}
-
-.stacked .active.selector-remove {
- background: url(../img/selector-icons.gif) 0 -31px no-repeat;
- cursor: pointer;
-}
-
-/* DATE AND TIME */
-
-p.datetime {
- line-height: 20px;
- margin: 0;
- padding: 0;
- color: #666;
- font-size: 11px;
- font-weight: bold;
-}
-
-.datetime span {
- font-size: 11px;
- color: #ccc;
- font-weight: normal;
- white-space: nowrap;
-}
-
-table p.datetime {
- font-size: 10px;
- margin-left: 0;
- padding-left: 0;
-}
-
-/* URL */
-
-p.url {
- line-height: 20px;
- margin: 0;
- padding: 0;
- color: #666;
- font-size: 11px;
- font-weight: bold;
-}
-
-.url a {
- font-weight: normal;
-}
-
-/* FILE UPLOADS */
-
-p.file-upload {
- line-height: 20px;
- margin: 0;
- padding: 0;
- color: #666;
- font-size: 11px;
- font-weight: bold;
-}
-
-.file-upload a {
- font-weight: normal;
-}
-
-.file-upload .deletelink {
- margin-left: 5px;
-}
-
-span.clearable-file-input label {
- color: #333;
- font-size: 11px;
- display: inline;
- float: none;
-}
-
-/* CALENDARS & CLOCKS */
-
-.calendarbox, .clockbox {
- margin: 5px auto;
- font-size: 11px;
- width: 16em;
- text-align: center;
- background: white;
- position: relative;
-}
-
-.clockbox {
- width: auto;
-}
-
-.calendar {
- margin: 0;
- padding: 0;
-}
-
-.calendar table {
- margin: 0;
- padding: 0;
- border-collapse: collapse;
- background: white;
- width: 100%;
-}
-
-.calendar caption, .calendarbox h2 {
- margin: 0;
- font-size: 11px;
- text-align: center;
- border-top: none;
-}
-
-.calendar th {
- font-size: 10px;
- color: #666;
- padding: 2px 3px;
- text-align: center;
- background: #e1e1e1 url(../img/nav-bg.gif) 0 50% repeat-x;
- border-bottom: 1px solid #ddd;
-}
-
-.calendar td {
- font-size: 11px;
- text-align: center;
- padding: 0;
- border-top: 1px solid #eee;
- border-bottom: none;
-}
-
-.calendar td.selected a {
- background: #C9DBED;
-}
-
-.calendar td.nonday {
- background: #efefef;
-}
-
-.calendar td.today a {
- background: #ffc;
-}
-
-.calendar td a, .timelist a {
- display: block;
- font-weight: bold;
- padding: 4px;
- text-decoration: none;
- color: #444;
-}
-
-.calendar td a:hover, .timelist a:hover {
- background: #5b80b2;
- color: white;
-}
-
-.calendar td a:active, .timelist a:active {
- background: #036;
- color: white;
-}
-
-.calendarnav {
- font-size: 10px;
- text-align: center;
- color: #ccc;
- margin: 0;
- padding: 1px 3px;
-}
-
-.calendarnav a:link, #calendarnav a:visited, #calendarnav a:hover {
- color: #999;
-}
-
-.calendar-shortcuts {
- background: white;
- font-size: 10px;
- line-height: 11px;
- border-top: 1px solid #eee;
- padding: 3px 0 4px;
- color: #ccc;
-}
-
-.calendarbox .calendarnav-previous, .calendarbox .calendarnav-next {
- display: block;
- position: absolute;
- font-weight: bold;
- font-size: 12px;
- background: #C9DBED url(../img/default-bg.gif) bottom left repeat-x;
- padding: 1px 4px 2px 4px;
- color: white;
-}
-
-.calendarnav-previous:hover, .calendarnav-next:hover {
- background: #036;
-}
-
-.calendarnav-previous {
- top: 0;
- left: 0;
-}
-
-.calendarnav-next {
- top: 0;
- right: 0;
-}
-
-.calendar-cancel {
- margin: 0 !important;
- padding: 0 !important;
- font-size: 10px;
- background: #e1e1e1 url(../img/nav-bg.gif) 0 50% repeat-x;
- border-top: 1px solid #ddd;
-}
-
-.calendar-cancel:hover {
- background: #e1e1e1 url(../img/nav-bg-reverse.gif) 0 50% repeat-x;
-}
-
-.calendar-cancel a {
- color: black;
- display: block;
-}
-
-ul.timelist, .timelist li {
- list-style-type: none;
- margin: 0;
- padding: 0;
-}
-
-.timelist a {
- padding: 2px;
-}
-
-/* INLINE ORDERER */
-
-ul.orderer {
- position: relative;
- padding: 0 !important;
- margin: 0 !important;
- list-style-type: none;
-}
-
-ul.orderer li {
- list-style-type: none;
- display: block;
- padding: 0;
- margin: 0;
- border: 1px solid #bbb;
- border-width: 0 1px 1px 0;
- white-space: nowrap;
- overflow: hidden;
- background: #e2e2e2 url(../img/nav-bg-grabber.gif) repeat-y;
-}
-
-ul.orderer li:hover {
- cursor: move;
- background-color: #ddd;
-}
-
-ul.orderer li a.selector {
- margin-left: 12px;
- overflow: hidden;
- width: 83%;
- font-size: 10px !important;
- padding: 0.6em 0;
-}
-
-ul.orderer li a:link, ul.orderer li a:visited {
- color: #333;
-}
-
-ul.orderer li .inline-deletelink {
- position: absolute;
- right: 4px;
- margin-top: 0.6em;
-}
-
-ul.orderer li.selected {
- background-color: #f8f8f8;
- border-right-color: #f8f8f8;
-}
-
-ul.orderer li.deleted {
- background: #bbb url(../img/deleted-overlay.gif);
-}
-
-ul.orderer li.deleted a:link, ul.orderer li.deleted a:visited {
- color: #888;
-}
-
-ul.orderer li.deleted .inline-deletelink {
- background-image: url(../img/inline-restore.png);
-}
-
-ul.orderer li.deleted:hover, ul.orderer li.deleted a.selector:hover {
- cursor: default;
-}
-
-/* EDIT INLINE */
-
-.inline-deletelink {
- float: right;
- text-indent: -9999px;
- background: transparent url(../img/inline-delete.png) no-repeat;
- width: 15px;
- height: 15px;
- border: 0px none;
- outline: 0; /* Remove dotted border around link */
-}
-
-.inline-deletelink:hover {
- background-position: -15px 0;
- cursor: pointer;
-}
-
-.editinline button.addlink {
- border: 0px none;
- color: #5b80b2;
- font-size: 100%;
- cursor: pointer;
-}
-
-.editinline button.addlink:hover {
- color: #036;
- cursor: pointer;
-}
-
-.editinline table .help {
- text-align: right;
- float: right;
- padding-left: 2em;
-}
-
-.editinline tfoot .addlink {
- white-space: nowrap;
-}
-
-.editinline table thead th:last-child {
- border-left: none;
-}
-
-.editinline tr.deleted {
- background: #ddd url(../img/deleted-overlay.gif);
-}
-
-.editinline tr.deleted .inline-deletelink {
- background-image: url(../img/inline-restore.png);
-}
-
-.editinline tr.deleted td:hover {
- cursor: default;
-}
-
-.editinline tr.deleted td:first-child {
- background-image: none !important;
-}
-
-/* EDIT INLINE - STACKED */
-
-.editinline-stacked {
- min-width: 758px;
-}
-
-.editinline-stacked .inline-object {
- margin-left: 210px;
- background: white;
-}
-
-.editinline-stacked .inline-source {
- float: left;
- width: 200px;
- background: #f8f8f8;
-}
-
-.editinline-stacked .inline-splitter {
- float: left;
- width: 9px;
- background: #f8f8f8 url(../img/inline-splitter-bg.gif) 50% 50% no-repeat;
- border-right: 1px solid #ccc;
-}
-
-.editinline-stacked .controls {
- clear: both;
- background: #e1e1e1 url(../img/nav-bg.gif) top left repeat-x;
- padding: 3px 4px;
- font-size: 11px;
- border-top: 1px solid #ddd;
-}
-
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/changelist-bg.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/changelist-bg.gif
deleted file mode 100644
index 7f46994..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/changelist-bg.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/changelist-bg_rtl.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/changelist-bg_rtl.gif
deleted file mode 100644
index 2379712..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/changelist-bg_rtl.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/chooser-bg.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/chooser-bg.gif
deleted file mode 100644
index 30e83c2..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/chooser-bg.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/chooser_stacked-bg.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/chooser_stacked-bg.gif
deleted file mode 100644
index 5d104b6..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/chooser_stacked-bg.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/default-bg-reverse.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/default-bg-reverse.gif
deleted file mode 100644
index 0873281..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/default-bg-reverse.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/default-bg.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/default-bg.gif
deleted file mode 100644
index 003aeca..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/default-bg.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/deleted-overlay.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/deleted-overlay.gif
deleted file mode 100644
index dc3828f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/deleted-overlay.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_off.png b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_off.png
deleted file mode 100644
index 296b2e2..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_off.png
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_on.png b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_on.png
deleted file mode 100644
index 21f4758..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_on.png
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon-no.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon-no.gif
deleted file mode 100644
index 1b4ee58..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon-no.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon-unknown.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon-unknown.gif
deleted file mode 100644
index cfd2b02..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon-unknown.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon-yes.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon-yes.gif
deleted file mode 100644
index 7399282..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon-yes.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_addlink.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_addlink.gif
deleted file mode 100644
index ee70e1a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_addlink.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_alert.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_alert.gif
deleted file mode 100644
index a1dde26..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_alert.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_calendar.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_calendar.gif
deleted file mode 100644
index 7587b30..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_calendar.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_changelink.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_changelink.gif
deleted file mode 100644
index e1b9afd..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_changelink.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_clock.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_clock.gif
deleted file mode 100644
index ff2d57e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_clock.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_deletelink.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_deletelink.gif
deleted file mode 100644
index 72523e3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_deletelink.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_error.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_error.gif
deleted file mode 100644
index 3730a00..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_error.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_searchbox.png b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_searchbox.png
deleted file mode 100644
index 8ab579e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_searchbox.png
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_success.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_success.gif
deleted file mode 100644
index 5cf90a1..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/icon_success.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-delete-8bit.png b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-delete-8bit.png
deleted file mode 100644
index 95caf59..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-delete-8bit.png
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-delete.png b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-delete.png
deleted file mode 100644
index d59bcd2..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-delete.png
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-restore-8bit.png b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-restore-8bit.png
deleted file mode 100644
index e087c8e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-restore-8bit.png
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-restore.png b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-restore.png
deleted file mode 100644
index efdd92a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-restore.png
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-splitter-bg.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-splitter-bg.gif
deleted file mode 100644
index 32ac5b3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/inline-splitter-bg.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/nav-bg-grabber.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/nav-bg-grabber.gif
deleted file mode 100644
index 0a784fa..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/nav-bg-grabber.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/nav-bg-reverse.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/nav-bg-reverse.gif
deleted file mode 100644
index f11029f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/nav-bg-reverse.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/nav-bg-selected.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/nav-bg-selected.gif
deleted file mode 100644
index 98c5672..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/nav-bg-selected.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/nav-bg.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/nav-bg.gif
deleted file mode 100644
index f8402b8..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/nav-bg.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/selector-icons.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/selector-icons.gif
deleted file mode 100644
index 8809c4f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/selector-icons.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/selector-search.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/selector-search.gif
deleted file mode 100644
index 6d5f4c7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/selector-search.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/sorting-icons.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/sorting-icons.gif
deleted file mode 100644
index 451aae5..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/sorting-icons.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tool-left.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tool-left.gif
deleted file mode 100644
index 011490f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tool-left.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tool-left_over.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tool-left_over.gif
deleted file mode 100644
index 937e07b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tool-left_over.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tool-right.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tool-right.gif
deleted file mode 100644
index cdc140c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tool-right.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tool-right_over.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tool-right_over.gif
deleted file mode 100644
index 4db977e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tool-right_over.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tooltag-add.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tooltag-add.gif
deleted file mode 100644
index 8b53d49..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tooltag-add.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tooltag-add_over.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tooltag-add_over.gif
deleted file mode 100644
index bfc52f1..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tooltag-add_over.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tooltag-arrowright.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tooltag-arrowright.gif
deleted file mode 100644
index cdaaae7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tooltag-arrowright.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tooltag-arrowright_over.gif b/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tooltag-arrowright_over.gif
deleted file mode 100644
index 7163189..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/img/tooltag-arrowright_over.gif
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/LICENSE-JQUERY.txt b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/LICENSE-JQUERY.txt
deleted file mode 100644
index a4c5bd7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/LICENSE-JQUERY.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-Copyright (c) 2010 John Resig, http://jquery.com/
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/SelectBox.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/SelectBox.js
deleted file mode 100644
index f28c861..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/SelectBox.js
+++ /dev/null
@@ -1,111 +0,0 @@
-var SelectBox = {
- cache: new Object(),
- init: function(id) {
- var box = document.getElementById(id);
- var node;
- SelectBox.cache[id] = new Array();
- var cache = SelectBox.cache[id];
- for (var i = 0; (node = box.options[i]); i++) {
- cache.push({value: node.value, text: node.text, displayed: 1});
- }
- },
- redisplay: function(id) {
- // Repopulate HTML select box from cache
- var box = document.getElementById(id);
- box.options.length = 0; // clear all options
- for (var i = 0, j = SelectBox.cache[id].length; i < j; i++) {
- var node = SelectBox.cache[id][i];
- if (node.displayed) {
- box.options[box.options.length] = new Option(node.text, node.value, false, false);
- }
- }
- },
- filter: function(id, text) {
- // Redisplay the HTML select box, displaying only the choices containing ALL
- // the words in text. (It's an AND search.)
- var tokens = text.toLowerCase().split(/\s+/);
- var node, token;
- for (var i = 0; (node = SelectBox.cache[id][i]); i++) {
- node.displayed = 1;
- for (var j = 0; (token = tokens[j]); j++) {
- if (node.text.toLowerCase().indexOf(token) == -1) {
- node.displayed = 0;
- }
- }
- }
- SelectBox.redisplay(id);
- },
- delete_from_cache: function(id, value) {
- var node, delete_index = null;
- for (var i = 0; (node = SelectBox.cache[id][i]); i++) {
- if (node.value == value) {
- delete_index = i;
- break;
- }
- }
- var j = SelectBox.cache[id].length - 1;
- for (var i = delete_index; i < j; i++) {
- SelectBox.cache[id][i] = SelectBox.cache[id][i+1];
- }
- SelectBox.cache[id].length--;
- },
- add_to_cache: function(id, option) {
- SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1});
- },
- cache_contains: function(id, value) {
- // Check if an item is contained in the cache
- var node;
- for (var i = 0; (node = SelectBox.cache[id][i]); i++) {
- if (node.value == value) {
- return true;
- }
- }
- return false;
- },
- move: function(from, to) {
- var from_box = document.getElementById(from);
- var to_box = document.getElementById(to);
- var option;
- for (var i = 0; (option = from_box.options[i]); i++) {
- if (option.selected && SelectBox.cache_contains(from, option.value)) {
- SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1});
- SelectBox.delete_from_cache(from, option.value);
- }
- }
- SelectBox.redisplay(from);
- SelectBox.redisplay(to);
- },
- move_all: function(from, to) {
- var from_box = document.getElementById(from);
- var to_box = document.getElementById(to);
- var option;
- for (var i = 0; (option = from_box.options[i]); i++) {
- if (SelectBox.cache_contains(from, option.value)) {
- SelectBox.add_to_cache(to, {value: option.value, text: option.text, displayed: 1});
- SelectBox.delete_from_cache(from, option.value);
- }
- }
- SelectBox.redisplay(from);
- SelectBox.redisplay(to);
- },
- sort: function(id) {
- SelectBox.cache[id].sort( function(a, b) {
- a = a.text.toLowerCase();
- b = b.text.toLowerCase();
- try {
- if (a > b) return 1;
- if (a < b) return -1;
- }
- catch (e) {
- // silently fail on IE 'unknown' exception
- }
- return 0;
- } );
- },
- select_all: function(id) {
- var box = document.getElementById(id);
- for (var i = 0; i < box.options.length; i++) {
- box.options[i].selected = 'selected';
- }
- }
-}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/SelectFilter2.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/SelectFilter2.js
deleted file mode 100644
index 24d88f7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/SelectFilter2.js
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
-SelectFilter2 - Turns a multiple-select box into a filter interface.
-
-Requires core.js, SelectBox.js and addevent.js.
-*/
-(function($) {
-function findForm(node) {
- // returns the node of the form containing the given node
- if (node.tagName.toLowerCase() != 'form') {
- return findForm(node.parentNode);
- }
- return node;
-}
-
-window.SelectFilter = {
- init: function(field_id, field_name, is_stacked, admin_static_prefix) {
- if (field_id.match(/__prefix__/)){
- // Don't intialize on empty forms.
- return;
- }
- var from_box = document.getElementById(field_id);
- from_box.id += '_from'; // change its ID
- from_box.className = 'filtered';
-
- var ps = from_box.parentNode.getElementsByTagName('p');
- for (var i=0; i<ps.length; i++) {
- if (ps[i].className.indexOf("info") != -1) {
- // Remove <p class="info">, because it just gets in the way.
- from_box.parentNode.removeChild(ps[i]);
- } else if (ps[i].className.indexOf("help") != -1) {
- // Move help text up to the top so it isn't below the select
- // boxes or wrapped off on the side to the right of the add
- // button:
- from_box.parentNode.insertBefore(ps[i], from_box.parentNode.firstChild);
- }
- }
-
- // <div class="selector"> or <div class="selector stacked">
- var selector_div = quickElement('div', from_box.parentNode);
- selector_div.className = is_stacked ? 'selector stacked' : 'selector';
-
- // <div class="selector-available">
- var selector_available = quickElement('div', selector_div, '');
- selector_available.className = 'selector-available';
- var title_available = quickElement('h2', selector_available, interpolate(gettext('Available %s') + ' ', [field_name]));
- quickElement('img', title_available, '', 'src', admin_static_prefix + 'img/icon-unknown.gif', 'width', '10', 'height', '10', 'class', 'help help-tooltip', 'title', interpolate(gettext('This is the list of available %s. You may choose some by selecting them in the box below and then clicking the "Choose" arrow between the two boxes.'), [field_name]));
-
- var filter_p = quickElement('p', selector_available, '', 'id', field_id + '_filter');
- filter_p.className = 'selector-filter';
-
- var search_filter_label = quickElement('label', filter_p, '', 'for', field_id + "_input");
-
- var search_selector_img = quickElement('img', search_filter_label, '', 'src', admin_static_prefix + 'img/selector-search.gif', 'class', 'help-tooltip', 'alt', '', 'title', interpolate(gettext("Type into this box to filter down the list of available %s."), [field_name]));
-
- filter_p.appendChild(document.createTextNode(' '));
-
- var filter_input = quickElement('input', filter_p, '', 'type', 'text', 'placeholder', gettext("Filter"));
- filter_input.id = field_id + '_input';
-
- selector_available.appendChild(from_box);
- var choose_all = quickElement('a', selector_available, gettext('Choose all'), 'title', interpolate(gettext('Click to choose all %s at once.'), [field_name]), 'href', 'javascript: (function(){ SelectBox.move_all("' + field_id + '_from", "' + field_id + '_to"); SelectFilter.refresh_icons("' + field_id + '");})()', 'id', field_id + '_add_all_link');
- choose_all.className = 'selector-chooseall';
-
- // <ul class="selector-chooser">
- var selector_chooser = quickElement('ul', selector_div, '');
- selector_chooser.className = 'selector-chooser';
- var add_link = quickElement('a', quickElement('li', selector_chooser, ''), gettext('Choose'), 'title', gettext('Choose'), 'href', 'javascript: (function(){ SelectBox.move("' + field_id + '_from","' + field_id + '_to"); SelectFilter.refresh_icons("' + field_id + '");})()', 'id', field_id + '_add_link');
- add_link.className = 'selector-add';
- var remove_link = quickElement('a', quickElement('li', selector_chooser, ''), gettext('Remove'), 'title', gettext('Remove'), 'href', 'javascript: (function(){ SelectBox.move("' + field_id + '_to","' + field_id + '_from"); SelectFilter.refresh_icons("' + field_id + '");})()', 'id', field_id + '_remove_link');
- remove_link.className = 'selector-remove';
-
- // <div class="selector-chosen">
- var selector_chosen = quickElement('div', selector_div, '');
- selector_chosen.className = 'selector-chosen';
- var title_chosen = quickElement('h2', selector_chosen, interpolate(gettext('Chosen %s') + ' ', [field_name]));
- quickElement('img', title_chosen, '', 'src', admin_static_prefix + 'img/icon-unknown.gif', 'width', '10', 'height', '10', 'class', 'help help-tooltip', 'title', interpolate(gettext('This is the list of chosen %s. You may remove some by selecting them in the box below and then clicking the "Remove" arrow between the two boxes.'), [field_name]));
-
- var to_box = quickElement('select', selector_chosen, '', 'id', field_id + '_to', 'multiple', 'multiple', 'size', from_box.size, 'name', from_box.getAttribute('name'));
- to_box.className = 'filtered';
- var clear_all = quickElement('a', selector_chosen, gettext('Remove all'), 'title', interpolate(gettext('Click to remove all chosen %s at once.'), [field_name]), 'href', 'javascript: (function() { SelectBox.move_all("' + field_id + '_to", "' + field_id + '_from"); SelectFilter.refresh_icons("' + field_id + '");})()', 'id', field_id + '_remove_all_link');
- clear_all.className = 'selector-clearall';
-
- from_box.setAttribute('name', from_box.getAttribute('name') + '_old');
-
- // Set up the JavaScript event handlers for the select box filter interface
- addEvent(filter_input, 'keyup', function(e) { SelectFilter.filter_key_up(e, field_id); });
- addEvent(filter_input, 'keydown', function(e) { SelectFilter.filter_key_down(e, field_id); });
- addEvent(from_box, 'change', function(e) { SelectFilter.refresh_icons(field_id) });
- addEvent(to_box, 'change', function(e) { SelectFilter.refresh_icons(field_id) });
- addEvent(from_box, 'dblclick', function() { SelectBox.move(field_id + '_from', field_id + '_to'); SelectFilter.refresh_icons(field_id); });
- addEvent(to_box, 'dblclick', function() { SelectBox.move(field_id + '_to', field_id + '_from'); SelectFilter.refresh_icons(field_id); });
- addEvent(findForm(from_box), 'submit', function() { SelectBox.select_all(field_id + '_to'); });
- SelectBox.init(field_id + '_from');
- SelectBox.init(field_id + '_to');
- // Move selected from_box options to to_box
- SelectBox.move(field_id + '_from', field_id + '_to');
-
- if (!is_stacked) {
- // In horizontal mode, give the same height to the two boxes.
- var j_from_box = $(from_box);
- var j_to_box = $(to_box);
- var resize_filters = function() { j_to_box.height($(filter_p).outerHeight() + j_from_box.outerHeight()); }
- if (j_from_box.outerHeight() > 0) {
- resize_filters(); // This fieldset is already open. Resize now.
- } else {
- // This fieldset is probably collapsed. Wait for its 'show' event.
- j_to_box.closest('fieldset').one('show.fieldset', resize_filters);
- }
- }
-
- // Initial icon refresh
- SelectFilter.refresh_icons(field_id);
- },
- refresh_icons: function(field_id) {
- var from = $('#' + field_id + '_from');
- var to = $('#' + field_id + '_to');
- var is_from_selected = from.find('option:selected').length > 0;
- var is_to_selected = to.find('option:selected').length > 0;
- // Active if at least one item is selected
- $('#' + field_id + '_add_link').toggleClass('active', is_from_selected);
- $('#' + field_id + '_remove_link').toggleClass('active', is_to_selected);
- // Active if the corresponding box isn't empty
- $('#' + field_id + '_add_all_link').toggleClass('active', from.find('option').length > 0);
- $('#' + field_id + '_remove_all_link').toggleClass('active', to.find('option').length > 0);
- },
- filter_key_up: function(event, field_id) {
- var from = document.getElementById(field_id + '_from');
- // don't submit form if user pressed Enter
- if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13)) {
- from.selectedIndex = 0;
- SelectBox.move(field_id + '_from', field_id + '_to');
- from.selectedIndex = 0;
- return false;
- }
- var temp = from.selectedIndex;
- SelectBox.filter(field_id + '_from', document.getElementById(field_id + '_input').value);
- from.selectedIndex = temp;
- return true;
- },
- filter_key_down: function(event, field_id) {
- var from = document.getElementById(field_id + '_from');
- // right arrow -- move across
- if ((event.which && event.which == 39) || (event.keyCode && event.keyCode == 39)) {
- var old_index = from.selectedIndex;
- SelectBox.move(field_id + '_from', field_id + '_to');
- from.selectedIndex = (old_index == from.length) ? from.length - 1 : old_index;
- return false;
- }
- // down arrow -- wrap around
- if ((event.which && event.which == 40) || (event.keyCode && event.keyCode == 40)) {
- from.selectedIndex = (from.length == from.selectedIndex + 1) ? 0 : from.selectedIndex + 1;
- }
- // up arrow -- wrap around
- if ((event.which && event.which == 38) || (event.keyCode && event.keyCode == 38)) {
- from.selectedIndex = (from.selectedIndex == 0) ? from.length - 1 : from.selectedIndex - 1;
- }
- return true;
- }
-}
-
-})(django.jQuery);
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/actions.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/actions.js
deleted file mode 100644
index 1992a70..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/actions.js
+++ /dev/null
@@ -1,139 +0,0 @@
-(function($) {
- $.fn.actions = function(opts) {
- var options = $.extend({}, $.fn.actions.defaults, opts);
- var actionCheckboxes = $(this);
- var list_editable_changed = false;
- var checker = function(checked) {
- if (checked) {
- showQuestion();
- } else {
- reset();
- }
- $(actionCheckboxes).prop("checked", checked)
- .parent().parent().toggleClass(options.selectedClass, checked);
- },
- updateCounter = function() {
- var sel = $(actionCheckboxes).filter(":checked").length;
- $(options.counterContainer).html(interpolate(
- ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), {
- sel: sel,
- cnt: _actions_icnt
- }, true));
- $(options.allToggle).prop("checked", function() {
- if (sel == actionCheckboxes.length) {
- value = true;
- showQuestion();
- } else {
- value = false;
- clearAcross();
- }
- return value;
- });
- },
- showQuestion = function() {
- $(options.acrossClears).hide();
- $(options.acrossQuestions).show();
- $(options.allContainer).hide();
- },
- showClear = function() {
- $(options.acrossClears).show();
- $(options.acrossQuestions).hide();
- $(options.actionContainer).toggleClass(options.selectedClass);
- $(options.allContainer).show();
- $(options.counterContainer).hide();
- },
- reset = function() {
- $(options.acrossClears).hide();
- $(options.acrossQuestions).hide();
- $(options.allContainer).hide();
- $(options.counterContainer).show();
- },
- clearAcross = function() {
- reset();
- $(options.acrossInput).val(0);
- $(options.actionContainer).removeClass(options.selectedClass);
- };
- // Show counter by default
- $(options.counterContainer).show();
- // Check state of checkboxes and reinit state if needed
- $(this).filter(":checked").each(function(i) {
- $(this).parent().parent().toggleClass(options.selectedClass);
- updateCounter();
- if ($(options.acrossInput).val() == 1) {
- showClear();
- }
- });
- $(options.allToggle).show().click(function() {
- checker($(this).prop("checked"));
- updateCounter();
- });
- $("div.actions span.question a").click(function(event) {
- event.preventDefault();
- $(options.acrossInput).val(1);
- showClear();
- });
- $("div.actions span.clear a").click(function(event) {
- event.preventDefault();
- $(options.allToggle).prop("checked", false);
- clearAcross();
- checker(0);
- updateCounter();
- });
- lastChecked = null;
- $(actionCheckboxes).click(function(event) {
- if (!event) { event = window.event; }
- var target = event.target ? event.target : event.srcElement;
- if (lastChecked && $.data(lastChecked) != $.data(target) && event.shiftKey === true) {
- var inrange = false;
- $(lastChecked).prop("checked", target.checked)
- .parent().parent().toggleClass(options.selectedClass, target.checked);
- $(actionCheckboxes).each(function() {
- if ($.data(this) == $.data(lastChecked) || $.data(this) == $.data(target)) {
- inrange = (inrange) ? false : true;
- }
- if (inrange) {
- $(this).prop("checked", target.checked)
- .parent().parent().toggleClass(options.selectedClass, target.checked);
- }
- });
- }
- $(target).parent().parent().toggleClass(options.selectedClass, target.checked);
- lastChecked = target;
- updateCounter();
- });
- $('form#changelist-form table#result_list tr').find('td:gt(0) :input').change(function() {
- list_editable_changed = true;
- });
- $('form#changelist-form button[name="index"]').click(function(event) {
- if (list_editable_changed) {
- return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."));
- }
- });
- $('form#changelist-form input[name="_save"]').click(function(event) {
- var action_changed = false;
- $('div.actions select option:selected').each(function() {
- if ($(this).val()) {
- action_changed = true;
- }
- });
- if (action_changed) {
- if (list_editable_changed) {
- return confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action."));
- } else {
- return confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button."));
- }
- }
- });
- };
- /* Setup plugin defaults */
- $.fn.actions.defaults = {
- actionContainer: "div.actions",
- counterContainer: "span.action-counter",
- allContainer: "div.actions span.all",
- acrossInput: "div.actions input.select-across",
- acrossQuestions: "div.actions span.question",
- acrossClears: "div.actions span.clear",
- allToggle: "#action-toggle",
- selectedClass: "selected"
- };
-})(django.jQuery);
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/actions.min.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/actions.min.js
deleted file mode 100644
index 4d2c5f7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/actions.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-(function(a){a.fn.actions=function(n){var b=a.extend({},a.fn.actions.defaults,n),e=a(this),g=false,k=function(c){c?i():j();a(e).prop("checked",c).parent().parent().toggleClass(b.selectedClass,c)},f=function(){var c=a(e).filter(":checked").length;a(b.counterContainer).html(interpolate(ngettext("%(sel)s of %(cnt)s selected","%(sel)s of %(cnt)s selected",c),{sel:c,cnt:_actions_icnt},true));a(b.allToggle).prop("checked",function(){if(c==e.length){value=true;i()}else{value=false;l()}return value})},i=
-function(){a(b.acrossClears).hide();a(b.acrossQuestions).show();a(b.allContainer).hide()},m=function(){a(b.acrossClears).show();a(b.acrossQuestions).hide();a(b.actionContainer).toggleClass(b.selectedClass);a(b.allContainer).show();a(b.counterContainer).hide()},j=function(){a(b.acrossClears).hide();a(b.acrossQuestions).hide();a(b.allContainer).hide();a(b.counterContainer).show()},l=function(){j();a(b.acrossInput).val(0);a(b.actionContainer).removeClass(b.selectedClass)};a(b.counterContainer).show();
-a(this).filter(":checked").each(function(){a(this).parent().parent().toggleClass(b.selectedClass);f();a(b.acrossInput).val()==1&&m()});a(b.allToggle).show().click(function(){k(a(this).prop("checked"));f()});a("div.actions span.question a").click(function(c){c.preventDefault();a(b.acrossInput).val(1);m()});a("div.actions span.clear a").click(function(c){c.preventDefault();a(b.allToggle).prop("checked",false);l();k(0);f()});lastChecked=null;a(e).click(function(c){if(!c)c=window.event;var d=c.target?
-c.target:c.srcElement;if(lastChecked&&a.data(lastChecked)!=a.data(d)&&c.shiftKey===true){var h=false;a(lastChecked).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked);a(e).each(function(){if(a.data(this)==a.data(lastChecked)||a.data(this)==a.data(d))h=h?false:true;h&&a(this).prop("checked",d.checked).parent().parent().toggleClass(b.selectedClass,d.checked)})}a(d).parent().parent().toggleClass(b.selectedClass,d.checked);lastChecked=d;f()});a("form#changelist-form table#result_list tr").find("td:gt(0) :input").change(function(){g=
-true});a('form#changelist-form button[name="index"]').click(function(){if(g)return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost."))});a('form#changelist-form input[name="_save"]').click(function(){var c=false;a("div.actions select option:selected").each(function(){if(a(this).val())c=true});if(c)return g?confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")):
-confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button."))})};a.fn.actions.defaults={actionContainer:"div.actions",counterContainer:"span.action-counter",allContainer:"div.actions span.all",acrossInput:"div.actions input.select-across",acrossQuestions:"div.actions span.question",acrossClears:"div.actions span.clear",allToggle:"#action-toggle",selectedClass:"selected"}})(django.jQuery);
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js
deleted file mode 100644
index 671af9b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js
+++ /dev/null
@@ -1,287 +0,0 @@
-// Inserts shortcut buttons after all of the following:
-// <input type="text" class="vDateField">
-// <input type="text" class="vTimeField">
-
-var DateTimeShortcuts = {
- calendars: [],
- calendarInputs: [],
- clockInputs: [],
- dismissClockFunc: [],
- dismissCalendarFunc: [],
- calendarDivName1: 'calendarbox', // name of calendar <div> that gets toggled
- calendarDivName2: 'calendarin', // name of <div> that contains calendar
- calendarLinkName: 'calendarlink',// name of the link that is used to toggle
- clockDivName: 'clockbox', // name of clock <div> that gets toggled
- clockLinkName: 'clocklink', // name of the link that is used to toggle
- shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts
- admin_media_prefix: '',
- init: function() {
- // Get admin_media_prefix by grabbing it off the window object. It's
- // set in the admin/base.html template, so if it's not there, someone's
- // overridden the template. In that case, we'll set a clearly-invalid
- // value in the hopes that someone will examine HTTP requests and see it.
- if (window.__admin_media_prefix__ != undefined) {
- DateTimeShortcuts.admin_media_prefix = window.__admin_media_prefix__;
- } else {
- DateTimeShortcuts.admin_media_prefix = '/missing-admin-media-prefix/';
- }
-
- var inputs = document.getElementsByTagName('input');
- for (i=0; i<inputs.length; i++) {
- var inp = inputs[i];
- if (inp.getAttribute('type') == 'text' && inp.className.match(/vTimeField/)) {
- DateTimeShortcuts.addClock(inp);
- }
- else if (inp.getAttribute('type') == 'text' && inp.className.match(/vDateField/)) {
- DateTimeShortcuts.addCalendar(inp);
- }
- }
- },
- // Add clock widget to a given field
- addClock: function(inp) {
- var num = DateTimeShortcuts.clockInputs.length;
- DateTimeShortcuts.clockInputs[num] = inp;
- DateTimeShortcuts.dismissClockFunc[num] = function() { DateTimeShortcuts.dismissClock(num); return true; };
-
- // Shortcut links (clock icon and "Now" link)
- var shortcuts_span = document.createElement('span');
- shortcuts_span.className = DateTimeShortcuts.shortCutsClass;
- inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);
- var now_link = document.createElement('a');
- now_link.setAttribute('href', "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date().strftime('" + get_format('TIME_INPUT_FORMATS')[0] + "'));");
- now_link.appendChild(document.createTextNode(gettext('Now')));
- var clock_link = document.createElement('a');
- clock_link.setAttribute('href', 'javascript:DateTimeShortcuts.openClock(' + num + ');');
- clock_link.id = DateTimeShortcuts.clockLinkName + num;
- quickElement('img', clock_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/icon_clock.gif', 'alt', gettext('Clock'));
- shortcuts_span.appendChild(document.createTextNode('\240'));
- shortcuts_span.appendChild(now_link);
- shortcuts_span.appendChild(document.createTextNode('\240|\240'));
- shortcuts_span.appendChild(clock_link);
-
- // Create clock link div
- //
- // Markup looks like:
- // <div id="clockbox1" class="clockbox module">
- // <h2>Choose a time</h2>
- // <ul class="timelist">
- // <li><a href="#">Now</a></li>
- // <li><a href="#">Midnight</a></li>
- // <li><a href="#">6 a.m.</a></li>
- // <li><a href="#">Noon</a></li>
- // </ul>
- // <p class="calendar-cancel"><a href="#">Cancel</a></p>
- // </div>
-
- var clock_box = document.createElement('div');
- clock_box.style.display = 'none';
- clock_box.style.position = 'absolute';
- clock_box.className = 'clockbox module';
- clock_box.setAttribute('id', DateTimeShortcuts.clockDivName + num);
- document.body.appendChild(clock_box);
- addEvent(clock_box, 'click', cancelEventPropagation);
-
- quickElement('h2', clock_box, gettext('Choose a time'));
- var time_list = quickElement('ul', clock_box, '');
- time_list.className = 'timelist';
- var time_format = get_format('TIME_INPUT_FORMATS')[0];
- quickElement("a", quickElement("li", time_list, ""), gettext("Now"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date().strftime('" + time_format + "'));");
- quickElement("a", quickElement("li", time_list, ""), gettext("Midnight"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date(1970,1,1,0,0,0,0).strftime('" + time_format + "'));");
- quickElement("a", quickElement("li", time_list, ""), gettext("6 a.m."), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date(1970,1,1,6,0,0,0).strftime('" + time_format + "'));");
- quickElement("a", quickElement("li", time_list, ""), gettext("Noon"), "href", "javascript:DateTimeShortcuts.handleClockQuicklink(" + num + ", new Date(1970,1,1,12,0,0,0).strftime('" + time_format + "'));");
-
- var cancel_p = quickElement('p', clock_box, '');
- cancel_p.className = 'calendar-cancel';
- quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissClock(' + num + ');');
- django.jQuery(document).bind('keyup', function(event) {
- if (event.which == 27) {
- // ESC key closes popup
- DateTimeShortcuts.dismissClock(num);
- event.preventDefault();
- }
- });
- },
- openClock: function(num) {
- var clock_box = document.getElementById(DateTimeShortcuts.clockDivName+num)
- var clock_link = document.getElementById(DateTimeShortcuts.clockLinkName+num)
-
- // Recalculate the clockbox position
- // is it left-to-right or right-to-left layout ?
- if (getStyle(document.body,'direction')!='rtl') {
- clock_box.style.left = findPosX(clock_link) + 17 + 'px';
- }
- else {
- // since style's width is in em, it'd be tough to calculate
- // px value of it. let's use an estimated px for now
- // TODO: IE returns wrong value for findPosX when in rtl mode
- // (it returns as it was left aligned), needs to be fixed.
- clock_box.style.left = findPosX(clock_link) - 110 + 'px';
- }
- clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px';
-
- // Show the clock box
- clock_box.style.display = 'block';
- addEvent(document, 'click', DateTimeShortcuts.dismissClockFunc[num]);
- },
- dismissClock: function(num) {
- document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none';
- removeEvent(document, 'click', DateTimeShortcuts.dismissClockFunc[num]);
- },
- handleClockQuicklink: function(num, val) {
- DateTimeShortcuts.clockInputs[num].value = val;
- DateTimeShortcuts.clockInputs[num].focus();
- DateTimeShortcuts.dismissClock(num);
- },
- // Add calendar widget to a given field.
- addCalendar: function(inp) {
- var num = DateTimeShortcuts.calendars.length;
-
- DateTimeShortcuts.calendarInputs[num] = inp;
- DateTimeShortcuts.dismissCalendarFunc[num] = function() { DateTimeShortcuts.dismissCalendar(num); return true; };
-
- // Shortcut links (calendar icon and "Today" link)
- var shortcuts_span = document.createElement('span');
- shortcuts_span.className = DateTimeShortcuts.shortCutsClass;
- inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling);
- var today_link = document.createElement('a');
- today_link.setAttribute('href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);');
- today_link.appendChild(document.createTextNode(gettext('Today')));
- var cal_link = document.createElement('a');
- cal_link.setAttribute('href', 'javascript:DateTimeShortcuts.openCalendar(' + num + ');');
- cal_link.id = DateTimeShortcuts.calendarLinkName + num;
- quickElement('img', cal_link, '', 'src', DateTimeShortcuts.admin_media_prefix + 'img/icon_calendar.gif', 'alt', gettext('Calendar'));
- shortcuts_span.appendChild(document.createTextNode('\240'));
- shortcuts_span.appendChild(today_link);
- shortcuts_span.appendChild(document.createTextNode('\240|\240'));
- shortcuts_span.appendChild(cal_link);
-
- // Create calendarbox div.
- //
- // Markup looks like:
- //
- // <div id="calendarbox3" class="calendarbox module">
- // <h2>
- // <a href="#" class="link-previous">&lsaquo;</a>
- // <a href="#" class="link-next">&rsaquo;</a> February 2003
- // </h2>
- // <div class="calendar" id="calendarin3">
- // <!-- (cal) -->
- // </div>
- // <div class="calendar-shortcuts">
- // <a href="#">Yesterday</a> | <a href="#">Today</a> | <a href="#">Tomorrow</a>
- // </div>
- // <p class="calendar-cancel"><a href="#">Cancel</a></p>
- // </div>
- var cal_box = document.createElement('div');
- cal_box.style.display = 'none';
- cal_box.style.position = 'absolute';
- cal_box.className = 'calendarbox module';
- cal_box.setAttribute('id', DateTimeShortcuts.calendarDivName1 + num);
- document.body.appendChild(cal_box);
- addEvent(cal_box, 'click', cancelEventPropagation);
-
- // next-prev links
- var cal_nav = quickElement('div', cal_box, '');
- var cal_nav_prev = quickElement('a', cal_nav, '<', 'href', 'javascript:DateTimeShortcuts.drawPrev('+num+');');
- cal_nav_prev.className = 'calendarnav-previous';
- var cal_nav_next = quickElement('a', cal_nav, '>', 'href', 'javascript:DateTimeShortcuts.drawNext('+num+');');
- cal_nav_next.className = 'calendarnav-next';
-
- // main box
- var cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num);
- cal_main.className = 'calendar';
- DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num));
- DateTimeShortcuts.calendars[num].drawCurrent();
-
- // calendar shortcuts
- var shortcuts = quickElement('div', cal_box, '');
- shortcuts.className = 'calendar-shortcuts';
- quickElement('a', shortcuts, gettext('Yesterday'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', -1);');
- shortcuts.appendChild(document.createTextNode('\240|\240'));
- quickElement('a', shortcuts, gettext('Today'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', 0);');
- shortcuts.appendChild(document.createTextNode('\240|\240'));
- quickElement('a', shortcuts, gettext('Tomorrow'), 'href', 'javascript:DateTimeShortcuts.handleCalendarQuickLink(' + num + ', +1);');
-
- // cancel bar
- var cancel_p = quickElement('p', cal_box, '');
- cancel_p.className = 'calendar-cancel';
- quickElement('a', cancel_p, gettext('Cancel'), 'href', 'javascript:DateTimeShortcuts.dismissCalendar(' + num + ');');
- django.jQuery(document).bind('keyup', function(event) {
- if (event.which == 27) {
- // ESC key closes popup
- DateTimeShortcuts.dismissCalendar(num);
- event.preventDefault();
- }
- });
- },
- openCalendar: function(num) {
- var cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1+num)
- var cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName+num)
- var inp = DateTimeShortcuts.calendarInputs[num];
-
- // Determine if the current value in the input has a valid date.
- // If so, draw the calendar with that date's year and month.
- if (inp.value) {
- var date_parts = inp.value.split('-');
- var year = date_parts[0];
- var month = parseFloat(date_parts[1]);
- if (year.match(/\d\d\d\d/) && month >= 1 && month <= 12) {
- DateTimeShortcuts.calendars[num].drawDate(month, year);
- }
- }
-
- // Recalculate the clockbox position
- // is it left-to-right or right-to-left layout ?
- if (getStyle(document.body,'direction')!='rtl') {
- cal_box.style.left = findPosX(cal_link) + 17 + 'px';
- }
- else {
- // since style's width is in em, it'd be tough to calculate
- // px value of it. let's use an estimated px for now
- // TODO: IE returns wrong value for findPosX when in rtl mode
- // (it returns as it was left aligned), needs to be fixed.
- cal_box.style.left = findPosX(cal_link) - 180 + 'px';
- }
- cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px';
-
- cal_box.style.display = 'block';
- addEvent(document, 'click', DateTimeShortcuts.dismissCalendarFunc[num]);
- },
- dismissCalendar: function(num) {
- document.getElementById(DateTimeShortcuts.calendarDivName1+num).style.display = 'none';
- removeEvent(document, 'click', DateTimeShortcuts.dismissCalendarFunc[num]);
- },
- drawPrev: function(num) {
- DateTimeShortcuts.calendars[num].drawPreviousMonth();
- },
- drawNext: function(num) {
- DateTimeShortcuts.calendars[num].drawNextMonth();
- },
- handleCalendarCallback: function(num) {
- format = get_format('DATE_INPUT_FORMATS')[0];
- // the format needs to be escaped a little
- format = format.replace('\\', '\\\\');
- format = format.replace('\r', '\\r');
- format = format.replace('\n', '\\n');
- format = format.replace('\t', '\\t');
- format = format.replace("'", "\\'");
- return ["function(y, m, d) { DateTimeShortcuts.calendarInputs[",
- num,
- "].value = new Date(y, m-1, d).strftime('",
- format,
- "');DateTimeShortcuts.calendarInputs[",
- num,
- "].focus();document.getElementById(DateTimeShortcuts.calendarDivName1+",
- num,
- ").style.display='none';}"].join('');
- },
- handleCalendarQuickLink: function(num, offset) {
- var d = new Date();
- d.setDate(d.getDate() + offset)
- DateTimeShortcuts.calendarInputs[num].value = d.strftime(get_format('DATE_INPUT_FORMATS')[0]);
- DateTimeShortcuts.calendarInputs[num].focus();
- DateTimeShortcuts.dismissCalendar(num);
- }
-}
-
-addEvent(window, 'load', DateTimeShortcuts.init);
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js
deleted file mode 100644
index 6d17486..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js
+++ /dev/null
@@ -1,97 +0,0 @@
-// Handles related-objects functionality: lookup link for raw_id_fields
-// and Add Another links.
-
-function html_unescape(text) {
- // Unescape a string that was escaped using django.utils.html.escape.
- text = text.replace(/&lt;/g, '<');
- text = text.replace(/&gt;/g, '>');
- text = text.replace(/&quot;/g, '"');
- text = text.replace(/&#39;/g, "'");
- text = text.replace(/&amp;/g, '&');
- return text;
-}
-
-// IE doesn't accept periods or dashes in the window name, but the element IDs
-// we use to generate popup window names may contain them, therefore we map them
-// to allowed characters in a reversible way so that we can locate the correct
-// element when the popup window is dismissed.
-function id_to_windowname(text) {
- text = text.replace(/\./g, '__dot__');
- text = text.replace(/\-/g, '__dash__');
- return text;
-}
-
-function windowname_to_id(text) {
- text = text.replace(/__dot__/g, '.');
- text = text.replace(/__dash__/g, '-');
- return text;
-}
-
-function showRelatedObjectLookupPopup(triggeringLink) {
- var name = triggeringLink.id.replace(/^lookup_/, '');
- name = id_to_windowname(name);
- var href;
- if (triggeringLink.href.search(/\?/) >= 0) {
- href = triggeringLink.href + '&_popup=1';
- } else {
- href = triggeringLink.href + '?_popup=1';
- }
- var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
- win.focus();
- return false;
-}
-
-function dismissRelatedLookupPopup(win, chosenId) {
- var name = windowname_to_id(win.name);
- var elem = document.getElementById(name);
- if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) {
- elem.value += ',' + chosenId;
- } else {
- document.getElementById(name).value = chosenId;
- }
- win.close();
-}
-
-function showAddAnotherPopup(triggeringLink) {
- var name = triggeringLink.id.replace(/^add_/, '');
- name = id_to_windowname(name);
- href = triggeringLink.href
- if (href.indexOf('?') == -1) {
- href += '?_popup=1';
- } else {
- href += '&_popup=1';
- }
- var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
- win.focus();
- return false;
-}
-
-function dismissAddAnotherPopup(win, newId, newRepr) {
- // newId and newRepr are expected to have previously been escaped by
- // django.utils.html.escape.
- newId = html_unescape(newId);
- newRepr = html_unescape(newRepr);
- var name = windowname_to_id(win.name);
- var elem = document.getElementById(name);
- if (elem) {
- var elemName = elem.nodeName.toUpperCase();
- if (elemName == 'SELECT') {
- var o = new Option(newRepr, newId);
- elem.options[elem.options.length] = o;
- o.selected = true;
- } else if (elemName == 'INPUT') {
- if (elem.className.indexOf('vManyToManyRawIdAdminField') != -1 && elem.value) {
- elem.value += ',' + newId;
- } else {
- elem.value = newId;
- }
- }
- } else {
- var toId = name + "_to";
- elem = document.getElementById(toId);
- var o = new Option(newRepr, newId);
- SelectBox.add_to_cache(toId, o);
- SelectBox.redisplay(toId);
- }
- win.close();
-}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/calendar.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/calendar.js
deleted file mode 100644
index 8e38c41..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/calendar.js
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-calendar.js - Calendar functions by Adrian Holovaty
-depends on core.js for utility functions like removeChildren or quickElement
-*/
-
-// CalendarNamespace -- Provides a collection of HTML calendar-related helper functions
-var CalendarNamespace = {
- monthsOfYear: gettext('January February March April May June July August September October November December').split(' '),
- daysOfWeek: gettext('S M T W T F S').split(' '),
- firstDayOfWeek: parseInt(get_format('FIRST_DAY_OF_WEEK')),
- isLeapYear: function(year) {
- return (((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0));
- },
- getDaysInMonth: function(month,year) {
- var days;
- if (month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12) {
- days = 31;
- }
- else if (month==4 || month==6 || month==9 || month==11) {
- days = 30;
- }
- else if (month==2 && CalendarNamespace.isLeapYear(year)) {
- days = 29;
- }
- else {
- days = 28;
- }
- return days;
- },
- draw: function(month, year, div_id, callback) { // month = 1-12, year = 1-9999
- var today = new Date();
- var todayDay = today.getDate();
- var todayMonth = today.getMonth()+1;
- var todayYear = today.getFullYear();
- var todayClass = '';
-
- month = parseInt(month);
- year = parseInt(year);
- var calDiv = document.getElementById(div_id);
- removeChildren(calDiv);
- var calTable = document.createElement('table');
- quickElement('caption', calTable, CalendarNamespace.monthsOfYear[month-1] + ' ' + year);
- var tableBody = quickElement('tbody', calTable);
-
- // Draw days-of-week header
- var tableRow = quickElement('tr', tableBody);
- for (var i = 0; i < 7; i++) {
- quickElement('th', tableRow, CalendarNamespace.daysOfWeek[(i + CalendarNamespace.firstDayOfWeek) % 7]);
- }
-
- var startingPos = new Date(year, month-1, 1 - CalendarNamespace.firstDayOfWeek).getDay();
- var days = CalendarNamespace.getDaysInMonth(month, year);
-
- // Draw blanks before first of month
- tableRow = quickElement('tr', tableBody);
- for (var i = 0; i < startingPos; i++) {
- var _cell = quickElement('td', tableRow, ' ');
- _cell.style.backgroundColor = '#f3f3f3';
- }
-
- // Draw days of month
- var currentDay = 1;
- for (var i = startingPos; currentDay <= days; i++) {
- if (i%7 == 0 && currentDay != 1) {
- tableRow = quickElement('tr', tableBody);
- }
- if ((currentDay==todayDay) && (month==todayMonth) && (year==todayYear)) {
- todayClass='today';
- } else {
- todayClass='';
- }
- var cell = quickElement('td', tableRow, '', 'class', todayClass);
-
- quickElement('a', cell, currentDay, 'href', 'javascript:void(' + callback + '('+year+','+month+','+currentDay+'));');
- currentDay++;
- }
-
- // Draw blanks after end of month (optional, but makes for valid code)
- while (tableRow.childNodes.length < 7) {
- var _cell = quickElement('td', tableRow, ' ');
- _cell.style.backgroundColor = '#f3f3f3';
- }
-
- calDiv.appendChild(calTable);
- }
-}
-
-// Calendar -- A calendar instance
-function Calendar(div_id, callback) {
- // div_id (string) is the ID of the element in which the calendar will
- // be displayed
- // callback (string) is the name of a JavaScript function that will be
- // called with the parameters (year, month, day) when a day in the
- // calendar is clicked
- this.div_id = div_id;
- this.callback = callback;
- this.today = new Date();
- this.currentMonth = this.today.getMonth() + 1;
- this.currentYear = this.today.getFullYear();
-}
-Calendar.prototype = {
- drawCurrent: function() {
- CalendarNamespace.draw(this.currentMonth, this.currentYear, this.div_id, this.callback);
- },
- drawDate: function(month, year) {
- this.currentMonth = month;
- this.currentYear = year;
- this.drawCurrent();
- },
- drawPreviousMonth: function() {
- if (this.currentMonth == 1) {
- this.currentMonth = 12;
- this.currentYear--;
- }
- else {
- this.currentMonth--;
- }
- this.drawCurrent();
- },
- drawNextMonth: function() {
- if (this.currentMonth == 12) {
- this.currentMonth = 1;
- this.currentYear++;
- }
- else {
- this.currentMonth++;
- }
- this.drawCurrent();
- },
- drawPreviousYear: function() {
- this.currentYear--;
- this.drawCurrent();
- },
- drawNextYear: function() {
- this.currentYear++;
- this.drawCurrent();
- }
-}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/collapse.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/collapse.js
deleted file mode 100644
index 3b1f31b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/collapse.js
+++ /dev/null
@@ -1,24 +0,0 @@
-(function($) {
- $(document).ready(function() {
- // Add anchor tag for Show/Hide link
- $("fieldset.collapse").each(function(i, elem) {
- // Don't hide if fields in this fieldset have errors
- if ($(elem).find("div.errors").length == 0) {
- $(elem).addClass("collapsed").find("h2").first().append(' (<a id="fieldsetcollapser' +
- i +'" class="collapse-toggle" href="#">' + gettext("Show") +
- '</a>)');
- }
- });
- // Add toggle to anchor tag
- $("fieldset.collapse a.collapse-toggle").click(function(ev) {
- if ($(this).closest("fieldset").hasClass("collapsed")) {
- // Show
- $(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset", [$(this).attr("id")]);
- } else {
- // Hide
- $(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset", [$(this).attr("id")]);
- }
- return false;
- });
- });
-})(django.jQuery);
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/collapse.min.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/collapse.min.js
deleted file mode 100644
index b32fbc3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/collapse.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(function(a){a(document).ready(function(){a("fieldset.collapse").each(function(c,b){0==a(b).find("div.errors").length&&a(b).addClass("collapsed").find("h2").first().append(' (<a id="fieldsetcollapser'+c+'" class="collapse-toggle" href="#">'+gettext("Show")+"</a>)")});a("fieldset.collapse a.collapse-toggle").click(function(){a(this).closest("fieldset").hasClass("collapsed")?a(this).text(gettext("Hide")).closest("fieldset").removeClass("collapsed").trigger("show.fieldset",[a(this).attr("id")]):a(this).text(gettext("Show")).closest("fieldset").addClass("collapsed").trigger("hide.fieldset",
-[a(this).attr("id")]);return!1})})})(django.jQuery);
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/core.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/core.js
deleted file mode 100644
index 4cc4ca4..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/core.js
+++ /dev/null
@@ -1,222 +0,0 @@
-// Core javascript helper functions
-
-// basic browser identification & version
-var isOpera = (navigator.userAgent.indexOf("Opera")>=0) && parseFloat(navigator.appVersion);
-var isIE = ((document.all) && (!isOpera)) && parseFloat(navigator.appVersion.split("MSIE ")[1].split(";")[0]);
-
-// Cross-browser event handlers.
-function addEvent(obj, evType, fn) {
- if (obj.addEventListener) {
- obj.addEventListener(evType, fn, false);
- return true;
- } else if (obj.attachEvent) {
- var r = obj.attachEvent("on" + evType, fn);
- return r;
- } else {
- return false;
- }
-}
-
-function removeEvent(obj, evType, fn) {
- if (obj.removeEventListener) {
- obj.removeEventListener(evType, fn, false);
- return true;
- } else if (obj.detachEvent) {
- obj.detachEvent("on" + evType, fn);
- return true;
- } else {
- return false;
- }
-}
-
-function cancelEventPropagation(e) {
- if (!e) e = window.event;
- e.cancelBubble = true;
- if (e.stopPropagation) e.stopPropagation();
-}
-
-// quickElement(tagType, parentReference, textInChildNode, [, attribute, attributeValue ...]);
-function quickElement() {
- var obj = document.createElement(arguments[0]);
- if (arguments[2] != '' && arguments[2] != null) {
- var textNode = document.createTextNode(arguments[2]);
- obj.appendChild(textNode);
- }
- var len = arguments.length;
- for (var i = 3; i < len; i += 2) {
- obj.setAttribute(arguments[i], arguments[i+1]);
- }
- arguments[1].appendChild(obj);
- return obj;
-}
-
-// "a" is reference to an object
-function removeChildren(a) {
- while (a.hasChildNodes()) a.removeChild(a.lastChild);
-}
-
-// ----------------------------------------------------------------------------
-// Cross-browser xmlhttp object
-// from http://jibbering.com/2002/4/httprequest.html
-// ----------------------------------------------------------------------------
-var xmlhttp;
-/*@cc_on @*/
-/*@if (@_jscript_version >= 5)
- try {
- xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
- } catch (e) {
- try {
- xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
- } catch (E) {
- xmlhttp = false;
- }
- }
-@else
- xmlhttp = false;
-@end @*/
-if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
- xmlhttp = new XMLHttpRequest();
-}
-
-// ----------------------------------------------------------------------------
-// Find-position functions by PPK
-// See http://www.quirksmode.org/js/findpos.html
-// ----------------------------------------------------------------------------
-function findPosX(obj) {
- var curleft = 0;
- if (obj.offsetParent) {
- while (obj.offsetParent) {
- curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft);
- obj = obj.offsetParent;
- }
- // IE offsetParent does not include the top-level
- if (isIE && obj.parentElement){
- curleft += obj.offsetLeft - obj.scrollLeft;
- }
- } else if (obj.x) {
- curleft += obj.x;
- }
- return curleft;
-}
-
-function findPosY(obj) {
- var curtop = 0;
- if (obj.offsetParent) {
- while (obj.offsetParent) {
- curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop);
- obj = obj.offsetParent;
- }
- // IE offsetParent does not include the top-level
- if (isIE && obj.parentElement){
- curtop += obj.offsetTop - obj.scrollTop;
- }
- } else if (obj.y) {
- curtop += obj.y;
- }
- return curtop;
-}
-
-//-----------------------------------------------------------------------------
-// Date object extensions
-// ----------------------------------------------------------------------------
-
-Date.prototype.getTwelveHours = function() {
- hours = this.getHours();
- if (hours == 0) {
- return 12;
- }
- else {
- return hours <= 12 ? hours : hours-12
- }
-}
-
-Date.prototype.getTwoDigitMonth = function() {
- return (this.getMonth() < 9) ? '0' + (this.getMonth()+1) : (this.getMonth()+1);
-}
-
-Date.prototype.getTwoDigitDate = function() {
- return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate();
-}
-
-Date.prototype.getTwoDigitTwelveHour = function() {
- return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours();
-}
-
-Date.prototype.getTwoDigitHour = function() {
- return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours();
-}
-
-Date.prototype.getTwoDigitMinute = function() {
- return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes();
-}
-
-Date.prototype.getTwoDigitSecond = function() {
- return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds();
-}
-
-Date.prototype.getHourMinute = function() {
- return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute();
-}
-
-Date.prototype.getHourMinuteSecond = function() {
- return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute() + ':' + this.getTwoDigitSecond();
-}
-
-Date.prototype.strftime = function(format) {
- var fields = {
- c: this.toString(),
- d: this.getTwoDigitDate(),
- H: this.getTwoDigitHour(),
- I: this.getTwoDigitTwelveHour(),
- m: this.getTwoDigitMonth(),
- M: this.getTwoDigitMinute(),
- p: (this.getHours() >= 12) ? 'PM' : 'AM',
- S: this.getTwoDigitSecond(),
- w: '0' + this.getDay(),
- x: this.toLocaleDateString(),
- X: this.toLocaleTimeString(),
- y: ('' + this.getFullYear()).substr(2, 4),
- Y: '' + this.getFullYear(),
- '%' : '%'
- };
- var result = '', i = 0;
- while (i < format.length) {
- if (format.charAt(i) === '%') {
- result = result + fields[format.charAt(i + 1)];
- ++i;
- }
- else {
- result = result + format.charAt(i);
- }
- ++i;
- }
- return result;
-}
-
-// ----------------------------------------------------------------------------
-// String object extensions
-// ----------------------------------------------------------------------------
-String.prototype.pad_left = function(pad_length, pad_string) {
- var new_string = this;
- for (var i = 0; new_string.length < pad_length; i++) {
- new_string = pad_string + new_string;
- }
- return new_string;
-}
-
-// ----------------------------------------------------------------------------
-// Get the computed style for and element
-// ----------------------------------------------------------------------------
-function getStyle(oElm, strCssRule){
- var strValue = "";
- if(document.defaultView && document.defaultView.getComputedStyle){
- strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
- }
- else if(oElm.currentStyle){
- strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
- return p1.toUpperCase();
- });
- strValue = oElm.currentStyle[strCssRule];
- }
- return strValue;
-}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/inlines.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/inlines.js
deleted file mode 100644
index 0bfcd34..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/inlines.js
+++ /dev/null
@@ -1,272 +0,0 @@
-/**
- * Django admin inlines
- *
- * Based on jQuery Formset 1.1
- * @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com)
- * @requires jQuery 1.2.6 or later
- *
- * Copyright (c) 2009, Stanislaus Madueke
- * All rights reserved.
- *
- * Spiced up with Code from Zain Memon's GSoC project 2009
- * and modified for Django by Jannis Leidel, Travis Swicegood and Julien Phalip.
- *
- * Licensed under the New BSD License
- * See: http://www.opensource.org/licenses/bsd-license.php
- */
-(function($) {
- $.fn.formset = function(opts) {
- var options = $.extend({}, $.fn.formset.defaults, opts);
- var $this = $(this);
- var $parent = $this.parent();
- var updateElementIndex = function(el, prefix, ndx) {
- var id_regex = new RegExp("(" + prefix + "-(\\d+|__prefix__))");
- var replacement = prefix + "-" + ndx;
- if ($(el).prop("for")) {
- $(el).prop("for", $(el).prop("for").replace(id_regex, replacement));
- }
- if (el.id) {
- el.id = el.id.replace(id_regex, replacement);
- }
- if (el.name) {
- el.name = el.name.replace(id_regex, replacement);
- }
- };
- var totalForms = $("#id_" + options.prefix + "-TOTAL_FORMS").prop("autocomplete", "off");
- var nextIndex = parseInt(totalForms.val(), 10);
- var maxForms = $("#id_" + options.prefix + "-MAX_NUM_FORMS").prop("autocomplete", "off");
- // only show the add button if we are allowed to add more items,
- // note that max_num = None translates to a blank string.
- var showAddButton = maxForms.val() === '' || (maxForms.val()-totalForms.val()) > 0;
- $this.each(function(i) {
- $(this).not("." + options.emptyCssClass).addClass(options.formCssClass);
- });
- if ($this.length && showAddButton) {
- var addButton;
- if ($this.prop("tagName") == "TR") {
- // If forms are laid out as table rows, insert the
- // "add" button in a new table row:
- var numCols = this.eq(-1).children().length;
- $parent.append('<tr class="' + options.addCssClass + '"><td colspan="' + numCols + '"><a href="javascript:void(0)">' + options.addText + "</a></tr>");
- addButton = $parent.find("tr:last a");
- } else {
- // Otherwise, insert it immediately after the last form:
- $this.filter(":last").after('<div class="' + options.addCssClass + '"><a href="javascript:void(0)">' + options.addText + "</a></div>");
- addButton = $this.filter(":last").next().find("a");
- }
- addButton.click(function(e) {
- e.preventDefault();
- var totalForms = $("#id_" + options.prefix + "-TOTAL_FORMS");
- var template = $("#" + options.prefix + "-empty");
- var row = template.clone(true);
- row.removeClass(options.emptyCssClass)
- .addClass(options.formCssClass)
- .attr("id", options.prefix + "-" + nextIndex);
- if (row.is("tr")) {
- // If the forms are laid out in table rows, insert
- // the remove button into the last table cell:
- row.children(":last").append('<div><a class="' + options.deleteCssClass +'" href="javascript:void(0)">' + options.deleteText + "</a></div>");
- } else if (row.is("ul") || row.is("ol")) {
- // If they're laid out as an ordered/unordered list,
- // insert an <li> after the last list item:
- row.append('<li><a class="' + options.deleteCssClass +'" href="javascript:void(0)">' + options.deleteText + "</a></li>");
- } else {
- // Otherwise, just insert the remove button as the
- // last child element of the form's container:
- row.children(":first").append('<span><a class="' + options.deleteCssClass + '" href="javascript:void(0)">' + options.deleteText + "</a></span>");
- }
- row.find("*").each(function() {
- updateElementIndex(this, options.prefix, totalForms.val());
- });
- // Insert the new form when it has been fully edited
- row.insertBefore($(template));
- // Update number of total forms
- $(totalForms).val(parseInt(totalForms.val(), 10) + 1);
- nextIndex += 1;
- // Hide add button in case we've hit the max, except we want to add infinitely
- if ((maxForms.val() !== '') && (maxForms.val()-totalForms.val()) <= 0) {
- addButton.parent().hide();
- }
- // The delete button of each row triggers a bunch of other things
- row.find("a." + options.deleteCssClass).click(function(e) {
- e.preventDefault();
- // Remove the parent form containing this button:
- var row = $(this).parents("." + options.formCssClass);
- row.remove();
- nextIndex -= 1;
- // If a post-delete callback was provided, call it with the deleted form:
- if (options.removed) {
- options.removed(row);
- }
- // Update the TOTAL_FORMS form count.
- var forms = $("." + options.formCssClass);
- $("#id_" + options.prefix + "-TOTAL_FORMS").val(forms.length);
- // Show add button again once we drop below max
- if ((maxForms.val() === '') || (maxForms.val()-forms.length) > 0) {
- addButton.parent().show();
- }
- // Also, update names and ids for all remaining form controls
- // so they remain in sequence:
- for (var i=0, formCount=forms.length; i<formCount; i++)
- {
- updateElementIndex($(forms).get(i), options.prefix, i);
- $(forms.get(i)).find("*").each(function() {
- updateElementIndex(this, options.prefix, i);
- });
- }
- });
- // If a post-add callback was supplied, call it with the added form:
- if (options.added) {
- options.added(row);
- }
- });
- }
- return this;
- };
-
- /* Setup plugin defaults */
- $.fn.formset.defaults = {
- prefix: "form", // The form prefix for your django formset
- addText: "add another", // Text for the add link
- deleteText: "remove", // Text for the delete link
- addCssClass: "add-row", // CSS class applied to the add link
- deleteCssClass: "delete-row", // CSS class applied to the delete link
- emptyCssClass: "empty-row", // CSS class applied to the empty row
- formCssClass: "dynamic-form", // CSS class applied to each form in a formset
- added: null, // Function called each time a new form is added
- removed: null // Function called each time a form is deleted
- };
-
-
- // Tabular inlines ---------------------------------------------------------
- $.fn.tabularFormset = function(options) {
- var $rows = $(this);
- var alternatingRows = function(row) {
- $($rows.selector).not(".add-row").removeClass("row1 row2")
- .filter(":even").addClass("row1").end()
- .filter(":odd").addClass("row2");
- };
-
- var reinitDateTimeShortCuts = function() {
- // Reinitialize the calendar and clock widgets by force
- if (typeof DateTimeShortcuts != "undefined") {
- $(".datetimeshortcuts").remove();
- DateTimeShortcuts.init();
- }
- };
-
- var updateSelectFilter = function() {
- // If any SelectFilter widgets are a part of the new form,
- // instantiate a new SelectFilter instance for it.
- if (typeof SelectFilter != 'undefined'){
- $('.selectfilter').each(function(index, value){
- var namearr = value.name.split('-');
- SelectFilter.init(value.id, namearr[namearr.length-1], false, options.adminStaticPrefix );
- });
- $('.selectfilterstacked').each(function(index, value){
- var namearr = value.name.split('-');
- SelectFilter.init(value.id, namearr[namearr.length-1], true, options.adminStaticPrefix );
- });
- }
- };
-
- var initPrepopulatedFields = function(row) {
- row.find('.prepopulated_field').each(function() {
- var field = $(this),
- input = field.find('input, select, textarea'),
- dependency_list = input.data('dependency_list') || [],
- dependencies = [];
- $.each(dependency_list, function(i, field_name) {
- dependencies.push('#' + row.find('.field-' + field_name).find('input, select, textarea').attr('id'));
- });
- if (dependencies.length) {
- input.prepopulate(dependencies, input.attr('maxlength'));
- }
- });
- };
-
- $rows.formset({
- prefix: options.prefix,
- addText: options.addText,
- formCssClass: "dynamic-" + options.prefix,
- deleteCssClass: "inline-deletelink",
- deleteText: options.deleteText,
- emptyCssClass: "empty-form",
- removed: alternatingRows,
- added: function(row) {
- initPrepopulatedFields(row);
- reinitDateTimeShortCuts();
- updateSelectFilter();
- alternatingRows(row);
- }
- });
-
- return $rows;
- };
-
- // Stacked inlines ---------------------------------------------------------
- $.fn.stackedFormset = function(options) {
- var $rows = $(this);
- var updateInlineLabel = function(row) {
- $($rows.selector).find(".inline_label").each(function(i) {
- var count = i + 1;
- $(this).html($(this).html().replace(/(#\d+)/g, "#" + count));
- });
- };
-
- var reinitDateTimeShortCuts = function() {
- // Reinitialize the calendar and clock widgets by force, yuck.
- if (typeof DateTimeShortcuts != "undefined") {
- $(".datetimeshortcuts").remove();
- DateTimeShortcuts.init();
- }
- };
-
- var updateSelectFilter = function() {
- // If any SelectFilter widgets were added, instantiate a new instance.
- if (typeof SelectFilter != "undefined"){
- $(".selectfilter").each(function(index, value){
- var namearr = value.name.split('-');
- SelectFilter.init(value.id, namearr[namearr.length-1], false, options.adminStaticPrefix);
- });
- $(".selectfilterstacked").each(function(index, value){
- var namearr = value.name.split('-');
- SelectFilter.init(value.id, namearr[namearr.length-1], true, options.adminStaticPrefix);
- });
- }
- };
-
- var initPrepopulatedFields = function(row) {
- row.find('.prepopulated_field').each(function() {
- var field = $(this),
- input = field.find('input, select, textarea'),
- dependency_list = input.data('dependency_list') || [],
- dependencies = [];
- $.each(dependency_list, function(i, field_name) {
- dependencies.push('#' + row.find('.form-row .field-' + field_name).find('input, select, textarea').attr('id'));
- });
- if (dependencies.length) {
- input.prepopulate(dependencies, input.attr('maxlength'));
- }
- });
- };
-
- $rows.formset({
- prefix: options.prefix,
- addText: options.addText,
- formCssClass: "dynamic-" + options.prefix,
- deleteCssClass: "inline-deletelink",
- deleteText: options.deleteText,
- emptyCssClass: "empty-form",
- removed: updateInlineLabel,
- added: (function(row) {
- initPrepopulatedFields(row);
- reinitDateTimeShortCuts();
- updateSelectFilter();
- updateInlineLabel(row);
- })
- });
-
- return $rows;
- };
-})(django.jQuery);
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/inlines.min.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/inlines.min.js
deleted file mode 100644
index b89aedd..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/inlines.min.js
+++ /dev/null
@@ -1,9 +0,0 @@
-(function(b){b.fn.formset=function(d){var a=b.extend({},b.fn.formset.defaults,d),c=b(this),d=c.parent(),i=function(a,e,g){var d=RegExp("("+e+"-(\\d+|__prefix__))"),e=e+"-"+g;b(a).prop("for")&&b(a).prop("for",b(a).prop("for").replace(d,e));a.id&&(a.id=a.id.replace(d,e));a.name&&(a.name=a.name.replace(d,e))},f=b("#id_"+a.prefix+"-TOTAL_FORMS").prop("autocomplete","off"),g=parseInt(f.val(),10),e=b("#id_"+a.prefix+"-MAX_NUM_FORMS").prop("autocomplete","off"),f=""===e.val()||0<e.val()-f.val();c.each(function(){b(this).not("."+
-a.emptyCssClass).addClass(a.formCssClass)});if(c.length&&f){var h;"TR"==c.prop("tagName")?(c=this.eq(-1).children().length,d.append('<tr class="'+a.addCssClass+'"><td colspan="'+c+'"><a href="javascript:void(0)">'+a.addText+"</a></tr>"),h=d.find("tr:last a")):(c.filter(":last").after('<div class="'+a.addCssClass+'"><a href="javascript:void(0)">'+a.addText+"</a></div>"),h=c.filter(":last").next().find("a"));h.click(function(d){d.preventDefault();var f=b("#id_"+a.prefix+"-TOTAL_FORMS"),d=b("#"+a.prefix+
-"-empty"),c=d.clone(true);c.removeClass(a.emptyCssClass).addClass(a.formCssClass).attr("id",a.prefix+"-"+g);c.is("tr")?c.children(":last").append('<div><a class="'+a.deleteCssClass+'" href="javascript:void(0)">'+a.deleteText+"</a></div>"):c.is("ul")||c.is("ol")?c.append('<li><a class="'+a.deleteCssClass+'" href="javascript:void(0)">'+a.deleteText+"</a></li>"):c.children(":first").append('<span><a class="'+a.deleteCssClass+'" href="javascript:void(0)">'+a.deleteText+"</a></span>");c.find("*").each(function(){i(this,
-a.prefix,f.val())});c.insertBefore(b(d));b(f).val(parseInt(f.val(),10)+1);g=g+1;e.val()!==""&&e.val()-f.val()<=0&&h.parent().hide();c.find("a."+a.deleteCssClass).click(function(d){d.preventDefault();d=b(this).parents("."+a.formCssClass);d.remove();g=g-1;a.removed&&a.removed(d);d=b("."+a.formCssClass);b("#id_"+a.prefix+"-TOTAL_FORMS").val(d.length);(e.val()===""||e.val()-d.length>0)&&h.parent().show();for(var c=0,f=d.length;c<f;c++){i(b(d).get(c),a.prefix,c);b(d.get(c)).find("*").each(function(){i(this,
-a.prefix,c)})}});a.added&&a.added(c)})}return this};b.fn.formset.defaults={prefix:"form",addText:"add another",deleteText:"remove",addCssClass:"add-row",deleteCssClass:"delete-row",emptyCssClass:"empty-row",formCssClass:"dynamic-form",added:null,removed:null};b.fn.tabularFormset=function(d){var a=b(this),c=function(){b(a.selector).not(".add-row").removeClass("row1 row2").filter(":even").addClass("row1").end().filter(":odd").addClass("row2")};a.formset({prefix:d.prefix,addText:d.addText,formCssClass:"dynamic-"+
-d.prefix,deleteCssClass:"inline-deletelink",deleteText:d.deleteText,emptyCssClass:"empty-form",removed:c,added:function(a){a.find(".prepopulated_field").each(function(){var d=b(this).find("input, select, textarea"),c=d.data("dependency_list")||[],e=[];b.each(c,function(d,b){e.push("#"+a.find(".field-"+b).find("input, select, textarea").attr("id"))});e.length&&d.prepopulate(e,d.attr("maxlength"))});"undefined"!=typeof DateTimeShortcuts&&(b(".datetimeshortcuts").remove(),DateTimeShortcuts.init());"undefined"!=
-typeof SelectFilter&&(b(".selectfilter").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],false,d.adminStaticPrefix)}),b(".selectfilterstacked").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],true,d.adminStaticPrefix)}));c(a)}});return a};b.fn.stackedFormset=function(d){var a=b(this),c=function(){b(a.selector).find(".inline_label").each(function(a){a+=1;b(this).html(b(this).html().replace(/(#\d+)/g,"#"+a))})};a.formset({prefix:d.prefix,
-addText:d.addText,formCssClass:"dynamic-"+d.prefix,deleteCssClass:"inline-deletelink",deleteText:d.deleteText,emptyCssClass:"empty-form",removed:c,added:function(a){a.find(".prepopulated_field").each(function(){var d=b(this).find("input, select, textarea"),c=d.data("dependency_list")||[],e=[];b.each(c,function(d,b){e.push("#"+a.find(".form-row .field-"+b).find("input, select, textarea").attr("id"))});e.length&&d.prepopulate(e,d.attr("maxlength"))});"undefined"!=typeof DateTimeShortcuts&&(b(".datetimeshortcuts").remove(),
-DateTimeShortcuts.init());"undefined"!=typeof SelectFilter&&(b(".selectfilter").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],false,d.adminStaticPrefix)}),b(".selectfilterstacked").each(function(a,b){var c=b.name.split("-");SelectFilter.init(b.id,c[c.length-1],true,d.adminStaticPrefix)}));c(a)}});return a}})(django.jQuery);
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/jquery.init.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/jquery.init.js
deleted file mode 100644
index 22a4c8b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/jquery.init.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/* Puts the included jQuery into our own namespace using noConflict and passing
- * it 'true'. This ensures that the included jQuery doesn't pollute the global
- * namespace (i.e. this preserves pre-existing values for both window.$ and
- * window.jQuery).
- */
-var django = django || {};
-django.jQuery = jQuery.noConflict(true);
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/jquery.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/jquery.js
deleted file mode 100644
index e2c203f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/jquery.js
+++ /dev/null
@@ -1,9597 +0,0 @@
-/*!
- * jQuery JavaScript Library v1.9.1
- * http://jquery.com/
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- *
- * Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2013-2-4
- */
-(function( window, undefined ) {
-
-// Can't do this because several apps including ASP.NET trace
-// the stack via arguments.caller.callee and Firefox dies if
-// you try to trace through "use strict" call chains. (#13335)
-// Support: Firefox 18+
-//"use strict";
-var
- // The deferred used on DOM ready
- readyList,
-
- // A central reference to the root jQuery(document)
- rootjQuery,
-
- // Support: IE<9
- // For `typeof node.method` instead of `node.method !== undefined`
- core_strundefined = typeof undefined,
-
- // Use the correct document accordingly with window argument (sandbox)
- document = window.document,
- location = window.location,
-
- // Map over jQuery in case of overwrite
- _jQuery = window.jQuery,
-
- // Map over the $ in case of overwrite
- _$ = window.$,
-
- // [[Class]] -> type pairs
- class2type = {},
-
- // List of deleted data cache ids, so we can reuse them
- core_deletedIds = [],
-
- core_version = "1.9.1",
-
- // Save a reference to some core methods
- core_concat = core_deletedIds.concat,
- core_push = core_deletedIds.push,
- core_slice = core_deletedIds.slice,
- core_indexOf = core_deletedIds.indexOf,
- core_toString = class2type.toString,
- core_hasOwn = class2type.hasOwnProperty,
- core_trim = core_version.trim,
-
- // Define a local copy of jQuery
- jQuery = function( selector, context ) {
- // The jQuery object is actually just the init constructor 'enhanced'
- return new jQuery.fn.init( selector, context, rootjQuery );
- },
-
- // Used for matching numbers
- core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
-
- // Used for splitting on whitespace
- core_rnotwhite = /\S+/g,
-
- // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
- rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
-
- // A simple way to check for HTML strings
- // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
- // Strict HTML recognition (#11290: must start with <)
- rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,
-
- // Match a standalone tag
- rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
-
- // JSON RegExp
- rvalidchars = /^[\],:{}\s]*$/,
- rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
- rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
- rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
-
- // Matches dashed string for camelizing
- rmsPrefix = /^-ms-/,
- rdashAlpha = /-([\da-z])/gi,
-
- // Used by jQuery.camelCase as callback to replace()
- fcamelCase = function( all, letter ) {
- return letter.toUpperCase();
- },
-
- // The ready event handler
- completed = function( event ) {
-
- // readyState === "complete" is good enough for us to call the dom ready in oldIE
- if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
- detach();
- jQuery.ready();
- }
- },
- // Clean-up method for dom ready events
- detach = function() {
- if ( document.addEventListener ) {
- document.removeEventListener( "DOMContentLoaded", completed, false );
- window.removeEventListener( "load", completed, false );
-
- } else {
- document.detachEvent( "onreadystatechange", completed );
- window.detachEvent( "onload", completed );
- }
- };
-
-jQuery.fn = jQuery.prototype = {
- // The current version of jQuery being used
- jquery: core_version,
-
- constructor: jQuery,
- init: function( selector, context, rootjQuery ) {
- var match, elem;
-
- // HANDLE: $(""), $(null), $(undefined), $(false)
- if ( !selector ) {
- return this;
- }
-
- // Handle HTML strings
- if ( typeof selector === "string" ) {
- if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
- // Assume that strings that start and end with <> are HTML and skip the regex check
- match = [ null, selector, null ];
-
- } else {
- match = rquickExpr.exec( selector );
- }
-
- // Match html or make sure no context is specified for #id
- if ( match && (match[1] || !context) ) {
-
- // HANDLE: $(html) -> $(array)
- if ( match[1] ) {
- context = context instanceof jQuery ? context[0] : context;
-
- // scripts is true for back-compat
- jQuery.merge( this, jQuery.parseHTML(
- match[1],
- context && context.nodeType ? context.ownerDocument || context : document,
- true
- ) );
-
- // HANDLE: $(html, props)
- if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
- for ( match in context ) {
- // Properties of context are called as methods if possible
- if ( jQuery.isFunction( this[ match ] ) ) {
- this[ match ]( context[ match ] );
-
- // ...and otherwise set as attributes
- } else {
- this.attr( match, context[ match ] );
- }
- }
- }
-
- return this;
-
- // HANDLE: $(#id)
- } else {
- elem = document.getElementById( match[2] );
-
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- if ( elem && elem.parentNode ) {
- // Handle the case where IE and Opera return items
- // by name instead of ID
- if ( elem.id !== match[2] ) {
- return rootjQuery.find( selector );
- }
-
- // Otherwise, we inject the element directly into the jQuery object
- this.length = 1;
- this[0] = elem;
- }
-
- this.context = document;
- this.selector = selector;
- return this;
- }
-
- // HANDLE: $(expr, $(...))
- } else if ( !context || context.jquery ) {
- return ( context || rootjQuery ).find( selector );
-
- // HANDLE: $(expr, context)
- // (which is just equivalent to: $(context).find(expr)
- } else {
- return this.constructor( context ).find( selector );
- }
-
- // HANDLE: $(DOMElement)
- } else if ( selector.nodeType ) {
- this.context = this[0] = selector;
- this.length = 1;
- return this;
-
- // HANDLE: $(function)
- // Shortcut for document ready
- } else if ( jQuery.isFunction( selector ) ) {
- return rootjQuery.ready( selector );
- }
-
- if ( selector.selector !== undefined ) {
- this.selector = selector.selector;
- this.context = selector.context;
- }
-
- return jQuery.makeArray( selector, this );
- },
-
- // Start with an empty selector
- selector: "",
-
- // The default length of a jQuery object is 0
- length: 0,
-
- // The number of elements contained in the matched element set
- size: function() {
- return this.length;
- },
-
- toArray: function() {
- return core_slice.call( this );
- },
-
- // Get the Nth element in the matched element set OR
- // Get the whole matched element set as a clean array
- get: function( num ) {
- return num == null ?
-
- // Return a 'clean' array
- this.toArray() :
-
- // Return just the object
- ( num < 0 ? this[ this.length + num ] : this[ num ] );
- },
-
- // Take an array of elements and push it onto the stack
- // (returning the new matched element set)
- pushStack: function( elems ) {
-
- // Build a new jQuery matched element set
- var ret = jQuery.merge( this.constructor(), elems );
-
- // Add the old object onto the stack (as a reference)
- ret.prevObject = this;
- ret.context = this.context;
-
- // Return the newly-formed element set
- return ret;
- },
-
- // Execute a callback for every element in the matched set.
- // (You can seed the arguments with an array of args, but this is
- // only used internally.)
- each: function( callback, args ) {
- return jQuery.each( this, callback, args );
- },
-
- ready: function( fn ) {
- // Add the callback
- jQuery.ready.promise().done( fn );
-
- return this;
- },
-
- slice: function() {
- return this.pushStack( core_slice.apply( this, arguments ) );
- },
-
- first: function() {
- return this.eq( 0 );
- },
-
- last: function() {
- return this.eq( -1 );
- },
-
- eq: function( i ) {
- var len = this.length,
- j = +i + ( i < 0 ? len : 0 );
- return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
- },
-
- map: function( callback ) {
- return this.pushStack( jQuery.map(this, function( elem, i ) {
- return callback.call( elem, i, elem );
- }));
- },
-
- end: function() {
- return this.prevObject || this.constructor(null);
- },
-
- // For internal use only.
- // Behaves like an Array's method, not like a jQuery method.
- push: core_push,
- sort: [].sort,
- splice: [].splice
-};
-
-// Give the init function the jQuery prototype for later instantiation
-jQuery.fn.init.prototype = jQuery.fn;
-
-jQuery.extend = jQuery.fn.extend = function() {
- var src, copyIsArray, copy, name, options, clone,
- target = arguments[0] || {},
- i = 1,
- length = arguments.length,
- deep = false;
-
- // Handle a deep copy situation
- if ( typeof target === "boolean" ) {
- deep = target;
- target = arguments[1] || {};
- // skip the boolean and the target
- i = 2;
- }
-
- // Handle case when target is a string or something (possible in deep copy)
- if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
- target = {};
- }
-
- // extend jQuery itself if only one argument is passed
- if ( length === i ) {
- target = this;
- --i;
- }
-
- for ( ; i < length; i++ ) {
- // Only deal with non-null/undefined values
- if ( (options = arguments[ i ]) != null ) {
- // Extend the base object
- for ( name in options ) {
- src = target[ name ];
- copy = options[ name ];
-
- // Prevent never-ending loop
- if ( target === copy ) {
- continue;
- }
-
- // Recurse if we're merging plain objects or arrays
- if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
- if ( copyIsArray ) {
- copyIsArray = false;
- clone = src && jQuery.isArray(src) ? src : [];
-
- } else {
- clone = src && jQuery.isPlainObject(src) ? src : {};
- }
-
- // Never move original objects, clone them
- target[ name ] = jQuery.extend( deep, clone, copy );
-
- // Don't bring in undefined values
- } else if ( copy !== undefined ) {
- target[ name ] = copy;
- }
- }
- }
- }
-
- // Return the modified object
- return target;
-};
-
-jQuery.extend({
- noConflict: function( deep ) {
- if ( window.$ === jQuery ) {
- window.$ = _$;
- }
-
- if ( deep && window.jQuery === jQuery ) {
- window.jQuery = _jQuery;
- }
-
- return jQuery;
- },
-
- // Is the DOM ready to be used? Set to true once it occurs.
- isReady: false,
-
- // A counter to track how many items to wait for before
- // the ready event fires. See #6781
- readyWait: 1,
-
- // Hold (or release) the ready event
- holdReady: function( hold ) {
- if ( hold ) {
- jQuery.readyWait++;
- } else {
- jQuery.ready( true );
- }
- },
-
- // Handle when the DOM is ready
- ready: function( wait ) {
-
- // Abort if there are pending holds or we're already ready
- if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
- return;
- }
-
- // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
- if ( !document.body ) {
- return setTimeout( jQuery.ready );
- }
-
- // Remember that the DOM is ready
- jQuery.isReady = true;
-
- // If a normal DOM Ready event fired, decrement, and wait if need be
- if ( wait !== true && --jQuery.readyWait > 0 ) {
- return;
- }
-
- // If there are functions bound, to execute
- readyList.resolveWith( document, [ jQuery ] );
-
- // Trigger any bound ready events
- if ( jQuery.fn.trigger ) {
- jQuery( document ).trigger("ready").off("ready");
- }
- },
-
- // See test/unit/core.js for details concerning isFunction.
- // Since version 1.3, DOM methods and functions like alert
- // aren't supported. They return false on IE (#2968).
- isFunction: function( obj ) {
- return jQuery.type(obj) === "function";
- },
-
- isArray: Array.isArray || function( obj ) {
- return jQuery.type(obj) === "array";
- },
-
- isWindow: function( obj ) {
- return obj != null && obj == obj.window;
- },
-
- isNumeric: function( obj ) {
- return !isNaN( parseFloat(obj) ) && isFinite( obj );
- },
-
- type: function( obj ) {
- if ( obj == null ) {
- return String( obj );
- }
- return typeof obj === "object" || typeof obj === "function" ?
- class2type[ core_toString.call(obj) ] || "object" :
- typeof obj;
- },
-
- isPlainObject: function( obj ) {
- // Must be an Object.
- // Because of IE, we also have to check the presence of the constructor property.
- // Make sure that DOM nodes and window objects don't pass through, as well
- if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
- return false;
- }
-
- try {
- // Not own constructor property must be Object
- if ( obj.constructor &&
- !core_hasOwn.call(obj, "constructor") &&
- !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
- return false;
- }
- } catch ( e ) {
- // IE8,9 Will throw exceptions on certain host objects #9897
- return false;
- }
-
- // Own properties are enumerated firstly, so to speed up,
- // if last one is own, then all properties are own.
-
- var key;
- for ( key in obj ) {}
-
- return key === undefined || core_hasOwn.call( obj, key );
- },
-
- isEmptyObject: function( obj ) {
- var name;
- for ( name in obj ) {
- return false;
- }
- return true;
- },
-
- error: function( msg ) {
- throw new Error( msg );
- },
-
- // data: string of html
- // context (optional): If specified, the fragment will be created in this context, defaults to document
- // keepScripts (optional): If true, will include scripts passed in the html string
- parseHTML: function( data, context, keepScripts ) {
- if ( !data || typeof data !== "string" ) {
- return null;
- }
- if ( typeof context === "boolean" ) {
- keepScripts = context;
- context = false;
- }
- context = context || document;
-
- var parsed = rsingleTag.exec( data ),
- scripts = !keepScripts && [];
-
- // Single tag
- if ( parsed ) {
- return [ context.createElement( parsed[1] ) ];
- }
-
- parsed = jQuery.buildFragment( [ data ], context, scripts );
- if ( scripts ) {
- jQuery( scripts ).remove();
- }
- return jQuery.merge( [], parsed.childNodes );
- },
-
- parseJSON: function( data ) {
- // Attempt to parse using the native JSON parser first
- if ( window.JSON && window.JSON.parse ) {
- return window.JSON.parse( data );
- }
-
- if ( data === null ) {
- return data;
- }
-
- if ( typeof data === "string" ) {
-
- // Make sure leading/trailing whitespace is removed (IE can't handle it)
- data = jQuery.trim( data );
-
- if ( data ) {
- // Make sure the incoming data is actual JSON
- // Logic borrowed from http://json.org/json2.js
- if ( rvalidchars.test( data.replace( rvalidescape, "@" )
- .replace( rvalidtokens, "]" )
- .replace( rvalidbraces, "")) ) {
-
- return ( new Function( "return " + data ) )();
- }
- }
- }
-
- jQuery.error( "Invalid JSON: " + data );
- },
-
- // Cross-browser xml parsing
- parseXML: function( data ) {
- var xml, tmp;
- if ( !data || typeof data !== "string" ) {
- return null;
- }
- try {
- if ( window.DOMParser ) { // Standard
- tmp = new DOMParser();
- xml = tmp.parseFromString( data , "text/xml" );
- } else { // IE
- xml = new ActiveXObject( "Microsoft.XMLDOM" );
- xml.async = "false";
- xml.loadXML( data );
- }
- } catch( e ) {
- xml = undefined;
- }
- if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
- jQuery.error( "Invalid XML: " + data );
- }
- return xml;
- },
-
- noop: function() {},
-
- // Evaluates a script in a global context
- // Workarounds based on findings by Jim Driscoll
- // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
- globalEval: function( data ) {
- if ( data && jQuery.trim( data ) ) {
- // We use execScript on Internet Explorer
- // We use an anonymous function so that context is window
- // rather than jQuery in Firefox
- ( window.execScript || function( data ) {
- window[ "eval" ].call( window, data );
- } )( data );
- }
- },
-
- // Convert dashed to camelCase; used by the css and data modules
- // Microsoft forgot to hump their vendor prefix (#9572)
- camelCase: function( string ) {
- return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
- },
-
- nodeName: function( elem, name ) {
- return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
- },
-
- // args is for internal usage only
- each: function( obj, callback, args ) {
- var value,
- i = 0,
- length = obj.length,
- isArray = isArraylike( obj );
-
- if ( args ) {
- if ( isArray ) {
- for ( ; i < length; i++ ) {
- value = callback.apply( obj[ i ], args );
-
- if ( value === false ) {
- break;
- }
- }
- } else {
- for ( i in obj ) {
- value = callback.apply( obj[ i ], args );
-
- if ( value === false ) {
- break;
- }
- }
- }
-
- // A special, fast, case for the most common use of each
- } else {
- if ( isArray ) {
- for ( ; i < length; i++ ) {
- value = callback.call( obj[ i ], i, obj[ i ] );
-
- if ( value === false ) {
- break;
- }
- }
- } else {
- for ( i in obj ) {
- value = callback.call( obj[ i ], i, obj[ i ] );
-
- if ( value === false ) {
- break;
- }
- }
- }
- }
-
- return obj;
- },
-
- // Use native String.trim function wherever possible
- trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
- function( text ) {
- return text == null ?
- "" :
- core_trim.call( text );
- } :
-
- // Otherwise use our own trimming functionality
- function( text ) {
- return text == null ?
- "" :
- ( text + "" ).replace( rtrim, "" );
- },
-
- // results is for internal usage only
- makeArray: function( arr, results ) {
- var ret = results || [];
-
- if ( arr != null ) {
- if ( isArraylike( Object(arr) ) ) {
- jQuery.merge( ret,
- typeof arr === "string" ?
- [ arr ] : arr
- );
- } else {
- core_push.call( ret, arr );
- }
- }
-
- return ret;
- },
-
- inArray: function( elem, arr, i ) {
- var len;
-
- if ( arr ) {
- if ( core_indexOf ) {
- return core_indexOf.call( arr, elem, i );
- }
-
- len = arr.length;
- i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
-
- for ( ; i < len; i++ ) {
- // Skip accessing in sparse arrays
- if ( i in arr && arr[ i ] === elem ) {
- return i;
- }
- }
- }
-
- return -1;
- },
-
- merge: function( first, second ) {
- var l = second.length,
- i = first.length,
- j = 0;
-
- if ( typeof l === "number" ) {
- for ( ; j < l; j++ ) {
- first[ i++ ] = second[ j ];
- }
- } else {
- while ( second[j] !== undefined ) {
- first[ i++ ] = second[ j++ ];
- }
- }
-
- first.length = i;
-
- return first;
- },
-
- grep: function( elems, callback, inv ) {
- var retVal,
- ret = [],
- i = 0,
- length = elems.length;
- inv = !!inv;
-
- // Go through the array, only saving the items
- // that pass the validator function
- for ( ; i < length; i++ ) {
- retVal = !!callback( elems[ i ], i );
- if ( inv !== retVal ) {
- ret.push( elems[ i ] );
- }
- }
-
- return ret;
- },
-
- // arg is for internal usage only
- map: function( elems, callback, arg ) {
- var value,
- i = 0,
- length = elems.length,
- isArray = isArraylike( elems ),
- ret = [];
-
- // Go through the array, translating each of the items to their
- if ( isArray ) {
- for ( ; i < length; i++ ) {
- value = callback( elems[ i ], i, arg );
-
- if ( value != null ) {
- ret[ ret.length ] = value;
- }
- }
-
- // Go through every key on the object,
- } else {
- for ( i in elems ) {
- value = callback( elems[ i ], i, arg );
-
- if ( value != null ) {
- ret[ ret.length ] = value;
- }
- }
- }
-
- // Flatten any nested arrays
- return core_concat.apply( [], ret );
- },
-
- // A global GUID counter for objects
- guid: 1,
-
- // Bind a function to a context, optionally partially applying any
- // arguments.
- proxy: function( fn, context ) {
- var args, proxy, tmp;
-
- if ( typeof context === "string" ) {
- tmp = fn[ context ];
- context = fn;
- fn = tmp;
- }
-
- // Quick check to determine if target is callable, in the spec
- // this throws a TypeError, but we will just return undefined.
- if ( !jQuery.isFunction( fn ) ) {
- return undefined;
- }
-
- // Simulated bind
- args = core_slice.call( arguments, 2 );
- proxy = function() {
- return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );
- };
-
- // Set the guid of unique handler to the same of original handler, so it can be removed
- proxy.guid = fn.guid = fn.guid || jQuery.guid++;
-
- return proxy;
- },
-
- // Multifunctional method to get and set values of a collection
- // The value/s can optionally be executed if it's a function
- access: function( elems, fn, key, value, chainable, emptyGet, raw ) {
- var i = 0,
- length = elems.length,
- bulk = key == null;
-
- // Sets many values
- if ( jQuery.type( key ) === "object" ) {
- chainable = true;
- for ( i in key ) {
- jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
- }
-
- // Sets one value
- } else if ( value !== undefined ) {
- chainable = true;
-
- if ( !jQuery.isFunction( value ) ) {
- raw = true;
- }
-
- if ( bulk ) {
- // Bulk operations run against the entire set
- if ( raw ) {
- fn.call( elems, value );
- fn = null;
-
- // ...except when executing function values
- } else {
- bulk = fn;
- fn = function( elem, key, value ) {
- return bulk.call( jQuery( elem ), value );
- };
- }
- }
-
- if ( fn ) {
- for ( ; i < length; i++ ) {
- fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
- }
- }
- }
-
- return chainable ?
- elems :
-
- // Gets
- bulk ?
- fn.call( elems ) :
- length ? fn( elems[0], key ) : emptyGet;
- },
-
- now: function() {
- return ( new Date() ).getTime();
- }
-});
-
-jQuery.ready.promise = function( obj ) {
- if ( !readyList ) {
-
- readyList = jQuery.Deferred();
-
- // Catch cases where $(document).ready() is called after the browser event has already occurred.
- // we once tried to use readyState "interactive" here, but it caused issues like the one
- // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
- if ( document.readyState === "complete" ) {
- // Handle it asynchronously to allow scripts the opportunity to delay ready
- setTimeout( jQuery.ready );
-
- // Standards-based browsers support DOMContentLoaded
- } else if ( document.addEventListener ) {
- // Use the handy event callback
- document.addEventListener( "DOMContentLoaded", completed, false );
-
- // A fallback to window.onload, that will always work
- window.addEventListener( "load", completed, false );
-
- // If IE event model is used
- } else {
- // Ensure firing before onload, maybe late but safe also for iframes
- document.attachEvent( "onreadystatechange", completed );
-
- // A fallback to window.onload, that will always work
- window.attachEvent( "onload", completed );
-
- // If IE and not a frame
- // continually check to see if the document is ready
- var top = false;
-
- try {
- top = window.frameElement == null && document.documentElement;
- } catch(e) {}
-
- if ( top && top.doScroll ) {
- (function doScrollCheck() {
- if ( !jQuery.isReady ) {
-
- try {
- // Use the trick by Diego Perini
- // http://javascript.nwbox.com/IEContentLoaded/
- top.doScroll("left");
- } catch(e) {
- return setTimeout( doScrollCheck, 50 );
- }
-
- // detach all dom ready events
- detach();
-
- // and execute any waiting functions
- jQuery.ready();
- }
- })();
- }
- }
- }
- return readyList.promise( obj );
-};
-
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
- class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-function isArraylike( obj ) {
- var length = obj.length,
- type = jQuery.type( obj );
-
- if ( jQuery.isWindow( obj ) ) {
- return false;
- }
-
- if ( obj.nodeType === 1 && length ) {
- return true;
- }
-
- return type === "array" || type !== "function" &&
- ( length === 0 ||
- typeof length === "number" && length > 0 && ( length - 1 ) in obj );
-}
-
-// All jQuery objects should point back to these
-rootjQuery = jQuery(document);
-// String to Object options format cache
-var optionsCache = {};
-
-// Convert String-formatted options into Object-formatted ones and store in cache
-function createOptions( options ) {
- var object = optionsCache[ options ] = {};
- jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {
- object[ flag ] = true;
- });
- return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- * options: an optional list of space-separated options that will change how
- * the callback list behaves or a more traditional option object
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible options:
- *
- * once: will ensure the callback list can only be fired once (like a Deferred)
- *
- * memory: will keep track of previous values and will call any callback added
- * after the list has been fired right away with the latest "memorized"
- * values (like a Deferred)
- *
- * unique: will ensure a callback can only be added once (no duplicate in the list)
- *
- * stopOnFalse: interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( options ) {
-
- // Convert options from String-formatted to Object-formatted if needed
- // (we check in cache first)
- options = typeof options === "string" ?
- ( optionsCache[ options ] || createOptions( options ) ) :
- jQuery.extend( {}, options );
-
- var // Flag to know if list is currently firing
- firing,
- // Last fire value (for non-forgettable lists)
- memory,
- // Flag to know if list was already fired
- fired,
- // End of the loop when firing
- firingLength,
- // Index of currently firing callback (modified by remove if needed)
- firingIndex,
- // First callback to fire (used internally by add and fireWith)
- firingStart,
- // Actual callback list
- list = [],
- // Stack of fire calls for repeatable lists
- stack = !options.once && [],
- // Fire callbacks
- fire = function( data ) {
- memory = options.memory && data;
- fired = true;
- firingIndex = firingStart || 0;
- firingStart = 0;
- firingLength = list.length;
- firing = true;
- for ( ; list && firingIndex < firingLength; firingIndex++ ) {
- if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
- memory = false; // To prevent further calls using add
- break;
- }
- }
- firing = false;
- if ( list ) {
- if ( stack ) {
- if ( stack.length ) {
- fire( stack.shift() );
- }
- } else if ( memory ) {
- list = [];
- } else {
- self.disable();
- }
- }
- },
- // Actual Callbacks object
- self = {
- // Add a callback or a collection of callbacks to the list
- add: function() {
- if ( list ) {
- // First, we save the current length
- var start = list.length;
- (function add( args ) {
- jQuery.each( args, function( _, arg ) {
- var type = jQuery.type( arg );
- if ( type === "function" ) {
- if ( !options.unique || !self.has( arg ) ) {
- list.push( arg );
- }
- } else if ( arg && arg.length && type !== "string" ) {
- // Inspect recursively
- add( arg );
- }
- });
- })( arguments );
- // Do we need to add the callbacks to the
- // current firing batch?
- if ( firing ) {
- firingLength = list.length;
- // With memory, if we're not firing then
- // we should call right away
- } else if ( memory ) {
- firingStart = start;
- fire( memory );
- }
- }
- return this;
- },
- // Remove a callback from the list
- remove: function() {
- if ( list ) {
- jQuery.each( arguments, function( _, arg ) {
- var index;
- while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
- list.splice( index, 1 );
- // Handle firing indexes
- if ( firing ) {
- if ( index <= firingLength ) {
- firingLength--;
- }
- if ( index <= firingIndex ) {
- firingIndex--;
- }
- }
- }
- });
- }
- return this;
- },
- // Check if a given callback is in the list.
- // If no argument is given, return whether or not list has callbacks attached.
- has: function( fn ) {
- return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
- },
- // Remove all callbacks from the list
- empty: function() {
- list = [];
- return this;
- },
- // Have the list do nothing anymore
- disable: function() {
- list = stack = memory = undefined;
- return this;
- },
- // Is it disabled?
- disabled: function() {
- return !list;
- },
- // Lock the list in its current state
- lock: function() {
- stack = undefined;
- if ( !memory ) {
- self.disable();
- }
- return this;
- },
- // Is it locked?
- locked: function() {
- return !stack;
- },
- // Call all callbacks with the given context and arguments
- fireWith: function( context, args ) {
- args = args || [];
- args = [ context, args.slice ? args.slice() : args ];
- if ( list && ( !fired || stack ) ) {
- if ( firing ) {
- stack.push( args );
- } else {
- fire( args );
- }
- }
- return this;
- },
- // Call all the callbacks with the given arguments
- fire: function() {
- self.fireWith( this, arguments );
- return this;
- },
- // To know if the callbacks have already been called at least once
- fired: function() {
- return !!fired;
- }
- };
-
- return self;
-};
-jQuery.extend({
-
- Deferred: function( func ) {
- var tuples = [
- // action, add listener, listener list, final state
- [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
- [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
- [ "notify", "progress", jQuery.Callbacks("memory") ]
- ],
- state = "pending",
- promise = {
- state: function() {
- return state;
- },
- always: function() {
- deferred.done( arguments ).fail( arguments );
- return this;
- },
- then: function( /* fnDone, fnFail, fnProgress */ ) {
- var fns = arguments;
- return jQuery.Deferred(function( newDefer ) {
- jQuery.each( tuples, function( i, tuple ) {
- var action = tuple[ 0 ],
- fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
- // deferred[ done | fail | progress ] for forwarding actions to newDefer
- deferred[ tuple[1] ](function() {
- var returned = fn && fn.apply( this, arguments );
- if ( returned && jQuery.isFunction( returned.promise ) ) {
- returned.promise()
- .done( newDefer.resolve )
- .fail( newDefer.reject )
- .progress( newDefer.notify );
- } else {
- newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
- }
- });
- });
- fns = null;
- }).promise();
- },
- // Get a promise for this deferred
- // If obj is provided, the promise aspect is added to the object
- promise: function( obj ) {
- return obj != null ? jQuery.extend( obj, promise ) : promise;
- }
- },
- deferred = {};
-
- // Keep pipe for back-compat
- promise.pipe = promise.then;
-
- // Add list-specific methods
- jQuery.each( tuples, function( i, tuple ) {
- var list = tuple[ 2 ],
- stateString = tuple[ 3 ];
-
- // promise[ done | fail | progress ] = list.add
- promise[ tuple[1] ] = list.add;
-
- // Handle state
- if ( stateString ) {
- list.add(function() {
- // state = [ resolved | rejected ]
- state = stateString;
-
- // [ reject_list | resolve_list ].disable; progress_list.lock
- }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
- }
-
- // deferred[ resolve | reject | notify ]
- deferred[ tuple[0] ] = function() {
- deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
- return this;
- };
- deferred[ tuple[0] + "With" ] = list.fireWith;
- });
-
- // Make the deferred a promise
- promise.promise( deferred );
-
- // Call given func if any
- if ( func ) {
- func.call( deferred, deferred );
- }
-
- // All done!
- return deferred;
- },
-
- // Deferred helper
- when: function( subordinate /* , ..., subordinateN */ ) {
- var i = 0,
- resolveValues = core_slice.call( arguments ),
- length = resolveValues.length,
-
- // the count of uncompleted subordinates
- remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
-
- // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
- deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
-
- // Update function for both resolve and progress values
- updateFunc = function( i, contexts, values ) {
- return function( value ) {
- contexts[ i ] = this;
- values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
- if( values === progressValues ) {
- deferred.notifyWith( contexts, values );
- } else if ( !( --remaining ) ) {
- deferred.resolveWith( contexts, values );
- }
- };
- },
-
- progressValues, progressContexts, resolveContexts;
-
- // add listeners to Deferred subordinates; treat others as resolved
- if ( length > 1 ) {
- progressValues = new Array( length );
- progressContexts = new Array( length );
- resolveContexts = new Array( length );
- for ( ; i < length; i++ ) {
- if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
- resolveValues[ i ].promise()
- .done( updateFunc( i, resolveContexts, resolveValues ) )
- .fail( deferred.reject )
- .progress( updateFunc( i, progressContexts, progressValues ) );
- } else {
- --remaining;
- }
- }
- }
-
- // if we're not waiting on anything, resolve the master
- if ( !remaining ) {
- deferred.resolveWith( resolveContexts, resolveValues );
- }
-
- return deferred.promise();
- }
-});
-jQuery.support = (function() {
-
- var support, all, a,
- input, select, fragment,
- opt, eventName, isSupported, i,
- div = document.createElement("div");
-
- // Setup
- div.setAttribute( "className", "t" );
- div.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
-
- // Support tests won't run in some limited or non-browser environments
- all = div.getElementsByTagName("*");
- a = div.getElementsByTagName("a")[ 0 ];
- if ( !all || !a || !all.length ) {
- return {};
- }
-
- // First batch of tests
- select = document.createElement("select");
- opt = select.appendChild( document.createElement("option") );
- input = div.getElementsByTagName("input")[ 0 ];
-
- a.style.cssText = "top:1px;float:left;opacity:.5";
- support = {
- // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
- getSetAttribute: div.className !== "t",
-
- // IE strips leading whitespace when .innerHTML is used
- leadingWhitespace: div.firstChild.nodeType === 3,
-
- // Make sure that tbody elements aren't automatically inserted
- // IE will insert them into empty tables
- tbody: !div.getElementsByTagName("tbody").length,
-
- // Make sure that link elements get serialized correctly by innerHTML
- // This requires a wrapper element in IE
- htmlSerialize: !!div.getElementsByTagName("link").length,
-
- // Get the style information from getAttribute
- // (IE uses .cssText instead)
- style: /top/.test( a.getAttribute("style") ),
-
- // Make sure that URLs aren't manipulated
- // (IE normalizes it by default)
- hrefNormalized: a.getAttribute("href") === "/a",
-
- // Make sure that element opacity exists
- // (IE uses filter instead)
- // Use a regex to work around a WebKit issue. See #5145
- opacity: /^0.5/.test( a.style.opacity ),
-
- // Verify style float existence
- // (IE uses styleFloat instead of cssFloat)
- cssFloat: !!a.style.cssFloat,
-
- // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
- checkOn: !!input.value,
-
- // Make sure that a selected-by-default option has a working selected property.
- // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
- optSelected: opt.selected,
-
- // Tests for enctype support on a form (#6743)
- enctype: !!document.createElement("form").enctype,
-
- // Makes sure cloning an html5 element does not cause problems
- // Where outerHTML is undefined, this still works
- html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
-
- // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode
- boxModel: document.compatMode === "CSS1Compat",
-
- // Will be defined later
- deleteExpando: true,
- noCloneEvent: true,
- inlineBlockNeedsLayout: false,
- shrinkWrapBlocks: false,
- reliableMarginRight: true,
- boxSizingReliable: true,
- pixelPosition: false
- };
-
- // Make sure checked status is properly cloned
- input.checked = true;
- support.noCloneChecked = input.cloneNode( true ).checked;
-
- // Make sure that the options inside disabled selects aren't marked as disabled
- // (WebKit marks them as disabled)
- select.disabled = true;
- support.optDisabled = !opt.disabled;
-
- // Support: IE<9
- try {
- delete div.test;
- } catch( e ) {
- support.deleteExpando = false;
- }
-
- // Check if we can trust getAttribute("value")
- input = document.createElement("input");
- input.setAttribute( "value", "" );
- support.input = input.getAttribute( "value" ) === "";
-
- // Check if an input maintains its value after becoming a radio
- input.value = "t";
- input.setAttribute( "type", "radio" );
- support.radioValue = input.value === "t";
-
- // #11217 - WebKit loses check when the name is after the checked attribute
- input.setAttribute( "checked", "t" );
- input.setAttribute( "name", "t" );
-
- fragment = document.createDocumentFragment();
- fragment.appendChild( input );
-
- // Check if a disconnected checkbox will retain its checked
- // value of true after appended to the DOM (IE6/7)
- support.appendChecked = input.checked;
-
- // WebKit doesn't clone checked state correctly in fragments
- support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
- // Support: IE<9
- // Opera does not clone events (and typeof div.attachEvent === undefined).
- // IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
- if ( div.attachEvent ) {
- div.attachEvent( "onclick", function() {
- support.noCloneEvent = false;
- });
-
- div.cloneNode( true ).click();
- }
-
- // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)
- // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP), test/csp.php
- for ( i in { submit: true, change: true, focusin: true }) {
- div.setAttribute( eventName = "on" + i, "t" );
-
- support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false;
- }
-
- div.style.backgroundClip = "content-box";
- div.cloneNode( true ).style.backgroundClip = "";
- support.clearCloneStyle = div.style.backgroundClip === "content-box";
-
- // Run tests that need a body at doc ready
- jQuery(function() {
- var container, marginDiv, tds,
- divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
- body = document.getElementsByTagName("body")[0];
-
- if ( !body ) {
- // Return for frameset docs that don't have a body
- return;
- }
-
- container = document.createElement("div");
- container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
-
- body.appendChild( container ).appendChild( div );
-
- // Support: IE8
- // Check if table cells still have offsetWidth/Height when they are set
- // to display:none and there are still other visible table cells in a
- // table row; if so, offsetWidth/Height are not reliable for use when
- // determining if an element has been hidden directly using
- // display:none (it is still safe to use offsets if a parent element is
- // hidden; don safety goggles and see bug #4512 for more information).
- div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
- tds = div.getElementsByTagName("td");
- tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
- isSupported = ( tds[ 0 ].offsetHeight === 0 );
-
- tds[ 0 ].style.display = "";
- tds[ 1 ].style.display = "none";
-
- // Support: IE8
- // Check if empty table cells still have offsetWidth/Height
- support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
-
- // Check box-sizing and margin behavior
- div.innerHTML = "";
- div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
- support.boxSizing = ( div.offsetWidth === 4 );
- support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );
-
- // Use window.getComputedStyle because jsdom on node.js will break without it.
- if ( window.getComputedStyle ) {
- support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
- support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
-
- // Check if div with explicit width and no margin-right incorrectly
- // gets computed margin-right based on width of container. (#3333)
- // Fails in WebKit before Feb 2011 nightlies
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
- marginDiv = div.appendChild( document.createElement("div") );
- marginDiv.style.cssText = div.style.cssText = divReset;
- marginDiv.style.marginRight = marginDiv.style.width = "0";
- div.style.width = "1px";
-
- support.reliableMarginRight =
- !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
- }
-
- if ( typeof div.style.zoom !== core_strundefined ) {
- // Support: IE<8
- // Check if natively block-level elements act like inline-block
- // elements when setting their display to 'inline' and giving
- // them layout
- div.innerHTML = "";
- div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
- support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
-
- // Support: IE6
- // Check if elements with layout shrink-wrap their children
- div.style.display = "block";
- div.innerHTML = "<div></div>";
- div.firstChild.style.width = "5px";
- support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
-
- if ( support.inlineBlockNeedsLayout ) {
- // Prevent IE 6 from affecting layout for positioned elements #11048
- // Prevent IE from shrinking the body in IE 7 mode #12869
- // Support: IE<8
- body.style.zoom = 1;
- }
- }
-
- body.removeChild( container );
-
- // Null elements to avoid leaks in IE
- container = div = tds = marginDiv = null;
- });
-
- // Null elements to avoid leaks in IE
- all = select = fragment = opt = a = input = null;
-
- return support;
-})();
-
-var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
- rmultiDash = /([A-Z])/g;
-
-function internalData( elem, name, data, pvt /* Internal Use Only */ ){
- if ( !jQuery.acceptData( elem ) ) {
- return;
- }
-
- var thisCache, ret,
- internalKey = jQuery.expando,
- getByName = typeof name === "string",
-
- // We have to handle DOM nodes and JS objects differently because IE6-7
- // can't GC object references properly across the DOM-JS boundary
- isNode = elem.nodeType,
-
- // Only DOM nodes need the global jQuery cache; JS object data is
- // attached directly to the object so GC can occur automatically
- cache = isNode ? jQuery.cache : elem,
-
- // Only defining an ID for JS objects if its cache already exists allows
- // the code to shortcut on the same path as a DOM node with no cache
- id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
-
- // Avoid doing any more work than we need to when trying to get data on an
- // object that has no data at all
- if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {
- return;
- }
-
- if ( !id ) {
- // Only DOM nodes need a new unique ID for each element since their data
- // ends up in the global cache
- if ( isNode ) {
- elem[ internalKey ] = id = core_deletedIds.pop() || jQuery.guid++;
- } else {
- id = internalKey;
- }
- }
-
- if ( !cache[ id ] ) {
- cache[ id ] = {};
-
- // Avoids exposing jQuery metadata on plain JS objects when the object
- // is serialized using JSON.stringify
- if ( !isNode ) {
- cache[ id ].toJSON = jQuery.noop;
- }
- }
-
- // An object can be passed to jQuery.data instead of a key/value pair; this gets
- // shallow copied over onto the existing cache
- if ( typeof name === "object" || typeof name === "function" ) {
- if ( pvt ) {
- cache[ id ] = jQuery.extend( cache[ id ], name );
- } else {
- cache[ id ].data = jQuery.extend( cache[ id ].data, name );
- }
- }
-
- thisCache = cache[ id ];
-
- // jQuery data() is stored in a separate object inside the object's internal data
- // cache in order to avoid key collisions between internal data and user-defined
- // data.
- if ( !pvt ) {
- if ( !thisCache.data ) {
- thisCache.data = {};
- }
-
- thisCache = thisCache.data;
- }
-
- if ( data !== undefined ) {
- thisCache[ jQuery.camelCase( name ) ] = data;
- }
-
- // Check for both converted-to-camel and non-converted data property names
- // If a data property was specified
- if ( getByName ) {
-
- // First Try to find as-is property data
- ret = thisCache[ name ];
-
- // Test for null|undefined property data
- if ( ret == null ) {
-
- // Try to find the camelCased property
- ret = thisCache[ jQuery.camelCase( name ) ];
- }
- } else {
- ret = thisCache;
- }
-
- return ret;
-}
-
-function internalRemoveData( elem, name, pvt ) {
- if ( !jQuery.acceptData( elem ) ) {
- return;
- }
-
- var i, l, thisCache,
- isNode = elem.nodeType,
-
- // See jQuery.data for more information
- cache = isNode ? jQuery.cache : elem,
- id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
-
- // If there is already no cache entry for this object, there is no
- // purpose in continuing
- if ( !cache[ id ] ) {
- return;
- }
-
- if ( name ) {
-
- thisCache = pvt ? cache[ id ] : cache[ id ].data;
-
- if ( thisCache ) {
-
- // Support array or space separated string names for data keys
- if ( !jQuery.isArray( name ) ) {
-
- // try the string as a key before any manipulation
- if ( name in thisCache ) {
- name = [ name ];
- } else {
-
- // split the camel cased version by spaces unless a key with the spaces exists
- name = jQuery.camelCase( name );
- if ( name in thisCache ) {
- name = [ name ];
- } else {
- name = name.split(" ");
- }
- }
- } else {
- // If "name" is an array of keys...
- // When data is initially created, via ("key", "val") signature,
- // keys will be converted to camelCase.
- // Since there is no way to tell _how_ a key was added, remove
- // both plain key and camelCase key. #12786
- // This will only penalize the array argument path.
- name = name.concat( jQuery.map( name, jQuery.camelCase ) );
- }
-
- for ( i = 0, l = name.length; i < l; i++ ) {
- delete thisCache[ name[i] ];
- }
-
- // If there is no data left in the cache, we want to continue
- // and let the cache object itself get destroyed
- if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
- return;
- }
- }
- }
-
- // See jQuery.data for more information
- if ( !pvt ) {
- delete cache[ id ].data;
-
- // Don't destroy the parent cache unless the internal data object
- // had been the only thing left in it
- if ( !isEmptyDataObject( cache[ id ] ) ) {
- return;
- }
- }
-
- // Destroy the cache
- if ( isNode ) {
- jQuery.cleanData( [ elem ], true );
-
- // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
- } else if ( jQuery.support.deleteExpando || cache != cache.window ) {
- delete cache[ id ];
-
- // When all else fails, null
- } else {
- cache[ id ] = null;
- }
-}
-
-jQuery.extend({
- cache: {},
-
- // Unique for each copy of jQuery on the page
- // Non-digits removed to match rinlinejQuery
- expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ),
-
- // The following elements throw uncatchable exceptions if you
- // attempt to add expando properties to them.
- noData: {
- "embed": true,
- // Ban all objects except for Flash (which handle expandos)
- "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
- "applet": true
- },
-
- hasData: function( elem ) {
- elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
- return !!elem && !isEmptyDataObject( elem );
- },
-
- data: function( elem, name, data ) {
- return internalData( elem, name, data );
- },
-
- removeData: function( elem, name ) {
- return internalRemoveData( elem, name );
- },
-
- // For internal use only.
- _data: function( elem, name, data ) {
- return internalData( elem, name, data, true );
- },
-
- _removeData: function( elem, name ) {
- return internalRemoveData( elem, name, true );
- },
-
- // A method for determining if a DOM node can handle the data expando
- acceptData: function( elem ) {
- // Do not set data on non-element because it will not be cleared (#8335).
- if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {
- return false;
- }
-
- var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
-
- // nodes accept data unless otherwise specified; rejection can be conditional
- return !noData || noData !== true && elem.getAttribute("classid") === noData;
- }
-});
-
-jQuery.fn.extend({
- data: function( key, value ) {
- var attrs, name,
- elem = this[0],
- i = 0,
- data = null;
-
- // Gets all values
- if ( key === undefined ) {
- if ( this.length ) {
- data = jQuery.data( elem );
-
- if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
- attrs = elem.attributes;
- for ( ; i < attrs.length; i++ ) {
- name = attrs[i].name;
-
- if ( !name.indexOf( "data-" ) ) {
- name = jQuery.camelCase( name.slice(5) );
-
- dataAttr( elem, name, data[ name ] );
- }
- }
- jQuery._data( elem, "parsedAttrs", true );
- }
- }
-
- return data;
- }
-
- // Sets multiple values
- if ( typeof key === "object" ) {
- return this.each(function() {
- jQuery.data( this, key );
- });
- }
-
- return jQuery.access( this, function( value ) {
-
- if ( value === undefined ) {
- // Try to fetch any internally stored data first
- return elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;
- }
-
- this.each(function() {
- jQuery.data( this, key, value );
- });
- }, null, value, arguments.length > 1, null, true );
- },
-
- removeData: function( key ) {
- return this.each(function() {
- jQuery.removeData( this, key );
- });
- }
-});
-
-function dataAttr( elem, key, data ) {
- // If nothing was found internally, try to fetch any
- // data from the HTML5 data-* attribute
- if ( data === undefined && elem.nodeType === 1 ) {
-
- var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
-
- data = elem.getAttribute( name );
-
- if ( typeof data === "string" ) {
- try {
- data = data === "true" ? true :
- data === "false" ? false :
- data === "null" ? null :
- // Only convert to a number if it doesn't change the string
- +data + "" === data ? +data :
- rbrace.test( data ) ? jQuery.parseJSON( data ) :
- data;
- } catch( e ) {}
-
- // Make sure we set the data so it isn't changed later
- jQuery.data( elem, key, data );
-
- } else {
- data = undefined;
- }
- }
-
- return data;
-}
-
-// checks a cache object for emptiness
-function isEmptyDataObject( obj ) {
- var name;
- for ( name in obj ) {
-
- // if the public data object is empty, the private is still empty
- if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
- continue;
- }
- if ( name !== "toJSON" ) {
- return false;
- }
- }
-
- return true;
-}
-jQuery.extend({
- queue: function( elem, type, data ) {
- var queue;
-
- if ( elem ) {
- type = ( type || "fx" ) + "queue";
- queue = jQuery._data( elem, type );
-
- // Speed up dequeue by getting out quickly if this is just a lookup
- if ( data ) {
- if ( !queue || jQuery.isArray(data) ) {
- queue = jQuery._data( elem, type, jQuery.makeArray(data) );
- } else {
- queue.push( data );
- }
- }
- return queue || [];
- }
- },
-
- dequeue: function( elem, type ) {
- type = type || "fx";
-
- var queue = jQuery.queue( elem, type ),
- startLength = queue.length,
- fn = queue.shift(),
- hooks = jQuery._queueHooks( elem, type ),
- next = function() {
- jQuery.dequeue( elem, type );
- };
-
- // If the fx queue is dequeued, always remove the progress sentinel
- if ( fn === "inprogress" ) {
- fn = queue.shift();
- startLength--;
- }
-
- hooks.cur = fn;
- if ( fn ) {
-
- // Add a progress sentinel to prevent the fx queue from being
- // automatically dequeued
- if ( type === "fx" ) {
- queue.unshift( "inprogress" );
- }
-
- // clear up the last queue stop function
- delete hooks.stop;
- fn.call( elem, next, hooks );
- }
-
- if ( !startLength && hooks ) {
- hooks.empty.fire();
- }
- },
-
- // not intended for public consumption - generates a queueHooks object, or returns the current one
- _queueHooks: function( elem, type ) {
- var key = type + "queueHooks";
- return jQuery._data( elem, key ) || jQuery._data( elem, key, {
- empty: jQuery.Callbacks("once memory").add(function() {
- jQuery._removeData( elem, type + "queue" );
- jQuery._removeData( elem, key );
- })
- });
- }
-});
-
-jQuery.fn.extend({
- queue: function( type, data ) {
- var setter = 2;
-
- if ( typeof type !== "string" ) {
- data = type;
- type = "fx";
- setter--;
- }
-
- if ( arguments.length < setter ) {
- return jQuery.queue( this[0], type );
- }
-
- return data === undefined ?
- this :
- this.each(function() {
- var queue = jQuery.queue( this, type, data );
-
- // ensure a hooks for this queue
- jQuery._queueHooks( this, type );
-
- if ( type === "fx" && queue[0] !== "inprogress" ) {
- jQuery.dequeue( this, type );
- }
- });
- },
- dequeue: function( type ) {
- return this.each(function() {
- jQuery.dequeue( this, type );
- });
- },
- // Based off of the plugin by Clint Helfers, with permission.
- // http://blindsignals.com/index.php/2009/07/jquery-delay/
- delay: function( time, type ) {
- time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
- type = type || "fx";
-
- return this.queue( type, function( next, hooks ) {
- var timeout = setTimeout( next, time );
- hooks.stop = function() {
- clearTimeout( timeout );
- };
- });
- },
- clearQueue: function( type ) {
- return this.queue( type || "fx", [] );
- },
- // Get a promise resolved when queues of a certain type
- // are emptied (fx is the type by default)
- promise: function( type, obj ) {
- var tmp,
- count = 1,
- defer = jQuery.Deferred(),
- elements = this,
- i = this.length,
- resolve = function() {
- if ( !( --count ) ) {
- defer.resolveWith( elements, [ elements ] );
- }
- };
-
- if ( typeof type !== "string" ) {
- obj = type;
- type = undefined;
- }
- type = type || "fx";
-
- while( i-- ) {
- tmp = jQuery._data( elements[ i ], type + "queueHooks" );
- if ( tmp && tmp.empty ) {
- count++;
- tmp.empty.add( resolve );
- }
- }
- resolve();
- return defer.promise( obj );
- }
-});
-var nodeHook, boolHook,
- rclass = /[\t\r\n]/g,
- rreturn = /\r/g,
- rfocusable = /^(?:input|select|textarea|button|object)$/i,
- rclickable = /^(?:a|area)$/i,
- rboolean = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,
- ruseDefault = /^(?:checked|selected)$/i,
- getSetAttribute = jQuery.support.getSetAttribute,
- getSetInput = jQuery.support.input;
-
-jQuery.fn.extend({
- attr: function( name, value ) {
- return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
- },
-
- removeAttr: function( name ) {
- return this.each(function() {
- jQuery.removeAttr( this, name );
- });
- },
-
- prop: function( name, value ) {
- return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
- },
-
- removeProp: function( name ) {
- name = jQuery.propFix[ name ] || name;
- return this.each(function() {
- // try/catch handles cases where IE balks (such as removing a property on window)
- try {
- this[ name ] = undefined;
- delete this[ name ];
- } catch( e ) {}
- });
- },
-
- addClass: function( value ) {
- var classes, elem, cur, clazz, j,
- i = 0,
- len = this.length,
- proceed = typeof value === "string" && value;
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( j ) {
- jQuery( this ).addClass( value.call( this, j, this.className ) );
- });
- }
-
- if ( proceed ) {
- // The disjunction here is for better compressibility (see removeClass)
- classes = ( value || "" ).match( core_rnotwhite ) || [];
-
- for ( ; i < len; i++ ) {
- elem = this[ i ];
- cur = elem.nodeType === 1 && ( elem.className ?
- ( " " + elem.className + " " ).replace( rclass, " " ) :
- " "
- );
-
- if ( cur ) {
- j = 0;
- while ( (clazz = classes[j++]) ) {
- if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
- cur += clazz + " ";
- }
- }
- elem.className = jQuery.trim( cur );
-
- }
- }
- }
-
- return this;
- },
-
- removeClass: function( value ) {
- var classes, elem, cur, clazz, j,
- i = 0,
- len = this.length,
- proceed = arguments.length === 0 || typeof value === "string" && value;
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( j ) {
- jQuery( this ).removeClass( value.call( this, j, this.className ) );
- });
- }
- if ( proceed ) {
- classes = ( value || "" ).match( core_rnotwhite ) || [];
-
- for ( ; i < len; i++ ) {
- elem = this[ i ];
- // This expression is here for better compressibility (see addClass)
- cur = elem.nodeType === 1 && ( elem.className ?
- ( " " + elem.className + " " ).replace( rclass, " " ) :
- ""
- );
-
- if ( cur ) {
- j = 0;
- while ( (clazz = classes[j++]) ) {
- // Remove *all* instances
- while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
- cur = cur.replace( " " + clazz + " ", " " );
- }
- }
- elem.className = value ? jQuery.trim( cur ) : "";
- }
- }
- }
-
- return this;
- },
-
- toggleClass: function( value, stateVal ) {
- var type = typeof value,
- isBool = typeof stateVal === "boolean";
-
- if ( jQuery.isFunction( value ) ) {
- return this.each(function( i ) {
- jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
- });
- }
-
- return this.each(function() {
- if ( type === "string" ) {
- // toggle individual class names
- var className,
- i = 0,
- self = jQuery( this ),
- state = stateVal,
- classNames = value.match( core_rnotwhite ) || [];
-
- while ( (className = classNames[ i++ ]) ) {
- // check each className given, space separated list
- state = isBool ? state : !self.hasClass( className );
- self[ state ? "addClass" : "removeClass" ]( className );
- }
-
- // Toggle whole class name
- } else if ( type === core_strundefined || type === "boolean" ) {
- if ( this.className ) {
- // store className if set
- jQuery._data( this, "__className__", this.className );
- }
-
- // If the element has a class name or if we're passed "false",
- // then remove the whole classname (if there was one, the above saved it).
- // Otherwise bring back whatever was previously saved (if anything),
- // falling back to the empty string if nothing was stored.
- this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
- }
- });
- },
-
- hasClass: function( selector ) {
- var className = " " + selector + " ",
- i = 0,
- l = this.length;
- for ( ; i < l; i++ ) {
- if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
- return true;
- }
- }
-
- return false;
- },
-
- val: function( value ) {
- var ret, hooks, isFunction,
- elem = this[0];
-
- if ( !arguments.length ) {
- if ( elem ) {
- hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
-
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
- return ret;
- }
-
- ret = elem.value;
-
- return typeof ret === "string" ?
- // handle most common string cases
- ret.replace(rreturn, "") :
- // handle cases where value is null/undef or number
- ret == null ? "" : ret;
- }
-
- return;
- }
-
- isFunction = jQuery.isFunction( value );
-
- return this.each(function( i ) {
- var val,
- self = jQuery(this);
-
- if ( this.nodeType !== 1 ) {
- return;
- }
-
- if ( isFunction ) {
- val = value.call( this, i, self.val() );
- } else {
- val = value;
- }
-
- // Treat null/undefined as ""; convert numbers to string
- if ( val == null ) {
- val = "";
- } else if ( typeof val === "number" ) {
- val += "";
- } else if ( jQuery.isArray( val ) ) {
- val = jQuery.map(val, function ( value ) {
- return value == null ? "" : value + "";
- });
- }
-
- hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
-
- // If set returns undefined, fall back to normal setting
- if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
- this.value = val;
- }
- });
- }
-});
-
-jQuery.extend({
- valHooks: {
- option: {
- get: function( elem ) {
- // attributes.value is undefined in Blackberry 4.7 but
- // uses .value. See #6932
- var val = elem.attributes.value;
- return !val || val.specified ? elem.value : elem.text;
- }
- },
- select: {
- get: function( elem ) {
- var value, option,
- options = elem.options,
- index = elem.selectedIndex,
- one = elem.type === "select-one" || index < 0,
- values = one ? null : [],
- max = one ? index + 1 : options.length,
- i = index < 0 ?
- max :
- one ? index : 0;
-
- // Loop through all the selected options
- for ( ; i < max; i++ ) {
- option = options[ i ];
-
- // oldIE doesn't update selected after form reset (#2551)
- if ( ( option.selected || i === index ) &&
- // Don't return options that are disabled or in a disabled optgroup
- ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
- ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
-
- // Get the specific value for the option
- value = jQuery( option ).val();
-
- // We don't need an array for one selects
- if ( one ) {
- return value;
- }
-
- // Multi-Selects return an array
- values.push( value );
- }
- }
-
- return values;
- },
-
- set: function( elem, value ) {
- var values = jQuery.makeArray( value );
-
- jQuery(elem).find("option").each(function() {
- this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
- });
-
- if ( !values.length ) {
- elem.selectedIndex = -1;
- }
- return values;
- }
- }
- },
-
- attr: function( elem, name, value ) {
- var hooks, notxml, ret,
- nType = elem.nodeType;
-
- // don't get/set attributes on text, comment and attribute nodes
- if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
- return;
- }
-
- // Fallback to prop when attributes are not supported
- if ( typeof elem.getAttribute === core_strundefined ) {
- return jQuery.prop( elem, name, value );
- }
-
- notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
- // All attributes are lowercase
- // Grab necessary hook if one is defined
- if ( notxml ) {
- name = name.toLowerCase();
- hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
- }
-
- if ( value !== undefined ) {
-
- if ( value === null ) {
- jQuery.removeAttr( elem, name );
-
- } else if ( hooks && notxml && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
- return ret;
-
- } else {
- elem.setAttribute( name, value + "" );
- return value;
- }
-
- } else if ( hooks && notxml && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
- return ret;
-
- } else {
-
- // In IE9+, Flash objects don't have .getAttribute (#12945)
- // Support: IE9+
- if ( typeof elem.getAttribute !== core_strundefined ) {
- ret = elem.getAttribute( name );
- }
-
- // Non-existent attributes return null, we normalize to undefined
- return ret == null ?
- undefined :
- ret;
- }
- },
-
- removeAttr: function( elem, value ) {
- var name, propName,
- i = 0,
- attrNames = value && value.match( core_rnotwhite );
-
- if ( attrNames && elem.nodeType === 1 ) {
- while ( (name = attrNames[i++]) ) {
- propName = jQuery.propFix[ name ] || name;
-
- // Boolean attributes get special treatment (#10870)
- if ( rboolean.test( name ) ) {
- // Set corresponding property to false for boolean attributes
- // Also clear defaultChecked/defaultSelected (if appropriate) for IE<8
- if ( !getSetAttribute && ruseDefault.test( name ) ) {
- elem[ jQuery.camelCase( "default-" + name ) ] =
- elem[ propName ] = false;
- } else {
- elem[ propName ] = false;
- }
-
- // See #9699 for explanation of this approach (setting first, then removal)
- } else {
- jQuery.attr( elem, name, "" );
- }
-
- elem.removeAttribute( getSetAttribute ? name : propName );
- }
- }
- },
-
- attrHooks: {
- type: {
- set: function( elem, value ) {
- if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
- // Setting the type on a radio button after the value resets the value in IE6-9
- // Reset value to default in case type is set after value during creation
- var val = elem.value;
- elem.setAttribute( "type", value );
- if ( val ) {
- elem.value = val;
- }
- return value;
- }
- }
- }
- },
-
- propFix: {
- tabindex: "tabIndex",
- readonly: "readOnly",
- "for": "htmlFor",
- "class": "className",
- maxlength: "maxLength",
- cellspacing: "cellSpacing",
- cellpadding: "cellPadding",
- rowspan: "rowSpan",
- colspan: "colSpan",
- usemap: "useMap",
- frameborder: "frameBorder",
- contenteditable: "contentEditable"
- },
-
- prop: function( elem, name, value ) {
- var ret, hooks, notxml,
- nType = elem.nodeType;
-
- // don't get/set properties on text, comment and attribute nodes
- if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
- return;
- }
-
- notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
- if ( notxml ) {
- // Fix name and attach hooks
- name = jQuery.propFix[ name ] || name;
- hooks = jQuery.propHooks[ name ];
- }
-
- if ( value !== undefined ) {
- if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
- return ret;
-
- } else {
- return ( elem[ name ] = value );
- }
-
- } else {
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
- return ret;
-
- } else {
- return elem[ name ];
- }
- }
- },
-
- propHooks: {
- tabIndex: {
- get: function( elem ) {
- // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
- // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
- var attributeNode = elem.getAttributeNode("tabindex");
-
- return attributeNode && attributeNode.specified ?
- parseInt( attributeNode.value, 10 ) :
- rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
- 0 :
- undefined;
- }
- }
- }
-});
-
-// Hook for boolean attributes
-boolHook = {
- get: function( elem, name ) {
- var
- // Use .prop to determine if this attribute is understood as boolean
- prop = jQuery.prop( elem, name ),
-
- // Fetch it accordingly
- attr = typeof prop === "boolean" && elem.getAttribute( name ),
- detail = typeof prop === "boolean" ?
-
- getSetInput && getSetAttribute ?
- attr != null :
- // oldIE fabricates an empty string for missing boolean attributes
- // and conflates checked/selected into attroperties
- ruseDefault.test( name ) ?
- elem[ jQuery.camelCase( "default-" + name ) ] :
- !!attr :
-
- // fetch an attribute node for properties not recognized as boolean
- elem.getAttributeNode( name );
-
- return detail && detail.value !== false ?
- name.toLowerCase() :
- undefined;
- },
- set: function( elem, value, name ) {
- if ( value === false ) {
- // Remove boolean attributes when set to false
- jQuery.removeAttr( elem, name );
- } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
- // IE<8 needs the *property* name
- elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );
-
- // Use defaultChecked and defaultSelected for oldIE
- } else {
- elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
- }
-
- return name;
- }
-};
-
-// fix oldIE value attroperty
-if ( !getSetInput || !getSetAttribute ) {
- jQuery.attrHooks.value = {
- get: function( elem, name ) {
- var ret = elem.getAttributeNode( name );
- return jQuery.nodeName( elem, "input" ) ?
-
- // Ignore the value *property* by using defaultValue
- elem.defaultValue :
-
- ret && ret.specified ? ret.value : undefined;
- },
- set: function( elem, value, name ) {
- if ( jQuery.nodeName( elem, "input" ) ) {
- // Does not return so that setAttribute is also used
- elem.defaultValue = value;
- } else {
- // Use nodeHook if defined (#1954); otherwise setAttribute is fine
- return nodeHook && nodeHook.set( elem, value, name );
- }
- }
- };
-}
-
-// IE6/7 do not support getting/setting some attributes with get/setAttribute
-if ( !getSetAttribute ) {
-
- // Use this for any attribute in IE6/7
- // This fixes almost every IE6/7 issue
- nodeHook = jQuery.valHooks.button = {
- get: function( elem, name ) {
- var ret = elem.getAttributeNode( name );
- return ret && ( name === "id" || name === "name" || name === "coords" ? ret.value !== "" : ret.specified ) ?
- ret.value :
- undefined;
- },
- set: function( elem, value, name ) {
- // Set the existing or create a new attribute node
- var ret = elem.getAttributeNode( name );
- if ( !ret ) {
- elem.setAttributeNode(
- (ret = elem.ownerDocument.createAttribute( name ))
- );
- }
-
- ret.value = value += "";
-
- // Break association with cloned elements by also using setAttribute (#9646)
- return name === "value" || value === elem.getAttribute( name ) ?
- value :
- undefined;
- }
- };
-
- // Set contenteditable to false on removals(#10429)
- // Setting to empty string throws an error as an invalid value
- jQuery.attrHooks.contenteditable = {
- get: nodeHook.get,
- set: function( elem, value, name ) {
- nodeHook.set( elem, value === "" ? false : value, name );
- }
- };
-
- // Set width and height to auto instead of 0 on empty string( Bug #8150 )
- // This is for removals
- jQuery.each([ "width", "height" ], function( i, name ) {
- jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
- set: function( elem, value ) {
- if ( value === "" ) {
- elem.setAttribute( name, "auto" );
- return value;
- }
- }
- });
- });
-}
-
-
-// Some attributes require a special call on IE
-// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
-if ( !jQuery.support.hrefNormalized ) {
- jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
- jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
- get: function( elem ) {
- var ret = elem.getAttribute( name, 2 );
- return ret == null ? undefined : ret;
- }
- });
- });
-
- // href/src property should get the full normalized URL (#10299/#12915)
- jQuery.each([ "href", "src" ], function( i, name ) {
- jQuery.propHooks[ name ] = {
- get: function( elem ) {
- return elem.getAttribute( name, 4 );
- }
- };
- });
-}
-
-if ( !jQuery.support.style ) {
- jQuery.attrHooks.style = {
- get: function( elem ) {
- // Return undefined in the case of empty string
- // Note: IE uppercases css property names, but if we were to .toLowerCase()
- // .cssText, that would destroy case senstitivity in URL's, like in "background"
- return elem.style.cssText || undefined;
- },
- set: function( elem, value ) {
- return ( elem.style.cssText = value + "" );
- }
- };
-}
-
-// Safari mis-reports the default selected property of an option
-// Accessing the parent's selectedIndex property fixes it
-if ( !jQuery.support.optSelected ) {
- jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
- get: function( elem ) {
- var parent = elem.parentNode;
-
- if ( parent ) {
- parent.selectedIndex;
-
- // Make sure that it also works with optgroups, see #5701
- if ( parent.parentNode ) {
- parent.parentNode.selectedIndex;
- }
- }
- return null;
- }
- });
-}
-
-// IE6/7 call enctype encoding
-if ( !jQuery.support.enctype ) {
- jQuery.propFix.enctype = "encoding";
-}
-
-// Radios and checkboxes getter/setter
-if ( !jQuery.support.checkOn ) {
- jQuery.each([ "radio", "checkbox" ], function() {
- jQuery.valHooks[ this ] = {
- get: function( elem ) {
- // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
- return elem.getAttribute("value") === null ? "on" : elem.value;
- }
- };
- });
-}
-jQuery.each([ "radio", "checkbox" ], function() {
- jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
- set: function( elem, value ) {
- if ( jQuery.isArray( value ) ) {
- return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
- }
- }
- });
-});
-var rformElems = /^(?:input|select|textarea)$/i,
- rkeyEvent = /^key/,
- rmouseEvent = /^(?:mouse|contextmenu)|click/,
- rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
- rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
-
-function returnTrue() {
- return true;
-}
-
-function returnFalse() {
- return false;
-}
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
- global: {},
-
- add: function( elem, types, handler, data, selector ) {
- var tmp, events, t, handleObjIn,
- special, eventHandle, handleObj,
- handlers, type, namespaces, origType,
- elemData = jQuery._data( elem );
-
- // Don't attach events to noData or text/comment nodes (but allow plain objects)
- if ( !elemData ) {
- return;
- }
-
- // Caller can pass in an object of custom data in lieu of the handler
- if ( handler.handler ) {
- handleObjIn = handler;
- handler = handleObjIn.handler;
- selector = handleObjIn.selector;
- }
-
- // Make sure that the handler has a unique ID, used to find/remove it later
- if ( !handler.guid ) {
- handler.guid = jQuery.guid++;
- }
-
- // Init the element's event structure and main handler, if this is the first
- if ( !(events = elemData.events) ) {
- events = elemData.events = {};
- }
- if ( !(eventHandle = elemData.handle) ) {
- eventHandle = elemData.handle = function( e ) {
- // Discard the second event of a jQuery.event.trigger() and
- // when an event is called after a page has unloaded
- return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?
- jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
- undefined;
- };
- // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
- eventHandle.elem = elem;
- }
-
- // Handle multiple events separated by a space
- // jQuery(...).bind("mouseover mouseout", fn);
- types = ( types || "" ).match( core_rnotwhite ) || [""];
- t = types.length;
- while ( t-- ) {
- tmp = rtypenamespace.exec( types[t] ) || [];
- type = origType = tmp[1];
- namespaces = ( tmp[2] || "" ).split( "." ).sort();
-
- // If event changes its type, use the special event handlers for the changed type
- special = jQuery.event.special[ type ] || {};
-
- // If selector defined, determine special event api type, otherwise given type
- type = ( selector ? special.delegateType : special.bindType ) || type;
-
- // Update special based on newly reset type
- special = jQuery.event.special[ type ] || {};
-
- // handleObj is passed to all event handlers
- handleObj = jQuery.extend({
- type: type,
- origType: origType,
- data: data,
- handler: handler,
- guid: handler.guid,
- selector: selector,
- needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
- namespace: namespaces.join(".")
- }, handleObjIn );
-
- // Init the event handler queue if we're the first
- if ( !(handlers = events[ type ]) ) {
- handlers = events[ type ] = [];
- handlers.delegateCount = 0;
-
- // Only use addEventListener/attachEvent if the special events handler returns false
- if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
- // Bind the global event handler to the element
- if ( elem.addEventListener ) {
- elem.addEventListener( type, eventHandle, false );
-
- } else if ( elem.attachEvent ) {
- elem.attachEvent( "on" + type, eventHandle );
- }
- }
- }
-
- if ( special.add ) {
- special.add.call( elem, handleObj );
-
- if ( !handleObj.handler.guid ) {
- handleObj.handler.guid = handler.guid;
- }
- }
-
- // Add to the element's handler list, delegates in front
- if ( selector ) {
- handlers.splice( handlers.delegateCount++, 0, handleObj );
- } else {
- handlers.push( handleObj );
- }
-
- // Keep track of which events have ever been used, for event optimization
- jQuery.event.global[ type ] = true;
- }
-
- // Nullify elem to prevent memory leaks in IE
- elem = null;
- },
-
- // Detach an event or set of events from an element
- remove: function( elem, types, handler, selector, mappedTypes ) {
- var j, handleObj, tmp,
- origCount, t, events,
- special, handlers, type,
- namespaces, origType,
- elemData = jQuery.hasData( elem ) && jQuery._data( elem );
-
- if ( !elemData || !(events = elemData.events) ) {
- return;
- }
-
- // Once for each type.namespace in types; type may be omitted
- types = ( types || "" ).match( core_rnotwhite ) || [""];
- t = types.length;
- while ( t-- ) {
- tmp = rtypenamespace.exec( types[t] ) || [];
- type = origType = tmp[1];
- namespaces = ( tmp[2] || "" ).split( "." ).sort();
-
- // Unbind all events (on this namespace, if provided) for the element
- if ( !type ) {
- for ( type in events ) {
- jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
- }
- continue;
- }
-
- special = jQuery.event.special[ type ] || {};
- type = ( selector ? special.delegateType : special.bindType ) || type;
- handlers = events[ type ] || [];
- tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
-
- // Remove matching events
- origCount = j = handlers.length;
- while ( j-- ) {
- handleObj = handlers[ j ];
-
- if ( ( mappedTypes || origType === handleObj.origType ) &&
- ( !handler || handler.guid === handleObj.guid ) &&
- ( !tmp || tmp.test( handleObj.namespace ) ) &&
- ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
- handlers.splice( j, 1 );
-
- if ( handleObj.selector ) {
- handlers.delegateCount--;
- }
- if ( special.remove ) {
- special.remove.call( elem, handleObj );
- }
- }
- }
-
- // Remove generic event handler if we removed something and no more handlers exist
- // (avoids potential for endless recursion during removal of special event handlers)
- if ( origCount && !handlers.length ) {
- if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
- jQuery.removeEvent( elem, type, elemData.handle );
- }
-
- delete events[ type ];
- }
- }
-
- // Remove the expando if it's no longer used
- if ( jQuery.isEmptyObject( events ) ) {
- delete elemData.handle;
-
- // removeData also checks for emptiness and clears the expando if empty
- // so use it instead of delete
- jQuery._removeData( elem, "events" );
- }
- },
-
- trigger: function( event, data, elem, onlyHandlers ) {
- var handle, ontype, cur,
- bubbleType, special, tmp, i,
- eventPath = [ elem || document ],
- type = core_hasOwn.call( event, "type" ) ? event.type : event,
- namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
-
- cur = tmp = elem = elem || document;
-
- // Don't do events on text and comment nodes
- if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
- return;
- }
-
- // focus/blur morphs to focusin/out; ensure we're not firing them right now
- if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
- return;
- }
-
- if ( type.indexOf(".") >= 0 ) {
- // Namespaced trigger; create a regexp to match event type in handle()
- namespaces = type.split(".");
- type = namespaces.shift();
- namespaces.sort();
- }
- ontype = type.indexOf(":") < 0 && "on" + type;
-
- // Caller can pass in a jQuery.Event object, Object, or just an event type string
- event = event[ jQuery.expando ] ?
- event :
- new jQuery.Event( type, typeof event === "object" && event );
-
- event.isTrigger = true;
- event.namespace = namespaces.join(".");
- event.namespace_re = event.namespace ?
- new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
- null;
-
- // Clean up the event in case it is being reused
- event.result = undefined;
- if ( !event.target ) {
- event.target = elem;
- }
-
- // Clone any incoming data and prepend the event, creating the handler arg list
- data = data == null ?
- [ event ] :
- jQuery.makeArray( data, [ event ] );
-
- // Allow special events to draw outside the lines
- special = jQuery.event.special[ type ] || {};
- if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
- return;
- }
-
- // Determine event propagation path in advance, per W3C events spec (#9951)
- // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
- if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
-
- bubbleType = special.delegateType || type;
- if ( !rfocusMorph.test( bubbleType + type ) ) {
- cur = cur.parentNode;
- }
- for ( ; cur; cur = cur.parentNode ) {
- eventPath.push( cur );
- tmp = cur;
- }
-
- // Only add window if we got to document (e.g., not plain obj or detached DOM)
- if ( tmp === (elem.ownerDocument || document) ) {
- eventPath.push( tmp.defaultView || tmp.parentWindow || window );
- }
- }
-
- // Fire handlers on the event path
- i = 0;
- while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
-
- event.type = i > 1 ?
- bubbleType :
- special.bindType || type;
-
- // jQuery handler
- handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
- if ( handle ) {
- handle.apply( cur, data );
- }
-
- // Native handler
- handle = ontype && cur[ ontype ];
- if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
- event.preventDefault();
- }
- }
- event.type = type;
-
- // If nobody prevented the default action, do it now
- if ( !onlyHandlers && !event.isDefaultPrevented() ) {
-
- if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
- !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
-
- // Call a native DOM method on the target with the same name name as the event.
- // Can't use an .isFunction() check here because IE6/7 fails that test.
- // Don't do default actions on window, that's where global variables be (#6170)
- if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
-
- // Don't re-trigger an onFOO event when we call its FOO() method
- tmp = elem[ ontype ];
-
- if ( tmp ) {
- elem[ ontype ] = null;
- }
-
- // Prevent re-triggering of the same event, since we already bubbled it above
- jQuery.event.triggered = type;
- try {
- elem[ type ]();
- } catch ( e ) {
- // IE<9 dies on focus/blur to hidden element (#1486,#12518)
- // only reproducible on winXP IE8 native, not IE9 in IE8 mode
- }
- jQuery.event.triggered = undefined;
-
- if ( tmp ) {
- elem[ ontype ] = tmp;
- }
- }
- }
- }
-
- return event.result;
- },
-
- dispatch: function( event ) {
-
- // Make a writable jQuery.Event from the native event object
- event = jQuery.event.fix( event );
-
- var i, ret, handleObj, matched, j,
- handlerQueue = [],
- args = core_slice.call( arguments ),
- handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
- special = jQuery.event.special[ event.type ] || {};
-
- // Use the fix-ed jQuery.Event rather than the (read-only) native event
- args[0] = event;
- event.delegateTarget = this;
-
- // Call the preDispatch hook for the mapped type, and let it bail if desired
- if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
- return;
- }
-
- // Determine handlers
- handlerQueue = jQuery.event.handlers.call( this, event, handlers );
-
- // Run delegates first; they may want to stop propagation beneath us
- i = 0;
- while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
- event.currentTarget = matched.elem;
-
- j = 0;
- while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
-
- // Triggered event must either 1) have no namespace, or
- // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
- if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
-
- event.handleObj = handleObj;
- event.data = handleObj.data;
-
- ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
- .apply( matched.elem, args );
-
- if ( ret !== undefined ) {
- if ( (event.result = ret) === false ) {
- event.preventDefault();
- event.stopPropagation();
- }
- }
- }
- }
- }
-
- // Call the postDispatch hook for the mapped type
- if ( special.postDispatch ) {
- special.postDispatch.call( this, event );
- }
-
- return event.result;
- },
-
- handlers: function( event, handlers ) {
- var sel, handleObj, matches, i,
- handlerQueue = [],
- delegateCount = handlers.delegateCount,
- cur = event.target;
-
- // Find delegate handlers
- // Black-hole SVG <use> instance trees (#13180)
- // Avoid non-left-click bubbling in Firefox (#3861)
- if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
-
- for ( ; cur != this; cur = cur.parentNode || this ) {
-
- // Don't check non-elements (#13208)
- // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
- if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
- matches = [];
- for ( i = 0; i < delegateCount; i++ ) {
- handleObj = handlers[ i ];
-
- // Don't conflict with Object.prototype properties (#13203)
- sel = handleObj.selector + " ";
-
- if ( matches[ sel ] === undefined ) {
- matches[ sel ] = handleObj.needsContext ?
- jQuery( sel, this ).index( cur ) >= 0 :
- jQuery.find( sel, this, null, [ cur ] ).length;
- }
- if ( matches[ sel ] ) {
- matches.push( handleObj );
- }
- }
- if ( matches.length ) {
- handlerQueue.push({ elem: cur, handlers: matches });
- }
- }
- }
- }
-
- // Add the remaining (directly-bound) handlers
- if ( delegateCount < handlers.length ) {
- handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
- }
-
- return handlerQueue;
- },
-
- fix: function( event ) {
- if ( event[ jQuery.expando ] ) {
- return event;
- }
-
- // Create a writable copy of the event object and normalize some properties
- var i, prop, copy,
- type = event.type,
- originalEvent = event,
- fixHook = this.fixHooks[ type ];
-
- if ( !fixHook ) {
- this.fixHooks[ type ] = fixHook =
- rmouseEvent.test( type ) ? this.mouseHooks :
- rkeyEvent.test( type ) ? this.keyHooks :
- {};
- }
- copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
-
- event = new jQuery.Event( originalEvent );
-
- i = copy.length;
- while ( i-- ) {
- prop = copy[ i ];
- event[ prop ] = originalEvent[ prop ];
- }
-
- // Support: IE<9
- // Fix target property (#1925)
- if ( !event.target ) {
- event.target = originalEvent.srcElement || document;
- }
-
- // Support: Chrome 23+, Safari?
- // Target should not be a text node (#504, #13143)
- if ( event.target.nodeType === 3 ) {
- event.target = event.target.parentNode;
- }
-
- // Support: IE<9
- // For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
- event.metaKey = !!event.metaKey;
-
- return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
- },
-
- // Includes some event props shared by KeyEvent and MouseEvent
- props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
-
- fixHooks: {},
-
- keyHooks: {
- props: "char charCode key keyCode".split(" "),
- filter: function( event, original ) {
-
- // Add which for key events
- if ( event.which == null ) {
- event.which = original.charCode != null ? original.charCode : original.keyCode;
- }
-
- return event;
- }
- },
-
- mouseHooks: {
- props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
- filter: function( event, original ) {
- var body, eventDoc, doc,
- button = original.button,
- fromElement = original.fromElement;
-
- // Calculate pageX/Y if missing and clientX/Y available
- if ( event.pageX == null && original.clientX != null ) {
- eventDoc = event.target.ownerDocument || document;
- doc = eventDoc.documentElement;
- body = eventDoc.body;
-
- event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
- event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );
- }
-
- // Add relatedTarget, if necessary
- if ( !event.relatedTarget && fromElement ) {
- event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
- }
-
- // Add which for click: 1 === left; 2 === middle; 3 === right
- // Note: button is not normalized, so don't use it
- if ( !event.which && button !== undefined ) {
- event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
- }
-
- return event;
- }
- },
-
- special: {
- load: {
- // Prevent triggered image.load events from bubbling to window.load
- noBubble: true
- },
- click: {
- // For checkbox, fire native event so checked state will be right
- trigger: function() {
- if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
- this.click();
- return false;
- }
- }
- },
- focus: {
- // Fire native event if possible so blur/focus sequence is correct
- trigger: function() {
- if ( this !== document.activeElement && this.focus ) {
- try {
- this.focus();
- return false;
- } catch ( e ) {
- // Support: IE<9
- // If we error on focus to hidden element (#1486, #12518),
- // let .trigger() run the handlers
- }
- }
- },
- delegateType: "focusin"
- },
- blur: {
- trigger: function() {
- if ( this === document.activeElement && this.blur ) {
- this.blur();
- return false;
- }
- },
- delegateType: "focusout"
- },
-
- beforeunload: {
- postDispatch: function( event ) {
-
- // Even when returnValue equals to undefined Firefox will still show alert
- if ( event.result !== undefined ) {
- event.originalEvent.returnValue = event.result;
- }
- }
- }
- },
-
- simulate: function( type, elem, event, bubble ) {
- // Piggyback on a donor event to simulate a different one.
- // Fake originalEvent to avoid donor's stopPropagation, but if the
- // simulated event prevents default then we do the same on the donor.
- var e = jQuery.extend(
- new jQuery.Event(),
- event,
- { type: type,
- isSimulated: true,
- originalEvent: {}
- }
- );
- if ( bubble ) {
- jQuery.event.trigger( e, null, elem );
- } else {
- jQuery.event.dispatch.call( elem, e );
- }
- if ( e.isDefaultPrevented() ) {
- event.preventDefault();
- }
- }
-};
-
-jQuery.removeEvent = document.removeEventListener ?
- function( elem, type, handle ) {
- if ( elem.removeEventListener ) {
- elem.removeEventListener( type, handle, false );
- }
- } :
- function( elem, type, handle ) {
- var name = "on" + type;
-
- if ( elem.detachEvent ) {
-
- // #8545, #7054, preventing memory leaks for custom events in IE6-8
- // detachEvent needed property on element, by name of that event, to properly expose it to GC
- if ( typeof elem[ name ] === core_strundefined ) {
- elem[ name ] = null;
- }
-
- elem.detachEvent( name, handle );
- }
- };
-
-jQuery.Event = function( src, props ) {
- // Allow instantiation without the 'new' keyword
- if ( !(this instanceof jQuery.Event) ) {
- return new jQuery.Event( src, props );
- }
-
- // Event object
- if ( src && src.type ) {
- this.originalEvent = src;
- this.type = src.type;
-
- // Events bubbling up the document may have been marked as prevented
- // by a handler lower down the tree; reflect the correct value.
- this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
- src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
-
- // Event type
- } else {
- this.type = src;
- }
-
- // Put explicitly provided properties onto the event object
- if ( props ) {
- jQuery.extend( this, props );
- }
-
- // Create a timestamp if incoming event doesn't have one
- this.timeStamp = src && src.timeStamp || jQuery.now();
-
- // Mark it as fixed
- this[ jQuery.expando ] = true;
-};
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
- isDefaultPrevented: returnFalse,
- isPropagationStopped: returnFalse,
- isImmediatePropagationStopped: returnFalse,
-
- preventDefault: function() {
- var e = this.originalEvent;
-
- this.isDefaultPrevented = returnTrue;
- if ( !e ) {
- return;
- }
-
- // If preventDefault exists, run it on the original event
- if ( e.preventDefault ) {
- e.preventDefault();
-
- // Support: IE
- // Otherwise set the returnValue property of the original event to false
- } else {
- e.returnValue = false;
- }
- },
- stopPropagation: function() {
- var e = this.originalEvent;
-
- this.isPropagationStopped = returnTrue;
- if ( !e ) {
- return;
- }
- // If stopPropagation exists, run it on the original event
- if ( e.stopPropagation ) {
- e.stopPropagation();
- }
-
- // Support: IE
- // Set the cancelBubble property of the original event to true
- e.cancelBubble = true;
- },
- stopImmediatePropagation: function() {
- this.isImmediatePropagationStopped = returnTrue;
- this.stopPropagation();
- }
-};
-
-// Create mouseenter/leave events using mouseover/out and event-time checks
-jQuery.each({
- mouseenter: "mouseover",
- mouseleave: "mouseout"
-}, function( orig, fix ) {
- jQuery.event.special[ orig ] = {
- delegateType: fix,
- bindType: fix,
-
- handle: function( event ) {
- var ret,
- target = this,
- related = event.relatedTarget,
- handleObj = event.handleObj;
-
- // For mousenter/leave call the handler if related is outside the target.
- // NB: No relatedTarget if the mouse left/entered the browser window
- if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
- event.type = handleObj.origType;
- ret = handleObj.handler.apply( this, arguments );
- event.type = fix;
- }
- return ret;
- }
- };
-});
-
-// IE submit delegation
-if ( !jQuery.support.submitBubbles ) {
-
- jQuery.event.special.submit = {
- setup: function() {
- // Only need this for delegated form submit events
- if ( jQuery.nodeName( this, "form" ) ) {
- return false;
- }
-
- // Lazy-add a submit handler when a descendant form may potentially be submitted
- jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
- // Node name check avoids a VML-related crash in IE (#9807)
- var elem = e.target,
- form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
- if ( form && !jQuery._data( form, "submitBubbles" ) ) {
- jQuery.event.add( form, "submit._submit", function( event ) {
- event._submit_bubble = true;
- });
- jQuery._data( form, "submitBubbles", true );
- }
- });
- // return undefined since we don't need an event listener
- },
-
- postDispatch: function( event ) {
- // If form was submitted by the user, bubble the event up the tree
- if ( event._submit_bubble ) {
- delete event._submit_bubble;
- if ( this.parentNode && !event.isTrigger ) {
- jQuery.event.simulate( "submit", this.parentNode, event, true );
- }
- }
- },
-
- teardown: function() {
- // Only need this for delegated form submit events
- if ( jQuery.nodeName( this, "form" ) ) {
- return false;
- }
-
- // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
- jQuery.event.remove( this, "._submit" );
- }
- };
-}
-
-// IE change delegation and checkbox/radio fix
-if ( !jQuery.support.changeBubbles ) {
-
- jQuery.event.special.change = {
-
- setup: function() {
-
- if ( rformElems.test( this.nodeName ) ) {
- // IE doesn't fire change on a check/radio until blur; trigger it on click
- // after a propertychange. Eat the blur-change in special.change.handle.
- // This still fires onchange a second time for check/radio after blur.
- if ( this.type === "checkbox" || this.type === "radio" ) {
- jQuery.event.add( this, "propertychange._change", function( event ) {
- if ( event.originalEvent.propertyName === "checked" ) {
- this._just_changed = true;
- }
- });
- jQuery.event.add( this, "click._change", function( event ) {
- if ( this._just_changed && !event.isTrigger ) {
- this._just_changed = false;
- }
- // Allow triggered, simulated change events (#11500)
- jQuery.event.simulate( "change", this, event, true );
- });
- }
- return false;
- }
- // Delegated event; lazy-add a change handler on descendant inputs
- jQuery.event.add( this, "beforeactivate._change", function( e ) {
- var elem = e.target;
-
- if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
- jQuery.event.add( elem, "change._change", function( event ) {
- if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
- jQuery.event.simulate( "change", this.parentNode, event, true );
- }
- });
- jQuery._data( elem, "changeBubbles", true );
- }
- });
- },
-
- handle: function( event ) {
- var elem = event.target;
-
- // Swallow native change events from checkbox/radio, we already triggered them above
- if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
- return event.handleObj.handler.apply( this, arguments );
- }
- },
-
- teardown: function() {
- jQuery.event.remove( this, "._change" );
-
- return !rformElems.test( this.nodeName );
- }
- };
-}
-
-// Create "bubbling" focus and blur events
-if ( !jQuery.support.focusinBubbles ) {
- jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
-
- // Attach a single capturing handler while someone wants focusin/focusout
- var attaches = 0,
- handler = function( event ) {
- jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
- };
-
- jQuery.event.special[ fix ] = {
- setup: function() {
- if ( attaches++ === 0 ) {
- document.addEventListener( orig, handler, true );
- }
- },
- teardown: function() {
- if ( --attaches === 0 ) {
- document.removeEventListener( orig, handler, true );
- }
- }
- };
- });
-}
-
-jQuery.fn.extend({
-
- on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
- var type, origFn;
-
- // Types can be a map of types/handlers
- if ( typeof types === "object" ) {
- // ( types-Object, selector, data )
- if ( typeof selector !== "string" ) {
- // ( types-Object, data )
- data = data || selector;
- selector = undefined;
- }
- for ( type in types ) {
- this.on( type, selector, data, types[ type ], one );
- }
- return this;
- }
-
- if ( data == null && fn == null ) {
- // ( types, fn )
- fn = selector;
- data = selector = undefined;
- } else if ( fn == null ) {
- if ( typeof selector === "string" ) {
- // ( types, selector, fn )
- fn = data;
- data = undefined;
- } else {
- // ( types, data, fn )
- fn = data;
- data = selector;
- selector = undefined;
- }
- }
- if ( fn === false ) {
- fn = returnFalse;
- } else if ( !fn ) {
- return this;
- }
-
- if ( one === 1 ) {
- origFn = fn;
- fn = function( event ) {
- // Can use an empty set, since event contains the info
- jQuery().off( event );
- return origFn.apply( this, arguments );
- };
- // Use same guid so caller can remove using origFn
- fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
- }
- return this.each( function() {
- jQuery.event.add( this, types, fn, data, selector );
- });
- },
- one: function( types, selector, data, fn ) {
- return this.on( types, selector, data, fn, 1 );
- },
- off: function( types, selector, fn ) {
- var handleObj, type;
- if ( types && types.preventDefault && types.handleObj ) {
- // ( event ) dispatched jQuery.Event
- handleObj = types.handleObj;
- jQuery( types.delegateTarget ).off(
- handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
- handleObj.selector,
- handleObj.handler
- );
- return this;
- }
- if ( typeof types === "object" ) {
- // ( types-object [, selector] )
- for ( type in types ) {
- this.off( type, selector, types[ type ] );
- }
- return this;
- }
- if ( selector === false || typeof selector === "function" ) {
- // ( types [, fn] )
- fn = selector;
- selector = undefined;
- }
- if ( fn === false ) {
- fn = returnFalse;
- }
- return this.each(function() {
- jQuery.event.remove( this, types, fn, selector );
- });
- },
-
- bind: function( types, data, fn ) {
- return this.on( types, null, data, fn );
- },
- unbind: function( types, fn ) {
- return this.off( types, null, fn );
- },
-
- delegate: function( selector, types, data, fn ) {
- return this.on( types, selector, data, fn );
- },
- undelegate: function( selector, types, fn ) {
- // ( namespace ) or ( selector, types [, fn] )
- return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
- },
-
- trigger: function( type, data ) {
- return this.each(function() {
- jQuery.event.trigger( type, data, this );
- });
- },
- triggerHandler: function( type, data ) {
- var elem = this[0];
- if ( elem ) {
- return jQuery.event.trigger( type, data, elem, true );
- }
- }
-});
-/*!
- * Sizzle CSS Selector Engine
- * Copyright 2012 jQuery Foundation and other contributors
- * Released under the MIT license
- * http://sizzlejs.com/
- */
-(function( window, undefined ) {
-
-var i,
- cachedruns,
- Expr,
- getText,
- isXML,
- compile,
- hasDuplicate,
- outermostContext,
-
- // Local document vars
- setDocument,
- document,
- docElem,
- documentIsXML,
- rbuggyQSA,
- rbuggyMatches,
- matches,
- contains,
- sortOrder,
-
- // Instance-specific data
- expando = "sizzle" + -(new Date()),
- preferredDoc = window.document,
- support = {},
- dirruns = 0,
- done = 0,
- classCache = createCache(),
- tokenCache = createCache(),
- compilerCache = createCache(),
-
- // General-purpose constants
- strundefined = typeof undefined,
- MAX_NEGATIVE = 1 << 31,
-
- // Array methods
- arr = [],
- pop = arr.pop,
- push = arr.push,
- slice = arr.slice,
- // Use a stripped-down indexOf if we can't use a native one
- indexOf = arr.indexOf || function( elem ) {
- var i = 0,
- len = this.length;
- for ( ; i < len; i++ ) {
- if ( this[i] === elem ) {
- return i;
- }
- }
- return -1;
- },
-
-
- // Regular expressions
-
- // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
- whitespace = "[\\x20\\t\\r\\n\\f]",
- // http://www.w3.org/TR/css3-syntax/#characters
- characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
-
- // Loosely modeled on CSS identifier characters
- // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
- // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
- identifier = characterEncoding.replace( "w", "w#" ),
-
- // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
- operators = "([*^$|!~]?=)",
- attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
- "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
-
- // Prefer arguments quoted,
- // then not containing pseudos/brackets,
- // then attribute selectors/non-parenthetical expressions,
- // then anything else
- // These preferences are here to reduce the number of selectors
- // needing tokenize in the PSEUDO preFilter
- pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
-
- // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
- rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
-
- rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
- rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ),
- rpseudo = new RegExp( pseudos ),
- ridentifier = new RegExp( "^" + identifier + "$" ),
-
- matchExpr = {
- "ID": new RegExp( "^#(" + characterEncoding + ")" ),
- "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
- "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ),
- "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
- "ATTR": new RegExp( "^" + attributes ),
- "PSEUDO": new RegExp( "^" + pseudos ),
- "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
- "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
- "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
- // For use in libraries implementing .is()
- // We use this for POS matching in `select`
- "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
- whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
- },
-
- rsibling = /[\x20\t\r\n\f]*[+~]/,
-
- rnative = /^[^{]+\{\s*\[native code/,
-
- // Easily-parseable/retrievable ID or TAG or CLASS selectors
- rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
-
- rinputs = /^(?:input|select|textarea|button)$/i,
- rheader = /^h\d$/i,
-
- rescape = /'|\\/g,
- rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,
-
- // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
- runescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,
- funescape = function( _, escaped ) {
- var high = "0x" + escaped - 0x10000;
- // NaN means non-codepoint
- return high !== high ?
- escaped :
- // BMP codepoint
- high < 0 ?
- String.fromCharCode( high + 0x10000 ) :
- // Supplemental Plane codepoint (surrogate pair)
- String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
- };
-
-// Use a stripped-down slice if we can't use a native one
-try {
- slice.call( preferredDoc.documentElement.childNodes, 0 )[0].nodeType;
-} catch ( e ) {
- slice = function( i ) {
- var elem,
- results = [];
- while ( (elem = this[i++]) ) {
- results.push( elem );
- }
- return results;
- };
-}
-
-/**
- * For feature detection
- * @param {Function} fn The function to test for native support
- */
-function isNative( fn ) {
- return rnative.test( fn + "" );
-}
-
-/**
- * Create key-value caches of limited size
- * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
- * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
- * deleting the oldest entry
- */
-function createCache() {
- var cache,
- keys = [];
-
- return (cache = function( key, value ) {
- // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
- if ( keys.push( key += " " ) > Expr.cacheLength ) {
- // Only keep the most recent entries
- delete cache[ keys.shift() ];
- }
- return (cache[ key ] = value);
- });
-}
-
-/**
- * Mark a function for special use by Sizzle
- * @param {Function} fn The function to mark
- */
-function markFunction( fn ) {
- fn[ expando ] = true;
- return fn;
-}
-
-/**
- * Support testing using an element
- * @param {Function} fn Passed the created div and expects a boolean result
- */
-function assert( fn ) {
- var div = document.createElement("div");
-
- try {
- return fn( div );
- } catch (e) {
- return false;
- } finally {
- // release memory in IE
- div = null;
- }
-}
-
-function Sizzle( selector, context, results, seed ) {
- var match, elem, m, nodeType,
- // QSA vars
- i, groups, old, nid, newContext, newSelector;
-
- if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
- setDocument( context );
- }
-
- context = context || document;
- results = results || [];
-
- if ( !selector || typeof selector !== "string" ) {
- return results;
- }
-
- if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
- return [];
- }
-
- if ( !documentIsXML && !seed ) {
-
- // Shortcuts
- if ( (match = rquickExpr.exec( selector )) ) {
- // Speed-up: Sizzle("#ID")
- if ( (m = match[1]) ) {
- if ( nodeType === 9 ) {
- elem = context.getElementById( m );
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- if ( elem && elem.parentNode ) {
- // Handle the case where IE, Opera, and Webkit return items
- // by name instead of ID
- if ( elem.id === m ) {
- results.push( elem );
- return results;
- }
- } else {
- return results;
- }
- } else {
- // Context is not a document
- if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
- contains( context, elem ) && elem.id === m ) {
- results.push( elem );
- return results;
- }
- }
-
- // Speed-up: Sizzle("TAG")
- } else if ( match[2] ) {
- push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );
- return results;
-
- // Speed-up: Sizzle(".CLASS")
- } else if ( (m = match[3]) && support.getByClassName && context.getElementsByClassName ) {
- push.apply( results, slice.call(context.getElementsByClassName( m ), 0) );
- return results;
- }
- }
-
- // QSA path
- if ( support.qsa && !rbuggyQSA.test(selector) ) {
- old = true;
- nid = expando;
- newContext = context;
- newSelector = nodeType === 9 && selector;
-
- // qSA works strangely on Element-rooted queries
- // We can work around this by specifying an extra ID on the root
- // and working up from there (Thanks to Andrew Dupont for the technique)
- // IE 8 doesn't work on object elements
- if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
- groups = tokenize( selector );
-
- if ( (old = context.getAttribute("id")) ) {
- nid = old.replace( rescape, "\\$&" );
- } else {
- context.setAttribute( "id", nid );
- }
- nid = "[id='" + nid + "'] ";
-
- i = groups.length;
- while ( i-- ) {
- groups[i] = nid + toSelector( groups[i] );
- }
- newContext = rsibling.test( selector ) && context.parentNode || context;
- newSelector = groups.join(",");
- }
-
- if ( newSelector ) {
- try {
- push.apply( results, slice.call( newContext.querySelectorAll(
- newSelector
- ), 0 ) );
- return results;
- } catch(qsaError) {
- } finally {
- if ( !old ) {
- context.removeAttribute("id");
- }
- }
- }
- }
- }
-
- // All others
- return select( selector.replace( rtrim, "$1" ), context, results, seed );
-}
-
-/**
- * Detect xml
- * @param {Element|Object} elem An element or a document
- */
-isXML = Sizzle.isXML = function( elem ) {
- // documentElement is verified for cases where it doesn't yet exist
- // (such as loading iframes in IE - #4833)
- var documentElement = elem && (elem.ownerDocument || elem).documentElement;
- return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-/**
- * Sets document-related variables once based on the current document
- * @param {Element|Object} [doc] An element or document object to use to set the document
- * @returns {Object} Returns the current document
- */
-setDocument = Sizzle.setDocument = function( node ) {
- var doc = node ? node.ownerDocument || node : preferredDoc;
-
- // If no document and documentElement is available, return
- if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
- return document;
- }
-
- // Set our document
- document = doc;
- docElem = doc.documentElement;
-
- // Support tests
- documentIsXML = isXML( doc );
-
- // Check if getElementsByTagName("*") returns only elements
- support.tagNameNoComments = assert(function( div ) {
- div.appendChild( doc.createComment("") );
- return !div.getElementsByTagName("*").length;
- });
-
- // Check if attributes should be retrieved by attribute nodes
- support.attributes = assert(function( div ) {
- div.innerHTML = "<select></select>";
- var type = typeof div.lastChild.getAttribute("multiple");
- // IE8 returns a string for some attributes even when not present
- return type !== "boolean" && type !== "string";
- });
-
- // Check if getElementsByClassName can be trusted
- support.getByClassName = assert(function( div ) {
- // Opera can't find a second classname (in 9.6)
- div.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>";
- if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) {
- return false;
- }
-
- // Safari 3.2 caches class attributes and doesn't catch changes
- div.lastChild.className = "e";
- return div.getElementsByClassName("e").length === 2;
- });
-
- // Check if getElementById returns elements by name
- // Check if getElementsByName privileges form controls or returns elements by ID
- support.getByName = assert(function( div ) {
- // Inject content
- div.id = expando + 0;
- div.innerHTML = "<a name='" + expando + "'></a><div name='" + expando + "'></div>";
- docElem.insertBefore( div, docElem.firstChild );
-
- // Test
- var pass = doc.getElementsByName &&
- // buggy browsers will return fewer than the correct 2
- doc.getElementsByName( expando ).length === 2 +
- // buggy browsers will return more than the correct 0
- doc.getElementsByName( expando + 0 ).length;
- support.getIdNotName = !doc.getElementById( expando );
-
- // Cleanup
- docElem.removeChild( div );
-
- return pass;
- });
-
- // IE6/7 return modified attributes
- Expr.attrHandle = assert(function( div ) {
- div.innerHTML = "<a href='#'></a>";
- return div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&
- div.firstChild.getAttribute("href") === "#";
- }) ?
- {} :
- {
- "href": function( elem ) {
- return elem.getAttribute( "href", 2 );
- },
- "type": function( elem ) {
- return elem.getAttribute("type");
- }
- };
-
- // ID find and filter
- if ( support.getIdNotName ) {
- Expr.find["ID"] = function( id, context ) {
- if ( typeof context.getElementById !== strundefined && !documentIsXML ) {
- var m = context.getElementById( id );
- // Check parentNode to catch when Blackberry 4.6 returns
- // nodes that are no longer in the document #6963
- return m && m.parentNode ? [m] : [];
- }
- };
- Expr.filter["ID"] = function( id ) {
- var attrId = id.replace( runescape, funescape );
- return function( elem ) {
- return elem.getAttribute("id") === attrId;
- };
- };
- } else {
- Expr.find["ID"] = function( id, context ) {
- if ( typeof context.getElementById !== strundefined && !documentIsXML ) {
- var m = context.getElementById( id );
-
- return m ?
- m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ?
- [m] :
- undefined :
- [];
- }
- };
- Expr.filter["ID"] = function( id ) {
- var attrId = id.replace( runescape, funescape );
- return function( elem ) {
- var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
- return node && node.value === attrId;
- };
- };
- }
-
- // Tag
- Expr.find["TAG"] = support.tagNameNoComments ?
- function( tag, context ) {
- if ( typeof context.getElementsByTagName !== strundefined ) {
- return context.getElementsByTagName( tag );
- }
- } :
- function( tag, context ) {
- var elem,
- tmp = [],
- i = 0,
- results = context.getElementsByTagName( tag );
-
- // Filter out possible comments
- if ( tag === "*" ) {
- while ( (elem = results[i++]) ) {
- if ( elem.nodeType === 1 ) {
- tmp.push( elem );
- }
- }
-
- return tmp;
- }
- return results;
- };
-
- // Name
- Expr.find["NAME"] = support.getByName && function( tag, context ) {
- if ( typeof context.getElementsByName !== strundefined ) {
- return context.getElementsByName( name );
- }
- };
-
- // Class
- Expr.find["CLASS"] = support.getByClassName && function( className, context ) {
- if ( typeof context.getElementsByClassName !== strundefined && !documentIsXML ) {
- return context.getElementsByClassName( className );
- }
- };
-
- // QSA and matchesSelector support
-
- // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
- rbuggyMatches = [];
-
- // qSa(:focus) reports false when true (Chrome 21),
- // no need to also add to buggyMatches since matches checks buggyQSA
- // A support test would require too much code (would include document ready)
- rbuggyQSA = [ ":focus" ];
-
- if ( (support.qsa = isNative(doc.querySelectorAll)) ) {
- // Build QSA regex
- // Regex strategy adopted from Diego Perini
- assert(function( div ) {
- // Select is set to empty string on purpose
- // This is to test IE's treatment of not explictly
- // setting a boolean content attribute,
- // since its presence should be enough
- // http://bugs.jquery.com/ticket/12359
- div.innerHTML = "<select><option selected=''></option></select>";
-
- // IE8 - Some boolean attributes are not treated correctly
- if ( !div.querySelectorAll("[selected]").length ) {
- rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" );
- }
-
- // Webkit/Opera - :checked should return selected option elements
- // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
- // IE8 throws error here and will not see later tests
- if ( !div.querySelectorAll(":checked").length ) {
- rbuggyQSA.push(":checked");
- }
- });
-
- assert(function( div ) {
-
- // Opera 10-12/IE8 - ^= $= *= and empty values
- // Should not select anything
- div.innerHTML = "<input type='hidden' i=''/>";
- if ( div.querySelectorAll("[i^='']").length ) {
- rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" );
- }
-
- // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
- // IE8 throws error here and will not see later tests
- if ( !div.querySelectorAll(":enabled").length ) {
- rbuggyQSA.push( ":enabled", ":disabled" );
- }
-
- // Opera 10-11 does not throw on post-comma invalid pseudos
- div.querySelectorAll("*,:x");
- rbuggyQSA.push(",.*:");
- });
- }
-
- if ( (support.matchesSelector = isNative( (matches = docElem.matchesSelector ||
- docElem.mozMatchesSelector ||
- docElem.webkitMatchesSelector ||
- docElem.oMatchesSelector ||
- docElem.msMatchesSelector) )) ) {
-
- assert(function( div ) {
- // Check to see if it's possible to do matchesSelector
- // on a disconnected node (IE 9)
- support.disconnectedMatch = matches.call( div, "div" );
-
- // This should fail with an exception
- // Gecko does not error, returns false instead
- matches.call( div, "[s!='']:x" );
- rbuggyMatches.push( "!=", pseudos );
- });
- }
-
- rbuggyQSA = new RegExp( rbuggyQSA.join("|") );
- rbuggyMatches = new RegExp( rbuggyMatches.join("|") );
-
- // Element contains another
- // Purposefully does not implement inclusive descendent
- // As in, an element does not contain itself
- contains = isNative(docElem.contains) || docElem.compareDocumentPosition ?
- function( a, b ) {
- var adown = a.nodeType === 9 ? a.documentElement : a,
- bup = b && b.parentNode;
- return a === bup || !!( bup && bup.nodeType === 1 && (
- adown.contains ?
- adown.contains( bup ) :
- a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
- ));
- } :
- function( a, b ) {
- if ( b ) {
- while ( (b = b.parentNode) ) {
- if ( b === a ) {
- return true;
- }
- }
- }
- return false;
- };
-
- // Document order sorting
- sortOrder = docElem.compareDocumentPosition ?
- function( a, b ) {
- var compare;
-
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
- }
-
- if ( (compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b )) ) {
- if ( compare & 1 || a.parentNode && a.parentNode.nodeType === 11 ) {
- if ( a === doc || contains( preferredDoc, a ) ) {
- return -1;
- }
- if ( b === doc || contains( preferredDoc, b ) ) {
- return 1;
- }
- return 0;
- }
- return compare & 4 ? -1 : 1;
- }
-
- return a.compareDocumentPosition ? -1 : 1;
- } :
- function( a, b ) {
- var cur,
- i = 0,
- aup = a.parentNode,
- bup = b.parentNode,
- ap = [ a ],
- bp = [ b ];
-
- // Exit early if the nodes are identical
- if ( a === b ) {
- hasDuplicate = true;
- return 0;
-
- // Parentless nodes are either documents or disconnected
- } else if ( !aup || !bup ) {
- return a === doc ? -1 :
- b === doc ? 1 :
- aup ? -1 :
- bup ? 1 :
- 0;
-
- // If the nodes are siblings, we can do a quick check
- } else if ( aup === bup ) {
- return siblingCheck( a, b );
- }
-
- // Otherwise we need full lists of their ancestors for comparison
- cur = a;
- while ( (cur = cur.parentNode) ) {
- ap.unshift( cur );
- }
- cur = b;
- while ( (cur = cur.parentNode) ) {
- bp.unshift( cur );
- }
-
- // Walk down the tree looking for a discrepancy
- while ( ap[i] === bp[i] ) {
- i++;
- }
-
- return i ?
- // Do a sibling check if the nodes have a common ancestor
- siblingCheck( ap[i], bp[i] ) :
-
- // Otherwise nodes in our document sort first
- ap[i] === preferredDoc ? -1 :
- bp[i] === preferredDoc ? 1 :
- 0;
- };
-
- // Always assume the presence of duplicates if sort doesn't
- // pass them to our comparison function (as in Google Chrome).
- hasDuplicate = false;
- [0, 0].sort( sortOrder );
- support.detectDuplicates = hasDuplicate;
-
- return document;
-};
-
-Sizzle.matches = function( expr, elements ) {
- return Sizzle( expr, null, null, elements );
-};
-
-Sizzle.matchesSelector = function( elem, expr ) {
- // Set document vars if needed
- if ( ( elem.ownerDocument || elem ) !== document ) {
- setDocument( elem );
- }
-
- // Make sure that attribute selectors are quoted
- expr = expr.replace( rattributeQuotes, "='$1']" );
-
- // rbuggyQSA always contains :focus, so no need for an existence check
- if ( support.matchesSelector && !documentIsXML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && !rbuggyQSA.test(expr) ) {
- try {
- var ret = matches.call( elem, expr );
-
- // IE 9's matchesSelector returns false on disconnected nodes
- if ( ret || support.disconnectedMatch ||
- // As well, disconnected nodes are said to be in a document
- // fragment in IE 9
- elem.document && elem.document.nodeType !== 11 ) {
- return ret;
- }
- } catch(e) {}
- }
-
- return Sizzle( expr, document, null, [elem] ).length > 0;
-};
-
-Sizzle.contains = function( context, elem ) {
- // Set document vars if needed
- if ( ( context.ownerDocument || context ) !== document ) {
- setDocument( context );
- }
- return contains( context, elem );
-};
-
-Sizzle.attr = function( elem, name ) {
- var val;
-
- // Set document vars if needed
- if ( ( elem.ownerDocument || elem ) !== document ) {
- setDocument( elem );
- }
-
- if ( !documentIsXML ) {
- name = name.toLowerCase();
- }
- if ( (val = Expr.attrHandle[ name ]) ) {
- return val( elem );
- }
- if ( documentIsXML || support.attributes ) {
- return elem.getAttribute( name );
- }
- return ( (val = elem.getAttributeNode( name )) || elem.getAttribute( name ) ) && elem[ name ] === true ?
- name :
- val && val.specified ? val.value : null;
-};
-
-Sizzle.error = function( msg ) {
- throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-// Document sorting and removing duplicates
-Sizzle.uniqueSort = function( results ) {
- var elem,
- duplicates = [],
- i = 1,
- j = 0;
-
- // Unless we *know* we can detect duplicates, assume their presence
- hasDuplicate = !support.detectDuplicates;
- results.sort( sortOrder );
-
- if ( hasDuplicate ) {
- for ( ; (elem = results[i]); i++ ) {
- if ( elem === results[ i - 1 ] ) {
- j = duplicates.push( i );
- }
- }
- while ( j-- ) {
- results.splice( duplicates[ j ], 1 );
- }
- }
-
- return results;
-};
-
-function siblingCheck( a, b ) {
- var cur = b && a,
- diff = cur && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE );
-
- // Use IE sourceIndex if available on both nodes
- if ( diff ) {
- return diff;
- }
-
- // Check if b follows a
- if ( cur ) {
- while ( (cur = cur.nextSibling) ) {
- if ( cur === b ) {
- return -1;
- }
- }
- }
-
- return a ? 1 : -1;
-}
-
-// Returns a function to use in pseudos for input types
-function createInputPseudo( type ) {
- return function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && elem.type === type;
- };
-}
-
-// Returns a function to use in pseudos for buttons
-function createButtonPseudo( type ) {
- return function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return (name === "input" || name === "button") && elem.type === type;
- };
-}
-
-// Returns a function to use in pseudos for positionals
-function createPositionalPseudo( fn ) {
- return markFunction(function( argument ) {
- argument = +argument;
- return markFunction(function( seed, matches ) {
- var j,
- matchIndexes = fn( [], seed.length, argument ),
- i = matchIndexes.length;
-
- // Match elements found at the specified indexes
- while ( i-- ) {
- if ( seed[ (j = matchIndexes[i]) ] ) {
- seed[j] = !(matches[j] = seed[j]);
- }
- }
- });
- });
-}
-
-/**
- * Utility function for retrieving the text value of an array of DOM nodes
- * @param {Array|Element} elem
- */
-getText = Sizzle.getText = function( elem ) {
- var node,
- ret = "",
- i = 0,
- nodeType = elem.nodeType;
-
- if ( !nodeType ) {
- // If no nodeType, this is expected to be an array
- for ( ; (node = elem[i]); i++ ) {
- // Do not traverse comment nodes
- ret += getText( node );
- }
- } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
- // Use textContent for elements
- // innerText usage removed for consistency of new lines (see #11153)
- if ( typeof elem.textContent === "string" ) {
- return elem.textContent;
- } else {
- // Traverse its children
- for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
- ret += getText( elem );
- }
- }
- } else if ( nodeType === 3 || nodeType === 4 ) {
- return elem.nodeValue;
- }
- // Do not include comment or processing instruction nodes
-
- return ret;
-};
-
-Expr = Sizzle.selectors = {
-
- // Can be adjusted by the user
- cacheLength: 50,
-
- createPseudo: markFunction,
-
- match: matchExpr,
-
- find: {},
-
- relative: {
- ">": { dir: "parentNode", first: true },
- " ": { dir: "parentNode" },
- "+": { dir: "previousSibling", first: true },
- "~": { dir: "previousSibling" }
- },
-
- preFilter: {
- "ATTR": function( match ) {
- match[1] = match[1].replace( runescape, funescape );
-
- // Move the given value to match[3] whether quoted or unquoted
- match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
-
- if ( match[2] === "~=" ) {
- match[3] = " " + match[3] + " ";
- }
-
- return match.slice( 0, 4 );
- },
-
- "CHILD": function( match ) {
- /* matches from matchExpr["CHILD"]
- 1 type (only|nth|...)
- 2 what (child|of-type)
- 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
- 4 xn-component of xn+y argument ([+-]?\d*n|)
- 5 sign of xn-component
- 6 x of xn-component
- 7 sign of y-component
- 8 y of y-component
- */
- match[1] = match[1].toLowerCase();
-
- if ( match[1].slice( 0, 3 ) === "nth" ) {
- // nth-* requires argument
- if ( !match[3] ) {
- Sizzle.error( match[0] );
- }
-
- // numeric x and y parameters for Expr.filter.CHILD
- // remember that false/true cast respectively to 0/1
- match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
- match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
-
- // other types prohibit arguments
- } else if ( match[3] ) {
- Sizzle.error( match[0] );
- }
-
- return match;
- },
-
- "PSEUDO": function( match ) {
- var excess,
- unquoted = !match[5] && match[2];
-
- if ( matchExpr["CHILD"].test( match[0] ) ) {
- return null;
- }
-
- // Accept quoted arguments as-is
- if ( match[4] ) {
- match[2] = match[4];
-
- // Strip excess characters from unquoted arguments
- } else if ( unquoted && rpseudo.test( unquoted ) &&
- // Get excess from tokenize (recursively)
- (excess = tokenize( unquoted, true )) &&
- // advance to the next closing parenthesis
- (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
-
- // excess is a negative index
- match[0] = match[0].slice( 0, excess );
- match[2] = unquoted.slice( 0, excess );
- }
-
- // Return only captures needed by the pseudo filter method (type and argument)
- return match.slice( 0, 3 );
- }
- },
-
- filter: {
-
- "TAG": function( nodeName ) {
- if ( nodeName === "*" ) {
- return function() { return true; };
- }
-
- nodeName = nodeName.replace( runescape, funescape ).toLowerCase();
- return function( elem ) {
- return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
- };
- },
-
- "CLASS": function( className ) {
- var pattern = classCache[ className + " " ];
-
- return pattern ||
- (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
- classCache( className, function( elem ) {
- return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" );
- });
- },
-
- "ATTR": function( name, operator, check ) {
- return function( elem ) {
- var result = Sizzle.attr( elem, name );
-
- if ( result == null ) {
- return operator === "!=";
- }
- if ( !operator ) {
- return true;
- }
-
- result += "";
-
- return operator === "=" ? result === check :
- operator === "!=" ? result !== check :
- operator === "^=" ? check && result.indexOf( check ) === 0 :
- operator === "*=" ? check && result.indexOf( check ) > -1 :
- operator === "$=" ? check && result.slice( -check.length ) === check :
- operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
- operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
- false;
- };
- },
-
- "CHILD": function( type, what, argument, first, last ) {
- var simple = type.slice( 0, 3 ) !== "nth",
- forward = type.slice( -4 ) !== "last",
- ofType = what === "of-type";
-
- return first === 1 && last === 0 ?
-
- // Shortcut for :nth-*(n)
- function( elem ) {
- return !!elem.parentNode;
- } :
-
- function( elem, context, xml ) {
- var cache, outerCache, node, diff, nodeIndex, start,
- dir = simple !== forward ? "nextSibling" : "previousSibling",
- parent = elem.parentNode,
- name = ofType && elem.nodeName.toLowerCase(),
- useCache = !xml && !ofType;
-
- if ( parent ) {
-
- // :(first|last|only)-(child|of-type)
- if ( simple ) {
- while ( dir ) {
- node = elem;
- while ( (node = node[ dir ]) ) {
- if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
- return false;
- }
- }
- // Reverse direction for :only-* (if we haven't yet done so)
- start = dir = type === "only" && !start && "nextSibling";
- }
- return true;
- }
-
- start = [ forward ? parent.firstChild : parent.lastChild ];
-
- // non-xml :nth-child(...) stores cache data on `parent`
- if ( forward && useCache ) {
- // Seek `elem` from a previously-cached index
- outerCache = parent[ expando ] || (parent[ expando ] = {});
- cache = outerCache[ type ] || [];
- nodeIndex = cache[0] === dirruns && cache[1];
- diff = cache[0] === dirruns && cache[2];
- node = nodeIndex && parent.childNodes[ nodeIndex ];
-
- while ( (node = ++nodeIndex && node && node[ dir ] ||
-
- // Fallback to seeking `elem` from the start
- (diff = nodeIndex = 0) || start.pop()) ) {
-
- // When found, cache indexes on `parent` and break
- if ( node.nodeType === 1 && ++diff && node === elem ) {
- outerCache[ type ] = [ dirruns, nodeIndex, diff ];
- break;
- }
- }
-
- // Use previously-cached element index if available
- } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
- diff = cache[1];
-
- // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
- } else {
- // Use the same loop as above to seek `elem` from the start
- while ( (node = ++nodeIndex && node && node[ dir ] ||
- (diff = nodeIndex = 0) || start.pop()) ) {
-
- if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
- // Cache the index of each encountered element
- if ( useCache ) {
- (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
- }
-
- if ( node === elem ) {
- break;
- }
- }
- }
- }
-
- // Incorporate the offset, then check against cycle size
- diff -= last;
- return diff === first || ( diff % first === 0 && diff / first >= 0 );
- }
- };
- },
-
- "PSEUDO": function( pseudo, argument ) {
- // pseudo-class names are case-insensitive
- // http://www.w3.org/TR/selectors/#pseudo-classes
- // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
- // Remember that setFilters inherits from pseudos
- var args,
- fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
- Sizzle.error( "unsupported pseudo: " + pseudo );
-
- // The user may use createPseudo to indicate that
- // arguments are needed to create the filter function
- // just as Sizzle does
- if ( fn[ expando ] ) {
- return fn( argument );
- }
-
- // But maintain support for old signatures
- if ( fn.length > 1 ) {
- args = [ pseudo, pseudo, "", argument ];
- return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
- markFunction(function( seed, matches ) {
- var idx,
- matched = fn( seed, argument ),
- i = matched.length;
- while ( i-- ) {
- idx = indexOf.call( seed, matched[i] );
- seed[ idx ] = !( matches[ idx ] = matched[i] );
- }
- }) :
- function( elem ) {
- return fn( elem, 0, args );
- };
- }
-
- return fn;
- }
- },
-
- pseudos: {
- // Potentially complex pseudos
- "not": markFunction(function( selector ) {
- // Trim the selector passed to compile
- // to avoid treating leading and trailing
- // spaces as combinators
- var input = [],
- results = [],
- matcher = compile( selector.replace( rtrim, "$1" ) );
-
- return matcher[ expando ] ?
- markFunction(function( seed, matches, context, xml ) {
- var elem,
- unmatched = matcher( seed, null, xml, [] ),
- i = seed.length;
-
- // Match elements unmatched by `matcher`
- while ( i-- ) {
- if ( (elem = unmatched[i]) ) {
- seed[i] = !(matches[i] = elem);
- }
- }
- }) :
- function( elem, context, xml ) {
- input[0] = elem;
- matcher( input, null, xml, results );
- return !results.pop();
- };
- }),
-
- "has": markFunction(function( selector ) {
- return function( elem ) {
- return Sizzle( selector, elem ).length > 0;
- };
- }),
-
- "contains": markFunction(function( text ) {
- return function( elem ) {
- return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
- };
- }),
-
- // "Whether an element is represented by a :lang() selector
- // is based solely on the element's language value
- // being equal to the identifier C,
- // or beginning with the identifier C immediately followed by "-".
- // The matching of C against the element's language value is performed case-insensitively.
- // The identifier C does not have to be a valid language name."
- // http://www.w3.org/TR/selectors/#lang-pseudo
- "lang": markFunction( function( lang ) {
- // lang value must be a valid identifider
- if ( !ridentifier.test(lang || "") ) {
- Sizzle.error( "unsupported lang: " + lang );
- }
- lang = lang.replace( runescape, funescape ).toLowerCase();
- return function( elem ) {
- var elemLang;
- do {
- if ( (elemLang = documentIsXML ?
- elem.getAttribute("xml:lang") || elem.getAttribute("lang") :
- elem.lang) ) {
-
- elemLang = elemLang.toLowerCase();
- return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
- }
- } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
- return false;
- };
- }),
-
- // Miscellaneous
- "target": function( elem ) {
- var hash = window.location && window.location.hash;
- return hash && hash.slice( 1 ) === elem.id;
- },
-
- "root": function( elem ) {
- return elem === docElem;
- },
-
- "focus": function( elem ) {
- return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
- },
-
- // Boolean properties
- "enabled": function( elem ) {
- return elem.disabled === false;
- },
-
- "disabled": function( elem ) {
- return elem.disabled === true;
- },
-
- "checked": function( elem ) {
- // In CSS3, :checked should return both checked and selected elements
- // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
- var nodeName = elem.nodeName.toLowerCase();
- return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
- },
-
- "selected": function( elem ) {
- // Accessing this property makes selected-by-default
- // options in Safari work properly
- if ( elem.parentNode ) {
- elem.parentNode.selectedIndex;
- }
-
- return elem.selected === true;
- },
-
- // Contents
- "empty": function( elem ) {
- // http://www.w3.org/TR/selectors/#empty-pseudo
- // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
- // not comment, processing instructions, or others
- // Thanks to Diego Perini for the nodeName shortcut
- // Greater than "@" means alpha characters (specifically not starting with "#" or "?")
- for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
- if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) {
- return false;
- }
- }
- return true;
- },
-
- "parent": function( elem ) {
- return !Expr.pseudos["empty"]( elem );
- },
-
- // Element/input types
- "header": function( elem ) {
- return rheader.test( elem.nodeName );
- },
-
- "input": function( elem ) {
- return rinputs.test( elem.nodeName );
- },
-
- "button": function( elem ) {
- var name = elem.nodeName.toLowerCase();
- return name === "input" && elem.type === "button" || name === "button";
- },
-
- "text": function( elem ) {
- var attr;
- // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
- // use getAttribute instead to test this case
- return elem.nodeName.toLowerCase() === "input" &&
- elem.type === "text" &&
- ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type );
- },
-
- // Position-in-collection
- "first": createPositionalPseudo(function() {
- return [ 0 ];
- }),
-
- "last": createPositionalPseudo(function( matchIndexes, length ) {
- return [ length - 1 ];
- }),
-
- "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
- return [ argument < 0 ? argument + length : argument ];
- }),
-
- "even": createPositionalPseudo(function( matchIndexes, length ) {
- var i = 0;
- for ( ; i < length; i += 2 ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- }),
-
- "odd": createPositionalPseudo(function( matchIndexes, length ) {
- var i = 1;
- for ( ; i < length; i += 2 ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- }),
-
- "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
- var i = argument < 0 ? argument + length : argument;
- for ( ; --i >= 0; ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- }),
-
- "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
- var i = argument < 0 ? argument + length : argument;
- for ( ; ++i < length; ) {
- matchIndexes.push( i );
- }
- return matchIndexes;
- })
- }
-};
-
-// Add button/input type pseudos
-for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
- Expr.pseudos[ i ] = createInputPseudo( i );
-}
-for ( i in { submit: true, reset: true } ) {
- Expr.pseudos[ i ] = createButtonPseudo( i );
-}
-
-function tokenize( selector, parseOnly ) {
- var matched, match, tokens, type,
- soFar, groups, preFilters,
- cached = tokenCache[ selector + " " ];
-
- if ( cached ) {
- return parseOnly ? 0 : cached.slice( 0 );
- }
-
- soFar = selector;
- groups = [];
- preFilters = Expr.preFilter;
-
- while ( soFar ) {
-
- // Comma and first run
- if ( !matched || (match = rcomma.exec( soFar )) ) {
- if ( match ) {
- // Don't consume trailing commas as valid
- soFar = soFar.slice( match[0].length ) || soFar;
- }
- groups.push( tokens = [] );
- }
-
- matched = false;
-
- // Combinators
- if ( (match = rcombinators.exec( soFar )) ) {
- matched = match.shift();
- tokens.push( {
- value: matched,
- // Cast descendant combinators to space
- type: match[0].replace( rtrim, " " )
- } );
- soFar = soFar.slice( matched.length );
- }
-
- // Filters
- for ( type in Expr.filter ) {
- if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
- (match = preFilters[ type ]( match ))) ) {
- matched = match.shift();
- tokens.push( {
- value: matched,
- type: type,
- matches: match
- } );
- soFar = soFar.slice( matched.length );
- }
- }
-
- if ( !matched ) {
- break;
- }
- }
-
- // Return the length of the invalid excess
- // if we're just parsing
- // Otherwise, throw an error or return tokens
- return parseOnly ?
- soFar.length :
- soFar ?
- Sizzle.error( selector ) :
- // Cache the tokens
- tokenCache( selector, groups ).slice( 0 );
-}
-
-function toSelector( tokens ) {
- var i = 0,
- len = tokens.length,
- selector = "";
- for ( ; i < len; i++ ) {
- selector += tokens[i].value;
- }
- return selector;
-}
-
-function addCombinator( matcher, combinator, base ) {
- var dir = combinator.dir,
- checkNonElements = base && dir === "parentNode",
- doneName = done++;
-
- return combinator.first ?
- // Check against closest ancestor/preceding element
- function( elem, context, xml ) {
- while ( (elem = elem[ dir ]) ) {
- if ( elem.nodeType === 1 || checkNonElements ) {
- return matcher( elem, context, xml );
- }
- }
- } :
-
- // Check against all ancestor/preceding elements
- function( elem, context, xml ) {
- var data, cache, outerCache,
- dirkey = dirruns + " " + doneName;
-
- // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
- if ( xml ) {
- while ( (elem = elem[ dir ]) ) {
- if ( elem.nodeType === 1 || checkNonElements ) {
- if ( matcher( elem, context, xml ) ) {
- return true;
- }
- }
- }
- } else {
- while ( (elem = elem[ dir ]) ) {
- if ( elem.nodeType === 1 || checkNonElements ) {
- outerCache = elem[ expando ] || (elem[ expando ] = {});
- if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {
- if ( (data = cache[1]) === true || data === cachedruns ) {
- return data === true;
- }
- } else {
- cache = outerCache[ dir ] = [ dirkey ];
- cache[1] = matcher( elem, context, xml ) || cachedruns;
- if ( cache[1] === true ) {
- return true;
- }
- }
- }
- }
- }
- };
-}
-
-function elementMatcher( matchers ) {
- return matchers.length > 1 ?
- function( elem, context, xml ) {
- var i = matchers.length;
- while ( i-- ) {
- if ( !matchers[i]( elem, context, xml ) ) {
- return false;
- }
- }
- return true;
- } :
- matchers[0];
-}
-
-function condense( unmatched, map, filter, context, xml ) {
- var elem,
- newUnmatched = [],
- i = 0,
- len = unmatched.length,
- mapped = map != null;
-
- for ( ; i < len; i++ ) {
- if ( (elem = unmatched[i]) ) {
- if ( !filter || filter( elem, context, xml ) ) {
- newUnmatched.push( elem );
- if ( mapped ) {
- map.push( i );
- }
- }
- }
- }
-
- return newUnmatched;
-}
-
-function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
- if ( postFilter && !postFilter[ expando ] ) {
- postFilter = setMatcher( postFilter );
- }
- if ( postFinder && !postFinder[ expando ] ) {
- postFinder = setMatcher( postFinder, postSelector );
- }
- return markFunction(function( seed, results, context, xml ) {
- var temp, i, elem,
- preMap = [],
- postMap = [],
- preexisting = results.length,
-
- // Get initial elements from seed or context
- elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
-
- // Prefilter to get matcher input, preserving a map for seed-results synchronization
- matcherIn = preFilter && ( seed || !selector ) ?
- condense( elems, preMap, preFilter, context, xml ) :
- elems,
-
- matcherOut = matcher ?
- // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
- postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
-
- // ...intermediate processing is necessary
- [] :
-
- // ...otherwise use results directly
- results :
- matcherIn;
-
- // Find primary matches
- if ( matcher ) {
- matcher( matcherIn, matcherOut, context, xml );
- }
-
- // Apply postFilter
- if ( postFilter ) {
- temp = condense( matcherOut, postMap );
- postFilter( temp, [], context, xml );
-
- // Un-match failing elements by moving them back to matcherIn
- i = temp.length;
- while ( i-- ) {
- if ( (elem = temp[i]) ) {
- matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
- }
- }
- }
-
- if ( seed ) {
- if ( postFinder || preFilter ) {
- if ( postFinder ) {
- // Get the final matcherOut by condensing this intermediate into postFinder contexts
- temp = [];
- i = matcherOut.length;
- while ( i-- ) {
- if ( (elem = matcherOut[i]) ) {
- // Restore matcherIn since elem is not yet a final match
- temp.push( (matcherIn[i] = elem) );
- }
- }
- postFinder( null, (matcherOut = []), temp, xml );
- }
-
- // Move matched elements from seed to results to keep them synchronized
- i = matcherOut.length;
- while ( i-- ) {
- if ( (elem = matcherOut[i]) &&
- (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
-
- seed[temp] = !(results[temp] = elem);
- }
- }
- }
-
- // Add elements to results, through postFinder if defined
- } else {
- matcherOut = condense(
- matcherOut === results ?
- matcherOut.splice( preexisting, matcherOut.length ) :
- matcherOut
- );
- if ( postFinder ) {
- postFinder( null, results, matcherOut, xml );
- } else {
- push.apply( results, matcherOut );
- }
- }
- });
-}
-
-function matcherFromTokens( tokens ) {
- var checkContext, matcher, j,
- len = tokens.length,
- leadingRelative = Expr.relative[ tokens[0].type ],
- implicitRelative = leadingRelative || Expr.relative[" "],
- i = leadingRelative ? 1 : 0,
-
- // The foundational matcher ensures that elements are reachable from top-level context(s)
- matchContext = addCombinator( function( elem ) {
- return elem === checkContext;
- }, implicitRelative, true ),
- matchAnyContext = addCombinator( function( elem ) {
- return indexOf.call( checkContext, elem ) > -1;
- }, implicitRelative, true ),
- matchers = [ function( elem, context, xml ) {
- return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
- (checkContext = context).nodeType ?
- matchContext( elem, context, xml ) :
- matchAnyContext( elem, context, xml ) );
- } ];
-
- for ( ; i < len; i++ ) {
- if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
- matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
- } else {
- matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
-
- // Return special upon seeing a positional matcher
- if ( matcher[ expando ] ) {
- // Find the next relative operator (if any) for proper handling
- j = ++i;
- for ( ; j < len; j++ ) {
- if ( Expr.relative[ tokens[j].type ] ) {
- break;
- }
- }
- return setMatcher(
- i > 1 && elementMatcher( matchers ),
- i > 1 && toSelector( tokens.slice( 0, i - 1 ) ).replace( rtrim, "$1" ),
- matcher,
- i < j && matcherFromTokens( tokens.slice( i, j ) ),
- j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
- j < len && toSelector( tokens )
- );
- }
- matchers.push( matcher );
- }
- }
-
- return elementMatcher( matchers );
-}
-
-function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
- // A counter to specify which element is currently being matched
- var matcherCachedRuns = 0,
- bySet = setMatchers.length > 0,
- byElement = elementMatchers.length > 0,
- superMatcher = function( seed, context, xml, results, expandContext ) {
- var elem, j, matcher,
- setMatched = [],
- matchedCount = 0,
- i = "0",
- unmatched = seed && [],
- outermost = expandContext != null,
- contextBackup = outermostContext,
- // We must always have either seed elements or context
- elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
- // Use integer dirruns iff this is the outermost matcher
- dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);
-
- if ( outermost ) {
- outermostContext = context !== document && context;
- cachedruns = matcherCachedRuns;
- }
-
- // Add elements passing elementMatchers directly to results
- // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
- for ( ; (elem = elems[i]) != null; i++ ) {
- if ( byElement && elem ) {
- j = 0;
- while ( (matcher = elementMatchers[j++]) ) {
- if ( matcher( elem, context, xml ) ) {
- results.push( elem );
- break;
- }
- }
- if ( outermost ) {
- dirruns = dirrunsUnique;
- cachedruns = ++matcherCachedRuns;
- }
- }
-
- // Track unmatched elements for set filters
- if ( bySet ) {
- // They will have gone through all possible matchers
- if ( (elem = !matcher && elem) ) {
- matchedCount--;
- }
-
- // Lengthen the array for every element, matched or not
- if ( seed ) {
- unmatched.push( elem );
- }
- }
- }
-
- // Apply set filters to unmatched elements
- matchedCount += i;
- if ( bySet && i !== matchedCount ) {
- j = 0;
- while ( (matcher = setMatchers[j++]) ) {
- matcher( unmatched, setMatched, context, xml );
- }
-
- if ( seed ) {
- // Reintegrate element matches to eliminate the need for sorting
- if ( matchedCount > 0 ) {
- while ( i-- ) {
- if ( !(unmatched[i] || setMatched[i]) ) {
- setMatched[i] = pop.call( results );
- }
- }
- }
-
- // Discard index placeholder values to get only actual matches
- setMatched = condense( setMatched );
- }
-
- // Add matches to results
- push.apply( results, setMatched );
-
- // Seedless set matches succeeding multiple successful matchers stipulate sorting
- if ( outermost && !seed && setMatched.length > 0 &&
- ( matchedCount + setMatchers.length ) > 1 ) {
-
- Sizzle.uniqueSort( results );
- }
- }
-
- // Override manipulation of globals by nested matchers
- if ( outermost ) {
- dirruns = dirrunsUnique;
- outermostContext = contextBackup;
- }
-
- return unmatched;
- };
-
- return bySet ?
- markFunction( superMatcher ) :
- superMatcher;
-}
-
-compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
- var i,
- setMatchers = [],
- elementMatchers = [],
- cached = compilerCache[ selector + " " ];
-
- if ( !cached ) {
- // Generate a function of recursive functions that can be used to check each element
- if ( !group ) {
- group = tokenize( selector );
- }
- i = group.length;
- while ( i-- ) {
- cached = matcherFromTokens( group[i] );
- if ( cached[ expando ] ) {
- setMatchers.push( cached );
- } else {
- elementMatchers.push( cached );
- }
- }
-
- // Cache the compiled function
- cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
- }
- return cached;
-};
-
-function multipleContexts( selector, contexts, results ) {
- var i = 0,
- len = contexts.length;
- for ( ; i < len; i++ ) {
- Sizzle( selector, contexts[i], results );
- }
- return results;
-}
-
-function select( selector, context, results, seed ) {
- var i, tokens, token, type, find,
- match = tokenize( selector );
-
- if ( !seed ) {
- // Try to minimize operations if there is only one group
- if ( match.length === 1 ) {
-
- // Take a shortcut and set the context if the root selector is an ID
- tokens = match[0] = match[0].slice( 0 );
- if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
- context.nodeType === 9 && !documentIsXML &&
- Expr.relative[ tokens[1].type ] ) {
-
- context = Expr.find["ID"]( token.matches[0].replace( runescape, funescape ), context )[0];
- if ( !context ) {
- return results;
- }
-
- selector = selector.slice( tokens.shift().value.length );
- }
-
- // Fetch a seed set for right-to-left matching
- i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
- while ( i-- ) {
- token = tokens[i];
-
- // Abort if we hit a combinator
- if ( Expr.relative[ (type = token.type) ] ) {
- break;
- }
- if ( (find = Expr.find[ type ]) ) {
- // Search, expanding context for leading sibling combinators
- if ( (seed = find(
- token.matches[0].replace( runescape, funescape ),
- rsibling.test( tokens[0].type ) && context.parentNode || context
- )) ) {
-
- // If seed is empty or no tokens remain, we can return early
- tokens.splice( i, 1 );
- selector = seed.length && toSelector( tokens );
- if ( !selector ) {
- push.apply( results, slice.call( seed, 0 ) );
- return results;
- }
-
- break;
- }
- }
- }
- }
- }
-
- // Compile and execute a filtering function
- // Provide `match` to avoid retokenization if we modified the selector above
- compile( selector, match )(
- seed,
- context,
- documentIsXML,
- results,
- rsibling.test( selector )
- );
- return results;
-}
-
-// Deprecated
-Expr.pseudos["nth"] = Expr.pseudos["eq"];
-
-// Easy API for creating new setFilters
-function setFilters() {}
-Expr.filters = setFilters.prototype = Expr.pseudos;
-Expr.setFilters = new setFilters();
-
-// Initialize with the default document
-setDocument();
-
-// Override sizzle attribute retrieval
-Sizzle.attr = jQuery.attr;
-jQuery.find = Sizzle;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.pseudos;
-jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = Sizzle.getText;
-jQuery.isXMLDoc = Sizzle.isXML;
-jQuery.contains = Sizzle.contains;
-
-
-})( window );
-var runtil = /Until$/,
- rparentsprev = /^(?:parents|prev(?:Until|All))/,
- isSimple = /^.[^:#\[\.,]*$/,
- rneedsContext = jQuery.expr.match.needsContext,
- // methods guaranteed to produce a unique set when starting from a unique set
- guaranteedUnique = {
- children: true,
- contents: true,
- next: true,
- prev: true
- };
-
-jQuery.fn.extend({
- find: function( selector ) {
- var i, ret, self,
- len = this.length;
-
- if ( typeof selector !== "string" ) {
- self = this;
- return this.pushStack( jQuery( selector ).filter(function() {
- for ( i = 0; i < len; i++ ) {
- if ( jQuery.contains( self[ i ], this ) ) {
- return true;
- }
- }
- }) );
- }
-
- ret = [];
- for ( i = 0; i < len; i++ ) {
- jQuery.find( selector, this[ i ], ret );
- }
-
- // Needed because $( selector, context ) becomes $( context ).find( selector )
- ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
- ret.selector = ( this.selector ? this.selector + " " : "" ) + selector;
- return ret;
- },
-
- has: function( target ) {
- var i,
- targets = jQuery( target, this ),
- len = targets.length;
-
- return this.filter(function() {
- for ( i = 0; i < len; i++ ) {
- if ( jQuery.contains( this, targets[i] ) ) {
- return true;
- }
- }
- });
- },
-
- not: function( selector ) {
- return this.pushStack( winnow(this, selector, false) );
- },
-
- filter: function( selector ) {
- return this.pushStack( winnow(this, selector, true) );
- },
-
- is: function( selector ) {
- return !!selector && (
- typeof selector === "string" ?
- // If this is a positional/relative selector, check membership in the returned set
- // so $("p:first").is("p:last") won't return true for a doc with two "p".
- rneedsContext.test( selector ) ?
- jQuery( selector, this.context ).index( this[0] ) >= 0 :
- jQuery.filter( selector, this ).length > 0 :
- this.filter( selector ).length > 0 );
- },
-
- closest: function( selectors, context ) {
- var cur,
- i = 0,
- l = this.length,
- ret = [],
- pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
- jQuery( selectors, context || this.context ) :
- 0;
-
- for ( ; i < l; i++ ) {
- cur = this[i];
-
- while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) {
- if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
- ret.push( cur );
- break;
- }
- cur = cur.parentNode;
- }
- }
-
- return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );
- },
-
- // Determine the position of an element within
- // the matched set of elements
- index: function( elem ) {
-
- // No argument, return index in parent
- if ( !elem ) {
- return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
- }
-
- // index in selector
- if ( typeof elem === "string" ) {
- return jQuery.inArray( this[0], jQuery( elem ) );
- }
-
- // Locate the position of the desired element
- return jQuery.inArray(
- // If it receives a jQuery object, the first element is used
- elem.jquery ? elem[0] : elem, this );
- },
-
- add: function( selector, context ) {
- var set = typeof selector === "string" ?
- jQuery( selector, context ) :
- jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
- all = jQuery.merge( this.get(), set );
-
- return this.pushStack( jQuery.unique(all) );
- },
-
- addBack: function( selector ) {
- return this.add( selector == null ?
- this.prevObject : this.prevObject.filter(selector)
- );
- }
-});
-
-jQuery.fn.andSelf = jQuery.fn.addBack;
-
-function sibling( cur, dir ) {
- do {
- cur = cur[ dir ];
- } while ( cur && cur.nodeType !== 1 );
-
- return cur;
-}
-
-jQuery.each({
- parent: function( elem ) {
- var parent = elem.parentNode;
- return parent && parent.nodeType !== 11 ? parent : null;
- },
- parents: function( elem ) {
- return jQuery.dir( elem, "parentNode" );
- },
- parentsUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "parentNode", until );
- },
- next: function( elem ) {
- return sibling( elem, "nextSibling" );
- },
- prev: function( elem ) {
- return sibling( elem, "previousSibling" );
- },
- nextAll: function( elem ) {
- return jQuery.dir( elem, "nextSibling" );
- },
- prevAll: function( elem ) {
- return jQuery.dir( elem, "previousSibling" );
- },
- nextUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "nextSibling", until );
- },
- prevUntil: function( elem, i, until ) {
- return jQuery.dir( elem, "previousSibling", until );
- },
- siblings: function( elem ) {
- return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
- },
- children: function( elem ) {
- return jQuery.sibling( elem.firstChild );
- },
- contents: function( elem ) {
- return jQuery.nodeName( elem, "iframe" ) ?
- elem.contentDocument || elem.contentWindow.document :
- jQuery.merge( [], elem.childNodes );
- }
-}, function( name, fn ) {
- jQuery.fn[ name ] = function( until, selector ) {
- var ret = jQuery.map( this, fn, until );
-
- if ( !runtil.test( name ) ) {
- selector = until;
- }
-
- if ( selector && typeof selector === "string" ) {
- ret = jQuery.filter( selector, ret );
- }
-
- ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
-
- if ( this.length > 1 && rparentsprev.test( name ) ) {
- ret = ret.reverse();
- }
-
- return this.pushStack( ret );
- };
-});
-
-jQuery.extend({
- filter: function( expr, elems, not ) {
- if ( not ) {
- expr = ":not(" + expr + ")";
- }
-
- return elems.length === 1 ?
- jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
- jQuery.find.matches(expr, elems);
- },
-
- dir: function( elem, dir, until ) {
- var matched = [],
- cur = elem[ dir ];
-
- while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
- if ( cur.nodeType === 1 ) {
- matched.push( cur );
- }
- cur = cur[dir];
- }
- return matched;
- },
-
- sibling: function( n, elem ) {
- var r = [];
-
- for ( ; n; n = n.nextSibling ) {
- if ( n.nodeType === 1 && n !== elem ) {
- r.push( n );
- }
- }
-
- return r;
- }
-});
-
-// Implement the identical functionality for filter and not
-function winnow( elements, qualifier, keep ) {
-
- // Can't pass null or undefined to indexOf in Firefox 4
- // Set to 0 to skip string check
- qualifier = qualifier || 0;
-
- if ( jQuery.isFunction( qualifier ) ) {
- return jQuery.grep(elements, function( elem, i ) {
- var retVal = !!qualifier.call( elem, i, elem );
- return retVal === keep;
- });
-
- } else if ( qualifier.nodeType ) {
- return jQuery.grep(elements, function( elem ) {
- return ( elem === qualifier ) === keep;
- });
-
- } else if ( typeof qualifier === "string" ) {
- var filtered = jQuery.grep(elements, function( elem ) {
- return elem.nodeType === 1;
- });
-
- if ( isSimple.test( qualifier ) ) {
- return jQuery.filter(qualifier, filtered, !keep);
- } else {
- qualifier = jQuery.filter( qualifier, filtered );
- }
- }
-
- return jQuery.grep(elements, function( elem ) {
- return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
- });
-}
-function createSafeFragment( document ) {
- var list = nodeNames.split( "|" ),
- safeFrag = document.createDocumentFragment();
-
- if ( safeFrag.createElement ) {
- while ( list.length ) {
- safeFrag.createElement(
- list.pop()
- );
- }
- }
- return safeFrag;
-}
-
-var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
- "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
- rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
- rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
- rleadingWhitespace = /^\s+/,
- rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
- rtagName = /<([\w:]+)/,
- rtbody = /<tbody/i,
- rhtml = /<|&#?\w+;/,
- rnoInnerhtml = /<(?:script|style|link)/i,
- manipulation_rcheckableType = /^(?:checkbox|radio)$/i,
- // checked="checked" or checked
- rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
- rscriptType = /^$|\/(?:java|ecma)script/i,
- rscriptTypeMasked = /^true\/(.*)/,
- rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
-
- // We have to close these tags to support XHTML (#13200)
- wrapMap = {
- option: [ 1, "<select multiple='multiple'>", "</select>" ],
- legend: [ 1, "<fieldset>", "</fieldset>" ],
- area: [ 1, "<map>", "</map>" ],
- param: [ 1, "<object>", "</object>" ],
- thead: [ 1, "<table>", "</table>" ],
- tr: [ 2, "<table><tbody>", "</tbody></table>" ],
- col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
- td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
-
- // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
- // unless wrapped in a div with non-breaking characters in front of it.
- _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>" ]
- },
- safeFragment = createSafeFragment( document ),
- fragmentDiv = safeFragment.appendChild( document.createElement("div") );
-
-wrapMap.optgroup = wrapMap.option;
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-jQuery.fn.extend({
- text: function( value ) {
- return jQuery.access( this, function( value ) {
- return value === undefined ?
- jQuery.text( this ) :
- this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
- }, null, value, arguments.length );
- },
-
- wrapAll: function( html ) {
- if ( jQuery.isFunction( html ) ) {
- return this.each(function(i) {
- jQuery(this).wrapAll( html.call(this, i) );
- });
- }
-
- if ( this[0] ) {
- // The elements to wrap the target around
- var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
-
- if ( this[0].parentNode ) {
- wrap.insertBefore( this[0] );
- }
-
- wrap.map(function() {
- var elem = this;
-
- while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
- elem = elem.firstChild;
- }
-
- return elem;
- }).append( this );
- }
-
- return this;
- },
-
- wrapInner: function( html ) {
- if ( jQuery.isFunction( html ) ) {
- return this.each(function(i) {
- jQuery(this).wrapInner( html.call(this, i) );
- });
- }
-
- return this.each(function() {
- var self = jQuery( this ),
- contents = self.contents();
-
- if ( contents.length ) {
- contents.wrapAll( html );
-
- } else {
- self.append( html );
- }
- });
- },
-
- wrap: function( html ) {
- var isFunction = jQuery.isFunction( html );
-
- return this.each(function(i) {
- jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
- });
- },
-
- unwrap: function() {
- return this.parent().each(function() {
- if ( !jQuery.nodeName( this, "body" ) ) {
- jQuery( this ).replaceWith( this.childNodes );
- }
- }).end();
- },
-
- append: function() {
- return this.domManip(arguments, true, function( elem ) {
- if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
- this.appendChild( elem );
- }
- });
- },
-
- prepend: function() {
- return this.domManip(arguments, true, function( elem ) {
- if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
- this.insertBefore( elem, this.firstChild );
- }
- });
- },
-
- before: function() {
- return this.domManip( arguments, false, function( elem ) {
- if ( this.parentNode ) {
- this.parentNode.insertBefore( elem, this );
- }
- });
- },
-
- after: function() {
- return this.domManip( arguments, false, function( elem ) {
- if ( this.parentNode ) {
- this.parentNode.insertBefore( elem, this.nextSibling );
- }
- });
- },
-
- // keepData is for internal use only--do not document
- remove: function( selector, keepData ) {
- var elem,
- i = 0;
-
- for ( ; (elem = this[i]) != null; i++ ) {
- if ( !selector || jQuery.filter( selector, [ elem ] ).length > 0 ) {
- if ( !keepData && elem.nodeType === 1 ) {
- jQuery.cleanData( getAll( elem ) );
- }
-
- if ( elem.parentNode ) {
- if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
- setGlobalEval( getAll( elem, "script" ) );
- }
- elem.parentNode.removeChild( elem );
- }
- }
- }
-
- return this;
- },
-
- empty: function() {
- var elem,
- i = 0;
-
- for ( ; (elem = this[i]) != null; i++ ) {
- // Remove element nodes and prevent memory leaks
- if ( elem.nodeType === 1 ) {
- jQuery.cleanData( getAll( elem, false ) );
- }
-
- // Remove any remaining nodes
- while ( elem.firstChild ) {
- elem.removeChild( elem.firstChild );
- }
-
- // If this is a select, ensure that it displays empty (#12336)
- // Support: IE<9
- if ( elem.options && jQuery.nodeName( elem, "select" ) ) {
- elem.options.length = 0;
- }
- }
-
- return this;
- },
-
- clone: function( dataAndEvents, deepDataAndEvents ) {
- dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
- deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
-
- return this.map( function () {
- return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
- });
- },
-
- html: function( value ) {
- return jQuery.access( this, function( value ) {
- var elem = this[0] || {},
- i = 0,
- l = this.length;
-
- if ( value === undefined ) {
- return elem.nodeType === 1 ?
- elem.innerHTML.replace( rinlinejQuery, "" ) :
- undefined;
- }
-
- // See if we can take a shortcut and just use innerHTML
- if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
- ( jQuery.support.htmlSerialize || !rnoshimcache.test( value ) ) &&
- ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
- !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
-
- value = value.replace( rxhtmlTag, "<$1></$2>" );
-
- try {
- for (; i < l; i++ ) {
- // Remove element nodes and prevent memory leaks
- elem = this[i] || {};
- if ( elem.nodeType === 1 ) {
- jQuery.cleanData( getAll( elem, false ) );
- elem.innerHTML = value;
- }
- }
-
- elem = 0;
-
- // If using innerHTML throws an exception, use the fallback method
- } catch(e) {}
- }
-
- if ( elem ) {
- this.empty().append( value );
- }
- }, null, value, arguments.length );
- },
-
- replaceWith: function( value ) {
- var isFunc = jQuery.isFunction( value );
-
- // Make sure that the elements are removed from the DOM before they are inserted
- // this can help fix replacing a parent with child elements
- if ( !isFunc && typeof value !== "string" ) {
- value = jQuery( value ).not( this ).detach();
- }
-
- return this.domManip( [ value ], true, function( elem ) {
- var next = this.nextSibling,
- parent = this.parentNode;
-
- if ( parent ) {
- jQuery( this ).remove();
- parent.insertBefore( elem, next );
- }
- });
- },
-
- detach: function( selector ) {
- return this.remove( selector, true );
- },
-
- domManip: function( args, table, callback ) {
-
- // Flatten any nested arrays
- args = core_concat.apply( [], args );
-
- var first, node, hasScripts,
- scripts, doc, fragment,
- i = 0,
- l = this.length,
- set = this,
- iNoClone = l - 1,
- value = args[0],
- isFunction = jQuery.isFunction( value );
-
- // We can't cloneNode fragments that contain checked, in WebKit
- if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {
- return this.each(function( index ) {
- var self = set.eq( index );
- if ( isFunction ) {
- args[0] = value.call( this, index, table ? self.html() : undefined );
- }
- self.domManip( args, table, callback );
- });
- }
-
- if ( l ) {
- fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
- first = fragment.firstChild;
-
- if ( fragment.childNodes.length === 1 ) {
- fragment = first;
- }
-
- if ( first ) {
- table = table && jQuery.nodeName( first, "tr" );
- scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
- hasScripts = scripts.length;
-
- // Use the original fragment for the last item instead of the first because it can end up
- // being emptied incorrectly in certain situations (#8070).
- for ( ; i < l; i++ ) {
- node = fragment;
-
- if ( i !== iNoClone ) {
- node = jQuery.clone( node, true, true );
-
- // Keep references to cloned scripts for later restoration
- if ( hasScripts ) {
- jQuery.merge( scripts, getAll( node, "script" ) );
- }
- }
-
- callback.call(
- table && jQuery.nodeName( this[i], "table" ) ?
- findOrAppend( this[i], "tbody" ) :
- this[i],
- node,
- i
- );
- }
-
- if ( hasScripts ) {
- doc = scripts[ scripts.length - 1 ].ownerDocument;
-
- // Reenable scripts
- jQuery.map( scripts, restoreScript );
-
- // Evaluate executable scripts on first document insertion
- for ( i = 0; i < hasScripts; i++ ) {
- node = scripts[ i ];
- if ( rscriptType.test( node.type || "" ) &&
- !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
-
- if ( node.src ) {
- // Hope ajax is available...
- jQuery.ajax({
- url: node.src,
- type: "GET",
- dataType: "script",
- async: false,
- global: false,
- "throws": true
- });
- } else {
- jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );
- }
- }
- }
- }
-
- // Fix #11809: Avoid leaking memory
- fragment = first = null;
- }
- }
-
- return this;
- }
-});
-
-function findOrAppend( elem, tag ) {
- return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) );
-}
-
-// Replace/restore the type attribute of script elements for safe DOM manipulation
-function disableScript( elem ) {
- var attr = elem.getAttributeNode("type");
- elem.type = ( attr && attr.specified ) + "/" + elem.type;
- return elem;
-}
-function restoreScript( elem ) {
- var match = rscriptTypeMasked.exec( elem.type );
- if ( match ) {
- elem.type = match[1];
- } else {
- elem.removeAttribute("type");
- }
- return elem;
-}
-
-// Mark scripts as having already been evaluated
-function setGlobalEval( elems, refElements ) {
- var elem,
- i = 0;
- for ( ; (elem = elems[i]) != null; i++ ) {
- jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );
- }
-}
-
-function cloneCopyEvent( src, dest ) {
-
- if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
- return;
- }
-
- var type, i, l,
- oldData = jQuery._data( src ),
- curData = jQuery._data( dest, oldData ),
- events = oldData.events;
-
- if ( events ) {
- delete curData.handle;
- curData.events = {};
-
- for ( type in events ) {
- for ( i = 0, l = events[ type ].length; i < l; i++ ) {
- jQuery.event.add( dest, type, events[ type ][ i ] );
- }
- }
- }
-
- // make the cloned public data object a copy from the original
- if ( curData.data ) {
- curData.data = jQuery.extend( {}, curData.data );
- }
-}
-
-function fixCloneNodeIssues( src, dest ) {
- var nodeName, e, data;
-
- // We do not need to do anything for non-Elements
- if ( dest.nodeType !== 1 ) {
- return;
- }
-
- nodeName = dest.nodeName.toLowerCase();
-
- // IE6-8 copies events bound via attachEvent when using cloneNode.
- if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {
- data = jQuery._data( dest );
-
- for ( e in data.events ) {
- jQuery.removeEvent( dest, e, data.handle );
- }
-
- // Event data gets referenced instead of copied if the expando gets copied too
- dest.removeAttribute( jQuery.expando );
- }
-
- // IE blanks contents when cloning scripts, and tries to evaluate newly-set text
- if ( nodeName === "script" && dest.text !== src.text ) {
- disableScript( dest ).text = src.text;
- restoreScript( dest );
-
- // IE6-10 improperly clones children of object elements using classid.
- // IE10 throws NoModificationAllowedError if parent is null, #12132.
- } else if ( nodeName === "object" ) {
- if ( dest.parentNode ) {
- dest.outerHTML = src.outerHTML;
- }
-
- // This path appears unavoidable for IE9. When cloning an object
- // element in IE9, the outerHTML strategy above is not sufficient.
- // If the src has innerHTML and the destination does not,
- // copy the src.innerHTML into the dest.innerHTML. #10324
- if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {
- dest.innerHTML = src.innerHTML;
- }
-
- } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) {
- // IE6-8 fails to persist the checked state of a cloned checkbox
- // or radio button. Worse, IE6-7 fail to give the cloned element
- // a checked appearance if the defaultChecked value isn't also set
-
- dest.defaultChecked = dest.checked = src.checked;
-
- // IE6-7 get confused and end up setting the value of a cloned
- // checkbox/radio button to an empty string instead of "on"
- if ( dest.value !== src.value ) {
- dest.value = src.value;
- }
-
- // IE6-8 fails to return the selected option to the default selected
- // state when cloning options
- } else if ( nodeName === "option" ) {
- dest.defaultSelected = dest.selected = src.defaultSelected;
-
- // IE6-8 fails to set the defaultValue to the correct value when
- // cloning other types of input fields
- } else if ( nodeName === "input" || nodeName === "textarea" ) {
- dest.defaultValue = src.defaultValue;
- }
-}
-
-jQuery.each({
- appendTo: "append",
- prependTo: "prepend",
- insertBefore: "before",
- insertAfter: "after",
- replaceAll: "replaceWith"
-}, function( name, original ) {
- jQuery.fn[ name ] = function( selector ) {
- var elems,
- i = 0,
- ret = [],
- insert = jQuery( selector ),
- last = insert.length - 1;
-
- for ( ; i <= last; i++ ) {
- elems = i === last ? this : this.clone(true);
- jQuery( insert[i] )[ original ]( elems );
-
- // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()
- core_push.apply( ret, elems.get() );
- }
-
- return this.pushStack( ret );
- };
-});
-
-function getAll( context, tag ) {
- var elems, elem,
- i = 0,
- found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) :
- typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) :
- undefined;
-
- if ( !found ) {
- for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {
- if ( !tag || jQuery.nodeName( elem, tag ) ) {
- found.push( elem );
- } else {
- jQuery.merge( found, getAll( elem, tag ) );
- }
- }
- }
-
- return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
- jQuery.merge( [ context ], found ) :
- found;
-}
-
-// Used in buildFragment, fixes the defaultChecked property
-function fixDefaultChecked( elem ) {
- if ( manipulation_rcheckableType.test( elem.type ) ) {
- elem.defaultChecked = elem.checked;
- }
-}
-
-jQuery.extend({
- clone: function( elem, dataAndEvents, deepDataAndEvents ) {
- var destElements, node, clone, i, srcElements,
- inPage = jQuery.contains( elem.ownerDocument, elem );
-
- if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
- clone = elem.cloneNode( true );
-
- // IE<=8 does not properly clone detached, unknown element nodes
- } else {
- fragmentDiv.innerHTML = elem.outerHTML;
- fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
- }
-
- if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
- (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
-
- // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
- destElements = getAll( clone );
- srcElements = getAll( elem );
-
- // Fix all IE cloning issues
- for ( i = 0; (node = srcElements[i]) != null; ++i ) {
- // Ensure that the destination node is not null; Fixes #9587
- if ( destElements[i] ) {
- fixCloneNodeIssues( node, destElements[i] );
- }
- }
- }
-
- // Copy the events from the original to the clone
- if ( dataAndEvents ) {
- if ( deepDataAndEvents ) {
- srcElements = srcElements || getAll( elem );
- destElements = destElements || getAll( clone );
-
- for ( i = 0; (node = srcElements[i]) != null; i++ ) {
- cloneCopyEvent( node, destElements[i] );
- }
- } else {
- cloneCopyEvent( elem, clone );
- }
- }
-
- // Preserve script evaluation history
- destElements = getAll( clone, "script" );
- if ( destElements.length > 0 ) {
- setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
- }
-
- destElements = srcElements = node = null;
-
- // Return the cloned set
- return clone;
- },
-
- buildFragment: function( elems, context, scripts, selection ) {
- var j, elem, contains,
- tmp, tag, tbody, wrap,
- l = elems.length,
-
- // Ensure a safe fragment
- safe = createSafeFragment( context ),
-
- nodes = [],
- i = 0;
-
- for ( ; i < l; i++ ) {
- elem = elems[ i ];
-
- if ( elem || elem === 0 ) {
-
- // Add nodes directly
- if ( jQuery.type( elem ) === "object" ) {
- jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
-
- // Convert non-html into a text node
- } else if ( !rhtml.test( elem ) ) {
- nodes.push( context.createTextNode( elem ) );
-
- // Convert html into DOM nodes
- } else {
- tmp = tmp || safe.appendChild( context.createElement("div") );
-
- // Deserialize a standard representation
- tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
- wrap = wrapMap[ tag ] || wrapMap._default;
-
- tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];
-
- // Descend through wrappers to the right content
- j = wrap[0];
- while ( j-- ) {
- tmp = tmp.lastChild;
- }
-
- // Manually add leading whitespace removed by IE
- if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
- nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );
- }
-
- // Remove IE's autoinserted <tbody> from table fragments
- if ( !jQuery.support.tbody ) {
-
- // String was a <table>, *may* have spurious <tbody>
- elem = tag === "table" && !rtbody.test( elem ) ?
- tmp.firstChild :
-
- // String was a bare <thead> or <tfoot>
- wrap[1] === "<table>" && !rtbody.test( elem ) ?
- tmp :
- 0;
-
- j = elem && elem.childNodes.length;
- while ( j-- ) {
- if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {
- elem.removeChild( tbody );
- }
- }
- }
-
- jQuery.merge( nodes, tmp.childNodes );
-
- // Fix #12392 for WebKit and IE > 9
- tmp.textContent = "";
-
- // Fix #12392 for oldIE
- while ( tmp.firstChild ) {
- tmp.removeChild( tmp.firstChild );
- }
-
- // Remember the top-level container for proper cleanup
- tmp = safe.lastChild;
- }
- }
- }
-
- // Fix #11356: Clear elements from fragment
- if ( tmp ) {
- safe.removeChild( tmp );
- }
-
- // Reset defaultChecked for any radios and checkboxes
- // about to be appended to the DOM in IE 6/7 (#8060)
- if ( !jQuery.support.appendChecked ) {
- jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );
- }
-
- i = 0;
- while ( (elem = nodes[ i++ ]) ) {
-
- // #4087 - If origin and destination elements are the same, and this is
- // that element, do not do anything
- if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
- continue;
- }
-
- contains = jQuery.contains( elem.ownerDocument, elem );
-
- // Append to fragment
- tmp = getAll( safe.appendChild( elem ), "script" );
-
- // Preserve script evaluation history
- if ( contains ) {
- setGlobalEval( tmp );
- }
-
- // Capture executables
- if ( scripts ) {
- j = 0;
- while ( (elem = tmp[ j++ ]) ) {
- if ( rscriptType.test( elem.type || "" ) ) {
- scripts.push( elem );
- }
- }
- }
- }
-
- tmp = null;
-
- return safe;
- },
-
- cleanData: function( elems, /* internal */ acceptData ) {
- var elem, type, id, data,
- i = 0,
- internalKey = jQuery.expando,
- cache = jQuery.cache,
- deleteExpando = jQuery.support.deleteExpando,
- special = jQuery.event.special;
-
- for ( ; (elem = elems[i]) != null; i++ ) {
-
- if ( acceptData || jQuery.acceptData( elem ) ) {
-
- id = elem[ internalKey ];
- data = id && cache[ id ];
-
- if ( data ) {
- if ( data.events ) {
- for ( type in data.events ) {
- if ( special[ type ] ) {
- jQuery.event.remove( elem, type );
-
- // This is a shortcut to avoid jQuery.event.remove's overhead
- } else {
- jQuery.removeEvent( elem, type, data.handle );
- }
- }
- }
-
- // Remove cache only if it was not already removed by jQuery.event.remove
- if ( cache[ id ] ) {
-
- delete cache[ id ];
-
- // IE does not allow us to delete expando properties from nodes,
- // nor does it have a removeAttribute function on Document nodes;
- // we must handle all of these cases
- if ( deleteExpando ) {
- delete elem[ internalKey ];
-
- } else if ( typeof elem.removeAttribute !== core_strundefined ) {
- elem.removeAttribute( internalKey );
-
- } else {
- elem[ internalKey ] = null;
- }
-
- core_deletedIds.push( id );
- }
- }
- }
- }
- }
-});
-var iframe, getStyles, curCSS,
- ralpha = /alpha\([^)]*\)/i,
- ropacity = /opacity\s*=\s*([^)]*)/,
- rposition = /^(top|right|bottom|left)$/,
- // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
- // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
- rdisplayswap = /^(none|table(?!-c[ea]).+)/,
- rmargin = /^margin/,
- rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),
- rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),
- rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ),
- elemdisplay = { BODY: "block" },
-
- cssShow = { position: "absolute", visibility: "hidden", display: "block" },
- cssNormalTransform = {
- letterSpacing: 0,
- fontWeight: 400
- },
-
- cssExpand = [ "Top", "Right", "Bottom", "Left" ],
- cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
-
-// return a css property mapped to a potentially vendor prefixed property
-function vendorPropName( style, name ) {
-
- // shortcut for names that are not vendor prefixed
- if ( name in style ) {
- return name;
- }
-
- // check for vendor prefixed names
- var capName = name.charAt(0).toUpperCase() + name.slice(1),
- origName = name,
- i = cssPrefixes.length;
-
- while ( i-- ) {
- name = cssPrefixes[ i ] + capName;
- if ( name in style ) {
- return name;
- }
- }
-
- return origName;
-}
-
-function isHidden( elem, el ) {
- // isHidden might be called from jQuery#filter function;
- // in that case, element will be second argument
- elem = el || elem;
- return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
-}
-
-function showHide( elements, show ) {
- var display, elem, hidden,
- values = [],
- index = 0,
- length = elements.length;
-
- for ( ; index < length; index++ ) {
- elem = elements[ index ];
- if ( !elem.style ) {
- continue;
- }
-
- values[ index ] = jQuery._data( elem, "olddisplay" );
- display = elem.style.display;
- if ( show ) {
- // Reset the inline display of this element to learn if it is
- // being hidden by cascaded rules or not
- if ( !values[ index ] && display === "none" ) {
- elem.style.display = "";
- }
-
- // Set elements which have been overridden with display: none
- // in a stylesheet to whatever the default browser style is
- // for such an element
- if ( elem.style.display === "" && isHidden( elem ) ) {
- values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
- }
- } else {
-
- if ( !values[ index ] ) {
- hidden = isHidden( elem );
-
- if ( display && display !== "none" || !hidden ) {
- jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
- }
- }
- }
- }
-
- // Set the display of most of the elements in a second loop
- // to avoid the constant reflow
- for ( index = 0; index < length; index++ ) {
- elem = elements[ index ];
- if ( !elem.style ) {
- continue;
- }
- if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
- elem.style.display = show ? values[ index ] || "" : "none";
- }
- }
-
- return elements;
-}
-
-jQuery.fn.extend({
- css: function( name, value ) {
- return jQuery.access( this, function( elem, name, value ) {
- var len, styles,
- map = {},
- i = 0;
-
- if ( jQuery.isArray( name ) ) {
- styles = getStyles( elem );
- len = name.length;
-
- for ( ; i < len; i++ ) {
- map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
- }
-
- return map;
- }
-
- return value !== undefined ?
- jQuery.style( elem, name, value ) :
- jQuery.css( elem, name );
- }, name, value, arguments.length > 1 );
- },
- show: function() {
- return showHide( this, true );
- },
- hide: function() {
- return showHide( this );
- },
- toggle: function( state ) {
- var bool = typeof state === "boolean";
-
- return this.each(function() {
- if ( bool ? state : isHidden( this ) ) {
- jQuery( this ).show();
- } else {
- jQuery( this ).hide();
- }
- });
- }
-});
-
-jQuery.extend({
- // Add in style property hooks for overriding the default
- // behavior of getting and setting a style property
- cssHooks: {
- opacity: {
- get: function( elem, computed ) {
- if ( computed ) {
- // We should always get a number back from opacity
- var ret = curCSS( elem, "opacity" );
- return ret === "" ? "1" : ret;
- }
- }
- }
- },
-
- // Exclude the following css properties to add px
- cssNumber: {
- "columnCount": true,
- "fillOpacity": true,
- "fontWeight": true,
- "lineHeight": true,
- "opacity": true,
- "orphans": true,
- "widows": true,
- "zIndex": true,
- "zoom": true
- },
-
- // Add in properties whose names you wish to fix before
- // setting or getting the value
- cssProps: {
- // normalize float css property
- "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
- },
-
- // Get and set the style property on a DOM Node
- style: function( elem, name, value, extra ) {
- // Don't set styles on text and comment nodes
- if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
- return;
- }
-
- // Make sure that we're working with the right name
- var ret, type, hooks,
- origName = jQuery.camelCase( name ),
- style = elem.style;
-
- name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
-
- // gets hook for the prefixed version
- // followed by the unprefixed version
- hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
- // Check if we're setting a value
- if ( value !== undefined ) {
- type = typeof value;
-
- // convert relative number strings (+= or -=) to relative numbers. #7345
- if ( type === "string" && (ret = rrelNum.exec( value )) ) {
- value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
- // Fixes bug #9237
- type = "number";
- }
-
- // Make sure that NaN and null values aren't set. See: #7116
- if ( value == null || type === "number" && isNaN( value ) ) {
- return;
- }
-
- // If a number was passed in, add 'px' to the (except for certain CSS properties)
- if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
- value += "px";
- }
-
- // Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
- // but it would mean to define eight (for every problematic property) identical functions
- if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
- style[ name ] = "inherit";
- }
-
- // If a hook was provided, use that value, otherwise just set the specified value
- if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
-
- // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
- // Fixes bug #5509
- try {
- style[ name ] = value;
- } catch(e) {}
- }
-
- } else {
- // If a hook was provided get the non-computed value from there
- if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
- return ret;
- }
-
- // Otherwise just get the value from the style object
- return style[ name ];
- }
- },
-
- css: function( elem, name, extra, styles ) {
- var num, val, hooks,
- origName = jQuery.camelCase( name );
-
- // Make sure that we're working with the right name
- name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
-
- // gets hook for the prefixed version
- // followed by the unprefixed version
- hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
- // If a hook was provided get the computed value from there
- if ( hooks && "get" in hooks ) {
- val = hooks.get( elem, true, extra );
- }
-
- // Otherwise, if a way to get the computed value exists, use that
- if ( val === undefined ) {
- val = curCSS( elem, name, styles );
- }
-
- //convert "normal" to computed value
- if ( val === "normal" && name in cssNormalTransform ) {
- val = cssNormalTransform[ name ];
- }
-
- // Return, converting to number if forced or a qualifier was provided and val looks numeric
- if ( extra === "" || extra ) {
- num = parseFloat( val );
- return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
- }
- return val;
- },
-
- // A method for quickly swapping in/out CSS properties to get correct calculations
- swap: function( elem, options, callback, args ) {
- var ret, name,
- old = {};
-
- // Remember the old values, and insert the new ones
- for ( name in options ) {
- old[ name ] = elem.style[ name ];
- elem.style[ name ] = options[ name ];
- }
-
- ret = callback.apply( elem, args || [] );
-
- // Revert the old values
- for ( name in options ) {
- elem.style[ name ] = old[ name ];
- }
-
- return ret;
- }
-});
-
-// NOTE: we've included the "window" in window.getComputedStyle
-// because jsdom on node.js will break without it.
-if ( window.getComputedStyle ) {
- getStyles = function( elem ) {
- return window.getComputedStyle( elem, null );
- };
-
- curCSS = function( elem, name, _computed ) {
- var width, minWidth, maxWidth,
- computed = _computed || getStyles( elem ),
-
- // getPropertyValue is only needed for .css('filter') in IE9, see #12537
- ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,
- style = elem.style;
-
- if ( computed ) {
-
- if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
- ret = jQuery.style( elem, name );
- }
-
- // A tribute to the "awesome hack by Dean Edwards"
- // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
- // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
- // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
- if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
-
- // Remember the original values
- width = style.width;
- minWidth = style.minWidth;
- maxWidth = style.maxWidth;
-
- // Put in the new values to get a computed value out
- style.minWidth = style.maxWidth = style.width = ret;
- ret = computed.width;
-
- // Revert the changed values
- style.width = width;
- style.minWidth = minWidth;
- style.maxWidth = maxWidth;
- }
- }
-
- return ret;
- };
-} else if ( document.documentElement.currentStyle ) {
- getStyles = function( elem ) {
- return elem.currentStyle;
- };
-
- curCSS = function( elem, name, _computed ) {
- var left, rs, rsLeft,
- computed = _computed || getStyles( elem ),
- ret = computed ? computed[ name ] : undefined,
- style = elem.style;
-
- // Avoid setting ret to empty string here
- // so we don't default to auto
- if ( ret == null && style && style[ name ] ) {
- ret = style[ name ];
- }
-
- // From the awesome hack by Dean Edwards
- // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
-
- // If we're not dealing with a regular pixel number
- // but a number that has a weird ending, we need to convert it to pixels
- // but not position css attributes, as those are proportional to the parent element instead
- // and we can't measure the parent instead because it might trigger a "stacking dolls" problem
- if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
-
- // Remember the original values
- left = style.left;
- rs = elem.runtimeStyle;
- rsLeft = rs && rs.left;
-
- // Put in the new values to get a computed value out
- if ( rsLeft ) {
- rs.left = elem.currentStyle.left;
- }
- style.left = name === "fontSize" ? "1em" : ret;
- ret = style.pixelLeft + "px";
-
- // Revert the changed values
- style.left = left;
- if ( rsLeft ) {
- rs.left = rsLeft;
- }
- }
-
- return ret === "" ? "auto" : ret;
- };
-}
-
-function setPositiveNumber( elem, value, subtract ) {
- var matches = rnumsplit.exec( value );
- return matches ?
- // Guard against undefined "subtract", e.g., when used as in cssHooks
- Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
- value;
-}
-
-function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
- var i = extra === ( isBorderBox ? "border" : "content" ) ?
- // If we already have the right measurement, avoid augmentation
- 4 :
- // Otherwise initialize for horizontal or vertical properties
- name === "width" ? 1 : 0,
-
- val = 0;
-
- for ( ; i < 4; i += 2 ) {
- // both box models exclude margin, so add it if we want it
- if ( extra === "margin" ) {
- val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
- }
-
- if ( isBorderBox ) {
- // border-box includes padding, so remove it if we want content
- if ( extra === "content" ) {
- val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
- }
-
- // at this point, extra isn't border nor margin, so remove border
- if ( extra !== "margin" ) {
- val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
- }
- } else {
- // at this point, extra isn't content, so add padding
- val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
-
- // at this point, extra isn't content nor padding, so add border
- if ( extra !== "padding" ) {
- val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
- }
- }
- }
-
- return val;
-}
-
-function getWidthOrHeight( elem, name, extra ) {
-
- // Start with offset property, which is equivalent to the border-box value
- var valueIsBorderBox = true,
- val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
- styles = getStyles( elem ),
- isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
-
- // some non-html elements return undefined for offsetWidth, so check for null/undefined
- // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
- // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
- if ( val <= 0 || val == null ) {
- // Fall back to computed then uncomputed css if necessary
- val = curCSS( elem, name, styles );
- if ( val < 0 || val == null ) {
- val = elem.style[ name ];
- }
-
- // Computed unit is not pixels. Stop here and return.
- if ( rnumnonpx.test(val) ) {
- return val;
- }
-
- // we need the check for style in case a browser which returns unreliable values
- // for getComputedStyle silently falls back to the reliable elem.style
- valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );
-
- // Normalize "", auto, and prepare for extra
- val = parseFloat( val ) || 0;
- }
-
- // use the active box-sizing model to add/subtract irrelevant styles
- return ( val +
- augmentWidthOrHeight(
- elem,
- name,
- extra || ( isBorderBox ? "border" : "content" ),
- valueIsBorderBox,
- styles
- )
- ) + "px";
-}
-
-// Try to determine the default display value of an element
-function css_defaultDisplay( nodeName ) {
- var doc = document,
- display = elemdisplay[ nodeName ];
-
- if ( !display ) {
- display = actualDisplay( nodeName, doc );
-
- // If the simple way fails, read from inside an iframe
- if ( display === "none" || !display ) {
- // Use the already-created iframe if possible
- iframe = ( iframe ||
- jQuery("<iframe frameborder='0' width='0' height='0'/>")
- .css( "cssText", "display:block !important" )
- ).appendTo( doc.documentElement );
-
- // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
- doc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document;
- doc.write("<!doctype html><html><body>");
- doc.close();
-
- display = actualDisplay( nodeName, doc );
- iframe.detach();
- }
-
- // Store the correct default display
- elemdisplay[ nodeName ] = display;
- }
-
- return display;
-}
-
-// Called ONLY from within css_defaultDisplay
-function actualDisplay( name, doc ) {
- var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
- display = jQuery.css( elem[0], "display" );
- elem.remove();
- return display;
-}
-
-jQuery.each([ "height", "width" ], function( i, name ) {
- jQuery.cssHooks[ name ] = {
- get: function( elem, computed, extra ) {
- if ( computed ) {
- // certain elements can have dimension info if we invisibly show them
- // however, it must have a current display style that would benefit from this
- return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
- jQuery.swap( elem, cssShow, function() {
- return getWidthOrHeight( elem, name, extra );
- }) :
- getWidthOrHeight( elem, name, extra );
- }
- },
-
- set: function( elem, value, extra ) {
- var styles = extra && getStyles( elem );
- return setPositiveNumber( elem, value, extra ?
- augmentWidthOrHeight(
- elem,
- name,
- extra,
- jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
- styles
- ) : 0
- );
- }
- };
-});
-
-if ( !jQuery.support.opacity ) {
- jQuery.cssHooks.opacity = {
- get: function( elem, computed ) {
- // IE uses filters for opacity
- return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
- ( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
- computed ? "1" : "";
- },
-
- set: function( elem, value ) {
- var style = elem.style,
- currentStyle = elem.currentStyle,
- opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
- filter = currentStyle && currentStyle.filter || style.filter || "";
-
- // IE has trouble with opacity if it does not have layout
- // Force it by setting the zoom level
- style.zoom = 1;
-
- // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
- // if value === "", then remove inline opacity #12685
- if ( ( value >= 1 || value === "" ) &&
- jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
- style.removeAttribute ) {
-
- // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
- // if "filter:" is present at all, clearType is disabled, we want to avoid this
- // style.removeAttribute is IE Only, but so apparently is this code path...
- style.removeAttribute( "filter" );
-
- // if there is no filter style applied in a css rule or unset inline opacity, we are done
- if ( value === "" || currentStyle && !currentStyle.filter ) {
- return;
- }
- }
-
- // otherwise, set new filter values
- style.filter = ralpha.test( filter ) ?
- filter.replace( ralpha, opacity ) :
- filter + " " + opacity;
- }
- };
-}
-
-// These hooks cannot be added until DOM ready because the support test
-// for it is not run until after DOM ready
-jQuery(function() {
- if ( !jQuery.support.reliableMarginRight ) {
- jQuery.cssHooks.marginRight = {
- get: function( elem, computed ) {
- if ( computed ) {
- // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
- // Work around by temporarily setting element display to inline-block
- return jQuery.swap( elem, { "display": "inline-block" },
- curCSS, [ elem, "marginRight" ] );
- }
- }
- };
- }
-
- // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
- // getComputedStyle returns percent when specified for top/left/bottom/right
- // rather than make the css module depend on the offset module, we just check for it here
- if ( !jQuery.support.pixelPosition && jQuery.fn.position ) {
- jQuery.each( [ "top", "left" ], function( i, prop ) {
- jQuery.cssHooks[ prop ] = {
- get: function( elem, computed ) {
- if ( computed ) {
- computed = curCSS( elem, prop );
- // if curCSS returns percentage, fallback to offset
- return rnumnonpx.test( computed ) ?
- jQuery( elem ).position()[ prop ] + "px" :
- computed;
- }
- }
- };
- });
- }
-
-});
-
-if ( jQuery.expr && jQuery.expr.filters ) {
- jQuery.expr.filters.hidden = function( elem ) {
- // Support: Opera <= 12.12
- // Opera reports offsetWidths and offsetHeights less than zero on some elements
- return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||
- (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
- };
-
- jQuery.expr.filters.visible = function( elem ) {
- return !jQuery.expr.filters.hidden( elem );
- };
-}
-
-// These hooks are used by animate to expand properties
-jQuery.each({
- margin: "",
- padding: "",
- border: "Width"
-}, function( prefix, suffix ) {
- jQuery.cssHooks[ prefix + suffix ] = {
- expand: function( value ) {
- var i = 0,
- expanded = {},
-
- // assumes a single number if not a string
- parts = typeof value === "string" ? value.split(" ") : [ value ];
-
- for ( ; i < 4; i++ ) {
- expanded[ prefix + cssExpand[ i ] + suffix ] =
- parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
- }
-
- return expanded;
- }
- };
-
- if ( !rmargin.test( prefix ) ) {
- jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
- }
-});
-var r20 = /%20/g,
- rbracket = /\[\]$/,
- rCRLF = /\r?\n/g,
- rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
- rsubmittable = /^(?:input|select|textarea|keygen)/i;
-
-jQuery.fn.extend({
- serialize: function() {
- return jQuery.param( this.serializeArray() );
- },
- serializeArray: function() {
- return this.map(function(){
- // Can add propHook for "elements" to filter or add form elements
- var elements = jQuery.prop( this, "elements" );
- return elements ? jQuery.makeArray( elements ) : this;
- })
- .filter(function(){
- var type = this.type;
- // Use .is(":disabled") so that fieldset[disabled] works
- return this.name && !jQuery( this ).is( ":disabled" ) &&
- rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
- ( this.checked || !manipulation_rcheckableType.test( type ) );
- })
- .map(function( i, elem ){
- var val = jQuery( this ).val();
-
- return val == null ?
- null :
- jQuery.isArray( val ) ?
- jQuery.map( val, function( val ){
- return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
- }) :
- { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
- }).get();
- }
-});
-
-//Serialize an array of form elements or a set of
-//key/values into a query string
-jQuery.param = function( a, traditional ) {
- var prefix,
- s = [],
- add = function( key, value ) {
- // If value is a function, invoke it and return its value
- value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
- s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
- };
-
- // Set traditional to true for jQuery <= 1.3.2 behavior.
- if ( traditional === undefined ) {
- traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
- }
-
- // If an array was passed in, assume that it is an array of form elements.
- if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
- // Serialize the form elements
- jQuery.each( a, function() {
- add( this.name, this.value );
- });
-
- } else {
- // If traditional, encode the "old" way (the way 1.3.2 or older
- // did it), otherwise encode params recursively.
- for ( prefix in a ) {
- buildParams( prefix, a[ prefix ], traditional, add );
- }
- }
-
- // Return the resulting serialization
- return s.join( "&" ).replace( r20, "+" );
-};
-
-function buildParams( prefix, obj, traditional, add ) {
- var name;
-
- if ( jQuery.isArray( obj ) ) {
- // Serialize array item.
- jQuery.each( obj, function( i, v ) {
- if ( traditional || rbracket.test( prefix ) ) {
- // Treat each array item as a scalar.
- add( prefix, v );
-
- } else {
- // Item is non-scalar (array or object), encode its numeric index.
- buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
- }
- });
-
- } else if ( !traditional && jQuery.type( obj ) === "object" ) {
- // Serialize object item.
- for ( name in obj ) {
- buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
- }
-
- } else {
- // Serialize scalar item.
- add( prefix, obj );
- }
-}
-jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
- "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
- "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
-
- // Handle event binding
- jQuery.fn[ name ] = function( data, fn ) {
- return arguments.length > 0 ?
- this.on( name, null, data, fn ) :
- this.trigger( name );
- };
-});
-
-jQuery.fn.hover = function( fnOver, fnOut ) {
- return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
-};
-var
- // Document location
- ajaxLocParts,
- ajaxLocation,
- ajax_nonce = jQuery.now(),
-
- ajax_rquery = /\?/,
- rhash = /#.*$/,
- rts = /([?&])_=[^&]*/,
- rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
- // #7653, #8125, #8152: local protocol detection
- rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
- rnoContent = /^(?:GET|HEAD)$/,
- rprotocol = /^\/\//,
- rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
-
- // Keep a copy of the old load method
- _load = jQuery.fn.load,
-
- /* Prefilters
- * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
- * 2) These are called:
- * - BEFORE asking for a transport
- * - AFTER param serialization (s.data is a string if s.processData is true)
- * 3) key is the dataType
- * 4) the catchall symbol "*" can be used
- * 5) execution will start with transport dataType and THEN continue down to "*" if needed
- */
- prefilters = {},
-
- /* Transports bindings
- * 1) key is the dataType
- * 2) the catchall symbol "*" can be used
- * 3) selection will start with transport dataType and THEN go to "*" if needed
- */
- transports = {},
-
- // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
- allTypes = "*/".concat("*");
-
-// #8138, IE may throw an exception when accessing
-// a field from window.location if document.domain has been set
-try {
- ajaxLocation = location.href;
-} catch( e ) {
- // Use the href attribute of an A element
- // since IE will modify it given document.location
- ajaxLocation = document.createElement( "a" );
- ajaxLocation.href = "";
- ajaxLocation = ajaxLocation.href;
-}
-
-// Segment location into parts
-ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
-
-// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
-function addToPrefiltersOrTransports( structure ) {
-
- // dataTypeExpression is optional and defaults to "*"
- return function( dataTypeExpression, func ) {
-
- if ( typeof dataTypeExpression !== "string" ) {
- func = dataTypeExpression;
- dataTypeExpression = "*";
- }
-
- var dataType,
- i = 0,
- dataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || [];
-
- if ( jQuery.isFunction( func ) ) {
- // For each dataType in the dataTypeExpression
- while ( (dataType = dataTypes[i++]) ) {
- // Prepend if requested
- if ( dataType[0] === "+" ) {
- dataType = dataType.slice( 1 ) || "*";
- (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
-
- // Otherwise append
- } else {
- (structure[ dataType ] = structure[ dataType ] || []).push( func );
- }
- }
- }
- };
-}
-
-// Base inspection function for prefilters and transports
-function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
-
- var inspected = {},
- seekingTransport = ( structure === transports );
-
- function inspect( dataType ) {
- var selected;
- inspected[ dataType ] = true;
- jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
- var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
- if( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
- options.dataTypes.unshift( dataTypeOrTransport );
- inspect( dataTypeOrTransport );
- return false;
- } else if ( seekingTransport ) {
- return !( selected = dataTypeOrTransport );
- }
- });
- return selected;
- }
-
- return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
-}
-
-// A special extend for ajax options
-// that takes "flat" options (not to be deep extended)
-// Fixes #9887
-function ajaxExtend( target, src ) {
- var deep, key,
- flatOptions = jQuery.ajaxSettings.flatOptions || {};
-
- for ( key in src ) {
- if ( src[ key ] !== undefined ) {
- ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
- }
- }
- if ( deep ) {
- jQuery.extend( true, target, deep );
- }
-
- return target;
-}
-
-jQuery.fn.load = function( url, params, callback ) {
- if ( typeof url !== "string" && _load ) {
- return _load.apply( this, arguments );
- }
-
- var selector, response, type,
- self = this,
- off = url.indexOf(" ");
-
- if ( off >= 0 ) {
- selector = url.slice( off, url.length );
- url = url.slice( 0, off );
- }
-
- // If it's a function
- if ( jQuery.isFunction( params ) ) {
-
- // We assume that it's the callback
- callback = params;
- params = undefined;
-
- // Otherwise, build a param string
- } else if ( params && typeof params === "object" ) {
- type = "POST";
- }
-
- // If we have elements to modify, make the request
- if ( self.length > 0 ) {
- jQuery.ajax({
- url: url,
-
- // if "type" variable is undefined, then "GET" method will be used
- type: type,
- dataType: "html",
- data: params
- }).done(function( responseText ) {
-
- // Save response for use in complete callback
- response = arguments;
-
- self.html( selector ?
-
- // If a selector was specified, locate the right elements in a dummy div
- // Exclude scripts to avoid IE 'Permission Denied' errors
- jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
-
- // Otherwise use the full result
- responseText );
-
- }).complete( callback && function( jqXHR, status ) {
- self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
- });
- }
-
- return this;
-};
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ){
- jQuery.fn[ type ] = function( fn ){
- return this.on( type, fn );
- };
-});
-
-jQuery.each( [ "get", "post" ], function( i, method ) {
- jQuery[ method ] = function( url, data, callback, type ) {
- // shift arguments if data argument was omitted
- if ( jQuery.isFunction( data ) ) {
- type = type || callback;
- callback = data;
- data = undefined;
- }
-
- return jQuery.ajax({
- url: url,
- type: method,
- dataType: type,
- data: data,
- success: callback
- });
- };
-});
-
-jQuery.extend({
-
- // Counter for holding the number of active queries
- active: 0,
-
- // Last-Modified header cache for next request
- lastModified: {},
- etag: {},
-
- ajaxSettings: {
- url: ajaxLocation,
- type: "GET",
- isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
- global: true,
- processData: true,
- async: true,
- contentType: "application/x-www-form-urlencoded; charset=UTF-8",
- /*
- timeout: 0,
- data: null,
- dataType: null,
- username: null,
- password: null,
- cache: null,
- throws: false,
- traditional: false,
- headers: {},
- */
-
- accepts: {
- "*": allTypes,
- text: "text/plain",
- html: "text/html",
- xml: "application/xml, text/xml",
- json: "application/json, text/javascript"
- },
-
- contents: {
- xml: /xml/,
- html: /html/,
- json: /json/
- },
-
- responseFields: {
- xml: "responseXML",
- text: "responseText"
- },
-
- // Data converters
- // Keys separate source (or catchall "*") and destination types with a single space
- converters: {
-
- // Convert anything to text
- "* text": window.String,
-
- // Text to html (true = no transformation)
- "text html": true,
-
- // Evaluate text as a json expression
- "text json": jQuery.parseJSON,
-
- // Parse text as xml
- "text xml": jQuery.parseXML
- },
-
- // For options that shouldn't be deep extended:
- // you can add your own custom options here if
- // and when you create one that shouldn't be
- // deep extended (see ajaxExtend)
- flatOptions: {
- url: true,
- context: true
- }
- },
-
- // Creates a full fledged settings object into target
- // with both ajaxSettings and settings fields.
- // If target is omitted, writes into ajaxSettings.
- ajaxSetup: function( target, settings ) {
- return settings ?
-
- // Building a settings object
- ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
-
- // Extending ajaxSettings
- ajaxExtend( jQuery.ajaxSettings, target );
- },
-
- ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
- ajaxTransport: addToPrefiltersOrTransports( transports ),
-
- // Main method
- ajax: function( url, options ) {
-
- // If url is an object, simulate pre-1.5 signature
- if ( typeof url === "object" ) {
- options = url;
- url = undefined;
- }
-
- // Force options to be an object
- options = options || {};
-
- var // Cross-domain detection vars
- parts,
- // Loop variable
- i,
- // URL without anti-cache param
- cacheURL,
- // Response headers as string
- responseHeadersString,
- // timeout handle
- timeoutTimer,
-
- // To know if global events are to be dispatched
- fireGlobals,
-
- transport,
- // Response headers
- responseHeaders,
- // Create the final options object
- s = jQuery.ajaxSetup( {}, options ),
- // Callbacks context
- callbackContext = s.context || s,
- // Context for global events is callbackContext if it is a DOM node or jQuery collection
- globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
- jQuery( callbackContext ) :
- jQuery.event,
- // Deferreds
- deferred = jQuery.Deferred(),
- completeDeferred = jQuery.Callbacks("once memory"),
- // Status-dependent callbacks
- statusCode = s.statusCode || {},
- // Headers (they are sent all at once)
- requestHeaders = {},
- requestHeadersNames = {},
- // The jqXHR state
- state = 0,
- // Default abort message
- strAbort = "canceled",
- // Fake xhr
- jqXHR = {
- readyState: 0,
-
- // Builds headers hashtable if needed
- getResponseHeader: function( key ) {
- var match;
- if ( state === 2 ) {
- if ( !responseHeaders ) {
- responseHeaders = {};
- while ( (match = rheaders.exec( responseHeadersString )) ) {
- responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
- }
- }
- match = responseHeaders[ key.toLowerCase() ];
- }
- return match == null ? null : match;
- },
-
- // Raw string
- getAllResponseHeaders: function() {
- return state === 2 ? responseHeadersString : null;
- },
-
- // Caches the header
- setRequestHeader: function( name, value ) {
- var lname = name.toLowerCase();
- if ( !state ) {
- name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
- requestHeaders[ name ] = value;
- }
- return this;
- },
-
- // Overrides response content-type header
- overrideMimeType: function( type ) {
- if ( !state ) {
- s.mimeType = type;
- }
- return this;
- },
-
- // Status-dependent callbacks
- statusCode: function( map ) {
- var code;
- if ( map ) {
- if ( state < 2 ) {
- for ( code in map ) {
- // Lazy-add the new callback in a way that preserves old ones
- statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
- }
- } else {
- // Execute the appropriate callbacks
- jqXHR.always( map[ jqXHR.status ] );
- }
- }
- return this;
- },
-
- // Cancel the request
- abort: function( statusText ) {
- var finalText = statusText || strAbort;
- if ( transport ) {
- transport.abort( finalText );
- }
- done( 0, finalText );
- return this;
- }
- };
-
- // Attach deferreds
- deferred.promise( jqXHR ).complete = completeDeferred.add;
- jqXHR.success = jqXHR.done;
- jqXHR.error = jqXHR.fail;
-
- // Remove hash character (#7531: and string promotion)
- // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
- // Handle falsy url in the settings object (#10093: consistency with old signature)
- // We also use the url parameter if available
- s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
-
- // Alias method option to type as per ticket #12004
- s.type = options.method || options.type || s.method || s.type;
-
- // Extract dataTypes list
- s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( core_rnotwhite ) || [""];
-
- // A cross-domain request is in order when we have a protocol:host:port mismatch
- if ( s.crossDomain == null ) {
- parts = rurl.exec( s.url.toLowerCase() );
- s.crossDomain = !!( parts &&
- ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
- ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
- ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
- );
- }
-
- // Convert data if not already a string
- if ( s.data && s.processData && typeof s.data !== "string" ) {
- s.data = jQuery.param( s.data, s.traditional );
- }
-
- // Apply prefilters
- inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
-
- // If request was aborted inside a prefilter, stop there
- if ( state === 2 ) {
- return jqXHR;
- }
-
- // We can fire global events as of now if asked to
- fireGlobals = s.global;
-
- // Watch for a new set of requests
- if ( fireGlobals && jQuery.active++ === 0 ) {
- jQuery.event.trigger("ajaxStart");
- }
-
- // Uppercase the type
- s.type = s.type.toUpperCase();
-
- // Determine if request has content
- s.hasContent = !rnoContent.test( s.type );
-
- // Save the URL in case we're toying with the If-Modified-Since
- // and/or If-None-Match header later on
- cacheURL = s.url;
-
- // More options handling for requests with no content
- if ( !s.hasContent ) {
-
- // If data is available, append data to url
- if ( s.data ) {
- cacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
- // #9682: remove data so that it's not used in an eventual retry
- delete s.data;
- }
-
- // Add anti-cache in url if needed
- if ( s.cache === false ) {
- s.url = rts.test( cacheURL ) ?
-
- // If there is already a '_' parameter, set its value
- cacheURL.replace( rts, "$1_=" + ajax_nonce++ ) :
-
- // Otherwise add one to the end
- cacheURL + ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ajax_nonce++;
- }
- }
-
- // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
- if ( s.ifModified ) {
- if ( jQuery.lastModified[ cacheURL ] ) {
- jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
- }
- if ( jQuery.etag[ cacheURL ] ) {
- jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
- }
- }
-
- // Set the correct header, if data is being sent
- if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
- jqXHR.setRequestHeader( "Content-Type", s.contentType );
- }
-
- // Set the Accepts header for the server, depending on the dataType
- jqXHR.setRequestHeader(
- "Accept",
- s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
- s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
- s.accepts[ "*" ]
- );
-
- // Check for headers option
- for ( i in s.headers ) {
- jqXHR.setRequestHeader( i, s.headers[ i ] );
- }
-
- // Allow custom headers/mimetypes and early abort
- if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
- // Abort if not done already and return
- return jqXHR.abort();
- }
-
- // aborting is no longer a cancellation
- strAbort = "abort";
-
- // Install callbacks on deferreds
- for ( i in { success: 1, error: 1, complete: 1 } ) {
- jqXHR[ i ]( s[ i ] );
- }
-
- // Get transport
- transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
-
- // If no transport, we auto-abort
- if ( !transport ) {
- done( -1, "No Transport" );
- } else {
- jqXHR.readyState = 1;
-
- // Send global event
- if ( fireGlobals ) {
- globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
- }
- // Timeout
- if ( s.async && s.timeout > 0 ) {
- timeoutTimer = setTimeout(function() {
- jqXHR.abort("timeout");
- }, s.timeout );
- }
-
- try {
- state = 1;
- transport.send( requestHeaders, done );
- } catch ( e ) {
- // Propagate exception as error if not done
- if ( state < 2 ) {
- done( -1, e );
- // Simply rethrow otherwise
- } else {
- throw e;
- }
- }
- }
-
- // Callback for when everything is done
- function done( status, nativeStatusText, responses, headers ) {
- var isSuccess, success, error, response, modified,
- statusText = nativeStatusText;
-
- // Called once
- if ( state === 2 ) {
- return;
- }
-
- // State is "done" now
- state = 2;
-
- // Clear timeout if it exists
- if ( timeoutTimer ) {
- clearTimeout( timeoutTimer );
- }
-
- // Dereference transport for early garbage collection
- // (no matter how long the jqXHR object will be used)
- transport = undefined;
-
- // Cache response headers
- responseHeadersString = headers || "";
-
- // Set readyState
- jqXHR.readyState = status > 0 ? 4 : 0;
-
- // Get response data
- if ( responses ) {
- response = ajaxHandleResponses( s, jqXHR, responses );
- }
-
- // If successful, handle type chaining
- if ( status >= 200 && status < 300 || status === 304 ) {
-
- // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
- if ( s.ifModified ) {
- modified = jqXHR.getResponseHeader("Last-Modified");
- if ( modified ) {
- jQuery.lastModified[ cacheURL ] = modified;
- }
- modified = jqXHR.getResponseHeader("etag");
- if ( modified ) {
- jQuery.etag[ cacheURL ] = modified;
- }
- }
-
- // if no content
- if ( status === 204 ) {
- isSuccess = true;
- statusText = "nocontent";
-
- // if not modified
- } else if ( status === 304 ) {
- isSuccess = true;
- statusText = "notmodified";
-
- // If we have data, let's convert it
- } else {
- isSuccess = ajaxConvert( s, response );
- statusText = isSuccess.state;
- success = isSuccess.data;
- error = isSuccess.error;
- isSuccess = !error;
- }
- } else {
- // We extract error from statusText
- // then normalize statusText and status for non-aborts
- error = statusText;
- if ( status || !statusText ) {
- statusText = "error";
- if ( status < 0 ) {
- status = 0;
- }
- }
- }
-
- // Set data for the fake xhr object
- jqXHR.status = status;
- jqXHR.statusText = ( nativeStatusText || statusText ) + "";
-
- // Success/Error
- if ( isSuccess ) {
- deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
- } else {
- deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
- }
-
- // Status-dependent callbacks
- jqXHR.statusCode( statusCode );
- statusCode = undefined;
-
- if ( fireGlobals ) {
- globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
- [ jqXHR, s, isSuccess ? success : error ] );
- }
-
- // Complete
- completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
-
- if ( fireGlobals ) {
- globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
- // Handle the global AJAX counter
- if ( !( --jQuery.active ) ) {
- jQuery.event.trigger("ajaxStop");
- }
- }
- }
-
- return jqXHR;
- },
-
- getScript: function( url, callback ) {
- return jQuery.get( url, undefined, callback, "script" );
- },
-
- getJSON: function( url, data, callback ) {
- return jQuery.get( url, data, callback, "json" );
- }
-});
-
-/* Handles responses to an ajax request:
- * - sets all responseXXX fields accordingly
- * - finds the right dataType (mediates between content-type and expected dataType)
- * - returns the corresponding response
- */
-function ajaxHandleResponses( s, jqXHR, responses ) {
- var firstDataType, ct, finalDataType, type,
- contents = s.contents,
- dataTypes = s.dataTypes,
- responseFields = s.responseFields;
-
- // Fill responseXXX fields
- for ( type in responseFields ) {
- if ( type in responses ) {
- jqXHR[ responseFields[type] ] = responses[ type ];
- }
- }
-
- // Remove auto dataType and get content-type in the process
- while( dataTypes[ 0 ] === "*" ) {
- dataTypes.shift();
- if ( ct === undefined ) {
- ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
- }
- }
-
- // Check if we're dealing with a known content-type
- if ( ct ) {
- for ( type in contents ) {
- if ( contents[ type ] && contents[ type ].test( ct ) ) {
- dataTypes.unshift( type );
- break;
- }
- }
- }
-
- // Check to see if we have a response for the expected dataType
- if ( dataTypes[ 0 ] in responses ) {
- finalDataType = dataTypes[ 0 ];
- } else {
- // Try convertible dataTypes
- for ( type in responses ) {
- if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
- finalDataType = type;
- break;
- }
- if ( !firstDataType ) {
- firstDataType = type;
- }
- }
- // Or just use first one
- finalDataType = finalDataType || firstDataType;
- }
-
- // If we found a dataType
- // We add the dataType to the list if needed
- // and return the corresponding response
- if ( finalDataType ) {
- if ( finalDataType !== dataTypes[ 0 ] ) {
- dataTypes.unshift( finalDataType );
- }
- return responses[ finalDataType ];
- }
-}
-
-// Chain conversions given the request and the original response
-function ajaxConvert( s, response ) {
- var conv2, current, conv, tmp,
- converters = {},
- i = 0,
- // Work with a copy of dataTypes in case we need to modify it for conversion
- dataTypes = s.dataTypes.slice(),
- prev = dataTypes[ 0 ];
-
- // Apply the dataFilter if provided
- if ( s.dataFilter ) {
- response = s.dataFilter( response, s.dataType );
- }
-
- // Create converters map with lowercased keys
- if ( dataTypes[ 1 ] ) {
- for ( conv in s.converters ) {
- converters[ conv.toLowerCase() ] = s.converters[ conv ];
- }
- }
-
- // Convert to each sequential dataType, tolerating list modification
- for ( ; (current = dataTypes[++i]); ) {
-
- // There's only work to do if current dataType is non-auto
- if ( current !== "*" ) {
-
- // Convert response if prev dataType is non-auto and differs from current
- if ( prev !== "*" && prev !== current ) {
-
- // Seek a direct converter
- conv = converters[ prev + " " + current ] || converters[ "* " + current ];
-
- // If none found, seek a pair
- if ( !conv ) {
- for ( conv2 in converters ) {
-
- // If conv2 outputs current
- tmp = conv2.split(" ");
- if ( tmp[ 1 ] === current ) {
-
- // If prev can be converted to accepted input
- conv = converters[ prev + " " + tmp[ 0 ] ] ||
- converters[ "* " + tmp[ 0 ] ];
- if ( conv ) {
- // Condense equivalence converters
- if ( conv === true ) {
- conv = converters[ conv2 ];
-
- // Otherwise, insert the intermediate dataType
- } else if ( converters[ conv2 ] !== true ) {
- current = tmp[ 0 ];
- dataTypes.splice( i--, 0, current );
- }
-
- break;
- }
- }
- }
- }
-
- // Apply converter (if not an equivalence)
- if ( conv !== true ) {
-
- // Unless errors are allowed to bubble, catch and return them
- if ( conv && s["throws"] ) {
- response = conv( response );
- } else {
- try {
- response = conv( response );
- } catch ( e ) {
- return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
- }
- }
- }
- }
-
- // Update prev for next iteration
- prev = current;
- }
- }
-
- return { state: "success", data: response };
-}
-// Install script dataType
-jQuery.ajaxSetup({
- accepts: {
- script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
- },
- contents: {
- script: /(?:java|ecma)script/
- },
- converters: {
- "text script": function( text ) {
- jQuery.globalEval( text );
- return text;
- }
- }
-});
-
-// Handle cache's special case and global
-jQuery.ajaxPrefilter( "script", function( s ) {
- if ( s.cache === undefined ) {
- s.cache = false;
- }
- if ( s.crossDomain ) {
- s.type = "GET";
- s.global = false;
- }
-});
-
-// Bind script tag hack transport
-jQuery.ajaxTransport( "script", function(s) {
-
- // This transport only deals with cross domain requests
- if ( s.crossDomain ) {
-
- var script,
- head = document.head || jQuery("head")[0] || document.documentElement;
-
- return {
-
- send: function( _, callback ) {
-
- script = document.createElement("script");
-
- script.async = true;
-
- if ( s.scriptCharset ) {
- script.charset = s.scriptCharset;
- }
-
- script.src = s.url;
-
- // Attach handlers for all browsers
- script.onload = script.onreadystatechange = function( _, isAbort ) {
-
- if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
-
- // Handle memory leak in IE
- script.onload = script.onreadystatechange = null;
-
- // Remove the script
- if ( script.parentNode ) {
- script.parentNode.removeChild( script );
- }
-
- // Dereference the script
- script = null;
-
- // Callback if not abort
- if ( !isAbort ) {
- callback( 200, "success" );
- }
- }
- };
-
- // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
- // Use native DOM manipulation to avoid our domManip AJAX trickery
- head.insertBefore( script, head.firstChild );
- },
-
- abort: function() {
- if ( script ) {
- script.onload( undefined, true );
- }
- }
- };
- }
-});
-var oldCallbacks = [],
- rjsonp = /(=)\?(?=&|$)|\?\?/;
-
-// Default jsonp settings
-jQuery.ajaxSetup({
- jsonp: "callback",
- jsonpCallback: function() {
- var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) );
- this[ callback ] = true;
- return callback;
- }
-});
-
-// Detect, normalize options and install callbacks for jsonp requests
-jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
-
- var callbackName, overwritten, responseContainer,
- jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
- "url" :
- typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
- );
-
- // Handle iff the expected data type is "jsonp" or we have a parameter to set
- if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
-
- // Get callback name, remembering preexisting value associated with it
- callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
- s.jsonpCallback() :
- s.jsonpCallback;
-
- // Insert callback into url or form data
- if ( jsonProp ) {
- s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
- } else if ( s.jsonp !== false ) {
- s.url += ( ajax_rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
- }
-
- // Use data converter to retrieve json after script execution
- s.converters["script json"] = function() {
- if ( !responseContainer ) {
- jQuery.error( callbackName + " was not called" );
- }
- return responseContainer[ 0 ];
- };
-
- // force json dataType
- s.dataTypes[ 0 ] = "json";
-
- // Install callback
- overwritten = window[ callbackName ];
- window[ callbackName ] = function() {
- responseContainer = arguments;
- };
-
- // Clean-up function (fires after converters)
- jqXHR.always(function() {
- // Restore preexisting value
- window[ callbackName ] = overwritten;
-
- // Save back as free
- if ( s[ callbackName ] ) {
- // make sure that re-using the options doesn't screw things around
- s.jsonpCallback = originalSettings.jsonpCallback;
-
- // save the callback name for future use
- oldCallbacks.push( callbackName );
- }
-
- // Call if it was a function and we have a response
- if ( responseContainer && jQuery.isFunction( overwritten ) ) {
- overwritten( responseContainer[ 0 ] );
- }
-
- responseContainer = overwritten = undefined;
- });
-
- // Delegate to script
- return "script";
- }
-});
-var xhrCallbacks, xhrSupported,
- xhrId = 0,
- // #5280: Internet Explorer will keep connections alive if we don't abort on unload
- xhrOnUnloadAbort = window.ActiveXObject && function() {
- // Abort all pending requests
- var key;
- for ( key in xhrCallbacks ) {
- xhrCallbacks[ key ]( undefined, true );
- }
- };
-
-// Functions to create xhrs
-function createStandardXHR() {
- try {
- return new window.XMLHttpRequest();
- } catch( e ) {}
-}
-
-function createActiveXHR() {
- try {
- return new window.ActiveXObject("Microsoft.XMLHTTP");
- } catch( e ) {}
-}
-
-// Create the request object
-// (This is still attached to ajaxSettings for backward compatibility)
-jQuery.ajaxSettings.xhr = window.ActiveXObject ?
- /* Microsoft failed to properly
- * implement the XMLHttpRequest in IE7 (can't request local files),
- * so we use the ActiveXObject when it is available
- * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
- * we need a fallback.
- */
- function() {
- return !this.isLocal && createStandardXHR() || createActiveXHR();
- } :
- // For all other browsers, use the standard XMLHttpRequest object
- createStandardXHR;
-
-// Determine support properties
-xhrSupported = jQuery.ajaxSettings.xhr();
-jQuery.support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
-xhrSupported = jQuery.support.ajax = !!xhrSupported;
-
-// Create transport if the browser can provide an xhr
-if ( xhrSupported ) {
-
- jQuery.ajaxTransport(function( s ) {
- // Cross domain only allowed if supported through XMLHttpRequest
- if ( !s.crossDomain || jQuery.support.cors ) {
-
- var callback;
-
- return {
- send: function( headers, complete ) {
-
- // Get a new xhr
- var handle, i,
- xhr = s.xhr();
-
- // Open the socket
- // Passing null username, generates a login popup on Opera (#2865)
- if ( s.username ) {
- xhr.open( s.type, s.url, s.async, s.username, s.password );
- } else {
- xhr.open( s.type, s.url, s.async );
- }
-
- // Apply custom fields if provided
- if ( s.xhrFields ) {
- for ( i in s.xhrFields ) {
- xhr[ i ] = s.xhrFields[ i ];
- }
- }
-
- // Override mime type if needed
- if ( s.mimeType && xhr.overrideMimeType ) {
- xhr.overrideMimeType( s.mimeType );
- }
-
- // X-Requested-With header
- // For cross-domain requests, seeing as conditions for a preflight are
- // akin to a jigsaw puzzle, we simply never set it to be sure.
- // (it can always be set on a per-request basis or even using ajaxSetup)
- // For same-domain requests, won't change header if already provided.
- if ( !s.crossDomain && !headers["X-Requested-With"] ) {
- headers["X-Requested-With"] = "XMLHttpRequest";
- }
-
- // Need an extra try/catch for cross domain requests in Firefox 3
- try {
- for ( i in headers ) {
- xhr.setRequestHeader( i, headers[ i ] );
- }
- } catch( err ) {}
-
- // Do send the request
- // This may raise an exception which is actually
- // handled in jQuery.ajax (so no try/catch here)
- xhr.send( ( s.hasContent && s.data ) || null );
-
- // Listener
- callback = function( _, isAbort ) {
- var status, responseHeaders, statusText, responses;
-
- // Firefox throws exceptions when accessing properties
- // of an xhr when a network error occurred
- // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
- try {
-
- // Was never called and is aborted or complete
- if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
-
- // Only called once
- callback = undefined;
-
- // Do not keep as active anymore
- if ( handle ) {
- xhr.onreadystatechange = jQuery.noop;
- if ( xhrOnUnloadAbort ) {
- delete xhrCallbacks[ handle ];
- }
- }
-
- // If it's an abort
- if ( isAbort ) {
- // Abort it manually if needed
- if ( xhr.readyState !== 4 ) {
- xhr.abort();
- }
- } else {
- responses = {};
- status = xhr.status;
- responseHeaders = xhr.getAllResponseHeaders();
-
- // When requesting binary data, IE6-9 will throw an exception
- // on any attempt to access responseText (#11426)
- if ( typeof xhr.responseText === "string" ) {
- responses.text = xhr.responseText;
- }
-
- // Firefox throws an exception when accessing
- // statusText for faulty cross-domain requests
- try {
- statusText = xhr.statusText;
- } catch( e ) {
- // We normalize with Webkit giving an empty statusText
- statusText = "";
- }
-
- // Filter status for non standard behaviors
-
- // If the request is local and we have data: assume a success
- // (success with no data won't get notified, that's the best we
- // can do given current implementations)
- if ( !status && s.isLocal && !s.crossDomain ) {
- status = responses.text ? 200 : 404;
- // IE - #1450: sometimes returns 1223 when it should be 204
- } else if ( status === 1223 ) {
- status = 204;
- }
- }
- }
- } catch( firefoxAccessException ) {
- if ( !isAbort ) {
- complete( -1, firefoxAccessException );
- }
- }
-
- // Call complete if needed
- if ( responses ) {
- complete( status, statusText, responses, responseHeaders );
- }
- };
-
- if ( !s.async ) {
- // if we're in sync mode we fire the callback
- callback();
- } else if ( xhr.readyState === 4 ) {
- // (IE6 & IE7) if it's in cache and has been
- // retrieved directly we need to fire the callback
- setTimeout( callback );
- } else {
- handle = ++xhrId;
- if ( xhrOnUnloadAbort ) {
- // Create the active xhrs callbacks list if needed
- // and attach the unload handler
- if ( !xhrCallbacks ) {
- xhrCallbacks = {};
- jQuery( window ).unload( xhrOnUnloadAbort );
- }
- // Add to list of active xhrs callbacks
- xhrCallbacks[ handle ] = callback;
- }
- xhr.onreadystatechange = callback;
- }
- },
-
- abort: function() {
- if ( callback ) {
- callback( undefined, true );
- }
- }
- };
- }
- });
-}
-var fxNow, timerId,
- rfxtypes = /^(?:toggle|show|hide)$/,
- rfxnum = new RegExp( "^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),
- rrun = /queueHooks$/,
- animationPrefilters = [ defaultPrefilter ],
- tweeners = {
- "*": [function( prop, value ) {
- var end, unit,
- tween = this.createTween( prop, value ),
- parts = rfxnum.exec( value ),
- target = tween.cur(),
- start = +target || 0,
- scale = 1,
- maxIterations = 20;
-
- if ( parts ) {
- end = +parts[2];
- unit = parts[3] || ( jQuery.cssNumber[ prop ] ? "" : "px" );
-
- // We need to compute starting value
- if ( unit !== "px" && start ) {
- // Iteratively approximate from a nonzero starting point
- // Prefer the current property, because this process will be trivial if it uses the same units
- // Fallback to end or a simple constant
- start = jQuery.css( tween.elem, prop, true ) || end || 1;
-
- do {
- // If previous iteration zeroed out, double until we get *something*
- // Use a string for doubling factor so we don't accidentally see scale as unchanged below
- scale = scale || ".5";
-
- // Adjust and apply
- start = start / scale;
- jQuery.style( tween.elem, prop, start + unit );
-
- // Update scale, tolerating zero or NaN from tween.cur()
- // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
- } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
- }
-
- tween.unit = unit;
- tween.start = start;
- // If a +=/-= token was provided, we're doing a relative animation
- tween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;
- }
- return tween;
- }]
- };
-
-// Animations created synchronously will run synchronously
-function createFxNow() {
- setTimeout(function() {
- fxNow = undefined;
- });
- return ( fxNow = jQuery.now() );
-}
-
-function createTweens( animation, props ) {
- jQuery.each( props, function( prop, value ) {
- var collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
- index = 0,
- length = collection.length;
- for ( ; index < length; index++ ) {
- if ( collection[ index ].call( animation, prop, value ) ) {
-
- // we're done with this property
- return;
- }
- }
- });
-}
-
-function Animation( elem, properties, options ) {
- var result,
- stopped,
- index = 0,
- length = animationPrefilters.length,
- deferred = jQuery.Deferred().always( function() {
- // don't match elem in the :animated selector
- delete tick.elem;
- }),
- tick = function() {
- if ( stopped ) {
- return false;
- }
- var currentTime = fxNow || createFxNow(),
- remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
- // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
- temp = remaining / animation.duration || 0,
- percent = 1 - temp,
- index = 0,
- length = animation.tweens.length;
-
- for ( ; index < length ; index++ ) {
- animation.tweens[ index ].run( percent );
- }
-
- deferred.notifyWith( elem, [ animation, percent, remaining ]);
-
- if ( percent < 1 && length ) {
- return remaining;
- } else {
- deferred.resolveWith( elem, [ animation ] );
- return false;
- }
- },
- animation = deferred.promise({
- elem: elem,
- props: jQuery.extend( {}, properties ),
- opts: jQuery.extend( true, { specialEasing: {} }, options ),
- originalProperties: properties,
- originalOptions: options,
- startTime: fxNow || createFxNow(),
- duration: options.duration,
- tweens: [],
- createTween: function( prop, end ) {
- var tween = jQuery.Tween( elem, animation.opts, prop, end,
- animation.opts.specialEasing[ prop ] || animation.opts.easing );
- animation.tweens.push( tween );
- return tween;
- },
- stop: function( gotoEnd ) {
- var index = 0,
- // if we are going to the end, we want to run all the tweens
- // otherwise we skip this part
- length = gotoEnd ? animation.tweens.length : 0;
- if ( stopped ) {
- return this;
- }
- stopped = true;
- for ( ; index < length ; index++ ) {
- animation.tweens[ index ].run( 1 );
- }
-
- // resolve when we played the last frame
- // otherwise, reject
- if ( gotoEnd ) {
- deferred.resolveWith( elem, [ animation, gotoEnd ] );
- } else {
- deferred.rejectWith( elem, [ animation, gotoEnd ] );
- }
- return this;
- }
- }),
- props = animation.props;
-
- propFilter( props, animation.opts.specialEasing );
-
- for ( ; index < length ; index++ ) {
- result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
- if ( result ) {
- return result;
- }
- }
-
- createTweens( animation, props );
-
- if ( jQuery.isFunction( animation.opts.start ) ) {
- animation.opts.start.call( elem, animation );
- }
-
- jQuery.fx.timer(
- jQuery.extend( tick, {
- elem: elem,
- anim: animation,
- queue: animation.opts.queue
- })
- );
-
- // attach callbacks from options
- return animation.progress( animation.opts.progress )
- .done( animation.opts.done, animation.opts.complete )
- .fail( animation.opts.fail )
- .always( animation.opts.always );
-}
-
-function propFilter( props, specialEasing ) {
- var value, name, index, easing, hooks;
-
- // camelCase, specialEasing and expand cssHook pass
- for ( index in props ) {
- name = jQuery.camelCase( index );
- easing = specialEasing[ name ];
- value = props[ index ];
- if ( jQuery.isArray( value ) ) {
- easing = value[ 1 ];
- value = props[ index ] = value[ 0 ];
- }
-
- if ( index !== name ) {
- props[ name ] = value;
- delete props[ index ];
- }
-
- hooks = jQuery.cssHooks[ name ];
- if ( hooks && "expand" in hooks ) {
- value = hooks.expand( value );
- delete props[ name ];
-
- // not quite $.extend, this wont overwrite keys already present.
- // also - reusing 'index' from above because we have the correct "name"
- for ( index in value ) {
- if ( !( index in props ) ) {
- props[ index ] = value[ index ];
- specialEasing[ index ] = easing;
- }
- }
- } else {
- specialEasing[ name ] = easing;
- }
- }
-}
-
-jQuery.Animation = jQuery.extend( Animation, {
-
- tweener: function( props, callback ) {
- if ( jQuery.isFunction( props ) ) {
- callback = props;
- props = [ "*" ];
- } else {
- props = props.split(" ");
- }
-
- var prop,
- index = 0,
- length = props.length;
-
- for ( ; index < length ; index++ ) {
- prop = props[ index ];
- tweeners[ prop ] = tweeners[ prop ] || [];
- tweeners[ prop ].unshift( callback );
- }
- },
-
- prefilter: function( callback, prepend ) {
- if ( prepend ) {
- animationPrefilters.unshift( callback );
- } else {
- animationPrefilters.push( callback );
- }
- }
-});
-
-function defaultPrefilter( elem, props, opts ) {
- /*jshint validthis:true */
- var prop, index, length,
- value, dataShow, toggle,
- tween, hooks, oldfire,
- anim = this,
- style = elem.style,
- orig = {},
- handled = [],
- hidden = elem.nodeType && isHidden( elem );
-
- // handle queue: false promises
- if ( !opts.queue ) {
- hooks = jQuery._queueHooks( elem, "fx" );
- if ( hooks.unqueued == null ) {
- hooks.unqueued = 0;
- oldfire = hooks.empty.fire;
- hooks.empty.fire = function() {
- if ( !hooks.unqueued ) {
- oldfire();
- }
- };
- }
- hooks.unqueued++;
-
- anim.always(function() {
- // doing this makes sure that the complete handler will be called
- // before this completes
- anim.always(function() {
- hooks.unqueued--;
- if ( !jQuery.queue( elem, "fx" ).length ) {
- hooks.empty.fire();
- }
- });
- });
- }
-
- // height/width overflow pass
- if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
- // Make sure that nothing sneaks out
- // Record all 3 overflow attributes because IE does not
- // change the overflow attribute when overflowX and
- // overflowY are set to the same value
- opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
-
- // Set display property to inline-block for height/width
- // animations on inline elements that are having width/height animated
- if ( jQuery.css( elem, "display" ) === "inline" &&
- jQuery.css( elem, "float" ) === "none" ) {
-
- // inline-level elements accept inline-block;
- // block-level elements need to be inline with layout
- if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {
- style.display = "inline-block";
-
- } else {
- style.zoom = 1;
- }
- }
- }
-
- if ( opts.overflow ) {
- style.overflow = "hidden";
- if ( !jQuery.support.shrinkWrapBlocks ) {
- anim.always(function() {
- style.overflow = opts.overflow[ 0 ];
- style.overflowX = opts.overflow[ 1 ];
- style.overflowY = opts.overflow[ 2 ];
- });
- }
- }
-
-
- // show/hide pass
- for ( index in props ) {
- value = props[ index ];
- if ( rfxtypes.exec( value ) ) {
- delete props[ index ];
- toggle = toggle || value === "toggle";
- if ( value === ( hidden ? "hide" : "show" ) ) {
- continue;
- }
- handled.push( index );
- }
- }
-
- length = handled.length;
- if ( length ) {
- dataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} );
- if ( "hidden" in dataShow ) {
- hidden = dataShow.hidden;
- }
-
- // store state if its toggle - enables .stop().toggle() to "reverse"
- if ( toggle ) {
- dataShow.hidden = !hidden;
- }
- if ( hidden ) {
- jQuery( elem ).show();
- } else {
- anim.done(function() {
- jQuery( elem ).hide();
- });
- }
- anim.done(function() {
- var prop;
- jQuery._removeData( elem, "fxshow" );
- for ( prop in orig ) {
- jQuery.style( elem, prop, orig[ prop ] );
- }
- });
- for ( index = 0 ; index < length ; index++ ) {
- prop = handled[ index ];
- tween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );
- orig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );
-
- if ( !( prop in dataShow ) ) {
- dataShow[ prop ] = tween.start;
- if ( hidden ) {
- tween.end = tween.start;
- tween.start = prop === "width" || prop === "height" ? 1 : 0;
- }
- }
- }
- }
-}
-
-function Tween( elem, options, prop, end, easing ) {
- return new Tween.prototype.init( elem, options, prop, end, easing );
-}
-jQuery.Tween = Tween;
-
-Tween.prototype = {
- constructor: Tween,
- init: function( elem, options, prop, end, easing, unit ) {
- this.elem = elem;
- this.prop = prop;
- this.easing = easing || "swing";
- this.options = options;
- this.start = this.now = this.cur();
- this.end = end;
- this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
- },
- cur: function() {
- var hooks = Tween.propHooks[ this.prop ];
-
- return hooks && hooks.get ?
- hooks.get( this ) :
- Tween.propHooks._default.get( this );
- },
- run: function( percent ) {
- var eased,
- hooks = Tween.propHooks[ this.prop ];
-
- if ( this.options.duration ) {
- this.pos = eased = jQuery.easing[ this.easing ](
- percent, this.options.duration * percent, 0, 1, this.options.duration
- );
- } else {
- this.pos = eased = percent;
- }
- this.now = ( this.end - this.start ) * eased + this.start;
-
- if ( this.options.step ) {
- this.options.step.call( this.elem, this.now, this );
- }
-
- if ( hooks && hooks.set ) {
- hooks.set( this );
- } else {
- Tween.propHooks._default.set( this );
- }
- return this;
- }
-};
-
-Tween.prototype.init.prototype = Tween.prototype;
-
-Tween.propHooks = {
- _default: {
- get: function( tween ) {
- var result;
-
- if ( tween.elem[ tween.prop ] != null &&
- (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
- return tween.elem[ tween.prop ];
- }
-
- // passing an empty string as a 3rd parameter to .css will automatically
- // attempt a parseFloat and fallback to a string if the parse fails
- // so, simple values such as "10px" are parsed to Float.
- // complex values such as "rotate(1rad)" are returned as is.
- result = jQuery.css( tween.elem, tween.prop, "" );
- // Empty strings, null, undefined and "auto" are converted to 0.
- return !result || result === "auto" ? 0 : result;
- },
- set: function( tween ) {
- // use step hook for back compat - use cssHook if its there - use .style if its
- // available and use plain properties where available
- if ( jQuery.fx.step[ tween.prop ] ) {
- jQuery.fx.step[ tween.prop ]( tween );
- } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
- jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
- } else {
- tween.elem[ tween.prop ] = tween.now;
- }
- }
- }
-};
-
-// Remove in 2.0 - this supports IE8's panic based approach
-// to setting things on disconnected nodes
-
-Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
- set: function( tween ) {
- if ( tween.elem.nodeType && tween.elem.parentNode ) {
- tween.elem[ tween.prop ] = tween.now;
- }
- }
-};
-
-jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
- var cssFn = jQuery.fn[ name ];
- jQuery.fn[ name ] = function( speed, easing, callback ) {
- return speed == null || typeof speed === "boolean" ?
- cssFn.apply( this, arguments ) :
- this.animate( genFx( name, true ), speed, easing, callback );
- };
-});
-
-jQuery.fn.extend({
- fadeTo: function( speed, to, easing, callback ) {
-
- // show any hidden elements after setting opacity to 0
- return this.filter( isHidden ).css( "opacity", 0 ).show()
-
- // animate to the value specified
- .end().animate({ opacity: to }, speed, easing, callback );
- },
- animate: function( prop, speed, easing, callback ) {
- var empty = jQuery.isEmptyObject( prop ),
- optall = jQuery.speed( speed, easing, callback ),
- doAnimation = function() {
- // Operate on a copy of prop so per-property easing won't be lost
- var anim = Animation( this, jQuery.extend( {}, prop ), optall );
- doAnimation.finish = function() {
- anim.stop( true );
- };
- // Empty animations, or finishing resolves immediately
- if ( empty || jQuery._data( this, "finish" ) ) {
- anim.stop( true );
- }
- };
- doAnimation.finish = doAnimation;
-
- return empty || optall.queue === false ?
- this.each( doAnimation ) :
- this.queue( optall.queue, doAnimation );
- },
- stop: function( type, clearQueue, gotoEnd ) {
- var stopQueue = function( hooks ) {
- var stop = hooks.stop;
- delete hooks.stop;
- stop( gotoEnd );
- };
-
- if ( typeof type !== "string" ) {
- gotoEnd = clearQueue;
- clearQueue = type;
- type = undefined;
- }
- if ( clearQueue && type !== false ) {
- this.queue( type || "fx", [] );
- }
-
- return this.each(function() {
- var dequeue = true,
- index = type != null && type + "queueHooks",
- timers = jQuery.timers,
- data = jQuery._data( this );
-
- if ( index ) {
- if ( data[ index ] && data[ index ].stop ) {
- stopQueue( data[ index ] );
- }
- } else {
- for ( index in data ) {
- if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
- stopQueue( data[ index ] );
- }
- }
- }
-
- for ( index = timers.length; index--; ) {
- if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
- timers[ index ].anim.stop( gotoEnd );
- dequeue = false;
- timers.splice( index, 1 );
- }
- }
-
- // start the next in the queue if the last step wasn't forced
- // timers currently will call their complete callbacks, which will dequeue
- // but only if they were gotoEnd
- if ( dequeue || !gotoEnd ) {
- jQuery.dequeue( this, type );
- }
- });
- },
- finish: function( type ) {
- if ( type !== false ) {
- type = type || "fx";
- }
- return this.each(function() {
- var index,
- data = jQuery._data( this ),
- queue = data[ type + "queue" ],
- hooks = data[ type + "queueHooks" ],
- timers = jQuery.timers,
- length = queue ? queue.length : 0;
-
- // enable finishing flag on private data
- data.finish = true;
-
- // empty the queue first
- jQuery.queue( this, type, [] );
-
- if ( hooks && hooks.cur && hooks.cur.finish ) {
- hooks.cur.finish.call( this );
- }
-
- // look for any active animations, and finish them
- for ( index = timers.length; index--; ) {
- if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
- timers[ index ].anim.stop( true );
- timers.splice( index, 1 );
- }
- }
-
- // look for any animations in the old queue and finish them
- for ( index = 0; index < length; index++ ) {
- if ( queue[ index ] && queue[ index ].finish ) {
- queue[ index ].finish.call( this );
- }
- }
-
- // turn off finishing flag
- delete data.finish;
- });
- }
-});
-
-// Generate parameters to create a standard animation
-function genFx( type, includeWidth ) {
- var which,
- attrs = { height: type },
- i = 0;
-
- // if we include width, step value is 1 to do all cssExpand values,
- // if we don't include width, step value is 2 to skip over Left and Right
- includeWidth = includeWidth? 1 : 0;
- for( ; i < 4 ; i += 2 - includeWidth ) {
- which = cssExpand[ i ];
- attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
- }
-
- if ( includeWidth ) {
- attrs.opacity = attrs.width = type;
- }
-
- return attrs;
-}
-
-// Generate shortcuts for custom animations
-jQuery.each({
- slideDown: genFx("show"),
- slideUp: genFx("hide"),
- slideToggle: genFx("toggle"),
- fadeIn: { opacity: "show" },
- fadeOut: { opacity: "hide" },
- fadeToggle: { opacity: "toggle" }
-}, function( name, props ) {
- jQuery.fn[ name ] = function( speed, easing, callback ) {
- return this.animate( props, speed, easing, callback );
- };
-});
-
-jQuery.speed = function( speed, easing, fn ) {
- var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
- complete: fn || !fn && easing ||
- jQuery.isFunction( speed ) && speed,
- duration: speed,
- easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
- };
-
- opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
- opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
-
- // normalize opt.queue - true/undefined/null -> "fx"
- if ( opt.queue == null || opt.queue === true ) {
- opt.queue = "fx";
- }
-
- // Queueing
- opt.old = opt.complete;
-
- opt.complete = function() {
- if ( jQuery.isFunction( opt.old ) ) {
- opt.old.call( this );
- }
-
- if ( opt.queue ) {
- jQuery.dequeue( this, opt.queue );
- }
- };
-
- return opt;
-};
-
-jQuery.easing = {
- linear: function( p ) {
- return p;
- },
- swing: function( p ) {
- return 0.5 - Math.cos( p*Math.PI ) / 2;
- }
-};
-
-jQuery.timers = [];
-jQuery.fx = Tween.prototype.init;
-jQuery.fx.tick = function() {
- var timer,
- timers = jQuery.timers,
- i = 0;
-
- fxNow = jQuery.now();
-
- for ( ; i < timers.length; i++ ) {
- timer = timers[ i ];
- // Checks the timer has not already been removed
- if ( !timer() && timers[ i ] === timer ) {
- timers.splice( i--, 1 );
- }
- }
-
- if ( !timers.length ) {
- jQuery.fx.stop();
- }
- fxNow = undefined;
-};
-
-jQuery.fx.timer = function( timer ) {
- if ( timer() && jQuery.timers.push( timer ) ) {
- jQuery.fx.start();
- }
-};
-
-jQuery.fx.interval = 13;
-
-jQuery.fx.start = function() {
- if ( !timerId ) {
- timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
- }
-};
-
-jQuery.fx.stop = function() {
- clearInterval( timerId );
- timerId = null;
-};
-
-jQuery.fx.speeds = {
- slow: 600,
- fast: 200,
- // Default speed
- _default: 400
-};
-
-// Back Compat <1.8 extension point
-jQuery.fx.step = {};
-
-if ( jQuery.expr && jQuery.expr.filters ) {
- jQuery.expr.filters.animated = function( elem ) {
- return jQuery.grep(jQuery.timers, function( fn ) {
- return elem === fn.elem;
- }).length;
- };
-}
-jQuery.fn.offset = function( options ) {
- if ( arguments.length ) {
- return options === undefined ?
- this :
- this.each(function( i ) {
- jQuery.offset.setOffset( this, options, i );
- });
- }
-
- var docElem, win,
- box = { top: 0, left: 0 },
- elem = this[ 0 ],
- doc = elem && elem.ownerDocument;
-
- if ( !doc ) {
- return;
- }
-
- docElem = doc.documentElement;
-
- // Make sure it's not a disconnected DOM node
- if ( !jQuery.contains( docElem, elem ) ) {
- return box;
- }
-
- // If we don't have gBCR, just use 0,0 rather than error
- // BlackBerry 5, iOS 3 (original iPhone)
- if ( typeof elem.getBoundingClientRect !== core_strundefined ) {
- box = elem.getBoundingClientRect();
- }
- win = getWindow( doc );
- return {
- top: box.top + ( win.pageYOffset || docElem.scrollTop ) - ( docElem.clientTop || 0 ),
- left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )
- };
-};
-
-jQuery.offset = {
-
- setOffset: function( elem, options, i ) {
- var position = jQuery.css( elem, "position" );
-
- // set position first, in-case top/left are set even on static elem
- if ( position === "static" ) {
- elem.style.position = "relative";
- }
-
- var curElem = jQuery( elem ),
- curOffset = curElem.offset(),
- curCSSTop = jQuery.css( elem, "top" ),
- curCSSLeft = jQuery.css( elem, "left" ),
- calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
- props = {}, curPosition = {}, curTop, curLeft;
-
- // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
- if ( calculatePosition ) {
- curPosition = curElem.position();
- curTop = curPosition.top;
- curLeft = curPosition.left;
- } else {
- curTop = parseFloat( curCSSTop ) || 0;
- curLeft = parseFloat( curCSSLeft ) || 0;
- }
-
- if ( jQuery.isFunction( options ) ) {
- options = options.call( elem, i, curOffset );
- }
-
- if ( options.top != null ) {
- props.top = ( options.top - curOffset.top ) + curTop;
- }
- if ( options.left != null ) {
- props.left = ( options.left - curOffset.left ) + curLeft;
- }
-
- if ( "using" in options ) {
- options.using.call( elem, props );
- } else {
- curElem.css( props );
- }
- }
-};
-
-
-jQuery.fn.extend({
-
- position: function() {
- if ( !this[ 0 ] ) {
- return;
- }
-
- var offsetParent, offset,
- parentOffset = { top: 0, left: 0 },
- elem = this[ 0 ];
-
- // fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent
- if ( jQuery.css( elem, "position" ) === "fixed" ) {
- // we assume that getBoundingClientRect is available when computed position is fixed
- offset = elem.getBoundingClientRect();
- } else {
- // Get *real* offsetParent
- offsetParent = this.offsetParent();
-
- // Get correct offsets
- offset = this.offset();
- if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
- parentOffset = offsetParent.offset();
- }
-
- // Add offsetParent borders
- parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
- parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
- }
-
- // Subtract parent offsets and element margins
- // note: when an element has margin: auto the offsetLeft and marginLeft
- // are the same in Safari causing offset.left to incorrectly be 0
- return {
- top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
- left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
- };
- },
-
- offsetParent: function() {
- return this.map(function() {
- var offsetParent = this.offsetParent || document.documentElement;
- while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) {
- offsetParent = offsetParent.offsetParent;
- }
- return offsetParent || document.documentElement;
- });
- }
-});
-
-
-// Create scrollLeft and scrollTop methods
-jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
- var top = /Y/.test( prop );
-
- jQuery.fn[ method ] = function( val ) {
- return jQuery.access( this, function( elem, method, val ) {
- var win = getWindow( elem );
-
- if ( val === undefined ) {
- return win ? (prop in win) ? win[ prop ] :
- win.document.documentElement[ method ] :
- elem[ method ];
- }
-
- if ( win ) {
- win.scrollTo(
- !top ? val : jQuery( win ).scrollLeft(),
- top ? val : jQuery( win ).scrollTop()
- );
-
- } else {
- elem[ method ] = val;
- }
- }, method, val, arguments.length, null );
- };
-});
-
-function getWindow( elem ) {
- return jQuery.isWindow( elem ) ?
- elem :
- elem.nodeType === 9 ?
- elem.defaultView || elem.parentWindow :
- false;
-}
-// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
-jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
- jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
- // margin is only for outerHeight, outerWidth
- jQuery.fn[ funcName ] = function( margin, value ) {
- var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
- extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
-
- return jQuery.access( this, function( elem, type, value ) {
- var doc;
-
- if ( jQuery.isWindow( elem ) ) {
- // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
- // isn't a whole lot we can do. See pull request at this URL for discussion:
- // https://github.com/jquery/jquery/pull/764
- return elem.document.documentElement[ "client" + name ];
- }
-
- // Get document width or height
- if ( elem.nodeType === 9 ) {
- doc = elem.documentElement;
-
- // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
- // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
- return Math.max(
- elem.body[ "scroll" + name ], doc[ "scroll" + name ],
- elem.body[ "offset" + name ], doc[ "offset" + name ],
- doc[ "client" + name ]
- );
- }
-
- return value === undefined ?
- // Get width or height on the element, requesting but not forcing parseFloat
- jQuery.css( elem, type, extra ) :
-
- // Set width or height on the element
- jQuery.style( elem, type, value, extra );
- }, type, chainable ? margin : undefined, chainable, null );
- };
- });
-});
-// Limit scope pollution from any deprecated API
-// (function() {
-
-// })();
-// Expose jQuery to the global object
-window.jQuery = window.$ = jQuery;
-
-// Expose jQuery as an AMD module, but only for AMD loaders that
-// understand the issues with loading multiple versions of jQuery
-// in a page that all might call define(). The loader will indicate
-// they have special allowances for multiple jQuery versions by
-// specifying define.amd.jQuery = true. Register as a named module,
-// since jQuery can be concatenated with other files that may use define,
-// but not use a proper concatenation script that understands anonymous
-// AMD modules. A named AMD is safest and most robust way to register.
-// Lowercase jquery is used because AMD module names are derived from
-// file names, and jQuery is normally delivered in a lowercase file name.
-// Do this after creating the global so that if an AMD module wants to call
-// noConflict to hide this version of jQuery, it will work.
-if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
- define( "jquery", [], function () { return jQuery; } );
-}
-
-})( window );
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/jquery.min.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/jquery.min.js
deleted file mode 100644
index 006e953..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/jquery.min.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery v1.9.1 | (c) 2005, 2012 jQuery Foundation, Inc. | jquery.org/license
-//@ sourceMappingURL=jquery.min.map
-*/(function(e,t){var n,r,i=typeof t,o=e.document,a=e.location,s=e.jQuery,u=e.$,l={},c=[],p="1.9.1",f=c.concat,d=c.push,h=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,b=function(e,t){return new b.fn.init(e,t,r)},x=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^[\],:{}\s]*$/,E=/(?:^|:|,)(?:\s*\[)+/g,S=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,A=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,j=/^-ms-/,D=/-([\da-z])/gi,L=function(e,t){return t.toUpperCase()},H=function(e){(o.addEventListener||"load"===e.type||"complete"===o.readyState)&&(q(),b.ready())},q=function(){o.addEventListener?(o.removeEventListener("DOMContentLoaded",H,!1),e.removeEventListener("load",H,!1)):(o.detachEvent("onreadystatechange",H),e.detachEvent("onload",H))};b.fn=b.prototype={jquery:p,constructor:b,init:function(e,n,r){var i,a;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof b?n[0]:n,b.merge(this,b.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:o,!0)),C.test(i[1])&&b.isPlainObject(n))for(i in n)b.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(a=o.getElementById(i[2]),a&&a.parentNode){if(a.id!==i[2])return r.find(e);this.length=1,this[0]=a}return this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):b.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),b.makeArray(e,this))},selector:"",length:0,size:function(){return this.length},toArray:function(){return h.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=b.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return b.each(this,e,t)},ready:function(e){return b.ready.promise().done(e),this},slice:function(){return this.pushStack(h.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(b.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:d,sort:[].sort,splice:[].splice},b.fn.init.prototype=b.fn,b.extend=b.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},u=1,l=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},u=2),"object"==typeof s||b.isFunction(s)||(s={}),l===u&&(s=this,--u);l>u;u++)if(null!=(o=arguments[u]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(b.isPlainObject(r)||(n=b.isArray(r)))?(n?(n=!1,a=e&&b.isArray(e)?e:[]):a=e&&b.isPlainObject(e)?e:{},s[i]=b.extend(c,a,r)):r!==t&&(s[i]=r));return s},b.extend({noConflict:function(t){return e.$===b&&(e.$=u),t&&e.jQuery===b&&(e.jQuery=s),b},isReady:!1,readyWait:1,holdReady:function(e){e?b.readyWait++:b.ready(!0)},ready:function(e){if(e===!0?!--b.readyWait:!b.isReady){if(!o.body)return setTimeout(b.ready);b.isReady=!0,e!==!0&&--b.readyWait>0||(n.resolveWith(o,[b]),b.fn.trigger&&b(o).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===b.type(e)},isArray:Array.isArray||function(e){return"array"===b.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if(!e||"object"!==b.type(e)||e.nodeType||b.isWindow(e))return!1;try{if(e.constructor&&!y.call(e,"constructor")&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||y.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=b.buildFragment([e],t,i),i&&b(i).remove(),b.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=b.trim(n),n&&k.test(n.replace(S,"@").replace(A,"]").replace(E,"")))?Function("return "+n)():(b.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||b.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&b.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(j,"ms-").replace(D,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:v&&!v.call("\ufeff\u00a0")?function(e){return null==e?"":v.call(e)}:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?b.merge(n,"string"==typeof e?[e]:e):d.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(g)return g.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return f.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),b.isFunction(e)?(r=h.call(arguments,2),i=function(){return e.apply(n||this,r.concat(h.call(arguments)))},i.guid=e.guid=e.guid||b.guid++,i):t},access:function(e,n,r,i,o,a,s){var u=0,l=e.length,c=null==r;if("object"===b.type(r)){o=!0;for(u in r)b.access(e,n,u,r[u],!0,a,s)}else if(i!==t&&(o=!0,b.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(b(e),n)})),n))for(;l>u;u++)n(e[u],r,s?i:i.call(e[u],u,n(e[u],r)));return o?e:c?n.call(e):l?n(e[0],r):a},now:function(){return(new Date).getTime()}}),b.ready.promise=function(t){if(!n)if(n=b.Deferred(),"complete"===o.readyState)setTimeout(b.ready);else if(o.addEventListener)o.addEventListener("DOMContentLoaded",H,!1),e.addEventListener("load",H,!1);else{o.attachEvent("onreadystatechange",H),e.attachEvent("onload",H);var r=!1;try{r=null==e.frameElement&&o.documentElement}catch(i){}r&&r.doScroll&&function a(){if(!b.isReady){try{r.doScroll("left")}catch(e){return setTimeout(a,50)}q(),b.ready()}}()}return n.promise(t)},b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=b.type(e);return b.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=b(o);var _={};function F(e){var t=_[e]={};return b.each(e.match(w)||[],function(e,n){t[n]=!0}),t}b.Callbacks=function(e){e="string"==typeof e?_[e]||F(e):b.extend({},e);var n,r,i,o,a,s,u=[],l=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=u.length,n=!0;u&&o>a;a++)if(u[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,u&&(l?l.length&&c(l.shift()):r?u=[]:p.disable())},p={add:function(){if(u){var t=u.length;(function i(t){b.each(t,function(t,n){var r=b.type(n);"function"===r?e.unique&&p.has(n)||u.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=u.length:r&&(s=t,c(r))}return this},remove:function(){return u&&b.each(arguments,function(e,t){var r;while((r=b.inArray(t,u,r))>-1)u.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?b.inArray(e,u)>-1:!(!u||!u.length)},empty:function(){return u=[],this},disable:function(){return u=l=r=t,this},disabled:function(){return!u},lock:function(){return l=t,r||p.disable(),this},locked:function(){return!l},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],!u||i&&!l||(n?l.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},b.extend({Deferred:function(e){var t=[["resolve","done",b.Callbacks("once memory"),"resolved"],["reject","fail",b.Callbacks("once memory"),"rejected"],["notify","progress",b.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return b.Deferred(function(n){b.each(t,function(t,o){var a=o[0],s=b.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&b.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?b.extend(e,r):r}},i={};return r.pipe=r.then,b.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=h.call(arguments),r=n.length,i=1!==r||e&&b.isFunction(e.promise)?r:0,o=1===i?e:b.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?h.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,u,l;if(r>1)for(s=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&b.isFunction(n[t].promise)?n[t].promise().done(a(t,l,n)).fail(o.reject).progress(a(t,u,s)):--i;return i||o.resolveWith(l,n),o.promise()}}),b.support=function(){var t,n,r,a,s,u,l,c,p,f,d=o.createElement("div");if(d.setAttribute("className","t"),d.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=d.getElementsByTagName("*"),r=d.getElementsByTagName("a")[0],!n||!r||!n.length)return{};s=o.createElement("select"),l=s.appendChild(o.createElement("option")),a=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={getSetAttribute:"t"!==d.className,leadingWhitespace:3===d.firstChild.nodeType,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:"/a"===r.getAttribute("href"),opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:!!a.value,optSelected:l.selected,enctype:!!o.createElement("form").enctype,html5Clone:"<:nav></:nav>"!==o.createElement("nav").cloneNode(!0).outerHTML,boxModel:"CSS1Compat"===o.compatMode,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},a.checked=!0,t.noCloneChecked=a.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!l.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}a=o.createElement("input"),a.setAttribute("value",""),t.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),t.radioValue="t"===a.value,a.setAttribute("checked","t"),a.setAttribute("name","t"),u=o.createDocumentFragment(),u.appendChild(a),t.appendChecked=a.checked,t.checkClone=u.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;return d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip,b(function(){var n,r,a,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",u=o.getElementsByTagName("body")[0];u&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",u.appendChild(n).appendChild(d),d.innerHTML="<table><tr><td></td><td>t</td></tr></table>",a=d.getElementsByTagName("td"),a[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===a[0].offsetHeight,a[0].style.display="",a[1].style.display="none",t.reliableHiddenOffsets=p&&0===a[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=4===d.offsetWidth,t.doesNotIncludeMarginInBodyOffset=1!==u.offsetTop,e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(o.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="<div></div>",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(u.style.zoom=1)),u.removeChild(n),n=d=a=r=null)}),n=s=u=l=r=a=null,t}();var O=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,B=/([A-Z])/g;function P(e,n,r,i){if(b.acceptData(e)){var o,a,s=b.expando,u="string"==typeof n,l=e.nodeType,p=l?b.cache:e,f=l?e[s]:e[s]&&s;if(f&&p[f]&&(i||p[f].data)||!u||r!==t)return f||(l?e[s]=f=c.pop()||b.guid++:f=s),p[f]||(p[f]={},l||(p[f].toJSON=b.noop)),("object"==typeof n||"function"==typeof n)&&(i?p[f]=b.extend(p[f],n):p[f].data=b.extend(p[f].data,n)),o=p[f],i||(o.data||(o.data={}),o=o.data),r!==t&&(o[b.camelCase(n)]=r),u?(a=o[n],null==a&&(a=o[b.camelCase(n)])):a=o,a}}function R(e,t,n){if(b.acceptData(e)){var r,i,o,a=e.nodeType,s=a?b.cache:e,u=a?e[b.expando]:b.expando;if(s[u]){if(t&&(o=n?s[u]:s[u].data)){b.isArray(t)?t=t.concat(b.map(t,b.camelCase)):t in o?t=[t]:(t=b.camelCase(t),t=t in o?[t]:t.split(" "));for(r=0,i=t.length;i>r;r++)delete o[t[r]];if(!(n?$:b.isEmptyObject)(o))return}(n||(delete s[u].data,$(s[u])))&&(a?b.cleanData([e],!0):b.support.deleteExpando||s!=s.window?delete s[u]:s[u]=null)}}}b.extend({cache:{},expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?b.cache[e[b.expando]]:e[b.expando],!!e&&!$(e)},data:function(e,t,n){return P(e,t,n)},removeData:function(e,t){return R(e,t)},_data:function(e,t,n){return P(e,t,n,!0)},_removeData:function(e,t){return R(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&b.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),b.fn.extend({data:function(e,n){var r,i,o=this[0],a=0,s=null;if(e===t){if(this.length&&(s=b.data(o),1===o.nodeType&&!b._data(o,"parsedAttrs"))){for(r=o.attributes;r.length>a;a++)i=r[a].name,i.indexOf("data-")||(i=b.camelCase(i.slice(5)),W(o,i,s[i]));b._data(o,"parsedAttrs",!0)}return s}return"object"==typeof e?this.each(function(){b.data(this,e)}):b.access(this,function(n){return n===t?o?W(o,e,b.data(o,e)):null:(this.each(function(){b.data(this,e,n)}),t)},null,n,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function W(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(B,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:O.test(r)?b.parseJSON(r):r}catch(o){}b.data(e,n,r)}else r=t}return r}function $(e){var t;for(t in e)if(("data"!==t||!b.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}b.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=b._data(e,n),r&&(!i||b.isArray(r)?i=b._data(e,n,b.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=b.queue(e,t),r=n.length,i=n.shift(),o=b._queueHooks(e,t),a=function(){b.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),o.cur=i,i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return b._data(e,n)||b._data(e,n,{empty:b.Callbacks("once memory").add(function(){b._removeData(e,t+"queue"),b._removeData(e,n)})})}}),b.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?b.queue(this[0],e):n===t?this:this.each(function(){var t=b.queue(this,e,n);b._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&b.dequeue(this,e)})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(e,t){return e=b.fx?b.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=b.Deferred(),a=this,s=this.length,u=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=b._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(u));return u(),o.promise(n)}});var I,z,X=/[\t\r\n]/g,U=/\r/g,V=/^(?:input|select|textarea|button|object)$/i,Y=/^(?:a|area)$/i,J=/^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,G=/^(?:checked|selected)$/i,Q=b.support.getSetAttribute,K=b.support.input;b.fn.extend({attr:function(e,t){return b.access(this,b.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,t){return b.access(this,b.prop,e,t,arguments.length>1)},removeProp:function(e){return e=b.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,u="string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=b.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,u=0===arguments.length||"string"==typeof e&&e;if(b.isFunction(e))return this.each(function(t){b(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(X," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?b.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e,r="boolean"==typeof t;return b.isFunction(e)?this.each(function(n){b(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var o,a=0,s=b(this),u=t,l=e.match(w)||[];while(o=l[a++])u=r?u:!s.hasClass(o),s[u?"addClass":"removeClass"](o)}else(n===i||"boolean"===n)&&(this.className&&b._data(this,"__className__",this.className),this.className=this.className||e===!1?"":b._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(X," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=b.isFunction(e),this.each(function(n){var o,a=b(this);1===this.nodeType&&(o=i?e.call(this,n,a.val()):e,null==o?o="":"number"==typeof o?o+="":b.isArray(o)&&(o=b.map(o,function(e){return null==e?"":e+""})),r=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=b.valHooks[o.type]||b.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(U,""):null==n?"":n)}}}),b.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,u=0>i?s:o?i:0;for(;s>u;u++)if(n=r[u],!(!n.selected&&u!==i||(b.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&b.nodeName(n.parentNode,"optgroup"))){if(t=b(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n=b.makeArray(t);return b(e).find("option").each(function(){this.selected=b.inArray(b(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attr:function(e,n,r){var o,a,s,u=e.nodeType;if(e&&3!==u&&8!==u&&2!==u)return typeof e.getAttribute===i?b.prop(e,n,r):(a=1!==u||!b.isXMLDoc(e),a&&(n=n.toLowerCase(),o=b.attrHooks[n]||(J.test(n)?z:I)),r===t?o&&a&&"get"in o&&null!==(s=o.get(e,n))?s:(typeof e.getAttribute!==i&&(s=e.getAttribute(n)),null==s?t:s):null!==r?o&&a&&"set"in o&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r):(b.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=b.propFix[n]||n,J.test(n)?!Q&&G.test(n)?e[b.camelCase("default-"+n)]=e[r]=!1:e[r]=!1:b.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!b.support.radioValue&&"radio"===t&&b.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!b.isXMLDoc(e),a&&(n=b.propFix[n]||n,o=b.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):V.test(e.nodeName)||Y.test(e.nodeName)&&e.href?0:t}}}}),z={get:function(e,n){var r=b.prop(e,n),i="boolean"==typeof r&&e.getAttribute(n),o="boolean"==typeof r?K&&Q?null!=i:G.test(n)?e[b.camelCase("default-"+n)]:!!i:e.getAttributeNode(n);return o&&o.value!==!1?n.toLowerCase():t},set:function(e,t,n){return t===!1?b.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&b.propFix[n]||n,n):e[b.camelCase("default-"+n)]=e[n]=!0,n}},K&&Q||(b.attrHooks.value={get:function(e,n){var r=e.getAttributeNode(n);return b.nodeName(e,"input")?e.defaultValue:r&&r.specified?r.value:t},set:function(e,n,r){return b.nodeName(e,"input")?(e.defaultValue=n,t):I&&I.set(e,n,r)}}),Q||(I=b.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&("id"===n||"name"===n||"coords"===n?""!==r.value:r.specified)?r.value:t},set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},b.attrHooks.contenteditable={get:I.get,set:function(e,t,n){I.set(e,""===t?!1:t,n)}},b.each(["width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}})})),b.support.hrefNormalized||(b.each(["href","src","width","height"],function(e,n){b.attrHooks[n]=b.extend(b.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return null==r?t:r}})}),b.each(["href","src"],function(e,t){b.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}})),b.support.style||(b.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),b.support.optSelected||(b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),b.support.enctype||(b.propFix.enctype="encoding"),b.support.checkOn||b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return null===e.getAttribute("value")?"on":e.value}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,n){return b.isArray(n)?e.checked=b.inArray(b(e).val(),n)>=0:t}})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}b.event={global:{},add:function(e,n,r,o,a){var s,u,l,c,p,f,d,h,g,m,y,v=b._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=b.guid++),(u=v.events)||(u=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof b===i||e&&b.event.triggered===e.type?t:b.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(w)||[""],l=n.length;while(l--)s=rt.exec(n[l])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),p=b.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=b.event.special[g]||{},d=b.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&b.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=u[g])||(h=u[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),b.event.global[g]=!0;e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,p,f,d,h,g,m=b.hasData(e)&&b._data(e);if(m&&(c=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(s=rt.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=b.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));u&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||b.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)b.event.remove(e,d+t[l],n,r,!0);b.isEmptyObject(c)&&(delete m.handle,b._removeData(e,"events"))}},trigger:function(n,r,i,a){var s,u,l,c,p,f,d,h=[i||o],g=y.call(n,"type")?n.type:n,m=y.call(n,"namespace")?n.namespace.split("."):[];if(l=f=i=i||o,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+b.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),u=0>g.indexOf(":")&&"on"+g,n=n[b.expando]?n:new b.Event(g,"object"==typeof n&&n),n.isTrigger=!0,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:b.makeArray(r,[n]),p=b.event.special[g]||{},a||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!a&&!p.noBubble&&!b.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(l=l.parentNode);l;l=l.parentNode)h.push(l),f=l;f===(i.ownerDocument||o)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((l=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(b._data(l,"events")||{})[n.type]&&b._data(l,"handle"),s&&s.apply(l,r),s=u&&l[u],s&&b.acceptData(l)&&s.apply&&s.apply(l,r)===!1&&n.preventDefault();if(n.type=g,!(a||n.isDefaultPrevented()||p._default&&p._default.apply(i.ownerDocument,r)!==!1||"click"===g&&b.nodeName(i,"a")||!b.acceptData(i)||!u||!i[g]||b.isWindow(i))){f=i[u],f&&(i[u]=null),b.event.triggered=g;try{i[g]()}catch(v){}b.event.triggered=t,f&&(i[u]=f)}return n.result}},dispatch:function(e){e=b.event.fix(e);var n,r,i,o,a,s=[],u=h.call(arguments),l=(b._data(this,"events")||{})[e.type]||[],c=b.event.special[e.type]||{};if(u[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=b.event.handlers.call(this,e,l),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((b.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,u),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],u=n.delegateCount,l=e.target;if(u&&l.nodeType&&(!e.button||"click"!==e.type))for(;l!=this;l=l.parentNode||this)if(1===l.nodeType&&(l.disabled!==!0||"click"!==e.type)){for(o=[],a=0;u>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?b(r,this).index(l)>=0:b.find(r,this,null,[l]).length),o[r]&&o.push(i);o.length&&s.push({elem:l,handlers:o})}return n.length>u&&s.push({elem:this,handlers:n.slice(u)}),s},fix:function(e){if(e[b.expando])return e;var t,n,r,i=e.type,a=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new b.Event(a),t=r.length;while(t--)n=r[t],e[n]=a[n];return e.target||(e.target=a.srcElement||o),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,a):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,a,s=n.button,u=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||o,a=i.documentElement,r=i.body,e.pageX=n.clientX+(a&&a.scrollLeft||r&&r.scrollLeft||0)-(a&&a.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(a&&a.scrollTop||r&&r.scrollTop||0)-(a&&a.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&u&&(e.relatedTarget=u===e.target?n.toElement:u),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},click:{trigger:function(){return b.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t}},focus:{trigger:function(){if(this!==o.activeElement&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===o.activeElement&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=b.extend(new b.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?b.event.trigger(i,null,t):b.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},b.removeEvent=o.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},b.Event=function(e,n){return this instanceof b.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&b.extend(this,n),this.timeStamp=e&&e.timeStamp||b.now(),this[b.expando]=!0,t):new b.Event(e,n)},b.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){b.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;
-return(!i||i!==r&&!b.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),b.support.submitBubbles||(b.event.special.submit={setup:function(){return b.nodeName(this,"form")?!1:(b.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=b.nodeName(n,"input")||b.nodeName(n,"button")?n.form:t;r&&!b._data(r,"submitBubbles")&&(b.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),b._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&b.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return b.nodeName(this,"form")?!1:(b.event.remove(this,"._submit"),t)}}),b.support.changeBubbles||(b.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(b.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),b.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),b.event.simulate("change",this,e,!0)})),!1):(b.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!b._data(t,"changeBubbles")&&(b.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||b.event.simulate("change",this.parentNode,e,!0)}),b._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return b.event.remove(this,"._change"),!Z.test(this.nodeName)}}),b.support.focusinBubbles||b.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){b.event.simulate(t,e.target,b.event.fix(e),!0)};b.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),b.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return b().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=b.guid++)),this.each(function(){b.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,b(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){b.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){b.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?b.event.trigger(e,n,r,!0):t}}),function(e,t){var n,r,i,o,a,s,u,l,c,p,f,d,h,g,m,y,v,x="sizzle"+-new Date,w=e.document,T={},N=0,C=0,k=it(),E=it(),S=it(),A=typeof t,j=1<<31,D=[],L=D.pop,H=D.push,q=D.slice,M=D.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},_="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=F.replace("w","w#"),B="([*^$|!~]?=)",P="\\["+_+"*("+F+")"+_+"*(?:"+B+_+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+O+")|)|)"+_+"*\\]",R=":("+F+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+P.replace(3,8)+")*)|.*)\\)|)",W=RegExp("^"+_+"+|((?:^|[^\\\\])(?:\\\\.)*)"+_+"+$","g"),$=RegExp("^"+_+"*,"+_+"*"),I=RegExp("^"+_+"*([\\x20\\t\\r\\n\\f>+~])"+_+"*"),z=RegExp(R),X=RegExp("^"+O+"$"),U={ID:RegExp("^#("+F+")"),CLASS:RegExp("^\\.("+F+")"),NAME:RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:RegExp("^("+F.replace("w","w*")+")"),ATTR:RegExp("^"+P),PSEUDO:RegExp("^"+R),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+_+"*(even|odd|(([+-]|)(\\d*)n|)"+_+"*(?:([+-]|)"+_+"*(\\d+)|))"+_+"*\\)|)","i"),needsContext:RegExp("^"+_+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+_+"*((?:-\\d)?\\d*)"+_+"*\\)|)(?=[^-]|$)","i")},V=/[\x20\t\r\n\f]*[+~]/,Y=/^[^{]+\{\s*\[native code/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,G=/^(?:input|select|textarea|button)$/i,Q=/^h\d$/i,K=/'|\\/g,Z=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,et=/\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,tt=function(e,t){var n="0x"+t-65536;return n!==n?t:0>n?String.fromCharCode(n+65536):String.fromCharCode(55296|n>>10,56320|1023&n)};try{q.call(w.documentElement.childNodes,0)[0].nodeType}catch(nt){q=function(e){var t,n=[];while(t=this[e++])n.push(t);return n}}function rt(e){return Y.test(e+"")}function it(){var e,t=[];return e=function(n,r){return t.push(n+=" ")>i.cacheLength&&delete e[t.shift()],e[n]=r}}function ot(e){return e[x]=!0,e}function at(e){var t=p.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}}function st(e,t,n,r){var i,o,a,s,u,l,f,g,m,v;if((t?t.ownerDocument||t:w)!==p&&c(t),t=t||p,n=n||[],!e||"string"!=typeof e)return n;if(1!==(s=t.nodeType)&&9!==s)return[];if(!d&&!r){if(i=J.exec(e))if(a=i[1]){if(9===s){if(o=t.getElementById(a),!o||!o.parentNode)return n;if(o.id===a)return n.push(o),n}else if(t.ownerDocument&&(o=t.ownerDocument.getElementById(a))&&y(t,o)&&o.id===a)return n.push(o),n}else{if(i[2])return H.apply(n,q.call(t.getElementsByTagName(e),0)),n;if((a=i[3])&&T.getByClassName&&t.getElementsByClassName)return H.apply(n,q.call(t.getElementsByClassName(a),0)),n}if(T.qsa&&!h.test(e)){if(f=!0,g=x,m=t,v=9===s&&e,1===s&&"object"!==t.nodeName.toLowerCase()){l=ft(e),(f=t.getAttribute("id"))?g=f.replace(K,"\\$&"):t.setAttribute("id",g),g="[id='"+g+"'] ",u=l.length;while(u--)l[u]=g+dt(l[u]);m=V.test(e)&&t.parentNode||t,v=l.join(",")}if(v)try{return H.apply(n,q.call(m.querySelectorAll(v),0)),n}catch(b){}finally{f||t.removeAttribute("id")}}}return wt(e.replace(W,"$1"),t,n,r)}a=st.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},c=st.setDocument=function(e){var n=e?e.ownerDocument||e:w;return n!==p&&9===n.nodeType&&n.documentElement?(p=n,f=n.documentElement,d=a(n),T.tagNameNoComments=at(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),T.attributes=at(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return"boolean"!==t&&"string"!==t}),T.getByClassName=at(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",e.getElementsByClassName&&e.getElementsByClassName("e").length?(e.lastChild.className="e",2===e.getElementsByClassName("e").length):!1}),T.getByName=at(function(e){e.id=x+0,e.innerHTML="<a name='"+x+"'></a><div name='"+x+"'></div>",f.insertBefore(e,f.firstChild);var t=n.getElementsByName&&n.getElementsByName(x).length===2+n.getElementsByName(x+0).length;return T.getIdNotName=!n.getElementById(x),f.removeChild(e),t}),i.attrHandle=at(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==A&&"#"===e.firstChild.getAttribute("href")})?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},T.getIdNotName?(i.find.ID=function(e,t){if(typeof t.getElementById!==A&&!d){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){return e.getAttribute("id")===t}}):(i.find.ID=function(e,n){if(typeof n.getElementById!==A&&!d){var r=n.getElementById(e);return r?r.id===e||typeof r.getAttributeNode!==A&&r.getAttributeNode("id").value===e?[r]:t:[]}},i.filter.ID=function(e){var t=e.replace(et,tt);return function(e){var n=typeof e.getAttributeNode!==A&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=T.tagNameNoComments?function(e,n){return typeof n.getElementsByTagName!==A?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.NAME=T.getByName&&function(e,n){return typeof n.getElementsByName!==A?n.getElementsByName(name):t},i.find.CLASS=T.getByClassName&&function(e,n){return typeof n.getElementsByClassName===A||d?t:n.getElementsByClassName(e)},g=[],h=[":focus"],(T.qsa=rt(n.querySelectorAll))&&(at(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||h.push("\\["+_+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||h.push(":checked")}),at(function(e){e.innerHTML="<input type='hidden' i=''/>",e.querySelectorAll("[i^='']").length&&h.push("[*^$]="+_+"*(?:\"\"|'')"),e.querySelectorAll(":enabled").length||h.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),h.push(",.*:")})),(T.matchesSelector=rt(m=f.matchesSelector||f.mozMatchesSelector||f.webkitMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&at(function(e){T.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",R)}),h=RegExp(h.join("|")),g=RegExp(g.join("|")),y=rt(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},v=f.compareDocumentPosition?function(e,t){var r;return e===t?(u=!0,0):(r=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t))?1&r||e.parentNode&&11===e.parentNode.nodeType?e===n||y(w,e)?-1:t===n||y(w,t)?1:0:4&r?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return u=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:0;if(o===a)return ut(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?ut(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},u=!1,[0,0].sort(v),T.detectDuplicates=u,p):p},st.matches=function(e,t){return st(e,null,null,t)},st.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Z,"='$1']"),!(!T.matchesSelector||d||g&&g.test(t)||h.test(t)))try{var n=m.call(e,t);if(n||T.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(r){}return st(t,p,null,[e]).length>0},st.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},st.attr=function(e,t){var n;return(e.ownerDocument||e)!==p&&c(e),d||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):d||T.attributes?e.getAttribute(t):((n=e.getAttributeNode(t))||e.getAttribute(t))&&e[t]===!0?t:n&&n.specified?n.value:null},st.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},st.uniqueSort=function(e){var t,n=[],r=1,i=0;if(u=!T.detectDuplicates,e.sort(v),u){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e};function ut(e,t){var n=t&&e,r=n&&(~t.sourceIndex||j)-(~e.sourceIndex||j);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function lt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ct(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function pt(e){return ot(function(t){return t=+t,ot(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}o=st.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=st.selectors={cacheLength:50,createPseudo:ot,match:U,find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(et,tt),e[3]=(e[4]||e[5]||"").replace(et,tt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||st.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&st.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return U.CHILD.test(e[0])?null:(e[4]?e[2]=e[4]:n&&z.test(n)&&(t=ft(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){return"*"===e?function(){return!0}:(e=e.replace(et,tt).toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[e+" "];return t||(t=RegExp("(^|"+_+")"+e+"("+_+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==A&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=st.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[x]||(m[x]={}),l=c[e]||[],d=l[0]===N&&l[1],f=l[0]===N&&l[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[N,d,f];break}}else if(v&&(l=(t[x]||(t[x]={}))[e])&&l[0]===N)f=l[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[x]||(p[x]={}))[e]=[N,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||st.error("unsupported pseudo: "+e);return r[x]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?ot(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=M.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:ot(function(e){var t=[],n=[],r=s(e.replace(W,"$1"));return r[x]?ot(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:ot(function(e){return function(t){return st(e,t).length>0}}),contains:ot(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:ot(function(e){return X.test(e||"")||st.error("unsupported lang: "+e),e=e.replace(et,tt).toLowerCase(),function(t){var n;do if(n=d?t.getAttribute("xml:lang")||t.getAttribute("lang"):t.lang)return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return Q.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:pt(function(){return[0]}),last:pt(function(e,t){return[t-1]}),eq:pt(function(e,t,n){return[0>n?n+t:n]}),even:pt(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:pt(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:pt(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:pt(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}};for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[n]=lt(n);for(n in{submit:!0,reset:!0})i.pseudos[n]=ct(n);function ft(e,t){var n,r,o,a,s,u,l,c=E[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=i.preFilter;while(s){(!n||(r=$.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),u.push(o=[])),n=!1,(r=I.exec(s))&&(n=r.shift(),o.push({value:n,type:r[0].replace(W," ")}),s=s.slice(n.length));for(a in i.filter)!(r=U[a].exec(s))||l[a]&&!(r=l[a](r))||(n=r.shift(),o.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?st.error(e):E(e,u).slice(0)}function dt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function ht(e,t,n){var i=t.dir,o=n&&"parentNode"===i,a=C++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,s){var u,l,c,p=N+" "+a;if(s){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[x]||(t[x]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,s)||r,l[1]===!0)return!0}}function gt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function mt(e,t,n,r,i){var o,a=[],s=0,u=e.length,l=null!=t;for(;u>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),l&&t.push(s));return a}function yt(e,t,n,r,i,o){return r&&!r[x]&&(r=yt(r)),i&&!i[x]&&(i=yt(i,o)),ot(function(o,a,s,u){var l,c,p,f=[],d=[],h=a.length,g=o||xt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:mt(g,f,e,s,u),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,u),r){l=mt(y,d),r(l,[],s,u),c=l.length;while(c--)(p=l[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?M.call(o,p):f[c])>-1&&(o[l]=!(a[l]=p))}}else y=mt(y===a?y.splice(h,y.length):y),i?i(null,a,y,u):H.apply(a,y)})}function vt(e){var t,n,r,o=e.length,a=i.relative[e[0].type],s=a||i.relative[" "],u=a?1:0,c=ht(function(e){return e===t},s,!0),p=ht(function(e){return M.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>u;u++)if(n=i.relative[e[u].type])f=[ht(gt(f),n)];else{if(n=i.filter[e[u].type].apply(null,e[u].matches),n[x]){for(r=++u;o>r;r++)if(i.relative[e[r].type])break;return yt(u>1&&gt(f),u>1&&dt(e.slice(0,u-1)).replace(W,"$1"),n,r>u&&vt(e.slice(u,r)),o>r&&vt(e=e.slice(r)),o>r&&dt(e))}f.push(n)}return gt(f)}function bt(e,t){var n=0,o=t.length>0,a=e.length>0,s=function(s,u,c,f,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,T=l,C=s||a&&i.find.TAG("*",d&&u.parentNode||u),k=N+=null==T?1:Math.random()||.1;for(w&&(l=u!==p&&u,r=n);null!=(h=C[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,u,c)){f.push(h);break}w&&(N=k,r=++n)}o&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,o&&b!==v){g=0;while(m=t[g++])m(x,y,u,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=L.call(f));y=mt(y)}H.apply(f,y),w&&!s&&y.length>0&&v+t.length>1&&st.uniqueSort(f)}return w&&(N=k,l=T),x};return o?ot(s):s}s=st.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=ft(e)),n=t.length;while(n--)o=vt(t[n]),o[x]?r.push(o):i.push(o);o=S(e,bt(i,r))}return o};function xt(e,t,n){var r=0,i=t.length;for(;i>r;r++)st(e,t[r],n);return n}function wt(e,t,n,r){var o,a,u,l,c,p=ft(e);if(!r&&1===p.length){if(a=p[0]=p[0].slice(0),a.length>2&&"ID"===(u=a[0]).type&&9===t.nodeType&&!d&&i.relative[a[1].type]){if(t=i.find.ID(u.matches[0].replace(et,tt),t)[0],!t)return n;e=e.slice(a.shift().value.length)}o=U.needsContext.test(e)?0:a.length;while(o--){if(u=a[o],i.relative[l=u.type])break;if((c=i.find[l])&&(r=c(u.matches[0].replace(et,tt),V.test(a[0].type)&&t.parentNode||t))){if(a.splice(o,1),e=r.length&&dt(a),!e)return H.apply(n,q.call(r,0)),n;break}}}return s(e,p)(r,t,d,n,V.test(e)),n}i.pseudos.nth=i.pseudos.eq;function Tt(){}i.filters=Tt.prototype=i.pseudos,i.setFilters=new Tt,c(),st.attr=b.attr,b.find=st,b.expr=st.selectors,b.expr[":"]=b.expr.pseudos,b.unique=st.uniqueSort,b.text=st.getText,b.isXMLDoc=st.isXML,b.contains=st.contains}(e);var at=/Until$/,st=/^(?:parents|prev(?:Until|All))/,ut=/^.[^:#\[\.,]*$/,lt=b.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};b.fn.extend({find:function(e){var t,n,r,i=this.length;if("string"!=typeof e)return r=this,this.pushStack(b(e).filter(function(){for(t=0;i>t;t++)if(b.contains(r[t],this))return!0}));for(n=[],t=0;i>t;t++)b.find(e,this[t],n);return n=this.pushStack(i>1?b.unique(n):n),n.selector=(this.selector?this.selector+" ":"")+e,n},has:function(e){var t,n=b(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(b.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1))},filter:function(e){return this.pushStack(ft(this,e,!0))},is:function(e){return!!e&&("string"==typeof e?lt.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,o=[],a=lt.test(e)||"string"!=typeof e?b(e,t||this.context):0;for(;i>r;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&11!==n.nodeType){if(a?a.index(n)>-1:b.find.matchesSelector(n,e)){o.push(n);break}n=n.parentNode}}return this.pushStack(o.length>1?b.unique(o):o)},index:function(e){return e?"string"==typeof e?b.inArray(this[0],b(e)):b.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?b(e,t):b.makeArray(e&&e.nodeType?[e]:e),r=b.merge(this.get(),n);return this.pushStack(b.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),b.fn.andSelf=b.fn.addBack;function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}b.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(e,t,n){return b.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(e,t,n){return b.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return b.dir(e,"previousSibling",n)},siblings:function(e){return b.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.merge([],e.childNodes)}},function(e,t){b.fn[e]=function(n,r){var i=b.map(this,t,n);return at.test(e)||(r=n),r&&"string"==typeof r&&(i=b.filter(r,i)),i=this.length>1&&!ct[e]?b.unique(i):i,this.length>1&&st.test(e)&&(i=i.reverse()),this.pushStack(i)}}),b.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),1===t.length?b.find.matchesSelector(t[0],e)?[t[0]]:[]:b.find.matches(e,t)},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!b(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(t=t||0,b.isFunction(t))return b.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return b.grep(e,function(e){return e===t===n});if("string"==typeof t){var r=b.grep(e,function(e){return 1===e.nodeType});if(ut.test(t))return b.filter(t,r,!n);t=b.filter(t,r)}return b.grep(e,function(e){return b.inArray(e,t)>=0===n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/<tbody/i,wt=/<|&#?\w+;/,Tt=/<(?:script|style|link)/i,Nt=/^(?:checkbox|radio)$/i,Ct=/checked\s*(?:[^=]|=\s*.checked.)/i,kt=/^$|\/(?:java|ecma)script/i,Et=/^true\/(.*)/,St=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,At={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:b.support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},jt=dt(o),Dt=jt.appendChild(o.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,b.fn.extend({text:function(e){return b.access(this,function(e){return e===t?b.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(b.isFunction(e))return this.each(function(t){b(this).wrapAll(e.call(this,t))});if(this[0]){var t=b(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return b.isFunction(e)?this.each(function(t){b(this).wrapInner(e.call(this,t))}):this.each(function(){var t=b(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=b.isFunction(e);return this.each(function(n){b(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){b.nodeName(this,"body")||b(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&this.insertBefore(e,this.firstChild)})},before:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,!1,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=0;for(;null!=(n=this[r]);r++)(!e||b.filter(e,[n]).length>0)&&(t||1!==n.nodeType||b.cleanData(Ot(n)),n.parentNode&&(t&&b.contains(n.ownerDocument,n)&&Mt(Ot(n,"script")),n.parentNode.removeChild(n)));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&b.cleanData(Ot(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&b.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return b.clone(this,e,t)})},html:function(e){return b.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!b.support.htmlSerialize&&mt.test(e)||!b.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1></$2>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(b.cleanData(Ot(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){var t=b.isFunction(e);return t||"string"==typeof e||(e=b(e).not(this).detach()),this.domManip([e],!0,function(e){var t=this.nextSibling,n=this.parentNode;n&&(b(this).remove(),n.insertBefore(e,t))})},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=f.apply([],e);var i,o,a,s,u,l,c=0,p=this.length,d=this,h=p-1,g=e[0],m=b.isFunction(g);if(m||!(1>=p||"string"!=typeof g||b.support.checkClone)&&Ct.test(g))return this.each(function(i){var o=d.eq(i);m&&(e[0]=g.call(this,i,n?o.html():t)),o.domManip(e,n,r)});if(p&&(l=b.buildFragment(e,this[0].ownerDocument,!1,this),i=l.firstChild,1===l.childNodes.length&&(l=i),i)){for(n=n&&b.nodeName(i,"tr"),s=b.map(Ot(l,"script"),Ht),a=s.length;p>c;c++)o=l,c!==h&&(o=b.clone(o,!0,!0),a&&b.merge(s,Ot(o,"script"))),r.call(n&&b.nodeName(this[c],"table")?Lt(this[c],"tbody"):this[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,b.map(s,qt),c=0;a>c;c++)o=s[c],kt.test(o.type||"")&&!b._data(o,"globalEval")&&b.contains(u,o)&&(o.src?b.ajax({url:o.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):b.globalEval((o.text||o.textContent||o.innerHTML||"").replace(St,"")));l=i=null}return this}});function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function Ht(e){var t=e.getAttributeNode("type");return e.type=(t&&t.specified)+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function Mt(e,t){var n,r=0;for(;null!=(n=e[r]);r++)b._data(n,"globalEval",!t||b._data(t[r],"globalEval"))}function _t(e,t){if(1===t.nodeType&&b.hasData(e)){var n,r,i,o=b._data(e),a=b._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)b.event.add(t,n,s[n][r])}a.data&&(a.data=b.extend({},a.data))}}function Ft(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!b.support.noCloneEvent&&t[b.expando]){i=b._data(t);for(r in i.events)b.removeEvent(t,r,i.handle);t.removeAttribute(b.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),b.support.html5Clone&&e.innerHTML&&!b.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Nt.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){b.fn[e]=function(e){var n,r=0,i=[],o=b(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),b(o[r])[t](n),d.apply(i,n.get());return this.pushStack(i)}});function Ot(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||b.nodeName(o,n)?s.push(o):b.merge(s,Ot(o,n));return n===t||n&&b.nodeName(e,n)?b.merge([e],s):s}function Bt(e){Nt.test(e.type)&&(e.defaultChecked=e.checked)}b.extend({clone:function(e,t,n){var r,i,o,a,s,u=b.contains(e.ownerDocument,e);if(b.support.html5Clone||b.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(b.support.noCloneEvent&&b.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||b.isXMLDoc(e)))for(r=Ot(o),s=Ot(e),a=0;null!=(i=s[a]);++a)r[a]&&Ft(i,r[a]);if(t)if(n)for(s=s||Ot(e),r=r||Ot(o),a=0;null!=(i=s[a]);a++)_t(i,r[a]);else _t(e,o);return r=Ot(o,"script"),r.length>0&&Mt(r,!u&&Ot(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,u,l,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===b.type(o))b.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),u=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[u]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1></$2>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!b.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!b.support.tbody){o="table"!==u||xt.test(o)?"<table>"!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)b.nodeName(l=o.childNodes[i],"tbody")&&!l.childNodes.length&&o.removeChild(l)
-}b.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),b.support.appendChecked||b.grep(Ot(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===b.inArray(o,r))&&(a=b.contains(o.ownerDocument,o),s=Ot(f.appendChild(o),"script"),a&&Mt(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,u=b.expando,l=b.cache,p=b.support.deleteExpando,f=b.event.special;for(;null!=(n=e[s]);s++)if((t||b.acceptData(n))&&(o=n[u],a=o&&l[o])){if(a.events)for(r in a.events)f[r]?b.event.remove(n,r):b.removeEvent(n,r,a.handle);l[o]&&(delete l[o],p?delete n[u]:typeof n.removeAttribute!==i?n.removeAttribute(u):n[u]=null,c.push(o))}}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+x+")(.*)$","i"),Yt=RegExp("^("+x+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+x+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===b.css(e,"display")||!b.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=b._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=b._data(r,"olddisplay",un(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&b._data(r,"olddisplay",i?n:b.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}b.fn.extend({css:function(e,n){return b.access(this,function(e,n,r){var i,o,a={},s=0;if(b.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=b.css(e,n[s],!1,o);return a}return r!==t?b.style(e,n,r):b.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){var t="boolean"==typeof e;return this.each(function(){(t?e:nn(this))?b(this).show():b(this).hide()})}}),b.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,u=b.camelCase(n),l=e.style;if(n=b.cssProps[u]||(b.cssProps[u]=tn(l,u)),s=b.cssHooks[n]||b.cssHooks[u],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:l[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(b.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||b.cssNumber[u]||(r+="px"),b.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(l[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{l[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,u=b.camelCase(n);return n=b.cssProps[u]||(b.cssProps[u]=tn(e.style,u)),s=b.cssHooks[n]||b.cssHooks[u],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||b.isNumeric(o)?o||0:a):a},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s.getPropertyValue(n)||s[n]:t,l=e.style;return s&&(""!==u||b.contains(e.ownerDocument,e)||(u=b.style(e,n)),Yt.test(u)&&Ut.test(n)&&(i=l.width,o=l.minWidth,a=l.maxWidth,l.minWidth=l.maxWidth=l.width=u,u=s.width,l.width=i,l.minWidth=o,l.maxWidth=a)),u}):o.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),u=s?s[n]:t,l=e.style;return null==u&&l&&l[n]&&(u=l[n]),Yt.test(u)&&!zt.test(n)&&(i=l.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),l.left="fontSize"===n?"1em":u,u=l.pixelLeft+"px",l.left=i,a&&(o.left=a)),""===u?"auto":u});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=b.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=b.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=b.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=b.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=b.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(b.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function un(e){var t=o,n=Gt[e];return n||(n=ln(e,t),"none"!==n&&n||(Pt=(Pt||b("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(Pt[0].contentWindow||Pt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=ln(e,t),Pt.detach()),Gt[e]=n),n}function ln(e,t){var n=b(t.createElement(e)).appendTo(t.body),r=b.css(n[0],"display");return n.remove(),r}b.each(["height","width"],function(e,n){b.cssHooks[n]={get:function(e,r,i){return r?0===e.offsetWidth&&Xt.test(b.css(e,"display"))?b.swap(e,Qt,function(){return sn(e,n,i)}):sn(e,n,i):t},set:function(e,t,r){var i=r&&Rt(e);return on(e,t,r?an(e,n,r,b.support.boxSizing&&"border-box"===b.css(e,"boxSizing",!1,i),i):0)}}}),b.support.opacity||(b.cssHooks.opacity={get:function(e,t){return It.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=b.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===b.trim(o.replace($t,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=$t.test(o)?o.replace($t,i):o+" "+i)}}),b(function(){b.support.reliableMarginRight||(b.cssHooks.marginRight={get:function(e,n){return n?b.swap(e,{display:"inline-block"},Wt,[e,"marginRight"]):t}}),!b.support.pixelPosition&&b.fn.position&&b.each(["top","left"],function(e,n){b.cssHooks[n]={get:function(e,r){return r?(r=Wt(e,n),Yt.test(r)?b(e).position()[n]+"px":r):t}}})}),b.expr&&b.expr.filters&&(b.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight||!b.support.reliableHiddenOffsets&&"none"===(e.style&&e.style.display||b.css(e,"display"))},b.expr.filters.visible=function(e){return!b.expr.filters.hidden(e)}),b.each({margin:"",padding:"",border:"Width"},function(e,t){b.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+Zt[r]+t]=o[r]||o[r-2]||o[0];return i}},Ut.test(e)||(b.cssHooks[e+t].set=on)});var cn=/%20/g,pn=/\[\]$/,fn=/\r?\n/g,dn=/^(?:submit|button|image|reset|file)$/i,hn=/^(?:input|select|textarea|keygen)/i;b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=b.prop(this,"elements");return e?b.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!b(this).is(":disabled")&&hn.test(this.nodeName)&&!dn.test(e)&&(this.checked||!Nt.test(e))}).map(function(e,t){var n=b(this).val();return null==n?null:b.isArray(n)?b.map(n,function(e){return{name:t.name,value:e.replace(fn,"\r\n")}}):{name:t.name,value:n.replace(fn,"\r\n")}}).get()}}),b.param=function(e,n){var r,i=[],o=function(e,t){t=b.isFunction(t)?t():null==t?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(n===t&&(n=b.ajaxSettings&&b.ajaxSettings.traditional),b.isArray(e)||e.jquery&&!b.isPlainObject(e))b.each(e,function(){o(this.name,this.value)});else for(r in e)gn(r,e[r],n,o);return i.join("&").replace(cn,"+")};function gn(e,t,n,r){var i;if(b.isArray(t))b.each(t,function(t,i){n||pn.test(e)?r(e,i):gn(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==b.type(t))r(e,t);else for(i in t)gn(e+"["+i+"]",t[i],n,r)}b.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){b.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),b.fn.hover=function(e,t){return this.mouseenter(e).mouseleave(t||e)};var mn,yn,vn=b.now(),bn=/\?/,xn=/#.*$/,wn=/([?&])_=[^&]*/,Tn=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Nn=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Cn=/^(?:GET|HEAD)$/,kn=/^\/\//,En=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,Sn=b.fn.load,An={},jn={},Dn="*/".concat("*");try{yn=a.href}catch(Ln){yn=o.createElement("a"),yn.href="",yn=yn.href}mn=En.exec(yn.toLowerCase())||[];function Hn(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(b.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function qn(e,n,r,i){var o={},a=e===jn;function s(u){var l;return o[u]=!0,b.each(e[u]||[],function(e,u){var c=u(n,r,i);return"string"!=typeof c||a||o[c]?a?!(l=c):t:(n.dataTypes.unshift(c),s(c),!1)}),l}return s(n.dataTypes[0])||!o["*"]&&s("*")}function Mn(e,n){var r,i,o=b.ajaxSettings.flatOptions||{};for(i in n)n[i]!==t&&((o[i]?e:r||(r={}))[i]=n[i]);return r&&b.extend(!0,e,r),e}b.fn.load=function(e,n,r){if("string"!=typeof e&&Sn)return Sn.apply(this,arguments);var i,o,a,s=this,u=e.indexOf(" ");return u>=0&&(i=e.slice(u,e.length),e=e.slice(0,u)),b.isFunction(n)?(r=n,n=t):n&&"object"==typeof n&&(a="POST"),s.length>0&&b.ajax({url:e,type:a,dataType:"html",data:n}).done(function(e){o=arguments,s.html(i?b("<div>").append(b.parseHTML(e)).find(i):e)}).complete(r&&function(e,t){s.each(r,o||[e.responseText,t,e])}),this},b.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){b.fn[t]=function(e){return this.on(t,e)}}),b.each(["get","post"],function(e,n){b[n]=function(e,r,i,o){return b.isFunction(r)&&(o=o||i,i=r,r=t),b.ajax({url:e,type:n,dataType:o,data:r,success:i})}}),b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:yn,type:"GET",isLocal:Nn.test(mn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Dn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Mn(Mn(e,b.ajaxSettings),t):Mn(b.ajaxSettings,e)},ajaxPrefilter:Hn(An),ajaxTransport:Hn(jn),ajax:function(e,n){"object"==typeof e&&(n=e,e=t),n=n||{};var r,i,o,a,s,u,l,c,p=b.ajaxSetup({},n),f=p.context||p,d=p.context&&(f.nodeType||f.jquery)?b(f):b.event,h=b.Deferred(),g=b.Callbacks("once memory"),m=p.statusCode||{},y={},v={},x=0,T="canceled",N={readyState:0,getResponseHeader:function(e){var t;if(2===x){if(!c){c={};while(t=Tn.exec(a))c[t[1].toLowerCase()]=t[2]}t=c[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===x?a:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return x||(e=v[n]=v[n]||e,y[e]=t),this},overrideMimeType:function(e){return x||(p.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>x)for(t in e)m[t]=[m[t],e[t]];else N.always(e[N.status]);return this},abort:function(e){var t=e||T;return l&&l.abort(t),k(0,t),this}};if(h.promise(N).complete=g.add,N.success=N.done,N.error=N.fail,p.url=((e||p.url||yn)+"").replace(xn,"").replace(kn,mn[1]+"//"),p.type=n.method||n.type||p.method||p.type,p.dataTypes=b.trim(p.dataType||"*").toLowerCase().match(w)||[""],null==p.crossDomain&&(r=En.exec(p.url.toLowerCase()),p.crossDomain=!(!r||r[1]===mn[1]&&r[2]===mn[2]&&(r[3]||("http:"===r[1]?80:443))==(mn[3]||("http:"===mn[1]?80:443)))),p.data&&p.processData&&"string"!=typeof p.data&&(p.data=b.param(p.data,p.traditional)),qn(An,p,n,N),2===x)return N;u=p.global,u&&0===b.active++&&b.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Cn.test(p.type),o=p.url,p.hasContent||(p.data&&(o=p.url+=(bn.test(o)?"&":"?")+p.data,delete p.data),p.cache===!1&&(p.url=wn.test(o)?o.replace(wn,"$1_="+vn++):o+(bn.test(o)?"&":"?")+"_="+vn++)),p.ifModified&&(b.lastModified[o]&&N.setRequestHeader("If-Modified-Since",b.lastModified[o]),b.etag[o]&&N.setRequestHeader("If-None-Match",b.etag[o])),(p.data&&p.hasContent&&p.contentType!==!1||n.contentType)&&N.setRequestHeader("Content-Type",p.contentType),N.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Dn+"; q=0.01":""):p.accepts["*"]);for(i in p.headers)N.setRequestHeader(i,p.headers[i]);if(p.beforeSend&&(p.beforeSend.call(f,N,p)===!1||2===x))return N.abort();T="abort";for(i in{success:1,error:1,complete:1})N[i](p[i]);if(l=qn(jn,p,n,N)){N.readyState=1,u&&d.trigger("ajaxSend",[N,p]),p.async&&p.timeout>0&&(s=setTimeout(function(){N.abort("timeout")},p.timeout));try{x=1,l.send(y,k)}catch(C){if(!(2>x))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,n,r,i){var c,y,v,w,T,C=n;2!==x&&(x=2,s&&clearTimeout(s),l=t,a=i||"",N.readyState=e>0?4:0,r&&(w=_n(p,N,r)),e>=200&&300>e||304===e?(p.ifModified&&(T=N.getResponseHeader("Last-Modified"),T&&(b.lastModified[o]=T),T=N.getResponseHeader("etag"),T&&(b.etag[o]=T)),204===e?(c=!0,C="nocontent"):304===e?(c=!0,C="notmodified"):(c=Fn(p,w),C=c.state,y=c.data,v=c.error,c=!v)):(v=C,(e||!C)&&(C="error",0>e&&(e=0))),N.status=e,N.statusText=(n||C)+"",c?h.resolveWith(f,[y,C,N]):h.rejectWith(f,[N,C,v]),N.statusCode(m),m=t,u&&d.trigger(c?"ajaxSuccess":"ajaxError",[N,p,c?y:v]),g.fireWith(f,[N,C]),u&&(d.trigger("ajaxComplete",[N,p]),--b.active||b.event.trigger("ajaxStop")))}return N},getScript:function(e,n){return b.get(e,t,n,"script")},getJSON:function(e,t,n){return b.get(e,t,n,"json")}});function _n(e,n,r){var i,o,a,s,u=e.contents,l=e.dataTypes,c=e.responseFields;for(s in c)s in r&&(n[c[s]]=r[s]);while("*"===l[0])l.shift(),o===t&&(o=e.mimeType||n.getResponseHeader("Content-Type"));if(o)for(s in u)if(u[s]&&u[s].test(o)){l.unshift(s);break}if(l[0]in r)a=l[0];else{for(s in r){if(!l[0]||e.converters[s+" "+l[0]]){a=s;break}i||(i=s)}a=a||i}return a?(a!==l[0]&&l.unshift(a),r[a]):t}function Fn(e,t){var n,r,i,o,a={},s=0,u=e.dataTypes.slice(),l=u[0];if(e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u[1])for(i in e.converters)a[i.toLowerCase()]=e.converters[i];for(;r=u[++s];)if("*"!==r){if("*"!==l&&l!==r){if(i=a[l+" "+r]||a["* "+r],!i)for(n in a)if(o=n.split(" "),o[1]===r&&(i=a[l+" "+o[0]]||a["* "+o[0]])){i===!0?i=a[n]:a[n]!==!0&&(r=o[0],u.splice(s--,0,r));break}if(i!==!0)if(i&&e["throws"])t=i(t);else try{t=i(t)}catch(c){return{state:"parsererror",error:i?c:"No conversion from "+l+" to "+r}}}l=r}return{state:"success",data:t}}b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return b.globalEval(e),e}}}),b.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),b.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=o.head||b("head")[0]||o.documentElement;return{send:function(t,i){n=o.createElement("script"),n.async=!0,e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,t){(t||!n.readyState||/loaded|complete/.test(n.readyState))&&(n.onload=n.onreadystatechange=null,n.parentNode&&n.parentNode.removeChild(n),n=null,t||i(200,"success"))},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(t,!0)}}}});var On=[],Bn=/(=)\?(?=&|$)|\?\?/;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=On.pop()||b.expando+"_"+vn++;return this[e]=!0,e}}),b.ajaxPrefilter("json jsonp",function(n,r,i){var o,a,s,u=n.jsonp!==!1&&(Bn.test(n.url)?"url":"string"==typeof n.data&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Bn.test(n.data)&&"data");return u||"jsonp"===n.dataTypes[0]?(o=n.jsonpCallback=b.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,u?n[u]=n[u].replace(Bn,"$1"+o):n.jsonp!==!1&&(n.url+=(bn.test(n.url)?"&":"?")+n.jsonp+"="+o),n.converters["script json"]=function(){return s||b.error(o+" was not called"),s[0]},n.dataTypes[0]="json",a=e[o],e[o]=function(){s=arguments},i.always(function(){e[o]=a,n[o]&&(n.jsonpCallback=r.jsonpCallback,On.push(o)),s&&b.isFunction(a)&&a(s[0]),s=a=t}),"script"):t});var Pn,Rn,Wn=0,$n=e.ActiveXObject&&function(){var e;for(e in Pn)Pn[e](t,!0)};function In(){try{return new e.XMLHttpRequest}catch(t){}}function zn(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}b.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&In()||zn()}:In,Rn=b.ajaxSettings.xhr(),b.support.cors=!!Rn&&"withCredentials"in Rn,Rn=b.support.ajax=!!Rn,Rn&&b.ajaxTransport(function(n){if(!n.crossDomain||b.support.cors){var r;return{send:function(i,o){var a,s,u=n.xhr();if(n.username?u.open(n.type,n.url,n.async,n.username,n.password):u.open(n.type,n.url,n.async),n.xhrFields)for(s in n.xhrFields)u[s]=n.xhrFields[s];n.mimeType&&u.overrideMimeType&&u.overrideMimeType(n.mimeType),n.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");try{for(s in i)u.setRequestHeader(s,i[s])}catch(l){}u.send(n.hasContent&&n.data||null),r=function(e,i){var s,l,c,p;try{if(r&&(i||4===u.readyState))if(r=t,a&&(u.onreadystatechange=b.noop,$n&&delete Pn[a]),i)4!==u.readyState&&u.abort();else{p={},s=u.status,l=u.getAllResponseHeaders(),"string"==typeof u.responseText&&(p.text=u.responseText);try{c=u.statusText}catch(f){c=""}s||!n.isLocal||n.crossDomain?1223===s&&(s=204):s=p.text?200:404}}catch(d){i||o(-1,d)}p&&o(s,c,p,l)},n.async?4===u.readyState?setTimeout(r):(a=++Wn,$n&&(Pn||(Pn={},b(e).unload($n)),Pn[a]=r),u.onreadystatechange=r):r()},abort:function(){r&&r(t,!0)}}}});var Xn,Un,Vn=/^(?:toggle|show|hide)$/,Yn=RegExp("^(?:([+-])=|)("+x+")([a-z%]*)$","i"),Jn=/queueHooks$/,Gn=[nr],Qn={"*":[function(e,t){var n,r,i=this.createTween(e,t),o=Yn.exec(t),a=i.cur(),s=+a||0,u=1,l=20;if(o){if(n=+o[2],r=o[3]||(b.cssNumber[e]?"":"px"),"px"!==r&&s){s=b.css(i.elem,e,!0)||n||1;do u=u||".5",s/=u,b.style(i.elem,e,s+r);while(u!==(u=i.cur()/a)&&1!==u&&--l)}i.unit=r,i.start=s,i.end=o[1]?s+(o[1]+1)*n:n}return i}]};function Kn(){return setTimeout(function(){Xn=t}),Xn=b.now()}function Zn(e,t){b.each(t,function(t,n){var r=(Qn[t]||[]).concat(Qn["*"]),i=0,o=r.length;for(;o>i;i++)if(r[i].call(e,t,n))return})}function er(e,t,n){var r,i,o=0,a=Gn.length,s=b.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=Xn||Kn(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;for(;u>a;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),1>o&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:b.extend({},t),opts:b.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:Xn||Kn(),duration:n.duration,tweens:[],createTween:function(t,n){var r=b.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?s.resolveWith(e,[l,t]):s.rejectWith(e,[l,t]),this}}),c=l.props;for(tr(c,l.opts.specialEasing);a>o;o++)if(r=Gn[o].call(l,e,c,l.opts))return r;return Zn(l,c),b.isFunction(l.opts.start)&&l.opts.start.call(e,l),b.fx.timer(b.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function tr(e,t){var n,r,i,o,a;for(i in e)if(r=b.camelCase(i),o=t[r],n=e[i],b.isArray(n)&&(o=n[1],n=e[i]=n[0]),i!==r&&(e[r]=n,delete e[i]),a=b.cssHooks[r],a&&"expand"in a){n=a.expand(n),delete e[r];for(i in n)i in e||(e[i]=n[i],t[i]=o)}else t[r]=o}b.Animation=b.extend(er,{tweener:function(e,t){b.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Qn[n]=Qn[n]||[],Qn[n].unshift(t)},prefilter:function(e,t){t?Gn.unshift(e):Gn.push(e)}});function nr(e,t,n){var r,i,o,a,s,u,l,c,p,f=this,d=e.style,h={},g=[],m=e.nodeType&&nn(e);n.queue||(c=b._queueHooks(e,"fx"),null==c.unqueued&&(c.unqueued=0,p=c.empty.fire,c.empty.fire=function(){c.unqueued||p()}),c.unqueued++,f.always(function(){f.always(function(){c.unqueued--,b.queue(e,"fx").length||c.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[d.overflow,d.overflowX,d.overflowY],"inline"===b.css(e,"display")&&"none"===b.css(e,"float")&&(b.support.inlineBlockNeedsLayout&&"inline"!==un(e.nodeName)?d.zoom=1:d.display="inline-block")),n.overflow&&(d.overflow="hidden",b.support.shrinkWrapBlocks||f.always(function(){d.overflow=n.overflow[0],d.overflowX=n.overflow[1],d.overflowY=n.overflow[2]}));for(i in t)if(a=t[i],Vn.exec(a)){if(delete t[i],u=u||"toggle"===a,a===(m?"hide":"show"))continue;g.push(i)}if(o=g.length){s=b._data(e,"fxshow")||b._data(e,"fxshow",{}),"hidden"in s&&(m=s.hidden),u&&(s.hidden=!m),m?b(e).show():f.done(function(){b(e).hide()}),f.done(function(){var t;b._removeData(e,"fxshow");for(t in h)b.style(e,t,h[t])});for(i=0;o>i;i++)r=g[i],l=f.createTween(r,m?s[r]:0),h[r]=s[r]||b.style(e,r),r in s||(s[r]=l.start,m&&(l.end=l.start,l.start="width"===r||"height"===r?1:0))}}function rr(e,t,n,r,i){return new rr.prototype.init(e,t,n,r,i)}b.Tween=rr,rr.prototype={constructor:rr,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(b.cssNumber[n]?"":"px")},cur:function(){var e=rr.propHooks[this.prop];return e&&e.get?e.get(this):rr.propHooks._default.get(this)},run:function(e){var t,n=rr.propHooks[this.prop];return this.pos=t=this.options.duration?b.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):rr.propHooks._default.set(this),this}},rr.prototype.init.prototype=rr.prototype,rr.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=b.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){b.fx.step[e.prop]?b.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[b.cssProps[e.prop]]||b.cssHooks[e.prop])?b.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},rr.propHooks.scrollTop=rr.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},b.each(["toggle","show","hide"],function(e,t){var n=b.fn[t];b.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ir(t,!0),e,r,i)}}),b.fn.extend({fadeTo:function(e,t,n,r){return this.filter(nn).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=b.isEmptyObject(e),o=b.speed(t,n,r),a=function(){var t=er(this,b.extend({},e),o);a.finish=function(){t.stop(!0)},(i||b._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return"string"!=typeof e&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=null!=e&&e+"queueHooks",o=b.timers,a=b._data(this);if(n)a[n]&&a[n].stop&&i(a[n]);else for(n in a)a[n]&&a[n].stop&&Jn.test(n)&&i(a[n]);for(n=o.length;n--;)o[n].elem!==this||null!=e&&o[n].queue!==e||(o[n].anim.stop(r),t=!1,o.splice(n,1));(t||!r)&&b.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=b._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=b.timers,a=r?r.length:0;for(n.finish=!0,b.queue(this,e,[]),i&&i.cur&&i.cur.finish&&i.cur.finish.call(this),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;a>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function ir(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=Zt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}b.each({slideDown:ir("show"),slideUp:ir("hide"),slideToggle:ir("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){b.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),b.speed=function(e,t,n){var r=e&&"object"==typeof e?b.extend({},e):{complete:n||!n&&t||b.isFunction(e)&&e,duration:e,easing:n&&t||t&&!b.isFunction(t)&&t};return r.duration=b.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in b.fx.speeds?b.fx.speeds[r.duration]:b.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){b.isFunction(r.old)&&r.old.call(this),r.queue&&b.dequeue(this,r.queue)},r},b.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},b.timers=[],b.fx=rr.prototype.init,b.fx.tick=function(){var e,n=b.timers,r=0;for(Xn=b.now();n.length>r;r++)e=n[r],e()||n[r]!==e||n.splice(r--,1);n.length||b.fx.stop(),Xn=t},b.fx.timer=function(e){e()&&b.timers.push(e)&&b.fx.start()},b.fx.interval=13,b.fx.start=function(){Un||(Un=setInterval(b.fx.tick,b.fx.interval))},b.fx.stop=function(){clearInterval(Un),Un=null},b.fx.speeds={slow:600,fast:200,_default:400},b.fx.step={},b.expr&&b.expr.filters&&(b.expr.filters.animated=function(e){return b.grep(b.timers,function(t){return e===t.elem}).length}),b.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){b.offset.setOffset(this,e,t)});var n,r,o={top:0,left:0},a=this[0],s=a&&a.ownerDocument;if(s)return n=s.documentElement,b.contains(n,a)?(typeof a.getBoundingClientRect!==i&&(o=a.getBoundingClientRect()),r=or(s),{top:o.top+(r.pageYOffset||n.scrollTop)-(n.clientTop||0),left:o.left+(r.pageXOffset||n.scrollLeft)-(n.clientLeft||0)}):o},b.offset={setOffset:function(e,t,n){var r=b.css(e,"position");"static"===r&&(e.style.position="relative");var i=b(e),o=i.offset(),a=b.css(e,"top"),s=b.css(e,"left"),u=("absolute"===r||"fixed"===r)&&b.inArray("auto",[a,s])>-1,l={},c={},p,f;u?(c=i.position(),p=c.top,f=c.left):(p=parseFloat(a)||0,f=parseFloat(s)||0),b.isFunction(t)&&(t=t.call(e,n,o)),null!=t.top&&(l.top=t.top-o.top+p),null!=t.left&&(l.left=t.left-o.left+f),"using"in t?t.using.call(e,l):i.css(l)}},b.fn.extend({position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===b.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),b.nodeName(e[0],"html")||(n=e.offset()),n.top+=b.css(e[0],"borderTopWidth",!0),n.left+=b.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-b.css(r,"marginTop",!0),left:t.left-n.left-b.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||o.documentElement;while(e&&!b.nodeName(e,"html")&&"static"===b.css(e,"position"))e=e.offsetParent;return e||o.documentElement})}}),b.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);b.fn[e]=function(i){return b.access(this,function(e,i,o){var a=or(e);return o===t?a?n in a?a[n]:a.document.documentElement[i]:e[i]:(a?a.scrollTo(r?b(a).scrollLeft():o,r?o:b(a).scrollTop()):e[i]=o,t)},e,i,arguments.length,null)}});function or(e){return b.isWindow(e)?e:9===e.nodeType?e.defaultView||e.parentWindow:!1}b.each({Height:"height",Width:"width"},function(e,n){b.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){b.fn[i]=function(i,o){var a=arguments.length&&(r||"boolean"!=typeof i),s=r||(i===!0||o===!0?"margin":"border");return b.access(this,function(n,r,i){var o;return b.isWindow(n)?n.document.documentElement["client"+e]:9===n.nodeType?(o=n.documentElement,Math.max(n.body["scroll"+e],o["scroll"+e],n.body["offset"+e],o["offset"+e],o["client"+e])):i===t?b.css(n,r,s):b.style(n,r,i,s)},n,a?i:t,a,null)}})}),e.jQuery=e.$=b,"function"==typeof define&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return b})})(window); \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/prepopulate.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/prepopulate.js
deleted file mode 100644
index 24f24f9..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/prepopulate.js
+++ /dev/null
@@ -1,34 +0,0 @@
-(function($) {
- $.fn.prepopulate = function(dependencies, maxLength) {
- /*
- Depends on urlify.js
- Populates a selected field with the values of the dependent fields,
- URLifies and shortens the string.
- dependencies - array of dependent fields id's
- maxLength - maximum length of the URLify'd string
- */
- return this.each(function() {
- var field = $(this);
-
- field.data('_changed', false);
- field.change(function() {
- field.data('_changed', true);
- });
-
- var populate = function () {
- // Bail if the fields value has changed
- if (field.data('_changed') == true) return;
-
- var values = [];
- $.each(dependencies, function(i, field) {
- if ($(field).val().length > 0) {
- values.push($(field).val());
- }
- })
- field.val(URLify(values.join(' '), maxLength));
- };
-
- $(dependencies.join(',')).keyup(populate).change(populate).focus(populate);
- });
- };
-})(django.jQuery);
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/prepopulate.min.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/prepopulate.min.js
deleted file mode 100644
index aa94937..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/prepopulate.min.js
+++ /dev/null
@@ -1 +0,0 @@
-(function(a){a.fn.prepopulate=function(d,g){return this.each(function(){var b=a(this);b.data("_changed",false);b.change(function(){b.data("_changed",true)});var c=function(){if(b.data("_changed")!=true){var e=[];a.each(d,function(h,f){a(f).val().length>0&&e.push(a(f).val())});b.val(URLify(e.join(" "),g))}};a(d.join(",")).keyup(c).change(c).focus(c)})}})(django.jQuery);
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/timeparse.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/timeparse.js
deleted file mode 100644
index 882f41d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/timeparse.js
+++ /dev/null
@@ -1,94 +0,0 @@
-var timeParsePatterns = [
- // 9
- { re: /^\d{1,2}$/i,
- handler: function(bits) {
- if (bits[0].length == 1) {
- return '0' + bits[0] + ':00';
- } else {
- return bits[0] + ':00';
- }
- }
- },
- // 13:00
- { re: /^\d{2}[:.]\d{2}$/i,
- handler: function(bits) {
- return bits[0].replace('.', ':');
- }
- },
- // 9:00
- { re: /^\d[:.]\d{2}$/i,
- handler: function(bits) {
- return '0' + bits[0].replace('.', ':');
- }
- },
- // 3 am / 3 a.m. / 3am
- { re: /^(\d+)\s*([ap])(?:.?m.?)?$/i,
- handler: function(bits) {
- var hour = parseInt(bits[1]);
- if (hour == 12) {
- hour = 0;
- }
- if (bits[2].toLowerCase() == 'p') {
- if (hour == 12) {
- hour = 0;
- }
- return (hour + 12) + ':00';
- } else {
- if (hour < 10) {
- return '0' + hour + ':00';
- } else {
- return hour + ':00';
- }
- }
- }
- },
- // 3.30 am / 3:15 a.m. / 3.00am
- { re: /^(\d+)[.:](\d{2})\s*([ap]).?m.?$/i,
- handler: function(bits) {
- var hour = parseInt(bits[1]);
- var mins = parseInt(bits[2]);
- if (mins < 10) {
- mins = '0' + mins;
- }
- if (hour == 12) {
- hour = 0;
- }
- if (bits[3].toLowerCase() == 'p') {
- if (hour == 12) {
- hour = 0;
- }
- return (hour + 12) + ':' + mins;
- } else {
- if (hour < 10) {
- return '0' + hour + ':' + mins;
- } else {
- return hour + ':' + mins;
- }
- }
- }
- },
- // noon
- { re: /^no/i,
- handler: function(bits) {
- return '12:00';
- }
- },
- // midnight
- { re: /^mid/i,
- handler: function(bits) {
- return '00:00';
- }
- }
-];
-
-function parseTimeString(s) {
- for (var i = 0; i < timeParsePatterns.length; i++) {
- var re = timeParsePatterns[i].re;
- var handler = timeParsePatterns[i].handler;
- var bits = re.exec(s);
- if (bits) {
- return handler(bits);
- }
- }
- return s;
-}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/urlify.js b/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/urlify.js
deleted file mode 100644
index d8f2549..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/static/admin/js/urlify.js
+++ /dev/null
@@ -1,140 +0,0 @@
-var LATIN_MAP = {
- 'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', 'Ç':
- 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', 'Î': 'I',
- 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', 'Õ': 'O', 'Ö':
- 'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', 'Ü': 'U', 'Ű': 'U',
- 'Ý': 'Y', 'Þ': 'TH', 'ß': 'ss', 'à':'a', 'á':'a', 'â': 'a', 'ã': 'a', 'ä':
- 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', 'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e',
- 'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó':
- 'o', 'ô': 'o', 'õ': 'o', 'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u',
- 'û': 'u', 'ü': 'u', 'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y'
-}
-var LATIN_SYMBOLS_MAP = {
- '©':'(c)'
-}
-var GREEK_MAP = {
- 'α':'a', 'β':'b', 'γ':'g', 'δ':'d', 'ε':'e', 'ζ':'z', 'η':'h', 'θ':'8',
- 'ι':'i', 'κ':'k', 'λ':'l', 'μ':'m', 'ν':'n', 'ξ':'3', 'ο':'o', 'π':'p',
- 'ρ':'r', 'σ':'s', 'τ':'t', 'υ':'y', 'φ':'f', 'χ':'x', 'ψ':'ps', 'ω':'w',
- 'ά':'a', 'έ':'e', 'ί':'i', 'ό':'o', 'ύ':'y', 'ή':'h', 'ώ':'w', 'ς':'s',
- 'ϊ':'i', 'ΰ':'y', 'ϋ':'y', 'ΐ':'i',
- 'Α':'A', 'Β':'B', 'Γ':'G', 'Δ':'D', 'Ε':'E', 'Ζ':'Z', 'Η':'H', 'Θ':'8',
- 'Ι':'I', 'Κ':'K', 'Λ':'L', 'Μ':'M', 'Ν':'N', 'Ξ':'3', 'Ο':'O', 'Π':'P',
- 'Ρ':'R', 'Σ':'S', 'Τ':'T', 'Υ':'Y', 'Φ':'F', 'Χ':'X', 'Ψ':'PS', 'Ω':'W',
- 'Ά':'A', 'Έ':'E', 'Ί':'I', 'Ό':'O', 'Ύ':'Y', 'Ή':'H', 'Ώ':'W', 'Ϊ':'I',
- 'Ϋ':'Y'
-}
-var TURKISH_MAP = {
- 'ş':'s', 'Ş':'S', 'ı':'i', 'İ':'I', 'ç':'c', 'Ç':'C', 'ü':'u', 'Ü':'U',
- 'ö':'o', 'Ö':'O', 'ğ':'g', 'Ğ':'G'
-}
-var RUSSIAN_MAP = {
- 'а':'a', 'б':'b', 'в':'v', 'г':'g', 'д':'d', 'е':'e', 'ё':'yo', 'ж':'zh',
- 'з':'z', 'и':'i', 'й':'j', 'к':'k', 'л':'l', 'м':'m', 'н':'n', 'о':'o',
- 'п':'p', 'р':'r', 'с':'s', 'т':'t', 'у':'u', 'ф':'f', 'х':'h', 'ц':'c',
- 'ч':'ch', 'ш':'sh', 'щ':'sh', 'ъ':'', 'ы':'y', 'ь':'', 'э':'e', 'ю':'yu',
- 'я':'ya',
- 'А':'A', 'Б':'B', 'В':'V', 'Г':'G', 'Д':'D', 'Е':'E', 'Ё':'Yo', 'Ж':'Zh',
- 'З':'Z', 'И':'I', 'Й':'J', 'К':'K', 'Л':'L', 'М':'M', 'Н':'N', 'О':'O',
- 'П':'P', 'Р':'R', 'С':'S', 'Т':'T', 'У':'U', 'Ф':'F', 'Х':'H', 'Ц':'C',
- 'Ч':'Ch', 'Ш':'Sh', 'Щ':'Sh', 'Ъ':'', 'Ы':'Y', 'Ь':'', 'Э':'E', 'Ю':'Yu',
- 'Я':'Ya'
-}
-var UKRAINIAN_MAP = {
- 'Є':'Ye', 'І':'I', 'Ї':'Yi', 'Ґ':'G', 'є':'ye', 'і':'i', 'ї':'yi', 'ґ':'g'
-}
-var CZECH_MAP = {
- 'č':'c', 'ď':'d', 'ě':'e', 'ň': 'n', 'ř':'r', 'š':'s', 'ť':'t', 'ů':'u',
- 'ž':'z', 'Č':'C', 'Ď':'D', 'Ě':'E', 'Ň': 'N', 'Ř':'R', 'Š':'S', 'Ť':'T',
- 'Ů':'U', 'Ž':'Z'
-}
-
-var POLISH_MAP = {
- 'ą':'a', 'ć':'c', 'ę':'e', 'ł':'l', 'ń':'n', 'ó':'o', 'ś':'s', 'ź':'z',
- 'ż':'z', 'Ą':'A', 'Ć':'C', 'Ę':'e', 'Ł':'L', 'Ń':'N', 'Ó':'o', 'Ś':'S',
- 'Ź':'Z', 'Ż':'Z'
-}
-
-var LATVIAN_MAP = {
- 'ā':'a', 'č':'c', 'ē':'e', 'ģ':'g', 'ī':'i', 'ķ':'k', 'ļ':'l', 'ņ':'n',
- 'š':'s', 'ū':'u', 'ž':'z', 'Ā':'A', 'Č':'C', 'Ē':'E', 'Ģ':'G', 'Ī':'i',
- 'Ķ':'k', 'Ļ':'L', 'Ņ':'N', 'Š':'S', 'Ū':'u', 'Ž':'Z'
-}
-
-var ALL_DOWNCODE_MAPS=new Array()
-ALL_DOWNCODE_MAPS[0]=LATIN_MAP
-ALL_DOWNCODE_MAPS[1]=LATIN_SYMBOLS_MAP
-ALL_DOWNCODE_MAPS[2]=GREEK_MAP
-ALL_DOWNCODE_MAPS[3]=TURKISH_MAP
-ALL_DOWNCODE_MAPS[4]=RUSSIAN_MAP
-ALL_DOWNCODE_MAPS[5]=UKRAINIAN_MAP
-ALL_DOWNCODE_MAPS[6]=CZECH_MAP
-ALL_DOWNCODE_MAPS[7]=POLISH_MAP
-ALL_DOWNCODE_MAPS[8]=LATVIAN_MAP
-
-var Downcoder = new Object();
-Downcoder.Initialize = function()
-{
- if (Downcoder.map) // already made
- return ;
- Downcoder.map ={}
- Downcoder.chars = '' ;
- for(var i in ALL_DOWNCODE_MAPS)
- {
- var lookup = ALL_DOWNCODE_MAPS[i]
- for (var c in lookup)
- {
- Downcoder.map[c] = lookup[c] ;
- Downcoder.chars += c ;
- }
- }
- Downcoder.regex = new RegExp('[' + Downcoder.chars + ']|[^' + Downcoder.chars + ']+','g') ;
-}
-
-downcode= function( slug )
-{
- Downcoder.Initialize() ;
- var downcoded =""
- var pieces = slug.match(Downcoder.regex);
- if(pieces)
- {
- for (var i = 0 ; i < pieces.length ; i++)
- {
- if (pieces[i].length == 1)
- {
- var mapped = Downcoder.map[pieces[i]] ;
- if (mapped != null)
- {
- downcoded+=mapped;
- continue ;
- }
- }
- downcoded+=pieces[i];
- }
- }
- else
- {
- downcoded = slug;
- }
- return downcoded;
-}
-
-
-function URLify(s, num_chars) {
- // changes, e.g., "Petty theft" to "petty_theft"
- // remove all these words from the string before urlifying
- s = downcode(s);
- removelist = ["a", "an", "as", "at", "before", "but", "by", "for", "from",
- "is", "in", "into", "like", "of", "off", "on", "onto", "per",
- "since", "than", "the", "this", "that", "to", "up", "via",
- "with"];
- r = new RegExp('\\b(' + removelist.join('|') + ')\\b', 'gi');
- s = s.replace(r, '');
- // if downcode doesn't hit, the char will be stripped here
- s = s.replace(/[^-\w\s]/g, ''); // remove unneeded chars
- s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces
- s = s.replace(/[-\s]+/g, '-'); // convert spaces to hyphens
- s = s.toLowerCase(); // convert to lowercase
- return s.substring(0, num_chars);// trim to first num_chars chars
-}
-
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/404.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/404.html
deleted file mode 100644
index 9bf4293..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/404.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block title %}{% trans 'Page not found' %}{% endblock %}
-
-{% block content %}
-
-<h2>{% trans 'Page not found' %}</h2>
-
-<p>{% trans "We're sorry, but the requested page could not be found." %}</p>
-
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/500.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/500.html
deleted file mode 100644
index 4842faa..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/500.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; {% trans 'Server error' %}
-</div>
-{% endblock %}
-
-{% block title %}{% trans 'Server error (500)' %}{% endblock %}
-
-{% block content %}
-<h1>{% trans 'Server Error <em>(500)</em>' %}</h1>
-<p>{% trans "There's been an error. It's been reported to the site administrators via email and should be fixed shortly. Thanks for your patience." %}</p>
-
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/actions.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/actions.html
deleted file mode 100644
index aaaa245..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/actions.html
+++ /dev/null
@@ -1,16 +0,0 @@
-{% load i18n %}
-<div class="actions">
- {% for field in action_form %}{% if field.label %}<label>{{ field.label }} {% endif %}{{ field }}{% if field.label %}</label>{% endif %}{% endfor %}
- <button type="submit" class="button" title="{% trans "Run the selected action" %}" name="index" value="{{ action_index|default:0 }}">{% trans "Go" %}</button>
- {% if actions_selection_counter %}
- <script type="text/javascript">var _actions_icnt="{{ cl.result_list|length|default:"0" }}";</script>
- <span class="action-counter">{{ selection_note }}</span>
- {% if cl.result_count != cl.result_list|length %}
- <span class="all">{{ selection_note_all }}</span>
- <span class="question">
- <a href="javascript:;" title="{% trans "Click here to select the objects across all pages" %}">{% blocktrans with cl.result_count as total_count %}Select all {{ total_count }} {{ module_name }}{% endblocktrans %}</a>
- </span>
- <span class="clear"><a href="javascript:;">{% trans "Clear selection" %}</a></span>
- {% endif %}
- {% endif %}
-</div>
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/app_index.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/app_index.html
deleted file mode 100644
index 9f65357..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/app_index.html
+++ /dev/null
@@ -1,16 +0,0 @@
-{% extends "admin/index.html" %}
-{% load i18n %}
-
-{% if not is_popup %}
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo;
-{% for app in app_list %}
-{% blocktrans with app.name as name %}{{ name }}{% endblocktrans %}
-{% endfor %}
-</div>
-{% endblock %}
-{% endif %}
-
-{% block sidebar %}{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/auth/user/add_form.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/auth/user/add_form.html
deleted file mode 100644
index c8889eb..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/auth/user/add_form.html
+++ /dev/null
@@ -1,14 +0,0 @@
-{% extends "admin/change_form.html" %}
-{% load i18n %}
-
-{% block form_top %}
- {% if not is_popup %}
- <p>{% trans "First, enter a username and password. Then, you'll be able to edit more user options." %}</p>
- {% else %}
- <p>{% trans "Enter a username and password." %}</p>
- {% endif %}
-{% endblock %}
-
-{% block after_field_sets %}
-<script type="text/javascript">document.getElementById("id_username").focus();</script>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/auth/user/change_password.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/auth/user/change_password.html
deleted file mode 100644
index 2a1b4d3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/auth/user/change_password.html
+++ /dev/null
@@ -1,57 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n admin_static %}
-{% load admin_urls %}
-
-{% block extrahead %}{{ block.super }}
-<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
-{% endblock %}
-{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
-{% block bodyclass %}{{ opts.app_label }}-{{ opts.object_name.lower }} change-form{% endblock %}
-{% if not is_popup %}
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ opts.app_label|capfirst|escape }}</a>
-&rsaquo; <a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>
-&rsaquo; <a href="{% url opts|admin_urlname:'change' original.pk|admin_urlquote %}">{{ original|truncatewords:"18" }}</a>
-&rsaquo; {% trans 'Change password' %}
-</div>
-{% endblock %}
-{% endif %}
-{% block content %}<div id="content-main">
-<form action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form">{% csrf_token %}{% block form_top %}{% endblock %}
-<div>
-{% if is_popup %}<input type="hidden" name="_popup" value="1" />{% endif %}
-{% if form.errors %}
- <p class="errornote">
- {% if form.errors.items|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
- </p>
-{% endif %}
-
-<p>{% blocktrans with username=original %}Enter a new password for the user <strong>{{ username }}</strong>.{% endblocktrans %}</p>
-
-<fieldset class="module aligned">
-
-<div class="form-row">
- {{ form.password1.errors }}
- {# TODO: get required class on label_tag #}
- <label for="id_password1" class="required">{% trans 'Password' %}:</label> {{ form.password1 }}
-</div>
-
-<div class="form-row">
- {{ form.password2.errors }}
- {# TODO: get required class on label_tag #}
- <label for="id_password2" class="required">{% trans 'Password (again)' %}:</label> {{ form.password2 }}
- <p class="help">{% trans 'Enter the same password as above, for verification.' %}</p>
-</div>
-
-</fieldset>
-
-<div class="submit-row">
-<input type="submit" value="{% trans 'Change password' %}" class="default" />
-</div>
-
-<script type="text/javascript">document.getElementById("id_password1").focus();</script>
-</div>
-</form></div>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/base.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/base.html
deleted file mode 100644
index 63d4419..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/base.html
+++ /dev/null
@@ -1,79 +0,0 @@
-{% load admin_static %}{% load firstof from future %}<!DOCTYPE html>
-<html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
-<head>
-<title>{% block title %}{% endblock %}</title>
-<link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
-{% block extrastyle %}{% endblock %}
-<!--[if lte IE 7]><link rel="stylesheet" type="text/css" href="{% block stylesheet_ie %}{% static "admin/css/ie.css" %}{% endblock %}" /><![endif]-->
-{% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}" />{% endif %}
-<script type="text/javascript">window.__admin_media_prefix__ = "{% filter escapejs %}{% static "admin/" %}{% endfilter %}";</script>
-{% block extrahead %}{% endblock %}
-{% block blockbots %}<meta name="robots" content="NONE,NOARCHIVE" />{% endblock %}
-</head>
-{% load i18n %}
-
-<body class="{% if is_popup %}popup {% endif %}{% block bodyclass %}{% endblock %}">
-
-<!-- Container -->
-<div id="container">
-
- {% if not is_popup %}
- <!-- Header -->
- <div id="header">
- <div id="branding">
- {% block branding %}{% endblock %}
- </div>
- {% if user.is_active and user.is_staff %}
- <div id="user-tools">
- {% trans 'Welcome,' %}
- <strong>{% firstof user.get_short_name user.get_username %}</strong>.
- {% block userlinks %}
- {% url 'django-admindocs-docroot' as docsroot %}
- {% if docsroot %}
- <a href="{{ docsroot }}">{% trans 'Documentation' %}</a> /
- {% endif %}
- {% if user.has_usable_password %}
- <a href="{% url 'admin:password_change' %}">{% trans 'Change password' %}</a> /
- {% endif %}
- <a href="{% url 'admin:logout' %}">{% trans 'Log out' %}</a>
- {% endblock %}
- </div>
- {% endif %}
- {% block nav-global %}{% endblock %}
- </div>
- <!-- END Header -->
- {% block breadcrumbs %}
- <div class="breadcrumbs">
- <a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
- {% if title %} &rsaquo; {{ title }}{% endif %}
- </div>
- {% endblock %}
- {% endif %}
-
- {% block messages %}
- {% if messages %}
- <ul class="messagelist">{% for message in messages %}
- <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message|capfirst }}</li>
- {% endfor %}</ul>
- {% endif %}
- {% endblock messages %}
-
- <!-- Content -->
- <div id="content" class="{% block coltype %}colM{% endblock %}">
- {% block pretitle %}{% endblock %}
- {% block content_title %}{% if title %}<h1>{{ title }}</h1>{% endif %}{% endblock %}
- {% block content %}
- {% block object-tools %}{% endblock %}
- {{ content }}
- {% endblock %}
- {% block sidebar %}{% endblock %}
- <br class="clear" />
- </div>
- <!-- END Content -->
-
- {% block footer %}<div id="footer"></div>{% endblock %}
-</div>
-<!-- END Container -->
-
-</body>
-</html>
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/base_site.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/base_site.html
deleted file mode 100644
index b867bd2..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/base_site.html
+++ /dev/null
@@ -1,10 +0,0 @@
-{% extends "admin/base.html" %}
-{% load i18n %}
-
-{% block title %}{{ title }} | {% trans 'Django site admin' %}{% endblock %}
-
-{% block branding %}
-<h1 id="site-name">{% trans 'Django administration' %}</h1>
-{% endblock %}
-
-{% block nav-global %}{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/change_form.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/change_form.html
deleted file mode 100644
index d4935ed..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/change_form.html
+++ /dev/null
@@ -1,78 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n admin_urls admin_static admin_modify %}
-
-{% block extrahead %}{{ block.super }}
-<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
-{{ media }}
-{% endblock %}
-
-{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
-
-{% block coltype %}colM{% endblock %}
-
-{% block bodyclass %}{{ opts.app_label }}-{{ opts.object_name.lower }} change-form{% endblock %}
-
-{% if not is_popup %}
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ app_label|capfirst|escape }}</a>
-&rsaquo; {% if has_change_permission %}<a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>{% else %}{{ opts.verbose_name_plural|capfirst }}{% endif %}
-&rsaquo; {% if add %}{% trans 'Add' %} {{ opts.verbose_name }}{% else %}{{ original|truncatewords:"18" }}{% endif %}
-</div>
-{% endblock %}
-{% endif %}
-
-{% block content %}<div id="content-main">
-{% block object-tools %}
-{% if change %}{% if not is_popup %}
- <ul class="object-tools">
- {% block object-tools-items %}
- <li>
- {% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
- <a href="{% add_preserved_filters history_url %}" class="historylink">{% trans "History" %}</a>
- </li>
- {% if has_absolute_url %}<li><a href="{% url 'admin:view_on_site' content_type_id original.pk %}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif%}
- {% endblock %}
- </ul>
-{% endif %}{% endif %}
-{% endblock %}
-<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form">{% csrf_token %}{% block form_top %}{% endblock %}
-<div>
-{% if is_popup %}<input type="hidden" name="_popup" value="1" />{% endif %}
-{% if save_on_top %}{% block submit_buttons_top %}{% submit_row %}{% endblock %}{% endif %}
-{% if errors %}
- <p class="errornote">
- {% if errors|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
- </p>
- {{ adminform.form.non_field_errors }}
-{% endif %}
-
-{% block field_sets %}
-{% for fieldset in adminform %}
- {% include "admin/includes/fieldset.html" %}
-{% endfor %}
-{% endblock %}
-
-{% block after_field_sets %}{% endblock %}
-
-{% block inline_field_sets %}
-{% for inline_admin_formset in inline_admin_formsets %}
- {% include inline_admin_formset.opts.template %}
-{% endfor %}
-{% endblock %}
-
-{% block after_related_objects %}{% endblock %}
-
-{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}
-
-{% if adminform.first_field and add %}
- <script type="text/javascript">document.getElementById("{{ adminform.first_field.id_for_label }}").focus();</script>
-{% endif %}
-
-{# JavaScript for prepopulated fields #}
-{% prepopulated_fields_js %}
-
-</div>
-</form></div>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/change_list.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/change_list.html
deleted file mode 100644
index 15583d1..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/change_list.html
+++ /dev/null
@@ -1,98 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n admin_urls admin_static admin_list %}
-
-{% block extrastyle %}
- {{ block.super }}
- <link rel="stylesheet" type="text/css" href="{% static "admin/css/changelists.css" %}" />
- {% if cl.formset %}
- <link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />
- {% endif %}
- {% if cl.formset or action_form %}
- <script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
- {% endif %}
- {{ media.css }}
- {% if not actions_on_top and not actions_on_bottom %}
- <style>
- #changelist table thead th:first-child {width: inherit}
- </style>
- {% endif %}
-{% endblock %}
-
-{% block extrahead %}
-{{ block.super }}
-{{ media.js }}
-{% if action_form %}{% if actions_on_top or actions_on_bottom %}
-<script type="text/javascript">
-(function($) {
- $(document).ready(function($) {
- $("tr input.action-select").actions();
- });
-})(django.jQuery);
-</script>
-{% endif %}{% endif %}
-{% endblock %}
-
-{% block bodyclass %}change-list{% endblock %}
-
-{% if not is_popup %}
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; <a href="{% url 'admin:app_list' app_label=cl.opts.app_label %}">{{ app_label|capfirst|escape }}</a>
-&rsaquo; {{ cl.opts.verbose_name_plural|capfirst }}
-</div>
-{% endblock %}
-{% endif %}
-
-{% block coltype %}flex{% endblock %}
-
-{% block content %}
- <div id="content-main">
- {% block object-tools %}
- {% if has_add_permission %}
- <ul class="object-tools">
- {% block object-tools-items %}
- <li>
- {% url cl.opts|admin_urlname:'add' as add_url %}
- <a href="{% add_preserved_filters add_url is_popup %}" class="addlink">
- {% blocktrans with cl.opts.verbose_name as name %}Add {{ name }}{% endblocktrans %}
- </a>
- </li>
- {% endblock %}
- </ul>
- {% endif %}
- {% endblock %}
- {% if cl.formset.errors %}
- <p class="errornote">
- {% if cl.formset.total_error_count == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
- </p>
- {{ cl.formset.non_form_errors }}
- {% endif %}
- <div class="module{% if cl.has_filters %} filtered{% endif %}" id="changelist">
- {% block search %}{% search_form cl %}{% endblock %}
- {% block date_hierarchy %}{% date_hierarchy cl %}{% endblock %}
-
- {% block filters %}
- {% if cl.has_filters %}
- <div id="changelist-filter">
- <h2>{% trans 'Filter' %}</h2>
- {% for spec in cl.filter_specs %}{% admin_list_filter cl spec %}{% endfor %}
- </div>
- {% endif %}
- {% endblock %}
-
- <form id="changelist-form" action="" method="post"{% if cl.formset.is_multipart %} enctype="multipart/form-data"{% endif %}>{% csrf_token %}
- {% if cl.formset %}
- <div>{{ cl.formset.management_form }}</div>
- {% endif %}
-
- {% block result_list %}
- {% if action_form and actions_on_top and cl.full_result_count %}{% admin_actions %}{% endif %}
- {% result_list cl %}
- {% if action_form and actions_on_bottom and cl.full_result_count %}{% admin_actions %}{% endif %}
- {% endblock %}
- {% block pagination %}{% pagination cl %}{% endblock %}
- </form>
- </div>
- </div>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/change_list_results.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/change_list_results.html
deleted file mode 100644
index 6368698..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/change_list_results.html
+++ /dev/null
@@ -1,38 +0,0 @@
-{% load i18n admin_static %}{% load cycle from future %}
-{% if result_hidden_fields %}
-<div class="hiddenfields">{# DIV for HTML validation #}
-{% for item in result_hidden_fields %}{{ item }}{% endfor %}
-</div>
-{% endif %}
-{% if results %}
-<div class="results">
-<table id="result_list">
-<thead>
-<tr>
-{% for header in result_headers %}
-<th scope="col" {{ header.class_attrib }}>
- {% if header.sortable %}
- {% if header.sort_priority > 0 %}
- <div class="sortoptions">
- <a class="sortremove" href="{{ header.url_remove }}" title="{% trans "Remove from sorting" %}"></a>
- {% if num_sorted_fields > 1 %}<span class="sortpriority" title="{% blocktrans with priority_number=header.sort_priority %}Sorting priority: {{ priority_number }}{% endblocktrans %}">{{ header.sort_priority }}</span>{% endif %}
- <a href="{{ header.url_toggle }}" class="toggle {% if header.ascending %}ascending{% else %}descending{% endif %}" title="{% trans "Toggle sorting" %}"></a>
- </div>
- {% endif %}
- {% endif %}
- <div class="text">{% if header.sortable %}<a href="{{ header.url_primary }}">{{ header.text|capfirst }}</a>{% else %}<span>{{ header.text|capfirst }}</span>{% endif %}</div>
- <div class="clear"></div>
-</th>{% endfor %}
-</tr>
-</thead>
-<tbody>
-{% for result in results %}
-{% if result.form.non_field_errors %}
- <tr><td colspan="{{ result|length }}">{{ result.form.non_field_errors }}</td></tr>
-{% endif %}
-<tr class="{% cycle 'row1' 'row2' %}">{% for item in result %}{{ item }}{% endfor %}</tr>
-{% endfor %}
-</tbody>
-</table>
-</div>
-{% endif %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/date_hierarchy.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/date_hierarchy.html
deleted file mode 100644
index 0058510..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/date_hierarchy.html
+++ /dev/null
@@ -1,10 +0,0 @@
-{% if show %}
-<div class="xfull">
-<ul class="toplinks">
-{% if back %}<li class="date-back"><a href="{{ back.link }}">&lsaquo; {{ back.title }}</a></li>{% endif %}
-{% for choice in choices %}
-<li> {% if choice.link %}<a href="{{ choice.link }}">{% endif %}{{ choice.title }}{% if choice.link %}</a>{% endif %}</li>
-{% endfor %}
-</ul><br class="clear" />
-</div>
-{% endif %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/delete_confirmation.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/delete_confirmation.html
deleted file mode 100644
index 3ed6080..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/delete_confirmation.html
+++ /dev/null
@@ -1,42 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n admin_urls %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; <a href="{% url 'admin:app_list' app_label=opts.app_label %}">{{ app_label|capfirst }}</a>
-&rsaquo; <a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst|escape }}</a>
-&rsaquo; <a href="{% url opts|admin_urlname:'change' object.pk|admin_urlquote %}">{{ object|truncatewords:"18" }}</a>
-&rsaquo; {% trans 'Delete' %}
-</div>
-{% endblock %}
-
-{% block content %}
-{% if perms_lacking or protected %}
- {% if perms_lacking %}
- <p>{% blocktrans with escaped_object=object %}Deleting the {{ object_name }} '{{ escaped_object }}' would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktrans %}</p>
- <ul>
- {% for obj in perms_lacking %}
- <li>{{ obj }}</li>
- {% endfor %}
- </ul>
- {% endif %}
- {% if protected %}
- <p>{% blocktrans with escaped_object=object %}Deleting the {{ object_name }} '{{ escaped_object }}' would require deleting the following protected related objects:{% endblocktrans %}</p>
- <ul>
- {% for obj in protected %}
- <li>{{ obj }}</li>
- {% endfor %}
- </ul>
- {% endif %}
-{% else %}
- <p>{% blocktrans with escaped_object=object %}Are you sure you want to delete the {{ object_name }} "{{ escaped_object }}"? All of the following related items will be deleted:{% endblocktrans %}</p>
- <ul>{{ deleted_objects|unordered_list }}</ul>
- <form action="" method="post">{% csrf_token %}
- <div>
- <input type="hidden" name="post" value="yes" />
- <input type="submit" value="{% trans "Yes, I'm sure" %}" />
- </div>
- </form>
-{% endif %}
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/delete_selected_confirmation.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/delete_selected_confirmation.html
deleted file mode 100644
index 36527dc..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/delete_selected_confirmation.html
+++ /dev/null
@@ -1,47 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n l10n admin_urls %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; <a href="{% url 'admin:app_list' app_label=app_label %}">{{ app_label|capfirst|escape }}</a>
-&rsaquo; <a href="{% url opts|admin_urlname:'changelist' %}">{{ opts.verbose_name_plural|capfirst }}</a>
-&rsaquo; {% trans 'Delete multiple objects' %}
-</div>
-{% endblock %}
-
-{% block content %}
-{% if perms_lacking or protected %}
- {% if perms_lacking %}
- <p>{% blocktrans %}Deleting the selected {{ objects_name }} would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:{% endblocktrans %}</p>
- <ul>
- {% for obj in perms_lacking %}
- <li>{{ obj }}</li>
- {% endfor %}
- </ul>
- {% endif %}
- {% if protected %}
- <p>{% blocktrans %}Deleting the selected {{ objects_name }} would require deleting the following protected related objects:{% endblocktrans %}</p>
- <ul>
- {% for obj in protected %}
- <li>{{ obj }}</li>
- {% endfor %}
- </ul>
- {% endif %}
-{% else %}
- <p>{% blocktrans %}Are you sure you want to delete the selected {{ objects_name }}? All of the following objects and their related items will be deleted:{% endblocktrans %}</p>
- {% for deletable_object in deletable_objects %}
- <ul>{{ deletable_object|unordered_list }}</ul>
- {% endfor %}
- <form action="" method="post">{% csrf_token %}
- <div>
- {% for obj in queryset %}
- <input type="hidden" name="{{ action_checkbox_name }}" value="{{ obj.pk|unlocalize }}" />
- {% endfor %}
- <input type="hidden" name="action" value="delete_selected" />
- <input type="hidden" name="post" value="yes" />
- <input type="submit" value="{% trans "Yes, I'm sure" %}" />
- </div>
- </form>
-{% endif %}
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/edit_inline/stacked.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/edit_inline/stacked.html
deleted file mode 100644
index 3291775..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/edit_inline/stacked.html
+++ /dev/null
@@ -1,30 +0,0 @@
-{% load i18n admin_static %}
-<div class="inline-group" id="{{ inline_admin_formset.formset.prefix }}-group">
- <h2>{{ inline_admin_formset.opts.verbose_name_plural|title }}</h2>
-{{ inline_admin_formset.formset.management_form }}
-{{ inline_admin_formset.formset.non_form_errors }}
-
-{% for inline_admin_form in inline_admin_formset %}<div class="inline-related{% if forloop.last %} empty-form last-related{% endif %}" id="{{ inline_admin_formset.formset.prefix }}-{% if not forloop.last %}{{ forloop.counter0 }}{% else %}empty{% endif %}">
- <h3><b>{{ inline_admin_formset.opts.verbose_name|title }}:</b>&nbsp;<span class="inline_label">{% if inline_admin_form.original %}{{ inline_admin_form.original }}{% else %}#{{ forloop.counter }}{% endif %}</span>
- {% if inline_admin_form.show_url %}<a href="{% url 'admin:view_on_site' inline_admin_form.original_content_type_id inline_admin_form.original.pk %}">{% trans "View on site" %}</a>{% endif %}
- {% if inline_admin_formset.formset.can_delete and inline_admin_form.original %}<span class="delete">{{ inline_admin_form.deletion_field.field }} {{ inline_admin_form.deletion_field.label_tag }}</span>{% endif %}
- </h3>
- {% if inline_admin_form.form.non_field_errors %}{{ inline_admin_form.form.non_field_errors }}{% endif %}
- {% for fieldset in inline_admin_form %}
- {% include "admin/includes/fieldset.html" %}
- {% endfor %}
- {% if inline_admin_form.needs_explicit_pk_field %}{{ inline_admin_form.pk_field.field }}{% endif %}
- {{ inline_admin_form.fk_field.field }}
-</div>{% endfor %}
-</div>
-
-<script type="text/javascript">
-(function($) {
- $("#{{ inline_admin_formset.formset.prefix }}-group .inline-related").stackedFormset({
- prefix: '{{ inline_admin_formset.formset.prefix }}',
- adminStaticPrefix: '{% static "admin/" %}',
- deleteText: "{% trans "Remove" %}",
- addText: "{% blocktrans with verbose_name=inline_admin_formset.opts.verbose_name|title %}Add another {{ verbose_name }}{% endblocktrans %}"
- });
-})(django.jQuery);
-</script>
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/edit_inline/tabular.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/edit_inline/tabular.html
deleted file mode 100644
index e6097f0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/edit_inline/tabular.html
+++ /dev/null
@@ -1,79 +0,0 @@
-{% load i18n admin_static admin_modify %}{% load cycle from future %}
-<div class="inline-group" id="{{ inline_admin_formset.formset.prefix }}-group">
- <div class="tabular inline-related {% if forloop.last %}last-related{% endif %}">
-{{ inline_admin_formset.formset.management_form }}
-<fieldset class="module">
- <h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst }}</h2>
- {{ inline_admin_formset.formset.non_form_errors }}
- <table>
- <thead><tr>
- {% for field in inline_admin_formset.fields %}
- {% if not field.widget.is_hidden %}
- <th{% if forloop.first %} colspan="2"{% endif %}{% if field.required %} class="required"{% endif %}>{{ field.label|capfirst }}
- {% if field.help_text %}&nbsp;<img src="{% static "admin/img/icon-unknown.gif" %}" class="help help-tooltip" width="10" height="10" alt="({{ field.help_text|striptags }})" title="{{ field.help_text|striptags }}" />{% endif %}
- </th>
- {% endif %}
- {% endfor %}
- {% if inline_admin_formset.formset.can_delete %}<th>{% trans "Delete?" %}</th>{% endif %}
- </tr></thead>
-
- <tbody>
- {% for inline_admin_form in inline_admin_formset %}
- {% if inline_admin_form.form.non_field_errors %}
- <tr><td colspan="{{ inline_admin_form|cell_count }}">{{ inline_admin_form.form.non_field_errors }}</td></tr>
- {% endif %}
- <tr class="form-row {% cycle "row1" "row2" %} {% if inline_admin_form.original or inline_admin_form.show_url %}has_original{% endif %}{% if forloop.last %} empty-form{% endif %}"
- id="{{ inline_admin_formset.formset.prefix }}-{% if not forloop.last %}{{ forloop.counter0 }}{% else %}empty{% endif %}">
- <td class="original">
- {% if inline_admin_form.original or inline_admin_form.show_url %}<p>
- {% if inline_admin_form.original %} {{ inline_admin_form.original }}{% endif %}
- {% if inline_admin_form.show_url %}<a href="{% url 'admin:view_on_site' inline_admin_form.original_content_type_id inline_admin_form.original.pk %}">{% trans "View on site" %}</a>{% endif %}
- </p>{% endif %}
- {% if inline_admin_form.needs_explicit_pk_field %}{{ inline_admin_form.pk_field.field }}{% endif %}
- {{ inline_admin_form.fk_field.field }}
- {% spaceless %}
- {% for fieldset in inline_admin_form %}
- {% for line in fieldset %}
- {% for field in line %}
- {% if field.is_hidden %} {{ field.field }} {% endif %}
- {% endfor %}
- {% endfor %}
- {% endfor %}
- {% endspaceless %}
- </td>
- {% for fieldset in inline_admin_form %}
- {% for line in fieldset %}
- {% for field in line %}
- <td{% if field.field.name %} class="field-{{ field.field.name }}"{% endif %}>
- {% if field.is_readonly %}
- <p>{{ field.contents|linebreaksbr }}</p>
- {% else %}
- {{ field.field.errors.as_ul }}
- {{ field.field }}
- {% endif %}
- </td>
- {% endfor %}
- {% endfor %}
- {% endfor %}
- {% if inline_admin_formset.formset.can_delete %}
- <td class="delete">{% if inline_admin_form.original %}{{ inline_admin_form.deletion_field.field }}{% endif %}</td>
- {% endif %}
- </tr>
- {% endfor %}
- </tbody>
- </table>
-</fieldset>
- </div>
-</div>
-
-<script type="text/javascript">
-
-(function($) {
- $("#{{ inline_admin_formset.formset.prefix }}-group .tabular.inline-related tbody tr").tabularFormset({
- prefix: "{{ inline_admin_formset.formset.prefix }}",
- adminStaticPrefix: '{% static "admin/" %}',
- addText: "{% blocktrans with inline_admin_formset.opts.verbose_name|title as verbose_name %}Add another {{ verbose_name }}{% endblocktrans %}",
- deleteText: "{% trans 'Remove' %}"
- });
-})(django.jQuery);
-</script>
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/filter.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/filter.html
deleted file mode 100644
index d4a61a1..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/filter.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% load i18n %}
-<h3>{% blocktrans with filter_title=title %} By {{ filter_title }} {% endblocktrans %}</h3>
-<ul>
-{% for choice in choices %}
- <li{% if choice.selected %} class="selected"{% endif %}>
- <a href="{{ choice.query_string|iriencode }}">{{ choice.display }}</a></li>
-{% endfor %}
-</ul>
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/includes/fieldset.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/includes/fieldset.html
deleted file mode 100644
index 24b069c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/includes/fieldset.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<fieldset class="module aligned {{ fieldset.classes }}">
- {% if fieldset.name %}<h2>{{ fieldset.name }}</h2>{% endif %}
- {% if fieldset.description %}
- <div class="description">{{ fieldset.description|safe }}</div>
- {% endif %}
- {% for line in fieldset %}
- <div class="form-row{% if line.fields|length_is:'1' and line.errors %} errors{% endif %}{% for field in line %}{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% endfor %}">
- {% if line.fields|length_is:'1' %}{{ line.errors }}{% endif %}
- {% for field in line %}
- <div{% if not line.fields|length_is:'1' %} class="field-box{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% if not field.is_readonly and field.errors %} errors{% endif %}"{% elif field.is_checkbox %} class="checkbox-row"{% endif %}>
- {% if not line.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %}
- {% if field.is_checkbox %}
- {{ field.field }}{{ field.label_tag }}
- {% else %}
- {{ field.label_tag }}
- {% if field.is_readonly %}
- <p>{{ field.contents|linebreaksbr }}</p>
- {% else %}
- {{ field.field }}
- {% endif %}
- {% endif %}
- {% if field.field.help_text %}
- <p class="help">{{ field.field.help_text|safe }}</p>
- {% endif %}
- </div>
- {% endfor %}
- </div>
- {% endfor %}
-</fieldset>
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/index.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/index.html
deleted file mode 100644
index 961e482..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/index.html
+++ /dev/null
@@ -1,84 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n admin_static %}
-
-{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/dashboard.css" %}" />{% endblock %}
-
-{% block coltype %}colMS{% endblock %}
-
-{% block bodyclass %}dashboard{% endblock %}
-
-{% block breadcrumbs %}{% endblock %}
-
-{% block content %}
-<div id="content-main">
-
-{% if app_list %}
- {% for app in app_list %}
- <div class="app-{{ app.app_label }} module">
- <table>
- <caption>
- <a href="{{ app.app_url }}" class="section" title="{% blocktrans with name=app.name %}Models in the {{ name }} application{% endblocktrans %}">
- {% blocktrans with name=app.name %}{{ name }}{% endblocktrans %}
- </a>
- </caption>
- {% for model in app.models %}
- <tr class="model-{{ model.object_name|lower }}">
- {% if model.admin_url %}
- <th scope="row"><a href="{{ model.admin_url }}">{{ model.name }}</a></th>
- {% else %}
- <th scope="row">{{ model.name }}</th>
- {% endif %}
-
- {% if model.add_url %}
- <td><a href="{{ model.add_url }}" class="addlink">{% trans 'Add' %}</a></td>
- {% else %}
- <td>&nbsp;</td>
- {% endif %}
-
- {% if model.admin_url %}
- <td><a href="{{ model.admin_url }}" class="changelink">{% trans 'Change' %}</a></td>
- {% else %}
- <td>&nbsp;</td>
- {% endif %}
- </tr>
- {% endfor %}
- </table>
- </div>
- {% endfor %}
-{% else %}
- <p>{% trans "You don't have permission to edit anything." %}</p>
-{% endif %}
-</div>
-{% endblock %}
-
-{% block sidebar %}
-<div id="content-related">
- <div class="module" id="recent-actions-module">
- <h2>{% trans 'Recent Actions' %}</h2>
- <h3>{% trans 'My Actions' %}</h3>
- {% load log %}
- {% get_admin_log 10 as admin_log for_user user %}
- {% if not admin_log %}
- <p>{% trans 'None available' %}</p>
- {% else %}
- <ul class="actionlist">
- {% for entry in admin_log %}
- <li class="{% if entry.is_addition %}addlink{% endif %}{% if entry.is_change %}changelink{% endif %}{% if entry.is_deletion %}deletelink{% endif %}">
- {% if entry.is_deletion or not entry.get_admin_url %}
- {{ entry.object_repr }}
- {% else %}
- <a href="{{ entry.get_admin_url }}">{{ entry.object_repr }}</a>
- {% endif %}
- <br/>
- {% if entry.content_type %}
- <span class="mini quiet">{% filter capfirst %}{% trans entry.content_type.name %}{% endfilter %}</span>
- {% else %}
- <span class="mini quiet">{% trans 'Unknown content' %}</span>
- {% endif %}
- </li>
- {% endfor %}
- </ul>
- {% endif %}
- </div>
-</div>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/invalid_setup.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/invalid_setup.html
deleted file mode 100644
index 7c71107..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/invalid_setup.html
+++ /dev/null
@@ -1,13 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; {{ title }}
-</div>
-{% endblock %}
-
-{% block content %}
-<p>{% trans "Something's wrong with your database installation. Make sure the appropriate database tables have been created, and make sure the database is readable by the appropriate user." %}</p>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/login.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/login.html
deleted file mode 100644
index 1371514..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/login.html
+++ /dev/null
@@ -1,56 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n admin_static %}
-
-{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/login.css" %}" />{% endblock %}
-
-{% block bodyclass %}login{% endblock %}
-
-{% block nav-global %}{% endblock %}
-
-{% block content_title %}{% endblock %}
-
-{% block breadcrumbs %}{% endblock %}
-
-{% block content %}
-{% if form.errors and not form.non_field_errors and not form.this_is_the_login_form.errors %}
-<p class="errornote">
-{% if form.errors.items|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
-</p>
-{% endif %}
-
-{% if form.non_field_errors or form.this_is_the_login_form.errors %}
-{% for error in form.non_field_errors|add:form.this_is_the_login_form.errors %}
-<p class="errornote">
- {{ error }}
-</p>
-{% endfor %}
-{% endif %}
-
-<div id="content-main">
-<form action="{{ app_path }}" method="post" id="login-form">{% csrf_token %}
- <div class="form-row">
- {% if not form.this_is_the_login_form.errors %}{{ form.username.errors }}{% endif %}
- <label for="id_username" class="required">{{ form.username.label }}:</label> {{ form.username }}
- </div>
- <div class="form-row">
- {% if not form.this_is_the_login_form.errors %}{{ form.password.errors }}{% endif %}
- <label for="id_password" class="required">{% trans 'Password:' %}</label> {{ form.password }}
- <input type="hidden" name="this_is_the_login_form" value="1" />
- <input type="hidden" name="next" value="{{ next }}" />
- </div>
- {% url 'admin_password_reset' as password_reset_url %}
- {% if password_reset_url %}
- <div class="password-reset-link">
- <a href="{{ password_reset_url }}">{% trans 'Forgotten your password or username?' %}</a>
- </div>
- {% endif %}
- <div class="submit-row">
- <label>&nbsp;</label><input type="submit" value="{% trans 'Log in' %}" />
- </div>
-</form>
-
-<script type="text/javascript">
-document.getElementById('id_username').focus()
-</script>
-</div>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/object_history.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/object_history.html
deleted file mode 100644
index c750ff1..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/object_history.html
+++ /dev/null
@@ -1,42 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n admin_urls %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; <a href="{% url 'admin:app_list' app_label=app_label %}">{{ app_label|capfirst|escape }}</a>
-&rsaquo; <a href="{% url opts|admin_urlname:'changelist' %}">{{ module_name }}</a>
-&rsaquo; <a href="{% url opts|admin_urlname:'change' object.pk|admin_urlquote %}">{{ object|truncatewords:"18" }}</a>
-&rsaquo; {% trans 'History' %}
-</div>
-{% endblock %}
-
-{% block content %}
-<div id="content-main">
-<div class="module">
-
-{% if action_list %}
- <table id="change-history">
- <thead>
- <tr>
- <th scope="col">{% trans 'Date/time' %}</th>
- <th scope="col">{% trans 'User' %}</th>
- <th scope="col">{% trans 'Action' %}</th>
- </tr>
- </thead>
- <tbody>
- {% for action in action_list %}
- <tr>
- <th scope="row">{{ action.action_time|date:"DATETIME_FORMAT" }}</th>
- <td>{{ action.user.get_username }}{% if action.user.get_full_name %} ({{ action.user.get_full_name }}){% endif %}</td>
- <td>{{ action.change_message }}</td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
-{% else %}
- <p>{% trans "This object doesn't have a change history. It probably wasn't added via this admin site." %}</p>
-{% endif %}
-</div>
-</div>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/pagination.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/pagination.html
deleted file mode 100644
index 3588132..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/pagination.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{% load admin_list %}
-{% load i18n %}
-<p class="paginator">
-{% if pagination_required %}
-{% for i in page_range %}
- {% paginator_number cl i %}
-{% endfor %}
-{% endif %}
-{{ cl.result_count }} {% ifequal cl.result_count 1 %}{{ cl.opts.verbose_name }}{% else %}{{ cl.opts.verbose_name_plural }}{% endifequal %}
-{% if show_all_url %}&nbsp;&nbsp;<a href="{{ show_all_url }}" class="showall">{% trans 'Show all' %}</a>{% endif %}
-{% if cl.formset and cl.result_count %}<input type="submit" name="_save" class="default" value="{% trans 'Save' %}"/>{% endif %}
-</p>
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/popup_response.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/popup_response.html
deleted file mode 100644
index 44833b2..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/popup_response.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head><title></title></head>
- <body>
- <script type="text/javascript">
- opener.dismissAddAnotherPopup(window, "{{ pk_value }}", "{{ obj }}");
- </script>
- </body>
-</html>
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/prepopulated_fields_js.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/prepopulated_fields_js.html
deleted file mode 100644
index 0ff4d27..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/prepopulated_fields_js.html
+++ /dev/null
@@ -1,27 +0,0 @@
-{% load l10n %}
-<script type="text/javascript">
-(function($) {
- var field;
-
-{% for field in prepopulated_fields %}
- field = {
- id: '#{{ field.field.auto_id }}',
- dependency_ids: [],
- dependency_list: [],
- maxLength: {{ field.field.field.max_length|default_if_none:"50"|unlocalize }}
- };
-
- {% for dependency in field.dependencies %}
- field['dependency_ids'].push('#{{ dependency.auto_id }}');
- field['dependency_list'].push('{{ dependency.name }}');
- {% endfor %}
-
- {% comment %}
- Mark prepopulated fields in the main form and stacked inlines (.empty-form .form-row) and in tabular inlines (.empty-form.form-row)
- {% endcomment %}
- $('.empty-form .form-row .field-{{ field.field.name }}, .empty-form.form-row .field-{{ field.field.name }}').addClass('prepopulated_field');
- $(field.id).data('dependency_list', field['dependency_list'])
- .prepopulate(field['dependency_ids'], field.maxLength);
-{% endfor %}
-})(django.jQuery);
-</script>
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/search_form.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/search_form.html
deleted file mode 100644
index c9b626d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/search_form.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% load i18n admin_static %}
-{% if cl.search_fields %}
-<div id="toolbar"><form id="changelist-search" action="" method="get">
-<div><!-- DIV needed for valid HTML -->
-<label for="searchbar"><img src="{% static "admin/img/icon_searchbox.png" %}" alt="Search" /></label>
-<input type="text" size="40" name="{{ search_var }}" value="{{ cl.query }}" id="searchbar" />
-<input type="submit" value="{% trans 'Search' %}" />
-{% if show_result_count %}
- <span class="small quiet">{% blocktrans count counter=cl.result_count %}{{ counter }} result{% plural %}{{ counter }} results{% endblocktrans %} (<a href="?{% if cl.is_popup %}_popup=1{% endif %}">{% blocktrans with full_result_count=cl.full_result_count %}{{ full_result_count }} total{% endblocktrans %}</a>)</span>
-{% endif %}
-{% for pair in cl.params.items %}
- {% ifnotequal pair.0 search_var %}<input type="hidden" name="{{ pair.0 }}" value="{{ pair.1 }}"/>{% endifnotequal %}
-{% endfor %}
-</div>
-</form></div>
-<script type="text/javascript">document.getElementById("searchbar").focus();</script>
-{% endif %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/submit_line.html b/lib/python2.7/site-packages/django/contrib/admin/templates/admin/submit_line.html
deleted file mode 100644
index 52baed3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/admin/submit_line.html
+++ /dev/null
@@ -1,11 +0,0 @@
-{% load i18n admin_urls %}
-<div class="submit-row">
-{% if show_save %}<input type="submit" value="{% trans 'Save' %}" class="default" name="_save" />{% endif %}
-{% if show_delete_link %}
- {% url opts|admin_urlname:'delete' original.pk|admin_urlquote as delete_url %}
- <p class="deletelink-box"><a href="{% add_preserved_filters delete_url %}" class="deletelink">{% trans "Delete" %}</a></p>
-{% endif %}
-{% if show_save_as_new %}<input type="submit" value="{% trans 'Save as new' %}" name="_saveasnew" />{%endif%}
-{% if show_save_and_add_another %}<input type="submit" value="{% trans 'Save and add another' %}" name="_addanother" />{% endif %}
-{% if show_save_and_continue %}<input type="submit" value="{% trans 'Save and continue editing' %}" name="_continue" />{% endif %}
-</div>
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/registration/logged_out.html b/lib/python2.7/site-packages/django/contrib/admin/templates/registration/logged_out.html
deleted file mode 100644
index 6a18186..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/registration/logged_out.html
+++ /dev/null
@@ -1,12 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}<div class="breadcrumbs"><a href="{% url 'admin:index' %}">{% trans 'Home' %}</a></div>{% endblock %}
-
-{% block content %}
-
-<p>{% trans "Thanks for spending some quality time with the Web site today." %}</p>
-
-<p><a href="{% url 'admin:index' %}">{% trans 'Log in again' %}</a></p>
-
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_change_done.html b/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_change_done.html
deleted file mode 100644
index 1c928a0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_change_done.html
+++ /dev/null
@@ -1,19 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-{% block userlinks %}{% url 'django-admindocs-docroot' as docsroot %}{% if docsroot %}<a href="{{ docsroot }}">{% trans 'Documentation' %}</a> / {% endif %}{% trans 'Change password' %} / <a href="{% url 'admin:logout' %}">{% trans 'Log out' %}</a>{% endblock %}
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; {% trans 'Password change' %}
-</div>
-{% endblock %}
-
-{% block title %}{% trans 'Password change successful' %}{% endblock %}
-
-{% block content %}
-
-<h1>{% trans 'Password change successful' %}</h1>
-
-<p>{% trans 'Your password was changed.' %}</p>
-
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_change_form.html b/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_change_form.html
deleted file mode 100644
index f7316a7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_change_form.html
+++ /dev/null
@@ -1,55 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n static %}
-{% block extrastyle %}{{ block.super }}<link rel="stylesheet" type="text/css" href="{% static "admin/css/forms.css" %}" />{% endblock %}
-{% block userlinks %}{% url 'django-admindocs-docroot' as docsroot %}{% if docsroot %}<a href="{{ docsroot }}">{% trans 'Documentation' %}</a> / {% endif %} {% trans 'Change password' %} / <a href="{% url 'admin:logout' %}">{% trans 'Log out' %}</a>{% endblock %}
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; {% trans 'Password change' %}
-</div>
-{% endblock %}
-
-{% block title %}{% trans 'Password change' %}{% endblock %}
-
-{% block content %}<div id="content-main">
-
-<form action="" method="post">{% csrf_token %}
-<div>
-{% if form.errors %}
- <p class="errornote">
- {% if form.errors.items|length == 1 %}{% trans "Please correct the error below." %}{% else %}{% trans "Please correct the errors below." %}{% endif %}
- </p>
-{% endif %}
-
-<h1>{% trans 'Password change' %}</h1>
-
-<p>{% trans "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly." %}</p>
-
-<fieldset class="module aligned wide">
-
-<div class="form-row">
- {{ form.old_password.errors }}
- <label for="id_old_password" class="required">{% trans 'Old password' %}:</label>{{ form.old_password }}
-</div>
-
-<div class="form-row">
- {{ form.new_password1.errors }}
- <label for="id_new_password1" class="required">{% trans 'New password' %}:</label>{{ form.new_password1 }}
-</div>
-
-<div class="form-row">
-{{ form.new_password2.errors }}
- <label for="id_new_password2" class="required">{% trans 'Password (again)' %}:</label>{{ form.new_password2 }}
-</div>
-
-</fieldset>
-
-<div class="submit-row">
- <input type="submit" value="{% trans 'Change my password' %}" class="default" />
-</div>
-
-<script type="text/javascript">document.getElementById("id_old_password").focus();</script>
-</div>
-</form></div>
-
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_complete.html b/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_complete.html
deleted file mode 100644
index d97f338..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_complete.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; {% trans 'Password reset' %}
-</div>
-{% endblock %}
-
-{% block title %}{% trans 'Password reset complete' %}{% endblock %}
-
-{% block content %}
-
-<h1>{% trans 'Password reset complete' %}</h1>
-
-<p>{% trans "Your password has been set. You may go ahead and log in now." %}</p>
-
-<p><a href="{{ login_url }}">{% trans 'Log in' %}</a></p>
-
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_confirm.html b/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_confirm.html
deleted file mode 100644
index 81020b9..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_confirm.html
+++ /dev/null
@@ -1,37 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; {% trans 'Password reset confirmation' %}
-</div>
-{% endblock %}
-
-{% block title %}{% trans 'Password reset' %}{% endblock %}
-
-{% block content %}
-
-{% if validlink %}
-
-<h1>{% trans 'Enter new password' %}</h1>
-
-<p>{% trans "Please enter your new password twice so we can verify you typed it in correctly." %}</p>
-
-<form action="" method="post">{% csrf_token %}
-{{ form.new_password1.errors }}
-<p class="aligned wide"><label for="id_new_password1">{% trans 'New password:' %}</label>{{ form.new_password1 }}</p>
-{{ form.new_password2.errors }}
-<p class="aligned wide"><label for="id_new_password2">{% trans 'Confirm password:' %}</label>{{ form.new_password2 }}</p>
-<p><input type="submit" value="{% trans 'Change my password' %}" /></p>
-</form>
-
-{% else %}
-
-<h1>{% trans 'Password reset unsuccessful' %}</h1>
-
-<p>{% trans "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." %}</p>
-
-{% endif %}
-
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_done.html b/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_done.html
deleted file mode 100644
index 9847104..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_done.html
+++ /dev/null
@@ -1,21 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; {% trans 'Password reset' %}
-</div>
-{% endblock %}
-
-{% block title %}{% trans 'Password reset successful' %}{% endblock %}
-
-{% block content %}
-
-<h1>{% trans 'Password reset successful' %}</h1>
-
-<p>{% trans "We've emailed you instructions for setting your password. You should be receiving them shortly." %}</p>
-
-<p>{% trans "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder." %}</p>
-
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_email.html b/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_email.html
deleted file mode 100644
index 01b3bcc..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_email.html
+++ /dev/null
@@ -1,14 +0,0 @@
-{% load i18n %}{% autoescape off %}
-{% blocktrans %}You're receiving this email because you requested a password reset for your user account at {{ site_name }}.{% endblocktrans %}
-
-{% trans "Please go to the following page and choose a new password:" %}
-{% block reset_link %}
-{{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %}
-{% endblock %}
-{% trans "Your username, in case you've forgotten:" %} {{ user.get_username }}
-
-{% trans "Thanks for using our site!" %}
-
-{% blocktrans %}The {{ site_name }} team{% endblocktrans %}
-
-{% endautoescape %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_form.html b/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_form.html
deleted file mode 100644
index c9998a1..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templates/registration/password_reset_form.html
+++ /dev/null
@@ -1,24 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; {% trans 'Password reset' %}
-</div>
-{% endblock %}
-
-{% block title %}{% trans "Password reset" %}{% endblock %}
-
-{% block content %}
-
-<h1>{% trans "Password reset" %}</h1>
-
-<p>{% trans "Forgotten your password? Enter your email address below, and we'll email instructions for setting a new one." %}</p>
-
-<form action="" method="post">{% csrf_token %}
-{{ form.email.errors }}
-<p><label for="id_email">{% trans 'Email address:' %}</label> {{ form.email }} <input type="submit" value="{% trans 'Reset my password' %}" /></p>
-</form>
-
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templatetags/__init__.py b/lib/python2.7/site-packages/django/contrib/admin/templatetags/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templatetags/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_list.py b/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_list.py
deleted file mode 100644
index 8596dfb..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_list.py
+++ /dev/null
@@ -1,394 +0,0 @@
-from __future__ import unicode_literals
-
-import datetime
-
-from django.contrib.admin.templatetags.admin_urls import add_preserved_filters
-from django.contrib.admin.util import (lookup_field, display_for_field,
- display_for_value, label_for_field)
-from django.contrib.admin.views.main import (ALL_VAR, EMPTY_CHANGELIST_VALUE,
- ORDER_VAR, PAGE_VAR, SEARCH_VAR)
-from django.contrib.admin.templatetags.admin_static import static
-from django.core.exceptions import ObjectDoesNotExist
-from django.db import models
-from django.utils import formats
-from django.utils.html import escapejs, format_html
-from django.utils.safestring import mark_safe
-from django.utils.text import capfirst
-from django.utils.translation import ugettext as _
-from django.utils.encoding import force_text
-from django.template import Library
-from django.template.loader import get_template
-from django.template.context import Context
-
-register = Library()
-
-DOT = '.'
-
-@register.simple_tag
-def paginator_number(cl,i):
- """
- Generates an individual page index link in a paginated list.
- """
- if i == DOT:
- return '... '
- elif i == cl.page_num:
- return format_html('<span class="this-page">{0}</span> ', i+1)
- else:
- return format_html('<a href="{0}"{1}>{2}</a> ',
- cl.get_query_string({PAGE_VAR: i}),
- mark_safe(' class="end"' if i == cl.paginator.num_pages-1 else ''),
- i+1)
-
-@register.inclusion_tag('admin/pagination.html')
-def pagination(cl):
- """
- Generates the series of links to the pages in a paginated list.
- """
- paginator, page_num = cl.paginator, cl.page_num
-
- pagination_required = (not cl.show_all or not cl.can_show_all) and cl.multi_page
- if not pagination_required:
- page_range = []
- else:
- ON_EACH_SIDE = 3
- ON_ENDS = 2
-
- # If there are 10 or fewer pages, display links to every page.
- # Otherwise, do some fancy
- if paginator.num_pages <= 10:
- page_range = range(paginator.num_pages)
- else:
- # Insert "smart" pagination links, so that there are always ON_ENDS
- # links at either end of the list of pages, and there are always
- # ON_EACH_SIDE links at either end of the "current page" link.
- page_range = []
- if page_num > (ON_EACH_SIDE + ON_ENDS):
- page_range.extend(range(0, ON_ENDS))
- page_range.append(DOT)
- page_range.extend(range(page_num - ON_EACH_SIDE, page_num + 1))
- else:
- page_range.extend(range(0, page_num + 1))
- if page_num < (paginator.num_pages - ON_EACH_SIDE - ON_ENDS - 1):
- page_range.extend(range(page_num + 1, page_num + ON_EACH_SIDE + 1))
- page_range.append(DOT)
- page_range.extend(range(paginator.num_pages - ON_ENDS, paginator.num_pages))
- else:
- page_range.extend(range(page_num + 1, paginator.num_pages))
-
- need_show_all_link = cl.can_show_all and not cl.show_all and cl.multi_page
- return {
- 'cl': cl,
- 'pagination_required': pagination_required,
- 'show_all_url': need_show_all_link and cl.get_query_string({ALL_VAR: ''}),
- 'page_range': page_range,
- 'ALL_VAR': ALL_VAR,
- '1': 1,
- }
-
-def result_headers(cl):
- """
- Generates the list column headers.
- """
- ordering_field_columns = cl.get_ordering_field_columns()
- for i, field_name in enumerate(cl.list_display):
- text, attr = label_for_field(field_name, cl.model,
- model_admin = cl.model_admin,
- return_attr = True
- )
- if attr:
- # Potentially not sortable
-
- # if the field is the action checkbox: no sorting and special class
- if field_name == 'action_checkbox':
- yield {
- "text": text,
- "class_attrib": mark_safe(' class="action-checkbox-column"'),
- "sortable": False,
- }
- continue
-
- admin_order_field = getattr(attr, "admin_order_field", None)
- if not admin_order_field:
- # Not sortable
- yield {
- "text": text,
- "class_attrib": format_html(' class="column-{0}"', field_name),
- "sortable": False,
- }
- continue
-
- # OK, it is sortable if we got this far
- th_classes = ['sortable', 'column-{0}'.format(field_name)]
- order_type = ''
- new_order_type = 'asc'
- sort_priority = 0
- sorted = False
- # Is it currently being sorted on?
- if i in ordering_field_columns:
- sorted = True
- order_type = ordering_field_columns.get(i).lower()
- sort_priority = list(ordering_field_columns).index(i) + 1
- th_classes.append('sorted %sending' % order_type)
- new_order_type = {'asc': 'desc', 'desc': 'asc'}[order_type]
-
- # build new ordering param
- o_list_primary = [] # URL for making this field the primary sort
- o_list_remove = [] # URL for removing this field from sort
- o_list_toggle = [] # URL for toggling order type for this field
- make_qs_param = lambda t, n: ('-' if t == 'desc' else '') + str(n)
-
- for j, ot in ordering_field_columns.items():
- if j == i: # Same column
- param = make_qs_param(new_order_type, j)
- # We want clicking on this header to bring the ordering to the
- # front
- o_list_primary.insert(0, param)
- o_list_toggle.append(param)
- # o_list_remove - omit
- else:
- param = make_qs_param(ot, j)
- o_list_primary.append(param)
- o_list_toggle.append(param)
- o_list_remove.append(param)
-
- if i not in ordering_field_columns:
- o_list_primary.insert(0, make_qs_param(new_order_type, i))
-
-
- yield {
- "text": text,
- "sortable": True,
- "sorted": sorted,
- "ascending": order_type == "asc",
- "sort_priority": sort_priority,
- "url_primary": cl.get_query_string({ORDER_VAR: '.'.join(o_list_primary)}),
- "url_remove": cl.get_query_string({ORDER_VAR: '.'.join(o_list_remove)}),
- "url_toggle": cl.get_query_string({ORDER_VAR: '.'.join(o_list_toggle)}),
- "class_attrib": format_html(' class="{0}"', ' '.join(th_classes))
- if th_classes else '',
- }
-
-def _boolean_icon(field_val):
- icon_url = static('admin/img/icon-%s.gif' %
- {True: 'yes', False: 'no', None: 'unknown'}[field_val])
- return format_html('<img src="{0}" alt="{1}" />', icon_url, field_val)
-
-def items_for_result(cl, result, form):
- """
- Generates the actual list of data.
- """
- first = True
- pk = cl.lookup_opts.pk.attname
- for field_name in cl.list_display:
- row_class = ''
- try:
- f, attr, value = lookup_field(field_name, result, cl.model_admin)
- except ObjectDoesNotExist:
- result_repr = EMPTY_CHANGELIST_VALUE
- else:
- if f is None:
- if field_name == 'action_checkbox':
- row_class = mark_safe(' class="action-checkbox"')
- allow_tags = getattr(attr, 'allow_tags', False)
- boolean = getattr(attr, 'boolean', False)
- if boolean:
- allow_tags = True
- result_repr = display_for_value(value, boolean)
- # Strip HTML tags in the resulting text, except if the
- # function has an "allow_tags" attribute set to True.
- if allow_tags:
- result_repr = mark_safe(result_repr)
- if isinstance(value, (datetime.date, datetime.time)):
- row_class = mark_safe(' class="nowrap"')
- else:
- if isinstance(f.rel, models.ManyToOneRel):
- field_val = getattr(result, f.name)
- if field_val is None:
- result_repr = EMPTY_CHANGELIST_VALUE
- else:
- result_repr = field_val
- else:
- result_repr = display_for_field(value, f)
- if isinstance(f, (models.DateField, models.TimeField, models.ForeignKey)):
- row_class = mark_safe(' class="nowrap"')
- if force_text(result_repr) == '':
- result_repr = mark_safe('&nbsp;')
- # If list_display_links not defined, add the link tag to the first field
- if (first and not cl.list_display_links) or field_name in cl.list_display_links:
- table_tag = {True:'th', False:'td'}[first]
- first = False
- url = cl.url_for_result(result)
- url = add_preserved_filters({'preserved_filters': cl.preserved_filters, 'opts': cl.opts}, url)
- # Convert the pk to something that can be used in Javascript.
- # Problem cases are long ints (23L) and non-ASCII strings.
- if cl.to_field:
- attr = str(cl.to_field)
- else:
- attr = pk
- value = result.serializable_value(attr)
- result_id = escapejs(value)
- yield format_html('<{0}{1}><a href="{2}"{3}>{4}</a></{5}>',
- table_tag,
- row_class,
- url,
- format_html(' onclick="opener.dismissRelatedLookupPopup(window, &#39;{0}&#39;); return false;"', result_id)
- if cl.is_popup else '',
- result_repr,
- table_tag)
- else:
- # By default the fields come from ModelAdmin.list_editable, but if we pull
- # the fields out of the form instead of list_editable custom admins
- # can provide fields on a per request basis
- if (form and field_name in form.fields and not (
- field_name == cl.model._meta.pk.name and
- form[cl.model._meta.pk.name].is_hidden)):
- bf = form[field_name]
- result_repr = mark_safe(force_text(bf.errors) + force_text(bf))
- yield format_html('<td{0}>{1}</td>', row_class, result_repr)
- if form and not form[cl.model._meta.pk.name].is_hidden:
- yield format_html('<td>{0}</td>', force_text(form[cl.model._meta.pk.name]))
-
-class ResultList(list):
- # Wrapper class used to return items in a list_editable
- # changelist, annotated with the form object for error
- # reporting purposes. Needed to maintain backwards
- # compatibility with existing admin templates.
- def __init__(self, form, *items):
- self.form = form
- super(ResultList, self).__init__(*items)
-
-def results(cl):
- if cl.formset:
- for res, form in zip(cl.result_list, cl.formset.forms):
- yield ResultList(form, items_for_result(cl, res, form))
- else:
- for res in cl.result_list:
- yield ResultList(None, items_for_result(cl, res, None))
-
-def result_hidden_fields(cl):
- if cl.formset:
- for res, form in zip(cl.result_list, cl.formset.forms):
- if form[cl.model._meta.pk.name].is_hidden:
- yield mark_safe(force_text(form[cl.model._meta.pk.name]))
-
-@register.inclusion_tag("admin/change_list_results.html")
-def result_list(cl):
- """
- Displays the headers and data list together
- """
- headers = list(result_headers(cl))
- num_sorted_fields = 0
- for h in headers:
- if h['sortable'] and h['sorted']:
- num_sorted_fields += 1
- return {'cl': cl,
- 'result_hidden_fields': list(result_hidden_fields(cl)),
- 'result_headers': headers,
- 'num_sorted_fields': num_sorted_fields,
- 'results': list(results(cl))}
-
-@register.inclusion_tag('admin/date_hierarchy.html')
-def date_hierarchy(cl):
- """
- Displays the date hierarchy for date drill-down functionality.
- """
- if cl.date_hierarchy:
- field_name = cl.date_hierarchy
- field = cl.opts.get_field_by_name(field_name)[0]
- dates_or_datetimes = 'datetimes' if isinstance(field, models.DateTimeField) else 'dates'
- year_field = '%s__year' % field_name
- month_field = '%s__month' % field_name
- day_field = '%s__day' % field_name
- field_generic = '%s__' % field_name
- year_lookup = cl.params.get(year_field)
- month_lookup = cl.params.get(month_field)
- day_lookup = cl.params.get(day_field)
-
- link = lambda d: cl.get_query_string(d, [field_generic])
-
- if not (year_lookup or month_lookup or day_lookup):
- # select appropriate start level
- date_range = cl.queryset.aggregate(first=models.Min(field_name),
- last=models.Max(field_name))
- if date_range['first'] and date_range['last']:
- if date_range['first'].year == date_range['last'].year:
- year_lookup = date_range['first'].year
- if date_range['first'].month == date_range['last'].month:
- month_lookup = date_range['first'].month
-
- if year_lookup and month_lookup and day_lookup:
- day = datetime.date(int(year_lookup), int(month_lookup), int(day_lookup))
- return {
- 'show': True,
- 'back': {
- 'link': link({year_field: year_lookup, month_field: month_lookup}),
- 'title': capfirst(formats.date_format(day, 'YEAR_MONTH_FORMAT'))
- },
- 'choices': [{'title': capfirst(formats.date_format(day, 'MONTH_DAY_FORMAT'))}]
- }
- elif year_lookup and month_lookup:
- days = cl.queryset.filter(**{year_field: year_lookup, month_field: month_lookup})
- days = getattr(days, dates_or_datetimes)(field_name, 'day')
- return {
- 'show': True,
- 'back': {
- 'link': link({year_field: year_lookup}),
- 'title': str(year_lookup)
- },
- 'choices': [{
- 'link': link({year_field: year_lookup, month_field: month_lookup, day_field: day.day}),
- 'title': capfirst(formats.date_format(day, 'MONTH_DAY_FORMAT'))
- } for day in days]
- }
- elif year_lookup:
- months = cl.queryset.filter(**{year_field: year_lookup})
- months = getattr(months, dates_or_datetimes)(field_name, 'month')
- return {
- 'show': True,
- 'back': {
- 'link': link({}),
- 'title': _('All dates')
- },
- 'choices': [{
- 'link': link({year_field: year_lookup, month_field: month.month}),
- 'title': capfirst(formats.date_format(month, 'YEAR_MONTH_FORMAT'))
- } for month in months]
- }
- else:
- years = getattr(cl.queryset, dates_or_datetimes)(field_name, 'year')
- return {
- 'show': True,
- 'choices': [{
- 'link': link({year_field: str(year.year)}),
- 'title': str(year.year),
- } for year in years]
- }
-
-@register.inclusion_tag('admin/search_form.html')
-def search_form(cl):
- """
- Displays a search form for searching the list.
- """
- return {
- 'cl': cl,
- 'show_result_count': cl.result_count != cl.full_result_count,
- 'search_var': SEARCH_VAR
- }
-
-@register.simple_tag
-def admin_list_filter(cl, spec):
- tpl = get_template(spec.template)
- return tpl.render(Context({
- 'title': spec.title,
- 'choices' : list(spec.choices(cl)),
- 'spec': spec,
- }))
-
-@register.inclusion_tag('admin/actions.html', takes_context=True)
-def admin_actions(context):
- """
- Track the number of times the action field has been rendered on the page,
- so we know which value to use.
- """
- context['action_index'] = context.get('action_index', -1) + 1
- return context
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_modify.py b/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_modify.py
deleted file mode 100644
index 98ac1a6..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_modify.py
+++ /dev/null
@@ -1,59 +0,0 @@
-from django import template
-
-register = template.Library()
-
-@register.inclusion_tag('admin/prepopulated_fields_js.html', takes_context=True)
-def prepopulated_fields_js(context):
- """
- Creates a list of prepopulated_fields that should render Javascript for
- the prepopulated fields for both the admin form and inlines.
- """
- prepopulated_fields = []
- if context['add'] and 'adminform' in context:
- prepopulated_fields.extend(context['adminform'].prepopulated_fields)
- if 'inline_admin_formsets' in context:
- for inline_admin_formset in context['inline_admin_formsets']:
- for inline_admin_form in inline_admin_formset:
- if inline_admin_form.original is None:
- prepopulated_fields.extend(inline_admin_form.prepopulated_fields)
- context.update({'prepopulated_fields': prepopulated_fields})
- return context
-
-@register.inclusion_tag('admin/submit_line.html', takes_context=True)
-def submit_row(context):
- """
- Displays the row of buttons for delete and save.
- """
- opts = context['opts']
- change = context['change']
- is_popup = context['is_popup']
- save_as = context['save_as']
- ctx = {
- 'opts': opts,
- 'show_delete_link': (not is_popup and context['has_delete_permission']
- and change and context.get('show_delete', True)),
- 'show_save_as_new': not is_popup and change and save_as,
- 'show_save_and_add_another': context['has_add_permission'] and
- not is_popup and (not save_as or context['add']),
- 'show_save_and_continue': not is_popup and context['has_change_permission'],
- 'is_popup': is_popup,
- 'show_save': True,
- 'preserved_filters': context.get('preserved_filters'),
- }
- if context.get('original') is not None:
- ctx['original'] = context['original']
- return ctx
-
-@register.filter
-def cell_count(inline_admin_form):
- """Returns the number of cells used in a tabular inline"""
- count = 1 # Hidden cell with hidden 'id' field
- for fieldset in inline_admin_form:
- # Loop through all the fields (one per cell)
- for line in fieldset:
- for field in line:
- count += 1
- if inline_admin_form.formset.can_delete:
- # Delete checkbox
- count += 1
- return count
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_static.py b/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_static.py
deleted file mode 100644
index 5ea3ba5..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_static.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from django.conf import settings
-from django.template import Library
-
-register = Library()
-
-if 'django.contrib.staticfiles' in settings.INSTALLED_APPS:
- from django.contrib.staticfiles.templatetags.staticfiles import static
-else:
- from django.templatetags.static import static
-
-static = register.simple_tag(static)
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_urls.py b/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_urls.py
deleted file mode 100644
index dc6748e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templatetags/admin_urls.py
+++ /dev/null
@@ -1,52 +0,0 @@
-from django import template
-from django.contrib.admin.util import quote
-from django.core.urlresolvers import Resolver404, get_script_prefix, resolve
-from django.utils.http import urlencode
-from django.utils.six.moves.urllib.parse import parse_qsl, urlparse, urlunparse
-
-register = template.Library()
-
-
-@register.filter
-def admin_urlname(value, arg):
- return 'admin:%s_%s_%s' % (value.app_label, value.model_name, arg)
-
-
-@register.filter
-def admin_urlquote(value):
- return quote(value)
-
-
-@register.simple_tag(takes_context=True)
-def add_preserved_filters(context, url, popup=False):
- opts = context.get('opts')
- preserved_filters = context.get('preserved_filters')
-
- parsed_url = list(urlparse(url))
- parsed_qs = dict(parse_qsl(parsed_url[4]))
- merged_qs = dict()
-
- if opts and preserved_filters:
- preserved_filters = dict(parse_qsl(preserved_filters))
-
- match_url = '/%s' % url.partition(get_script_prefix())[2]
- try:
- match = resolve(match_url)
- except Resolver404:
- pass
- else:
- current_url = '%s:%s' % (match.app_name, match.url_name)
- changelist_url = 'admin:%s_%s_changelist' % (opts.app_label, opts.model_name)
- if changelist_url == current_url and '_changelist_filters' in preserved_filters:
- preserved_filters = dict(parse_qsl(preserved_filters['_changelist_filters']))
-
- merged_qs.update(preserved_filters)
-
- if popup:
- from django.contrib.admin.options import IS_POPUP_VAR
- merged_qs[IS_POPUP_VAR] = 1
-
- merged_qs.update(parsed_qs)
-
- parsed_url[4] = urlencode(merged_qs)
- return urlunparse(parsed_url)
diff --git a/lib/python2.7/site-packages/django/contrib/admin/templatetags/log.py b/lib/python2.7/site-packages/django/contrib/admin/templatetags/log.py
deleted file mode 100644
index 1b9e6aa..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/templatetags/log.py
+++ /dev/null
@@ -1,56 +0,0 @@
-from django import template
-from django.contrib.admin.models import LogEntry
-
-register = template.Library()
-
-class AdminLogNode(template.Node):
- def __init__(self, limit, varname, user):
- self.limit, self.varname, self.user = limit, varname, user
-
- def __repr__(self):
- return "<GetAdminLog Node>"
-
- def render(self, context):
- if self.user is None:
- context[self.varname] = LogEntry.objects.all().select_related('content_type', 'user')[:self.limit]
- else:
- user_id = self.user
- if not user_id.isdigit():
- user_id = context[self.user].pk
- context[self.varname] = LogEntry.objects.filter(user__pk__exact=user_id).select_related('content_type', 'user')[:int(self.limit)]
- return ''
-
-@register.tag
-def get_admin_log(parser, token):
- """
- Populates a template variable with the admin log for the given criteria.
-
- Usage::
-
- {% get_admin_log [limit] as [varname] for_user [context_var_containing_user_obj] %}
-
- Examples::
-
- {% get_admin_log 10 as admin_log for_user 23 %}
- {% get_admin_log 10 as admin_log for_user user %}
- {% get_admin_log 10 as admin_log %}
-
- Note that ``context_var_containing_user_obj`` can be a hard-coded integer
- (user ID) or the name of a template context variable containing the user
- object whose ID you want.
- """
- tokens = token.contents.split()
- if len(tokens) < 4:
- raise template.TemplateSyntaxError(
- "'get_admin_log' statements require two arguments")
- if not tokens[1].isdigit():
- raise template.TemplateSyntaxError(
- "First argument to 'get_admin_log' must be an integer")
- if tokens[2] != 'as':
- raise template.TemplateSyntaxError(
- "Second argument to 'get_admin_log' must be 'as'")
- if len(tokens) > 4:
- if tokens[4] != 'for_user':
- raise template.TemplateSyntaxError(
- "Fourth argument to 'get_admin_log' must be 'for_user'")
- return AdminLogNode(limit=tokens[1], varname=tokens[3], user=(tokens[5] if len(tokens) > 5 else None))
diff --git a/lib/python2.7/site-packages/django/contrib/admin/tests.py b/lib/python2.7/site-packages/django/contrib/admin/tests.py
deleted file mode 100644
index 6487299..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/tests.py
+++ /dev/null
@@ -1,124 +0,0 @@
-import os
-
-from django.test import LiveServerTestCase
-from django.utils.module_loading import import_by_path
-from django.utils.unittest import SkipTest
-from django.utils.translation import ugettext as _
-
-
-class AdminSeleniumWebDriverTestCase(LiveServerTestCase):
-
- available_apps = [
- 'django.contrib.admin',
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.sites',
- ]
- webdriver_class = 'selenium.webdriver.firefox.webdriver.WebDriver'
-
- @classmethod
- def setUpClass(cls):
- if not os.environ.get('DJANGO_SELENIUM_TESTS', False):
- raise SkipTest('Selenium tests not requested')
- try:
- cls.selenium = import_by_path(cls.webdriver_class)()
- except Exception as e:
- raise SkipTest('Selenium webdriver "%s" not installed or not '
- 'operational: %s' % (cls.webdriver_class, str(e)))
- # This has to be last to ensure that resources are cleaned up properly!
- super(AdminSeleniumWebDriverTestCase, cls).setUpClass()
-
- @classmethod
- def _tearDownClassInternal(cls):
- if hasattr(cls, 'selenium'):
- cls.selenium.quit()
- super(AdminSeleniumWebDriverTestCase, cls)._tearDownClassInternal()
-
- def wait_until(self, callback, timeout=10):
- """
- Helper function that blocks the execution of the tests until the
- specified callback returns a value that is not falsy. This function can
- be called, for example, after clicking a link or submitting a form.
- See the other public methods that call this function for more details.
- """
- from selenium.webdriver.support.wait import WebDriverWait
- WebDriverWait(self.selenium, timeout).until(callback)
-
- def wait_loaded_tag(self, tag_name, timeout=10):
- """
- Helper function that blocks until the element with the given tag name
- is found on the page.
- """
- self.wait_until(
- lambda driver: driver.find_element_by_tag_name(tag_name),
- timeout
- )
-
- def wait_page_loaded(self):
- """
- Block until page has started to load.
- """
- from selenium.common.exceptions import TimeoutException
- try:
- # Wait for the next page to be loaded
- self.wait_loaded_tag('body')
- except TimeoutException:
- # IE7 occasionnally returns an error "Internet Explorer cannot
- # display the webpage" and doesn't load the next page. We just
- # ignore it.
- pass
-
- def admin_login(self, username, password, login_url='/admin/'):
- """
- Helper function to log into the admin.
- """
- self.selenium.get('%s%s' % (self.live_server_url, login_url))
- username_input = self.selenium.find_element_by_name('username')
- username_input.send_keys(username)
- password_input = self.selenium.find_element_by_name('password')
- password_input.send_keys(password)
- login_text = _('Log in')
- self.selenium.find_element_by_xpath(
- '//input[@value="%s"]' % login_text).click()
- self.wait_page_loaded()
-
- def get_css_value(self, selector, attribute):
- """
- Helper function that returns the value for the CSS attribute of an
- DOM element specified by the given selector. Uses the jQuery that ships
- with Django.
- """
- return self.selenium.execute_script(
- 'return django.jQuery("%s").css("%s")' % (selector, attribute))
-
- def get_select_option(self, selector, value):
- """
- Returns the <OPTION> with the value `value` inside the <SELECT> widget
- identified by the CSS selector `selector`.
- """
- from selenium.common.exceptions import NoSuchElementException
- options = self.selenium.find_elements_by_css_selector('%s > option' % selector)
- for option in options:
- if option.get_attribute('value') == value:
- return option
- raise NoSuchElementException('Option "%s" not found in "%s"' % (value, selector))
-
- def assertSelectOptions(self, selector, values):
- """
- Asserts that the <SELECT> widget identified by `selector` has the
- options with the given `values`.
- """
- options = self.selenium.find_elements_by_css_selector('%s > option' % selector)
- actual_values = []
- for option in options:
- actual_values.append(option.get_attribute('value'))
- self.assertEqual(values, actual_values)
-
- def has_css_class(self, selector, klass):
- """
- Returns True if the element identified by `selector` has the CSS class
- `klass`.
- """
- return (self.selenium.find_element_by_css_selector(selector)
- .get_attribute('class').find(klass) != -1)
diff --git a/lib/python2.7/site-packages/django/contrib/admin/util.py b/lib/python2.7/site-packages/django/contrib/admin/util.py
deleted file mode 100644
index 177b2da..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/util.py
+++ /dev/null
@@ -1,468 +0,0 @@
-from __future__ import unicode_literals
-
-import datetime
-import decimal
-
-from django.contrib.auth import get_permission_codename
-from django.db import models
-from django.db.models.constants import LOOKUP_SEP
-from django.db.models.deletion import Collector
-from django.db.models.related import RelatedObject
-from django.forms.forms import pretty_name
-from django.utils import formats
-from django.utils.html import format_html
-from django.utils.text import capfirst
-from django.utils import timezone
-from django.utils.encoding import force_str, force_text, smart_text
-from django.utils import six
-from django.utils.translation import ungettext
-from django.core.urlresolvers import reverse
-
-def lookup_needs_distinct(opts, lookup_path):
- """
- Returns True if 'distinct()' should be used to query the given lookup path.
- """
- field_name = lookup_path.split('__', 1)[0]
- field = opts.get_field_by_name(field_name)[0]
- if ((hasattr(field, 'rel') and
- isinstance(field.rel, models.ManyToManyRel)) or
- (isinstance(field, models.related.RelatedObject) and
- not field.field.unique)):
- return True
- return False
-
-def prepare_lookup_value(key, value):
- """
- Returns a lookup value prepared to be used in queryset filtering.
- """
- # if key ends with __in, split parameter into separate values
- if key.endswith('__in'):
- value = value.split(',')
- # if key ends with __isnull, special case '' and the string literals 'false' and '0'
- if key.endswith('__isnull'):
- if value.lower() in ('', 'false', '0'):
- value = False
- else:
- value = True
- return value
-
-def quote(s):
- """
- Ensure that primary key values do not confuse the admin URLs by escaping
- any '/', '_' and ':' and similarly problematic characters.
- Similar to urllib.quote, except that the quoting is slightly different so
- that it doesn't get automatically unquoted by the Web browser.
- """
- if not isinstance(s, six.string_types):
- return s
- res = list(s)
- for i in range(len(res)):
- c = res[i]
- if c in """:/_#?;@&=+$,"<>%\\""":
- res[i] = '_%02X' % ord(c)
- return ''.join(res)
-
-
-def unquote(s):
- """
- Undo the effects of quote(). Based heavily on urllib.unquote().
- """
- mychr = chr
- myatoi = int
- list = s.split('_')
- res = [list[0]]
- myappend = res.append
- del list[0]
- for item in list:
- if item[1:2]:
- try:
- myappend(mychr(myatoi(item[:2], 16)) + item[2:])
- except ValueError:
- myappend('_' + item)
- else:
- myappend('_' + item)
- return "".join(res)
-
-
-def flatten_fieldsets(fieldsets):
- """Returns a list of field names from an admin fieldsets structure."""
- field_names = []
- for name, opts in fieldsets:
- for field in opts['fields']:
- if isinstance(field, (list, tuple)):
- field_names.extend(field)
- else:
- field_names.append(field)
- return field_names
-
-
-def get_deleted_objects(objs, opts, user, admin_site, using):
- """
- Find all objects related to ``objs`` that should also be deleted. ``objs``
- must be a homogenous iterable of objects (e.g. a QuerySet).
-
- Returns a nested list of strings suitable for display in the
- template with the ``unordered_list`` filter.
-
- """
- collector = NestedObjects(using=using)
- collector.collect(objs)
- perms_needed = set()
-
- def format_callback(obj):
- has_admin = obj.__class__ in admin_site._registry
- opts = obj._meta
-
- if has_admin:
- admin_url = reverse('%s:%s_%s_change'
- % (admin_site.name,
- opts.app_label,
- opts.model_name),
- None, (quote(obj._get_pk_val()),))
- p = '%s.%s' % (opts.app_label,
- get_permission_codename('delete', opts))
- if not user.has_perm(p):
- perms_needed.add(opts.verbose_name)
- # Display a link to the admin page.
- return format_html('{0}: <a href="{1}">{2}</a>',
- capfirst(opts.verbose_name),
- admin_url,
- obj)
- else:
- # Don't display link to edit, because it either has no
- # admin or is edited inline.
- return '%s: %s' % (capfirst(opts.verbose_name),
- force_text(obj))
-
- to_delete = collector.nested(format_callback)
-
- protected = [format_callback(obj) for obj in collector.protected]
-
- return to_delete, perms_needed, protected
-
-
-class NestedObjects(Collector):
- def __init__(self, *args, **kwargs):
- super(NestedObjects, self).__init__(*args, **kwargs)
- self.edges = {} # {from_instance: [to_instances]}
- self.protected = set()
-
- def add_edge(self, source, target):
- self.edges.setdefault(source, []).append(target)
-
- def collect(self, objs, source_attr=None, **kwargs):
- for obj in objs:
- if source_attr:
- self.add_edge(getattr(obj, source_attr), obj)
- else:
- self.add_edge(None, obj)
- try:
- return super(NestedObjects, self).collect(objs, source_attr=source_attr, **kwargs)
- except models.ProtectedError as e:
- self.protected.update(e.protected_objects)
-
- def related_objects(self, related, objs):
- qs = super(NestedObjects, self).related_objects(related, objs)
- return qs.select_related(related.field.name)
-
- def _nested(self, obj, seen, format_callback):
- if obj in seen:
- return []
- seen.add(obj)
- children = []
- for child in self.edges.get(obj, ()):
- children.extend(self._nested(child, seen, format_callback))
- if format_callback:
- ret = [format_callback(obj)]
- else:
- ret = [obj]
- if children:
- ret.append(children)
- return ret
-
- def nested(self, format_callback=None):
- """
- Return the graph as a nested list.
-
- """
- seen = set()
- roots = []
- for root in self.edges.get(None, ()):
- roots.extend(self._nested(root, seen, format_callback))
- return roots
-
- def can_fast_delete(self, *args, **kwargs):
- """
- We always want to load the objects into memory so that we can display
- them to the user in confirm page.
- """
- return False
-
-
-def model_format_dict(obj):
- """
- Return a `dict` with keys 'verbose_name' and 'verbose_name_plural',
- typically for use with string formatting.
-
- `obj` may be a `Model` instance, `Model` subclass, or `QuerySet` instance.
-
- """
- if isinstance(obj, (models.Model, models.base.ModelBase)):
- opts = obj._meta
- elif isinstance(obj, models.query.QuerySet):
- opts = obj.model._meta
- else:
- opts = obj
- return {
- 'verbose_name': force_text(opts.verbose_name),
- 'verbose_name_plural': force_text(opts.verbose_name_plural)
- }
-
-
-def model_ngettext(obj, n=None):
- """
- Return the appropriate `verbose_name` or `verbose_name_plural` value for
- `obj` depending on the count `n`.
-
- `obj` may be a `Model` instance, `Model` subclass, or `QuerySet` instance.
- If `obj` is a `QuerySet` instance, `n` is optional and the length of the
- `QuerySet` is used.
-
- """
- if isinstance(obj, models.query.QuerySet):
- if n is None:
- n = obj.count()
- obj = obj.model
- d = model_format_dict(obj)
- singular, plural = d["verbose_name"], d["verbose_name_plural"]
- return ungettext(singular, plural, n or 0)
-
-
-def lookup_field(name, obj, model_admin=None):
- opts = obj._meta
- try:
- f = opts.get_field(name)
- except models.FieldDoesNotExist:
- # For non-field values, the value is either a method, property or
- # returned via a callable.
- if callable(name):
- attr = name
- value = attr(obj)
- elif (model_admin is not None and hasattr(model_admin, name) and
- not name == '__str__' and not name == '__unicode__'):
- attr = getattr(model_admin, name)
- value = attr(obj)
- else:
- attr = getattr(obj, name)
- if callable(attr):
- value = attr()
- else:
- value = attr
- f = None
- else:
- attr = None
- value = getattr(obj, name)
- return f, attr, value
-
-
-def label_for_field(name, model, model_admin=None, return_attr=False):
- """
- Returns a sensible label for a field name. The name can be a callable,
- property (but not created with @property decorator) or the name of an
- object's attribute, as well as a genuine fields. If return_attr is
- True, the resolved attribute (which could be a callable) is also returned.
- This will be None if (and only if) the name refers to a field.
- """
- attr = None
- try:
- field = model._meta.get_field_by_name(name)[0]
- if isinstance(field, RelatedObject):
- label = field.opts.verbose_name
- else:
- label = field.verbose_name
- except models.FieldDoesNotExist:
- if name == "__unicode__":
- label = force_text(model._meta.verbose_name)
- attr = six.text_type
- elif name == "__str__":
- label = force_str(model._meta.verbose_name)
- attr = bytes
- else:
- if callable(name):
- attr = name
- elif model_admin is not None and hasattr(model_admin, name):
- attr = getattr(model_admin, name)
- elif hasattr(model, name):
- attr = getattr(model, name)
- else:
- message = "Unable to lookup '%s' on %s" % (name, model._meta.object_name)
- if model_admin:
- message += " or %s" % (model_admin.__class__.__name__,)
- raise AttributeError(message)
-
- if hasattr(attr, "short_description"):
- label = attr.short_description
- elif (isinstance(attr, property) and
- hasattr(attr, "fget") and
- hasattr(attr.fget, "short_description")):
- label = attr.fget.short_description
- elif callable(attr):
- if attr.__name__ == "<lambda>":
- label = "--"
- else:
- label = pretty_name(attr.__name__)
- else:
- label = pretty_name(name)
- if return_attr:
- return (label, attr)
- else:
- return label
-
-
-def help_text_for_field(name, model):
- help_text = ""
- try:
- field_data = model._meta.get_field_by_name(name)
- except models.FieldDoesNotExist:
- pass
- else:
- field = field_data[0]
- if not isinstance(field, RelatedObject):
- help_text = field.help_text
- return smart_text(help_text)
-
-
-def display_for_field(value, field):
- from django.contrib.admin.templatetags.admin_list import _boolean_icon
- from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE
-
- if field.flatchoices:
- return dict(field.flatchoices).get(value, EMPTY_CHANGELIST_VALUE)
- # NullBooleanField needs special-case null-handling, so it comes
- # before the general null test.
- elif isinstance(field, models.BooleanField) or isinstance(field, models.NullBooleanField):
- return _boolean_icon(value)
- elif value is None:
- return EMPTY_CHANGELIST_VALUE
- elif isinstance(field, models.DateTimeField):
- return formats.localize(timezone.template_localtime(value))
- elif isinstance(field, (models.DateField, models.TimeField)):
- return formats.localize(value)
- elif isinstance(field, models.DecimalField):
- return formats.number_format(value, field.decimal_places)
- elif isinstance(field, models.FloatField):
- return formats.number_format(value)
- else:
- return smart_text(value)
-
-
-def display_for_value(value, boolean=False):
- from django.contrib.admin.templatetags.admin_list import _boolean_icon
- from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE
-
- if boolean:
- return _boolean_icon(value)
- elif value is None:
- return EMPTY_CHANGELIST_VALUE
- elif isinstance(value, datetime.datetime):
- return formats.localize(timezone.template_localtime(value))
- elif isinstance(value, (datetime.date, datetime.time)):
- return formats.localize(value)
- elif isinstance(value, six.integer_types + (decimal.Decimal, float)):
- return formats.number_format(value)
- else:
- return smart_text(value)
-
-
-class NotRelationField(Exception):
- pass
-
-
-def get_model_from_relation(field):
- if hasattr(field, 'get_path_info'):
- return field.get_path_info()[-1].to_opts.model
- elif isinstance(field, models.related.RelatedObject):
- return field.model
- elif getattr(field, 'rel'): # or isinstance?
- return field.rel.to
- else:
- raise NotRelationField
-
-
-def reverse_field_path(model, path):
- """ Create a reversed field path.
-
- E.g. Given (Order, "user__groups"),
- return (Group, "user__order").
-
- Final field must be a related model, not a data field.
-
- """
- reversed_path = []
- parent = model
- pieces = path.split(LOOKUP_SEP)
- for piece in pieces:
- field, model, direct, m2m = parent._meta.get_field_by_name(piece)
- # skip trailing data field if extant:
- if len(reversed_path) == len(pieces)-1: # final iteration
- try:
- get_model_from_relation(field)
- except NotRelationField:
- break
- if direct:
- related_name = field.related_query_name()
- parent = field.rel.to
- else:
- related_name = field.field.name
- parent = field.model
- reversed_path.insert(0, related_name)
- return (parent, LOOKUP_SEP.join(reversed_path))
-
-
-def get_fields_from_path(model, path):
- """ Return list of Fields given path relative to model.
-
- e.g. (ModelX, "user__groups__name") -> [
- <django.db.models.fields.related.ForeignKey object at 0x...>,
- <django.db.models.fields.related.ManyToManyField object at 0x...>,
- <django.db.models.fields.CharField object at 0x...>,
- ]
- """
- pieces = path.split(LOOKUP_SEP)
- fields = []
- for piece in pieces:
- if fields:
- parent = get_model_from_relation(fields[-1])
- else:
- parent = model
- fields.append(parent._meta.get_field_by_name(piece)[0])
- return fields
-
-
-def remove_trailing_data_field(fields):
- """ Discard trailing non-relation field if extant. """
- try:
- get_model_from_relation(fields[-1])
- except NotRelationField:
- fields = fields[:-1]
- return fields
-
-
-def get_limit_choices_to_from_path(model, path):
- """ Return Q object for limiting choices if applicable.
-
- If final model in path is linked via a ForeignKey or ManyToManyField which
- has a `limit_choices_to` attribute, return it as a Q object.
- """
-
- fields = get_fields_from_path(model, path)
- fields = remove_trailing_data_field(fields)
- limit_choices_to = (
- fields and hasattr(fields[-1], 'rel') and
- getattr(fields[-1].rel, 'limit_choices_to', None))
- if not limit_choices_to:
- return models.Q() # empty Q
- elif isinstance(limit_choices_to, models.Q):
- return limit_choices_to # already a Q
- else:
- return models.Q(**limit_choices_to) # convert dict to Q
diff --git a/lib/python2.7/site-packages/django/contrib/admin/validation.py b/lib/python2.7/site-packages/django/contrib/admin/validation.py
deleted file mode 100644
index fb9634d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/validation.py
+++ /dev/null
@@ -1,429 +0,0 @@
-from django.core.exceptions import ImproperlyConfigured
-from django.db import models
-from django.db.models.fields import FieldDoesNotExist
-from django.forms.models import BaseModelForm, BaseModelFormSet, _get_foreign_key
-from django.contrib.admin.util import get_fields_from_path, NotRelationField
-
-"""
-Does basic ModelAdmin option validation. Calls custom validation
-classmethod in the end if it is provided in cls. The signature of the
-custom validation classmethod should be: def validate(cls, model).
-"""
-
-__all__ = ['BaseValidator', 'InlineValidator']
-
-
-class BaseValidator(object):
- def __init__(self):
- # Before we can introspect models, they need to be fully loaded so that
- # inter-relations are set up correctly. We force that here.
- models.get_apps()
-
- def validate(self, cls, model):
- for m in dir(self):
- if m.startswith('validate_'):
- getattr(self, m)(cls, model)
-
- def check_field_spec(self, cls, model, flds, label):
- """
- Validate the fields specification in `flds` from a ModelAdmin subclass
- `cls` for the `model` model. Use `label` for reporting problems to the user.
-
- The fields specification can be a ``fields`` option or a ``fields``
- sub-option from a ``fieldsets`` option component.
- """
- for fields in flds:
- # The entry in fields might be a tuple. If it is a standalone
- # field, make it into a tuple to make processing easier.
- if type(fields) != tuple:
- fields = (fields,)
- for field in fields:
- if field in cls.readonly_fields:
- # Stuff can be put in fields that isn't actually a
- # model field if it's in readonly_fields,
- # readonly_fields will handle the validation of such
- # things.
- continue
- try:
- f = model._meta.get_field(field)
- except models.FieldDoesNotExist:
- # If we can't find a field on the model that matches, it could be an
- # extra field on the form; nothing to check so move on to the next field.
- continue
- if isinstance(f, models.ManyToManyField) and not f.rel.through._meta.auto_created:
- raise ImproperlyConfigured("'%s.%s' "
- "can't include the ManyToManyField field '%s' because "
- "'%s' manually specifies a 'through' model." % (
- cls.__name__, label, field, field))
-
- def validate_raw_id_fields(self, cls, model):
- " Validate that raw_id_fields only contains field names that are listed on the model. "
- if hasattr(cls, 'raw_id_fields'):
- check_isseq(cls, 'raw_id_fields', cls.raw_id_fields)
- for idx, field in enumerate(cls.raw_id_fields):
- f = get_field(cls, model, 'raw_id_fields', field)
- if not isinstance(f, (models.ForeignKey, models.ManyToManyField)):
- raise ImproperlyConfigured("'%s.raw_id_fields[%d]', '%s' must "
- "be either a ForeignKey or ManyToManyField."
- % (cls.__name__, idx, field))
-
- def validate_fields(self, cls, model):
- " Validate that fields only refer to existing fields, doesn't contain duplicates. "
- # fields
- if cls.fields: # default value is None
- check_isseq(cls, 'fields', cls.fields)
- self.check_field_spec(cls, model, cls.fields, 'fields')
- if cls.fieldsets:
- raise ImproperlyConfigured('Both fieldsets and fields are specified in %s.' % cls.__name__)
- if len(cls.fields) > len(set(cls.fields)):
- raise ImproperlyConfigured('There are duplicate field(s) in %s.fields' % cls.__name__)
-
- def validate_fieldsets(self, cls, model):
- " Validate that fieldsets is properly formatted and doesn't contain duplicates. "
- from django.contrib.admin.options import flatten_fieldsets
- if cls.fieldsets: # default value is None
- check_isseq(cls, 'fieldsets', cls.fieldsets)
- for idx, fieldset in enumerate(cls.fieldsets):
- check_isseq(cls, 'fieldsets[%d]' % idx, fieldset)
- if len(fieldset) != 2:
- raise ImproperlyConfigured("'%s.fieldsets[%d]' does not "
- "have exactly two elements." % (cls.__name__, idx))
- check_isdict(cls, 'fieldsets[%d][1]' % idx, fieldset[1])
- if 'fields' not in fieldset[1]:
- raise ImproperlyConfigured("'fields' key is required in "
- "%s.fieldsets[%d][1] field options dict."
- % (cls.__name__, idx))
- self.check_field_spec(cls, model, fieldset[1]['fields'], "fieldsets[%d][1]['fields']" % idx)
- flattened_fieldsets = flatten_fieldsets(cls.fieldsets)
- if len(flattened_fieldsets) > len(set(flattened_fieldsets)):
- raise ImproperlyConfigured('There are duplicate field(s) in %s.fieldsets' % cls.__name__)
-
- def validate_exclude(self, cls, model):
- " Validate that exclude is a sequence without duplicates. "
- if cls.exclude: # default value is None
- check_isseq(cls, 'exclude', cls.exclude)
- if len(cls.exclude) > len(set(cls.exclude)):
- raise ImproperlyConfigured('There are duplicate field(s) in %s.exclude' % cls.__name__)
-
- def validate_form(self, cls, model):
- " Validate that form subclasses BaseModelForm. "
- if hasattr(cls, 'form') and not issubclass(cls.form, BaseModelForm):
- raise ImproperlyConfigured("%s.form does not inherit from "
- "BaseModelForm." % cls.__name__)
-
- def validate_filter_vertical(self, cls, model):
- " Validate that filter_vertical is a sequence of field names. "
- if hasattr(cls, 'filter_vertical'):
- check_isseq(cls, 'filter_vertical', cls.filter_vertical)
- for idx, field in enumerate(cls.filter_vertical):
- f = get_field(cls, model, 'filter_vertical', field)
- if not isinstance(f, models.ManyToManyField):
- raise ImproperlyConfigured("'%s.filter_vertical[%d]' must be "
- "a ManyToManyField." % (cls.__name__, idx))
-
- def validate_filter_horizontal(self, cls, model):
- " Validate that filter_horizontal is a sequence of field names. "
- if hasattr(cls, 'filter_horizontal'):
- check_isseq(cls, 'filter_horizontal', cls.filter_horizontal)
- for idx, field in enumerate(cls.filter_horizontal):
- f = get_field(cls, model, 'filter_horizontal', field)
- if not isinstance(f, models.ManyToManyField):
- raise ImproperlyConfigured("'%s.filter_horizontal[%d]' must be "
- "a ManyToManyField." % (cls.__name__, idx))
-
- def validate_radio_fields(self, cls, model):
- " Validate that radio_fields is a dictionary of choice or foreign key fields. "
- from django.contrib.admin.options import HORIZONTAL, VERTICAL
- if hasattr(cls, 'radio_fields'):
- check_isdict(cls, 'radio_fields', cls.radio_fields)
- for field, val in cls.radio_fields.items():
- f = get_field(cls, model, 'radio_fields', field)
- if not (isinstance(f, models.ForeignKey) or f.choices):
- raise ImproperlyConfigured("'%s.radio_fields['%s']' "
- "is neither an instance of ForeignKey nor does "
- "have choices set." % (cls.__name__, field))
- if not val in (HORIZONTAL, VERTICAL):
- raise ImproperlyConfigured("'%s.radio_fields['%s']' "
- "is neither admin.HORIZONTAL nor admin.VERTICAL."
- % (cls.__name__, field))
-
- def validate_prepopulated_fields(self, cls, model):
- " Validate that prepopulated_fields if a dictionary containing allowed field types. "
- # prepopulated_fields
- if hasattr(cls, 'prepopulated_fields'):
- check_isdict(cls, 'prepopulated_fields', cls.prepopulated_fields)
- for field, val in cls.prepopulated_fields.items():
- f = get_field(cls, model, 'prepopulated_fields', field)
- if isinstance(f, (models.DateTimeField, models.ForeignKey,
- models.ManyToManyField)):
- raise ImproperlyConfigured("'%s.prepopulated_fields['%s']' "
- "is either a DateTimeField, ForeignKey or "
- "ManyToManyField. This isn't allowed."
- % (cls.__name__, field))
- check_isseq(cls, "prepopulated_fields['%s']" % field, val)
- for idx, f in enumerate(val):
- get_field(cls, model, "prepopulated_fields['%s'][%d]" % (field, idx), f)
-
- def validate_ordering(self, cls, model):
- " Validate that ordering refers to existing fields or is random. "
- # ordering = None
- if cls.ordering:
- check_isseq(cls, 'ordering', cls.ordering)
- for idx, field in enumerate(cls.ordering):
- if field == '?' and len(cls.ordering) != 1:
- raise ImproperlyConfigured("'%s.ordering' has the random "
- "ordering marker '?', but contains other fields as "
- "well. Please either remove '?' or the other fields."
- % cls.__name__)
- if field == '?':
- continue
- if field.startswith('-'):
- field = field[1:]
- # Skip ordering in the format field1__field2 (FIXME: checking
- # this format would be nice, but it's a little fiddly).
- if '__' in field:
- continue
- get_field(cls, model, 'ordering[%d]' % idx, field)
-
- def validate_readonly_fields(self, cls, model):
- " Validate that readonly_fields refers to proper attribute or field. "
- if hasattr(cls, "readonly_fields"):
- check_isseq(cls, "readonly_fields", cls.readonly_fields)
- for idx, field in enumerate(cls.readonly_fields):
- if not callable(field):
- if not hasattr(cls, field):
- if not hasattr(model, field):
- try:
- model._meta.get_field(field)
- except models.FieldDoesNotExist:
- raise ImproperlyConfigured("%s.readonly_fields[%d], %r is not a callable or an attribute of %r or found in the model %r."
- % (cls.__name__, idx, field, cls.__name__, model._meta.object_name))
-
-
-class ModelAdminValidator(BaseValidator):
- def validate_save_as(self, cls, model):
- " Validate save_as is a boolean. "
- check_type(cls, 'save_as', bool)
-
- def validate_save_on_top(self, cls, model):
- " Validate save_on_top is a boolean. "
- check_type(cls, 'save_on_top', bool)
-
- def validate_inlines(self, cls, model):
- " Validate inline model admin classes. "
- from django.contrib.admin.options import BaseModelAdmin
- if hasattr(cls, 'inlines'):
- check_isseq(cls, 'inlines', cls.inlines)
- for idx, inline in enumerate(cls.inlines):
- if not issubclass(inline, BaseModelAdmin):
- raise ImproperlyConfigured("'%s.inlines[%d]' does not inherit "
- "from BaseModelAdmin." % (cls.__name__, idx))
- if not inline.model:
- raise ImproperlyConfigured("'model' is a required attribute "
- "of '%s.inlines[%d]'." % (cls.__name__, idx))
- if not issubclass(inline.model, models.Model):
- raise ImproperlyConfigured("'%s.inlines[%d].model' does not "
- "inherit from models.Model." % (cls.__name__, idx))
- inline.validate(inline.model)
- self.check_inline(inline, model)
-
- def check_inline(self, cls, parent_model):
- " Validate inline class's fk field is not excluded. "
- fk = _get_foreign_key(parent_model, cls.model, fk_name=cls.fk_name, can_fail=True)
- if hasattr(cls, 'exclude') and cls.exclude:
- if fk and fk.name in cls.exclude:
- raise ImproperlyConfigured("%s cannot exclude the field "
- "'%s' - this is the foreign key to the parent model "
- "%s.%s." % (cls.__name__, fk.name, parent_model._meta.app_label, parent_model.__name__))
-
- def validate_list_display(self, cls, model):
- " Validate that list_display only contains fields or usable attributes. "
- if hasattr(cls, 'list_display'):
- check_isseq(cls, 'list_display', cls.list_display)
- for idx, field in enumerate(cls.list_display):
- if not callable(field):
- if not hasattr(cls, field):
- if not hasattr(model, field):
- try:
- model._meta.get_field(field)
- except models.FieldDoesNotExist:
- raise ImproperlyConfigured("%s.list_display[%d], %r is not a callable or an attribute of %r or found in the model %r."
- % (cls.__name__, idx, field, cls.__name__, model._meta.object_name))
- else:
- # getattr(model, field) could be an X_RelatedObjectsDescriptor
- f = fetch_attr(cls, model, "list_display[%d]" % idx, field)
- if isinstance(f, models.ManyToManyField):
- raise ImproperlyConfigured("'%s.list_display[%d]', '%s' is a ManyToManyField which is not supported."
- % (cls.__name__, idx, field))
-
- def validate_list_display_links(self, cls, model):
- " Validate that list_display_links is a unique subset of list_display. "
- if hasattr(cls, 'list_display_links'):
- check_isseq(cls, 'list_display_links', cls.list_display_links)
- for idx, field in enumerate(cls.list_display_links):
- if field not in cls.list_display:
- raise ImproperlyConfigured("'%s.list_display_links[%d]' "
- "refers to '%s' which is not defined in 'list_display'."
- % (cls.__name__, idx, field))
-
- def validate_list_filter(self, cls, model):
- """
- Validate that list_filter is a sequence of one of three options:
- 1: 'field' - a basic field filter, possibly w/ relationships (eg, 'field__rel')
- 2: ('field', SomeFieldListFilter) - a field-based list filter class
- 3: SomeListFilter - a non-field list filter class
- """
- from django.contrib.admin import ListFilter, FieldListFilter
- if hasattr(cls, 'list_filter'):
- check_isseq(cls, 'list_filter', cls.list_filter)
- for idx, item in enumerate(cls.list_filter):
- if callable(item) and not isinstance(item, models.Field):
- # If item is option 3, it should be a ListFilter...
- if not issubclass(item, ListFilter):
- raise ImproperlyConfigured("'%s.list_filter[%d]' is '%s'"
- " which is not a descendant of ListFilter."
- % (cls.__name__, idx, item.__name__))
- # ... but not a FieldListFilter.
- if issubclass(item, FieldListFilter):
- raise ImproperlyConfigured("'%s.list_filter[%d]' is '%s'"
- " which is of type FieldListFilter but is not"
- " associated with a field name."
- % (cls.__name__, idx, item.__name__))
- else:
- if isinstance(item, (tuple, list)):
- # item is option #2
- field, list_filter_class = item
- if not issubclass(list_filter_class, FieldListFilter):
- raise ImproperlyConfigured("'%s.list_filter[%d][1]'"
- " is '%s' which is not of type FieldListFilter."
- % (cls.__name__, idx, list_filter_class.__name__))
- else:
- # item is option #1
- field = item
- # Validate the field string
- try:
- get_fields_from_path(model, field)
- except (NotRelationField, FieldDoesNotExist):
- raise ImproperlyConfigured("'%s.list_filter[%d]' refers to '%s'"
- " which does not refer to a Field."
- % (cls.__name__, idx, field))
-
- def validate_list_select_related(self, cls, model):
- " Validate that list_select_related is a boolean, a list or a tuple. "
- list_select_related = getattr(cls, 'list_select_related', None)
- if list_select_related:
- types = (bool, tuple, list)
- if not isinstance(list_select_related, types):
- raise ImproperlyConfigured("'%s.list_select_related' should be "
- "either a bool, a tuple or a list" %
- cls.__name__)
-
- def validate_list_per_page(self, cls, model):
- " Validate that list_per_page is an integer. "
- check_type(cls, 'list_per_page', int)
-
- def validate_list_max_show_all(self, cls, model):
- " Validate that list_max_show_all is an integer. "
- check_type(cls, 'list_max_show_all', int)
-
- def validate_list_editable(self, cls, model):
- """
- Validate that list_editable is a sequence of editable fields from
- list_display without first element.
- """
- if hasattr(cls, 'list_editable') and cls.list_editable:
- check_isseq(cls, 'list_editable', cls.list_editable)
- for idx, field_name in enumerate(cls.list_editable):
- try:
- field = model._meta.get_field_by_name(field_name)[0]
- except models.FieldDoesNotExist:
- raise ImproperlyConfigured("'%s.list_editable[%d]' refers to a "
- "field, '%s', not defined on %s.%s."
- % (cls.__name__, idx, field_name, model._meta.app_label, model.__name__))
- if field_name not in cls.list_display:
- raise ImproperlyConfigured("'%s.list_editable[%d]' refers to "
- "'%s' which is not defined in 'list_display'."
- % (cls.__name__, idx, field_name))
- if field_name in cls.list_display_links:
- raise ImproperlyConfigured("'%s' cannot be in both '%s.list_editable'"
- " and '%s.list_display_links'"
- % (field_name, cls.__name__, cls.__name__))
- if not cls.list_display_links and cls.list_display[0] in cls.list_editable:
- raise ImproperlyConfigured("'%s.list_editable[%d]' refers to"
- " the first field in list_display, '%s', which can't be"
- " used unless list_display_links is set."
- % (cls.__name__, idx, cls.list_display[0]))
- if not field.editable:
- raise ImproperlyConfigured("'%s.list_editable[%d]' refers to a "
- "field, '%s', which isn't editable through the admin."
- % (cls.__name__, idx, field_name))
-
- def validate_search_fields(self, cls, model):
- " Validate search_fields is a sequence. "
- if hasattr(cls, 'search_fields'):
- check_isseq(cls, 'search_fields', cls.search_fields)
-
- def validate_date_hierarchy(self, cls, model):
- " Validate that date_hierarchy refers to DateField or DateTimeField. "
- if cls.date_hierarchy:
- f = get_field(cls, model, 'date_hierarchy', cls.date_hierarchy)
- if not isinstance(f, (models.DateField, models.DateTimeField)):
- raise ImproperlyConfigured("'%s.date_hierarchy is "
- "neither an instance of DateField nor DateTimeField."
- % cls.__name__)
-
-
-class InlineValidator(BaseValidator):
- def validate_fk_name(self, cls, model):
- " Validate that fk_name refers to a ForeignKey. "
- if cls.fk_name: # default value is None
- f = get_field(cls, model, 'fk_name', cls.fk_name)
- if not isinstance(f, models.ForeignKey):
- raise ImproperlyConfigured("'%s.fk_name is not an instance of "
- "models.ForeignKey." % cls.__name__)
-
- def validate_extra(self, cls, model):
- " Validate that extra is an integer. "
- check_type(cls, 'extra', int)
-
- def validate_max_num(self, cls, model):
- " Validate that max_num is an integer. "
- check_type(cls, 'max_num', int)
-
- def validate_formset(self, cls, model):
- " Validate formset is a subclass of BaseModelFormSet. "
- if hasattr(cls, 'formset') and not issubclass(cls.formset, BaseModelFormSet):
- raise ImproperlyConfigured("'%s.formset' does not inherit from "
- "BaseModelFormSet." % cls.__name__)
-
-
-def check_type(cls, attr, type_):
- if getattr(cls, attr, None) is not None and not isinstance(getattr(cls, attr), type_):
- raise ImproperlyConfigured("'%s.%s' should be a %s."
- % (cls.__name__, attr, type_.__name__ ))
-
-def check_isseq(cls, label, obj):
- if not isinstance(obj, (list, tuple)):
- raise ImproperlyConfigured("'%s.%s' must be a list or tuple." % (cls.__name__, label))
-
-def check_isdict(cls, label, obj):
- if not isinstance(obj, dict):
- raise ImproperlyConfigured("'%s.%s' must be a dictionary." % (cls.__name__, label))
-
-def get_field(cls, model, label, field):
- try:
- return model._meta.get_field(field)
- except models.FieldDoesNotExist:
- raise ImproperlyConfigured("'%s.%s' refers to field '%s' that is missing from model '%s.%s'."
- % (cls.__name__, label, field, model._meta.app_label, model.__name__))
-
-def fetch_attr(cls, model, label, field):
- try:
- return model._meta.get_field(field)
- except models.FieldDoesNotExist:
- pass
- try:
- return getattr(model, field)
- except AttributeError:
- raise ImproperlyConfigured("'%s.%s' refers to '%s' that is neither a field, method or property of model '%s.%s'."
- % (cls.__name__, label, field, model._meta.app_label, model.__name__))
diff --git a/lib/python2.7/site-packages/django/contrib/admin/views/__init__.py b/lib/python2.7/site-packages/django/contrib/admin/views/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/views/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/admin/views/decorators.py b/lib/python2.7/site-packages/django/contrib/admin/views/decorators.py
deleted file mode 100644
index e19265f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/views/decorators.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from functools import wraps
-from django.utils.translation import ugettext as _
-from django.contrib.admin.forms import AdminAuthenticationForm
-from django.contrib.auth.views import login
-from django.contrib.auth import REDIRECT_FIELD_NAME
-
-
-def staff_member_required(view_func):
- """
- Decorator for views that checks that the user is logged in and is a staff
- member, displaying the login page if necessary.
- """
- @wraps(view_func)
- def _checklogin(request, *args, **kwargs):
- if request.user.is_active and request.user.is_staff:
- # The user is valid. Continue to the admin page.
- return view_func(request, *args, **kwargs)
-
- assert hasattr(request, 'session'), "The Django admin requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.sessions.middleware.SessionMiddleware'."
- defaults = {
- 'template_name': 'admin/login.html',
- 'authentication_form': AdminAuthenticationForm,
- 'extra_context': {
- 'title': _('Log in'),
- 'app_path': request.get_full_path(),
- REDIRECT_FIELD_NAME: request.get_full_path(),
- },
- }
- return login(request, **defaults)
- return _checklogin
diff --git a/lib/python2.7/site-packages/django/contrib/admin/views/main.py b/lib/python2.7/site-packages/django/contrib/admin/views/main.py
deleted file mode 100644
index e7b2391..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/views/main.py
+++ /dev/null
@@ -1,427 +0,0 @@
-import sys
-import warnings
-
-from django.core.exceptions import SuspiciousOperation, ImproperlyConfigured
-from django.core.paginator import InvalidPage
-from django.core.urlresolvers import reverse
-from django.db import models
-from django.db.models.fields import FieldDoesNotExist
-from django.utils import six
-from django.utils.datastructures import SortedDict
-from django.utils.deprecation import RenameMethodsBase
-from django.utils.encoding import force_str, force_text
-from django.utils.translation import ugettext, ugettext_lazy
-from django.utils.http import urlencode
-
-from django.contrib.admin import FieldListFilter
-from django.contrib.admin.exceptions import DisallowedModelAdminLookup
-from django.contrib.admin.options import IncorrectLookupParameters, IS_POPUP_VAR
-from django.contrib.admin.util import (quote, get_fields_from_path,
- lookup_needs_distinct, prepare_lookup_value)
-
-# Changelist settings
-ALL_VAR = 'all'
-ORDER_VAR = 'o'
-ORDER_TYPE_VAR = 'ot'
-PAGE_VAR = 'p'
-SEARCH_VAR = 'q'
-TO_FIELD_VAR = 't'
-ERROR_FLAG = 'e'
-
-IGNORED_PARAMS = (
- ALL_VAR, ORDER_VAR, ORDER_TYPE_VAR, SEARCH_VAR, IS_POPUP_VAR, TO_FIELD_VAR)
-
-# Text to display within change-list table cells if the value is blank.
-EMPTY_CHANGELIST_VALUE = ugettext_lazy('(None)')
-
-
-def _is_changelist_popup(request):
- """
- Returns True if the popup GET parameter is set.
-
- This function is introduced to facilitate deprecating the legacy
- value for IS_POPUP_VAR and should be removed at the end of the
- deprecation cycle.
- """
-
- if IS_POPUP_VAR in request.GET:
- return True
-
- IS_LEGACY_POPUP_VAR = 'pop'
- if IS_LEGACY_POPUP_VAR in request.GET:
- warnings.warn(
- "The `%s` GET parameter has been renamed to `%s`." %
- (IS_LEGACY_POPUP_VAR, IS_POPUP_VAR),
- PendingDeprecationWarning, 2)
- return True
-
- return False
-
-
-class RenameChangeListMethods(RenameMethodsBase):
- renamed_methods = (
- ('get_query_set', 'get_queryset', PendingDeprecationWarning),
- )
-
-
-class ChangeList(six.with_metaclass(RenameChangeListMethods)):
- def __init__(self, request, model, list_display, list_display_links,
- list_filter, date_hierarchy, search_fields, list_select_related,
- list_per_page, list_max_show_all, list_editable, model_admin):
- self.model = model
- self.opts = model._meta
- self.lookup_opts = self.opts
- self.root_queryset = model_admin.get_queryset(request)
- self.list_display = list_display
- self.list_display_links = list_display_links
- self.list_filter = list_filter
- self.date_hierarchy = date_hierarchy
- self.search_fields = search_fields
- self.list_select_related = list_select_related
- self.list_per_page = list_per_page
- self.list_max_show_all = list_max_show_all
- self.model_admin = model_admin
- self.preserved_filters = model_admin.get_preserved_filters(request)
-
- # Get search parameters from the query string.
- try:
- self.page_num = int(request.GET.get(PAGE_VAR, 0))
- except ValueError:
- self.page_num = 0
- self.show_all = ALL_VAR in request.GET
- self.is_popup = _is_changelist_popup(request)
- self.to_field = request.GET.get(TO_FIELD_VAR)
- self.params = dict(request.GET.items())
- if PAGE_VAR in self.params:
- del self.params[PAGE_VAR]
- if ERROR_FLAG in self.params:
- del self.params[ERROR_FLAG]
-
- if self.is_popup:
- self.list_editable = ()
- else:
- self.list_editable = list_editable
- self.query = request.GET.get(SEARCH_VAR, '')
- self.queryset = self.get_queryset(request)
- self.get_results(request)
- if self.is_popup:
- title = ugettext('Select %s')
- else:
- title = ugettext('Select %s to change')
- self.title = title % force_text(self.opts.verbose_name)
- self.pk_attname = self.lookup_opts.pk.attname
-
- @property
- def root_query_set(self):
- warnings.warn("`ChangeList.root_query_set` is deprecated, "
- "use `root_queryset` instead.",
- PendingDeprecationWarning, 2)
- return self.root_queryset
-
- @property
- def query_set(self):
- warnings.warn("`ChangeList.query_set` is deprecated, "
- "use `queryset` instead.",
- PendingDeprecationWarning, 2)
- return self.queryset
-
- def get_filters_params(self, params=None):
- """
- Returns all params except IGNORED_PARAMS
- """
- if not params:
- params = self.params
- lookup_params = params.copy() # a dictionary of the query string
- # Remove all the parameters that are globally and systematically
- # ignored.
- for ignored in IGNORED_PARAMS:
- if ignored in lookup_params:
- del lookup_params[ignored]
- return lookup_params
-
- def get_filters(self, request):
- lookup_params = self.get_filters_params()
- use_distinct = False
-
- # Normalize the types of keys
- for key, value in lookup_params.items():
- if not isinstance(key, str):
- # 'key' will be used as a keyword argument later, so Python
- # requires it to be a string.
- del lookup_params[key]
- lookup_params[force_str(key)] = value
-
- if not self.model_admin.lookup_allowed(key, value):
- raise DisallowedModelAdminLookup("Filtering by %s not allowed" % key)
-
- filter_specs = []
- if self.list_filter:
- for list_filter in self.list_filter:
- if callable(list_filter):
- # This is simply a custom list filter class.
- spec = list_filter(request, lookup_params,
- self.model, self.model_admin)
- else:
- field_path = None
- if isinstance(list_filter, (tuple, list)):
- # This is a custom FieldListFilter class for a given field.
- field, field_list_filter_class = list_filter
- else:
- # This is simply a field name, so use the default
- # FieldListFilter class that has been registered for
- # the type of the given field.
- field, field_list_filter_class = list_filter, FieldListFilter.create
- if not isinstance(field, models.Field):
- field_path = field
- field = get_fields_from_path(self.model, field_path)[-1]
- spec = field_list_filter_class(field, request, lookup_params,
- self.model, self.model_admin, field_path=field_path)
- # Check if we need to use distinct()
- use_distinct = (use_distinct or
- lookup_needs_distinct(self.lookup_opts,
- field_path))
- if spec and spec.has_output():
- filter_specs.append(spec)
-
- # At this point, all the parameters used by the various ListFilters
- # have been removed from lookup_params, which now only contains other
- # parameters passed via the query string. We now loop through the
- # remaining parameters both to ensure that all the parameters are valid
- # fields and to determine if at least one of them needs distinct(). If
- # the lookup parameters aren't real fields, then bail out.
- try:
- for key, value in lookup_params.items():
- lookup_params[key] = prepare_lookup_value(key, value)
- use_distinct = (use_distinct or
- lookup_needs_distinct(self.lookup_opts, key))
- return filter_specs, bool(filter_specs), lookup_params, use_distinct
- except FieldDoesNotExist as e:
- six.reraise(IncorrectLookupParameters, IncorrectLookupParameters(e), sys.exc_info()[2])
-
- def get_query_string(self, new_params=None, remove=None):
- if new_params is None: new_params = {}
- if remove is None: remove = []
- p = self.params.copy()
- for r in remove:
- for k in list(p):
- if k.startswith(r):
- del p[k]
- for k, v in new_params.items():
- if v is None:
- if k in p:
- del p[k]
- else:
- p[k] = v
- return '?%s' % urlencode(sorted(p.items()))
-
- def get_results(self, request):
- paginator = self.model_admin.get_paginator(request, self.queryset, self.list_per_page)
- # Get the number of objects, with admin filters applied.
- result_count = paginator.count
-
- # Get the total number of objects, with no admin filters applied.
- # Perform a slight optimization:
- # full_result_count is equal to paginator.count if no filters
- # were applied
- if self.get_filters_params() or self.params.get(SEARCH_VAR):
- full_result_count = self.root_queryset.count()
- else:
- full_result_count = result_count
- can_show_all = result_count <= self.list_max_show_all
- multi_page = result_count > self.list_per_page
-
- # Get the list of objects to display on this page.
- if (self.show_all and can_show_all) or not multi_page:
- result_list = self.queryset._clone()
- else:
- try:
- result_list = paginator.page(self.page_num+1).object_list
- except InvalidPage:
- raise IncorrectLookupParameters
-
- self.result_count = result_count
- self.full_result_count = full_result_count
- self.result_list = result_list
- self.can_show_all = can_show_all
- self.multi_page = multi_page
- self.paginator = paginator
-
- def _get_default_ordering(self):
- ordering = []
- if self.model_admin.ordering:
- ordering = self.model_admin.ordering
- elif self.lookup_opts.ordering:
- ordering = self.lookup_opts.ordering
- return ordering
-
- def get_ordering_field(self, field_name):
- """
- Returns the proper model field name corresponding to the given
- field_name to use for ordering. field_name may either be the name of a
- proper model field or the name of a method (on the admin or model) or a
- callable with the 'admin_order_field' attribute. Returns None if no
- proper model field name can be matched.
- """
- try:
- field = self.lookup_opts.get_field(field_name)
- return field.name
- except models.FieldDoesNotExist:
- # See whether field_name is a name of a non-field
- # that allows sorting.
- if callable(field_name):
- attr = field_name
- elif hasattr(self.model_admin, field_name):
- attr = getattr(self.model_admin, field_name)
- else:
- attr = getattr(self.model, field_name)
- return getattr(attr, 'admin_order_field', None)
-
- def get_ordering(self, request, queryset):
- """
- Returns the list of ordering fields for the change list.
- First we check the get_ordering() method in model admin, then we check
- the object's default ordering. Then, any manually-specified ordering
- from the query string overrides anything. Finally, a deterministic
- order is guaranteed by ensuring the primary key is used as the last
- ordering field.
- """
- params = self.params
- ordering = list(self.model_admin.get_ordering(request)
- or self._get_default_ordering())
- if ORDER_VAR in params:
- # Clear ordering and used params
- ordering = []
- order_params = params[ORDER_VAR].split('.')
- for p in order_params:
- try:
- none, pfx, idx = p.rpartition('-')
- field_name = self.list_display[int(idx)]
- order_field = self.get_ordering_field(field_name)
- if not order_field:
- continue # No 'admin_order_field', skip it
- ordering.append(pfx + order_field)
- except (IndexError, ValueError):
- continue # Invalid ordering specified, skip it.
-
- # Add the given query's ordering fields, if any.
- ordering.extend(queryset.query.order_by)
-
- # Ensure that the primary key is systematically present in the list of
- # ordering fields so we can guarantee a deterministic order across all
- # database backends.
- pk_name = self.lookup_opts.pk.name
- if not (set(ordering) & set(['pk', '-pk', pk_name, '-' + pk_name])):
- # The two sets do not intersect, meaning the pk isn't present. So
- # we add it.
- ordering.append('-pk')
-
- return ordering
-
- def get_ordering_field_columns(self):
- """
- Returns a SortedDict of ordering field column numbers and asc/desc
- """
-
- # We must cope with more than one column having the same underlying sort
- # field, so we base things on column numbers.
- ordering = self._get_default_ordering()
- ordering_fields = SortedDict()
- if ORDER_VAR not in self.params:
- # for ordering specified on ModelAdmin or model Meta, we don't know
- # the right column numbers absolutely, because there might be more
- # than one column associated with that ordering, so we guess.
- for field in ordering:
- if field.startswith('-'):
- field = field[1:]
- order_type = 'desc'
- else:
- order_type = 'asc'
- for index, attr in enumerate(self.list_display):
- if self.get_ordering_field(attr) == field:
- ordering_fields[index] = order_type
- break
- else:
- for p in self.params[ORDER_VAR].split('.'):
- none, pfx, idx = p.rpartition('-')
- try:
- idx = int(idx)
- except ValueError:
- continue # skip it
- ordering_fields[idx] = 'desc' if pfx == '-' else 'asc'
- return ordering_fields
-
- def get_queryset(self, request):
- # First, we collect all the declared list filters.
- (self.filter_specs, self.has_filters, remaining_lookup_params,
- filters_use_distinct) = self.get_filters(request)
-
- # Then, we let every list filter modify the queryset to its liking.
- qs = self.root_queryset
- for filter_spec in self.filter_specs:
- new_qs = filter_spec.queryset(request, qs)
- if new_qs is not None:
- qs = new_qs
-
- try:
- # Finally, we apply the remaining lookup parameters from the query
- # string (i.e. those that haven't already been processed by the
- # filters).
- qs = qs.filter(**remaining_lookup_params)
- except (SuspiciousOperation, ImproperlyConfigured):
- # Allow certain types of errors to be re-raised as-is so that the
- # caller can treat them in a special way.
- raise
- except Exception as e:
- # Every other error is caught with a naked except, because we don't
- # have any other way of validating lookup parameters. They might be
- # invalid if the keyword arguments are incorrect, or if the values
- # are not in the correct type, so we might get FieldError,
- # ValueError, ValidationError, or ?.
- raise IncorrectLookupParameters(e)
-
- if not qs.query.select_related:
- qs = self.apply_select_related(qs)
-
- # Set ordering.
- ordering = self.get_ordering(request, qs)
- qs = qs.order_by(*ordering)
-
- # Apply search results
- qs, search_use_distinct = self.model_admin.get_search_results(
- request, qs, self.query)
-
- # Remove duplicates from results, if necessary
- if filters_use_distinct | search_use_distinct:
- return qs.distinct()
- else:
- return qs
-
- def apply_select_related(self, qs):
- if self.list_select_related is True:
- return qs.select_related()
-
- if self.list_select_related is False:
- if self.has_related_field_in_list_display():
- return qs.select_related()
-
- if self.list_select_related:
- return qs.select_related(*self.list_select_related)
- return qs
-
- def has_related_field_in_list_display(self):
- for field_name in self.list_display:
- try:
- field = self.lookup_opts.get_field(field_name)
- except models.FieldDoesNotExist:
- pass
- else:
- if isinstance(field.rel, models.ManyToOneRel):
- return True
- return False
-
- def url_for_result(self, result):
- pk = getattr(result, self.pk_attname)
- return reverse('admin:%s_%s_change' % (self.opts.app_label,
- self.opts.model_name),
- args=(quote(pk),),
- current_app=self.model_admin.admin_site.name)
diff --git a/lib/python2.7/site-packages/django/contrib/admin/widgets.py b/lib/python2.7/site-packages/django/contrib/admin/widgets.py
deleted file mode 100644
index 5773db6..0000000
--- a/lib/python2.7/site-packages/django/contrib/admin/widgets.py
+++ /dev/null
@@ -1,334 +0,0 @@
-"""
-Form Widget classes specific to the Django admin site.
-"""
-from __future__ import unicode_literals
-
-import copy
-
-from django import forms
-from django.contrib.admin.templatetags.admin_static import static
-from django.core.urlresolvers import reverse
-from django.forms.widgets import RadioFieldRenderer
-from django.forms.util import flatatt
-from django.utils.html import escape, format_html, format_html_join, smart_urlquote
-from django.utils.text import Truncator
-from django.utils.translation import ugettext as _
-from django.utils.safestring import mark_safe
-from django.utils.encoding import force_text
-from django.utils import six
-
-
-class FilteredSelectMultiple(forms.SelectMultiple):
- """
- A SelectMultiple with a JavaScript filter interface.
-
- Note that the resulting JavaScript assumes that the jsi18n
- catalog has been loaded in the page
- """
- @property
- def media(self):
- js = ["core.js", "SelectBox.js", "SelectFilter2.js"]
- return forms.Media(js=[static("admin/js/%s" % path) for path in js])
-
- def __init__(self, verbose_name, is_stacked, attrs=None, choices=()):
- self.verbose_name = verbose_name
- self.is_stacked = is_stacked
- super(FilteredSelectMultiple, self).__init__(attrs, choices)
-
- def render(self, name, value, attrs=None, choices=()):
- if attrs is None:
- attrs = {}
- attrs['class'] = 'selectfilter'
- if self.is_stacked:
- attrs['class'] += 'stacked'
- output = [super(FilteredSelectMultiple, self).render(name, value, attrs, choices)]
- output.append('<script type="text/javascript">addEvent(window, "load", function(e) {')
- # TODO: "id_" is hard-coded here. This should instead use the correct
- # API to determine the ID dynamically.
- output.append('SelectFilter.init("id_%s", "%s", %s, "%s"); });</script>\n'
- % (name, self.verbose_name.replace('"', '\\"'), int(self.is_stacked), static('admin/')))
- return mark_safe(''.join(output))
-
-class AdminDateWidget(forms.DateInput):
-
- @property
- def media(self):
- js = ["calendar.js", "admin/DateTimeShortcuts.js"]
- return forms.Media(js=[static("admin/js/%s" % path) for path in js])
-
- def __init__(self, attrs=None, format=None):
- final_attrs = {'class': 'vDateField', 'size': '10'}
- if attrs is not None:
- final_attrs.update(attrs)
- super(AdminDateWidget, self).__init__(attrs=final_attrs, format=format)
-
-class AdminTimeWidget(forms.TimeInput):
-
- @property
- def media(self):
- js = ["calendar.js", "admin/DateTimeShortcuts.js"]
- return forms.Media(js=[static("admin/js/%s" % path) for path in js])
-
- def __init__(self, attrs=None, format=None):
- final_attrs = {'class': 'vTimeField', 'size': '8'}
- if attrs is not None:
- final_attrs.update(attrs)
- super(AdminTimeWidget, self).__init__(attrs=final_attrs, format=format)
-
-class AdminSplitDateTime(forms.SplitDateTimeWidget):
- """
- A SplitDateTime Widget that has some admin-specific styling.
- """
- def __init__(self, attrs=None):
- widgets = [AdminDateWidget, AdminTimeWidget]
- # Note that we're calling MultiWidget, not SplitDateTimeWidget, because
- # we want to define widgets.
- forms.MultiWidget.__init__(self, widgets, attrs)
-
- def format_output(self, rendered_widgets):
- return format_html('<p class="datetime">{0} {1}<br />{2} {3}</p>',
- _('Date:'), rendered_widgets[0],
- _('Time:'), rendered_widgets[1])
-
-class AdminRadioFieldRenderer(RadioFieldRenderer):
- def render(self):
- """Outputs a <ul> for this set of radio fields."""
- return format_html('<ul{0}>\n{1}\n</ul>',
- flatatt(self.attrs),
- format_html_join('\n', '<li>{0}</li>',
- ((force_text(w),) for w in self)))
-
-class AdminRadioSelect(forms.RadioSelect):
- renderer = AdminRadioFieldRenderer
-
-class AdminFileWidget(forms.ClearableFileInput):
- template_with_initial = ('<p class="file-upload">%s</p>'
- % forms.ClearableFileInput.template_with_initial)
- template_with_clear = ('<span class="clearable-file-input">%s</span>'
- % forms.ClearableFileInput.template_with_clear)
-
-def url_params_from_lookup_dict(lookups):
- """
- Converts the type of lookups specified in a ForeignKey limit_choices_to
- attribute to a dictionary of query parameters
- """
- params = {}
- if lookups and hasattr(lookups, 'items'):
- items = []
- for k, v in lookups.items():
- if callable(v):
- v = v()
- if isinstance(v, (tuple, list)):
- v = ','.join([str(x) for x in v])
- elif isinstance(v, bool):
- # See django.db.fields.BooleanField.get_prep_lookup
- v = ('0', '1')[v]
- else:
- v = six.text_type(v)
- items.append((k, v))
- params.update(dict(items))
- return params
-
-class ForeignKeyRawIdWidget(forms.TextInput):
- """
- A Widget for displaying ForeignKeys in the "raw_id" interface rather than
- in a <select> box.
- """
- def __init__(self, rel, admin_site, attrs=None, using=None):
- self.rel = rel
- self.admin_site = admin_site
- self.db = using
- super(ForeignKeyRawIdWidget, self).__init__(attrs)
-
- def render(self, name, value, attrs=None):
- rel_to = self.rel.to
- if attrs is None:
- attrs = {}
- extra = []
- if rel_to in self.admin_site._registry:
- # The related object is registered with the same AdminSite
- related_url = reverse('admin:%s_%s_changelist' %
- (rel_to._meta.app_label,
- rel_to._meta.model_name),
- current_app=self.admin_site.name)
-
- params = self.url_parameters()
- if params:
- url = '?' + '&amp;'.join(['%s=%s' % (k, v) for k, v in params.items()])
- else:
- url = ''
- if "class" not in attrs:
- attrs['class'] = 'vForeignKeyRawIdAdminField' # The JavaScript code looks for this hook.
- # TODO: "lookup_id_" is hard-coded here. This should instead use
- # the correct API to determine the ID dynamically.
- extra.append('<a href="%s%s" class="related-lookup" id="lookup_id_%s" onclick="return showRelatedObjectLookupPopup(this);"> '
- % (related_url, url, name))
- extra.append('<img src="%s" width="16" height="16" alt="%s" /></a>'
- % (static('admin/img/selector-search.gif'), _('Lookup')))
- output = [super(ForeignKeyRawIdWidget, self).render(name, value, attrs)] + extra
- if value:
- output.append(self.label_for_value(value))
- return mark_safe(''.join(output))
-
- def base_url_parameters(self):
- return url_params_from_lookup_dict(self.rel.limit_choices_to)
-
- def url_parameters(self):
- from django.contrib.admin.views.main import TO_FIELD_VAR
- params = self.base_url_parameters()
- params.update({TO_FIELD_VAR: self.rel.get_related_field().name})
- return params
-
- def label_for_value(self, value):
- key = self.rel.get_related_field().name
- try:
- obj = self.rel.to._default_manager.using(self.db).get(**{key: value})
- return '&nbsp;<strong>%s</strong>' % escape(Truncator(obj).words(14, truncate='...'))
- except (ValueError, self.rel.to.DoesNotExist):
- return ''
-
-class ManyToManyRawIdWidget(ForeignKeyRawIdWidget):
- """
- A Widget for displaying ManyToMany ids in the "raw_id" interface rather than
- in a <select multiple> box.
- """
- def render(self, name, value, attrs=None):
- if attrs is None:
- attrs = {}
- if self.rel.to in self.admin_site._registry:
- # The related object is registered with the same AdminSite
- attrs['class'] = 'vManyToManyRawIdAdminField'
- if value:
- value = ','.join([force_text(v) for v in value])
- else:
- value = ''
- return super(ManyToManyRawIdWidget, self).render(name, value, attrs)
-
- def url_parameters(self):
- return self.base_url_parameters()
-
- def label_for_value(self, value):
- return ''
-
- def value_from_datadict(self, data, files, name):
- value = data.get(name)
- if value:
- return value.split(',')
-
-
-class RelatedFieldWidgetWrapper(forms.Widget):
- """
- This class is a wrapper to a given widget to add the add icon for the
- admin interface.
- """
- def __init__(self, widget, rel, admin_site, can_add_related=None):
- self.is_hidden = widget.is_hidden
- self.needs_multipart_form = widget.needs_multipart_form
- self.attrs = widget.attrs
- self.choices = widget.choices
- self.widget = widget
- self.rel = rel
- # Backwards compatible check for whether a user can add related
- # objects.
- if can_add_related is None:
- can_add_related = rel.to in admin_site._registry
- self.can_add_related = can_add_related
- # so we can check if the related object is registered with this AdminSite
- self.admin_site = admin_site
-
- def __deepcopy__(self, memo):
- obj = copy.copy(self)
- obj.widget = copy.deepcopy(self.widget, memo)
- obj.attrs = self.widget.attrs
- memo[id(self)] = obj
- return obj
-
- @property
- def media(self):
- return self.widget.media
-
- def render(self, name, value, *args, **kwargs):
- rel_to = self.rel.to
- info = (rel_to._meta.app_label, rel_to._meta.model_name)
- self.widget.choices = self.choices
- output = [self.widget.render(name, value, *args, **kwargs)]
- if self.can_add_related:
- related_url = reverse('admin:%s_%s_add' % info, current_app=self.admin_site.name)
- # TODO: "add_id_" is hard-coded here. This should instead use the
- # correct API to determine the ID dynamically.
- output.append('<a href="%s" class="add-another" id="add_id_%s" onclick="return showAddAnotherPopup(this);"> '
- % (related_url, name))
- output.append('<img src="%s" width="10" height="10" alt="%s"/></a>'
- % (static('admin/img/icon_addlink.gif'), _('Add Another')))
- return mark_safe(''.join(output))
-
- def build_attrs(self, extra_attrs=None, **kwargs):
- "Helper function for building an attribute dictionary."
- self.attrs = self.widget.build_attrs(extra_attrs=None, **kwargs)
- return self.attrs
-
- def value_from_datadict(self, data, files, name):
- return self.widget.value_from_datadict(data, files, name)
-
- def id_for_label(self, id_):
- return self.widget.id_for_label(id_)
-
-class AdminTextareaWidget(forms.Textarea):
- def __init__(self, attrs=None):
- final_attrs = {'class': 'vLargeTextField'}
- if attrs is not None:
- final_attrs.update(attrs)
- super(AdminTextareaWidget, self).__init__(attrs=final_attrs)
-
-class AdminTextInputWidget(forms.TextInput):
- def __init__(self, attrs=None):
- final_attrs = {'class': 'vTextField'}
- if attrs is not None:
- final_attrs.update(attrs)
- super(AdminTextInputWidget, self).__init__(attrs=final_attrs)
-
-class AdminEmailInputWidget(forms.EmailInput):
- def __init__(self, attrs=None):
- final_attrs = {'class': 'vTextField'}
- if attrs is not None:
- final_attrs.update(attrs)
- super(AdminEmailInputWidget, self).__init__(attrs=final_attrs)
-
-class AdminURLFieldWidget(forms.URLInput):
- def __init__(self, attrs=None):
- final_attrs = {'class': 'vURLField'}
- if attrs is not None:
- final_attrs.update(attrs)
- super(AdminURLFieldWidget, self).__init__(attrs=final_attrs)
-
- def render(self, name, value, attrs=None):
- html = super(AdminURLFieldWidget, self).render(name, value, attrs)
- if value:
- value = force_text(self._format_value(value))
- final_attrs = {'href': smart_urlquote(value)}
- html = format_html(
- '<p class="url">{0} <a{1}>{2}</a><br />{3} {4}</p>',
- _('Currently:'), flatatt(final_attrs), value,
- _('Change:'), html
- )
- return html
-
-
-class AdminIntegerFieldWidget(forms.TextInput):
- class_name = 'vIntegerField'
-
- def __init__(self, attrs=None):
- final_attrs = {'class': self.class_name}
- if attrs is not None:
- final_attrs.update(attrs)
- super(AdminIntegerFieldWidget, self).__init__(attrs=final_attrs)
-
-class AdminBigIntegerFieldWidget(AdminIntegerFieldWidget):
- class_name = 'vBigIntegerField'
-
-class AdminCommaSeparatedIntegerFieldWidget(forms.TextInput):
- def __init__(self, attrs=None):
- final_attrs = {'class': 'vCommaSeparatedIntegerField'}
- if attrs is not None:
- final_attrs.update(attrs)
- super(AdminCommaSeparatedIntegerFieldWidget, self).__init__(attrs=final_attrs)
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/__init__.py b/lib/python2.7/site-packages/django/contrib/admindocs/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/af/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/af/LC_MESSAGES/django.mo
deleted file mode 100644
index 699bca7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/af/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/af/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/af/LC_MESSAGES/django.po
deleted file mode 100644
index 3f27e96..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/af/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,363 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Afrikaans (http://www.transifex.com/projects/p/django/"
-"language/af/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: af\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr ""
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr ""
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr ""
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr ""
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr ""
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr ""
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr ""
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr ""
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr ""
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Tuisblad"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentasie"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boole (Eder waar of vals)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Veld van type: %(field_type)s "
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ar/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ar/LC_MESSAGES/django.mo
deleted file mode 100644
index f0a5373..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ar/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ar/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ar/LC_MESSAGES/django.po
deleted file mode 100644
index f7eeac3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ar/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,374 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ossama Khayat <okhayat@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/"
-"ar/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "وسم:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "مرشّح"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "عرض:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "التطبيق %r غير موجود"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "النموذج %(model_name)r غير موجود في التطبيق %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "العنصر `%(app_label)s.%(data_type)s` المرتبط"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "نموذج:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "عناصر `%(app_label)s.%(object_name)s` مرتبطة"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "كل %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "عدد %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "يبدو أن %s ليس عنصر urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "الرئيسية"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "الوثائق"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "أوامر المفضلة"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "أوامر مفضلة الوثائق"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">لتركيب أوامر المفضلة، قم بسحب الوصلة إلى\n"
-"شريط أدات المفضلات في متصفحك، أو قم بالضغط عليها بالزر الأيمن وأضفها إلى "
-"مفضلاتك.\n"
-"سيمكنك الآن أن اختيار أوامر المفضلة من أي صفحة في الموقع، لاحظ بأن بعض\n"
-"أوامر المفضلة هذه معدة لتعمل على أجهزة كمبيوتر تعتبر على أنها \"داخلية\"\n"
-"(تحدث إلى مسؤول النظم إذا لم تكن متأكدا ما إذا كان كمبيوتر يعتبر \"داخليا\")."
-"</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "الوثائق لهذه الصفحة"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "ينتقل بك من أي صفحة إلى وثائق العرض الذي أنشأ هذه الصفحة."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "أظهر معرف الكائن"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "عرض نوع البيانات والمعرف الفريد للصفحات التي تمثل كائناً واحداً."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "عدّل هذا العنصر (النافذة الحالية)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "ينتقل بك إلى صفحة الإدارة للصفحات التي تمثل عنصراً واحداً."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "عدّل هذا العنصر (نافذة جديدة)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "كما سبق، لكن يفتح صفحة الإدارة في نافذة جديدة."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "الوسوم"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "الفلاتر"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "النماذج"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "القوالب"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "ثنائي (إما True أو False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "حقل نوع: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/az/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/az/LC_MESSAGES/django.mo
deleted file mode 100644
index 71692ee..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/az/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/az/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/az/LC_MESSAGES/django.po
deleted file mode 100644
index c30c47f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/az/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,377 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Ismayilov <ali@ismailov.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/"
-"language/az/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: az\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "teq:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "süzgəc:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "baxış:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "%r adlı tətbiqetməni tapa bilmədik"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "%(model_name)r modelini %(app_label)r tətbiqetməsində tapa bilmədik"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "bağlı \"%(app_label)s.%(data_type)s\" obyekti"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "bağlı \"%(app_label)s.%(object_name)s\" obyektləri"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "bütün %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s-in sayı"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s urlpattern obyekti deyil"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Ev"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Sənədləşmə"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Əlfəcinciklər (Bookmarklets)"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Sənədləşmə əlfəcincikləri (bookmarklets)"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Əlfəcinciyi quraşdırmaq üçün keçidi brauzerinizin "
-"əlfəcinlər panelinin\n"
-"üstünə dartın və ya üzərinə sağ tıqlayaraq onu əlfəcinlərə əlavə edin. İndi "
-"siz\n"
-"saytın istənilən səhifəsindən əlfəcin seçə bilərsiniz. Nəzərə alın ki, bəzi "
-"əlfəcinlər\n"
-"üçün kompüteriniz \"daxili\" kimi təyin olunmuş kompüterdən baxmanızı \n"
-"tələb edir. (kompüterinizin \"daxili\" olmasından əmin deyilsinizsə,\n"
-"sistem administratoru ilə danışın).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Bu səhifənin sənədləşməsi"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "Hər hansı səhifəni əmələ gətirən funksiyanın sənədləşməsini göstərir."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Obyekt ID göstər"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Tək obyekt kimi özünü aparan səhifələrin məzmun tipini və xüsusi ID-ni "
-"göstərir."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Bu obyekti redaktə et (cari pəncərədə)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Özünü tək obyekt kimi aparan səhifənin admin üçün redaktə səhifəsinə aparır"
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Bu obyekti redaktə et (yeni pəncərədə)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Yuxarıdakı kimi, ancaq admin səhifəsini yeni pəncərədə açır."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Bul (ya Doğru, ya Yalan)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Sahənin tipi: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/be/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/be/LC_MESSAGES/django.mo
deleted file mode 100644
index 8e41d31..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/be/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/be/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/be/LC_MESSAGES/django.po
deleted file mode 100644
index de0aa8a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/be/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,374 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/"
-"language/be/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: be\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "цэтлік:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "сіта:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "прагляд:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Праґраму «%r» не знайшлі"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Мадэль %(model_name)r у праґраме «%(app_label)r» не знайшлі"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "залежны аб’ект «%(app_label)s.%(data_type)s»"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "мадэль:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "залежныя аб’екты «%(app_label)s.%(object_name)s»"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "усе %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "колькасьць %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s не падобны да аб’екта «шаблён спасылкі» — «urlpattern»"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Пачатак"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Дакумэнтацыя"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Закладкі"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Закладкі дакумэнтацыі"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Каб паставіць закладку, перацягніце спасылку на паліцу "
-"закладак\n"
-"або пстрыкніце па спасылцы праваю кнопкаю і дадайце яе да закладак. Цяпер\n"
-"можна абраць закладку зь якое пажадаеце бачыны. Уважце: пэўныя закладкі\n"
-"патрабуюць, каб пляцоўка праглядалася з «унутранага» кампутара (калі ня "
-"ведаеце,\n"
-"ці «ўнутраны» ваш кампутар, запытайцеся сыстэмнага спраўніка).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Дакумэнтацыя па бачыне"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "Накіроўвае з хоць-якое бачыны да прагляду, які стварае гэтую бачыну."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Паказаць азначальнік аб’екта"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Паказвае непаўторны азначальнік і від зьмесьціва бачыны, якая ёсьць адным "
-"аб’ектам."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Правіць аб’ект (у гэтым вакне)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Накіроўвае да бачыны кіраваць бачынамі, якія ёсьць адным аб’ектам."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Правіць аб’ект (у новым вакне)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Тое самае, што й вышэй, але адчыняе бачыну ў новым вакне."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Цэтлікі"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Сіты"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Мадэлі"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Прагляды"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Шаблёны"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Ляґічнае («сапраўдна» або «не сапраўдна»)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Палі віду: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/bg/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/bg/LC_MESSAGES/django.mo
deleted file mode 100644
index 9074be2..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/bg/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/bg/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/bg/LC_MESSAGES/django.po
deleted file mode 100644
index 75a13d2..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/bg/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,381 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Boris Chervenkov <office@sentido.bg>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Todor Lube <tlubenov@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/"
-"language/bg/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bg\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "етикет:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "филтър:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "изглед:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Приложението %r липсва"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Моделът %(model_name)r не е намерен в приложение %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "свързания '%(app_label)s.%(data_type)s' обект"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "модел:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "свързаните '%(app_label)s.%(object_name)s' обекти"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "всички %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "брой %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s не прилича на обект от тип urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Начало"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Документация"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Bookmarklet-и за документация"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">За да инсталирате bookmarklet-и, задърпайте линка в "
-"bookmarks\n"
-"toolbar-а, или щракнете с десния бутон и добавете линка в отметките. Сега "
-"можете да\n"
-"изберете bookmarklet-а от която и да е страница. Някой от тези\n"
-"bookmarklet-и могат да се разглеждат само от компютър, който е маркиран \n"
-"като \"вътрешен\" (приказвайте с администратора ако не сте сигурни дали\n"
-"компютърът ви е \"вътрешен\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Документация за тази страница"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Препраща Ви от която и да е страница към документацията за изгледа, който я "
-"е генерирал."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Покажи ID на обекта"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Показва типа на съдържанието и ID-то на страници, които представляват "
-"единичен обект."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Редактирай този обект (в този прозорец)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Препраща към администраторска страница за страници, които представляват "
-"единичен обект. "
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Редактирай този обект (в нов прозорец)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Като горното, но отваря администраторската страница в нов прозорец."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Етикети"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Филтри"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Модели"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Прегледи"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Шаблони"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (True или False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Поле от тип: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/bn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/bn/LC_MESSAGES/django.mo
deleted file mode 100644
index 5a8f278..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/bn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/bn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/bn/LC_MESSAGES/django.po
deleted file mode 100644
index 911a02c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/bn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,373 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# anubhab91, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Tahmid Rafi <rafi.tahmid@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/"
-"bn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "ট্যাগঃ"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "ফিল্টারঃ"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "ভিউঃ"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "%r এ্যপটি পাওয়া যায়নি"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "%(app_label)r এ্যপে %(model_name)r মডেলটি পাওয়া যায়নি"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "`%(app_label)s.%(data_type)s` সম্পর্কিত অবজেক্ট"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "মডেলঃ"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "`%(app_label)s.%(object_name)s` সম্পর্কিত অবজেক্ট সমূহ"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "সকল %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s সংখ্যা"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ইউআরএল -এর মত নয়"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "নীড়পাতা"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "সহায়িকা"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "বুকমার্কলেট"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "সহায়িকা বুকমার্কলেট"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">বুকমার্ক ইনস্টলের জন্য লিঙ্কটি আপনার বুকমার্ক টুলবারে টেনে নিয়ে "
-"যান, অথবা রাইট-ক্লিক করে বুকমার্কে যোগ করুন। এখন আপনি\n"
-"সাইটের যেকোন পাতা থেকে বুকমার্কলেটটি ব্যবহার করতে পারবেন। লক্ষ্য করুন যে, বেশ কিছু "
-"বুকমার্কলেট দেখার জন্য \"internal\" কম্পিউটার থেকে\n"
-"দেখতে হবে (আপনার প্রশাসনের কাছ থেকে জানুন যে আপনার কম্পিউটার \"internal\" কিনা)।"
-"</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "এই পাতার সহায়িকা"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "যেকোন পাতা থেকে ভিউ সহায়িকাতে নিয়ে যান।"
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "অবজেক্ট আইডি দেখান"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "কনটেন্ট-টাইপ এবং একক আইডি দেখায়, যা কিনা একটি নির্দিষ্ট অবজেক্টকে বোঝায়।"
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "এই অবজেক্টটি সম্পাদন করুন (বর্তমান উইন্ডো)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "প্রশাসন পাতায় নিয়ে যান, যা কিনা একটি নির্দিষ্ট পাতা অবজেক্টকে বোঝায়।"
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "এই অবজেক্টটি সম্পাদন করুন (নতুন উইন্ডো)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "উপরের মতই, কিন্তু নতুন উইন্ডোতে খুলুন।"
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "ট্যাগগুলো"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "ফিল্টারগুলো"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "মডেলগুলো"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "ভিউগুলো"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "টেমপ্লেটগুলো"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "বুলিয়ান (হয় True অথবা False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "ফিল্ডের ধরণ: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/br/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/br/LC_MESSAGES/django.mo
deleted file mode 100644
index a174865..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/br/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/br/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/br/LC_MESSAGES/django.po
deleted file mode 100644
index 4714baa..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/br/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,364 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Fulup <fulup.jakez@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/"
-"br/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: br\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr ""
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr ""
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr ""
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr ""
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr ""
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr ""
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr ""
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr ""
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "niver a %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Degemer"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Teuliadoù"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Sinedoù"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Tikedennoù"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Siloù"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boulean (gwir pe gaou)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Seurt maezienn : %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/bs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/bs/LC_MESSAGES/django.mo
deleted file mode 100644
index 47b2c47..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/bs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/bs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/bs/LC_MESSAGES/django.po
deleted file mode 100644
index b465960..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/bs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,379 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/"
-"bs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bs\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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tag:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filter:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "pogled:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Aplikacija %r nije pronađena"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Model %(model_name)r nije pronađen u aplikaciji %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "povezani objekti klase `%(app_label)s.%(data_type)s`"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "klase `%(app_label)s.%(object_name)s`"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "svi povezani objekti %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "broj povezanih objekata %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ne izgleda kao urlpattern objekat"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Početna"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentacija"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarkleti"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Bookmarkleti dokumentacije"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Da biste instalirali bookmarklet, prevucite link do "
-"svojih\n"
-"bookmarka ili kliknite desnim dugmetom i dodajte među bookmarke. Nakon toga\n"
-"bookmarkletima možete pristupiti sa svake stranice na sajtu. Imajte na umu\n"
-"da neki bookmarkleti zahtijevaju da sajtu pristupite sa računara koji su\n"
-"označeni kao „interni“ (pitajte administratora vašeg sistema ukoliko niste\n"
-"sigurni da li je vaš računar „interni“).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Dokumentacija za ovu stranicu"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Vodi od bilo koje stranice do dokumentacije za pogled koji generiše tu "
-"stranicu."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Prikaži ID objekta"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Prikazuje content-type i jedinstveni ID za stranicu koja predstavlja jedan "
-"objekat."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Izmjeni ovaj objekat (u ovom prozoru)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Vodi u administracioni stranicu za stranice koje prestavljaju jedan objekat"
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Izmjeni ovaj objekat (novi prozor)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"Isto kao prethodni, ali otvara administracionu stranicu u novom prozoru."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Bulova vrijednost (True ili False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Polje tipa: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ca/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ca/LC_MESSAGES/django.mo
deleted file mode 100644
index ba1fce9..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ca/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ca/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ca/LC_MESSAGES/django.po
deleted file mode 100644
index 7f28ff3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ca/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,379 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Carles Barrobés <carles@barrobes.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Catalan (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "etiqueta:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtre:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "vista:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "No s'ha pogut trobar l'aplicació %r"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "El model %(model_name)r no s'ha trobat a l'aplicació %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "l'objecte relacionat `%(app_label)s.%(data_type)s`"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "objectes relacionats `%(app_label)s.%(object_name)s`"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "tots %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "nombre de %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s no sembla ser un objecte 'urlpattern'"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Inici"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Documentació"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "'Bookmarklets'"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "'Bookmarklets' de documentació"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Per tal d'instal·lar 'bookmarklets', arrosegueu l'enllaç\n"
-"a la vostra barra de marcadors, o feu click amb el botó dret a l'enllaç i\n"
-"afegiu-lo als marcadors.\n"
-"Ara podeu escollir el 'bookmarklet' des de qualsevol pàgina del lloc.\n"
-"Observeu que per a alguns d'aquests 'bookmarklets' cal que estigueu veient\n"
-"el lloc des d'un ordinador designat com a \"intern\" (parleu\n"
-"amb el vostre administrador de sistemes si no esteu segurs si el vostre "
-"ordinador és \"intern\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Documentació d'aquesta pàgina"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Us porta des de qualsevol pàgina a la documentació de la vista que la genera."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Mostra l'ID de l'objecte"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Mostra el 'content-type' (tipus de contingut) i l'ID inequívoc de les "
-"pàgines que representen un únic objecte."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Editar aquest objecte (finestra actual)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"El porta a la pàgina d'administració de pàgines que representen un únic "
-"objecte."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Editar aquest objecte (nova finestra)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Com abans, però obre la pàgina d'administració en una nova finestra."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Etiquetes"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtres"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Models"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Vistes"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Plantilles"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Booleà (Cert o Fals)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Camp del tipus: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/cs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/cs/LC_MESSAGES/django.mo
deleted file mode 100644
index bcfb610..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/cs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/cs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/cs/LC_MESSAGES/django.po
deleted file mode 100644
index 5870ddb..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/cs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,395 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Vlada Macek <macek@sandbox.cz>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-09-13 11:47+0000\n"
-"Last-Translator: Vlada Macek <macek@sandbox.cz>\n"
-"Language-Team: Czech (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tag:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtr:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "pohled (view):"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Aplikace %r nenalezena"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Model %(model_name)r v aplikaci %(app_label)r nenalezen"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "související položka `%(app_label)s.%(data_type)s`"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "související položky `%(app_label)s.%(object_name)s`"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "Vše: %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "Počet: %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "Atributy objektů typu %s"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "Objekt %s patrně není typu urlpattern."
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Domů"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentace"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklety"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Dokumentační bookmarklety"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Pro nainstalování bookmarkletů, přetáhněte odkaz na vaše "
-"záložky (oblíbené),\n"
-"nebo klepněte pravým tlačítkem na odkaz a přidejte ho k vašim záložkám "
-"(oblíbeným). Nyní můžete\n"
-"zvolit bookmarklet z libovolné stránky. Poznámka: Některé tyto\n"
-"bookmarklety vyžadují, abyste prohlížel(a) stránky z počítače, který je "
-"nastaven jako\n"
-"\"\"interní\" (promluvte si s vaším správcem, jestli si nejste jisti,\n"
-"zda je váš počítač \"interní\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Dokumentace k této stránce"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Z libovolné stránky otevře dokumentaci pohledu (view), který generoval tuto "
-"stránku."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Ukázat id položky"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Zobrazí content-type a unikátní ID stránek reprezentujících jedinou položku."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Upravit tuto položku (ve stávajícím okně)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Přepne do administračního rozhraní stránek reprezentujících jedinou položku."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Upravit tuto položku (v novém okně)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Jako výše, ale otevře prostředí správy v novém okně."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Tagy"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Seznam všech šablonových tagů a jejich funkce."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtry"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"Filtry jsou akce, které mohou být aplikovány na proměnné v šabloně za účelem "
-"úpravy hodnoty."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modely"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"Modely jsou popisy všech objektů v systému a jejich přidružených polí. Každý "
-"model má seznam polí, které mohou být čteny jako proměnné v šablonách."
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Views"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"Každá stránka na veřejném webu je generována pomocí pohledu. Pohled "
-"definuje, která šablona bude použita ke generování stránky a které objekty "
-"budou v šabloně k dispozici."
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-"Nástroje pro prohlížeč k rychlému přístupu k funkcím administračního "
-"rozhraní."
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Nainstalujte balík docutils"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"Dokumentační systém administračního rozhraní potřebuje pythonskou knihovnu "
-"<a href=\"%(link)s\">docutils</a>."
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"Požádejte správce o instalaci balíku <a href=\"%(link)s\">docutils</a>."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Model: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Pole"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Typ"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Popis"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Zpět na dokumentaci modelů"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Dokumentace modelů"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Skupiny modelů"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Šablony"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Šablona: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Šablona: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "Vyhledávací cesta pro šablonu \"%(name)s\" na %(grouper)s:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(neexistuje)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Zpět na dokumentaci"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Šablonové filtry"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Dokumentace šablonových filtrů"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "Vestavěné filtry"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"Chcete-li tyto filtry používat, vložte do šablony před místo použití kód "
-"<code>%(code)s</code>."
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Šablonové tagy"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Dokumentace šablonových tagů"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "Vestavěné tagy"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"Chcete-li tyto tagy používat, vložte do šablony před místo použití kód <code>"
-"%(code)s</code>."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "Pohled: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Kontext:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Šablony:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "Zpět na dokumentaci pohledů"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "Dokumentace pohledů"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Zpět na web"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "Pohledy dle URL na %(name)s"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "Funkce pohledu: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Pravdivost (buď Ano (True), nebo Ne (False))"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Pole typu: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/cy/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/cy/LC_MESSAGES/django.mo
deleted file mode 100644
index 8f8e035..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/cy/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/cy/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/cy/LC_MESSAGES/django.po
deleted file mode 100644
index d54792d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/cy/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,369 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/"
-"cy/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cy\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
-"11) ? 2 : 3;\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr ""
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr ""
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr ""
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr ""
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr ""
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr ""
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr ""
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr ""
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr ""
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Adref"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dogfennaeth"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Dalennau gofnod"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Dogfennaeth dalennau gofnod"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Dogfennaeth er mwyn y dudalen yma"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Dangos ID gwrthrych"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Yn dangos y fath-cynnwys a'r ID unigryw ar gyfer tudalennau sy'n "
-"cynrychioligwrthrych sengl."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Golygu'r gwrthrych yma (ffenestr cyfoes)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Yn neidio i'r dudalen weinyddiad ar gyfer tudalennau sy'n cynrychioli "
-"gwrthrych sengl."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Golygu'r gwrthrych yma (ffenestr newydd)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Fel uwchben, ond yn agor y dudalen weinyddiad mewn ffenestr newydd."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr ""
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/da/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/da/LC_MESSAGES/django.mo
deleted file mode 100644
index 1ac3472..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/da/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/da/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/da/LC_MESSAGES/django.po
deleted file mode 100644
index a5ca13b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/da/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,379 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Christian Joergensen <christian@gmta.info>, 2012
-# Erik Wognsen <r4mses@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-11-10 11:04+0000\n"
-"Last-Translator: Erik Wognsen <r4mses@gmail.com>\n"
-"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/"
-"da/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: da\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tag:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filter:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "view:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Applikationen %r blev ikke fundet"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modellen %(model_name)r ikke fundet i applikationen %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "det relaterede `%(app_label)s.%(data_type)s`-objekt"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "relaterede `%(app_label)s.%(object_name)s`-objekter"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "alle %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "antal %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ser ikke ud til at være et urlpattern-objekt"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Hjem"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentation"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Dokumentations-bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">For at installere bookmarklets, træk linket til din\n"
-"bogmærkelinje eller højreklik på linket og tilføj det til dine bogmærker.\n"
-"Du kan nu markere bookmarkletten fra enhver side på websitet.\n"
-"Bemærk, at nogle af disse bookmarkletter kræver, at du ser på websitet fra\n"
-"en computer der opfattes som \"intern\" (tal med din systemadministrator,\n"
-"hvis du ikke er sikker på om din computer er \"intern\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Dokumentation for denne side"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Bringer dig fra en hvilken som helst side til dokumentationen for det view, "
-"der genererer den pågældende side."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Vis objekt-ID"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Viser indholdstypen og det unikke ID for sider, der repræsenterer et enkelt "
-"objekt."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Rediger dette objekt (i det aktuelle vindue)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Springer til administrationssiden for sider, der repræsenterer et enkelt "
-"objekt."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Rediger dette objekt (i nyt vindue)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Som ovenfor, men åbner administrationssiden i et nyt vindue."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Mærker"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtre"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modeller"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Visninger"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Installer venligst docutils"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Skabeloner"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolsk (enten True eller False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Felt af type: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/de/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/de/LC_MESSAGES/django.mo
deleted file mode 100644
index 343a614..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/de/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/de/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/de/LC_MESSAGES/django.po
deleted file mode 100644
index 175ffb8..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/de/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,399 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis , 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-09-18 09:44+0000\n"
-"Last-Translator: Jannis \n"
-"Language-Team: German (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "Schlagwort:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "Filter:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "Ansicht:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Anwendung %r nicht gefunden"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modell %(model_name)r wurde nicht in Anwendung %(app_label)r gefunden"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "Das verknüpfte `%(app_label)s.%(data_type)s` Objekt"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "Modell:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "verknüpftes `%(app_label)s.%(object_name)s` Objekt"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "Alle %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "Anzahl von %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "Attribute von %s-Objekten"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ist scheinbar kein urlpattern-Objekt"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Start"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentation"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Dokumentations-Bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Um Bookmarklets zu installieren, müssen diese Links in "
-"die\n"
-"Browser-Werkzeugleiste gezogen werden, oder mittels rechter Maustaste in "
-"die\n"
-"Bookmarks gespeichert werden. Danach können die Bookmarklets von jeder "
-"Seite\n"
-"aufgerufen werden. Einige Bookmarklets sind auf den Zugriff von 'internen'\n"
-"Rechnern beschränkt. Falls nicht klar ist, ob ein Rechner als 'intern'\n"
-"bewertet wird, bitte den Administrator fragen.</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Dokumentation für diese Seite"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Springt von jeder Seite zu der Dokumentation für den View, der diese Seite "
-"erzeugt."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Objekt-ID anzeigen"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Zeigt den Content-Type und die eindeutige ID für Seiten, die ein einzelnes "
-"Objekt repräsentieren."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Dieses Objekt ändern (Aktives Fenster)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Springt zu der Administrationsseite für dieses Objekt, wenn diese Seite ein "
-"Objekt repräsentiert."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Dieses Objekt ändern (Neues Fenster)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"Wie zuvor, aber öffnet die Administrationsseite in einem neuen Fenster."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Tags"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Alle Template-Tags und deren Funktionen auflisten."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filter"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"Filter sind Aktionen, die in Templates auf Variablen angewendet werden "
-"können, um deren Ausgabe zu verändern."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Models"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"Models sind Beschreibungen aller Objekte und ihrer Felder, die sich im "
-"System befinden. Jedes Model hat eine Reihe von Feldern, auf in Form von "
-"Templatevariablen zugegriffen werden kann."
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Views"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"Jede öffentliche Seite wird durch einen View generiert. Dieser View "
-"definiert, welches Template genutzt wird, um die Seite zu generieren und "
-"welche Objekte in dem jeweiligen Template zur Verfügung stehen."
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-"Hilfsfunktionen für den Browser um schnell auf den Administrationsbereich "
-"zugreifen zu können."
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Bitte docutils installieren."
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"Das Admin-Dokumentationssystem erfordert Pythons <a href=\"%(link)s"
-"\">docutils</a> Bibliothek."
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"Bitte durch den/die Administrator/in <a href=\"%(link)s\">docutils</a> "
-"installieren lassen."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Model: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Feld"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Klasse"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Beschreibung"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Zurück zur Model-Dokumentation"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Model-Dokumentation"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Model-Gruppen"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Templates"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Template: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Template: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "Suchpfad für Template \"%(name)s\" in %(grouper)s:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(existiert nicht)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Zurück zur Dokumentation"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Template-Filter"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Template-Filter-Dokumentation"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "Mitgelieferte Filter"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"Um diese Filter zu nutzen, muss sich <code>%(code)s</code> vor Aufruf des "
-"Filters im Template befinden."
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Template-Tags"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Template-Tag-Dokumentation"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "Mitgelieferte Tags"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"Um diese Tags zu nutzen, muss sich <code>%(code)s</code> vor Aufruf des Tags "
-"im Template befinden."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "View: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Kontext:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Templates:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "Zurück zur Dokumentation der Views."
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "View Dokumentation"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Gehe zur Seite"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "Views nach URL auf %(name)s"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "View-Funktion: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolescher Wert (True oder False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Feldtyp: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/el/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/el/LC_MESSAGES/django.mo
deleted file mode 100644
index 7ffc51e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/el/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/el/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/el/LC_MESSAGES/django.po
deleted file mode 100644
index 2b68fb7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/el/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,384 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Dimitris Glezos <glezos@transifex.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Yorgos Pagles <y.pagles@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/"
-"el/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: el\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "ετικέτα:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "φίλτρο:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "προβολή:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Δε βρέθηκε η εφαρμογή %r"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-"Το μοντέλο %(model_name)r δεν μπορεί να βρεθεί στην εφαρμογή %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "το συσχετισμένο `%(app_label)s.%(data_type)s` αντικείμενο"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "μοντέλο:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "συσχετισμένα `%(app_label)s.%(object_name)s` αντικείμενα"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "όλα %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "πλήθος number of %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "Το %s δε φαίνεται να είναι ένα αντικείμενο urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Αρχική"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Τεκμηρίωση"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Σελιδοδείκτες"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Σελιδοδείκτες τεκμηρίωσης"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Για να εγκαταστήσετε έναν \"bookmarklet\" σύνδεσμο, σύρετε "
-"τον σύνδεσμο στον χώρο με τους αγαπημένους σας ιστότοπους στην γραμμή "
-"εργαλείων σας ή κάντε δεξί κλικ πάνω στον σύνδεσμο και σώστε τον στα "
-"αγαπημένα σας. Πλέον θα μπορείτε να χρησιμοποιείτε τον σύνδεσμο bookmarklet "
-"από την οποιαδήποτε σελίδα του ιστοτόπου σας. Σας υπενθημίζουμε ότι αυτού "
-"του είδους τα bookmarklets απαιτούν να επισκέπτεστε τον ιστότοπο από έναν "
-"υπολογιστή που να έχει οριστεί σαν \"εσωτερικός\" (\"internal\"). "
-"Απευθυνθείτε στον διαχειριστή σας αν δεν γνωρίζεται αν ο υπολογιστής σας "
-"θερείται \"εσωτερικός\".</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Τεκμηρίωση για αυτήν τη σελίδα"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Μεταπήδηση από οποιαδήποτε σελίδα στην τεκμηρίωση για το view που "
-"δημιούργησε τη σελίδα αυτή."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Εμφάνιση ID αντικειμένου"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Εμφάνιση του content-type και του μοναδικού αναγνωριστικού για τις σελίδες "
-"που αντιπροσωπεύουν ένα μοναδικό αντικείμενο."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Επεξεργασία αυτού του αντικειμένου (τρέχον παράθυρο)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Αν η σελίδα αναπαριστά ένα και μοναδικό αντικείμενο τότε οδηγεί στην "
-"αντίστοιχη σελίδα διαχείρισης."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Επεξεργασία αυτού του αντικειμένου (νέο παράθυρο)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"Όπως και παραπάνω, αλλά άνοιγμα της σελίδας διαχείρισης σε νέο παράθυρο."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (Είτε Αληθές ή Ψευδές)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Είδος πεδίου: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/en/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/en/LC_MESSAGES/django.mo
deleted file mode 100644
index fb344a6..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/en/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/en/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/en/LC_MESSAGES/django.po
deleted file mode 100644
index 5a4dcd0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/en/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,360 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2010-05-13 15:35+0200\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr ""
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr ""
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr ""
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr ""
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr ""
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr ""
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr ""
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr ""
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr ""
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr ""
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.mo
deleted file mode 100644
index bedf9fe..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.po
deleted file mode 100644
index 31addff..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/en_GB/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,375 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# jon_atkinson <jon@jonatkinson.co.uk>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
-"django/language/en_GB/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: en_GB\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tag:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filter:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "view:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "App %r not found"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Model %(model_name)r not found in app %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "the related `%(app_label)s.%(data_type)s` object"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "related `%(app_label)s.%(object_name)s` objects"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "all %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "number of %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s does not appear to be a urlpattern object"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Home"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Documentation"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Documentation bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Documentation for this page"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Show object ID"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Edit this object (current window)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Jumps to the admin page for pages that represent a single object."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Edit this object (new window)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "As above, but opens the admin page in a new window."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Tags"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filters"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Models"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Views"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Templates"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (Either True or False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Field of type: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/eo/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/eo/LC_MESSAGES/django.mo
deleted file mode 100644
index a1c62a9..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/eo/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/eo/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/eo/LC_MESSAGES/django.po
deleted file mode 100644
index b886bde..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/eo/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,384 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Baptiste <baptiste+transifex@darthenay.fr>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-11-05 15:48+0000\n"
-"Last-Translator: Baptiste <baptiste+transifex@darthenay.fr>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/"
-"language/eo/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "etikedo:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtro:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "vido:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Aplikaĵo %r netrovita"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modelo %(model_name)r netrovita en aplikaĵo %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "la rilatita `%(app_label)s.%(data_type)s` objekto"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "modelo:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "rilatitaj `%(app_label)s.%(object_name)s` objektoj"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "ĉiuj %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "nombro da %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "Atributo sur %s objektoj"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ne ŝajnas esti URLmotiva objekto"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Ĉefpaĝo"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentaro"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Legosignetoj"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Dokumentaraj legosignetoj"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Por instali legosignetojn, trenu la ligon al viaj "
-"legosignaj breto aŭ dekste-alklaki la ligon kaj aldonu ĝin al viaj "
-"legosignoj. Nun vi povas elekti la legosigneto el ajna paĝo en la retejo. "
-"Notu ke kelkaj el tiuj legosignetoj bezonas ke vi estu uzante la retejon per "
-"komputilo nomĝita\n"
-"kiel \"interna\" (kontaktu via sistema administranto se vi ne estas certe "
-"ke\n"
-"via komputilo estas \"interna\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Dokumentaro por tiu paĝo"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Sendas vin el ajna paĝo, al la dokumentado de la vido kiu generis tiun paĝon."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Montri objektan identigilon"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Montri la enhavan tipon kaj unikan identigilon por paĝoj kiu reprezentas "
-"ununuran objekton."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Redakti tiun objekton (nuna fenestro)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Forsendas al la administradan paĝon kiu reprezentas ununuran objekton."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Redakti tiun objekton (nova fenestro)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Kiel supre, sed montras la administradan paĝon en nova fenestro."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Etikedoj"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Listigi ĉiujn ŝablonmarkojn kaj iliajn funkciojn."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtriloj"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"Filtriloj estas agoj kiuj povas esti aplikitaj al variabloj en ŝablono por "
-"ŝanĝi la eligon."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modeloj"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"Modeloj estas priskriboj de ĉiuj objektoj en la sistemo kaj iliaj rilataj "
-"kampoj. Ĉiu modelo havas liston de kampoj kiu povas esti alirita kiel "
-"ŝablona variabloj"
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Vidoj"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"Ĉiu paĝo sur la publika retejo estas produktita per vido. La vido difinas "
-"kiun ŝablonon estas uzita por produkti la paĝon kaj kiuj objektoj estas "
-"haveblaj en tiu ŝablono."
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Ŝablonoj"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Ŝablono: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Ŝablono: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "Serĉi vojo por ŝablono \"%(name)s\" sur %(grouper)s:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Bulea (Vera aŭ Malvera)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Tipo de kampo: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/es/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/es/LC_MESSAGES/django.mo
deleted file mode 100644
index d26a607..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/es/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/es/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/es/LC_MESSAGES/django.po
deleted file mode 100644
index 66c11ee..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/es/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,399 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antoni Aloy <aaloy@apsl.net>, 2012-2013
-# Herty Nava <translation@bolmedia.ca>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-10-05 00:32+0000\n"
-"Last-Translator: Herty Nava <translation@bolmedia.ca>\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "etiqueta:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtro:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "vista:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Aplicación %r no encontrada"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-"El modelo %(model_name)r no se ha encontrado en la aplicación %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "el objeto relacionado `%(app_label)s.%(data_type)s`"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "modelo:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "los objetos relacionados `%(app_label)s.%(object_name)s`"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "todo %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "número de %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "Atributos en los objetos %s"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s no parece ser un objeto urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Inicio"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Documentación"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Bookmarklets de documentación"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Para instalar bookmarklets, arrastre el enlace a su barra\n"
-"de favoritos, o pulse con el botón derecho el enlace y añádalo a sus "
-"favoritos.\n"
-"Ahora puede escoger el bookmarklet desde cualquier página del sitio.\n"
-"Observe que algunos de estos bookmarklets precisan que esté viendo\n"
-"el sitio desde un ordenador señalado como \"interno\" (hable\n"
-"con su administrador de sistemas si no está seguro si el suyo lo es).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Documentación para esta página"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Lleva desde cualquier página a la documentación de la vista que la genera."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Mostrar ID de objeto"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Muestra el tipo de contenido e ID único de las páginas que representan un "
-"simple objeto."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Editar este objeto (ventana actual)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Lleva a la página de administración de páginas que representan un único "
-"objeto."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Editar este objeto (nueva ventana)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"Como antes, pero abre la página de administración en una nueva ventana."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Etiquetas"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Lista de todas la etiquetas de plantillas y sus funciones."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtros"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"Los filtros son accciones se pueden aplicar a variables en una plantilla "
-"para alterar el resultado."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modelos"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"Los modelos son descripciones de todos los objetos en el sistema y sus "
-"campos asociados. Cada modelo tienen una lista de campos a los que se puede "
-"acceder como variables de plantilla"
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Vistas"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"Cada página en el sitio público se genera a través de una vista. La vista "
-"define qué plantilla se usa para generar la página y qué objetos están "
-"disponibles para esa plantilla."
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-"Herramientas para tu navegador para acceder a funciones de administración "
-"rápidamente."
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Por favor instale docutils"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"El sistema de documentación de la administración require la biblioteca <a "
-"href=\"%(link)s\">docutils</a> de Python."
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"Por favor pida al administrador que installe <a href=\"%(link)s\">docutils</"
-"a>."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Modelo: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Campo"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Tipo"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Descripción"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Vuelve a la documentación del modelo"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Documentación del modelo"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Grupo de modelos"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Plantillas"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Plantilla: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Plantilla: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "Buscar ruta para la plantilla \"%(name)s\" en %(grouper)s:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(no existe)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Volver a la documentación"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Filtros de plantilla"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Documentación de los filtros de plantilla"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "Filtros integrados"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"Para utilizar estos filtros, incluya <code>%(code)s</code> en su plantilla "
-"antes de usar el filtro."
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Etiquetas de plantilla"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Documentación de las etiquetas de plantilla"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "Etiquetas integradas"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"Para utilizar estas etiquetas, incluya <code>%(code)s</code> en su plantilla "
-"antes de utilizar la etiqueta."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "Vista: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Contexto:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Plantillas:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "Volver a la documentación de las vistas"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "Ver la documentación"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Ir al sitio"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "Vistas por URL en %(name)s"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "Ver función: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Booleano (Verdadero o Falso)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Campo de tipo: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.mo
deleted file mode 100644
index e09f132..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.po
deleted file mode 100644
index 781a76a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/es_AR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,398 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# federicobond <federicobond@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ramiro Morales <cramm0@gmail.com>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-11-05 10:20+0000\n"
-"Last-Translator: Ramiro Morales <cramm0@gmail.com>\n"
-"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
-"django/language/es_AR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_AR\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "etiqueta:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtro:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "vista:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Aplicación %r no encontrada"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modelo %(model_name)r no encontrado en aplicación %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "el objeto `%(app_label)s.%(data_type)s` relacionado"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "modelo:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "objetos `%(app_label)s.%(object_name)s` relacionados"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "todos los %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "número de %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "Atributos de objetos %s"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s no parece ser un objeto urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Inicio"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Documentación"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Bookmarklets de documentación"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Para instalar bookmarklets, arrastre el enlace a su barra\n"
-"de favoritos, o pulse con el botón derecho el enlace y añádalo a sus "
-"favoritos.\n"
-"Ahora puede seleccionar el bookmarklet desde cualquier página en el sitio.\n"
-"Tenga en cuenta que algunos de estos bookmarklets precisan que esté viendo\n"
-"el sitio desde un equipo señalado como \"interno\" (hable\n"
-"con su administrador de sistemas si no está seguro de si el suyo lo es).</"
-"p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Documentación de esta página"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Le lleva desde cualquier página a la documentación de la vista que la genera."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Mostrar ID de objeto"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Muestra el tipo de contenido e ID unívoco de las páginas que representan un "
-"único objeto."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Editar este objeto (ventana actual)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Le lleva a la página de administración de páginas que representan un único "
-"objeto."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Editar este objeto (nueva ventana)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Ídem, pero abre la página de administración en una nueva ventana."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Etiquetas"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Lista de todas las etiquetas de plantilla y sus funciones."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtros"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"Los filtros son acciones que pueden ser aplicadas a variables en una "
-"plantilla para alterar el resultado final."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modelos"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"Los modelos son especificaciones de todos los objetos en el sistema y sus "
-"campos asociados. Cada modelo contiene una lista de campos accesibles como "
-"variables de plantilla"
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Vistas"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"Cada página en el sitio público es generada por una vista. La vista define "
-"qué plantilla es utilizada para generar la página y qué objetos están "
-"disponibles para esta plantilla."
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-"Herramientas para tu navegador para acceder rápidamente a la funcionalidad "
-"de administración."
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Por favor instale docutils"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"El sistema de documentación de admin requiere la biblioteca Python <a href="
-"\"%(link)s\">docutils</a>."
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"Por favor solicite a sus administradores de sistemas que instalen <a href="
-"\"%(link)s\">docutils</a>."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Modelo: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Campo"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Tipo"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Descripción"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Volver a la documentación de los modelos"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Documentación de modelos"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Grupos de modelos"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Plantillas"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Plantilla: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Plantilla: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "Buscar ruta para la plantilla \"%(name)s\" en %(grouper)s:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(no existe)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Volver a la documentación"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Filtros de plantilla"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Documentación de filtros de plantilla"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "Filtros Django 'de fábrica'"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"Para usar estos filtros, escriba <code>%(code)s</code> en su plantilla antes "
-"de usar el filtro."
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Etiquetas de plantilla"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Documentación de etiquetas de plantilla"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "Etiquetas Django 'de fábrica'"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"Para usar estas etiquetas, escriba <code>%(code)s</code> en su plantilla "
-"antes de usar la etiqueta."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "Vista: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Contexto:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Plantillas:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "Volver a la documentación de vistas"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "Documentación de vistas"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Ir al sitio"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "Vistas por URL en %(name)s"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "Función de vista: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Booleano (Verdadero o Falso)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Campo tipo: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.mo
deleted file mode 100644
index 2756aa2..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.po
deleted file mode 100644
index ff2d3c1..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/es_MX/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,378 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Abraham Estrada <abraham.estrada@gmail.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/"
-"language/es_MX/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_MX\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "etiqueta:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtro:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "ver:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Aplicación %r no encontrada"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modelo %(model_name)r no encontrado en aplicación %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "el objeto `%(app_label)s.%(data_type)s` relacionado"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "modelo:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "objetos `%(app_label)s.%(object_name)s` relacionados"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "todos los %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "número de %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s no parece ser un objeto urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Inicio"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Documentación"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Bookmarklets de documentación"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Para instalar bookmarklets, arrastre el enlace a su barra "
-"de favoritos, o pulse con el botón derecho el enlace y añádalo a sus "
-"favoritos. Ahora puede seleccionar el bookmarklet desde cualquier página en "
-"el sitio. Tenga en cuenta que algunos de estos bookmarklets necesitan que "
-"esté viendo el sitio desde un equipo señalado como \"interno\" (hable con su "
-"administrador de sistemas si no está seguro de si el suyo lo es).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Documentación de esta página"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Le lleva desde cualquier página a la documentación de la vista que la genera."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Mostrar ID de objeto"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Muestra el tipo de contenido e ID único de las páginas que representan un "
-"único objeto."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Editar este objeto (ventana actual)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Le lleva a la página de administración de páginas que representan un único "
-"objeto."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Editar este objeto (nueva ventana)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"Como el anterior, pero abre la página de administración en una ventana nueva"
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Etiquetas"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtros"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modelos"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Vistas"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Plantillas"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (Verdadero o Falso)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Campo tipo: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/et/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/et/LC_MESSAGES/django.mo
deleted file mode 100644
index c2fc707..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/et/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/et/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/et/LC_MESSAGES/django.po
deleted file mode 100644
index 5b6f138..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/et/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,394 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jannolii <jannolii@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-11-06 12:52+0000\n"
-"Last-Translator: jannolii <jannolii@gmail.com>\n"
-"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/"
-"et/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: et\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "lipik:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtreeri:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "vaade:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Rakendust %r ei leitud"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Mudelit %(model_name)r ei leitud rakendusest %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "seotud `%(app_label)s.%(data_type)s` objekt"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "mudel:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "seotud `%(app_label)s.%(object_name)s` objektid"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "kõik %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s arv"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "Objekti %s atribuudid"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ei tundu olevat urlpattern objekt"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Kodu"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentatsioon"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Järjehoidjandid"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Dokumentatsiooni järjehoidjandid"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Järjehoidjandite paigaldamiseks lisa link "
-"järjehoidjatesse.\n"
-"Seejärel võite järjehoidjandi aktiveerida suvaliselt lehelt saidil. Mõned "
-"järgnevatest\n"
-"järjehoidjanditest eeldavad, et külastate saiti arvutist, mis kuulub "
-"\"sisemiste\" arvutite nimekirja.\n"
-"(konsulteerige süsteemiadministraatoriga, kui te ei tea, mida tähendab "
-"\"sisemine\")</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Selle lehekülje dokumentatsioon"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Suunab teid suvalisel lehel asudes selle vaate dokumentatsioonile, mis antud "
-"lehe genereerib."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Näita objekti ID-d"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Näitab sisutüüpi ning unikaalset ID'd lehtedel, mis esitavad mingit kindlat "
-"objekti."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Muuda seda objekti (samas aknas)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Suunab administreeimislehele lehtedelt, mis esitavad mingit kindlat objekti."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Muuda seda objekti (uues aknas)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Sama, mis üleval, kuid avab admin. lehe uues aknas."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Lipikud"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Nimekiri kõikidest malli märgistustest ja nende funktsioonidest."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtrid"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"Filtrid on tegevused, mida saab mallides külge panna muutujatele muutmaks "
-"viimaste väljundit."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Mudelid"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"Mudelid on süsteemi kõikide objektide ja nende väljade omavaheliste seoste "
-"kirjeldused. Igal mudelil on hulk väljasid, mida saab mallide muutujatena "
-"kasutada"
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Vaated"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"Avaliku saidi iga leht on genereeritud vaate poolt. Vaade defineerib lehe "
-"genereerimiseks kasutatava malli ning objektid mida mall kasutada saab."
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-"Töövahendid sinu brauserile pääsemaks kiiresti ligi administraatori "
-"funktsioonidele. "
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Palun paigaldage docutils"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"Administreerimise dokumentatsioon vajab Python'i <a href=\"%(link)s"
-"\">docutils</a> teeki."
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr "Palu administraatoril paigaldada <a href=\"%(link)s\">docutils</a>."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Mudel: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Väli"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Tüüp"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Kirjeldus"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Tagasi Mudeli dokumentatsiooni"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Mudeli dokumentatsioon"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Mudeligrupid"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Mallid"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Mall: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Mall: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "Otsi failiteest malli \"%(name)s\" jaotusest %(grouper)s:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(pole olemas)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Tagasi Dokumentatsiooni"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Mallifiltrid"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Mallifiltrite dokumentatsioon"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "Sisseehitatud filtrid"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"Et kasutada neid filtreid, pane malli sisse <code>%(code)s</code> enne kui "
-"kasutad filtrit."
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Malli märgendid"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Malli märgendite dokumentatsioon"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "Sisseehitatud märgendid"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"Et kasutada neid märgendeid pane malli <code>%(code)s</code> enne kui "
-"kasutad märgendit."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "Vaade: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Kontekst:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Mallid:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "Tagasi Vaadete dokumentatsiooni"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "Vaata dokumentatsiooni"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Mine saidile"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "Vaated URL kaupa %(name)s"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "Vaate funktsioon: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Tõeväärtus (Kas tõene või väär)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Lahter tüüpi: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/eu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/eu/LC_MESSAGES/django.mo
deleted file mode 100644
index d4e8df7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/eu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/eu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/eu/LC_MESSAGES/django.po
deleted file mode 100644
index e077a07..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/eu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,392 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Aitzol Naberan <anaberan@codesyntax.com>, 2011-2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-10-31 11:47+0000\n"
-"Last-Translator: Aitzol Naberan <anaberan@codesyntax.com>\n"
-"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/"
-"eu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "etiketa:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtroa:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "bista:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "%r aplikazio ez da aurkitu"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "%(model_name)r modeloa ez da aurkitu %(app_label)r aplikazioan"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "erlazionatutako `%(app_label)s.%(data_type)s` objektua"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "modeloa:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "erlazionatutako `%(app_label)s.%(object_name)s` objektuak"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "%s dena"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s zenbakia"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ez dirudi url heredu objetua"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Hasiera"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentazioa"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Markadoreak"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Dokumentazio markadoreak"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Markadoreak instalatzeko eraman linka zure erreminta "
-"panelera (toolbar), edo eskuineko botoiarekin klik egin eta gehitu erreminta "
-"panelera. Kontuan izan, markadore hauetako batzuk, exekutatzen ari diren "
-"ordenagailua 'barneko' gisa markatua egotea behar dutela (hitzagin zure "
-"sistema kudeatzailearekin zure ordenagailua 'barnekoa' den edo ez "
-"argitzeko)\n"
-".</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Web orri honen dokumentazioa"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Edozein orritik, orria sortzen duen bistaren dokumentaziora eramango zaitu."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Objetuaren ID erakutsi"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Objetu bakarra erakusten duten orrietan, eduki mota (content-type) eta "
-"orriaren ID bakarra erakutsi, ."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Objetu hau aldatu ( leiho honetan)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Objetu bakarra erakusten orrietan, adminiztrazio gunera joan."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Objetu hau aldatu (leiho berrian)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Goian bezala, baina kudeaketa guena leiho berri batean irekiko da."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Etiketak"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Template tag guztien eta beraien funtzioen zerrnda."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Iragazkiak"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"Txantiloi barneko aldagaien irteera aldatzeko aplikatzen diren ekintzak dira "
-"Filter-ak."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Ereduak"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"Sisteman definitutako objektu eta beraien eremuen zehaztapenak dira "
-"modeloak. Modelo bakoitzak eremu zerrenda bat dauka eta eremu hauetako "
-"bakoitza txantiloietako aldagai gisa atzitu daiteke."
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Bistak"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"Webgune publikoan agertzen den orri bakoitza bista batek sortzen du. Bistak "
-"zehazten duzein txantiloi erabiliko den eta honek eskuragarri izango dituen "
-"objektuak."
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr "Adminera azkar sartzeko arakatzailearentzako tresnak"
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Instalatu docutils mesedez"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"Admin dokumentazio sostemak Pythonen <a href=\"%(link)s\">docutils</a> "
-"liburutegia behar du."
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"Eskatu zure administratzaileari <a href=\"%(link)s\">docutils</a> "
-"instalatzeko."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Modeloa: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Eremua"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Mota"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Deskribapena"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Bueltatu Modeloaren Dokumentaziora"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Modeloaren dokumentazioa"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Modelo taldeak"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Txantiloiak"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Txantiloia: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Txantiloia: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "Txantiloien bilaketa bidea \"%(name)s\" on %(grouper)s:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(ez da existitzen)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Bueltatu Dokumentaziora"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Txantiloi iragazkiak"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Txantiloi iragazkien dokumentazioa"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"Iragazki hauek erabiltzeko jarri <code>%(code)s</code> iragazkia erabili "
-"aurretik zure txantiloian"
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Template tags"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Template tag documentazioa"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"Tag hauek erabiltzeko, jarri <code>%(code)s</code> txantiloian taga erabili "
-"aurretik."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "View: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Kontextua:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Txantiloia:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "Bueltatu Bisten Dokumentaziora"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "Bisten dokumentazioa"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Joan webgunera"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "Bistak URL-ez %(name)s-en"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "Ikusi funtzioa: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolearra (egia ala gezurra)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Eremuaren mota: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/fa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/fa/LC_MESSAGES/django.mo
deleted file mode 100644
index 53844ba..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/fa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/fa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/fa/LC_MESSAGES/django.po
deleted file mode 100644
index 0819a79..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/fa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,377 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Nikneshan <ali@nikneshan.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Reza Mohammadi <reza@teeleh.ir>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-11-05 09:17+0000\n"
-"Last-Translator: Reza Mohammadi <reza@teeleh.ir>\n"
-"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/"
-"fa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "برچسب:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "فیلتر"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "نمایش:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "برنامهٔ %r یافت نشد"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "مدل %(model_name)r در برنامهٔ %(app_label)r یافت نشد"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "شیء «%(app_label)s.%(data_type)s» مرتبط"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "مدل:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "اشیاء «%(app_label)s.%(object_name)s» مرتبط"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "همهٔ %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "تعداد %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "به نظر نمی رسد %s یک شیء از نوع urlpattern باشد"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "آغازه"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "مستندات"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklet ها"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "مستندات bookmarklet ها"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-" <p class=\"help\"> برای نصب بوکمارکلت ها لینک را روی بوکمارک تولبار خود "
-"بکشید\n"
-" و یا روی لینک کلیک راست کنید و add را انتخاب نمایید. اکنون شما می توانیدو "
-"بوکمارکلت را از هر صحفه ای در سایت انتخاب نمایید.\n"
-" توجه داشته باشید بعضی از این بوکمارکلت ها لازم است از کامپیوتری که داخلی "
-"تعریف شده دیده شوند. (اگر مطمئن نیستید با مدیر شبکه خود در این باره صحبت "
-"کنید.)</p>\n"
-"\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "مستندات این صفحه"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"شما را از هر صفحه‌ای که باشید به مستندات نمایی که صفحه را ایجاد کرده می‌برد"
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "نمایش مشخصهٔ شیء"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"نمایش محتوا و مشخصهٔ منحصر به فرد برای صفحاتی که یک شیء را نمایش می‌دهند."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "ویرایش این شیء (پنجرهٔ کنونی)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "پرش به صفحهٔ مدیر برای صفحاتی که یک شیء را نمایش می‌دهند."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "ویرایش این شیء (پنجرهٔ جدید)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "مانند بالا، اما صفحهٔ مدیر را در پنجرهٔ جدیدی باز می‌کند."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "تگ ها"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "فیلترها"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "مدل ها"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "نمایش ها"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "لطفاً docutils نصب کنید"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "فیلد"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "نوع"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "توضیحات"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "برگشت به مستندات مدل‌ها"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "مستندات مدل"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "گروه‌های مدل"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "قالب ها"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "قالب: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "قالب: «%(name)s»"
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(وجود ندارد)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "برگشت به مستندات"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "فیلترهای از اول موجود"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "بولی (درست یا غلط)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "فیلد با نوع: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/fi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/fi/LC_MESSAGES/django.mo
deleted file mode 100644
index 19a553f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/fi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/fi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/fi/LC_MESSAGES/django.po
deleted file mode 100644
index 32116b0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/fi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,375 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Finnish (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tagi:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "suodatin:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "näkymä:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Sovellusta %r ei löydy"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Sovelluksesta %(app_label)r ei löydy mallia %(model_name)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "tähän liittyvä `%(app_label)s.%(data_type)s`-kohde"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "malli:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "tähän liittyvät `%(app_label)s.%(object_name)s`-kohteet"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "kaikki %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s-kohteiden lukumäärä"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ei näytä olevan urlpattern-olio"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Etusivu"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Ohjeita"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Kirjanmerkkiset"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Ohjeiden kirjanmerkkiset"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Asenna kirjanmerkkinen raahaamalla linkki kirjanmerkkien "
-"työkalupalkkiin tai napsauttamalla linkkiä oikeanpuoleisella hiiren "
-"painikkeella ja valitsemalla kirjanmerkkeihin lisäämisen. Sen jälkeen voit "
-"valita kirjanmerkkisen miltä tahansa sivuston sivulta. Huomaa, että jotkin "
-"näistä kirjanmerkkisistä toimivat vain, jos selaat sivustoa \"paikalliseksi"
-"\" määritellyltä tietokoneelta (kysy lisätietoja verkkonne ylläpitäjältä).</"
-"p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Tämän sivun ohjeita"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "Näyttää ohjeet, jotka koskevat ko. sivun luonutta näkymää."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Näytä kohteen tunniste"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Näyttää yksittäistä kohdetta vastaavilla sivuilla kohteen tyypin ja "
-"tunnisteen."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Muokkaa tätä kohdetta (tässä ikkunassa)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Siirtyy yksittäistä kohdetta vastaavalta sivulta kohteen ylläpitosivulle."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Muokkaa tätä kohdetta (uudessa ikkunassa)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Kuten yllä, mutta avaa ylläpitosivun uuteen ikkunaan."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Totuusarvo: joko tosi (True) tai epätosi (False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Kenttä tyyppiä: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/fr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/fr/LC_MESSAGES/django.mo
deleted file mode 100644
index eede0ee..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/fr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/fr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/fr/LC_MESSAGES/django.po
deleted file mode 100644
index a7e9651..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/fr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,399 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# claudep <claude@2xlibre.net>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-22 07:51+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: French (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "mot-clé :"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtre :"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "vue :"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "L'application %r n'a pas été trouvée"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-"Le modèle %(model_name)r n'a pas été trouvé dans l'application %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "l'objet « %(app_label)s.%(data_type)s » en relation"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "modèle :"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "les objets « %(app_label)s.%(object_name)s » en relation"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "tous les %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "nombre de %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "Attributs des objets %s"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ne semble pas être un objet urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Accueil"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Documentation"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Signets"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Documentation des signets"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Pour installer des signets, faites glisser le lien vers "
-"votre barre \n"
-"de marques-pages, ou effectuez un clic droit dessus et ajoutez-le.\n"
-"Maintenant, vous pouvez le sélectionner depuis n'importe quelle page\n"
-"du site. Notez que certains d'entre eux nécessitent que vous visionniez\n"
-"le site depuis un ordinateur dit « interne » (contactez votre "
-"administrateur\n"
-"système si vous n'êtes pas sûr que votre ordinateur le soit).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Documentation pour cette page"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Vous envoie de n'importe quelle page vers la documentation de la vue qui a "
-"généré cette page."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Afficher l'identifiant de l'objet"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Affiche le content-type et l'identifiant unique pour les pages qui "
-"représentent un objet unique."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Modifier cet objet (fenêtre actuelle)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Renvoie à la page d'administration qui représente un objet seul."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Modifier cet objet (nouvelle fenêtre)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"Comme ci-dessus, mais ouvre la page d'administration dans une nouvelle "
-"fenêtre."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Étiquettes"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Liste de toutes les balises de gabarit et leur fonction."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtres"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"Les filtres sont des actions qui peuvent être appliquées à des variables "
-"dans un gabarit pour modifier leur valeur affichée."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modèles"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"Les modèles sont des descriptions de tous les objets du système avec leurs "
-"champs associés. Chaque modèle possède une liste de champs auxquels on peut "
-"accéder comme pour les variables de gabarit"
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Vues"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"Chaque page du site public est généré par une vue. La vue détermine le "
-"gabarit utilisé pour générer la page ainsi que les objets qui sont "
-"disponibles dans le gabarit."
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-"Outils permettant au navigateur d'accéder rapidement aux fonctionnalités de "
-"l'interface d'administration."
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Veuillez installer docutils"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"Le système de documentation de l'interface d'administration nécessite la "
-"bibliothèque Python <a href=\"%(link)s\">docutils</a>."
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"Demandez à votre administrateur système d'installer <a href=\"%(link)s"
-"\">docutils</a>."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Modèle : %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Champ"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Type"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Description"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Retour à la documentation des modèles"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Documentation des modèles"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Groupes de modèles"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Gabarits"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Gabarit : %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Gabarit : « %(name)s »"
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "Chemin de recherche du gabarit « %(name)s » sur %(grouper)s :"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(n'existe pas)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Retour à la documentation"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Filtres de gabarit"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Documentation des filtres de gabarit"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "Filtres intégrés"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"Pour utiliser ces filtres, placez <code>%(code)s</code> dans votre gabarit "
-"avant d'utiliser un des filtres."
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Balises de gabarit"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Documentation des balises de gabarit"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "Balises intégrées"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"Pour utiliser ces balises, placez <code>%(code)s</code> dans le gabarit "
-"avant d'utiliser une des balises."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "Vue : %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Contexte :"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Gabarits :"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "Retour à la documentation des vues"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "Documentation des vues"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Aller sur le site"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "Vues par URL sur %(name)s"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "Fonction de vue : %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Booléen (True ou False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Champ de type : %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/fy_NL/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/fy_NL/LC_MESSAGES/django.mo
deleted file mode 100644
index 78e2f8d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/fy_NL/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/fy_NL/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/fy_NL/LC_MESSAGES/django.po
deleted file mode 100644
index 403385d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/fy_NL/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,363 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-04-24 20:19+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Western Frisian (Netherlands) (http://www.transifex.com/"
-"projects/p/django/language/fy_NL/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fy_NL\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr ""
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr ""
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr ""
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr ""
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr ""
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr ""
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr ""
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr ""
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr ""
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr ""
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ga/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ga/LC_MESSAGES/django.mo
deleted file mode 100644
index 662b839..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ga/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ga/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ga/LC_MESSAGES/django.po
deleted file mode 100644
index 9bd3e46..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ga/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,381 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Michael Thornhill <michael@maithu.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/"
-"ga/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ga\n"
-"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
-"4);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "clib:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "scag:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "radharc:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Ní bhfuarthas feidhmchlár %r "
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Ní bhfuarthas samhail %(model_name)r i bhfeidhmclár %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "An oibiacht gaolmhara `%(app_label)s.%(data_type)s`"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "samhail:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "Oibiachtí gaolmhara `%(app_label)s.%(object_name)s`"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "gach %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "líon %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "Feiceann sé nach bhfuil %s oibiacht urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Baile"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Doiciméadúchán"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Leabharmharcín"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Leabharmharcín doiciméadúchán"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Chun leabharmarcín a suitéal, Tarraing an nasc go dtí do "
-"barra uirlisí leabhairmairc\n"
-", nó deaschliceáil and nasc agus cuir leis do leabharmairc. Anois is "
-"féidir\n"
-"leat an leabharmarcín a roghnaigh ón aon leathanach ar an suíomh. Bí "
-"cúramach go dteastaíonn cuid de na leabharmarcín go bhfuil tú ag féachaint "
-"ar an suíomh ó ríomhaire inmheánach\n"
-"(leabhar le do riarthóir córais muna bhfuil tú cinnte).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Doiciméadúchán le hadhaigh an leathanach seo"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Tógann se tusa ón aon leathanach go dtí an doiciméadúchán le hadhaigh an "
-"radharc a rinne an leathanach."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Taispéain oibiacht ID"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Taispéain an content-type agus ID uathúil le leathanaigh le hadhaigh "
-"oibiacht amháin."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Cuir in eagar an oibiacht seo (fuinneog láthair)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Léimeann go dtí an leathanach riaracháin le leathainaigh le hadhaigh "
-"oibiacht amháin."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Cuir in eagar an oibiacht seo (fuinneog nua)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Mar thuas, ach osclaíonn sé an leathanach riarachán if fuinneog nua"
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Clibeanna"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Scagairí"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Samhla"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Radharcanna"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Teimpléid"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boole"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Réimse de Cineál: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/gl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/gl/LC_MESSAGES/django.mo
deleted file mode 100644
index 481d01b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/gl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/gl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/gl/LC_MESSAGES/django.po
deleted file mode 100644
index 15f1de3..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/gl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,378 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# fonso <fonzzo@gmail.com>, 2011,2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Leandro Regueiro <leandro.regueiro@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-09-07 11:56+0000\n"
-"Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
-"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/"
-"gl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "etiqueta:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtro:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "vista:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Non se atopou a aplicación %r"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "O modelo %(model_name)r non se atopou na aplicación %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "o obxecto relacionado `%(app_label)s.%(data_type)s`"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "modelo:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "os obxectos relacionados `%(app_label)s.%(object_name)s`"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "todos os %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "número de %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s non semella ser un obxecto urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Inicio"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Documentación"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Bookmarklets de documentación"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Para instalar bookmarklets, arrastre a ligazón á súa\n"
-"barra de favoritos ou marcadores, ou faga clic co botón dereito\n"
-"e engádao aos marcadores. Agora pode usar o bookmarklet dende\n"
-" calquera páxina do sitio web. Teña en conta que algúns destes\n"
-"bookmarklets precisan que estea a visitar o sitio dende un ordenador\n"
-"designado coma \"interno\" (fale co administrador do sistema se\n"
-"non está seguro de que o seu ordenador é \"interno\" .</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Documentación para esta páxina"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "Salta á documentación para a vista que xera a páxina."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Amosar ID do obxecto"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Amosa o tipo de contido e a ID única para páxinas que representan un obxecto "
-"determinado."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Editar este obxecto (nesta fiestra)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Salta á páxina de administración para páxina que representan un obxecto "
-"determinado."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Editar este obxecto (nunha nova fiestra)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Como enriba, pero abre a páxina de administración nunha nova fiestra."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Etiquetas"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtros"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modelos"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Vistas"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "instale docutils"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Modelo: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Campo"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Tipo"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Descrición"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Volver á documentación dos modelos"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Patróns"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(non existe)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Volver á documentación"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "Vista: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Contexto:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Ir ao sitio"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Valor booleano (verdadeiro ou falso)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Campo do tipo: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/he/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/he/LC_MESSAGES/django.mo
deleted file mode 100644
index 6e3de16..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/he/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/he/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/he/LC_MESSAGES/django.po
deleted file mode 100644
index 42bbb6f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/he/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,382 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Meir Kriheli <mkriheli@gmail.com>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-11-02 12:48+0000\n"
-"Last-Translator: Meir Kriheli <mkriheli@gmail.com>\n"
-"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "תג:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "סינון:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "ה־view:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "יישום %r לא נמצא"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "מודל %(model_name)r לא נמצא ביישום %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "אוביקטי `%(app_label)s.%(data_type)s` קשורים"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "מודל:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "אובייקטי `%(app_label)s.%(object_name)s` קשורים"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "כל %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "מספר %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "Attributes באובייקטי %s"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "לא נראה ש-%s הוא אובייקט urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "דף הבית"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "תיעוד"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "ייסומניות"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "ייסומוניות תיעוד"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">כדי להתקין ייסומניות, יש לגרור את הקישור לסרגל הסימניות\n"
-"שלך, או קליק ימני והוספה לסימניות. כעת ניתן\n"
-"לבחור את הייסומניה מכל עמוד באתר. יש לשים לב כי חלק מהייסומניות\n"
-"ניתנות לצפיה רק ממחשב שמסווג\n"
-"כ\"פנימי\" (יש לדבר עם מנהל המערכת שלך אם אינך בטוח/ה\n"
-"שהמחשב מסווג ככזה).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "תיעוד לדף זה"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "מקפיץ אותך מכל עמוד לתיעוד התצוגה שייצרה אותו."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "הצג מזהה אובייקט"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "מציג את סוג התוכן והמזהה הייחודי לעמודים המייצגים אובייקט בודד."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "עריכת אובייקט זה (בחלון הנוכחי)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "קופץ לעמוד הניהול לעמודים אשר מייצגים אובייקטים בודד."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "עריכת אובייקט זה (בחלון חדש)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "כנ\"ל, אך דף הניהול ייפתח בחלון חדש."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "תגים"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "רשימת כל ה-template tags והפונקציות שלהן."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filters"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr "פילטרים ופעולות אשר ניתן ליישם על משתנים בתבנית לשינוי הפלט."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "מודלים"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"מודלים הם תיאור כל האובייקטים במערכת והשדות הקשורים אליהם. לכל מודל יש רשימת "
-"שדות אשר ניתן לגשת אליהם בתור משתני תבנית"
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Views"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"כל עמוד באתר הציבורי מיוצר ע\"י view. ה־view מגדיר את התבנית המשמשת ליצירת "
-"העמוד ואת האובייקטים הזמינים לתבנית"
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr "כלים המאפשרים לדפדפן שלך גישה מהירה ליכולות הניהול."
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "נא להתקין את docutils"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"מערכת התיעוד במנשק הניהול דורשת את ספריית הפייתון <a href=\"%(link)s"
-"\">docutils</a>."
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr "נא לבקש ממנהל המערכת להתקין את <a href=\"%(link)s\">docutils</a>."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "מודל: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "שדה"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "סוג"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "תיאור"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "חזרה לתיעוד מודלים"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "תיעוד מודלים"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "קבוצות מודלים"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "תבניות"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "תבנית: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "תבנית: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "חיפוש נתיב לתבנית \"%(name)s\" בתוך %(grouper)s:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(לא קיים)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "חזרה לתיעוד"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "פילטרים לתבניות"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "תיעוד פילטר לתבנית"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "פילטרים מובנים"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"כדי להשתמש בפילטרים האלו יש להוסיף <code>%(code)s</code> בתבנית שלך לפני "
-"השימוש בפילטר."
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "תגים לתבניות"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "תיעוד תגים לתבניות"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "תגים מובנים"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"כדי להשתמש בתגים האלו יש להוסיף <code>%(code)s</code> בתבנית שלך לפני השימוש "
-"בתג."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "View: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "קונטקסט:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "תבניות:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "חזרה לתיעוד ה-Views"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "תיעוד View"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "קפיצה לאתר"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "Views לפי URL על %(name)s"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "פונקציית View: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "בוליאני (אמת או שקר)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "שדה מסוג: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/hi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/hi/LC_MESSAGES/django.mo
deleted file mode 100644
index f63c2a6..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/hi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/hi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/hi/LC_MESSAGES/django.po
deleted file mode 100644
index 55cac81..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/hi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,375 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Chandan kumar <chandankumar.093047@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/"
-"hi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "टैग:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "छन्नी:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "दृष्टि:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "%r अनुप्रयोग लापता है"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "%(model_name)r मॉडल %(app_label)r अनुप्रयोग में लापता है"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "`%(app_label)s.%(data_type)s` संबंधित वस्तु"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "मॉडल :"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "`%(app_label)s.%(object_name)s` संबंधित वस्तु"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "सभी %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s संख्या"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s सही यू.आऱ.एल प्रतिरूप वस्तु नहीं है"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "गृह"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "दस्तावेज़ीकरण"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "बुकमार्कलेट्स"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "प्रलेखन बुकमार्कलेट्स"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">पृष्ठचिन्हक स्थापित करने के लिए,अपने बुकमार्क टूलबार के लिए लिंक\n"
-"को खींचें,या लिंक पर दायाँ क्लिक करें और इसे आपके बुकमार्क्स में जोड़ें. अब आप इस साइट में \n"
-"किसी भी पृष्ठ से बुकमार्कलेट का चयन कर सकते हैं. ध्यान दें इनमें से कुछ पृष्ठचिन्हको को\n"
-"आपकी आवश्यकता है जो \"आंतरिक\" (अपने सिस्टम व्यवस्थापक से बात करे अगर आपको यकीन नहीं "
-"है\n"
-"कि आपका कंप्यूटर \"आंतरिक\" है) रूप में निर्दिष्ट कंप्यूटर से\n"
-"साइट को देखना चाहते है.</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "इस पृष्ठ की प्रलेखन"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "दृश्य जो उस पृष्ठ को उत्पन्न करता है के प्रलेखन के लिए किसी भी पृष्ठ पर जा सकते है."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "वस्तु आइ.डी दिखाओ"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"पृष्ठों के लिए सामग्री प्रकार और अनोखी आईडी जो एक एकल वस्तु का प्रतिनिधित्व करते हैं को "
-"दर्शाते है."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "इस वस्तु को संपादन करें (इस खिडकी में)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "पृष्ठों के लिए एडमिन प्रष्ट जो एक एकल वस्तु का प्रतिनिधित्व करते हैं से जाये. "
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "इस वस्तु को संपादन करें (नये खिडकी में)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "जैसा कि ऊपर में,लेकिन एक नई विंडों में एडमिन पृष्ठ को खोलता है."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "टैग्स"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "फ़िल्टर्स"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "मॉडल"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "दृश्य"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "प्रारूप"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "बूलियन (सही अथ‌वा गलत)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "फील्ड के प्रकार: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/hr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/hr/LC_MESSAGES/django.mo
deleted file mode 100644
index dd25be5..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/hr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/hr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/hr/LC_MESSAGES/django.po
deleted file mode 100644
index 3580449..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/hr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,382 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# aljosa <aljosa.mohorovic@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/"
-"hr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hr\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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tag:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filter:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "prikaz:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Aplikacija %r nije pronađena"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Model %(model_name)r nije pronađen u aplikaciji %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "povezani `%(app_label)s.%(data_type)s` objekt"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "povezani `%(app_label)s.%(object_name)s` objekti"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "svi %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "broj %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "izgleda da %s nije urlpattern objekt"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Početna"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentacija"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Dokumentacija bookmarklets-a"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Da bi instalirali bookmarklet, povucite link na svoj "
-"bookmarks\n"
-"toolbar, ili desnim klikom na link dodajte u svoje bookmarke. Sada možete\n"
-"selektirati bookmarklet sa bilo koje stranice. Zapamtite da neki "
-"bookmarkleti\n"
-"zahtjevaju da gledate stranice sa računala označenog\n"
-"kao \"internal\" (razgovarajte sa svojim sistem administratorom ako niste "
-"sigurni\n"
-"je li vaše računalo \"internal\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Dokumentacija za ovu stranicu"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Preusmjeri te sa bilo koje stranice na dokumentaciju za taj prikaz (view) "
-"koji generira stranicu."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Prikaži ID objekta"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Prikazuje tip sadržaja (content-type) i jedinstveni ID za stranice koje "
-"predstavljaju pojedinačan objekt."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Uredi objekt (u trenutnom prozoru)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Preusmjeri na admin stranicu za stranice koje predstavljaju pojedinačan "
-"objekt."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Uredi objekt (u novom prozoru)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Isto kao prethodno, ali otvara admin stranicu u novom prozoru."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Tagovi"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filteri"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modeli"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Views"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Predlošci"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (True ili False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Polje tipa: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/hu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/hu/LC_MESSAGES/django.mo
deleted file mode 100644
index 95a403e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/hu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/hu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/hu/LC_MESSAGES/django.po
deleted file mode 100644
index 826fb7e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/hu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,377 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Attila Nagy <>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/"
-"language/hu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "címke:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "szűrő:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "nézet:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "%r alkalmazás nem található"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-"%(model_name)r modell nem található a következő alkalmazásban: %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "a kapcsolódó '%(app_label)s.%(data_type)s' objektum"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "modell:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "kapcsolódó '%(app_label)s.%(object_name)s' objektumok"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "minden %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s mennyisége"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s nem tűnik egy urlpattern objektumnak."
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Kezdőlap"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentáció"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Könyvjelzők"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Dokumentum könyvjelzők"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">A könyvjelzők felvételéhez húzza a könyvjelzők linkjét az "
-"eszköztárra, vagy kattintson rájuk jobb egérgombbal és úgy adja hozzá. "
-"Ezután \n"
-"már ki tudja választani a könyvjelzőt a honlap bármely oldaláról. A "
-"könyvjelzők között néhány oldal csak \"belső\" gépekről nézhető meg.\n"
-"(Kérdezze meg rendszergazdáját, hogy az Ön gépe \"belső\" gép-e.).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Az oldal dokumentációja"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Bármely oldalról annak a nézetnek a dokumentációjára ugrik, amely a kérdéses "
-"oldalt generálta."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Az objektum ID mutatása"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Az objektum által reprezentált oldalak 'content-type' és 'unique ID' "
-"értékeit mutatja."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Objektum szerkesztése (aktuális ablakban)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Az objektumhoz tartozó oldalak adminisztrációjához ugrik."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Objektum szerkesztése (új ablakban)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Mint fentebb, de az adminisztrációs oldalt új ablakban nyitja meg."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Címkék"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Szűrők"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modellek"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Nézetek"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Sablonok"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Logikai (True vagy False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Mezőtípus: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ia/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ia/LC_MESSAGES/django.mo
deleted file mode 100644
index 9de735f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ia/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ia/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ia/LC_MESSAGES/django.po
deleted file mode 100644
index f8922b2..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ia/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,377 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Martijn Dekker <mcdutchie@hotmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/"
-"language/ia/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ia\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "etiquetta:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtro:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "visualisation:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Application %r non trovate"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modello %(model_name)r non trovate in application %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "le objecto `%(app_label)s.%(data_type)s` connexe"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "modello:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "objectos `%(app_label)s.%(object_name)s` connexe"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "tote le %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "numero de %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s non pare esser un objecto urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Initio"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Documentation"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Documentation bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Pro installar bookmarklets, trahe le ligamine a tu barra "
-"de marcapaginas, o clicca sur le ligamine con le button dextre e adde lo a "
-"vostre marcapaginas. Ora vos pote seliger le bookmarklet ab omne pagina in "
-"le sito. Nota que alcunes de iste bookmarklets necessita visualisar le sito "
-"ab un computer destinate a esser \"interne\" (contacta vostre administrator "
-"de systema si vos non es secur si vostre computator es \"interne\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Documentation pro iste pagina"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Transporta vos ab omne pagina al documentation pro le visualisation que "
-"genera ille pagina."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Monstrar le ID del objecto"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Monstrar le typo de contento e le ID unic pro paginas que representa un sol "
-"objecto."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Modificar iste objecto (fenestra actual)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Transporta vos al pagina administrative pro le paginas que representa un sol "
-"objecto."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Modificar iste objecto (nove fenestra)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Idem, ma aperi le pagina administrative in un nove fenestra."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Etiquettas"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtros"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modellos"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Visualisationes"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Patronos"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Booleano (ver o false)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Campo de typo: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/id/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/id/LC_MESSAGES/django.mo
deleted file mode 100644
index e0ed792..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/id/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/id/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/id/LC_MESSAGES/django.po
deleted file mode 100644
index 54169c2..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/id/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,377 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# rodin <romihardiyanto@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tag:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filter:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "view:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Aplikasi %r tidak ditemukan"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Model %(model_name)r tidak ditemukan di aplikasi %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "objek `%(app_label)s.%(data_type)s` yang terkait"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "obyek `%(app_label)s.%(object_name)s` yang terkait"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "semua %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "jumlah %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s bukan berupa objek urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Beranda"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentasi"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklet"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Bookmarklet dokumentasi"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Untuk memasang bookmarklet, seret tautan ini ke bilah\n"
-"markah Anda atau klik kanan pada tautan tersebut kemudian tambahkan ke\n"
-"markah Anda. Setelah itu Anda dapat memilih bookmarklet dari laman apapun\n"
-"pada situs. Jangan lupa, beberapa bookmarklet ini hanya bisa digunakan\n"
-"dari komputer yang terdaftar sebagai \"internal\" (hubungi administrator\n"
-"sistem Anda apabila tidak yakin apakah komputer Anda termasuk komputer\n"
-"\"internal\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Dokumentasi untuk laman ini"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Buka dari laman apa saja ke laman dokumentasi untuk view yang menghasilkan "
-"laman tersebut."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Tampilkan ID objek"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Tampilkan tipe-konten dan ID unik untuk laman yang mewakili sebuah objek "
-"tunggal."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Edit objek ini (pada jendela ini)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Buka laman admin pada laman yang mewakili sebuah objek tunggal."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Edit objek ini (pada jendela baru)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Sama seperti di atas, tetapi laman halaman admin di jendela baru."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Tag"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filter"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Model"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "View"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Templat"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (nilai True atau False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Jenis bidang: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/is/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/is/LC_MESSAGES/django.mo
deleted file mode 100644
index f092c23..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/is/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/is/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/is/LC_MESSAGES/django.po
deleted file mode 100644
index 885114c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/is/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,380 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Hafsteinn Einarsson <haffi67@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/"
-"language/is/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: is\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "merki:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "sía:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "skoða:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Forrit %r fannst ekki"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Líkanið %(model_name)r finnst ekki í forritinu %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "tengdi `%(app_label)s.%(data_type)s` hluturinn"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "líkan:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "tengdir `%(app_label)s.%(object_name)s` hlutir"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "allt %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "fjöldi af %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s virðist ekki vera urlpattern hlutur"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Heim"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Skjölun"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bókamerklar"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Skjölunarbókamerklar"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Til að setja upp bókamerkil (Bookmarklet) þarftu að draga "
-"tengilinn\n"
-"í bókamerkjareinina þína eða hægrismella á tengilinn og bæta honum við "
-"bókamerkin þín\n"
-"Nú getur þú notað bókamerkilinn frá hvaða síðu sem er innan vefjarins. "
-"Athugaðu að sumir\n"
-"þessara bókamerkla krefjast þess að þú sért að skoða vefinn frá tölvu sem "
-"er\n"
-"skráð sem \"internal\" (hafðu samband við kerfisstjórann ef þú ert óviss "
-"hvort tölvan þín er \"internal\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Skjölun þessarar síðu"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Sendir þig af hvaða síðu sem er á skjölun þess framsetningarlags sem myndar "
-"hana."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Sýna kenni hlutar"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "Sýnir efnistag og sérkenni síða sem gefa tiltekna mynd af stökum hlut."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Breyta þessum hlut (í þessum glugga)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Stekkur á stjórnunarsíðuna fyrir þær síður sem gefa tiltekna mynd af stökum "
-"hlut."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Breyta þessum hlut (nýr gluggi)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Eins og að ofan en opnar stjórnunarsíðuna í nýjum glugga."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Tögg"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Síur"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Módel"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Ásýndir"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Sniðmát"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boole-gildi (True eða False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Reitur af gerð: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/it/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/it/LC_MESSAGES/django.mo
deleted file mode 100644
index ebfbe83..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/it/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/it/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/it/LC_MESSAGES/django.po
deleted file mode 100644
index 25fe405..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/it/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,400 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Flavio Curella <flavio.curella@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-10-23 17:03+0000\n"
-"Last-Translator: Flavio Curella <flavio.curella@gmail.com>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tag:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtro:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "view:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Appl. %r non trovata"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modello %(model_name)r non trovato nell'appl. %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "l'oggetto `%(app_label)s.%(data_type)s` collegato"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "modello:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "oggetti `%(app_label)s.%(object_name)s` collegati"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "tutti %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "numero di %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "Attributi su %s oggetti"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s non sembra essere un oggetto urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Pagina iniziale"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Documentazione"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklet"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Bookmarklet alla documentazione"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Per installare i bookmarklet, trascina il link sulla "
-"barra \n"
-"dei bookmark, o clicca il link con il tasto destro e aggiungilo ai "
-"bookmark.\n"
-"Potrai poi scegliere un bookmarklet in qualsiasi pagina del sito.\n"
-"Nota che alcuni di questi bookmarklet richiedono l'accesso al sito tramite "
-"un\n"
-"computer designato come \"interno\" (chiedi al tuo amministratore di \n"
-"sistema se non sei sicuro che il tuo computer sia \"interno\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Documentazione per questa pagina"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Porta da qualsiasi pagina alla documentazione della view che genera quella "
-"pagina."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Mostra l'ID dell'oggetto"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Mostra il content-type e l'ID univoco di pagine che rappresentano un singolo "
-"oggetto."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Modifica quest'oggetto (nella finestra attuale)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Porta alla pagina amministrativa di pagine che rappresentano un singolo "
-"oggetto."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Modifica quest'oggetto (in una nuova finestra)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"Come sopra, ma apre la pagina di amministrazione in una nuova finestra."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Tag"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Lista di tutti i template tags e delle loro funzioni."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtri"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"I Filtri sono azioni che possono essere applicate alle variabili all'interno "
-"di un Template per alterarne l'output."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modelli"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"I Modelli sono descrizioni di tutti gli oggetti nel sistema e dei campi ad "
-"essi associati. Ogni modello ha una lista di campi accessibili come "
-"variabili nel template."
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "View"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"Ogni pagina sul sito pubblico è generata da una View. La View definisce "
-"quale Template è usato per generare la pagina e quali oggetti sono "
-"disponibili in quel Template."
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-"Strumenti per il tuo browser per accedere velocemente a funzionalità "
-"dell'admin."
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Installa docutils, per favore"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"Il sistema di documentazione dell'admin richiede la libreria Python <a href="
-"\"%(link)s\">docutils</a>"
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"Chiedi ai tuoi amministratori di installare <a href=\"%(link)s\">docutils</"
-"a>."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Modello: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Campo"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Tipo"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Descrizione"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Torna alla documentazione sul Modello"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Documentazione Modello"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Gruppi del Modello"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Template"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Template: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Template: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "Percorso di ricerca per il template \"%(name)s\" su %(grouper)s:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(non esiste)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Torna alla Documentazione"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Filtri Template"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Documentazione del filtro template"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "Filtri inclusi"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"Per usare questi filtri, inserisci <code>%(code)s</code> nel tuo template "
-"prima di usare il filtro."
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Tag Template"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Documentazione del Tag Template"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "Tag inclusi"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"Per usare questi tag, inserisci <code>%(code)s</code> nel tuo template prima "
-"di usare il tag."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "View: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Contesto:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Template:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "Torna alla documentazione sulle View"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "Documentazione View"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Vai al sito"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "View per URL su %(name)s"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "Funzione View: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Booleano (True o False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Campo di tipo: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ja/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ja/LC_MESSAGES/django.mo
deleted file mode 100644
index 235c12a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ja/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ja/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ja/LC_MESSAGES/django.po
deleted file mode 100644
index 8743c78..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ja/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,387 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Fandekasp <lemaire.adrien@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Shinya Okano <tokibito@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-10-30 16:23+0000\n"
-"Last-Translator: Shinya Okano <tokibito@gmail.com>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/"
-"ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "タグ"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "フィルター"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "ビュー"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "アプリケーション %r が見つかりません"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-"モデル %(model_name)r が %(app_label)r アプリケーションに見つかりません"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "`%(app_label)s.%(data_type)s` (関連オブジェクト)"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "モデル :"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "`%(app_label)s.%(object_name)s` (関連オブジェクト)"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "全ての %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s の数"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "%s オブジェクトの属性"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s はurlpatternオブジェクトでは無いようです"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "ホーム"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "ドキュメント"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "ブックマークレット"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "ドキュメントへのブックマークレット"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">ブックマークレットをインストールするには、リンクをブック"
-"マークツールバーにドラッグするか、\n"
-"リンクを右クリックしてブックマークに追加してください。これで\n"
-"サイトのどのページからでもブックマークレットを選択可能になりました。\n"
-"ブックマークレットによっては、内部ネットワークにあるコンピューターからこのサ"
-"イトを\n"
-"参照していなければならないことがあります。内部ネットワークにあるかどうか不明"
-"な場合は、システム管理者に確認してください。</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "このページのドキュメント"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "各ページから、ページを生成したビューのドキュメントにジャンプします。"
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "オブジェクト ID を表示"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"単一のオブジェクトを表示するページのコンテンツタイプと一意な IDを表示します。"
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "オブジェクトを (現在のウィンドウで) 編集"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "単一のオブジェクトを表示するページの管理ページへジャンプします。"
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "オブジェクトを (新しいウィンドウで) 編集"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "上と同じですが、新しいウィンドウで管理ページを開きます。"
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "タグ"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "すべてのテンプレートタグとその機能の一覧です。"
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "フィルター"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"フィルタは、テンプレート内の変数に適用して出力を変更するためのアクションで"
-"す。"
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "モデル"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "ビュー"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "docutilsをインストールして下さい"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"管理ドキュメントシステムには、Pythonの <a href=\"%(link)s\">docutils</a> ライ"
-"ブラリが必要です。"
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"管理者に <a href=\"%(link)s\">docutils</a> のインストールについて問い合せて下"
-"さい。"
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "モデル: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "フィールド"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "型"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "説明"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "モデルドキュメントに戻る"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "モデルドキュメント"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "モデルグループ"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "テンプレート"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "テンプレート: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "テンプレート: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(存在しません)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "ドキュメントに戻る"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "テンプレートフィルタ"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "テンプレートフィルタドキュメント"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "組み込みフィルタ"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"これらのフィルタを使用するには、テンプレート内でのフィルタの使用箇所より前に "
-"<code>%(code)s</code> を記述してください。"
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "テンプレートタグ"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "テンプレートタグドキュメント"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "組み込みタグ"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"これらのタグを使用するためには、タグの使用箇所より前に <code>%(code)s</code> "
-"をテンプレート内に記述します。"
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "ビュー: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "コンテキスト:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "テンプレート:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "ビュードキュメントに戻る"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "ビュードキュメント"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "サイトへ移動"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "%(name)s のURLによるビュー"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "ビュー関数: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "ブール値 (真: True または偽: False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "フィールドの型: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ka/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ka/LC_MESSAGES/django.mo
deleted file mode 100644
index d7e76a6..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ka/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ka/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ka/LC_MESSAGES/django.po
deleted file mode 100644
index c3b34f6..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ka/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,377 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Bouatchidzé <a@anbz.net>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/"
-"ka/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ka\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "ტეგი:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "ფილტრი:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "წარმოდგენა:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "აპლიკაცია %r ვერ მოიძებნა"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "მოდელი %(model_name)r ვერ მოიძებნა აპლიკაციაში %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "`%(app_label)s.%(data_type)s` დაკავშირებული ობიექტი"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "მოდელი:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "`%(app_label)s.%(object_name)s` დაკავშირებული ობიექტები"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "ყველა %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s - რაოდენობა"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s არ არის urlpattern-ის შესაბამისი ობიექტი"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "საწყისი გვერდი"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "დოკუმენტაცია"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "სანიშნები"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "დოკუმენტაციის სანიშნები"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">სანიშნების დასაყენებლად გადაათრიეთ ბმული თქვენი "
-"სანიშნების\n"
-"პანელზე, ან დააწკაპეთ ბმულზე მარჯვენა ღილაკით და დაამატეთ იგი სანიშნებში.\n"
-"ამის შემდეგ თქვენ შეძლებთ სანიშნის არჩევას საიტის ნებისმიერი გვერდიდან.\n"
-"გაითვალისწინეთ, რომ ზოგიერთი სანიშნის მოხმარებისათვის საჭიროა, რომ თქვენ\n"
-"იყოთ შესული ამ საიტზე ე.წ. \"შიდა\" კომპიუტერიდან (შეუთანხმდით თქვენს\n"
-"ადმინისტრატორს, თუ არ ხართ დარწმუნებული, რომ თქვენი კომპიუტერი არის\n"
-"\"შიდა\" კომპიუტერი).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "ამ გვერდის დოკუმენტაცია"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"გადასვლა ნებისმიერი გვერდიდან იმ წარმოდგენის დოკუმენტაციაზე, რომელიც ამ "
-"გვერდს აგენერირებს."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "ობიექტის ID-ის ჩვენება"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"ერთი ობიექტის ამსახველი გვერდის content-type-ის და უნიკალური ID-ის ჩვენება."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "შევცვალოთ ეს ობიექტი (იმავე ფანჯარაში)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "ერთი ობიექტის ამსახველი გვერდების ადმინისტრირებაზე გადასვლა."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "შევცვალოთ ეს ობიექტი (ახალ ფანჯარაში)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "იგივე, ოღონდ ხსნის ადმინისტრირების გვერდს ახალ ფანჯარაში."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "ტეგები"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "ფილტრები"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "მოდელები"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "წარმოდგენები"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "შაბლონები"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "ლოგიკური (True ან False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "ველის ტიპი: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/kk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/kk/LC_MESSAGES/django.mo
deleted file mode 100644
index dbc065c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/kk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/kk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/kk/LC_MESSAGES/django.po
deleted file mode 100644
index df7df6f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/kk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,365 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Nurlan Rakhimzhanov <nurlan.rakhimzhanov@gmail.com>, 2011
-# yun_man_ger <germanilyin@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/"
-"kk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kk\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "тег:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "сүзгіш:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "көрініс:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "%r app табылмады"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "%(app_label)r app ішінен %(model_name)r үлгісі табылмады"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "байланысты `%(app_label)s.%(data_type)s` объект"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "модель:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "байланысты `%(app_label)s.%(object_name)s` объекттер"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "барлық %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s саны"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s urlpattern объектке ұқсамайды"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Негізгі"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Документация"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Букмарклеттер"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Құжаттама букмарклеттері"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Бұл бетке арналған документация"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "нысан ID'ді көрсет"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Бұл объектты өзгерт (ағымдағы терезеде)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Бұл объектты өзгерт (жаңа терезеде)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Үстіндегідей, бірақ admin бетті жаңа терезеде ашады."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (True немесе False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Жолақтын түрі: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/km/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/km/LC_MESSAGES/django.mo
deleted file mode 100644
index 983e35c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/km/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/km/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/km/LC_MESSAGES/django.po
deleted file mode 100644
index 20569ee..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/km/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,371 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Khmer (http://www.transifex.com/projects/p/django/language/"
-"km/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: km\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "ប្រភេទ:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "ពាក្យស្វែងរក"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "មើល"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "ស្វែងរក App %r មិនឃើញ ។"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr ""
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr ""
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "ទាំងអស់ %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "ចំនួន​នៃ​%s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ហាក់បីដូចជា URL ដែល​ត្រឹមត្រូវទេ"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "គេហទំព័រ"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "ឯកសារ"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "កំរងចំណាំ"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "កំរងចំណាំអំពីឯកសារ"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">ដើម្បីតំលើងកំរងចំណាំ សូមទាញយកអត្ថបទភ្ជាប់ទៅ​កាន់​"
-"របាឧបករណ៍ ឬក៏ចុចខាងស្តាំលើអត្ថបទភ្ជាប់ហើយ​បញ្ជូលទៅក្នុងកំរងចំណាំរបស់លោកអ្នក។</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "ឯកសារសំរាប់ទំព័រនេះ"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "បង្ហាញលេខសំគាល់កម្មវិធី"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "កែប្រែកម្មវិធីនេះ(វីនដូវកំពុងប្រើ)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "បង្វែរទៅកាន់​ ទំព័រគ្រប់គ្រង សំរាប់ទំព័រណាដែលតំណាងអោយកម្មវិធីតែមួយ។"
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "កែប្រែកម្មវិធីនេះ(វីនដូវថ្មី)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "ដូចខាងលើ តែបើកនៅទំព័រវីនដូវថ្មី"
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (អាច​ជា True រឺ False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/kn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/kn/LC_MESSAGES/django.mo
deleted file mode 100644
index fb6a2d5..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/kn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/kn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/kn/LC_MESSAGES/django.po
deleted file mode 100644
index e2b17f4..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/kn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,375 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/"
-"kn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kn\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "ಟ್ಯಾಗ್:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "ಸೋಸಕ:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "ನೋಟ:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "%r ಅನ್ವಯಾಂಶ ಸಿಗಲಿಲ್ಲ"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr ""
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "ಮಾಡೆಲ್:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr ""
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "ಎಲ್ಲಾ %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s ಗಳ ಸಂಖ್ಯೆ"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s URL ಸ್ವರೂಪದ್ದಾಗಿ ತೋರುವದಿಲ್ಲ."
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "ಪ್ರಾರಂಭಸ್ಥಳ(ಮನೆ)"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "ವಿವರಮಾಹಿತಿ"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "ಚಿಕ್ಕ ಪುಟಗುರುತುಗಳು"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "ಮಾಹಿತಿಯ ಚಿಕ್ಕ ಪುಟಗುರುತುಗಳು"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">ಸಣ್ಣ್ಪುಟಗುರುತುಗಳನ್ನು ಅನುಸ್ಥಾಪಿಸಲು ಕೊಂಡಿಯನ್ನು ಪುಟಗುರುತು ಉಪಕರಣಪಟ್ಟಿ"
-"(ಟೂಲ್ ಬಾರ್)ಕಡೆಗೆ ಎಳೆದೊಯ್ಯಿರಿ,\n"
-" ಅಥವಾ ಕೊಂಡಿಯ ಮೇಲೆ ಮೂಷಿಕ(ಮೌಸ್)ದ ಬಲಬಟನ್ನನ್ನು ಒತ್ತಿ ಪುಟಗುರುತುಗಳಿಗೆ ಸೇರಿಸಿಕೊಳ್ಳಿ. ಈಗ \n"
-" ನೀವು ಸಣ್ಣಪುಟಗುರುತುಗಳನ್ನು ತಾಣದ ಯಾವ ಪುಟದಿಂದ ಬೇಕಾದರೂ ಆಯ್ಕೆಮಾಡಿಕೊಳ್ಳಬಹುದು.\n"
-"ನೆನಪಿರಲಿ, ಕೆಲವು ಸಣ್ಣಪುಟಗುರುತುಗಳಿಗೆ ನೀವು ಈ ತಾಣವನ್ನು ಆಂತರಿಕ (\"internal\") ಎಂದು "
-"ಸೂಚಿತವಾಗಿರುವ ಗಣಕದಿಂದ ವೀಕ್ಷಿಸಬೇಕಾಗುತ್ತದೆ.\n"
-"( ನಿಮ್ಮ ಗಣಕವು \"internal\" ಹೌದೇ ಅಲ್ಲವೇ ಎಂದು ಗೊತ್ತಿಲ್ಲದಿದ್ದರೆ , ಗಣಕದ ಆಡಳಿತಗಾರರನ್ನು "
-"ಕೇಳಿರಿ).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "ಈ ಪುಟದ ಬಗೆಗಿನ ಮಾಹಿತಿ"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"ನಿಮ್ಮನ್ನು ಯಾವುದೇ ಪುಟದಿಂದ ಆ ಪುಟವನ್ನು ಸೃಷ್ಟಿಸುವ ನೋಟದ ಮಾಹಿತಿಪುಟಕ್ಕೆ ಕೊಂಡೊಯ್ಯುವದು"
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "ವಸ್ತುವಿನ ಐಡಿ ತೋರಿಸಿ"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"ಏಕೈಕ ವಸ್ತುವನ್ನು ಪ್ರತಿನಿಧಿಸುವ ಪುಟಗಳ ವಿಶಿಷ್ಠ ಐಡಿ ಮತ್ತು ಒಳವಿಷಯಬಗೆಯನ್ನು ತೋರಿಸುತ್ತದೆ."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "ಈ ವಸ್ತುವನ್ನು ಬದಲಿಸಿ(ಈಗಿನ ಕಿಟಕಿಯಲ್ಲಿ)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "ಏಕೈಕ ವಸ್ತುವನ್ನು ಪ್ರತಿನಿಧಿಸುವ ಪುಟಗಳಿಗಾಗಿ ಆಡಳಿತಪುಟಕ್ಕೆ ಒಯ್ಯುತ್ತದೆ"
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "ಈ ವಸ್ತುವನ್ನು ಬದಲಿಸಿ(ಹೊಸ ಕಿಟಕಿಯಲ್ಲಿ)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "ಮೇಲಿನಂತೆ, ಆದರೆ ಆಡಳಿತಪುಟವನ್ನು ಹೊಸ ಕಿಟಕಿಯಲ್ಲಿ ತೆರೆಯುವದು."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "ಬೂಲಿಯನ್ (ಹೌದು ಅಥವ ಅಲ್ಲ)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "ಕ್ಷೇತ್ರದ ಬಗೆ: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ko/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ko/LC_MESSAGES/django.mo
deleted file mode 100644
index 9eba242..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ko/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ko/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ko/LC_MESSAGES/django.po
deleted file mode 100644
index 205fb69..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ko/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,373 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/"
-"ko/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ko\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "태그:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "필터:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "뷰:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "어플리케이션 %r (이)가 없습니다."
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "모델 %(model_name)r (이)가 어플리케이션 %(app_label)r 에 없습니다."
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "`%(app_label)s.%(data_type)s` 관련 오브젝트"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "모델:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "`%(app_label)s.%(object_name)s` 관련 오브젝트(들)"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "모든 %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s 의 수"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s (은)는 url 패턴의 오브젝트가 아닙니다."
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "홈"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "문서"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "북마크릿"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "문서 북마크릿"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\"> 북마크릿을 설치하시려면 링크를 북마크 툴바로 드래그 하거"
-"나,\n"
-"오른쪽 클릭으로 해당 링크를 북마크에 추가하세요.\n"
-"이제 사이트 내의 모든 페이지에서 북마크릿 선택이 가능합니다.\n"
-"북마크릿에 따라 내부 네트워크 상의 컴퓨터로부터 이 사이트를 참조해야하는 경우"
-"가 있습니다.\n"
-"(내부 네트워크가 있는지 불명확한 경우 시스템 관리자에게 확인하시기 바랍니다.)"
-"</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "이 페이지의 문서"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "각 페이지로에서 해당 페이지를 생성한 뷰의 문서로 갑니다."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "오브젝트 아이디 표시"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "단일 오브젝트 페이지의 고유 아이디와 컨텐츠 타입을 표시합니다."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "오브젝트 편집(현재 창)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "단일 오브젝트 페이지의 관리 페이지로 이동"
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "오브젝트 편집(새로운 창)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "위와 동일하며, 새로운 창에서 관리 페이지를 엽니다."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "boolean(참 또는 거짓)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "%(field_type)s 형식 필드"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/lt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/lt/LC_MESSAGES/django.mo
deleted file mode 100644
index 208a92b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/lt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/lt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/lt/LC_MESSAGES/django.po
deleted file mode 100644
index d8eee2b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/lt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,380 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# lauris <lauris@runbox.com>, 2011
-# Simonas Kazlauskas <simonas@kazlauskas.me>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/"
-"language/lt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lt\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
-"%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "žyme:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtras:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "vaizdas:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Programa %r nerasta"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modelis %(model_name)r programoje %(app_label)r nerastas"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "susijęs `%(app_label)s.%(data_type)s` objektas"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "modelis:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "susiję`%(app_label)s.%(object_name)s` objektai"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "visi %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s skaičius"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s neatrodo kaip urlpattern objektas"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Pradinis"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentacija"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Greitosios žymės"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Doumentacijos greitosios žymės"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Greitųjų žymių įdiegimui, nutempkite nuorodą į greitųjų "
-"žymių\n"
-"juostą, arba spauskite dešinį pelės klavišą ir pridėkite prie greitųjų "
-"žymių. Dabar galite\n"
-"pasirinkti greitąją žymę iš bet kurio saito puslapio. Pastebėjimas, kad "
-"keletas iš šių\n"
-"greitųjų žymių reikalauja, kad saitas būtų žiūrimas iš vidinio kompiuterio \n"
-"(pasitarkite su administratorium, jei nežinai ar tavo kompiuteris yra "
-"vidinis).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Šio puslapio dokumentacija"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Pereina iš bet kurio puslapio į jo view funkcijos dokumentaciją, kuri "
-"sukūria tą puslapį"
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Parodyti objekto ID"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Parodyti content-type ir unikalų puslapių ID, kuris parodo vieną objektą."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Redaguoti šį objektą (einamajame lange)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Pereina į administravimo puslapį, kuris parodo vieną objektą."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Redaguoti šį objektą (naujame lange)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Kaip ir viršuje, bet administravimo puslapį atidaro naujame lange."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Gairės"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtrai"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modeliai"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Rodiniai"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Šablonai"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Loginė reikšmė (True arba False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Lauko tipas: %(field_type)s "
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/lv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/lv/LC_MESSAGES/django.mo
deleted file mode 100644
index 15c6a4f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/lv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/lv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/lv/LC_MESSAGES/django.po
deleted file mode 100644
index d3878bd..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/lv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,376 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/"
-"lv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lv\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tags:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtrs:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "skats:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Lietotne %r netika atrasta"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modelis %(model_name)r lietotnē %(app_label)r nav atrasts"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "saistītais `%(app_label)s.%(data_type)s` objekts"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "modelis:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "saistītie `%(app_label)s.%(object_name)s` objekti"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "visi %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s skaits"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s nav urlpattern objekts"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Sākums"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentācija"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Grāmatzīmes"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Dokumentācijas grāmatzīmes"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Lai uzstādītu grāmatzīmes, aizvelciet saiti uz pārlūka "
-"grāmatzīmju\n"
-"rīkjoslu vai arī veiciet labo klikšķi un pievienojiet to savām grāmatzīmēm. "
-"Tagad varat \n"
-"izvēlēties grāmatzīmi no jebkuras lapas šajā mājaslapā. Ievērojiet, ka, lai "
-"lietotu dažas no šīm\n"
-"grāmatzīmēm, jums jālieto dators, kura IP adrese reģistrēta kā \"iekšēja\"\n"
-"(ja ir neskaidrības, vai dators ir \"iekšējais\", runājiet ar sistēmas "
-"administratoru).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Dokumentācija šai lapai"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Pārvieto no jebkuras lapas uz tā skata dokumentāciju, kas ģenerē šo lapu."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Parādīt objekta ID"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "Parāda content-type un unikālo ID lapām, kas atbilst vienam objektam."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Labot šo objektu (pašreizējā logā)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Pārvieto uz admininstrācijas lapu tām lapām, kas attēlo vienu objektu."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Labot šo objektu (jaunā logā)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Tāpat kā augstāk, tikai atver administrācijas lapu jaunā logā."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (True vai False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Lauks ar tipu: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/mk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/mk/LC_MESSAGES/django.mo
deleted file mode 100644
index 0e52de5..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/mk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/mk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/mk/LC_MESSAGES/django.po
deleted file mode 100644
index 7d55e41..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/mk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,398 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# vvangelovski <vvangelovski@gmail.com>, 2013
-# vvangelovski <vvangelovski@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-09-24 08:44+0000\n"
-"Last-Translator: vvangelovski <vvangelovski@gmail.com>\n"
-"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/"
-"language/mk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mk\n"
-"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "таг:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "филтер:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "поглед:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Не е најдена апликацијата %r"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Моделот %(model_name)r не е најден во апликацијата %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "поврзаниот `%(app_label)s.%(data_type)s` објект"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "модел:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "поврзани `%(app_label)s.%(object_name)s` објекти"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "сите %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "број на %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "Атрибути на %s објекти"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s не изгледа дека е url објект"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Дома"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Документација"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Обележувачи"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Обележувачи на документација"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">За да инсталирате обележувачи, влечете ја врската до "
-"вашата\n"
-"лента со алатки, или кликнете со десното копче и додадете го во вашите \n"
-"обележувачи. Сега може да го изберете обележувачот од било која страница "
-"на \n"
-"сајтот. Имајте на ум дека за некои од овие обележувачи е потребно да го "
-"гледате \n"
-"сајтот од компјутер кој е означен како „внатрешен“ (разговарајте со вашиот \n"
-"администратор ако не сте сигурни).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Документација за оваа страница"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Ве носи од било која страница од документацијата до погледот кој ја генерира "
-"таа страница."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Прикажи идентификационен број на објектот"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Го прикажува типот на содржината и уникатниот идентификационен број за "
-"страници кои претставуваат единечен објект."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Уреди го овој објект (во овој прозорец)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Скокнува до админ страницата за страници кои претставуваат единечен објект."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Уреди го овој објект (во нов прозорец)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Како погоре, но ја отвара админ страницата во нов прозорец."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Тагови"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Листа на сите шаблонски тагови и нивните функции."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Филтри"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"Филтри се акции кои може да се применат на променливи во шаблон за менување "
-"на излезниот резултат."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Модели"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"Модели се описи на сите објекти во системот и нивните полиња. Секој модел "
-"има листа на полиња до кои може да се пристапи со променливи во шаблони."
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Погледи (вјуа)"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"Секоја страна на јавниот сајт се генерира од поглед. Подгледот дефинира кој "
-"шаблон се користи за да се генерира страната и кој објекти се достапни за "
-"тој шаблон."
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-"Алатки за вашиот веб прегледувач за брз пристап до администраторските "
-"функционалности."
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Ве молиме инсталирајте docutils"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"На админ документацискиот систем му е потребна <a href=\"%(link)s"
-"\">docutils</a> Python библиотеката."
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"Ве молиме побарајте од вашите администратори да инсталираат <a href="
-"\"%(link)s\">docutils</a>."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Модел %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Поле"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Тип"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Опис"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Назад до документација за модели."
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Документација за модели"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Групи на модели"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Шаблони (темплејти)"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Шаблон: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Шаблон: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "Пат за пребарување на шаблон %(name)s\" на %(grouper)s:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(не постои)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Назад во документација"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Шаблонски филтри"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Документација за шаблонски филтер"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "Вградени филтри"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"За да ги користите овие филтри, внесете <code>%(code)s</code> во вашиот "
-"шаблон пред да го користите филтерот."
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Шаблонски тагови"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Документација за шаблонски таг"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "Вградени тагови"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"За да ги користите овие тагови, внесете <code>%(code)s</code> во вашиот "
-"шаблон пред да го користите тагот."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "Поглед: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Контекст:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Шаблони:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "Назад до документација за погледи"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "Документација за поглед"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Скокни до сајтот"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "Погледи по URL на %(name)s"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "Функција на поглед: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Логичка (или точно или неточно)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Поле од тип: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ml/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ml/LC_MESSAGES/django.mo
deleted file mode 100644
index c198476..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ml/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ml/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ml/LC_MESSAGES/django.po
deleted file mode 100644
index e03627c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ml/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,375 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Rajeesh Nair <rajeeshrnair@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/"
-"language/ml/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ml\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "ടാഗ്:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "അരിപ്പ:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "വ്യൂ"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "%r എന്ന App കണ്ടില്ല."
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "%(app_label)r എന്ന Appല്‍ %(model_name)r എന്ന മാത്രുക കണ്ടില്ല."
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "ബന്ധപ്പെട്ട `%(app_label)s.%(data_type)s` വസ്തു"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "മാത്രുക:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "ബന്ധപ്പെട്ട `%(app_label)s.%(object_name)s` വസ്തുക്കള്‍"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "%s എല്ലാം"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%sന്റെ എണ്ണം"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s വിലാസ മാത്രുക (urlpattern object) ആണെന്ന് തോന്നുന്നില്ല."
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "പൂമുഖം"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "സഹായക്കുറിപ്പുകള്‍"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "ബുക്ക് മാര്‍ക്കുകള്‍"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "സഹായക്കുറിപ്പുകളുടെ ബുക്ക്മാര്‍ക്കുകള്‍"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">ബുക്ക്മാര്‍ക്ക്ലെറ്റുകള്‍ ഇന്‍സ്റ്റാള്‍ ചെയ്യാന്‍, ലിങ്കിനെ നിങ്ങളുടെ ബുക്ക്മാര്‍ക് "
-"ടൂള്‍ബാറിലേക്ക് \n"
-"വലിച്ചിടുകയോ, ലിങ്കിന്‍മേല്‍ റൈറ്റ്ക്ളിക് ചെയ്ത് ബുക്ക്മാര്‍ക്കായി ചേര്‍ക്കുകയോ ചെയ്യുക. ഇനി സൈറ്റിലെ "
-"ഏതു പേജില്‍ നിന്നും\n"
-" ഈ ബുക്ക്മാര്ക് തെരഞ്ഞെടുക്കാം. ചില ബുക്ക്മാര്‍ക്കുകള്‍ ഇന്റേണല്‍ ആയ കമ്പ്യൂട്ടറില്‍ നിന്നേ ലഭ്യമാവൂ എന്നു "
-"ശ്രദ്ധിക്കണം.\n"
-"നിങ്ങളുടെ കംപ്യൂട്ടര്‍ അത്തരത്തില്‍ പെട്ടതാണോ എന്നറിയാന്‍ സിസ്റ്റം അഡ്മിനിസ്ട്രേട്ടറെ ബന്ധപ്പെടുക.</"
-"p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "ഈ പേജിന്റെ സഹായക്കുറിപ്പുകള്‍"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "ഏതു പേജില്‍ നിന്നും അതിന്റെ ഉദ്ഭവമായ വ്യൂവിന്റെ സഹായക്കുറിപ്പിലേക്കു ചാടാന്‍"
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "വസ്തുവിന്റെ ഐഡി കാണിക്കുക."
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"ഒറ്റ വസ്തുവിനെ പ്രതിനിധീകരിക്കുന്ന പേജുകളുടെ ഉള്ളടക്കത്തിന്റെ തരവും തനതായ IDയും കാണിക്കുന്നു."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "ഈ വസ്തുവില് മാറ്റം വരുത്തുക (ഇതേ വിന്‍ഡോ)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "ഒറ്റ വസ്തുവിനെ പ്രതിനിധീകരിക്കുന്ന പേജുകള്‍ക്കുള്ള അഡ്മിന്‍ പേജിലേക്ക് ചാടുന്നു."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "ഈ വസ്തുവില് മാറ്റം വരുത്തുക (പുതിയ വിന്‍ഡോ)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "മുകളിലേതു പോലെ, പക്ഷെ, അഡ്മിന്‍ പേജ് പുതിയ വിന്ഡോവിലാണ് തുറക്കുക."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "ടാഗുകള്‍"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "ഫില്‍ട്ടറുകള്‍"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "മോഡലുകള്‍"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "വ്യൂകള്‍"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "ടെമ്പ്‌ലേറ്റുകള്‍"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "ശരിയോ തെറ്റോ (True അഥവാ False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "%(field_type)s എന്ന തരത്തിലുള്ള കളം (ഫീല്‍ഡ്)"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/mn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/mn/LC_MESSAGES/django.mo
deleted file mode 100644
index d329a9b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/mn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/mn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/mn/LC_MESSAGES/django.po
deleted file mode 100644
index f71e5a4..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/mn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,379 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# zorig <zorig_ezd@yahoo.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-11-30 19:00+0000\n"
-"Last-Translator: zorig <zorig_ezd@yahoo.com>\n"
-"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/"
-"language/mn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "шошго:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "шүүлтүүр:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "харах:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "%r програм олдсонгүй"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr " %(app_label)r програмд %(model_name)r модел олдсонгүй"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "холбогдох `%(app_label)s.%(data_type)s`объект"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "модел:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "холбогдох `%(app_label)s.%(object_name)s` объектууд"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "бүх %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s-ийн тоо"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr " %s объектийн нэмэлт утга"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s нь url хэлбэрийн объект биш байна"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Админ эхлэл"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Баримтжуулалт"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklet-ууд"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Мookmarklet-уудын баримтжуулалт"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Bookmarklet суулгахын тулд холбоосыг bookmark-ийн\n"
-" хэрэгслийн мөрт аваачих буюу холбоосон дээр хулганы баруун\n"
-" товчлуураар дарж bookmark-даа нэмнэ. Ингэснээр та сайтын аль ч\n"
-" хуудаснаас bookmarklet-ээ сонгох боломжтой болно. Зарим\n"
-" bookmarklet-ийн хувьд та \"дотоод\" гэж тодорхойлогдсон компьютерээс\n"
-" сайт руу орох шаардлагатай болдог (компьютер тань \"дотоод\" мөн\n"
-" эсэхийг мэдэхгүй байгаа бол системийн удирдлагаасаа асууна уу).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Энэ хуудасны баримтжуулалт"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Таныг ямар ч хамаагүй хуудаснаас тухайн хуудсыг гаргаж байгаа "
-"баримтжуулалтанд аваачна."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Объектийн ID-ийг харуулах"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Нэг объект харуулж буй хуудаснуудын агуулгын төрөл болоод давтагдахгүй ID-"
-"ийг харуулна."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Энэ объектийг засварлах (одоо хэрэглэж буй цонх)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Нэг объект харуулж буй хуудаснуудын удирдлагын хуудсанд аваачна."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Энэ объектийг засварлах (шинэ цонх)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Дээрхийн нэгэн адил ч удирдлагын хуудсыг шинэ цонхонд нээнэ."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Таг-ууд"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Бүх загваруудын шошго мөн тэдний функц"
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Шүүлтүүрүүд"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Моделууд"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "View-үүд"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Модель: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Талбар"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Төрөл"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Товчхон"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Моделийн баримтруу буцах"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Моделийн баримт"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Загварууд"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Загвар: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Загвар: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(Оршдоггүй)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Баримтруу буцах"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Загвар шүүлт"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Загвар шүүлтийн баримт"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Загвар шошго"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"Энэ шошгыг ашиглахын тулд үүнийг <code>%(code)s</code> шошгоны өмнө загвар "
-"дотроо бич"
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "Харагдац: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Уул үг: "
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Загварууд:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "Харагдац баримтруу буцах"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "Харагдац баримт"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Сайтруу "
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "%(name)s холбоос харагдац"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "Харагдац функц: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (Үнэн худлын аль нэг нь)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Талбарийн төрөл нь : %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/my/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/my/LC_MESSAGES/django.mo
deleted file mode 100644
index d66d020..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/my/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/my/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/my/LC_MESSAGES/django.po
deleted file mode 100644
index 4e3e7bf..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/my/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,364 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Yhal Htet Aung <jumoun@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Burmese (http://www.transifex.com/projects/p/django/language/"
-"my/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: my\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "အမည်:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "စီစစ်မှု:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "ကြည့်ရှု:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "%r အပ်ပရိုဂရမ်ရှာမတွေ့"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "%(app_label)r အပ်ပရိုဂရမ်တွင် %(model_name)r မော်ဒယ်ရှာမတွေ့"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "ဆက်နွယ်သော `%(app_label)s.%(data_type)s` အရာဝတ္ထု"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "မော်ဒယ်:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "ဆက်နွယ်သော `%(app_label)s.%(object_name)s` အရာဝတ္ထုများ"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "%s အားလံုး"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s အရေအတွက်"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "ပင်မ"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "စာရွက်စာတမ်း"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "အမည်များ"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "စီစစ်မှုများ"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "မော်ဒယ်များ"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "ကြည့်ရှုခြင်းများ"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "ပံုစံပြားများ"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr ""
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/nb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/nb/LC_MESSAGES/django.mo
deleted file mode 100644
index 41087fe..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/nb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/nb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/nb/LC_MESSAGES/django.po
deleted file mode 100644
index 448c59e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/nb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,392 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jonklo <jonklo@gmail.com>, 2013
-# jonklo <jonklo@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-09-02 17:00+0000\n"
-"Last-Translator: jonklo <jonklo@gmail.com>\n"
-"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/"
-"language/nb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tag:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filter:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "view:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Fant ikke applikasjonen %r"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Fant ikke modellen %(model_name)r i applikasjonen %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "det relaterte `%(app_label)s.%(data_type)s`-objektet"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "modell:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "relaterte `%(app_label)s.%(object_name)s`-objekter"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "alle %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "antall %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "Felter på %s-objekter"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ser ikke ut til å være et urlpattern-objekt"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Hjem"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentasjon"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bokmerker"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Dokumentasjonsbokmerker"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">For å installere bokmerker, dra linken til verktøylinja\n"
-"for bokmerker, eller høyreklikk og legg til i bokmerker. Nå kan du du velge\n"
-"bokmerket fra hvilken som helst side på nettstedet. Noen av disse\n"
-"bokmerkene krever at datamaskinen du bruker er markert som \"intern\"\n"
-"(kontakt din systemadministrator hvis du er usikker på om maskinen din er "
-"\"intern\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Dokumentasjon for denne siden"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Hopp fra hvilken som helst side til dokumentasjonen for visningsfunksjonen "
-"som genererte den siden."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Vis objekt-ID"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Viser \"content-type\" og en unik ID for sider som representerer et enkelt "
-"objekt."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Rediger dette objektet (nåværende vindu)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Hopper til administrasjonssiden for sider som representerer et enkelt objekt."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Rediger dette objektet (nytt vindu)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Samme som over, men åpner administrasjonssiden i et nytt vindu."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Tags"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Liste over alle mal-taggene og deres funksjoner."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filter"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"Filtre er handlinger som kan brukes på variabler i en mal for å endre output."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modeller"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"Modeller er beskrivelser av alle objektene i systemet og tilhørende felter. "
-"Hver modell har en liste over felt som kan brukes som mal-variabler"
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Views"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"Hver side på det offentlige nettstedet er generert av et view. View'et "
-"definerer hvilken malen som blir brukt til å generere siden og hvilke "
-"objekter som er tilgjengelige for den malen."
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-"Verktøy for nettleseren din for å få rask tilgang til admin-funksjonalitet."
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Vennligst installer docutils"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"Admin-dokumentasjonssystemet krever Pythons <a href=\"%(link)s\">docutils</"
-"a>-bibliotek."
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"Spør dine administratorer om å installere <a href=\"%(link)s\">docutils</a> ."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Modell: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Felt"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Type"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Beskrivelse"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Tilbake til modell-dokumentasjonen"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Modelldokumentasjon"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Modellgrupper"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Maler"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Mal: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Mal: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "Søk banen etter mal \"%(name)s\" på %(grouper)s:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(finnes ikke)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Tilbake til dokumentasjonen"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Mal-filtre"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Mal-filter dokumentasjon"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "Innebygde filtre"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"For å bruke disse filtrene, sett inn <code>%(code)s</code> i malen før du "
-"bruker filteret."
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Mal-tagger"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Mal-tag-dokumentasjon"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "Innebygde tagger"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"For å bruke disse taggene, sett inn <code>%(code)s</code> i malen før du "
-"bruker taggen."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "View: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Kontekst:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Maler:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "Tilbake til view-dokumentasjonen"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "View-dokumentasjon"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Gå til nettsted"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "Views av URL på %(name)s"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "View-funksjon: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolsk (True eller False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Felt av typen: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ne/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ne/LC_MESSAGES/django.mo
deleted file mode 100644
index 1392645..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ne/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ne/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ne/LC_MESSAGES/django.po
deleted file mode 100644
index 28d2e35..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ne/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,364 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Paras Nath Chaudhary <opnchaudhary@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/"
-"ne/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ne\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "ट्याग:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr ""
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "धृस्य :"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "App %r भेटिएन "
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "%(model_name)r नमुना %(app_label)r appमा भेटिएन"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "`%(app_label)s.%(data_type)s` संबंधित बस्तु "
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "नमुना :"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "`%(app_label)s.%(object_name)s` संबंधित बस्तु "
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "सबै %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%sको संख्या"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "गृह "
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "प्रलेखन"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "यो पृस्ठको लागी प्रलेखन"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "बस्तुको पहिचान देखाउनुहोस "
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "ट्यागहरु "
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "नमुनाहरु "
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "धृस्यहरु "
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "बुलियन (True अथवा False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "फाँटको प्रकार: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/nl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/nl/LC_MESSAGES/django.mo
deleted file mode 100644
index b2afd85..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/nl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/nl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/nl/LC_MESSAGES/django.po
deleted file mode 100644
index d1cb535..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/nl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,395 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Bouke Haarsma <bouke@webatoom.nl>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Jeffrey Gelens <jeffrey@noppo.pro>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-11-05 09:19+0000\n"
-"Last-Translator: Bouke Haarsma <bouke@webatoom.nl>\n"
-"Language-Team: Dutch (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tag:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filter:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "view:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Module %r niet gevonden"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Model %(model_name)r niet gevonden in module %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "het gerelateerde `%(app_label)s.%(data_type)s` object"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "gerelateerde `%(app_label)s.%(object_name)s` objecten"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "alle %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "aantal %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "Attributen van %s-objecten"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s lijkt geen urlpattern-object te zijn"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Voorpagina"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Documentatie"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Documentatie bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Om bookmarklets te installeren, sleep de link naar uw "
-"bladwijzers\n"
-"werkbalk, of rechtermuis klik op de link en voeg het toe aan de bladwijzer. "
-"Nu kan\n"
-"de bookmarklet vanuit elke pagina op de site worden gekozen. Let erop dat "
-"het soms\n"
-"noodzakelijk is dat de computer van waaruit de pagina wordt bekeken intern "
-"is.\n"
-"(Raadpleeg uw systeembeheerder of uw computer zich op het interne netwerk "
-"bevind).<p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Documentatie voor deze pagina"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Springt vanuit elke pagina naar de documentatie voor de view die gegenereerd "
-"wordt door die pagina."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Toon object-ID"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Toont het content-type en unieke ID voor pagina's die een enkel object "
-"voorstellen."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Bewerk dit object (huidig venster)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Gaat naar de beheerpagina voor pagina's die een enkel object weergeven."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Bewerk dit object (nieuw venster)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Zoals hierboven, maar opent de beheerpagina in een nieuw venster."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Tags"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Overzicht van alle templatetags en hun functie."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filters"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"Filters kunnen toegepast worden op templatevariabelen om hun uitvoer aan te "
-"passen."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modellen"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"Modellen beschrijven welke objecten in het systeem beschikbaar zijn en met "
-"welke attributen. Elk model heeft een lijst van attributen die beschikbaar "
-"zijn in de templates."
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Views"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"Elke pagina op de publieke site wordt gegenereerd door een view. De views "
-"bepalen welke template gebruikt wordt om een pagina te genereren en welke "
-"objecten in de templates beschikbaar zijn."
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr "Snelkoppelingen in je browser om makkelijk beheerpagina's te openen."
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Docutils is niet geïnstalleerd"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"Python's <a href=\"%(link)s\">docutils</a> is benodigd voor de documentatie."
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"Vraag de beheerder om <a href=\"%(link)s\">docutils</a> te installeren."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Model: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Veld"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Type"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Beschrijving"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Terug naar overzicht van modellen"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Overzicht van modellen"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Modules"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Templates"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Template: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Template: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "Mogelijke locaties voor template \"%(name)s\" in %(grouper)s:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(bestaat niet)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Terug naar documentatie"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Templatefilters"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Overzicht van templatefilters"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "Standaardfilters"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"Om deze filters te gebruiken zet je <code>%(code)s</code> bovenaan je "
-"template."
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Templatetags"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Overzicht van templatetags"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "Standaardtags"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"Om deze tags te gebruiken zet je <code>%(code)s</code> bovenaan je template."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "View: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Contextvariabelen:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Templates:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "Terug naar lijst van views"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "Bekijk documentatie"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Spring naar site"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "Lijst van views per URL in %(name)s"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "Functienaam: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (True danwel False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Veld van type: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/nn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/nn/LC_MESSAGES/django.mo
deleted file mode 100644
index 7f494ca..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/nn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/nn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/nn/LC_MESSAGES/django.po
deleted file mode 100644
index 64e8c8d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/nn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,377 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/"
-"language/nn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tag:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filter:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "view:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Kunne ikkje finne applikasjonen %r"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-"Kunne ikkje finne modellen %(model_name)r i applikasjonen %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "det relaterte `%(app_label)s.%(data_type)s`-objektet"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "modell:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "relaterte `%(app_label)s.%(object_name)s`-objekt"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "alle %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "tal på %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ser ikkje ut til å vere eit urlpattern-objekt"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Heim"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentasjon"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bokmerke"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Dokumentasjonsbokmerke"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">For å installere bokmerke, dra linken til verktøylinja\n"
-"for bokmerke, eller høgreklikk og legg til i bokmerke. No kan du du velge\n"
-"bokmerket frå kva som helst side på nettstaden. Nokre av desse\n"
-"bokmerka krevar at datamaskina du brukar er markert som \"intern\"\n"
-"(kontakt systemadministratoren din dersom du er usikker på om maskina di er "
-"\"intern\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Dokumentasjon for denne sida"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Hopp frå kva som helst side til dokumentasjonen for visingsfunksjonen som "
-"genererte sida."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Vis objekt-ID"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Viser \"content-type\" og ein unik ID for sider som representerar eit enkelt "
-"objekt."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Endre dette objektet (noverande vindauge)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Hoppar til administrasjonssida for sider som representerer eit enkelt objekt."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Endre dette objektet (nytt vindauge)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Samme som over, men opnar administrasjonssida i eit nytt vindauge."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolsk (True eller False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Felt av typen: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/os/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/os/LC_MESSAGES/django.mo
deleted file mode 100644
index c317468..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/os/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/os/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/os/LC_MESSAGES/django.po
deleted file mode 100644
index f544dd6..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/os/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,373 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Ossetic (http://www.transifex.com/projects/p/django/language/"
-"os/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: os\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "тӕг:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "фӕрсудзӕн:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "хуыз:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Ӕфтуан %r нӕ разынд"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Модел %(model_name)r ӕфтуан %(app_label)r-ы мидӕг нӕ разынд"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "хӕстӕг `%(app_label)s.%(data_type)s` объект"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "модел"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "хӕстӕг `%(app_label)s.%(object_name)s` объекттӕ"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "%s иууылдӕр"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s нымӕц"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s url-ы хуызӕгы объект нӕу"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Хӕдзар"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Документаци"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Букмарклеттӕ"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Документацийы букмарклеттӕ"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Букмарклеттӕ сӕвӕрынӕн, рахӕсс ӕрвитӕн дӕ сӕрмагондты\n"
-"панелмӕ кӕнӕ мысты рахиз ӕгънӕгӕй ныххӕц ӕрвитӕныл ӕмӕ йӕ дӕ\n"
-"сӕрмагондтӕмбахӕсс. Ныр дӕ бон у букмарклет сайты кӕцы фӕнды фарсӕй дӕр\n"
-"равзарын. Уый зон ӕмӕ ацы букмарклеттӕй кӕцыдӕртӕ домынц цӕмӕй\n"
-"ды сайтмӕ кӕсай ахӕм компьютерӕй, кӕцы арӕзт уыд куыд \"мидӕггаг\"\n"
-"(бадзур дӕ системон администратормӕ, кӕд ӕй нӕ зоныс \"мидӕггаг\" у дӕ\n"
-"компьютер, ӕви нӕ).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Ацы фарсы документаци"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "Цыфӕнды фарсӕй дӕ уыцы фарс цы хуыз фӕлдисы, уый документацимӕ ӕрвиты."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Объекты бӕрӕггӕнӕн равдисын"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Иунӕг объекттӕн нывонд фӕрстӕн ӕвдисы мидисы хуыз ӕмӕ юникалон бӕрӕггӕнӕн."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Ацы объект фӕивын (ацы рудзынгы)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Иунӕг объектӕн нывонд фӕрсты админы фарсмӕ ӕрвиты."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Ацы объект фӕивын (ног рудзынгы)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Куыд уӕлдӕр, фӕлӕ админы фарс ног рудзынгы кӕны."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Тӕгтӕ"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Фӕрсудзӕнтӕ"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Моделтӕ"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Хуызтӕ"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Хуызӕгтӕ"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Булон (Бӕлвырд кӕнӕ Мӕнг)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Быдыры хуыз: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/pa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/pa/LC_MESSAGES/django.mo
deleted file mode 100644
index 8a50967..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/pa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/pa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/pa/LC_MESSAGES/django.po
deleted file mode 100644
index 5f016f6..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/pa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,364 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/"
-"language/pa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pa\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "ਟੈਗ:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "ਫਿਲਟਰ:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "ਵੇਖੋ:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "ਐਪਲੀਕੇਸ਼ਨ %r ਨਹੀਂ ਲੱਭੀ"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr ""
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "ਮਾਡਲ:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "ਸਬੰਧਿਤ `%(app_label)s.%(object_name)s` ਆਬਜੈਕਟ"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "ਸਭ %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s ਦੀ ਗਿਣਤੀ"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "ਘਰ"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "ਡੌਕੂਮੈਂਟੇਸ਼ਨ"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "ਬੁੱਕਮਾਰਕਲਿਟ"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "ਡੌਕੂਮੈਟੇਸ਼ਨ ਬੁੱਕਮਾਰਕਲਿਟ"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "ਇਹ ਸਫ਼ੇ ਲਈ ਡੌਕੂਮੈਂਟੇਸ਼ਨ"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "ਆਬਜੈਕਟ ID ਵੇਖੋ"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "ਇਹ ਆਬਜੈਕਟ ਸੋਧੋ (ਮੌਜੂਦਾ ਵਿੰਡੋ)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "ਇਹ ਆਬਜੈਕਟ ਸੋਧੋ (ਨਵੀਂ ਵਿੰਡੋ)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr ""
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "ਖੇਤਰ ਦੀ ਕਿਸਮ: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/pl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/pl/LC_MESSAGES/django.mo
deleted file mode 100644
index 66f769a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/pl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/pl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/pl/LC_MESSAGES/django.po
deleted file mode 100644
index 4b8355e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/pl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,379 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# angularcircle, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tag:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtr:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "widok:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Aplikacja %r nie została znaleziona"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Model %(model_name)r nie został znaleziony w aplikacji %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "powiązany obiekt `%(app_label)s.%(data_type)s`"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "powiązane obiekty `%(app_label)s.%(object_name)s`"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "wszystkie %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "liczba %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s nie jest obiektem urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Początek"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentacja"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Zakładki"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Zakładki Dokumentacji"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Aby zainstalować skryptozakładki, przeciągnij łącze do "
-"paska zakładek\n"
-"lub kliknij prawym klawiszem na łączu i dodaj je do zakładek. Teraz możesz\n"
-"wybrać skryptozakładkę na dowolnej stronie serwisu. Uwaga: niektóre z tych "
-"skryptozakładek wymagają przeglądania serwisu z komputera\n"
-"\"wewnętrznego\" (skontaktuj się z administratorem systemu, jeśli nie jesteś "
-"pewien, czy ten komputer jest \"wewnętrznym\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Dokumentacja dla tej strony"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Przekierowuje z dowolnej strony do dokumentacji dla widoku, który ją "
-"generuje."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Pokaż ID obiektu"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Pokazuje typ i unikalne ID dla stron, które reprezentują pojedynczy obiekt."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Edytuj ten obiekt (bieżące okno)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Przeskok do panelu administratora dla stron reprezentujących pojedynczy "
-"obiekt."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Edytuj ten obiekt (nowe okno)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Jak wyżej, tyle że otwiera nowe okno."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Tagi"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtry"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modele"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Widoki"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Szablony"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Wartość logiczna (True, False - prawda lub fałsz)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Pole typu: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/pt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/pt/LC_MESSAGES/django.mo
deleted file mode 100644
index 6e85709..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/pt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/pt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/pt/LC_MESSAGES/django.po
deleted file mode 100644
index a5e09a2..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/pt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,398 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Bruno Miguel Custódio <bruno@brunomcustodio.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nuno Mariz <nmariz@gmail.com>, 2011-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-10-31 16:32+0000\n"
-"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
-"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tag:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtro:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "view:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "A aplicação %r não encontrada"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "O Model %(model_name)r não foi encontrado na aplicação %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "o objeto `%(app_label)s.%(data_type)s` relacionado"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "os objetos `%(app_label)s.%(object_name)s` relacionados"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "todos %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "número de %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "Atributos em %s objetos"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s não parece ser um objeto urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Início"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Documentação"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Documentação dos bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Para instalar bookmarklets, arraste o link para sua "
-"barra \n"
-"de bookmarks, ou clique com o lado direito do rato no link e adicione ao "
-"seus bookmarks. Agora pode \n"
-"seleccionar o bookmarklet de qualquer página no site. Note que alguns "
-"destes \n"
-"bookmarklets requerem que visualize o site de um computador designado \n"
-"por \"internal\" (entre em contacto com o seu administrador de sistema se \n"
-"não tiver a certeza se o seu computador é \"internal\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Documentação desta página"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Vai de qualquer página para a documentação da view que gera essa página."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Mostrar o ID do objeto"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Mostra o tipo de conteúdo e o ID único para as páginas que representam um "
-"único objeto."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Editar este objeto (janela actual)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Vai para a página de admin para as páginas que representam um único objeto."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Editar este objeto (nova janela)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Tal como acima, mas abre a página de admin numa nova janela."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Tags"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Lista de todas as template tags e suas funções."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtros"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"Os filtros são as acções que podem ser aplicadas às variáveis ​​de uma "
-"template para alterar o output."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Models"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"Models são descrições de todos os objetos no sistema e seus campos "
-"associados. Cada model tem uma lista de campos que podem ser acedidos como "
-"variáveis ​​de template"
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Views"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"Cada página no site público é gerada por uma view. A view define qual "
-"template será usado para gerar a página e quais objetos estarão disponíveis "
-"para esse template."
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-"Ferramentas para o seu navegador para aceder rapidamente a funcionalidade de "
-"administração."
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Por favor, instale o docutils"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"A documentação do sistema de admin requer a biblioteca <a href=\"%(link)s"
-"\">docutils</a> do Python."
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"Por favor, peça aos seu administradores para instalar o <a href=\"%(link)s"
-"\">docutils</a>."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Model: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Campo"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Tipo"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Descrição"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Voltar para a Documentação dos Models"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Documentação dos Models"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Grupos de Models"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Templates"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Template: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Template: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "Caminho de pesquisa para a template \"%(name)s\" em %(grouper)s:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(Não existe)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Voltar para a Documentação"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Filtros de template"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Documentação de filtros de template"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "Filtros built-in"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"Para utilizar estes filtros, coloque <code>%(code)s</code> na sua template "
-"antes de utilizar o filtro."
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Tags de template"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Documentação de tags de template"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "Tags built-in"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"Para utilizar estas tags, coloque <code>%(code)s</code> na sua template "
-"antes de usar a tag."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "View: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Contexto:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Templates:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "Voltar para a documentação das Views"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "Ver documentação"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Ir para o site"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "Views por URL em %(name)s"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "Função da view: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (Pode ser True ou False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Campo do tipo: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.mo
deleted file mode 100644
index eacabe5..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.po
deleted file mode 100644
index 1cae5f0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/pt_BR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,394 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Elyézer Rezende <elyezermr@gmail.com>, 2013
-# Guilherme Gondim <semente@taurinus.org>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-19 15:55+0000\n"
-"Last-Translator: Elyézer Rezende <elyezermr@gmail.com>\n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
-"django/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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tag:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtro:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "view:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Aplicação %r não encontrada"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Model %(model_name)r não encontrado na aplicação %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "o objeto `%(app_label)s.%(data_type)s` relacionado"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "objetos `%(app_label)s.%(object_name)s` relacionados"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "todos %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "número de %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "Atributos dos objetos de %s"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s não aparenta ser um objeto urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Início"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Documentação"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Itens de bookmark"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Documentação de itens de bookmark"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Para instalar um item no bookmark, arraste o link para a \n"
-"barra de ferramentas de bookmarks, ou clique com o botão direito no link e\n"
-"adicione-o à barra de ferramentas. Agora você pode selecionar o item de\n"
-"bookmark de qualquer página do site. Lembre-se que alguns desses itens\n"
-"de bookmark requerem que você veja o site de um computador designado\n"
-"como \"interno\" (converse com seu administrador de sistemas se você não\n"
-"souber se seu computador é \"interno\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Documentação para esta página"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Leva você de qualquer página para a documentação da view que gera tal página."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Mostar ID de objeto"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Mostra o tipo de conteúdo e ID único para páginas que representam um objeto."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Editar este objeto (janela atual)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Vai para a página de administração que representa um objeto."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Editar este objeto (nova janela)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Como acima, mas abre a página de administração em uma nova janela."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Tags"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Lista de todas as template tags e suas funções."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtros"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"Os filtros são ações que podem ser aplicadas às variáveis ​​de um template "
-"para alterar a saída."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Models"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"Models são descrições de todos os objetos no sistema e seus campos "
-"associados. Cada model tem uma lista de campos que podem ser acessados ​​como "
-"variáveis ​​de template"
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Views"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"Cada página no site público é gerada por uma view. A view define qual "
-"template será usado para gerar a página e quais objetos estarão disponíveis "
-"para esse modelo."
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-"Ferramentas para o seu navegador para acessar rapidamente a funcionalidade "
-"de administração."
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Por favor, instale o docutils"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"O sistema de documentação de administração exige a biblioteca <a href="
-"\"%(link)s\">docutils</a> do Python."
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"Por favor, peça para os seus administradores para instalar o <a href="
-"\"%(link)s\">docutils</a>."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Model: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Campo"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Tipo"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Descrição"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Voltar para Documentação dos Models"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Documentação do model"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Grupos de models"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Templates"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Template: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Template: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "Caminho de busca para o template \"%(name)s\" em %(grouper)s:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(não existe)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Voltar para Documentação"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Filtros do template"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Documentação do filtro do template"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "Filtros built-in"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"Para usar esses filtros, coloque o código <code>%(code)s</code> no seu "
-"template antes de usar o filtro."
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Tags de template"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Documentação da tag de template"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "Tags built-in"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"Para usar estas tags, coloque o código <code>%(code)s</code> no seu template "
-"antes de usar a tag."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "View: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Contexto:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Templates:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "Voltar para a Documentação das Views"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "Ver documentação"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Ir para o site"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "Views por URL em %(name)s"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "Função da view: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Booleano (Verdadeiro ou Falso)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Campo do tipo: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ro/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ro/LC_MESSAGES/django.mo
deleted file mode 100644
index 507ee47..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ro/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ro/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ro/LC_MESSAGES/django.po
deleted file mode 100644
index 48436cf..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ro/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,382 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Daniel Ursache-Dogariu <contact@danniel.net>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/"
-"ro/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1));\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tag:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtru:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "cod de afișare:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Applicația %r negăsită"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modelul %(model_name)r nu a fost găsit în aplicația %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "obiectul înrudit `%(app_label)s.%(data_type)s`"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "obiectele înrudite `%(app_label)s.%(object_name)s`"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "toate %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "numărul de %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s nu pare a fi un obiect urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Acasă"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Documentație"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Semne de carte"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Semne de carte pentru documentație"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Pentru a instala semne de carte, trageți link-ul în bara "
-"de\n"
-"semne de carte, sau clic dreapta pe link și adaugați la semne de carte. Acum "
-"puteți\n"
-"selecta semnul de carte din orice pagina a sitului. Notați că unele dintre\n"
-"aceste semne de carte sunt accesibile doar de pe un calculator desemnat ca\n"
-"\"intern\" (luați legătura cu administratorul sistemului dumneavoastră în "
-"caz că nu știți\n"
-"dacă acest calculator este \"intern\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Documentație pentru pagina aceasta"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Vă trimite de la orice pagină către documentația pentru codul de afișare "
-"care generează acea pagină."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Arată ID-ul obiectului"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Arată tipul de conținut și ID-ul unic pentru paginile ce reprezintă un "
-"singur obiect."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Modifică acest obiect (în fereastra curentă)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Sare la pagina de administrare pentru pagini ce reprezintă un singur obiect."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Modifică acest obiect (într-o fereastra nouă)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"La fel ca mai sus, dar deschide pagina de administrare într-o fereastră nouă"
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (adevărat sau fals)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Câmp de tip: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ru/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ru/LC_MESSAGES/django.mo
deleted file mode 100644
index 347fe8f..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ru/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ru/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ru/LC_MESSAGES/django.po
deleted file mode 100644
index 9c39d65..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ru/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,399 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Eugene MechanisM <contact@mechanism.name>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Алексей Борискин <sun.void@gmail.com>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-10-27 16:37+0000\n"
-"Last-Translator: Алексей Борискин <sun.void@gmail.com>\n"
-"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/"
-"ru/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "тег:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "фильтр:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "view:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Приложение %r не найдено"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Модель %(model_name)r не найдена в приложении %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "зависимый `%(app_label)s.%(data_type)s` объект"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "модель:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "связанные объекты `%(app_label)s.%(object_name)s`"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "все %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "количество %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "Атрибуты объектов типа %s"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s не похож на объект urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Начало"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Документация"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Закладки"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Закладки документации"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Для установки закладок перетащите ссылку к себе на панель\n"
-"закладок или щелкните правой кнопкой мыши по ссылке и добавьте ее в\n"
-"закладки. Теперь у вас есть возможность выбрать закладку с любой страницы\n"
-"сайта. Обратите внимание: некоторые из этих закладок требуют, чтобы вы\n"
-"просматривали сайт с компьютера, определенного как \"внутренний\" (уточните\n"
-"у своего системного администратора, если не уверены, является ли ваш\n"
-"компьютер \"внутренним\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Документация для данной страницы"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Перенаправляет вас с любой страницы к документации для view, который "
-"генерирует эту страницу."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Показать идентификатор объекта"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Показывает content-type и уникальный ID для страниц, представляющих один "
-"объект."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Редактировать данный объект (в текущем окне)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Перейдет на административную страницу для страниц, представляющих один "
-"объект."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Редактировать данный объект (в новом окне)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "То же, что и выше, но откроет административную страницу в новом окне."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Теги"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Список всех template tag-ов и их функций."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Фильтры"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"Фильтры - это действия, которые могут быть выполнены над переменными в "
-"шаблоне, чтобы изменить их отображение."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Модели"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"Модели - это описания всех объектов, существующих в системе и связанные с "
-"ними поля. Каждая модель имеет список полей, которые могут быть использованы "
-"в качестве переменных в шаблонах"
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "View"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"Каждая страница сайта создаётся с помощью view. View определяет, какой "
-"шаблон использовать, чтобы создать страницу и какие объекты будут доступны в "
-"этом шаблоне."
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-"Инструменты для вашего браузера для быстрого доступа к функциональности "
-"административного раздела сайта (букмарклеты)."
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Пожалуйста, установите docutils"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"Встроенной в административное приложение системе документации необходима для "
-"работы Python-библиотека <a href=\"%(link)s\">docutils</a>."
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"Пожалуйста, попросите ваших администраторов установить <a href=\"%(link)s"
-"\">docutils</a>."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Модель: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Поле"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Тип"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Описание"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Назад к документации моделей"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Документация моделей"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Группы моделей"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Шаблоны"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Шаблон: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Шаблон: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "Пути поиска шаблона \"%(name)s\" на сайте %(grouper)s:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(не существует)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Назад к документации"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Фильтры в шаблонах"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Документация о фильтрах в шаблонах"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "Встроенные фильтры"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"Чтобы использовать эти фильтры, поместите <code>%(code)s</code> в ваш шаблон "
-"выше строки с использованием фильтра."
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Теги шаблонов"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Документация по тегам шаблонов"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "Встроенные теги"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"Чтобы использовать эти теги, поместите <code>%(code)s</code> в ваш шаблон "
-"выше строки с использованием тега."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "View: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Контекст:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Шаблоны:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "Назад к документации о view"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "Документация о view"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Перейти на сайт"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "View по URL на сайте %(name)s"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "View-функция: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Логическое (True или False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Поле типа %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/sk/LC_MESSAGES/django.mo
deleted file mode 100644
index 19d3adb..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/sk/LC_MESSAGES/django.po
deleted file mode 100644
index 043bdf2..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,380 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Juraj Bubniak <translations@jbub.eu>, 2012-2013
-# Marian Andre <marian@andre.sk>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-11-10 11:47+0000\n"
-"Last-Translator: Marian Andre <marian@andre.sk>\n"
-"Language-Team: Slovak (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "značka:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filter:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "pohľad:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Aplikácia %r nenájdená"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Model %(model_name)r sa v aplikácii %(app_label)r nenachádza"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "súvisiaci objekt `%(app_label)s.%(data_type)s`"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "súvisiace objekty `%(app_label)s.%(object_name)s`"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "všetky %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "počet %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s nevyzerá ako urlpattern objekt"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Domov"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentácia"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Záložky"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Záložky dokumentácie"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Ak chete nainštalovať záložky, pretiahnite odkaz do\n"
-"nástrojovej lišty so záložkami, alebo kliknite pravým tlačidlom myši na "
-"odkaz a pridajte ho do záložiek.\n"
-"Následne môžete záložky použiť na stránkach. Poznamenávame, že použitie "
-"niektorých záložiek vyžaduje, aby bol váš počítač \"interný\" (ak si nie ste "
-"istý, že váš počítač je \"interný\", oslovte svojho systémového správcu).</"
-"p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Dokumentácia k tejto stránke"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Nasmeruje vás z ľubovoľnej stránky do dokumentácie, kde je popísané, ako sa "
-"táto stránka generuje."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Zobraziť identifikátor objektu"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Zobrazí content-type a jedinečný identifikátor pre stránky, ktoré "
-"reprezentujú samostatný objekt."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Upraviť tento objekt (aktuálne okno)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Skočí na stránku správy pre stránky, ktoré reprezentujú samostatný objekt."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Upraviť tento objekt (nové okno)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Ako predtým, ale otvorí stránku správy v novom okne."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Značky"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Zoznam všetkých šablónových značiek a ich funkcií ."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtre"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modely"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Zobrazenia"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Prosím, nainštalujte docutils"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"Požiadajte administrátorov o inštaláciu <a href=\"%(link)s\">docutils</a>."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Model: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Pole"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Typ"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Popis"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Späť na Dokumentáciu modelov"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Dokumentácia modelu"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Skupiny modelov"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Šablóny"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Šablóna: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Šablóna: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(neexistuje)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Späť na Dokumentáciu"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Filtre šablóny"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Dokumentácia šablónových filtrov"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "Vstavané filtre"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Šablónové značky"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Dokumentácia šablónových značiek"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "Vstavané značky"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Kontext:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Šablóny:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Prejsť na stránku"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Logická hodnota (buď True alebo False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Pole typu: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/sl/LC_MESSAGES/django.mo
deleted file mode 100644
index c54a74c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/sl/LC_MESSAGES/django.po
deleted file mode 100644
index f574325..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,393 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# zejn <zejn@kiberpipa.org>, 2013
-# zejn <zejn@kiberpipa.org>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-10-23 15:48+0000\n"
-"Last-Translator: zejn <zejn@kiberpipa.org>\n"
-"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/"
-"language/sl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "oznaka:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filter:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "pogled:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Programa %r ni mogoče najti"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modela %(model_name)r ni v programu %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "povezani predmet `%(app_label)s.%(data_type)s`"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "povezani predmeti `%(app_label)s.%(object_name)s`"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "vse %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "število %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "Atributi na objektih tipa %s"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "Predmet %s ni videti veljaven predmet urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Domov"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentacija"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Apleti zaznamkov"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Dokumentacijski apleti zaznamkov"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Aplete zaznamkov je mogoče namestiti z vleko\n"
-"povezave v orodno vrstico z zaznamki, ali pa z desnim klikom na povezavo\n"
-"Zaznamek je mogoče izbrati s katerekoli strani tega spletnega mesta.\n"
-"Opomba: nekatere strani si je mogoče ogledati le le z računalnika, ki je\n"
-"označen kot \"notranji\" računalnik (za več podrobnosti o tem, se obrnite\n"
-"na skrbnika).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Dokumentacija te strani"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "Skok na stran z dokumentacijo za pogled, ki gustvarja trenutno stran."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Pokaži ID predmeta"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Pokaže vrsto content-type in enoznačni ID za strani, ki predstavljajo en "
-"predmet."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Uredi predmet (v trenutnem oknu)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Skok na skrbniško stran vseh strani, ki predstavljajo en predmet."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Uredi ta predmet (v novem oknu)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Kot zgoraj, le da odpre skrbniško stran v novem oknu."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Oznake"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Izpiši vse značke za predloge in njihov opis."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtri"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"Filtri so opravila, ki jih lahko uporabite na spremenljivkah v predlogah, da "
-"spremenite izpis."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modeli"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"Modeli so opisi vseh objektov v sistemu in njihovih pripadajočih polj. Vsak "
-"model ima seznam polj, do katerih lahko dostopate v predlogi"
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Pogledi"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"Vsaka stran na javni strani je zgenerirana iz pogleda. Pogled definira "
-"katera predloga je uporabljena za generiranje strani in kateri objekti so "
-"dostopni ti predlogi."
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-"Orodja za vaš brskalnik, da lahko hitro dostopate do administracijskih "
-"funkcij."
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Prosimo namestite paket docutils"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"Dokumentcijski sistem administracijskega vmesnika zahteva knjižnico <a href="
-"\"%(link)s\">docutils</a> za Python."
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"Prosimo povprašajte administratorja, da namesti <a href=\"%(link)s"
-"\">docutils</a>."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Model: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Polje"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Tip"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Opis"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Nazaj na dokumentacijo modelov"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Dokumentacija modelov"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Skupine modelov"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Predloge"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Predloga: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Predloga: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "Poti iskanja za predlogo \"%(name)s\" na %(grouper)s:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(ne obstaja)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Nazaj na dokumentacijo"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Filtri v predlogah"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Dokumentacija filtrov v predlogah"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "Vgrajeni filtri"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"Če želite uporabiti te filtre, dodajte <code>%(code)s</code> v vašo predlogo "
-"preden uporabite filter."
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Značke v predlogah"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Dokumentacija značk v predlogah"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "Vgrajene značke"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"Če želite uporabiti te značke, dodajte <code>%(code)s</code> v vašo predlogo "
-"preden uporabite značko."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "Pogled: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Kontekst:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Predloge:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "Nazaj na dokumentacijo pogledov"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "Dokumentacija pogledov"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Skoči na stran"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "Pogledi po URL naslovu na %(name)s"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "Funkcija pogleda: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolova vrednost (PRAV ali NAPAK)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Polje vrste: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sq/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/sq/LC_MESSAGES/django.mo
deleted file mode 100644
index be2594d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sq/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sq/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/sq/LC_MESSAGES/django.po
deleted file mode 100644
index e5736f0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sq/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,379 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Besnik <besnik@programeshqip.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/"
-"sq/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sq\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "etiketë:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtër:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "parje:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Nuk u gjet zbatimi %r"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Nuk u gjet modeli %(model_name)r në zbatimin %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "objekti i afërt `%(app_label)s.%(data_type)s`"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "objektet e afërta `%(app_label)s.%(object_name)s`"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "krejt %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "numër i %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s nuk duket të jetë një objekt urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Hyrje"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentim"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "\"Bookmarklet\"-e"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "\"Bookmarklet\"-e Dokumentimi"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Për instalim \"bookmarklet\"-esh, tërhiqeni lidhjen te "
-"paneli juaj\n"
-"i faqerojtësve, ose djathtas-klikoni dhe shtojeni te faqerojtësit tuaj. Tani "
-"mundeni\n"
-"të përzgjidhni \"bookmarklet\" nga cilado faqe e \"site\"-it. Kini parasysh "
-"që disa prej\n"
-"\"bookmarklet\"-eve kërkojnë që ju ta shihni \"site\"-in prej një kompjuteri "
-"të specifikuar\n"
-"si \"i brendshëm\" (sqarojeni me përgjegjësin e sistemit nëse nuk jeni i "
-"sigurt\n"
-"në është a jo \"i brendshëm\" kompjuteri juaj).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Dokumentim për këtë faqe"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Ju kalon nga cilado faqe te dokumenti që prodhon atë faqe, për ta parë."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Shfaq ID objekti"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Shfaq lloj lënde dhe ID unike për faqet që përfaqësojnë një objekt të vetëm."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Përpunojeni këtë objekt (dritarja e tanishme)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Kalon te faqja e përgjegjësit për faqet që përfaqësojnë një objekt të vetëm."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Përpunojeni këtë objekt (dritare e re)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Si më sipër, por hap faqen e përgjegjësit në një dritare të re."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Etiketa"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtra"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modele"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Parje"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Gjedhe"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Buleane (Ose True, ose False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Fushë e llojit: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/sr/LC_MESSAGES/django.mo
deleted file mode 100644
index 92bd2bb..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/sr/LC_MESSAGES/django.po
deleted file mode 100644
index 319e84e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,379 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/"
-"sr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr\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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "таг:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "филтер:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "вју:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Апликација %r није пронађена"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Модел %(model_name)r није пронађен у апликацији %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "повезани објекти класе `%(app_label)s.%(data_type)s`"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "модел:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "класе `%(app_label)s.%(object_name)s`"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "сви повезани објекти %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "број повезаних објеката %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s не изгледа као „urlpattern“ објекат"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Почетна"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Документација"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Букмарклети"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Букмарклети документације"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Да бисте инсталирали букмарклет, превуците линк до својих\n"
-"букмаркова или кликните десним дугметом и додајте међу букмарке. Након тога\n"
-"букмарклетима можете приступити са сваке странице на сајту. Имајте на уму\n"
-"да неки букмарклети захтевају да сајту приступите са рачунара који су\n"
-"означени као „интерни“ (питајте администратора вашег система уколико нисте\n"
-"сигурни да ли је ваш рачунар „интерни“).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Документација за ову страницу"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Води од било које странице до документаицје погледа који је генерисао ту "
-"страницу."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Прикажи ID објекта"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Приказује content-type и јединствени ID за страницу која преставља један "
-"објекат."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Измени овај објекат (у овом прозору)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Води у администрациони страницу за странице које престављају један објекат"
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Измени овај објекат (нови прозор)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"Исто као претходни, али отвара администрациону страницу у новом прозору."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Тагови"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Филтери"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Модели"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Вјуеви"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Шаблони"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Булова вредност (True или False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Поње типа: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.mo
deleted file mode 100644
index 03a2eea..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.po
deleted file mode 100644
index c0add11..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sr_Latn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,379 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/"
-"language/sr@latin/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr@latin\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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tag:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filter:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "vju:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Aplikacija %r nije pronađena"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Model %(model_name)r nije pronađen u aplikaciji %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "povezani objekti klase `%(app_label)s.%(data_type)s`"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "klase `%(app_label)s.%(object_name)s`"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "svi povezani objekti %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "broj povezanih objekata %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ne izgleda kao „urlpattern“ objekat"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Početna"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentacija"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bukmarkleti"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Bukmarkleti dokumentacije"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Da biste instalirali bukmarklet, prevucite link do svojih\n"
-"bukmarkova ili kliknite desnim dugmetom i dodajte među bukmarke. Nakon toga\n"
-"bukmarkletima možete pristupiti sa svake stranice na sajtu. Imajte na umu\n"
-"da neki bukmarkleti zahtevaju da sajtu pristupite sa računara koji su\n"
-"označeni kao „interni“ (pitajte administratora vašeg sistema ukoliko niste\n"
-"sigurni da li je vaš računar „interni“).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Dokumentacija za ovu stranicu"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Vodi od bilo koje stranice do dokumentaicje pogleda koji je generisao tu "
-"stranicu."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Prikaži ID objekta"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Prikazuje content-type i jedinstveni ID za stranicu koja prestavlja jedan "
-"objekat."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Izmeni ovaj objekat (u ovom prozoru)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Vodi u administracioni stranicu za stranice koje prestavljaju jedan objekat"
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Izmeni ovaj objekat (novi prozor)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"Isto kao prethodni, ali otvara administracionu stranicu u novom prozoru."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Tagovi"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filteri"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modeli"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Vjuevi"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Šabloni"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Bulova vrednost (True ili False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Ponje tipa: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/sv/LC_MESSAGES/django.mo
deleted file mode 100644
index f7c8e0b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/sv/LC_MESSAGES/django.po
deleted file mode 100644
index 1da614d..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,391 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Andreas Pelme <andreas@pelme.se>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# biljettshop <thomas@biljettshop.se>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-10-28 15:19+0000\n"
-"Last-Translator: biljettshop <thomas@biljettshop.se>\n"
-"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/"
-"sv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sv\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tagg:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filter:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "vy:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Applikation %r hittades inte"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modell %(model_name)r hittades inte i applikation %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "det relaterade `%(app_label)s.%(data_type)s`-objektet"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "modell:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "relaterade `%(app_label)s.%(object_name)s`-objekt"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "alla %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "antal %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "Attribut på %s objektet"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s verkar inte vara ett urlpattern-objekt"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Hem"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokumentation"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Smarta bokmärken"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Smarta bokmärken för dokumentation"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">För att installera smarta bokmärken, dra länken till din\n"
-"verktygsrad med bokmärken, eller högerklicka på länken och lägg till den\n"
-"till dina bokmärken. Nu kan du välja det smarta bokmärket från alla sidor\n"
-"på webbplatsen. Observera att några av dessa smarta bokmärken kräver att du "
-"besöker\n"
-"sidan från en dator som är \"intern\" (kontakta din systemadministratör\n"
-"om du inte är säker på om din dator är \"intern\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Dokumentation för denna sida"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Förflyttar dig från valfri sida till dokumentationen för vyn som genererar "
-"den sidan."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Visa objektets ID"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Visa innehållstypen och det unika ID-numret för sidor som representerar ett "
-"enskilt objekt."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Redigera detta objekt (aktuellt fönster)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Hoppar till administrationssidan för sidor som representerar ett enskilt "
-"objekt."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Redigera detta objekt (nytt fönster)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Som ovan, men öppnar administrationssidan i ett nytt fönster."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Taggar"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "En lista på alla malltaggar och deras funktioner."
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filter"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"Filter är åtgärder som kan appliceras på variabler i en mall för att ändra "
-"utmatningen."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modeller"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Vyer"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-"Verktyg till din webbläsare för snabb tillgång till "
-"administrationsfunktioner."
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Vänligen installera docutils"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"Administrationsdokumentationen kräver Pythons <a href=\"%(link)s\">docutils</"
-"a> bibliotek."
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"Vänligen be din administratör installera <a href=\"%(link)s\">docutils</a>."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Modell: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Fält"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Typ"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Beskrivning"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Tillbaka till modellens dokumentation"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Modelldokumentation"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Modellgrupper"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Mallar"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Mall: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Mall: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "Sökvägen för mall \"%(name)s\" på %(grouper)s:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(finns inte)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Tillbaka till dokumentation"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Mallfilter"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Mallfilterdokumentation"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "Inbyggda filter"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"För att använda dessa filter, lägg till <code>%(code)s</code> innan du "
-"använder filtret i din mall."
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Malltaggar"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Malltaggdokumentation"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "Inbyggda taggar"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"För att använda dessa taggar, lägg till <code>%(code)s</code> innan du "
-"använder taggen i din mall."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "Vy: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Kontext:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Mallar:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "Tillbaka till vydokumentationen"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "Titta på dokumentationen"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "Hoppa till webbsidan"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "Vyer för URL på %(name)s"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "Vyfunktion: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolesk (antingen True eller False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Fält av typ: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sw/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/sw/LC_MESSAGES/django.mo
deleted file mode 100644
index 4f6fa57..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sw/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sw/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/sw/LC_MESSAGES/django.po
deleted file mode 100644
index 8a88e3b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/sw/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,377 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/"
-"sw/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sw\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "tagi"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "chujio"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "muonekano"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Programu %r haijapatikana"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Modeli %(model_name)r haijapatikana katika programu %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "`%(app_label)s.%(data_type)s` kinachohusiana"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "modeli"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "`%(app_label)s.%(object_name)s` vinavyohusiana"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "kila %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "idadi ya %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s haionekani kuwa ni kitu cha urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Sebule"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Waraka"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Vialamisho"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Vialamisho vya waraka"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Kusanikisha vialamisho, kokota kiungo hadi upau wako wa\n"
-"maalamisho, or bofya-kulia kiungo hicho na kiongeze kwenye maalamisho yako. "
-"Sasa unaweza\n"
-"kuchagua kialamisho kutokea ukurasa wowote katika tovuti hii. Kumbuka "
-"baadhi ya vialamisho \n"
-"vitakuhitaji kuvitumia kwa kutumia kompyuta iliyoteuliwa kama \"internal\"\n"
-"(ongea na utawala wa mfumo kama huna uhakika kuwa kompyuta yako ni "
-"\"internal\") \n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Nyaraka kwa ajili ya ukurasa huu"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Inakurusha kutoka ukurasa wowote hadi kwenye waraka wa mounekano unaozalisha "
-"ukurasa huo."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Onesha Utambulisho wa kitu"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"inaonesha aina ya maudhui na utambulisho wa kipekee wa kurasa "
-"zinazowakilisha kitu kimoja."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Hariri kitu hiki (dirisha la sasa)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Ruka hadi ukurasa wa utawala kwa kurasa zinazowakilisha kitu kimoja"
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Hariri kitu hiki (dirisha jipya)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-"Kama hapo juu, lakini hufungua ukurasa wa utawala katika dirisha jipya."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Tagi"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Chujio"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modeli"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Mionekano"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Templeti"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Buleani (Aidha Kweli au Si kweli)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Uga wa aina %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ta/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ta/LC_MESSAGES/django.mo
deleted file mode 100644
index 7fbb8c8..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ta/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ta/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ta/LC_MESSAGES/django.po
deleted file mode 100644
index d9b12c6..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ta/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,373 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/"
-"ta/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ta\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "ஒட்டு:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "வடிகட்டி:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "நோற்றமிடு:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "பக்கம் %r இல்லை"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr ""
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "மாதிரி:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr ""
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "அனைத்து %s "
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "எண்ணிக்கை %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s -ல் urlpattern தோன்றுவதில்லை"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "வீடு"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "ஆவனமாக்கம்"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "புத்தகக்குறிகள்"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "ஆவணமாக்கக் குறியீடுகள்"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\"> புத்தக குறியீடுகளை நிறுவ இந்த இணைப்பினை புத்தகக்குறியீட்டுப் \n"
-"பட்டைக்கு இழுக்கவும். அல்லது வலது கிளிக் செய்து புத்தகக்குறியீடுகளில் சேர்க்கவும். \n"
-" இனி தளத்தில் எந்தப் பக்கத்தில் இருந்தும் புத்தகக்குறியீட்டினை தேர்வுசெய்ய முடியும். \n"
-" நீங்கள் இந்த தளத்தை \"internal\" என குறிக்கப்பட்ட கணிணியில் இருந்து மட்டுமே \n"
-" ஒருசில புத்தகக்குறிகளை செயல்படுத்தமுடியும்\n"
-" உங்களுக்கு, கணிணி \"internal\" என உறுதி செய்ய கணிணிமேளாலரை அணுகவும்.</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "இந்த பக்கத்திற்கான ஆவணம்"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"எந்த ஒரு பக்கத்திலிருந்தும் ஆவணப்பக்கத்தை பார்வையிடுதல், அந்த பக்கத்தை உருவாக்குகிறது."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "object ID-ஐ காட்டு"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"ஒரே object-ஐ குறிக்கும் பக்கங்களின் பொருளடக்க வகை மற்றும் unique ID-ஐ காட்டுகிறது."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "இதை திருத்துக (தற்போதைய சாளரம்)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "ஒரே object-ஐ குறிக்கும் பக்கங்களைக் காண மேலாளர் பக்கத்திற்கு செல்க."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "இதை திருத்துக. (புதிய சாளரம்)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "மேளாலர் பக்கத்தை முன்பு கண்டதுபோல், ஆனால் புதிய சாளரத்தில் திறக்கிறது."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "பூலியன் (சரி அல்லது தவறு)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/te/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/te/LC_MESSAGES/django.mo
deleted file mode 100644
index bced1dc..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/te/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/te/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/te/LC_MESSAGES/django.po
deleted file mode 100644
index 6cd003e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/te/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,365 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# bhaskar teja yerneni <prudhviy@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/"
-"te/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: te\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "టాగ్:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "వడపోత:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "దర్శనం:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "%rఎప్ప్ దొరకలేడు"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "సంబంధించిన `%(app_label)s.%(data_type)s` అంశము"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "మొడల్:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "సంబంధించిన `%(app_label)s.%(object_name)s` వస్తువులు"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "ఆన్నీ %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s సంఖ్య"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s యు ఆర్ యల్ నిర్మాణక్రమ అంశము లా లేదు "
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "నివాసము"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "పత్రికీకరణ"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "నిర్దుష్ట గుర్తులు "
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "పత్రికీకరణ యొక్క నిర్దుష్ట గుర్తులు "
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "ఈ పొరటుకు పత్రికీకరణ"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "వస్తువు ఇడి చూడండి"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "వస్తువు ని మార్చండి (ప్రస్తుత విండొ)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "వస్తువు ని మార్చండి(కొత్త విండొ) "
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "బూలియన్ (అవునా లేక కాదా)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/th/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/th/LC_MESSAGES/django.mo
deleted file mode 100644
index bb4672e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/th/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/th/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/th/LC_MESSAGES/django.po
deleted file mode 100644
index 8621b00..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/th/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,372 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Vichai Vongvorakul <vongvichai@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/"
-"th/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: th\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "ป้ายกำกับ:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "ตัวกรอง:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "ดู:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "ไม่พบแอป %r "
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "ไม่พบโมเดล %(model_name)r ในแอป %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "ความสัมพันธ์`%(app_label)s.%(data_type)s` อ็อบเจ็กต์"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "โมเดล:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "ความสัมพันธ์`%(app_label)s.%(object_name)s` อ็อบเจ็กต์"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "ทั้งหมด %s "
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "จำนวนของ %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s ดูเหมือนจะไม่ใช่ urlpattern อ็อบเจ็กต์"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "หน้าหลัก"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "เอกสารประกอบ"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Documentation bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">เพื่อติดตั้ง bookmarklets, ลากลิ้งก์ไปที่แถบเครื่องมือบุ๊กมาร์ค\n"
-", หรือคลิกขวาที่ลิ้งและเพิ่มเข้าบุ๊กมาร์คของคุณ. ตอนนี้คุณสามารถ\n"
-"เลือก bookmarklet จากหน้าใดๆในเว็บไซต์. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "เอกสารสำหรับหน้านี้"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "ย้ายจากทุกหน้าไปที่วิวที่สร้างหน้านั้นขึ้นมา"
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "แสดงอ็อบเจ็กต์ไอดี"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "แสดง content-type และ unique ID เพื่อแสดงอ็อบเจ็กต์เพียงอย่างเดียว."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "แก้ไขออปเจ็กนี้ (ในหน้าต่างปัจจุบัน)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "ไปที่หน้าแอดมินเพื่อแสดงอ็อบเจ็กต์เพียงอย่างเดียว."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "แก้ไขออปเจ็กนี้ (หน้าใหม่)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "เหมือนด้านบน แต่เปิดหน้าต่างผู้ดูแลระบบในหน้าต่างใหม่"
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Tags:"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filters"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Models"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "View"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Templates"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "ตรรกะแบบบูลหมายถึง ค่า\"จริง\" (True) หรือ \"ไม่จริง \" (False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "ฟิลด์ข้อมูล: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/tr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/tr/LC_MESSAGES/django.mo
deleted file mode 100644
index d16b97a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/tr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/tr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/tr/LC_MESSAGES/django.po
deleted file mode 100644
index ca8b71e..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/tr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,391 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ahmet Emre Aladağ <emre.aladag@isik.edu.tr>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Murat Çorlu <muratcorlu@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-10-23 16:55+0000\n"
-"Last-Translator: Ahmet Emre Aladağ <emre.aladag@isik.edu.tr>\n"
-"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/"
-"tr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "etiket:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "filtre:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "görünüm:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "%r uygulaması bulunamadı"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "%(app_label)r uygulamasında %(model_name)r modeli bulunamadı"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "İlgili `%(app_label)s.%(data_type)s` nesnesi"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "ilgili `%(app_label)s.%(object_name)s` nesneleri"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "tüm %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s sayısı"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr "%s nesnesi için özellikler"
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s geçerli bir adres kalıbı değil"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Anasayfa"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Dokümantasyon"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Kısayollar"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Dokümantasyon kısayolları"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Kısayolları kullanabilmek için, bağlantıyı tarayıcınızdaki "
-"araç\n"
-"çubuğuna sürükleyin, ya da sağ tıklayıp sık kullanılan adresler listenize "
-"ekleyin. \n"
-"Bazı kısayollar, uygulamayı çalıştıran sunucu ile aynı adreste bulunan "
-"istemciler \n"
-"tarafından kullanılabilir.</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Bu sayfa için dokümantasyon"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "Sizi, bu sayfayı üreten betiğin dokümantasyonuna yönlendirir."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Nesne numarasını göster"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Tek bir nesneyi temsil eden sayfaların içerik türünü ve numarasını gösterir."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Nesneyi düzenle (aynı pencerede)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Tek bir nesneyi temsil eden sayfaların yönetim sayfasını gösterir."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Nesneyi düzenle (yeni pencerede)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Yukarıdaki gibi, ancak yönetim sayfasını yeni bir pencerede açar."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Etiketler"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr "Tüm şablon etiketlerinin ve fonksiyonlarının listesi"
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Filtreler"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-"Filreler, sonucu değiştirmek için bir şablondaki değişkenlere uygulanabilen "
-"eylemlerdir."
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Modeller"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-"Modeller, sistemdeki nesnelerin ve alakalı alanlarının tanımlarıdır. Her "
-"modelin şablon değişkeni olarak erişilebilen alanları liste halinde "
-"mevcuttur."
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Görünümler"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-"Umumi sitedeki her sayfa, bir view tarafından üretilir. View, sayfayı "
-"üretmek için hangi şablonun kullanılacağını ve bu şablona hangi nesnelerin "
-"verileceğini belirler"
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-"Tarayıcınızın yönetici işlevselliğine hızlıca ulaşabilmesi için araçlar"
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr "Lütfen docutils kurun"
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-"Yönetici dökümantasyon sistemi, Python'un <a href=\"%(link)s\">docutils</a> "
-"kütüphanesine ihtiyaç duyar."
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-"Lütfen yöneticinizden <a href=\"%(link)s\">docutils</a> kurmasını isteyin."
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr "Model: %(name)s"
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr "Alan"
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr "Tip"
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr "Açıklama"
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr "Model Dökümantasyonuna Geri Dön"
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr "Model dökümantasyonu"
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr "Model grupları"
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Şablonlar"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr "Şablon: %(name)s"
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr "Şablon: \"%(name)s\""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr "%(grouper)s üzerinde \"%(name)s\" şablonu için konum arayın:"
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr "(mevcut değil)"
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr "Dökümantasyona Geri Dön"
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr "Şablon filtreler"
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr "Şablon filtre dökümantasyonu"
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr "Dahili filtreler"
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-"Bu filtreleri kullanmak için, şablonunuzun içine filtreyi kullanmadan önce "
-"<code>%(code)s</code> yerleştirin."
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr "Şablon etiketleri"
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr "Şablon etiketi dökümantasyonu"
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr "Dahili etiketler"
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-"Bu etiketleri kullanmak için, şablonunuzun içine etiketi kullanmadan önce "
-"<code>%(code)s</code> yerleştirin."
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr "View: %(name)s"
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr "Bağlam:"
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr "Şablonlar:"
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr "View Dökümantasyonuna Geri Dön"
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr "Dökümantasyon görüntüle"
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr "siteye zıpla"
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr "%(name)s üzerinde URL'e göre Viewlar"
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr "View fonksiyonu: %(name)s"
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Mantıksal (True ya da False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Alan türü: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/tt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/tt/LC_MESSAGES/django.mo
deleted file mode 100644
index 015eb3b..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/tt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/tt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/tt/LC_MESSAGES/django.po
deleted file mode 100644
index b315abc..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/tt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,370 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Azat Khasanshin <lordofbazuks@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/"
-"tt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tt\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "билге:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "фильтр:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "күрсәтелеш:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "%r кушымтасы табылмаган"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "%(model_name)r моделе %(app_label)r кушымтасында табылмаган"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "бәйләнгән '%(app_label)s.%(data_type)s' объект"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "модель:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "бәйләнгән '%(app_label)s.%(object_name)s' объектлар"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "бөтен %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s саны"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s urlpattern объектына ошамаган"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Өй"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Документация"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Кыстыргычлар"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Документация кыстыргычлары"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Кыстыргычны урнаштыру өчен сылтаманы кысыргычлар аслыгына "
-"күчерегез я тычканның уң төймәсенә чирттереп кыстыргычлар исемлегенә кушыгыз."
-"</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Бу сәхифә өчен документация"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Теләсә нинди сәхифәдән сезне ул сәхифәне төзи торган view документациясенә "
-"җибәрә."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Объект идентификаторын күрсәтергә"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "Бер объектны күрсәтә торган сәхифәнең content-type һәм ID күрсәтә."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Бу объектны төзәтергә (шушы тәрәзәдә)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "Бер объектны күрсәтә торган сәхифәнең идарә сәхифәсенә җибәрә."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Бу объектны төзәтергә (яңа тәрәзәдә)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Өстәге кебек, тик идарә сәхифәсен яңа тәрәзәдә ача."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Логик (True яисә False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "%(field_type)s типтагы кыр"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/udm/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/udm/LC_MESSAGES/django.mo
deleted file mode 100644
index 5bf8b40..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/udm/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/udm/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/udm/LC_MESSAGES/django.po
deleted file mode 100644
index ab11f1c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/udm/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,363 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Udmurt (http://www.transifex.com/projects/p/django/language/"
-"udm/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: udm\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr ""
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr ""
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr ""
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr ""
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr ""
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr ""
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr ""
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr ""
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr ""
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr ""
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr ""
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "True яке False"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "%(field_type)s типъем бусы"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/uk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/uk/LC_MESSAGES/django.mo
deleted file mode 100644
index 21253cf..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/uk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/uk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/uk/LC_MESSAGES/django.po
deleted file mode 100644
index f4eb963..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/uk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,381 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sergey Lysach <sergikoff88@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "тег:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "відфільтрувати:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "переглянути:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Прикладна система(app) %r не знайдена"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Модель %(model_name)r не знайдено в прикладній системі %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "пов'язаний `%(app_label)s.%(data_type)s` об'єкт"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "модель:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "пов'язані з `%(app_label)s.%(object_name)s` об'єкти"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "всі %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "кількість з %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s не є об'єктом urlpattern"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Домівка"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Документація"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "Інтерактивні закладки"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "Інтерактивні закладки документації"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">Щоб встановити інтерактивні закладки, перетягніть лінк до\n"
-"тулбару закладок, або клікніть правою кнопкою миші та додайте у\n"
-"свої закладки. Тепер ви можете обрати інтерактивні закладки з будь-якої\n"
-"сторінки сайту. Зауважте, що деякі з цих інтерактивних закладок на сайті\n"
-"можуть переглядатися тільки з комп'ютера, що є в одній внутрішній мережі з \n"
-"даним сайтом (запитайте у вашого системного адміністратора, якщо ви не "
-"впевнені,\n"
-"що сайт і ваш комп'ютер є в одній внутрішній мережі).</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Документація для цієї сторінки"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"Перекидає вас з будь-якої сторінки в документацію для функції, що "
-"сгенерувала цю сторінку."
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Показати ID об'єкту"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"Показує content-type та унікальний ID для сторінок, які являють собою єдиний "
-"об'єкт."
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Редагувати цей об'єкт (поточне вікно)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"Перекидає до адміністраторської сторінки для сторінок, що відображають "
-"окремий об'єкт."
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Редагувати цей об'єкт (нове вікно)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Як і вище, але відкриває сторінку адміністрування у новому вікні."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Теги"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Фільтри"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Моделі"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Відображення"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Шаблони"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Булеве значення (True або False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Тип поля: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ur/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ur/LC_MESSAGES/django.mo
deleted file mode 100644
index 95df68c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ur/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ur/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/ur/LC_MESSAGES/django.po
deleted file mode 100644
index 6c0fd8c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/ur/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,380 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/"
-"ur/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ur\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "ٹیگ :"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "فلٹر:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "ویو:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "ایپلیکیشن %r نہیں ملی"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "ماڈل %(model_name)r ایپ %(app_label)r میں نہیں ملا"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "متعلقہ `%(app_label)s.%(data_type)s`اوبجیکٹ"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "model:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "متعلقہ `%(app_label)s.%(object_name)s` اوبجیکٹس"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "تمام %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%sکی تعداد "
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s بطور urlpattern ظاہر نہیں ہو رہا۔"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "صفحۂ اول"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "طریق استعمال"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "بک مارک لیٹس"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "طریق استعمال کے بک مارک لیٹس"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">بک مارک لیٹس کی تنصیب کے لئے،لنک کو اپنے بک مارکس ٹولبار\n"
-"کی طرف ڈریگ کریں، یا لنک پر دائیں کلک کریں اسے اپنے بک مارکس میں جمع کریں۔ "
-"اب آپ\n"
-"سائٹ کے کسی بھی صفحے سے بک مارک لیٹ منتخب کر سکتے ہیں۔ نوٹ کریں کہ ان میں \n"
-"سے کچھ بک مارک لیٹس کے لئے آپ کو ضرورت ہے کہ آپ سائٹ کو ایسے کمپیوٹر سے دیکھ "
-"رہے\n"
-"جو بطور \"internal\" ڈیزائن کیا گیا ہو۔ (اگر آپ کو یقین نہ ہو کہ آپ کا "
-"کمپیوٹر \"internal\" ہے تو اپنے\n"
-"سسٹم کے منتظم سے رابطہ کریں)۔ </p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "اس صفحے کا طریق استعمال"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-"آپ کو لے جاتا ہے کسی بھی صفحے سے طریق استعمال کی طرف اس ویو کے لئے جو اس "
-"صفحے کو بناتا ہے۔"
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "اوبجیکٹ کی آئی ڈی دکھائیں"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-"مضمون کی قسم اور منفرد آئی ڈی دکھاتا ہے ان صفحوں کے لئے جو سنگل اوبجیکٹ کی "
-"نمائندگی کرتے ہیں۔"
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "اس اوبجیکٹ کو ایڈٹ کریں (موجودہ ونڈو)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-"منتظم کے صفحے کی طرف جمپ کرتا ھے ان صفحوں کے لئے سنگل اوبجیکٹ کی نمائندگی "
-"کرتے ہیں۔"
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "اس اوبجیکٹ کو ایڈٹ کریں (نئی ونڈو)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "اوپر کی طرح ھے۔ لیکن منتظم کے صفحے کو نئی ونڈو میں کھولتا ھے۔"
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr ""
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr ""
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr ""
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr ""
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "بولین (True یا False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "%(field_type)s قسم کا خانہ"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/vi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/vi/LC_MESSAGES/django.mo
deleted file mode 100644
index d3c655a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/vi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/vi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/vi/LC_MESSAGES/django.po
deleted file mode 100644
index a7014df..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/vi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,365 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Lê Thanh <lethanhx2k@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/"
-"language/vi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "Nhãn:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "Lọc:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "Xem:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "Ứng dụng %r không tìm thấy"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "Mẫu %(model_name)r không tìm thấy trong ứng dụng %(app_label)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr ""
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "mẫu:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "liên quan tới đối tượng `%(app_label)s.%(object_name)s`"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "Tất cả %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "số của %s"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "Trang chủ"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "Tài liệu"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "Tài liệu cho trang này"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "Hiện ID"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "Sửa lại đối tượng này (ở cửa sổ hiện tại)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr ""
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "Sửa lại đối tượng này (trong cửa sổ mới)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "Như trên nhưng mở trang quản trị ở một cửa sổ mới."
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "Thẻ"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "Bộ lọc"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "Models"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "Xem"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "Templates"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "Boolean (hoặc là Đúng hoặc là Sai)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "Trường thuộc dạng: %(field_type)s "
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/zh_CN/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/zh_CN/LC_MESSAGES/django.mo
deleted file mode 100644
index 97c39c8..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/zh_CN/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/zh_CN/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/zh_CN/LC_MESSAGES/django.po
deleted file mode 100644
index e6c6f2a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/zh_CN/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,371 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kevin Shi <leiarix@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "标签:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "过滤器:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "视图:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "应用 %r 没有找到"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "在应用 %(app_label)r 里找不到模型 %(model_name)r"
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "相关的 `%(app_label)s.%(data_type)s` 对象"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "模型:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "相关的 `%(app_label)s.%(object_name)s` 对象"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "所有 %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s 的数量"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s 似乎不是一个 urlpattern 对象"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "首页"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "文档"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "书签"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "文档书签"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">为了安装书签,将链接拖到你的书签工具条,\n"
-"或者鼠标右击链接,添加到你的书签中。现在你可以从这个站\n"
-"点的任何页面选择书签。注意,其中某些书签要求你在一台\n"
-"被指定为\"内部\"的计算机上查看(如果不确定你的计算机\n"
-"是否为\"内部\"的,不妨跟你的系统管理员沟通一下)。</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "关于本页面的文档"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "从任何页面跳转到生成该页面的 view 文档。"
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "显示对象 ID"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "为那些展现单个对象的页面,显示 content-type 和唯一 ID。"
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "编辑该对象(当前窗口)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "跳转到用于展现单个对象的页面的管理页。"
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "编辑该对象(新窗口)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "同上,但在新窗口中打开管理页面。"
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "标签"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "过滤器"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "模型"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "视图"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "模板"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "布尔值(真或假)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "字段类型:%(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/zh_TW/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/admindocs/locale/zh_TW/LC_MESSAGES/django.mo
deleted file mode 100644
index 1ad5fe0..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/zh_TW/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/locale/zh_TW/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/admindocs/locale/zh_TW/LC_MESSAGES/django.po
deleted file mode 100644
index ea40e88..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/locale/zh_TW/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,372 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# mail6543210 <mail6543210@yahoo.com.tw>, 2013
-# quantum9876 <quantum9876@gmail.com>, 2011
-# yyc1217 <yyc1217@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-06-02 00:30-0400\n"
-"PO-Revision-Date: 2013-08-17 08:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/"
-"language/zh_TW/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_TW\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:59 views.py:61 views.py:63
-msgid "tag:"
-msgstr "標籤:"
-
-#: views.py:94 views.py:96 views.py:98
-msgid "filter:"
-msgstr "過濾器:"
-
-#: views.py:157 views.py:159 views.py:161
-msgid "view:"
-msgstr "視圖:"
-
-#: views.py:189
-#, python-format
-msgid "App %r not found"
-msgstr "找不到 App %r"
-
-#: views.py:196
-#, python-format
-msgid "Model %(model_name)r not found in app %(app_label)r"
-msgstr "未在%(app_label)r 找到模組 %(model_name)r "
-
-#: views.py:208
-#, python-format
-msgid "the related `%(app_label)s.%(data_type)s` object"
-msgstr "有關 `%(app_label)s.%(data_type)s` 的物件"
-
-#: views.py:208 views.py:227 views.py:232 views.py:246 views.py:260
-#: views.py:265
-msgid "model:"
-msgstr "模型:"
-
-#: views.py:223 views.py:255
-#, python-format
-msgid "related `%(app_label)s.%(object_name)s` objects"
-msgstr "有關 `%(app_label)s.%(object_name)s` 的物件"
-
-#: views.py:227 views.py:260
-#, python-format
-msgid "all %s"
-msgstr "所有 %s"
-
-#: views.py:232 views.py:265
-#, python-format
-msgid "number of %s"
-msgstr "%s 的数量"
-
-#. Translators: %s is an object type name
-#: views.py:271
-#, python-format
-msgid "Attributes on %s objects"
-msgstr ""
-
-#: views.py:363
-#, python-format
-msgid "%s does not appear to be a urlpattern object"
-msgstr "%s 似乎不是一個 urlpattern 物件"
-
-#: templates/admin_doc/bookmarklets.html:6 templates/admin_doc/index.html:6
-#: templates/admin_doc/missing_docutils.html:6
-#: templates/admin_doc/model_detail.html:14
-#: templates/admin_doc/model_index.html:8
-#: templates/admin_doc/template_detail.html:6
-#: templates/admin_doc/template_filter_index.html:7
-#: templates/admin_doc/template_tag_index.html:7
-#: templates/admin_doc/view_detail.html:6
-#: templates/admin_doc/view_index.html:7
-msgid "Home"
-msgstr "首頁"
-
-#: templates/admin_doc/bookmarklets.html:7 templates/admin_doc/index.html:7
-#: templates/admin_doc/index.html.py:10 templates/admin_doc/index.html:14
-#: templates/admin_doc/missing_docutils.html:7
-#: templates/admin_doc/missing_docutils.html:14
-#: templates/admin_doc/model_detail.html:15
-#: templates/admin_doc/model_index.html:9
-#: templates/admin_doc/template_detail.html:7
-#: templates/admin_doc/template_filter_index.html:8
-#: templates/admin_doc/template_tag_index.html:8
-#: templates/admin_doc/view_detail.html:7
-#: templates/admin_doc/view_index.html:8
-msgid "Documentation"
-msgstr "文件"
-
-#: templates/admin_doc/bookmarklets.html:8 templates/admin_doc/index.html:29
-msgid "Bookmarklets"
-msgstr "書籤"
-
-#: templates/admin_doc/bookmarklets.html:11
-msgid "Documentation bookmarklets"
-msgstr "文件 bookmarklets"
-
-#: templates/admin_doc/bookmarklets.html:15
-msgid ""
-"\n"
-"<p class=\"help\">To install bookmarklets, drag the link to your bookmarks\n"
-"toolbar, or right-click the link and add it to your bookmarks. Now you can\n"
-"select the bookmarklet from any page in the site. Note that some of these\n"
-"bookmarklets require you to be viewing the site from a computer designated\n"
-"as \"internal\" (talk to your system administrator if you aren't sure if\n"
-"your computer is \"internal\").</p>\n"
-msgstr ""
-"\n"
-"<p class=\"help\">要安裝 bookmarklet,把連結拖進你的書籤工具列,或右擊該連結"
-"後新增到你的書籤裡。現在你可以從網站的任何頁面來選擇 bookmarklet。注意其中某"
-"些 bookmarklet 要求你必須是從被稱為 \"內部\" 的電腦來檢視網站的 (如果你不確定"
-"你的電腦是否在 \"內部\",那就和你的系統管理員談談)。</p>\n"
-
-#: templates/admin_doc/bookmarklets.html:25
-msgid "Documentation for this page"
-msgstr "本頁面的文件"
-
-#: templates/admin_doc/bookmarklets.html:26
-msgid ""
-"Jumps you from any page to the documentation for the view that generates "
-"that page."
-msgstr "讓你跳到用來產生該頁面之檢視的任何一頁文件。"
-
-#: templates/admin_doc/bookmarklets.html:28
-msgid "Show object ID"
-msgstr "顯示物件 ID"
-
-#: templates/admin_doc/bookmarklets.html:29
-msgid ""
-"Shows the content-type and unique ID for pages that represent a single "
-"object."
-msgstr "顯示用來表示單一物件的頁面 content-type 與唯一 ID。"
-
-#: templates/admin_doc/bookmarklets.html:31
-msgid "Edit this object (current window)"
-msgstr "編輯此物件 (目前視窗)"
-
-#: templates/admin_doc/bookmarklets.html:32
-msgid "Jumps to the admin page for pages that represent a single object."
-msgstr "跳到用來表示單一物件的管理頁面。"
-
-#: templates/admin_doc/bookmarklets.html:34
-msgid "Edit this object (new window)"
-msgstr "編輯此物件 (新視窗)"
-
-#: templates/admin_doc/bookmarklets.html:35
-msgid "As above, but opens the admin page in a new window."
-msgstr "同上,但在新視窗裡開啟管理頁面。"
-
-#: templates/admin_doc/index.html:17
-#: templates/admin_doc/template_tag_index.html:9
-msgid "Tags"
-msgstr "標籤"
-
-#: templates/admin_doc/index.html:18
-msgid "List of all the template tags and their functions."
-msgstr ""
-
-#: templates/admin_doc/index.html:20
-#: templates/admin_doc/template_filter_index.html:9
-msgid "Filters"
-msgstr "過濾器"
-
-#: templates/admin_doc/index.html:21
-msgid ""
-"Filters are actions which can be applied to variables in a template to alter "
-"the output."
-msgstr ""
-
-#: templates/admin_doc/index.html:23 templates/admin_doc/model_detail.html:16
-#: templates/admin_doc/model_index.html:10
-#: templates/admin_doc/model_index.html:14
-msgid "Models"
-msgstr "模型"
-
-#: templates/admin_doc/index.html:24
-msgid ""
-"Models are descriptions of all the objects in the system and their "
-"associated fields. Each model has a list of fields which can be accessed as "
-"template variables"
-msgstr ""
-
-#: templates/admin_doc/index.html:26 templates/admin_doc/view_detail.html:8
-#: templates/admin_doc/view_index.html:9
-#: templates/admin_doc/view_index.html:12
-msgid "Views"
-msgstr "視圖"
-
-#: templates/admin_doc/index.html:27
-msgid ""
-"Each page on the public site is generated by a view. The view defines which "
-"template is used to generate the page and which objects are available to "
-"that template."
-msgstr ""
-
-#: templates/admin_doc/index.html:30
-msgid "Tools for your browser to quickly access admin functionality."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:10
-msgid "Please install docutils"
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:17
-#, python-format
-msgid ""
-"The admin documentation system requires Python's <a href=\"%(link)s"
-"\">docutils</a> library."
-msgstr ""
-
-#: templates/admin_doc/missing_docutils.html:19
-#, python-format
-msgid ""
-"Please ask your administrators to install <a href=\"%(link)s\">docutils</a>."
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:21
-#, python-format
-msgid "Model: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:35
-msgid "Field"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:36
-msgid "Type"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:37
-msgid "Description"
-msgstr ""
-
-#: templates/admin_doc/model_detail.html:52
-msgid "Back to Models Documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:18
-msgid "Model documentation"
-msgstr ""
-
-#: templates/admin_doc/model_index.html:43
-msgid "Model groups"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:8
-msgid "Templates"
-msgstr "模版"
-
-#: templates/admin_doc/template_detail.html:13
-#, python-format
-msgid "Template: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:16
-#, python-format
-msgid "Template: \"%(name)s\""
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:20
-#, python-format
-msgid "Search path for template \"%(name)s\" on %(grouper)s:"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:23
-msgid "(does not exist)"
-msgstr ""
-
-#: templates/admin_doc/template_detail.html:28
-msgid "Back to Documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:12
-msgid "Template filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:16
-msgid "Template filter documentation"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:22
-#: templates/admin_doc/template_filter_index.html:43
-msgid "Built-in filters"
-msgstr ""
-
-#: templates/admin_doc/template_filter_index.html:23
-#, python-format
-msgid ""
-"To use these filters, put <code>%(code)s</code> in your template before "
-"using the filter."
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:12
-msgid "Template tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:16
-msgid "Template tag documentation"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:22
-#: templates/admin_doc/template_tag_index.html:43
-msgid "Built-in tags"
-msgstr ""
-
-#: templates/admin_doc/template_tag_index.html:23
-#, python-format
-msgid ""
-"To use these tags, put <code>%(code)s</code> in your template before using "
-"the tag."
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:12
-#, python-format
-msgid "View: %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:23
-msgid "Context:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:28
-msgid "Templates:"
-msgstr ""
-
-#: templates/admin_doc/view_detail.html:32
-msgid "Back to Views Documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:16
-msgid "View documentation"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:22
-msgid "Jump to site"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:35
-#, python-format
-msgid "Views by URL on %(name)s"
-msgstr ""
-
-#: templates/admin_doc/view_index.html:40
-#, python-format
-msgid "View function: %(name)s"
-msgstr ""
-
-#: tests/test_fields.py:29
-msgid "Boolean (Either True or False)"
-msgstr "布林值 (True 或 False)"
-
-#: tests/test_fields.py:39
-#, python-format
-msgid "Field of type: %(field_type)s"
-msgstr "欄位型態: %(field_type)s"
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/middleware.py b/lib/python2.7/site-packages/django/contrib/admindocs/middleware.py
deleted file mode 100644
index ee3fe2c..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/middleware.py
+++ /dev/null
@@ -1,23 +0,0 @@
-from django.conf import settings
-from django import http
-
-class XViewMiddleware(object):
- """
- Adds an X-View header to internal HEAD requests -- used by the documentation system.
- """
- def process_view(self, request, view_func, view_args, view_kwargs):
- """
- If the request method is HEAD and either the IP is internal or the
- user is a logged-in staff member, quickly return with an x-header
- indicating the view function. This is used by the documentation module
- to lookup the view function for an arbitrary page.
- """
- assert hasattr(request, 'user'), (
- "The XView middleware requires authentication middleware to be "
- "installed. Edit your MIDDLEWARE_CLASSES setting to insert "
- "'django.contrib.auth.middleware.AuthenticationMiddleware'.")
- if request.method == 'HEAD' and (request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS or
- (request.user.is_active and request.user.is_staff)):
- response = http.HttpResponse()
- response['X-View'] = "%s.%s" % (view_func.__module__, view_func.__name__)
- return response
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/models.py b/lib/python2.7/site-packages/django/contrib/admindocs/models.py
deleted file mode 100644
index a9f813a..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/models.py
+++ /dev/null
@@ -1 +0,0 @@
-# Empty models.py to allow for specifying admindocs as a test label.
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/bookmarklets.html b/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/bookmarklets.html
deleted file mode 100644
index 819beea..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/bookmarklets.html
+++ /dev/null
@@ -1,38 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; <a href="{% url 'django-admindocs-docroot' %}">{% trans 'Documentation' %}</a>
-&rsaquo; {% trans 'Bookmarklets' %}
-</div>
-{% endblock %}
-{% block title %}{% trans "Documentation bookmarklets" %}{% endblock %}
-
-{% block content %}
-
-{% blocktrans %}
-<p class="help">To install bookmarklets, drag the link to your bookmarks
-toolbar, or right-click the link and add it to your bookmarks. Now you can
-select the bookmarklet from any page in the site. Note that some of these
-bookmarklets require you to be viewing the site from a computer designated
-as "internal" (talk to your system administrator if you aren't sure if
-your computer is "internal").</p>
-{% endblocktrans %}
-
-<div id="content-main">
- <h3><a href="javascript:(function(){if(typeof ActiveXObject!='undefined'){x=new ActiveXObject('Microsoft.XMLHTTP')}else if(typeof XMLHttpRequest!='undefined'){x=new XMLHttpRequest()}else{return;}x.open('HEAD',location.href,false);x.send(null);try{view=x.getResponseHeader('x-view');}catch(e){alert('No view found for this page');return;}if(view=='undefined'){alert('No view found for this page');}document.location='{{ admin_url|escapejs }}doc/views/'+view+'/';})()">{% trans "Documentation for this page" %}</a></h3>
- <p>{% trans "Jumps you from any page to the documentation for the view that generates that page." %}</p>
-
- <h3><a href="javascript:(function(){if(typeof ActiveXObject!='undefined'){x=new ActiveXObject('Microsoft.XMLHTTP')}else if(typeof XMLHttpRequest!='undefined'){x=new XMLHttpRequest()}else{return;}x.open('GET',location.href,false);x.send(null);try{type=x.getResponseHeader('x-object-type');id=x.getResponseHeader('x-object-id');}catch(e){type='(none)';id='(none)';}d=document;b=d.body;e=d.createElement('div');e.id='xxxhhh';s=e.style;s.position='absolute';s.left='10px';s.top='10px';s.font='10px monospace';s.border='1px black solid';s.padding='4px';s.backgroundColor='#eee';e.appendChild(d.createTextNode('Type: '+type));e.appendChild(d.createElement('br'));e.appendChild(d.createTextNode('ID: '+id));e.appendChild(d.createElement('br'));l=d.createElement('a');l.href='#';l.onclick=function(){b.removeChild(e);};l.appendChild(d.createTextNode('[close]'));l.style.textDecoration='none';e.appendChild(l);b.appendChild(e);})();">{% trans "Show object ID" %}</a></h3>
- <p>{% trans "Shows the content-type and unique ID for pages that represent a single object." %}</p>
-
- <h3><a href="javascript:(function(){if(typeof ActiveXObject!='undefined'){var x=new ActiveXObject('Microsoft.XMLHTTP')}else if(typeof XMLHttpRequest!='undefined'){var x=new XMLHttpRequest()}else{return;}x.open('GET',location.href,false);x.send(null);try{var type=x.getResponseHeader('x-object-type');var id=x.getResponseHeader('x-object-id');}catch(e){return;}document.location='{{ admin_url }}'+type.split('.').join('/')+'/'+id+'/';})()">{% trans "Edit this object (current window)" %}</a></h3>
- <p>{% trans "Jumps to the admin page for pages that represent a single object." %}</p>
-
- <h3><a href="javascript:(function(){if(typeof ActiveXObject!='undefined'){var x=new ActiveXObject('Microsoft.XMLHTTP')}else if(typeof XMLHttpRequest!='undefined'){var x=new XMLHttpRequest()}else{return;}x.open('GET',location.href,false);x.send(null);try{var type=x.getResponseHeader('x-object-type');var id=x.getResponseHeader('x-object-id');}catch(e){return;}window.open('{{ admin_url }}'+type.split('.').join('/')+'/'+id+'/');})()">{% trans "Edit this object (new window)" %}</a></h3>
- <p>{% trans "As above, but opens the admin page in a new window." %}</p>
-</div>
-
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/index.html b/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/index.html
deleted file mode 100644
index 2af43d7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/index.html
+++ /dev/null
@@ -1,34 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; {% trans 'Documentation' %}</a>
-</div>
-{% endblock %}
-{% block title %}{% trans 'Documentation' %}{% endblock %}
-
-{% block content %}
-
-<h1>{% trans 'Documentation' %}</h1>
-
-<div id="content-main">
- <h3><a href="tags/">{% trans 'Tags' %}</a></h3>
- <p>{% trans 'List of all the template tags and their functions.' %}</p>
-
- <h3><a href="filters/">{% trans 'Filters' %}</a></h3>
- <p>{% trans 'Filters are actions which can be applied to variables in a template to alter the output.' %}</p>
-
- <h3><a href="models/">{% trans 'Models' %}</a></h3>
- <p>{% trans 'Models are descriptions of all the objects in the system and their associated fields. Each model has a list of fields which can be accessed as template variables' %}.</p>
-
- <h3><a href="views/">{% trans 'Views' %}</a></h3>
- <p>{% trans 'Each page on the public site is generated by a view. The view defines which template is used to generate the page and which objects are available to that template.' %}</p>
-
- <h3><a href="bookmarklets/">{% trans 'Bookmarklets' %}</a></h3>
- <p>{% trans 'Tools for your browser to quickly access admin functionality.' %}</p>
-</div>
-
-{% endblock %}
-
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/missing_docutils.html b/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/missing_docutils.html
deleted file mode 100644
index bd790f7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/missing_docutils.html
+++ /dev/null
@@ -1,22 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; {% trans 'Documentation' %}</a>
-</div>
-{% endblock %}
-{% block title %}{% trans 'Please install docutils' %}{% endblock %}
-
-{% block content %}
-
-<h1>{% trans 'Documentation' %}</h1>
-
-<div id="content-main">
- <h3>{% blocktrans with "http://docutils.sf.net/" as link %}The admin documentation system requires Python's <a href="{{ link }}">docutils</a> library.{% endblocktrans %}</h3>
-
- <p>{% blocktrans with "http://docutils.sf.net/" as link %}Please ask your administrators to install <a href="{{ link }}">docutils</a>.{% endblocktrans %}</p>
-</div>
-
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/model_detail.html b/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/model_detail.html
deleted file mode 100644
index c1e2bf1..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/model_detail.html
+++ /dev/null
@@ -1,54 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block extrahead %}
-{{ block.super }}
-<style type="text/css">
-.module table { width:100%; }
-.module table p { padding: 0; margin: 0; }
-</style>
-{% endblock %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; <a href="{% url 'django-admindocs-docroot' %}">{% trans 'Documentation' %}</a>
-&rsaquo; <a href="{% url 'django-admindocs-models-index' %}">{% trans 'Models' %}</a>
-&rsaquo; {{ name }}
-</div>
-{% endblock %}
-
-{% block title %}{% blocktrans %}Model: {{ name }}{% endblocktrans %}{% endblock %}
-
-{% block content %}
-<div id="content-main">
-<h1>{{ summary }}</h1>
-
-{% if description %}
- <p>{% filter linebreaksbr %}{% trans description %}{% endfilter %}</p>
-{% endif %}
-
-<div class="module">
-<table class="model">
-<thead>
-<tr>
- <th>{% trans 'Field' %}</th>
- <th>{% trans 'Type' %}</th>
- <th>{% trans 'Description' %}</th>
-</tr>
-</thead>
-<tbody>
-{% for field in fields|dictsort:"name" %}
-<tr>
- <td>{{ field.name }}</td>
- <td>{{ field.data_type }}</td>
- <td>{{ field.verbose }}{% if field.help_text %} - {{ field.help_text|safe }}{% endif %}</td>
-</tr>
-{% endfor %}
-</tbody>
-</table>
-</div>
-
-<p class="small"><a href="{% url 'django-admindocs-models-index' %}">&lsaquo; {% trans 'Back to Models Documentation' %}</a></p>
-</div>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/model_index.html b/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/model_index.html
deleted file mode 100644
index d4cde83..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/model_index.html
+++ /dev/null
@@ -1,52 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block coltype %}colSM{% endblock %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; <a href="{% url 'django-admindocs-docroot' %}">{% trans 'Documentation' %}</a>
-&rsaquo; {% trans 'Models' %}
-</div>
-{% endblock %}
-
-{% block title %}{% trans 'Models' %}{% endblock %}
-
-{% block content %}
-
-<h1>{% trans 'Model documentation' %}</h1>
-
-{% regroup models by app_label as grouped_models %}
-
-<div id="content-main">
-{% for group in grouped_models %}
-<div class="module">
-<h2 id="app-{{ group.grouper }}">{{ group.grouper|capfirst }}</h2>
-
-<table class="xfull">
-{% for model in group.list %}
-<tr>
-<th><a href="{% url 'django-admindocs-models-detail' app_label=model.app_label model_name=model.object_name.lower %}">{{ model.object_name }}</a></th>
-</tr>
-{% endfor %}
-</table>
-</div>
-{% endfor %}
-
-</div>
-{% endblock %}
-
-{% block sidebar %}
-<div id="content-related" class="sidebar">
-<div class="module">
-<h2>{% trans 'Model groups' %}</h2>
-<ul>
-{% regroup models by app_label as grouped_models %}
-{% for group in grouped_models %}
- <li><a href="#app-{{ group.grouper }}">{{ group.grouper|capfirst }}</a></li>
-{% endfor %}
-</ul>
-</div>
-</div>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/template_detail.html b/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/template_detail.html
deleted file mode 100644
index 9535724..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/template_detail.html
+++ /dev/null
@@ -1,29 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; <a href="{% url 'django-admindocs-docroot' %}">{% trans 'Documentation' %}</a>
-&rsaquo; {% trans 'Templates' %}
-&rsaquo; {{ name }}
-</div>
-{% endblock %}
-
-{% block title %}{% blocktrans %}Template: {{ name }}{% endblocktrans %}{% endblock %}
-
-{% block content %}
-<h1>{% blocktrans %}Template: "{{ name }}"{% endblocktrans %}</h1>
-
-{% regroup templates|dictsort:"site_id" by site as templates_by_site %}
-{% for group in templates_by_site %}
- <h2>{% blocktrans with group.grouper as grouper %}Search path for template "{{ name }}" on {{ grouper }}:{% endblocktrans %}</h2>
- <ol>
- {% for template in group.list|dictsort:"order" %}
- <li><code>{{ template.file }}</code>{% if not template.exists %} <em>{% trans '(does not exist)' %}</em>{% endif %}</li>
- {% endfor %}
- </ol>
-{% endfor %}
-
-<p class="small"><a href="{% url 'django-admindocs-docroot' %}">&lsaquo; {% trans 'Back to Documentation' %}</a></p>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/template_filter_index.html b/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/template_filter_index.html
deleted file mode 100644
index 04aac39..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/template_filter_index.html
+++ /dev/null
@@ -1,54 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}{% load firstof from future %}
-
-{% block coltype %}colSM{% endblock %}
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; <a href="{% url 'django-admindocs-docroot' %}">{% trans 'Documentation' %}</a>
-&rsaquo; {% trans 'Filters' %}
-</div>
-{% endblock %}
-{% block title %}{% trans 'Template filters' %}{% endblock %}
-
-{% block content %}
-
-<h1>{% trans 'Template filter documentation' %}</h1>
-
-<div id="content-main">
-{% regroup filters|dictsort:"library" by library as filter_libraries %}
-{% for library in filter_libraries %}
-<div class="module">
- <h2>{% firstof library.grouper _("Built-in filters") %}</h2>
- {% if library.grouper %}<p class="small quiet">{% blocktrans with code="{"|add:"% load "|add:library.grouper|add:" %"|add:"}" %}To use these filters, put <code>{{ code }}</code> in your template before using the filter.{% endblocktrans %}</p><hr />{% endif %}
- {% for filter in library.list|dictsort:"name" %}
- <h3 id="{{ library.grouper|default:"built_in" }}-{{ filter.name }}">{{ filter.name }}</h3>
- {{ filter.title }}
- {{ filter.body }}
- {% if not forloop.last %}<hr />{% endif %}
- {% endfor %}
-</div>
-{% endfor %}
-</div>
-
-{% endblock %}
-
-{% block sidebar %}
-
-<div id="content-related">
-
-{% regroup filters|dictsort:"library" by library as filter_libraries %}
-{% for library in filter_libraries %}
-<div class="module">
- <h2>{% firstof library.grouper _("Built-in filters") %}</h2>
- <ul>
- {% for filter in library.list|dictsort:"name" %}
- <li><a href="#{{ library.grouper|default:"built_in" }}-{{ filter.name }}">{{ filter.name }}</a></li>
- {% endfor %}
- </ul>
-</div>
-{% endfor %}
-
-</div>
-
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/template_tag_index.html b/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/template_tag_index.html
deleted file mode 100644
index a3c6eaa..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/template_tag_index.html
+++ /dev/null
@@ -1,54 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}{% load firstof from future %}
-
-{% block coltype %}colSM{% endblock %}
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; <a href="{% url 'django-admindocs-docroot' %}">{% trans 'Documentation' %}</a>
-&rsaquo; {% trans 'Tags' %}
-</div>
-{% endblock %}
-{% block title %}{% trans 'Template tags' %}{% endblock %}
-
-{% block content %}
-
-<h1>{% trans 'Template tag documentation' %}</h1>
-
-<div id="content-main">
-{% regroup tags|dictsort:"library" by library as tag_libraries %}
-{% for library in tag_libraries %}
-<div class="module">
- <h2>{% firstof library.grouper _("Built-in tags") %}</h2>
- {% if library.grouper %}<p class="small quiet">{% blocktrans with code="{"|add:"% load "|add:library.grouper|add:" %"|add:"}" %}To use these tags, put <code>{{ code }}</code> in your template before using the tag.{% endblocktrans %}</p><hr />{% endif %}
- {% for tag in library.list|dictsort:"name" %}
- <h3 id="{{ library.grouper|default:"built_in" }}-{{ tag.name }}">{{ tag.name }}</h3>
- <h4>{{ tag.title|striptags }}</h4>
- {{ tag.body }}
- {% if not forloop.last %}<hr />{% endif %}
- {% endfor %}
-</div>
-{% endfor %}
-</div>
-
-{% endblock %}
-
-{% block sidebar %}
-
-<div id="content-related">
-
-{% regroup tags|dictsort:"library" by library as tag_libraries %}
-{% for library in tag_libraries %}
-<div class="module">
- <h2>{% firstof library.grouper _("Built-in tags") %}</h2>
- <ul>
- {% for tag in library.list|dictsort:"name" %}
- <li><a href="#{{ library.grouper|default:"built_in" }}-{{ tag.name }}">{{ tag.name }}</a></li>
- {% endfor %}
- </ul>
-</div>
-{% endfor %}
-
-</div>
-
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/view_detail.html b/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/view_detail.html
deleted file mode 100644
index 050e6c8..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/view_detail.html
+++ /dev/null
@@ -1,33 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; <a href="{% url 'django-admindocs-docroot' %}">{% trans 'Documentation' %}</a>
-&rsaquo; <a href="{% url 'django-admindocs-views-index' %}">{% trans 'Views' %}</a>
-&rsaquo; {{ name }}
-</div>
-{% endblock %}
-{% block title %}{% blocktrans %}View: {{ name }}{% endblocktrans %}{% endblock %}
-
-{% block content %}
-
-<h1>{{ name }}</h1>
-
-<h2 class="subhead">{{ summary|striptags }}</h2>
-
-{{ body }}
-
-{% if meta.Context %}
-<h3>{% trans 'Context:' %}</h3>
-<p>{{ meta.Context }}</p>
-{% endif %}
-
-{% if meta.Templates %}
-<h3>{% trans 'Templates:' %}</h3>
-<p>{{ meta.Templates }}</p>
-{% endif %}
-
-<p class="small"><a href="{% url 'django-admindocs-views-index' %}">&lsaquo; {% trans 'Back to Views Documentation' %}</a></p>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/view_index.html b/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/view_index.html
deleted file mode 100644
index 891eee7..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/templates/admin_doc/view_index.html
+++ /dev/null
@@ -1,48 +0,0 @@
-{% extends "admin/base_site.html" %}
-{% load i18n %}
-
-{% block coltype %}colSM{% endblock %}
-{% block breadcrumbs %}
-<div class="breadcrumbs">
-<a href="{% url 'admin:index' %}">{% trans 'Home' %}</a>
-&rsaquo; <a href="{% url 'django-admindocs-docroot' %}">{% trans 'Documentation' %}</a>
-&rsaquo; {% trans 'Views' %}
-</div>
-{% endblock %}
-{% block title %}{% trans 'Views' %}{% endblock %}
-
-{% block content %}
-
-<h1>{% trans 'View documentation' %}</h1>
-
-{% regroup views|dictsort:"site_id" by site as views_by_site %}
-
-<div id="content-related" class="sidebar">
-<div class="module">
-<h2>{% trans 'Jump to site' %}</h2>
-<ul>
- {% for site_views in views_by_site %}
- <li><a href="#site{{ site_views.grouper.id }}">{{ site_views.grouper.name }}</a></li>
- {% endfor %}
-</ul>
-</div>
-</div>
-
-<div id="content-main">
-
-{% for site_views in views_by_site %}
-<div class="module">
-<h2 id="site{{ site_views.grouper.id }}">{% blocktrans with site_views.grouper.name as name %}Views by URL on {{ name }}{% endblocktrans %}</h2>
-
-{% for view in site_views.list|dictsort:"url" %}
-{% ifchanged %}
-<h3><a href="{% url 'django-admindocs-views-detail' view=view.full_name %}">{{ view.url }}</a></h3>
-<p class="small quiet">{% blocktrans with view.full_name as name %}View function: {{ name }}{% endblocktrans %}</p>
-<p>{{ view.title }}</p>
-<hr />
-{% endifchanged %}
-{% endfor %}
-</div>
-{% endfor %}
-</div>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/tests/__init__.py b/lib/python2.7/site-packages/django/contrib/admindocs/tests/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/tests/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/tests/test_fields.py b/lib/python2.7/site-packages/django/contrib/admindocs/tests/test_fields.py
deleted file mode 100644
index c048f20..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/tests/test_fields.py
+++ /dev/null
@@ -1,42 +0,0 @@
-from __future__ import absolute_import, unicode_literals
-
-from django.contrib.admindocs import views
-from django.db import models
-from django.db.models import fields
-from django.utils import unittest
-from django.utils.translation import ugettext as _
-
-
-class CustomField(models.Field):
- description = "A custom field type"
-
-class DescriptionLackingField(models.Field):
- pass
-
-
-class TestFieldType(unittest.TestCase):
- def setUp(self):
- pass
-
- def test_field_name(self):
- self.assertRaises(AttributeError,
- views.get_readable_field_data_type, "NotAField"
- )
-
- def test_builtin_fields(self):
- self.assertEqual(
- views.get_readable_field_data_type(fields.BooleanField()),
- _('Boolean (Either True or False)')
- )
-
- def test_custom_fields(self):
- self.assertEqual(
- views.get_readable_field_data_type(CustomField()),
- 'A custom field type'
- )
- self.assertEqual(
- views.get_readable_field_data_type(DescriptionLackingField()),
- _('Field of type: %(field_type)s') % {
- 'field_type': 'DescriptionLackingField'
- }
- )
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/urls.py b/lib/python2.7/site-packages/django/contrib/admindocs/urls.py
deleted file mode 100644
index 4f50049..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/urls.py
+++ /dev/null
@@ -1,41 +0,0 @@
-from django.conf.urls import patterns, url
-from django.contrib.admindocs import views
-
-urlpatterns = patterns('',
- url('^$',
- views.doc_index,
- name='django-admindocs-docroot'
- ),
- url('^bookmarklets/$',
- views.bookmarklets,
- name='django-admindocs-bookmarklets'
- ),
- url('^tags/$',
- views.template_tag_index,
- name='django-admindocs-tags'
- ),
- url('^filters/$',
- views.template_filter_index,
- name='django-admindocs-filters'
- ),
- url('^views/$',
- views.view_index,
- name='django-admindocs-views-index'
- ),
- url('^views/(?P<view>[^/]+)/$',
- views.view_detail,
- name='django-admindocs-views-detail'
- ),
- url('^models/$',
- views.model_index,
- name='django-admindocs-models-index'
- ),
- url('^models/(?P<app_label>[^\.]+)\.(?P<model_name>[^/]+)/$',
- views.model_detail,
- name='django-admindocs-models-detail'
- ),
- url('^templates/(?P<template>.*)/$',
- views.template_detail,
- name='django-admindocs-templates'
- ),
-)
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/utils.py b/lib/python2.7/site-packages/django/contrib/admindocs/utils.py
deleted file mode 100644
index 9be0093..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/utils.py
+++ /dev/null
@@ -1,106 +0,0 @@
-"Misc. utility functions/classes for admin documentation generator."
-
-import re
-from email.parser import HeaderParser
-from email.errors import HeaderParseError
-
-from django.utils.safestring import mark_safe
-from django.core.urlresolvers import reverse
-from django.utils.encoding import force_bytes
-try:
- import docutils.core
- import docutils.nodes
- import docutils.parsers.rst.roles
-except ImportError:
- docutils_is_available = False
-else:
- docutils_is_available = True
-
-def trim_docstring(docstring):
- """
- Uniformly trims leading/trailing whitespace from docstrings.
-
- Based on http://www.python.org/peps/pep-0257.html#handling-docstring-indentation
- """
- if not docstring or not docstring.strip():
- return ''
- # Convert tabs to spaces and split into lines
- lines = docstring.expandtabs().splitlines()
- indent = min([len(line) - len(line.lstrip()) for line in lines if line.lstrip()])
- trimmed = [lines[0].lstrip()] + [line[indent:].rstrip() for line in lines[1:]]
- return "\n".join(trimmed).strip()
-
-def parse_docstring(docstring):
- """
- Parse out the parts of a docstring. Returns (title, body, metadata).
- """
- docstring = trim_docstring(docstring)
- parts = re.split(r'\n{2,}', docstring)
- title = parts[0]
- if len(parts) == 1:
- body = ''
- metadata = {}
- else:
- parser = HeaderParser()
- try:
- metadata = parser.parsestr(parts[-1])
- except HeaderParseError:
- metadata = {}
- body = "\n\n".join(parts[1:])
- else:
- metadata = dict(metadata.items())
- if metadata:
- body = "\n\n".join(parts[1:-1])
- else:
- body = "\n\n".join(parts[1:])
- return title, body, metadata
-
-def parse_rst(text, default_reference_context, thing_being_parsed=None):
- """
- Convert the string from reST to an XHTML fragment.
- """
- overrides = {
- 'doctitle_xform' : True,
- 'inital_header_level' : 3,
- "default_reference_context" : default_reference_context,
- "link_base" : reverse('django-admindocs-docroot').rstrip('/')
- }
- if thing_being_parsed:
- thing_being_parsed = force_bytes("<%s>" % thing_being_parsed)
- parts = docutils.core.publish_parts(text, source_path=thing_being_parsed,
- destination_path=None, writer_name='html',
- settings_overrides=overrides)
- return mark_safe(parts['fragment'])
-
-#
-# reST roles
-#
-ROLES = {
- 'model' : '%s/models/%s/',
- 'view' : '%s/views/%s/',
- 'template' : '%s/templates/%s/',
- 'filter' : '%s/filters/#%s',
- 'tag' : '%s/tags/#%s',
-}
-
-def create_reference_role(rolename, urlbase):
- def _role(name, rawtext, text, lineno, inliner, options=None, content=None):
- if options is None: options = {}
- if content is None: content = []
- node = docutils.nodes.reference(rawtext, text, refuri=(urlbase % (inliner.document.settings.link_base, text.lower())), **options)
- return [node], []
- docutils.parsers.rst.roles.register_canonical_role(rolename, _role)
-
-def default_reference_role(name, rawtext, text, lineno, inliner, options=None, content=None):
- if options is None: options = {}
- if content is None: content = []
- context = inliner.document.settings.default_reference_context
- node = docutils.nodes.reference(rawtext, text, refuri=(ROLES[context] % (inliner.document.settings.link_base, text.lower())), **options)
- return [node], []
-
-if docutils_is_available:
- docutils.parsers.rst.roles.register_canonical_role('cmsreference', default_reference_role)
- docutils.parsers.rst.roles.DEFAULT_INTERPRETED_ROLE = 'cmsreference'
-
- for name, urlbase in ROLES.items():
- create_reference_role(name, urlbase)
diff --git a/lib/python2.7/site-packages/django/contrib/admindocs/views.py b/lib/python2.7/site-packages/django/contrib/admindocs/views.py
deleted file mode 100644
index b3faf06..0000000
--- a/lib/python2.7/site-packages/django/contrib/admindocs/views.py
+++ /dev/null
@@ -1,384 +0,0 @@
-import inspect
-import os
-import re
-
-from django import template
-from django.template import RequestContext
-from django.conf import settings
-from django.contrib.admin.views.decorators import staff_member_required
-from django.db import models
-from django.shortcuts import render_to_response
-from django.core.exceptions import ImproperlyConfigured, ViewDoesNotExist
-from django.http import Http404
-from django.core import urlresolvers
-from django.contrib.admindocs import utils
-from django.contrib.sites.models import Site
-from django.utils.importlib import import_module
-from django.utils._os import upath
-from django.utils import six
-from django.utils.translation import ugettext as _
-
-# Exclude methods starting with these strings from documentation
-MODEL_METHODS_EXCLUDE = ('_', 'add_', 'delete', 'save', 'set_')
-
-class GenericSite(object):
- domain = 'example.com'
- name = 'my site'
-
-@staff_member_required
-def doc_index(request):
- if not utils.docutils_is_available:
- return missing_docutils_page(request)
- return render_to_response('admin_doc/index.html', {
- 'root_path': urlresolvers.reverse('admin:index'),
- }, context_instance=RequestContext(request))
-
-@staff_member_required
-def bookmarklets(request):
- admin_root = urlresolvers.reverse('admin:index')
- return render_to_response('admin_doc/bookmarklets.html', {
- 'root_path': admin_root,
- 'admin_url': "%s://%s%s" % ('https' if request.is_secure() else 'http', request.get_host(), admin_root),
- }, context_instance=RequestContext(request))
-
-@staff_member_required
-def template_tag_index(request):
- if not utils.docutils_is_available:
- return missing_docutils_page(request)
-
- load_all_installed_template_libraries()
-
- tags = []
- app_libs = list(six.iteritems(template.libraries))
- builtin_libs = [(None, lib) for lib in template.builtins]
- for module_name, library in builtin_libs + app_libs:
- for tag_name, tag_func in library.tags.items():
- title, body, metadata = utils.parse_docstring(tag_func.__doc__)
- if title:
- title = utils.parse_rst(title, 'tag', _('tag:') + tag_name)
- if body:
- body = utils.parse_rst(body, 'tag', _('tag:') + tag_name)
- for key in metadata:
- metadata[key] = utils.parse_rst(metadata[key], 'tag', _('tag:') + tag_name)
- if library in template.builtins:
- tag_library = ''
- else:
- tag_library = module_name.split('.')[-1]
- tags.append({
- 'name': tag_name,
- 'title': title,
- 'body': body,
- 'meta': metadata,
- 'library': tag_library,
- })
- return render_to_response('admin_doc/template_tag_index.html', {
- 'root_path': urlresolvers.reverse('admin:index'),
- 'tags': tags
- }, context_instance=RequestContext(request))
-
-@staff_member_required
-def template_filter_index(request):
- if not utils.docutils_is_available:
- return missing_docutils_page(request)
-
- load_all_installed_template_libraries()
-
- filters = []
- app_libs = list(six.iteritems(template.libraries))
- builtin_libs = [(None, lib) for lib in template.builtins]
- for module_name, library in builtin_libs + app_libs:
- for filter_name, filter_func in library.filters.items():
- title, body, metadata = utils.parse_docstring(filter_func.__doc__)
- if title:
- title = utils.parse_rst(title, 'filter', _('filter:') + filter_name)
- if body:
- body = utils.parse_rst(body, 'filter', _('filter:') + filter_name)
- for key in metadata:
- metadata[key] = utils.parse_rst(metadata[key], 'filter', _('filter:') + filter_name)
- if library in template.builtins:
- tag_library = ''
- else:
- tag_library = module_name.split('.')[-1]
- filters.append({
- 'name': filter_name,
- 'title': title,
- 'body': body,
- 'meta': metadata,
- 'library': tag_library,
- })
- return render_to_response('admin_doc/template_filter_index.html', {
- 'root_path': urlresolvers.reverse('admin:index'),
- 'filters': filters
- }, context_instance=RequestContext(request))
-
-@staff_member_required
-def view_index(request):
- if not utils.docutils_is_available:
- return missing_docutils_page(request)
-
- if settings.ADMIN_FOR:
- settings_modules = [import_module(m) for m in settings.ADMIN_FOR]
- else:
- settings_modules = [settings]
-
- views = []
- for settings_mod in settings_modules:
- urlconf = import_module(settings_mod.ROOT_URLCONF)
- view_functions = extract_views_from_urlpatterns(urlconf.urlpatterns)
- if Site._meta.installed:
- site_obj = Site.objects.get(pk=settings_mod.SITE_ID)
- else:
- site_obj = GenericSite()
- for (func, regex) in view_functions:
- views.append({
- 'full_name': '%s.%s' % (func.__module__, getattr(func, '__name__', func.__class__.__name__)),
- 'site_id': settings_mod.SITE_ID,
- 'site': site_obj,
- 'url': simplify_regex(regex),
- })
- return render_to_response('admin_doc/view_index.html', {
- 'root_path': urlresolvers.reverse('admin:index'),
- 'views': views
- }, context_instance=RequestContext(request))
-
-@staff_member_required
-def view_detail(request, view):
- if not utils.docutils_is_available:
- return missing_docutils_page(request)
-
- mod, func = urlresolvers.get_mod_func(view)
- try:
- view_func = getattr(import_module(mod), func)
- except (ImportError, AttributeError):
- raise Http404
- title, body, metadata = utils.parse_docstring(view_func.__doc__)
- if title:
- title = utils.parse_rst(title, 'view', _('view:') + view)
- if body:
- body = utils.parse_rst(body, 'view', _('view:') + view)
- for key in metadata:
- metadata[key] = utils.parse_rst(metadata[key], 'model', _('view:') + view)
- return render_to_response('admin_doc/view_detail.html', {
- 'root_path': urlresolvers.reverse('admin:index'),
- 'name': view,
- 'summary': title,
- 'body': body,
- 'meta': metadata,
- }, context_instance=RequestContext(request))
-
-@staff_member_required
-def model_index(request):
- if not utils.docutils_is_available:
- return missing_docutils_page(request)
- m_list = [m._meta for m in models.get_models()]
- return render_to_response('admin_doc/model_index.html', {
- 'root_path': urlresolvers.reverse('admin:index'),
- 'models': m_list
- }, context_instance=RequestContext(request))
-
-@staff_member_required
-def model_detail(request, app_label, model_name):
- if not utils.docutils_is_available:
- return missing_docutils_page(request)
-
- # Get the model class.
- try:
- app_mod = models.get_app(app_label)
- except ImproperlyConfigured:
- raise Http404(_("App %r not found") % app_label)
- model = None
- for m in models.get_models(app_mod):
- if m._meta.model_name == model_name:
- model = m
- break
- if model is None:
- raise Http404(_("Model %(model_name)r not found in app %(app_label)r") % {'model_name': model_name, 'app_label': app_label})
-
- opts = model._meta
-
- # Gather fields/field descriptions.
- fields = []
- for field in opts.fields:
- # ForeignKey is a special case since the field will actually be a
- # descriptor that returns the other object
- if isinstance(field, models.ForeignKey):
- data_type = field.rel.to.__name__
- app_label = field.rel.to._meta.app_label
- verbose = utils.parse_rst((_("the related `%(app_label)s.%(data_type)s` object") % {'app_label': app_label, 'data_type': data_type}), 'model', _('model:') + data_type)
- else:
- data_type = get_readable_field_data_type(field)
- verbose = field.verbose_name
- fields.append({
- 'name': field.name,
- 'data_type': data_type,
- 'verbose': verbose,
- 'help_text': field.help_text,
- })
-
- # Gather many-to-many fields.
- for field in opts.many_to_many:
- data_type = field.rel.to.__name__
- app_label = field.rel.to._meta.app_label
- verbose = _("related `%(app_label)s.%(object_name)s` objects") % {'app_label': app_label, 'object_name': data_type}
- fields.append({
- 'name': "%s.all" % field.name,
- "data_type": 'List',
- 'verbose': utils.parse_rst(_("all %s") % verbose , 'model', _('model:') + opts.model_name),
- })
- fields.append({
- 'name' : "%s.count" % field.name,
- 'data_type' : 'Integer',
- 'verbose' : utils.parse_rst(_("number of %s") % verbose , 'model', _('model:') + opts.model_name),
- })
-
- # Gather model methods.
- for func_name, func in model.__dict__.items():
- if (inspect.isfunction(func) and len(inspect.getargspec(func)[0]) == 1):
- try:
- for exclude in MODEL_METHODS_EXCLUDE:
- if func_name.startswith(exclude):
- raise StopIteration
- except StopIteration:
- continue
- verbose = func.__doc__
- if verbose:
- verbose = utils.parse_rst(utils.trim_docstring(verbose), 'model', _('model:') + opts.model_name)
- fields.append({
- 'name': func_name,
- 'data_type': get_return_data_type(func_name),
- 'verbose': verbose,
- })
-
- # Gather related objects
- for rel in opts.get_all_related_objects() + opts.get_all_related_many_to_many_objects():
- verbose = _("related `%(app_label)s.%(object_name)s` objects") % {'app_label': rel.opts.app_label, 'object_name': rel.opts.object_name}
- accessor = rel.get_accessor_name()
- fields.append({
- 'name' : "%s.all" % accessor,
- 'data_type' : 'List',
- 'verbose' : utils.parse_rst(_("all %s") % verbose , 'model', _('model:') + opts.model_name),
- })
- fields.append({
- 'name' : "%s.count" % accessor,
- 'data_type' : 'Integer',
- 'verbose' : utils.parse_rst(_("number of %s") % verbose , 'model', _('model:') + opts.model_name),
- })
- return render_to_response('admin_doc/model_detail.html', {
- 'root_path': urlresolvers.reverse('admin:index'),
- 'name': '%s.%s' % (opts.app_label, opts.object_name),
- # Translators: %s is an object type name
- 'summary': _("Attributes on %s objects") % opts.object_name,
- 'description': model.__doc__,
- 'fields': fields,
- }, context_instance=RequestContext(request))
-
-@staff_member_required
-def template_detail(request, template):
- templates = []
- for site_settings_module in settings.ADMIN_FOR:
- settings_mod = import_module(site_settings_module)
- if Site._meta.installed:
- site_obj = Site.objects.get(pk=settings_mod.SITE_ID)
- else:
- site_obj = GenericSite()
- for dir in settings_mod.TEMPLATE_DIRS:
- template_file = os.path.join(dir, template)
- templates.append({
- 'file': template_file,
- 'exists': os.path.exists(template_file),
- 'contents': lambda: open(template_file).read() if os.path.exists(template_file) else '',
- 'site_id': settings_mod.SITE_ID,
- 'site': site_obj,
- 'order': list(settings_mod.TEMPLATE_DIRS).index(dir),
- })
- return render_to_response('admin_doc/template_detail.html', {
- 'root_path': urlresolvers.reverse('admin:index'),
- 'name': template,
- 'templates': templates,
- }, context_instance=RequestContext(request))
-
-####################
-# Helper functions #
-####################
-
-def missing_docutils_page(request):
- """Display an error message for people without docutils"""
- return render_to_response('admin_doc/missing_docutils.html')
-
-def load_all_installed_template_libraries():
- # Load/register all template tag libraries from installed apps.
- for module_name in template.get_templatetags_modules():
- mod = import_module(module_name)
- try:
- libraries = [
- os.path.splitext(p)[0]
- for p in os.listdir(os.path.dirname(upath(mod.__file__)))
- if p.endswith('.py') and p[0].isalpha()
- ]
- except OSError:
- libraries = []
- for library_name in libraries:
- try:
- lib = template.get_library(library_name)
- except template.InvalidTemplateLibrary:
- pass
-
-def get_return_data_type(func_name):
- """Return a somewhat-helpful data type given a function name"""
- if func_name.startswith('get_'):
- if func_name.endswith('_list'):
- return 'List'
- elif func_name.endswith('_count'):
- return 'Integer'
- return ''
-
-def get_readable_field_data_type(field):
- """Returns the description for a given field type, if it exists,
- Fields' descriptions can contain format strings, which will be interpolated
- against the values of field.__dict__ before being output."""
-
- return field.description % field.__dict__
-
-def extract_views_from_urlpatterns(urlpatterns, base=''):
- """
- Return a list of views from a list of urlpatterns.
-
- Each object in the returned list is a two-tuple: (view_func, regex)
- """
- views = []
- for p in urlpatterns:
- if hasattr(p, 'url_patterns'):
- try:
- patterns = p.url_patterns
- except ImportError:
- continue
- views.extend(extract_views_from_urlpatterns(patterns, base + p.regex.pattern))
- elif hasattr(p, 'callback'):
- try:
- views.append((p.callback, base + p.regex.pattern))
- except ViewDoesNotExist:
- continue
- else:
- raise TypeError(_("%s does not appear to be a urlpattern object") % p)
- return views
-
-named_group_matcher = re.compile(r'\(\?P(<\w+>).+?\)')
-non_named_group_matcher = re.compile(r'\(.*?\)')
-
-def simplify_regex(pattern):
- """
- Clean up urlpattern regexes into something somewhat readable by Mere Humans:
- turns something like "^(?P<sport_slug>\w+)/athletes/(?P<athlete_slug>\w+)/$"
- into "<sport_slug>/athletes/<athlete_slug>/"
- """
- # handle named groups first
- pattern = named_group_matcher.sub(lambda m: m.group(1), pattern)
-
- # handle non-named groups
- pattern = non_named_group_matcher.sub("<var>", pattern)
-
- # clean up any outstanding regex-y characters.
- pattern = pattern.replace('^', '').replace('$', '').replace('?', '').replace('//', '/').replace('\\', '')
- if not pattern.startswith('/'):
- pattern = '/' + pattern
- return pattern
diff --git a/lib/python2.7/site-packages/django/contrib/auth/__init__.py b/lib/python2.7/site-packages/django/contrib/auth/__init__.py
deleted file mode 100644
index 32569e6..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/__init__.py
+++ /dev/null
@@ -1,154 +0,0 @@
-import re
-
-from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured, PermissionDenied
-from django.utils.module_loading import import_by_path
-from django.middleware.csrf import rotate_token
-
-from .signals import user_logged_in, user_logged_out, user_login_failed
-
-SESSION_KEY = '_auth_user_id'
-BACKEND_SESSION_KEY = '_auth_user_backend'
-REDIRECT_FIELD_NAME = 'next'
-
-
-def load_backend(path):
- return import_by_path(path)()
-
-
-def get_backends():
- backends = []
- for backend_path in settings.AUTHENTICATION_BACKENDS:
- backends.append(load_backend(backend_path))
- if not backends:
- raise ImproperlyConfigured('No authentication backends have been defined. Does AUTHENTICATION_BACKENDS contain anything?')
- return backends
-
-
-def _clean_credentials(credentials):
- """
- Cleans a dictionary of credentials of potentially sensitive info before
- sending to less secure functions.
-
- Not comprehensive - intended for user_login_failed signal
- """
- SENSITIVE_CREDENTIALS = re.compile('api|token|key|secret|password|signature', re.I)
- CLEANSED_SUBSTITUTE = '********************'
- for key in credentials:
- if SENSITIVE_CREDENTIALS.search(key):
- credentials[key] = CLEANSED_SUBSTITUTE
- return credentials
-
-
-def authenticate(**credentials):
- """
- If the given credentials are valid, return a User object.
- """
- for backend in get_backends():
- try:
- user = backend.authenticate(**credentials)
- except TypeError:
- # This backend doesn't accept these credentials as arguments. Try the next one.
- continue
- except PermissionDenied:
- # This backend says to stop in our tracks - this user should not be allowed in at all.
- return None
- if user is None:
- continue
- # Annotate the user object with the path of the backend.
- user.backend = "%s.%s" % (backend.__module__, backend.__class__.__name__)
- return user
-
- # The credentials supplied are invalid to all backends, fire signal
- user_login_failed.send(sender=__name__,
- credentials=_clean_credentials(credentials))
-
-
-def login(request, user):
- """
- Persist a user id and a backend in the request. This way a user doesn't
- have to reauthenticate on every request. Note that data set during
- the anonymous session is retained when the user logs in.
- """
- if user is None:
- user = request.user
- # TODO: It would be nice to support different login methods, like signed cookies.
- if SESSION_KEY in request.session:
- if request.session[SESSION_KEY] != user.pk:
- # To avoid reusing another user's session, create a new, empty
- # session if the existing session corresponds to a different
- # authenticated user.
- request.session.flush()
- else:
- request.session.cycle_key()
- request.session[SESSION_KEY] = user.pk
- request.session[BACKEND_SESSION_KEY] = user.backend
- if hasattr(request, 'user'):
- request.user = user
- rotate_token(request)
- user_logged_in.send(sender=user.__class__, request=request, user=user)
-
-
-def logout(request):
- """
- Removes the authenticated user's ID from the request and flushes their
- session data.
- """
- # Dispatch the signal before the user is logged out so the receivers have a
- # chance to find out *who* logged out.
- user = getattr(request, 'user', None)
- if hasattr(user, 'is_authenticated') and not user.is_authenticated():
- user = None
- user_logged_out.send(sender=user.__class__, request=request, user=user)
-
- # remember language choice saved to session
- language = request.session.get('django_language')
-
- request.session.flush()
-
- if language is not None:
- request.session['django_language'] = language
-
- if hasattr(request, 'user'):
- from django.contrib.auth.models import AnonymousUser
- request.user = AnonymousUser()
-
-
-def get_user_model():
- """
- Returns the User model that is active in this project.
- """
- from django.db.models import get_model
-
- try:
- app_label, model_name = settings.AUTH_USER_MODEL.split('.')
- except ValueError:
- raise ImproperlyConfigured("AUTH_USER_MODEL must be of the form 'app_label.model_name'")
- user_model = get_model(app_label, model_name)
- if user_model is None:
- raise ImproperlyConfigured("AUTH_USER_MODEL refers to model '%s' that has not been installed" % settings.AUTH_USER_MODEL)
- return user_model
-
-
-def get_user(request):
- """
- Returns the user model instance associated with the given request session.
- If no user is retrieved an instance of `AnonymousUser` is returned.
- """
- from .models import AnonymousUser
- try:
- user_id = request.session[SESSION_KEY]
- backend_path = request.session[BACKEND_SESSION_KEY]
- assert backend_path in settings.AUTHENTICATION_BACKENDS
- backend = load_backend(backend_path)
- user = backend.get_user(user_id) or AnonymousUser()
- except (KeyError, AssertionError):
- user = AnonymousUser()
- return user
-
-
-def get_permission_codename(action, opts):
- """
- Returns the codename of the permission for the specified action.
- """
- return '%s_%s' % (action, opts.model_name)
diff --git a/lib/python2.7/site-packages/django/contrib/auth/admin.py b/lib/python2.7/site-packages/django/contrib/auth/admin.py
deleted file mode 100644
index 033e3cf..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/admin.py
+++ /dev/null
@@ -1,183 +0,0 @@
-from django.db import transaction
-from django.conf import settings
-from django.contrib import admin
-from django.contrib.admin.options import IS_POPUP_VAR
-from django.contrib.auth.forms import (UserCreationForm, UserChangeForm,
- AdminPasswordChangeForm)
-from django.contrib.auth.models import User, Group
-from django.contrib import messages
-from django.core.exceptions import PermissionDenied
-from django.http import HttpResponseRedirect, Http404
-from django.shortcuts import get_object_or_404
-from django.template.response import TemplateResponse
-from django.utils.html import escape
-from django.utils.decorators import method_decorator
-from django.utils.translation import ugettext, ugettext_lazy as _
-from django.views.decorators.csrf import csrf_protect
-from django.views.decorators.debug import sensitive_post_parameters
-
-csrf_protect_m = method_decorator(csrf_protect)
-sensitive_post_parameters_m = method_decorator(sensitive_post_parameters())
-
-
-class GroupAdmin(admin.ModelAdmin):
- search_fields = ('name',)
- ordering = ('name',)
- filter_horizontal = ('permissions',)
-
- def formfield_for_manytomany(self, db_field, request=None, **kwargs):
- if db_field.name == 'permissions':
- qs = kwargs.get('queryset', db_field.rel.to.objects)
- # Avoid a major performance hit resolving permission names which
- # triggers a content_type load:
- kwargs['queryset'] = qs.select_related('content_type')
- return super(GroupAdmin, self).formfield_for_manytomany(
- db_field, request=request, **kwargs)
-
-
-class UserAdmin(admin.ModelAdmin):
- add_form_template = 'admin/auth/user/add_form.html'
- change_user_password_template = None
- fieldsets = (
- (None, {'fields': ('username', 'password')}),
- (_('Personal info'), {'fields': ('first_name', 'last_name', 'email')}),
- (_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser',
- 'groups', 'user_permissions')}),
- (_('Important dates'), {'fields': ('last_login', 'date_joined')}),
- )
- add_fieldsets = (
- (None, {
- 'classes': ('wide',),
- 'fields': ('username', 'password1', 'password2')}
- ),
- )
- form = UserChangeForm
- add_form = UserCreationForm
- change_password_form = AdminPasswordChangeForm
- list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff')
- list_filter = ('is_staff', 'is_superuser', 'is_active', 'groups')
- search_fields = ('username', 'first_name', 'last_name', 'email')
- ordering = ('username',)
- filter_horizontal = ('groups', 'user_permissions',)
-
- def get_fieldsets(self, request, obj=None):
- if not obj:
- return self.add_fieldsets
- return super(UserAdmin, self).get_fieldsets(request, obj)
-
- def get_form(self, request, obj=None, **kwargs):
- """
- Use special form during user creation
- """
- defaults = {}
- if obj is None:
- defaults.update({
- 'form': self.add_form,
- 'fields': admin.util.flatten_fieldsets(self.add_fieldsets),
- })
- defaults.update(kwargs)
- return super(UserAdmin, self).get_form(request, obj, **defaults)
-
- def get_urls(self):
- from django.conf.urls import patterns
- return patterns('',
- (r'^(\d+)/password/$',
- self.admin_site.admin_view(self.user_change_password))
- ) + super(UserAdmin, self).get_urls()
-
- def lookup_allowed(self, lookup, value):
- # See #20078: we don't want to allow any lookups involving passwords.
- if lookup.startswith('password'):
- return False
- return super(UserAdmin, self).lookup_allowed(lookup, value)
-
- @sensitive_post_parameters_m
- @csrf_protect_m
- @transaction.atomic
- def add_view(self, request, form_url='', extra_context=None):
- # It's an error for a user to have add permission but NOT change
- # permission for users. If we allowed such users to add users, they
- # could create superusers, which would mean they would essentially have
- # the permission to change users. To avoid the problem entirely, we
- # disallow users from adding users if they don't have change
- # permission.
- if not self.has_change_permission(request):
- if self.has_add_permission(request) and settings.DEBUG:
- # Raise Http404 in debug mode so that the user gets a helpful
- # error message.
- raise Http404(
- 'Your user does not have the "Change user" permission. In '
- 'order to add users, Django requires that your user '
- 'account have both the "Add user" and "Change user" '
- 'permissions set.')
- raise PermissionDenied
- if extra_context is None:
- extra_context = {}
- username_field = self.model._meta.get_field(self.model.USERNAME_FIELD)
- defaults = {
- 'auto_populated_fields': (),
- 'username_help_text': username_field.help_text,
- }
- extra_context.update(defaults)
- return super(UserAdmin, self).add_view(request, form_url,
- extra_context)
-
- @sensitive_post_parameters_m
- def user_change_password(self, request, id, form_url=''):
- if not self.has_change_permission(request):
- raise PermissionDenied
- user = get_object_or_404(self.get_queryset(request), pk=id)
- if request.method == 'POST':
- form = self.change_password_form(user, request.POST)
- if form.is_valid():
- form.save()
- change_message = self.construct_change_message(request, form, None)
- self.log_change(request, request.user, change_message)
- msg = ugettext('Password changed successfully.')
- messages.success(request, msg)
- return HttpResponseRedirect('..')
- else:
- form = self.change_password_form(user)
-
- fieldsets = [(None, {'fields': list(form.base_fields)})]
- adminForm = admin.helpers.AdminForm(form, fieldsets, {})
-
- context = {
- 'title': _('Change password: %s') % escape(user.get_username()),
- 'adminForm': adminForm,
- 'form_url': form_url,
- 'form': form,
- 'is_popup': IS_POPUP_VAR in request.REQUEST,
- 'add': True,
- 'change': False,
- 'has_delete_permission': False,
- 'has_change_permission': True,
- 'has_absolute_url': False,
- 'opts': self.model._meta,
- 'original': user,
- 'save_as': False,
- 'show_save': True,
- }
- return TemplateResponse(request,
- self.change_user_password_template or
- 'admin/auth/user/change_password.html',
- context, current_app=self.admin_site.name)
-
- def response_add(self, request, obj, post_url_continue=None):
- """
- Determines the HttpResponse for the add_view stage. It mostly defers to
- its superclass implementation but is customized because the User model
- has a slightly different workflow.
- """
- # We should allow further modification of the user just added i.e. the
- # 'Save' button should behave like the 'Save and continue editing'
- # button except in two scenarios:
- # * The user has pressed the 'Save and add another' button
- # * We are adding a user in a popup
- if '_addanother' not in request.POST and IS_POPUP_VAR not in request.POST:
- request.POST['_continue'] = 1
- return super(UserAdmin, self).response_add(request, obj,
- post_url_continue)
-
-admin.site.register(Group, GroupAdmin)
-admin.site.register(User, UserAdmin)
diff --git a/lib/python2.7/site-packages/django/contrib/auth/backends.py b/lib/python2.7/site-packages/django/contrib/auth/backends.py
deleted file mode 100644
index 006c88d..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/backends.py
+++ /dev/null
@@ -1,136 +0,0 @@
-from __future__ import unicode_literals
-from django.contrib.auth import get_user_model
-from django.contrib.auth.models import Permission
-
-
-class ModelBackend(object):
- """
- Authenticates against settings.AUTH_USER_MODEL.
- """
-
- def authenticate(self, username=None, password=None, **kwargs):
- UserModel = get_user_model()
- if username is None:
- username = kwargs.get(UserModel.USERNAME_FIELD)
- try:
- user = UserModel._default_manager.get_by_natural_key(username)
- if user.check_password(password):
- return user
- except UserModel.DoesNotExist:
- # Run the default password hasher once to reduce the timing
- # difference between an existing and a non-existing user (#20760).
- UserModel().set_password(password)
-
- def get_group_permissions(self, user_obj, obj=None):
- """
- Returns a set of permission strings that this user has through his/her
- groups.
- """
- if user_obj.is_anonymous() or obj is not None:
- return set()
- if not hasattr(user_obj, '_group_perm_cache'):
- if user_obj.is_superuser:
- perms = Permission.objects.all()
- else:
- user_groups_field = get_user_model()._meta.get_field('groups')
- user_groups_query = 'group__%s' % user_groups_field.related_query_name()
- perms = Permission.objects.filter(**{user_groups_query: user_obj})
- perms = perms.values_list('content_type__app_label', 'codename').order_by()
- user_obj._group_perm_cache = set(["%s.%s" % (ct, name) for ct, name in perms])
- return user_obj._group_perm_cache
-
- def get_all_permissions(self, user_obj, obj=None):
- if user_obj.is_anonymous() or obj is not None:
- return set()
- if not hasattr(user_obj, '_perm_cache'):
- user_obj._perm_cache = set(["%s.%s" % (p.content_type.app_label, p.codename) for p in user_obj.user_permissions.select_related()])
- user_obj._perm_cache.update(self.get_group_permissions(user_obj))
- return user_obj._perm_cache
-
- def has_perm(self, user_obj, perm, obj=None):
- if not user_obj.is_active:
- return False
- return perm in self.get_all_permissions(user_obj, obj)
-
- def has_module_perms(self, user_obj, app_label):
- """
- Returns True if user_obj has any permissions in the given app_label.
- """
- if not user_obj.is_active:
- return False
- for perm in self.get_all_permissions(user_obj):
- if perm[:perm.index('.')] == app_label:
- return True
- return False
-
- def get_user(self, user_id):
- UserModel = get_user_model()
- try:
- return UserModel._default_manager.get(pk=user_id)
- except UserModel.DoesNotExist:
- return None
-
-
-class RemoteUserBackend(ModelBackend):
- """
- This backend is to be used in conjunction with the ``RemoteUserMiddleware``
- found in the middleware module of this package, and is used when the server
- is handling authentication outside of Django.
-
- By default, the ``authenticate`` method creates ``User`` objects for
- usernames that don't already exist in the database. Subclasses can disable
- this behavior by setting the ``create_unknown_user`` attribute to
- ``False``.
- """
-
- # Create a User object if not already in the database?
- create_unknown_user = True
-
- def authenticate(self, remote_user):
- """
- The username passed as ``remote_user`` is considered trusted. This
- method simply returns the ``User`` object with the given username,
- creating a new ``User`` object if ``create_unknown_user`` is ``True``.
-
- Returns None if ``create_unknown_user`` is ``False`` and a ``User``
- object with the given username is not found in the database.
- """
- if not remote_user:
- return
- user = None
- username = self.clean_username(remote_user)
-
- UserModel = get_user_model()
-
- # Note that this could be accomplished in one try-except clause, but
- # instead we use get_or_create when creating unknown users since it has
- # built-in safeguards for multiple threads.
- if self.create_unknown_user:
- user, created = UserModel.objects.get_or_create(**{
- UserModel.USERNAME_FIELD: username
- })
- if created:
- user = self.configure_user(user)
- else:
- try:
- user = UserModel.objects.get_by_natural_key(username)
- except UserModel.DoesNotExist:
- pass
- return user
-
- def clean_username(self, username):
- """
- Performs any cleaning on the "username" prior to using it to get or
- create the user object. Returns the cleaned username.
-
- By default, returns the username unchanged.
- """
- return username
-
- def configure_user(self, user):
- """
- Configures a user after creation and returns the updated user.
-
- By default, returns the user unmodified.
- """
- return user
diff --git a/lib/python2.7/site-packages/django/contrib/auth/context_processors.py b/lib/python2.7/site-packages/django/contrib/auth/context_processors.py
deleted file mode 100644
index b8ead73..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/context_processors.py
+++ /dev/null
@@ -1,65 +0,0 @@
-# PermWrapper and PermLookupDict proxy the permissions system into objects that
-# the template system can understand.
-
-class PermLookupDict(object):
- def __init__(self, user, app_label):
- self.user, self.app_label = user, app_label
-
- def __repr__(self):
- return str(self.user.get_all_permissions())
-
- def __getitem__(self, perm_name):
- return self.user.has_perm("%s.%s" % (self.app_label, perm_name))
-
- def __iter__(self):
- # To fix 'item in perms.someapp' and __getitem__ iteraction we need to
- # define __iter__. See #18979 for details.
- raise TypeError("PermLookupDict is not iterable.")
-
- def __bool__(self):
- return self.user.has_module_perms(self.app_label)
-
- def __nonzero__(self): # Python 2 compatibility
- return type(self).__bool__(self)
-
-
-class PermWrapper(object):
- def __init__(self, user):
- self.user = user
-
- def __getitem__(self, app_label):
- return PermLookupDict(self.user, app_label)
-
- def __iter__(self):
- # I am large, I contain multitudes.
- raise TypeError("PermWrapper is not iterable.")
-
- def __contains__(self, perm_name):
- """
- Lookup by "someapp" or "someapp.someperm" in perms.
- """
- if '.' not in perm_name:
- # The name refers to module.
- return bool(self[perm_name])
- app_label, perm_name = perm_name.split('.', 1)
- return self[app_label][perm_name]
-
-
-def auth(request):
- """
- Returns context variables required by apps that use Django's authentication
- system.
-
- If there is no 'user' attribute in the request, uses AnonymousUser (from
- django.contrib.auth).
- """
- if hasattr(request, 'user'):
- user = request.user
- else:
- from django.contrib.auth.models import AnonymousUser
- user = AnonymousUser()
-
- return {
- 'user': user,
- 'perms': PermWrapper(user),
- }
diff --git a/lib/python2.7/site-packages/django/contrib/auth/create_superuser.py b/lib/python2.7/site-packages/django/contrib/auth/create_superuser.py
deleted file mode 100644
index 7b58678..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/create_superuser.py
+++ /dev/null
@@ -1,8 +0,0 @@
-"""
-Create a superuser from the command line. Deprecated; use manage.py
-createsuperuser instead.
-"""
-
-if __name__ == "__main__":
- from django.core.management import call_command
- call_command("createsuperuser")
diff --git a/lib/python2.7/site-packages/django/contrib/auth/decorators.py b/lib/python2.7/site-packages/django/contrib/auth/decorators.py
deleted file mode 100644
index 19f7028..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/decorators.py
+++ /dev/null
@@ -1,72 +0,0 @@
-from functools import wraps
-from django.conf import settings
-from django.contrib.auth import REDIRECT_FIELD_NAME
-from django.core.exceptions import PermissionDenied
-from django.utils.decorators import available_attrs
-from django.utils.encoding import force_str
-from django.utils.six.moves.urllib.parse import urlparse
-from django.shortcuts import resolve_url
-
-
-def user_passes_test(test_func, login_url=None, redirect_field_name=REDIRECT_FIELD_NAME):
- """
- Decorator for views that checks that the user passes the given test,
- redirecting to the log-in page if necessary. The test should be a callable
- that takes the user object and returns True if the user passes.
- """
-
- def decorator(view_func):
- @wraps(view_func, assigned=available_attrs(view_func))
- def _wrapped_view(request, *args, **kwargs):
- if test_func(request.user):
- return view_func(request, *args, **kwargs)
- path = request.build_absolute_uri()
- # urlparse chokes on lazy objects in Python 3, force to str
- resolved_login_url = force_str(
- resolve_url(login_url or settings.LOGIN_URL))
- # If the login url is the same scheme and net location then just
- # use the path as the "next" url.
- login_scheme, login_netloc = urlparse(resolved_login_url)[:2]
- current_scheme, current_netloc = urlparse(path)[:2]
- if ((not login_scheme or login_scheme == current_scheme) and
- (not login_netloc or login_netloc == current_netloc)):
- path = request.get_full_path()
- from django.contrib.auth.views import redirect_to_login
- return redirect_to_login(
- path, resolved_login_url, redirect_field_name)
- return _wrapped_view
- return decorator
-
-
-def login_required(function=None, redirect_field_name=REDIRECT_FIELD_NAME, login_url=None):
- """
- Decorator for views that checks that the user is logged in, redirecting
- to the log-in page if necessary.
- """
- actual_decorator = user_passes_test(
- lambda u: u.is_authenticated(),
- login_url=login_url,
- redirect_field_name=redirect_field_name
- )
- if function:
- return actual_decorator(function)
- return actual_decorator
-
-
-def permission_required(perm, login_url=None, raise_exception=False):
- """
- Decorator for views that checks whether a user has a particular permission
- enabled, redirecting to the log-in page if neccesary.
- If the raise_exception parameter is given the PermissionDenied exception
- is raised.
- """
- def check_perms(user):
- # First check if the user has the permission (even anon users)
- if user.has_perm(perm):
- return True
- # In case the 403 handler should be called raise the exception
- if raise_exception:
- raise PermissionDenied
- # As the last resort, show the login form
- return False
- return user_passes_test(check_perms, login_url=login_url)
diff --git a/lib/python2.7/site-packages/django/contrib/auth/fixtures/authtestdata.json b/lib/python2.7/site-packages/django/contrib/auth/fixtures/authtestdata.json
deleted file mode 100644
index 9313288..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/fixtures/authtestdata.json
+++ /dev/null
@@ -1,110 +0,0 @@
-[
- {
- "pk": "1",
- "model": "auth.user",
- "fields": {
- "username": "testclient",
- "first_name": "Test",
- "last_name": "Client",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2006-12-17 07:03:31",
- "groups": [],
- "user_permissions": [],
- "password": "sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161",
- "email": "testclient@example.com",
- "date_joined": "2006-12-17 07:03:31"
- }
- },
- {
- "pk": "2",
- "model": "auth.user",
- "fields": {
- "username": "inactive",
- "first_name": "Inactive",
- "last_name": "User",
- "is_active": false,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2006-12-17 07:03:31",
- "groups": [],
- "user_permissions": [],
- "password": "sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161",
- "email": "testclient2@example.com",
- "date_joined": "2006-12-17 07:03:31"
- }
- },
- {
- "pk": "3",
- "model": "auth.user",
- "fields": {
- "username": "staff",
- "first_name": "Staff",
- "last_name": "Member",
- "is_active": true,
- "is_superuser": false,
- "is_staff": true,
- "last_login": "2006-12-17 07:03:31",
- "groups": [],
- "user_permissions": [],
- "password": "sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161",
- "email": "staffmember@example.com",
- "date_joined": "2006-12-17 07:03:31"
- }
- },
- {
- "pk": "4",
- "model": "auth.user",
- "fields": {
- "username": "empty_password",
- "first_name": "Empty",
- "last_name": "Password",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2006-12-17 07:03:31",
- "groups": [],
- "user_permissions": [],
- "password": "",
- "email": "empty_password@example.com",
- "date_joined": "2006-12-17 07:03:31"
- }
- },
- {
- "pk": "5",
- "model": "auth.user",
- "fields": {
- "username": "unmanageable_password",
- "first_name": "Unmanageable",
- "last_name": "Password",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2006-12-17 07:03:31",
- "groups": [],
- "user_permissions": [],
- "password": "$",
- "email": "unmanageable_password@example.com",
- "date_joined": "2006-12-17 07:03:31"
- }
- },
- {
- "pk": "6",
- "model": "auth.user",
- "fields": {
- "username": "unknown_password",
- "first_name": "Unknown",
- "last_name": "Password",
- "is_active": true,
- "is_superuser": false,
- "is_staff": false,
- "last_login": "2006-12-17 07:03:31",
- "groups": [],
- "user_permissions": [],
- "password": "foo$bar",
- "email": "unknown_password@example.com",
- "date_joined": "2006-12-17 07:03:31"
- }
- }
-]
diff --git a/lib/python2.7/site-packages/django/contrib/auth/fixtures/context-processors-users.xml b/lib/python2.7/site-packages/django/contrib/auth/fixtures/context-processors-users.xml
deleted file mode 100644
index aba8f4a..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/fixtures/context-processors-users.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<django-objects version="1.0">
- <object pk="100" model="auth.user">
- <field type="CharField" name="username">super</field>
- <field type="CharField" name="first_name">Super</field>
- <field type="CharField" name="last_name">User</field>
- <field type="CharField" name="email">super@example.com</field>
- <field type="CharField" name="password">sha1$995a3$6011485ea3834267d719b4c801409b8b1ddd0158</field>
- <field type="BooleanField" name="is_staff">True</field>
- <field type="BooleanField" name="is_active">True</field>
- <field type="BooleanField" name="is_superuser">True</field>
- <field type="DateTimeField" name="last_login">2007-05-30 13:20:10</field>
- <field type="DateTimeField" name="date_joined">2007-05-30 13:20:10</field>
- <field to="auth.group" name="groups" rel="ManyToManyRel"></field>
- <field to="auth.permission" name="user_permissions" rel="ManyToManyRel"></field>
- </object>
-</django-objects>
diff --git a/lib/python2.7/site-packages/django/contrib/auth/fixtures/custom_user.json b/lib/python2.7/site-packages/django/contrib/auth/fixtures/custom_user.json
deleted file mode 100644
index 770bea6..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/fixtures/custom_user.json
+++ /dev/null
@@ -1,14 +0,0 @@
-[
- {
- "pk": "1",
- "model": "auth.customuser",
- "fields": {
- "password": "sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161",
- "last_login": "2006-12-17 07:03:31",
- "email": "staffmember@example.com",
- "is_active": true,
- "is_admin": false,
- "date_of_birth": "1976-11-08"
- }
- }
-] \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/auth/fixtures/natural.json b/lib/python2.7/site-packages/django/contrib/auth/fixtures/natural.json
deleted file mode 100644
index 795c1a3..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/fixtures/natural.json
+++ /dev/null
@@ -1,32 +0,0 @@
-[
- {
- "pk": 1,
- "model": "auth.group",
- "fields": {
- "name": "my_group",
- "permissions": []
- }
- },
- {
- "pk": 1,
- "model": "auth.user",
- "fields": {
- "username": "my_username",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": true,
- "is_staff": true,
- "last_login": "2012-01-13 00:14:00",
- "groups": [
- [
- "my_group"
- ]
- ],
- "user_permissions": [],
- "password": "pbkdf2_sha256$10000$LUyhxJjuLwXF$f6Zbpnx1L5dPze8m0itBaHMDyZ/n6JyhuavQy2RrBIM=",
- "email": "email@example.com",
- "date_joined": "2012-01-13 00:14:00"
- }
- }
-]
diff --git a/lib/python2.7/site-packages/django/contrib/auth/fixtures/regular.json b/lib/python2.7/site-packages/django/contrib/auth/fixtures/regular.json
deleted file mode 100644
index dad891d..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/fixtures/regular.json
+++ /dev/null
@@ -1,30 +0,0 @@
-[
- {
- "pk": 1,
- "model": "auth.group",
- "fields": {
- "name": "my_group",
- "permissions": []
- }
- },
- {
- "pk": 1,
- "model": "auth.user",
- "fields": {
- "username": "my_username",
- "first_name": "",
- "last_name": "",
- "is_active": true,
- "is_superuser": true,
- "is_staff": true,
- "last_login": "2012-01-13 00:14:00",
- "groups": [
- 1
- ],
- "user_permissions": [],
- "password": "pbkdf2_sha256$10000$LUyhxJjuLwXF$f6Zbpnx1L5dPze8m0itBaHMDyZ/n6JyhuavQy2RrBIM=",
- "email": "email@example.com",
- "date_joined": "2012-01-13 00:14:00"
- }
- }
-]
diff --git a/lib/python2.7/site-packages/django/contrib/auth/forms.py b/lib/python2.7/site-packages/django/contrib/auth/forms.py
deleted file mode 100644
index 081d9e5..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/forms.py
+++ /dev/null
@@ -1,367 +0,0 @@
-from __future__ import unicode_literals
-
-import warnings
-
-from django import forms
-from django.forms.util import flatatt
-from django.template import loader
-from django.utils.datastructures import SortedDict
-from django.utils.encoding import force_bytes
-from django.utils.html import format_html, format_html_join
-from django.utils.http import urlsafe_base64_encode
-from django.utils.safestring import mark_safe
-from django.utils.text import capfirst
-from django.utils.translation import ugettext, ugettext_lazy as _
-
-from django.contrib.auth import authenticate, get_user_model
-from django.contrib.auth.models import User
-from django.contrib.auth.hashers import UNUSABLE_PASSWORD_PREFIX, identify_hasher
-from django.contrib.auth.tokens import default_token_generator
-from django.contrib.sites.models import get_current_site
-
-
-UNMASKED_DIGITS_TO_SHOW = 6
-
-mask_password = lambda p: "%s%s" % (p[:UNMASKED_DIGITS_TO_SHOW], "*" * max(len(p) - UNMASKED_DIGITS_TO_SHOW, 0))
-
-
-class ReadOnlyPasswordHashWidget(forms.Widget):
- def render(self, name, value, attrs):
- encoded = value
- final_attrs = self.build_attrs(attrs)
-
- if not encoded or encoded.startswith(UNUSABLE_PASSWORD_PREFIX):
- summary = mark_safe("<strong>%s</strong>" % ugettext("No password set."))
- else:
- try:
- hasher = identify_hasher(encoded)
- except ValueError:
- summary = mark_safe("<strong>%s</strong>" % ugettext(
- "Invalid password format or unknown hashing algorithm."))
- else:
- summary = format_html_join('',
- "<strong>{0}</strong>: {1} ",
- ((ugettext(key), value)
- for key, value in hasher.safe_summary(encoded).items())
- )
-
- return format_html("<div{0}>{1}</div>", flatatt(final_attrs), summary)
-
-
-class ReadOnlyPasswordHashField(forms.Field):
- widget = ReadOnlyPasswordHashWidget
-
- def __init__(self, *args, **kwargs):
- kwargs.setdefault("required", False)
- super(ReadOnlyPasswordHashField, self).__init__(*args, **kwargs)
-
- def bound_data(self, data, initial):
- # Always return initial because the widget doesn't
- # render an input field.
- return initial
-
- def _has_changed(self, initial, data):
- return False
-
-
-class UserCreationForm(forms.ModelForm):
- """
- A form that creates a user, with no privileges, from the given username and
- password.
- """
- error_messages = {
- 'duplicate_username': _("A user with that username already exists."),
- 'password_mismatch': _("The two password fields didn't match."),
- }
- username = forms.RegexField(label=_("Username"), max_length=30,
- regex=r'^[\w.@+-]+$',
- help_text=_("Required. 30 characters or fewer. Letters, digits and "
- "@/./+/-/_ only."),
- error_messages={
- 'invalid': _("This value may contain only letters, numbers and "
- "@/./+/-/_ characters.")})
- password1 = forms.CharField(label=_("Password"),
- widget=forms.PasswordInput)
- password2 = forms.CharField(label=_("Password confirmation"),
- widget=forms.PasswordInput,
- help_text=_("Enter the same password as above, for verification."))
-
- class Meta:
- model = User
- fields = ("username",)
-
- def clean_username(self):
- # Since User.username is unique, this check is redundant,
- # but it sets a nicer error message than the ORM. See #13147.
- username = self.cleaned_data["username"]
- try:
- User._default_manager.get(username=username)
- except User.DoesNotExist:
- return username
- raise forms.ValidationError(
- self.error_messages['duplicate_username'],
- code='duplicate_username',
- )
-
- def clean_password2(self):
- password1 = self.cleaned_data.get("password1")
- password2 = self.cleaned_data.get("password2")
- if password1 and password2 and password1 != password2:
- raise forms.ValidationError(
- self.error_messages['password_mismatch'],
- code='password_mismatch',
- )
- return password2
-
- def save(self, commit=True):
- user = super(UserCreationForm, self).save(commit=False)
- user.set_password(self.cleaned_data["password1"])
- if commit:
- user.save()
- return user
-
-
-class UserChangeForm(forms.ModelForm):
- username = forms.RegexField(
- label=_("Username"), max_length=30, regex=r"^[\w.@+-]+$",
- help_text=_("Required. 30 characters or fewer. Letters, digits and "
- "@/./+/-/_ only."),
- error_messages={
- 'invalid': _("This value may contain only letters, numbers and "
- "@/./+/-/_ characters.")})
- password = ReadOnlyPasswordHashField(label=_("Password"),
- help_text=_("Raw passwords are not stored, so there is no way to see "
- "this user's password, but you can change the password "
- "using <a href=\"password/\">this form</a>."))
-
- class Meta:
- model = User
- fields = '__all__'
-
- def __init__(self, *args, **kwargs):
- super(UserChangeForm, self).__init__(*args, **kwargs)
- f = self.fields.get('user_permissions', None)
- if f is not None:
- f.queryset = f.queryset.select_related('content_type')
-
- def clean_password(self):
- # Regardless of what the user provides, return the initial value.
- # This is done here, rather than on the field, because the
- # field does not have access to the initial value
- return self.initial["password"]
-
-
-class AuthenticationForm(forms.Form):
- """
- Base class for authenticating users. Extend this to get a form that accepts
- username/password logins.
- """
- username = forms.CharField(max_length=254)
- password = forms.CharField(label=_("Password"), widget=forms.PasswordInput)
-
- error_messages = {
- 'invalid_login': _("Please enter a correct %(username)s and password. "
- "Note that both fields may be case-sensitive."),
- 'inactive': _("This account is inactive."),
- }
-
- def __init__(self, request=None, *args, **kwargs):
- """
- The 'request' parameter is set for custom auth use by subclasses.
- The form data comes in via the standard 'data' kwarg.
- """
- self.request = request
- self.user_cache = None
- super(AuthenticationForm, self).__init__(*args, **kwargs)
-
- # Set the label for the "username" field.
- UserModel = get_user_model()
- self.username_field = UserModel._meta.get_field(UserModel.USERNAME_FIELD)
- if self.fields['username'].label is None:
- self.fields['username'].label = capfirst(self.username_field.verbose_name)
-
- def clean(self):
- username = self.cleaned_data.get('username')
- password = self.cleaned_data.get('password')
-
- if username and password:
- self.user_cache = authenticate(username=username,
- password=password)
- if self.user_cache is None:
- raise forms.ValidationError(
- self.error_messages['invalid_login'],
- code='invalid_login',
- params={'username': self.username_field.verbose_name},
- )
- elif not self.user_cache.is_active:
- raise forms.ValidationError(
- self.error_messages['inactive'],
- code='inactive',
- )
- return self.cleaned_data
-
- def check_for_test_cookie(self):
- warnings.warn("check_for_test_cookie is deprecated; ensure your login "
- "view is CSRF-protected.", DeprecationWarning)
-
- def get_user_id(self):
- if self.user_cache:
- return self.user_cache.id
- return None
-
- def get_user(self):
- return self.user_cache
-
-
-class PasswordResetForm(forms.Form):
- email = forms.EmailField(label=_("Email"), max_length=254)
-
- def save(self, domain_override=None,
- subject_template_name='registration/password_reset_subject.txt',
- email_template_name='registration/password_reset_email.html',
- use_https=False, token_generator=default_token_generator,
- from_email=None, request=None):
- """
- Generates a one-use only link for resetting password and sends to the
- user.
- """
- from django.core.mail import send_mail
- UserModel = get_user_model()
- email = self.cleaned_data["email"]
- active_users = UserModel._default_manager.filter(
- email__iexact=email, is_active=True)
- for user in active_users:
- # Make sure that no email is sent to a user that actually has
- # a password marked as unusable
- if not user.has_usable_password():
- continue
- if not domain_override:
- current_site = get_current_site(request)
- site_name = current_site.name
- domain = current_site.domain
- else:
- site_name = domain = domain_override
- c = {
- 'email': user.email,
- 'domain': domain,
- 'site_name': site_name,
- 'uid': urlsafe_base64_encode(force_bytes(user.pk)),
- 'user': user,
- 'token': token_generator.make_token(user),
- 'protocol': 'https' if use_https else 'http',
- }
- subject = loader.render_to_string(subject_template_name, c)
- # Email subject *must not* contain newlines
- subject = ''.join(subject.splitlines())
- email = loader.render_to_string(email_template_name, c)
- send_mail(subject, email, from_email, [user.email])
-
-
-class SetPasswordForm(forms.Form):
- """
- A form that lets a user change set his/her password without entering the
- old password
- """
- error_messages = {
- 'password_mismatch': _("The two password fields didn't match."),
- }
- new_password1 = forms.CharField(label=_("New password"),
- widget=forms.PasswordInput)
- new_password2 = forms.CharField(label=_("New password confirmation"),
- widget=forms.PasswordInput)
-
- def __init__(self, user, *args, **kwargs):
- self.user = user
- super(SetPasswordForm, self).__init__(*args, **kwargs)
-
- def clean_new_password2(self):
- password1 = self.cleaned_data.get('new_password1')
- password2 = self.cleaned_data.get('new_password2')
- if password1 and password2:
- if password1 != password2:
- raise forms.ValidationError(
- self.error_messages['password_mismatch'],
- code='password_mismatch',
- )
- return password2
-
- def save(self, commit=True):
- self.user.set_password(self.cleaned_data['new_password1'])
- if commit:
- self.user.save()
- return self.user
-
-
-class PasswordChangeForm(SetPasswordForm):
- """
- A form that lets a user change his/her password by entering
- their old password.
- """
- error_messages = dict(SetPasswordForm.error_messages, **{
- 'password_incorrect': _("Your old password was entered incorrectly. "
- "Please enter it again."),
- })
- old_password = forms.CharField(label=_("Old password"),
- widget=forms.PasswordInput)
-
- def clean_old_password(self):
- """
- Validates that the old_password field is correct.
- """
- old_password = self.cleaned_data["old_password"]
- if not self.user.check_password(old_password):
- raise forms.ValidationError(
- self.error_messages['password_incorrect'],
- code='password_incorrect',
- )
- return old_password
-
-PasswordChangeForm.base_fields = SortedDict([
- (k, PasswordChangeForm.base_fields[k])
- for k in ['old_password', 'new_password1', 'new_password2']
-])
-
-
-class AdminPasswordChangeForm(forms.Form):
- """
- A form used to change the password of a user in the admin interface.
- """
- error_messages = {
- 'password_mismatch': _("The two password fields didn't match."),
- }
- password1 = forms.CharField(label=_("Password"),
- widget=forms.PasswordInput)
- password2 = forms.CharField(label=_("Password (again)"),
- widget=forms.PasswordInput)
-
- def __init__(self, user, *args, **kwargs):
- self.user = user
- super(AdminPasswordChangeForm, self).__init__(*args, **kwargs)
-
- def clean_password2(self):
- password1 = self.cleaned_data.get('password1')
- password2 = self.cleaned_data.get('password2')
- if password1 and password2:
- if password1 != password2:
- raise forms.ValidationError(
- self.error_messages['password_mismatch'],
- code='password_mismatch',
- )
- return password2
-
- def save(self, commit=True):
- """
- Saves the new password.
- """
- self.user.set_password(self.cleaned_data["password1"])
- if commit:
- self.user.save()
- return self.user
-
- def _get_changed_data(self):
- data = super(AdminPasswordChangeForm, self).changed_data
- for name in self.fields.keys():
- if name not in data:
- return []
- return ['password']
- changed_data = property(_get_changed_data)
diff --git a/lib/python2.7/site-packages/django/contrib/auth/handlers/__init__.py b/lib/python2.7/site-packages/django/contrib/auth/handlers/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/handlers/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/auth/handlers/modwsgi.py b/lib/python2.7/site-packages/django/contrib/auth/handlers/modwsgi.py
deleted file mode 100644
index f14afcf..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/handlers/modwsgi.py
+++ /dev/null
@@ -1,47 +0,0 @@
-from django.contrib import auth
-from django import db
-from django.utils.encoding import force_bytes
-
-
-def check_password(environ, username, password):
- """
- Authenticates against Django's auth database
-
- mod_wsgi docs specify None, True, False as return value depending
- on whether the user exists and authenticates.
- """
-
- UserModel = auth.get_user_model()
- # db connection state is managed similarly to the wsgi handler
- # as mod_wsgi may call these functions outside of a request/response cycle
- db.reset_queries()
-
- try:
- try:
- user = UserModel._default_manager.get_by_natural_key(username)
- except UserModel.DoesNotExist:
- return None
- if not user.is_active:
- return None
- return user.check_password(password)
- finally:
- db.close_old_connections()
-
-def groups_for_user(environ, username):
- """
- Authorizes a user based on groups
- """
-
- UserModel = auth.get_user_model()
- db.reset_queries()
-
- try:
- try:
- user = UserModel._default_manager.get_by_natural_key(username)
- except UserModel.DoesNotExist:
- return []
- if not user.is_active:
- return []
- return [force_bytes(group.name) for group in user.groups.all()]
- finally:
- db.close_old_connections()
diff --git a/lib/python2.7/site-packages/django/contrib/auth/hashers.py b/lib/python2.7/site-packages/django/contrib/auth/hashers.py
deleted file mode 100644
index d285126..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/hashers.py
+++ /dev/null
@@ -1,515 +0,0 @@
-from __future__ import unicode_literals
-
-import base64
-import binascii
-import hashlib
-
-from django.dispatch import receiver
-from django.conf import settings
-from django.test.signals import setting_changed
-from django.utils import importlib
-from django.utils.datastructures import SortedDict
-from django.utils.encoding import force_bytes, force_str, force_text
-from django.core.exceptions import ImproperlyConfigured
-from django.utils.crypto import (
- pbkdf2, constant_time_compare, get_random_string)
-from django.utils.module_loading import import_by_path
-from django.utils.translation import ugettext_noop as _
-
-
-UNUSABLE_PASSWORD_PREFIX = '!' # This will never be a valid encoded hash
-UNUSABLE_PASSWORD_SUFFIX_LENGTH = 40 # number of random chars to add after UNUSABLE_PASSWORD_PREFIX
-HASHERS = None # lazily loaded from PASSWORD_HASHERS
-PREFERRED_HASHER = None # defaults to first item in PASSWORD_HASHERS
-
-
-@receiver(setting_changed)
-def reset_hashers(**kwargs):
- if kwargs['setting'] == 'PASSWORD_HASHERS':
- global HASHERS, PREFERRED_HASHER
- HASHERS = None
- PREFERRED_HASHER = None
-
-
-def is_password_usable(encoded):
- if encoded is None or encoded.startswith(UNUSABLE_PASSWORD_PREFIX):
- return False
- try:
- identify_hasher(encoded)
- except ValueError:
- return False
- return True
-
-
-def check_password(password, encoded, setter=None, preferred='default'):
- """
- Returns a boolean of whether the raw password matches the three
- part encoded digest.
-
- If setter is specified, it'll be called when you need to
- regenerate the password.
- """
- if password is None or not is_password_usable(encoded):
- return False
-
- preferred = get_hasher(preferred)
- hasher = identify_hasher(encoded)
-
- must_update = hasher.algorithm != preferred.algorithm
- if not must_update:
- must_update = preferred.must_update(encoded)
- is_correct = hasher.verify(password, encoded)
- if setter and is_correct and must_update:
- setter(password)
- return is_correct
-
-
-def make_password(password, salt=None, hasher='default'):
- """
- Turn a plain-text password into a hash for database storage
-
- Same as encode() but generates a new random salt.
- If password is None then a concatenation of
- UNUSABLE_PASSWORD_PREFIX and a random string will be returned
- which disallows logins. Additional random string reduces chances
- of gaining access to staff or superuser accounts.
- See ticket #20079 for more info.
- """
- if password is None:
- return UNUSABLE_PASSWORD_PREFIX + get_random_string(UNUSABLE_PASSWORD_SUFFIX_LENGTH)
- hasher = get_hasher(hasher)
-
- if not salt:
- salt = hasher.salt()
-
- return hasher.encode(password, salt)
-
-
-def load_hashers(password_hashers=None):
- global HASHERS
- global PREFERRED_HASHER
- hashers = []
- if not password_hashers:
- password_hashers = settings.PASSWORD_HASHERS
- for backend in password_hashers:
- hasher = import_by_path(backend)()
- if not getattr(hasher, 'algorithm'):
- raise ImproperlyConfigured("hasher doesn't specify an "
- "algorithm name: %s" % backend)
- hashers.append(hasher)
- HASHERS = dict([(hasher.algorithm, hasher) for hasher in hashers])
- PREFERRED_HASHER = hashers[0]
-
-
-def get_hasher(algorithm='default'):
- """
- Returns an instance of a loaded password hasher.
-
- If algorithm is 'default', the default hasher will be returned.
- This function will also lazy import hashers specified in your
- settings file if needed.
- """
- if hasattr(algorithm, 'algorithm'):
- return algorithm
-
- elif algorithm == 'default':
- if PREFERRED_HASHER is None:
- load_hashers()
- return PREFERRED_HASHER
- else:
- if HASHERS is None:
- load_hashers()
- if algorithm not in HASHERS:
- raise ValueError("Unknown password hashing algorithm '%s'. "
- "Did you specify it in the PASSWORD_HASHERS "
- "setting?" % algorithm)
- return HASHERS[algorithm]
-
-
-def identify_hasher(encoded):
- """
- Returns an instance of a loaded password hasher.
-
- Identifies hasher algorithm by examining encoded hash, and calls
- get_hasher() to return hasher. Raises ValueError if
- algorithm cannot be identified, or if hasher is not loaded.
- """
- # Ancient versions of Django created plain MD5 passwords and accepted
- # MD5 passwords with an empty salt.
- if ((len(encoded) == 32 and '$' not in encoded) or
- (len(encoded) == 37 and encoded.startswith('md5$$'))):
- algorithm = 'unsalted_md5'
- # Ancient versions of Django accepted SHA1 passwords with an empty salt.
- elif len(encoded) == 46 and encoded.startswith('sha1$$'):
- algorithm = 'unsalted_sha1'
- else:
- algorithm = encoded.split('$', 1)[0]
- return get_hasher(algorithm)
-
-
-def mask_hash(hash, show=6, char="*"):
- """
- Returns the given hash, with only the first ``show`` number shown. The
- rest are masked with ``char`` for security reasons.
- """
- masked = hash[:show]
- masked += char * len(hash[show:])
- return masked
-
-
-class BasePasswordHasher(object):
- """
- Abstract base class for password hashers
-
- When creating your own hasher, you need to override algorithm,
- verify(), encode() and safe_summary().
-
- PasswordHasher objects are immutable.
- """
- algorithm = None
- library = None
-
- def _load_library(self):
- if self.library is not None:
- if isinstance(self.library, (tuple, list)):
- name, mod_path = self.library
- else:
- name = mod_path = self.library
- try:
- module = importlib.import_module(mod_path)
- except ImportError as e:
- raise ValueError("Couldn't load %r algorithm library: %s" %
- (self.__class__.__name__, e))
- return module
- raise ValueError("Hasher %r doesn't specify a library attribute" %
- self.__class__.__name__)
-
- def salt(self):
- """
- Generates a cryptographically secure nonce salt in ascii
- """
- return get_random_string()
-
- def verify(self, password, encoded):
- """
- Checks if the given password is correct
- """
- raise NotImplementedError()
-
- def encode(self, password, salt):
- """
- Creates an encoded database value
-
- The result is normally formatted as "algorithm$salt$hash" and
- must be fewer than 128 characters.
- """
- raise NotImplementedError()
-
- def safe_summary(self, encoded):
- """
- Returns a summary of safe values
-
- The result is a dictionary and will be used where the password field
- must be displayed to construct a safe representation of the password.
- """
- raise NotImplementedError()
-
- def must_update(self, encoded):
- return False
-
-
-class PBKDF2PasswordHasher(BasePasswordHasher):
- """
- Secure password hashing using the PBKDF2 algorithm (recommended)
-
- Configured to use PBKDF2 + HMAC + SHA256 with 12000 iterations.
- The result is a 64 byte binary string. Iterations may be changed
- safely but you must rename the algorithm if you change SHA256.
- """
- algorithm = "pbkdf2_sha256"
- iterations = 12000
- digest = hashlib.sha256
-
- def encode(self, password, salt, iterations=None):
- assert password is not None
- assert salt and '$' not in salt
- if not iterations:
- iterations = self.iterations
- hash = pbkdf2(password, salt, iterations, digest=self.digest)
- hash = base64.b64encode(hash).decode('ascii').strip()
- return "%s$%d$%s$%s" % (self.algorithm, iterations, salt, hash)
-
- def verify(self, password, encoded):
- algorithm, iterations, salt, hash = encoded.split('$', 3)
- assert algorithm == self.algorithm
- encoded_2 = self.encode(password, salt, int(iterations))
- return constant_time_compare(encoded, encoded_2)
-
- def safe_summary(self, encoded):
- algorithm, iterations, salt, hash = encoded.split('$', 3)
- assert algorithm == self.algorithm
- return SortedDict([
- (_('algorithm'), algorithm),
- (_('iterations'), iterations),
- (_('salt'), mask_hash(salt)),
- (_('hash'), mask_hash(hash)),
- ])
-
- def must_update(self, encoded):
- algorithm, iterations, salt, hash = encoded.split('$', 3)
- return int(iterations) != self.iterations
-
-
-class PBKDF2SHA1PasswordHasher(PBKDF2PasswordHasher):
- """
- Alternate PBKDF2 hasher which uses SHA1, the default PRF
- recommended by PKCS #5. This is compatible with other
- implementations of PBKDF2, such as openssl's
- PKCS5_PBKDF2_HMAC_SHA1().
- """
- algorithm = "pbkdf2_sha1"
- digest = hashlib.sha1
-
-
-class BCryptSHA256PasswordHasher(BasePasswordHasher):
- """
- Secure password hashing using the bcrypt algorithm (recommended)
-
- This is considered by many to be the most secure algorithm but you
- must first install the bcrypt library. Please be warned that
- this library depends on native C code and might cause portability
- issues.
- """
- algorithm = "bcrypt_sha256"
- digest = hashlib.sha256
- library = ("bcrypt", "bcrypt")
- rounds = 12
-
- def salt(self):
- bcrypt = self._load_library()
- return bcrypt.gensalt(self.rounds)
-
- def encode(self, password, salt):
- bcrypt = self._load_library()
- # Need to reevaluate the force_bytes call once bcrypt is supported on
- # Python 3
-
- # Hash the password prior to using bcrypt to prevent password truncation
- # See: https://code.djangoproject.com/ticket/20138
- if self.digest is not None:
- # We use binascii.hexlify here because Python3 decided that a hex encoded
- # bytestring is somehow a unicode.
- password = binascii.hexlify(self.digest(force_bytes(password)).digest())
- else:
- password = force_bytes(password)
-
- data = bcrypt.hashpw(password, salt)
- return "%s$%s" % (self.algorithm, force_text(data))
-
- def verify(self, password, encoded):
- algorithm, data = encoded.split('$', 1)
- assert algorithm == self.algorithm
- bcrypt = self._load_library()
-
- # Hash the password prior to using bcrypt to prevent password truncation
- # See: https://code.djangoproject.com/ticket/20138
- if self.digest is not None:
- # We use binascii.hexlify here because Python3 decided that a hex encoded
- # bytestring is somehow a unicode.
- password = binascii.hexlify(self.digest(force_bytes(password)).digest())
- else:
- password = force_bytes(password)
-
- # Ensure that our data is a bytestring
- data = force_bytes(data)
- # force_bytes() necessary for py-bcrypt compatibility
- hashpw = force_bytes(bcrypt.hashpw(password, data))
-
- return constant_time_compare(data, hashpw)
-
- def safe_summary(self, encoded):
- algorithm, empty, algostr, work_factor, data = encoded.split('$', 4)
- assert algorithm == self.algorithm
- salt, checksum = data[:22], data[22:]
- return SortedDict([
- (_('algorithm'), algorithm),
- (_('work factor'), work_factor),
- (_('salt'), mask_hash(salt)),
- (_('checksum'), mask_hash(checksum)),
- ])
-
-
-class BCryptPasswordHasher(BCryptSHA256PasswordHasher):
- """
- Secure password hashing using the bcrypt algorithm
-
- This is considered by many to be the most secure algorithm but you
- must first install the bcrypt library. Please be warned that
- this library depends on native C code and might cause portability
- issues.
-
- This hasher does not first hash the password which means it is subject to
- the 72 character bcrypt password truncation, most use cases should prefer
- the BCryptSha512PasswordHasher.
-
- See: https://code.djangoproject.com/ticket/20138
- """
- algorithm = "bcrypt"
- digest = None
-
-
-class SHA1PasswordHasher(BasePasswordHasher):
- """
- The SHA1 password hashing algorithm (not recommended)
- """
- algorithm = "sha1"
-
- def encode(self, password, salt):
- assert password is not None
- assert salt and '$' not in salt
- hash = hashlib.sha1(force_bytes(salt + password)).hexdigest()
- return "%s$%s$%s" % (self.algorithm, salt, hash)
-
- def verify(self, password, encoded):
- algorithm, salt, hash = encoded.split('$', 2)
- assert algorithm == self.algorithm
- encoded_2 = self.encode(password, salt)
- return constant_time_compare(encoded, encoded_2)
-
- def safe_summary(self, encoded):
- algorithm, salt, hash = encoded.split('$', 2)
- assert algorithm == self.algorithm
- return SortedDict([
- (_('algorithm'), algorithm),
- (_('salt'), mask_hash(salt, show=2)),
- (_('hash'), mask_hash(hash)),
- ])
-
-
-class MD5PasswordHasher(BasePasswordHasher):
- """
- The Salted MD5 password hashing algorithm (not recommended)
- """
- algorithm = "md5"
-
- def encode(self, password, salt):
- assert password is not None
- assert salt and '$' not in salt
- hash = hashlib.md5(force_bytes(salt + password)).hexdigest()
- return "%s$%s$%s" % (self.algorithm, salt, hash)
-
- def verify(self, password, encoded):
- algorithm, salt, hash = encoded.split('$', 2)
- assert algorithm == self.algorithm
- encoded_2 = self.encode(password, salt)
- return constant_time_compare(encoded, encoded_2)
-
- def safe_summary(self, encoded):
- algorithm, salt, hash = encoded.split('$', 2)
- assert algorithm == self.algorithm
- return SortedDict([
- (_('algorithm'), algorithm),
- (_('salt'), mask_hash(salt, show=2)),
- (_('hash'), mask_hash(hash)),
- ])
-
-
-class UnsaltedSHA1PasswordHasher(BasePasswordHasher):
- """
- Very insecure algorithm that you should *never* use; stores SHA1 hashes
- with an empty salt.
-
- This class is implemented because Django used to accept such password
- hashes. Some older Django installs still have these values lingering
- around so we need to handle and upgrade them properly.
- """
- algorithm = "unsalted_sha1"
-
- def salt(self):
- return ''
-
- def encode(self, password, salt):
- assert salt == ''
- hash = hashlib.sha1(force_bytes(password)).hexdigest()
- return 'sha1$$%s' % hash
-
- def verify(self, password, encoded):
- encoded_2 = self.encode(password, '')
- return constant_time_compare(encoded, encoded_2)
-
- def safe_summary(self, encoded):
- assert encoded.startswith('sha1$$')
- hash = encoded[6:]
- return SortedDict([
- (_('algorithm'), self.algorithm),
- (_('hash'), mask_hash(hash)),
- ])
-
-
-class UnsaltedMD5PasswordHasher(BasePasswordHasher):
- """
- Incredibly insecure algorithm that you should *never* use; stores unsalted
- MD5 hashes without the algorithm prefix, also accepts MD5 hashes with an
- empty salt.
-
- This class is implemented because Django used to store passwords this way
- and to accept such password hashes. Some older Django installs still have
- these values lingering around so we need to handle and upgrade them
- properly.
- """
- algorithm = "unsalted_md5"
-
- def salt(self):
- return ''
-
- def encode(self, password, salt):
- assert salt == ''
- return hashlib.md5(force_bytes(password)).hexdigest()
-
- def verify(self, password, encoded):
- if len(encoded) == 37 and encoded.startswith('md5$$'):
- encoded = encoded[5:]
- encoded_2 = self.encode(password, '')
- return constant_time_compare(encoded, encoded_2)
-
- def safe_summary(self, encoded):
- return SortedDict([
- (_('algorithm'), self.algorithm),
- (_('hash'), mask_hash(encoded, show=3)),
- ])
-
-
-class CryptPasswordHasher(BasePasswordHasher):
- """
- Password hashing using UNIX crypt (not recommended)
-
- The crypt module is not supported on all platforms.
- """
- algorithm = "crypt"
- library = "crypt"
-
- def salt(self):
- return get_random_string(2)
-
- def encode(self, password, salt):
- crypt = self._load_library()
- assert len(salt) == 2
- data = crypt.crypt(force_str(password), salt)
- # we don't need to store the salt, but Django used to do this
- return "%s$%s$%s" % (self.algorithm, '', data)
-
- def verify(self, password, encoded):
- crypt = self._load_library()
- algorithm, salt, data = encoded.split('$', 2)
- assert algorithm == self.algorithm
- return constant_time_compare(data, crypt.crypt(force_str(password), data))
-
- def safe_summary(self, encoded):
- algorithm, salt, data = encoded.split('$', 2)
- assert algorithm == self.algorithm
- return SortedDict([
- (_('algorithm'), algorithm),
- (_('salt'), salt),
- (_('hash'), mask_hash(data, show=3)),
- ])
-
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/af/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/af/LC_MESSAGES/django.mo
deleted file mode 100644
index d4333bf..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/af/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/af/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/af/LC_MESSAGES/django.po
deleted file mode 100644
index a2004d3..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/af/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,271 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Afrikaans (http://www.transifex.com/projects/p/django/"
-"language/af/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: af\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr ""
-
-#: admin.py:42
-msgid "Permissions"
-msgstr ""
-
-#: admin.py:44
-msgid "Important dates"
-msgstr ""
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr ""
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr ""
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr ""
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr ""
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr ""
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Wagwoord"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr ""
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Vul dieselfde wagwoord in as hierbo, for bevestiging."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr ""
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nuwe wagwoord"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr ""
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Ou wagwoord"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Wagwoord (weer)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr ""
-
-#: models.py:74
-msgid "codename"
-msgstr ""
-
-#: models.py:78
-msgid "permission"
-msgstr ""
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr ""
-
-#: models.py:128
-msgid "group"
-msgstr ""
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr ""
-
-#: models.py:200
-msgid "password"
-msgstr ""
-
-#: models.py:201
-msgid "last login"
-msgstr ""
-
-#: models.py:291
-msgid "superuser status"
-msgstr ""
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr ""
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr ""
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr ""
-
-#: models.py:373
-msgid "last name"
-msgstr ""
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr ""
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-
-#: models.py:378
-msgid "active"
-msgstr ""
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-
-#: models.py:381
-msgid "date joined"
-msgstr ""
-
-#: models.py:389
-msgid "user"
-msgstr ""
-
-#: models.py:390
-msgid "users"
-msgstr ""
-
-#: views.py:89
-msgid "Logged out"
-msgstr ""
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ar/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/ar/LC_MESSAGES/django.mo
deleted file mode 100644
index cc246c0..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ar/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ar/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/ar/LC_MESSAGES/django.po
deleted file mode 100644
index 125333a..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ar/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,282 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ahmad Khayyat <akhayyat@gmail.com>, 2013
-# dado_eyad <d.eyad.t@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-28 09:47+0000\n"
-"Last-Translator: dado_eyad <d.eyad.t@gmail.com>\n"
-"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/"
-"ar/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "المعلومات الشخصية"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "الصلاحيات"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "تواريخ مهمة"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "تم تغيير كلمة المرور بنجاح."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "غيّر كلمة المرور: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "لا يوجد كلمة سر حتى الآن."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "تنسيق كلمة المرور غير صالح أو خوارزمية التجزئة غير معروفة."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "هناك مستخدم موجود مسبقاً بهذا الاسم."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "حقلا كلمتي المرور غير متطابقين."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "اسم المستخدم"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "مطلوب. 30 حرف أو أقل. يتكوّن من حروف، وأرقام، والرموز @/./+/-/_ فقط."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "هذه القيمة يجب أن تحتوي الأحرف، والأرقام، والرموز @/./+/-/_ فقط."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "كلمة المرور"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "تأكيد كلمة المرور"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "أدخل كلمة المرور أعلاه مرة أخرى لتأكيدها."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"لا يتم حفظ كلمات السر كما هي، لذلك لا يمكن عرض كلمة السر هذه، ولكن يمكن "
-"تغييرها باستخدام <a href=\"password/\">هذا النموذج</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr "الرجاء إدخال ال%(username)s و كلمة السر الصحيحين."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "هذا الحساب غير نشط."
-
-#: forms.py:206
-msgid "Email"
-msgstr "بريد إلكتروني"
-
-#: forms.py:256
-msgid "New password"
-msgstr "كلمة المرور الجديدة"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "تأكيد كلمة المرور الجديدة"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "كلمة مرورك القديمة غير صحيحة. رجاءً أدخلها مرة أخرى."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "كلمة المرور القديمة"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "كلمة المرور (مجدداً)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "خوارزمية"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "التكرارات"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "الاسم"
-
-#: models.py:74
-msgid "codename"
-msgstr "الاسم الرمزي"
-
-#: models.py:78
-msgid "permission"
-msgstr "الصلاحية"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "الصلاحيات"
-
-#: models.py:128
-msgid "group"
-msgstr "مجموعة"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "المجموعات"
-
-#: models.py:200
-msgid "password"
-msgstr "كلمة المرور"
-
-#: models.py:201
-msgid "last login"
-msgstr "آخر دخول"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "حالة المستخدم الخارق"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"حدد بأن هذا المستخدم يمتلك كافة الصلاحيات دون الحاجة لتحديدها له تصريحا."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"المجموعات التي ينتمي إليها المستخدم. سوف يحصل المستخدم على كافة الصلاحيات "
-"المعينة لكل مجموعة ينتمي إليها."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "صلاحيات المستخدم"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "الصلاحيات الخاصة بالمستخدم."
-
-#: models.py:368
-msgid "username"
-msgstr "اسم المستخدم"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "مطلوب. 30 حرف أو أقل. يتكوّن من حروف، وأرقام، والرموز @/./+/-/_ فقط."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "أدخل اسم مستخدم صحيح."
-
-#: models.py:372
-msgid "first name"
-msgstr "الاسم الأول"
-
-#: models.py:373
-msgid "last name"
-msgstr "الاسم الأخير"
-
-#: models.py:374
-msgid "email address"
-msgstr "عنوان بريد إلكتروني"
-
-#: models.py:375
-msgid "staff status"
-msgstr "حالة الطاقم"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "يحدد ما إذا كان المستخدم يستطيع الدخول إلى موقع الإدارة هذا."
-
-#: models.py:378
-msgid "active"
-msgstr "نشط"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"يحدد ما إذا كان المستخدم سيُعامل على أنّه نشط. أزل تحديد ها الخيار بدلاً من حذف "
-"الحسابات."
-
-#: models.py:381
-msgid "date joined"
-msgstr "تاريخ الانضمام"
-
-#: models.py:389
-msgid "user"
-msgstr "مستخدم"
-
-#: models.py:390
-msgid "users"
-msgstr "المستخدمين"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "تم الخروج"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "إعادة تعيين كلمة المرور على %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "أدخل عنوان بريد إلكتروني صحيح."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/az/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/az/LC_MESSAGES/django.mo
deleted file mode 100644
index b27c335..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/az/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/az/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/az/LC_MESSAGES/django.po
deleted file mode 100644
index bc3125c..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/az/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,279 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Ismayilov <ali@ismailov.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/"
-"language/az/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: az\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Şəxsi məlumat"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "İcazələr"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Vacib tarixlər"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Parol uğurla dəyişdirildi"
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Parolu dəyiş: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Bu istifadəçi adı altında başqa istifadəçi var."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Parollar üst-üstə düşmədi."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "İstifadəçi adı"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Vacibdir. 30 simvoldan az olmalıdır. Yalnız hərf, rəqəm və @/./+/-/_ "
-"simvollarından istifadə etmək olar."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Yalnız hərf, rəqəm və @/./+/-/_ simvollarından istifadə etmək olar."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Parol"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Parolun təsdiqi"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Yuxarıdakı parolu daxil edin ki, dəqiqliyinə əmin olaq."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Bu hesab qeyri-aktivdir."
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Yeni parol"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Yeni parolun təsdiqi"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"Köhnə parolu səhv daxil etdiniz. Bir daha cəhd etməyinizi xahiş edirik."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Köhnə parol"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Parol (bir daha)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "ad"
-
-#: models.py:74
-msgid "codename"
-msgstr "kod adı"
-
-#: models.py:78
-msgid "permission"
-msgstr "icazə"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "icazələr"
-
-#: models.py:128
-msgid "group"
-msgstr "qrup"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "qruplar"
-
-#: models.py:200
-msgid "password"
-msgstr "parol"
-
-#: models.py:201
-msgid "last login"
-msgstr "son dəfə daxil olub"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "superistifadəçi statusu"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "İstifadəçiyə bütün icazələri verir."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr "səlahiyyətləri"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "istifadəçi adı"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Vacibdir. 30 simvola bərabər və ya az olmalıdır. Yalnız hərf, rəqəm və @/./"
-"+/-/_ simvollarından istifadə etmək olar."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "ad"
-
-#: models.py:373
-msgid "last name"
-msgstr "soyad"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "admin statusu"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "İstifadəçinin admin panelinə daxil olub, olmayacağını təyin edir."
-
-#: models.py:378
-msgid "active"
-msgstr "Aktiv"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"İstifadəçinin aktiv və ya qeyri-aktiv olmasını təyin edir. Hesabları silmək "
-"əvəzinə bundan istifadə edin."
-
-#: models.py:381
-msgid "date joined"
-msgstr "qoşulub"
-
-#: models.py:389
-msgid "user"
-msgstr "istifadəçi"
-
-#: models.py:390
-msgid "users"
-msgstr "istifadəçilər"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Çıxdınız"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "%(site_name)s, parolun sıfırlanması"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/be/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/be/LC_MESSAGES/django.mo
deleted file mode 100644
index 317d155..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/be/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/be/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/be/LC_MESSAGES/django.po
deleted file mode 100644
index d5846a1..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/be/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,284 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/"
-"language/be/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: be\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Асабістыя зьвесткі"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Дазволы"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Важныя даты"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Пароль зьмянілі."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Зьмяніць пароль: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Карыстальнік з такім іменем ужо існуе."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Не супадаюць паролі ў двух палях."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Імя карыстальніка"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Абавязковае поле. Да трыццаці знакаў. Толькі лічбы, літары ды знакі «@», "
-"«.» (кропка), «+», «-», «_»."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"Дазваляюцца толькі літары, лічбы ды знакі «@», «.» (кропка), «+», «-», «_»."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Пароль"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Пацьвердзіце пароль"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Дзеля пэўнасьці набярыце такі самы пароль яшчэ раз."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Паролі не захоўваюцца ў такім выглядзе, як іх набралі, таму ўбачыць пароль "
-"карыстальніка нельга, але яго можна зьмяніць <a href=\"password/\">тут</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Рахунак ня дзейнічае."
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Новы пароль"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Пацьвердзіце новы пароль"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Пазначылі неадпаведны стары пароль. Набярыце яго зноўку."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Стары пароль"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Пароль (яшчэ раз)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "альґарытм"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "паўтарэньні"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "соль"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "скарот"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "множнік працы"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "кантрольная сума"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "назва"
-
-#: models.py:74
-msgid "codename"
-msgstr "найменьне"
-
-#: models.py:78
-msgid "permission"
-msgstr "дазвол"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "дазволы"
-
-#: models.py:128
-msgid "group"
-msgstr "суполка"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "суполкі"
-
-#: models.py:200
-msgid "password"
-msgstr "пароль"
-
-#: models.py:201
-msgid "last login"
-msgstr "апошні раз уваходзіў"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "становішча спраўніка"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Паказвае, ці мае карыстальнік усе дазволы без таго, каб іх яўна прызначаць."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Суполкі, у якія ўваходзіць карыстальнік. Карыстальнік атрымае дазволы, якія "
-"мае кожная ягоная суполка."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "дазволы карыстальніка"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "імя карыстальніка"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Абавязковае поле. Да трыццаці знакаў. Лічбы, літары ды знакі «@», "
-"«.» (кропка), «+», «-», «_»."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "імя"
-
-#: models.py:373
-msgid "last name"
-msgstr "прозьвішча"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "становішча"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Паказвае, ці можа карыстальнік ўваходзіць на кіраўнічую пляцоўку."
-
-#: models.py:378
-msgid "active"
-msgstr "дзейны"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Паказвае, ці трэба ставіцца да карыстальніка як да дзейнага. Замест таго "
-"каб, каб выдаляць рахунак, зраіце карыстальніка нядзейным."
-
-#: models.py:381
-msgid "date joined"
-msgstr "калі далучылі"
-
-#: models.py:389
-msgid "user"
-msgstr "карыстальнік"
-
-#: models.py:390
-msgid "users"
-msgstr "карыстальнікі"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Не ўвайшоў"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Узнавіць пароль на %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/bg/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/bg/LC_MESSAGES/django.mo
deleted file mode 100644
index bd42db7..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/bg/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/bg/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/bg/LC_MESSAGES/django.po
deleted file mode 100644
index cf071d0..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/bg/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,283 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Boris Chervenkov <office@sentido.bg>, 2012
-# Georgi Kostadinov <grgkostadinov@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/"
-"language/bg/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bg\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Лична информация"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Права"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Важни дати"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Паролата беше променена успешно. "
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Промени парола: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Потребител с това потребителско име вече съществува. "
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Двете полета за паролата не съвпадат. "
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Потребител"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "Задължително. 30 знака или по-малко. Букви, цифри и @/./+/-/_ ."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Тази стойност може да съдържа само букви, цифри и @/./+/-/_ символи."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Парола"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Потвърждение на паролата"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Въведете същата парола още веднъж за проверка. "
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Ние не запаметяваме паролите в чист вид, така че няма как да видите паролата "
-"на този потребител. Можете да промените паролата чрез <a href=\"password/"
-"\">този формуляр</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Този профил е неактивен."
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Нова парола"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "потвърждение на нова паролата"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Въвели сте погрешна стара парола. Въведете я отново. "
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Стара парола"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Парола (отново)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "алгоритъм"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "повторения"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "'salt'"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "хеш"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "работен фактор"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "чексума"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "име"
-
-#: models.py:74
-msgid "codename"
-msgstr "код"
-
-#: models.py:78
-msgid "permission"
-msgstr "право"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "права"
-
-#: models.py:128
-msgid "group"
-msgstr "група"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "групи"
-
-#: models.py:200
-msgid "password"
-msgstr "парола"
-
-#: models.py:201
-msgid "last login"
-msgstr "последно вписване"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "статут на супер-потребител"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Указва, че този потребител има всички права (без да има нужда да се "
-"изброяват изрично)."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Групата, към която този потребител принадлежи. Този потребител ще получи "
-"правата на всяка група, към която принадлежи."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "права на потребител"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "потребител"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "Задължително. 30 знака или по-малко. Букви, цифри и символи @/./+/-/_"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "собствено име"
-
-#: models.py:373
-msgid "last name"
-msgstr "фамилно име"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "статус на персонал"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Указва дали този потребител има достъп до административния панел."
-
-#: models.py:378
-msgid "active"
-msgstr "активен"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Указва дали този потребител трябва да се третира като активен. Премахнете на "
-"избора на това, вместо да триете профила."
-
-#: models.py:381
-msgid "date joined"
-msgstr "дата на регистриране"
-
-#: models.py:389
-msgid "user"
-msgstr "потребител"
-
-#: models.py:390
-msgid "users"
-msgstr "потребители"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Извън системата"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Променена парола на %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/bn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/bn/LC_MESSAGES/django.mo
deleted file mode 100644
index e971db4..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/bn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/bn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/bn/LC_MESSAGES/django.po
deleted file mode 100644
index 1b9d33a..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/bn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,273 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/"
-"bn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "ব্যক্তিগত তথ্য"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "অনুমোদন"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "গুরুত্বপূর্ণ তারিখ"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "পাসওয়ার্ড বদল সফল হয়েছে।"
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "পাসওয়ার্ড বদলানঃ %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "এই সদস্যনামে একজন সদস্য আছেন।"
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "পাসওয়ার্ড দুটো মেলেনি।"
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "সদস্যনাম"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "পাসওয়ার্ড"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "পাসওয়ার্ড নিশ্চিত করুন"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "উপরের পাসওয়ার্ডটি পুনরায় প্রবেশ করান, যাচাইয়ের জন্য।"
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "এই একাউন্টটি কার্যকর নয়।"
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "নতুন পাসওয়ার্ড"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "নতুন পাসওয়ার্ড নিশ্চিতকরণ"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"আপনার পুরনো পাসওয়ার্ড ঠিকভাবে প্রবেশ করানো হয়নি। অনুগ্রহপূর্বক সঠিক পাসওয়ার্ড দিন।"
-
-#: forms.py:290
-msgid "Old password"
-msgstr "পুরনো পাসওয়ার্ড"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "পাসওয়ার্ড (পুনরায়)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "নাম"
-
-#: models.py:74
-msgid "codename"
-msgstr "কোডনাম"
-
-#: models.py:78
-msgid "permission"
-msgstr "অনুমোদন"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "অনুমোদন"
-
-#: models.py:128
-msgid "group"
-msgstr "দল"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "দল সমূহ"
-
-#: models.py:200
-msgid "password"
-msgstr "পাসওয়ার্ড"
-
-#: models.py:201
-msgid "last login"
-msgstr "সর্বশেষ প্রবেশ"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "সুপারইউজার মর্যাদা"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "সদস্যকে সকল ধরণের অনুমতি প্রদান করে।"
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr "সদস্যের অনুমোদন সমূহ"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "সদস্যনাম"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "প্রথম নাম"
-
-#: models.py:373
-msgid "last name"
-msgstr "শেষ নাম"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "স্টাফ মর্যাদা"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "সদস্যকে প্রশাসন সাইটে প্রবেশাধিকার প্রদান।"
-
-#: models.py:378
-msgid "active"
-msgstr "সচল"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr "সদস্যকে সচল হিসেবে নির্ধারণ করুন। একাউন্ট মুছে ফেলার বদলে এটি ব্যবহার করুন।"
-
-#: models.py:381
-msgid "date joined"
-msgstr "যোগদানের তারিখ"
-
-#: models.py:389
-msgid "user"
-msgstr "সদস্য"
-
-#: models.py:390
-msgid "users"
-msgstr "সদস্যগণ"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "প্রস্থান সম্পন্ন"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/br/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/br/LC_MESSAGES/django.mo
deleted file mode 100644
index 998cf76..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/br/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/br/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/br/LC_MESSAGES/django.po
deleted file mode 100644
index 06fbebe..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/br/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,272 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Fulup <fulup.jakez@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/"
-"br/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: br\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr ""
-
-#: admin.py:42
-msgid "Permissions"
-msgstr ""
-
-#: admin.py:44
-msgid "Important dates"
-msgstr ""
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr ""
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr ""
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr ""
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr ""
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr ""
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Ger-tremen"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr ""
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr ""
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr ""
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Ger-tremen nevez"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Kadarnaat ar ger-tremen nevez"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Ger-tremen kozh"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Ger-tremen (adarre)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "anv"
-
-#: models.py:74
-msgid "codename"
-msgstr ""
-
-#: models.py:78
-msgid "permission"
-msgstr ""
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr ""
-
-#: models.py:128
-msgid "group"
-msgstr "strollad"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "strolladoù"
-
-#: models.py:200
-msgid "password"
-msgstr "ger-tremen"
-
-#: models.py:201
-msgid "last login"
-msgstr "kevreet da ziwezhañ"
-
-#: models.py:291
-msgid "superuser status"
-msgstr ""
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr ""
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr ""
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "anv-bihan"
-
-#: models.py:373
-msgid "last name"
-msgstr "anv-familh"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr ""
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-
-#: models.py:378
-msgid "active"
-msgstr ""
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-
-#: models.py:381
-msgid "date joined"
-msgstr ""
-
-#: models.py:389
-msgid "user"
-msgstr "implijer"
-
-#: models.py:390
-msgid "users"
-msgstr "implijerien"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Digevreet"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/bs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/bs/LC_MESSAGES/django.mo
deleted file mode 100644
index 6035fda..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/bs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/bs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/bs/LC_MESSAGES/django.po
deleted file mode 100644
index 326d750..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/bs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,282 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/"
-"bs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bs\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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Lični podaci"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Dozvole"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Važni datumi"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Lozinka uspješno izmjenjena."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Izmjeni lozinku: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Korisnik sa tim korisničkim imenom već postoji."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Dva polja za lozinku se nisu poklopila."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Korisnik"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Neophodno. Najviše 30 slovnih mesta. Samo slova, brojke i @/./+/-/_ only."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"Ova vrijednost može sadržati samo slova, brojke i digits and @/./+/-/_ "
-"znamenke."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Lozinka"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Potvrda lozinke"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Radi provjere tačnosti ponovo unesite lozinku koju ste unijeli gore."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Ovaj nalog je neaktivan."
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nova lozinka"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Potvrda nove lozinke"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Vaša stara lozinka nije pravilno unesena. Unesite je ponovo."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Stara lozinka"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Lozinka (ponovite)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "ime"
-
-#: models.py:74
-msgid "codename"
-msgstr "šifra dozvole"
-
-#: models.py:78
-msgid "permission"
-msgstr "dozvola"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "dozvole"
-
-#: models.py:128
-msgid "group"
-msgstr "grupa"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupe"
-
-#: models.py:200
-msgid "password"
-msgstr "lozinka"
-
-#: models.py:201
-msgid "last login"
-msgstr "posljednja prijava"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "status administratora"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Označava da li korisnik ima sve dozvole bez dodjeljivanja pojedinačnih "
-"dozvola."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr "korisničke dozvole"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "korisničko ime"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Neophodno. Najviše 30 slovnih mesta. Slova, brojke i @/./+/-/_ karakteri"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "ime"
-
-#: models.py:373
-msgid "last name"
-msgstr "prezime"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "status člana uredništva"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Označava da li korisnik može da se prijavi na ovaj sajt za administraciju."
-
-#: models.py:378
-msgid "active"
-msgstr "aktivan"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Označava da li se korisnik smatra aktivnim. Uklnote izbor sa ovog polja "
-"umjesto da brišete nalog."
-
-#: models.py:381
-msgid "date joined"
-msgstr "datum registracije"
-
-#: models.py:389
-msgid "user"
-msgstr "korisnik"
-
-#: models.py:390
-msgid "users"
-msgstr "korisnici"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Odjavljen"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ca/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/ca/LC_MESSAGES/django.mo
deleted file mode 100644
index cfd1ead..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ca/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ca/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/ca/LC_MESSAGES/django.po
deleted file mode 100644
index 22297fb..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ca/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,285 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Carles Barrobés <carles@barrobes.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Catalan (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Informació personal"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Permisos"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Dates importants"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Contrasenya canviada amb èxit"
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Canviar contrasenya: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "No s'ha establert la clau."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Format de clau incorrecta o algorisme de hash desconegut."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Ja existeix un usuari amb aquest nom."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Els dos camps de contrasenya no coincideixen."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Nom d'usuari"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "Obligatori. 30 o menys caràcters. Només lletres, dígits i @/./+/-/_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Aquest valor ha de contenir només lletres, números i @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Contrasenya"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Confirmació de contrasenya"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Introduïu la mateixa contrasenya de dalt, per fer-ne la verificació."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"No s'emmagatzemen les contrasenyes en clar, per tant no hi ha manera de "
-"veure la contrasenya d'aquest usuari, però la podeu canviar fent servir <a "
-"href=\"password/\">aquest formulari</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"SSi us plau, introduïu un %(username)s i clau. Observeu que ambdós camps "
-"poden ser sensibles a majúscules."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Aquest compte està inactiu"
-
-#: forms.py:206
-msgid "Email"
-msgstr "Correu electrònic"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Contrasenya nova"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Contrasenya nova confirmada"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"La vostra antiga contrasenya no és correcta. Si us plau, introduïu-la de nou."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Contrasenya antiga"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Contrasenya (de nou)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algorisme"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iteracions"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "sal"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "factor de treball"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "suma de comprovació"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nom"
-
-#: models.py:74
-msgid "codename"
-msgstr "nom en clau"
-
-#: models.py:78
-msgid "permission"
-msgstr "permís"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "permisos"
-
-#: models.py:128
-msgid "group"
-msgstr "grup"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grups"
-
-#: models.py:200
-msgid "password"
-msgstr "contrasenya"
-
-#: models.py:201
-msgid "last login"
-msgstr "últim inici de sessió"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "estat de superusuari"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Designa que aquest usuari té tots els permisos sense assignar-los "
-"explícitament."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Els grups als quals pertany aquest usuari. A un usuari se li concediran tots "
-"els permisos de cadascun dels seus grups."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "permisos de l'usuari"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "nom d'usuari"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "Obligatori. 30 o menys caràcters. Només lletres, números i @/./+/-/_"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Introdueix un nom d'usuari vàlid"
-
-#: models.py:372
-msgid "first name"
-msgstr "nom propi"
-
-#: models.py:373
-msgid "last name"
-msgstr "cognoms"
-
-#: models.py:374
-msgid "email address"
-msgstr "adreça de correu electrònic"
-
-#: models.py:375
-msgid "staff status"
-msgstr "membre del personal"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Designa si l'usuari pot entrar al lloc administratiu."
-
-#: models.py:378
-msgid "active"
-msgstr "actiu"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Designa si aquest usuari ha de ser tractat com a actiu. Deseleccioneu-ho "
-"enlloc d'esborrar comptes d'usuari."
-
-#: models.py:381
-msgid "date joined"
-msgstr "data d'incorporació"
-
-#: models.py:389
-msgid "user"
-msgstr "usuari"
-
-#: models.py:390
-msgid "users"
-msgstr "usuaris"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Sessió finalitzada"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Reinicialitzar la contrasenya a %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/cs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/cs/LC_MESSAGES/django.mo
deleted file mode 100644
index fe35821..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/cs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/cs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/cs/LC_MESSAGES/django.po
deleted file mode 100644
index c68bfd5..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/cs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,289 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Mokys <jan.munclinger@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Vlada Macek <macek@sandbox.cz>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-11-09 15:20+0000\n"
-"Last-Translator: Vlada Macek <macek@sandbox.cz>\n"
-"Language-Team: Czech (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Osobní údaje"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Oprávnění"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Důležitá data"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Změna hesla byla úspěšná."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Heslo pro uživatele %s: změnit"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Heslo nenastaveno."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Neplatný formát hesla nebo neplatný hashovací algoritmus."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Uživatel s tímto jménem již existuje."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Hesla se neshodují."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Uživatelské jméno"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Požadováno. 30 znaků nebo méně. Pouze písmena bez diakritiky (háčků a "
-"čárek), číslice a znaky @/./+/-/_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"Hodnota může obsahovat pouze písmena bez diakritiky (háčků a čárek), číslice "
-"a znaky @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Heslo"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Potvrzení hesla"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Pro ověření vložte stejné heslo znovu."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Hesla se neukládají přímo a tak je nelze zobrazit. Je ale možné je změnit "
-"pomocí <a href=\"password/\">tohoto formuláře</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Zadejte správnou hodnotu pole %(username)s a heslo. Pozor, obě pole mohou "
-"rozlišovat malá a velká písmena."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Tento účet je neaktivní."
-
-#: forms.py:206
-msgid "Email"
-msgstr "E-mail"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nové heslo"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Potvrzení nového hesla"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Vaše současné heslo nebylo vloženo správně. Zkuste to znovu."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Současné heslo"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Heslo (znovu)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritmus"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iterace"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "hodnota salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "faktor práce"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "kontrolní součet"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "název"
-
-#: models.py:74
-msgid "codename"
-msgstr "kódový název"
-
-#: models.py:78
-msgid "permission"
-msgstr "oprávnění"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "oprávnění"
-
-#: models.py:128
-msgid "group"
-msgstr "skupina"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "skupiny"
-
-#: models.py:200
-msgid "password"
-msgstr "heslo"
-
-#: models.py:201
-msgid "last login"
-msgstr "poslední přihlášení"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "superuživatel"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Určuje, že uživatel má veškerá oprávnění bez jejich explicitního přiřazení."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Skupiny, do kterých tento uživatel patří. Uživatel dostane všechna oprávnění "
-"udělená každé z jeho skupin."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "uživatelská oprávnění"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Specifická oprávnění pro tohoto uživatele."
-
-#: models.py:368
-msgid "username"
-msgstr "uživatelské jméno"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Požadováno. 30 znaků nebo méně. Pouze písmena bez diakritiky (háčků a "
-"čárek), číslice a znaky @/./+/-/_."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Zadejte platné uživatelské jméno"
-
-#: models.py:372
-msgid "first name"
-msgstr "křestní jméno"
-
-#: models.py:373
-msgid "last name"
-msgstr "příjmení"
-
-#: models.py:374
-msgid "email address"
-msgstr "e-mailová adresa"
-
-#: models.py:375
-msgid "staff status"
-msgstr "administrační přístup"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Určuje, zda se uživatel může přihlásit do správy tohoto webu."
-
-#: models.py:378
-msgid "active"
-msgstr "aktivní"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Určuje, zda bude uživatel považován za aktivního. Použijte tuto možnost "
-"místo odstranění účtů."
-
-#: models.py:381
-msgid "date joined"
-msgstr "datum registrace"
-
-#: models.py:389
-msgid "user"
-msgstr "uživatel"
-
-#: models.py:390
-msgid "users"
-msgstr "uživatelé"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Odhlášeno"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Obnovení hesla na webu %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Zadejte platnou e-mailovou adresu."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/cy/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/cy/LC_MESSAGES/django.mo
deleted file mode 100644
index 8e0f440..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/cy/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/cy/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/cy/LC_MESSAGES/django.po
deleted file mode 100644
index 126567d..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/cy/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,274 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Maredudd ap Gwyndaf <maredudd@maredudd.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-12 20:43+0000\n"
-"Last-Translator: Maredudd ap Gwyndaf <maredudd@maredudd.com>\n"
-"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/"
-"cy/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cy\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
-"11) ? 2 : 3;\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Gwybodaeth personol"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Hawliau"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Dyddiadau pwysig"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Newidwyd y gyfrinair."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Newid cyfrinair: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Cyfrinair heb ei osod."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Fformat cyfrinair annilys neu algorithm hashio anhysbys."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Mae'r enw defnyddiwr yn bodoli'n barod."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr ""
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr ""
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr ""
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr ""
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr ""
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr ""
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr ""
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr ""
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-
-#: forms.py:290
-msgid "Old password"
-msgstr ""
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr ""
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "enw"
-
-#: models.py:74
-msgid "codename"
-msgstr "enw arwyddol"
-
-#: models.py:78
-msgid "permission"
-msgstr ""
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr ""
-
-#: models.py:128
-msgid "group"
-msgstr ""
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr ""
-
-#: models.py:200
-msgid "password"
-msgstr "cyfrinair"
-
-#: models.py:201
-msgid "last login"
-msgstr "mewngofnod olaf"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "statws defnyddiwr swper"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr ""
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "enw defnyddiwr"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "enw cyntaf"
-
-#: models.py:373
-msgid "last name"
-msgstr "enw olaf"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "statws staff"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Dylunio ai'r defnyddiwr yn gally mewngofnodi i'r safle weinyddiad yma."
-
-#: models.py:378
-msgid "active"
-msgstr "gweithredol"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-
-#: models.py:381
-msgid "date joined"
-msgstr "Dyddiad"
-
-#: models.py:389
-msgid "user"
-msgstr ""
-
-#: models.py:390
-msgid "users"
-msgstr ""
-
-#: views.py:89
-msgid "Logged out"
-msgstr ""
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/da/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/da/LC_MESSAGES/django.mo
deleted file mode 100644
index a30bee0..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/da/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/da/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/da/LC_MESSAGES/django.po
deleted file mode 100644
index 6738132..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/da/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,288 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Christian Joergensen <christian@gmta.info>, 2012
-# Erik Wognsen <r4mses@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Steven Gandsø <steven.gandso@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-27 02:54+0000\n"
-"Last-Translator: Erik Wognsen <r4mses@gmail.com>\n"
-"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/"
-"da/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: da\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Personlig information"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Rettigheder"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Vigtige datoer"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Adgangskoden blev ændret."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Skift adgangskode: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Ingen adgangskode valgt."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Ugyldigt adgangskodeformat eller hashing-algoritme."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "En bruger med dette brugernavn findes allerede."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "De to adgangskoder var ikke identiske."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Brugernavn"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "Påkrævet. Højst 30 tegn. Kun bogstaver og cifre samt @/./+/-/_"
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"Dette felt må kun indeholde bogstaver og cifre samt disse tegn: @/./+/-/_"
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Adgangskode"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Bekræftelse af adgangskode"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Indtast den samme adgangskode som ovenfor for verifikation."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Rå adgangskoder gemmes ikke, så det er ikke muligt at se denne brugers "
-"adgangskode, men du kan ændre adgangskoden ved hjælp af <a href=\"password/"
-"\">denne formular</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Indtast venligst et korrekt %(username)s og adgangskode. Bemærk at begge "
-"felter kan være versalfølsomme."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Denne konto er inaktiv."
-
-#: forms.py:206
-msgid "Email"
-msgstr "E-mail"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Ny adgangskode"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Bekræftelse af ny adgangskode"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"Din gamle adgangskode blev ikke indtastet korrekt. Indtast den venligst igen."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Gammel adgangskode"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Adgangskode (igen)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritme"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iterationer"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "work factor"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "tjeksum"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "navn"
-
-#: models.py:74
-msgid "codename"
-msgstr "kodenavn"
-
-#: models.py:78
-msgid "permission"
-msgstr "rettighed"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "rettigheder"
-
-#: models.py:128
-msgid "group"
-msgstr "gruppe"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupper"
-
-#: models.py:200
-msgid "password"
-msgstr "adgangskode"
-
-#: models.py:201
-msgid "last login"
-msgstr "sidst logget ind"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "superbrugerstatus"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Bestemmer at denne bruger har alle rettigheder uden at tildele dem eksplicit."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Grupperne som denne bruger hører til. En bruger får alle rettigheder givet "
-"til hver af hans/hendes grupper."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "rettigheder"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Specifikke rettigheder for denne bruger."
-
-#: models.py:368
-msgid "username"
-msgstr "brugernavn"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Påkrævet. Højst 30 tegn. Kun bogstaver og cifre samt disse tegn: @/./+/-/_"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Indtast et gyldigt brugernavn."
-
-#: models.py:372
-msgid "first name"
-msgstr "fornavn"
-
-#: models.py:373
-msgid "last name"
-msgstr "efternavn"
-
-#: models.py:374
-msgid "email address"
-msgstr "e-mail-adresse"
-
-#: models.py:375
-msgid "staff status"
-msgstr "admin-status"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Bestemmer om brugeren kan logge ind på dette administrationswebsite."
-
-#: models.py:378
-msgid "active"
-msgstr "aktiv"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Bestemmer om brugeren skal behandles som aktiv. Fravælg dette frem for at "
-"slette en konto."
-
-#: models.py:381
-msgid "date joined"
-msgstr "dato for registrering"
-
-#: models.py:389
-msgid "user"
-msgstr "bruger"
-
-#: models.py:390
-msgid "users"
-msgstr "brugere"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Logget ud"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Adgangskode nulstillet på %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Indtast en gyldig e-mail-adresse."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/de/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/de/LC_MESSAGES/django.mo
deleted file mode 100644
index 5df1433..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/de/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/de/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/de/LC_MESSAGES/django.po
deleted file mode 100644
index 36ae40b..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/de/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,291 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Hagenbruch <ahagenbruch@googlemail.com>, 2011
-# apollo13 <florian@apolloner.eu>, 2012
-# Jannis , 2013
-# Markus Holtermann <inyoka@markusholtermann.eu>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-21 17:42+0000\n"
-"Last-Translator: Jannis \n"
-"Language-Team: German (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Persönliche Infos"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Berechtigungen"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Wichtige Daten"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Passwort erfolgreich geändert."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Passwort ändern: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Kein Passwort gesetzt."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Ungültiges Passwortformat oder unbekannter Hashing-Algorithmus."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Dieser Benutzername ist bereits vergeben."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Die beiden Passwörter sind nicht identisch."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Benutzername"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Erforderlich. 30 Zeichen oder weniger. Nur alphanumerische Zeichen "
-"(Buchstaben, Ziffern und @/./+/-/_) sind erlaubt."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Dieser Wert darf nur Buchstaben, Ziffern und @/./+/-/_ enthalten."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Passwort"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Passwort bestätigen"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Bitte das gleiche Passwort zur Überprüfung nochmal eingeben."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Die Passwörter werden nicht als Klartext gespeichert, somit gibt es keine "
-"Möglichkeit das Passwort dieses Benutzers anzuschauen, allerdings kann das "
-"Passwort über <a href=\"password/\">dieses Formular</a> geändert werden."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Bitte einen gültigen %(username)s und ein Passwort eingeben. Beide Felder "
-"berücksichtigen die Groß-/Kleinschreibung."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Dieser Benutzer ist inaktiv."
-
-#: forms.py:206
-msgid "Email"
-msgstr "E-Mail-Adresse"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Neues Passwort"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Neues Passwort bestätigen"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Das alte Passwort war falsch. Bitte neu eingeben."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Altes Passwort"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Passwort (wiederholen)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "Algorithmus"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "Iterationen"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "Salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "Hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "Arbeitsfaktor"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "Prüfsumme"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "Name"
-
-#: models.py:74
-msgid "codename"
-msgstr "Codename"
-
-#: models.py:78
-msgid "permission"
-msgstr "Berechtigung"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "Berechtigungen"
-
-#: models.py:128
-msgid "group"
-msgstr "Gruppe"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "Gruppen"
-
-#: models.py:200
-msgid "password"
-msgstr "Passwort"
-
-#: models.py:201
-msgid "last login"
-msgstr "Letzte Anmeldung"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "Administrator-Status"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Legt fest, dass der Benutzer alle Berechtigungen hat, ohne diese einzeln "
-"zuweisen zu müssen."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Die Gruppen, denen der Benutzer angehört. Ein Benutzer bekommt alle "
-"Berechtigungen seiner zugeteilten Gruppen."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "Berechtigungen"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Spezifische Berechtigungen für diesen Benutzer."
-
-#: models.py:368
-msgid "username"
-msgstr "Benutzername"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Erforderlich. 30 Zeichen oder weniger. Nur alphanumerische Zeichen "
-"(Buchstaben, Ziffern und @/./+/-/_) sind erlaubt."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Bitte einen gültigen Benutzernamen eingeben."
-
-#: models.py:372
-msgid "first name"
-msgstr "Vorname"
-
-#: models.py:373
-msgid "last name"
-msgstr "Nachname"
-
-#: models.py:374
-msgid "email address"
-msgstr "E-Mail-Adresse"
-
-#: models.py:375
-msgid "staff status"
-msgstr "Redakteur-Status"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Legt fest, ob sich der Benutzer an der Administrationsseite anmelden kann."
-
-#: models.py:378
-msgid "active"
-msgstr "Aktiv"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Legt fest, ob dieser Benutzer aktiv ist. Kann deaktiviert werden, anstatt "
-"Benutzer zu löschen."
-
-#: models.py:381
-msgid "date joined"
-msgstr "Mitglied seit"
-
-#: models.py:389
-msgid "user"
-msgstr "Benutzer"
-
-#: models.py:390
-msgid "users"
-msgstr "Benutzer"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Abgemeldet"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Passwort auf %(site_name)s zurücksetzen"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Bitte eine gültige E-Mail-Adresse eingeben."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/el/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/el/LC_MESSAGES/django.mo
deleted file mode 100644
index 39d0353..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/el/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/el/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/el/LC_MESSAGES/django.po
deleted file mode 100644
index 35864c8..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/el/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,288 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Apostolos Mpessas <mpessas+txc@transifex.com>, 2013
-# Dimitris Glezos <glezos@transifex.com>, 2011-2012
-# glogiotatidis <seadog@sealabs.net>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Yorgos Pagles <y.pagles@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/"
-"el/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: el\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Προσωπικές πληροφορίες"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Δικαιώματα"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Σημαντικές ημερομηνίες"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Ο κωδικός πρόσβασης αλλάχτηκε με επιτυχία."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Αλλαγή κωδικού πρόσβασης: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Αυτό το όνομα χρήστη χρησιμοποιείται ήδη."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Τα δύο πεδία κωδικού χρήστη δεν ταιριάζουν."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Όνομα χρήστη"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Απαραίτητο. Πρέπει να αποτελείται από 30 ή λιγότερους χαρακτήρες. Μπορείτε "
-"να χρησιμοποιήσετε μόνο γράμματα, αριθμούς και τους χαρακτήρες @/./+/-/_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"Αυτή η τιμή μπορεί να περιέχει μόνο γράμματα, αριθμούς και τους χαρακτήρες "
-"@/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Κωδικός χρήστη"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Επιβεβαίωση κωδικού χρήστη"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr ""
-"Εισάγετε τον ίδιο κωδικό χρήστη όπως παραπάνω, για λόγους επιβεβαίωσης."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Αυτός ο λογαριασμός είναι ανενεργός."
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Νέο συνθηματικό"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Επιβεβαίωση νέου συνθηματικού"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Το παλιό συνθηματικό σας δόθηκε λανθασμένα. Παρακαλώ δοκιμάστε ξανά."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Παλιό συνθηματικό"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Συνθηματικό (ξανά)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "όνομα"
-
-#: models.py:74
-msgid "codename"
-msgstr "κωδικό όνομα"
-
-#: models.py:78
-msgid "permission"
-msgstr "δικαίωμα"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "διακαιώματα"
-
-#: models.py:128
-msgid "group"
-msgstr "ομάδα"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "ομάδες"
-
-#: models.py:200
-msgid "password"
-msgstr "συνθηματικό"
-
-#: models.py:201
-msgid "last login"
-msgstr "τελευταία σύνδεση"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "κατάσταση υπερχρήστη"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Υποδηλώνει ότι ο συγκεκριμένος χρήστης έχει όλα τα δικαιώματα χωρίς να "
-"χρειάζεται να τα παραχωρήσετε ξεχωριστά."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr "δικαιώματα χρήστη"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "όνομα χρήστη"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Απαραίτητα. 30 ή λιγότεροι χαρακτήρες. Γράμματα, αριθμοί και οι χαρακτήρες "
-"@/./+/-/_."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Εισάφετε ένα έγκυρο όνομα χρήστη."
-
-#: models.py:372
-msgid "first name"
-msgstr "όνομα"
-
-#: models.py:373
-msgid "last name"
-msgstr "επώνυμο"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "Κατάσταση προσωπικού"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Ορίζει αν ο χρήστης μπορεί να συνδεθεί στο χώρο διαχείρισης."
-
-#: models.py:378
-msgid "active"
-msgstr "ενεργό"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Υποδηλώνει αν ο συγκεκριμένος χρήστης μπορεί να θεωρηθεί ενεργός. Προτιμήστε "
-"την επεπιλογή αυτής της επιλογής αντί του να πραγματοποιήσετε διαγραφή του "
-"χρήστη."
-
-#: models.py:381
-msgid "date joined"
-msgstr "ημερομηνία σύνδεσης"
-
-#: models.py:389
-msgid "user"
-msgstr "χρήστης"
-
-#: models.py:390
-msgid "users"
-msgstr "χρήστες"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Έγινε αποσύνδεση"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Επαναφοράς κωδικού πρόσβασης για το %(site_name)s "
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Εισάφετε ένα έγκυρο όνομα χρήστη."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/en/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/en/LC_MESSAGES/django.mo
deleted file mode 100644
index 6734aa6..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/en/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/en/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/en/LC_MESSAGES/django.po
deleted file mode 100644
index 8ccb65e..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/en/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,268 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2010-05-13 15:35+0200\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr ""
-
-#: admin.py:42
-msgid "Permissions"
-msgstr ""
-
-#: admin.py:44
-msgid "Important dates"
-msgstr ""
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr ""
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr ""
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr ""
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr ""
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr ""
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr ""
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr ""
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr ""
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr ""
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr ""
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr ""
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-
-#: forms.py:290
-msgid "Old password"
-msgstr ""
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr ""
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr ""
-
-#: models.py:74
-msgid "codename"
-msgstr ""
-
-#: models.py:78
-msgid "permission"
-msgstr ""
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr ""
-
-#: models.py:128
-msgid "group"
-msgstr ""
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr ""
-
-#: models.py:200
-msgid "password"
-msgstr ""
-
-#: models.py:201
-msgid "last login"
-msgstr ""
-
-#: models.py:291
-msgid "superuser status"
-msgstr ""
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr ""
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr ""
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr ""
-
-#: models.py:373
-msgid "last name"
-msgstr ""
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr ""
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-
-#: models.py:378
-msgid "active"
-msgstr ""
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-
-#: models.py:381
-msgid "date joined"
-msgstr ""
-
-#: models.py:389
-msgid "user"
-msgstr ""
-
-#: models.py:390
-msgid "users"
-msgstr ""
-
-#: views.py:89
-msgid "Logged out"
-msgstr ""
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/en_GB/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/en_GB/LC_MESSAGES/django.mo
deleted file mode 100644
index 2be1bbf..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/en_GB/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/en_GB/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/en_GB/LC_MESSAGES/django.po
deleted file mode 100644
index 27a8d61..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/en_GB/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,283 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# jon_atkinson <jon@jonatkinson.co.uk>, 2011-2012
-# Ross Poulton <ross@rossp.org>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
-"django/language/en_GB/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: en_GB\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Personal info"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Permissions"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Important dates"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Password changed successfully."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Change password: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "A user with that username already exists."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "The two password fields didn't match."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Username"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "This value may contain only letters, numbers and @/./+/-/_ characters."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Password"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Password confirmation"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Enter the same password as above, for verification."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "This account is inactive."
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "New password"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "New password confirmation"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Your old password was entered incorrectly. Please enter it again."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Old password"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Password (again)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algorithm"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iterations"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "work factor"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "checksum"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "name"
-
-#: models.py:74
-msgid "codename"
-msgstr "codename"
-
-#: models.py:78
-msgid "permission"
-msgstr "permission"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "permissions"
-
-#: models.py:128
-msgid "group"
-msgstr "group"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "groups"
-
-#: models.py:200
-msgid "password"
-msgstr "password"
-
-#: models.py:201
-msgid "last login"
-msgstr "last login"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "superuser status"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "user permissions"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "username"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "first name"
-
-#: models.py:373
-msgid "last name"
-msgstr "last name"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "staff status"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Designates whether the user can log into this admin site."
-
-#: models.py:378
-msgid "active"
-msgstr "active"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-
-#: models.py:381
-msgid "date joined"
-msgstr "date joined"
-
-#: models.py:389
-msgid "user"
-msgstr "user"
-
-#: models.py:390
-msgid "users"
-msgstr "users"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Logged out"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Password reset on %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/eo/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/eo/LC_MESSAGES/django.mo
deleted file mode 100644
index c5f78c8..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/eo/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/eo/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/eo/LC_MESSAGES/django.po
deleted file mode 100644
index b1e178e..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/eo/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,286 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Baptiste <baptiste+transifex@darthenay.fr>, 2012-2013
-# Baptiste <baptiste+transifex@darthenay.fr>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-23 14:42+0000\n"
-"Last-Translator: Baptiste <baptiste+transifex@darthenay.fr>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/"
-"language/eo/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Personaj informoj"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Permesoj"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Gravaj datoj"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Pasvorto suksese ŝanĝita."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Ŝanĝi pasvorton: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Neniu pasvorto agordita."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Nevalida pasvorta formato, aŭ nekonata haketa algoritmo."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Uzanto kun sama salutnomo jam ekzistas."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "La du pasvotaj kampoj ne kongruas."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Salutnomo"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "Petita. 30 karakteroj aŭ malpli. Literoj, ciferoj kaj @/./+/-/_ nure."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"Ĉi-tiu valoro povas enhavi nur literoj, ciferoj kaj la @/./+/-/_ karakteroj."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Pasvorto"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Pasvorta konfirmo"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Entajpu la saman pasvorton kiel supre, por konfirmo."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Pasvortoj ne estas krude entenita, do ne eblas vidi la pasvorton de tiu "
-"uzanto, sed vi povas ŝanĝi la pasvorton uzante <a href=\"password/\">tiu "
-"formalaro</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Bonvolu enigi korektan %(username)s-n kaj pasvorton. Notu, ke ambaŭ kampoj "
-"povas esti usklecodistingaj."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Ĉi-tiu konto ne estas aktiva."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Retpoŝto"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nova pasvorto"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Nova pasvorto por konfirmo"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"Via malnova pasvorto estis nekorekte tajpita. Bonvolu denove entajpi ĝin."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Malnova pasvorto"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Pasvorto (denove)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritmo"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iteracioj"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salo"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "haketo"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "laborfaktoro"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "kontrolsumo"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nomo"
-
-#: models.py:74
-msgid "codename"
-msgstr "kodnomo"
-
-#: models.py:78
-msgid "permission"
-msgstr "permeso"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "permesoj"
-
-#: models.py:128
-msgid "group"
-msgstr "grupo"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupoj"
-
-#: models.py:200
-msgid "password"
-msgstr "pasvorto"
-
-#: models.py:201
-msgid "last login"
-msgstr "lasta ensaluto"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "ĉefuzanta statuso"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Indikas ke tiu uzanto havas ĉiujn permesojn, sen eksplicite asigni ilin."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"La grupoj en kiu tiu uzanto apartenas. Uzanto akiros ĉiuj permesoj donita al "
-"ĉiuj de lia/ŝia grupo."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "uzantaj permesoj"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Apartaj permesoj por tiu uzanto."
-
-#: models.py:368
-msgid "username"
-msgstr "salutnomo"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Petita. 30 karakteroj aŭ malpli. Literoj, nombroj kaj @/./+/-/_ karakteroj"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Enigu validan salutnomon."
-
-#: models.py:372
-msgid "first name"
-msgstr "persona nomo"
-
-#: models.py:373
-msgid "last name"
-msgstr "famalia nomo"
-
-#: models.py:374
-msgid "email address"
-msgstr "retpoŝta adreso"
-
-#: models.py:375
-msgid "staff status"
-msgstr "personara statuso"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Indikas ĉu la uzanto povas saluti en ĉi-tiu administranta retejo."
-
-#: models.py:378
-msgid "active"
-msgstr "aktiva"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Indikas ĉu tiu uzanto devus esti traktita kiel aktiva. Malselekti tion ĉi "
-"anstataŭ forigi kontojn."
-
-#: models.py:381
-msgid "date joined"
-msgstr "dato aliĝita"
-
-#: models.py:389
-msgid "user"
-msgstr "uzanto"
-
-#: models.py:390
-msgid "users"
-msgstr "uzantoj"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Adiaŭita"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Pasvorta rekomencigo ĉe %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Enigu validan retpoŝtan adreson."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/es/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/es/LC_MESSAGES/django.mo
deleted file mode 100644
index 28b16aa..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/es/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/es/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/es/LC_MESSAGES/django.po
deleted file mode 100644
index f060413..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/es/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,289 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antoni Aloy <aaloy@apsl.net>, 2012-2013
-# guillem <serra.guillem@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-23 16:52+0000\n"
-"Last-Translator: Antoni Aloy <aaloy@apsl.net>\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Información personal"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Permisos"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Fechas importantes"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "La contraseña se ha cambiado con éxito."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Cambiar contraseña: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "No se ha establecido la clave."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Formato de clave incorrecto o algoritmo de hash desconocido."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Ya existe un usuario con este nombre."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Los dos campos de contraseña no coinciden."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Nombre de usuario"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Requerido. 30 caracteres o menos. Letras, dígitos y @/./+/-/_ solamente."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Este valor puede contener sólo letras, números y @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Contraseña"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Contraseña (confirmación)"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Introduzca la misma contraseña que arriba, para verificación."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Las contraseñas no se almacenan en bruto, así que no hay manera de ver la "
-"contraseña del usuario, pero se puede cambiar la contraseña mediante <a href="
-"\"password/\">este formulario</a> ."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Por favor, introduce un %(username)s y clave correctos. Observa que ambos "
-"campos pueden ser sensibles a mayúsculas."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Esta cuenta está inactiva."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Correo electrónico"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Contraseña nueva"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Contraseña nueva (confirmación):"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"Su contraseña antigua es incorrecta. Por favor, vuelva a introducirla "
-"correctamente."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Contraseña antigua"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Contraseña (de nuevo)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritmo"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iteraciones"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "sal"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "función resumen"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "factor trabajo"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "suma de verificación"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nombre"
-
-#: models.py:74
-msgid "codename"
-msgstr "nombre en código"
-
-#: models.py:78
-msgid "permission"
-msgstr "permiso"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "permisos"
-
-#: models.py:128
-msgid "group"
-msgstr "grupo"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupos"
-
-#: models.py:200
-msgid "password"
-msgstr "contraseña"
-
-#: models.py:201
-msgid "last login"
-msgstr "último inicio de sesión"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "es superusuario"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Indica que este usuario tiene todos los permisos sin asignárselos "
-"explícitamente."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Los grupos a los que este usuario pertenece. Un usuario obtendrá todos los "
-"permisos concedidos a cada uno sus grupos."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "permisos de usuario"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Permisos específicos para este usuario."
-
-#: models.py:368
-msgid "username"
-msgstr "nombre de usuario"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "Requerido. 30 caracteres o menos. Letras, números y @/./+/-/_"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Introduce un nombre de usuario válido"
-
-#: models.py:372
-msgid "first name"
-msgstr "nombre"
-
-#: models.py:373
-msgid "last name"
-msgstr "apellidos"
-
-#: models.py:374
-msgid "email address"
-msgstr "dirección de correo electrónico"
-
-#: models.py:375
-msgid "staff status"
-msgstr "es staff"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Indica si el usuario puede entrar en este sitio de administración."
-
-#: models.py:378
-msgid "active"
-msgstr "activo"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Indica si el usuario debe ser tratado como activo. Desmarque esta opción en "
-"lugar de borrar la cuenta."
-
-#: models.py:381
-msgid "date joined"
-msgstr "fecha de alta"
-
-#: models.py:389
-msgid "user"
-msgstr "usuario"
-
-#: models.py:390
-msgid "users"
-msgstr "usuarios"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Sesión terminada"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Contraseña restablecida en %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Introduzca una dirección de correo electrónico válida."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/es_AR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/es_AR/LC_MESSAGES/django.mo
deleted file mode 100644
index 51996a8..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/es_AR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/es_AR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/es_AR/LC_MESSAGES/django.po
deleted file mode 100644
index af83105..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/es_AR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,293 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ramiro Morales <cramm0@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-11-05 11:12+0000\n"
-"Last-Translator: Ramiro Morales <cramm0@gmail.com>\n"
-"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
-"django/language/es_AR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_AR\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Información personal"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Permisos"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Fechas importantes"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Cambio de contraseña exitoso"
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Cambiar contraseña: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "No se ha establecido una contraseña."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Formato de contraseña inválido o algoritmo de hashing desconocido."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Ya existe un usuario con ese nombre."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Los dos campos de contraseñas no coinciden entre si."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Nombre de usuario"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Obligatorio. Longitud máxima de 30 caracteres. Sólo puede estar formado por "
-"letras, números y los caracteres @/./+/-/_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"Este valor solo puede contener letras, números y alguno de los caracteres "
-"@/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Contraseña"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Confirmación de contraseña"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr ""
-"Para verificación, introduzca la misma contraseña que introdujo arriba."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Las contraseñas no se almacenan por lo cual no es posible visualizar la "
-"contraseña de este usuario, pero puede modificarla usando <a href=\"password/"
-"\">este formulario</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Por favor introduzca un %(username)s y una contraseña correctos. Tenga en "
-"cuenta que ambos campos son sensibles a mayúsculas/minúsculas."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Esta cuenta está inactiva"
-
-#: forms.py:206
-msgid "Email"
-msgstr "Email"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Contraseña nueva"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Confirmación de contraseña nueva"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"La antigua contraseña introducida es incorrecta. Por favor introdúzcala "
-"nuevamente."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Contraseña antigua"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Contraseña (de nuevo)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritmo"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iteraciones"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "work factor"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "suma de verificación"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nombre"
-
-#: models.py:74
-msgid "codename"
-msgstr "nombre en código"
-
-#: models.py:78
-msgid "permission"
-msgstr "permiso"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "permisos"
-
-#: models.py:128
-msgid "group"
-msgstr "grupo"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupos"
-
-#: models.py:200
-msgid "password"
-msgstr "contraseña"
-
-#: models.py:201
-msgid "last login"
-msgstr "último ingreso"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "es superusuario"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Indica que este usuario posee todos los permisos sin que sea necesario "
-"asignarle los mismos en forma explícita."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Grupos a los cuales pertenece este usuario. Un usuario obtiene todos los "
-"permisos otorgados a cada uno de los grupos a los cuales pertenece."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "permisos de usuario"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Permisos específicos a otorgar a este usuario."
-
-#: models.py:368
-msgid "username"
-msgstr "nombre de usuario"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Obligatorio. Longitud máxima de 30 caracteres. Sólo puede estar formado por "
-"letras, números y los caracteres @/./+/-/_."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Introduzca un nombre de usuario válido."
-
-#: models.py:372
-msgid "first name"
-msgstr "nombre"
-
-#: models.py:373
-msgid "last name"
-msgstr "apellido"
-
-#: models.py:374
-msgid "email address"
-msgstr "Dirección de email"
-
-#: models.py:375
-msgid "staff status"
-msgstr "es staff"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Indica si el usuario puede ingresar a este sitio de administración."
-
-#: models.py:378
-msgid "active"
-msgstr "activo"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Indica si el usuario debe ser tratado como un usuario activo. Desactive este "
-"campo en lugar de eliminar usuarios."
-
-#: models.py:381
-msgid "date joined"
-msgstr "fecha de creación"
-
-#: models.py:389
-msgid "user"
-msgstr "usuario"
-
-#: models.py:390
-msgid "users"
-msgstr "usuarios"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Sesión cerrada"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Reinicio de contraseña en %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Introduzca una dirección de email válida."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/es_MX/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/es_MX/LC_MESSAGES/django.mo
deleted file mode 100644
index ec457d0..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/es_MX/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/es_MX/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/es_MX/LC_MESSAGES/django.po
deleted file mode 100644
index 6f4cd4b..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/es_MX/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,287 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Abraham Estrada <abraham.estrada@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/"
-"language/es_MX/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_MX\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Información personal"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Permisos"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Fechas importantes"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Cambio de contraseña exitoso"
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Cambiar contraseña: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Ya existe un usuario con ese nombre."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Los dos campos de contraseñas no coinciden entre si."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Nombre de usuario"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Obligatorio. Longitud máxima 30 caracteres alfanuméricos (letras, dígitos y "
-"@/./+/-/_) solamente."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Este valor solo puede contener letras, números y @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Contraseña"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Confirmación de contraseña"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Para verificar, introduzca la misma contraseña que introdujo arriba."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Las contraseñas no se almacenan en texto plano, así que no hay manera de ver "
-"la contraseña del usuario, pero se puede cambiar la contraseña mediante <a "
-"href=\"password/\">este formulario</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Esta cuenta está inactiva."
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Contraseña nueva"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Confirmación de contraseña nueva"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"La antigua contraseña introducida es incorrecta. Por favor introdúzcala "
-"nuevamente."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Contraseña antigua"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Contraseña (de nuevo)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritmo"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "repeticiones"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "factor trabajo"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "checksum"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nombre"
-
-#: models.py:74
-msgid "codename"
-msgstr "nombre código"
-
-#: models.py:78
-msgid "permission"
-msgstr "permiso"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "permisos"
-
-#: models.py:128
-msgid "group"
-msgstr "grupo"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupos"
-
-#: models.py:200
-msgid "password"
-msgstr "contraseña"
-
-#: models.py:201
-msgid "last login"
-msgstr "último ingreso"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "es superusuario"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Indica que este usuario posee todos los permisos sin que sea necesario "
-"asignarle los mismos en forma explícita."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Los grupos a los que pertenece este usuario. Un usuario obtendrá todos los "
-"permisos concedidos para cada uno de su grupo."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "permisos de usuario"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "nombre de usuario"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Obligatorio. Longitud máxima de 30 caracteres alfanuméricos (letras, dígitos "
-"y @/./+/-/_)."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "nombre"
-
-#: models.py:373
-msgid "last name"
-msgstr "apellido"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "es staff"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Indica si el usuario puede ingresar a este sitio de administración."
-
-#: models.py:378
-msgid "active"
-msgstr "activo"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Indica si el usuario debe ser tratado como un usuario activo. Desactive este "
-"campo en lugar de eliminar usuarios."
-
-#: models.py:381
-msgid "date joined"
-msgstr "fecha de creación"
-
-#: models.py:389
-msgid "user"
-msgstr "usuario"
-
-#: models.py:390
-msgid "users"
-msgstr "usuarios"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Sesión cerrada"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Restablecimiento de la contraseña en %(site_name)s "
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/et/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/et/LC_MESSAGES/django.mo
deleted file mode 100644
index e16cf84..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/et/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/et/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/et/LC_MESSAGES/django.po
deleted file mode 100644
index 1359f0b..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/et/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,287 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jannolii <jannolii@gmail.com>, 2013
-# madisvain <madisvain@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-26 21:31+0000\n"
-"Last-Translator: jannolii <jannolii@gmail.com>\n"
-"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/"
-"et/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: et\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Isiklikud andmd"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Õigused"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Tähtsad kuupäevad"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Salasõna edukalt muudetud."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Muuda salasõna: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Parool on määramata."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Lubamatu parooli formaat või tundmatu räsialgoritm."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Sama kasutajatunnusega kasutaja on juba olemas."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Kaks sisestatud parooli ei olnud identsed."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Kasutajatunnus"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Nõutav. 30 märki või vähem. Ainult tähed, numbrid ja /./+/-/_ tähemärgid."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"See väärtust võib sisaldada ainult tähti, numbreid ja/./+/-/_ tähemärke."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Salasõna"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Salasõna kinnitus"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr ""
-"Sisestage sama salasõna uuesti veendumaks, et sisestamisel ei tekkinud vigu"
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Paroole ei salvestata töötlemata kujul, seega puudub võimalus selle kasutaja "
-"parooli nägemiseks, kuid saate seda muuta kasutades <a href=\"password/"
-"\">seda vormi</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Palun sisestage õige %(username)s ja parool. Teadke, et mõlemad väljad "
-"võivad olla tõstutundlikud."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "See konto ei ole aktiivne."
-
-#: forms.py:206
-msgid "Email"
-msgstr "E-post"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Uus salasõna"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Uue salasõna kinnitus"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Te sisestasite oma vana parooli vigaselt. Palun sisestage see uuesti."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Vana salasõna"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Salasõna (uuesti)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritm"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iteratsioone"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "sool"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "räsi"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "töötegur"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "kontrollsumma"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nimi"
-
-#: models.py:74
-msgid "codename"
-msgstr "koodnimi"
-
-#: models.py:78
-msgid "permission"
-msgstr "õigus"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "õigused"
-
-#: models.py:128
-msgid "group"
-msgstr "grupp"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupid"
-
-#: models.py:200
-msgid "password"
-msgstr "salasõna"
-
-#: models.py:201
-msgid "last login"
-msgstr "viimane sisenemine"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "superkasutaja staatus"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "Määrab, kas see kasutaja omab automaatselt ja alati kõiki õigus."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Grupid millesse antud kasutaja kuulub. Kasutaja pärib kõik õigused mis on "
-"määratud igale tema grupile."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "kasutajaõigused"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Spetsiaalsed õigused sellele kasutajale."
-
-#: models.py:368
-msgid "username"
-msgstr "kasutajatunnus"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "Nõutav. 30 märki või vähem. Tähted, numbreid ja/./+/-/_ tähemärgid."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Sisestage korrektne kasutajanimi."
-
-#: models.py:372
-msgid "first name"
-msgstr "eesnimi"
-
-#: models.py:373
-msgid "last name"
-msgstr "perenimi"
-
-#: models.py:374
-msgid "email address"
-msgstr "e-posti aadress"
-
-#: models.py:375
-msgid "staff status"
-msgstr "personalistaatus"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Määrab, kas kasutaja saab sisse logida sellesse admininistreerimisliidesesse."
-
-#: models.py:378
-msgid "active"
-msgstr "aktiivne"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Määrab, kas see konto on aktiivne. Kustutamise asemel lihtsalt deaktiveerige "
-"konto."
-
-#: models.py:381
-msgid "date joined"
-msgstr "liitumise kuupäev"
-
-#: models.py:389
-msgid "user"
-msgstr "kasutaja"
-
-#: models.py:390
-msgid "users"
-msgstr "kasutajad"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Välja logitud"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Uue salasõna loomine saidil %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Sisestage korrektne e-posti aadress."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/eu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/eu/LC_MESSAGES/django.mo
deleted file mode 100644
index c6e8084..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/eu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/eu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/eu/LC_MESSAGES/django.po
deleted file mode 100644
index b5dc117..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/eu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,289 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Aitzol Naberan <anaberan@codesyntax.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-31 11:48+0000\n"
-"Last-Translator: Aitzol Naberan <anaberan@codesyntax.com>\n"
-"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/"
-"eu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Informazio pertsonala"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Baimenak"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Data garrantzitsuak"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Ondo aldatu da pasahitza."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Pasahitza aldatu: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Pasahitza ezarri gabe."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Pasahitz formatu baliogabea edo hash algoritmo ezezaguna."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Erabiltzaile izen hori ez dago eskuragarri."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Pasahitzak ez datoz bat."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Erabiltzaile izena"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Beharrezkoa. 30 karaktere edo gutxiago. Hizki, zenbaki eta @/./+/-/_ "
-"bakarrik."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Hizki, zenbaki eta @/./+/-/_ karaktereak bakarrik izan ditzazke"
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Pasahitza"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Pasahitza berretsi"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Idatzi berriro pasahitza."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Pasahitzak zifratuta gordetzen direnez ez dago erabiltzaile pasahitza "
-"ikusterik, baina pasahitza aldatu dezakezu <a href=\"password/\">hemen</a>"
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Mesedez idatzi %(username)s eta pasahitz egokiak. Maiskula eta minuskulak "
-"ondo bereiztu."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Kontu hau az dago aktibo."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Eposta"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Pasahitz berria"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Pasahitz berria berretsi"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Zure pasahitz zaharra ez da zuzena. Idatzi ezazu berriro."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Pasahitz zaharra"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Pasahitza (berriro)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritmoak"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "begiztak"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "work factor"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "checksum"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "izena"
-
-#: models.py:74
-msgid "codename"
-msgstr "kode izena"
-
-#: models.py:78
-msgid "permission"
-msgstr "baimena"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "baimenak"
-
-#: models.py:128
-msgid "group"
-msgstr "taldea"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "taldeak"
-
-#: models.py:200
-msgid "password"
-msgstr "pasahitza"
-
-#: models.py:201
-msgid "last login"
-msgstr "azken sarrera"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "Erabiltzaile nagusia"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Erabiltzaileari baimen guztiak esleitzeko banan-banan aukeratu behar izan "
-"gabe."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Erabiltzailea zein taldetakoa den. Erabiltzaileak taldeari emandako baimen "
-"guztiak jasoko ditu."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "Erabiltzailearen baimenak"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Erabiltzaile honentzako baimenak."
-
-#: models.py:368
-msgid "username"
-msgstr "erabiltzaile izena"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Beharrezkoa. 30 karaktere edo gutxiago. Hizki, zenbaki eta @/./+/-/_ "
-"karaktereak"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Sartu baleko erabiltzaile izen bat."
-
-#: models.py:372
-msgid "first name"
-msgstr "izena"
-
-#: models.py:373
-msgid "last name"
-msgstr "abizena"
-
-#: models.py:374
-msgid "email address"
-msgstr "e-mail helbidea"
-
-#: models.py:375
-msgid "staff status"
-msgstr "Arduradun egoera"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Erabiltzaileak kudeaketa gune honetan sartzeko baimena duen edo ez "
-"adierazten du."
-
-#: models.py:378
-msgid "active"
-msgstr "Aktiboa"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Erabiltzaile bat aktibo gisa tratatu edo ez zehazten du. Ezgaitu hau kontuak "
-"ezabatu beharrean."
-
-#: models.py:381
-msgid "date joined"
-msgstr "erregistro eguna"
-
-#: models.py:389
-msgid "user"
-msgstr "Erabiltzailea"
-
-#: models.py:390
-msgid "users"
-msgstr "Erabiltzaileak"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Sesiotik kanpo"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Pasahitza berrezarri %(site_name)s webgunean"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Sartu baleko erabiltzaile izen bat."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/fa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/fa/LC_MESSAGES/django.mo
deleted file mode 100644
index bcc18a8..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/fa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/fa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/fa/LC_MESSAGES/django.po
deleted file mode 100644
index 6a7b4cd..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/fa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,285 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Reza Mohammadi <reza@teeleh.ir>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-11-05 07:36+0000\n"
-"Last-Translator: Reza Mohammadi <reza@teeleh.ir>\n"
-"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/"
-"fa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "اطلاعات شخصی"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "اجازه‌ها"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "تاریخ‌های مهم"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "گذرواژه با موفقیت تغییر یافت."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "تغییر گذرواژه: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "هیچ رمزی انتخاب نشده است."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "رمز نامعتبر یا الگوریتم رمزنگاری ناشناس"
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "کاربری با این نام کاربری وجود دارد."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "دو فیلد گذرواژه با هم مطابقت ندارند."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "نام کاربری"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"الزامی. ۳۰ حرف یا کمتر. فقط حروف الفبا (ارقام، الفبا و علائم @/./+/-/_)."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "این مقدار فقط باید حاوی حروف، اعداد و یا علائم @/./+/-/_ باشد."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "گذرواژه"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "تصدیق گذرواژه"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "همان گذرواژهٔ بالایی را برای اطمینان دوباره وارد کنید."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"کلمات عبور نگهداری نمی شوند، لذا روشی برای مشاهده کلمه عبور کاربر وجود "
-"ندارد. ولی شما می توانید کلمه عبور را بوسیله <a href=\"password/\">این فرم</"
-"a> عوض کنید."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"لطفا %(username)s و گذرواژه‌ی را برای حساب کارکنان وارد کنید.\n"
-"توجه داشته باشید که هر دو میتوانند به کوچکی و بزرگی حروف حساس باشند."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "این حساب غیرفعال است."
-
-#: forms.py:206
-msgid "Email"
-msgstr "ایمیل"
-
-#: forms.py:256
-msgid "New password"
-msgstr "گذرواژهٔ جدید"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "تصدیق گذرواژهٔ جدید"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "گذرواژهٔ قدیمی شما اشتباه بود. لطفاً دوباره وارد کنید."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "گذرواژهٔ قدیمی"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "گذرواژه (تکرار)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "الگوریتم"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "تکرار"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "عامل کار"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "checksum"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "نام"
-
-#: models.py:74
-msgid "codename"
-msgstr "نام کد"
-
-#: models.py:78
-msgid "permission"
-msgstr "اجازه"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "اجازه‌ها"
-
-#: models.py:128
-msgid "group"
-msgstr "گروه"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "گروه‌ها"
-
-#: models.py:200
-msgid "password"
-msgstr "گذرواژه"
-
-#: models.py:201
-msgid "last login"
-msgstr "آخرین ورود"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "ابرکاربر"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"نشان می‌دهد که آیا این کاربر دسترسی نامحدود به کلیهٔ بخشهای وبگاه مدیریت دارد."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"گروه های این کاربر به آن تعلق دارد. کاربر تمامی دسترسیهای اعطا شده به هر یک "
-"از / گروه خود را دریافت کنید."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "اجازه‌های کاربر"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "اجازه‌های خاص این کاربر."
-
-#: models.py:368
-msgid "username"
-msgstr "نام کاربری"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"الزامی. 30 حرف یا کمتر. فقط حروف الفبا (ارقام، الفبا و علائم @/./+/-/_ )."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "یک نام کاربری معتبر وارد کنید"
-
-#: models.py:372
-msgid "first name"
-msgstr "نام"
-
-#: models.py:373
-msgid "last name"
-msgstr "نام خانوادگی"
-
-#: models.py:374
-msgid "email address"
-msgstr "آدرس ایمیل"
-
-#: models.py:375
-msgid "staff status"
-msgstr "وضعیت کارمندی"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "تعبیه شده برای اینکه در وبگاه مدیریت، کاربر بتواند یا نتواند وارد شود."
-
-#: models.py:378
-msgid "active"
-msgstr "فعال"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"برای نشان دادن اینکه آیا باید با این کاربر به عنوان کاربر فعال رفتار کرد "
-"تعبیه شده است. به جای حذف کاربر تیک را بردارید."
-
-#: models.py:381
-msgid "date joined"
-msgstr "تاریخ پیوستن"
-
-#: models.py:389
-msgid "user"
-msgstr "کاربر"
-
-#: models.py:390
-msgid "users"
-msgstr "کاربرها"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "خارج شدید"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "بازیابی کلمه عبور بر روی %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "یک آدرس ایمیل معتبر وارد کنید."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/fi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/fi/LC_MESSAGES/django.mo
deleted file mode 100644
index 50f1725..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/fi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/fi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/fi/LC_MESSAGES/django.po
deleted file mode 100644
index 91bebfc..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/fi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,286 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antti Kaihola <antti-2013@ambitone.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# nanook <klaus.dahlen@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Finnish (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Henkilökohtaiset tiedot"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Oikeudet"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Tärkeät päivämäärät"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Salasana muutettu onnistuneesti."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Vaihda salasana: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Salasanaa ei ole asetettu."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Tuntematon salasanamuoto tai tuntematon hajakoodausalgoritmi."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Käyttäjätunnus on jo rekisteröity."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Salasanat eivät täsmää."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Käyttäjätunnus"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-" Vaaditaan. Enintään 30 merkkiä. Vain kirjaimet, numerot ja @/./+/-/_ ovat "
-"sallittuja."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Tässä voidaan käyttää vain kirjaimia, numeroita ja @/./+/-/_ merkkejä."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Salasana"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Salasanan vahvistaminen"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Syötä sama salasana tarkistuksen vuoksi toistamiseen."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Salasanoja ei tallenneta selkokielisinä, joten tämän käyttäjän salasanaa on "
-"mahdoton nähdä, mutta voit vaihtaa salasanan käyttämällä <a href=\"password/"
-"\">tätä lomaketta</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Tämä käyttäjätili ei ole voimassa."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Sähköposti"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Uusi salasana"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Uusi salasana uudelleen"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Vanha salasana on virheellinen. Yritä uudelleen."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Vanha salasana"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Salasana toistamiseen"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritmi"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iteraatioita"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "suola"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "tiiviste"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "työmäärä"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "tarkistussumma"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nimi"
-
-#: models.py:74
-msgid "codename"
-msgstr "tunniste"
-
-#: models.py:78
-msgid "permission"
-msgstr "oikeus"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "oikeudet"
-
-#: models.py:128
-msgid "group"
-msgstr "ryhmä"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "ryhmät"
-
-#: models.py:200
-msgid "password"
-msgstr "salasana"
-
-#: models.py:201
-msgid "last login"
-msgstr "viimeisin kirjautuminen"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "pääkäyttäjä"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Antaa käyttäjälle kaikki oikeudet ilman, että niitä täytyy erikseen luetella."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Käyttäjäryhmät joihin tämä käyttäjä kuuluu. Käyttäjä saa käyttöoikeudet "
-"kaikista käyttäjäryhmistä, joihin hän kuuluu."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "käyttäjän oikeudet"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "käyttäjätunnus"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-" Vaaditaan. Enintään 30 merkkiä. Vain kirjaimet, numerot ja @/./+/-/_ ovat "
-"sallittuja."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Syötä kelvollinen käyttäjätunnus."
-
-#: models.py:372
-msgid "first name"
-msgstr "etunimi"
-
-#: models.py:373
-msgid "last name"
-msgstr "sukunimi"
-
-#: models.py:374
-msgid "email address"
-msgstr "sähköpostiosoite"
-
-#: models.py:375
-msgid "staff status"
-msgstr "ylläpitäjä"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Määrittää, pääseekö käyttäjä tähän sivuston ylläpito-osioon."
-
-#: models.py:378
-msgid "active"
-msgstr "voimassa"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Määrää, voiko käyttäjä kirjautua sisään. Tällä voi estää käyttäjätilin "
-"käytön poistamatta sitä."
-
-#: models.py:381
-msgid "date joined"
-msgstr "liittynyt"
-
-#: models.py:389
-msgid "user"
-msgstr "käyttäjä"
-
-#: models.py:390
-msgid "users"
-msgstr "käyttäjät"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Kirjautunut ulos"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Salasanan nollaus sivustolla %(site_name)s "
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/fr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/fr/LC_MESSAGES/django.mo
deleted file mode 100644
index 4488776..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/fr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/fr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/fr/LC_MESSAGES/django.po
deleted file mode 100644
index 9ef1759..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/fr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,293 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# claudep <claude@2xlibre.net>, 2013
-# claudep <claude@2xlibre.net>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-12 08:50+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: French (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Information personnelle"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Permissions"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Dates importantes"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Mot de passe modifié avec succès"
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Modifier le mot de passe : %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Aucun mot de passe défini."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-"Format de mot de passe non valide ou algorithme de hachage non reconnu."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Un utilisateur avec ce nom existe déjà."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Les deux mots de passe ne correspondent pas."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Nom d'utilisateur"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Requis. 30 caractères maximum. Uniquement des lettres, nombres et les "
-"caractères « @ », « . », « + », « - » et « _ »."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"Cette valeur peut uniquement contenir des lettres, nombres et les caractères "
-"« @ », « . », « + », « - » et « _ »."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Mot de passe"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Confirmation du mot de passe"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Saisissez le même mot de passe que précédemment, pour vérification."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Les mots de passe ne sont pas enregistrés en clair, ce qui ne permet pas "
-"d'afficher le mot de passe de cet utilisateur, mais il est possible de le "
-"changer en utilisant <a href=\"password/\">ce formulaire</a>. "
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Saisissez un %(username)s et un mot de passe valides. Remarquez que chacun "
-"de ces champs est sensible à la casse (différenciation des majuscules/"
-"minuscules)."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Ce compte est inactif."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Courriel"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nouveau mot de passe"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Confirmation du nouveau mot de passe"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Votre ancien mot de passe est incorrect. Veuillez le rectifier."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Ancien mot de passe"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Mot de passe (à nouveau)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algorithme"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "itérations"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salage"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "empreinte"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "facteur travail"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "somme de contrôle"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nom"
-
-#: models.py:74
-msgid "codename"
-msgstr "nom de code"
-
-#: models.py:78
-msgid "permission"
-msgstr "permission"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "permissions"
-
-#: models.py:128
-msgid "group"
-msgstr "groupe"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "groupes"
-
-#: models.py:200
-msgid "password"
-msgstr "mot de passe"
-
-#: models.py:201
-msgid "last login"
-msgstr "dernière connexion"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "statut super-utilisateur"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Précise que l'utilisateur possède toutes les permissions sans les assigner "
-"explicitement."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Les groupes dont fait partie cet utilisateur. Celui-ci obtient tous les "
-"droits de tous ses groupes."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "permissions de l'utilisateur"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Permissions spécifiques à cet utilisateur."
-
-#: models.py:368
-msgid "username"
-msgstr "nom d'utilisateur"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Requis. 30 caractères maximum. Uniquement des lettres, nombres et les "
-"caractères « @ », « . », « + », « - » et « _ »."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Saisissez un nom d'utilisateur valable."
-
-#: models.py:372
-msgid "first name"
-msgstr "prénom"
-
-#: models.py:373
-msgid "last name"
-msgstr "nom"
-
-#: models.py:374
-msgid "email address"
-msgstr "adresse électronique"
-
-#: models.py:375
-msgid "staff status"
-msgstr "statut équipe"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Précise si l'utilisateur peut se connecter à ce site d'administration."
-
-#: models.py:378
-msgid "active"
-msgstr "actif"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Précise si l'utilisateur doit être considéré comme actif. Décochez ceci "
-"plutôt que de supprimer le compte."
-
-#: models.py:381
-msgid "date joined"
-msgstr "date d'inscription"
-
-#: models.py:389
-msgid "user"
-msgstr "utilisateur"
-
-#: models.py:390
-msgid "users"
-msgstr "utilisateurs"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Déconnecté"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Réinitialisation du mot de passe sur %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Saisissez un nom d'utilisateur valable."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/fy_NL/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/fy_NL/LC_MESSAGES/django.mo
deleted file mode 100644
index 1fbbb3d..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/fy_NL/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/fy_NL/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/fy_NL/LC_MESSAGES/django.po
deleted file mode 100644
index b315ae9..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/fy_NL/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,271 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-04-25 08:09+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Western Frisian (Netherlands) (http://www.transifex.com/"
-"projects/p/django/language/fy_NL/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fy_NL\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr ""
-
-#: admin.py:42
-msgid "Permissions"
-msgstr ""
-
-#: admin.py:44
-msgid "Important dates"
-msgstr ""
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr ""
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr ""
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr ""
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr ""
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr ""
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr ""
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr ""
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr ""
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr ""
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr ""
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr ""
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-
-#: forms.py:290
-msgid "Old password"
-msgstr ""
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr ""
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr ""
-
-#: models.py:74
-msgid "codename"
-msgstr ""
-
-#: models.py:78
-msgid "permission"
-msgstr ""
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr ""
-
-#: models.py:128
-msgid "group"
-msgstr ""
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr ""
-
-#: models.py:200
-msgid "password"
-msgstr ""
-
-#: models.py:201
-msgid "last login"
-msgstr ""
-
-#: models.py:291
-msgid "superuser status"
-msgstr ""
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr ""
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr ""
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr ""
-
-#: models.py:373
-msgid "last name"
-msgstr ""
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr ""
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-
-#: models.py:378
-msgid "active"
-msgstr ""
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-
-#: models.py:381
-msgid "date joined"
-msgstr ""
-
-#: models.py:389
-msgid "user"
-msgstr ""
-
-#: models.py:390
-msgid "users"
-msgstr ""
-
-#: views.py:89
-msgid "Logged out"
-msgstr ""
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ga/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/ga/LC_MESSAGES/django.mo
deleted file mode 100644
index 8cbf1ab..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ga/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ga/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/ga/LC_MESSAGES/django.po
deleted file mode 100644
index 612974c..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ga/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,292 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Michael Thornhill <michael@maithu.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/"
-"ga/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ga\n"
-"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
-"4);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Eolas pearsantach"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Ceada"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Dáta tábhactach"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Focal faire aithraithe rathúil"
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Athraigh focal faire: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "In ann do úsáideoir leis an ainm úsáideora."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Níl an dá focla faire comhoiriúnigh"
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Ainm úsaideoir"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Riachtanach. 30 carachtair nó níos lú. Litreacha, digite agus @/./+/-/_ "
-"amháin."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"Cathaigh litreacha, digite agus na carachtair @/./+/-/_ amhain le hadhaigh "
-"an méid seo."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Focal faire"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Focal faire deimhniú"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Iontráíl an focal faire céanna mar thuas, le fíorúchán."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Níl focail fairí amh stóráilailte, agus mar sin níl aon bhealach focal faire "
-"an úsaideora a fheiceáil, ach is féidir leat athrú ar an focal faire leis <a "
-"href=\"password/\">an bhfoirm seo</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Tá an cuntas seo neamhghníomhach."
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Focal faire nua"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Deimnhiú focal faire nua"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"Cuireadh do sean-focal faire isteach go mícheart. Iontráil isteach é arís."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Sean-focal faire "
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Focal faire (arís)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algartam"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "atriallta"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salann"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "haiseáil"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "fachtóir oibre"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "suim sheiceála"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "ainm"
-
-#: models.py:74
-msgid "codename"
-msgstr "Ainm cód"
-
-#: models.py:78
-msgid "permission"
-msgstr "cead"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "ceada"
-
-#: models.py:128
-msgid "group"
-msgstr "grúpa"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grúpa"
-
-#: models.py:200
-msgid "password"
-msgstr "focal faire"
-
-#: models.py:201
-msgid "last login"
-msgstr "logáil deirneach"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "stádas forúsáideoir"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Sainíonn go bhfuil gach ceada ag an úsáideoir seo gan iad a cur le go "
-"díreach."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Na grúpaí a mbaineann leis an úsáideoir seo. Gheobhaidh úsáideor na ceadanna "
-"a deonaíodh do gach ceann den a grúpa."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "ceada úsáideoira"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "Ainm úsáideoir"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Riachtanach. 30 carachtair nó níos lú. Litreacha, digite agus na carachtair "
-"@/./+/-/_"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "ainm baiste"
-
-#: models.py:373
-msgid "last name"
-msgstr "sloinne"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "stádas foirne"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Sainigh an bhfuil cead ag an úsáideoir logáil isteach go dtí an suíomh "
-"riaracháin seo."
-
-#: models.py:378
-msgid "active"
-msgstr "gníomhach"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Sainíonn an bhfuil an úsáideoir gníomhach. Míroghnaigh seo in aineonn de "
-"scriseadh cuntasí."
-
-#: models.py:381
-msgid "date joined"
-msgstr "Dáta teacht isteach"
-
-#: models.py:389
-msgid "user"
-msgstr "úsáideoir"
-
-#: models.py:390
-msgid "users"
-msgstr "úsáideora"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Logáilte amach"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Athshocraigh focal faire ar %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/gl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/gl/LC_MESSAGES/django.mo
deleted file mode 100644
index c05dd72..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/gl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/gl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/gl/LC_MESSAGES/django.po
deleted file mode 100644
index 00a3789..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/gl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,285 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# fasouto <fsoutomoure@gmail.com>, 2011
-# fonso <fonzzo@gmail.com>, 2011,2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Leandro Regueiro <leandro.regueiro@gmail.com>, 2011,2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/"
-"gl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Información persoal"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Permisos"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Datas importantes"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "O contrasinal cambiouse correctamente."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Cambiar o contrasinal: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Non se configurou ningún contrasinal."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Formato de contrasinal non válido ou algoritmo de hash descoñecido."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Xa existe un usuario con ese nome de usuario."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Os dous campos de contrasinal non coinciden."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Nome de usuario"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "Requirido. 30 caracteres ou menos. Só letras, díxitos e @/./+/-/_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Este valor só pode conter letras, números e os caracteres @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Contrasinal"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Confirmación do contrasinal"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Insira o mesmo contrasinal de enriba para verificalo."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Non se gardan os contrasinais sen cifrar, de maneira que non se pode ver o "
-"contrasinal deste usuario, pero pode modificar o contrasinal mediante <a "
-"href=\"password/\">este formulario</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Por favor, insira un %(username)s e contrasinal correctos. Teña en conta que "
-"ambos os dous campos poden distinguir maiúsculas e minúsculas."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Esta conta está inactiva."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Correo electrónico"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Novo contrasinal"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Confirmación do novo contrasinal"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Inseriu incorrectamente o seu contrasinal actual. Insírao de novo."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Contrasinal antigo"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Contrasinal (outra vez)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritmo"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iteracións"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "sal"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "factor de traballo"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "suma de verificación"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nome"
-
-#: models.py:74
-msgid "codename"
-msgstr "código"
-
-#: models.py:78
-msgid "permission"
-msgstr "permiso"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "permisos"
-
-#: models.py:128
-msgid "group"
-msgstr "grupo"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupos"
-
-#: models.py:200
-msgid "password"
-msgstr "contrasinal"
-
-#: models.py:201
-msgid "last login"
-msgstr "última sesión"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "estatus de superusuario"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Indica que este usuario ten todos os permisos sen asignarllos explicitamente."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Os grupos aos que pertence este usuario. Un/ha usuario/a recibirá todos os "
-"permisos outorgados a cada un dos seus grupos."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "permisos de usuario"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "nome de usuario"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "Requirido. 30 caracteres ou menos. Letras, díxitos e @/./+/-/_."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Insira un nome de usuario válido."
-
-#: models.py:372
-msgid "first name"
-msgstr "nome"
-
-#: models.py:373
-msgid "last name"
-msgstr "apelidos"
-
-#: models.py:374
-msgid "email address"
-msgstr "enderezo de correo electrónico"
-
-#: models.py:375
-msgid "staff status"
-msgstr "membro do persoal"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Indica se o usuario pode acceder a este sitio de administración."
-
-#: models.py:378
-msgid "active"
-msgstr "activo"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Determina se este usuario se debe considerar activo. Deseleccione isto en "
-"vez de borrar contas de usuario."
-
-#: models.py:381
-msgid "date joined"
-msgstr "data de rexistro"
-
-#: models.py:389
-msgid "user"
-msgstr "usuario"
-
-#: models.py:390
-msgid "users"
-msgstr "usuarios"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Rematou a sesión"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Cambio de contrasinal en %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Insira un nome de usuario válido."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/he/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/he/LC_MESSAGES/django.mo
deleted file mode 100644
index e891bf1..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/he/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/he/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/he/LC_MESSAGES/django.po
deleted file mode 100644
index aadb12d..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/he/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,282 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Alex Gaynor <alex.gaynor@gmail.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Meir Kriheli <mkriheli@gmail.com>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-11-02 11:18+0000\n"
-"Last-Translator: Meir Kriheli <mkriheli@gmail.com>\n"
-"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "מידע אישי"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "הרשאות"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "תאריכים חשובים"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "הסיסמה שונתה בהצלחה."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "שינוי סיסמה: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "לא נקבעה סיסמה."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "תחביר סיסמה בלתי-חוקי או אלגוריתם גיבוב לא ידוע."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "משתמש עם שם משתמש זה קיים כבר"
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "שני שדות הסיסמה אינם זהים."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "שם משתמש"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "שדה חובה. 30 תווים או פחות. אותיות, ספרות ו-@/./+/-/_ בלבד."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "ערך זה יכול להכיל אותיות, ספרות והתווים @/./+/-/_ בלבד."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "סיסמה"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "אימות סיסמה"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "יש להזין את אותה סיסמה שוב,לאימות."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"הסיסמאות אינן נשמרות באופן חשוף, כך שאין דרך לראות את סיסמת המשתמש, ניתן "
-"לשנות את הסיסמה בעזרת <a href=\"password/\">טופס זה</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"נא להזין %(username)s וסיסמה נכונים. נא לשים לב כי שני השדות רגישים לאותיות "
-"גדולות/קטנות."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "חשבון זה אינו פעיל."
-
-#: forms.py:206
-msgid "Email"
-msgstr "דוא\"ל"
-
-#: forms.py:256
-msgid "New password"
-msgstr "סיסמה חדשה"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "אימות סיסמה חדשה"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "סיסמתך הישנה הוזנה בצורה שגויה. נא להזינה שוב."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "סיסמה ישנה"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "סיסמה (שוב)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "אלגוריתם"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "חזרות"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "גיבוב"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "work factor"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "סיכום ביקורת"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "שם"
-
-#: models.py:74
-msgid "codename"
-msgstr "שם קוד"
-
-#: models.py:78
-msgid "permission"
-msgstr "הרשאה"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "הרשאות"
-
-#: models.py:128
-msgid "group"
-msgstr "קבוצה"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "קבוצות"
-
-#: models.py:200
-msgid "password"
-msgstr "סיסמה"
-
-#: models.py:201
-msgid "last login"
-msgstr "כניסה אחרונה"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "סטטוס משתמש על"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "מציין שלמשתמש זה יש את כל ההרשאות ללא הצורך המפורש בהענקתן."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"הקבוצות שמשתמש זה שייך אליהן. משתמש יקבל את כל ההרשאות המוקצות לקבוצה שלו/"
-"שלה."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "הרשאות משתמש"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "הרשאות ספציפיות למשתמש זה."
-
-#: models.py:368
-msgid "username"
-msgstr "שם משתמש"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "שדה חובה. 30 תווים או פחות. אותיות, ספרות והתווים @/./+/-/_ בלבד."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "נא להזין שם משתמש חוקי."
-
-#: models.py:372
-msgid "first name"
-msgstr "שם פרטי"
-
-#: models.py:373
-msgid "last name"
-msgstr "שם משפחה"
-
-#: models.py:374
-msgid "email address"
-msgstr "כתובת דוא\"ל"
-
-#: models.py:375
-msgid "staff status"
-msgstr "סטטוס איש צוות"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "מציין האם המשתמש יכול להתחבר לאתר הניהול."
-
-#: models.py:378
-msgid "active"
-msgstr "פעיל"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"מציין האם יש להתייחס למשתמש כפעיל. יש לבטל בחירה זו במקום למחוק חשבונות "
-"משתמשים."
-
-#: models.py:381
-msgid "date joined"
-msgstr "תאריך הצטרפות"
-
-#: models.py:389
-msgid "user"
-msgstr "משתמש"
-
-#: models.py:390
-msgid "users"
-msgstr "משתמשים"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "יצאת מהמערכת"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "החלפת הסיסמה ב-%(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "נא להזין כתובת דואר אלקטרוני חוקית."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/hi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/hi/LC_MESSAGES/django.mo
deleted file mode 100644
index 77a8183..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/hi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/hi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/hi/LC_MESSAGES/django.po
deleted file mode 100644
index 4223062..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/hi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,284 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# आलोक कुमार <alok.kumar@gmail.com>, 2013
-# Chandan kumar <chandankumar.093047@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sandeep Satavlekar <sandysat@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/"
-"hi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "व्यक्तिगत सूचना"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "अनुमतियाँ"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "महत्त्वपूर्ण तिथियाँ"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "शब्दकूट बदली कामयाब"
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "शब्दकूट बदलें: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "कोई कूटशब्द नहीं।"
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "अवैध कूटशब्द प्रारूप या अज्ञात द्रुतान्वेषण कलन विधि"
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "इस नाम के साथ प्रवोक्ता अस्तित्व है"
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "यह दो शब्दकूट क्षेत्रों का मेल नहीं होता "
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "प्रवोक्ता नाम"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "जरूरी है | 30 या कम | केवल वर्णों, अक्षर, अंक और @/./+/-/_ |"
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "यह मूल्य केवल अक्षर, संख्या और @/./+/-/_ हो सकते हैं |"
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "कूटशब्द"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "कूटशब्द पुष्टि"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "सत्याप्ती के लिए ऊपर दर्ज किए शब्दकूट को फिर से प्रवेश करें"
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"अधूरे कूटशब्द का संग्रह नहीं होता है, तो वहाँ इस उपयोगकर्ता के कूटशब्द को देखने के लिए कोई "
-"तरीका नहीं है, लेकिन आप <a href=\"password/\"> इस प्रपत्र</a> का उपयोग करते हुए "
-"कूटशब्द बदल सकते हैं."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr "कृपया सही %(username)s व कूटशब्द भरें। भरते समय लघु और दीर्घ अक्षरों का ध्यान रखें।"
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "यस खाता सुस्त है"
-
-#: forms.py:206
-msgid "Email"
-msgstr "डाक पता"
-
-#: forms.py:256
-msgid "New password"
-msgstr "नया शब्दकूट"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "नया शब्दकूट पुष्टि"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "आपने पुराना शब्दकूट गलत दर्ज किया है । कृपया फिर से दर्ज करें"
-
-#: forms.py:290
-msgid "Old password"
-msgstr "पुराना शब्दकूट"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "शब्दकूट (दुबारा)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "अलगोरिथम"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "पुनरूक्तियाँ"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "साल्ट"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "हैश"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "कार्य फ़ैक्टर"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "चेकसम"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "नाम"
-
-#: models.py:74
-msgid "codename"
-msgstr "कोडनेम"
-
-#: models.py:78
-msgid "permission"
-msgstr "अनुमति"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "अनुमतियाँ"
-
-#: models.py:128
-msgid "group"
-msgstr "वर्ग"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "वर्गों"
-
-#: models.py:200
-msgid "password"
-msgstr "शब्दकूट"
-
-#: models.py:201
-msgid "last login"
-msgstr "पिछला लॉगिन"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "सर्वोच्च प्रयोक्ता स्थिति"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"निर्दिष्ट करता है कि जो इस उपयोगकर्ता के पास सभी अनुमतियाँ उन्हें बिना बताए स्पष्ट रूप से "
-"निर्धारित है."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"समूह के अंतर्गत यह उपयोगकर्ता आता है. उपयोगकर्ता उसकी / उसके समूह के प्रत्येक के लिए दी गई "
-"अनुमति प्राप्त होगा."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "प्रयोक्ता अनुमतियाँ"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "प्रयोक्ता नाम"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "जरूरी है | 30 या कम वर्णों | केवल अक्षर, संख्या और @/./+/-/_"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "वैध प्रयोक्ता नाम भरें"
-
-#: models.py:372
-msgid "first name"
-msgstr "पहला नाम"
-
-#: models.py:373
-msgid "last name"
-msgstr "आखिरी नाम"
-
-#: models.py:374
-msgid "email address"
-msgstr "डाक पता"
-
-#: models.py:375
-msgid "staff status"
-msgstr "कर्मचारी स्थिति"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "तय करता हैं की उपयोगकर्ता इस साईट प्रशासन में प्रवेश कर सकता हैं या नहीं |"
-
-#: models.py:378
-msgid "active"
-msgstr "सक्रिय"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"निर्दिष्ट करता है कि क्या इस उपयोगकर्ता को सक्रिय माना जाना चाहिए.खातों को हटाने की "
-"बजाय इस अचयनित करे."
-
-#: models.py:381
-msgid "date joined"
-msgstr "तिथि भरती"
-
-#: models.py:389
-msgid "user"
-msgstr "उपभोक्ता"
-
-#: models.py:390
-msgid "users"
-msgstr "उपभोक्ताऐं"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "लाग्ड आउट "
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "%(site_name)s पर कूटशब्द को पुनःठीक करे"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "वैध प्रयोक्ता नाम भरें"
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/hr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/hr/LC_MESSAGES/django.mo
deleted file mode 100644
index 7e506f9..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/hr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/hr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/hr/LC_MESSAGES/django.po
deleted file mode 100644
index b442864..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/hr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,295 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Bojan Mihelač <bmihelac@mihelac.org>, 2012
-# Davor Lučić <r.dav.lc@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# mislav <mislav.cimpersak@gmail.com>, 2013
-# Ninopoopmap <ninonandroid@gmail.com>, 2013
-# senko <senko.rasic@dobarkod.hr>, 2012
-# zmasek <zlatko.masek@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-28 22:37+0000\n"
-"Last-Translator: mislav <mislav.cimpersak@gmail.com>\n"
-"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/"
-"hr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hr\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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Osobni podaci"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Privilegije"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Važni datumi"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Lozinka uspješno promijenjena."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Promijeni lozinku: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Lozinka nije postavljena."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Neispravan format lozinke ili nepoznati hashing algoritam."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Korisnik sa navedenim imenom već postoji."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Dva polja za lozinku nisu jednaka."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Korisničko ime"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Obavezan unos. 30 alfanumeričkih znakova ili manje. Samo slova, brojevi i "
-"@/./+/-/_ znakovi."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"Ova vrijednost može sadržavati samo slova, brojeve i @/./+/-/_ znakove."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Lozinka"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Potvrda lozinke"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Unesite istu lozinku, za potvrdu."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Lozinke se ne pohranjuju u čitljivom obliku, zbog toga nije moguće vidjeti "
-"lozinku ovog korisnika, ali je možete promjeniti koristeći <a href="
-"\"password/\">ovaj obrazac</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Unesite ispravno %(username)s i lozinku. Imajte na umu da oba polja mogu "
-"biti velika i mala slova."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Ovaj korisnički račun nije aktivan."
-
-#: forms.py:206
-msgid "Email"
-msgstr "E-mail"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nova lozinka"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Potvrda nove lozinke"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Vaša stara lozinka je pogrešno unesena. Molim unesite ponovo."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Stara lozinka"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Lozinka (unesi ponovo)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritam"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iteracije"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "slučajna vrijednost"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "količina rada"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "zbroj za provjeru"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "ime"
-
-#: models.py:74
-msgid "codename"
-msgstr "kodno ime"
-
-#: models.py:78
-msgid "permission"
-msgstr "privilegija"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "privilegije"
-
-#: models.py:128
-msgid "group"
-msgstr "grupa"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupe"
-
-#: models.py:200
-msgid "password"
-msgstr "lozinka"
-
-#: models.py:201
-msgid "last login"
-msgstr "posljednja prijava"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "superuser status"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Određuje da ovaj korisnik ima sve privilegije te uklanja potrebu da se "
-"privilegije unose eksplicitno/ručno."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Grupe kojima ovaj korisnik pripada. Korisnik će imati sve privilegije grupa "
-"kojima pripada."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "privilegije korisnika"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Određene privilegije za korisnika."
-
-#: models.py:368
-msgid "username"
-msgstr "korisničko ime"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Obavezan unos. 30 alfanumeričkih znakova ili manje. Samo slova, brojevi i "
-"@/./+/-/_ dozvoljeni."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Unesite ispravno korisničko ime."
-
-#: models.py:372
-msgid "first name"
-msgstr "ime"
-
-#: models.py:373
-msgid "last name"
-msgstr "prezime"
-
-#: models.py:374
-msgid "email address"
-msgstr "e-mail adresa"
-
-#: models.py:375
-msgid "staff status"
-msgstr "status osoblja"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Određuje može li se korisnik prijaviti na ove stranice administracije."
-
-#: models.py:378
-msgid "active"
-msgstr "aktivan"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Određuje treba li se ovaj korisnik tretirati kao aktivan korisnik. Koristite "
-"ovu opciju umjesto brisanja korisničkih računa."
-
-#: models.py:381
-msgid "date joined"
-msgstr "datum učlanjenja"
-
-#: models.py:389
-msgid "user"
-msgstr "korisnik"
-
-#: models.py:390
-msgid "users"
-msgstr "korisnici"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Niste logirani"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Resetiranje lozinke na %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Unesite ispravnu e-mail adresu."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/hu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/hu/LC_MESSAGES/django.mo
deleted file mode 100644
index 146698f..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/hu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/hu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/hu/LC_MESSAGES/django.po
deleted file mode 100644
index f648002..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/hu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,288 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Szilveszter Farkas <szilveszter.farkas@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/"
-"language/hu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Személyes információ"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Jogosultságok"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Fontos dátumok"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Sikeres jelszóváltoztatás."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Jelszó megváltoztatása: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Nincs jelszó beállítva."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Érvénytelen jelszóformátum vagy ismeretlen hash-algoritmus."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Létezik már egy felhasználó ezzel a névvel."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "A két jelszó mező tartalma nem egyezik meg."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Felhasználó"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Kötelező. Legfeljebb 30 karakter. Betűk, számok és @/./+/-/_ karakterek."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"Ez az érték csak betűket, számokat és @/./+/-/_ karaktereket tartalmazhat."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Jelszó"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Jelszó megerősítése"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Írja be a fenti jelszót ellenőrzés céljából."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"A kódolatlan jelszavakat nem tároljuk, így a felhasználó jelszavát nem lehet "
-"megtekinteni, azonban <a href=\"password/\">ezzel az űrlappal</a> a jelszó "
-"megváltoztatható."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Írjon be egy helyes %(username)s és jelszót. Mindkét mező kisbetű-nagybetű "
-"érzékeny lehet."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Ez a fiók inaktív."
-
-#: forms.py:206
-msgid "Email"
-msgstr "E-mail"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Új jelszó"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Új jelszó megerősítése"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "A régi jelszó hibásan lett megadva. Írja be újra."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Régi jelszó"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Jelszó újra"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritmus"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iterációk"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "erősség"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "ellenőrző összeg"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "név"
-
-#: models.py:74
-msgid "codename"
-msgstr "kódnév"
-
-#: models.py:78
-msgid "permission"
-msgstr "jogosultság"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "jogosultságok"
-
-#: models.py:128
-msgid "group"
-msgstr "csoport"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "csoportok"
-
-#: models.py:200
-msgid "password"
-msgstr "jelszó"
-
-#: models.py:201
-msgid "last login"
-msgstr "utolsó bejelentkezés"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "rendszergazda státusz"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Megadja, hogy ez a felhasználó rendelkezik-e minden jogosultsággal anélkül, "
-"hogy azt külön meg kellene adni."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"A csoportok, amelyekhez a felhasználó tartozik. A felhasználó minden egyes "
-"csoportja jogosultságaival rendelkezni fog."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "felhasználói jogosultságok"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "felhasználónév"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Kötelező. Legfeljebb 30 karakter. Betűk, számok és @/./+/-/_ karakterek."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Adjon meg egy érvényes felhasnzálónevet."
-
-#: models.py:372
-msgid "first name"
-msgstr "keresztnév"
-
-#: models.py:373
-msgid "last name"
-msgstr "vezetéknév"
-
-#: models.py:374
-msgid "email address"
-msgstr "e-mail cím"
-
-#: models.py:375
-msgid "staff status"
-msgstr "személyzet státusz"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Megadja, hogy a felhasználó bejelentkezhet-e erre az adminisztrációs oldalra."
-
-#: models.py:378
-msgid "active"
-msgstr "aktív"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Megadja, hogy a felhasználó aktív-e. Állítsa át ezt az értéket a fiók "
-"törlése helyett."
-
-#: models.py:381
-msgid "date joined"
-msgstr "csatlakozás dátuma"
-
-#: models.py:389
-msgid "user"
-msgstr "felhasználó"
-
-#: models.py:390
-msgid "users"
-msgstr "felhasználók"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Kijelentkezve"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Jelszó újragenerálása ezen az oldalon: %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Adjon meg egy érvényes felhasználónevet."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ia/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/ia/LC_MESSAGES/django.mo
deleted file mode 100644
index 28f9f44..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ia/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ia/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/ia/LC_MESSAGES/django.po
deleted file mode 100644
index 7297068..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ia/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,285 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Martijn Dekker <mcdutchie@hotmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/"
-"language/ia/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ia\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Information personal"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Permissiones"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Datas importante"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Le cambio del contrasigno ha succedite."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Cambia contrasigno: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Un usator con iste nomine de usator jam existe."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Le duo campos de contrasigno non es identic."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Nomine de usator"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Obligatori. 30 characteres o minus. Litteras, cifras e @/./+/-/_ solmente."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"Iste valor pote continer solmente litteras, numeros e le characteres @/./+/-/"
-"_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Contrasigno"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Confirma contrasigno"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Repete le contrasigno pro verification."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Le contrasignos non es immagazinate in forma de texto simple, dunque il non "
-"es possibile vider le contrasigno de iste usator, ma tu pote cambiar le "
-"contrasigno con <a href=\"password/\">iste formulario</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Iste conto es inactive."
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nove contrasigno"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Confirma nove contrasigno"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Le ancian contrasigno non es correcte. Per favor scribe lo de novo."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Ancian contrasigno"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Contrasigno (de novo)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algorithmo"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iterationes"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "sal"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "factor de labor"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "summa de controlo"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nomine"
-
-#: models.py:74
-msgid "codename"
-msgstr "nomine de codice"
-
-#: models.py:78
-msgid "permission"
-msgstr "permission"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "permissiones"
-
-#: models.py:128
-msgid "group"
-msgstr "gruppo"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "gruppos"
-
-#: models.py:200
-msgid "password"
-msgstr "contrasigno"
-
-#: models.py:201
-msgid "last login"
-msgstr "ultime session"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "stato de superusator"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Indica que iste usator ha tote le permissiones sin assignar los "
-"explicitemente."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Le gruppos al quales iste usator pertine. Un usator obtene tote le "
-"permissiones concedite a cata un de su gruppos."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "permissiones de usator"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "nomine de usator"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Obligatori. 30 characteres o minus. Litteras, numeros e characteres @/./+/-/_"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "prenomine"
-
-#: models.py:373
-msgid "last name"
-msgstr "nomine de familia"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "stato de personal"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Indica si le usator pote aperir session in iste sito administrative."
-
-#: models.py:378
-msgid "active"
-msgstr "active"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Indica si iste usator debe esser tractate como active. Dismarca isto in vice "
-"de deler contos."
-
-#: models.py:381
-msgid "date joined"
-msgstr "data de inscription"
-
-#: models.py:389
-msgid "user"
-msgstr "usator"
-
-#: models.py:390
-msgid "users"
-msgstr "usatores"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Session claudite"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Reinitialisation del contrasigno in %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/id/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/id/LC_MESSAGES/django.mo
deleted file mode 100644
index 4c4110f..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/id/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/id/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/id/LC_MESSAGES/django.po
deleted file mode 100644
index f8624b1..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/id/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,288 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# rodin <romihardiyanto@gmail.com>, 2011,2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Informasi pribadi"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Hak akses"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Tanggal penting"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Sandi berhasil diubah."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Ganti sandi: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Belum ada sandi yang disetel."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Format sandi tidak valid atau algoritma hash yang tidak dikenal."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Seorang pengguna dengan nama pengguna tersebut sudah ada."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Dua bidang sandi tidak cocok."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Username"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Wajib. 30 karakter atau kurang dalam kombinasi huruf, angka, dan karakter "
-"@/./+/-/_ ."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Nilai ini hanya boleh berisi huruf, angka, dan karakter @/./+/-/_ ."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Sandi"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Konfirmasi sandi"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Masukkan sandi yang sama dengan di atas, untuk verifikasi."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Sandi mentah tidak akan disimpan dan tidak ada cara untuk membaca sandi "
-"pengguna ini, namun Anda dapat mengganti sandi tersebut lewat <a href="
-"\"password/\">formulir ini</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Masukkan nama pengguna %(username)s dan sandi yang benar. Huruf besar/kecil "
-"pada bidang ini berpengaruh."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Akun ini tidak aktif."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Email"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Sandi baru"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Konfirmasi sandi baru"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Sandi lama Anda yang dimasukkan salah. Masukkan sekali lagi."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Sandi lama"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Sandi (ulangi)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritme"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iterasi"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "garam"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "faktor kerja"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "ceksum"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nama"
-
-#: models.py:74
-msgid "codename"
-msgstr "namasandi"
-
-#: models.py:78
-msgid "permission"
-msgstr "hak akses"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "hak akses"
-
-#: models.py:128
-msgid "group"
-msgstr "grup"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grup"
-
-#: models.py:200
-msgid "password"
-msgstr "sandi"
-
-#: models.py:201
-msgid "last login"
-msgstr "masuk terakhir"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "status superuser"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Menentukan apakah pengguna memiliki semua hak akses tanpa perlu diberikan "
-"secara manual."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Grup tempat pengguna ini dikelompokkan. Pengguna akan mendapatkan semua hak "
-"akses yang diberikan pada grupnya."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "hak akses pengguna"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "nama pengguna"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Wajib. 30 karakter atau kurang dalam kombinasi huruf, angka, karakter @/./"
-"+/-/_ "
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Masukkan nama pengguna yang valid."
-
-#: models.py:372
-msgid "first name"
-msgstr "nama depan"
-
-#: models.py:373
-msgid "last name"
-msgstr "nama belakang"
-
-#: models.py:374
-msgid "email address"
-msgstr "alamat email"
-
-#: models.py:375
-msgid "staff status"
-msgstr "status staf"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Menentukan apakah pengguna berhak masuk ke situs administrasi ini."
-
-#: models.py:378
-msgid "active"
-msgstr "aktif"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Menentukan apakah pengguna dianggap aktif. Hapus pilihan ini tanpa perlu "
-"menghapus akunnya."
-
-#: models.py:381
-msgid "date joined"
-msgstr "tanggal daftar"
-
-#: models.py:389
-msgid "user"
-msgstr "pengguna"
-
-#: models.py:390
-msgid "users"
-msgstr "pengguna"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Keluar"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Penyetelan ulang sandi di %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Masukkan nama pengguna yang valid."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/is/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/is/LC_MESSAGES/django.mo
deleted file mode 100644
index 613cd72..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/is/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/is/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/is/LC_MESSAGES/django.po
deleted file mode 100644
index 8df80e4..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/is/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,290 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Hafsteinn Einarsson <haffi67@gmail.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Logi Ragnarsson <logi@belgingur.is>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/"
-"language/is/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: is\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Persónuupplýsingar"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Réttindi"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Mikilvægar dagsetningar"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Breyting á lykilorði tókst."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Breyta lykilorði: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Notandi með þetta notendanafn er nú þegar til."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Lykilorðin tvö pössuðu ekki saman."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Notandanafn"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Nauðsynlegt að fylla út. 30 stafir eða færri. Bókstafir (ekki broddstafir), "
-"tölustafir og @/./+/-/_ aðeins leyft."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"Þessi reitur má aðeins innihalda bókstafi (ekki broddstafi), tölustafi og "
-"@/./+/-/_ táknin"
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Lykilorð"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Staðfesting lykilorðs"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Settu inn sama lykilorðið aftur til staðfestingar."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Lykilorð eru aðeins geymd dulkóðuð, svo ekki er hægt að sjá lykilorð þessa "
-"notanda, en þú getur breytt lykilorðinu með <a href=\"password/\">þessu "
-"eyðublaði</a> ."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Þessi reikningur er óvirkur."
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nýtt lykilorð"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Nýtt lykilorð (endurtekið)"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Gamla lykilorðið var vitlaust. Vinsamlegast reyndu aftur."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Gamalt lykilorð"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Lykilorð (aftur)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algrím"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "ítranir"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hashtafla"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "vinnustuðull"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "varsumma"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nafn"
-
-#: models.py:74
-msgid "codename"
-msgstr "vinnuheiti"
-
-#: models.py:78
-msgid "permission"
-msgstr "réttindi"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "réttindi"
-
-#: models.py:128
-msgid "group"
-msgstr "hópur"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "hópar"
-
-#: models.py:200
-msgid "password"
-msgstr "lykilorð"
-
-#: models.py:201
-msgid "last login"
-msgstr "síðasta innskráning"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "staða ofurnotanda"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Til marks um að notandinn hafi öll réttindi án þess að taka þau sérstaklega "
-"fram."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Hópar sem þessi notandi tilheyrir. Notandi fær allan aðgangsrétt sem fylgir "
-"hverjum hóp sem hann/hún er skráð(ur) í."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "réttindi"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "notandanafn"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Nauðsynlegt að fylla út. 30 stafir eða færri. Bókstafir (ekki broddstafir), "
-"tölustafir og @/./+/-/_ aðeins leyft."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "skírnarnafn"
-
-#: models.py:373
-msgid "last name"
-msgstr "eftirnafn"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "staða starfsmanns"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Segir til um hvort notandinn getur skráð sig inn á þetta stjórnunarsvæði."
-
-#: models.py:378
-msgid "active"
-msgstr "virkur"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Til marks um að notandinn sé virku. Taktu hakið úr þessum möguleika til að "
-"eyða aðgangi."
-
-#: models.py:381
-msgid "date joined"
-msgstr "skráning dags."
-
-#: models.py:389
-msgid "user"
-msgstr "notandi"
-
-#: models.py:390
-msgid "users"
-msgstr "notendur"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Útskráð(ur)"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Lykilorð endursett á %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/it/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/it/LC_MESSAGES/django.mo
deleted file mode 100644
index e1bbba2..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/it/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/it/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/it/LC_MESSAGES/django.po
deleted file mode 100644
index 263d525..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/it/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,286 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Federico Capoano <federico.capoano@teletu.it>, 2011
-# Flavio Curella <flavio.curella@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-23 16:19+0000\n"
-"Last-Translator: Flavio Curella <flavio.curella@gmail.com>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Informazioni personali"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Permessi"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Date importanti"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "La password è stata cambiata correttamente."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Cambia la password: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Nessuna password impostata."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Formato di password non valido o algoritmo di hash sconosciuto."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Un utente con questo nome è già presente."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "I due campi password non corrispondono."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Nome utente"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "Obbligatorio. 30 caratteri o meno. Solo lettere, cifre e @/./+/-/_ ."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Questo valore può contenere solo lettere, cifre e @/./+/-/_ ."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Password"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Conferma password"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Inserisci la stessa password inserita sopra, come verifica."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Le password originarie non vengono conservate, quindi non c'è modo di vedere "
-"la password di questo utente, ma è possibile modificare la password usando "
-"<a href=\"password/\">questa form</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Inserisci %(username)s e password corretti. In entrambi i campi le maiuscole "
-"sono significative."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Questo account non è attivo."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Email"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nuova password"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Conferma nuova password"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"La password attuale non è stata inserita correttamente: va inserita di nuovo."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Password attuale"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Password (di nuovo)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritmo"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iterazioni"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "work factor"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "checksum"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nome"
-
-#: models.py:74
-msgid "codename"
-msgstr "nome in codice"
-
-#: models.py:78
-msgid "permission"
-msgstr "permesso"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "permessi"
-
-#: models.py:128
-msgid "group"
-msgstr "gruppo"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "gruppi"
-
-#: models.py:200
-msgid "password"
-msgstr "password"
-
-#: models.py:201
-msgid "last login"
-msgstr "ultimo accesso"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "privilegi di superutente"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Stabilisce che l'utente ha tutti i privilegi, senza che siano stati "
-"assegnati esplicitamente."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"I gruppi cui l'utente appartiene. Un utente otterrà tutte le autorizzazioni "
-"concesse a ciascuno dei suoi gruppi."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "privilegi utente"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Permessi specifici per questo utente."
-
-#: models.py:368
-msgid "username"
-msgstr "nome utente"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "Obbligatorio. 30 caratteri o meno. Solo lettere, cifre e @/./+/-/_"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Inserisci un nome utente valido."
-
-#: models.py:372
-msgid "first name"
-msgstr "nome"
-
-#: models.py:373
-msgid "last name"
-msgstr "cognome"
-
-#: models.py:374
-msgid "email address"
-msgstr "indirizzo email"
-
-#: models.py:375
-msgid "staff status"
-msgstr "privilegi di staff"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Indica se l'utente può accedere a questo sito di amministrazione."
-
-#: models.py:378
-msgid "active"
-msgstr "attivo"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Stabilisce se l'utente debba essere considerato attivo. Deseleziona qui, "
-"piuttosto che cancellare gli account."
-
-#: models.py:381
-msgid "date joined"
-msgstr "iscritto in data"
-
-#: models.py:389
-msgid "user"
-msgstr "utente"
-
-#: models.py:390
-msgid "users"
-msgstr "utenti"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Accesso annullato"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Password reset su %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Inserisci un nome utente valido."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ja/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/ja/LC_MESSAGES/django.mo
deleted file mode 100644
index 8bca229..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ja/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ja/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/ja/LC_MESSAGES/django.po
deleted file mode 100644
index 9030ba4..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ja/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,286 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Shinya Okano <tokibito@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-30 16:12+0000\n"
-"Last-Translator: Shinya Okano <tokibito@gmail.com>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/"
-"ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "個人情報"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "パーミッション"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "重要な日程"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "パスワードを変更しました"
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "パスワードの変更: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "パスワードは設定されませんでした。"
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "無効なパスワードか不明なハッシュアルゴリズムです。"
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "同じユーザー名が既に登録済みです。"
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "確認用パスワードが一致しません。"
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "ユーザー名"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"この項目は必須です。半角アルファベット、半角数字、@/./+/-/_ で30文字以下にし"
-"てください。"
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "半角の英数字および次の記号 @/./+/-/_ 以外は使用できません。"
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "パスワード"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "パスワードの確認"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "確認のため、再度パスワードを入力してください。"
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"生のパスワードが格納されていないので、このユーザーのパスワードは参照できませ"
-"んが、 <a href=\"password/\">このフォーム</a> を使用してパスワードを変更でき"
-"ます 。"
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"正しい%(username)sとパスワードを入力してください。どちらのフィールドも大文字"
-"と小文字は区別されます。"
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "アカウントが無効です。"
-
-#: forms.py:206
-msgid "Email"
-msgstr "メールアドレス"
-
-#: forms.py:256
-msgid "New password"
-msgstr "新しいパスワード"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "新しいパスワード(確認用)"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "元のパスワードが間違っています。もう一度入力してください。"
-
-#: forms.py:290
-msgid "Old password"
-msgstr "元のパスワード"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "パスワード(確認用)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "アルゴリズム"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "イテレーション"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "ソルト"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "ハッシュ"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "ワークファクター"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "チェックサム"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "名前"
-
-#: models.py:74
-msgid "codename"
-msgstr "コード名"
-
-#: models.py:78
-msgid "permission"
-msgstr "パーミッション"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "パーミッション"
-
-#: models.py:128
-msgid "group"
-msgstr "グループ"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "グループ"
-
-#: models.py:200
-msgid "password"
-msgstr "パスワード"
-
-#: models.py:201
-msgid "last login"
-msgstr "最終ログイン"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "スーパーユーザー権限"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "全ての権限を持っているとみなされます。"
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"このユーザーが所属するグループ。ユーザーはグループのそれぞれに付与されている"
-"すべての権限を持ちます。"
-
-#: models.py:299
-msgid "user permissions"
-msgstr "ユーザーパーミッション"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "このユーザーの持つ権限です。"
-
-#: models.py:368
-msgid "username"
-msgstr "ユーザー名"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"この項目は必須です。半角アルファベット、半角数字、次の記号 @/./+/-/_ で30文字"
-"以下にしてください。"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "有効なメールアドレスを入力してください。"
-
-#: models.py:372
-msgid "first name"
-msgstr "名"
-
-#: models.py:373
-msgid "last name"
-msgstr "姓"
-
-#: models.py:374
-msgid "email address"
-msgstr "メールアドレス"
-
-#: models.py:375
-msgid "staff status"
-msgstr "スタッフ権限"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "ユーザーが管理サイトにログイン可能かどうかを示します。"
-
-#: models.py:378
-msgid "active"
-msgstr "有効"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"ユーザーがアクティブかどうかを示します。アカウントを消す代わりに選択を解除し"
-"てください。"
-
-#: models.py:381
-msgid "date joined"
-msgstr "登録日"
-
-#: models.py:389
-msgid "user"
-msgstr "ユーザー"
-
-#: models.py:390
-msgid "users"
-msgstr "ユーザー"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "ログアウト"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "%(site_name)s のパスワードリセット"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "有効なメールアドレスを入力してください。"
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ka/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/ka/LC_MESSAGES/django.mo
deleted file mode 100644
index 76f3993..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ka/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ka/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/ka/LC_MESSAGES/django.po
deleted file mode 100644
index 7005c22..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ka/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,288 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Bouatchidzé <a@anbz.net>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/"
-"ka/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ka\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "პირადი ინფორმაცია"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "უფლებები"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "მნიშვნელოვანი თარიღები"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "პაროლი წარმატებით შეიცვალა."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "შევცვალოთ პაროლი: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "არ არის დაყენებული პაროლი."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "არასწორი პაროლის ფორმატი ან უცნობი ჰეშირების ალგორითმი."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "მომხმარებელი ამ სახელით უკვე არსებობს."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "პაროლის ორი ველი ერთმანეთს არ ემთხვევა."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "მომხმარებელი"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"აუცილებელია. 30-მდე სიმბოლო. მხოლოდ ლათინური ასოები, ციფრები და შემდეგი "
-"სიმბოლოები: @/./+/-/_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"დასაშვებია მხოლოდ ლათინური ასოები, ციფრები და შემდეგი სიმბოლოები: @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "პაროლი"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "პაროლის დამოწმება"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "შეიყვანეთ იგივე პაროლი, დამოწმებისათვის."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"დაუმუშავებელი პაროლები არ ინახება, ასე რომ, არ არსებობს ამ მომხმარებლის "
-"პაროლის ნახვის საშუალება, მაგრამ თქვენ შეგიძლიათ შეცვალოთ პაროლი <a href="
-"\"password/\">ამ ფორმის</a> მეშვეობით."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"გთხოვთ, შეიყვანოთ სწორი %(username)s და პაროლი. იქონიეთ მხედველობაში, რომ "
-"ორივე ველი ითვალისწინებს მთავრულს."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "თქვენი ანგარიში არააქტიურია."
-
-#: forms.py:206
-msgid "Email"
-msgstr "ელ. ფოსტა"
-
-#: forms.py:256
-msgid "New password"
-msgstr "ახალი პაროლი"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "ახალი პაროლის დამოწმება"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "თქვენი ძველი პაროლი შეყვანილია არასწორად. გთხოვთ, შეიყვანოთ ხელახლა."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "ძველი პაროლი"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "პაროლი (განმეორებით)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "ალგორითმი"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "იტერაციები"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "მარილი"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "ჰეში"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "სამუშაო ფაქტორი"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "საკონტროლო ჯამი"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "სახელი"
-
-#: models.py:74
-msgid "codename"
-msgstr "კოდური სახელი"
-
-#: models.py:78
-msgid "permission"
-msgstr "უფლება"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "უფლებები"
-
-#: models.py:128
-msgid "group"
-msgstr "ჯგუფი"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "ჯგუფები"
-
-#: models.py:200
-msgid "password"
-msgstr "პაროლი"
-
-#: models.py:201
-msgid "last login"
-msgstr "ბოლო შესვლა"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "სუპერმომხმარებლის სტატუსი"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "განსაზღვრავს, რომ ამ მომხმარებელს აქვს ყველა უფლება."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"ჯგუფები, რომლებსაც მიეკუთვნება ეს მომხმარებელი. მომხმარებელს ენიჭება მისი "
-"ყოველი ჯგუფის ყველა უფლება."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "მომხმარებლის უფლებები"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "მომხმარებლის სახელი"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"აუცილებელია. 30-მდე სიმბოლო. მხოლოდ ლათინური ასოები, ციფრები და შემდეგი "
-"სიმბოლოები: @/./+/-/_."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "შეიყვანეთ სწორი მომხმარებლის სახელი."
-
-#: models.py:372
-msgid "first name"
-msgstr "სახელი"
-
-#: models.py:373
-msgid "last name"
-msgstr "გვარი"
-
-#: models.py:374
-msgid "email address"
-msgstr "ელ. ფოსტის მისამართი"
-
-#: models.py:375
-msgid "staff status"
-msgstr "თანამშრომლობის სტატუსი"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"განსაზღვრავს, აქვს თუ არა მომხმარებელს ადმინისტრირების საიტზე შესვლის უფლება."
-
-#: models.py:378
-msgid "active"
-msgstr "აქტიურია"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"განსაზღვრავს, რომ მომხმარებელი გააქტიურებულია. მომხმარებლის წაშლის მაგივრად "
-"გადანიშნეთ ეს დროშა."
-
-#: models.py:381
-msgid "date joined"
-msgstr "გაწევრიანების თარიღი"
-
-#: models.py:389
-msgid "user"
-msgstr "მომხმარებელი"
-
-#: models.py:390
-msgid "users"
-msgstr "მომხმარებლები"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "გამოსული ხართ"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "პაროლის თავიდან დაყენება %(site_name)s-ზე"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "შეიყვანეთ სწორი მომხმარებლის სახელი."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/kk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/kk/LC_MESSAGES/django.mo
deleted file mode 100644
index 54d26f5..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/kk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/kk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/kk/LC_MESSAGES/django.po
deleted file mode 100644
index d998842..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/kk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,276 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# yun_man_ger <germanilyin@gmail.com>, 2011
-# Zhazira <zhazira.mt@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/"
-"kk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kk\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Жеке мағлұмат"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Рұқсаттар"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Маңызды даталар"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Құпия сөз ойдағыдай өзгертілді."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Құпия сөзді өзгерту: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Осындай атаумен қолданушы бар."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Енгізілген құпия сөздер бірдей емес."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Қолданушы атауы"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Міндетті. 30 немесе одан кем символ. Тек әріптер, цифрлар және @/./+/-/_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Бұл мән тек әріптерді, цифрлерді және @/./+/-/_ құрайды."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Құпия сөз"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Құпия сөз құптамасы"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Тексеру үшін құпия сөзді үстіндегідей енгізіңіз."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Бұл тіркелгі белсенді емес."
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Жаңа құпия сөз"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Жаңа құпия сөз құптамасы"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Ескі құпия сөз қате енгізілді. Қайтадан енгізіңіз."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Ескі құпия сөз"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Құпия сөз (қайтадан)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "атау"
-
-#: models.py:74
-msgid "codename"
-msgstr "кодтық атау"
-
-#: models.py:78
-msgid "permission"
-msgstr "рұқсат"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "рұқсаттар"
-
-#: models.py:128
-msgid "group"
-msgstr "топ"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "топтар"
-
-#: models.py:200
-msgid "password"
-msgstr "құпия сөз"
-
-#: models.py:201
-msgid "last login"
-msgstr "соңғы кіруі"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "әкімші мәртебесі"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "Бұл қолданушының бүкіл рұқсаттарымен тағайындалатындығын білдіреді."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr "қолданушы рұқсаттары"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "Қолданушы атауы"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Міндетті. 30 немесе одан кем символ. Тек әріптер, цифрлар және @/./+/-/_."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "аты"
-
-#: models.py:373
-msgid "last name"
-msgstr "жөні"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "қызметкер мәртебесі"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Қолданушының басқарушы сайтына кіре алатындығын білдіреді."
-
-#: models.py:378
-msgid "active"
-msgstr "белсенді"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Қолданушы белсенді болуын білдіреді. Тіркілгіні өшірмей мынаны алып тастаңыз."
-
-#: models.py:381
-msgid "date joined"
-msgstr "тіркелген күн-айы"
-
-#: models.py:389
-msgid "user"
-msgstr "қолданушы"
-
-#: models.py:390
-msgid "users"
-msgstr "қолданушылар"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Шығу орындалды"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "%(site_name)s торапта құпия сөзді өзгерту"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/km/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/km/LC_MESSAGES/django.mo
deleted file mode 100644
index ea5feb0..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/km/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/km/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/km/LC_MESSAGES/django.po
deleted file mode 100644
index fc89385..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/km/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,272 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Khmer (http://www.transifex.com/projects/p/django/language/"
-"km/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: km\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "ព័ត៌មានផ្ទាល់ខ្លួន"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "ការអនុញ្ញាត"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "កាលបរិច្ឆេទសំខាន់"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr ""
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr ""
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr ""
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr ""
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "ឈ្មោះជាសមាជិក"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "ពាក្យសំងាត់"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr ""
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "សូមបំពេញពាក្យសំងាត់ដូចខាងលើ ដើម្បីត្រួតពិនិត្យ។ "
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "ឈ្មោះសមាជិកនេះ​លែងដំណើរការ"
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr ""
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr ""
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-
-#: forms.py:290
-msgid "Old password"
-msgstr ""
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "ពាក្យសំងាត់ (ម្តងទៀត)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "ឈ្មោះ"
-
-#: models.py:74
-msgid "codename"
-msgstr "ឈ្មោះលេខកូត"
-
-#: models.py:78
-msgid "permission"
-msgstr "អនុញ្ញាត"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "អនុញ្ញាត"
-
-#: models.py:128
-msgid "group"
-msgstr "ក្រុម"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "ក្រុម"
-
-#: models.py:200
-msgid "password"
-msgstr "ពាក្យសំងាត់"
-
-#: models.py:201
-msgid "last login"
-msgstr "ការពិនិត្យចូលកន្លងមក"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "ស្ថានភាពអ្នកគ្រងគ្រង"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "កំណត់អោយសមាជិកនេះមានសិទ្ធិទាំងអស់។"
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr "ការអនុញ្ញាតអោយសមាជិក"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "ឈ្មោះជាសមាជិក"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "នាម"
-
-#: models.py:373
-msgid "last name"
-msgstr "គោត្តនាម"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "ស្ថានភាពបុគ្គលិក"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "កំណត់អោយសមាជិកអាចចូលមកប្រើប្រាស់ទំព័រគ្រប់គ្រងនេះ។"
-
-#: models.py:378
-msgid "active"
-msgstr "សកម្ម"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-
-#: models.py:381
-msgid "date joined"
-msgstr "កាលបរិច្ឆេទចូលរួម"
-
-#: models.py:389
-msgid "user"
-msgstr "សមាជិក"
-
-#: models.py:390
-msgid "users"
-msgstr "សមាជិក"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "ចាកចេញ"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/kn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/kn/LC_MESSAGES/django.mo
deleted file mode 100644
index 01ab47d..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/kn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/kn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/kn/LC_MESSAGES/django.po
deleted file mode 100644
index b9e412e..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/kn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,275 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# karthikbgl <karthikbgl@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/"
-"kn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kn\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "ವೈಯುಕ್ತಿಕ ಮಾಹಿತಿ"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "ಅನುಮತಿಗಳು"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "ಮಹತ್ವದ ದಿನಾಂಕಗಳು"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "ಪಾಸ್ವರ್ಡ್ ಸಫಲವಾಗಿ ಬದಲಾಯಿಸಲಾಯಿತು"
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "ಪಾಸ್ವರ್ಡ್ ಬದಲಾಯಿಸಲು: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "ಆ ಬಳಕೆದಾರಹೆಸರು ಒಂದು ಬಳಕೆದಾರ ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "ಎರಡು ಪ್ರವೇಶಪದ ಕ್ಷೇತ್ರಗಳ ಹೊಂದಿಕೆಯಾಗುತ್ತಿಲ್ಲ"
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "ಬಳಕೆದಾರ-ಹೆಸರು"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "ಪ್ರವೇಶಪದ"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "ಪಾಸ್ವರ್ಡ್ ಖಚಿತತೆ"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "ಖಚಿತಗೊಳಿಸಲು ಮೇಲಿನ ಪ್ರವೇಶಪದವನ್ನು ಇನ್ನೊಮ್ಮೆ ಬರೆಯಿರಿ."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "ಈ ಖಾತೆಯು ನಿಷ್ಕ್ರಿಯವಾಗಿದೆ"
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "ಹೊಸ ಪ್ರವೇಶಪದ"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "ಹೊಸ ಪ್ರವೇಶಪದ ಖಚಿತತೆ"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "ನಿಮ್ಮ ಹಳೆಯ ಪ್ರವೇಶಪದ ತಪ್ಪಾಗಿ ಪ್ರವೇಶಿಸಲಾಗಿದೆ ಮತ್ತೆ ದಯವಿಟ್ಟು ನಮೂದಿಸಿ"
-
-#: forms.py:290
-msgid "Old password"
-msgstr "ಹಳೆಯ ಪ್ರವೇಶಪದ"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "ಪ್ರವೇಶಪದ(ಇನ್ನೊಮ್ಮೆ)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "ಹೆಸರು"
-
-#: models.py:74
-msgid "codename"
-msgstr "ಸಾಂಕೇತಿಕ ಹೆಸರು"
-
-#: models.py:78
-msgid "permission"
-msgstr "ಅನುಮತಿ"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "ಅನುಮತಿಗಳು"
-
-#: models.py:128
-msgid "group"
-msgstr "ಗುಂಪು"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "ಗುಂಪುಗಳು"
-
-#: models.py:200
-msgid "password"
-msgstr "ಪ್ರವೇಶಪದ"
-
-#: models.py:201
-msgid "last login"
-msgstr "ಕಡೇ ಸಾರಿ ಒಳಬಂದದ್ದು"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "ಮಹಾಬಳಕೆದಾರನ ಸ್ಧಿತಿ"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"ಈ ಸದಸ್ಯರು ಸುವ್ಯಕ್ತವಾಗಿ ನೀಡದಿದ್ದರೂ ಎಲ್ಲಾ ಅನುಮತಿಗಳನ್ನು ಪಡೆದಿರುವರು ಎಂಬುದನ್ನು "
-"ಸೂಚಿಸುತ್ತದೆ."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr "ಬಳಕೆದಾರ ಅನುಮತಿಗಳು"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "ಬಳಕೆದಾರ-ಹೆಸರು"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "ಮೊದಲ ಹೆಸರು"
-
-#: models.py:373
-msgid "last name"
-msgstr "ಕೊನೆಯ ಹೆಸರು"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "ಸಿಬ್ಬಂದಿ ಸ್ಥಿತಿ"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "ಬಲಕೆದಾರರು ಈ ಆಡಳಿತ ತಾಣಕ್ಕೆ ಪ್ರವೇಶಪಡೆಯಬಹುದೇ ಎಂಬುದನ್ನು ತಿಳಿಸುತ್ತದೆ."
-
-#: models.py:378
-msgid "active"
-msgstr "ಸಕ್ರಿಯ"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-
-#: models.py:381
-msgid "date joined"
-msgstr "ಸೇರಿದ ದಿನಾಂಕ"
-
-#: models.py:389
-msgid "user"
-msgstr "ಬಳಕೆದಾರ"
-
-#: models.py:390
-msgid "users"
-msgstr "ಬಳಕೆದಾರರು"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "ಹೊರಬರಲಾಗಿದೆ"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ko/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/ko/LC_MESSAGES/django.mo
deleted file mode 100644
index ad4cd2f..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ko/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ko/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/ko/LC_MESSAGES/django.po
deleted file mode 100644
index cf22ae8..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ko/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,276 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/"
-"ko/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ko\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "개인정보"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "권한"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "중요한 일정"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "비밀번호가 변경되었습니다."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "비밀번호 변경: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "해당 사용자명은 이미 존재합니다."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "비밀번호가 일치하지 않습니다."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "사용자명"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"필수항목입니다. 30자 이내로 입력하세요. (알파벳, 숫자, @/./+/-/_만 가능)"
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "알파벳, 숫자 및 @/./+/-/_만 가능합니다."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "비밀번호"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "비밀번호 확인"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "확인을 위해 위와 동일한 비밀번호를 입력하세요. "
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "이 계정은 유효하지 않습니다."
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "새 비밀번호:"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "새 비밀번호 확인:"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "기존 비밀번호를 잘못 입력하셨습니다. 다시 입력해 주세요."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "기존 비밀번호:"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "비밀번호 (확인)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "이름"
-
-#: models.py:74
-msgid "codename"
-msgstr "코드명"
-
-#: models.py:78
-msgid "permission"
-msgstr "허가"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "허가"
-
-#: models.py:128
-msgid "group"
-msgstr "그룹"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "그룹"
-
-#: models.py:200
-msgid "password"
-msgstr "비밀번호"
-
-#: models.py:201
-msgid "last login"
-msgstr "마지막 로그인"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "최상위 사용자 권한"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "해당 사용자에게 모든 권한을 허가합니다."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr "사용자 권한"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "사용자명"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"필수항목입니다. 30자 이내로 입력하세요. (알파벳, 숫자, @/./+/-/_만 가능)"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "이름"
-
-#: models.py:373
-msgid "last name"
-msgstr "성"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "스태프 권한"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "사용자가 관리사이트에 로그인이 가능한지를 나타냅니다."
-
-#: models.py:378
-msgid "active"
-msgstr "활성"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"사용자가 'Django 관리'에 로그인이 가능한지를 나타냅니다.계정을 삭제하는 대신 "
-"이것을 선택 해제하세요."
-
-#: models.py:381
-msgid "date joined"
-msgstr "등록일"
-
-#: models.py:389
-msgid "user"
-msgstr "사용자"
-
-#: models.py:390
-msgid "users"
-msgstr "사용자(들)"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "로그 아웃"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/lt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/lt/LC_MESSAGES/django.mo
deleted file mode 100644
index 8649843..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/lt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/lt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/lt/LC_MESSAGES/django.po
deleted file mode 100644
index f83cd92..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/lt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,290 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# lauris <lauris@runbox.com>, 2011
-# naktinis <naktinis@gmail.com>, 2012
-# Nikolajus Krauklis <nikolajus@gmail.com>, 2013
-# Simonas Kazlauskas <simonas@kazlauskas.me>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-23 16:02+0000\n"
-"Last-Translator: Simonas Kazlauskas <simonas@kazlauskas.me>\n"
-"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/"
-"language/lt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lt\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
-"%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Asmeninė informacija"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Leidimai"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Svarbios datos"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Slaptažodis pakeistas sėkmingai."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Pakeisti slaptažodį: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Slaptažodis nenustatytas"
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Neteisingas slaptažodžio formatas arba nežinomas maišos algoritmas."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Jau egzistuoja vartotojas su tokiu vardu."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Slaptažodžio laukai nesutapo"
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Vartotojo vardas"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Privalomas. 30 arba mažiau simbolių. Raidės, skaičiai bei @/./+/-/_ "
-"simboliai."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Ši reikšmė gali turėti tik raides, skaičius ir @/./+/-/_ simbolius."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Slaptažodis"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Slaptažodžio patvirtinimas"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Patikrinimui įvesk tokį patį slaptažodį, kaip viršuje."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Neužkoduoti slaptažodžiai nėra saugomi, todėl galimybės pasižiūrėti šio "
-"vartotojo slaptažodį nėra. Tiesa galite slaptažodį pakeisti naudodamiesi <a "
-"href=\"password/\">šia forma</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Įveskite teisingą %(username)s ir slaptažodį. Abiejuose laukuose didžiosios "
-"mažosios raidės skiriasi."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Ši paskyra yra neaktyvi."
-
-#: forms.py:206
-msgid "Email"
-msgstr "El. paštas"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Naujas slaptažodis"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Naujo slaptažodžio patvirtinimas"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Blogai įvestas senas slaptažodis. Bandykite dar kartą."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Senas slaptažodis"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Slaptažodis (dar kartą)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritmas"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iteracijos"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "druska"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "maiša"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "darbo faktorius"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "kontrolinė suma"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "vardas"
-
-#: models.py:74
-msgid "codename"
-msgstr "kodinis vardas"
-
-#: models.py:78
-msgid "permission"
-msgstr "leidimas"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "leidimai"
-
-#: models.py:128
-msgid "group"
-msgstr "grupė"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupės"
-
-#: models.py:200
-msgid "password"
-msgstr "slaptažodis"
-
-#: models.py:201
-msgid "last login"
-msgstr "paskutinį kartą prisijungęs"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "supervartotojo statusas"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "Pažymi, kad šis vartotojas turi visas teises be specialių nustatymų."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Grupės, kurioms šis vartotojas priklauso. Vartotojas gaus visas teises, "
-"kurios yra suteiktos jo grupėms."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "vartotojo leidimai"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Specifiniai šio vartotojo leidimai."
-
-#: models.py:368
-msgid "username"
-msgstr "vartotojo vardas"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Privalomas. 30 arba mažiau simbolių. Raidės, skaičiai bei @/./+/-/_ "
-"simboliai."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Įveskite teisingą vartotojo vardą."
-
-#: models.py:372
-msgid "first name"
-msgstr "vardas"
-
-#: models.py:373
-msgid "last name"
-msgstr "pavardė"
-
-#: models.py:374
-msgid "email address"
-msgstr "El. pašto adresas"
-
-#: models.py:375
-msgid "staff status"
-msgstr "personalo statusas"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Nurodo ar vartotojas gali prisijungti prie administravimo puslapio."
-
-#: models.py:378
-msgid "active"
-msgstr "aktyvus"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Nurodo ar vartotojas yra aktyvuotas. Užuot pašalinę vartotoją, galite nuimti "
-"šią žymę."
-
-#: models.py:381
-msgid "date joined"
-msgstr "data, kada prisijungė"
-
-#: models.py:389
-msgid "user"
-msgstr "vartotojas"
-
-#: models.py:390
-msgid "users"
-msgstr "vartotojai"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Atsijungęs"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Slaptažodis atkurtas ant %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Įveskite teisingą el. pašto adresą."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/lv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/lv/LC_MESSAGES/django.mo
deleted file mode 100644
index 2fd3eba..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/lv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/lv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/lv/LC_MESSAGES/django.po
deleted file mode 100644
index c86bad4..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/lv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,275 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/"
-"lv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lv\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Personīgā informācija"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Tiesības"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Svarīgi datumi"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Paroles nomainīta sekmīgi."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Paroles maiņa: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Lietotājs ar šādu lietotāja vārdu jau eksistē."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Paroles lauki nesakrita."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Lietotāja vārds"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "Obligāts. 30 vai mazāk zīmes. Tikai burti, cipari un @/./+/-/_ ."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Šī vērtība var saturēt tikai burtus, ciparus un @/./+/-/_ simbolus"
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Parole"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Paroles apstiprinājums"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Pārbaudei atkārtoti ievadiet to pašu paroli kā augstāk."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Šis konts nav aktīvs."
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Jaunā parole"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Jaunās parole vēlreiz"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"Jūsu iepriekšējā parole netika ievadīta korekti. Lūdzu ievadiet to atkārtoti."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Vecā parole"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Parole (vēlreiz)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nosaukums"
-
-#: models.py:74
-msgid "codename"
-msgstr "kods"
-
-#: models.py:78
-msgid "permission"
-msgstr "tiesība"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "tiesības"
-
-#: models.py:128
-msgid "group"
-msgstr "grupa"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupas"
-
-#: models.py:200
-msgid "password"
-msgstr "parole"
-
-#: models.py:201
-msgid "last login"
-msgstr "pēdējoreiz pieslēdzies"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "superlietotāja statuss"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "Lietotājam ir visas tiesības arī bez to atsevišķas piešķiršanas."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr "lietotāja tiesības"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "lietotāja vārds"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "Obligāts. 30 vai mazāk zīmes. Tikai burti, cipari un @/./+/-/_ simboli"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "vārds"
-
-#: models.py:373
-msgid "last name"
-msgstr "uzvārds"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "personāla statuss"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Atzīmējiet, ja vēlaties, lai lietotājs var pieslēgties administrācijas lapā."
-
-#: models.py:378
-msgid "active"
-msgstr "aktīvs"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr "Nosaka, vai lietotājs ir aktīvs. Atceliet šo konta dzēšanas vietā."
-
-#: models.py:381
-msgid "date joined"
-msgstr "datums, kad pievienojies"
-
-#: models.py:389
-msgid "user"
-msgstr "lietotājs"
-
-#: models.py:390
-msgid "users"
-msgstr "lietotāji"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Atslēdzies"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/mk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/mk/LC_MESSAGES/django.mo
deleted file mode 100644
index c07b9a8..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/mk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/mk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/mk/LC_MESSAGES/django.po
deleted file mode 100644
index dea4fba..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/mk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,288 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# vvangelovski <vvangelovski@gmail.com>, 2013
-# vvangelovski <vvangelovski@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-12-06 10:54+0000\n"
-"Last-Translator: vvangelovski <vvangelovski@gmail.com>\n"
-"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/"
-"language/mk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mk\n"
-"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Лични информации"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Привилегии"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Важни датуми"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Успешна промена на лозинката."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Промени лозинка: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Нема зададена лозинка."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Невалиден формат на лозинка или непознат алгоритам за хеширање."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Веќе постои корисник со тоа корисничко име."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Двете полиња со лозинките не се совпаѓаат."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Корисник"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Задолжително. 30 или помалку знаци. Единствено букви, бројки и @/./+/-/_ ."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Оваа вредност смее да содржи само букви, бројки и @/./+/-/_ знаци."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Лозинка"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Потврда на лозинка"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Заради верификација внесете ја истата лозинка како и горе."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Лозинките не се чуваат во оригинална форма, така што не постои начин да ја "
-"видите лозинката на овој корисник, но можете да ја смените лозинката со "
-"користење на <a href=\"password/\">оваа форма</a> ."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Ве молиме внесете ја точно %(username)s и лозинка. Имајте на ум дека двете "
-"полиња може да бидат со мали букви."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Оваа сметка е неактивна."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Email"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Нова лозинка"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Потврда за нова лозинка"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"Не ја внесовте точно вашата стара лозинка. Ве молам внесете ја повторно."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Стара лозинка"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Лозинка (повторно)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "алгоритам"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "повторувања"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "случаен клуч"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "хеш"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "фактор на работа"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "проверка"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "име"
-
-#: models.py:74
-msgid "codename"
-msgstr "кодно име"
-
-#: models.py:78
-msgid "permission"
-msgstr "привилегија"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "привилегии"
-
-#: models.py:128
-msgid "group"
-msgstr "група"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "групи"
-
-#: models.py:200
-msgid "password"
-msgstr "лозинка"
-
-#: models.py:201
-msgid "last login"
-msgstr "последна најава"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "статус на суперкорисник"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Означува дека овој корисник ги има сите привилегии без експлицитно да се "
-"доделуваат сите."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Групите на кои овој корисник припаѓа. Корисникот ќе ги добие сите привилегии "
-"доделени на секоја од неговите / нејзините групи."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "кориснички привилегии"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Конкретни привилегии за овој корисник."
-
-#: models.py:368
-msgid "username"
-msgstr "корисничко име"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "Задолжително. 30 или помалку знаци. Букви, бројки и @/./+/-/_ знаци"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Внесете валидно корисничко име."
-
-#: models.py:372
-msgid "first name"
-msgstr "име"
-
-#: models.py:373
-msgid "last name"
-msgstr "презиме"
-
-#: models.py:374
-msgid "email address"
-msgstr "email адреса"
-
-#: models.py:375
-msgid "staff status"
-msgstr "статус на администраторите"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Означува дали корисникот може да се логира во сајтот за администрација."
-
-#: models.py:378
-msgid "active"
-msgstr "активен"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Означува дали корисникот треба да биде активен. Одштиклирајте го ова наместо "
-"да бришете корисници."
-
-#: models.py:381
-msgid "date joined"
-msgstr "датум на зачленување"
-
-#: models.py:389
-msgid "user"
-msgstr "корисник"
-
-#: models.py:390
-msgid "users"
-msgstr "корисници"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Одјавен"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Ресетирање на лозинка за %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Внесете валидна email адреса."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ml/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/ml/LC_MESSAGES/django.mo
deleted file mode 100644
index 31fc205..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ml/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ml/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/ml/LC_MESSAGES/django.po
deleted file mode 100644
index 18343f4..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ml/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,283 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# forgoz <david.forgoz@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Rajeesh Nair <rajeeshrnair@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/"
-"language/ml/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ml\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "വ്യക്തിപരമായ വിവരങ്ങള്‍"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "അനുമതികള്‍"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "പ്രധാന തീയതികള്‍"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "പാസ് വേര്‍ഡ് മാറ്റിയിരിക്കുന്നു."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "പാസ് വേര്‍ഡ് മാറ്റുക: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "രഹസ്യവാക്ക് ക്രമീകരിച്ചിട്ടില്ല"
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "ആ പേരുള്ള ഒരു ഉപയോക്താവ് നിലവിലുണ്ട്."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "പാസ്‌വേര്‍ഡ് നല്കിയ കള്ളികള്‍ രണ്ടും തമ്മില്‍ സാമ്യമില്ല."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "യൂസര്‍ നാമം (ഉപയോക്ത്രു നാമം)"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"നിര്‍ബന്ധം. 30 ഓ അതില്‍ കുറവോ ചിഹ്നങ്ങള്‍. അക്ഷരങ്ങള്‍, അക്കങ്ങള്‍, പിന്നെ @/./+/-/_എന്നിവയും "
-"മാത്രം."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "അക്ഷരങ്ങള്‍, അക്കങ്ങള്‍, പിന്നെ @/./+/-/_എന്നിവയും മാത്രം."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "പാസ്‌വേര്‍ഡ്"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "പാസ്‌വേര്‍ഡ് ഉറപ്പാക്കല്‍"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "പാസ്‌വേര്‍ഡ് മുകളിലെ പോലെ തന്നെ നല്കുക. (ഉറപ്പു വരുത്താനാണ്.)"
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"പാസ്‌വേര്‍ഡുകള്‍ അതേപടി സൂക്ഷിച്ചു വെക്കാത്തതുകൊണ്ട് ഈ യൂസറുടെ പാസ്‌വേര്‍ഡ് കാണാന്‍ കഴിയില്ല, പകരം <a "
-"href=\"password/\">ഈ ഫോമു</a>പയോഗിച്ച് നിലവിലുള്ള പാസ്‌വേര്‍ഡ് മാറ്റാവുന്നതാണ്."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "ഈ അക്കൗണ്ട് മരവിപ്പിച്ചതാണ്."
-
-#: forms.py:206
-msgid "Email"
-msgstr "ഈമെയിൽ"
-
-#: forms.py:256
-msgid "New password"
-msgstr "പുതിയ പാസ്‌വേര്‍ഡ്"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "പുതിയ പാസ്‌വേര്‍ഡ് ഉറപ്പാക്കല്‍"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "നിങ്ങളുടെ പഴയ പാസ്‌വേര്‍ഡ് തെറ്റായാണ് നല്കിയത്. തിരുത്തുക."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "പഴയ പാസ്‌വേര്‍ഡ്"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "പാസ്‌വേര്‍ഡ് (വീണ്ടും)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "അല്‍ഗോരിതം"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "പുനരാവൃത്തികള്‍"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "സോള്‍ട്ട്"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "ഹാഷ്"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "വര്‍ക്ക് ഫാക്ടര്‍"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "ചെക്‍സം"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "പേര്"
-
-#: models.py:74
-msgid "codename"
-msgstr "കോഡ്-നാമം"
-
-#: models.py:78
-msgid "permission"
-msgstr "അനുമതി"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "അനുമതികള്‍"
-
-#: models.py:128
-msgid "group"
-msgstr "ഗ്രൂപ്പ്"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "ഗ്രൂപ്പുകള്‍"
-
-#: models.py:200
-msgid "password"
-msgstr "പാസ്‌വേര്‍ഡ്"
-
-#: models.py:201
-msgid "last login"
-msgstr "അവസാനമായി ലോഗിന്‍ ചെയ്തതു"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "സൂപ്പര്‍-യൂസര്‍ പദവി"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "ഈ ഉപയോക്താവിന് എടുത്തു പറയാതെ തന്നെ എല്ലാ അനുമതികളും ലഭിക്കുന്നതാണെന്ന് വ്യക്തമാക്കുന്നു"
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"ഈ യൂസര്‍ ഉള്‍പ്പെടുന്ന ഗ്രൂപ്പുകള്‍. ഒരു യൂസര്‍ക്ക് അയാളുടെ/അവരുടെ ഓരോ ഗ്രൂപ്പിന്റേയും മുഴുവന്‍ അനുമതികളും "
-"ലഭിക്കും."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "യൂസര്‍ (ഉപയോക്താവ്)നുള്ള അനുമതികള്‍"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "യൂസര്‍ നാമം (ഉപയോക്ത്രു നാമം)"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"നിര്‍ബന്ധം. 30 ഓ അതില്‍ കുറവോ ചിഹ്നങ്ങള്‍. അക്ഷരങ്ങള്‍, അക്കങ്ങള്‍, പിന്നെ @/./+/-/_എന്നിവയും "
-"മാത്രം."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "തെറ്റായ ഉപഭോക്തൃ നാമം"
-
-#: models.py:372
-msgid "first name"
-msgstr "പേര് - ആദ്യഭാഗം"
-
-#: models.py:373
-msgid "last name"
-msgstr "പേര് - അന്ത്യഭാഗം"
-
-#: models.py:374
-msgid "email address"
-msgstr "ഈമെയിൽ വിലാസം"
-
-#: models.py:375
-msgid "staff status"
-msgstr "സ്റ്റാഫ് പദവി"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "ഈ യൂസര്‍ക്ക് ഈ അഡ്മിന്‍ സൈറ്റിലേക്ക് പ്രവേശിക്കാമോ എന്നു വ്യക്തമാക്കാന്‍"
-
-#: models.py:378
-msgid "active"
-msgstr "സജീവം"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"ഈ യൂസര്‍ സജീവമാണോയെന്ന് വ്യക്തമാക്കുന്നു. അക്കൗണ്ട് ഡിലീറ്റ് ചെയ്യുന്നതിനു പകരം ഇത് ഒഴിവാക്കുക."
-
-#: models.py:381
-msgid "date joined"
-msgstr "ചേര്‍ന്ന തീയതി"
-
-#: models.py:389
-msgid "user"
-msgstr "യൂസര്‍ (ഉപയോക്താവ്)"
-
-#: models.py:390
-msgid "users"
-msgstr "യൂസേര്‍സ് (ഉപയോക്താക്കള്‍)"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "ലോഗ്-ഔട്ട് ചെയ്തു (പുറത്തിറങ്ങി)"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "%(site_name)s ലെ പാസ്‌വേര്‍ഡ് മാറ്റിയിരിക്കുന്നു"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/mn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/mn/LC_MESSAGES/django.mo
deleted file mode 100644
index 9088663..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/mn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/mn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/mn/LC_MESSAGES/django.po
deleted file mode 100644
index 6232e29..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/mn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,288 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# delgermurun <pdelgermurun@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# zorig <zorig_ezd@yahoo.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-11-30 18:29+0000\n"
-"Last-Translator: zorig <zorig_ezd@yahoo.com>\n"
-"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/"
-"language/mn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Хувийн мэдээлэл"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Эрхүүд"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Чухал огноо"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Нууц үг амжилттай өөрчлөгдлөө."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Нууц үг өөрчлөх: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Нууц үг тохируулаагүй."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Нууц үгийн буруу формат эсвэл үл мэдэгдэх хаш алгоритм байна."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Ийм хэрэглэгчийн нэртэй хэрэглэгч өмнө нь бүртгүүлсэн байна."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Хоёр нууц үг зөрж байна."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Хэрэглэгчийн нэр"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Заавал. 30 ба түүнээс бага үсэгтэй. Зөвхөн латин үсэг, тоо болон @/./+/-/_ "
-"тэмдэгтүүдийг зөвшөөрнө."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Энэ утга дотор зөвхөн үсэг, тоо болон @/./+/-/_ тэмдэгтүүд байж болно."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Нууц үг "
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Нууц үгийн баталгаа"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Батлахын тулд дээрх нууц үгээ ахин хийнэ үү."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Жинхэн нууц үгүүдийг хадгалдаггүй учраас хэрэглэгчийн нууц үгийг харах "
-"боломжгүй юм. Гэхдээ та нууц үгийг <a href=\"password/\">цонхоор</a> өөрчлөх "
-"боломжтой."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Зөв %(username)s, нууц үг оруулна уу. Том жижиг үсэг ялгаатай болхын "
-"анхаарна уу."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Энэ бүртгэл идэвхгүй байна."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Цахим хаяг"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Шинэ нууц үг"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Шинэ нууц үгийн баталгаа"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Хуучин нууц үгээ буруу оруулсан байна. Ахин оруулна уу."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Хуучин нууц үг"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Нууц үг (ахиад)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "Алгоритм"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "давталтууд"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "давс"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "хаш"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "ажлын байгуулагч"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "checksum"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "нэр"
-
-#: models.py:74
-msgid "codename"
-msgstr "Код"
-
-#: models.py:78
-msgid "permission"
-msgstr "зөвшөөрөл"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "зөвшөөрлүүд"
-
-#: models.py:128
-msgid "group"
-msgstr "бүлэг "
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "бүлгүүд"
-
-#: models.py:200
-msgid "password"
-msgstr "нууц үг"
-
-#: models.py:201
-msgid "last login"
-msgstr "сүүлд нэвтэрсэн"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "Удирдлагын төлөв"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "Энэ хэрэглэгчид бүх зөвшөөрөл байгааг ил тод харуулалгүй тодорхойлно. "
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Бүлэгүүд энэ хэрэглэгчийнхээс тусдаа. Хэрэглэгчид нь сонгосон бүлэгт "
-"олгогдсон бүх эрх зөвшөөрөгдөх болно."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "хэрэглэгчийн эрхүүд"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Хэрэглэгчид тодорхойлж өгсөн эрх"
-
-#: models.py:368
-msgid "username"
-msgstr "хэрэглэгчийн нэр"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Заавал. 30 болон түүнээс бага тэмдэгт. Үсэг, тоо болон @/./+/-/_ тэмдэгтүүд "
-"ашиглана уу."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Зөв нэвтрэх нэр оруулна уу."
-
-#: models.py:372
-msgid "first name"
-msgstr "нэр"
-
-#: models.py:373
-msgid "last name"
-msgstr "овог"
-
-#: models.py:374
-msgid "email address"
-msgstr "цахим хаяг"
-
-#: models.py:375
-msgid "staff status"
-msgstr "Хэрэглэгчдийн төлөв"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Уг удирдлагын сайт руу хэрэглэгч нэвтрэх боломжтой эсэхийг тодорхойлно."
-
-#: models.py:378
-msgid "active"
-msgstr "идэвхтэй"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Энэ хэрэглэгчийг идэвхтэй болгох эсэхийг тодорхойлно. Бүртгэлийг нь устгахын "
-"оронд сонгохгүй байхад л хангалттай."
-
-#: models.py:381
-msgid "date joined"
-msgstr "бүртгүүлсэн огноо"
-
-#: models.py:389
-msgid "user"
-msgstr "хэрэглэгч "
-
-#: models.py:390
-msgid "users"
-msgstr "хэрэглэгчид"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Гарсан"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "%(site_name)s cайт дээрх нууц үг сэргээлт"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Зөв нэвтрэх нэр оруулна уу."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/my/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/my/LC_MESSAGES/django.mo
deleted file mode 100644
index 05be50a..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/my/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/my/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/my/LC_MESSAGES/django.po
deleted file mode 100644
index 14b8645..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/my/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,272 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Yhal Htet Aung <jumoun@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Burmese (http://www.transifex.com/projects/p/django/language/"
-"my/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: my\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "ကိုယ်ရေးအချက်အလက်"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "ခွင့်ပြုချက်များ"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "အရေးကြီးနေ့စွဲများ"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr ""
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr ""
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr ""
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr ""
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "အသံုးပြုသူနာမည်"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "စကားဝှက်"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr ""
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr ""
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr ""
-
-#: forms.py:206
-msgid "Email"
-msgstr "အီးမေးလ်"
-
-#: forms.py:256
-msgid "New password"
-msgstr ""
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr ""
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-
-#: forms.py:290
-msgid "Old password"
-msgstr ""
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr ""
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "ပံုသေနည်း"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "နာမည်"
-
-#: models.py:74
-msgid "codename"
-msgstr ""
-
-#: models.py:78
-msgid "permission"
-msgstr ""
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr ""
-
-#: models.py:128
-msgid "group"
-msgstr "အုပ်စု"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "အုပ်စုများ"
-
-#: models.py:200
-msgid "password"
-msgstr ""
-
-#: models.py:201
-msgid "last login"
-msgstr ""
-
-#: models.py:291
-msgid "superuser status"
-msgstr ""
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr ""
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr ""
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr ""
-
-#: models.py:373
-msgid "last name"
-msgstr ""
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr ""
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-
-#: models.py:378
-msgid "active"
-msgstr ""
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-
-#: models.py:381
-msgid "date joined"
-msgstr ""
-
-#: models.py:389
-msgid "user"
-msgstr ""
-
-#: models.py:390
-msgid "users"
-msgstr ""
-
-#: views.py:89
-msgid "Logged out"
-msgstr ""
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/nb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/nb/LC_MESSAGES/django.mo
deleted file mode 100644
index d1ec095..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/nb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/nb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/nb/LC_MESSAGES/django.po
deleted file mode 100644
index 9e0732c..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/nb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,283 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jonklo <jonklo@gmail.com>, 2013
-# Sigurd Gartmann <sigurdga-transifex@sigurdga.no>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 09:25+0000\n"
-"Last-Translator: jonklo <jonklo@gmail.com>\n"
-"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/"
-"language/nb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Personlig informasjon"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Rettigheter"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Viktige datoer"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Passordet er endret."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Endre passord: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Passord ikke satt."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Ugyldig passordformat eller ukjent hash-algoritme."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Det eksisterer allerede en bruker med dette brukernavnet."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "De to passordfeltene er ikke like."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Brukernavn"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "Påkrevet. 30 tegn eller færre. Kun bokstaver, tall og @/./+/-/_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Verdien kan kun inneholde bokstaver, tall og @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Passord"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Passordbekreftelse"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Skriv inn det samme passordet som ovenfor, for verifisering."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Selve passordet lagres ikke, så det finnes ingen måte å se denne brukerens "
-"passord på. Du kan endre passordet med <a href=\"password/\">dette skjemaet</"
-"a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Vennligst oppgi korrekt %(username)s og passord. Merk at det kan være "
-"forskjell på små og store bokstaver."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Denne kontoen er inaktiv."
-
-#: forms.py:206
-msgid "Email"
-msgstr "E-post"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nytt passord"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Bekreft nytt passord"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Ditt gamle passord er galt. Vennligst prøv igjen."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Gammelt passord"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Passord (gjenta)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritme"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iterasjoner"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "arbeidsfaktor"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "sjekksum"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "navn"
-
-#: models.py:74
-msgid "codename"
-msgstr "kodenavn"
-
-#: models.py:78
-msgid "permission"
-msgstr "rettighet"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "rettigheter"
-
-#: models.py:128
-msgid "group"
-msgstr "gruppe"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupper"
-
-#: models.py:200
-msgid "password"
-msgstr "passord"
-
-#: models.py:201
-msgid "last login"
-msgstr "siste innlogging"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "superbruker"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Angir at denne brukeren har alle rettigheter uten å eksplisitt sette dem."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Gruppene denne brukeren er tilknyttet. En bruker vil ha alle rettigheter "
-"tilhørende gruppene han/hun er medlem av."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "Brukerrettigheter"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Spesifikke tillatelser for denne brukeren."
-
-#: models.py:368
-msgid "username"
-msgstr "brukernavn"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "Påkrevet. 30 tegn eller færre. Bokstaver, tall og @/./+/-/_."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Oppgi et gyldig brukernavn"
-
-#: models.py:372
-msgid "first name"
-msgstr "fornavn"
-
-#: models.py:373
-msgid "last name"
-msgstr "etternavn"
-
-#: models.py:374
-msgid "email address"
-msgstr "e-postadresse"
-
-#: models.py:375
-msgid "staff status"
-msgstr "administrasjonsstatus"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Angir at brukeren kan logge inn på denne administrasjonssiden."
-
-#: models.py:378
-msgid "active"
-msgstr "aktiv"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Angir at denne brukeren er aktiv. Avmerk denne i stedet for å slette kontoen."
-
-#: models.py:381
-msgid "date joined"
-msgstr "registrert"
-
-#: models.py:389
-msgid "user"
-msgstr "bruker"
-
-#: models.py:390
-msgid "users"
-msgstr "brukere"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Logget ut"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Passord-nullstilling på %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Oppgi et gyldig brukernavn"
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ne/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/ne/LC_MESSAGES/django.mo
deleted file mode 100644
index 9379af4..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ne/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ne/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/ne/LC_MESSAGES/django.po
deleted file mode 100644
index d2ef5e2..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ne/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,274 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Sagar Chalise <chalisesagar@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/"
-"ne/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ne\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "व्यक्तिगत विवरण"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "अनुमति"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "महत्वपूर्ण मितिहरु"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "पासवर्ड सफलतापूर्वक फेरिएको छ ।"
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "पासवर्ड फेर्नुहोस : %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "पासवर्ड राखिएको छैन ।"
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "त्यो प्रयोगकर्ता नाम भएका व्यक्ति पहिले नै छन् ।"
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "दुई पासवर्ड मिलेन ।"
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "प्रयोगकर्ता नाम "
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "आवश्यक । ३० अक्षर वा कम । अंक, वर्ण र @/./+/-/_ मात्र उपयुक्त ।"
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "यो मान अंक, वर्ण र @/./+/-/_ मात्र उपयुक्त छ ।"
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "पासवर्ड"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "पासवर्ड पुष्टि"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "प्रमाणिकरणको लागि माथी कै पासवर्ड राख्नुहोस ।"
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"पासवर्ड राखिएको हुँदैन, त्यसैले व्यक्तिको पासवर्ड हेर्न मिल्दैन, तर पासवर्ड फेर्न को लागि <a "
-"href=\"password/\">यो फारम</a> भर्नु होस । "
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr "कृपया सही %(username)s र पासवर्ड राख्नु होस । "
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "यो खाता सक्रिय छैन । "
-
-#: forms.py:206
-msgid "Email"
-msgstr "ई-मेल"
-
-#: forms.py:256
-msgid "New password"
-msgstr "नयाँ पासवर्ड"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "नयाँ पासवर्ड पुष्टि"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "तपाईको पुरानो पासवर्ड गलत भयो । कृपया पुन: हाल्नुहोस । "
-
-#: forms.py:290
-msgid "Old password"
-msgstr "पुरानो पासवर्ड"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "पासवर्ड (पुन:)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "अल्गोरिदम"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "नाम"
-
-#: models.py:74
-msgid "codename"
-msgstr "कोडनेम"
-
-#: models.py:78
-msgid "permission"
-msgstr "अनुमति"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "अनुमति"
-
-#: models.py:128
-msgid "group"
-msgstr "समुह"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "समुहहरु"
-
-#: models.py:200
-msgid "password"
-msgstr "पासवर्ड"
-
-#: models.py:201
-msgid "last login"
-msgstr "पूर्व लगिन"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "प्रधान प्रयोगकर्ता प्रतिष्ठा "
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr "प्रयोग कर्ताका अनुमति "
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "प्रयोगकर्ता नाम"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "आवश्यक । ३० अक्षर वा कम । अंक, वर्ण र @/./+/-/_ मात्र उपयुक्त ।"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "सही प्रयोग कर्ता नाम राख्नु होस ।"
-
-#: models.py:372
-msgid "first name"
-msgstr "नाम"
-
-#: models.py:373
-msgid "last name"
-msgstr "थर"
-
-#: models.py:374
-msgid "email address"
-msgstr "ई-मेल ठेगाना"
-
-#: models.py:375
-msgid "staff status"
-msgstr "स्टाफ प्रतिष्ठा "
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-
-#: models.py:378
-msgid "active"
-msgstr "सक्रिय "
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-
-#: models.py:381
-msgid "date joined"
-msgstr "दर्ता भएको मिति"
-
-#: models.py:389
-msgid "user"
-msgstr "प्रयोगकर्ता"
-
-#: models.py:390
-msgid "users"
-msgstr "प्रयोगकर्ता"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "लग आउट "
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "%(site_name)s को पासवर्ड पून: राख्नु "
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "सही ई-मेल ठेगाना राख्नु होस ।"
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/nl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/nl/LC_MESSAGES/django.mo
deleted file mode 100644
index 8bfdd41..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/nl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/nl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/nl/LC_MESSAGES/django.po
deleted file mode 100644
index 1f1c067..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/nl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,293 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Bas Peschier <bas.peschier@gmail.com>, 2013
-# erikr <transifex@solidlinks.nl>, 2013
-# erikr <transifex@solidlinks.nl>, 2013
-# Harro van der Klauw <hvdklauw@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Jeffrey Gelens <jeffrey@noppo.pro>, 2011-2012
-# Tino de Bruijn <tinodb@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-23 17:29+0000\n"
-"Last-Translator: Bas Peschier <bas.peschier@gmail.com>\n"
-"Language-Team: Dutch (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Persoonlijke informatie"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Rechten"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Belangrijke datums"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Wachtwoord wijzigen is geslaagd."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Wijzig wachtwoord: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Er is geen wachtwoord ingesteld."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Ongeldig wachtwoord formaat of onbekend hashing algoritme."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Een gebruiker met deze gebruikersnaam bestaat al."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "De twee ingevulde wachtwoorden zijn niet gelijk."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Gebruikersnaam"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Vereist. 30 tekens of minder. Alleen letters, cijfers en @/,/+/-/_ tekens "
-"zijn toegestaan."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Dit veld mag alleen letters, cijfers en @/,/+/-/_ tekens bevatten."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Wachtwoord"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Bevestiging wachtwoord"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Vul hetzelfde wachtwoord als hierboven in, ter bevestiging."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Wachtwoorden worden niet als tekst opgeslagen, dus je kunt een gebruikers "
-"wachtwoord niet zien. Je kunt hem aanpassen via <a href=\"password/\">dit "
-"formulier</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Voer een correcte %(username)s en wachtwoord in. Let op dat beide velden "
-"hoofdlettergevoelig zijn."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Dit account is inactief."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Email"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nieuw wachtwoord"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Nieuw wachtwoord bevestigen"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"Uw oude wachtwoord is niet correct ingevoerd. Voert u het alstublieft "
-"opnieuw in."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Oud wachtwoord"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Wachtwoord (nogmaals)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritme"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iteraties"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "arbeidsfactor"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "checksum"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "naam"
-
-#: models.py:74
-msgid "codename"
-msgstr "codenaam"
-
-#: models.py:78
-msgid "permission"
-msgstr "recht"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "rechten"
-
-#: models.py:128
-msgid "group"
-msgstr "groep"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "groepen"
-
-#: models.py:200
-msgid "password"
-msgstr "wachtwoord"
-
-#: models.py:201
-msgid "last login"
-msgstr "laatste inlog"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "supergebruikerstatus"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Bepaalt dat deze gebruiker alle rechten heeft, zonder deze expliciet toe te "
-"wijzen."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"De groepen waar deze gebruiker toe behoord. Een gebruiker zal alle rechten "
-"krijgen van zijn/haar groepen."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "gebruikersrechten"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Specifieke rechten voor deze gebruiker"
-
-#: models.py:368
-msgid "username"
-msgstr "gebruikersnaam"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "Vereist. 30 tekens of minder. Letters, cijfers en /./+/-/_ tekens."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Vul een geldige gebruikersnaam in."
-
-#: models.py:372
-msgid "first name"
-msgstr "voornaam"
-
-#: models.py:373
-msgid "last name"
-msgstr "achternaam"
-
-#: models.py:374
-msgid "email address"
-msgstr "emailadres"
-
-#: models.py:375
-msgid "staff status"
-msgstr "stafstatus"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Bepaalt of de gebruiker kan inloggen op deze beheersite."
-
-#: models.py:378
-msgid "active"
-msgstr "actief"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Bepaalt of deze gebruiker als actief dient te worden behandeld. U kunt dit "
-"uitvinken in plaats van een gebruiker te verwijderen."
-
-#: models.py:381
-msgid "date joined"
-msgstr "datum toegetreden"
-
-#: models.py:389
-msgid "user"
-msgstr "gebruiker"
-
-#: models.py:390
-msgid "users"
-msgstr "gebruikers"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Afmelden"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Wachtwoord reset voor %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Vul een geldig emailadres in."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/nn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/nn/LC_MESSAGES/django.mo
deleted file mode 100644
index 3adc772..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/nn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/nn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/nn/LC_MESSAGES/django.po
deleted file mode 100644
index d0432c4..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/nn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,273 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/"
-"language/nn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Personleg informasjon"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Løyve"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Viktige datoar"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Passordet er endra."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Endre passord: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Det eksisterar allereie ein brukar med dette brukernamnet."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Dei to passordfelta er ikkje like."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Brukarnamn"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "Nødvendig. 30 teikn eller færre. Berre bokstavar, tall @/./+/-/_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Feltet kan berre innehalde bokstavar, nummer og @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Passord"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Stadfesting av passord"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Skriv inn det samme passordet som over, for verifisering."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Denne kontoen er inaktiv."
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nytt passord"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Stadfest nytt passord"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Det gamle passordet er feil. Prøv omatt."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Gammalt passord"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Passord (gjenta)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "namn"
-
-#: models.py:74
-msgid "codename"
-msgstr "kodenamn"
-
-#: models.py:78
-msgid "permission"
-msgstr "løyve"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "løyve"
-
-#: models.py:128
-msgid "group"
-msgstr "gruppe"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupper"
-
-#: models.py:200
-msgid "password"
-msgstr "passord"
-
-#: models.py:201
-msgid "last login"
-msgstr "siste innlogging"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "superbrukar"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "Angir at denne brukaren har alle løyve utan å eksplisitt sette dei."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr "Brukerløyve"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "brukarnamn"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "Nødvendig. 30 teikn eller færre. Berre bokstavar, tall @/./+/-/_."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "fornamn"
-
-#: models.py:373
-msgid "last name"
-msgstr "etternamn"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "administrasjonsstatus"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Angir at brukaren kan logge inn på denne administrasjonssida."
-
-#: models.py:378
-msgid "active"
-msgstr "aktiv"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Angir at denne brukaren er aktiv. Avmerk denne i staden for å slette kontoen."
-
-#: models.py:381
-msgid "date joined"
-msgstr "registrert"
-
-#: models.py:389
-msgid "user"
-msgstr "brukar"
-
-#: models.py:390
-msgid "users"
-msgstr "brukarar"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Logga ut"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/os/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/os/LC_MESSAGES/django.mo
deleted file mode 100644
index b658968..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/os/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/os/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/os/LC_MESSAGES/django.po
deleted file mode 100644
index 7f54bd2..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/os/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,284 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Ossetic (http://www.transifex.com/projects/p/django/language/"
-"os/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: os\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Персоналон инфо"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Бартӕ"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Ахсджиаг бонтӕ"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Пароль ивд ӕрцыд."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Фӕив пароль: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Ницы пароль уыд ӕвӕрд."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Паролы формат раст нӕу, кӕнӕ хӕшты алгоритм бӕрӕг нӕу."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Ахӕм фӕсномыгимӕ архайӕг нырид ис."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Дыууӕ паролы ӕмхуызӕн не сты."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Фӕсномыг"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Ӕнӕмӕнг. 30 кӕнӕ цъусдӕр нысаны. Ӕрмӕст дамгъӕтӕ, нымӕцтӕ ӕмӕ @/./+/-/_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Ам хъуамӕ уой ӕрмӕст дамгъӕтӕ, нымӕцтӕ ӕмӕ ахӕм нысӕнттӕ: @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Пароль"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Паролы бӕлвырдгӕнӕн"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Уӕлдӕр цы пароль бафыстай, уый бафысс, цӕмӕй бӕлвырд уа."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Хом парольтӕ ӕвӕрд не сты, ӕмӕ уый тыххӕй ницы хуызы ис гӕнӕн фенын ацы "
-"архайӕджы пароль, фӕлӕ дӕ бон у <a href=\"password/\">ацы формӕйы</a> "
-"ӕххуысӕй йӕ фӕивай."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Дӕ хорзӕхӕй, раст %(username)s ӕмӕ пароль бафысс. Дӕ сӕры дар уый, ӕмӕ дыууӕ "
-"дӕр гӕнӕн ис стыр ӕмӕ гыццыл дамгъӕтӕ ӕвзарой."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Ацы аккаунт ницы архайы."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Электрон пост"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Ног пароль"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Нӕуӕг паролы бӕлвырдгӕнӕн"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Дӕ зӕронд пароль раст амынд нӕу. Дӕ хорзӕхӕй, нӕуӕгӕй йӕ бафысс."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Зӕронд пароль"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Пароль (ногӕй)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "алгоритм"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "итерацитӕ"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "цӕхх"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "хӕш"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "куысты фактор"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "бӕлвырдсуммӕ"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "ном"
-
-#: models.py:74
-msgid "codename"
-msgstr "кодном"
-
-#: models.py:78
-msgid "permission"
-msgstr "бар"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "бартӕ"
-
-#: models.py:128
-msgid "group"
-msgstr "къорд"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "къордтӕ"
-
-#: models.py:200
-msgid "password"
-msgstr "пароль"
-
-#: models.py:201
-msgid "last login"
-msgstr "фӕстаг бахызт"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "хистӕр архайӕджы статус"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "Ацы архайӕгӕн алы бар дӕр дӕтты, цӕмӕй сӕ хицӕнӕй дӕттын ма хъӕуа."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Ацы архайӕг цы къордты ис. Архайӕг цы къордты ис, уыцы къордты бартӕ йын "
-"лӕвӕрд ӕрцӕудзысты."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "архайӕджы бартӕ"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "фӕсномыг"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Ӕнӕмӕнг. 30 кӕнӕ цъусдӕр нысаны. Ӕрмӕст дамгъӕтӕ, нымӕцтӕ ӕмӕ ахӕм нысӕнттӕ: "
-"@/./+/-/_"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Раст фӕсномыг бафысс"
-
-#: models.py:372
-msgid "first name"
-msgstr "ном"
-
-#: models.py:373
-msgid "last name"
-msgstr "мыггаг"
-
-#: models.py:374
-msgid "email address"
-msgstr "электрон посты адрис"
-
-#: models.py:375
-msgid "staff status"
-msgstr "куысты уавӕр"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Бӕрӕг кӕны архайӕгӕн йӕ бон у ацы армдарӕн сайтмӕ хизын, ӕви нӕ."
-
-#: models.py:378
-msgid "active"
-msgstr "активон"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Бӕрӕг кӕны ацы архайӕгы хъӕуы нымайын активоныл, ӕви нӕ. Йӕ нысан ын сис "
-"хафыны бӕсты."
-
-#: models.py:381
-msgid "date joined"
-msgstr "баиуы бон"
-
-#: models.py:389
-msgid "user"
-msgstr "архайӕг"
-
-#: models.py:390
-msgid "users"
-msgstr "архайджытӕ"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Рахизын"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "%(site_name)s-ы нӕуӕг пароль ӕвӕрӕн"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Раст фӕсномыг бафысс"
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/pa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/pa/LC_MESSAGES/django.mo
deleted file mode 100644
index 13eaf83..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/pa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/pa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/pa/LC_MESSAGES/django.po
deleted file mode 100644
index 2d0eb7e..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/pa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,273 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# A S Alam <apreet.alam@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/"
-"language/pa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pa\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "ਨਿੱਜੀ ਜਾਣਕਾਰੀ"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "ਅਧਿਕਾਰ"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "ਖਾਸ ਮਿਤੀਆਂ"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "ਪਾਸਵਰਡ ਠੀਕ ਤਰ੍ਹਾਂ ਬਦਲਿਆ ਗਿਆ ਹੈ।"
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "ਪਾਸਵਰਡ ਬਦਲੋ: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "ਕੋਈ ਪਾਸਵਰਡ ਸੈੱਟ ਨਹੀਂ।"
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "ਗਲਤ ਪਾਸਵਰਡ ਫਾਰਮੈਟ ਜਾਂ ਅਣਜਾਣ ਹੈਸ਼ ਐਲੋਗਰਿਥਮ ਹੈ।"
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "ਉਸ ਯੂਜ਼ਰ ਨਾਂ ਨਾਲ ਯੂਜ਼ਰ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ।"
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "ਦੋਵੇਂ ਪਾਸਵਰਡ ਖੇਤਰ ਮਿਲਦੇ ਨਹੀਂ ਹਨ।"
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "ਯੂਜ਼ਰ ਨਾਂ"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "ਲਾਜ਼ਮੀ। ੩੦ ਜਾਂ ਘੱਟ ਅੱਖਰ ਚਾਹੀਦੇ ਹਨ। ਅੱਖਰ, ਅੰਕ @/./+/-/_ ਹੀ।"
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "ਪਾਸਵਰਡ"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "ਪਾਸਵਰਡ ਪੁਸ਼ਟੀ"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "ਜਾਂਚ ਲਈ, ਉੱਤੇ ਦਿੱਤਾ ਪਾਸਵਰਡ ਹੀ ਦਿਓ।"
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "ਇਹ ਅਕਾਊਂਟ ਗ਼ੈਰ-ਸਰਗਰਮ ਹੈ।"
-
-#: forms.py:206
-msgid "Email"
-msgstr "ਈਮੇਲ"
-
-#: forms.py:256
-msgid "New password"
-msgstr "ਨਵਾਂ ਪਾਸਵਰਡ"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "ਨਵਾਂ ਪਾਸਵਰਡ ਪੁਸ਼ਟੀ"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "ਤੁਹਾਡਾ ਪੁਰਾਣਾ ਪਾਸਵਰਡ ਗਲਤ ਦਿੱਤਾ ਗਿਆ ਸੀ। ਇਸ ਨੂੰ ਫੇਰ ਦਿਉ ਜੀ।"
-
-#: forms.py:290
-msgid "Old password"
-msgstr "ਪੁਰਾਣਾ ਪਾਸਵਰਡ"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "ਪਾਸਵਰਡ (ਫੇਰ)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "ਐਲਗੋਰਿਥਮ"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "ਸਾਲਟ"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "ਹੈਸ਼"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "ਵਰਕ ਫੈਕਟਰ"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "ਚੈਕਸਮ"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "ਨਾਂ"
-
-#: models.py:74
-msgid "codename"
-msgstr "ਕੋਡ-ਨਾਂ"
-
-#: models.py:78
-msgid "permission"
-msgstr "ਅਧਿਕਾਰ"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "ਅਧਿਕਾਰ"
-
-#: models.py:128
-msgid "group"
-msgstr "ਗਰੁੱਪ"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "ਗਰੁੱਪ"
-
-#: models.py:200
-msgid "password"
-msgstr "ਪਾਸਵਰਡ"
-
-#: models.py:201
-msgid "last login"
-msgstr "ਆਖਰੀ ਲਾਗਇਨ"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "ਸੁਪਰਯੂਜ਼ਰ ਹਾਲਤ"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr "ਯੂਜ਼ਰ ਅਧਿਕਾਰ"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "ਯੂਜ਼ਰ ਨਾਂ"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "ਲਾਜ਼ਮੀ। ੩੦ ਜਾਂ ਘੱਟ ਅੱਖਰ ਚਾਹੀਦੇ ਹਨ। ਅੱਖਰ, ਅੰਕ @//+/-/_ ਹੀ।"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "ਠੀਕ ਯੂਜ਼ਰ-ਨਾਂ ਦਿਉ।"
-
-#: models.py:372
-msgid "first name"
-msgstr "ਪਹਿਲਾਂ ਨਾਂ"
-
-#: models.py:373
-msgid "last name"
-msgstr "ਆਖਰੀ ਨਾਂ"
-
-#: models.py:374
-msgid "email address"
-msgstr "ਈਮੇਲ ਐਡਰੈਸ"
-
-#: models.py:375
-msgid "staff status"
-msgstr "ਸਟਾਫ ਹਾਲਤ"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-
-#: models.py:378
-msgid "active"
-msgstr "ਸਰਗਰਮ"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-
-#: models.py:381
-msgid "date joined"
-msgstr "ਜੁਆਇੰਨ ਕਰਨ ਦੀ ਮਿਤੀ"
-
-#: models.py:389
-msgid "user"
-msgstr "ਯੂਜ਼ਰ"
-
-#: models.py:390
-msgid "users"
-msgstr "ਯੂਜ਼ਰ"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "ਲਾਗ ਆਉਟ ਕੀਤਾ"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "ਢੁੱਕਵਾਂ ਈਮੇਲ ਐਡਰੈਸ ਦਿਉ।"
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/pl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/pl/LC_MESSAGES/django.mo
deleted file mode 100644
index d665513..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/pl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/pl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/pl/LC_MESSAGES/django.po
deleted file mode 100644
index 941a92f..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/pl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,289 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# angularcircle, 2011,2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Karol <kfuks2@o2.pl>, 2012
-# Roman Barczyński <rombar@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Dane osobowe"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Uprawnienia"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Ważne daty"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Hasło zostało zmienione pomyślnie."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Zmień hasło: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Hasło nie zostało ustawione."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-"Format hasła jest niewłaściwy, bądź zastosowany została nieznana funkcja "
-"skrótu (hash)."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Użytkownik o tej nazwie już istnieje."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Hasła się nie zgadzają."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Nazwa użytkownika"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "Wymagane. 30 znaków lub mniej. Tylko litery, cyfry i znaki @/./+/-/_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "To pole może zawierać tylko litery, cyfry i znaki @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Hasło"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Potwierdzenie hasła"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Podaj powyższe hasło w celu weryfikacji."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Czyste hasła nie są zapisywane, więc nie ma możliwości aby zobaczyć hasło "
-"użytkownika, ale możesz zmienić hasło używając <a href=\"password/\">tego "
-"formularza</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Wprowadź poprawną %(username)s oraz hasło. Uwaga: wielkość liter ma "
-"znaczenie."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "To konto jest nieaktywne."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Adres email"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nowe hasło"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Nowe hasło (powtórz)"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Podane stare hasło jest niepoprawne. Proszę podać je jeszcze raz."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Stare hasło"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Hasło (powtórz)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algorytm"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iteracje"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "sól"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "work factor"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "suma kontrolna"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nazwa"
-
-#: models.py:74
-msgid "codename"
-msgstr "nazwa kodowa"
-
-#: models.py:78
-msgid "permission"
-msgstr "uprawnienie"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "uprawnienia"
-
-#: models.py:128
-msgid "group"
-msgstr "grupa"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupy"
-
-#: models.py:200
-msgid "password"
-msgstr "hasło"
-
-#: models.py:201
-msgid "last login"
-msgstr "ostatnio zalogowany"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "status administratora"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Oznacza, że ten użytkownik ma wszystkie uprawnienia bez jawnego "
-"przypisywania ich."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Grupy do których należy użytkownik. Użytkownik otrzyma wszystkie uprawnienia "
-"przypisane do którejkolwiek z jego/jej grup."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "uprawnienia użytkownika"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "użytkownik"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "Wymagane. 30 znaków lub mniej. Tylko litery, cyfry i znaki @/./+/-/_."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Wprowadź poprawną nazwę użytkownika."
-
-#: models.py:372
-msgid "first name"
-msgstr "imię"
-
-#: models.py:373
-msgid "last name"
-msgstr "nazwisko"
-
-#: models.py:374
-msgid "email address"
-msgstr "adres email"
-
-#: models.py:375
-msgid "staff status"
-msgstr "w zespole"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Oznacza czy użytkownik może zalogować się do panelu admina."
-
-#: models.py:378
-msgid "active"
-msgstr "aktywny"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Oznacza czy użytkownika należy uważać za aktywnego. Odznacz to, zamiast "
-"usuwać konta."
-
-#: models.py:381
-msgid "date joined"
-msgstr "data przyłączenia"
-
-#: models.py:389
-msgid "user"
-msgstr "użytkownik"
-
-#: models.py:390
-msgid "users"
-msgstr "użytkownicy"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Wylogowany"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Reset hasła dla konta na stronie %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Wprowadź poprawną nazwę użytkownika."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/pt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/pt/LC_MESSAGES/django.mo
deleted file mode 100644
index abb4f7b..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/pt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/pt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/pt/LC_MESSAGES/django.po
deleted file mode 100644
index 9f632d9..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/pt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,289 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nuno Mariz <nmariz@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-31 16:34+0000\n"
-"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
-"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Informação pessoal"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Permissões"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Datas importantes"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Palavra-passe modificada com sucesso."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Modificar a palavra-passe: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Nenhuma palavra-chave definida."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Formato de palavra-chave inválido ou função de mistura desconhecida."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Já existe um utilizador com esse nome."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Os dois campos da palavra-passe não coincidem."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Utilizador"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Obrigatório. 30 carateres ou menos. Apenas letras, dígitos e @/./+/-/_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Este valor apenas deverá conter letras, números e carateres @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Palavra-passe"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Confirmação da palavra-passe"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Introduza a palavra-passe como acima, para verificação."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Não são guardadas palavras-passe sem encriptação, portanto não é possível "
-"visualizar a password deste utilizador, mas poderá modificar a palavra-passe "
-"através <a href=\"password/\">deste formulário</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Por favor introduza o %(username)s e password corretos. Tenha em atenção às "
-"maiúsculas e minúsculas."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Esta conta não está activa."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Email"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nova palavra-passe"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Confirmação da nova palavra-passe"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"A sua palavra-passe antiga foi introduzida incorretamente. Por favor tente "
-"novamente."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Palavra-passe antiga"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Palavra-passe (novamente)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritmo"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iterações"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "fator trabalho"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "verificação"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nome"
-
-#: models.py:74
-msgid "codename"
-msgstr "nome de código"
-
-#: models.py:78
-msgid "permission"
-msgstr "permissão"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "permissões"
-
-#: models.py:128
-msgid "group"
-msgstr "grupo"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupos"
-
-#: models.py:200
-msgid "password"
-msgstr "palavra-passe"
-
-#: models.py:201
-msgid "last login"
-msgstr "última entrada"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "Status de superuser"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Define se este utilizador tem todas as permissões sem explicitamente as "
-"atribuir."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Os grupos este utilizador pertence. Um utilizador terá todas as permissões "
-"concedidas a cada um do seu grupo."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "permissões do utilizador"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Permissões específicas para este utilizador."
-
-#: models.py:368
-msgid "username"
-msgstr "utilizador"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Obrigatório. 30 carateres ou menos. Apenas letras, números e carateres @/./"
-"+/-/_."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Introduza um nome de utilizador válido."
-
-#: models.py:372
-msgid "first name"
-msgstr "primeiro nome"
-
-#: models.py:373
-msgid "last name"
-msgstr "último nome"
-
-#: models.py:374
-msgid "email address"
-msgstr "endereço de email"
-
-#: models.py:375
-msgid "staff status"
-msgstr "status de equipa"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Define se o utilizador pode usar a administração do site."
-
-#: models.py:378
-msgid "active"
-msgstr "ativo"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Defina se este utilizador deva ser tratado como ativo. Não selecione em vez "
-"de remover as contas."
-
-#: models.py:381
-msgid "date joined"
-msgstr "data de registo"
-
-#: models.py:389
-msgid "user"
-msgstr "utilizador"
-
-#: models.py:390
-msgid "users"
-msgstr "utilizadores"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Saiu"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Redefinição de palavra-passe em %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Introduza um nome de utilizador válido."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.mo
deleted file mode 100644
index 3acb377..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.po
deleted file mode 100644
index 89bf762..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/pt_BR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,294 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# dudanogueira <dudanogueira@gmail.com>, 2012
-# Eduardo Carvalho <eduardocereto@gmail.com>, 2013
-# Elyézer Rezende <elyezermr@gmail.com>, 2013
-# gsavix <gsavix@gmail.com>, 2013
-# Guilherme Gondim <semente@taurinus.org>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sandro <sandrossv@hotmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
-"django/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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Informações pessoais"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Permissões"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Datas importantes"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Senha modificada com sucesso."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Alterar senha: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Nenhuma senha definida."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Formato de senha inválido ou algoritmo de hash desconhecido."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Um usuário com este nome de usuário já existe."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Os dois campos de senha não combinam."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Usuário"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Obrigatório. 30 caracteres ou menos. Somente letras, dígitos e @/./+/-/_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"Este valor deve conter apenas letras, números e os caracteres @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Senha"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Confirmação de senha"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Informe a mesma senha digitada acima, para verificação."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Não são armazenadas senhas no formato plano, por isso não há como visualizar "
-"a senha do usuário, mas você pode alterá-la usando <a href=\"password/"
-"\">este formulário</a> ."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Por favor, entre com um %(username)s e senha corretos. Note que ambos os "
-"campos diferenciam maiúsculas e minúsculas."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Esta conta está inativa."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Email"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nova senha"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Confirmação da nova senha"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"A senha antiga foi digitada incorretamente. Por favor, informe-a novamente."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Senha antiga"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Senha (novamente)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritmo"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iterações"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "fator de trabalho"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "checksum"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nome"
-
-#: models.py:74
-msgid "codename"
-msgstr "apelido"
-
-#: models.py:78
-msgid "permission"
-msgstr "permissão"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "permissões"
-
-#: models.py:128
-msgid "group"
-msgstr "grupo"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupos"
-
-#: models.py:200
-msgid "password"
-msgstr "senha"
-
-#: models.py:201
-msgid "last login"
-msgstr "último login"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "status de superusuário"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Indica que este usuário tem todas as permissões sem atribuí-las "
-"explicitamente."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Os grupos que este usuário pertence. Um usuário terá todas as permissões "
-"concedidas a cada um de seus grupos."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "permissões do usuário"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "usuário"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Obrigatório. 30 caracteres ou menos. Letras, números e os caracteres @/./+/-/"
-"_"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Informe um nome de usuário válido."
-
-#: models.py:372
-msgid "first name"
-msgstr "primeiro nome"
-
-#: models.py:373
-msgid "last name"
-msgstr "último nome"
-
-#: models.py:374
-msgid "email address"
-msgstr "endereço de email"
-
-#: models.py:375
-msgid "staff status"
-msgstr "membro da equipe"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Indica que usuário consegue acessar este site de administração."
-
-#: models.py:378
-msgid "active"
-msgstr "ativo"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Indica que o usuário será tratado como ativo. Ao invés de excluir contas de "
-"usuário, desmarque isso."
-
-#: models.py:381
-msgid "date joined"
-msgstr "data de registro"
-
-#: models.py:389
-msgid "user"
-msgstr "usuário"
-
-#: models.py:390
-msgid "users"
-msgstr "usuários"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Sessão encerrada"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Redefinição de senha em %(site_name)s "
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Informe um endereço de email válido."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ro/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/ro/LC_MESSAGES/django.mo
deleted file mode 100644
index 424f8b6..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ro/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ro/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/ro/LC_MESSAGES/django.po
deleted file mode 100644
index ce00177..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ro/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,285 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Daniel Ursache-Dogariu <contact@danniel.net>, 2011
-# Denis Darii <sinednx@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/"
-"ro/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1));\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Informații personale"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Permisiuni"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Date importante"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Parolă schimbată cu succes."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Schimbă parola: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Un utilizator cu acest nume de utilizator există deja."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Cele două câmpuri pentru parole nu coincid."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Nume utilizator"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Obligatoriu. 30 de caractere sau mai puține. Numai litere, cifre și @/./+/-/"
-"_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Această valoare poate conține numai litere, cifre şi @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Parolă"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Confirmare parolă"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Introduceți aceeași parolă, pentru verificare."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Acest cont este inactiv."
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Parolă nouă"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Confirmarea parolă nouă"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Parola veche a fost introdusă greșit. Introduceți-o din nou."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Parolă veche"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Parolă (din nou)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "nume"
-
-#: models.py:74
-msgid "codename"
-msgstr "nume de cod"
-
-#: models.py:78
-msgid "permission"
-msgstr "permisiune"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "permisiuni"
-
-#: models.py:128
-msgid "group"
-msgstr "grup"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupuri"
-
-#: models.py:200
-msgid "password"
-msgstr "parolă"
-
-#: models.py:201
-msgid "last login"
-msgstr "ultima autentificare"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "stare superutilizator"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Marchează daca acest utilizator are toate permisiunile, fără a le mai "
-"selecta explicit."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr "permisiuni utilizator"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "nume utilizator"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Obligatoriu. 30 de caractere sau mai puține. Numai litere, numere și @/./+/-/"
-"_."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "Prenume"
-
-#: models.py:373
-msgid "last name"
-msgstr "Nume"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "stare autorizare"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Marchează dacă utilizatorul se poate autentifica în acest site de "
-"administrare."
-
-#: models.py:378
-msgid "active"
-msgstr "activ"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Marchează dacă acest utilizator trebuie tratat ca activ sau nu. Deselectați "
-"în loc de a șterge conturi."
-
-#: models.py:381
-msgid "date joined"
-msgstr "data înscrierii"
-
-#: models.py:389
-msgid "user"
-msgstr "utilizator"
-
-#: models.py:390
-msgid "users"
-msgstr "utilizatori"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Deautentificat"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ru/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/ru/LC_MESSAGES/django.mo
deleted file mode 100644
index cddfbd8..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ru/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ru/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/ru/LC_MESSAGES/django.po
deleted file mode 100644
index 52e832e..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ru/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,288 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Алексей Борискин <sun.void@gmail.com>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-27 08:36+0000\n"
-"Last-Translator: Алексей Борискин <sun.void@gmail.com>\n"
-"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/"
-"ru/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Персональная информация"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Права доступа"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Важные даты"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Пароль успешно изменен."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Изменить пароль: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Пароль не задан."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Неизвестный формат пароля или алгоритм хеширования."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Пользователь с таким именем уже существует."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Два поля с паролями не совпадают."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Имя пользователя"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Обязательное поле. Не более 30 символов. Только буквы, цифры и символы @/./"
-"+/-/_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Это значение может состоять из букв, цифр и знаков @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Пароль"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Подтверждение пароля"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Введите тот же пароль, что и выше, для подтверждения."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Пароли не хранятся в открытом виде, поэтому нет возможности увидеть пароль "
-"этого пользователя. Но вы можете изменить пароль используя <a href="
-"\"password/\">эту форму</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Пожалуйста, введите корректные %(username)s и пароль. Оба поля могут быть "
-"чувствительны к регистру."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Эта учетная запись отключена."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Адрес электронной почты"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Новый пароль"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Подтверждение нового пароля"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Ваш старый пароль введен неправильно. Пожалуйста, введите его снова."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Старый пароль"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Пароль (еще раз)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "алгоритм"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "итерации"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "соль"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "хэш"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "рабочий фактор"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "контрольная сумма"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "имя"
-
-#: models.py:74
-msgid "codename"
-msgstr "кодовое название"
-
-#: models.py:78
-msgid "permission"
-msgstr "право"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "права"
-
-#: models.py:128
-msgid "group"
-msgstr "группа"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "группы"
-
-#: models.py:200
-msgid "password"
-msgstr "пароль"
-
-#: models.py:201
-msgid "last login"
-msgstr "последний вход"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "статус суперпользователя"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "Указывает, что пользователь имеет все права без явного их назначения."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Группы, к которым принадлежит пользователь. Пользователь будет иметь все "
-"права, указанные в каждой его/её группе."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "права пользователя"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Индивидуальные права данного пользователя."
-
-#: models.py:368
-msgid "username"
-msgstr "имя пользователя"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Обязательное поле. Введите 30 символов или менее. Используйте только буквы, "
-"цифры и знаки из набора @/./+/-/_"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Введите правильное имя пользователя."
-
-#: models.py:372
-msgid "first name"
-msgstr "имя"
-
-#: models.py:373
-msgid "last name"
-msgstr "фамилия"
-
-#: models.py:374
-msgid "email address"
-msgstr "адрес электронной почты"
-
-#: models.py:375
-msgid "staff status"
-msgstr "статус персонала"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Отметьте, если пользователь может входить в административную часть сайта."
-
-#: models.py:378
-msgid "active"
-msgstr "активный"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Отметьте, если пользователь должен считаться активным. Уберите эту отметку "
-"вместо удаления учётной записи."
-
-#: models.py:381
-msgid "date joined"
-msgstr "дата регистрации"
-
-#: models.py:389
-msgid "user"
-msgstr "пользователь"
-
-#: models.py:390
-msgid "users"
-msgstr "пользователи"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Не авторизован"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Сброс пароля на %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Введите корректное имя пользователя."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/sk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/sk/LC_MESSAGES/django.mo
deleted file mode 100644
index 664a9b2..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/sk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/sk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/sk/LC_MESSAGES/django.po
deleted file mode 100644
index 9d16aaa..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/sk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,284 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Juraj Bubniak <translations@jbub.eu>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-30 15:50+0000\n"
-"Last-Translator: Juraj Bubniak <translations@jbub.eu>\n"
-"Language-Team: Slovak (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Osobné údaje"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Práva"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Dôležité dátumy"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Heslo úspešne zmenené."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Zmeniť heslo: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Žiadne heslo."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Neplatný formát hesla alebo neznámy hašovací algoritmus."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Používateľ s takým používateľským menom už existuje."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Heslo a jeho potvrdenie sa nezhodujú."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Používateľské meno"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "Povinné. 30 znakov alebo menej. Iba písmená, čísla a @/./+/-/_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Táto hodnota môže obsahovať len písmená, číslice a znaky @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Heslo"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Potvrdenie hesla"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Kvôli overeniu zadajte rovnaké heslo ako vyššie."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Heslá v pôvodnom tvare nie sú ukladané, takže neexistuje spôsob zobraziť "
-"heslo užívateľa. Môžete ho však zmeniť pomocou <a href=\"password/\">tohoto "
-"formulára</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Zadajte prosím správne %(username)s a heslo. Všimnite si, že obe polia môžu "
-"obsahovať veľké a malé písmená."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Tento účet je neaktívny."
-
-#: forms.py:206
-msgid "Email"
-msgstr "E-mail"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nové heslo"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Potvrdenie nového hesla"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Nezadali ste správne svoje staré heslo. Napíšte ho znovu, prosím."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Staré heslo"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Heslo (znova)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritmus"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iterácie"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "faktor práce"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "kontrolný súčet"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "meno"
-
-#: models.py:74
-msgid "codename"
-msgstr "kódové meno"
-
-#: models.py:78
-msgid "permission"
-msgstr "oprávnenie"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "oprávnenia"
-
-#: models.py:128
-msgid "group"
-msgstr "skupina"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "skupiny"
-
-#: models.py:200
-msgid "password"
-msgstr "heslo"
-
-#: models.py:201
-msgid "last login"
-msgstr "naposledy prihlásený"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "status superpoužívateľa"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Určuje, či používateľ získava automaticky všetky práva aj bez priameho "
-"priradenia."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Skupiny do ktorých užívateľ patrí. Užívateľ dostane všetky povolenia do "
-"každej z jeho skupín."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "používateľské oprávnenia"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Konkrétne povolenia pre tohto používateľa."
-
-#: models.py:368
-msgid "username"
-msgstr "používateľské meno"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Povinné. 30 znakov alebo menej. Len písmená, číslice a znaky @/./+/-/_."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Zadajte platné užívateľské meno."
-
-#: models.py:372
-msgid "first name"
-msgstr "krstné meno"
-
-#: models.py:373
-msgid "last name"
-msgstr "priezvisko"
-
-#: models.py:374
-msgid "email address"
-msgstr "e-mailová adresa"
-
-#: models.py:375
-msgid "staff status"
-msgstr "postavenie zamestnanca"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Určuje, či sa používateľ môže prihlásiť do správy stránok."
-
-#: models.py:378
-msgid "active"
-msgstr "aktívny"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Určuje, či je účet aktívny. Odškrtnite, ak chcete vypnúť používateľský účet."
-
-#: models.py:381
-msgid "date joined"
-msgstr "dátum registrácie"
-
-#: models.py:389
-msgid "user"
-msgstr "používateľ"
-
-#: models.py:390
-msgid "users"
-msgstr "používatelia"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Odhlásený"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Obnovenie hesla pre %(site_name)s "
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Zadajte platné užívateľské meno."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/sl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/sl/LC_MESSAGES/django.mo
deleted file mode 100644
index 4d945a8..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/sl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/sl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/sl/LC_MESSAGES/django.po
deleted file mode 100644
index 73b304d..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/sl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,289 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Jure Cuhalev <gandalf@owca.info>, 2012
-# zejn <zejn@kiberpipa.org>, 2013
-# zejn <zejn@kiberpipa.org>, 2011-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-23 14:17+0000\n"
-"Last-Translator: zejn <zejn@kiberpipa.org>\n"
-"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/"
-"language/sl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Osebni podatki"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Dovoljenja"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Pomembni datumi"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Geslo je uspešno spremenjeno."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Spremeni geslo: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Geslo ni nastavljeno."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Neveljavna oblika gesla ali neznan algoritem razpršila."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Uporabnik s tem uporabniškim imenom že obstaja."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Gesli se ne ujemata."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Uporabniško ime"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Polje je obvezno. Vpisanih mora biti do 30 znakov, ti pa so lahko črke, "
-"številke in znaki @/./+/-/_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Ta vrednost lahko vsebuje le črke, števila in znake @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Geslo"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Potrditev gesla"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Ponovno vpišite izbrano geslo za overitev."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Gesla se ne shranjujejo v berljivi obliki, zato gesla tega uporabnika ni "
-"mogoče videti. Geslo lahko spremenite s pomočjo <a href=\"password/\">tega "
-"obrazca</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Vnesite veljavno %(username)s in geslo. Opomba: obe polji upoštevata "
-"velikost črk."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Ta uporabniški račun ni dejaven."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Elektronski naslov"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Novo geslo"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Potrditev novega gesla"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Vaše staro geslo ni vneseno pravilno. Poskusite znova."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Staro geslo"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Geslo (znova)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritem"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "ponovitev"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "naključna vrednost"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "razpršilo"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "faktor obremenitve"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "nadzorna vsota"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "ime"
-
-#: models.py:74
-msgid "codename"
-msgstr "kodno ime"
-
-#: models.py:78
-msgid "permission"
-msgstr "dovoljenje"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "dovoljenja"
-
-#: models.py:128
-msgid "group"
-msgstr "skupina"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "skupine"
-
-#: models.py:200
-msgid "password"
-msgstr "geslo"
-
-#: models.py:201
-msgid "last login"
-msgstr "zadnja prijava"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "stanje skrbnika"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "Uporabnik bo imel skrbniška dovoljenja."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Skupine, katerih član je ta uporabnik. Uporabnik pridobi vsa dovoljenja, "
-"povezana s to skupino."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "uporabniška dovoljenja"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Dovoljenja specifična za tega uporabnika."
-
-#: models.py:368
-msgid "username"
-msgstr "uporabniško ime"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Polje je obvezno. Vpisanih mora biti do 30 znakov, ti pa so lahko črke, "
-"številke in znaki @/./+/-/_."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Vnesite veljavno uporabniško ime."
-
-#: models.py:372
-msgid "first name"
-msgstr "ime"
-
-#: models.py:373
-msgid "last name"
-msgstr "priimek"
-
-#: models.py:374
-msgid "email address"
-msgstr "elektronski naslov"
-
-#: models.py:375
-msgid "staff status"
-msgstr "stanje osebja"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Določi, ali se sme uporabnik prijaviti kot skrbnik."
-
-#: models.py:378
-msgid "active"
-msgstr "dejaven"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Določi, ali je uporabnik dejaven. Možnost je priročna in preprečuje brisanje "
-"računov."
-
-#: models.py:381
-msgid "date joined"
-msgstr "vpisan od"
-
-#: models.py:389
-msgid "user"
-msgstr "uporabnik"
-
-#: models.py:390
-msgid "users"
-msgstr "uporabniki"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Odjavljen"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Geslo na %(site_name)s je ponastavljeno."
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Vnesite veljaven e-poštni naslov."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/sq/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/sq/LC_MESSAGES/django.mo
deleted file mode 100644
index 97e9005..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/sq/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/sq/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/sq/LC_MESSAGES/django.po
deleted file mode 100644
index 0275005..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/sq/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,287 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Besnik <besnik@programeshqip.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/"
-"sq/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sq\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Të dhëna personale"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Leje"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Të dhëna të rëndësishme"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Fjalëkalimi u ndryshua me sukses."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Ndryshoni fjalëkalimin: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Nuk ka fjalëkalim të caktuar."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Format i pavlefshëm fjalëkalimi ose algoritëm i panjohur hashi."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Ka tashmë një emër të tillë përdoruesi."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Dy fushat për fjalëkalim nuk u përputhën."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Emër përdoruesi"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"E domosdoshme. 30 ose më pak shenja. Vetëm shkronja, shifra dhe shenjat @/./"
-"+/-/_ ."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"Kjo vlerë mund të përmbajë vetëm shkronja, numra dhe shenja si @/./+/-/_ ."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Fjalëkalim"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Ripohim fjalëkalimi"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Jepni, për verifikim, të njëjtin fjalëkalim si më sipër."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Fjalëkalimet shqeto nuk depozitohenm ndaj nuk ka ndonjë mënyrë si të shihet "
-"fjalëkalimi i këtij përdoruesi, por mund ta ndryshoni fjalëkalimin duke "
-"përdorur <a href=\"password/\">këtë formular</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Ju lutemi, jepni një %(username)s dhe një fjalëkalim të saktë. Kini parasysh "
-"se që të dyja fushat mund të jenë të ndjeshme ndaj shkrimit me shkronja të "
-"mëdha ose të vogla."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Kjo llogari nuk është aktive."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Email"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Fjalëkalim i ri"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Ripohim fjalëkalimi të ri"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Fjalëkalimi juaj i vjetër u dha pasaktësisht. Ju lutem, jepeni sërish."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Fjalëkalim i vjetër"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Fjalëkalim (sërish)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritëm"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "përsëritje"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "kripë"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "emër"
-
-#: models.py:74
-msgid "codename"
-msgstr "emër i koduar"
-
-#: models.py:78
-msgid "permission"
-msgstr "leje"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "leje"
-
-#: models.py:128
-msgid "group"
-msgstr "grup"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupe"
-
-#: models.py:200
-msgid "password"
-msgstr "fjalëkalim"
-
-#: models.py:201
-msgid "last login"
-msgstr "hyrja e fundit"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "gjendje superpërdoruesi"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Përcakton që ky përdorues ka krejt lejet, pa ia akorduar ato shprehimisht."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Grupet ku bën pjesë ky përdorues. Një përdorues përfiton krejt lejet e dhëna "
-"për secilin grup të tij/saj."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "leje përdoruesi"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "emër përdoruesi"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"E domosdoshme. 30 ose më pak shenja. Shkronja, numra dhe shenjat @/./+/-/_"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Jepni emër përdoruesi të vlefshëm."
-
-#: models.py:372
-msgid "first name"
-msgstr "emër"
-
-#: models.py:373
-msgid "last name"
-msgstr "mbiemër"
-
-#: models.py:374
-msgid "email address"
-msgstr "adresë email"
-
-#: models.py:375
-msgid "staff status"
-msgstr "vend në ekip"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Përcakton nëse mund të hyjë ose jo përdoruesi te ky site administrimi."
-
-#: models.py:378
-msgid "active"
-msgstr "veprues"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Përcakton nëse ky përdorues do të duhej trajtuar si aktiv. Çpërzgjidhni "
-"këtë, në vend se të fshihni llogarira."
-
-#: models.py:381
-msgid "date joined"
-msgstr "datë anëtarësimi"
-
-#: models.py:389
-msgid "user"
-msgstr "përdorues"
-
-#: models.py:390
-msgid "users"
-msgstr "përdoruesa"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "I dalë"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Ricaktim fjalëkalimi për te %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Jepni një adresë email të vlefshme."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/sr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/sr/LC_MESSAGES/django.mo
deleted file mode 100644
index 36de75d..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/sr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/sr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/sr/LC_MESSAGES/django.po
deleted file mode 100644
index 71edbfd..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/sr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,286 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/"
-"sr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr\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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Лични подаци"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Дозволе"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Важни датуми"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Лозинка успешно измењена."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Измени лозинку: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Корисник са тим корисничким именом већ постоји."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Два поља за лозинке се нису поклопила."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Корисник"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Неопходно. Највише 30 словних места. Само алфанумерички знаци (слова, бројке "
-"и @/./+/-/_)."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Ова вредност може садржати само слова, бројке и @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Лозинка"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Потврда лозинке"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Ради провере тачности поново унесите лозинку коју сте унели горе."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Лозинке у изворном облику се не чувају, тако да се не могу видети, али се "
-"могу променити <a href=\"password/\">овде</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Овај налог је неактиван."
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Нова лозинка"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Потврда нове лозинке"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Ваша стара лознка није правилно унесена. Унесите је поново."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Стара лозинка"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Лозинка (поновите)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "алгоритам"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "итерације"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "зачин"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "хеш"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "фактор рада"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "сума за проверу"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "име"
-
-#: models.py:74
-msgid "codename"
-msgstr "шифра дозволе"
-
-#: models.py:78
-msgid "permission"
-msgstr "дозвола"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "дозволе"
-
-#: models.py:128
-msgid "group"
-msgstr "група"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "групе"
-
-#: models.py:200
-msgid "password"
-msgstr "лозинка"
-
-#: models.py:201
-msgid "last login"
-msgstr "последња пријава"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "статус администратора"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Означава да ли корисник има све дозволе без додељивања појединачних дозвола."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Групе којима корисник припада. Корисник ће добити све дозволе група у којим "
-"се налази."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "корисничке дозволе"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "корисничко име"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Неопходно. Највише 30 словних места. Само алфанумерички знаци (слова, бројке "
-"и @/./+/-/_)."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "име"
-
-#: models.py:373
-msgid "last name"
-msgstr "презиме"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "статус члана посаде"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Означава да ли корисник може да се пријави на овај сајт за администрацију."
-
-#: models.py:378
-msgid "active"
-msgstr "активан"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Означава да ли се корисник сматра активним. Деселектујте ово уместо да "
-"бришете налог."
-
-#: models.py:381
-msgid "date joined"
-msgstr "датум регистрације"
-
-#: models.py:389
-msgid "user"
-msgstr "корисник"
-
-#: models.py:390
-msgid "users"
-msgstr "корисници"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Одјављен"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Ресетовање лозинке на сајту %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.mo
deleted file mode 100644
index cd977bb..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.po
deleted file mode 100644
index d0721a1..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/sr_Latn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,287 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/"
-"language/sr@latin/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr@latin\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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Lični podaci"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Dozvole"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Važni datumi"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Lozinka uspešno izmenjena."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Izmeni lozinku: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Korisnik sa tim korisničkim imenom već postoji."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Dva polja za lozinke se nisu poklopila."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Korisnik"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Neophodno. Najviše 30 slovnih mesta. Samo alfanumerički znaci (slova, brojke "
-"i @/./+/-/_)."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Ova vrednost može sadržati samo slova, brojke i @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Lozinka"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Potvrda lozinke"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Radi provere tačnosti ponovo unesite lozinku koju ste uneli gore."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Lozinke u izvornom obliku se ne čuvaju, tako da se ne mogu videti, ali se "
-"mogu promeniti <a href=\"password/\">ovde</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Ovaj nalog je neaktivan."
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nova lozinka"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Potvrda nove lozinke"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Vaša stara loznka nije pravilno unesena. Unesite je ponovo."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Stara lozinka"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Lozinka (ponovite)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritam"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iteracije"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "začin"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "heš"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "faktor rada"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "suma za proveru"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "ime"
-
-#: models.py:74
-msgid "codename"
-msgstr "šifra dozvole"
-
-#: models.py:78
-msgid "permission"
-msgstr "dozvola"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "dozvole"
-
-#: models.py:128
-msgid "group"
-msgstr "grupa"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupe"
-
-#: models.py:200
-msgid "password"
-msgstr "lozinka"
-
-#: models.py:201
-msgid "last login"
-msgstr "poslednja prijava"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "status administratora"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Označava da li korisnik ima sve dozvole bez dodeljivanja pojedinačnih "
-"dozvola."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Grupe kojima korisnik pripada. Korisnik će dobiti sve dozvole grupa u kojim "
-"se nalazi."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "korisničke dozvole"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "korisničko ime"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Neophodno. Najviše 30 slovnih mesta. Samo alfanumerički znaci (slova, brojke "
-"i @/./+/-/_)."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "ime"
-
-#: models.py:373
-msgid "last name"
-msgstr "prezime"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "status člana posade"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-"Označava da li korisnik može da se prijavi na ovaj sajt za administraciju."
-
-#: models.py:378
-msgid "active"
-msgstr "aktivan"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Označava da li se korisnik smatra aktivnim. Deselektujte ovo umesto da "
-"brišete nalog."
-
-#: models.py:381
-msgid "date joined"
-msgstr "datum registracije"
-
-#: models.py:389
-msgid "user"
-msgstr "korisnik"
-
-#: models.py:390
-msgid "users"
-msgstr "korisnici"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Odjavljen"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Resetovanje lozinke na sajtu %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/sv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/sv/LC_MESSAGES/django.mo
deleted file mode 100644
index 51fc395..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/sv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/sv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/sv/LC_MESSAGES/django.po
deleted file mode 100644
index 303b8ea..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/sv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,289 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Alex Nordlund <deep.alexander@gmail.com>, 2012
-# Cybjit <cybjit@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Samuel Linde <samuel@linde.im>, 2011
-# biljettshop <thomas@biljettshop.se>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-28 09:04+0000\n"
-"Last-Translator: biljettshop <thomas@biljettshop.se>\n"
-"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/"
-"sv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sv\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Personlig information"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Rättigheter"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Viktiga datum"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Lösenordet ändrades."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Ändra lösenord: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Inget lösenord angivet."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Ogiltigt lösenordsformat eller okänd hashalgoritm."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "En användare med det användarnamnet finns redan."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "De två lösenordsfälten stämde inte överens."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Användarnamn"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Obligatoriskt. 30 tecken eller färre. Endast bokstäver, siffror och @/./+/-/"
-"_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Detta värde får endast innehålla bokstäver, siffror och @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Lösenord"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Lösenordsbekräftelse"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Fyll i samma lösenord som ovan för verifiering."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Klartextlösenord lagras inte, så det är inte möjligt att se denna användares "
-"lösenord, men du kan ändra lösenordet med <a href=\"password/\">detta "
-"formulär</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Ange ett korrekt %(username)s och lösenord. Observera att båda fälten är "
-"skiftlägeskänsliga."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Detta konto är inaktivt."
-
-#: forms.py:206
-msgid "Email"
-msgstr "E-postaddress"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nytt lösenord"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Bekräfta nytt lösenord"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Ditt gamla lösenord var felaktigt ifyllt. Var vänlig fyll i det igen."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Gammalt lösenord"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Lösenord (igen)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritm"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iterationer"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "arbetsfaktor"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "kontrollsumma"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "namn"
-
-#: models.py:74
-msgid "codename"
-msgstr "kodnamn"
-
-#: models.py:78
-msgid "permission"
-msgstr "rättighet"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "rättigheter"
-
-#: models.py:128
-msgid "group"
-msgstr "grupp"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "grupper"
-
-#: models.py:200
-msgid "password"
-msgstr "lösenord"
-
-#: models.py:201
-msgid "last login"
-msgstr "senaste inloggning"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "superanvändare"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Anger att denna användare har alla rättigheter utan att uttryckligen "
-"tilldela dem."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"De grupper som användaren är medlem i. En användare får tillgång till alla "
-"rättigheter som hans/hennes grupper har."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "användarättigheter"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Specifika rättigheter för denna användare."
-
-#: models.py:368
-msgid "username"
-msgstr "användarnamn"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "Obligatorisk. 30 tecken eller färre. Bokstäver, siffror och @/./+/-/_."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Ange ett giltigt användarnamn."
-
-#: models.py:372
-msgid "first name"
-msgstr "förnamn"
-
-#: models.py:373
-msgid "last name"
-msgstr "efternamn"
-
-#: models.py:374
-msgid "email address"
-msgstr "e-postaddress"
-
-#: models.py:375
-msgid "staff status"
-msgstr "personalstatus"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Avgör om användaren kan logga in på denna adminsida."
-
-#: models.py:378
-msgid "active"
-msgstr "aktiv"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Anger om användaren skall betraktas som aktiv. Avmarkera detta istället för "
-"att ta bort konton."
-
-#: models.py:381
-msgid "date joined"
-msgstr "registreringsdatum"
-
-#: models.py:389
-msgid "user"
-msgstr "användare"
-
-#: models.py:390
-msgid "users"
-msgstr "användare"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Utloggad"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Lösenord återställt på %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Fyll i en giltig e-postadress."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/sw/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/sw/LC_MESSAGES/django.mo
deleted file mode 100644
index 0fd97ed..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/sw/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/sw/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/sw/LC_MESSAGES/django.po
deleted file mode 100644
index c243425..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/sw/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,281 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# machaku <bmachaku@gmail.com>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-11-12 07:49+0000\n"
-"Last-Translator: machaku <bmachaku@gmail.com>\n"
-"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/"
-"sw/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sw\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Taarifa binafsi"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Ruhusa"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Tarehe muhimu"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Nenosiri limebadilishwa kwa mafanikio"
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Badilisha nenosiri: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Hakuna nenosiri lililowekwa."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Muundo batili wa nenosiri au algorithm ya kuhash isiyojulikana"
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Tayari kuna anayetumia hilo jina la mtumiaji."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Sehemu mbili za nenosiri hazikufanana"
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Jina la mtumiaji"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "Inahitajika. vibambo 30 au pungufu. Herufi, Tarakimu na @/./+/-/_ tu. "
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Thamani hii inaweza kuwa na herufi, tarakimu na vibambo @/./+/-/_ tu"
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Nenosiri"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Uthibitisho wa nenosiri"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Ingiza nenosiri linalofanana na la juu, kwa uthibitisho"
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Manenosiri ghafi hayahifadhiwi, hivyo hakuna namna ya kuona nenosiri la "
-"mtumiaji huyu, ila unaweza kubadilisha nenosiri kwa kutumia <a href="
-"\"password/\">fomu hii</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Tafadhali sahihisha %(username)s na nenosiri. Kumbuka sehemu zote mbili "
-"zinaweza kuwa zinazingatia herufi kubwa na ndogo."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Akaunti hii si hai."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Barua pepe"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Nenosiri jipya"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Uthibitisho wa nenosiri jipya"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"Nenosiri lako la zamani liliingizwa isivyo sahihi. Tafadhali liingize tena."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Nenosiri la zamani"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Nenosiri (tena)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "alogarithimu"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "mizunguko"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "kazi inayohitajika"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "checksum"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "jina"
-
-#: models.py:74
-msgid "codename"
-msgstr "jina la msimbo"
-
-#: models.py:78
-msgid "permission"
-msgstr "ruhusa"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "ruhusa"
-
-#: models.py:128
-msgid "group"
-msgstr "kundi"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "makundi"
-
-#: models.py:200
-msgid "password"
-msgstr "nenosiri"
-
-#: models.py:201
-msgid "last login"
-msgstr "kuingia kwa mara ya mwisho"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "hadhi ya mtumiaji wa juu"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "Teua mtumiaji huyu kuwa na ruhusa zote pasipo kuziainisha wazi."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Vikundi ambavyo mtumiaji huyu yupo. Mtumiaji atapata ruhusa zote "
-"zinazotolewa kwa kila mwanakundi hili."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "ruhusa za mtumiaji"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Ruhusa maalum kwa mtumiaji huyu."
-
-#: models.py:368
-msgid "username"
-msgstr "jina la mtumiaji"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Inatakiwa. vibambo 30 au pungufu. Herufi, namba na vibambo @ / / + /-/_ ."
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Ingiza halali Jina la mtumiaji "
-
-#: models.py:372
-msgid "first name"
-msgstr "jina la kwanza"
-
-#: models.py:373
-msgid "last name"
-msgstr "jina la mwisho"
-
-#: models.py:374
-msgid "email address"
-msgstr "anuani ya barua pepe"
-
-#: models.py:375
-msgid "staff status"
-msgstr "hadhi ya utawala"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Teua kama mtumiaji anaweza kuingia katika tovuti ya utawala."
-
-#: models.py:378
-msgid "active"
-msgstr "hai"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr " "
-
-#: models.py:381
-msgid "date joined"
-msgstr "tarehe ya kujiunga"
-
-#: models.py:389
-msgid "user"
-msgstr "mtumiaji"
-
-#: models.py:390
-msgid "users"
-msgstr "watumiaji"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Umetoka"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Kuseti upya nenosiri katika %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "ingiza anuani halali ya barua pepe."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ta/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/ta/LC_MESSAGES/django.mo
deleted file mode 100644
index 5a1b30e..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ta/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ta/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/ta/LC_MESSAGES/django.po
deleted file mode 100644
index 31e1f19..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ta/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,272 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/"
-"ta/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ta\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "தனிப்பட்ட விவரம்"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "அனுமதிகள்"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "முக்கியமான தேதிகள்"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr ""
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr ""
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr ""
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr ""
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "பயனர்ப்பெயர்"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "கடவுச்சொல்"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr ""
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "மேலே அதே கடவுச்சொல்லை உள்ளிடவும், சரிபார்ப்பதற்காக ."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "இந்த கணக்கு செயல்பட துவங்கவில்லை"
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr ""
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr ""
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-
-#: forms.py:290
-msgid "Old password"
-msgstr ""
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "கடவுச்சொல்(மறுபடியும்)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "பெயர்"
-
-#: models.py:74
-msgid "codename"
-msgstr "குறிமுறை பெயர்"
-
-#: models.py:78
-msgid "permission"
-msgstr "அனுமதி"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "அனுமதிகள்"
-
-#: models.py:128
-msgid "group"
-msgstr "குழு"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "குழுக்கள்"
-
-#: models.py:200
-msgid "password"
-msgstr "கடவுச்சொல்"
-
-#: models.py:201
-msgid "last login"
-msgstr "கடைசி உள்நுழைவு"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "மேலாளர் இருப்பு நிலை"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "இந்த பயனருக்கு எல்லா அங்கீகாரங்களும் வழங்கப்படவில்லை."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr "பயனர் அனுமதிகள்"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "பயனர் பெயர்"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "முதல் பெயர்"
-
-#: models.py:373
-msgid "last name"
-msgstr "கடைசி பெயர்"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "பணியாளர் நிலை"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "பயனர், 'மேலாளலர்' பக்கத்தில் நுழைவதை முடிவு செய்கிறது"
-
-#: models.py:378
-msgid "active"
-msgstr "செயல்படும்"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-
-#: models.py:381
-msgid "date joined"
-msgstr "சேர்ந்த தேதி"
-
-#: models.py:389
-msgid "user"
-msgstr "பயனர்"
-
-#: models.py:390
-msgid "users"
-msgstr "பயனர்கள்"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "வெளியே வந்துவீட்டீர்"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/te/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/te/LC_MESSAGES/django.mo
deleted file mode 100644
index 705a7f9..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/te/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/te/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/te/LC_MESSAGES/django.po
deleted file mode 100644
index 3655eb5..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/te/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,274 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# bhaskar teja yerneni <prudhviy@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# వీవెన్ వీరపనేని <veeven@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/"
-"te/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: te\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "వ్యక్తిగత సమాచారం "
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "అనుమతులు"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "ముఖ్యమైన తేదీలు"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "సంకేతపదాన్ని విజయవంతంగా మార్చారు."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "సంకేతపదాన్ని మార్చుకోండి: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "ఈ నామముతొ ఇంకొ వినియొగదారి ఉన్నరు"
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "ఈ రెండు అనుమతి పదాలు అసమానమైనంగ ఉన్నాయి"
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "వాడుకరిపేరు"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "సంకేతపదం"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "సంకేపదపు నిర్ధారణ"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "ఇందాక ఇచ్చిన అనుమతిపదం మళ్ళీ ఇవ్వండి పరిశీలన కోసము"
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "ఈ ఖాతా అచేతనమైనది"
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "కొత్త సంకేతపదం"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "కొత్త సంకేతపదపు నిర్ధారణ"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-
-#: forms.py:290
-msgid "Old password"
-msgstr "పాత సంకేతపదం"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "సంకేతపదం (మళ్ళీ)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "పేరు"
-
-#: models.py:74
-msgid "codename"
-msgstr "సంహితనామము"
-
-#: models.py:78
-msgid "permission"
-msgstr "అనుమతి"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "అనుమతులు"
-
-#: models.py:128
-msgid "group"
-msgstr "గుంపు"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "గుంపులు"
-
-#: models.py:200
-msgid "password"
-msgstr "సంకేతపదం"
-
-#: models.py:201
-msgid "last login"
-msgstr "చివరి ప్రవేశం"
-
-#: models.py:291
-msgid "superuser status"
-msgstr ""
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr "వాడుకరి అనుమతులు"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "వాడుకరిపేరు"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "మొదటి పేరు"
-
-#: models.py:373
-msgid "last name"
-msgstr "ఇంటి పేరు"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "ఉద్యోగస్తుల స్థితి"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-
-#: models.py:378
-msgid "active"
-msgstr "క్రియాశీలం"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-
-#: models.py:381
-msgid "date joined"
-msgstr "చేరిన తేదీ"
-
-#: models.py:389
-msgid "user"
-msgstr "వాడుకరి"
-
-#: models.py:390
-msgid "users"
-msgstr "వాడుకరులు"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "నిష్క్రమించారు"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/th/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/th/LC_MESSAGES/django.mo
deleted file mode 100644
index 5c9828f..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/th/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/th/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/th/LC_MESSAGES/django.po
deleted file mode 100644
index 4b8705e..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/th/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,275 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/"
-"th/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: th\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "ข้อมูลส่วนตัว"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "สิทธิ์"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "วันที่ที่สำคัญ"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "เปลี่ยนรหัสผ่านสำเร็จแล้ว"
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "เปลี่ยนรหัสผ่าน: %s "
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "ไม่ได้ตั้งค่ารหัสผ่าน"
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "รูปแบบรหัสผ่านไม่ถูกต้อง หรือไม่รู้จักแฮชอัลกอริทึมนี้"
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "ชื่อผู้ใช้นั้นได้ถูกใช้ไปแล้ว"
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "รหัสผ่านไม่ตรงกัน"
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "ชื่อผู้ใช้"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"จำเป็น ต้องการไม่เกิน 30 ตัวอักษร ต้องเป็นตัวอักษรตัวเลขและเครื่องหมาย @/./+/-/_ เท่านั้น"
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "ค่านี้ต้องเป็นตัวอักษรตัวเลขและเครื่องหมาย @/./+/-/_ เท่านั้น"
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "รหัสผ่าน"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "ยืนยันรหัสผ่าน"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "ใส่รหัสผ่านเหมือนด้านบน เพื่อตรวจสอบความถูกต้อง"
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"รหัสผ่านที่ดิบจะไม่เก็บไว้ เพื่อไม่ให้มีวิธีการดูรหัสผ่านของผู้ใช้นี้ แต่คุณสามารถเปลี่ยนรหัสผ่านโดยใช้ <a "
-"href=\"password/\">แบบฟอร์มนี้</a> ."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr "กรุณาใส่ %(username)s และรหัสผ่านที่ถูกต้อง มีการแยกแยะตัวพิมพ์ใหญ่-เล็ก"
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "บัญชีนี้ไม่ทำงาน"
-
-#: forms.py:206
-msgid "Email"
-msgstr "อีเมล"
-
-#: forms.py:256
-msgid "New password"
-msgstr "รหัสผ่านใหม่"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "ยืนยันการตั้งรหัสผ่านใหม่"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "ใส่รหัสผ่านเก่าผิด กรุณาใส่รหัสผ่านอีกครั้ง"
-
-#: forms.py:290
-msgid "Old password"
-msgstr "รหัสผ่านเก่า"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "รหัสผ่าน (อีกครั้ง)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algorithm"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iterations"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "salt"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "ปัจจัยการทำงาน"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "checksum"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "ชื่อ"
-
-#: models.py:74
-msgid "codename"
-msgstr "รหัสชื่อ"
-
-#: models.py:78
-msgid "permission"
-msgstr "สิทธิ์"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "สิทธิ์"
-
-#: models.py:128
-msgid "group"
-msgstr "กลุ่ม"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "กลุ่ม"
-
-#: models.py:200
-msgid "password"
-msgstr "รหัสผ่าน"
-
-#: models.py:201
-msgid "last login"
-msgstr "เข้าสู่ระบบครั้งสุดท้าย"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "สถานะผู้ใช้พิเศษ"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "กำหนดสิทธิ์ทุกอย่างให้ผู้ใช้ โดยไม่ต้องการมอบหมายอย่างเป็นทางการ"
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr "กลุ่มที่ผู้ใช้อยู่ ผู้ใช้จะได้รับสิทธิ์ทั้งหมดที่กลุ่มของเขาได้รับ"
-
-#: models.py:299
-msgid "user permissions"
-msgstr "สิทธิ์ของผู้ใช้"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "ชื่อผู้ใช้"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "จำเป็น ต้องการไม่เกิน 30 ตัวอักษร ต้องเป็นตัวอักษรตัวเลขและตัวอักษร @/./+/-/_"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "กรุณาใส่ชื่อผู้ใช้ที่ถูกต้อง"
-
-#: models.py:372
-msgid "first name"
-msgstr "ชื่อ"
-
-#: models.py:373
-msgid "last name"
-msgstr "นามสกุล"
-
-#: models.py:374
-msgid "email address"
-msgstr "ที่อยู่อีเมล"
-
-#: models.py:375
-msgid "staff status"
-msgstr "สถานะของพนักงาน"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "กำหนดผู้ที่จะเข้ามาใช้งานในส่วนของผู้ดูแลระบบ"
-
-#: models.py:378
-msgid "active"
-msgstr "ใช้งานได้"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr "กำหนดให้ผู้ใช้มีสถานะที่สามารถเข้ามาใช้งานได้ เลือกออกแทนที่จะลบชื่อผู้ใช้ทิ้งไป "
-
-#: models.py:381
-msgid "date joined"
-msgstr "วันที่เข้าร่วม"
-
-#: models.py:389
-msgid "user"
-msgstr "ผู้ใช้"
-
-#: models.py:390
-msgid "users"
-msgstr "ผู้ใช้"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "ออกจากระบบ"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "รีเซ็ตรหัสผ่านบน %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "กรุณาใส่ชื่อผู้ใช้ที่ถูกต้อง"
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/tr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/tr/LC_MESSAGES/django.mo
deleted file mode 100644
index 5a08840..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/tr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/tr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/tr/LC_MESSAGES/django.po
deleted file mode 100644
index c944510..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/tr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,293 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ahmet Emre Aladağ <emre.aladag@isik.edu.tr>, 2013
-# Caner BAŞARAN <basaran.caner@gmail.com>, 2013
-# Gökmen Görgen <gokmen@alageek.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Metin Amiroff <amiroff@gmail.com>, 2012
-# Murat Çorlu <muratcorlu@gmail.com>, 2012
-# Ozan <uobasar@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-23 15:58+0000\n"
-"Last-Translator: Ahmet Emre Aladağ <emre.aladag@isik.edu.tr>\n"
-"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/"
-"tr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Kişisel bilgiler"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "İzinler"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Önemli tarihler"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Şifre başarı ile değiştirildi."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Şifre değiştir: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Şifre tanımlanmadı."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Yanlış şifre formatı veya bilinmeyen şifreleme algoritması."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Bu isimde bir kullanıcı zaten mevcuttur."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "İki şifre alanı uyuşmuyor."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Kullanıcı adı"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Zorunlu alan. 30 karakter ya da az olmalı. Harf, rakam ve @/./+/-/_ "
-"karakterleri kullanılabilir."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Bu değer sadece harf, rakam ve @/./+/-/_ karakterlerini içerebilir."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Şifre"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Şifre onayı"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Onaylamak için, yukarıdaki şifrenin aynısını girin."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Ham şifreler saklanmadığından kullanıcıların şifrelerini görmenin yolu "
-"yoktur, fakat <a href=\"password/\">buradaki form</a> aracılığıyla şifreyi "
-"değiştirebilirsiniz."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Lütfen %(username)s için geçerli parolayı giriniz. Tüm alanlar büyük/küçük "
-"harfe duyarlıdır."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Bu hesap aktif değil."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Eposta"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Yeni şifre"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Yeni şifre tekrarı"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Eski şifreniz hatalı. Lütfen tekrar girin."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Eski şifre"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Şifre (tekrar)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "algoritma"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "iterasyonlar"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "tuz"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "hash"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "iş faktörü"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "sağlama"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "isim"
-
-#: models.py:74
-msgid "codename"
-msgstr "takma ad"
-
-#: models.py:78
-msgid "permission"
-msgstr "izin"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "izinler"
-
-#: models.py:128
-msgid "group"
-msgstr "grup"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "gruplar"
-
-#: models.py:200
-msgid "password"
-msgstr "şifre"
-
-#: models.py:201
-msgid "last login"
-msgstr "son ziyaret"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "süper kullanıcı"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-"Kullanıcıya ayrı ayrı izin atamasına gerek kalmadan tüm hakların verilip "
-"verilmeyeceğini belirler."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Bu kullanıcının bağlı olduğu gruplar. Bir kullanıcı bağlı bulunduğu gruba "
-"atanan tüm yetkilere sahip olur."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "kullanıcı izinleri"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Bu kullanıcı için belirli izinler"
-
-#: models.py:368
-msgid "username"
-msgstr "kullanıcı adı"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-"Zorunlu alan. 30 karakter ya da az olmalı. Harf, rakam ve @/./+/-/_ "
-"karakterleri kullanılabilir"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Geçerli bir kullanıcı adı giriniz."
-
-#: models.py:372
-msgid "first name"
-msgstr "isim"
-
-#: models.py:373
-msgid "last name"
-msgstr "soyisim"
-
-#: models.py:374
-msgid "email address"
-msgstr "eposta adresi"
-
-#: models.py:375
-msgid "staff status"
-msgstr "yönetici"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Kullanıcının yönetim (admin) paneline girip giremeyeceğini belirler."
-
-#: models.py:378
-msgid "active"
-msgstr "aktif"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Kullanıcının aktif olup olmadığını belirler. Kullanıcı hesabını silmek "
-"yerine bu işareti kaldırın."
-
-#: models.py:381
-msgid "date joined"
-msgstr "kayıt tarihi"
-
-#: models.py:389
-msgid "user"
-msgstr "kullanıcı"
-
-#: models.py:390
-msgid "users"
-msgstr "kullanıcılar"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Çıkış yapıldı"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Parola resetlemesi %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Geçerli bir kullanıcı adı giriniz."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/tt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/tt/LC_MESSAGES/django.mo
deleted file mode 100644
index aa46cd8..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/tt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/tt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/tt/LC_MESSAGES/django.po
deleted file mode 100644
index d083e90..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/tt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,271 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/"
-"tt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tt\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr ""
-
-#: admin.py:42
-msgid "Permissions"
-msgstr ""
-
-#: admin.py:44
-msgid "Important dates"
-msgstr ""
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr ""
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr ""
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr ""
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr ""
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr ""
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Серсүз"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr ""
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Тикшерү өчен шул ук серсүзне яңадан кертегез."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr ""
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "Яңа серсүз"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr ""
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Иске серсүз"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Серсүз (тагын бер тапкыр)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr ""
-
-#: models.py:74
-msgid "codename"
-msgstr ""
-
-#: models.py:78
-msgid "permission"
-msgstr ""
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr ""
-
-#: models.py:128
-msgid "group"
-msgstr ""
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr ""
-
-#: models.py:200
-msgid "password"
-msgstr ""
-
-#: models.py:201
-msgid "last login"
-msgstr ""
-
-#: models.py:291
-msgid "superuser status"
-msgstr ""
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr ""
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr ""
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr ""
-
-#: models.py:373
-msgid "last name"
-msgstr ""
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr ""
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-
-#: models.py:378
-msgid "active"
-msgstr ""
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-
-#: models.py:381
-msgid "date joined"
-msgstr ""
-
-#: models.py:389
-msgid "user"
-msgstr ""
-
-#: models.py:390
-msgid "users"
-msgstr ""
-
-#: views.py:89
-msgid "Logged out"
-msgstr ""
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/uk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/uk/LC_MESSAGES/django.mo
deleted file mode 100644
index 516b49c..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/uk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/uk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/uk/LC_MESSAGES/django.po
deleted file mode 100644
index 3862b26..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/uk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,292 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# michael <qotsaman@gmail.com>, 2012
-# Alex Bolotov <oleksandr.bolotov@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-11-13 12:16+0000\n"
-"Last-Translator: Alex Bolotov <oleksandr.bolotov@gmail.com>\n"
-"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Персональна інформація"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Дозволи"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Важливі дати"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Пароль успішно змінено."
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Змінити пароль: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Пароль не встановлено."
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Невірний формат пароля або невідомий алгоритм хешування."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Користувач з таким ім'ям вже існує."
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Паролі у двох полях не співпадають."
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Користувач"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-"Обов'язкове поле. 30 або менше символів . Тільки букви, цифри, а також "
-"символи: @/./+/-/_"
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-"Значення цього поля може складатися лише з літер, цифр, а також з символів: "
-"@/./+/-/_"
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Пароль"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Підтвердження паролю"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Повторіть пароль для перевірки."
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Паролі не зберігаються у відкритому вигляді, тому не має можливості "
-"переглянути пароль цього користувача, але ви можете змінити пароль за "
-"допомогою <a href=\"password/\">цієї форми</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Будь-ласка введіть правильні %(username)s та пароль. Зауважте, що обидва "
-"поля чутливі до регістру."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Цей запис користувача не активний."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Email"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Новий пароль"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Новий пароль (підтвердження):"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-"Старий пароль було введено неправильно. Будь ласка, введіть його знову."
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Старий пароль"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Пароль (ще раз)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "алгоритм"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "ітерації"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "сіль"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "хеш"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "робочий фактор"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "контрольна сума"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "ім'я"
-
-#: models.py:74
-msgid "codename"
-msgstr "код"
-
-#: models.py:78
-msgid "permission"
-msgstr "дозвіл"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "дозволи"
-
-#: models.py:128
-msgid "group"
-msgstr "група"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "групи"
-
-#: models.py:200
-msgid "password"
-msgstr "пароль"
-
-#: models.py:201
-msgid "last login"
-msgstr "останній вхід"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "статус суперкористувача"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "Визначає, що цей користувач має всі дозволи без їх точного зазначення."
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Групи, до котрих належить користувач. Користувач отримає всі дозволи, що "
-"вказані в кожній з його/її груп."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "дозволи користувача"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr "Специфічні права доступу для цього користувача."
-
-#: models.py:368
-msgid "username"
-msgstr "ім'я користувача"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-" \n"
-"Обов'язкове поле. 30 або менше символів. Тільки букви, цифри, а також "
-"символи: @/./+/-/_"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "Введіть правильне імя користувача."
-
-#: models.py:372
-msgid "first name"
-msgstr "ім'я"
-
-#: models.py:373
-msgid "last name"
-msgstr "прізвище"
-
-#: models.py:374
-msgid "email address"
-msgstr "email адреса"
-
-#: models.py:375
-msgid "staff status"
-msgstr "статус персоналу"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Визначає, чи може користувач увійти до цього сайту адміністрування."
-
-#: models.py:378
-msgid "active"
-msgstr "активний"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-"Визначає, чи можна цього користувача вважати діючим. Заберіть галочку, "
-"замість відалення запису користувача."
-
-#: models.py:381
-msgid "date joined"
-msgstr "дата приєднання"
-
-#: models.py:389
-msgid "user"
-msgstr "користувач"
-
-#: models.py:390
-msgid "users"
-msgstr "користувачі"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Вихід"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "Скидання пароля на %(site_name)s"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "Введіть правильне імя користувача."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ur/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/ur/LC_MESSAGES/django.mo
deleted file mode 100644
index d9f3798..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ur/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/ur/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/ur/LC_MESSAGES/django.po
deleted file mode 100644
index a3418b4..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/ur/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,271 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/"
-"ur/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ur\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr ""
-
-#: admin.py:42
-msgid "Permissions"
-msgstr ""
-
-#: admin.py:44
-msgid "Important dates"
-msgstr ""
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr ""
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr ""
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr ""
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr ""
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr ""
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr ""
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr ""
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr ""
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr ""
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "لفظ اجازت"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr ""
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "توثیق کے لئے ویسا ہی لفظ اجازت درج کریں جیسا اوپر کیا۔"
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr ""
-
-#: forms.py:206
-msgid "Email"
-msgstr ""
-
-#: forms.py:256
-msgid "New password"
-msgstr "نیا لفظ اجازت"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr ""
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr ""
-
-#: forms.py:290
-msgid "Old password"
-msgstr "پرانا لفظ اجازت"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "لفظ اجازت (دوبارہ)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr ""
-
-#: hashers.py:244
-msgid "iterations"
-msgstr ""
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr ""
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr ""
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr ""
-
-#: models.py:74
-msgid "codename"
-msgstr ""
-
-#: models.py:78
-msgid "permission"
-msgstr ""
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr ""
-
-#: models.py:128
-msgid "group"
-msgstr ""
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr ""
-
-#: models.py:200
-msgid "password"
-msgstr ""
-
-#: models.py:201
-msgid "last login"
-msgstr ""
-
-#: models.py:291
-msgid "superuser status"
-msgstr ""
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-
-#: models.py:299
-msgid "user permissions"
-msgstr ""
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr ""
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr ""
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr ""
-
-#: models.py:373
-msgid "last name"
-msgstr ""
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr ""
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr ""
-
-#: models.py:378
-msgid "active"
-msgstr ""
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-
-#: models.py:381
-msgid "date joined"
-msgstr ""
-
-#: models.py:389
-msgid "user"
-msgstr ""
-
-#: models.py:390
-msgid "users"
-msgstr ""
-
-#: views.py:89
-msgid "Logged out"
-msgstr ""
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/vi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/vi/LC_MESSAGES/django.mo
deleted file mode 100644
index f0f271a..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/vi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/vi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/vi/LC_MESSAGES/django.po
deleted file mode 100644
index 5034ef4..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/vi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,282 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# ppanhh <vietnamesel10n@gmail.com>, 2013
-# Tran <hongdiepkien@gmail.com>, 2011
-# Tran Van <vantxm@yahoo.co.uk>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/"
-"language/vi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "Thông tin cá nhân"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "Quyền"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "Những ngày quan trọng"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "Mật khẩu thay đổi thành công"
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "Thay đổi mật khẩu: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "Chưa đặt mật khẩu"
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "Định dạng của mật khẩu không đúng hoặc thuật toán hash chưa rõ ràng."
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "Tên đăng nhập đã được sử dụng"
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "Hai trường mật khẩu không giống nhau"
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "Tên đăng nhập"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "Yêu cầu. 30 ký tự hoặc ít hơn. Chỉ là chữ cái, chữ số và @/./+/-/_."
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "Giá trị này có thể chứa chữ cái, số và ký tự @/./+/-/_."
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "Mật khẩu"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "Xác nhận mật khẩu"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "Nhập dãy mật mã trên để xác minh lại"
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"Mật khẩu ban đầu sẽ không được lưu giữ, vì không có cách nào để có thể xem "
-"được mật khẩu của người dùng này, nhưng bạn có thể thay đổi mật khẩu bằng "
-"cách truy cập <a href=\"password/\">mẫu đơn này</a>."
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr ""
-"Vui lòng điền vào %(username)s và mật khẩu chính xác. Chú ý rằng cả hai "
-"khung thông tin đều phân biệt chữ hoa và chữ thường."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "Tài khoản này chưa được kích hoạt."
-
-#: forms.py:206
-msgid "Email"
-msgstr "Email"
-
-#: forms.py:256
-msgid "New password"
-msgstr "Mật khẩu mới"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "Xác nhận mật khẩu mới"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "Mật khẩu cũ không chính xác. Hãy nhập lại lần nữa"
-
-#: forms.py:290
-msgid "Old password"
-msgstr "Mật khẩu cũ"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "Nhập lại mật khẩu"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "thuật toán"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "lặp lại"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr ""
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "băm"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr ""
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "kiểm tra"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "Tên"
-
-#: models.py:74
-msgid "codename"
-msgstr "tên mã"
-
-#: models.py:78
-msgid "permission"
-msgstr "cho phép"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "cho phép"
-
-#: models.py:128
-msgid "group"
-msgstr "Nhóm"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "Các nhóm"
-
-#: models.py:200
-msgid "password"
-msgstr "Mật khẩu"
-
-#: models.py:201
-msgid "last login"
-msgstr "Lần cuối đăng nhập"
-
-#: models.py:291
-msgid "superuser status"
-msgstr ""
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr ""
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr ""
-"Các nhóm người dùng này thuộc về. Người dùng sẽ nhận được tất cả các quyền "
-"được cấp cho mỗi nhóm của mình."
-
-#: models.py:299
-msgid "user permissions"
-msgstr "quyền của người sử dụng"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "Tên đăng nhập"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "Yêu cầu. 30 ký tự hoặc ít hơn. Chữ cái, số và ký tự @/./+/-/_"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr ""
-
-#: models.py:372
-msgid "first name"
-msgstr "Tên"
-
-#: models.py:373
-msgid "last name"
-msgstr "Họ"
-
-#: models.py:374
-msgid "email address"
-msgstr ""
-
-#: models.py:375
-msgid "staff status"
-msgstr "tình trạng nhân viên"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "Chỉ định người dùng nào được phép truy cập vào trang admin."
-
-#: models.py:378
-msgid "active"
-msgstr "Kích hoạt"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr ""
-
-#: models.py:381
-msgid "date joined"
-msgstr "Ngày tham gia"
-
-#: models.py:389
-msgid "user"
-msgstr "Người dùng"
-
-#: models.py:390
-msgid "users"
-msgstr "người sử dụng"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "Đã thoát"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr ""
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/zh_CN/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/zh_CN/LC_MESSAGES/django.mo
deleted file mode 100644
index 0a91b43..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/zh_CN/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/zh_CN/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/zh_CN/LC_MESSAGES/django.po
deleted file mode 100644
index c2c6a26..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/zh_CN/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,278 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Lele Long <schemacs@gmail.com>, 2011
-# pylemon <leeway1985@gmail.com>, 2012-2013
-# Ziang Song <songziang@gmail.com>, 2011
-# Kevin Shi <leiarix@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "个人信息"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "权限"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "重要日期"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "密码修改成功。"
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "修改密码:%s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "密码未设置。"
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "不可用的密码格式或未知的哈希算法。"
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "已存在一位使用该名字的用户。"
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "两个密码字段不一致。"
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "用户名"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "必填。不多于30个字符。只能用字母、数字和字符 @/./+/-/_ 。"
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "该值只能包含字母、数字和字符@/./+/-/_ 。"
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "密码"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "密码确认"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "为了校验,输入与上面相同的密码。"
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"原始密码不会存储到数据库,因此没有办法看到这个用户的密码,但您可以使用<a "
-"href=\"password/\">这个表单</a>来更改密码。"
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr "请输入一个正确的 %(username)s 和密码. 注意他们都是大区分大小写的."
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "该帐号未激活。"
-
-#: forms.py:206
-msgid "Email"
-msgstr "电子邮件"
-
-#: forms.py:256
-msgid "New password"
-msgstr "新密码"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "新密码确认"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "你的旧密码不正确。请重新输入。"
-
-#: forms.py:290
-msgid "Old password"
-msgstr "旧密码"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "密码(重复)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "算法"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "迭代次数"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "盐"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "哈希"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "加密因子"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "校验和"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "名称"
-
-#: models.py:74
-msgid "codename"
-msgstr "代码名称"
-
-#: models.py:78
-msgid "permission"
-msgstr "权限"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "权限"
-
-#: models.py:128
-msgid "group"
-msgstr "组"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "组"
-
-#: models.py:200
-msgid "password"
-msgstr "密码"
-
-#: models.py:201
-msgid "last login"
-msgstr "上次登录"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "超级用户状态"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "指明该用户缺省拥有所有权限。"
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr "这个用户所属的组。一个用户将得到他/她所在的每一个组的所有权限。"
-
-#: models.py:299
-msgid "user permissions"
-msgstr "用户权限"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "用户名"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "必填。不多于30个字符。只能用字母、数字和字符 @/./+/-/_ 。"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "输入一个可用的用户名"
-
-#: models.py:372
-msgid "first name"
-msgstr "名字"
-
-#: models.py:373
-msgid "last name"
-msgstr "姓氏"
-
-#: models.py:374
-msgid "email address"
-msgstr "电子邮件地址"
-
-#: models.py:375
-msgid "staff status"
-msgstr "职员状态"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "指明用户是否可以登录到这个管理站点。"
-
-#: models.py:378
-msgid "active"
-msgstr "有效"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr "指明用户是否被认为活跃的。以反选代替删除帐号。"
-
-#: models.py:381
-msgid "date joined"
-msgstr "加入日期"
-
-#: models.py:389
-msgid "user"
-msgstr "用户"
-
-#: models.py:390
-msgid "users"
-msgstr "用户"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "退出登录"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "重置 %(site_name)s 的密码"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "输入一个合法的Email地址."
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/zh_TW/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/auth/locale/zh_TW/LC_MESSAGES/django.mo
deleted file mode 100644
index ac4afde..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/zh_TW/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/auth/locale/zh_TW/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/auth/locale/zh_TW/LC_MESSAGES/django.po
deleted file mode 100644
index c3f80aa..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/locale/zh_TW/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,278 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# ilay <ilay@ilay.tw>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# tcc <tcchou@tcchou.org>, 2011
-# yyc1217 <yyc1217@gmail.com>, 2013
-# yyc1217 <yyc1217@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-10-09 20:17+0200\n"
-"PO-Revision-Date: 2013-10-10 08:45+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/"
-"language/zh_TW/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_TW\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:41
-msgid "Personal info"
-msgstr "個人資訊"
-
-#: admin.py:42
-msgid "Permissions"
-msgstr "權限"
-
-#: admin.py:44
-msgid "Important dates"
-msgstr "重要日期"
-
-#: admin.py:132
-msgid "Password changed successfully."
-msgstr "密碼修改成功"
-
-#: admin.py:142
-#, python-format
-msgid "Change password: %s"
-msgstr "修改密碼: %s"
-
-#: forms.py:33 tests/test_forms.py:261 tests/test_forms.py:266
-#: tests/test_forms.py:407
-msgid "No password set."
-msgstr "無設定密碼。"
-
-#: forms.py:39 tests/test_forms.py:271 tests/test_forms.py:277
-msgid "Invalid password format or unknown hashing algorithm."
-msgstr "無效的密碼格式或不知名的雜湊演算法。"
-
-#: forms.py:72
-msgid "A user with that username already exists."
-msgstr "一個相同名稱的使用者已經存在。"
-
-#: forms.py:73 forms.py:254 forms.py:314
-msgid "The two password fields didn't match."
-msgstr "兩個密碼欄位不相符。"
-
-#: forms.py:75 forms.py:120
-msgid "Username"
-msgstr "使用者名稱"
-
-#: forms.py:77 forms.py:121
-msgid "Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only."
-msgstr "必要的。30 個字或更少, 只包含字母、數字和 @/./+/-/_。"
-
-#: forms.py:80 forms.py:124
-msgid "This value may contain only letters, numbers and @/./+/-/_ characters."
-msgstr "這資料值只能包含字母、數字和 @/./+/-/_ 字元。"
-
-#: forms.py:82 forms.py:126 forms.py:153 forms.py:316
-msgid "Password"
-msgstr "密碼"
-
-#: forms.py:84
-msgid "Password confirmation"
-msgstr "密碼確認"
-
-#: forms.py:86
-msgid "Enter the same password as above, for verification."
-msgstr "為檢查用,請輸入與上面相同的密碼。"
-
-#: forms.py:127
-msgid ""
-"Raw passwords are not stored, so there is no way to see this user's "
-"password, but you can change the password using <a href=\"password/\">this "
-"form</a>."
-msgstr ""
-"原始密碼尚未儲存,因此無法存取此帳號的密碼,但你可以透過<a href=\"password/"
-"\">這個表單</a>來變更密碼。"
-
-#: forms.py:156
-#, python-format
-msgid ""
-"Please enter a correct %(username)s and password. Note that both fields may "
-"be case-sensitive."
-msgstr "輸入正確的 %(username)s 和密碼。請注意兩者皆區分大小寫。"
-
-#: forms.py:158
-msgid "This account is inactive."
-msgstr "這個帳戶未啟用"
-
-#: forms.py:206
-msgid "Email"
-msgstr "電子信箱"
-
-#: forms.py:256
-msgid "New password"
-msgstr "新密碼"
-
-#: forms.py:258
-msgid "New password confirmation"
-msgstr "新密碼確認"
-
-#: forms.py:287
-msgid "Your old password was entered incorrectly. Please enter it again."
-msgstr "你的舊密碼不正確。請重新輸入。"
-
-#: forms.py:290
-msgid "Old password"
-msgstr "舊密碼"
-
-#: forms.py:318
-msgid "Password (again)"
-msgstr "密碼(重複)"
-
-#: hashers.py:243 hashers.py:317 hashers.py:365 hashers.py:393 hashers.py:426
-#: hashers.py:459 hashers.py:493
-msgid "algorithm"
-msgstr "演算法"
-
-#: hashers.py:244
-msgid "iterations"
-msgstr "迭代"
-
-#: hashers.py:245 hashers.py:319 hashers.py:366 hashers.py:394 hashers.py:494
-msgid "salt"
-msgstr "隨機值"
-
-#: hashers.py:246 hashers.py:367 hashers.py:395 hashers.py:427 hashers.py:460
-#: hashers.py:495
-msgid "hash"
-msgstr "哈希碼"
-
-#: hashers.py:318
-msgid "work factor"
-msgstr "作用因素"
-
-#: hashers.py:320
-msgid "checksum"
-msgstr "校驗"
-
-#: models.py:72 models.py:121
-msgid "name"
-msgstr "名稱"
-
-#: models.py:74
-msgid "codename"
-msgstr "代碼"
-
-#: models.py:78
-msgid "permission"
-msgstr "權限"
-
-#: models.py:79 models.py:123
-msgid "permissions"
-msgstr "權限"
-
-#: models.py:128
-msgid "group"
-msgstr "群組"
-
-#: models.py:129 models.py:294
-msgid "groups"
-msgstr "群組"
-
-#: models.py:200
-msgid "password"
-msgstr "密碼"
-
-#: models.py:201
-msgid "last login"
-msgstr "上次登入"
-
-#: models.py:291
-msgid "superuser status"
-msgstr "超級使用者狀態"
-
-#: models.py:292
-msgid ""
-"Designates that this user has all permissions without explicitly assigning "
-"them."
-msgstr "指定是否使用者可以登入到這個管理網站"
-
-#: models.py:295
-msgid ""
-"The groups this user belongs to. A user will get all permissions granted to "
-"each of his/her group."
-msgstr "此為帳號可加入的群組。其所屬的群組將授予該帳號對應的權限。"
-
-#: models.py:299
-msgid "user permissions"
-msgstr "使用者權限"
-
-#: models.py:301
-msgid "Specific permissions for this user."
-msgstr ""
-
-#: models.py:368
-msgid "username"
-msgstr "使用者名稱"
-
-#: models.py:367
-msgid ""
-"Required. 30 characters or fewer. Letters, numbers and @/./+/-/_ characters"
-msgstr "必要的。30 個字或更少, 只包含字母、數字和 @/./+/-/_。"
-
-#: models.py:370
-msgid "Enter a valid username."
-msgstr "輸入有效帳號。"
-
-#: models.py:372
-msgid "first name"
-msgstr "名字"
-
-#: models.py:373
-msgid "last name"
-msgstr "姓氏"
-
-#: models.py:374
-msgid "email address"
-msgstr "電子信箱"
-
-#: models.py:375
-msgid "staff status"
-msgstr "工作人員狀態"
-
-#: models.py:376
-msgid "Designates whether the user can log into this admin site."
-msgstr "指定是否使用者可以登入此管理網站。"
-
-#: models.py:378
-msgid "active"
-msgstr "有效"
-
-#: models.py:379
-msgid ""
-"Designates whether this user should be treated as active. Unselect this "
-"instead of deleting accounts."
-msgstr "指定使用者是否有效。請取消選擇而不是刪除帳號。"
-
-#: models.py:381
-msgid "date joined"
-msgstr "加入日期"
-
-#: models.py:389
-msgid "user"
-msgstr "使用者"
-
-#: models.py:390
-msgid "users"
-msgstr "使用者"
-
-#: views.py:89
-msgid "Logged out"
-msgstr "登出"
-
-#: templates/registration/password_reset_subject.txt:2
-#, python-format
-msgid "Password reset on %(site_name)s"
-msgstr "在 %(site_name)s 進行密碼重置"
-
-#: tests/test_forms.py:325
-msgid "Enter a valid email address."
-msgstr "輸入有效的電子郵件地址。"
diff --git a/lib/python2.7/site-packages/django/contrib/auth/management/__init__.py b/lib/python2.7/site-packages/django/contrib/auth/management/__init__.py
deleted file mode 100644
index 7b0f5ad..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/management/__init__.py
+++ /dev/null
@@ -1,193 +0,0 @@
-"""
-Creates permissions for all installed apps that need permissions.
-"""
-from __future__ import unicode_literals
-
-import getpass
-import unicodedata
-
-from django.contrib.auth import (models as auth_app, get_permission_codename,
- get_user_model)
-from django.core import exceptions
-from django.core.management.base import CommandError
-from django.db import DEFAULT_DB_ALIAS, router
-from django.db.models import get_model, get_models, signals, UnavailableApp
-from django.utils.encoding import DEFAULT_LOCALE_ENCODING
-from django.utils import six
-from django.utils.six.moves import input
-
-
-def _get_all_permissions(opts, ctype):
- """
- Returns (codename, name) for all permissions in the given opts.
- """
- builtin = _get_builtin_permissions(opts)
- custom = list(opts.permissions)
- _check_permission_clashing(custom, builtin, ctype)
- return builtin + custom
-
-
-def _get_builtin_permissions(opts):
- """
- Returns (codename, name) for all autogenerated permissions.
- """
- perms = []
- for action in ('add', 'change', 'delete'):
- perms.append((get_permission_codename(action, opts),
- 'Can %s %s' % (action, opts.verbose_name_raw)))
- return perms
-
-
-def _check_permission_clashing(custom, builtin, ctype):
- """
- Check that permissions for a model do not clash. Raises CommandError if
- there are duplicate permissions.
- """
- pool = set()
- builtin_codenames = set(p[0] for p in builtin)
- for codename, _name in custom:
- if codename in pool:
- raise CommandError(
- "The permission codename '%s' is duplicated for model '%s.%s'." %
- (codename, ctype.app_label, ctype.model_class().__name__))
- elif codename in builtin_codenames:
- raise CommandError(
- "The permission codename '%s' clashes with a builtin permission "
- "for model '%s.%s'." %
- (codename, ctype.app_label, ctype.model_class().__name__))
- pool.add(codename)
-
-
-def create_permissions(app, created_models, verbosity, db=DEFAULT_DB_ALIAS, **kwargs):
- try:
- get_model('auth', 'Permission')
- except UnavailableApp:
- return
-
- if not router.allow_syncdb(db, auth_app.Permission):
- return
-
- from django.contrib.contenttypes.models import ContentType
-
- app_models = get_models(app)
-
- # This will hold the permissions we're looking for as
- # (content_type, (codename, name))
- searched_perms = list()
- # The codenames and ctypes that should exist.
- ctypes = set()
- for klass in app_models:
- # Force looking up the content types in the current database
- # before creating foreign keys to them.
- ctype = ContentType.objects.db_manager(db).get_for_model(klass)
- ctypes.add(ctype)
- for perm in _get_all_permissions(klass._meta, ctype):
- searched_perms.append((ctype, perm))
-
- # Find all the Permissions that have a content_type for a model we're
- # looking for. We don't need to check for codenames since we already have
- # a list of the ones we're going to create.
- all_perms = set(auth_app.Permission.objects.using(db).filter(
- content_type__in=ctypes,
- ).values_list(
- "content_type", "codename"
- ))
-
- perms = [
- auth_app.Permission(codename=codename, name=name, content_type=ctype)
- for ctype, (codename, name) in searched_perms
- if (ctype.pk, codename) not in all_perms
- ]
- auth_app.Permission.objects.using(db).bulk_create(perms)
- if verbosity >= 2:
- for perm in perms:
- print("Adding permission '%s'" % perm)
-
-
-def create_superuser(app, created_models, verbosity, db, **kwargs):
- try:
- get_model('auth', 'Permission')
- UserModel = get_user_model()
- except UnavailableApp:
- return
-
- from django.core.management import call_command
-
- if UserModel in created_models and kwargs.get('interactive', True):
- msg = ("\nYou just installed Django's auth system, which means you "
- "don't have any superusers defined.\nWould you like to create one "
- "now? (yes/no): ")
- confirm = input(msg)
- while 1:
- if confirm not in ('yes', 'no'):
- confirm = input('Please enter either "yes" or "no": ')
- continue
- if confirm == 'yes':
- call_command("createsuperuser", interactive=True, database=db)
- break
-
-
-def get_system_username():
- """
- Try to determine the current system user's username.
-
- :returns: The username as a unicode string, or an empty string if the
- username could not be determined.
- """
- try:
- result = getpass.getuser()
- except (ImportError, KeyError):
- # KeyError will be raised by os.getpwuid() (called by getuser())
- # if there is no corresponding entry in the /etc/passwd file
- # (a very restricted chroot environment, for example).
- return ''
- if six.PY2:
- try:
- result = result.decode(DEFAULT_LOCALE_ENCODING)
- except UnicodeDecodeError:
- # UnicodeDecodeError - preventive treatment for non-latin Windows.
- return ''
- return result
-
-
-def get_default_username(check_db=True):
- """
- Try to determine the current system user's username to use as a default.
-
- :param check_db: If ``True``, requires that the username does not match an
- existing ``auth.User`` (otherwise returns an empty string).
- :returns: The username, or an empty string if no username can be
- determined.
- """
- # If the User model has been swapped out, we can't make any assumptions
- # about the default user name.
- if auth_app.User._meta.swapped:
- return ''
-
- default_username = get_system_username()
- try:
- default_username = unicodedata.normalize('NFKD', default_username)\
- .encode('ascii', 'ignore').decode('ascii').replace(' ', '').lower()
- except UnicodeDecodeError:
- return ''
-
- # Run the username validator
- try:
- auth_app.User._meta.get_field('username').run_validators(default_username)
- except exceptions.ValidationError:
- return ''
-
- # Don't return the default username if it is already taken.
- if check_db and default_username:
- try:
- auth_app.User._default_manager.get(username=default_username)
- except auth_app.User.DoesNotExist:
- pass
- else:
- return ''
- return default_username
-
-signals.post_syncdb.connect(create_permissions,
- dispatch_uid="django.contrib.auth.management.create_permissions")
-signals.post_syncdb.connect(create_superuser,
- sender=auth_app, dispatch_uid="django.contrib.auth.management.create_superuser")
diff --git a/lib/python2.7/site-packages/django/contrib/auth/management/commands/__init__.py b/lib/python2.7/site-packages/django/contrib/auth/management/commands/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/management/commands/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/auth/management/commands/changepassword.py b/lib/python2.7/site-packages/django/contrib/auth/management/commands/changepassword.py
deleted file mode 100644
index ad1c784..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/management/commands/changepassword.py
+++ /dev/null
@@ -1,63 +0,0 @@
-from __future__ import unicode_literals
-
-import getpass
-from optparse import make_option
-
-from django.contrib.auth import get_user_model
-from django.core.management.base import BaseCommand, CommandError
-from django.db import DEFAULT_DB_ALIAS
-from django.utils.encoding import force_str
-
-
-class Command(BaseCommand):
- option_list = BaseCommand.option_list + (
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Specifies the database to use. Default is "default".'),
- )
- help = "Change a user's password for django.contrib.auth."
-
- requires_model_validation = False
-
- def _get_pass(self, prompt="Password: "):
- p = getpass.getpass(prompt=force_str(prompt))
- if not p:
- raise CommandError("aborted")
- return p
-
- def handle(self, *args, **options):
- if len(args) > 1:
- raise CommandError("need exactly one or zero arguments for username")
-
- if args:
- username, = args
- else:
- username = getpass.getuser()
-
- UserModel = get_user_model()
-
- try:
- u = UserModel._default_manager.using(options.get('database')).get(**{
- UserModel.USERNAME_FIELD: username
- })
- except UserModel.DoesNotExist:
- raise CommandError("user '%s' does not exist" % username)
-
- self.stdout.write("Changing password for user '%s'\n" % u)
-
- MAX_TRIES = 3
- count = 0
- p1, p2 = 1, 2 # To make them initially mismatch.
- while p1 != p2 and count < MAX_TRIES:
- p1 = self._get_pass()
- p2 = self._get_pass("Password (again): ")
- if p1 != p2:
- self.stdout.write("Passwords do not match. Please try again.\n")
- count = count + 1
-
- if count == MAX_TRIES:
- raise CommandError("Aborting password change for user '%s' after %s attempts" % (u, count))
-
- u.set_password(p1)
- u.save()
-
- return "Password changed successfully for user '%s'" % u
diff --git a/lib/python2.7/site-packages/django/contrib/auth/management/commands/createsuperuser.py b/lib/python2.7/site-packages/django/contrib/auth/management/commands/createsuperuser.py
deleted file mode 100644
index ac2835d..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/management/commands/createsuperuser.py
+++ /dev/null
@@ -1,143 +0,0 @@
-"""
-Management utility to create superusers.
-"""
-from __future__ import unicode_literals
-
-import getpass
-import sys
-from optparse import make_option
-
-from django.contrib.auth import get_user_model
-from django.contrib.auth.management import get_default_username
-from django.core import exceptions
-from django.core.management.base import BaseCommand, CommandError
-from django.db import DEFAULT_DB_ALIAS
-from django.utils.encoding import force_str
-from django.utils.six.moves import input
-from django.utils.text import capfirst
-
-
-class Command(BaseCommand):
-
- def __init__(self, *args, **kwargs):
- # Options are defined in an __init__ method to support swapping out
- # custom user models in tests.
- super(Command, self).__init__(*args, **kwargs)
- self.UserModel = get_user_model()
- self.username_field = self.UserModel._meta.get_field(self.UserModel.USERNAME_FIELD)
-
- self.option_list = BaseCommand.option_list + (
- make_option('--%s' % self.UserModel.USERNAME_FIELD, dest=self.UserModel.USERNAME_FIELD, default=None,
- help='Specifies the login for the superuser.'),
- make_option('--noinput', action='store_false', dest='interactive', default=True,
- help=('Tells Django to NOT prompt the user for input of any kind. '
- 'You must use --%s with --noinput, along with an option for '
- 'any other required field. Superusers created with --noinput will '
- ' not be able to log in until they\'re given a valid password.' %
- self.UserModel.USERNAME_FIELD)),
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Specifies the database to use. Default is "default".'),
- ) + tuple(
- make_option('--%s' % field, dest=field, default=None,
- help='Specifies the %s for the superuser.' % field)
- for field in self.UserModel.REQUIRED_FIELDS
- )
-
- option_list = BaseCommand.option_list
- help = 'Used to create a superuser.'
-
- def handle(self, *args, **options):
- username = options.get(self.UserModel.USERNAME_FIELD, None)
- interactive = options.get('interactive')
- verbosity = int(options.get('verbosity', 1))
- database = options.get('database')
-
- # If not provided, create the user with an unusable password
- password = None
- user_data = {}
-
- # Do quick and dirty validation if --noinput
- if not interactive:
- try:
- if not username:
- raise CommandError("You must use --%s with --noinput." %
- self.UserModel.USERNAME_FIELD)
- username = self.username_field.clean(username, None)
-
- for field_name in self.UserModel.REQUIRED_FIELDS:
- if options.get(field_name):
- field = self.UserModel._meta.get_field(field_name)
- user_data[field_name] = field.clean(options[field_name], None)
- else:
- raise CommandError("You must use --%s with --noinput." % field_name)
- except exceptions.ValidationError as e:
- raise CommandError('; '.join(e.messages))
-
- else:
- # Prompt for username/password, and any other required fields.
- # Enclose this whole thing in a try/except to trap for a
- # keyboard interrupt and exit gracefully.
- default_username = get_default_username()
- try:
-
- # Get a username
- verbose_field_name = self.username_field.verbose_name
- while username is None:
- if not username:
- input_msg = capfirst(verbose_field_name)
- if default_username:
- input_msg = "%s (leave blank to use '%s')" % (
- input_msg, default_username)
- raw_value = input(force_str('%s: ' % input_msg))
-
- if default_username and raw_value == '':
- raw_value = default_username
- try:
- username = self.username_field.clean(raw_value, None)
- except exceptions.ValidationError as e:
- self.stderr.write("Error: %s" % '; '.join(e.messages))
- username = None
- continue
- try:
- self.UserModel._default_manager.db_manager(database).get_by_natural_key(username)
- except self.UserModel.DoesNotExist:
- pass
- else:
- self.stderr.write("Error: That %s is already taken." %
- verbose_field_name)
- username = None
-
- for field_name in self.UserModel.REQUIRED_FIELDS:
- field = self.UserModel._meta.get_field(field_name)
- user_data[field_name] = options.get(field_name)
- while user_data[field_name] is None:
- raw_value = input(force_str('%s: ' % capfirst(field.verbose_name)))
- try:
- user_data[field_name] = field.clean(raw_value, None)
- except exceptions.ValidationError as e:
- self.stderr.write("Error: %s" % '; '.join(e.messages))
- user_data[field_name] = None
-
- # Get a password
- while password is None:
- if not password:
- password = getpass.getpass()
- password2 = getpass.getpass(force_str('Password (again): '))
- if password != password2:
- self.stderr.write("Error: Your passwords didn't match.")
- password = None
- continue
- if password.strip() == '':
- self.stderr.write("Error: Blank passwords aren't allowed.")
- password = None
- continue
-
- except KeyboardInterrupt:
- self.stderr.write("\nOperation cancelled.")
- sys.exit(1)
-
- user_data[self.UserModel.USERNAME_FIELD] = username
- user_data['password'] = password
- self.UserModel._default_manager.db_manager(database).create_superuser(**user_data)
- if verbosity >= 1:
- self.stdout.write("Superuser created successfully.")
diff --git a/lib/python2.7/site-packages/django/contrib/auth/middleware.py b/lib/python2.7/site-packages/django/contrib/auth/middleware.py
deleted file mode 100644
index f38efdd..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/middleware.py
+++ /dev/null
@@ -1,91 +0,0 @@
-from django.contrib import auth
-from django.contrib.auth import load_backend
-from django.contrib.auth.backends import RemoteUserBackend
-from django.core.exceptions import ImproperlyConfigured
-from django.utils.functional import SimpleLazyObject
-
-
-def get_user(request):
- if not hasattr(request, '_cached_user'):
- request._cached_user = auth.get_user(request)
- return request._cached_user
-
-
-class AuthenticationMiddleware(object):
- def process_request(self, request):
- assert hasattr(request, 'session'), "The Django authentication middleware requires session middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.sessions.middleware.SessionMiddleware'."
-
- request.user = SimpleLazyObject(lambda: get_user(request))
-
-
-class RemoteUserMiddleware(object):
- """
- Middleware for utilizing Web-server-provided authentication.
-
- If request.user is not authenticated, then this middleware attempts to
- authenticate the username passed in the ``REMOTE_USER`` request header.
- If authentication is successful, the user is automatically logged in to
- persist the user in the session.
-
- The header used is configurable and defaults to ``REMOTE_USER``. Subclass
- this class and change the ``header`` attribute if you need to use a
- different header.
- """
-
- # Name of request header to grab username from. This will be the key as
- # used in the request.META dictionary, i.e. the normalization of headers to
- # all uppercase and the addition of "HTTP_" prefix apply.
- header = "REMOTE_USER"
-
- def process_request(self, request):
- # AuthenticationMiddleware is required so that request.user exists.
- if not hasattr(request, 'user'):
- raise ImproperlyConfigured(
- "The Django remote user auth middleware requires the"
- " authentication middleware to be installed. Edit your"
- " MIDDLEWARE_CLASSES setting to insert"
- " 'django.contrib.auth.middleware.AuthenticationMiddleware'"
- " before the RemoteUserMiddleware class.")
- try:
- username = request.META[self.header]
- except KeyError:
- # If specified header doesn't exist then remove any existing
- # authenticated remote-user, or return (leaving request.user set to
- # AnonymousUser by the AuthenticationMiddleware).
- if request.user.is_authenticated():
- try:
- stored_backend = load_backend(request.session.get(
- auth.BACKEND_SESSION_KEY, ''))
- if isinstance(stored_backend, RemoteUserBackend):
- auth.logout(request)
- except ImproperlyConfigured as e:
- # backend failed to load
- auth.logout(request)
- return
- # If the user is already authenticated and that user is the user we are
- # getting passed in the headers, then the correct user is already
- # persisted in the session and we don't need to continue.
- if request.user.is_authenticated():
- if request.user.get_username() == self.clean_username(username, request):
- return
- # We are seeing this user for the first time in this session, attempt
- # to authenticate the user.
- user = auth.authenticate(remote_user=username)
- if user:
- # User is valid. Set request.user and persist user in the session
- # by logging the user in.
- request.user = user
- auth.login(request, user)
-
- def clean_username(self, username, request):
- """
- Allows the backend to clean the username, if the backend defines a
- clean_username method.
- """
- backend_str = request.session[auth.BACKEND_SESSION_KEY]
- backend = auth.load_backend(backend_str)
- try:
- username = backend.clean_username(username)
- except AttributeError: # Backend has no clean_username method.
- pass
- return username
diff --git a/lib/python2.7/site-packages/django/contrib/auth/models.py b/lib/python2.7/site-packages/django/contrib/auth/models.py
deleted file mode 100644
index 5153753..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/models.py
+++ /dev/null
@@ -1,527 +0,0 @@
-from __future__ import unicode_literals
-import re
-import warnings
-
-from django.core.exceptions import ImproperlyConfigured
-from django.core.mail import send_mail
-from django.core import validators
-from django.db import models
-from django.db.models.manager import EmptyManager
-from django.utils.crypto import get_random_string
-from django.utils.http import urlquote
-from django.utils import six
-from django.utils.translation import ugettext_lazy as _
-from django.utils import timezone
-
-from django.contrib import auth
-from django.contrib.auth.hashers import (
- check_password, make_password, is_password_usable)
-from django.contrib.auth.signals import user_logged_in
-from django.contrib.contenttypes.models import ContentType
-from django.utils.encoding import python_2_unicode_compatible
-
-
-def update_last_login(sender, user, **kwargs):
- """
- A signal receiver which updates the last_login date for
- the user logging in.
- """
- user.last_login = timezone.now()
- user.save(update_fields=['last_login'])
-user_logged_in.connect(update_last_login)
-
-
-class SiteProfileNotAvailable(Exception):
- pass
-
-
-class PermissionManager(models.Manager):
- def get_by_natural_key(self, codename, app_label, model):
- return self.get(
- codename=codename,
- content_type=ContentType.objects.get_by_natural_key(app_label,
- model),
- )
-
-
-@python_2_unicode_compatible
-class Permission(models.Model):
- """
- The permissions system provides a way to assign permissions to specific
- users and groups of users.
-
- The permission system is used by the Django admin site, but may also be
- useful in your own code. The Django admin site uses permissions as follows:
-
- - The "add" permission limits the user's ability to view the "add" form
- and add an object.
- - The "change" permission limits a user's ability to view the change
- list, view the "change" form and change an object.
- - The "delete" permission limits the ability to delete an object.
-
- Permissions are set globally per type of object, not per specific object
- instance. It is possible to say "Mary may change news stories," but it's
- not currently possible to say "Mary may change news stories, but only the
- ones she created herself" or "Mary may only change news stories that have a
- certain status or publication date."
-
- Three basic permissions -- add, change and delete -- are automatically
- created for each Django model.
- """
- name = models.CharField(_('name'), max_length=50)
- content_type = models.ForeignKey(ContentType)
- codename = models.CharField(_('codename'), max_length=100)
- objects = PermissionManager()
-
- class Meta:
- verbose_name = _('permission')
- verbose_name_plural = _('permissions')
- unique_together = (('content_type', 'codename'),)
- ordering = ('content_type__app_label', 'content_type__model',
- 'codename')
-
- def __str__(self):
- return "%s | %s | %s" % (
- six.text_type(self.content_type.app_label),
- six.text_type(self.content_type),
- six.text_type(self.name))
-
- def natural_key(self):
- return (self.codename,) + self.content_type.natural_key()
- natural_key.dependencies = ['contenttypes.contenttype']
-
-
-class GroupManager(models.Manager):
- """
- The manager for the auth's Group model.
- """
- def get_by_natural_key(self, name):
- return self.get(name=name)
-
-
-@python_2_unicode_compatible
-class Group(models.Model):
- """
- Groups are a generic way of categorizing users to apply permissions, or
- some other label, to those users. A user can belong to any number of
- groups.
-
- A user in a group automatically has all the permissions granted to that
- group. For example, if the group Site editors has the permission
- can_edit_home_page, any user in that group will have that permission.
-
- Beyond permissions, groups are a convenient way to categorize users to
- apply some label, or extended functionality, to them. For example, you
- could create a group 'Special users', and you could write code that would
- do special things to those users -- such as giving them access to a
- members-only portion of your site, or sending them members-only email
- messages.
- """
- name = models.CharField(_('name'), max_length=80, unique=True)
- permissions = models.ManyToManyField(Permission,
- verbose_name=_('permissions'), blank=True)
-
- objects = GroupManager()
-
- class Meta:
- verbose_name = _('group')
- verbose_name_plural = _('groups')
-
- def __str__(self):
- return self.name
-
- def natural_key(self):
- return (self.name,)
-
-
-class BaseUserManager(models.Manager):
-
- @classmethod
- def normalize_email(cls, email):
- """
- Normalize the address by lowercasing the domain part of the email
- address.
- """
- email = email or ''
- try:
- email_name, domain_part = email.strip().rsplit('@', 1)
- except ValueError:
- pass
- else:
- email = '@'.join([email_name, domain_part.lower()])
- return email
-
- def make_random_password(self, length=10,
- allowed_chars='abcdefghjkmnpqrstuvwxyz'
- 'ABCDEFGHJKLMNPQRSTUVWXYZ'
- '23456789'):
- """
- Generates a random password with the given length and given
- allowed_chars. Note that the default value of allowed_chars does not
- have "I" or "O" or letters and digits that look similar -- just to
- avoid confusion.
- """
- return get_random_string(length, allowed_chars)
-
- def get_by_natural_key(self, username):
- return self.get(**{self.model.USERNAME_FIELD: username})
-
-
-class UserManager(BaseUserManager):
-
- def _create_user(self, username, email, password,
- is_staff, is_superuser, **extra_fields):
- """
- Creates and saves a User with the given username, email and password.
- """
- now = timezone.now()
- if not username:
- raise ValueError('The given username must be set')
- email = self.normalize_email(email)
- user = self.model(username=username, email=email,
- is_staff=is_staff, is_active=True,
- is_superuser=is_superuser, last_login=now,
- date_joined=now, **extra_fields)
- user.set_password(password)
- user.save(using=self._db)
- return user
-
- def create_user(self, username, email=None, password=None, **extra_fields):
- return self._create_user(username, email, password, False, False,
- **extra_fields)
-
- def create_superuser(self, username, email, password, **extra_fields):
- return self._create_user(username, email, password, True, True,
- **extra_fields)
-
-
-@python_2_unicode_compatible
-class AbstractBaseUser(models.Model):
- password = models.CharField(_('password'), max_length=128)
- last_login = models.DateTimeField(_('last login'), default=timezone.now)
-
- is_active = True
-
- REQUIRED_FIELDS = []
-
- class Meta:
- abstract = True
-
- def get_username(self):
- "Return the identifying username for this User"
- return getattr(self, self.USERNAME_FIELD)
-
- def __str__(self):
- return self.get_username()
-
- def natural_key(self):
- return (self.get_username(),)
-
- def is_anonymous(self):
- """
- Always returns False. This is a way of comparing User objects to
- anonymous users.
- """
- return False
-
- def is_authenticated(self):
- """
- Always return True. This is a way to tell if the user has been
- authenticated in templates.
- """
- return True
-
- def set_password(self, raw_password):
- self.password = make_password(raw_password)
-
- def check_password(self, raw_password):
- """
- Returns a boolean of whether the raw_password was correct. Handles
- hashing formats behind the scenes.
- """
- def setter(raw_password):
- self.set_password(raw_password)
- self.save(update_fields=["password"])
- return check_password(raw_password, self.password, setter)
-
- def set_unusable_password(self):
- # Sets a value that will never be a valid hash
- self.password = make_password(None)
-
- def has_usable_password(self):
- return is_password_usable(self.password)
-
- def get_full_name(self):
- raise NotImplementedError()
-
- def get_short_name(self):
- raise NotImplementedError()
-
-
-# A few helper functions for common logic between User and AnonymousUser.
-def _user_get_all_permissions(user, obj):
- permissions = set()
- for backend in auth.get_backends():
- if hasattr(backend, "get_all_permissions"):
- permissions.update(backend.get_all_permissions(user, obj))
- return permissions
-
-
-def _user_has_perm(user, perm, obj):
- for backend in auth.get_backends():
- if hasattr(backend, "has_perm"):
- if backend.has_perm(user, perm, obj):
- return True
- return False
-
-
-def _user_has_module_perms(user, app_label):
- for backend in auth.get_backends():
- if hasattr(backend, "has_module_perms"):
- if backend.has_module_perms(user, app_label):
- return True
- return False
-
-
-class PermissionsMixin(models.Model):
- """
- A mixin class that adds the fields and methods necessary to support
- Django's Group and Permission model using the ModelBackend.
- """
- is_superuser = models.BooleanField(_('superuser status'), default=False,
- help_text=_('Designates that this user has all permissions without '
- 'explicitly assigning them.'))
- groups = models.ManyToManyField(Group, verbose_name=_('groups'),
- blank=True, help_text=_('The groups this user belongs to. A user will '
- 'get all permissions granted to each of '
- 'his/her group.'),
- related_name="user_set", related_query_name="user")
- user_permissions = models.ManyToManyField(Permission,
- verbose_name=_('user permissions'), blank=True,
- help_text=_('Specific permissions for this user.'),
- related_name="user_set", related_query_name="user")
-
- class Meta:
- abstract = True
-
- def get_group_permissions(self, obj=None):
- """
- Returns a list of permission strings that this user has through his/her
- groups. This method queries all available auth backends. If an object
- is passed in, only permissions matching this object are returned.
- """
- permissions = set()
- for backend in auth.get_backends():
- if hasattr(backend, "get_group_permissions"):
- permissions.update(backend.get_group_permissions(self, obj))
- return permissions
-
- def get_all_permissions(self, obj=None):
- return _user_get_all_permissions(self, obj)
-
- def has_perm(self, perm, obj=None):
- """
- Returns True if the user has the specified permission. This method
- queries all available auth backends, but returns immediately if any
- backend returns True. Thus, a user who has permission from a single
- auth backend is assumed to have permission in general. If an object is
- provided, permissions for this specific object are checked.
- """
-
- # Active superusers have all permissions.
- if self.is_active and self.is_superuser:
- return True
-
- # Otherwise we need to check the backends.
- return _user_has_perm(self, perm, obj)
-
- def has_perms(self, perm_list, obj=None):
- """
- Returns True if the user has each of the specified permissions. If
- object is passed, it checks if the user has all required perms for this
- object.
- """
- for perm in perm_list:
- if not self.has_perm(perm, obj):
- return False
- return True
-
- def has_module_perms(self, app_label):
- """
- Returns True if the user has any permissions in the given app label.
- Uses pretty much the same logic as has_perm, above.
- """
- # Active superusers have all permissions.
- if self.is_active and self.is_superuser:
- return True
-
- return _user_has_module_perms(self, app_label)
-
-
-class AbstractUser(AbstractBaseUser, PermissionsMixin):
- """
- An abstract base class implementing a fully featured User model with
- admin-compliant permissions.
-
- Username, password and email are required. Other fields are optional.
- """
- username = models.CharField(_('username'), max_length=30, unique=True,
- help_text=_('Required. 30 characters or fewer. Letters, numbers and '
- '@/./+/-/_ characters'),
- validators=[
- validators.RegexValidator(re.compile('^[\w.@+-]+$'), _('Enter a valid username.'), 'invalid')
- ])
- first_name = models.CharField(_('first name'), max_length=30, blank=True)
- last_name = models.CharField(_('last name'), max_length=30, blank=True)
- email = models.EmailField(_('email address'), blank=True)
- is_staff = models.BooleanField(_('staff status'), default=False,
- help_text=_('Designates whether the user can log into this admin '
- 'site.'))
- is_active = models.BooleanField(_('active'), default=True,
- help_text=_('Designates whether this user should be treated as '
- 'active. Unselect this instead of deleting accounts.'))
- date_joined = models.DateTimeField(_('date joined'), default=timezone.now)
-
- objects = UserManager()
-
- USERNAME_FIELD = 'username'
- REQUIRED_FIELDS = ['email']
-
- class Meta:
- verbose_name = _('user')
- verbose_name_plural = _('users')
- abstract = True
-
- def get_absolute_url(self):
- return "/users/%s/" % urlquote(self.username)
-
- def get_full_name(self):
- """
- Returns the first_name plus the last_name, with a space in between.
- """
- full_name = '%s %s' % (self.first_name, self.last_name)
- return full_name.strip()
-
- def get_short_name(self):
- "Returns the short name for the user."
- return self.first_name
-
- def email_user(self, subject, message, from_email=None):
- """
- Sends an email to this User.
- """
- send_mail(subject, message, from_email, [self.email])
-
- def get_profile(self):
- """
- Returns site-specific profile for this user. Raises
- SiteProfileNotAvailable if this site does not allow profiles.
- """
- warnings.warn("The use of AUTH_PROFILE_MODULE to define user profiles has been deprecated.",
- DeprecationWarning, stacklevel=2)
- if not hasattr(self, '_profile_cache'):
- from django.conf import settings
- if not getattr(settings, 'AUTH_PROFILE_MODULE', False):
- raise SiteProfileNotAvailable(
- 'You need to set AUTH_PROFILE_MODULE in your project '
- 'settings')
- try:
- app_label, model_name = settings.AUTH_PROFILE_MODULE.split('.')
- except ValueError:
- raise SiteProfileNotAvailable(
- 'app_label and model_name should be separated by a dot in '
- 'the AUTH_PROFILE_MODULE setting')
- try:
- model = models.get_model(app_label, model_name)
- if model is None:
- raise SiteProfileNotAvailable(
- 'Unable to load the profile model, check '
- 'AUTH_PROFILE_MODULE in your project settings')
- self._profile_cache = model._default_manager.using(
- self._state.db).get(user__id__exact=self.id)
- self._profile_cache.user = self
- except (ImportError, ImproperlyConfigured):
- raise SiteProfileNotAvailable
- return self._profile_cache
-
-
-class User(AbstractUser):
- """
- Users within the Django authentication system are represented by this
- model.
-
- Username, password and email are required. Other fields are optional.
- """
- class Meta(AbstractUser.Meta):
- swappable = 'AUTH_USER_MODEL'
-
-
-@python_2_unicode_compatible
-class AnonymousUser(object):
- id = None
- pk = None
- username = ''
- is_staff = False
- is_active = False
- is_superuser = False
- _groups = EmptyManager(Group)
- _user_permissions = EmptyManager(Permission)
-
- def __init__(self):
- pass
-
- def __str__(self):
- return 'AnonymousUser'
-
- def __eq__(self, other):
- return isinstance(other, self.__class__)
-
- def __ne__(self, other):
- return not self.__eq__(other)
-
- def __hash__(self):
- return 1 # instances always return the same hash value
-
- def save(self):
- raise NotImplementedError
-
- def delete(self):
- raise NotImplementedError
-
- def set_password(self, raw_password):
- raise NotImplementedError
-
- def check_password(self, raw_password):
- raise NotImplementedError
-
- def _get_groups(self):
- return self._groups
- groups = property(_get_groups)
-
- def _get_user_permissions(self):
- return self._user_permissions
- user_permissions = property(_get_user_permissions)
-
- def get_group_permissions(self, obj=None):
- return set()
-
- def get_all_permissions(self, obj=None):
- return _user_get_all_permissions(self, obj=obj)
-
- def has_perm(self, perm, obj=None):
- return _user_has_perm(self, perm, obj=obj)
-
- def has_perms(self, perm_list, obj=None):
- for perm in perm_list:
- if not self.has_perm(perm, obj):
- return False
- return True
-
- def has_module_perms(self, module):
- return _user_has_module_perms(self, module)
-
- def is_anonymous(self):
- return True
-
- def is_authenticated(self):
- return False
diff --git a/lib/python2.7/site-packages/django/contrib/auth/signals.py b/lib/python2.7/site-packages/django/contrib/auth/signals.py
deleted file mode 100644
index 71ab6a1..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/signals.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from django.dispatch import Signal
-
-user_logged_in = Signal(providing_args=['request', 'user'])
-user_login_failed = Signal(providing_args=['credentials'])
-user_logged_out = Signal(providing_args=['request', 'user'])
diff --git a/lib/python2.7/site-packages/django/contrib/auth/templates/registration/password_reset_subject.txt b/lib/python2.7/site-packages/django/contrib/auth/templates/registration/password_reset_subject.txt
deleted file mode 100644
index 45a354b..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/templates/registration/password_reset_subject.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-{% load i18n %}{% autoescape off %}
-{% blocktrans %}Password reset on {{ site_name }}{% endblocktrans %}
-{% endautoescape %} \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/__init__.py b/lib/python2.7/site-packages/django/contrib/auth/tests/__init__.py
deleted file mode 100644
index 2c30864..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# The password for the fixture data users is 'password'
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/custom_user.py b/lib/python2.7/site-packages/django/contrib/auth/tests/custom_user.py
deleted file mode 100644
index 394baa3..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/custom_user.py
+++ /dev/null
@@ -1,200 +0,0 @@
-from django.db import models
-from django.contrib.auth.models import (
- BaseUserManager,
- AbstractBaseUser,
- AbstractUser,
- UserManager,
- PermissionsMixin,
- Group,
- Permission,
-)
-
-
-# The custom User uses email as the unique identifier, and requires
-# that every user provide a date of birth. This lets us test
-# changes in username datatype, and non-text required fields.
-
-class CustomUserManager(BaseUserManager):
- def create_user(self, email, date_of_birth, password=None):
- """
- Creates and saves a User with the given email and password.
- """
- if not email:
- raise ValueError('Users must have an email address')
-
- user = self.model(
- email=self.normalize_email(email),
- date_of_birth=date_of_birth,
- )
-
- user.set_password(password)
- user.save(using=self._db)
- return user
-
- def create_superuser(self, email, password, date_of_birth):
- u = self.create_user(email, password=password, date_of_birth=date_of_birth)
- u.is_admin = True
- u.save(using=self._db)
- return u
-
-
-class CustomUser(AbstractBaseUser):
- email = models.EmailField(verbose_name='email address', max_length=255, unique=True)
- is_active = models.BooleanField(default=True)
- is_admin = models.BooleanField(default=False)
- date_of_birth = models.DateField()
-
- custom_objects = CustomUserManager()
-
- USERNAME_FIELD = 'email'
- REQUIRED_FIELDS = ['date_of_birth']
-
- class Meta:
- app_label = 'auth'
-
- def get_full_name(self):
- return self.email
-
- def get_short_name(self):
- return self.email
-
- def __unicode__(self):
- return self.email
-
- # Maybe required?
- def get_group_permissions(self, obj=None):
- return set()
-
- def get_all_permissions(self, obj=None):
- return set()
-
- def has_perm(self, perm, obj=None):
- return True
-
- def has_perms(self, perm_list, obj=None):
- return True
-
- def has_module_perms(self, app_label):
- return True
-
- # Admin required fields
- @property
- def is_staff(self):
- return self.is_admin
-
-
-# At this point, temporarily remove the groups and user_permissions M2M
-# fields from the AbstractUser class, so they don't clash with the related_name
-# that sets.
-
-old_au_local_m2m = AbstractUser._meta.local_many_to_many
-old_pm_local_m2m = PermissionsMixin._meta.local_many_to_many
-groups = models.ManyToManyField(Group, blank=True)
-groups.contribute_to_class(PermissionsMixin, "groups")
-user_permissions = models.ManyToManyField(Permission, blank=True)
-user_permissions.contribute_to_class(PermissionsMixin, "user_permissions")
-PermissionsMixin._meta.local_many_to_many = [groups, user_permissions]
-AbstractUser._meta.local_many_to_many = [groups, user_permissions]
-
-
-# The extension user is a simple extension of the built-in user class,
-# adding a required date_of_birth field. This allows us to check for
-# any hard references to the name "User" in forms/handlers etc.
-
-class ExtensionUser(AbstractUser):
- date_of_birth = models.DateField()
-
- custom_objects = UserManager()
-
- REQUIRED_FIELDS = AbstractUser.REQUIRED_FIELDS + ['date_of_birth']
-
- class Meta:
- app_label = 'auth'
-
-
-# The CustomPermissionsUser users email as the identifier, but uses the normal
-# Django permissions model. This allows us to check that the PermissionsMixin
-# includes everything that is needed to interact with the ModelBackend.
-
-class CustomPermissionsUserManager(CustomUserManager):
- def create_superuser(self, email, password, date_of_birth):
- u = self.create_user(email, password=password, date_of_birth=date_of_birth)
- u.is_superuser = True
- u.save(using=self._db)
- return u
-
-
-class CustomPermissionsUser(AbstractBaseUser, PermissionsMixin):
- email = models.EmailField(verbose_name='email address', max_length=255, unique=True)
- date_of_birth = models.DateField()
-
- custom_objects = CustomPermissionsUserManager()
-
- USERNAME_FIELD = 'email'
- REQUIRED_FIELDS = ['date_of_birth']
-
- class Meta:
- app_label = 'auth'
-
- def get_full_name(self):
- return self.email
-
- def get_short_name(self):
- return self.email
-
- def __unicode__(self):
- return self.email
-
-
-class IsActiveTestUser1(AbstractBaseUser):
- """
- This test user class and derivatives test the default is_active behavior
- """
- username = models.CharField(max_length=30, unique=True)
-
- custom_objects = BaseUserManager()
-
- USERNAME_FIELD = 'username'
-
- class Meta:
- app_label = 'auth'
-
- # the is_active attr is provided by AbstractBaseUser
-
-
-class CustomUserNonUniqueUsername(AbstractBaseUser):
- "A user with a non-unique username"
- username = models.CharField(max_length=30)
-
- USERNAME_FIELD = 'username'
-
- class Meta:
- app_label = 'auth'
-
-
-class CustomUserNonListRequiredFields(AbstractBaseUser):
- "A user with a non-list REQUIRED_FIELDS"
- username = models.CharField(max_length=30, unique=True)
- date_of_birth = models.DateField()
-
- USERNAME_FIELD = 'username'
- REQUIRED_FIELDS = 'date_of_birth'
-
- class Meta:
- app_label = 'auth'
-
-
-class CustomUserBadRequiredFields(AbstractBaseUser):
- "A user with a non-unique username"
- username = models.CharField(max_length=30, unique=True)
- date_of_birth = models.DateField()
-
- USERNAME_FIELD = 'username'
- REQUIRED_FIELDS = ['username', 'date_of_birth']
-
- class Meta:
- app_label = 'auth'
-
-# Undo swap hack
-AbstractUser._meta.local_many_to_many = old_au_local_m2m
-PermissionsMixin._meta.local_many_to_many = old_pm_local_m2m
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_access.html b/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_access.html
deleted file mode 100644
index b5c65db..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_access.html
+++ /dev/null
@@ -1 +0,0 @@
-{{ user }}
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_messages.html b/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_messages.html
deleted file mode 100644
index 7b7e448..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_messages.html
+++ /dev/null
@@ -1 +0,0 @@
-{% for m in messages %}{{ m }}{% endfor %}
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_no_access.html b/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_no_access.html
deleted file mode 100644
index 8d1c8b6..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_no_access.html
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_perm_in_perms.html b/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_perm_in_perms.html
deleted file mode 100644
index 3a18cd7..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_perm_in_perms.html
+++ /dev/null
@@ -1,4 +0,0 @@
-{% if 'auth' in perms %}Has auth permissions{% endif %}
-{% if 'auth.add_permission' in perms %}Has auth.add_permission permissions{% endif %}
-{% if 'nonexisting' in perms %}nonexisting perm found{% endif %}
-{% if 'auth.nonexisting' in perms %}auth.nonexisting perm found{% endif %}
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_perms.html b/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_perms.html
deleted file mode 100644
index 6f441af..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_perms.html
+++ /dev/null
@@ -1,4 +0,0 @@
-{% if perms.auth %}Has auth permissions{% endif %}
-{% if perms.auth.add_permission %}Has auth.add_permission permissions{% endif %}
-{% if perms.nonexisting %}nonexisting perm found{% endif %}
-{% if perms.auth.nonexisting in perms %}auth.nonexisting perm found{% endif %}
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_test_access.html b/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_test_access.html
deleted file mode 100644
index a28ff93..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_test_access.html
+++ /dev/null
@@ -1 +0,0 @@
-{% if session_accessed %}Session accessed{% else %}Session not accessed{% endif %}
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_user.html b/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_user.html
deleted file mode 100644
index dc4c6b1..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/context_processors/auth_attrs_user.html
+++ /dev/null
@@ -1,4 +0,0 @@
-unicode: {{ user }}
-id: {{ user.pk }}
-username: {{ user.username }}
-url: {% url 'userpage' user %}
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/logged_out.html b/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/logged_out.html
deleted file mode 100644
index d690653..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/logged_out.html
+++ /dev/null
@@ -1 +0,0 @@
-Logged out \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/login.html b/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/login.html
deleted file mode 100644
index 027da71..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/login.html
+++ /dev/null
@@ -1 +0,0 @@
-{{ form.as_ul }} \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_change_form.html b/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_change_form.html
deleted file mode 100644
index d960111..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_change_form.html
+++ /dev/null
@@ -1 +0,0 @@
-{{ form }} \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_complete.html b/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_complete.html
deleted file mode 100644
index 3dd79d8..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_complete.html
+++ /dev/null
@@ -1 +0,0 @@
-Password reset successfully \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_confirm.html b/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_confirm.html
deleted file mode 100644
index 8f06c57..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_confirm.html
+++ /dev/null
@@ -1,5 +0,0 @@
-{% if validlink %}
-Please enter your new password: {{ form }}
-{% else %}
-The password reset link was invalid
-{% endif %} \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_done.html b/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_done.html
deleted file mode 100644
index c3d1d0c..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_done.html
+++ /dev/null
@@ -1 +0,0 @@
-Email sent \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_email.html b/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_email.html
deleted file mode 100644
index baac2fc..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_email.html
+++ /dev/null
@@ -1 +0,0 @@
-{{ protocol }}://{{ domain }}/reset/{{ uid }}/{{ token }}/
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_form.html b/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_form.html
deleted file mode 100644
index d960111..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_form.html
+++ /dev/null
@@ -1 +0,0 @@
-{{ form }} \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_subject.txt b/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_subject.txt
deleted file mode 100644
index 904b645..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/templates/registration/password_reset_subject.txt
+++ /dev/null
@@ -1 +0,0 @@
-{% autoescape off %}Custom password reset on {{ site_name }}{% endautoescape %} \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/test_auth_backends.py b/lib/python2.7/site-packages/django/contrib/auth/tests/test_auth_backends.py
deleted file mode 100644
index be53aa6..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/test_auth_backends.py
+++ /dev/null
@@ -1,506 +0,0 @@
-from __future__ import unicode_literals
-from datetime import date
-
-from django.conf import settings
-from django.contrib.auth.backends import ModelBackend
-from django.contrib.auth.models import User, Group, Permission, AnonymousUser
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.contrib.auth.tests.custom_user import ExtensionUser, CustomPermissionsUser, CustomUser
-from django.contrib.contenttypes.models import ContentType
-from django.core.exceptions import ImproperlyConfigured, PermissionDenied
-from django.contrib.auth import authenticate, get_user
-from django.http import HttpRequest
-from django.test import TestCase
-from django.test.utils import override_settings
-from django.contrib.auth.hashers import MD5PasswordHasher
-
-
-class CountingMD5PasswordHasher(MD5PasswordHasher):
- """Hasher that counts how many times it computes a hash."""
-
- calls = 0
-
- def encode(self, *args, **kwargs):
- type(self).calls += 1
- return super(CountingMD5PasswordHasher, self).encode(*args, **kwargs)
-
-
-class BaseModelBackendTest(object):
- """
- A base class for tests that need to validate the ModelBackend
- with different User models. Subclasses should define a class
- level UserModel attribute, and a create_users() method to
- construct two users for test purposes.
- """
- backend = 'django.contrib.auth.backends.ModelBackend'
-
- def setUp(self):
- self.curr_auth = settings.AUTHENTICATION_BACKENDS
- settings.AUTHENTICATION_BACKENDS = (self.backend,)
- self.create_users()
-
- def tearDown(self):
- settings.AUTHENTICATION_BACKENDS = self.curr_auth
- # The custom_perms test messes with ContentTypes, which will
- # be cached; flush the cache to ensure there are no side effects
- # Refs #14975, #14925
- ContentType.objects.clear_cache()
-
- def test_has_perm(self):
- user = self.UserModel._default_manager.get(pk=self.user.pk)
- self.assertEqual(user.has_perm('auth.test'), False)
- user.is_staff = True
- user.save()
- self.assertEqual(user.has_perm('auth.test'), False)
- user.is_superuser = True
- user.save()
- self.assertEqual(user.has_perm('auth.test'), True)
- user.is_staff = False
- user.is_superuser = False
- user.save()
- self.assertEqual(user.has_perm('auth.test'), False)
- user.is_staff = True
- user.is_superuser = True
- user.is_active = False
- user.save()
- self.assertEqual(user.has_perm('auth.test'), False)
-
- def test_custom_perms(self):
- user = self.UserModel._default_manager.get(pk=self.user.pk)
- content_type = ContentType.objects.get_for_model(Group)
- perm = Permission.objects.create(name='test', content_type=content_type, codename='test')
- user.user_permissions.add(perm)
- user.save()
-
- # reloading user to purge the _perm_cache
- user = self.UserModel._default_manager.get(pk=self.user.pk)
- self.assertEqual(user.get_all_permissions() == set(['auth.test']), True)
- self.assertEqual(user.get_group_permissions(), set([]))
- self.assertEqual(user.has_module_perms('Group'), False)
- self.assertEqual(user.has_module_perms('auth'), True)
- perm = Permission.objects.create(name='test2', content_type=content_type, codename='test2')
- user.user_permissions.add(perm)
- user.save()
- perm = Permission.objects.create(name='test3', content_type=content_type, codename='test3')
- user.user_permissions.add(perm)
- user.save()
- user = self.UserModel._default_manager.get(pk=self.user.pk)
- self.assertEqual(user.get_all_permissions(), set(['auth.test2', 'auth.test', 'auth.test3']))
- self.assertEqual(user.has_perm('test'), False)
- self.assertEqual(user.has_perm('auth.test'), True)
- self.assertEqual(user.has_perms(['auth.test2', 'auth.test3']), True)
- perm = Permission.objects.create(name='test_group', content_type=content_type, codename='test_group')
- group = Group.objects.create(name='test_group')
- group.permissions.add(perm)
- group.save()
- user.groups.add(group)
- user = self.UserModel._default_manager.get(pk=self.user.pk)
- exp = set(['auth.test2', 'auth.test', 'auth.test3', 'auth.test_group'])
- self.assertEqual(user.get_all_permissions(), exp)
- self.assertEqual(user.get_group_permissions(), set(['auth.test_group']))
- self.assertEqual(user.has_perms(['auth.test3', 'auth.test_group']), True)
-
- user = AnonymousUser()
- self.assertEqual(user.has_perm('test'), False)
- self.assertEqual(user.has_perms(['auth.test2', 'auth.test3']), False)
-
- def test_has_no_object_perm(self):
- """Regressiontest for #12462"""
- user = self.UserModel._default_manager.get(pk=self.user.pk)
- content_type = ContentType.objects.get_for_model(Group)
- perm = Permission.objects.create(name='test', content_type=content_type, codename='test')
- user.user_permissions.add(perm)
- user.save()
-
- self.assertEqual(user.has_perm('auth.test', 'object'), False)
- self.assertEqual(user.get_all_permissions('object'), set([]))
- self.assertEqual(user.has_perm('auth.test'), True)
- self.assertEqual(user.get_all_permissions(), set(['auth.test']))
-
- def test_get_all_superuser_permissions(self):
- """A superuser has all permissions. Refs #14795."""
- user = self.UserModel._default_manager.get(pk=self.superuser.pk)
- self.assertEqual(len(user.get_all_permissions()), len(Permission.objects.all()))
-
- @override_settings(PASSWORD_HASHERS=('django.contrib.auth.tests.test_auth_backends.CountingMD5PasswordHasher',))
- def test_authentication_timing(self):
- """Hasher is run once regardless of whether the user exists. Refs #20760."""
- # Re-set the password, because this tests overrides PASSWORD_HASHERS
- self.user.set_password('test')
- self.user.save()
-
- CountingMD5PasswordHasher.calls = 0
- username = getattr(self.user, self.UserModel.USERNAME_FIELD)
- authenticate(username=username, password='test')
- self.assertEqual(CountingMD5PasswordHasher.calls, 1)
-
- CountingMD5PasswordHasher.calls = 0
- authenticate(username='no_such_user', password='test')
- self.assertEqual(CountingMD5PasswordHasher.calls, 1)
-
-
-@skipIfCustomUser
-class ModelBackendTest(BaseModelBackendTest, TestCase):
- """
- Tests for the ModelBackend using the default User model.
- """
- UserModel = User
-
- def create_users(self):
- self.user = User.objects.create_user(
- username='test',
- email='test@example.com',
- password='test',
- )
- self.superuser = User.objects.create_superuser(
- username='test2',
- email='test2@example.com',
- password='test',
- )
-
-
-@override_settings(AUTH_USER_MODEL='auth.ExtensionUser')
-class ExtensionUserModelBackendTest(BaseModelBackendTest, TestCase):
- """
- Tests for the ModelBackend using the custom ExtensionUser model.
-
- This isn't a perfect test, because both the User and ExtensionUser are
- synchronized to the database, which wouldn't ordinary happen in
- production. As a result, it doesn't catch errors caused by the non-
- existence of the User table.
-
- The specific problem is queries on .filter(groups__user) et al, which
- makes an implicit assumption that the user model is called 'User'. In
- production, the auth.User table won't exist, so the requested join
- won't exist either; in testing, the auth.User *does* exist, and
- so does the join. However, the join table won't contain any useful
- data; for testing, we check that the data we expect actually does exist.
- """
-
- UserModel = ExtensionUser
-
- def create_users(self):
- self.user = ExtensionUser._default_manager.create_user(
- username='test',
- email='test@example.com',
- password='test',
- date_of_birth=date(2006, 4, 25)
- )
- self.superuser = ExtensionUser._default_manager.create_superuser(
- username='test2',
- email='test2@example.com',
- password='test',
- date_of_birth=date(1976, 11, 8)
- )
-
-
-@override_settings(AUTH_USER_MODEL='auth.CustomPermissionsUser')
-class CustomPermissionsUserModelBackendTest(BaseModelBackendTest, TestCase):
- """
- Tests for the ModelBackend using the CustomPermissionsUser model.
-
- As with the ExtensionUser test, this isn't a perfect test, because both
- the User and CustomPermissionsUser are synchronized to the database,
- which wouldn't ordinary happen in production.
- """
-
- UserModel = CustomPermissionsUser
-
- def create_users(self):
- self.user = CustomPermissionsUser._default_manager.create_user(
- email='test@example.com',
- password='test',
- date_of_birth=date(2006, 4, 25)
- )
- self.superuser = CustomPermissionsUser._default_manager.create_superuser(
- email='test2@example.com',
- password='test',
- date_of_birth=date(1976, 11, 8)
- )
-
-
-@override_settings(AUTH_USER_MODEL='auth.CustomUser')
-class CustomUserModelBackendAuthenticateTest(TestCase):
- """
- Tests that the model backend can accept a credentials kwarg labeled with
- custom user model's USERNAME_FIELD.
- """
-
- def test_authenticate(self):
- test_user = CustomUser._default_manager.create_user(
- email='test@example.com',
- password='test',
- date_of_birth=date(2006, 4, 25)
- )
- authenticated_user = authenticate(email='test@example.com', password='test')
- self.assertEqual(test_user, authenticated_user)
-
-
-
-class TestObj(object):
- pass
-
-
-class SimpleRowlevelBackend(object):
- def has_perm(self, user, perm, obj=None):
- if not obj:
- return # We only support row level perms
-
- if isinstance(obj, TestObj):
- if user.username == 'test2':
- return True
- elif user.is_anonymous() and perm == 'anon':
- return True
- elif not user.is_active and perm == 'inactive':
- return True
- return False
-
- def has_module_perms(self, user, app_label):
- if not user.is_anonymous() and not user.is_active:
- return False
- return app_label == "app1"
-
- def get_all_permissions(self, user, obj=None):
- if not obj:
- return [] # We only support row level perms
-
- if not isinstance(obj, TestObj):
- return ['none']
-
- if user.is_anonymous():
- return ['anon']
- if user.username == 'test2':
- return ['simple', 'advanced']
- else:
- return ['simple']
-
- def get_group_permissions(self, user, obj=None):
- if not obj:
- return # We only support row level perms
-
- if not isinstance(obj, TestObj):
- return ['none']
-
- if 'test_group' in [group.name for group in user.groups.all()]:
- return ['group_perm']
- else:
- return ['none']
-
-
-@skipIfCustomUser
-class RowlevelBackendTest(TestCase):
- """
- Tests for auth backend that supports object level permissions
- """
- backend = 'django.contrib.auth.tests.test_auth_backends.SimpleRowlevelBackend'
-
- def setUp(self):
- self.curr_auth = settings.AUTHENTICATION_BACKENDS
- settings.AUTHENTICATION_BACKENDS = tuple(self.curr_auth) + (self.backend,)
- self.user1 = User.objects.create_user('test', 'test@example.com', 'test')
- self.user2 = User.objects.create_user('test2', 'test2@example.com', 'test')
- self.user3 = User.objects.create_user('test3', 'test3@example.com', 'test')
-
- def tearDown(self):
- settings.AUTHENTICATION_BACKENDS = self.curr_auth
- # The get_group_permissions test messes with ContentTypes, which will
- # be cached; flush the cache to ensure there are no side effects
- # Refs #14975, #14925
- ContentType.objects.clear_cache()
-
- def test_has_perm(self):
- self.assertEqual(self.user1.has_perm('perm', TestObj()), False)
- self.assertEqual(self.user2.has_perm('perm', TestObj()), True)
- self.assertEqual(self.user2.has_perm('perm'), False)
- self.assertEqual(self.user2.has_perms(['simple', 'advanced'], TestObj()), True)
- self.assertEqual(self.user3.has_perm('perm', TestObj()), False)
- self.assertEqual(self.user3.has_perm('anon', TestObj()), False)
- self.assertEqual(self.user3.has_perms(['simple', 'advanced'], TestObj()), False)
-
- def test_get_all_permissions(self):
- self.assertEqual(self.user1.get_all_permissions(TestObj()), set(['simple']))
- self.assertEqual(self.user2.get_all_permissions(TestObj()), set(['simple', 'advanced']))
- self.assertEqual(self.user2.get_all_permissions(), set([]))
-
- def test_get_group_permissions(self):
- group = Group.objects.create(name='test_group')
- self.user3.groups.add(group)
- self.assertEqual(self.user3.get_group_permissions(TestObj()), set(['group_perm']))
-
-
-class AnonymousUserBackendTest(TestCase):
- """
- Tests for AnonymousUser delegating to backend.
- """
-
- backend = 'django.contrib.auth.tests.test_auth_backends.SimpleRowlevelBackend'
-
- def setUp(self):
- self.curr_auth = settings.AUTHENTICATION_BACKENDS
- settings.AUTHENTICATION_BACKENDS = (self.backend,)
- self.user1 = AnonymousUser()
-
- def tearDown(self):
- settings.AUTHENTICATION_BACKENDS = self.curr_auth
-
- def test_has_perm(self):
- self.assertEqual(self.user1.has_perm('perm', TestObj()), False)
- self.assertEqual(self.user1.has_perm('anon', TestObj()), True)
-
- def test_has_perms(self):
- self.assertEqual(self.user1.has_perms(['anon'], TestObj()), True)
- self.assertEqual(self.user1.has_perms(['anon', 'perm'], TestObj()), False)
-
- def test_has_module_perms(self):
- self.assertEqual(self.user1.has_module_perms("app1"), True)
- self.assertEqual(self.user1.has_module_perms("app2"), False)
-
- def test_get_all_permissions(self):
- self.assertEqual(self.user1.get_all_permissions(TestObj()), set(['anon']))
-
-
-@skipIfCustomUser
-@override_settings(AUTHENTICATION_BACKENDS=[])
-class NoBackendsTest(TestCase):
- """
- Tests that an appropriate error is raised if no auth backends are provided.
- """
- def setUp(self):
- self.user = User.objects.create_user('test', 'test@example.com', 'test')
-
- def test_raises_exception(self):
- self.assertRaises(ImproperlyConfigured, self.user.has_perm, ('perm', TestObj(),))
-
-
-@skipIfCustomUser
-class InActiveUserBackendTest(TestCase):
- """
- Tests for a inactive user
- """
- backend = 'django.contrib.auth.tests.test_auth_backends.SimpleRowlevelBackend'
-
- def setUp(self):
- self.curr_auth = settings.AUTHENTICATION_BACKENDS
- settings.AUTHENTICATION_BACKENDS = (self.backend,)
- self.user1 = User.objects.create_user('test', 'test@example.com', 'test')
- self.user1.is_active = False
- self.user1.save()
-
- def tearDown(self):
- settings.AUTHENTICATION_BACKENDS = self.curr_auth
-
- def test_has_perm(self):
- self.assertEqual(self.user1.has_perm('perm', TestObj()), False)
- self.assertEqual(self.user1.has_perm('inactive', TestObj()), True)
-
- def test_has_module_perms(self):
- self.assertEqual(self.user1.has_module_perms("app1"), False)
- self.assertEqual(self.user1.has_module_perms("app2"), False)
-
-
-class PermissionDeniedBackend(object):
- """
- Always raises PermissionDenied.
- """
- supports_object_permissions = True
- supports_anonymous_user = True
- supports_inactive_user = True
-
- def authenticate(self, username=None, password=None):
- raise PermissionDenied
-
-
-@skipIfCustomUser
-class PermissionDeniedBackendTest(TestCase):
- """
- Tests that other backends are not checked once a backend raises PermissionDenied
- """
- backend = 'django.contrib.auth.tests.test_auth_backends.PermissionDeniedBackend'
-
- def setUp(self):
- self.user1 = User.objects.create_user('test', 'test@example.com', 'test')
- self.user1.save()
-
- @override_settings(AUTHENTICATION_BACKENDS=(backend, ) +
- tuple(settings.AUTHENTICATION_BACKENDS))
- def test_permission_denied(self):
- "user is not authenticated after a backend raises permission denied #2550"
- self.assertEqual(authenticate(username='test', password='test'), None)
-
- @override_settings(AUTHENTICATION_BACKENDS=tuple(
- settings.AUTHENTICATION_BACKENDS) + (backend, ))
- def test_authenticates(self):
- self.assertEqual(authenticate(username='test', password='test'), self.user1)
-
-
-class NewModelBackend(ModelBackend):
- pass
-
-
-@skipIfCustomUser
-class ChangedBackendSettingsTest(TestCase):
- """
- Tests for changes in the settings.AUTHENTICATION_BACKENDS
- """
- backend = 'django.contrib.auth.tests.test_auth_backends.NewModelBackend'
-
- TEST_USERNAME = 'test_user'
- TEST_PASSWORD = 'test_password'
- TEST_EMAIL = 'test@example.com'
-
- def setUp(self):
- User.objects.create_user(self.TEST_USERNAME,
- self.TEST_EMAIL,
- self.TEST_PASSWORD)
-
- @override_settings(AUTHENTICATION_BACKENDS=(backend, ))
- def test_changed_backend_settings(self):
- """
- Tests that removing a backend configured in AUTHENTICATION_BACKENDS
- make already logged-in users disconnect.
- """
-
- # Get a session for the test user
- self.assertTrue(self.client.login(
- username=self.TEST_USERNAME,
- password=self.TEST_PASSWORD)
- )
-
- # Prepare a request object
- request = HttpRequest()
- request.session = self.client.session
-
- # Remove NewModelBackend
- with self.settings(AUTHENTICATION_BACKENDS=(
- 'django.contrib.auth.backends.ModelBackend',)):
- # Get the user from the request
- user = get_user(request)
-
- # Assert that the user retrieval is successful and the user is
- # anonymous as the backend is not longer available.
- self.assertIsNotNone(user)
- self.assertTrue(user.is_anonymous())
-
-
-@skipIfCustomUser
-class ImproperlyConfiguredUserModelTest(TestCase):
- """
- Tests that an exception from within get_user_model is propagated and doesn't
- raise an UnboundLocalError.
-
- Regression test for ticket #21439
- """
- def setUp(self):
- self.user1 = User.objects.create_user('test', 'test@example.com', 'test')
- self.client.login(
- username='test',
- password='test'
- )
-
- @override_settings(AUTH_USER_MODEL='thismodel.doesntexist')
- def test_does_not_shadow_exception(self):
- # Prepare a request object
- request = HttpRequest()
- request.session = self.client.session
-
- self.assertRaises(ImproperlyConfigured, get_user, request)
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/test_basic.py b/lib/python2.7/site-packages/django/contrib/auth/tests/test_basic.py
deleted file mode 100644
index 5779083..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/test_basic.py
+++ /dev/null
@@ -1,257 +0,0 @@
-# -*- encoding: utf-8 -*-
-from __future__ import unicode_literals
-
-import locale
-
-from django.contrib.auth import get_user_model
-from django.contrib.auth.management.commands import createsuperuser
-from django.contrib.auth.models import User, AnonymousUser
-from django.contrib.auth.tests.custom_user import CustomUser
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.core.exceptions import ImproperlyConfigured
-from django.core.management import call_command
-from django.dispatch import receiver
-from django.test import TestCase
-from django.test.signals import setting_changed
-from django.test.utils import override_settings
-from django.utils import translation
-from django.utils.encoding import force_str
-from django.utils.six import binary_type, PY2, StringIO
-
-
-@receiver(setting_changed)
-def user_model_swapped(**kwargs):
- if kwargs['setting'] == 'AUTH_USER_MODEL':
- from django.db.models.manager import ensure_default_manager
- from django.contrib.auth.models import User
- # Reset User manager
- setattr(User, 'objects', User._default_manager)
- ensure_default_manager(User)
-
-
-def mock_inputs(inputs):
- """
- Decorator to temporarily replace input/getpass to allow interactive
- createsuperuser.
- """
- def inner(test_func):
- def wrapped(*args):
- class mock_getpass:
- @staticmethod
- def getpass(prompt=b'Password: ', stream=None):
- if PY2:
- # getpass on Windows only supports prompt as bytestring (#19807)
- assert isinstance(prompt, binary_type)
- return inputs['password']
-
- def mock_input(prompt):
- # prompt should be encoded in Python 2. This line will raise an
- # Exception if prompt contains unencoded non-ascii on Python 2.
- prompt = str(prompt)
- assert str('__proxy__') not in prompt
- response = ''
- for key, val in inputs.items():
- if force_str(key) in prompt.lower():
- response = val
- break
- return response
-
- old_getpass = createsuperuser.getpass
- old_input = createsuperuser.input
- createsuperuser.getpass = mock_getpass
- createsuperuser.input = mock_input
- try:
- test_func(*args)
- finally:
- createsuperuser.getpass = old_getpass
- createsuperuser.input = old_input
- return wrapped
- return inner
-
-
-@skipIfCustomUser
-class BasicTestCase(TestCase):
- def test_user(self):
- "Check that users can be created and can set their password"
- u = User.objects.create_user('testuser', 'test@example.com', 'testpw')
- self.assertTrue(u.has_usable_password())
- self.assertFalse(u.check_password('bad'))
- self.assertTrue(u.check_password('testpw'))
-
- # Check we can manually set an unusable password
- u.set_unusable_password()
- u.save()
- self.assertFalse(u.check_password('testpw'))
- self.assertFalse(u.has_usable_password())
- u.set_password('testpw')
- self.assertTrue(u.check_password('testpw'))
- u.set_password(None)
- self.assertFalse(u.has_usable_password())
-
- # Check authentication/permissions
- self.assertTrue(u.is_authenticated())
- self.assertFalse(u.is_staff)
- self.assertTrue(u.is_active)
- self.assertFalse(u.is_superuser)
-
- # Check API-based user creation with no password
- u2 = User.objects.create_user('testuser2', 'test2@example.com')
- self.assertFalse(u2.has_usable_password())
-
- def test_user_no_email(self):
- "Check that users can be created without an email"
- u = User.objects.create_user('testuser1')
- self.assertEqual(u.email, '')
-
- u2 = User.objects.create_user('testuser2', email='')
- self.assertEqual(u2.email, '')
-
- u3 = User.objects.create_user('testuser3', email=None)
- self.assertEqual(u3.email, '')
-
- def test_anonymous_user(self):
- "Check the properties of the anonymous user"
- a = AnonymousUser()
- self.assertEqual(a.pk, None)
- self.assertFalse(a.is_authenticated())
- self.assertFalse(a.is_staff)
- self.assertFalse(a.is_active)
- self.assertFalse(a.is_superuser)
- self.assertEqual(a.groups.all().count(), 0)
- self.assertEqual(a.user_permissions.all().count(), 0)
-
- def test_superuser(self):
- "Check the creation and properties of a superuser"
- super = User.objects.create_superuser('super', 'super@example.com', 'super')
- self.assertTrue(super.is_superuser)
- self.assertTrue(super.is_active)
- self.assertTrue(super.is_staff)
-
- def test_createsuperuser_management_command(self):
- "Check the operation of the createsuperuser management command"
- # We can use the management command to create a superuser
- new_io = StringIO()
- call_command("createsuperuser",
- interactive=False,
- username="joe",
- email="joe@somewhere.org",
- stdout=new_io
- )
- command_output = new_io.getvalue().strip()
- self.assertEqual(command_output, 'Superuser created successfully.')
- u = User.objects.get(username="joe")
- self.assertEqual(u.email, 'joe@somewhere.org')
-
- # created password should be unusable
- self.assertFalse(u.has_usable_password())
-
- # We can supress output on the management command
- new_io = StringIO()
- call_command("createsuperuser",
- interactive=False,
- username="joe2",
- email="joe2@somewhere.org",
- verbosity=0,
- stdout=new_io
- )
- command_output = new_io.getvalue().strip()
- self.assertEqual(command_output, '')
- u = User.objects.get(username="joe2")
- self.assertEqual(u.email, 'joe2@somewhere.org')
- self.assertFalse(u.has_usable_password())
-
- call_command("createsuperuser",
- interactive=False,
- username="joe+admin@somewhere.org",
- email="joe@somewhere.org",
- verbosity=0
- )
- u = User.objects.get(username="joe+admin@somewhere.org")
- self.assertEqual(u.email, 'joe@somewhere.org')
- self.assertFalse(u.has_usable_password())
-
- @mock_inputs({'password': "nopasswd"})
- def test_createsuperuser_nolocale(self):
- """
- Check that createsuperuser does not break when no locale is set. See
- ticket #16017.
- """
-
- old_getdefaultlocale = locale.getdefaultlocale
- try:
- # Temporarily remove locale information
- locale.getdefaultlocale = lambda: (None, None)
-
- # Call the command in this new environment
- call_command("createsuperuser",
- interactive=True,
- username="nolocale@somewhere.org",
- email="nolocale@somewhere.org",
- verbosity=0
- )
-
- except TypeError:
- self.fail("createsuperuser fails if the OS provides no information about the current locale")
-
- finally:
- # Re-apply locale information
- locale.getdefaultlocale = old_getdefaultlocale
-
- # If we were successful, a user should have been created
- u = User.objects.get(username="nolocale@somewhere.org")
- self.assertEqual(u.email, 'nolocale@somewhere.org')
-
- @mock_inputs({
- 'password': "nopasswd",
- 'uživatel': 'foo', # username (cz)
- 'email': 'nolocale@somewhere.org'})
- def test_createsuperuser_non_ascii_verbose_name(self):
- # Aliased so the string doesn't get extracted
- from django.utils.translation import ugettext_lazy as ulazy
- username_field = User._meta.get_field('username')
- old_verbose_name = username_field.verbose_name
- username_field.verbose_name = ulazy('uživatel')
- new_io = StringIO()
- try:
- call_command("createsuperuser",
- interactive=True,
- stdout=new_io
- )
- finally:
- username_field.verbose_name = old_verbose_name
-
- command_output = new_io.getvalue().strip()
- self.assertEqual(command_output, 'Superuser created successfully.')
-
- def test_get_user_model(self):
- "The current user model can be retrieved"
- self.assertEqual(get_user_model(), User)
-
- @override_settings(AUTH_USER_MODEL='auth.CustomUser')
- def test_swappable_user(self):
- "The current user model can be swapped out for another"
- self.assertEqual(get_user_model(), CustomUser)
- with self.assertRaises(AttributeError):
- User.objects.all()
-
- @override_settings(AUTH_USER_MODEL='badsetting')
- def test_swappable_user_bad_setting(self):
- "The alternate user setting must point to something in the format app.model"
- with self.assertRaises(ImproperlyConfigured):
- get_user_model()
-
- @override_settings(AUTH_USER_MODEL='thismodel.doesntexist')
- def test_swappable_user_nonexistent_model(self):
- "The current user model must point to an installed model"
- with self.assertRaises(ImproperlyConfigured):
- get_user_model()
-
- @skipIfCustomUser
- def test_user_verbose_names_translatable(self):
- "Default User model verbose names are translatable (#19945)"
- with translation.override('en'):
- self.assertEqual(User._meta.verbose_name, 'user')
- self.assertEqual(User._meta.verbose_name_plural, 'users')
- with translation.override('es'):
- self.assertEqual(User._meta.verbose_name, 'usuario')
- self.assertEqual(User._meta.verbose_name_plural, 'usuarios')
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/test_context_processors.py b/lib/python2.7/site-packages/django/contrib/auth/tests/test_context_processors.py
deleted file mode 100644
index 9e56cfc..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/test_context_processors.py
+++ /dev/null
@@ -1,170 +0,0 @@
-import os
-
-from django.conf import global_settings
-from django.contrib.auth import authenticate
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.contrib.auth.models import User, Permission
-from django.contrib.contenttypes.models import ContentType
-from django.contrib.auth.context_processors import PermWrapper, PermLookupDict
-from django.db.models import Q
-from django.test import TestCase
-from django.test.utils import override_settings
-from django.utils._os import upath
-
-
-class MockUser(object):
- def has_module_perms(self, perm):
- if perm == 'mockapp':
- return True
- return False
-
- def has_perm(self, perm):
- if perm == 'mockapp.someperm':
- return True
- return False
-
-
-class PermWrapperTests(TestCase):
- """
- Test some details of the PermWrapper implementation.
- """
- class EQLimiterObject(object):
- """
- This object makes sure __eq__ will not be called endlessly.
- """
- def __init__(self):
- self.eq_calls = 0
-
- def __eq__(self, other):
- if self.eq_calls > 0:
- return True
- self.eq_calls += 1
- return False
-
- def test_permwrapper_in(self):
- """
- Test that 'something' in PermWrapper works as expected.
- """
- perms = PermWrapper(MockUser())
- # Works for modules and full permissions.
- self.assertTrue('mockapp' in perms)
- self.assertFalse('nonexisting' in perms)
- self.assertTrue('mockapp.someperm' in perms)
- self.assertFalse('mockapp.nonexisting' in perms)
-
- def test_permlookupdict_in(self):
- """
- No endless loops if accessed with 'in' - refs #18979.
- """
- pldict = PermLookupDict(MockUser(), 'mockapp')
- with self.assertRaises(TypeError):
- self.EQLimiterObject() in pldict
-
-
-@skipIfCustomUser
-@override_settings(
- TEMPLATE_LOADERS=('django.template.loaders.filesystem.Loader',),
- TEMPLATE_DIRS=(
- os.path.join(os.path.dirname(upath(__file__)), 'templates'),
- ),
- USE_TZ=False, # required for loading the fixture
- PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',),
-)
-class AuthContextProcessorTests(TestCase):
- """
- Tests for the ``django.contrib.auth.context_processors.auth`` processor
- """
- urls = 'django.contrib.auth.tests.urls'
- fixtures = ['context-processors-users.xml']
-
- @override_settings(
- MIDDLEWARE_CLASSES=global_settings.MIDDLEWARE_CLASSES,
- TEMPLATE_CONTEXT_PROCESSORS=global_settings.TEMPLATE_CONTEXT_PROCESSORS,
- )
- def test_session_not_accessed(self):
- """
- Tests that the session is not accessed simply by including
- the auth context processor
- """
- response = self.client.get('/auth_processor_no_attr_access/')
- self.assertContains(response, "Session not accessed")
-
- @override_settings(
- MIDDLEWARE_CLASSES=global_settings.MIDDLEWARE_CLASSES,
- TEMPLATE_CONTEXT_PROCESSORS=global_settings.TEMPLATE_CONTEXT_PROCESSORS,
- )
- def test_session_is_accessed(self):
- """
- Tests that the session is accessed if the auth context processor
- is used and relevant attributes accessed.
- """
- response = self.client.get('/auth_processor_attr_access/')
- self.assertContains(response, "Session accessed")
-
- def test_perms_attrs(self):
- u = User.objects.create_user(username='normal', password='secret')
- u.user_permissions.add(
- Permission.objects.get(
- content_type=ContentType.objects.get_for_model(Permission),
- codename='add_permission'))
- self.client.login(username='normal', password='secret')
- response = self.client.get('/auth_processor_perms/')
- self.assertContains(response, "Has auth permissions")
- self.assertContains(response, "Has auth.add_permission permissions")
- self.assertNotContains(response, "nonexisting")
-
- def test_perm_in_perms_attrs(self):
- u = User.objects.create_user(username='normal', password='secret')
- u.user_permissions.add(
- Permission.objects.get(
- content_type=ContentType.objects.get_for_model(Permission),
- codename='add_permission'))
- self.client.login(username='normal', password='secret')
- response = self.client.get('/auth_processor_perm_in_perms/')
- self.assertContains(response, "Has auth permissions")
- self.assertContains(response, "Has auth.add_permission permissions")
- self.assertNotContains(response, "nonexisting")
-
- def test_message_attrs(self):
- self.client.login(username='super', password='secret')
- response = self.client.get('/auth_processor_messages/')
- self.assertContains(response, "Message 1")
-
- def test_user_attrs(self):
- """
- Test that the lazy objects returned behave just like the wrapped objects.
- """
- # These are 'functional' level tests for common use cases. Direct
- # testing of the implementation (SimpleLazyObject) is in the 'utils'
- # tests.
- self.client.login(username='super', password='secret')
- user = authenticate(username='super', password='secret')
- response = self.client.get('/auth_processor_user/')
- self.assertContains(response, "unicode: super")
- self.assertContains(response, "id: 100")
- self.assertContains(response, "username: super")
- # bug #12037 is tested by the {% url %} in the template:
- self.assertContains(response, "url: /userpage/super/")
-
- # See if this object can be used for queries where a Q() comparing
- # a user can be used with another Q() (in an AND or OR fashion).
- # This simulates what a template tag might do with the user from the
- # context. Note that we don't need to execute a query, just build it.
- #
- # The failure case (bug #12049) on Python 2.4 with a LazyObject-wrapped
- # User is a fatal TypeError: "function() takes at least 2 arguments
- # (0 given)" deep inside deepcopy().
- #
- # Python 2.5 and 2.6 succeeded, but logged internally caught exception
- # spew:
- #
- # Exception RuntimeError: 'maximum recursion depth exceeded while
- # calling a Python object' in <type 'exceptions.AttributeError'>
- # ignored"
- query = Q(user=response.context['user']) & Q(someflag=True)
-
- # Tests for user equality. This is hard because User defines
- # equality in a non-duck-typing way
- # See bug #12060
- self.assertEqual(response.context['user'], user)
- self.assertEqual(user, response.context['user'])
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/test_decorators.py b/lib/python2.7/site-packages/django/contrib/auth/tests/test_decorators.py
deleted file mode 100644
index 6d6d335..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/test_decorators.py
+++ /dev/null
@@ -1,51 +0,0 @@
-from django.conf import settings
-from django.contrib.auth.decorators import login_required
-from django.contrib.auth.tests.test_views import AuthViewsTestCase
-from django.contrib.auth.tests.utils import skipIfCustomUser
-
-
-@skipIfCustomUser
-class LoginRequiredTestCase(AuthViewsTestCase):
- """
- Tests the login_required decorators
- """
- urls = 'django.contrib.auth.tests.urls'
-
- def testCallable(self):
- """
- Check that login_required is assignable to callable objects.
- """
- class CallableView(object):
- def __call__(self, *args, **kwargs):
- pass
- login_required(CallableView())
-
- def testView(self):
- """
- Check that login_required is assignable to normal views.
- """
- def normal_view(request):
- pass
- login_required(normal_view)
-
- def testLoginRequired(self, view_url='/login_required/', login_url=None):
- """
- Check that login_required works on a simple view wrapped in a
- login_required decorator.
- """
- if login_url is None:
- login_url = settings.LOGIN_URL
- response = self.client.get(view_url)
- self.assertEqual(response.status_code, 302)
- self.assertTrue(login_url in response.url)
- self.login()
- response = self.client.get(view_url)
- self.assertEqual(response.status_code, 200)
-
- def testLoginRequiredNextUrl(self):
- """
- Check that login_required works on a simple view wrapped in a
- login_required decorator with a login_url set.
- """
- self.testLoginRequired(view_url='/login_required_login_url/',
- login_url='/somewhere/')
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/test_forms.py b/lib/python2.7/site-packages/django/contrib/auth/tests/test_forms.py
deleted file mode 100644
index ee2c109..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/test_forms.py
+++ /dev/null
@@ -1,432 +0,0 @@
-from __future__ import unicode_literals
-
-import os
-
-from django.contrib.auth import get_user_model
-from django.contrib.auth.models import User
-from django.contrib.auth.forms import (UserCreationForm, AuthenticationForm,
- PasswordChangeForm, SetPasswordForm, UserChangeForm, PasswordResetForm,
- ReadOnlyPasswordHashField, ReadOnlyPasswordHashWidget)
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.core import mail
-from django.forms.fields import Field, CharField
-from django.test import TestCase
-from django.test.utils import override_settings
-from django.utils.encoding import force_text
-from django.utils._os import upath
-from django.utils import translation
-from django.utils.text import capfirst
-from django.utils.translation import ugettext as _
-
-
-@skipIfCustomUser
-@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
-class UserCreationFormTest(TestCase):
-
- fixtures = ['authtestdata.json']
-
- def test_user_already_exists(self):
- data = {
- 'username': 'testclient',
- 'password1': 'test123',
- 'password2': 'test123',
- }
- form = UserCreationForm(data)
- self.assertFalse(form.is_valid())
- self.assertEqual(form["username"].errors,
- [force_text(form.error_messages['duplicate_username'])])
-
- def test_invalid_data(self):
- data = {
- 'username': 'jsmith!',
- 'password1': 'test123',
- 'password2': 'test123',
- }
- form = UserCreationForm(data)
- self.assertFalse(form.is_valid())
- self.assertEqual(form["username"].errors,
- [force_text(form.fields['username'].error_messages['invalid'])])
-
- def test_password_verification(self):
- # The verification password is incorrect.
- data = {
- 'username': 'jsmith',
- 'password1': 'test123',
- 'password2': 'test',
- }
- form = UserCreationForm(data)
- self.assertFalse(form.is_valid())
- self.assertEqual(form["password2"].errors,
- [force_text(form.error_messages['password_mismatch'])])
-
- def test_both_passwords(self):
- # One (or both) passwords weren't given
- data = {'username': 'jsmith'}
- form = UserCreationForm(data)
- required_error = [force_text(Field.default_error_messages['required'])]
- self.assertFalse(form.is_valid())
- self.assertEqual(form['password1'].errors, required_error)
- self.assertEqual(form['password2'].errors, required_error)
-
- data['password2'] = 'test123'
- form = UserCreationForm(data)
- self.assertFalse(form.is_valid())
- self.assertEqual(form['password1'].errors, required_error)
- self.assertEqual(form['password2'].errors, [])
-
- def test_success(self):
- # The success case.
- data = {
- 'username': 'jsmith@example.com',
- 'password1': 'test123',
- 'password2': 'test123',
- }
- form = UserCreationForm(data)
- self.assertTrue(form.is_valid())
- u = form.save()
- self.assertEqual(repr(u), '<User: jsmith@example.com>')
-
-
-@skipIfCustomUser
-@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
-class AuthenticationFormTest(TestCase):
-
- fixtures = ['authtestdata.json']
-
- def test_invalid_username(self):
- # The user submits an invalid username.
-
- data = {
- 'username': 'jsmith_does_not_exist',
- 'password': 'test123',
- }
- form = AuthenticationForm(None, data)
- self.assertFalse(form.is_valid())
- self.assertEqual(form.non_field_errors(),
- [force_text(form.error_messages['invalid_login'] % {
- 'username': User._meta.get_field('username').verbose_name
- })])
-
- def test_inactive_user(self):
- # The user is inactive.
- data = {
- 'username': 'inactive',
- 'password': 'password',
- }
- form = AuthenticationForm(None, data)
- self.assertFalse(form.is_valid())
- self.assertEqual(form.non_field_errors(),
- [force_text(form.error_messages['inactive'])])
-
- def test_inactive_user_i18n(self):
- with self.settings(USE_I18N=True):
- with translation.override('pt-br', deactivate=True):
- # The user is inactive.
- data = {
- 'username': 'inactive',
- 'password': 'password',
- }
- form = AuthenticationForm(None, data)
- self.assertFalse(form.is_valid())
- self.assertEqual(form.non_field_errors(),
- [force_text(form.error_messages['inactive'])])
-
- def test_success(self):
- # The success case
- data = {
- 'username': 'testclient',
- 'password': 'password',
- }
- form = AuthenticationForm(None, data)
- self.assertTrue(form.is_valid())
- self.assertEqual(form.non_field_errors(), [])
-
- def test_username_field_label(self):
-
- class CustomAuthenticationForm(AuthenticationForm):
- username = CharField(label="Name", max_length=75)
-
- form = CustomAuthenticationForm()
- self.assertEqual(form['username'].label, "Name")
-
- def test_username_field_label_not_set(self):
-
- class CustomAuthenticationForm(AuthenticationForm):
- username = CharField()
-
- form = CustomAuthenticationForm()
- UserModel = get_user_model()
- username_field = UserModel._meta.get_field(UserModel.USERNAME_FIELD)
- self.assertEqual(form.fields['username'].label, capfirst(username_field.verbose_name))
-
- def test_username_field_label_empty_string(self):
-
- class CustomAuthenticationForm(AuthenticationForm):
- username = CharField(label='')
-
- form = CustomAuthenticationForm()
- self.assertEqual(form.fields['username'].label, "")
-
-
-@skipIfCustomUser
-@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
-class SetPasswordFormTest(TestCase):
-
- fixtures = ['authtestdata.json']
-
- def test_password_verification(self):
- # The two new passwords do not match.
- user = User.objects.get(username='testclient')
- data = {
- 'new_password1': 'abc123',
- 'new_password2': 'abc',
- }
- form = SetPasswordForm(user, data)
- self.assertFalse(form.is_valid())
- self.assertEqual(form["new_password2"].errors,
- [force_text(form.error_messages['password_mismatch'])])
-
- def test_success(self):
- user = User.objects.get(username='testclient')
- data = {
- 'new_password1': 'abc123',
- 'new_password2': 'abc123',
- }
- form = SetPasswordForm(user, data)
- self.assertTrue(form.is_valid())
-
-
-@skipIfCustomUser
-@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
-class PasswordChangeFormTest(TestCase):
-
- fixtures = ['authtestdata.json']
-
- def test_incorrect_password(self):
- user = User.objects.get(username='testclient')
- data = {
- 'old_password': 'test',
- 'new_password1': 'abc123',
- 'new_password2': 'abc123',
- }
- form = PasswordChangeForm(user, data)
- self.assertFalse(form.is_valid())
- self.assertEqual(form["old_password"].errors,
- [force_text(form.error_messages['password_incorrect'])])
-
- def test_password_verification(self):
- # The two new passwords do not match.
- user = User.objects.get(username='testclient')
- data = {
- 'old_password': 'password',
- 'new_password1': 'abc123',
- 'new_password2': 'abc',
- }
- form = PasswordChangeForm(user, data)
- self.assertFalse(form.is_valid())
- self.assertEqual(form["new_password2"].errors,
- [force_text(form.error_messages['password_mismatch'])])
-
- def test_success(self):
- # The success case.
- user = User.objects.get(username='testclient')
- data = {
- 'old_password': 'password',
- 'new_password1': 'abc123',
- 'new_password2': 'abc123',
- }
- form = PasswordChangeForm(user, data)
- self.assertTrue(form.is_valid())
-
- def test_field_order(self):
- # Regression test - check the order of fields:
- user = User.objects.get(username='testclient')
- self.assertEqual(list(PasswordChangeForm(user, {}).fields),
- ['old_password', 'new_password1', 'new_password2'])
-
-
-@skipIfCustomUser
-@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
-class UserChangeFormTest(TestCase):
-
- fixtures = ['authtestdata.json']
-
- def test_username_validity(self):
- user = User.objects.get(username='testclient')
- data = {'username': 'not valid'}
- form = UserChangeForm(data, instance=user)
- self.assertFalse(form.is_valid())
- self.assertEqual(form['username'].errors,
- [force_text(form.fields['username'].error_messages['invalid'])])
-
- def test_bug_14242(self):
- # A regression test, introduce by adding an optimization for the
- # UserChangeForm.
-
- class MyUserForm(UserChangeForm):
- def __init__(self, *args, **kwargs):
- super(MyUserForm, self).__init__(*args, **kwargs)
- self.fields['groups'].help_text = 'These groups give users different permissions'
-
- class Meta(UserChangeForm.Meta):
- fields = ('groups',)
-
- # Just check we can create it
- form = MyUserForm({})
-
- def test_unsuable_password(self):
- user = User.objects.get(username='empty_password')
- user.set_unusable_password()
- user.save()
- form = UserChangeForm(instance=user)
- self.assertIn(_("No password set."), form.as_table())
-
- def test_bug_17944_empty_password(self):
- user = User.objects.get(username='empty_password')
- form = UserChangeForm(instance=user)
- self.assertIn(_("No password set."), form.as_table())
-
- def test_bug_17944_unmanageable_password(self):
- user = User.objects.get(username='unmanageable_password')
- form = UserChangeForm(instance=user)
- self.assertIn(_("Invalid password format or unknown hashing algorithm."),
- form.as_table())
-
- def test_bug_17944_unknown_password_algorithm(self):
- user = User.objects.get(username='unknown_password')
- form = UserChangeForm(instance=user)
- self.assertIn(_("Invalid password format or unknown hashing algorithm."),
- form.as_table())
-
- def test_bug_19133(self):
- "The change form does not return the password value"
- # Use the form to construct the POST data
- user = User.objects.get(username='testclient')
- form_for_data = UserChangeForm(instance=user)
- post_data = form_for_data.initial
-
- # The password field should be readonly, so anything
- # posted here should be ignored; the form will be
- # valid, and give back the 'initial' value for the
- # password field.
- post_data['password'] = 'new password'
- form = UserChangeForm(instance=user, data=post_data)
-
- self.assertTrue(form.is_valid())
- self.assertEqual(form.cleaned_data['password'], 'sha1$6efc0$f93efe9fd7542f25a7be94871ea45aa95de57161')
-
- def test_bug_19349_bound_password_field(self):
- user = User.objects.get(username='testclient')
- form = UserChangeForm(data={}, instance=user)
- # When rendering the bound password field,
- # ReadOnlyPasswordHashWidget needs the initial
- # value to render correctly
- self.assertEqual(form.initial['password'], form['password'].value())
-
-
-@skipIfCustomUser
-@override_settings(
- PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',),
- TEMPLATE_LOADERS=('django.template.loaders.filesystem.Loader',),
- TEMPLATE_DIRS=(
- os.path.join(os.path.dirname(upath(__file__)), 'templates'),
- ),
- USE_TZ=False,
-)
-class PasswordResetFormTest(TestCase):
-
- fixtures = ['authtestdata.json']
-
- def create_dummy_user(self):
- """
- Create a user and return a tuple (user_object, username, email).
- """
- username = 'jsmith'
- email = 'jsmith@example.com'
- user = User.objects.create_user(username, email, 'test123')
- return (user, username, email)
-
- def test_invalid_email(self):
- data = {'email': 'not valid'}
- form = PasswordResetForm(data)
- self.assertFalse(form.is_valid())
- self.assertEqual(form['email'].errors, [_('Enter a valid email address.')])
-
- def test_nonexistant_email(self):
- """
- Test nonexistant email address. This should not fail because it would
- expose information about registered users.
- """
- data = {'email': 'foo@bar.com'}
- form = PasswordResetForm(data)
- self.assertTrue(form.is_valid())
- self.assertEqual(len(mail.outbox), 0)
-
- def test_cleaned_data(self):
- (user, username, email) = self.create_dummy_user()
- data = {'email': email}
- form = PasswordResetForm(data)
- self.assertTrue(form.is_valid())
- form.save(domain_override='example.com')
- self.assertEqual(form.cleaned_data['email'], email)
- self.assertEqual(len(mail.outbox), 1)
-
- def test_custom_email_subject(self):
- data = {'email': 'testclient@example.com'}
- form = PasswordResetForm(data)
- self.assertTrue(form.is_valid())
- # Since we're not providing a request object, we must provide a
- # domain_override to prevent the save operation from failing in the
- # potential case where contrib.sites is not installed. Refs #16412.
- form.save(domain_override='example.com')
- self.assertEqual(len(mail.outbox), 1)
- self.assertEqual(mail.outbox[0].subject, 'Custom password reset on example.com')
-
- def test_preserve_username_case(self):
- """
- Preserve the case of the user name (before the @ in the email address)
- when creating a user (#5605).
- """
- user = User.objects.create_user('forms_test2', 'tesT@EXAMple.com', 'test')
- self.assertEqual(user.email, 'tesT@example.com')
- user = User.objects.create_user('forms_test3', 'tesT', 'test')
- self.assertEqual(user.email, 'tesT')
-
- def test_inactive_user(self):
- """
- Test that inactive user cannot receive password reset email.
- """
- (user, username, email) = self.create_dummy_user()
- user.is_active = False
- user.save()
- form = PasswordResetForm({'email': email})
- self.assertTrue(form.is_valid())
- form.save()
- self.assertEqual(len(mail.outbox), 0)
-
- def test_unusable_password(self):
- user = User.objects.create_user('testuser', 'test@example.com', 'test')
- data = {"email": "test@example.com"}
- form = PasswordResetForm(data)
- self.assertTrue(form.is_valid())
- user.set_unusable_password()
- user.save()
- form = PasswordResetForm(data)
- # The form itself is valid, but no email is sent
- self.assertTrue(form.is_valid())
- form.save()
- self.assertEqual(len(mail.outbox), 0)
-
-
-class ReadOnlyPasswordHashTest(TestCase):
-
- def test_bug_19349_render_with_none_value(self):
- # Rendering the widget with value set to None
- # mustn't raise an exception.
- widget = ReadOnlyPasswordHashWidget()
- html = widget.render(name='password', value=None, attrs={})
- self.assertIn(_("No password set."), html)
-
- def test_readonly_field_has_changed(self):
- field = ReadOnlyPasswordHashField()
- self.assertFalse(field._has_changed('aaa', 'bbb'))
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/test_handlers.py b/lib/python2.7/site-packages/django/contrib/auth/tests/test_handlers.py
deleted file mode 100644
index b86775f..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/test_handlers.py
+++ /dev/null
@@ -1,79 +0,0 @@
-from __future__ import unicode_literals
-
-from django.contrib.auth.handlers.modwsgi import check_password, groups_for_user
-from django.contrib.auth.models import User, Group
-from django.contrib.auth.tests.custom_user import CustomUser
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.test import TransactionTestCase
-from django.test.utils import override_settings
-
-
-# This must be a TransactionTestCase because the WSGI auth handler performs
-# its own transaction management.
-class ModWsgiHandlerTestCase(TransactionTestCase):
- """
- Tests for the mod_wsgi authentication handler
- """
-
- available_apps = [
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- ]
-
- @skipIfCustomUser
- def test_check_password(self):
- """
- Verify that check_password returns the correct values as per
- http://code.google.com/p/modwsgi/wiki/AccessControlMechanisms#Apache_Authentication_Provider
- """
- User.objects.create_user('test', 'test@example.com', 'test')
-
- # User not in database
- self.assertTrue(check_password({}, 'unknown', '') is None)
-
- # Valid user with correct password
- self.assertTrue(check_password({}, 'test', 'test'))
-
- # correct password, but user is inactive
- User.objects.filter(username='test').update(is_active=False)
- self.assertFalse(check_password({}, 'test', 'test'))
-
- # Valid user with incorrect password
- self.assertFalse(check_password({}, 'test', 'incorrect'))
-
- @override_settings(AUTH_USER_MODEL='auth.CustomUser')
- def test_check_password_custom_user(self):
- """
- Verify that check_password returns the correct values as per
- http://code.google.com/p/modwsgi/wiki/AccessControlMechanisms#Apache_Authentication_Provider
-
- with custom user installed
- """
-
- CustomUser._default_manager.create_user('test@example.com', '1990-01-01', 'test')
-
- # User not in database
- self.assertTrue(check_password({}, 'unknown', '') is None)
-
- # Valid user with correct password'
- self.assertTrue(check_password({}, 'test@example.com', 'test'))
-
- # Valid user with incorrect password
- self.assertFalse(check_password({}, 'test@example.com', 'incorrect'))
-
- @skipIfCustomUser
- def test_groups_for_user(self):
- """
- Check that groups_for_user returns correct values as per
- http://code.google.com/p/modwsgi/wiki/AccessControlMechanisms#Apache_Group_Authorisation
- """
- user1 = User.objects.create_user('test', 'test@example.com', 'test')
- User.objects.create_user('test1', 'test1@example.com', 'test1')
- group = Group.objects.create(name='test_group')
- user1.groups.add(group)
-
- # User not in database
- self.assertEqual(groups_for_user({}, 'unknown'), [])
-
- self.assertEqual(groups_for_user({}, 'test'), [b'test_group'])
- self.assertEqual(groups_for_user({}, 'test1'), [])
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/test_hashers.py b/lib/python2.7/site-packages/django/contrib/auth/tests/test_hashers.py
deleted file mode 100644
index dac655a..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/test_hashers.py
+++ /dev/null
@@ -1,322 +0,0 @@
-# -*- coding: utf-8 -*-
-from __future__ import unicode_literals
-
-from django.conf.global_settings import PASSWORD_HASHERS as default_hashers
-from django.contrib.auth.hashers import (is_password_usable, BasePasswordHasher,
- check_password, make_password, PBKDF2PasswordHasher, load_hashers, PBKDF2SHA1PasswordHasher,
- get_hasher, identify_hasher, UNUSABLE_PASSWORD_PREFIX, UNUSABLE_PASSWORD_SUFFIX_LENGTH)
-from django.test import SimpleTestCase
-from django.utils import six
-from django.utils import unittest
-from django.utils.unittest import skipUnless
-
-
-try:
- import crypt
-except ImportError:
- crypt = None
-
-try:
- import bcrypt
-except ImportError:
- bcrypt = None
-
-
-class PBKDF2SingleIterationHasher(PBKDF2PasswordHasher):
- iterations = 1
-
-
-class TestUtilsHashPass(SimpleTestCase):
-
- def setUp(self):
- load_hashers(password_hashers=default_hashers)
-
- def test_simple(self):
- encoded = make_password('lètmein')
- self.assertTrue(encoded.startswith('pbkdf2_sha256$'))
- self.assertTrue(is_password_usable(encoded))
- self.assertTrue(check_password('lètmein', encoded))
- self.assertFalse(check_password('lètmeinz', encoded))
- # Blank passwords
- blank_encoded = make_password('')
- self.assertTrue(blank_encoded.startswith('pbkdf2_sha256$'))
- self.assertTrue(is_password_usable(blank_encoded))
- self.assertTrue(check_password('', blank_encoded))
- self.assertFalse(check_password(' ', blank_encoded))
-
- def test_pkbdf2(self):
- encoded = make_password('lètmein', 'seasalt', 'pbkdf2_sha256')
- self.assertEqual(encoded,
- 'pbkdf2_sha256$12000$seasalt$Ybw8zsFxqja97tY/o6G+Fy1ksY4U/Hw3DRrGED6Up4s=')
- self.assertTrue(is_password_usable(encoded))
- self.assertTrue(check_password('lètmein', encoded))
- self.assertFalse(check_password('lètmeinz', encoded))
- self.assertEqual(identify_hasher(encoded).algorithm, "pbkdf2_sha256")
- # Blank passwords
- blank_encoded = make_password('', 'seasalt', 'pbkdf2_sha256')
- self.assertTrue(blank_encoded.startswith('pbkdf2_sha256$'))
- self.assertTrue(is_password_usable(blank_encoded))
- self.assertTrue(check_password('', blank_encoded))
- self.assertFalse(check_password(' ', blank_encoded))
-
- def test_sha1(self):
- encoded = make_password('lètmein', 'seasalt', 'sha1')
- self.assertEqual(encoded,
- 'sha1$seasalt$cff36ea83f5706ce9aa7454e63e431fc726b2dc8')
- self.assertTrue(is_password_usable(encoded))
- self.assertTrue(check_password('lètmein', encoded))
- self.assertFalse(check_password('lètmeinz', encoded))
- self.assertEqual(identify_hasher(encoded).algorithm, "sha1")
- # Blank passwords
- blank_encoded = make_password('', 'seasalt', 'sha1')
- self.assertTrue(blank_encoded.startswith('sha1$'))
- self.assertTrue(is_password_usable(blank_encoded))
- self.assertTrue(check_password('', blank_encoded))
- self.assertFalse(check_password(' ', blank_encoded))
-
- def test_md5(self):
- encoded = make_password('lètmein', 'seasalt', 'md5')
- self.assertEqual(encoded,
- 'md5$seasalt$3f86d0d3d465b7b458c231bf3555c0e3')
- self.assertTrue(is_password_usable(encoded))
- self.assertTrue(check_password('lètmein', encoded))
- self.assertFalse(check_password('lètmeinz', encoded))
- self.assertEqual(identify_hasher(encoded).algorithm, "md5")
- # Blank passwords
- blank_encoded = make_password('', 'seasalt', 'md5')
- self.assertTrue(blank_encoded.startswith('md5$'))
- self.assertTrue(is_password_usable(blank_encoded))
- self.assertTrue(check_password('', blank_encoded))
- self.assertFalse(check_password(' ', blank_encoded))
-
- def test_unsalted_md5(self):
- encoded = make_password('lètmein', '', 'unsalted_md5')
- self.assertEqual(encoded, '88a434c88cca4e900f7874cd98123f43')
- self.assertTrue(is_password_usable(encoded))
- self.assertTrue(check_password('lètmein', encoded))
- self.assertFalse(check_password('lètmeinz', encoded))
- self.assertEqual(identify_hasher(encoded).algorithm, "unsalted_md5")
- # Alternate unsalted syntax
- alt_encoded = "md5$$%s" % encoded
- self.assertTrue(is_password_usable(alt_encoded))
- self.assertTrue(check_password('lètmein', alt_encoded))
- self.assertFalse(check_password('lètmeinz', alt_encoded))
- # Blank passwords
- blank_encoded = make_password('', '', 'unsalted_md5')
- self.assertTrue(is_password_usable(blank_encoded))
- self.assertTrue(check_password('', blank_encoded))
- self.assertFalse(check_password(' ', blank_encoded))
-
- def test_unsalted_sha1(self):
- encoded = make_password('lètmein', '', 'unsalted_sha1')
- self.assertEqual(encoded, 'sha1$$6d138ca3ae545631b3abd71a4f076ce759c5700b')
- self.assertTrue(is_password_usable(encoded))
- self.assertTrue(check_password('lètmein', encoded))
- self.assertFalse(check_password('lètmeinz', encoded))
- self.assertEqual(identify_hasher(encoded).algorithm, "unsalted_sha1")
- # Raw SHA1 isn't acceptable
- alt_encoded = encoded[6:]
- self.assertFalse(check_password('lètmein', alt_encoded))
- # Blank passwords
- blank_encoded = make_password('', '', 'unsalted_sha1')
- self.assertTrue(blank_encoded.startswith('sha1$'))
- self.assertTrue(is_password_usable(blank_encoded))
- self.assertTrue(check_password('', blank_encoded))
- self.assertFalse(check_password(' ', blank_encoded))
-
- @skipUnless(crypt, "no crypt module to generate password.")
- def test_crypt(self):
- encoded = make_password('lètmei', 'ab', 'crypt')
- self.assertEqual(encoded, 'crypt$$ab1Hv2Lg7ltQo')
- self.assertTrue(is_password_usable(encoded))
- self.assertTrue(check_password('lètmei', encoded))
- self.assertFalse(check_password('lètmeiz', encoded))
- self.assertEqual(identify_hasher(encoded).algorithm, "crypt")
- # Blank passwords
- blank_encoded = make_password('', 'ab', 'crypt')
- self.assertTrue(blank_encoded.startswith('crypt$'))
- self.assertTrue(is_password_usable(blank_encoded))
- self.assertTrue(check_password('', blank_encoded))
- self.assertFalse(check_password(' ', blank_encoded))
-
- @skipUnless(bcrypt, "bcrypt not installed")
- def test_bcrypt_sha256(self):
- encoded = make_password('lètmein', hasher='bcrypt_sha256')
- self.assertTrue(is_password_usable(encoded))
- self.assertTrue(encoded.startswith('bcrypt_sha256$'))
- self.assertTrue(check_password('lètmein', encoded))
- self.assertFalse(check_password('lètmeinz', encoded))
- self.assertEqual(identify_hasher(encoded).algorithm, "bcrypt_sha256")
-
- # Verify that password truncation no longer works
- password = ('VSK0UYV6FFQVZ0KG88DYN9WADAADZO1CTSIVDJUNZSUML6IBX7LN7ZS3R5'
- 'JGB3RGZ7VI7G7DJQ9NI8BQFSRPTG6UWTTVESA5ZPUN')
- encoded = make_password(password, hasher='bcrypt_sha256')
- self.assertTrue(check_password(password, encoded))
- self.assertFalse(check_password(password[:72], encoded))
- # Blank passwords
- blank_encoded = make_password('', hasher='bcrypt_sha256')
- self.assertTrue(blank_encoded.startswith('bcrypt_sha256$'))
- self.assertTrue(is_password_usable(blank_encoded))
- self.assertTrue(check_password('', blank_encoded))
- self.assertFalse(check_password(' ', blank_encoded))
-
- @skipUnless(bcrypt, "bcrypt not installed")
- def test_bcrypt(self):
- encoded = make_password('lètmein', hasher='bcrypt')
- self.assertTrue(is_password_usable(encoded))
- self.assertTrue(encoded.startswith('bcrypt$'))
- self.assertTrue(check_password('lètmein', encoded))
- self.assertFalse(check_password('lètmeinz', encoded))
- self.assertEqual(identify_hasher(encoded).algorithm, "bcrypt")
- # Blank passwords
- blank_encoded = make_password('', hasher='bcrypt')
- self.assertTrue(blank_encoded.startswith('bcrypt$'))
- self.assertTrue(is_password_usable(blank_encoded))
- self.assertTrue(check_password('', blank_encoded))
- self.assertFalse(check_password(' ', blank_encoded))
-
- def test_unusable(self):
- encoded = make_password(None)
- self.assertEqual(len(encoded), len(UNUSABLE_PASSWORD_PREFIX) + UNUSABLE_PASSWORD_SUFFIX_LENGTH)
- self.assertFalse(is_password_usable(encoded))
- self.assertFalse(check_password(None, encoded))
- self.assertFalse(check_password(encoded, encoded))
- self.assertFalse(check_password(UNUSABLE_PASSWORD_PREFIX, encoded))
- self.assertFalse(check_password('', encoded))
- self.assertFalse(check_password('lètmein', encoded))
- self.assertFalse(check_password('lètmeinz', encoded))
- self.assertRaises(ValueError, identify_hasher, encoded)
- # Assert that the unusable passwords actually contain a random part.
- # This might fail one day due to a hash collision.
- self.assertNotEqual(encoded, make_password(None), "Random password collision?")
-
- def test_unspecified_password(self):
- """
- Makes sure specifying no plain password with a valid encoded password
- returns `False`.
- """
- self.assertFalse(check_password(None, make_password('lètmein')))
-
- def test_bad_algorithm(self):
- with self.assertRaises(ValueError):
- make_password('lètmein', hasher='lolcat')
- self.assertRaises(ValueError, identify_hasher, "lolcat$salt$hash")
-
- def test_bad_encoded(self):
- self.assertFalse(is_password_usable('lètmein_badencoded'))
- self.assertFalse(is_password_usable(''))
-
- def test_low_level_pkbdf2(self):
- hasher = PBKDF2PasswordHasher()
- encoded = hasher.encode('lètmein', 'seasalt2')
- self.assertEqual(encoded,
- 'pbkdf2_sha256$12000$seasalt2$hlDLKsxgkgb1aeOppkM5atCYw5rPzAjCNQZ4NYyUROw=')
- self.assertTrue(hasher.verify('lètmein', encoded))
-
- def test_low_level_pbkdf2_sha1(self):
- hasher = PBKDF2SHA1PasswordHasher()
- encoded = hasher.encode('lètmein', 'seasalt2')
- self.assertEqual(encoded,
- 'pbkdf2_sha1$12000$seasalt2$JeMRVfjjgtWw3/HzlnlfqBnQ6CA=')
- self.assertTrue(hasher.verify('lètmein', encoded))
-
- def test_upgrade(self):
- self.assertEqual('pbkdf2_sha256', get_hasher('default').algorithm)
- for algo in ('sha1', 'md5'):
- encoded = make_password('lètmein', hasher=algo)
- state = {'upgraded': False}
- def setter(password):
- state['upgraded'] = True
- self.assertTrue(check_password('lètmein', encoded, setter))
- self.assertTrue(state['upgraded'])
-
- def test_no_upgrade(self):
- encoded = make_password('lètmein')
- state = {'upgraded': False}
- def setter():
- state['upgraded'] = True
- self.assertFalse(check_password('WRONG', encoded, setter))
- self.assertFalse(state['upgraded'])
-
- def test_no_upgrade_on_incorrect_pass(self):
- self.assertEqual('pbkdf2_sha256', get_hasher('default').algorithm)
- for algo in ('sha1', 'md5'):
- encoded = make_password('lètmein', hasher=algo)
- state = {'upgraded': False}
- def setter():
- state['upgraded'] = True
- self.assertFalse(check_password('WRONG', encoded, setter))
- self.assertFalse(state['upgraded'])
-
- def test_pbkdf2_upgrade(self):
- self.assertEqual('pbkdf2_sha256', get_hasher('default').algorithm)
- hasher = get_hasher('default')
- self.assertNotEqual(hasher.iterations, 1)
-
- old_iterations = hasher.iterations
- try:
- # Generate a password with 1 iteration.
- hasher.iterations = 1
- encoded = make_password('letmein')
- algo, iterations, salt, hash = encoded.split('$', 3)
- self.assertEqual(iterations, '1')
-
- state = {'upgraded': False}
- def setter(password):
- state['upgraded'] = True
-
- # Check that no upgrade is triggerd
- self.assertTrue(check_password('letmein', encoded, setter))
- self.assertFalse(state['upgraded'])
-
- # Revert to the old iteration count and ...
- hasher.iterations = old_iterations
-
- # ... check if the password would get updated to the new iteration count.
- self.assertTrue(check_password('letmein', encoded, setter))
- self.assertTrue(state['upgraded'])
- finally:
- hasher.iterations = old_iterations
-
- def test_pbkdf2_upgrade_new_hasher(self):
- self.assertEqual('pbkdf2_sha256', get_hasher('default').algorithm)
- hasher = get_hasher('default')
- self.assertNotEqual(hasher.iterations, 1)
-
- state = {'upgraded': False}
-
- def setter(password):
- state['upgraded'] = True
-
- with self.settings(PASSWORD_HASHERS=[
- 'django.contrib.auth.tests.test_hashers.PBKDF2SingleIterationHasher']):
- encoded = make_password('letmein')
- algo, iterations, salt, hash = encoded.split('$', 3)
- self.assertEqual(iterations, '1')
-
- # Check that no upgrade is triggerd
- self.assertTrue(check_password('letmein', encoded, setter))
- self.assertFalse(state['upgraded'])
-
- # Revert to the old iteration count and check if the password would get
- # updated to the new iteration count.
- with self.settings(PASSWORD_HASHERS=[
- 'django.contrib.auth.hashers.PBKDF2PasswordHasher',
- 'django.contrib.auth.tests.test_hashers.PBKDF2SingleIterationHasher']):
- self.assertTrue(check_password('letmein', encoded, setter))
- self.assertTrue(state['upgraded'])
-
- def test_load_library_no_algorithm(self):
- with self.assertRaises(ValueError) as e:
- BasePasswordHasher()._load_library()
- self.assertEqual("Hasher 'BasePasswordHasher' doesn't specify a "
- "library attribute", str(e.exception))
-
- def test_load_library_importerror(self):
- PlainHasher = type(str('PlainHasher'), (BasePasswordHasher,),
- {'algorithm': 'plain', 'library': 'plain'})
- # Python 3.3 adds quotes around module name
- with six.assertRaisesRegex(self, ValueError,
- "Couldn't load 'PlainHasher' algorithm library: No module named '?plain'?"):
- PlainHasher()._load_library()
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/test_management.py b/lib/python2.7/site-packages/django/contrib/auth/tests/test_management.py
deleted file mode 100644
index 91a7cab..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/test_management.py
+++ /dev/null
@@ -1,249 +0,0 @@
-from __future__ import unicode_literals
-from datetime import date
-
-from django.contrib.auth import models, management
-from django.contrib.auth.management import create_permissions
-from django.contrib.auth.management.commands import changepassword
-from django.contrib.auth.models import User
-from django.contrib.auth.tests.custom_user import CustomUser
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.contrib.contenttypes.models import ContentType
-from django.core.management import call_command
-from django.core.management.base import CommandError
-from django.core.management.validation import get_validation_errors
-from django.db.models.loading import get_app
-from django.test import TestCase
-from django.test.utils import override_settings
-from django.utils import six
-from django.utils.six import StringIO
-
-
-@skipIfCustomUser
-class GetDefaultUsernameTestCase(TestCase):
-
- def setUp(self):
- self.old_get_system_username = management.get_system_username
-
- def tearDown(self):
- management.get_system_username = self.old_get_system_username
-
- def test_actual_implementation(self):
- self.assertIsInstance(management.get_system_username(), six.text_type)
-
- def test_simple(self):
- management.get_system_username = lambda: 'joe'
- self.assertEqual(management.get_default_username(), 'joe')
-
- def test_existing(self):
- models.User.objects.create(username='joe')
- management.get_system_username = lambda: 'joe'
- self.assertEqual(management.get_default_username(), '')
- self.assertEqual(
- management.get_default_username(check_db=False), 'joe')
-
- def test_i18n(self):
- # 'Julia' with accented 'u':
- management.get_system_username = lambda: 'J\xfalia'
- self.assertEqual(management.get_default_username(), 'julia')
-
-
-@skipIfCustomUser
-class ChangepasswordManagementCommandTestCase(TestCase):
-
- def setUp(self):
- self.user = models.User.objects.create_user(username='joe', password='qwerty')
- self.stdout = StringIO()
- self.stderr = StringIO()
-
- def tearDown(self):
- self.stdout.close()
- self.stderr.close()
-
- def test_that_changepassword_command_changes_joes_password(self):
- "Executing the changepassword management command should change joe's password"
- self.assertTrue(self.user.check_password('qwerty'))
- command = changepassword.Command()
- command._get_pass = lambda *args: 'not qwerty'
-
- command.execute("joe", stdout=self.stdout)
- command_output = self.stdout.getvalue().strip()
-
- self.assertEqual(command_output, "Changing password for user 'joe'\nPassword changed successfully for user 'joe'")
- self.assertTrue(models.User.objects.get(username="joe").check_password("not qwerty"))
-
- def test_that_max_tries_exits_1(self):
- """
- A CommandError should be thrown by handle() if the user enters in
- mismatched passwords three times.
- """
- command = changepassword.Command()
- command._get_pass = lambda *args: args or 'foo'
-
- with self.assertRaises(CommandError):
- command.execute("joe", stdout=self.stdout, stderr=self.stderr)
-
- def test_that_changepassword_command_works_with_nonascii_output(self):
- """
- #21627 -- Executing the changepassword management command should allow
- non-ASCII characters from the User object representation.
- """
- # 'Julia' with accented 'u':
- models.User.objects.create_user(username='J\xfalia', password='qwerty')
-
- command = changepassword.Command()
- command._get_pass = lambda *args: 'not qwerty'
-
- command.execute("J\xfalia", stdout=self.stdout)
-
-@skipIfCustomUser
-class CreatesuperuserManagementCommandTestCase(TestCase):
-
- def test_createsuperuser(self):
- "Check the operation of the createsuperuser management command"
- # We can use the management command to create a superuser
- new_io = StringIO()
- call_command("createsuperuser",
- interactive=False,
- username="joe",
- email="joe@somewhere.org",
- stdout=new_io
- )
- command_output = new_io.getvalue().strip()
- self.assertEqual(command_output, 'Superuser created successfully.')
- u = User.objects.get(username="joe")
- self.assertEqual(u.email, 'joe@somewhere.org')
-
- # created password should be unusable
- self.assertFalse(u.has_usable_password())
-
- def test_verbosity_zero(self):
- # We can supress output on the management command
- new_io = StringIO()
- call_command("createsuperuser",
- interactive=False,
- username="joe2",
- email="joe2@somewhere.org",
- verbosity=0,
- stdout=new_io
- )
- command_output = new_io.getvalue().strip()
- self.assertEqual(command_output, '')
- u = User.objects.get(username="joe2")
- self.assertEqual(u.email, 'joe2@somewhere.org')
- self.assertFalse(u.has_usable_password())
-
- def test_email_in_username(self):
- new_io = StringIO()
- call_command("createsuperuser",
- interactive=False,
- username="joe+admin@somewhere.org",
- email="joe@somewhere.org",
- stdout=new_io
- )
- u = User._default_manager.get(username="joe+admin@somewhere.org")
- self.assertEqual(u.email, 'joe@somewhere.org')
- self.assertFalse(u.has_usable_password())
-
- @override_settings(AUTH_USER_MODEL='auth.CustomUser')
- def test_swappable_user(self):
- "A superuser can be created when a custom User model is in use"
- # We can use the management command to create a superuser
- # We skip validation because the temporary substitution of the
- # swappable User model messes with validation.
- new_io = StringIO()
- call_command("createsuperuser",
- interactive=False,
- email="joe@somewhere.org",
- date_of_birth="1976-04-01",
- stdout=new_io,
- skip_validation=True
- )
- command_output = new_io.getvalue().strip()
- self.assertEqual(command_output, 'Superuser created successfully.')
- u = CustomUser._default_manager.get(email="joe@somewhere.org")
- self.assertEqual(u.date_of_birth, date(1976, 4, 1))
-
- # created password should be unusable
- self.assertFalse(u.has_usable_password())
-
- @override_settings(AUTH_USER_MODEL='auth.CustomUser')
- def test_swappable_user_missing_required_field(self):
- "A Custom superuser won't be created when a required field isn't provided"
- # We can use the management command to create a superuser
- # We skip validation because the temporary substitution of the
- # swappable User model messes with validation.
- new_io = StringIO()
- with self.assertRaises(CommandError):
- call_command("createsuperuser",
- interactive=False,
- username="joe@somewhere.org",
- stdout=new_io,
- stderr=new_io,
- skip_validation=True
- )
-
- self.assertEqual(CustomUser._default_manager.count(), 0)
-
-
-class CustomUserModelValidationTestCase(TestCase):
- @override_settings(AUTH_USER_MODEL='auth.CustomUserNonListRequiredFields')
- def test_required_fields_is_list(self):
- "REQUIRED_FIELDS should be a list."
- new_io = StringIO()
- get_validation_errors(new_io, get_app('auth'))
- self.assertIn("The REQUIRED_FIELDS must be a list or tuple.", new_io.getvalue())
-
- @override_settings(AUTH_USER_MODEL='auth.CustomUserBadRequiredFields')
- def test_username_not_in_required_fields(self):
- "USERNAME_FIELD should not appear in REQUIRED_FIELDS."
- new_io = StringIO()
- get_validation_errors(new_io, get_app('auth'))
- self.assertIn("The field named as the USERNAME_FIELD should not be included in REQUIRED_FIELDS on a swappable User model.", new_io.getvalue())
-
- @override_settings(AUTH_USER_MODEL='auth.CustomUserNonUniqueUsername')
- def test_username_non_unique(self):
- "A non-unique USERNAME_FIELD should raise a model validation error."
- new_io = StringIO()
- get_validation_errors(new_io, get_app('auth'))
- self.assertIn("The USERNAME_FIELD must be unique. Add unique=True to the field parameters.", new_io.getvalue())
-
-
-class PermissionDuplicationTestCase(TestCase):
-
- def setUp(self):
- self._original_permissions = models.Permission._meta.permissions[:]
-
- def tearDown(self):
- models.Permission._meta.permissions = self._original_permissions
- ContentType.objects.clear_cache()
-
- def test_duplicated_permissions(self):
- """
- Test that we show proper error message if we are trying to create
- duplicate permissions.
- """
- # check duplicated default permission
- models.Permission._meta.permissions = [
- ('change_permission', 'Can edit permission (duplicate)')]
- six.assertRaisesRegex(self, CommandError,
- "The permission codename 'change_permission' clashes with a "
- "builtin permission for model 'auth.Permission'.",
- create_permissions, models, [], verbosity=0)
-
- # check duplicated custom permissions
- models.Permission._meta.permissions = [
- ('my_custom_permission', 'Some permission'),
- ('other_one', 'Some other permission'),
- ('my_custom_permission', 'Some permission with duplicate permission code'),
- ]
- six.assertRaisesRegex(self, CommandError,
- "The permission codename 'my_custom_permission' is duplicated for model "
- "'auth.Permission'.",
- create_permissions, models, [], verbosity=0)
-
- # should not raise anything
- models.Permission._meta.permissions = [
- ('my_custom_permission', 'Some permission'),
- ('other_one', 'Some other permission'),
- ]
- create_permissions(models, [], verbosity=0)
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/test_models.py b/lib/python2.7/site-packages/django/contrib/auth/tests/test_models.py
deleted file mode 100644
index d5bf91d..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/test_models.py
+++ /dev/null
@@ -1,168 +0,0 @@
-import warnings
-
-from django.conf import settings
-from django.contrib.auth import get_user_model
-from django.contrib.auth.models import (Group, User, SiteProfileNotAvailable,
- UserManager)
-from django.contrib.auth.tests.custom_user import IsActiveTestUser1
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.db.models.signals import post_save
-from django.test import TestCase
-from django.test.utils import override_settings
-from django.utils import six
-
-
-@skipIfCustomUser
-@override_settings(USE_TZ=False, AUTH_PROFILE_MODULE='')
-class ProfileTestCase(TestCase):
-
- def test_site_profile_not_available(self):
- user = User.objects.create(username='testclient')
-
- # calling get_profile without AUTH_PROFILE_MODULE set
- del settings.AUTH_PROFILE_MODULE
- with warnings.catch_warnings():
- warnings.simplefilter("ignore", DeprecationWarning)
- with six.assertRaisesRegex(self, SiteProfileNotAvailable,
- "You need to set AUTH_PROFILE_MODULE in your project"):
- user.get_profile()
-
- # Bad syntax in AUTH_PROFILE_MODULE:
- settings.AUTH_PROFILE_MODULE = 'foobar'
- with warnings.catch_warnings():
- warnings.simplefilter("ignore", DeprecationWarning)
- with six.assertRaisesRegex(self, SiteProfileNotAvailable,
- "app_label and model_name should be separated by a dot"):
- user.get_profile()
-
- # module that doesn't exist
- settings.AUTH_PROFILE_MODULE = 'foo.bar'
- with warnings.catch_warnings():
- warnings.simplefilter("ignore", DeprecationWarning)
- with six.assertRaisesRegex(self, SiteProfileNotAvailable,
- "Unable to load the profile model"):
- user.get_profile()
-
-
-@skipIfCustomUser
-@override_settings(USE_TZ=False)
-class NaturalKeysTestCase(TestCase):
- fixtures = ['authtestdata.json']
-
- def test_user_natural_key(self):
- staff_user = User.objects.get(username='staff')
- self.assertEqual(User.objects.get_by_natural_key('staff'), staff_user)
- self.assertEqual(staff_user.natural_key(), ('staff',))
-
- def test_group_natural_key(self):
- users_group = Group.objects.create(name='users')
- self.assertEqual(Group.objects.get_by_natural_key('users'), users_group)
-
-
-@skipIfCustomUser
-@override_settings(USE_TZ=False)
-class LoadDataWithoutNaturalKeysTestCase(TestCase):
- fixtures = ['regular.json']
-
- def test_user_is_created_and_added_to_group(self):
- user = User.objects.get(username='my_username')
- group = Group.objects.get(name='my_group')
- self.assertEqual(group, user.groups.get())
-
-
-@skipIfCustomUser
-@override_settings(USE_TZ=False)
-class LoadDataWithNaturalKeysTestCase(TestCase):
- fixtures = ['natural.json']
-
- def test_user_is_created_and_added_to_group(self):
- user = User.objects.get(username='my_username')
- group = Group.objects.get(name='my_group')
- self.assertEqual(group, user.groups.get())
-
-
-@skipIfCustomUser
-class UserManagerTestCase(TestCase):
-
- def test_create_user(self):
- email_lowercase = 'normal@normal.com'
- user = User.objects.create_user('user', email_lowercase)
- self.assertEqual(user.email, email_lowercase)
- self.assertEqual(user.username, 'user')
- self.assertFalse(user.has_usable_password())
-
- def test_create_user_email_domain_normalize_rfc3696(self):
- # According to http://tools.ietf.org/html/rfc3696#section-3
- # the "@" symbol can be part of the local part of an email address
- returned = UserManager.normalize_email(r'Abc\@DEF@EXAMPLE.com')
- self.assertEqual(returned, r'Abc\@DEF@example.com')
-
- def test_create_user_email_domain_normalize(self):
- returned = UserManager.normalize_email('normal@DOMAIN.COM')
- self.assertEqual(returned, 'normal@domain.com')
-
- def test_create_user_email_domain_normalize_with_whitespace(self):
- returned = UserManager.normalize_email('email\ with_whitespace@D.COM')
- self.assertEqual(returned, 'email\ with_whitespace@d.com')
-
- def test_empty_username(self):
- self.assertRaisesMessage(ValueError,
- 'The given username must be set',
- User.objects.create_user, username='')
-
-
-class IsActiveTestCase(TestCase):
- """
- Tests the behavior of the guaranteed is_active attribute
- """
-
- @skipIfCustomUser
- def test_builtin_user_isactive(self):
- user = User.objects.create(username='foo', email='foo@bar.com')
- # is_active is true by default
- self.assertEqual(user.is_active, True)
- user.is_active = False
- user.save()
- user_fetched = User.objects.get(pk=user.pk)
- # the is_active flag is saved
- self.assertFalse(user_fetched.is_active)
-
- @override_settings(AUTH_USER_MODEL='auth.IsActiveTestUser1')
- def test_is_active_field_default(self):
- """
- tests that the default value for is_active is provided
- """
- UserModel = get_user_model()
- user = UserModel(username='foo')
- self.assertEqual(user.is_active, True)
- # you can set the attribute - but it will not save
- user.is_active = False
- # there should be no problem saving - but the attribute is not saved
- user.save()
- user_fetched = UserModel._default_manager.get(pk=user.pk)
- # the attribute is always true for newly retrieved instance
- self.assertEqual(user_fetched.is_active, True)
-
-
-@skipIfCustomUser
-class TestCreateSuperUserSignals(TestCase):
- """
- Simple test case for ticket #20541
- """
- def post_save_listener(self, *args, **kwargs):
- self.signals_count += 1
-
- def setUp(self):
- self.signals_count = 0
- post_save.connect(self.post_save_listener, sender=User)
-
- def tearDown(self):
- post_save.disconnect(self.post_save_listener, sender=User)
-
- def test_create_user(self):
- User.objects.create_user("JohnDoe")
- self.assertEqual(self.signals_count, 1)
-
- def test_create_superuser(self):
- User.objects.create_superuser("JohnDoe", "mail@example.com", "1")
- self.assertEqual(self.signals_count, 1)
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/test_remote_user.py b/lib/python2.7/site-packages/django/contrib/auth/tests/test_remote_user.py
deleted file mode 100644
index 5c5024e..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/test_remote_user.py
+++ /dev/null
@@ -1,198 +0,0 @@
-from datetime import datetime
-
-from django.conf import settings
-from django.contrib.auth import authenticate
-from django.contrib.auth.backends import RemoteUserBackend
-from django.contrib.auth.models import User
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.test import TestCase
-from django.utils import timezone
-
-
-@skipIfCustomUser
-class RemoteUserTest(TestCase):
-
- urls = 'django.contrib.auth.tests.urls'
- middleware = 'django.contrib.auth.middleware.RemoteUserMiddleware'
- backend = 'django.contrib.auth.backends.RemoteUserBackend'
-
- # Usernames to be passed in REMOTE_USER for the test_known_user test case.
- known_user = 'knownuser'
- known_user2 = 'knownuser2'
-
- def setUp(self):
- self.curr_middleware = settings.MIDDLEWARE_CLASSES
- self.curr_auth = settings.AUTHENTICATION_BACKENDS
- settings.MIDDLEWARE_CLASSES += (self.middleware,)
- settings.AUTHENTICATION_BACKENDS += (self.backend,)
-
- def test_no_remote_user(self):
- """
- Tests requests where no remote user is specified and insures that no
- users get created.
- """
- num_users = User.objects.count()
-
- response = self.client.get('/remote_user/')
- self.assertTrue(response.context['user'].is_anonymous())
- self.assertEqual(User.objects.count(), num_users)
-
- response = self.client.get('/remote_user/', REMOTE_USER=None)
- self.assertTrue(response.context['user'].is_anonymous())
- self.assertEqual(User.objects.count(), num_users)
-
- response = self.client.get('/remote_user/', REMOTE_USER='')
- self.assertTrue(response.context['user'].is_anonymous())
- self.assertEqual(User.objects.count(), num_users)
-
- def test_unknown_user(self):
- """
- Tests the case where the username passed in the header does not exist
- as a User.
- """
- num_users = User.objects.count()
- response = self.client.get('/remote_user/', REMOTE_USER='newuser')
- self.assertEqual(response.context['user'].username, 'newuser')
- self.assertEqual(User.objects.count(), num_users + 1)
- User.objects.get(username='newuser')
-
- # Another request with same user should not create any new users.
- response = self.client.get('/remote_user/', REMOTE_USER='newuser')
- self.assertEqual(User.objects.count(), num_users + 1)
-
- def test_known_user(self):
- """
- Tests the case where the username passed in the header is a valid User.
- """
- User.objects.create(username='knownuser')
- User.objects.create(username='knownuser2')
- num_users = User.objects.count()
- response = self.client.get('/remote_user/', REMOTE_USER=self.known_user)
- self.assertEqual(response.context['user'].username, 'knownuser')
- self.assertEqual(User.objects.count(), num_users)
- # Test that a different user passed in the headers causes the new user
- # to be logged in.
- response = self.client.get('/remote_user/', REMOTE_USER=self.known_user2)
- self.assertEqual(response.context['user'].username, 'knownuser2')
- self.assertEqual(User.objects.count(), num_users)
-
- def test_last_login(self):
- """
- Tests that a user's last_login is set the first time they make a
- request but not updated in subsequent requests with the same session.
- """
- user = User.objects.create(username='knownuser')
- # Set last_login to something so we can determine if it changes.
- default_login = datetime(2000, 1, 1)
- if settings.USE_TZ:
- default_login = default_login.replace(tzinfo=timezone.utc)
- user.last_login = default_login
- user.save()
-
- response = self.client.get('/remote_user/', REMOTE_USER=self.known_user)
- self.assertNotEqual(default_login, response.context['user'].last_login)
-
- user = User.objects.get(username='knownuser')
- user.last_login = default_login
- user.save()
- response = self.client.get('/remote_user/', REMOTE_USER=self.known_user)
- self.assertEqual(default_login, response.context['user'].last_login)
-
- def test_header_disappears(self):
- """
- Tests that a logged in user is logged out automatically when
- the REMOTE_USER header disappears during the same browser session.
- """
- User.objects.create(username='knownuser')
- # Known user authenticates
- response = self.client.get('/remote_user/', REMOTE_USER=self.known_user)
- self.assertEqual(response.context['user'].username, 'knownuser')
- # During the session, the REMOTE_USER header disappears. Should trigger logout.
- response = self.client.get('/remote_user/')
- self.assertEqual(response.context['user'].is_anonymous(), True)
- # verify the remoteuser middleware will not remove a user
- # authenticated via another backend
- User.objects.create_user(username='modeluser', password='foo')
- self.client.login(username='modeluser', password='foo')
- authenticate(username='modeluser', password='foo')
- response = self.client.get('/remote_user/')
- self.assertEqual(response.context['user'].username, 'modeluser')
-
- def tearDown(self):
- """Restores settings to avoid breaking other tests."""
- settings.MIDDLEWARE_CLASSES = self.curr_middleware
- settings.AUTHENTICATION_BACKENDS = self.curr_auth
-
-
-class RemoteUserNoCreateBackend(RemoteUserBackend):
- """Backend that doesn't create unknown users."""
- create_unknown_user = False
-
-
-@skipIfCustomUser
-class RemoteUserNoCreateTest(RemoteUserTest):
- """
- Contains the same tests as RemoteUserTest, but using a custom auth backend
- class that doesn't create unknown users.
- """
-
- backend =\
- 'django.contrib.auth.tests.test_remote_user.RemoteUserNoCreateBackend'
-
- def test_unknown_user(self):
- num_users = User.objects.count()
- response = self.client.get('/remote_user/', REMOTE_USER='newuser')
- self.assertTrue(response.context['user'].is_anonymous())
- self.assertEqual(User.objects.count(), num_users)
-
-
-class CustomRemoteUserBackend(RemoteUserBackend):
- """
- Backend that overrides RemoteUserBackend methods.
- """
-
- def clean_username(self, username):
- """
- Grabs username before the @ character.
- """
- return username.split('@')[0]
-
- def configure_user(self, user):
- """
- Sets user's email address.
- """
- user.email = 'user@example.com'
- user.save()
- return user
-
-
-@skipIfCustomUser
-class RemoteUserCustomTest(RemoteUserTest):
- """
- Tests a custom RemoteUserBackend subclass that overrides the clean_username
- and configure_user methods.
- """
-
- backend =\
- 'django.contrib.auth.tests.test_remote_user.CustomRemoteUserBackend'
- # REMOTE_USER strings with email addresses for the custom backend to
- # clean.
- known_user = 'knownuser@example.com'
- known_user2 = 'knownuser2@example.com'
-
- def test_known_user(self):
- """
- The strings passed in REMOTE_USER should be cleaned and the known users
- should not have been configured with an email address.
- """
- super(RemoteUserCustomTest, self).test_known_user()
- self.assertEqual(User.objects.get(username='knownuser').email, '')
- self.assertEqual(User.objects.get(username='knownuser2').email, '')
-
- def test_unknown_user(self):
- """
- The unknown user created should be configured with an email address.
- """
- super(RemoteUserCustomTest, self).test_unknown_user()
- newuser = User.objects.get(username='newuser')
- self.assertEqual(newuser.email, 'user@example.com')
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/test_signals.py b/lib/python2.7/site-packages/django/contrib/auth/tests/test_signals.py
deleted file mode 100644
index 024f44f..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/test_signals.py
+++ /dev/null
@@ -1,80 +0,0 @@
-from django.contrib.auth import signals
-from django.contrib.auth.models import User
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.test import TestCase
-from django.test.client import RequestFactory
-from django.test.utils import override_settings
-
-
-@skipIfCustomUser
-@override_settings(USE_TZ=False, PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',))
-class SignalTestCase(TestCase):
- urls = 'django.contrib.auth.tests.urls'
- fixtures = ['authtestdata.json']
-
- def listener_login(self, user, **kwargs):
- self.logged_in.append(user)
-
- def listener_logout(self, user, **kwargs):
- self.logged_out.append(user)
-
- def listener_login_failed(self, sender, credentials, **kwargs):
- self.login_failed.append(credentials)
-
- def setUp(self):
- """Set up the listeners and reset the logged in/logged out counters"""
- self.logged_in = []
- self.logged_out = []
- self.login_failed = []
- signals.user_logged_in.connect(self.listener_login)
- signals.user_logged_out.connect(self.listener_logout)
- signals.user_login_failed.connect(self.listener_login_failed)
-
- def tearDown(self):
- """Disconnect the listeners"""
- signals.user_logged_in.disconnect(self.listener_login)
- signals.user_logged_out.disconnect(self.listener_logout)
- signals.user_login_failed.disconnect(self.listener_login_failed)
-
- def test_login(self):
- # Only a successful login will trigger the success signal.
- self.client.login(username='testclient', password='bad')
- self.assertEqual(len(self.logged_in), 0)
- self.assertEqual(len(self.login_failed), 1)
- self.assertEqual(self.login_failed[0]['username'], 'testclient')
- # verify the password is cleansed
- self.assertTrue('***' in self.login_failed[0]['password'])
-
- # Like this:
- self.client.login(username='testclient', password='password')
- self.assertEqual(len(self.logged_in), 1)
- self.assertEqual(self.logged_in[0].username, 'testclient')
-
- # Ensure there were no more failures.
- self.assertEqual(len(self.login_failed), 1)
-
- def test_logout_anonymous(self):
- # The log_out function will still trigger the signal for anonymous
- # users.
- self.client.get('/logout/next_page/')
- self.assertEqual(len(self.logged_out), 1)
- self.assertEqual(self.logged_out[0], None)
-
- def test_logout(self):
- self.client.login(username='testclient', password='password')
- self.client.get('/logout/next_page/')
- self.assertEqual(len(self.logged_out), 1)
- self.assertEqual(self.logged_out[0].username, 'testclient')
-
- def test_update_last_login(self):
- """Ensure that only `last_login` is updated in `update_last_login`"""
- user = User.objects.get(pk=3)
- old_last_login = user.last_login
-
- user.username = "This username shouldn't get saved"
- request = RequestFactory().get('/login')
- signals.user_logged_in.send(sender=user.__class__, request=request,
- user=user)
- user = User.objects.get(pk=3)
- self.assertEqual(user.username, 'staff')
- self.assertNotEqual(user.last_login, old_last_login)
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/test_tokens.py b/lib/python2.7/site-packages/django/contrib/auth/tests/test_tokens.py
deleted file mode 100644
index e8aeb46..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/test_tokens.py
+++ /dev/null
@@ -1,69 +0,0 @@
-import sys
-from datetime import date, timedelta
-
-from django.conf import settings
-from django.contrib.auth.models import User
-from django.contrib.auth.tokens import PasswordResetTokenGenerator
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.test import TestCase
-from django.utils import unittest
-
-
-@skipIfCustomUser
-class TokenGeneratorTest(TestCase):
-
- def test_make_token(self):
- """
- Ensure that we can make a token and that it is valid
- """
- user = User.objects.create_user('tokentestuser', 'test2@example.com', 'testpw')
- p0 = PasswordResetTokenGenerator()
- tk1 = p0.make_token(user)
- self.assertTrue(p0.check_token(user, tk1))
-
- def test_10265(self):
- """
- Ensure that the token generated for a user created in the same request
- will work correctly.
- """
- # See ticket #10265
- user = User.objects.create_user('comebackkid', 'test3@example.com', 'testpw')
- p0 = PasswordResetTokenGenerator()
- tk1 = p0.make_token(user)
- reload = User.objects.get(username='comebackkid')
- tk2 = p0.make_token(reload)
- self.assertEqual(tk1, tk2)
-
- def test_timeout(self):
- """
- Ensure we can use the token after n days, but no greater.
- """
- # Uses a mocked version of PasswordResetTokenGenerator so we can change
- # the value of 'today'
- class Mocked(PasswordResetTokenGenerator):
- def __init__(self, today):
- self._today_val = today
- def _today(self):
- return self._today_val
-
- user = User.objects.create_user('tokentestuser', 'test2@example.com', 'testpw')
- p0 = PasswordResetTokenGenerator()
- tk1 = p0.make_token(user)
- p1 = Mocked(date.today() + timedelta(settings.PASSWORD_RESET_TIMEOUT_DAYS))
- self.assertTrue(p1.check_token(user, tk1))
-
- p2 = Mocked(date.today() + timedelta(settings.PASSWORD_RESET_TIMEOUT_DAYS + 1))
- self.assertFalse(p2.check_token(user, tk1))
-
- @unittest.skipIf(sys.version_info[:2] >= (3, 0), "Unnecessary test with Python 3")
- def test_date_length(self):
- """
- Make sure we don't allow overly long dates, causing a potential DoS.
- """
- user = User.objects.create_user('ima1337h4x0r', 'test4@example.com', 'p4ssw0rd')
- p0 = PasswordResetTokenGenerator()
-
- # This will put a 14-digit base36 timestamp into the token, which is too large.
- self.assertRaises(ValueError,
- p0._make_token_with_timestamp,
- user, 175455491841851871349)
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/test_views.py b/lib/python2.7/site-packages/django/contrib/auth/tests/test_views.py
deleted file mode 100644
index 118c090..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/test_views.py
+++ /dev/null
@@ -1,780 +0,0 @@
-import itertools
-import os
-import re
-
-from django.conf import global_settings, settings
-from django.contrib.sites.models import Site, RequestSite
-from django.contrib.admin.models import LogEntry
-from django.contrib.auth.models import User
-from django.core import mail
-from django.core.urlresolvers import reverse, NoReverseMatch
-from django.http import QueryDict, HttpRequest
-from django.utils.encoding import force_text
-from django.utils.http import int_to_base36, urlsafe_base64_decode, urlquote
-from django.utils.six.moves.urllib.parse import urlparse, ParseResult
-from django.utils.importlib import import_module
-from django.utils._os import upath
-from django.test import TestCase
-from django.test.utils import override_settings, patch_logger
-from django.middleware.csrf import CsrfViewMiddleware
-from django.contrib.sessions.middleware import SessionMiddleware
-
-from django.contrib.auth import SESSION_KEY, REDIRECT_FIELD_NAME
-from django.contrib.auth.forms import (AuthenticationForm, PasswordChangeForm,
- SetPasswordForm)
-from django.contrib.auth.tests.custom_user import CustomUser
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.contrib.auth.views import login as login_view
-
-
-@override_settings(
- LANGUAGES=(
- ('en', 'English'),
- ),
- LANGUAGE_CODE='en',
- TEMPLATE_LOADERS=global_settings.TEMPLATE_LOADERS,
- TEMPLATE_DIRS=(
- os.path.join(os.path.dirname(upath(__file__)), 'templates'),
- ),
- USE_TZ=False,
- PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',),
-)
-class AuthViewsTestCase(TestCase):
- """
- Helper base class for all the follow test cases.
- """
- fixtures = ['authtestdata.json']
- urls = 'django.contrib.auth.tests.urls'
-
- def login(self, password='password'):
- response = self.client.post('/login/', {
- 'username': 'testclient',
- 'password': password,
- })
- self.assertTrue(SESSION_KEY in self.client.session)
- return response
-
- def logout(self):
- response = self.client.get('/admin/logout/')
- self.assertEqual(response.status_code, 200)
- self.assertTrue(SESSION_KEY not in self.client.session)
-
- def assertFormError(self, response, error):
- """Assert that error is found in response.context['form'] errors"""
- form_errors = list(itertools.chain(*response.context['form'].errors.values()))
- self.assertIn(force_text(error), form_errors)
-
- def assertURLEqual(self, url, expected, parse_qs=False):
- """
- Given two URLs, make sure all their components (the ones given by
- urlparse) are equal, only comparing components that are present in both
- URLs.
- If `parse_qs` is True, then the querystrings are parsed with QueryDict.
- This is useful if you don't want the order of parameters to matter.
- Otherwise, the query strings are compared as-is.
- """
- fields = ParseResult._fields
-
- for attr, x, y in zip(fields, urlparse(url), urlparse(expected)):
- if parse_qs and attr == 'query':
- x, y = QueryDict(x), QueryDict(y)
- if x and y and x != y:
- self.fail("%r != %r (%s doesn't match)" % (url, expected, attr))
-
-
-@skipIfCustomUser
-class AuthViewNamedURLTests(AuthViewsTestCase):
- urls = 'django.contrib.auth.urls'
-
- def test_named_urls(self):
- "Named URLs should be reversible"
- expected_named_urls = [
- ('login', [], {}),
- ('logout', [], {}),
- ('password_change', [], {}),
- ('password_change_done', [], {}),
- ('password_reset', [], {}),
- ('password_reset_done', [], {}),
- ('password_reset_confirm', [], {
- 'uidb64': 'aaaaaaa',
- 'token': '1111-aaaaa',
- }),
- ('password_reset_complete', [], {}),
- ]
- for name, args, kwargs in expected_named_urls:
- try:
- reverse(name, args=args, kwargs=kwargs)
- except NoReverseMatch:
- self.fail("Reversal of url named '%s' failed with NoReverseMatch" % name)
-
-
-@skipIfCustomUser
-class PasswordResetTest(AuthViewsTestCase):
-
- def test_email_not_found(self):
- """If the provided email is not registered, don't raise any error but
- also don't send any email."""
- response = self.client.get('/password_reset/')
- self.assertEqual(response.status_code, 200)
- response = self.client.post('/password_reset/', {'email': 'not_a_real_email@email.com'})
- self.assertEqual(response.status_code, 302)
- self.assertEqual(len(mail.outbox), 0)
-
- def test_email_found(self):
- "Email is sent if a valid email address is provided for password reset"
- response = self.client.post('/password_reset/', {'email': 'staffmember@example.com'})
- self.assertEqual(response.status_code, 302)
- self.assertEqual(len(mail.outbox), 1)
- self.assertTrue("http://" in mail.outbox[0].body)
- self.assertEqual(settings.DEFAULT_FROM_EMAIL, mail.outbox[0].from_email)
-
- def test_email_found_custom_from(self):
- "Email is sent if a valid email address is provided for password reset when a custom from_email is provided."
- response = self.client.post('/password_reset_from_email/', {'email': 'staffmember@example.com'})
- self.assertEqual(response.status_code, 302)
- self.assertEqual(len(mail.outbox), 1)
- self.assertEqual("staffmember@example.com", mail.outbox[0].from_email)
-
- @override_settings(ALLOWED_HOSTS=['adminsite.com'])
- def test_admin_reset(self):
- "If the reset view is marked as being for admin, the HTTP_HOST header is used for a domain override."
- response = self.client.post('/admin_password_reset/',
- {'email': 'staffmember@example.com'},
- HTTP_HOST='adminsite.com'
- )
- self.assertEqual(response.status_code, 302)
- self.assertEqual(len(mail.outbox), 1)
- self.assertTrue("http://adminsite.com" in mail.outbox[0].body)
- self.assertEqual(settings.DEFAULT_FROM_EMAIL, mail.outbox[0].from_email)
-
- # Skip any 500 handler action (like sending more mail...)
- @override_settings(DEBUG_PROPAGATE_EXCEPTIONS=True)
- def test_poisoned_http_host(self):
- "Poisoned HTTP_HOST headers can't be used for reset emails"
- # This attack is based on the way browsers handle URLs. The colon
- # should be used to separate the port, but if the URL contains an @,
- # the colon is interpreted as part of a username for login purposes,
- # making 'evil.com' the request domain. Since HTTP_HOST is used to
- # produce a meaningful reset URL, we need to be certain that the
- # HTTP_HOST header isn't poisoned. This is done as a check when get_host()
- # is invoked, but we check here as a practical consequence.
- with patch_logger('django.security.DisallowedHost', 'error') as logger_calls:
- response = self.client.post('/password_reset/',
- {'email': 'staffmember@example.com'},
- HTTP_HOST='www.example:dr.frankenstein@evil.tld'
- )
- self.assertEqual(response.status_code, 400)
- self.assertEqual(len(mail.outbox), 0)
- self.assertEqual(len(logger_calls), 1)
-
- # Skip any 500 handler action (like sending more mail...)
- @override_settings(DEBUG_PROPAGATE_EXCEPTIONS=True)
- def test_poisoned_http_host_admin_site(self):
- "Poisoned HTTP_HOST headers can't be used for reset emails on admin views"
- with patch_logger('django.security.DisallowedHost', 'error') as logger_calls:
- response = self.client.post('/admin_password_reset/',
- {'email': 'staffmember@example.com'},
- HTTP_HOST='www.example:dr.frankenstein@evil.tld'
- )
- self.assertEqual(response.status_code, 400)
- self.assertEqual(len(mail.outbox), 0)
- self.assertEqual(len(logger_calls), 1)
-
-
- def _test_confirm_start(self):
- # Start by creating the email
- response = self.client.post('/password_reset/', {'email': 'staffmember@example.com'})
- self.assertEqual(len(mail.outbox), 1)
- return self._read_signup_email(mail.outbox[0])
-
- def _read_signup_email(self, email):
- urlmatch = re.search(r"https?://[^/]*(/.*reset/\S*)", email.body)
- self.assertTrue(urlmatch is not None, "No URL found in sent email")
- return urlmatch.group(), urlmatch.groups()[0]
-
- def test_confirm_valid(self):
- url, path = self._test_confirm_start()
- response = self.client.get(path)
- # redirect to a 'complete' page:
- self.assertContains(response, "Please enter your new password")
-
- def test_confirm_valid_base36(self):
- # Remove in Django 1.7
- url, path = self._test_confirm_start()
- path_parts = path.strip("/").split("/")
- # construct an old style (base36) URL by converting the base64 ID
- path_parts[1] = int_to_base36(int(urlsafe_base64_decode(path_parts[1])))
- response = self.client.get("/%s/%s-%s/" % tuple(path_parts))
- # redirect to a 'complete' page:
- self.assertContains(response, "Please enter your new password")
-
- def test_confirm_invalid(self):
- url, path = self._test_confirm_start()
- # Let's munge the token in the path, but keep the same length,
- # in case the URLconf will reject a different length.
- path = path[:-5] + ("0" * 4) + path[-1]
-
- response = self.client.get(path)
- self.assertContains(response, "The password reset link was invalid")
-
- def test_confirm_invalid_user(self):
- # Ensure that we get a 200 response for a non-existant user, not a 404
- response = self.client.get('/reset/123456/1-1/')
- self.assertContains(response, "The password reset link was invalid")
-
- def test_confirm_invalid_user_base36(self):
- # Remove in Django 1.7
- response = self.client.get('/reset/123456-1-1/')
- self.assertContains(response, "The password reset link was invalid")
-
- def test_confirm_overflow_user(self):
- # Ensure that we get a 200 response for a base36 user id that overflows int
- response = self.client.get('/reset/zzzzzzzzzzzzz/1-1/')
- self.assertContains(response, "The password reset link was invalid")
-
- def test_confirm_overflow_user_base36(self):
- # Remove in Django 1.7
- response = self.client.get('/reset/zzzzzzzzzzzzz-1-1/')
- self.assertContains(response, "The password reset link was invalid")
-
- def test_confirm_invalid_post(self):
- # Same as test_confirm_invalid, but trying
- # to do a POST instead.
- url, path = self._test_confirm_start()
- path = path[:-5] + ("0" * 4) + path[-1]
-
- self.client.post(path, {
- 'new_password1': 'anewpassword',
- 'new_password2': ' anewpassword',
- })
- # Check the password has not been changed
- u = User.objects.get(email='staffmember@example.com')
- self.assertTrue(not u.check_password("anewpassword"))
-
- def test_confirm_complete(self):
- url, path = self._test_confirm_start()
- response = self.client.post(path, {'new_password1': 'anewpassword',
- 'new_password2': 'anewpassword'})
- # Check the password has been changed
- u = User.objects.get(email='staffmember@example.com')
- self.assertTrue(u.check_password("anewpassword"))
-
- # Check we can't use the link again
- response = self.client.get(path)
- self.assertContains(response, "The password reset link was invalid")
-
- def test_confirm_different_passwords(self):
- url, path = self._test_confirm_start()
- response = self.client.post(path, {'new_password1': 'anewpassword',
- 'new_password2': 'x'})
- self.assertFormError(response, SetPasswordForm.error_messages['password_mismatch'])
-
- def test_reset_redirect_default(self):
- response = self.client.post('/password_reset/',
- {'email': 'staffmember@example.com'})
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, '/password_reset/done/')
-
- def test_reset_custom_redirect(self):
- response = self.client.post('/password_reset/custom_redirect/',
- {'email': 'staffmember@example.com'})
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, '/custom/')
-
- def test_reset_custom_redirect_named(self):
- response = self.client.post('/password_reset/custom_redirect/named/',
- {'email': 'staffmember@example.com'})
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, '/password_reset/')
-
- def test_confirm_redirect_default(self):
- url, path = self._test_confirm_start()
- response = self.client.post(path, {'new_password1': 'anewpassword',
- 'new_password2': 'anewpassword'})
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, '/reset/done/')
-
- def test_confirm_redirect_custom(self):
- url, path = self._test_confirm_start()
- path = path.replace('/reset/', '/reset/custom/')
- response = self.client.post(path, {'new_password1': 'anewpassword',
- 'new_password2': 'anewpassword'})
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, '/custom/')
-
- def test_confirm_redirect_custom_named(self):
- url, path = self._test_confirm_start()
- path = path.replace('/reset/', '/reset/custom/named/')
- response = self.client.post(path, {'new_password1': 'anewpassword',
- 'new_password2': 'anewpassword'})
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, '/password_reset/')
-
-
-@override_settings(AUTH_USER_MODEL='auth.CustomUser')
-class CustomUserPasswordResetTest(AuthViewsTestCase):
- fixtures = ['custom_user.json']
-
- def _test_confirm_start(self):
- # Start by creating the email
- response = self.client.post('/password_reset/', {'email': 'staffmember@example.com'})
- self.assertEqual(response.status_code, 302)
- self.assertEqual(len(mail.outbox), 1)
- return self._read_signup_email(mail.outbox[0])
-
- def _read_signup_email(self, email):
- urlmatch = re.search(r"https?://[^/]*(/.*reset/\S*)", email.body)
- self.assertTrue(urlmatch is not None, "No URL found in sent email")
- return urlmatch.group(), urlmatch.groups()[0]
-
- def test_confirm_valid_custom_user(self):
- url, path = self._test_confirm_start()
- response = self.client.get(path)
- # redirect to a 'complete' page:
- self.assertContains(response, "Please enter your new password")
-
-
-@skipIfCustomUser
-class ChangePasswordTest(AuthViewsTestCase):
-
- def fail_login(self, password='password'):
- response = self.client.post('/login/', {
- 'username': 'testclient',
- 'password': password,
- })
- self.assertFormError(response, AuthenticationForm.error_messages['invalid_login'] % {
- 'username': User._meta.get_field('username').verbose_name
- })
-
- def logout(self):
- response = self.client.get('/logout/')
-
- def test_password_change_fails_with_invalid_old_password(self):
- self.login()
- response = self.client.post('/password_change/', {
- 'old_password': 'donuts',
- 'new_password1': 'password1',
- 'new_password2': 'password1',
- })
- self.assertFormError(response, PasswordChangeForm.error_messages['password_incorrect'])
-
- def test_password_change_fails_with_mismatched_passwords(self):
- self.login()
- response = self.client.post('/password_change/', {
- 'old_password': 'password',
- 'new_password1': 'password1',
- 'new_password2': 'donuts',
- })
- self.assertFormError(response, SetPasswordForm.error_messages['password_mismatch'])
-
- def test_password_change_succeeds(self):
- self.login()
- response = self.client.post('/password_change/', {
- 'old_password': 'password',
- 'new_password1': 'password1',
- 'new_password2': 'password1',
- })
- self.fail_login()
- self.login(password='password1')
-
- def test_password_change_done_succeeds(self):
- self.login()
- response = self.client.post('/password_change/', {
- 'old_password': 'password',
- 'new_password1': 'password1',
- 'new_password2': 'password1',
- })
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, '/password_change/done/')
-
- @override_settings(LOGIN_URL='/login/')
- def test_password_change_done_fails(self):
- response = self.client.get('/password_change/done/')
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, '/login/?next=/password_change/done/')
-
- def test_password_change_redirect_default(self):
- self.login()
- response = self.client.post('/password_change/', {
- 'old_password': 'password',
- 'new_password1': 'password1',
- 'new_password2': 'password1',
- })
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, '/password_change/done/')
-
- def test_password_change_redirect_custom(self):
- self.login()
- response = self.client.post('/password_change/custom/', {
- 'old_password': 'password',
- 'new_password1': 'password1',
- 'new_password2': 'password1',
- })
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, '/custom/')
-
- def test_password_change_redirect_custom_named(self):
- self.login()
- response = self.client.post('/password_change/custom/named/', {
- 'old_password': 'password',
- 'new_password1': 'password1',
- 'new_password2': 'password1',
- })
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, '/password_reset/')
-
-
-@skipIfCustomUser
-class LoginTest(AuthViewsTestCase):
-
- def test_current_site_in_context_after_login(self):
- response = self.client.get(reverse('login'))
- self.assertEqual(response.status_code, 200)
- if Site._meta.installed:
- site = Site.objects.get_current()
- self.assertEqual(response.context['site'], site)
- self.assertEqual(response.context['site_name'], site.name)
- else:
- self.assertIsInstance(response.context['site'], RequestSite)
- self.assertTrue(isinstance(response.context['form'], AuthenticationForm),
- 'Login form is not an AuthenticationForm')
-
- def test_security_check(self, password='password'):
- login_url = reverse('login')
-
- # Those URLs should not pass the security check
- for bad_url in ('http://example.com',
- 'https://example.com',
- 'ftp://exampel.com',
- '//example.com',
- 'javascript:alert("XSS")'):
-
- nasty_url = '%(url)s?%(next)s=%(bad_url)s' % {
- 'url': login_url,
- 'next': REDIRECT_FIELD_NAME,
- 'bad_url': urlquote(bad_url),
- }
- response = self.client.post(nasty_url, {
- 'username': 'testclient',
- 'password': password,
- })
- self.assertEqual(response.status_code, 302)
- self.assertFalse(bad_url in response.url,
- "%s should be blocked" % bad_url)
-
- # These URLs *should* still pass the security check
- for good_url in ('/view/?param=http://example.com',
- '/view/?param=https://example.com',
- '/view?param=ftp://exampel.com',
- 'view/?param=//example.com',
- 'https:///',
- 'HTTPS:///',
- '//testserver/',
- '/url%20with%20spaces/'): # see ticket #12534
- safe_url = '%(url)s?%(next)s=%(good_url)s' % {
- 'url': login_url,
- 'next': REDIRECT_FIELD_NAME,
- 'good_url': urlquote(good_url),
- }
- response = self.client.post(safe_url, {
- 'username': 'testclient',
- 'password': password,
- })
- self.assertEqual(response.status_code, 302)
- self.assertTrue(good_url in response.url,
- "%s should be allowed" % good_url)
-
- def test_login_form_contains_request(self):
- # 15198
- response = self.client.post('/custom_requestauth_login/', {
- 'username': 'testclient',
- 'password': 'password',
- }, follow=True)
- # the custom authentication form used by this login asserts
- # that a request is passed to the form successfully.
-
- def test_login_csrf_rotate(self, password='password'):
- """
- Makes sure that a login rotates the currently-used CSRF token.
- """
- # Do a GET to establish a CSRF token
- # TestClient isn't used here as we're testing middleware, essentially.
- req = HttpRequest()
- CsrfViewMiddleware().process_view(req, login_view, (), {})
- req.META["CSRF_COOKIE_USED"] = True
- resp = login_view(req)
- resp2 = CsrfViewMiddleware().process_response(req, resp)
- csrf_cookie = resp2.cookies.get(settings.CSRF_COOKIE_NAME, None)
- token1 = csrf_cookie.coded_value
-
- # Prepare the POST request
- req = HttpRequest()
- req.COOKIES[settings.CSRF_COOKIE_NAME] = token1
- req.method = "POST"
- req.POST = {'username': 'testclient', 'password': password, 'csrfmiddlewaretoken': token1}
- req.REQUEST = req.POST
-
- # Use POST request to log in
- SessionMiddleware().process_request(req)
- CsrfViewMiddleware().process_view(req, login_view, (), {})
- req.META["SERVER_NAME"] = "testserver" # Required to have redirect work in login view
- req.META["SERVER_PORT"] = 80
- resp = login_view(req)
- resp2 = CsrfViewMiddleware().process_response(req, resp)
- csrf_cookie = resp2.cookies.get(settings.CSRF_COOKIE_NAME, None)
- token2 = csrf_cookie.coded_value
-
- # Check the CSRF token switched
- self.assertNotEqual(token1, token2)
-
-
-@skipIfCustomUser
-class LoginURLSettings(AuthViewsTestCase):
- """Tests for settings.LOGIN_URL."""
- def assertLoginURLEquals(self, url, parse_qs=False):
- response = self.client.get('/login_required/')
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, url, parse_qs=parse_qs)
-
- @override_settings(LOGIN_URL='/login/')
- def test_standard_login_url(self):
- self.assertLoginURLEquals('/login/?next=/login_required/')
-
- @override_settings(LOGIN_URL='login')
- def test_named_login_url(self):
- self.assertLoginURLEquals('/login/?next=/login_required/')
-
- @override_settings(LOGIN_URL='http://remote.example.com/login')
- def test_remote_login_url(self):
- quoted_next = urlquote('http://testserver/login_required/')
- expected = 'http://remote.example.com/login?next=%s' % quoted_next
- self.assertLoginURLEquals(expected)
-
- @override_settings(LOGIN_URL='https:///login/')
- def test_https_login_url(self):
- quoted_next = urlquote('http://testserver/login_required/')
- expected = 'https:///login/?next=%s' % quoted_next
- self.assertLoginURLEquals(expected)
-
- @override_settings(LOGIN_URL='/login/?pretty=1')
- def test_login_url_with_querystring(self):
- self.assertLoginURLEquals('/login/?pretty=1&next=/login_required/', parse_qs=True)
-
- @override_settings(LOGIN_URL='http://remote.example.com/login/?next=/default/')
- def test_remote_login_url_with_next_querystring(self):
- quoted_next = urlquote('http://testserver/login_required/')
- expected = 'http://remote.example.com/login/?next=%s' % quoted_next
- self.assertLoginURLEquals(expected)
-
-
-@skipIfCustomUser
-class LoginRedirectUrlTest(AuthViewsTestCase):
- """Tests for settings.LOGIN_REDIRECT_URL."""
- def assertLoginRedirectURLEqual(self, url):
- response = self.login()
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, url)
-
- def test_default(self):
- self.assertLoginRedirectURLEqual('/accounts/profile/')
-
- @override_settings(LOGIN_REDIRECT_URL='/custom/')
- def test_custom(self):
- self.assertLoginRedirectURLEqual('/custom/')
-
- @override_settings(LOGIN_REDIRECT_URL='password_reset')
- def test_named(self):
- self.assertLoginRedirectURLEqual('/password_reset/')
-
- @override_settings(LOGIN_REDIRECT_URL='http://remote.example.com/welcome/')
- def test_remote(self):
- self.assertLoginRedirectURLEqual('http://remote.example.com/welcome/')
-
-
-@skipIfCustomUser
-class LogoutTest(AuthViewsTestCase):
-
- def confirm_logged_out(self):
- self.assertTrue(SESSION_KEY not in self.client.session)
-
- def test_logout_default(self):
- "Logout without next_page option renders the default template"
- self.login()
- response = self.client.get('/logout/')
- self.assertContains(response, 'Logged out')
- self.confirm_logged_out()
-
- def test_14377(self):
- # Bug 14377
- self.login()
- response = self.client.get('/logout/')
- self.assertTrue('site' in response.context)
-
- def test_logout_with_overridden_redirect_url(self):
- # Bug 11223
- self.login()
- response = self.client.get('/logout/next_page/')
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, '/somewhere/')
-
- response = self.client.get('/logout/next_page/?next=/login/')
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, '/login/')
-
- self.confirm_logged_out()
-
- def test_logout_with_next_page_specified(self):
- "Logout with next_page option given redirects to specified resource"
- self.login()
- response = self.client.get('/logout/next_page/')
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, '/somewhere/')
- self.confirm_logged_out()
-
- def test_logout_with_redirect_argument(self):
- "Logout with query string redirects to specified resource"
- self.login()
- response = self.client.get('/logout/?next=/login/')
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, '/login/')
- self.confirm_logged_out()
-
- def test_logout_with_custom_redirect_argument(self):
- "Logout with custom query string redirects to specified resource"
- self.login()
- response = self.client.get('/logout/custom_query/?follow=/somewhere/')
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, '/somewhere/')
- self.confirm_logged_out()
-
- def test_logout_with_named_redirect(self):
- "Logout resolves names or URLs passed as next_page."
- self.login()
- response = self.client.get('/logout/next_page/named/')
- self.assertEqual(response.status_code, 302)
- self.assertURLEqual(response.url, '/password_reset/')
- self.confirm_logged_out()
-
- def test_security_check(self, password='password'):
- logout_url = reverse('logout')
-
- # Those URLs should not pass the security check
- for bad_url in ('http://example.com',
- 'https://example.com',
- 'ftp://exampel.com',
- '//example.com',
- 'javascript:alert("XSS")'):
- nasty_url = '%(url)s?%(next)s=%(bad_url)s' % {
- 'url': logout_url,
- 'next': REDIRECT_FIELD_NAME,
- 'bad_url': urlquote(bad_url),
- }
- self.login()
- response = self.client.get(nasty_url)
- self.assertEqual(response.status_code, 302)
- self.assertFalse(bad_url in response.url,
- "%s should be blocked" % bad_url)
- self.confirm_logged_out()
-
- # These URLs *should* still pass the security check
- for good_url in ('/view/?param=http://example.com',
- '/view/?param=https://example.com',
- '/view?param=ftp://exampel.com',
- 'view/?param=//example.com',
- 'https:///',
- 'HTTPS:///',
- '//testserver/',
- '/url%20with%20spaces/'): # see ticket #12534
- safe_url = '%(url)s?%(next)s=%(good_url)s' % {
- 'url': logout_url,
- 'next': REDIRECT_FIELD_NAME,
- 'good_url': urlquote(good_url),
- }
- self.login()
- response = self.client.get(safe_url)
- self.assertEqual(response.status_code, 302)
- self.assertTrue(good_url in response.url,
- "%s should be allowed" % good_url)
- self.confirm_logged_out()
-
- def test_logout_preserve_language(self):
- """Check that language stored in session is preserved after logout"""
- # Create a new session with language
- engine = import_module(settings.SESSION_ENGINE)
- session = engine.SessionStore()
- session['django_language'] = 'pl'
- session.save()
- self.client.cookies[settings.SESSION_COOKIE_NAME] = session.session_key
-
- self.client.get('/logout/')
- self.assertEqual(self.client.session['django_language'], 'pl')
-
-
-@skipIfCustomUser
-@override_settings(
- PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',),
-)
-class ChangelistTests(AuthViewsTestCase):
- urls = 'django.contrib.auth.tests.urls_admin'
-
- def setUp(self):
- # Make me a superuser before logging in.
- User.objects.filter(username='testclient').update(is_staff=True, is_superuser=True)
- self.login()
- self.admin = User.objects.get(pk=1)
-
- def get_user_data(self, user):
- return {
- 'username': user.username,
- 'password': user.password,
- 'email': user.email,
- 'is_active': user.is_active,
- 'is_staff': user.is_staff,
- 'is_superuser': user.is_superuser,
- 'last_login_0': user.last_login.strftime('%Y-%m-%d'),
- 'last_login_1': user.last_login.strftime('%H:%M:%S'),
- 'initial-last_login_0': user.last_login.strftime('%Y-%m-%d'),
- 'initial-last_login_1': user.last_login.strftime('%H:%M:%S'),
- 'date_joined_0': user.date_joined.strftime('%Y-%m-%d'),
- 'date_joined_1': user.date_joined.strftime('%H:%M:%S'),
- 'initial-date_joined_0': user.date_joined.strftime('%Y-%m-%d'),
- 'initial-date_joined_1': user.date_joined.strftime('%H:%M:%S'),
- 'first_name': user.first_name,
- 'last_name': user.last_name,
- }
-
- # #20078 - users shouldn't be allowed to guess password hashes via
- # repeated password__startswith queries.
- def test_changelist_disallows_password_lookups(self):
- # A lookup that tries to filter on password isn't OK
- with patch_logger('django.security.DisallowedModelAdminLookup', 'error') as logger_calls:
- response = self.client.get('/admin/auth/user/?password__startswith=sha1$')
- self.assertEqual(response.status_code, 400)
- self.assertEqual(len(logger_calls), 1)
-
- def test_user_change_email(self):
- data = self.get_user_data(self.admin)
- data['email'] = 'new_' + data['email']
- response = self.client.post('/admin/auth/user/%s/' % self.admin.pk, data)
- self.assertRedirects(response, '/admin/auth/user/')
- row = LogEntry.objects.latest('id')
- self.assertEqual(row.change_message, 'Changed email.')
-
- def test_user_not_change(self):
- response = self.client.post('/admin/auth/user/%s/' % self.admin.pk,
- self.get_user_data(self.admin)
- )
- self.assertRedirects(response, '/admin/auth/user/')
- row = LogEntry.objects.latest('id')
- self.assertEqual(row.change_message, 'No fields changed.')
-
- def test_user_change_password(self):
- response = self.client.post('/admin/auth/user/%s/password/' % self.admin.pk, {
- 'password1': 'password1',
- 'password2': 'password1',
- })
- self.assertRedirects(response, '/admin/auth/user/%s/' % self.admin.pk)
- row = LogEntry.objects.latest('id')
- self.assertEqual(row.change_message, 'Changed password.')
- self.logout()
- self.login(password='password1')
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/urls.py b/lib/python2.7/site-packages/django/contrib/auth/tests/urls.py
deleted file mode 100644
index 502fc65..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/urls.py
+++ /dev/null
@@ -1,90 +0,0 @@
-from django.conf.urls import patterns, url
-from django.contrib.auth import context_processors
-from django.contrib.auth.forms import AuthenticationForm
-from django.contrib.auth.urls import urlpatterns
-from django.contrib.auth.views import password_reset, login
-from django.contrib.auth.decorators import login_required
-from django.contrib.messages.api import info
-from django.http import HttpResponse, HttpRequest
-from django.shortcuts import render_to_response
-from django.template import Template, RequestContext
-from django.views.decorators.cache import never_cache
-
-class CustomRequestAuthenticationForm(AuthenticationForm):
- def __init__(self, request, *args, **kwargs):
- assert isinstance(request, HttpRequest)
- super(CustomRequestAuthenticationForm, self).__init__(request, *args, **kwargs)
-
-@never_cache
-def remote_user_auth_view(request):
- "Dummy view for remote user tests"
- t = Template("Username is {{ user }}.")
- c = RequestContext(request, {})
- return HttpResponse(t.render(c))
-
-def auth_processor_no_attr_access(request):
- r1 = render_to_response('context_processors/auth_attrs_no_access.html',
- RequestContext(request, {}, processors=[context_processors.auth]))
- # *After* rendering, we check whether the session was accessed
- return render_to_response('context_processors/auth_attrs_test_access.html',
- {'session_accessed':request.session.accessed})
-
-def auth_processor_attr_access(request):
- r1 = render_to_response('context_processors/auth_attrs_access.html',
- RequestContext(request, {}, processors=[context_processors.auth]))
- return render_to_response('context_processors/auth_attrs_test_access.html',
- {'session_accessed':request.session.accessed})
-
-def auth_processor_user(request):
- return render_to_response('context_processors/auth_attrs_user.html',
- RequestContext(request, {}, processors=[context_processors.auth]))
-
-def auth_processor_perms(request):
- return render_to_response('context_processors/auth_attrs_perms.html',
- RequestContext(request, {}, processors=[context_processors.auth]))
-
-def auth_processor_perm_in_perms(request):
- return render_to_response('context_processors/auth_attrs_perm_in_perms.html',
- RequestContext(request, {}, processors=[context_processors.auth]))
-
-def auth_processor_messages(request):
- info(request, "Message 1")
- return render_to_response('context_processors/auth_attrs_messages.html',
- RequestContext(request, {}, processors=[context_processors.auth]))
-
-def userpage(request):
- pass
-
-def custom_request_auth_login(request):
- return login(request, authentication_form=CustomRequestAuthenticationForm)
-
-# special urls for auth test cases
-urlpatterns = urlpatterns + patterns('',
- (r'^logout/custom_query/$', 'django.contrib.auth.views.logout', dict(redirect_field_name='follow')),
- (r'^logout/next_page/$', 'django.contrib.auth.views.logout', dict(next_page='/somewhere/')),
- (r'^logout/next_page/named/$', 'django.contrib.auth.views.logout', dict(next_page='password_reset')),
- (r'^remote_user/$', remote_user_auth_view),
- (r'^password_reset_from_email/$', 'django.contrib.auth.views.password_reset', dict(from_email='staffmember@example.com')),
- (r'^password_reset/custom_redirect/$', 'django.contrib.auth.views.password_reset', dict(post_reset_redirect='/custom/')),
- (r'^password_reset/custom_redirect/named/$', 'django.contrib.auth.views.password_reset', dict(post_reset_redirect='password_reset')),
- (r'^reset/custom/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
- 'django.contrib.auth.views.password_reset_confirm',
- dict(post_reset_redirect='/custom/')),
- (r'^reset/custom/named/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
- 'django.contrib.auth.views.password_reset_confirm',
- dict(post_reset_redirect='password_reset')),
- (r'^password_change/custom/$', 'django.contrib.auth.views.password_change', dict(post_change_redirect='/custom/')),
- (r'^password_change/custom/named/$', 'django.contrib.auth.views.password_change', dict(post_change_redirect='password_reset')),
- (r'^admin_password_reset/$', 'django.contrib.auth.views.password_reset', dict(is_admin_site=True)),
- (r'^login_required/$', login_required(password_reset)),
- (r'^login_required_login_url/$', login_required(password_reset, login_url='/somewhere/')),
-
- (r'^auth_processor_no_attr_access/$', auth_processor_no_attr_access),
- (r'^auth_processor_attr_access/$', auth_processor_attr_access),
- (r'^auth_processor_user/$', auth_processor_user),
- (r'^auth_processor_perms/$', auth_processor_perms),
- (r'^auth_processor_perm_in_perms/$', auth_processor_perm_in_perms),
- (r'^auth_processor_messages/$', auth_processor_messages),
- (r'^custom_request_auth_login/$', custom_request_auth_login),
- url(r'^userpage/(.+)/$', userpage, name="userpage"),
-)
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/urls_admin.py b/lib/python2.7/site-packages/django/contrib/auth/tests/urls_admin.py
deleted file mode 100644
index 14a38e4..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/urls_admin.py
+++ /dev/null
@@ -1,18 +0,0 @@
-"""
-Test URLs for auth admins.
-"""
-
-from django.conf.urls import patterns, include
-from django.contrib import admin
-from django.contrib.auth.admin import UserAdmin, GroupAdmin
-from django.contrib.auth.models import User, Group
-from django.contrib.auth.urls import urlpatterns
-
-# Create a silo'd admin site for just the user/group admins.
-site = admin.AdminSite(name='auth_test_admin')
-site.register(User, UserAdmin)
-site.register(Group, GroupAdmin)
-
-urlpatterns = urlpatterns + patterns('',
- (r'^admin/', include(site.urls)),
-)
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tests/utils.py b/lib/python2.7/site-packages/django/contrib/auth/tests/utils.py
deleted file mode 100644
index 6bb3d99..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tests/utils.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from django.conf import settings
-from django.utils.unittest import skipIf
-
-
-def skipIfCustomUser(test_func):
- """
- Skip a test if a custom user model is in use.
- """
- return skipIf(settings.AUTH_USER_MODEL != 'auth.User', 'Custom user model in use')(test_func)
diff --git a/lib/python2.7/site-packages/django/contrib/auth/tokens.py b/lib/python2.7/site-packages/django/contrib/auth/tokens.py
deleted file mode 100644
index 6e5bfe7..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/tokens.py
+++ /dev/null
@@ -1,73 +0,0 @@
-from datetime import date
-from django.conf import settings
-from django.utils.http import int_to_base36, base36_to_int
-from django.utils.crypto import constant_time_compare, salted_hmac
-from django.utils import six
-
-
-class PasswordResetTokenGenerator(object):
- """
- Strategy object used to generate and check tokens for the password
- reset mechanism.
- """
- def make_token(self, user):
- """
- Returns a token that can be used once to do a password reset
- for the given user.
- """
- return self._make_token_with_timestamp(user, self._num_days(self._today()))
-
- def check_token(self, user, token):
- """
- Check that a password reset token is correct for a given user.
- """
- # Parse the token
- try:
- ts_b36, hash = token.split("-")
- except ValueError:
- return False
-
- try:
- ts = base36_to_int(ts_b36)
- except ValueError:
- return False
-
- # Check that the timestamp/uid has not been tampered with
- if not constant_time_compare(self._make_token_with_timestamp(user, ts), token):
- return False
-
- # Check the timestamp is within limit
- if (self._num_days(self._today()) - ts) > settings.PASSWORD_RESET_TIMEOUT_DAYS:
- return False
-
- return True
-
- def _make_token_with_timestamp(self, user, timestamp):
- # timestamp is number of days since 2001-1-1. Converted to
- # base 36, this gives us a 3 digit string until about 2121
- ts_b36 = int_to_base36(timestamp)
-
- # By hashing on the internal state of the user and using state
- # that is sure to change (the password salt will change as soon as
- # the password is set, at least for current Django auth, and
- # last_login will also change), we produce a hash that will be
- # invalid as soon as it is used.
- # We limit the hash to 20 chars to keep URL short
- key_salt = "django.contrib.auth.tokens.PasswordResetTokenGenerator"
-
- # Ensure results are consistent across DB backends
- login_timestamp = user.last_login.replace(microsecond=0, tzinfo=None)
-
- value = (six.text_type(user.pk) + user.password +
- six.text_type(login_timestamp) + six.text_type(timestamp))
- hash = salted_hmac(key_salt, value).hexdigest()[::2]
- return "%s-%s" % (ts_b36, hash)
-
- def _num_days(self, dt):
- return (dt - date(2001, 1, 1)).days
-
- def _today(self):
- # Used for mocking in tests
- return date.today()
-
-default_token_generator = PasswordResetTokenGenerator()
diff --git a/lib/python2.7/site-packages/django/contrib/auth/urls.py b/lib/python2.7/site-packages/django/contrib/auth/urls.py
deleted file mode 100644
index 801d133..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/urls.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# The views used below are normally mapped in django.contrib.admin.urls.py
-# This URLs file is used to provide a reliable view deployment for test purposes.
-# It is also provided as a convenience to those who want to deploy these URLs
-# elsewhere.
-
-from django.conf.urls import patterns, url
-
-urlpatterns = patterns('',
- url(r'^login/$', 'django.contrib.auth.views.login', name='login'),
- url(r'^logout/$', 'django.contrib.auth.views.logout', name='logout'),
- url(r'^password_change/$', 'django.contrib.auth.views.password_change', name='password_change'),
- url(r'^password_change/done/$', 'django.contrib.auth.views.password_change_done', name='password_change_done'),
- url(r'^password_reset/$', 'django.contrib.auth.views.password_reset', name='password_reset'),
- url(r'^password_reset/done/$', 'django.contrib.auth.views.password_reset_done', name='password_reset_done'),
- # Support old style base36 password reset links; remove in Django 1.7
- url(r'^reset/(?P<uidb36>[0-9A-Za-z]{1,13})-(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
- 'django.contrib.auth.views.password_reset_confirm_uidb36'),
- url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
- 'django.contrib.auth.views.password_reset_confirm',
- name='password_reset_confirm'),
- url(r'^reset/done/$', 'django.contrib.auth.views.password_reset_complete', name='password_reset_complete'),
-)
diff --git a/lib/python2.7/site-packages/django/contrib/auth/views.py b/lib/python2.7/site-packages/django/contrib/auth/views.py
deleted file mode 100644
index c55f243..0000000
--- a/lib/python2.7/site-packages/django/contrib/auth/views.py
+++ /dev/null
@@ -1,284 +0,0 @@
-from django.conf import settings
-from django.core.urlresolvers import reverse
-from django.http import HttpResponseRedirect, QueryDict
-from django.template.response import TemplateResponse
-from django.utils.http import base36_to_int, is_safe_url, urlsafe_base64_decode, urlsafe_base64_encode
-from django.utils.translation import ugettext as _
-from django.utils.six.moves.urllib.parse import urlparse, urlunparse
-from django.shortcuts import resolve_url
-from django.utils.encoding import force_bytes, force_text
-from django.views.decorators.debug import sensitive_post_parameters
-from django.views.decorators.cache import never_cache
-from django.views.decorators.csrf import csrf_protect
-
-# Avoid shadowing the login() and logout() views below.
-from django.contrib.auth import REDIRECT_FIELD_NAME, login as auth_login, logout as auth_logout, get_user_model
-from django.contrib.auth.decorators import login_required
-from django.contrib.auth.forms import AuthenticationForm, PasswordResetForm, SetPasswordForm, PasswordChangeForm
-from django.contrib.auth.tokens import default_token_generator
-from django.contrib.sites.models import get_current_site
-
-
-@sensitive_post_parameters()
-@csrf_protect
-@never_cache
-def login(request, template_name='registration/login.html',
- redirect_field_name=REDIRECT_FIELD_NAME,
- authentication_form=AuthenticationForm,
- current_app=None, extra_context=None):
- """
- Displays the login form and handles the login action.
- """
- redirect_to = request.REQUEST.get(redirect_field_name, '')
-
- if request.method == "POST":
- form = authentication_form(request, data=request.POST)
- if form.is_valid():
-
- # Ensure the user-originating redirection url is safe.
- if not is_safe_url(url=redirect_to, host=request.get_host()):
- redirect_to = resolve_url(settings.LOGIN_REDIRECT_URL)
-
- # Okay, security check complete. Log the user in.
- auth_login(request, form.get_user())
-
- return HttpResponseRedirect(redirect_to)
- else:
- form = authentication_form(request)
-
- current_site = get_current_site(request)
-
- context = {
- 'form': form,
- redirect_field_name: redirect_to,
- 'site': current_site,
- 'site_name': current_site.name,
- }
- if extra_context is not None:
- context.update(extra_context)
- return TemplateResponse(request, template_name, context,
- current_app=current_app)
-
-
-def logout(request, next_page=None,
- template_name='registration/logged_out.html',
- redirect_field_name=REDIRECT_FIELD_NAME,
- current_app=None, extra_context=None):
- """
- Logs out the user and displays 'You are logged out' message.
- """
- auth_logout(request)
-
- if next_page is not None:
- next_page = resolve_url(next_page)
-
- if redirect_field_name in request.REQUEST:
- next_page = request.REQUEST[redirect_field_name]
- # Security check -- don't allow redirection to a different host.
- if not is_safe_url(url=next_page, host=request.get_host()):
- next_page = request.path
-
- if next_page:
- # Redirect to this page until the session has been cleared.
- return HttpResponseRedirect(next_page)
-
- current_site = get_current_site(request)
- context = {
- 'site': current_site,
- 'site_name': current_site.name,
- 'title': _('Logged out')
- }
- if extra_context is not None:
- context.update(extra_context)
- return TemplateResponse(request, template_name, context,
- current_app=current_app)
-
-
-def logout_then_login(request, login_url=None, current_app=None, extra_context=None):
- """
- Logs out the user if he is logged in. Then redirects to the log-in page.
- """
- if not login_url:
- login_url = settings.LOGIN_URL
- login_url = resolve_url(login_url)
- return logout(request, login_url, current_app=current_app, extra_context=extra_context)
-
-
-def redirect_to_login(next, login_url=None,
- redirect_field_name=REDIRECT_FIELD_NAME):
- """
- Redirects the user to the login page, passing the given 'next' page
- """
- resolved_url = resolve_url(login_url or settings.LOGIN_URL)
-
- login_url_parts = list(urlparse(resolved_url))
- if redirect_field_name:
- querystring = QueryDict(login_url_parts[4], mutable=True)
- querystring[redirect_field_name] = next
- login_url_parts[4] = querystring.urlencode(safe='/')
-
- return HttpResponseRedirect(urlunparse(login_url_parts))
-
-
-# 4 views for password reset:
-# - password_reset sends the mail
-# - password_reset_done shows a success message for the above
-# - password_reset_confirm checks the link the user clicked and
-# prompts for a new password
-# - password_reset_complete shows a success message for the above
-
-@csrf_protect
-def password_reset(request, is_admin_site=False,
- template_name='registration/password_reset_form.html',
- email_template_name='registration/password_reset_email.html',
- subject_template_name='registration/password_reset_subject.txt',
- password_reset_form=PasswordResetForm,
- token_generator=default_token_generator,
- post_reset_redirect=None,
- from_email=None,
- current_app=None,
- extra_context=None):
- if post_reset_redirect is None:
- post_reset_redirect = reverse('password_reset_done')
- else:
- post_reset_redirect = resolve_url(post_reset_redirect)
- if request.method == "POST":
- form = password_reset_form(request.POST)
- if form.is_valid():
- opts = {
- 'use_https': request.is_secure(),
- 'token_generator': token_generator,
- 'from_email': from_email,
- 'email_template_name': email_template_name,
- 'subject_template_name': subject_template_name,
- 'request': request,
- }
- if is_admin_site:
- opts = dict(opts, domain_override=request.get_host())
- form.save(**opts)
- return HttpResponseRedirect(post_reset_redirect)
- else:
- form = password_reset_form()
- context = {
- 'form': form,
- }
- if extra_context is not None:
- context.update(extra_context)
- return TemplateResponse(request, template_name, context,
- current_app=current_app)
-
-
-def password_reset_done(request,
- template_name='registration/password_reset_done.html',
- current_app=None, extra_context=None):
- context = {}
- if extra_context is not None:
- context.update(extra_context)
- return TemplateResponse(request, template_name, context,
- current_app=current_app)
-
-
-# Doesn't need csrf_protect since no-one can guess the URL
-@sensitive_post_parameters()
-@never_cache
-def password_reset_confirm(request, uidb64=None, token=None,
- template_name='registration/password_reset_confirm.html',
- token_generator=default_token_generator,
- set_password_form=SetPasswordForm,
- post_reset_redirect=None,
- current_app=None, extra_context=None):
- """
- View that checks the hash in a password reset link and presents a
- form for entering a new password.
- """
- UserModel = get_user_model()
- assert uidb64 is not None and token is not None # checked by URLconf
- if post_reset_redirect is None:
- post_reset_redirect = reverse('password_reset_complete')
- else:
- post_reset_redirect = resolve_url(post_reset_redirect)
- try:
- uid = urlsafe_base64_decode(uidb64)
- user = UserModel._default_manager.get(pk=uid)
- except (TypeError, ValueError, OverflowError, UserModel.DoesNotExist):
- user = None
-
- if user is not None and token_generator.check_token(user, token):
- validlink = True
- if request.method == 'POST':
- form = set_password_form(user, request.POST)
- if form.is_valid():
- form.save()
- return HttpResponseRedirect(post_reset_redirect)
- else:
- form = set_password_form(None)
- else:
- validlink = False
- form = None
- context = {
- 'form': form,
- 'validlink': validlink,
- }
- if extra_context is not None:
- context.update(extra_context)
- return TemplateResponse(request, template_name, context,
- current_app=current_app)
-
-def password_reset_confirm_uidb36(request, uidb36=None, **kwargs):
- # Support old password reset URLs that used base36 encoded user IDs.
- # Remove in Django 1.7
- try:
- uidb64 = force_text(urlsafe_base64_encode(force_bytes(base36_to_int(uidb36))))
- except ValueError:
- uidb64 = '1' # dummy invalid ID (incorrect padding for base64)
- return password_reset_confirm(request, uidb64=uidb64, **kwargs)
-
-def password_reset_complete(request,
- template_name='registration/password_reset_complete.html',
- current_app=None, extra_context=None):
- context = {
- 'login_url': resolve_url(settings.LOGIN_URL)
- }
- if extra_context is not None:
- context.update(extra_context)
- return TemplateResponse(request, template_name, context,
- current_app=current_app)
-
-
-@sensitive_post_parameters()
-@csrf_protect
-@login_required
-def password_change(request,
- template_name='registration/password_change_form.html',
- post_change_redirect=None,
- password_change_form=PasswordChangeForm,
- current_app=None, extra_context=None):
- if post_change_redirect is None:
- post_change_redirect = reverse('password_change_done')
- else:
- post_change_redirect = resolve_url(post_change_redirect)
- if request.method == "POST":
- form = password_change_form(user=request.user, data=request.POST)
- if form.is_valid():
- form.save()
- return HttpResponseRedirect(post_change_redirect)
- else:
- form = password_change_form(user=request.user)
- context = {
- 'form': form,
- }
- if extra_context is not None:
- context.update(extra_context)
- return TemplateResponse(request, template_name, context,
- current_app=current_app)
-
-
-@login_required
-def password_change_done(request,
- template_name='registration/password_change_done.html',
- current_app=None, extra_context=None):
- context = {}
- if extra_context is not None:
- context.update(extra_context)
- return TemplateResponse(request, template_name, context,
- current_app=current_app)
diff --git a/lib/python2.7/site-packages/django/contrib/comments/__init__.py b/lib/python2.7/site-packages/django/contrib/comments/__init__.py
deleted file mode 100644
index 007b77a..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/__init__.py
+++ /dev/null
@@ -1,94 +0,0 @@
-import warnings
-from django.conf import settings
-from django.core import urlresolvers
-from django.core.exceptions import ImproperlyConfigured
-from django.contrib.comments.models import Comment
-from django.contrib.comments.forms import CommentForm
-from django.utils.importlib import import_module
-
-warnings.warn("django.contrib.comments is deprecated and will be removed before Django 1.8.", PendingDeprecationWarning)
-
-DEFAULT_COMMENTS_APP = 'django.contrib.comments'
-
-def get_comment_app():
- """
- Get the comment app (i.e. "django.contrib.comments") as defined in the settings
- """
- # Make sure the app's in INSTALLED_APPS
- comments_app = get_comment_app_name()
- if comments_app not in settings.INSTALLED_APPS:
- raise ImproperlyConfigured("The COMMENTS_APP (%r) "\
- "must be in INSTALLED_APPS" % settings.COMMENTS_APP)
-
- # Try to import the package
- try:
- package = import_module(comments_app)
- except ImportError as e:
- raise ImproperlyConfigured("The COMMENTS_APP setting refers to "\
- "a non-existing package. (%s)" % e)
-
- return package
-
-def get_comment_app_name():
- """
- Returns the name of the comment app (either the setting value, if it
- exists, or the default).
- """
- return getattr(settings, 'COMMENTS_APP', DEFAULT_COMMENTS_APP)
-
-def get_model():
- """
- Returns the comment model class.
- """
- if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), "get_model"):
- return get_comment_app().get_model()
- else:
- return Comment
-
-def get_form():
- """
- Returns the comment ModelForm class.
- """
- if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), "get_form"):
- return get_comment_app().get_form()
- else:
- return CommentForm
-
-def get_form_target():
- """
- Returns the target URL for the comment form submission view.
- """
- if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), "get_form_target"):
- return get_comment_app().get_form_target()
- else:
- return urlresolvers.reverse("django.contrib.comments.views.comments.post_comment")
-
-def get_flag_url(comment):
- """
- Get the URL for the "flag this comment" view.
- """
- if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), "get_flag_url"):
- return get_comment_app().get_flag_url(comment)
- else:
- return urlresolvers.reverse("django.contrib.comments.views.moderation.flag",
- args=(comment.id,))
-
-def get_delete_url(comment):
- """
- Get the URL for the "delete this comment" view.
- """
- if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), "get_delete_url"):
- return get_comment_app().get_delete_url(comment)
- else:
- return urlresolvers.reverse("django.contrib.comments.views.moderation.delete",
- args=(comment.id,))
-
-def get_approve_url(comment):
- """
- Get the URL for the "approve this comment from moderation" view.
- """
- if get_comment_app_name() != DEFAULT_COMMENTS_APP and hasattr(get_comment_app(), "get_approve_url"):
- return get_comment_app().get_approve_url(comment)
- else:
- return urlresolvers.reverse("django.contrib.comments.views.moderation.approve",
- args=(comment.id,))
diff --git a/lib/python2.7/site-packages/django/contrib/comments/admin.py b/lib/python2.7/site-packages/django/contrib/comments/admin.py
deleted file mode 100644
index 391889c..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/admin.py
+++ /dev/null
@@ -1,86 +0,0 @@
-from __future__ import unicode_literals
-
-from django.contrib import admin
-from django.contrib.auth import get_user_model
-from django.contrib.comments.models import Comment
-from django.utils.translation import ugettext_lazy as _, ungettext_lazy
-from django.contrib.comments import get_model
-from django.contrib.comments.views.moderation import perform_flag, perform_approve, perform_delete
-
-
-class UsernameSearch(object):
- """The User object may not be auth.User, so we need to provide
- a mechanism for issuing the equivalent of a .filter(user__username=...)
- search in CommentAdmin.
- """
- def __str__(self):
- return 'user__%s' % get_user_model().USERNAME_FIELD
-
-
-class CommentsAdmin(admin.ModelAdmin):
- fieldsets = (
- (None,
- {'fields': ('content_type', 'object_pk', 'site')}
- ),
- (_('Content'),
- {'fields': ('user', 'user_name', 'user_email', 'user_url', 'comment')}
- ),
- (_('Metadata'),
- {'fields': ('submit_date', 'ip_address', 'is_public', 'is_removed')}
- ),
- )
-
- list_display = ('name', 'content_type', 'object_pk', 'ip_address', 'submit_date', 'is_public', 'is_removed')
- list_filter = ('submit_date', 'site', 'is_public', 'is_removed')
- date_hierarchy = 'submit_date'
- ordering = ('-submit_date',)
- raw_id_fields = ('user',)
- search_fields = ('comment', UsernameSearch(), 'user_name', 'user_email', 'user_url', 'ip_address')
- actions = ["flag_comments", "approve_comments", "remove_comments"]
-
- def get_actions(self, request):
- actions = super(CommentsAdmin, self).get_actions(request)
- # Only superusers should be able to delete the comments from the DB.
- if not request.user.is_superuser and 'delete_selected' in actions:
- actions.pop('delete_selected')
- if not request.user.has_perm('comments.can_moderate'):
- if 'approve_comments' in actions:
- actions.pop('approve_comments')
- if 'remove_comments' in actions:
- actions.pop('remove_comments')
- return actions
-
- def flag_comments(self, request, queryset):
- self._bulk_flag(request, queryset, perform_flag,
- ungettext_lazy('%d comment was successfully flagged',
- '%d comments were successfully flagged'))
- flag_comments.short_description = _("Flag selected comments")
-
- def approve_comments(self, request, queryset):
- self._bulk_flag(request, queryset, perform_approve,
- ungettext_lazy('%d comment was successfully approved',
- '%d comments were successfully approved'))
- approve_comments.short_description = _("Approve selected comments")
-
- def remove_comments(self, request, queryset):
- self._bulk_flag(request, queryset, perform_delete,
- ungettext_lazy('%d comment was successfully removed',
- '%d comments were successfully removed'))
- remove_comments.short_description = _("Remove selected comments")
-
- def _bulk_flag(self, request, queryset, action, done_message):
- """
- Flag, approve, or remove some comments from an admin action. Actually
- calls the `action` argument to perform the heavy lifting.
- """
- n_comments = 0
- for comment in queryset:
- action(request, comment)
- n_comments += 1
-
- self.message_user(request, done_message % n_comments)
-
-# Only register the default admin if the model is the built-in comment model
-# (this won't be true if there's a custom comment app).
-if get_model() is Comment:
- admin.site.register(Comment, CommentsAdmin)
diff --git a/lib/python2.7/site-packages/django/contrib/comments/feeds.py b/lib/python2.7/site-packages/django/contrib/comments/feeds.py
deleted file mode 100644
index 2e0d4c3..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/feeds.py
+++ /dev/null
@@ -1,31 +0,0 @@
-from django.contrib.syndication.views import Feed
-from django.contrib.sites.models import get_current_site
-from django.contrib import comments
-from django.utils.translation import ugettext as _
-
-class LatestCommentFeed(Feed):
- """Feed of latest comments on the current site."""
-
- def __call__(self, request, *args, **kwargs):
- self.site = get_current_site(request)
- return super(LatestCommentFeed, self).__call__(request, *args, **kwargs)
-
- def title(self):
- return _("%(site_name)s comments") % dict(site_name=self.site.name)
-
- def link(self):
- return "http://%s/" % (self.site.domain)
-
- def description(self):
- return _("Latest comments on %(site_name)s") % dict(site_name=self.site.name)
-
- def items(self):
- qs = comments.get_model().objects.filter(
- site__pk = self.site.pk,
- is_public = True,
- is_removed = False,
- )
- return qs.order_by('-submit_date')[:40]
-
- def item_pubdate(self, item):
- return item.submit_date
diff --git a/lib/python2.7/site-packages/django/contrib/comments/forms.py b/lib/python2.7/site-packages/django/contrib/comments/forms.py
deleted file mode 100644
index bd254d2..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/forms.py
+++ /dev/null
@@ -1,194 +0,0 @@
-import time
-from django import forms
-from django.forms.util import ErrorDict
-from django.conf import settings
-from django.contrib.contenttypes.models import ContentType
-from django.contrib.comments.models import Comment
-from django.utils.crypto import salted_hmac, constant_time_compare
-from django.utils.encoding import force_text
-from django.utils.text import get_text_list
-from django.utils import timezone
-from django.utils.translation import ungettext, ugettext, ugettext_lazy as _
-
-COMMENT_MAX_LENGTH = getattr(settings,'COMMENT_MAX_LENGTH', 3000)
-
-class CommentSecurityForm(forms.Form):
- """
- Handles the security aspects (anti-spoofing) for comment forms.
- """
- content_type = forms.CharField(widget=forms.HiddenInput)
- object_pk = forms.CharField(widget=forms.HiddenInput)
- timestamp = forms.IntegerField(widget=forms.HiddenInput)
- security_hash = forms.CharField(min_length=40, max_length=40, widget=forms.HiddenInput)
-
- def __init__(self, target_object, data=None, initial=None):
- self.target_object = target_object
- if initial is None:
- initial = {}
- initial.update(self.generate_security_data())
- super(CommentSecurityForm, self).__init__(data=data, initial=initial)
-
- def security_errors(self):
- """Return just those errors associated with security"""
- errors = ErrorDict()
- for f in ["honeypot", "timestamp", "security_hash"]:
- if f in self.errors:
- errors[f] = self.errors[f]
- return errors
-
- def clean_security_hash(self):
- """Check the security hash."""
- security_hash_dict = {
- 'content_type' : self.data.get("content_type", ""),
- 'object_pk' : self.data.get("object_pk", ""),
- 'timestamp' : self.data.get("timestamp", ""),
- }
- expected_hash = self.generate_security_hash(**security_hash_dict)
- actual_hash = self.cleaned_data["security_hash"]
- if not constant_time_compare(expected_hash, actual_hash):
- raise forms.ValidationError("Security hash check failed.")
- return actual_hash
-
- def clean_timestamp(self):
- """Make sure the timestamp isn't too far (> 2 hours) in the past."""
- ts = self.cleaned_data["timestamp"]
- if time.time() - ts > (2 * 60 * 60):
- raise forms.ValidationError("Timestamp check failed")
- return ts
-
- def generate_security_data(self):
- """Generate a dict of security data for "initial" data."""
- timestamp = int(time.time())
- security_dict = {
- 'content_type' : str(self.target_object._meta),
- 'object_pk' : str(self.target_object._get_pk_val()),
- 'timestamp' : str(timestamp),
- 'security_hash' : self.initial_security_hash(timestamp),
- }
- return security_dict
-
- def initial_security_hash(self, timestamp):
- """
- Generate the initial security hash from self.content_object
- and a (unix) timestamp.
- """
-
- initial_security_dict = {
- 'content_type' : str(self.target_object._meta),
- 'object_pk' : str(self.target_object._get_pk_val()),
- 'timestamp' : str(timestamp),
- }
- return self.generate_security_hash(**initial_security_dict)
-
- def generate_security_hash(self, content_type, object_pk, timestamp):
- """
- Generate a HMAC security hash from the provided info.
- """
- info = (content_type, object_pk, timestamp)
- key_salt = "django.contrib.forms.CommentSecurityForm"
- value = "-".join(info)
- return salted_hmac(key_salt, value).hexdigest()
-
-class CommentDetailsForm(CommentSecurityForm):
- """
- Handles the specific details of the comment (name, comment, etc.).
- """
- name = forms.CharField(label=_("Name"), max_length=50)
- email = forms.EmailField(label=_("Email address"))
- url = forms.URLField(label=_("URL"), required=False)
- comment = forms.CharField(label=_('Comment'), widget=forms.Textarea,
- max_length=COMMENT_MAX_LENGTH)
-
- def get_comment_object(self):
- """
- Return a new (unsaved) comment object based on the information in this
- form. Assumes that the form is already validated and will throw a
- ValueError if not.
-
- Does not set any of the fields that would come from a Request object
- (i.e. ``user`` or ``ip_address``).
- """
- if not self.is_valid():
- raise ValueError("get_comment_object may only be called on valid forms")
-
- CommentModel = self.get_comment_model()
- new = CommentModel(**self.get_comment_create_data())
- new = self.check_for_duplicate_comment(new)
-
- return new
-
- def get_comment_model(self):
- """
- Get the comment model to create with this form. Subclasses in custom
- comment apps should override this, get_comment_create_data, and perhaps
- check_for_duplicate_comment to provide custom comment models.
- """
- return Comment
-
- def get_comment_create_data(self):
- """
- Returns the dict of data to be used to create a comment. Subclasses in
- custom comment apps that override get_comment_model can override this
- method to add extra fields onto a custom comment model.
- """
- return dict(
- content_type = ContentType.objects.get_for_model(self.target_object),
- object_pk = force_text(self.target_object._get_pk_val()),
- user_name = self.cleaned_data["name"],
- user_email = self.cleaned_data["email"],
- user_url = self.cleaned_data["url"],
- comment = self.cleaned_data["comment"],
- submit_date = timezone.now(),
- site_id = settings.SITE_ID,
- is_public = True,
- is_removed = False,
- )
-
- def check_for_duplicate_comment(self, new):
- """
- Check that a submitted comment isn't a duplicate. This might be caused
- by someone posting a comment twice. If it is a dup, silently return the *previous* comment.
- """
- possible_duplicates = self.get_comment_model()._default_manager.using(
- self.target_object._state.db
- ).filter(
- content_type = new.content_type,
- object_pk = new.object_pk,
- user_name = new.user_name,
- user_email = new.user_email,
- user_url = new.user_url,
- )
- for old in possible_duplicates:
- if old.submit_date.date() == new.submit_date.date() and old.comment == new.comment:
- return old
-
- return new
-
- def clean_comment(self):
- """
- If COMMENTS_ALLOW_PROFANITIES is False, check that the comment doesn't
- contain anything in PROFANITIES_LIST.
- """
- comment = self.cleaned_data["comment"]
- if settings.COMMENTS_ALLOW_PROFANITIES == False:
- bad_words = [w for w in settings.PROFANITIES_LIST if w in comment.lower()]
- if bad_words:
- raise forms.ValidationError(ungettext(
- "Watch your mouth! The word %s is not allowed here.",
- "Watch your mouth! The words %s are not allowed here.",
- len(bad_words)) % get_text_list(
- ['"%s%s%s"' % (i[0], '-'*(len(i)-2), i[-1])
- for i in bad_words], ugettext('and')))
- return comment
-
-class CommentForm(CommentDetailsForm):
- honeypot = forms.CharField(required=False,
- label=_('If you enter anything in this field '\
- 'your comment will be treated as spam'))
-
- def clean_honeypot(self):
- """Check that nothing's been entered into the honeypot."""
- value = self.cleaned_data["honeypot"]
- if value:
- raise forms.ValidationError(self.fields["honeypot"].label)
- return value
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/af/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/af/LC_MESSAGES/django.mo
deleted file mode 100644
index 69fbb47..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/af/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/af/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/af/LC_MESSAGES/django.po
deleted file mode 100644
index 842a4d0..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/af/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,287 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Afrikaans (http://www.transifex.com/projects/p/django/"
-"language/af/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: af\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr ""
-
-#: admin.py:28
-msgid "Metadata"
-msgstr ""
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr ""
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr ""
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr ""
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr ""
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr ""
-
-#: forms.py:96
-msgid "Name"
-msgstr ""
-
-#: forms.py:97
-msgid "Email address"
-msgstr "E-pos adres"
-
-#: forms.py:98
-msgid "URL"
-msgstr ""
-
-#: forms.py:99
-msgid "Comment"
-msgstr ""
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr ""
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-
-#: models.py:23
-msgid "content type"
-msgstr ""
-
-#: models.py:25
-msgid "object ID"
-msgstr ""
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr ""
-
-#: models.py:55
-msgid "user's name"
-msgstr ""
-
-#: models.py:56
-msgid "user's email address"
-msgstr ""
-
-#: models.py:57
-msgid "user's URL"
-msgstr ""
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr ""
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr ""
-
-#: models.py:63
-msgid "IP address"
-msgstr ""
-
-#: models.py:64
-msgid "is public"
-msgstr ""
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-
-#: models.py:67
-msgid "is removed"
-msgstr ""
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-
-#: models.py:80
-msgid "comments"
-msgstr ""
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-
-#: models.py:179
-msgid "flag"
-msgstr ""
-
-#: models.py:180
-msgid "date"
-msgstr ""
-
-#: models.py:190
-msgid "comment flag"
-msgstr ""
-
-#: models.py:191
-msgid "comment flags"
-msgstr ""
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr ""
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr ""
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr ""
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr ""
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr ""
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr ""
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Verwyder"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr ""
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr ""
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr ""
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr ""
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr ""
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr ""
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr ""
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr ""
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr ""
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ar/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/ar/LC_MESSAGES/django.mo
deleted file mode 100644
index 128bf06..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ar/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ar/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/ar/LC_MESSAGES/django.po
deleted file mode 100644
index 77bad42..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ar/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,315 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# dado_eyad <d.eyad.t@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ossama Khayat <okhayat@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-10-28 08:57+0000\n"
-"Last-Translator: dado_eyad <d.eyad.t@gmail.com>\n"
-"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/"
-"ar/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "محتوى"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "ميتاداتا"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "تعليم التعليقات المحددة"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "تمت الموافقة على %d من التعليقات بنجاح"
-msgstr[1] "تمت الموافقة على %d من التعليقات بنجاح"
-msgstr[2] "تمت الموافقة على %d من التعليقات بنجاح"
-msgstr[3] "تمت الموافقة على %d من التعليقات بنجاح"
-msgstr[4] "تمت الموافقة على %d من التعليقات بنجاح"
-msgstr[5] "تمت الموافقة على %d من التعليقات بنجاح"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "اعتماد التعليقات المحددة"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "تم حذف %d من التعليقات بنجاح"
-msgstr[1] "تم حذف %d من التعليقات بنجاح"
-msgstr[2] "تم حذف %d من التعليقات بنجاح"
-msgstr[3] "تم حذف %d من التعليقات بنجاح"
-msgstr[4] "تم حذف %d من التعليقات بنجاح"
-msgstr[5] "تم حذف %d من التعليقات بنجاح"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "احذف التعليقات المحددة"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "تعليقات %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "آخر التعليقات على %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "الاسم"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "عنوان بريد إلكتروني"
-
-#: forms.py:98
-msgid "URL"
-msgstr "رابط"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "تعليق"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "احفظ لسانك! الكلمة %s ممنوعة هنا."
-msgstr[1] "احفظ لسانك! الكلمة %s ممنوعة هنا."
-msgstr[2] "احفظ لسانك! الكلمة %s ممنوعة هنا."
-msgstr[3] "احفظ لسانك! الكلمة %s ممنوعة هنا."
-msgstr[4] "احفظ لسانك! الكلمة %s ممنوعة هنا."
-msgstr[5] "احفظ لسانك! الكلمة %s ممنوعة هنا."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "و"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "إن كتبت أي شيء في هذا الحقل فسيُعتبر تعليقك غير مرغوب به"
-
-#: models.py:23
-msgid "content type"
-msgstr "نوع البيانات"
-
-#: models.py:25
-msgid "object ID"
-msgstr "معرف العنصر"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "مستخدم"
-
-#: models.py:55
-msgid "user's name"
-msgstr "اسم المستخدم"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "عنوان البريد الإلكتروني للمستخدم"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "عنوان URL للمستخدم"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "تعليق"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "تاريخ ووقت الإرسال"
-
-#: models.py:63
-msgid "IP address"
-msgstr "عنوان IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "عام"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "أزل اختيار هذا المربّع كي تُزيل التعليق نهائياً من الموقع."
-
-#: models.py:67
-msgid "is removed"
-msgstr "محذوف"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"انتق هذا المربع إذا كان التعليق غير لائق، سيتم عرض الرسالة \"تم حذف هذا "
-"التعليق\" بدلا منه."
-
-#: models.py:80
-msgid "comments"
-msgstr "تعليقات"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr "كتب هذا التعليق مستخدم مُسجّل ولذا كان اسمهللقراءة فقط."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"كتب هذا التعليق مستخدم مُسجّل ولذا كان عنوان بريده الالكتروني للقراءة فقط."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"كتبه %(user)s في %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "علم"
-
-#: models.py:180
-msgid "date"
-msgstr "التاريخ"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "علَم التعليق"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "أعلام التعليقات"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "وافق على تعليق"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "تريد فعلاً جعل هذا التعليق عامّاً؟"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "وافق"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "شكراً لموافقتك"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "شكراً لك على قضاء وقتك في تحسين جودة النقاش على موقعنا"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "أزل تعليق"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "تريد فعلاً إزالة هذا التعليق؟"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "أزل"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "شكراً لإزالته"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "سِم هذا التعليق"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "تريد فعلاً وسم هذا التعليق؟"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "سٍم"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "شكراً لك على الوَسم"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "أرسل "
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "عاين"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "شكراً على تعليقك"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "شكراً لك على تعليقك"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "عاين تعليقك"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "رجاءً صحح الأخطاء أدناه"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "الرجاء تصحيح الأخطاء أدناه"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "أرسال تعليقك"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "أو قم ببعض التغيير"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/az/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/az/LC_MESSAGES/django.mo
deleted file mode 100644
index 4960da5..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/az/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/az/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/az/LC_MESSAGES/django.po
deleted file mode 100644
index d77d6a5..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/az/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,299 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Ismayilov <ali@ismailov.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/"
-"language/az/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: az\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Məzmun"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Meta-məlumat"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Seçilmiş şərhləri işarələ"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Seçilmiş şərhləri təsdiq et"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Seçilmiş şərhləri sil"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s şərhləri"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "%(site_name)s üzrə son şərhlər"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Ad"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "E-poçt"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Şərh"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "və"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Bu sahəyə nəsə yazsanız, şərhiniz spam kimi qiymətləndiriləcək."
-
-#: models.py:23
-msgid "content type"
-msgstr "məzmunun tipi"
-
-#: models.py:25
-msgid "object ID"
-msgstr "obyektin ID-si"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "istifadəçi"
-
-#: models.py:55
-msgid "user's name"
-msgstr "istifadəçinin adı"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "istifadəçinin e-poçt ünvanı"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "istifadəçinin URL-ni"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "şərh"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "yazılma tarix/vaxtı"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP ünvanı"
-
-#: models.py:64
-msgid "is public"
-msgstr "hamı görür"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Şərhi saytdan yox etmək üçün buradakı quşu yığışdırın."
-
-#: models.py:67
-msgid "is removed"
-msgstr "yığışdırılıb"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Əgər şərh qeyri-uyğundursa, bura quş qoyun və şərhin yerinə \"Bu şərh "
-"yığışdırılıb\" yazısı çıxacaq."
-
-#: models.py:80
-msgid "comments"
-msgstr "şərhlər"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Bu şərh daxil olmuş istifadəçi adından yazılmışdır, buna görə də onun adını "
-"dəyişmək mümkün deyil."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Bu şərh daxil olmuş istifadəçi adından yazılmışdır, buna görə də onun e-poçt "
-"ünvanını dəyişmək mümkün deyil."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(user)s %(date)s tarixində yazmışdır.\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "işarələ"
-
-#: models.py:180
-msgid "date"
-msgstr "tarix"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "şərh işarəsi"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "şərh işarələri"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Şərhə icazə ver"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Bu şərhi hamı görsün?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Təsdiqləyirəm"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Təsdiqlədiniz"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Saytımızda müzakirəni daha keyfiyyətli etmək üçün sərf etdiyiniz vaxta görə "
-"təşəkkür edirik."
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Şərhi yığışdır"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Şərhi yığışdıraq?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Yığışdır"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Yığışdırdıq"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Şərhi işarələ"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Şərhi işarələyək?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "İşarələ"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "İşarələdik"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Yaz"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Baxım"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Şərh etdiyiniz üçün təşəkkür edirik"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Şərh etdiyiniz üçün təşəkkür edirik"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Şərhin görünüşü"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr ""
-"one: Aşağıdakı səhvi düzəldin.\n"
-"other: Aşağıdakı səhvləri düzəldin."
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Şərhi göndər"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "və ya düzəliş et"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/be/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/be/LC_MESSAGES/django.mo
deleted file mode 100644
index 7c10d76..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/be/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/be/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/be/LC_MESSAGES/django.po
deleted file mode 100644
index 3cd57ae..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/be/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,309 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/"
-"language/be/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: be\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Зьмесьціва"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Зьвесткі"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Пазначыць абраныя выказваньні"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Ухваліць абраныя выказваньні"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Прыбраць абраныя выказваньні"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "Выказваньні на %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Найноўшыя выказваньні на %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Імя"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Адрас эл. пошты"
-
-#: forms.py:98
-msgid "URL"
-msgstr "Сеціўная спасылка"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Выказваньне"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Сачыце за сваімі словамі! Тут нельга казаць «%s»."
-msgstr[1] "Сачыце за сваімі словамі! Тут нельга казаць «%s»."
-msgstr[2] "Сачыце за сваімі словамі! Тут нельга казаць «%s»."
-msgstr[3] "Сачыце за сваімі словамі! Тут нельга казаць «%s»."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "і"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Калі напісаць нешта ў гэтым полі, выказваньне будзе лічыцца лухтою (спамам)."
-
-#: models.py:23
-msgid "content type"
-msgstr "від зьмесьціва"
-
-#: models.py:25
-msgid "object ID"
-msgstr "нумар аб’екта"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "карыстальнік"
-
-#: models.py:55
-msgid "user's name"
-msgstr "імя карыстальніка"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "эл. пошта карыстальніка"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "сеціўная спасылка карыстальніка"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "выкавзаньне"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "час і дата выказваньня"
-
-#: models.py:63
-msgid "IP address"
-msgstr "Адрас IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "бачнае"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Прыбярыце гэтую птушачку, каб выказваньне зьнікла з пляцоўкі."
-
-#: models.py:67
-msgid "is removed"
-msgstr "прыбралі"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Абярыце, калі выказваньне не да месца або не адпавядае правілам. Замест яго "
-"будзе надпіс «Выказваньне прыбралі»."
-
-#: models.py:80
-msgid "comments"
-msgstr "выказваньні"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Выказваньне пакінуў карыстальнік, які апазнаўся, таму ягонае імя нельга "
-"зьмяняць."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Выказваньне пакінуў карыстальнік, які апазнаўся, таму ягоны адрас эл. пошты "
-"нельга зьмяняць."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(date)s, аўтар — %(user)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "пазнака"
-
-#: models.py:180
-msgid "date"
-msgstr "дата"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "пазнака выказваньня"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "пазнакі выказваньняў"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Ухваліць выказваньне"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Ці сапраўды зрабіць выказваньне бачным?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Ухваліць"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Дзякуем, што ўхвалілі"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Мы ўдзячныя, што вы дапамагаеце палепшыць якасьць размовы на нашай пляцоўцы"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Прыбраць выказваньне"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Ці сапраўды прыбраць выказваньне?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Прыбраць"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Дзякуем, што прыбралі"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Пазначыць выказваньне"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Ці сапраўды пазначыць выказваньне?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Пазначыць"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Дзякуем, што пазначылі"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Даслаць"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Прагледзець"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Дзякуем, што выказаліся"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Мы ўдзячныя за вашае выказваньне"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Прагледзець выказваньне"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Выпраўце памылкі ніжэй"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Дашліце выказваньне"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "або выпраўце яго"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/bg/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/bg/LC_MESSAGES/django.mo
deleted file mode 100644
index aedefdc..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/bg/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/bg/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/bg/LC_MESSAGES/django.po
deleted file mode 100644
index 2f1628a..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/bg/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,303 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Boris Chervenkov <office@sentido.bg>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Todor Lube <tlubenov@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/"
-"language/bg/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bg\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Благодаря за маркирането"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Метаданни"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Маркирай избраните коментари"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Одобри избраните коментари"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Премахване на избраните коментари"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s коментари"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Последни коментари на %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Име"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Email адрес"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL адрес"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Коментар"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Внимание! Думата %s не се допуска."
-msgstr[1] "Внимание! Думите %s не се допускат."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "и"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Ако въведете нещо в това поле, вашия коментар ще се третира като спам"
-
-#: models.py:23
-msgid "content type"
-msgstr "тип на съдържанието"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID на обекта"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "потребител"
-
-#: models.py:55
-msgid "user's name"
-msgstr "потребителско име"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "email адрес на потребителя"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL адрес на потребителя"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "коментар"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "дата и час на подаване"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP адрес"
-
-#: models.py:64
-msgid "is public"
-msgstr "е публичен"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Махнете отметката от това поле, за да премахнете коментара от сайта."
-
-#: models.py:67
-msgid "is removed"
-msgstr "е премахнат"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Щракнете тук ако коментарът е неподходящ. Вместо съдържанието на коментара, "
-"ще се покаже надписът \"Този коментар беше премахнат.\""
-
-#: models.py:80
-msgid "comments"
-msgstr "коментари"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Този коментар е публикуван от регистриран потребител, затова името не може "
-"да бъде редактирано."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Този коментар е публикуван от регистриран потребител, затова email адресът "
-"не може да бъде редактиран."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Публикуван от %(user)s на %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "маркиране"
-
-#: models.py:180
-msgid "date"
-msgstr "дата"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "отбелязване на коментар"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "отбелязване на коментари"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Одобряване на коментар"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Наистина ли да стане този коментар публичен?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Одобри"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Благодарим за одобрението"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Благодарим, че отделихте време, за да се подобри качеството на обсъждането "
-"на нашия сайт"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Премахване на коментар"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Сигурни ли сте, че искате да премахнете този коментар?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Премахване"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Благодарим за премахването"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Маркирай този коментар"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Сигурни ли сте, че искате да отбележете този коментар?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Отбелязване"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Благодарим за отбелязването"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Публикувай"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Преглед"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Благодарим за коментара"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Благодарим за Вашия коментар"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Преглед на коментар"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Моля, поправете грешките по-долу"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Публикувай коментар"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "или направете промени"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/bn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/bn/LC_MESSAGES/django.mo
deleted file mode 100644
index 0d75f3c..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/bn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/bn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/bn/LC_MESSAGES/django.po
deleted file mode 100644
index 3ae8297..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/bn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,297 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# anubhab91, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/"
-"bn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "কনটেন্ট"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "মেটাডাটা"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "চয়িত মন্তব্যগুলোকে ফ্ল্যাগ করুন"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "চিহ্নিত মন্তব্যগুলি অনুমোদন করুন"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "চয়িত মন্তব্যগুলি মুছে ফেলুন"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr ""
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr ""
-
-#: forms.py:96
-msgid "Name"
-msgstr "নাম"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "ইমেইল ঠিকানা"
-
-#: forms.py:98
-msgid "URL"
-msgstr "ইউআরএল (URL)"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "মন্তব্য"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "সাবধান! %s শব্দটি এখানে প্রযোজ্য নয়।"
-msgstr[1] "সাবধান! %s শব্দগুলো এখানে প্রযোজ্য নয়।"
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "এবং"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "আপনি যদি এখানে কোনকিছু লিখেন তবে আপনার মন্তব্যকে স্প্যাম হিসেবে ধরা হবে"
-
-#: models.py:23
-msgid "content type"
-msgstr "কনটেন্ট টাইপ"
-
-#: models.py:25
-msgid "object ID"
-msgstr "অবজেক্ট আইডি"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "সদস্য"
-
-#: models.py:55
-msgid "user's name"
-msgstr "সদস্যের নাম"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "সদস্যের ইমেইল ঠিকানা"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "সদস্যের ইউআরএল (URL)"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "মন্তব্য"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "দাখিলের তারিখ/সময়"
-
-#: models.py:63
-msgid "IP address"
-msgstr "আইপি ঠিকানা"
-
-#: models.py:64
-msgid "is public"
-msgstr "সার্বজনীন"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "সাইট থেকে মন্তব্য মুছে ফেলতে এখানে আনচেক করুন।"
-
-#: models.py:67
-msgid "is removed"
-msgstr "মোছা হয়েছে"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"এই বাক্সে চেক করুন যদি মন্তব্যটি যথাযথ না হয়। মন্তব্যের পরিবর্তে \"মন্তব্যদি মুছে ফেলা "
-"হয়েছে\" দেখানো হবে।"
-
-#: models.py:80
-msgid "comments"
-msgstr ""
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr "এই মন্তব্যটি একজন নিবন্ধনকৃত সদস্য করেছেন, সেজন্যই নামটি শুধুমাত্র পড়ার যোগ্য।"
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"এই মন্তব্যটি একজন নিবন্ধনকৃত সদস্য করেছেন, সেজন্যই ইমেইল ঠিকানা শুধুমাত্র পড়ার যোগ্য।"
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"লিখেছেন %(user)s - %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "পতাকা"
-
-#: models.py:180
-msgid "date"
-msgstr "তারিখ"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "মন্তব্য পতাকা"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "মন্তব্য পতাকাসমূহ"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "একটি মন্তব্য অনুমোদন করুন"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "সত্যিই কি এই মন্তব্যকে সাধারণের জন্য উন্মুক্ত করতে চান?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "অনুমোদন"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "অনুমোদন করার জন্য ধন্যবাদ"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "আমাদের সাইটের উন্নতিকল্পে আলোচনায় যোগ দেওয়ার জন্য আপনাকে সাধুবাদ জানাই"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "একটি মন্তব্য মুছে ফেলুন"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "সত্যিই কি এই মন্তব্যকে উড়িয়ে দিতে চান?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "মুছে ফেলুন"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "মুছে ফেলার জন্য ধন্যবাদ"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "এই মন্তব্যকে পতাকাচিহ্নিত করুন"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "সত্যিই কি এই মন্তব্যকে পতাকাচিহ্নিত করতে চান?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "পতাকা"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "পতাকাচিহ্নিত করার জন্য ধন্যবাদ"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr ""
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "প্রাকদর্শন"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "মন্তব্য লেখার জন্য ধন্যবাদ"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "আপনার মতামতের জন্য ধন্যবাদ"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "আপনার মন্তব্যকে প্রাকদর্শন করুন"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/br/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/br/LC_MESSAGES/django.mo
deleted file mode 100644
index 302d6c0..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/br/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/br/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/br/LC_MESSAGES/django.po
deleted file mode 100644
index 5524faa..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/br/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,288 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Fulup <fulup.jakez@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/"
-"br/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: br\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Danvez"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metaroadennoù"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Merkañ an evezhiadennoù diuzet"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Aprouiñ an evezhiadennoù diuzet"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Dilemel an evezhiadennoù diuzet"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr ""
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr ""
-
-#: forms.py:96
-msgid "Name"
-msgstr "Anv"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Chomlec'h postel"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Evezhiadenn"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr ""
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-
-#: models.py:23
-msgid "content type"
-msgstr "seurt danvez"
-
-#: models.py:25
-msgid "object ID"
-msgstr ""
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "implijer"
-
-#: models.py:55
-msgid "user's name"
-msgstr ""
-
-#: models.py:56
-msgid "user's email address"
-msgstr "chomlec'h postel an implijer"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL an implijer"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "danvez"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "deiziad/eur kaset"
-
-#: models.py:63
-msgid "IP address"
-msgstr "Chomlec'h IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "zo foran"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-
-#: models.py:67
-msgid "is removed"
-msgstr "zo bet dilamet"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-
-#: models.py:80
-msgid "comments"
-msgstr "evezhiadennoù"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-
-#: models.py:179
-msgid "flag"
-msgstr "merker"
-
-#: models.py:180
-msgid "date"
-msgstr "deiziad"
-
-#: models.py:190
-msgid "comment flag"
-msgstr ""
-
-#: models.py:191
-msgid "comment flags"
-msgstr ""
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "aprouiñ un evezhiadenn"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr ""
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Aprouiñ"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Trugarez da vezañ aprouet"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Diverkañ un evezhiadenn"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr ""
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Dilemel"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Trugarez evit an diverkadenn-mañ"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr ""
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr ""
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr ""
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr ""
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Kas"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Rakwelet"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr ""
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr ""
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Rakwelet hoc'h evezhiadenn"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/bs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/bs/LC_MESSAGES/django.mo
deleted file mode 100644
index 865d3dd..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/bs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/bs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/bs/LC_MESSAGES/django.po
deleted file mode 100644
index 7c227f7..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/bs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,305 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Filip Dupanović <filip.dupanovic@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/"
-"bs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bs\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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Sadržaj"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metapodaci"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Označite izabrane komentare"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Odobri izabrane komentare"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Obriši izabrane komentare"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "Komentari na %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Najnoviji komentari na %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Ime"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Email adresa"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Komentar"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Pazite šta pišete! Riječ %s nije dozvoljena ovdje."
-msgstr[1] "Pazite šta pišete! Riječi %s nisu dozvoljene ovdje."
-msgstr[2] "Pazite šta pišete! Riječi %s nisu dozvoljene ovdje."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "i"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Ako unesete bilo šta u ovo polje, Vaš komentar će se smatrati spamom"
-
-#: models.py:23
-msgid "content type"
-msgstr "tip sadržaja"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID objekta"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "korisnik"
-
-#: models.py:55
-msgid "user's name"
-msgstr "korisnikovo ime"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "korisnikova email adresa"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "korisnikov URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "komentar"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "datum/vrijeme unosa"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP adresa"
-
-#: models.py:64
-msgid "is public"
-msgstr "javno dostupan"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Uklonite izbor ovog polja da bi se komentar izbrisao sa stranice."
-
-#: models.py:67
-msgid "is removed"
-msgstr "uklonjen"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Obilježite ovo polje ukoliko je komentar neprikladan. Prikazat će se poruka "
-"\"Komentar je ukonjen\" umjesto komentara."
-
-#: models.py:80
-msgid "comments"
-msgstr "komentari"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Ovaj komentar je postavio prijavljeni korisnik i ime se ne može mijenjati."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Ovaj komentar je postavio prijavljeni korisnik i email se ne može mijenjati."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Postavio %(user)s, %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "oznaka"
-
-#: models.py:180
-msgid "date"
-msgstr "datum"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "oznaka komentara"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "oznake komentara"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Odobri komentar"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Da li zaista želite da učinite ovaj komentar javno dostupnim?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Odobri"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Hvala na odobrenju"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Hvala što ste izdvojili vrijeme da poboljšate kvalitet diskusije na našoj "
-"stranici"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Obriši komentar"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Da li zaista želite da obrišete ovaj komentar?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Obriši"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Hvala na brisanju"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Označi ovaj komentar"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Da li zaista želite da označite ovaj komentar?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Označi"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Hvala što ste označili komentar."
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Postavi"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Pregled"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Hvala na komentaru"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Hvala što ste ostavili svoj komentar"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Pregledaj komentar"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Molimo ispravite navedene greške"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Postavi komentar"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "ili izvrši izmjene"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ca/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/ca/LC_MESSAGES/django.mo
deleted file mode 100644
index 08cbc93..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ca/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ca/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/ca/LC_MESSAGES/django.po
deleted file mode 100644
index 3c95c05..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ca/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,305 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Catalan (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Contingut"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadades"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Marcar els comentaris seleccionats"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Aprovar els comentaris seleccionats"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Eliminar els comentaris seleccionats"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "comentaris de %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Últims comentaris a %(site_name)s."
-
-#: forms.py:96
-msgid "Name"
-msgstr "Nom"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Adreça de correu electrònic"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Comentari"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Vigileu amb el vostre llenguatge! Aquí no s'admet la paraula: %s."
-msgstr[1] ""
-"Vigileu amb el vostre llenguatge! Aquí no s'admeten les paraules: %s."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "i"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Si entreu qualsevol cosa en aquest camp el vostre comentari es tractarà com "
-"a spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "tipus de contingut"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID de l'objecte"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "usuari"
-
-#: models.py:55
-msgid "user's name"
-msgstr "nom de l'usuari"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "adreça de correu electrònic de l'usuari"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL de l'usuari"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "comentari"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "data/hora d'enviament"
-
-#: models.py:63
-msgid "IP address"
-msgstr "Adreça IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "és públic"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Desmarqueu aquesta casella per fer desaparèixer aquest comentari del lloc "
-"web de forma efectiva."
-
-#: models.py:67
-msgid "is removed"
-msgstr "està eliminat"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Marqueu aquesta casella si el comentari no és apropiat. En lloc seu es "
-"mostrarà \"Aquest comentari ha estat eliminat\" "
-
-#: models.py:80
-msgid "comments"
-msgstr "comentaris"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Aquest comentari va ser publicat per un usuari autentificat, per això el seu "
-"nom no es pot modificar."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Aquest comentari va ser publicat per un usuari autentificat, per això la "
-"seva adreça de correu electrònic no es pot modificar."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Enviat per %(user)s el %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "marcar"
-
-#: models.py:180
-msgid "date"
-msgstr "data"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "marca del comentari"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "marques del comentari"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Aprovar un comentari"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Voleu realment fer públic aquest comentari?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Aprovar"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Gràcies per aprovar"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Gràcies per dedicar el temps a millorar la qualitat del debat al nostre lloc"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Eliminar un comentari"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Realment voleu eliminar aquest comentari?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Eliminar"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Gràcies per eliminar"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Marcar aquest comentari"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Realment voleu marcar aquest comentari?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Marcar"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Gràcies per marcar"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Publicar"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Vista prèvia"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Gràcies per comentar"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Gràcies pel vostre comentari"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Previsualitzar el vostre comentari"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Si us plau, corregiu els errors mostrats a sota."
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Enviar el seu comentari"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "o feu canvis."
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/cs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/cs/LC_MESSAGES/django.mo
deleted file mode 100644
index 6908a82..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/cs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/cs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/cs/LC_MESSAGES/django.po
deleted file mode 100644
index 138d144..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/cs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,304 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Vlada Macek <macek@sandbox.cz>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-09-13 11:43+0000\n"
-"Last-Translator: Vlada Macek <macek@sandbox.cz>\n"
-"Language-Team: Czech (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Obsah"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadata"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d komentář byl úspěšně označen"
-msgstr[1] "%d komentáře byly úspěšně označeny"
-msgstr[2] "%d komentářů bylo úspěšně označeno"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Označit vybrané komentáře "
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d komentář byl schválen"
-msgstr[1] "%d komentáře byly schváleny"
-msgstr[2] "%d komentářů bylo schváleno"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Schválit vybrané komentáře"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d komentář byl úspěšně odstraněn"
-msgstr[1] "%d komentáře byly úspěšně odstraněny"
-msgstr[2] "%d komentářů bylo úspěšně odstraněno"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Odebrat vybrané komentáře"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "Komentáře z webu %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Poslední komentáře na webu %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Jméno"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "E-mailová adresa"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Komentář"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Mluvte slušně! Slovo %s je zde nepřípustné."
-msgstr[1] "Mluvte slušně! Slova %s jsou zde nepřípustná."
-msgstr[2] "Mluvte slušně! Slova %s jsou zde nepřípustná."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "a"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Jestliže do tohoto pole cokoli zadáte, bude komentář považován za spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "typ obsahu"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID položky"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "uživatel"
-
-#: models.py:55
-msgid "user's name"
-msgstr "jméno uživatele"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "e-mailová adresa uživatele"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL uživatele"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "komentář"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "datum a čas byly zaslané"
-
-#: models.py:63
-msgid "IP address"
-msgstr "Adresa IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "je veřejný"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Pokud zrušíte zaškrtnutí tohoto políčka, komentář se na stránce nezobrazí."
-
-#: models.py:67
-msgid "is removed"
-msgstr "je odebrán"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Zaškrtněte, pokud je komentář nevhodný. Místo něj bude zobrazena zpráva "
-"\"Tento komentář byl odebrán\"."
-
-#: models.py:80
-msgid "comments"
-msgstr "komentář"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Tento komentář zaslal přihlášený uživatel, jméno tedy není možné změnit."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Tento komentář zaslal přihlášený uživatel, e-mail tedy není možné změnit."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Zadal uživatel %(user)s dne %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "značka"
-
-#: models.py:180
-msgid "date"
-msgstr "datum"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "značka komentáře"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "značky komentáře"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Schválit komentář"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Opravdu chcete zveřejnit tento komentář?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Schválit"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Děkujeme za schválení"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Děkujeme za váš čas věnovaný zlepšení kvality diskuze na našich stránkách"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Odebrat komentář"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Opravdu chcete odebrat tento komentář?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Odebrat"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Děkujeme za odebrání"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Označit tento komentář"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Opravdu chcete označit tento komentář?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Označit"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Děkujeme za označení komentáře"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Odeslat"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Náhled"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Děkujeme za vložení komentáře"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Děkujeme za komentář"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Zobrazit náhled komentáře"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Opravte níže uvedené chyby."
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Opravte níže uvedené chyby"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Komentář odeslat"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "nebo upravit"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/cy/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/cy/LC_MESSAGES/django.mo
deleted file mode 100644
index 0b86250..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/cy/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/cy/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/cy/LC_MESSAGES/django.po
deleted file mode 100644
index c6c98cd..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/cy/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,302 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/"
-"cy/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cy\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
-"11) ? 2 : 3;\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr ""
-
-#: admin.py:28
-msgid "Metadata"
-msgstr ""
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr ""
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr ""
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr ""
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr ""
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr ""
-
-#: forms.py:96
-msgid "Name"
-msgstr ""
-
-#: forms.py:97
-msgid "Email address"
-msgstr ""
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Sylw"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "ac"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-
-#: models.py:23
-msgid "content type"
-msgstr "math cynnwys"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID gwrthrych"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr ""
-
-#: models.py:55
-msgid "user's name"
-msgstr ""
-
-#: models.py:56
-msgid "user's email address"
-msgstr ""
-
-#: models.py:57
-msgid "user's URL"
-msgstr ""
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "sylw"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "dyddiad/amser wedi ymostwng"
-
-#: models.py:63
-msgid "IP address"
-msgstr "cyfeiriad IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "yn gyhoeddus"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-
-#: models.py:67
-msgid "is removed"
-msgstr "wedi diddymu"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-
-#: models.py:80
-msgid "comments"
-msgstr ""
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Postiwyd gan %(user)s ar %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr ""
-
-#: models.py:180
-msgid "date"
-msgstr ""
-
-#: models.py:190
-msgid "comment flag"
-msgstr ""
-
-#: models.py:191
-msgid "comment flags"
-msgstr ""
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr ""
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr ""
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr ""
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr ""
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr ""
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr ""
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr ""
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr ""
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr ""
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr ""
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr ""
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr ""
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr ""
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr ""
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr ""
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr ""
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/da/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/da/LC_MESSAGES/django.mo
deleted file mode 100644
index a26fb63..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/da/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/da/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/da/LC_MESSAGES/django.po
deleted file mode 100644
index 5a2df1f..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/da/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,305 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Erik Wognsen <r4mses@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-10-28 17:33+0000\n"
-"Last-Translator: Erik Wognsen <r4mses@gmail.com>\n"
-"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/"
-"da/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: da\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Indhold"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadata"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d kommentar blev afmærket"
-msgstr[1] "%d kommentarer blev afmærket"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Marker valgte kommentarer"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d kommentar blev godkendt"
-msgstr[1] "%d kommentarer blev godkendt"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Godkend valgte kommentarer"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d kommentar blev fjernet"
-msgstr[1] "%d kommentarer blev fjernet"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Fjern valgte kommentarer"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "kommentarer på %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Seneste kommentarer på %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Navn"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "E-mail-adresse"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Kommentar"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Var din mund! Ordet %s er ikke tilladt her."
-msgstr[1] "Var din mund! Ordene %s er ikke tilladt her."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "og"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Hvis du indtaster noget i dette felt, vil din kommentar blive betragtet som "
-"spam."
-
-#: models.py:23
-msgid "content type"
-msgstr "indholdstype"
-
-#: models.py:25
-msgid "object ID"
-msgstr "objekt-ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "bruger"
-
-#: models.py:55
-msgid "user's name"
-msgstr "brugerens navn"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "brugerens e-mail-adresse"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "brugerens URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "kommentar"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "dato/tidspunkt for oprettelse"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP-adresse"
-
-#: models.py:64
-msgid "is public"
-msgstr "er offentlig"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Hvis du fjerner afkrydsningen her, bliver din kommentar slettet fra sitet."
-
-#: models.py:67
-msgid "is removed"
-msgstr "er fjernet"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Afkryds denne boks, hvis kommentaren er upassende. Beskeden \"Denne "
-"kommentar er blevet fjernet\" vil blive vist i stedet."
-
-#: models.py:80
-msgid "comments"
-msgstr "kommentarer"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Denne kommentar blev indsendt af en autenticeret bruger; derfor er navnet "
-"skrivebeskyttet."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Denne kommentar blev indsendt af en autenticeret bruger; derfor er e-mail-"
-"adressen skrivebeskyttet."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Indsendt af %(user)s den %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "Flag"
-
-#: models.py:180
-msgid "date"
-msgstr "dato"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "kommentarflag"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "kommentarflag"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Godkend en kommentar"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Vil du godkende denne kommentar?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Godkend"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Tak for godkendelsen"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Tak fordi du tog dig tid til at højne kvaliteten af diskussionen på vores "
-"website"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Fjern en kommentar"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Skal kommentaren fjernes?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Fjern"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Tak for fjernelsen"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Flag denne kommentar"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Skal kommentaren flages?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Flag"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Tak for markeringen"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Indsend"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Forhåndsvis"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Tak for kommenteringen"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Tak for kommentaren"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Forhåndsvis kommentar"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Ret venligst fejlene herunder."
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Ret venligst fejlene herunder"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Indsend din kommentar"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "eller gennemfør ændringer"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/de/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/de/LC_MESSAGES/django.mo
deleted file mode 100644
index f21491d..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/de/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/de/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/de/LC_MESSAGES/django.po
deleted file mode 100644
index 2a5c427..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/de/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,304 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011,2013
-# Markus Holtermann <inyoka@markusholtermann.eu>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-07-07 10:35+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Inhalt"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadaten"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d Kommentar erfolgreich markiert"
-msgstr[1] "%d Kommentare erfolgreich markiert"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Ausgewählte Kommentare markieren"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d Kommentar erfolgreich freigegeben"
-msgstr[1] "%d Kommentare erfolgreich freigegeben"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Ausgewählte Kommentare freigeben"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d Kommentar erfolgreich entfernt"
-msgstr[1] "%d Kommentare erfolgreich entfernt"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Ausgewählte Kommentare entfernen"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s-Kommentare"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Die neuesten Kommentare auf %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Name"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "E-Mail-Adresse"
-
-#: forms.py:98
-msgid "URL"
-msgstr "Adresse (URL)"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Kommentar"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Keine Schimpfworte! Das Wort %s ist hier nicht erlaubt!"
-msgstr[1] "Keine Schimpfworte! Die Wörter %s sind hier nicht erlaubt!"
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "und"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Wenn Sie irgendetwas in dieses Feld eintragen, wird der Kommentar als Spam "
-"betrachtet"
-
-#: models.py:23
-msgid "content type"
-msgstr "Inhaltstyp"
-
-#: models.py:25
-msgid "object ID"
-msgstr "Objekt-ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "Benutzer"
-
-#: models.py:55
-msgid "user's name"
-msgstr "Name"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "E-Mail-Adresse"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "Kommentar"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "Erstellungs-Datum/Zeit"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP-Adresse"
-
-#: models.py:64
-msgid "is public"
-msgstr "ist öffentlich"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Deaktivieren, um den Kommentar sofort von der Website zu entfernen."
-
-#: models.py:67
-msgid "is removed"
-msgstr "ist entfernt"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Hier einen Haken setzen, wenn der Kommentar unpassend ist. Stattdessen wird "
-"dann \"Dieser Kommentar wurde entfernt\" Meldung angezeigt."
-
-#: models.py:80
-msgid "comments"
-msgstr "Kommentare"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Dieser Kommentar wurde von einem authentifizierten Benutzer geschrieben. Der "
-"Name ist daher schreibgeschützt."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Dieser Kommentar wurde von einem authentifizierten Benutzer geschrieben. Die "
-"E-Mail-Adresse ist daher schreibgeschützt."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Geschrieben von %(user)s am %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "Markierung"
-
-#: models.py:180
-msgid "date"
-msgstr "Datum"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "Kommentar-Markierung"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "Kommentar-Markierungen"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Kommentar freigeben"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Wollen Sie diesen Kommentar wirklich freigeben?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Freigeben"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Vielen Dank, dass Sie den Kommentar freigegeben haben"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Vielen Dank, dass Sie dabei mithelfen, die Qualität der Diskussion auf "
-"unserer Website zu verbessern"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Kommentar entfernen"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Wollen Sie diesen Kommentar wirklich entfernen?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Entfernen"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Vielen Dank, dass Sie diesen Kommentar entfernt haben"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Diesen Kommentar markieren"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Wollen Sie diesen Kommentar wirklich markieren?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Markierung"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Vielen Dank, dass Sie diesen Kommentar markiert haben"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Abschicken"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Vorschau"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Vielen Dank, dass Sie einen Kommentar geschrieben haben"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Vielen Dank für Ihren Kommentar"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Kommentarvorschau"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Bitte die unten aufgeführten Fehler korrigieren."
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Bitte die unten aufgeführten Fehler korrigieren"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Kommentar abschicken"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "oder Änderungen vornehmen"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/el/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/el/LC_MESSAGES/django.mo
deleted file mode 100644
index 8bd387f..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/el/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/el/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/el/LC_MESSAGES/django.po
deleted file mode 100644
index bd0ffce..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/el/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Dimitris Glezos <glezos@transifex.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Yorgos Pagles <y.pagles@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/"
-"el/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: el\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Περιεχόμενο"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Μεταδεδομένα"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Επισημανση των επιλεγμένων σχολίων"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Έγκριση των συγκεκριμένων σχολίων"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Αφαίρεση των επιλεγμένων σχολίων"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "Σχόλια στο %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Τελευταία σχόλια στο %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Όνομα"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Ηλεκτρονική διεύθυνση"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Σχόλιο"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Η λέξη %s δεν επιτρέπεται σε σχόλια."
-msgstr[1] "Η λέξεις %s δεν επιτρέπονται σε σχόλια."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "και"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Αφήστε αυτό το πεδίο κενό. Αν εισάγετε κάτι τότε το σχόλιο θα θεωρηθεί spam "
-"και δεν θα εμφανιστεί."
-
-#: models.py:23
-msgid "content type"
-msgstr "τύπος περιεχομένου"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID αντικειμένου"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "χρήστης"
-
-#: models.py:55
-msgid "user's name"
-msgstr "όνομα χρήστη"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "ηλεκτρονική διεύθυνση χρήστη"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "διεύθυνση ιστοτόπου χρήστη"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "σχόλιο"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "ημερομηνία/ώρα υποβολής"
-
-#: models.py:63
-msgid "IP address"
-msgstr "διεύθυνση IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "είναι δημόσιο"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Απεπιλέξτε αυτή την επιλογή για να κάνετε το σχόλιο να μην εμφανίζεται."
-
-#: models.py:67
-msgid "is removed"
-msgstr "είναι διαγραμμένο"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Επιλέξτε αυτή την επιλογή εάν το σχόλιο είναι ανάρμοστο. Ένα μήνυμα \"Αυτό "
-"το σχόλιο διαγράφηκε\" θα εμφανιστεί στη θέση του."
-
-#: models.py:80
-msgid "comments"
-msgstr "σχόλια"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Αυτό το σχόλιο πραγματοποιήθκε από πιστοποιημένο χρήστη και για τον λόγο "
-"αυτό δεν είναι είναι δυνατή η επεξεργασία του ονόματός του."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Αυτό το σχόλιο πραγματοποιήθκε από πιστοποιημένο χρήστη και για τον λόγο "
-"αυτό δεν είναι είναι δυνατή η επεξεργασία της διεύθυνσης του ηλεκτρονικού "
-"του ταχυδρομείου."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Σχόλιο από %(user)s στις %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "επισήμανση"
-
-#: models.py:180
-msgid "date"
-msgstr "ημερομηνία"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "επισήμανση σχολίου"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "επισημάνσεις σχολίου"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Έγκριση σχολίου"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Επιβεβαιώστε ότι επιθυμείτε την δημόσια εμφάνιση του σχολίου."
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Έγκριση."
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Ευχαριστούμε για την έγκριση."
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Ευχαριστούμε για τον χρόνο που διαθέσατε για την βελτίωση της ποιότητας των "
-"σχολίων στον ιστότοπό μας."
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Αφαίρεση σχολίου"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Επιβεβαιώστε ότι επιθυμείτε την αφαίρεση του σχολίου."
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Αφαίρεση"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Ευχαριστούμε για την αφαίρεση"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Επισήμανση σχολίου"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Επιβεβαιώστε ότι επιθυμείτε την επισήμανσση του σχολίου."
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Επισήμανση"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Ευχαριστούμε για την επισήμανση"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Δημοσίευση"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Προβολή:"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Ευχαριστούμε για το σχόλιό σας"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Ευχαριστούμε για το σχόλιό σας"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Προβολή του σχολίου σας"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Παρακαλούμε διορθώστε τα παρακάτω σφάλματα:"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Δημοσιοποίηση του σχολίου σας"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "ή πραγματοποιήστε αλλαγές"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/en/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/en/LC_MESSAGES/django.mo
deleted file mode 100644
index a74825b..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/en/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/en/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/en/LC_MESSAGES/django.po
deleted file mode 100644
index 43ca058..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/en/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,284 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2010-05-13 15:35+0200\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr ""
-
-#: admin.py:28
-msgid "Metadata"
-msgstr ""
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr ""
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr ""
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr ""
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr ""
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr ""
-
-#: forms.py:96
-msgid "Name"
-msgstr ""
-
-#: forms.py:97
-msgid "Email address"
-msgstr ""
-
-#: forms.py:98
-msgid "URL"
-msgstr ""
-
-#: forms.py:99
-msgid "Comment"
-msgstr ""
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr ""
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-
-#: models.py:23
-msgid "content type"
-msgstr ""
-
-#: models.py:25
-msgid "object ID"
-msgstr ""
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr ""
-
-#: models.py:55
-msgid "user's name"
-msgstr ""
-
-#: models.py:56
-msgid "user's email address"
-msgstr ""
-
-#: models.py:57
-msgid "user's URL"
-msgstr ""
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr ""
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr ""
-
-#: models.py:63
-msgid "IP address"
-msgstr ""
-
-#: models.py:64
-msgid "is public"
-msgstr ""
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-
-#: models.py:67
-msgid "is removed"
-msgstr ""
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-
-#: models.py:80
-msgid "comments"
-msgstr ""
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-
-#: models.py:179
-msgid "flag"
-msgstr ""
-
-#: models.py:180
-msgid "date"
-msgstr ""
-
-#: models.py:190
-msgid "comment flag"
-msgstr ""
-
-#: models.py:191
-msgid "comment flags"
-msgstr ""
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr ""
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr ""
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr ""
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr ""
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr ""
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr ""
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr ""
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr ""
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr ""
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr ""
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr ""
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr ""
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr ""
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr ""
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr ""
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr ""
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/en_GB/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/en_GB/LC_MESSAGES/django.mo
deleted file mode 100644
index e61ba2d..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/en_GB/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/en_GB/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/en_GB/LC_MESSAGES/django.po
deleted file mode 100644
index 528dd20..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/en_GB/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,302 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ross Poulton <ross@rossp.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
-"django/language/en_GB/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: en_GB\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Content"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadata"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Flag selected comments"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Approve selected comments"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Remove selected comments"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s comments"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Latest comments on %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Name"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Email address"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Comment"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Watch your mouth! The word %s is not allowed here."
-msgstr[1] "Watch your mouth! The words %s are not allowed here."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "and"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"If you enter anything in this field your comment will be treated as spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "content type"
-
-#: models.py:25
-msgid "object ID"
-msgstr "object ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "user"
-
-#: models.py:55
-msgid "user's name"
-msgstr "user's name"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "user's email address"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "user's URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "comment"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "date/time submitted"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP address"
-
-#: models.py:64
-msgid "is public"
-msgstr "is public"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Uncheck this box to make the comment effectively disappear from the site."
-
-#: models.py:67
-msgid "is removed"
-msgstr "is removed"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-
-#: models.py:80
-msgid "comments"
-msgstr "comments"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "flag"
-
-#: models.py:180
-msgid "date"
-msgstr "date"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "comment flag"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "comment flags"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Approve a comment"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Really make this comment public?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Approve"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Thanks for approving"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Remove a comment"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Really remove this comment?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Remove"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Thanks for removing"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Flag this comment"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Really flag this comment?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Flag"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Thanks for flagging"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Post"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Preview"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Thanks for commenting"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Thank you for your comment"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Preview your comment"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Please correct the errors below"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Post your comment"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "or make changes"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/eo/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/eo/LC_MESSAGES/django.mo
deleted file mode 100644
index d82af65..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/eo/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/eo/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/eo/LC_MESSAGES/django.po
deleted file mode 100644
index 473a049..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/eo/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,303 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Baptiste <baptiste+transifex@darthenay.fr>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-06-05 07:08+0000\n"
-"Last-Translator: Baptiste <baptiste+transifex@darthenay.fr>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/"
-"language/eo/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Enhavo"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadatumo"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d komento sukcese flagitaj"
-msgstr[1] "%d komentoj sukcese flagitaj"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Marki elektitajn komentojn"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d komento sukcese aprovita"
-msgstr[1] "%d komentoj sukcese aprovitaj"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Aprobi elektitajn komentojn"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d komento sukcese forigita"
-msgstr[1] "%d komentoj sukcese forigitaj"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Forigi elektitajn komentojn"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s komentoj"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Lastaj komentoj ĉe %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Nomo"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Retpoŝtadreso"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Komento"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Atentu via lingvaĵo! La vorto %s ne estas permisita ĉi-tie."
-msgstr[1] "Atentu via lingvaĵo! La vortoj %s ne estas permisitaj ĉi-tie."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "kaj"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Se vi enigas ion-ajn en ĉi-tiu kampo, via komento estos traktita kiel spamo"
-
-#: models.py:23
-msgid "content type"
-msgstr "enhava tipo"
-
-#: models.py:25
-msgid "object ID"
-msgstr "objekta identigaĵo"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "uzanto"
-
-#: models.py:55
-msgid "user's name"
-msgstr "uzanta nomo"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "uzanta retpoŝtadreso"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "uzanta URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "komento"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "dato kaj horo transsenditaj"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP-adreso"
-
-#: models.py:64
-msgid "is public"
-msgstr "estas publika"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Malŝaltu ĉi-tiun markobutonon por definitive malaperigi la komenton el la "
-"retejo."
-
-#: models.py:67
-msgid "is removed"
-msgstr "estas forigita"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Ŝaltu ĉi-tiun markobutonon se la komento estas nekonvena. La mesaĝo \"Ĉi-tiu "
-"komento estis forigita\" estos montrita anstataŭe."
-
-#: models.py:80
-msgid "comments"
-msgstr "komentoj"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Ĉi-tiu komento estis afiŝita de aŭtentigita uzanto, do tiel la nomo estas "
-"nurlega."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Ĉi-tiu komento estis afiŝita de aŭtentigita uzanto, do tiel la nomo kaj "
-"retpoŝtadreo estas nurlegaj."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Afiŝita de %(user)s - %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "marko"
-
-#: models.py:180
-msgid "date"
-msgstr "dato"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "komenta marko"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "komentaj markoj"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Aprobi komenton"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Ĉu certe publikigi ĉi-tiun komenton?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Aprobi"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Dankon por la aprobo"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Dankon por trapasi tempon por plibonigi la diskutan kvaliton ĉe nia retejo"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Forigi komenton"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Ĉu certe forigi ĉi-tiun komenton?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Forigu"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Dankon por la forigo"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Marki ĉi-tiun komenton"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Ĉu certe marki ĉi-tiun komenton?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Marki"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Dankon por la marko"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Afiŝi"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Antaŭrigardo"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Dankon por al komentado"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Dankon por via komento"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Antaŭrigardi vian komenton"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Bonvolu ĝustigi la erarojn sube."
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Bonvolu korekti la subajn erarojn"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Publikigi vian komenton"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "aŭ lin redakti"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/es/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/es/LC_MESSAGES/django.mo
deleted file mode 100644
index 15edf6d..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/es/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/es/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/es/LC_MESSAGES/django.po
deleted file mode 100644
index 9b2bd49..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/es/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,306 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antoni Aloy <aaloy@apsl.net>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Marc Garcia <garcia.marc@gmail.com>, 2011
-# Sebastián Ramírez Magrí <sebasmagri@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-06-07 01:28+0000\n"
-"Last-Translator: Sebastián Ramírez Magrí <sebasmagri@gmail.com>\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Contenido"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadatos"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d comentario ha sido marcado"
-msgstr[1] "%d comentarios han sido marcados"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Marca los comentarios seleccionados"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d comentario ha sido aprobado"
-msgstr[1] "%d comentarios han sido aprobados"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Aprueba los comentarios seleccionados"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d comentario fue eliminado con éxito"
-msgstr[1] "%d comentarios fueron eliminados con éxito"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Elimina los comentarios seleccionados"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "comentarios de %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Últimos comentarios en %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Nombre"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Dirección de correo electrónico"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Comentario"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "¡Cuide su vocabulario! Aquí no admitimos la palabra %s."
-msgstr[1] "¡Cuide su vocabulario! Aquí no admitimos las palabras %s."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "y"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Si introduce algo en este campo su comentario será tratado como spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "tipo de contenido"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID de objeto"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "usuario"
-
-#: models.py:55
-msgid "user's name"
-msgstr "nombre del usuario"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "dirección de correo electrónico del usuario"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL del usuario"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "comentario"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "fecha/hora de envío"
-
-#: models.py:63
-msgid "IP address"
-msgstr "Dirección IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "es público"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Desmarque esta casilla para hacer desaparecer el comentario del sitio web de "
-"forma efectiva."
-
-#: models.py:67
-msgid "is removed"
-msgstr "está eliminado"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Marque esta opción si el comentario es inapropiado. En su lugar se mostrará "
-"el mensaje \"Este comentario ha sido eliminado\"."
-
-#: models.py:80
-msgid "comments"
-msgstr "comentarios"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Este comentario ha sido enviado por un usuario autentificado: de modo que su "
-"nombre no es modificable."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Este comentario ha sido colocado por un usuario autentificado: de modo que "
-"su dirección de correo electrónico no es modificable."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Enviado por %(user)s en %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "marcar"
-
-#: models.py:180
-msgid "date"
-msgstr "fecha"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "marca de comentario"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "marcas de comentario"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Aprobar un comentario"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Realmente desea hacer este comentario público?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Aprobar"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Gracias por aprobar"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Gracias por tomarse el tiempo para mejorar la calidad del debate en nuestro "
-"sitio"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Eliminar un comentario"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "¿Realmente desea eliminar este comentario?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Eliminar"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Gracias por eliminar"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Marcar este comentario"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "¿Realmente desea marcar este comentario?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Marcar"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Graciar por marcar"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Enviar"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Previsualizar"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Gracias por comentar"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Gracias por su comentario"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Previsualizar su comentario"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Por favor, corrija los siguientes errores."
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Por favor corrija los siguientes errores"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Envie su comentario"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "o haga cambios"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/es_AR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/es_AR/LC_MESSAGES/django.mo
deleted file mode 100644
index c7e4caf..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/es_AR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/es_AR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/es_AR/LC_MESSAGES/django.po
deleted file mode 100644
index d3682f0..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/es_AR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,302 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ramiro Morales <cramm0@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-10-26 20:55+0000\n"
-"Last-Translator: Ramiro Morales <cramm0@gmail.com>\n"
-"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
-"django/language/es_AR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_AR\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Contenido"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadatos"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "Se reportó exitosamente %d comentario"
-msgstr[1] "Se reportaron exitosamente %d comentarios"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Marcar comentarios seleccionados"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "Se aprobó exitosamente %d comentario"
-msgstr[1] "Se aprobaron exitosamente %d comentarios"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Aprobar comentario seleccionado"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "Se eliminó exitosamente %d comentario"
-msgstr[1] "Se eliminaron exitosamente %d comentarios"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Eliminar comentarios seleccionados"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "comentarios en %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Últimos comentarios en %(site_name)s."
-
-#: forms.py:96
-msgid "Name"
-msgstr "Nombre"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Dirección de correo electrónico"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Comentario"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "¡Controla tu lenguaje! Aquí no admitimos la palabra %s."
-msgstr[1] "¡Controla tu lenguaje! Aquí no admitimos las palabras %s."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "y"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Si introduce algo en este campo su comentario será tratado como spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "tipo de contenido"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID de objeto"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "usuario"
-
-#: models.py:55
-msgid "user's name"
-msgstr "nombre de usuario"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "dirección de correo electrónico del usuario"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL del usuario"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "comentario"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "fecha/hora de envío"
-
-#: models.py:63
-msgid "IP address"
-msgstr "Dirección IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "es público"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "desmarque este ítem para que el comentario desaparezca del sitio."
-
-#: models.py:67
-msgid "is removed"
-msgstr "se ha eliminado"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Marque este ítem si el comentario es inapropiado. En su lugar se mostrará un "
-"mensaje \"Este comentario ha sido eliminado\"."
-
-#: models.py:80
-msgid "comments"
-msgstr "comentarios"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Este comentario ha sido enviado por un usuario identificado, por lo tanto el "
-"nombre no puede modificarse."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Este comentario ha sido enviado por un usuario identificado, por lo tanto la "
-"dirección de correo electrónico no puede modificarse."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Enviado por %(user)s el %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "marca"
-
-#: models.py:180
-msgid "date"
-msgstr "fecha"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "marca de comentario"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "marcas de comentario"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Aprobar un comentario"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "¿Confirma que realmente desea hacer este comentario público?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Aprobar"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "¡Gracias por aprobar!"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Gracias por tomarse el tiempo de mejorar la calidad de la discusión en "
-"nuestro sitio"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Eliminar un comentario"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "¿Confirma que realmente desea eliminar este comentario?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Eliminar"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "¡Gracias por eliminar!"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Marcar este comentario"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "¿Confirma que realmente desde marcar este comentario?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Marcar"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "¡Gracias por marcar!"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Remitir"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Previsualización"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Gracias por dejar su comentario"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Gracias por dejar su comentario"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Ver una copia previa de su comentario"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Por favor, corrija los siguientes errores."
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Por favor, corrija los siguientes errores."
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Enviar su comentario"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "o realice modificaciones"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/es_MX/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/es_MX/LC_MESSAGES/django.mo
deleted file mode 100644
index ff72595..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/es_MX/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/es_MX/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/es_MX/LC_MESSAGES/django.po
deleted file mode 100644
index 995a2cc..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/es_MX/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,301 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Abraham Estrada <abraham.estrada@gmail.com>, 2011,2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-06 21:09+0000\n"
-"Last-Translator: Abraham Estrada <abraham.estrada@gmail.com>\n"
-"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/"
-"language/es_MX/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_MX\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Contenido"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadatos"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d comentario fue marcado exitosamente"
-msgstr[1] "%d comentarios fueron marcados exitosamente"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Marcar comentarios seleccionados"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d comentario se aprobó con éxito"
-msgstr[1] "%d comentarios se aprobaron con éxito"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Aprobar comentario seleccionado"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d comentario ha sido eliminado correctamente"
-msgstr[1] "%d comentarios han sido eliminados correctamente"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Eliminar comentarios seleccionados"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "comentarios en %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Últimos comentarios en %(site_name)s "
-
-#: forms.py:96
-msgid "Name"
-msgstr "Nombre"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Dirección de correo electrónico"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Comentario"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "¡Controla tu lenguaje! Aquí no admitimos la palabra %s."
-msgstr[1] "¡Controla tu lenguaje! Aquí no admitimos las palabras %s."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "y"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Si introduce algo en este campo su comentario será tratado como spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "tipo de contenido"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID de objeto"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "usuario"
-
-#: models.py:55
-msgid "user's name"
-msgstr "nombre de usuario"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "dirección de correo electrónico del usuario"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL del usuario"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "comentario"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "fecha/hora de envío"
-
-#: models.py:63
-msgid "IP address"
-msgstr "Dirección IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "es público"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Desactive esta casilla para hacer el comentario desaparezca del sitio."
-
-#: models.py:67
-msgid "is removed"
-msgstr "se ha eliminado"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Marque esta casilla si el comentario es inapropiado. En su lugar se mostrará "
-"un mensaje \"Este comentario ha sido eliminado\"."
-
-#: models.py:80
-msgid "comments"
-msgstr "comentarios"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Este comentario ha sido enviado por un usuario identificado, por lo tanto el "
-"nombre no puede modificarse."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Este comentario ha sido enviado por un usuario identificado, por lo tanto la "
-"dirección de correo electrónico no puede modificarse."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Enviado por %(user)s el %(date)s \n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "marca"
-
-#: models.py:180
-msgid "date"
-msgstr "fecha"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "marca de comentario"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "marcas de comentario"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Aprobar un comentario"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "¿Desea hacer público este comentario?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Aprobar"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Gracias por aprovar"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Gracias por tomarse el tiempo para mejorar la calidad de la discución en "
-"nuestro sitio"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Eliminar comentario"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "¿Desea eliminar este comentario?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Eliminar"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Gracias por eliminar"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Marcar este comentario"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "¿Desea marcar este comentario?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Marcar"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Gracias por marcar"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Enviar"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Previsualizar"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Gracias por comentar"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Gracier por el comentario"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Previsualizar el comentario"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Por favor corrija los errores"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Por favor, corrija los siguientes errores"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Envia comentario"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "o hacer cambios"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/et/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/et/LC_MESSAGES/django.mo
deleted file mode 100644
index 223a67e..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/et/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/et/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/et/LC_MESSAGES/django.po
deleted file mode 100644
index e720f38..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/et/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,301 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jannolii <jannolii@gmail.com>, 2013
-# madisvain <madisvain@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-06 12:57+0000\n"
-"Last-Translator: jannolii <jannolii@gmail.com>\n"
-"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/"
-"et/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: et\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Sisu"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Meta-andmed"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d kommentaar on edukalt märgistatud."
-msgstr[1] "%d kommentaari on edukalt märgistatud."
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Märgista valitud kommentaarid"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d kommentaar on edukalt kinnitatud"
-msgstr[1] "%d kommentaari on edukalt kinnitatud"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Kiida heaks valitud kommentaarid"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d kommentaar on edukalt eemaldatud"
-msgstr[1] "%d kommentaari on edukalt eemaldatud"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Eemalda valitud kommentaarid"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "Saidi %(site_name)s kommentaarid"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Viimased kommentaarid saidil %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Nimi"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "E-posti aadress"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Kommentaar"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Jälgige oma keelekasutust. Sõna %s ei ole lubatud."
-msgstr[1] "Jälgige oma keelekasutust. Sõnad %s ei ole lubatud."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "ja"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Kui sisestate sellesse lahtrisse midagi, loetakse kommentaar rämpsuks"
-
-#: models.py:23
-msgid "content type"
-msgstr "sisutüüp"
-
-#: models.py:25
-msgid "object ID"
-msgstr "objekti ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "kasutaja"
-
-#: models.py:55
-msgid "user's name"
-msgstr "kasutaja pärisnimi"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "kasutaja e-posti aadress"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "kasutaja URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "kommentaar"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "loomise kuupäev/kellaaeg"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP aadress"
-
-#: models.py:64
-msgid "is public"
-msgstr "on avalik"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Eemaldage siit linnuke, et varjata kommentaar saidilt."
-
-#: models.py:67
-msgid "is removed"
-msgstr "on eemaldatud"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Märkige siia linnuke, kui see kommentaar on ebasobiv. Kommentaari asemel "
-"kuvatakse kirja \"Kommentaar on kustutatud\"."
-
-#: models.py:80
-msgid "comments"
-msgstr "kommentaarid"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Selle kommentaari postitas sisselogitud kasutaja, mistõttu ei ole nimetus "
-"muudetav."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Selle kommentaari postitas sisselogitud kasutaja, mistõttu ei ole e-posti "
-"aadress muudetav."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Postitatud kasutaja %(user)s poolt %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "märge"
-
-#: models.py:180
-msgid "date"
-msgstr "kuupäev"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "kommentaari märge"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "kommentaari märked"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Märgi kommentaar sobivaks"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Oled kindel, et soovid teha selle kommentaari avalikuks?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Sobib"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Aitäh, et märkisid kommentaari sobivaks"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "Aitäh, et leidsid aega parandamaks arutelude kvaliteeti meie lehel"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Eemalda kommentaar"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Oled kindel, et soovid selle kommentaari eemaldada?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Eemalda"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Aitäh, et eemaldasid kommentaari"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Märgi see kommentaar"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Oled kindel, et soovid selle kommentaari märkida?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Märge"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Aitäh, et märkisid kommentaari"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Postita"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Eelvaade"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Tänan kommenteerimast"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Aitäh kommentaari eest"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Kommentaari eelvaade"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Palun parandage allolevad vead"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Palun parandage allolevad vead"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Postita kommentaar"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "või tee muudatused"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/eu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/eu/LC_MESSAGES/django.mo
deleted file mode 100644
index 1c96c43..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/eu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/eu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/eu/LC_MESSAGES/django.po
deleted file mode 100644
index 80aed5c..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/eu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,304 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Aitzol Naberan <anaberan@codesyntax.com>, 2011
-# Ander Martínez <ander.basaundi@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-06-10 21:56+0000\n"
-"Last-Translator: Ander Martínez <ander.basaundi@gmail.com>\n"
-"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/"
-"eu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Edukia"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metada"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "iruzkin %d ondo markatu da"
-msgstr[1] "%d iruzkin ondo markatu dira"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Markatu aukeratutako iruzkinak"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "iruzkin %d ondo onartu da"
-msgstr[1] "%d iruzkin ondo onartu dira"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Onartu aukeratutako iruzkinak"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "iruzkin %d ondo ezabatu da"
-msgstr[1] "%d iruzkin ondo ezabatu dira"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Ezabatu aukeratutako iruzkinak"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s guneko iruzkinak"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "%(site_name)s guneko azken iruzkinak"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Izena"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Eposta helbidea"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Iruzkina"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Txiiist! %s hitza ez zaigu gustatzen"
-msgstr[1] "Txiiist! %s hitzak ez zaizkigu gustatzen"
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "eta"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Eremu honetan zerbait idazten baduzu zure iruzkina spam gisa tratatuko da."
-
-#: models.py:23
-msgid "content type"
-msgstr "eduki mota"
-
-#: models.py:25
-msgid "object ID"
-msgstr "objetuaren ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "Erabiltzailea"
-
-#: models.py:55
-msgid "user's name"
-msgstr "erabiltzailearen izena"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "erabiltzailearen eposta helbidea"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "erabiltzailearen URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "iruzkina"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "data/hordua bidalia"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP helbidea"
-
-#: models.py:64
-msgid "is public"
-msgstr "publikoa"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Markatu kutxa hau iruzkina webgunetik desagertarazteko."
-
-#: models.py:67
-msgid "is removed"
-msgstr "ezabatua"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Markatu kutxa hau komentario ezegokia bada. \"Komentario hau ezabatua izan da"
-"\" mezua erakutsiko da bere ordez."
-
-#: models.py:80
-msgid "comments"
-msgstr "iruzkinak"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Iruzkin hau autentikatutako erabiltzaile batek egin du. Hori dela eta, izena "
-"irakurtzeko moduan dago bakarrik. "
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Iruzkin hau autentikatutako erabiltzaile batek egin du. Hori dela eta, "
-"eposta irakurtzeko moduan dago bakarrik. "
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(user)s erabiltzileak bidalia %(date)s datan\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "marka"
-
-#: models.py:180
-msgid "date"
-msgstr "data"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "iruzkin marka"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "iruzkin markak"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Onartu iruzkina"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Publikatu iruzkina?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Onartu"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Eskerrik asko onartzearren"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Eskerrik asko webguneko estabaidaren kalitatea hobetzeko hartutako "
-"denboragatik"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Ezabatu iruzkina"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Ziur iruzkin hau ezabtu nahi duzula?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Ezabatu"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Eskerrik asko ezabatzearren"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Markatu iruzkina"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Ziur iruzkin hau markatu nahi duzula?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Marka"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Eskerrik asko markatzearren"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Bidali"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Aurreikusi"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Eskerrik asko iruzkintzearren"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Eskerrik asko zure iruzkinagatik"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Aurreikusi zure iruzkina"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Mesedez zuzendu azpiko erroreak"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Mesedez zuzendu azpiko erroreak"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Bidali zure iruzkina"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "edo egin aldaketak"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/fa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/fa/LC_MESSAGES/django.mo
deleted file mode 100644
index 702bd86..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/fa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/fa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/fa/LC_MESSAGES/django.po
deleted file mode 100644
index cf29549..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/fa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,296 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Nikneshan <ali@nikneshan.com>, 2012
-# Arash Fazeli <a.fazeli@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Reza Mohammadi <reza@teeleh.ir>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-05 08:56+0000\n"
-"Last-Translator: Reza Mohammadi <reza@teeleh.ir>\n"
-"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/"
-"fa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "محتوا"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "فوق داده"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d نظر علامت خوردند"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "نشان‌گذاری نظرات انتخاب شده"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d نظر تأیید شدند"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "تایید نظرات انتخاب شده"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d نظر حذف شدند"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "حذف نظر های انتخاب شده"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "نظرات %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "آخرین نظرات در %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "نام"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "نشانی پست الکترونیکی"
-
-#: forms.py:98
-msgid "URL"
-msgstr "نشانی اینترنتی"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "نظر:"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "حرف دهنت رو بفهم! کلمهٔ %s اینجا قابل قبول نیست"
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "و"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "اگر چیزی در این فیلد وارد کنید، نظر شما به عنوان اسپم شناخته خواهد شد"
-
-#: models.py:23
-msgid "content type"
-msgstr "نوع محتوا"
-
-#: models.py:25
-msgid "object ID"
-msgstr "مشخصهٔ شیء"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "کاربر"
-
-#: models.py:55
-msgid "user's name"
-msgstr "نام کاربر"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "نشانی پست الکترونیکی کاربر"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "نشانی اینترنتی کاربر"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "نظر"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "تاریخ/زمان فرستاده شد"
-
-#: models.py:63
-msgid "IP address"
-msgstr "نشانی IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "عمومی است"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "تیک این جعبه را بردارید تا نظر به طور کارا از وبگاه ناپدید شود."
-
-#: models.py:67
-msgid "is removed"
-msgstr "حذف شده است"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"اگر نظر نامناسب است این جا علامت بزنید. پیغام \"این نظر حذف شد\" به جای آن "
-"نمایش داده می شود."
-
-#: models.py:80
-msgid "comments"
-msgstr "نظرات"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr "این نظر توسط یک کاربر ثبت‌شده فرستاده شده و لذا نامش فقط-خواندنی است."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"این نظر توسط یک کاربر ثبت‌شده فرستاده شده و لذا پست الکترونیکی‌اش فقط-خواندنی "
-"است."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"ارسال‌شده توسط %(user)s در تاریخ %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "علامت گذاری "
-
-#: models.py:180
-msgid "date"
-msgstr "تاریخ"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "علامت گذاری نظر"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "علامت گذاری های نظر"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "تایید یک نظر"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "واقعا این نظر به صورت عمومی نمایش داده شود؟"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "تایید"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "ممنون از تایید."
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "ممنون از وقتی که برای افزایش کیفیت بحث در سایت ما گذاشتید."
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "حذف یک نظر"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "واقعا این نظر حذف شود؟"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "حذف"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "ممنون از حذف"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "علامت گذاری این نظر"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "واقعا این نظر علامت گذاری شود؟"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "علامت گذاری "
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "ممنون از علامت گذاری "
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "پست"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "پیش نمایش"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "برای اظهار نظر"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "با تشکر از نظر شما"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "پیش نمایش نظر شما"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "لطفا خطاهای زیر را تصحیح"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "لطفاً خطاهای زیر را تصحیح کنید"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "نظر خود را ارسال کنید"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "و یا تغییر ایجاد کنید."
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/fi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/fi/LC_MESSAGES/django.mo
deleted file mode 100644
index 91d122d..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/fi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/fi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/fi/LC_MESSAGES/django.po
deleted file mode 100644
index 6831a36..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/fi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,300 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Finnish (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Sisältö"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metatieto"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Merkitse valitut kommentit"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Hyväksy valitut kommentit"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Poista valitut kommentit"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "Kommentit sivustolle %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Sivuston %(site_name)s viimeisimmät kommentit"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Nimi"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Sähköpostiosoite"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL-osoite"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Kommentti"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Siivoa suusi! Sanaa \"%s\" ei saa käyttää tässä."
-msgstr[1] "Siivoa suusi! Sanoja \"%s\" ei saa käyttää tässä."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "ja"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Jos syötät tähän kenttään jotain, kommenttisi luokitellaan roskapostiksi"
-
-#: models.py:23
-msgid "content type"
-msgstr "sisältötyyppi"
-
-#: models.py:25
-msgid "object ID"
-msgstr "kohteen tunniste"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "käyttäjä"
-
-#: models.py:55
-msgid "user's name"
-msgstr "käyttäjän nimi"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "käyttäjän sähköpostiosoite"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "käyttäjän URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "kommentti"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "lähettämishetki"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP-osoite"
-
-#: models.py:64
-msgid "is public"
-msgstr "on julkinen"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Piilottaaksesi kommentin näkymästä sivustolta, poista tämä ruksi."
-
-#: models.py:67
-msgid "is removed"
-msgstr "on poistettu"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Rastita jos kommentti on asiaankuulumaton. Kommentin tilalla näytetään\n"
-"viesti \"Tämä kommentti on poistettu\"."
-
-#: models.py:80
-msgid "comments"
-msgstr "kommentit"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Kommentin lähettäjän nimeä ei voi muuttaa, koska lähettäjä on kirjautunut "
-"käyttäjä."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Kommentin lähettäjän sähköpostiosoitetta ei voi muuttaa, koska lähettäjä on "
-"kirjautunut käyttäjä."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-" Kirjoittanut %(user)s, pvm %(date)s\\n\n"
-" \\n\n"
-" %(comment)s\\n\n"
-" \\n\n"
-" http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "merkintä"
-
-#: models.py:180
-msgid "date"
-msgstr "päivä"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "kommentin merkintä"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "kommenttien merkinnät"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Hyväksy kommentti"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Haluatko varmasti tehdä kommentista julkisen?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Hyväksy"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Kiitos hyväksynnästäsi"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "Kiitos sivustomme keskusteluihin panostamastasi ajasta"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Poista kommentti"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Haluatko varmasti poistaa tämän kommentin?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Poista"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Kiitos poistamisesta"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Merkitse tämä kommentti"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Haluatko varmasti merkitä tämän kommentin?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Merkitse"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Kiitos merkitsemisestä"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Lähetä"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Esikatsele"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Kiitos kommentista"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Kiitos kommentistasi"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Esikatsele kommenttia"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Korjaa allaolevat virheet"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Lähetä kommentti"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "tai tee muutoksia"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/fr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/fr/LC_MESSAGES/django.mo
deleted file mode 100644
index 504b7eb..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/fr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/fr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/fr/LC_MESSAGES/django.po
deleted file mode 100644
index afd4795..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/fr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# claudep <claude@2xlibre.net>, 2013
-# claudep <claude@2xlibre.net>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-06-01 11:13+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: French (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Contenu"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Métadonnées"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d commentaire a été marqué avec succès"
-msgstr[1] "%d commentaires ont été marqués avec succès"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Marquer les commentaires sélectionnés"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d commentaire a été approuvé avec succès"
-msgstr[1] "%d commentaires ont été approuvés avec succès"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Approuver les commentaires sélectionnés"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d commentaire a été supprimé avec succès"
-msgstr[1] "%d commentaires ont été supprimés avec succès"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Masquer les commentaires sélectionnés"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "Commentaires sur %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Derniers commentaires sur %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Nom"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Adresse électronique"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Commentaire"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Attention à votre langage ! Le terme %s n'est pas autorisé ici."
-msgstr[1] ""
-"Attention à votre langage ! Les termes %s ne sont pas autorisés ici."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "et"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Si vous saisissez quelque chose dans ce champ, votre commentaire sera "
-"considéré comme étant indésirable"
-
-#: models.py:23
-msgid "content type"
-msgstr "type de contenu"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID de l'objet"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "utilisateur"
-
-#: models.py:55
-msgid "user's name"
-msgstr "nom de l'utilisateur"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "adresse électronique de l'utilisateur"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL de l'utilisateur"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "commentaire"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "date et heure soumises"
-
-#: models.py:63
-msgid "IP address"
-msgstr "adresse IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "est public"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Décochez cette case pour faire vraiment disparaître ce commentaire du site."
-
-#: models.py:67
-msgid "is removed"
-msgstr "est masqué"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Cochez cette case si le commentaire est inadéquat. Un message type « Ce "
-"commentaire a été supprimé » sera affiché en lieu et place de celui-ci."
-
-#: models.py:80
-msgid "comments"
-msgstr "commentaires"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Ce commentaire a été posté par un utilisateur authentifié, le nom est donc "
-"en lecture seule."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Ce commentaire a été posté par un utilisateur authentifié et le courriel est "
-"donc en lecture seule"
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Posté par %(user)s le %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "indicateur"
-
-#: models.py:180
-msgid "date"
-msgstr "date"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "indicateur de commentaire"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "indicateurs de commentaire"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Valider un commentaire"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Voulez-vous rendre ce commentaire public ?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Valider"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Merci pour cette validation"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Merci d'avoir pris le temps d'améliorer la qualité de la discussion sur "
-"notre site"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Supprimer un commentaire"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Voulez-vous supprimer définitivement ce commentaire ?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Supprimer"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Merci pour cette suppression"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Signaler ce commentaire"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Voulez-vous vraiment signaler ce commentaire ?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Signaler"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Merci d'avoir signalé ce commentaire"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Envoyer"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Prévisualiser"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Merci pour votre commentaire"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Merci pour votre commentaire"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Prévisualiser votre commentaire"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Veuillez corriger les erreurs suivantes."
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Veuillez corriger les erreurs ci-dessous"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Envoyer votre commentaire"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "ou le modifier"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/fy_NL/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/fy_NL/LC_MESSAGES/django.mo
deleted file mode 100644
index 34e3ca0..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/fy_NL/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/fy_NL/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/fy_NL/LC_MESSAGES/django.po
deleted file mode 100644
index a15498b..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/fy_NL/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,287 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-04-24 19:38+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Western Frisian (Netherlands) (http://www.transifex.com/"
-"projects/p/django/language/fy_NL/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fy_NL\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr ""
-
-#: admin.py:28
-msgid "Metadata"
-msgstr ""
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr ""
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr ""
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr ""
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr ""
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr ""
-
-#: forms.py:96
-msgid "Name"
-msgstr ""
-
-#: forms.py:97
-msgid "Email address"
-msgstr ""
-
-#: forms.py:98
-msgid "URL"
-msgstr ""
-
-#: forms.py:99
-msgid "Comment"
-msgstr ""
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr ""
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-
-#: models.py:23
-msgid "content type"
-msgstr ""
-
-#: models.py:25
-msgid "object ID"
-msgstr ""
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr ""
-
-#: models.py:55
-msgid "user's name"
-msgstr ""
-
-#: models.py:56
-msgid "user's email address"
-msgstr ""
-
-#: models.py:57
-msgid "user's URL"
-msgstr ""
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr ""
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr ""
-
-#: models.py:63
-msgid "IP address"
-msgstr ""
-
-#: models.py:64
-msgid "is public"
-msgstr ""
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-
-#: models.py:67
-msgid "is removed"
-msgstr ""
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-
-#: models.py:80
-msgid "comments"
-msgstr ""
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-
-#: models.py:179
-msgid "flag"
-msgstr ""
-
-#: models.py:180
-msgid "date"
-msgstr ""
-
-#: models.py:190
-msgid "comment flag"
-msgstr ""
-
-#: models.py:191
-msgid "comment flags"
-msgstr ""
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr ""
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr ""
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr ""
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr ""
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr ""
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr ""
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr ""
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr ""
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr ""
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr ""
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr ""
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr ""
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr ""
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr ""
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr ""
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr ""
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ga/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/ga/LC_MESSAGES/django.mo
deleted file mode 100644
index 224a93d..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ga/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ga/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/ga/LC_MESSAGES/django.po
deleted file mode 100644
index 488a923..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ga/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,316 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Michael Thornhill <michael@maithu.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/"
-"ga/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ga\n"
-"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
-"4);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Inneachar"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Meiteashonraí"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Bratach nótaí tráchta roghnaithe"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Cheadú nótaí tráchta roghnaithe"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Bain nótaí tráchta roghnaithe"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s nótaí"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Nótaí tráchtaí is déanaí ar %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Ainm"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "R-phost"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Nóta tráchta"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Féach ar do bhéal! Níl an focal %s cheadaítear anseo."
-msgstr[1] "Féach ar do bhéal! Níl na focail %s cheadaítear anseo."
-msgstr[2] "Féach ar do bhéal! Níl na focail %s cheadaítear anseo."
-msgstr[3] "Féach ar do bhéal! Níl na focail %s cheadaítear anseo."
-msgstr[4] "Féach ar do bhéal! Níl na focail %s cheadaítear anseo."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "agus"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Má cuireann tú aon rud sa réimse seo, beidh do nóta déileálfar mar spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "tíopa inneachar "
-
-#: models.py:25
-msgid "object ID"
-msgstr "oibiacht ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "úsáideoir"
-
-#: models.py:55
-msgid "user's name"
-msgstr "Ainm úsáideoir"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "seoladh r-phost an t-úsáideoir"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL an t-úsáideora"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "trácht"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "Dáta/am curtha isteach"
-
-#: models.py:63
-msgid "IP address"
-msgstr "Seol IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "poiblí"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Díthiceáil an bosca seo chun an nóta a thógáil as an suíomh."
-
-#: models.py:67
-msgid "is removed"
-msgstr "Scrioste"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Seic an bosca seo dá bbéadh an nóta tráchta seo míchuí. Taispeantar \"Bhí an "
-"nóta tráchta scrioste\" in áit an nóta tráchta seo."
-
-#: models.py:80
-msgid "comments"
-msgstr "nótaí tráchta"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Bhí an nóta tráchta póstailte trí uaire trí úsáideoir fíordheimhnithe mar "
-"sin tá an ainm léamh-amhain."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Bhí an nóta tráchta póstailte trí úsáideoir fíordeimhnite mar sin tá an r-"
-"phost léamh amháin."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Postáilte trí %(user)s ar %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "brat"
-
-#: models.py:180
-msgid "date"
-msgstr "dáta"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "brat nóta tráchta"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "bratacha nótaí tráchta"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Ceadaigh nóta tráchta"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Cuir an nóta seo poiblí?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Fhormheas"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Go raibh maith agait le hadhaigh to formheas"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Go raibh maith agat as an am chun feabhas a chur ar chaighdeán na "
-"díospóireachta ar ár suíomh"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Tóg amach nóta tráchta"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Dáiríre, cuir amach an nóta seo?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Tóg amach"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Go raibh maith agat le hadhaigh do thógail amach"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Cuir brat ar an nóta tráchta seo"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Go deimhin cuir brat ar an nóta tráchta seo?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Brat"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Go raibh maith agat le hadhaigh do brat"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Post"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Réamhamharc"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Go raibh maith agat le hadhaign do nóta tráchta"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Go raibh maith agat le hadhaigh do nóta tráchta"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Nóta tráchta réamhamharc"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Le do thoil, ceartaigh na botúin thíos."
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Seol do Nóta tráchta"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "nó déan aithraithe"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/gl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/gl/LC_MESSAGES/django.mo
deleted file mode 100644
index 95fa81b..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/gl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/gl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/gl/LC_MESSAGES/django.po
deleted file mode 100644
index 439d005..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/gl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,306 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# fasouto <fsoutomoure@gmail.com>, 2011
-# fonso <fonzzo@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Leandro Regueiro <leandro.regueiro@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-09-07 11:46+0000\n"
-"Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
-"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/"
-"gl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Contido"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadatos"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Poñer un indicador"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "Aprobouse con éxito %d comentario"
-msgstr[1] "Aprobáronse con éxito %d comentarios"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Aprobar os comentarios seleccionados"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Eliminar os comentarios seleccionados"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "Comentarios en %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Últimos comentarios en %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Nome"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Enderezo electrónico"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Comentario"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Sen palabrotas, por favor! Aquí non se pode usar a palabra %s."
-msgstr[1] "Sen palabrotas, por favor! Aquí non se poden usar as palabras %s."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "e"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Se insire calquera cousa neste campo o seu comentario será tratado coma spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "tipo de contido"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID do obxecto"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "usuario"
-
-#: models.py:55
-msgid "user's name"
-msgstr "nome de usuario"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "enderezo electrónico do usuario"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL do usuario"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "comentario"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "data/hora do envío"
-
-#: models.py:63
-msgid "IP address"
-msgstr "Enderezo IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "é público"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Desmarque esta casilla para eliminar o comentario definitivamente deste "
-"sitio."
-
-#: models.py:67
-msgid "is removed"
-msgstr "está borrado"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Marque esta caixa se o comentario non é apropiado. Verase a mensaxe \"Este "
-"comentario foi borrado\" no canto do seu contido."
-
-#: models.py:80
-msgid "comments"
-msgstr "comentarios"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Este comentario foi publicado por un usuario identificado e polo tanto o "
-"nome é de só lectura."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Este comentario foi publicado por un usuario identificado e polo tanto o "
-"enderezo de correo electrónico é de só lectura."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Publicado por %(user)s o %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "indicador"
-
-#: models.py:180
-msgid "date"
-msgstr "data"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "indicador de comentarios"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "indicadores de comentarios"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Aprobar un comentario"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Realmente desexa facer público este comentario?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Aprobar"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Grazas pola aprobación"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Grazas por tomar o tempo de mellorar a calidade da discusión no noso sitio"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Retirar un comentario"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Realmente desexa retirar este comentario?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Retirar"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Grazas pola retirada"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Poñerlle un indicador a este comentario"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Realmente desexa poñerlle un indicador a este comentario?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Indicador"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Grazas por colocar o indicador"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Publicar"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Vista previa"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Grazas por comentar"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Grazas polo seu comentario"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Vista previa do seu comentario"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Corrixa os erros de embaixo"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Corrixa os erros de embaixo"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Publicar o seu comentario"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "ou facer cambios"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/he/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/he/LC_MESSAGES/django.mo
deleted file mode 100644
index 4760830..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/he/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/he/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/he/LC_MESSAGES/django.po
deleted file mode 100644
index f989462..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/he/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,296 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Meir Kriheli <mkriheli@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-02 11:23+0000\n"
-"Last-Translator: Meir Kriheli <mkriheli@gmail.com>\n"
-"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "תוכן"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "מטא־נתונים"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "תגובה %d סומנה בהצלחה"
-msgstr[1] "%d תגובות סומנו בהצלחה"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "סמן תגובות שנבחרו"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "תגובה %d אושרה בהצלחה"
-msgstr[1] "%d תגובות אושרו בהצלחה"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "אשר תגובות שנבחרו"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "תגובה %d הוסרה בהצלחה"
-msgstr[1] "%d תגובות הוסרו בהצלחה"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "הסר תגובות שנבחרו"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "תגובות עבור %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "התגובות האחרונות על %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "שם"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "כתובת דוא\"ל"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "תגובה"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "שמור על לשונך! המילה %s אסורה לשימוש כאן."
-msgstr[1] "שמור על לשונך! המילים %s אסורות לשימוש כאן."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "ו"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "אם יוזן משהו בשדה זה תגובתך תטופל כספאם"
-
-#: models.py:23
-msgid "content type"
-msgstr "סוג תוכן"
-
-#: models.py:25
-msgid "object ID"
-msgstr "מזהה אובייקט"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "משתמש"
-
-#: models.py:55
-msgid "user's name"
-msgstr "שם משתמש"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "כתובת דוא\"ל משתמש"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "אתר המשתמש"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "תגובה"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "תאריך/שעת הגשה"
-
-#: models.py:63
-msgid "IP address"
-msgstr "כתובת IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "פומבי "
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "ביטול סימון התיבה יעלים בפועל את התגובה מהאתר"
-
-#: models.py:67
-msgid "is removed"
-msgstr "האם הוסר"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"יש לסמן תיבה זו עבור תגובה לא נאותה. הודעת \"תגובה זו נמחקה\" תוצג במקום "
-"התגובה."
-
-#: models.py:80
-msgid "comments"
-msgstr "תגובות"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr "הודעה זו נשלחה ע\"י משתמש מחובר לכן השם אינו ניתן לשינוי."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr "הודעה זו נשלחה ע\"י משתמש מחובר לכן כתובת הדוא\"ל אינה ניתנת לשינוי."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"הוגש ע\"י %(user)s ב %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "סימן"
-
-#: models.py:180
-msgid "date"
-msgstr "תאריך"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "סמן הערה"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "סמני הערה"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "אשר הערה"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "באמת להפוך את התגובה לפומבית?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "אשר"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "תודה על אישור התגובה"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "תודה על שהקדשת מזמנך כדי לשפר את איכות הדיון באתר שלנו"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "הסר תגובה"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "באמת להסיר תגובה זו?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "להסיר"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "תודה על ההסרה"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "סמן תגובה זו"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "באמת לסמן תגובה זו?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "סימן"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "תודה על הסימון"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "פוסט"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "תצוגה מקדימה"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "תודה על התגובה"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "תודה על התגובה"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "תצוגה מקדימה של התגובה"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "אנא תקן את שגיאות למטה"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "נא לתקן את השגיאות מתחת"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "פרסם את התגובה"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "או לבצע שינויים"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/hi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/hi/LC_MESSAGES/django.mo
deleted file mode 100644
index 181b80c..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/hi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/hi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/hi/LC_MESSAGES/django.po
deleted file mode 100644
index 12af4d1..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/hi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,303 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# pratik kumar <kpratik217@gmail.com>, 2013
-# Sandeep Satavlekar <sandysat@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-07-06 06:27+0000\n"
-"Last-Translator: pratik kumar <kpratik217@gmail.com>\n"
-"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/"
-"hi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "विषय"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "मेटाडाटा"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "टिप्पनी को फ्लैग करो"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "चयनित टिप्पणियों को स्वीकार करो"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "चयनित टिप्पणियाँ हटाएँ"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s टिप्पणियाँ "
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "%(site_name)s पर नवीनतम टिप्पणियाँ"
-
-#: forms.py:96
-msgid "Name"
-msgstr "नाम"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "ईमेल पता"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "टिप्पणी"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "अपनी ज़बान संभालो %s यह शब्द इस्तेमाल करने की यहाँ अनुमति नहीं हैं "
-msgstr[1] "अपनी ज़बान संभालो %s यह शब्द इस्तेमाल करने की यहाँ अनुमति नहीं हैं "
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "और"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"अगर आप इस क्षेत्र में कुछ भी दर्ज करते हो तो आप की टिप्पणी के साथ spam के जैसा सुलुख किया "
-"जायेगा"
-
-#: models.py:23
-msgid "content type"
-msgstr "विषय-सूची प्रकार"
-
-#: models.py:25
-msgid "object ID"
-msgstr "वस्तु आइ डी"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "उपभोक्ता"
-
-#: models.py:55
-msgid "user's name"
-msgstr "प्रयोक्ता नाम"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "प्रयोक्ता ईमेल पता"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "प्रयोक्ता यू.आर.एल"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "टिप्पणी"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "तिथि/समय निवेदित"
-
-#: models.py:63
-msgid "IP address"
-msgstr "आइ.पि पता"
-
-#: models.py:64
-msgid "is public"
-msgstr "सार्वजनिक है"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "इस टिप्पणी को प्रभावी रूप से साइट से गायब करने के लिए यह बॉक्स को अनचेक करें."
-
-#: models.py:67
-msgid "is removed"
-msgstr "हटाया गया"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"अगर टिप्पणी अनुचित है तो इस बॉक्स को चेक करें. एक \"यह टिप्पणी हटा दी गयी हैं\" संदेश "
-"प्रदर्शित किया जाएगा."
-
-#: models.py:80
-msgid "comments"
-msgstr "टिप्पणियाँ"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"इस टिप्पणी को किसी प्राधिकृत उपयोगकर्ता द्वारा पोस्ट किया गया था और इसीलिए इस नाम "
-"को केवल पढ़ने के लिए है."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"इस टिप्पणी को किसी प्राधिकृत उपयोगकर्ता द्वारा पोस्ट किया गया था और इसीलिए यह ईमेल "
-"केवल पढ़ने के लिए है."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(user)s द्वारा %(date)s पर पोस्ट की गयी हैं\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "झंडा"
-
-#: models.py:180
-msgid "date"
-msgstr "तिथि"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "टिप्पणी झंडा"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "टिप्पणी झंडे"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "टिप्पणी पसंद करें"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "क्या इस टिप्पणी को सार्वजनिक बनाएँ ?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "पसंद करें"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "पसंद करने के लिए धन्यवाद"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "हमारी साइट पर चर्चा की गुणवत्ता में सुधार के लिए समय देने के लिए धन्यवाद"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "टिप्पणी निकालें"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "क्या आप इस टिप्पणी को हटाना चाहते हैं ?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "निकालें"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "निकालने के लिये धन्यवाद"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "टिप्पनी को फ्लैग करो"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "क्या आप इस टिप्पणी को फ्लैग करना चाहते हैं ?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "फ्लैग"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "फ्लैग करने के लिए धन्यवाद"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "प्रस्तुत"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "पूर्व दर्शन"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "टिप्पणी के लिये धन्यवाद"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "टिप्पणी के लिये धन्यवाद"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "आपके टिप्पणी का पूर्व दर्शन देखे`"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "कृपया नीचे पाये गये गलतियाँ को ठीक करें"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "नीचे त्रुटियों को ठीक करें"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "टिप्पणी प्रस्तुत करें"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "अथवा बदलें"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/hr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/hr/LC_MESSAGES/django.mo
deleted file mode 100644
index f6f14b3..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/hr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/hr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/hr/LC_MESSAGES/django.po
deleted file mode 100644
index 631839f..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/hr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,310 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ninopoopmap <ninonandroid@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-07-15 16:40+0000\n"
-"Last-Translator: Ninopoopmap <ninonandroid@gmail.com>\n"
-"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/"
-"hr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hr\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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Sadržaj"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadata"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Označi ovaj komentar"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Odobri odabrane komentare"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Ukloni odabrane komentare"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "komentari za %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Najnoviji komentari na %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Ime"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "E-mail adresa"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Komentar"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Pazite na izražavanje! Riječ %s nije dopuštena."
-msgstr[1] "Pazite na izražavanje! Riječi %s nisu dopuštene."
-msgstr[2] "Pazite na izražavanje! Riječi %s nisu dopuštene."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "i"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Ako unesete nešto u ovo polje vaš komentar biti će tretiran kao spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "tip sadržaja"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID objekta"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "korisnik"
-
-#: models.py:55
-msgid "user's name"
-msgstr "korisničko ime"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "e-mail adresa korisnika"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "korisnikov URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "komentar"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "datum/vrijeme unosa"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP adresa"
-
-#: models.py:64
-msgid "is public"
-msgstr "javno dostupno"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Uklonite oznaku da bi komentar nestao sa stranica."
-
-#: models.py:67
-msgid "is removed"
-msgstr "uklonjeno"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Uključite ako je komentar neprikladan. Umjesto komentara biti će prikazana "
-"poruka \"Komentar je uklonjen.\"."
-
-#: models.py:80
-msgid "comments"
-msgstr "komentari"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Ovaj komentar je napisao prijavljeni korisnik te se ime ne može mijenjati.\n"
-"\n"
-"%(text)s"
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Ovaj komentar je napisao prijavljeni korisnik te se email ne može "
-"mijenjati.\n"
-"\n"
-"%(text)s"
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Napisao %(user)s dana %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "oznaka"
-
-#: models.py:180
-msgid "date"
-msgstr "datum"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "oznaka za komentar"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "oznake komentara"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Odobri komentar"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Učini komentar javno dostupnim?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Odobri"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Hvala na odobrenju"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Hvala što ste izdvojili vrijeme da poboljšate kvalitetu rasprava na "
-"stranicama"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Ukloni komentar"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Stvarno ukloni ovaj komentar?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Ukloni"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Hvala na brisanju"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Označi ovaj komentar"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Stvarno označi ovaj komentar?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Oznaka"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Hvala na označavanju"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Unos"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Prikaz"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Hvala što ste komentirali"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Hvala na komentaru"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Prikaz komentara"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Molimo ispravite navedene greške."
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Molimo ispravite navedene greške."
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Objava komentara"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "ili unesite promjene"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/hu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/hu/LC_MESSAGES/django.mo
deleted file mode 100644
index 1df3df7..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/hu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/hu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/hu/LC_MESSAGES/django.po
deleted file mode 100644
index 791e999..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/hu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Máté Őry <orymate@iit.bme.hu>, 2013
-# Szilveszter Farkas <szilveszter.farkas@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/"
-"language/hu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Tartalom"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metaadat"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Kiválasztott hozzászólások megjelölése"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Kiválasztott hozzászólások jóváhagyása"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Kiválasztott hozzászólások törlése"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s hozzászólások"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "%(site_name)s legfrissebb hozzászólásai"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Név"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "E-mail cím"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Hozzászólás"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Vigyázzon a szájára! Az ilyen szó (%s) itt nem megengedett."
-msgstr[1] "Vigyázzon a szájára! Az ilyen szavak (%s) itt nem megengedettek."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "és"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Ha bármit begépel ebbe a mezőbe, akkor azt szemétként fogja kezelni a "
-"rendszer"
-
-#: models.py:23
-msgid "content type"
-msgstr "tartalom típusa"
-
-#: models.py:25
-msgid "object ID"
-msgstr "objektum ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "felhasználó"
-
-#: models.py:55
-msgid "user's name"
-msgstr "felhasználó neve"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "felhasználó e-mail címe"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "felhasználó URL-je"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "megjegyzés"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "dátum/idő beállítva"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP cím"
-
-#: models.py:64
-msgid "is public"
-msgstr "publikus"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Vegye ki a pipát a jelölőnégyzetből, hogy eltűntesse a hozzászólást az "
-"oldalról."
-
-#: models.py:67
-msgid "is removed"
-msgstr "eltávolítva"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Jelöld be a négyzetet, ha a megjegyzés nem megfelelő. Az \"Ezt a megjegyzést "
-"törölték\" üzenet fog megjelenni helyette."
-
-#: models.py:80
-msgid "comments"
-msgstr "hozzászólások"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Ezt a hozzászólást egy hitelesített felhasználó küldte be, ezért a név csak "
-"olvasható."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Ezt a hozzászólást egy hitelesített felhasználó küldte be, ezért az e-mail "
-"csak olvasható."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Beküldte %(user)s ekkor: %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "megjelölés"
-
-#: models.py:180
-msgid "date"
-msgstr "dátum"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "hozzászólás megjelölés"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "hozzászólás megjelölés"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Hozzászólás jóváhagyása"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Biztosan publikálni szeretné ezt a hozzászólást?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Jóváhagyás"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Köszönjük a jóváhagyást"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Köszönjük, hogy időt szánt az oldalunkon zajló beszélgetések minőségének "
-"javítására"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Hozzászólás törlése"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Biztosan törli ezt a hozzászólást?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Törlés"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Köszönjük a törlést"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Hozzászólás megjelölése"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Biztosan megjelöli ezt a hozzászólást?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Megjelölés"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Köszönjük a megjelölést"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Elküldés"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Előnézet"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Köszönjük a hozzászólást"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Köszönjük, hogy hozzászólt"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Hozzászólás előnézetének megtekintése"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Javítsa ki az alábbi hibákat"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Hozzászólás elküldése"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "vagy módosítása"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ia/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/ia/LC_MESSAGES/django.mo
deleted file mode 100644
index 45c00f3..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ia/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ia/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/ia/LC_MESSAGES/django.po
deleted file mode 100644
index e028e56..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ia/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,304 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Martijn Dekker <mcdutchie@hotmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/"
-"language/ia/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ia\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Contento"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadatos"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Marcar le commentos seligite"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Approbar le commentos seligite"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Remover le commentos seligite"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "Commentos de %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Ultime commentos in %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Nomine"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Adresse de e-mail"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Commento"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Le parola %s non es permittite hic."
-msgstr[1] "Le parolas %s non es permittite hic."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "e"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Si tu insere qualcosa in iste campo, tu commento essera tractate como spam."
-
-#: models.py:23
-msgid "content type"
-msgstr "typo de contento"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID del objecto"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "usator"
-
-#: models.py:55
-msgid "user's name"
-msgstr "nomine del usator"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "adresse de e-mail del usator"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL del usator"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "commento"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "data/hora de submission"
-
-#: models.py:63
-msgid "IP address"
-msgstr "adresse IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "es public"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Dismarca iste quadro pro facer le commento effectivemente disparer de iste "
-"sito."
-
-#: models.py:67
-msgid "is removed"
-msgstr "es removite"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Marca iste quadro si le commento es inappropriate. Un message \"iste "
-"commento ha essite removite\" essera monstrate in su loco."
-
-#: models.py:80
-msgid "comments"
-msgstr "commentos"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Iste commento ha essite publicate per un usator authenticate e dunque le "
-"nomine es immodificabile."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Iste commento ha essite publicate per un usator authenticate e dunque le "
-"adresse de e-mail es immodificabile."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Publicate per %(user)s le %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "marca"
-
-#: models.py:180
-msgid "date"
-msgstr "data"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "marcation de commento"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "marcationes de commento"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Approbar un commento"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Es tu secur de voler render iste commento public?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Approbar"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Gratias pro approbar"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Gratias pro prender le tempore pro meliorar le qualitate del discussion in "
-"nostre sito"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Remover un commento"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Es tu secur de voler remover iste commento?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Remover"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Gratias pro remover"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Marcar iste commento"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Es tu secur de voler marcar iste commento?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Marcar"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Gratias pro marcar"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Publicar"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Previsualisar"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Gratias pro commentar"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Gratias pro tu commento"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Previsualisar tu commento"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Per favor corrige le errores sequente"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Publicar tu commento"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "o facer modificationes"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/id/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/id/LC_MESSAGES/django.mo
deleted file mode 100644
index 607147d..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/id/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/id/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/id/LC_MESSAGES/django.po
deleted file mode 100644
index afaa2d5..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/id/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,298 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# rodin <romihardiyanto@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Isi"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadata"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Tandai komentar terpilih"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Setujui komentar terpilih"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Hapus komentar terpilih"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "komentar pada %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Komentar terbaru pada %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Nama"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Alamat email"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Komentar"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Awas! Kata %s tidak diizinkan di sini."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "dan"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Jika Anda mengisi bidang ini, komentar Anda akan dianggap sebagai spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "tipe konten"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID objek"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "pengguna"
-
-#: models.py:55
-msgid "user's name"
-msgstr "nama pengguna"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "alamat email pengguna"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL pengguna"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "komentar"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "tanggal/waktu dikirim"
-
-#: models.py:63
-msgid "IP address"
-msgstr "alamat IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "untuk umum"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Hapus centang pada kotak ini agar komentar tidak ditampilkan pada situs."
-
-#: models.py:67
-msgid "is removed"
-msgstr "telah dihapus"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Centang kotak ini jika komentar tidak pantas. Pesan \"Komentar ini telah "
-"dihapus\" akan ditampilkan sebagai penggantinya."
-
-#: models.py:80
-msgid "comments"
-msgstr "komentar"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Komentar ini dikirim oleh seorang pengguna terautentikasi sehingga nama "
-"pengguna tidak dapat diubah."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Komentar ini dikirim oleh seorang pengguna terautentikasi sehingga alamat "
-"email tidak dapat diubah."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Dikirim oleh %(user)s pada %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "tanda"
-
-#: models.py:180
-msgid "date"
-msgstr "tanggal"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "tanda komentar"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "tanda komentar"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Setujui komentar"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Yakin ingin menampilkan komentar ini untuk umum?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Setujui"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Terima kasih telah menyetujui komentar"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Terima kasih telah membantu meningkatkan kualitas diskusi pada situs kami"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Hapus komentar"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Yakin ingin menghapus komentar ini?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Hapus"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Terima kasih telah menghapus"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Tandai komentar ini"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Yakin ingin menandai komentar ini?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Tandai"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Terima kasih telah menandai"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Kirim"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Pratinjau"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Terima kasih telah meninggalkan komentar"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Terima kasih atas komentar Anda"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Pratinjau komentar Anda"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Mohon perbaiki kesalahan di bawah ini"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Kirim komentar Anda"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "atau lakukan perubahan"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/is/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/is/LC_MESSAGES/django.mo
deleted file mode 100644
index cfe909f..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/is/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/is/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/is/LC_MESSAGES/django.po
deleted file mode 100644
index e146229..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/is/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,303 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Hafsteinn Einarsson <haffi67@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# einherji <kthelgason@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-30 11:54+0000\n"
-"Last-Translator: einherji <kthelgason@gmail.com>\n"
-"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/"
-"language/is/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: is\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Innihald"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Hengigögn"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d umsögn hefur verið merkt"
-msgstr[1] "%d umsagnir hafa verið merktar"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Flagga valdar athugasemdir"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d umsögn hefur verið samþykkt"
-msgstr[1] "%d umsagnir hafa verið samþykktar"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Samþykkja valdar athugasemdir"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d umsögn hefur verið fjarlægð"
-msgstr[1] "%d umsagnir hafa verið fjarlægðar"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Fjarlægja valdar athugasemdir"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s: athugasemdir"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Nýjustu athugasemdir á %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Nafn"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Netfang"
-
-#: forms.py:98
-msgid "URL"
-msgstr "Veffang"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Athugasemd"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Passaðu orðbragðið! Orðið %s er ekki leyft hér."
-msgstr[1] "Passaðu orðbragðið! Orðin %s eru ekki leyfð hér."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "og"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Ef þú skrifar eitthvað hérna verður athugasemdin sjálfkrafa meðhöndluð sem "
-"ruslpóstur"
-
-#: models.py:23
-msgid "content type"
-msgstr "efnistag"
-
-#: models.py:25
-msgid "object ID"
-msgstr "kenni hlutar"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "notandi"
-
-#: models.py:55
-msgid "user's name"
-msgstr "nafn notanda"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "netfang notanda"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "veffang notanda"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "athugasemd"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "innsent dags/tími"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP tala"
-
-#: models.py:64
-msgid "is public"
-msgstr "er öllum sýnilegt"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Taktu hakið úr til að fjarlægja athugasemdina af vefsíðunni."
-
-#: models.py:67
-msgid "is removed"
-msgstr "hefur verið fjarlægt"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Hakaðu við þennan reit ef athugasemdin er óviðeigandi. Skilaboðin „Þessi "
-"athugasemd hefur verið fjarlægð“ birtist í staðinn."
-
-#: models.py:80
-msgid "comments"
-msgstr "athugasemdir"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Athugasemdin var send inn af innskráðum notanda og því er ekki hægt að "
-"breyta nafninu."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Athugasemdin var send inn af innskráðum notanda og því er ekki hægt að "
-"breyta netfanginu."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(user)s sendi inn %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "flagga"
-
-#: models.py:180
-msgid "date"
-msgstr "dagsetning"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "flagg athugasemdar"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "flögg athugasemdar"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Samþykkja athugasemd"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Gera þessa athugasemd sýnilega?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Samþykkja"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Takk fyrir að samþykkja"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "Takk fyrir að gefa þér tíma til að bæta gæði umræðunnar á síðunni."
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Fjarlægja athugasemd"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Eyða þessari athugasemd?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Fjarlægja"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Takk fyrir að fjarlægja"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Flagga athugasemd"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Flagga þesa athugasemd?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Flagg"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Takk fyrir að flagga"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Birta"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Skoða"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Takk fyrir að senda athugasemd"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Takk fyrir athugasemdina"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Skoða athugasemd"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Vinsamlegast lagfærðu villuna fyrir neðan"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Vinsamlegast lagfærðu villurnar fyrir neðan"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Birta athugasemd"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "eða breyta"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/it/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/it/LC_MESSAGES/django.mo
deleted file mode 100644
index e7b9b12..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/it/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/it/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/it/LC_MESSAGES/django.po
deleted file mode 100644
index 08967b0..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/it/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,304 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nicola Larosa <transifex@teknico.net>, 2011,2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-29 20:19+0000\n"
-"Last-Translator: Nicola Larosa <transifex@teknico.net>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Contenuto"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadati"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "È stato marcato %d commento"
-msgstr[1] "Sono stati marcati %d commenti"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Segnala i commenti selezionati"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "È stato approvato %d commento"
-msgstr[1] "Sono stati approvati %d commenti"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Approva i commenti selezionati"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "È stato rimosso %d commento."
-msgstr[1] "Sono stati rimossi %d commenti."
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Elimina i commenti selezionati"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "commenti su %(site_name)s "
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Commenti più recenti su %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Nome"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Indirizzo email"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Commento"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Modera i termini: la parola %s non è ammessa qui."
-msgstr[1] "Modera i termini: le parole %s non sono ammesse qui."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "e"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Se inserisci qualcosa in questo campo, il tuo commento verrà considerato spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "content type"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID dell'oggetto"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "utente"
-
-#: models.py:55
-msgid "user's name"
-msgstr "nome utente"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "indirizzo email utente"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL utente"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "commento"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "data/ora di inserimento"
-
-#: models.py:63
-msgid "IP address"
-msgstr "indirizzo IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "è pubblico"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Deseleziona questa casella per far sparire del tutto il commento dal sito."
-
-#: models.py:67
-msgid "is removed"
-msgstr "è eliminato"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Seleziona la casella se il commento è inappropriato. Verrà sostituito dal "
-"messaggio \"Questo commento è stato rimosso\"."
-
-#: models.py:80
-msgid "comments"
-msgstr "commenti"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Questo commento è stato inserito da un utente autenticato e quindi il nome "
-"non è modificabile."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Questo commento è stato inserito da un utente autenticato e quindi l'email "
-"non è modificabile."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Inserito da %(user)s il %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "Segnala"
-
-#: models.py:180
-msgid "date"
-msgstr "data"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "segnalazione commento"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "segnalazioni commenti"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Approva un commento"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Sicuro di voler pubblicare questo commento?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Approva"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Grazie per aver approvato"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Grazie per aver speso tempo a migliorare la qualità della discussione sul "
-"nostro sito"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Elimina un commento"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Sicuro di voler eliminare questo commento?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Elimina"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Grazie per aver eliminato"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Segnala questo commento"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Sicuro di voler segnalare questo commento?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Segnala"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Grazie per aver segnalato"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Pubblica"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Anteprima"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Grazie per aver commentato"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Grazie per il tuo commento"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Mostra l'anteprima del tuo commento"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Correggi gli errori qui sotto"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Correggi gli errori qui sotto"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Pubblica il tuo commento"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "o fai dei cambiamenti"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ja/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/ja/LC_MESSAGES/django.mo
deleted file mode 100644
index e40592a..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ja/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ja/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/ja/LC_MESSAGES/django.po
deleted file mode 100644
index 6bbd444..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ja/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,297 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Shinya Okano <tokibito@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-30 15:16+0000\n"
-"Last-Translator: Shinya Okano <tokibito@gmail.com>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/"
-"ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "内容"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "メタデータ"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d 個のコメントにフラグを設定しました。"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "選択したコメントにフラグを付ける"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d 個のコメントを承認しました。"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "選択したコメントを承認する"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d 個のコメントを削除しました"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "コメントを削除する"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s のコメント"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "%(site_name)s の最新コメント"
-
-#: forms.py:96
-msgid "Name"
-msgstr "名前"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "メールアドレス"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "コメント"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "言葉使いに気を付けて! %s という言葉は使えません。"
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "と"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "このフィールドに入力するとコメントはスパム扱いされます"
-
-#: models.py:23
-msgid "content type"
-msgstr "コンテンツタイプ"
-
-#: models.py:25
-msgid "object ID"
-msgstr "オブジェクト ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "ユーザー"
-
-#: models.py:55
-msgid "user's name"
-msgstr "名前"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "メールアドレス"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "コメント"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "コメント投稿日時"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP アドレス"
-
-#: models.py:64
-msgid "is public"
-msgstr "は公開中です"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"手っ取り早くコメントをサイトから消すにはここのチェックを外してください。"
-
-#: models.py:67
-msgid "is removed"
-msgstr "は削除されました"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"コメントが不適切な場合はチェックを入れてください。「コメントは削除されまし"
-"た」と表示されるようになります。"
-
-#: models.py:80
-msgid "comments"
-msgstr "コメント"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"このコメントは認証済みユーザーによって投稿されたため、名前は読み取り専用で"
-"す。"
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"このコメントは認証済みユーザーによって投稿されたため、メールアドレスは読み取"
-"り専用です。"
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(user)s が %(date)s に投稿\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "フラグ"
-
-#: models.py:180
-msgid "date"
-msgstr "フラグを付けた日時"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "コメントフラグ"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "コメントフラグ"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "コメントを承認する"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "本当にこのコメントを承認しますか?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "承認"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "ご利用ありがとうございました!"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "当サイトの品質向上にご協力いただきありがとうございました"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "コメントを削除する"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "本当にこのコメントを削除しますか?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "削除"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "ご利用ありがとうございました!"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "このコメントにフラグを付ける"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "本当にこのコメントにフラグを付けますか?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "フラグを付ける"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "ご利用ありがとうございました!"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "投稿"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "プレビュー"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "コメントしてくれてありがとうございました"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "コメントありがとうございました"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "コメントのプレビュー"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "下記のエラーを修正してください。"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "以下のエラー内容を修正してください"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "コメントを投稿"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "さらに編集"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ka/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/ka/LC_MESSAGES/django.mo
deleted file mode 100644
index 0cda4c9..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ka/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ka/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/ka/LC_MESSAGES/django.po
deleted file mode 100644
index cbccf6f..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ka/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,297 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# David Avsajanishvili <avsd05@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/"
-"ka/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ka\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "კონტენტი"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "მეტა-მონაცემები"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "არჩეულ კომენტარებზე დროშის დასმა"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "არჩეული კომენტარების დამტკიცება"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "არჩეული კომენტარების წაშლა"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s-ის კომენტარები"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "ბოლო კომენტარები %(site_name)s-ზე"
-
-#: forms.py:96
-msgid "Name"
-msgstr "სახელი"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "ელ. ფოსტის მისამართი"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "კომენტარი"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "დაიცავით წესრიგი! სიტყვა \"%s\" აქ დაუშვებელია."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "და"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "თუ თვენ შეიყვანთ რამეს ამ ველში, თქვენი კომენტარი სპამად აღიქმება"
-
-#: models.py:23
-msgid "content type"
-msgstr "კონტენტის ტიპი"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ობიექტის ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "მომხმარებელი"
-
-#: models.py:55
-msgid "user's name"
-msgstr "მომხმარებლის სახელი"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "მომხმარებლის ელ. ფოსტა"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "მომხმარებლის URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "კომენტარი"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "გაგზავნის თარიღი და დრო"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP-მისამართი"
-
-#: models.py:64
-msgid "is public"
-msgstr "საყოველთაოა"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "გადანიშნეთ ეს დროშა, რათა კომენტარი რეალურად გაქრეს საიტიდან."
-
-#: models.py:67
-msgid "is removed"
-msgstr "წაშლილია"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"მონიშნეთ ეს დროშა, თუ კომენტარი შეუსაბამოა. მის ნაცვლად გაჩნდება "
-"შეტყობინება: \"კომენტარი წაშლილია\"."
-
-#: models.py:80
-msgid "comments"
-msgstr "კომენტარები"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"ეს კომენტარი გამოგზავნილია აუდენტიფიცირებული მომხმარებლის მიერ, და ამიტომ "
-"სახელის შეცვლა შეუძლებელია."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"ეს კომენტარი გამოგზავნილია აუდენტიფიცირებული მომხმარებლის მიერ, და ამიტომ "
-"ელ. ფოსტის შეცვლა შეუძლებელია."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"გამოგზავნილია %(user)s-ს მიერ, %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "დროშა"
-
-#: models.py:180
-msgid "date"
-msgstr "თარიღი"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "კომენტარის დროშა"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "კომენტარის დროშები"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "კომენტარის დადასტურება"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "ნამდვილად გსურთ ამ კომენტარის გამოქვეყნება?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "დასტური"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "გმადლობთ, კომენტარის დადასტურებისათვის"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"გმადლობთ, რომ დრო დახარჯეთ ჩვენს საიტზე დისკუსიის ხარისხის გასაუმჯობესებლად"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "წავშალოთ კომენტარები"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "ნამდვილად გსურთ ამ კომენტარის წაშლა?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "წაშლა"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "გმადლობთ, წაშლისათვის"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "კომენტარის მარკირება"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "ნამდვილად გსურთ ამ კომენტარის მარკირება?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "დროშა"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "გმადლობთ, მარკირებისათვის"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "გაგზავნა"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "წინასწარი ნახვა"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "გმადლობთ კომენტარისთვის"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "გმადლობთ თქვენი კომენტარისათვის"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "კომენტარის წინასწარი ნახვა"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "გთხოვთ, შეასწოროთ შეცდომა ქვემოთ"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "კომენტარის გაგზავნა"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "ან შეიტანეთ ცვლილებები"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/kk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/kk/LC_MESSAGES/django.mo
deleted file mode 100644
index 624c92c..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/kk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/kk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/kk/LC_MESSAGES/django.po
deleted file mode 100644
index c57165d..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/kk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,296 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# yun_man_ger <germanilyin@gmail.com>, 2011
-# Zhazira <zhazira.mt@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/"
-"kk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kk\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Мазмұн"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Метадата"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Таңдалған коментарийлерді белгілеу"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Таңдалған аңғартпаларды бекіту"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Таңдалған аңғартпаларды өшіру"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s аңғартпалары"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Соңғы %(site_name)s аңғартпалары"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Атау"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Email адрес"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Аңғартпа"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "және"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Егер сіз бұл жолаққа қандай да бір нарсені енгізсеңіз, сіздің коментариіңіз "
-"спам ретінде белгіленеді."
-
-#: models.py:23
-msgid "content type"
-msgstr "мазмұн түрі"
-
-#: models.py:25
-msgid "object ID"
-msgstr "нысан ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "пайдаланушы"
-
-#: models.py:55
-msgid "user's name"
-msgstr "пайдаланушының есімі"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "пайдаланушының email адресі"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "пайдаланушының URLі"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "аңғартпа"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "жіберілген күні/уықыты"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP адрес"
-
-#: models.py:64
-msgid "is public"
-msgstr "ашық"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Анғартпаның сайттан жоғалуы үшін құсбелгіні алып тастаңыз."
-
-#: models.py:67
-msgid "is removed"
-msgstr "өшірілген"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Анғартпа дұрыс болмаса құсбелгігі қойыңыз. Орнына \"Бұл анғартпа өшірілді\" "
-"деген хабар көрінеді."
-
-#: models.py:80
-msgid "comments"
-msgstr "анғартпалар"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr "Бұл аңғартпа пайдаланушы орналастырған үшін аты өзгертілмейді."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr "Бұл аңғартпа пайдаланушы орналастырған үшін email өзгертілмейді."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(user)s %(date)s орналастырды\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "жалауша"
-
-#: models.py:180
-msgid "date"
-msgstr "мерзім"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "Аңғартпа жалаушасы"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "Аңғартпа жалаушалары"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Аңғартпаны мақұлда"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Бұл аңғартпаны ашық қылуға сенімдісіз бе?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Мақұлдау"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Мақұлдау үшін рахмет"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "Торпабымыздағы"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Аңғартпаны өшір"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Аңғартпаны өшіруге сенімдісіз бе?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Өшір"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Өшіргеніңіз үшін рахмет"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Бұл аңғартпаға жалауша қой"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Бұл аңғартпаға жалауша қоюға сенімдісіз бе?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Жалауша"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Жалауша қойғаныңыз үшін рахмет"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Орналастыру"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Алдын ала қарап алу"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Аңғартпаңыз үшін рахмет"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Аңғартпаңыз үшін рахмет"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Аңғартпаны алдын ала қарап алу"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr ""
-"one: Төмендегі қатені түзеңіз\n"
-"other: Төмендегі қателерді түзеңіз"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Аңғартпаңызды орналастырыңыз"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "немесе өзгертіңіз"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/km/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/km/LC_MESSAGES/django.mo
deleted file mode 100644
index fbcb447..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/km/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/km/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/km/LC_MESSAGES/django.po
deleted file mode 100644
index e2931ef..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/km/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,291 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Khmer (http://www.transifex.com/projects/p/django/language/"
-"km/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: km\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "អត្ថបទ"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr ""
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr ""
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr ""
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr ""
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr ""
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr ""
-
-#: forms.py:96
-msgid "Name"
-msgstr "ឈ្មោះ"
-
-#: forms.py:97
-msgid "Email address"
-msgstr ""
-
-#: forms.py:98
-msgid "URL"
-msgstr "អាស័យដ្ឋានគេហទំព័រ(URL)"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "ផ្សេងៗ"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "និង"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-
-#: models.py:23
-msgid "content type"
-msgstr "ប្រភេទអត្ថន័យ"
-
-#: models.py:25
-msgid "object ID"
-msgstr "លេខ​សំគាល់​កម្មវិធី"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "សមាជិក"
-
-#: models.py:55
-msgid "user's name"
-msgstr ""
-
-#: models.py:56
-msgid "user's email address"
-msgstr ""
-
-#: models.py:57
-msgid "user's URL"
-msgstr ""
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "មតិ​យោបល់"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "កាល​បរិច្ឆេទនៃ​ការ​សរសេរ​​"
-
-#: models.py:63
-msgid "IP address"
-msgstr "លេខ IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "ផ្សព្វផ្សាយ​ជាសធារណៈ"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-
-#: models.py:67
-msgid "is removed"
-msgstr "ត្រូវ​បាន​លប់​ចេញ"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"សូម​ចុច​ជ្រើសរើស​យក​ប្រអប់​នេះ​ ប្រសិន​បើ​មតិ​យោបល់​មិនសមរម្យ។ ឃ្លា \" មតិ​យោបល់​នេះ​ត្រូវបាន​គេលប់​\" នឹងត្រូវ​"
-"បង្ហាញ​ជំនួស​វិញ។"
-
-#: models.py:80
-msgid "comments"
-msgstr "មតិ​យោបល់"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"សរសេរ​ដោយ %(user)s នៅថ្ងៃ​ %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr ""
-
-#: models.py:180
-msgid "date"
-msgstr "​កាលបរិច្ឆេទ"
-
-#: models.py:190
-msgid "comment flag"
-msgstr ""
-
-#: models.py:191
-msgid "comment flags"
-msgstr ""
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr ""
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr ""
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr ""
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr ""
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr ""
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr ""
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr ""
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr ""
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr ""
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr ""
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr ""
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr ""
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr ""
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr ""
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr ""
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr ""
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/kn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/kn/LC_MESSAGES/django.mo
deleted file mode 100644
index 409ce42..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/kn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/kn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/kn/LC_MESSAGES/django.po
deleted file mode 100644
index 61b831d..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/kn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,292 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# karthikbgl <karthikbgl@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/"
-"kn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kn\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "ವಿಷಯ"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr ""
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr ""
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr ""
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr ""
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr ""
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr ""
-
-#: forms.py:96
-msgid "Name"
-msgstr "ಹೆಸರು"
-
-#: forms.py:97
-msgid "Email address"
-msgstr ""
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "ಅಭಿಪ್ರಾಯ"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "ಮತ್ತು"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-
-#: models.py:23
-msgid "content type"
-msgstr "ಒಳವಿಷಯದ ಬಗೆ"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ವಸ್ತುವಿನ ಐಡಿ"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "ಬಳಕೆದಾರ"
-
-#: models.py:55
-msgid "user's name"
-msgstr "ಬಳಕೆದಾರನ ಹೆಸರು"
-
-#: models.py:56
-msgid "user's email address"
-msgstr ""
-
-#: models.py:57
-msgid "user's URL"
-msgstr ""
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "ಟಿಪ್ಪಣಿ"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "ಸಲ್ಲಿಸಿದ ದಿನಾಂಕ/ಸಮಯ"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP ವಿಳಾಸ"
-
-#: models.py:64
-msgid "is public"
-msgstr "ಸಾರ್ವಜನಿಕವಾಗಿದೆ"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-
-#: models.py:67
-msgid "is removed"
-msgstr "ತೆಗೆದು ಹಾಕಲಾಗಿದೆ"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"ಟಿಪ್ಪಣಿ ಅನುಚಿತವಾಗಿ ಇದ್ದಲ್ಲಿ ಈ ಚೌಕದಲ್ಲಿ ಗುರುತು ಮಾಡಿ. ಅದರ ಬದಲಾಗಿ \"ಈ ಟಿಪ್ಪಣಿ "
-"ತೆಗೆದುಹಾಕಲಾಗಿದೆ\" ಎಂಬ ಸಂದೇಶವನ್ನು ತೋರಿಸಲಾಗುವುದು."
-
-#: models.py:80
-msgid "comments"
-msgstr "ಟಿಪ್ಪಣಿಗಳು"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"ಸಲ್ಲಿಸಿದವರು %(user)s ರವರು %(date)s\n"
-"\n"
-" ದಿನ/ಸಮಯಕ್ಕೆ %(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s ಸಲ್ಲಿಸಿದ್ದು"
-
-#: models.py:179
-msgid "flag"
-msgstr ""
-
-#: models.py:180
-msgid "date"
-msgstr "ದಿನಾಂಕ"
-
-#: models.py:190
-msgid "comment flag"
-msgstr ""
-
-#: models.py:191
-msgid "comment flags"
-msgstr ""
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "ಅಭಿಪ್ರಾಯ ಒಪ್ಪಿಗೆ"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr ""
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "ಒಪ್ಪಿಗೆ"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr ""
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr ""
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr ""
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr ""
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr ""
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr ""
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr ""
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr ""
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr ""
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr ""
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr ""
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr ""
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr ""
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ko/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/ko/LC_MESSAGES/django.mo
deleted file mode 100644
index 829e6be..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ko/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ko/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/ko/LC_MESSAGES/django.po
deleted file mode 100644
index 64ba67e..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ko/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,291 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/"
-"ko/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ko\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "내용"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "메타데이터"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "선택된 코멘트에 플래그 달기"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "선택된 코멘트 승인하기"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "선택된 코멘트 삭제"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s 의 코멘트"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "%(site_name)s 의 사용자 비밀번호가 초기화 되었습니다."
-
-#: forms.py:96
-msgid "Name"
-msgstr "이름"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "이메일 주소"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "코멘트:"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "비속어/욕설입니다. %s (은)는 사용하실 수 없습니다."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "또한"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "이 필드에 무엇이라도 입력하면 코멘트는 스팸으로 처리될 것입니다."
-
-#: models.py:23
-msgid "content type"
-msgstr "콘텐츠 타입"
-
-#: models.py:25
-msgid "object ID"
-msgstr "오브젝트 ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "사용자"
-
-#: models.py:55
-msgid "user's name"
-msgstr "사용자명"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "사용자 이메일 주소"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "사용자 URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "코멘트"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "날짜/시간 확인"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP 주소"
-
-#: models.py:64
-msgid "is public"
-msgstr "공개합니다."
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "이 사이트에서 코멘트가 나타나지 않게 하려면 체크 해제하세요."
-
-#: models.py:67
-msgid "is removed"
-msgstr "삭제합니다."
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"코멘트가 부적절한 경우 체크하세요. \"코멘트가 삭제되었습니다.\" 메시지가 표시"
-"됩니다."
-
-#: models.py:80
-msgid "comments"
-msgstr "코멘트(들)"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr "이 코멘트는 등록된 사용자가 작성하였으므로 읽기 전용입니다."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr "이 코멘트는 등록된 사용자가 작성하였으므로 읽기 전용입니다."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(user)s (이)가 %(date)s 등록\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "플래그"
-
-#: models.py:180
-msgid "date"
-msgstr "날짜"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "코멘트 플래그"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "코멘트 플래그"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "코멘트 승인"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "정말로 이 코멘트를 공개하시겠습니까?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "승인"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "승인해주셔서 고맙습니다."
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "우리 사이트의 토론에 기여해주셔서 감사합니다."
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "코멘트 삭제"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "정말로 이 코멘트를 삭제하시겠습니까?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "삭제하기"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "삭제해주셔서 고맙습니다."
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "코멘트에 플래그 달기"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "정말로 플래그를 다시겠습니까?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "플래그를 답니다."
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "플래그를 달아주셔서 고맙습니다."
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "작성하기"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "미리보기"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "코멘트 작성 완료"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "코멘트를 달아주셔서 고맙습니다."
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "코멘트 미리보기"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "아래의 오류를 수정해 주세요."
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "코멘트 작성하기"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "또는 변경하기"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/lb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/lb/LC_MESSAGES/django.mo
deleted file mode 100644
index b6868eb..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/lb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/lb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/lb/LC_MESSAGES/django.po
deleted file mode 100644
index bb6a398..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/lb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,287 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/django/"
-"language/lb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr ""
-
-#: admin.py:28
-msgid "Metadata"
-msgstr ""
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr ""
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr ""
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr ""
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr ""
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr ""
-
-#: forms.py:96
-msgid "Name"
-msgstr ""
-
-#: forms.py:97
-msgid "Email address"
-msgstr ""
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr ""
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr ""
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-
-#: models.py:23
-msgid "content type"
-msgstr ""
-
-#: models.py:25
-msgid "object ID"
-msgstr ""
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr ""
-
-#: models.py:55
-msgid "user's name"
-msgstr ""
-
-#: models.py:56
-msgid "user's email address"
-msgstr ""
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr ""
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr ""
-
-#: models.py:63
-msgid "IP address"
-msgstr ""
-
-#: models.py:64
-msgid "is public"
-msgstr ""
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-
-#: models.py:67
-msgid "is removed"
-msgstr ""
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-
-#: models.py:80
-msgid "comments"
-msgstr ""
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-
-#: models.py:179
-msgid "flag"
-msgstr ""
-
-#: models.py:180
-msgid "date"
-msgstr ""
-
-#: models.py:190
-msgid "comment flag"
-msgstr ""
-
-#: models.py:191
-msgid "comment flags"
-msgstr ""
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr ""
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr ""
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr ""
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr ""
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr ""
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr ""
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr ""
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr ""
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr ""
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr ""
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr ""
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr ""
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr ""
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr ""
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr ""
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr ""
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/lt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/lt/LC_MESSAGES/django.mo
deleted file mode 100644
index c66013b..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/lt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/lt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/lt/LC_MESSAGES/django.po
deleted file mode 100644
index 39adf33..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/lt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# lauris <lauris@runbox.com>, 2011
-# Simonas Kazlauskas <simonas@kazlauskas.me>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-08-06 12:32+0000\n"
-"Last-Translator: Simonas Kazlauskas <simonas@kazlauskas.me>\n"
-"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/"
-"language/lt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lt\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
-"%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Turinys"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Meta-duomenys"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "Sėkmingai pažymėtas %d komentaras"
-msgstr[1] "Sėkmingai pažymėti %d komentarai"
-msgstr[2] "Sėkmingai pažymėti %d komentarų"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Žymėti pasirinktus komentarus"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "Sėkmingai patvirtintas %d komentaras"
-msgstr[1] "Sėkmingai patvirtinti %d komentarai"
-msgstr[2] "Sėkmingai patvirtinti %d komentarų"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Patvirtinti pasirinktus komentarus"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "Sėkmingai pašalintas %d komentaras"
-msgstr[1] "Sėkmingai pašalinti %d komentarai"
-msgstr[2] "Sėkmingai pašalinti %d komentarų"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Pašalinti pasirinktus įrašus"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s komentarai"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Paskutiniai %(site_name)s komentarai"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Vardas"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "El. pašto adresas"
-
-#: forms.py:98
-msgid "URL"
-msgstr "Nuoroda"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Komentaras"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Žiūrėk ką kalbi! Žodis %s yra čia uždraustas."
-msgstr[1] "Žiūrėk ką kalbi! Žodžiai %s yra čia uždrausti."
-msgstr[2] "Žiūrėk ką kalbi! Žodžiai %s yra čia uždrausti."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "ir"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Jei ką nors įrašysite į šį laukelį, jūsų komentaras bus laikomas brukalu"
-
-#: models.py:23
-msgid "content type"
-msgstr "turinio tipas"
-
-#: models.py:25
-msgid "object ID"
-msgstr "objekto ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "vartotojas"
-
-#: models.py:55
-msgid "user's name"
-msgstr "vartotojo vardas"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "vartotojo el. pašto adresas"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "vartotojo nuoroda"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "komentaras"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "įvesta data/laikas"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP adresas"
-
-#: models.py:64
-msgid "is public"
-msgstr "viešas"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Nuimkite šį žymejimą, kad komentaras būtų panaikintas."
-
-#: models.py:67
-msgid "is removed"
-msgstr "pašalintas"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Pažymėkite šį laukelį, jei komentaras netinkamas. \"Šis komentaras ištrintas"
-"\" bus rodoma."
-
-#: models.py:80
-msgid "comments"
-msgstr "komentarai"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Šis komentaras buvo paskelbtas neprisijungusio vartotojo, todel vardas yra "
-"neredaguojamas."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Šis komentaras buvo paskelbtas neprisijungusio vartotojo, todel el. pašto "
-"adresas yra neredaguojamas."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Paskelbta %(user)s, %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "žymė"
-
-#: models.py:180
-msgid "date"
-msgstr "Data"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "Komentaro žymė"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "Komentaro žymės"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Patvirtinti komentarą"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Tikrai publikuoti šį komentarą?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Patvirtinti"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Ačiū už patvirtinimą"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "Ačiū, kad radote laiko pagerinti diskusijų kokybę mūsų svetainėje"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Pašalinti komentarą"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Tikrai ištrinti šį komentarą?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Pašalinti"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Ačiū už pašalinimą"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Pažymėti šį komentarą"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Tikrai žymėti šį komentarą?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Žymė"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Ačiū už žymėjimą"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Siųsti"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Peržiūra"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Ačiū už komentarą"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Ačiū už jūsų komentarą"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Peržiūrėti savo komentarą"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Prašau ištaisyti žemiau esančias klaidas"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Ištaisykite žemiau esančias klaidas"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Publikuoti komentarą"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "arba keisti"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/lv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/lv/LC_MESSAGES/django.mo
deleted file mode 100644
index 6ee779d..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/lv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/lv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/lv/LC_MESSAGES/django.po
deleted file mode 100644
index ac1b0bd..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/lv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,305 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/"
-"lv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lv\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Saturs"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadati"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Atzīmēt izvēlētos komentārus"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Apstiprināt izvēlētos komentārus"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Dzēst izvēlētos komentārus"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s komentāri"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Pēdējie komentāri lapā %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Vārds"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "E-pasta adrese"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Komentārs"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Lūdzam ievērot pieklājību! Vārds %s šeit nav atļauts."
-msgstr[1] "Lūdzam ievērot pieklājību! Vārdi %s šeit nav atļauti."
-msgstr[2] "Lūdzam ievērot pieklājību! Vārdi %s šeit nav atļauti."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "un"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Ja aizpildīsiet šo lauku, tad komentārs tiks uzskatīts par spamu"
-
-#: models.py:23
-msgid "content type"
-msgstr "satura tips"
-
-#: models.py:25
-msgid "object ID"
-msgstr "objekta ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "lietotājs"
-
-#: models.py:55
-msgid "user's name"
-msgstr "lietotāja vārds"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "lietotāja e-pasta adrese"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "lietotāja URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "komentārs"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "nosūtīšanas datums/laiks"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP adrese"
-
-#: models.py:64
-msgid "is public"
-msgstr "publisks"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Noņemiet ķeksi, lai komentārs neparādītos lapā."
-
-#: models.py:67
-msgid "is removed"
-msgstr "dzēsts"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Atķeksējiet, ja komentārs ir neatbilstošs (nepieklājīgs). Tā vietā tiks "
-"rādīts paziņojums \"Šis komentārs ir izdzēsts\"."
-
-#: models.py:80
-msgid "comments"
-msgstr "komentāri"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Šo komentāru rakstīja autentificēts lietotājs, tāpēc vārds ir tikai "
-"lasīšanas režīmā."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Šo komentāru rakstīja autentificēts lietotājs, tāpēc e-pasts ir tikai "
-"lasīšanas režīmā."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Pievienojis %(user)s, %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "atzīmēt"
-
-#: models.py:180
-msgid "date"
-msgstr "datums"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "komentāra atzīmējums"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "komentāra atzīmējumi"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Apstiprināt komentāru"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Patiešām padarīt šo komentāru publisku?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Apstiprināt"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Paldies par apstiprināšanu"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Paldies par laika veltīšanu mūsu lapas diskusiju kvalitātes uzlabošanai"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Dzēst komentāru"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Patiešām dzēst šo komentāru?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Dzēst"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Paldies par dzēšanu"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Atzīmēt šo komentāru"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Patiešām atzīmēt šo komentāru?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Atzīmējums"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Paldies par komentāra atzīmēšanu"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Iesūtīt"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Priekšskats"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Paldies par komentēšanu"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Paldies par Jūsu komentāru"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Pirmsskatīt komentāru"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Lūdzu, izlabojiet kļūdu zemāk."
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Iesūtīt komentāru"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "vai veikt izmaiņas"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/mk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/mk/LC_MESSAGES/django.mo
deleted file mode 100644
index c2fc43b..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/mk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/mk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/mk/LC_MESSAGES/django.po
deleted file mode 100644
index 351d90f..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/mk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,304 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# vvangelovski <vvangelovski@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-07-26 11:37+0000\n"
-"Last-Translator: vvangelovski <vvangelovski@gmail.com>\n"
-"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/"
-"language/mk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mk\n"
-"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Содржина"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Метаподатоци"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d коментар беше успешно обележан"
-msgstr[1] "%d коментари беа успешно обележани"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Обележи го одбраните коментари"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d коментар беше успешно одобрен"
-msgstr[1] "%d коментари беа успешно одобрени"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Одобри ги одбраните коментари"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d коментар беше успешно отстранет"
-msgstr[1] "%d коментари беа успешно отстранети"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Отстрани ги избраните коментари"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "коментари за %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Последни коментари за %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Име"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Е-пошта"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Коментар"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Внимавајте на јазикот. Тука не е дозволен зборот %s."
-msgstr[1] "Внимавајте на јазикот. Тука не се дозволени зборовите %s."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "и"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Ако внесете нешто во ова поле вашиот коментар ќе биде означен како спам"
-
-#: models.py:23
-msgid "content type"
-msgstr "тип на содржина"
-
-#: models.py:25
-msgid "object ID"
-msgstr "object ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "корисник"
-
-#: models.py:55
-msgid "user's name"
-msgstr "името на корисникот"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "е-пошта на корисникот"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "веб страна на корсникот"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "коментар"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "датум/време пријавен"
-
-#: models.py:63
-msgid "IP address"
-msgstr "ИП адреса"
-
-#: models.py:64
-msgid "is public"
-msgstr "е јавен"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Одштиклирајте го ова за да направите коментаров да исчезне од овој сајт."
-
-#: models.py:67
-msgid "is removed"
-msgstr "е отстранет"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Штиклирајте го ова поле ако коментарот не е пригоден. Наместо него пораката "
-"„Овој коментар беше отстранет“ ќе биде прикажана."
-
-#: models.py:80
-msgid "comments"
-msgstr "коментари"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Овој коментар бил пратен од автентициран корисник и затоа името е заштитено "
-"од промена."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Овој коментар бил пратен од автентициран корисник и затоа е-пошта е "
-"заштитена од промена."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Напишан од %(user)s на %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "обележи"
-
-#: models.py:180
-msgid "date"
-msgstr "датум"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "обележје за коментар"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "обележја за коментари"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Одобри коментар"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Навистина ли сакате овој коментар да биде објавен?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Одобри"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Ви благодариме што одобривте"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Ви благодариме што допринесовте да се подобри квалитетот на дискусиите на "
-"нашиот сајт"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Избриши коментар"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Навистина ли сакате да го отстраните овој коментар?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Отстрани"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Ви благодариме што отстранивте"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Обележи го овој коментар"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Навистина ли сакате да го обележите овој коментар?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Обележи"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Ви благодариме што обележавте"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Објави"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Преглед"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Ви благодариме за коментарот"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Ви благодариме за коментарот"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Прегледајте го вашиот коментар"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Ве молам поправете ја грешката подолу"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Ве молам поправете ги грешките подолу"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Објавете го вашиот коментар"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "или направете измени"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ml/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/ml/LC_MESSAGES/django.mo
deleted file mode 100644
index 3c507b4..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ml/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ml/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/ml/LC_MESSAGES/django.po
deleted file mode 100644
index 584d382..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ml/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,298 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Rajeesh Nair <rajeeshrnair@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/"
-"language/ml/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ml\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "ഉള്ളടക്കം"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "മെറ്റാ-ഡാറ്റ"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "തെരഞ്ഞെടുത്ത അഭിപ്രായങ്ങള്‍ അടയാളപ്പെടുത്തുക"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "തെരഞ്ഞെടുത്ത അഭിപ്രായങ്ങള്‍ അംഗീകരിക്കുക"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "തെരഞ്ഞെടുത്ത അഭിപ്രായങ്ങള്‍ നീക്കം ചെയ്യുക"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s അഭിപ്രായങ്ങള്‍"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "%(site_name)s ലെ ഏറ്റവും പുതിയ അഭിപ്രായങ്ങള്‍"
-
-#: forms.py:96
-msgid "Name"
-msgstr "പേര്"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "ഇ-മെയില്‍ വിലാസം"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL(വെബ്-വിലാസം)"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "അഭിപ്രായം"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "ശ്ശ്ശ്! %s എന്ന വാക്ക് ഇവിടെ അനുവദനീയമല്ല."
-msgstr[1] "ശ്ശ്ശ്! %s എന്നീ വാക്കുകള്‍ ഇവിടെ അനുവദനീയമല്ല."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "ഉം"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "ഈ കള്ളിയില്‍ എന്തെങ്കിലും രേഖപ്പെടുത്തിയാല്‍ നിങ്ങളുടെ അഭിപ്രായം സ്പാം ആയി കണക്കാക്കും"
-
-#: models.py:23
-msgid "content type"
-msgstr "ഏതു തരം ഉള്ളടക്കം"
-
-#: models.py:25
-msgid "object ID"
-msgstr "വസ്തുവിന്റെ ID (തിരിച്ചറിയല്‍ സംഖ്യ)"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "യൂസര്‍ (ഉപയോക്താവ്)"
-
-#: models.py:55
-msgid "user's name"
-msgstr "യൂസറുടെ പേര്"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "യൂസറുടെ ഇ-മെയില്‍ വിലാസം"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "യൂസറുടെ URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "അഭിപ്രായം"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "സമര്‍പ്പിച്ച തീയതി/സമയം"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP വിലാസം"
-
-#: models.py:64
-msgid "is public"
-msgstr "പരസ്യമാണ്"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "അഭിപ്രായം സൈറ്റില്‍ നിന്നും ഫലപ്രദമായി നീക്കം ചെയ്യാന്‍ ഈ ബോക്സിലെ ടിക് ഒഴിവാക്കുക."
-
-#: models.py:67
-msgid "is removed"
-msgstr "നീക്കം ചെയ്തു."
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"അഭിപ്രായം അനുചിതമെങ്കില്‍ ഈ ബോക്സ് ടിക് ചെയ്യുക. \"ഈ അഭിപ്രായം നീക്കം ചെയ്തു \" എന്ന സന്ദേശം "
-"ആയിരിക്കും പകരം കാണുക."
-
-#: models.py:80
-msgid "comments"
-msgstr "അഭിപ്രായങ്ങള്‍"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr "ഈ അഭിപ്രായം ഒരു അംഗീകൃത യൂസര്‍ രേഖപ്പെടുത്തിയതാണ്. അതിനാല്‍ പേര് വായിക്കാന്‍ മാത്രം."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"ഈ അഭിപ്രായം ഒരു അംഗീകൃത യൂസര്‍ രേഖപ്പെടുത്തിയതാണ്. അതിനാല്‍ ഇ-മെയില്‍ വിലാസം വായിക്കാന്‍ "
-"മാത്രം."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(date)sന് %(user)s രേഖപ്പെടുത്തിയത്:\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "അടയാളം"
-
-#: models.py:180
-msgid "date"
-msgstr "തീയതി"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "അഭിപ്രായ അടയാളം"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "അഭിപ്രായ അടയാളങ്ങള്‍"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "അഭിപ്രായം അംഗീകരിക്കൂ"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "ശരിക്കും ഈ അഭിപ്രായം പരസ്യമാക്കണോ?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "അംഗീകരിക്കൂ"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "അംഗീകരിച്ചതിനു നന്ദി"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "നമ്മുടെ സൈറ്റിലെ ചര്‍ച്ചകളുടെ നിലവാരം ഉയര്‍ത്താന്‍ സമയം ചെലവഴിച്ചതിനു നന്ദി."
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "അഭിപ്രായം നീക്കം ചെയ്യൂ"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "ശരിക്കും ഈ അഭിപ്രായം നീക്കം ചെയ്യണോ?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "നീക്കം ചെയ്യുക"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "നീക്കം ചെയ്തതിനു നന്ദി"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "ഈ അഭിപ്രായം അടയാളപ്പെടുത്തൂ"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "ഈ അഭിപ്രായം ശരിക്കും അടയാളപ്പെടുത്തണോ?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "അടയാളം"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "അടയാളപ്പെടുത്തിയതിനു നന്ദി"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "രേഖപ്പെടുത്തൂ"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "അവലോകനം"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "അഭിപ്രായം രേഖപ്പെടുത്തിയതിനു നന്ദി"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "അഭിപ്രായത്തിനു നന്ദി"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "അഭിപ്രായം അവലോകനം ചെയ്യുക"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "ദയവായി താഴെ പറയുന്ന തെറ്റുകള്‍ തിരുത്തുക"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "അഭിപ്രായം രേഖപ്പെടുത്തുക"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "അല്ലെങ്കില്‍ മാറ്റം വരുത്തുക."
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/mn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/mn/LC_MESSAGES/django.mo
deleted file mode 100644
index 1cc7399..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/mn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/mn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/mn/LC_MESSAGES/django.po
deleted file mode 100644
index bee6c22..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/mn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# ankhaa1002 <ankhaa1002@gmail.com>, 2013
-# bayarkhuu <brka_8@yahoo.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-09-30 09:43+0000\n"
-"Last-Translator: ankhaa1002 <ankhaa1002@gmail.com>\n"
-"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/"
-"language/mn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Агуулга"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Мета өгөгдөл"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d сэтгэгдэл амжилттай тэмдэглэгдлээ"
-msgstr[1] "%d сэтгэгдэл амжилттай тэмдэглэгдлээ"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Сонгосон сэтгэгдэлүүдийг тэмдэглэ"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d сэтгэгдэл амжилттай зөвшөөрөгдлөө"
-msgstr[1] "%d сэтгэгдэл амжилттай зөвшөөрөгдлөө"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Сонгосон сэтгэгдэлүүдийг зөвшөөрөх"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d сэтгэгдэл амжилттай устгагдлаа"
-msgstr[1] "%d сэтгэгдэл амжилттай устгагдлаа"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Сонгосон сэтгэгдэлүүдийг утсгах"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s сэтгэгдэлүүд"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr " %(site_name)s сүүлийн сэтгэгдэлүүд"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Нэр"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Цахим шуудангийн хаяг"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Сэтгэгдэл"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Соёлтой байна уу! %s гэсэн үг оруулах хориотой."
-msgstr[1] "Соёлтой байна уу! %s гэсэн үгүүд оруулах хориотой."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "ба"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Та энэ хэсэгт ямар нэг зүйл оруулбал таний сэтгэгдэлийг спам гэж үзэх болно."
-
-#: models.py:23
-msgid "content type"
-msgstr "агуулгын төрөл"
-
-#: models.py:25
-msgid "object ID"
-msgstr "объектийн ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "хэрэглэгч "
-
-#: models.py:55
-msgid "user's name"
-msgstr "хэрэглэгчийн нэр"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "хэрэглэгчийн цахим шуудангийн хаяг"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "хэрэглэгчийн URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "сэтгэгдэл"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "оруулсан огноо/цаг"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP хаяг"
-
-#: models.py:64
-msgid "is public"
-msgstr "нийтийн"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Сайтаас санал сэтгэгдлийг байнга устгахын тулд энэ хайрцагны өмнөх чагтыг "
-"авна уу."
-
-#: models.py:67
-msgid "is removed"
-msgstr "устлаа"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Ирсэн санал сэтгэгдэл зүй зохисгүй бол энэ хайрцгийг чагтла. Ингэснээр "
-"тухайн санал сэтгэгдлийн оронд \"Энэ санал сэтгэгдлийг устгалаа\" гэсэн "
-"бичиг гарч ирнэ."
-
-#: models.py:80
-msgid "comments"
-msgstr "сэтгэгдэлүүд"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Энэ санал сэтгэгдлийг баталгаажсан хэрэглэгч оруулсан учир зөвхөн нэрийг нь "
-"харж болно."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Энэ санал сэтгэгдлийг баталгаажсан хэрэглэгч оруулсан учир зөвхөн цахим "
-"шууданг нь харж болно."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(date)s-д %(user)s дараах санал сэтгэгдлийг үлдээжээ\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "тэмдэг"
-
-#: models.py:180
-msgid "date"
-msgstr "огноо"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "Тайлбарын тэмдэг"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "тайлбарын тэмдэгүүд"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Сэтгэгдэл зөвшөөрөх"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Үнэхээр энэ сэтгэгдэлийн нийтийн болгох гэж байна у?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Зөвшөөрөх"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Зөвшөөрсөнд баяраллаа"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Манай сайтанд цаг гаргаж хэлэлцүүлэгийг сонирхолтой болгосонд баяраллаа."
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Үнэхээр энэ сэтгэдэлийг"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Үнхээр энэ сэтгэдэлийг устгах уу?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Устгах"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Устгасанд баяраллаа"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Энэ сэтгэгдэлийг тэмлэглэ"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Үнэхээр энэ сэтгэдэлийг тэмдэглэх үү?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Тэмдэг"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Тэмдэглсэнд баяраллаа"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Бичлэг"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Урьдчилан харах"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Сэтгэгдэл үлдээсэнд баяраллаа"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Сэтгэгдэл үлдээсэн таньд баяраллаа"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Өөрийн сэтгэгдэлээ урьдчилан харах"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Доорх алдаануудыг засна у"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Доорх алдаануудыг засна уу"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Сэтгэгдэл оруулах"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "эсвэл засвар хийх"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/my/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/my/LC_MESSAGES/django.mo
deleted file mode 100644
index 7d05c9d..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/my/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/my/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/my/LC_MESSAGES/django.po
deleted file mode 100644
index e94d675..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/my/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,284 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Yhal Htet Aung <jumoun@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Burmese (http://www.transifex.com/projects/p/django/language/"
-"my/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: my\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr ""
-
-#: admin.py:28
-msgid "Metadata"
-msgstr ""
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr ""
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr ""
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr ""
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr ""
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr ""
-
-#: forms.py:96
-msgid "Name"
-msgstr "နာမည်"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "အီးမေးလ်လိပ်စာ"
-
-#: forms.py:98
-msgid "URL"
-msgstr "ယူအာအယ်"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "မှတ်ချက်"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "နှင့်"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-
-#: models.py:23
-msgid "content type"
-msgstr "အကြောင်းအရာအမျိုးအစား"
-
-#: models.py:25
-msgid "object ID"
-msgstr ""
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr ""
-
-#: models.py:55
-msgid "user's name"
-msgstr ""
-
-#: models.py:56
-msgid "user's email address"
-msgstr ""
-
-#: models.py:57
-msgid "user's URL"
-msgstr ""
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr ""
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr ""
-
-#: models.py:63
-msgid "IP address"
-msgstr "အိုင်ပီလိပ်စာ"
-
-#: models.py:64
-msgid "is public"
-msgstr ""
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-
-#: models.py:67
-msgid "is removed"
-msgstr ""
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-
-#: models.py:80
-msgid "comments"
-msgstr ""
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-
-#: models.py:179
-msgid "flag"
-msgstr "အလံ"
-
-#: models.py:180
-msgid "date"
-msgstr "ရက်စွဲ"
-
-#: models.py:190
-msgid "comment flag"
-msgstr ""
-
-#: models.py:191
-msgid "comment flags"
-msgstr ""
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr ""
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr ""
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr ""
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr ""
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr ""
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr ""
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "ဖယ်ရှား"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr ""
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr ""
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr ""
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "အလံ"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr ""
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr ""
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr ""
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr ""
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr ""
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/nb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/nb/LC_MESSAGES/django.mo
deleted file mode 100644
index 90b0073..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/nb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/nb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/nb/LC_MESSAGES/django.po
deleted file mode 100644
index caafd49..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/nb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,305 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jonklo <jonklo@gmail.com>, 2012
-# Sigurd Gartmann <sigurdga-transifex@sigurdga.no>, 2012
-# injectedreality <transifex@ireality.no>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-07-18 21:03+0000\n"
-"Last-Translator: injectedreality <transifex@ireality.no>\n"
-"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/"
-"language/nb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Innhold"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadata"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d kommentar ble flagget"
-msgstr[1] "%d kommentarer ble flagget"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Flagg valgte kommentarer"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d kommentar ble godkjent"
-msgstr[1] "%d kommentarer ble godkjent"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Tillat valgte kommentarer"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d kommentar ble fjernet"
-msgstr[1] "%d kommentarer ble fjernet"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Fjern valgte kommentarer"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s kommentarer"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Siste kommentarer fra %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Navn"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "E-postadresse"
-
-#: forms.py:98
-msgid "URL"
-msgstr "Nettadresse"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Kommentar"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Pass munnen din! Ordet %s er ikke tillatt her."
-msgstr[1] "Pass munnen din! Ordene %s er ikke tillatt her."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "og"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Hvis du oppgir noe i dette feltet, vil kommentaren bli behandlet som spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "innholdstype"
-
-#: models.py:25
-msgid "object ID"
-msgstr "objekt-ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "bruker"
-
-#: models.py:55
-msgid "user's name"
-msgstr "brukerens navn"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "brukerens e-postadresse"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "brukerens nettadresse"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "kommentar"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "dato/tid for innsendelse"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP-adresse"
-
-#: models.py:64
-msgid "is public"
-msgstr "er tilgjengelig for alle"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Fjern avhuking av denne boksen for å fjerne kommentaren fra siden."
-
-#: models.py:67
-msgid "is removed"
-msgstr "er fjernet"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Huk av denne hvis kommentaren er upassende. Meldingen «Denne kommentaren har "
-"blitt fjernet» vil bli vist i stedet."
-
-#: models.py:80
-msgid "comments"
-msgstr "kommentarer"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Denne kommentaren er skrevet av en innlogget bruker og navnet kan derfor "
-"ikke endres."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Denne kommentaren er skrevet av en innlogget bruker og e-postadressen kan "
-"derfor ikke endres."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Skrevet av %(user)s, %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "flagg"
-
-#: models.py:180
-msgid "date"
-msgstr "dato"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "kommentarflagg"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "kommentarflagg"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Tillat en kommentar"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Gjør denne kommentaren offentlig?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Godkjenn"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Takk for godkjennelse"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Takk for at du tok deg tid til å forbedre kvaliteten på diskusjonen på siden "
-"vår"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Fjern en kommentar"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Fjern denne kommentaren?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Fjern"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Takk for fjerningen"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Flagg denne kommentaren"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Flagg denne kommentaren?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Flagg"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Takk for flagging"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Publiser"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Forhåndsvisning"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Takk for kommentar"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Takk for din kommentar"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Forhåndsvis kommentaren din"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Vennligst korriger feilene under"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Vennligst korriger feilene under"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Publiser din kommentar"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "eller gjør endringer"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ne/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/ne/LC_MESSAGES/django.mo
deleted file mode 100644
index cf69925..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ne/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ne/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/ne/LC_MESSAGES/django.po
deleted file mode 100644
index 6a51804..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ne/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,290 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Paras Nath Chaudhary <opnchaudhary@gmail.com>, 2012
-# Sagar Chalise <chalisesagar@gmail.com>, 2011
-# ♔♔♔Srt Aryal♔♔♔ <surit_people@hotmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/"
-"ne/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ne\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "विषय"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "मेटाडाटा"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr ""
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "चुनिएको प्रतिकृया स्वीकार गर्नुहोस ।"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "चुनिएको प्रतिकृया हटाउनुहोस ।"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s प्रतिकृया"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "%(site_name)sका ताजा प्रतिकृया"
-
-#: forms.py:96
-msgid "Name"
-msgstr "नाम"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "ई-मेल ठेगाना"
-
-#: forms.py:98
-msgid "URL"
-msgstr ""
-
-#: forms.py:99
-msgid "Comment"
-msgstr "प्रतिकृया"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "र"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "याहा केहि पनि नलेख्नु होला । याहा केहि लेखियेमा तेसला"
-
-#: models.py:23
-msgid "content type"
-msgstr "विषयको ढाँचा"
-
-#: models.py:25
-msgid "object ID"
-msgstr ""
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "प्रयोगकर्ता "
-
-#: models.py:55
-msgid "user's name"
-msgstr ""
-
-#: models.py:56
-msgid "user's email address"
-msgstr ""
-
-#: models.py:57
-msgid "user's URL"
-msgstr ""
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "प्रतिकृया"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr ""
-
-#: models.py:63
-msgid "IP address"
-msgstr ""
-
-#: models.py:64
-msgid "is public"
-msgstr ""
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-
-#: models.py:67
-msgid "is removed"
-msgstr "हटाइएको छ"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-
-#: models.py:80
-msgid "comments"
-msgstr "प्रतिकृया"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-
-#: models.py:179
-msgid "flag"
-msgstr ""
-
-#: models.py:180
-msgid "date"
-msgstr "मिति"
-
-#: models.py:190
-msgid "comment flag"
-msgstr ""
-
-#: models.py:191
-msgid "comment flags"
-msgstr ""
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "प्रतिकृया स्वीकार गर्नुहोस"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr ""
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "स्वीकार गर्नुहोस"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "स्वीकार गरेकोमा धन्यवाद"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "प्रतिकृया हटाउनुहोस"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "के साच्चै प्रतिकृया हटाउनुहुन्छ ?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "हटाउनुहोस"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "हटाएकोमा धन्यवाद"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr ""
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr ""
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr ""
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr ""
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "लेख "
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "पूर्व समीक्षा"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "प्रतिकृयाको लागि धन्यवाद"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "तपाइको प्रतिकृयाको लागि धन्यवाद"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "तपाइको प्रतिकृयाको पूर्व समीक्षा"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "कृपया तलका त्रुटि सच्याउनुहोस ।"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "तपाइको प्रतिकृयाको पठाउनुहोस"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "अथवा फेरबदल गर्नुहोस"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/nl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/nl/LC_MESSAGES/django.mo
deleted file mode 100644
index f55f135..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/nl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/nl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/nl/LC_MESSAGES/django.po
deleted file mode 100644
index 0be08aa..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/nl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,306 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# bartdegoede <bart@dispectu.com>, 2013
-# go2people <admin@go2people.nl>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Tino de Bruijn <tinodb@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-22 15:59+0000\n"
-"Last-Translator: bartdegoede <bart@dispectu.com>\n"
-"Language-Team: Dutch (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Inhoud"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadata"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d reactie is succesvol gemarkeerd"
-msgstr[1] "%d reacties zijn succesvol gemarkeerd"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Markeer geselecteerde commentaren"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d reactie is succesvol goedgekeurd"
-msgstr[1] "%d reacties zijn succesvol goedgekeurd"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Keur geselecteerde commentaren goed"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d reactie is succesvol verwijderd"
-msgstr[1] "%d reacties zijn succesvol verwijderd"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Verwijder geselecteerde commentaren"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s opmerkingen"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Laatste opmerkingen op %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Naam"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "E-mailadres"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Opmerking"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Pas op uw taalgebruik! Gebruik van %s niet toegestaan."
-msgstr[1] ""
-"Pas op uw taalgebruik! Gebruik van de woorden %s is niet toegestaan."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "en"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Indien u hier iets invult dan wordt uw opmerking behandeld als spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "inhoudstype"
-
-#: models.py:25
-msgid "object ID"
-msgstr "object-ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "gebruiker"
-
-#: models.py:55
-msgid "user's name"
-msgstr "naam gebruiker"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "e-mailadres gebruiker"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL gebruiker"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "opmerking"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "datum/tijd toegevoegd"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP-adres"
-
-#: models.py:64
-msgid "is public"
-msgstr "is openbaar"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Vink dit vakje uit zodat de opmerking niet meer zichtbaar is op de site."
-
-#: models.py:67
-msgid "is removed"
-msgstr "is verwijderd"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Vink dit vak aan indien de opmerking niet gepast is. Een \"Dit commentaar is "
-"verwijderd\" bericht wordt dan getoond."
-
-#: models.py:80
-msgid "comments"
-msgstr "opmerkingen"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Deze opmerking is gepost door een ingelogde gebruiker en daardoor is de naam "
-"niet aan te passen."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Deze opmerking is gepost door een ingelogde gebruiker en daardoor is het e-"
-"mailadres niet aan te passen."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Geplaatst door %(user)s op %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "vlag"
-
-#: models.py:180
-msgid "date"
-msgstr "datum"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "opmerking vlag"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "opmerking vlaggen"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Een opmerking toestaan"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Weet u zeker dat u deze opmerking openbaar wilt maken?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Goedkeuren"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Bedankt voor het goedkeuren"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Bedankt dat u de tijd heeft genomen om de kwaliteit van de discussie op onze "
-"site te verbeteren"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Een opmerking verwijderen"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Weet u zeker dat u deze opmerking wilt verwijderen?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Verwijderen"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Bedankt voor het verwijderen"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Vlag deze opmerking"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Weet u zeker dat u deze opmerking wilt vlaggen?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Vlag"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Bedankt voor het vlaggen"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Bericht"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Voorbeeld"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Bedankt voor uw opmerking"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Bedankt voor uw opmerking"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Toon voorbeeld van uw opmerking"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Herstel de fouten hieronder"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Herstel de fouten hieronder"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Plaats uw opmerking"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "of maak aanpassingen"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/nn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/nn/LC_MESSAGES/django.mo
deleted file mode 100644
index 027909c..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/nn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/nn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/nn/LC_MESSAGES/django.po
deleted file mode 100644
index 6a0be40..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/nn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,302 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/"
-"language/nn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Innhald"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadata"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Flagg valde kommentarar"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Tillat valde kommentarar"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Fjern valdte kommentarar"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s - kommentarar"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Siste kommentarar frå %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Namn"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "E-postadresse"
-
-#: forms.py:98
-msgid "URL"
-msgstr "Nettadresse"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Kommentar"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Pass munnen din! Ordet %s er ikkje lovleg her."
-msgstr[1] "Pass munnen din! Orda %s er ikkje lovlege her."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "og"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Dersom du oppgjev noko i dette feltet, vil kommentaren bli behandla som spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "innhaldstype"
-
-#: models.py:25
-msgid "object ID"
-msgstr "objekt-ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "brukar"
-
-#: models.py:55
-msgid "user's name"
-msgstr "brukaren sitt namn"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "brukaren si e-postadresse"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "brukaren si nettadresse"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "kommentar"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "dato/tid for innsending"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP-adresse"
-
-#: models.py:64
-msgid "is public"
-msgstr "er tilgjengeleg for alle"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Avmerk denne boksen for å fjerne kommentaren frå sida."
-
-#: models.py:67
-msgid "is removed"
-msgstr "er fjerna"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Kryss av denne dersom kommentaren er upassande. Meldinga \"Denne kommentaren "
-"har blitt fjerna\" vil bli vist i staden."
-
-#: models.py:80
-msgid "comments"
-msgstr "kommentarar"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Denne kommentaren er skriven av ein innlogga brukar og namnnet kan difor "
-"ikkje endrast."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Denne kommentaren er skriven av ein innlogga brukar og e-postadressa kan "
-"derfor ikkje endrast."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Skrive av %(user)s, %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "flagg"
-
-#: models.py:180
-msgid "date"
-msgstr "dato"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "kommentarflagg"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "kommentarflagg"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Tillat ein kommentar"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Gjere denne kommentaren offentleg?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Godkjenn"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Takk for godkjenning"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Takk for at du tok deg tid til å forbetre kvaliteten på diskusjonen på sida "
-"vår"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Fjern ein kommentar"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Fjerne denne kommentaren?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Fjern"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Takk for fjerninga"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Flagg denne kommentaren"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Flagg denne kommentaren?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Flagg"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Takk for flagging"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Publiser"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Førehandsvising"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Takk for kommentaren"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Takk for kommentaren din"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Førehandsvis kommentaren din"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Korriger feila under"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Publiser kommentaren din"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "eller gjer endringar"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/os/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/os/LC_MESSAGES/django.mo
deleted file mode 100644
index 151316e..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/os/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/os/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/os/LC_MESSAGES/django.po
deleted file mode 100644
index 354efcf..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/os/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,300 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Ossetic (http://www.transifex.com/projects/p/django/language/"
-"os/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: os\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Мидис"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Метарардтӕ"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d комментари нысангонд ӕрцыдис"
-msgstr[1] "%d комментарийы нысангонд ӕрцыдысты"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Ӕвзӕрст комментаритӕ банысан кӕнын"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d комментари бӕлвырдгонд ӕрцыдис"
-msgstr[1] "%d комментарийы бӕлвырдгонд ӕрцыдысты"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Ӕвзӕрст комментаритӕ сбӕлвырд кӕнын"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d комментари хафт ӕрцыдис"
-msgstr[1] "%d комментарийы хафт ӕрцыдысты"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Ӕвзӕрст комментаритӕ схафын"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s-ы комментаритӕ"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "%(site_name)s-ы фӕстаг комментаритӕ"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Ном"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Электрон посты адрис"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Коммент"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Дӕхимӕ кӕс! %s ам дзурын нӕй гӕнӕн."
-msgstr[1] "Дӕхимӕ кӕс! %s, ахӕм ныхӕстӕ ам дзурын нӕй гӕнӕн."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "ӕмӕ"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Кӕд ацы ран исты ныффыссай, уӕд дӕ хъуыды куыд спам афтӕ уыдзӕн"
-
-#: models.py:23
-msgid "content type"
-msgstr "мидисы хуыз"
-
-#: models.py:25
-msgid "object ID"
-msgstr "объекты ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "архайӕг"
-
-#: models.py:55
-msgid "user's name"
-msgstr "архайӕджы ном"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "архайӕджы электрон пост"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "архайӕджы "
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "коммент"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "бавӕрды бон/рӕстӕг"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP адрис"
-
-#: models.py:64
-msgid "is public"
-msgstr "публикон у"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Ацы чекбоксы нысан сис цӕмӕй хъуыды сайтӕй фесӕфа."
-
-#: models.py:67
-msgid "is removed"
-msgstr "хафт у"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Банысан кӕн ацы чекбокс, кӕд ацы хъуыды ӕнӕмбӕлгӕ у. \"Ацы хъуыды хафт у\" "
-"уый бӕсты уыдзӕн ӕвдыст."
-
-#: models.py:80
-msgid "comments"
-msgstr "комменттӕ"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Ацы хъуыды ныффыста системӕмӕ хызт архайӕг, ӕмӕ уый тыххӕй йӕ ном ӕрмӕст "
-"фӕрсынӕн у."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Ацы хъуыды ныффыста системӕмӕ хызт архайӕг, ӕмӕ уый тыххӕй йӕ email ӕрмӕст "
-"фӕрсынӕн у."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Ныффыта йӕ %(user)s, %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "флаг"
-
-#: models.py:180
-msgid "date"
-msgstr "бон"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "комментарийы нысан"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "комментарийы нысӕнттӕ"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Комментари сбӕлвырд кӕнын"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Ӕцӕг дӕ фӕнды ацы комментари алкӕмӕн равдисын?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Бӕлвырд"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Бузныг бӕлвырд кӕнынӕн"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "Бузныг дӕ хъус кӕй дарыс нӕ сайты ныхасы уагмӕ"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Комментари схафын"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Ӕцӕг дӕ фӕнды ацы комментари схафын?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Схафын"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Бузныг хафыны тыххӕй"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Ацы комментари банысан кӕнын"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Ӕцӕг дӕ фӕнды ацы комментари банысан кӕнын?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Флаг"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Бузныг нысан кӕныны тыххӕй"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Фыст"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Афӕлгӕст"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Бузныг хъуыды зӕгъыны тыххӕй"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Бузныг дӕ хъуыдыйы тыххӕй"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Дӕ хъуыдыйыл акӕс"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Дӕ хорзӕхӕй, бындӕр рӕдыдтытӕ сраст кӕн"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Дӕ хъуыды ныффысс"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "кӕнӕ йӕ фӕив"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/pa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/pa/LC_MESSAGES/django.mo
deleted file mode 100644
index ae9fe10..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/pa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/pa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/pa/LC_MESSAGES/django.po
deleted file mode 100644
index 422c107..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/pa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,293 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/"
-"language/pa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pa\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "ਸਮੱਗਰੀ"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "ਮੇਟਾਡਾਟਾ"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "ਚੁਣੀਆਂ ਟਿੱਪਣੀਆਂ ਫਲੈਗ ਕਰੋ"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "ਚੁਣੀਆਂ ਟਿੱਪਣੀਆਂ ਮਨਜ਼ੂਰ"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "ਚੁਣੀਆਂ ਟਿੱਪਣੀਆਂ ਹਟਾਓ"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s ਟਿੱਪਣੀਆਂ"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "%(site_name)s ਉੱਤੇ ਤਾਜ਼ਾ ਟਿੱਪਣੀਆਂ"
-
-#: forms.py:96
-msgid "Name"
-msgstr "ਨਾਂ"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "ਈਮੇਲ ਐਡਰੈੱਸ"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "ਟਿੱਪਣੀ"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "ਅਤੇ"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-
-#: models.py:23
-msgid "content type"
-msgstr "ਸਮੱਗਰੀ ਕਿਸਮ"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ਆਬਜੈਕਟ ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "ਯੂਜ਼ਰ"
-
-#: models.py:55
-msgid "user's name"
-msgstr "ਯੂਜ਼ਰ ਦਾ ਨਾਂ"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "ਯੂਜ਼ਰ ਦਾ ਈਮੇਲ ਐਡਰੈੱਸ"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "ਯੂਜ਼ਰ ਦਾ URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "ਟਿੱਪਣੀ"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "ਭੇਜਣ ਮਿਤੀ/ਸਮਾਂ"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP ਐਡਰੈੱਸ"
-
-#: models.py:64
-msgid "is public"
-msgstr "ਪਬਲਿਕ ਹੈ"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-
-#: models.py:67
-msgid "is removed"
-msgstr "ਹਟਾਇਆ ਗਿਆ"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-
-#: models.py:80
-msgid "comments"
-msgstr "ਟਿੱਪਣੀਆਂ"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(user)s ਵਲੋਂ %(date)s ਨੂੰ ਪੋਸਟ ਕੀਤੀ\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "ਫਲੈਗ"
-
-#: models.py:180
-msgid "date"
-msgstr "ਮਿਤੀ"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "ਟਿੱਪਣੀ ਫਲੈਗ"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "ਟਿੱਪਣੀ ਫਲੈਗ"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "ਟਿੱਪਣੀ ਮਨਜ਼ੂਰ ਕਰੋ"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "ਇਹ ਟਿੱਪਣੀ ਪਬਲਿਕ ਬਣਾਉਣੀ ਹੈ?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "ਮਨਜ਼ੂਰ"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "ਮਨਜ਼ੂਰ ਕਰਨ ਲਈ ਧੰਨਵਾਦ ਜੀ"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "ਟਿੱਪਣੀ ਹਟਾਓ"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "ਇਹ ਟਿੱਪਣੀ ਹਟਾਉਣੀ ਹੈ?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "ਹਟਾਓ"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "ਹਟਾਉਣ ਲਈ ਧੰਨਵਾਦ"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "ਇਹ ਟਿੱਪਣੀ ਲਈ ਫਲੈਗ"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "ਇਹ ਟਿੱਪਣੀ ਲਈ ਫਲੈਗ ਲਾਉਣਾ ਹੈ?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "ਫਲੈਗ"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "ਫਲੈਗ ਲਗਾਉਣ ਲਈ ਧੰਨਵਾਦ"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "ਪੋਸਟ ਕਰੋ"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "ਝਲਕ"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "ਟਿੱਪਣੀ ਦੇਣ ਲਈ ਧੰਨਵਾਦ"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "ਤੁਹਾਡੀ ਟਿੱਪਣੀ ਲਈ ਤੁਹਾਡਾ ਧੰਨਵਾਦ"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "ਆਪਣੀ ਟਿੱਪਣੀ ਦੀ ਝਲਕ ਵੇਖੋ"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "ਹੇਠ ਦਿੱਤੀਆਂ ਗਲਤੀਆਂ ਠੀਕ ਕਰੋ ਜੀ।"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "ਆਪਣੀ ਟਿੱਪਣੀ ਪੋਸਟ ਕਰੋ"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "ਜਾਂ ਬਦਲਾਅ ਕਰੋ"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/pl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/pl/LC_MESSAGES/django.mo
deleted file mode 100644
index ffacd11..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/pl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/pl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/pl/LC_MESSAGES/django.po
deleted file mode 100644
index c0542bd..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/pl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,310 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# angularcircle, 2013
-# angularcircle, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kacper Krupa <pagenoare@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-06-14 13:24+0000\n"
-"Last-Translator: Kacper Krupa <pagenoare@gmail.com>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Zawartość"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadane"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Oflaguj wybrane komentarze"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Zaakceptuj wybrane komentarze"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Usuń wybrane komentarze"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "komentarze na %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Ostatnie komentarze na %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Nazwa"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Adres e-mail"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Komentarz"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Nie wolno przeklinać! Słowo %s nie jest dozwolone."
-msgstr[1] "Nie wolno przeklinać! Słowa %s nie są dozwolone."
-msgstr[2] "Nie wolno przeklinać! Słowa %s nie są dozwolone."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "i"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Jeżeli wpiszesz cokolwiek w to pole, Twój komentarz zostanie uznany za spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "typ zawartości"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID obiektu"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "użytkownik"
-
-#: models.py:55
-msgid "user's name"
-msgstr "nazwa użytkownika"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "adres e-mail użytkownika"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL użytkownika"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "komentarz"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "data/czas dodania"
-
-#: models.py:63
-msgid "IP address"
-msgstr "Adres IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "publicznie dostępny"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Odznacz to pole, aby komentarz nie był wyświetlany w serwisie."
-
-#: models.py:67
-msgid "is removed"
-msgstr "usunięty"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Zaznacz to pole jeżeli komentarz jest nieodpowiedni. Wyświetlony zostanie "
-"tekst \"Ten komentarz został usunięty\"."
-
-#: models.py:80
-msgid "comments"
-msgstr "komentarze"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Ten komentarz został dodany przez zalogowanego użytkownika i dlatego nazwa "
-"jest tylko do odczytu."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Ten komentarz został dodany przez zalogowanego użytkownika i dlatego adres e-"
-"mail jest tylko do odczytu."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Dodane przez %(user)s dnia %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "flaga"
-
-#: models.py:180
-msgid "date"
-msgstr "data"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "flaga dla komentarza"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "flagi dla komentarzy"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Zaakceptuj komentarz"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Czy ten komentarz na pewno ma być publiczny?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Zaakceptuj"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Dziękujemy za zaakceptowanie"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Dziękujemy za poświęcenie czasu na podniesienie jakości dyskusji w naszym "
-"serwisie"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Usuń komentarz"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Czy na pewno usunąć ten komentarz?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Usuń"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Dziękujemy za usunięcie"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Oflaguj ten komentarz"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Czy na pewno oflagować ten komentarz?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Flaga"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Dziękujemy za oflagowanie"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Zapisz"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Podgląd"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Dziękujemy za dodanie komentarza"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Dziękujemy za komentarz"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Podgląd komentarza"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Proszę popraw poniższe błędy."
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Proszę popraw poniższe błędy."
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Zapisz swój komentarz"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "lub wprowadź jakieś zmiany"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/pt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/pt/LC_MESSAGES/django.mo
deleted file mode 100644
index f28f125..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/pt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/pt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/pt/LC_MESSAGES/django.po
deleted file mode 100644
index 85ec73d..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/pt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,305 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Bruno Miguel Custódio <bruno@brunomcustodio.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nuno Mariz <nmariz@gmail.com>, 2011,2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-10-31 16:31+0000\n"
-"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
-"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Conteúdo"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadata"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d comentário foi marcado com sucesso"
-msgstr[1] "%d comentários foram marcados com sucesso"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Marcar os comentários selecionados"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] "%(count)s comentários foram %(action)s com sucesso."
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Aprovar os comentários selecionados"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] "%(count)s comentários foram %(action)s com sucesso."
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Remover os comentários selecionados"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "comentários em %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Últimos comentários em %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Nome"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Endereço de e-mail"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Comentário"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Atenção à linguagem! A palavra %s não é permitida aqui."
-msgstr[1] "Atenção à linguagem! As palavras %s não são permitidas aqui."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "e"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Se introduzir alguma coisa neste campo o seu comentário irá ser tratado como "
-"spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "tipo de conteúdo"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID do objeto"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "utilizador"
-
-#: models.py:55
-msgid "user's name"
-msgstr "o nome do utilizador"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "endereço de e-mail do utilizador"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL do utilizador"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "comentário"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "data/hora de submissão"
-
-#: models.py:63
-msgid "IP address"
-msgstr "Endereço IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "é público"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Não selecione esta caixa para que o comentário desapareça do site."
-
-#: models.py:67
-msgid "is removed"
-msgstr "foi removido"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Selecione esta opção se o comentário não é apropriado. Uma mensagem \"Este "
-"comentário foi removido\" será mostrada no seu lugar."
-
-#: models.py:80
-msgid "comments"
-msgstr "comentários"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Este comentário foi colocado por um utilizador autenticado, portanto o nome "
-"é apenas de leitura."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Este comentário foi colocado por um utilizador autenticado, portanto o e-"
-"mail é apenas de leitura."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Colocado pelo utilizador %(user)s em %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "marcar"
-
-#: models.py:180
-msgid "date"
-msgstr "data"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "marca de comentário"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "marcas de comentários"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Aprovar um comentário"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Tem a certeza que deseja tornar este comentário público?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Aprovar"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Obrigado pela aprovação"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Obrigado por dedicar o seu tempo para melhorar a qualidade de discussão no "
-"nosso site"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Remover um comentário"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Tem a certeza que deseja remover este comentário?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Remover"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Obrigado pela remoção"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Marcar este comentário"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Tem a certeza que deseja marcar este comentário?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Marcar"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Obrigado por marcar"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Publicar"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Prever"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Obrigado por comentar"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Obrigado pelo seu comentário"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Pré-visualizar comentário"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Por favor corrija os seguintes erros."
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Por favor corrija os seguintes erros"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Publique o seu comentário"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "ou faça modificações"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/pt_BR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/pt_BR/LC_MESSAGES/django.mo
deleted file mode 100644
index e61fb01..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/pt_BR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/pt_BR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/pt_BR/LC_MESSAGES/django.po
deleted file mode 100644
index fcb23cb..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/pt_BR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Eduardo Carvalho <eduardocereto@gmail.com>, 2013
-# Gladson Simplício Brito <gladsonbrito@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-07-02 14:12+0000\n"
-"Last-Translator: Gladson Simplício Brito <gladsonbrito@gmail.com>\n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
-"django/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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Conteúdo"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Meta-dados"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d comentário foi sinalizado com sucesso"
-msgstr[1] "%d comentários foram sinalizadas com sucesso"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Marcar comentários selecionados"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d comentário foi aprovado com sucesso"
-msgstr[1] "%d comentários foram aprovados com sucesso"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Aprovar comentários selecionados"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d comentário foi removido com sucesso"
-msgstr[1] "%d comentários foram removidos com sucesso"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Remover comentários selecionados"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "Comentários de %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Últimos comentários em %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Nome"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Endereço de e-mail"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Comentário"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Olha sua boca! A palavra %s não é permitida aqui."
-msgstr[1] "Olha sua boca! As palavras %s não são permitidas aqui."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "e"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Se você inserir qualquer coisa neste campo, seu comentário será tratado como "
-"spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "tipo de conteúdo"
-
-#: models.py:25
-msgid "object ID"
-msgstr "id do objeto"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "usuário"
-
-#: models.py:55
-msgid "user's name"
-msgstr "nome do usuário"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "endereço de e-mail do usuário"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL do usuário"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "comentário"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "data/hora de envio"
-
-#: models.py:63
-msgid "IP address"
-msgstr "Endereço IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "é público"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Desmarque esta caixa para fazer o comentário desaparecer efetivamente deste "
-"site."
-
-#: models.py:67
-msgid "is removed"
-msgstr "foi removido"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Selecione esta opção se o comentário é inapropriado. A mensagem \"Este "
-"comentário foi removido\" será mostrada no lugar."
-
-#: models.py:80
-msgid "comments"
-msgstr "comentários"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Este comentário foi feito por um usuário autenticado e portanto seu nome é "
-"apenas para leitura."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Este comentário foi feito por um usuário autenticado e portanto seu e-mail é "
-"apenas para leitura."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Enviado por %(user)s em %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "marcar"
-
-#: models.py:180
-msgid "date"
-msgstr "data"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "marca de comentário"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "marcas de comentários"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Aprovar um comentário"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Realmente tornar este comentário público?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Aprovar"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Obrigado pela aprovação"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Obrigado por dedicar tempo para melhorar a qualidade de discussão de nosso "
-"site."
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Remover um comentário"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Realmente remover este comentário?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Remover"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Obrigado pela remoção"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Marcar um comentário"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Realmente marcar este comentário?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Marcar"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Obrigado pela marcação"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Publicar"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Visualizar"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Obrigado por comentar"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Obrigado pelo seu comentário"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Visualizar seu comentário"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Por favor, corrija os erros abaixo."
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Por favor, corrija os erros abaixo"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Publique seu comentário"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "ou faça modificações"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ro/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/ro/LC_MESSAGES/django.mo
deleted file mode 100644
index 16d93b5..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ro/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ro/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/ro/LC_MESSAGES/django.po
deleted file mode 100644
index 21a3ec4..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ro/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,311 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Daniel Ursache-Dogariu <contact@danniel.net>, 2011
-# Denis Darii <sinednx@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/"
-"ro/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1));\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Conţinut"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadate"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Marchează comentariile selectate"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Aprobă comentariile selectate"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Elimină comentariile selectate"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "Comentariile de la %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Ultimele comentarii la %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Nume"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Adresă e-mail"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Comentariu"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Atenție la limbajul folosit! Cuvântul %s nu este permis aici."
-msgstr[1] "Atenție la limbajul folosit! Cuvintele %s nu sunt permise aici."
-msgstr[2] "Atenție la limbajul folosit! Cuvintele %s nu sunt permise aici."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "și"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Dacă introduceți ceva în acest câmp, comentariul dumneavoastră va fi "
-"considerat ca spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "tip conţinut"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID obiect"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "utilizator"
-
-#: models.py:55
-msgid "user's name"
-msgstr "numele utilizatorului"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "adresa e-mail a utilizatorului"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL-ul utilizatorului"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "comentariu"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "data/ora creării"
-
-#: models.py:63
-msgid "IP address"
-msgstr "adresă ip"
-
-#: models.py:64
-msgid "is public"
-msgstr "este public"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Debifaţi această casetă pentru a face comentariul să dispară de pe site."
-
-#: models.py:67
-msgid "is removed"
-msgstr "este șters"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Bifați această casuța dacă acest comentariu nu este adecvat. Un mesaj de "
-"tipul \"Acest comentariu a fost șters\" va fi afișat în schimb."
-
-#: models.py:80
-msgid "comments"
-msgstr "comentarii"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Acest comentariu a fost scris de către un utilizator autentificat, astfel "
-"numele poate fi doar citit."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Acest comentariu a fost scris de către un utilizator autentificat, astfel "
-"adresa e-mail poate fi doar citită."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Scris de %(user)s la %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "marcaj"
-
-#: models.py:180
-msgid "date"
-msgstr "dată"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "marcaj comentariu"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "marcaje comentarii"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Aprobă un comentariu"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Chiar doriți să faceți public acest comentariu?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Aprobă"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Mulțumiri pentru aprobare"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Vă mulţumim pentru a timpul acordat spre a îmbunătăți calitatea discuțiilor "
-"de pe situl nostru"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Elimină un comentariu"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Chiar doriți să eliminați acest comentariu?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Elimină"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Mulțumiri pentru eliminare"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Marcați acest comentariu"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Chiar doriți să marcați acest comentariu?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Marchează"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Mulțumiri pentru marcare"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Publică"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Previzualizează"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Mulțumiri pentru comentariu"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Vă mulțumim pentru comentariu"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Previzualizați-vă comentariul"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Corectați erorile de mai jos"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Publicați-vă comentariul"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "sau faceți modificări"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ru/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/ru/LC_MESSAGES/django.mo
deleted file mode 100644
index 33aee15..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ru/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ru/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/ru/LC_MESSAGES/django.po
deleted file mode 100644
index 32db4b7..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ru/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,312 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Denis Darii <sinednx@gmail.com>, 2011
-# Eugene MechanisM <contact@mechanism.name>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Mikhail Zholobov <legal90@gmail.com>, 2013
-# Алексей Борискин <sun.void@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-07 12:50+0000\n"
-"Last-Translator: Алексей Борискин <sun.void@gmail.com>\n"
-"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/"
-"ru/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Содержимое"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Метаданные"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d комментарий был успешно помечен"
-msgstr[1] "%d комментария были успешно помечены"
-msgstr[2] "%d комментариев были успешно помечены"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Пометить выбранные комментарии"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d комментарий был успешно одобрен"
-msgstr[1] "%d комментария были успешно одобрены"
-msgstr[2] "%d комментариев были успешно одобрены"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Одобрить выбранные комментарии"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d комментарий был успешно удалён"
-msgstr[1] "%d комментария были успешно удалены"
-msgstr[2] "%d комментариев были успешно удалены"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Удалить выбранные комментарии"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "Комментарии %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Последние комментарии на %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Имя"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Адрес электронной почты"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Комментарий"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-"Следите за своими словами! Употребление слова \"%s\" здесь запрещено."
-msgstr[1] ""
-"Следите за своими словами! Употребление слов \"%s\" здесь запрещено."
-msgstr[2] ""
-"Следите за своими словами! Употребление слов \"%s\" здесь запрещено."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "и"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Если вы что-то введете в это поле, то ваш комментарий будет помечен как спам"
-
-#: models.py:23
-msgid "content type"
-msgstr "тип содержимого"
-
-#: models.py:25
-msgid "object ID"
-msgstr "идентификатор объекта"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "пользователь"
-
-#: models.py:55
-msgid "user's name"
-msgstr "имя пользователя"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "адрес электронной почты пользователя"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL пользователя"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "комментарий"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "дата и время добавления"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP-адрес"
-
-#: models.py:64
-msgid "is public"
-msgstr "публичный"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Снимите выделение, чтобы убрать комментарий с сайта."
-
-#: models.py:67
-msgid "is removed"
-msgstr "удалён"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Отметьте, если комментарий нежелателен. Взамен будет показано сообщение "
-"\"Этот комментарий был удален\"."
-
-#: models.py:80
-msgid "comments"
-msgstr "Комментарии"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Комментарий был добавлен зарегистрированным пользователем, поэтому имя "
-"пользователя доступно только для чтения."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Комментарий был добавлен зарегистрированным пользователем, поэтому адрес "
-"электронной почты доступен только для чтения."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Добавил %(user)s %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "отметка"
-
-#: models.py:180
-msgid "date"
-msgstr "дата"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "отметка комментария"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "отметки комментариев"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Одобрить комментарий"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Вы уверены, что хотите опубликовать этот комментарий?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Одобрить"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Спасибо, что одобрили комментарий"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "Спасибо, что заботитесь о качестве общения на нашем сайте"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Удалить комментарий"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Вы уверены, что хотите удалить этот комментарий?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Удалить"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Спасибо за удаление"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Отметить этот комментарий"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Вы уверены, что хотите отметить этот комментарий?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Отметить"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Спасибо"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Опубликовать"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Предпросмотр"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Спасибо за комментарий"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Спасибо за ваш комментарий"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Предпросмотр вашего комментария"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Пожалуйста, исправьте ошибки ниже"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Пожалуйста, исправьте ошибки, указанные ниже"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Опубликуйте ваш комментарий"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "или внесите изменения"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/sk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/sk/LC_MESSAGES/django.mo
deleted file mode 100644
index da0fdec..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/sk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/sk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/sk/LC_MESSAGES/django.po
deleted file mode 100644
index 0607c23..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/sk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,308 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Juraj Bubniak <translations@jbub.eu>, 2013
-# Marian Andre <marian@andre.sk>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-11-10 11:57+0000\n"
-"Last-Translator: Marian Andre <marian@andre.sk>\n"
-"Language-Team: Slovak (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Obsah"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metaúdaje"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d komentár bol úspešne označený"
-msgstr[1] "%d komentáre boli úspešne označené"
-msgstr[2] "%d komentárov bolo úspešne označených"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Označiť vybraný komentár"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d komentár schválený"
-msgstr[1] "%d komentáre schválené"
-msgstr[2] "%d komentárov schválených"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Schváliť vybraný komentár"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d komentár úspešne odstránený"
-msgstr[1] "%d komentáre úspešne odstránené"
-msgstr[2] "%d komentárov úspešne odstránených"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Odstrániť vybrané komentáre"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s komentáre"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Najnovšie komentáre na %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Meno"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "E-mail adresa"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Komentár"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Vyjadrujte sa slušne! Slovo %s tu nie je dovolené používať."
-msgstr[1] "Vyjadrujte sa slušne! Slová %s tu nie je dovolené používať."
-msgstr[2] "Vyjadrujte sa slušne! Slová %s tu nie je dovolené používať."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "a"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Ak ste do tohoto poľa čokoľvek zadali, váš komentár bude považovaný za spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "typ obsahu"
-
-#: models.py:25
-msgid "object ID"
-msgstr "identifikátor objektu"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "používateľ"
-
-#: models.py:55
-msgid "user's name"
-msgstr "meno používateľa"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "e-mail adresa používateľa"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL používateľa"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "komentár"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "dátum a čas odoslania"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP adresa"
-
-#: models.py:64
-msgid "is public"
-msgstr "je verejný"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Ak chcete, aby komentár zmizol zo stránky, zrušte zaškrtnutie tohoto políčka."
-
-#: models.py:67
-msgid "is removed"
-msgstr "je odstránený"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Zaškrtnite toto pole, ak je komentár nevhodný. Namiesto neho sa zobrazí "
-"správa \"Tento komenár bol odstránený\"."
-
-#: models.py:80
-msgid "comments"
-msgstr "komentáre"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Tento komentár je od autentifikovaného používateľa a preto je jeho meno len "
-"na čítanie."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Tento komentár je od autentifikovaného používateľa a preto je jeho e-mail "
-"len na čítanie."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Pridaný užívateľom %(user)s dňa %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "príznak"
-
-#: models.py:180
-msgid "date"
-msgstr "dátum"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "komentárový príznak"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "komentárové príznaky"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Povoliť komentár"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Skutočne chcete zverejniť tento komentár?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Povoliť"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Ďakujeme za povolenie"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Ďakujeme za čas, ktorý ste venovali zvýšniu kvality diskusie na našej stránke"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Zmazať komentár"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Naozaj chcete zmazať tento komentár?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Odstrániť"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Ďakujeme za odstránenie"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Označiť tento komentár"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Naozaj chcete označiť tento komentár?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Príznak"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Ďakujeme za označenie"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Poslať"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Náhľad"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Vďaka za komentár"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Ďakujeme za váš komentár"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Náhľad komentára"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Opravte, prosím, chyby uvedené nižšie"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Opravte, prosím, chyby uvedené nižšie"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Poslať váš komentár"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "alebo urobiť zmeny"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/sl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/sl/LC_MESSAGES/django.mo
deleted file mode 100644
index 8d54442..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/sl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/sl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/sl/LC_MESSAGES/django.po
deleted file mode 100644
index 8325a01..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/sl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,312 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# zejn <zejn@kiberpipa.org>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-07-12 09:03+0000\n"
-"Last-Translator: zejn <zejn@kiberpipa.org>\n"
-"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/"
-"language/sl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Vsebina"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metapodatki"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d komentar je bil uspešno označen"
-msgstr[1] "%d komentarja sta bila uspešno označena"
-msgstr[2] "%d komentarji so bili uspešno označeni"
-msgstr[3] "%d komentarjev je bilo uspešno označenih"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Označi izbrane komentarje"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d komentar je bil uspešno odobren"
-msgstr[1] "%d komentarja sta bila uspešno odobrena"
-msgstr[2] "%d komentarji so bili uspešno odobreni"
-msgstr[3] "%d komentarjev je bilo uspešno odobrenih"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Odobri izbrane opokomentarje"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d komentar je bil uspešno izbrisan"
-msgstr[1] "%d komentarja sta bila uspešno izbrisana"
-msgstr[2] "%d komentarji so bili uspešno izbrisani"
-msgstr[3] "%d komentarjev je bilo uspešno izbrisanih"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Odstrani izbrane komentarje"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "Komentarji %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Zadnji komentarji na %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Ime"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Elektronski naslov"
-
-#: forms.py:98
-msgid "URL"
-msgstr "Naslov URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Komentar"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Pazite na jezik! Besede %s tu niso dovoljene."
-msgstr[1] "Pazite na jezik! Beseda %s tu ni dovoljena."
-msgstr[2] "Pazite na jezik! Besedi %s tu nista dovoljeni."
-msgstr[3] "Pazite na jezik! Besede %s tu niso dovoljene."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "in"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Če v to polje vnesete kakršnokoli besedilo, bo vaš komentar označen kot "
-"neželen komentar."
-
-#: models.py:23
-msgid "content type"
-msgstr "vrsta vsebine"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID predmeta"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "uporabnik"
-
-#: models.py:55
-msgid "user's name"
-msgstr "ime uporabnika"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "elektronski naslov uporabnika"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "naslov URL uporabnika"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "komentar"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "datum in čas objave"
-
-#: models.py:63
-msgid "IP address"
-msgstr "naslov IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "je javno"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Odkljukajte izbor in komentar bo izginil s strani."
-
-#: models.py:67
-msgid "is removed"
-msgstr "je odstranjen"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Odkljukajte, če je komentarj neprimeren. Namesto komentarja bo prikazano "
-"obvestilo \"Komentar je bil odstranjen\"."
-
-#: models.py:80
-msgid "comments"
-msgstr "komentarji"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Komentar je objavil prijavljen uporabnik, zato je ime na voljo le za branje."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Komentar je objavil prijavljen uporabnik, zato je elektronski naslov na "
-"voljo le za branje."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Objavljeno z računa %(user)s ob %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "označi"
-
-#: models.py:180
-msgid "date"
-msgstr "datum"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "oznaka komentarja"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "oznake komentarja"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Odobri komentar"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Ali ste prepričani, da želite ta komentar objaviti?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Odobri"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Hvala za odobritev"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Hvala, da ste si vzeli čas in pomagali izboljšati kakovost pogovorov na naši "
-"strani."
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Odstrani komentar"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Ali res želite odstraniti ta komentar?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Odstrani"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Hvala, ker ste odstranili komentar."
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Označi ta komentar"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Ali res želite označiti ta komentar?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Označi"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Hvala, ker ste označili komentar"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Objavi"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Predogled"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Hvala za objavljanje komentarjev"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Hvala za vaš komentar"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Predogled komentarja"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Odpravite naslednje napake"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Odpravite naslednje napake"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Objavite komentar"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "ali naredite spremembe"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/sq/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/sq/LC_MESSAGES/django.mo
deleted file mode 100644
index bb91253..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/sq/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/sq/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/sq/LC_MESSAGES/django.po
deleted file mode 100644
index 271f50f..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/sq/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,304 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Besnik <besnik@programeshqip.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/"
-"sq/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sq\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Lëndë"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Tejtëdhëna"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "Iu vu shenjë me sukses %d komenti"
-msgstr[1] "Iu vunë shenjë me sukses %d komenteve"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Vëru shenjë komenteve të përzgjedhura"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "U miratua me sukses %d koment"
-msgstr[1] "U miratuan me sukses %d komente"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Miratoji komentet e përzgjedhura"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "U hoq me sukses %d koment"
-msgstr[1] "U hoqën me sukses %d komente"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Hiqi komentet e përzgjedhur"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "komente te %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Komentet më të fundit te %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Emër"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Adresë email"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Koment"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Mbani gojën! Këtu nuk lejohet fjala %s."
-msgstr[1] "Mbani gojën! Këtu nuk lejohen fjalët %s."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr " dhe "
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Nëse fusni diçka në këtë fushë komenti juaj do të trajtohet si i pavlerë"
-
-#: models.py:23
-msgid "content type"
-msgstr "lloj lënde"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID objekti"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "përdorues"
-
-#: models.py:55
-msgid "user's name"
-msgstr "emri i përdoruesit"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "adresa email e përdoruesit"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL përdoruesi"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "koment"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "data/koha e parashtrimit"
-
-#: models.py:63
-msgid "IP address"
-msgstr "Adresë IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "është publike"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Hiqjani shenjën kësaj kutize që ta bëni komentin të zhduket faktikisht prej "
-"site-it."
-
-#: models.py:67
-msgid "is removed"
-msgstr "është hequr"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"I vini shenjë kësaj kutie, nëse komenti është i papërshtatshëm. Në vend të "
-"tij do të shfaqet një mesazh \"Ky koment është hequr\"."
-
-#: models.py:80
-msgid "comments"
-msgstr "komente"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Ky koment u postua nga një përdorues i mirëfilltësuar, ndaj emri është nën "
-"atributin vetëm-lexim."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Ky koment u postua nga një përdorues i mirëfilltësuar, ndaj email-i është "
-"nën atributin vetëm-lexim."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Postuar nga %(user)s më %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "shenjë"
-
-#: models.py:180
-msgid "date"
-msgstr "datë"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "shenjë komenti"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "shenja komenti"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Miratoni një koment"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Të bëhet vërtet publik ky koment?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Miratoje"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Faleminderit që e miratuat"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Faleminderit për kohën e harxhuar për përmirësimin e cilësisë së diskutimit "
-"në site-in tonë."
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Hiqni një koment"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Të hiqet vërtet ky koment?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Hiqe"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Faleminderit që e hoqët"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "I vini shenjë këtij komenti"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "T'i vihet shenjë vërtet këtij komenti?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Vëri shenjë"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Faleminderit që i vutë shenjë"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Postoje"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Paraparje"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Faleminderit që komentuat"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Faleminderit për komentin tuaj"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Parashiheni komentin tuaj"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Ju lutem, ndreqni gabimet e mëposhtme"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Postojeni komentin tuaj"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "ose bëni ndryshime"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/sr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/sr/LC_MESSAGES/django.mo
deleted file mode 100644
index 1e3e1f9..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/sr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/sr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/sr/LC_MESSAGES/django.po
deleted file mode 100644
index f938d01..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/sr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,306 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/"
-"sr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr\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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Садржај"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Метаподаци"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Означавање изабраних коментара"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Одобрење изабраних коментара"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Обриши изабране коментаре"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "Коментари на сајту %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Скорији коментари на сајту %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Име"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Имејл адреса"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Коментари"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Пазите шта пишете! Реч %s није дозвољена овде."
-msgstr[1] "Пазите шта пишете! Речи %s нису дозвољене овде."
-msgstr[2] "Пазите шта пишете! Речи %s нису дозвољене овде."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "и"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Ако ишта унесете у ово поље, Ваш коментар ће се сматрати спамом."
-
-#: models.py:23
-msgid "content type"
-msgstr "тип садржаја"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID објекта"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "корисник"
-
-#: models.py:55
-msgid "user's name"
-msgstr "корисниково име"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "корисникова имејл адреса"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "корисников URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "коментар"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "датум/време постављања"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP адреса"
-
-#: models.py:64
-msgid "is public"
-msgstr "јавно"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Деселектујте ово поље ако желите да порука фактички нестане са овог сајта."
-
-#: models.py:67
-msgid "is removed"
-msgstr "уклоњен"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Обележите ову кућицу ако је коментар неприкладан. Порука о уклањању ће бити "
-"приказана уместо коментара."
-
-#: models.py:80
-msgid "comments"
-msgstr "коментари"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Овај коментар је поставио пријављен корисник и зато је поље са именом "
-"закључано."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Овај коментар је поставио пријављен корисник и зато је поље са имејл адресом "
-"закључано."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Поставио %(user)s, %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "ознака"
-
-#: models.py:180
-msgid "date"
-msgstr "датум"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "ознака коментара"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "ознаке коментара"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Одобрење коментара"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Да ли заиста желите да означите овај коментар јавним?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Одобри"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Хвала на одобрењу!"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "Хвала на учешћу у унапређењу квалитета дискусија на нашем сајту."
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Обриши коментар"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Да ли заиста желите да обришете овај коментар?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Обриши"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Хвала што користите наш сајт!"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Означавање коментара"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Да ли заиста желите да означите овај коментар?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Означи"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Хвала што сте означили коментар."
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Постави"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Преглед"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Хвала на коментару"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Хвала што сте оставили свој коментар"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Прегледај коментар"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Исправите наведене грешке"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Постави коментар"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "или изврши измене"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/sr_Latn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/sr_Latn/LC_MESSAGES/django.mo
deleted file mode 100644
index 45dea1b..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/sr_Latn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/sr_Latn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/sr_Latn/LC_MESSAGES/django.po
deleted file mode 100644
index 6eca52b..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/sr_Latn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,306 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/"
-"language/sr@latin/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr@latin\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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Sadržaj"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metapodaci"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Označavanje izabranih komentara"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Odobrenje izabranih komentara"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Obriši izabrane komentare"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "Komentari na sajtu %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Skoriji komentari na sajtu %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Ime"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Imejl adresa"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Komentari"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Pazite šta pišete! Reč %s nije dozvoljena ovde."
-msgstr[1] "Pazite šta pišete! Reči %s nisu dozvoljene ovde."
-msgstr[2] "Pazite šta pišete! Reči %s nisu dozvoljene ovde."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "i"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Ako išta unesete u ovo polje, Vaš komentar će se smatrati spamom."
-
-#: models.py:23
-msgid "content type"
-msgstr "tip sadržaja"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID objekta"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "korisnik"
-
-#: models.py:55
-msgid "user's name"
-msgstr "korisnikovo ime"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "korisnikova imejl adresa"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "korisnikov URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "komentar"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "datum/vreme postavljanja"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP adresa"
-
-#: models.py:64
-msgid "is public"
-msgstr "javno"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Deselektujte ovo polje ako želite da poruka faktički nestane sa ovog sajta."
-
-#: models.py:67
-msgid "is removed"
-msgstr "uklonjen"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Obeležite ovu kućicu ako je komentar neprikladan. Poruka o uklanjanju će "
-"biti prikazana umesto komentara."
-
-#: models.py:80
-msgid "comments"
-msgstr "komentari"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Ovaj komentar je postavio prijavljen korisnik i zato je polje sa imenom "
-"zaključano."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Ovaj komentar je postavio prijavljen korisnik i zato je polje sa imejl "
-"adresom zaključano."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Postavio %(user)s, %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "oznaka"
-
-#: models.py:180
-msgid "date"
-msgstr "datum"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "oznaka komentara"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "oznake komentara"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Odobrenje komentara"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Da li zaista želite da označite ovaj komentar javnim?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Odobri"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Hvala na odobrenju!"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "Hvala na učešću u unapređenju kvaliteta diskusija na našem sajtu."
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Obriši komentar"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Da li zaista želite da obrišete ovaj komentar?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Obriši"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Hvala što koristite naš sajt!"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Označavanje komentara"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Da li zaista želite da označite ovaj komentar?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Označi"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Hvala što ste označili komentar."
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Postavi"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Pregled"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Hvala na komentaru"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Hvala što ste ostavili svoj komentar"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Pregledaj komentar"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Ispravite navedene greške"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Postavi komentar"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "ili izvrši izmene"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/sv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/sv/LC_MESSAGES/django.mo
deleted file mode 100644
index 592acc6..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/sv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/sv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/sv/LC_MESSAGES/django.po
deleted file mode 100644
index 82eb60f..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/sv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,303 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Andreas Pelme <andreas@pelme.se>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# biljettshop <thomas@biljettshop.se>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-10-28 10:06+0000\n"
-"Last-Translator: biljettshop <thomas@biljettshop.se>\n"
-"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/"
-"sv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sv\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Innehåll"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadata"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "Flaggade %d kommentar"
-msgstr[1] "Flaggade %d kommentarer"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Flagga markerade kommentarer"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "Godkände %d kommentar"
-msgstr[1] "Godkände %d kommentarer"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Godkänn valda kommentarer"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "Tog bort %d kommentar"
-msgstr[1] "Tog bort %d kommentarer"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Ta bort valda kommentarer"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s kommentarer"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Senaste kommentarer på %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Namn"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "E-postadress"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Kommentar"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Akta din tunga! Ordet %s är inte tillåtet här."
-msgstr[1] "Akta din tunga! Orden %s är inte tillåtna här."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "och"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Om du fyller i detta fält kommer din kommentar att betraktas som spam"
-
-#: models.py:23
-msgid "content type"
-msgstr "innehålls typ"
-
-#: models.py:25
-msgid "object ID"
-msgstr "objektets ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "användare"
-
-#: models.py:55
-msgid "user's name"
-msgstr "användares namn"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "användares e-postadress"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "användares URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "kommentar"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "skickat datum/tid"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP-adress"
-
-#: models.py:64
-msgid "is public"
-msgstr "är offentlig"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Avmarkeras detta kommer kommentaren inte synas på webbplatsen."
-
-#: models.py:67
-msgid "is removed"
-msgstr "är borttaget"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Bocka för denna ruta om kommentaren är olämplig. Ett \"Denna kommentar har "
-"tagits bort\"-meddelande kommer visas istället."
-
-#: models.py:80
-msgid "comments"
-msgstr "kommentarer"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Denna kommentar postades av en autentiserad användare och därför är namnet "
-"skrivskyddat."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Denna kommentar postades av en autentiserad användare och därför är e-"
-"postadressen skrivskyddad."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Inlagt av %(user)s %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "flagga"
-
-#: models.py:180
-msgid "date"
-msgstr "datum"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "kommentarsflagga"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "kommentarsflaggor"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Godkänn en kommentar"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Är du säker på att du vill offentliggöra kommentaren?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Godkänn"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Tack för ditt godkännande"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Tack för att du tog dig tid att förbättra kvaliteten på denna sites "
-"diskussioner"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Tag bort en kommentar"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Är du säker på att du vill ta bort denna kommentar?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Tag bort"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Tack för att du tog bort"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Flagga denna kommentar"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Är du säker på att du vill flagga kommentaren?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Flagga"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Tack för att ditt flaggande"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Skicka"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Förhandsgranska"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Tack för din kommentar"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Tack för din kommentar"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Förhandsgranska din kommentar"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Rätta till felen nedan."
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Vänligen korrigera felen nedan."
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Skicka kommentar"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "eller gör ändringar"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/sw/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/sw/LC_MESSAGES/django.mo
deleted file mode 100644
index ef078b3..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/sw/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/sw/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/sw/LC_MESSAGES/django.po
deleted file mode 100644
index 1cdc976..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/sw/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,300 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/"
-"sw/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sw\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Maudhui"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadata"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr ""
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Idhinisha maoni yaliyochaguliwa"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Ondoa maoni yaliyochaguliwa"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "maoni ya %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Maoni ya karibuni ya %(site_name)s."
-
-#: forms.py:96
-msgid "Name"
-msgstr "Jina"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Anuani ya baruapepe"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Maoni"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Chunga mdomo wako! Neno %s haliruhusiwi hapa."
-msgstr[1] "Chunga mdomo wako! Maneno %s hayaruhusiwi hapa."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "na"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-"Ikiwa utaingiza chochote katika uga huu maoni yako yatachukuliwa kama taka"
-
-#: models.py:23
-msgid "content type"
-msgstr "aina ya maudhui"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID ya kitu"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "mtumiaji"
-
-#: models.py:55
-msgid "user's name"
-msgstr "jina la mtumiaji"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "anuani ya baruapepe ya mtumiaji"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL ya mtumiaji"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "maoni"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "tarehe/muda yalipotolewa"
-
-#: models.py:63
-msgid "IP address"
-msgstr "anuani ya IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "kwa umma"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-"Toa tiki katika kisanduku hiki na maoni yako yatatolewa kikamilifu kutoka "
-"tovuti hii."
-
-#: models.py:67
-msgid "is removed"
-msgstr "yameondolewa"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-
-#: models.py:80
-msgid "comments"
-msgstr "maoni"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Maoni haya yametumwa na mtumiaji aliyethibitishwa na hivyo jina ni la kusoma "
-"tu."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Maoni haya yametumwa na mtumiaji aliyethibitishwa na hivyo anuani ya "
-"baruapepe ni ya kusoma tu."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Yametumwa na %(user)s %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr ""
-
-#: models.py:180
-msgid "date"
-msgstr "tarehe"
-
-#: models.py:190
-msgid "comment flag"
-msgstr ""
-
-#: models.py:191
-msgid "comment flags"
-msgstr ""
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr ""
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Kweli toa maoni haya kwa umma?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Pitisha"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Ahsante kwa kupitisha"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Asante kwa kutumia muda ili kuboresha ubora wa mjadala katika tovuti yetu"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Ondoa maoni"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Kweli, ondoa maoni haya?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Ondoa"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Ahsante kwa kuondoa"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr ""
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr ""
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr ""
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr ""
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Tuma"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Hakikisha"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Ahsante kwa kutoa maoni"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Ahsante kwa maoni yako"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Hakikisha maoni haya"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Tafadhali sahihisha makosa yafuatayo"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Tuma maoni yako"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "au fanya mabadiliko"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ta/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/ta/LC_MESSAGES/django.mo
deleted file mode 100644
index 7a51ad9..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ta/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ta/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/ta/LC_MESSAGES/django.po
deleted file mode 100644
index 2e216e5..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ta/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,295 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/"
-"ta/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ta\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr ""
-
-#: admin.py:28
-msgid "Metadata"
-msgstr ""
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr ""
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr ""
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr ""
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr ""
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr ""
-
-#: forms.py:96
-msgid "Name"
-msgstr ""
-
-#: forms.py:97
-msgid "Email address"
-msgstr ""
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr ""
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "வார்த்தைகளை அளன்து பேசுங்கள்! %s என்ற வார்த்தை இங்கு அனுமதி இல்லை"
-msgstr[1] "வார்த்தைகளை அளந்து பேசுங்கள்! %s என்ற வார்த்தைகள் இங்கு அனுமதி இல்லை"
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "மற்றும்"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-
-#: models.py:23
-msgid "content type"
-msgstr "பொருளடக்க வகை"
-
-#: models.py:25
-msgid "object ID"
-msgstr "அடையாளம்"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "பயனர்"
-
-#: models.py:55
-msgid "user's name"
-msgstr ""
-
-#: models.py:56
-msgid "user's email address"
-msgstr ""
-
-#: models.py:57
-msgid "user's URL"
-msgstr ""
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "குறிப்பு"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "தேதி/நேரம் சமர்ப்பிக்கப்பட்டுள்ளது"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP விலாசம்"
-
-#: models.py:64
-msgid "is public"
-msgstr "பொதுவானது"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-
-#: models.py:67
-msgid "is removed"
-msgstr "நீக்கபட்டது"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"குறிப்பு சரியாக இல்லையென்றால் இந்த பெட்டியில் குறியிடவும். இதற்கு பதிலாக \"இந்த "
-"குறிப்பு நீக்கபட்டது\" காண்பிக்கபடும்."
-
-#: models.py:80
-msgid "comments"
-msgstr "குறிப்பு"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(user)s ஆல் %(date)s இல் அளிக்கப்பட்டது \n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr ""
-
-#: models.py:180
-msgid "date"
-msgstr ""
-
-#: models.py:190
-msgid "comment flag"
-msgstr ""
-
-#: models.py:191
-msgid "comment flags"
-msgstr ""
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr ""
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr ""
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr ""
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr ""
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr ""
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr ""
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr ""
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr ""
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr ""
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr ""
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr ""
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr ""
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr ""
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr ""
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr ""
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr ""
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/te/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/te/LC_MESSAGES/django.mo
deleted file mode 100644
index 4cd224c..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/te/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/te/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/te/LC_MESSAGES/django.po
deleted file mode 100644
index e6c1465..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/te/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,290 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# bhaskar teja yerneni <prudhviy@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# వీవెన్ వీరపనేని <veeven@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/"
-"te/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: te\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "విషయం"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr ""
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr ""
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "ఎంచుకున్న వ్యాఖ్యానమునలను సంమతించుము"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "ఎంచుకున్న వ్యాఖ్యానమునలను తీసివేయుము "
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s వ్యాఖ్యలు"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "తాజా వ్యాఖ్యానములు %(site_name)s నందు కలదు "
-
-#: forms.py:96
-msgid "Name"
-msgstr "పేరు"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "ఈమెయిలు చిరునామా"
-
-#: forms.py:98
-msgid "URL"
-msgstr "యు ఆర్ యల్ "
-
-#: forms.py:99
-msgid "Comment"
-msgstr "వ్యాఖ్య"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "సరిచూసుకోండి! %s పదము ఇక్కడ సరియినది కాదు "
-msgstr[1] "సరిచూసుకోండి! %s పదములు ఇక్కడ సరియినది కాదు "
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "మరియు"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "ఈ క్షేత్రములో ఏదయినా వ్యాఖ్య రాసినట్లయితే అది అసంధర్బ వ్యాఖ్య గా పరిగనించబడుతుంది "
-
-#: models.py:23
-msgid "content type"
-msgstr "సూచన రకం"
-
-#: models.py:25
-msgid "object ID"
-msgstr "వస్తువు ఐడి"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "వాడుకరి"
-
-#: models.py:55
-msgid "user's name"
-msgstr "వాడుకరి పేరు"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "వాడుకరి ఈమెయిలు చిరునామా"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "వాడుకరి URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "వ్యాఖ్య"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "సమర్పించిన తేదీ/సమయం"
-
-#: models.py:63
-msgid "IP address"
-msgstr "ఐపీ చిరునామా"
-
-#: models.py:64
-msgid "is public"
-msgstr "బహిరంగమయినది"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-
-#: models.py:67
-msgid "is removed"
-msgstr "తీసివేయబడినది"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr " ఈ వ్యాఖ్యానము సరిగ్గా లేదని తోచినచో ఈ డబ్బా ని చెక్ చేయండి "
-
-#: models.py:80
-msgid "comments"
-msgstr "వ్యాఖ్యలు"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-
-#: models.py:179
-msgid "flag"
-msgstr ""
-
-#: models.py:180
-msgid "date"
-msgstr "తేదీ"
-
-#: models.py:190
-msgid "comment flag"
-msgstr ""
-
-#: models.py:191
-msgid "comment flags"
-msgstr ""
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "నిరాటంకమైన వ్యాఖ్యానము"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "ఖచితముగా ఈ వ్యాఖ్యను జాతియము చేయమంటారా?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "అనుమతించు "
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "అనుమతించినందుకు ధన్యవాదములు "
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "వ్యాఖ్యను తొలగించుము "
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "ఖచితముగా ఈ వ్యాఖ్యను తొలగించవలసినదేనా? "
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "తొలగించు"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "తొలగించినందుకు ధన్యవాదములు "
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr ""
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr ""
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr ""
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr ""
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "సమర్పణ"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "ముందస్తు వీక్షణం"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "వ్యాఖ్యానిచినందుకు ధన్యవాదములు "
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "వ్యాఖ్యానిచినందుకు ధన్యవాదములు "
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "వ్యాఖ్యను ముందస్తు గా వీక్షిపుము "
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "దయచేసి క్రింద వున్న వ్యాఖ్యలను సరిచేసుకోండి "
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "మీ వ్యాఖ్యని టపాచేయండి"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "లేదా మార్పులు చేయండి"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/th/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/th/LC_MESSAGES/django.mo
deleted file mode 100644
index 3394dfb..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/th/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/th/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/th/LC_MESSAGES/django.po
deleted file mode 100644
index 3605a61..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/th/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,293 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kowit Charoenratchatabhan <kowit.s.c@gmail.com>, 2012
-# Suteepat Damrongyingsupab <tianissimo@hotmail.com>, 2012
-# Vichai Vongvorakul <vongvichai@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/"
-"th/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: th\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "เนื้อหา"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Metadata"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "แจ้งเตือนความคิดเห็นที่เลือก"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "อนุมัติความคิดเห็นที่เลือกไว้"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "ลบความคิดเห็นที่เลือกไว้"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "ความเห็นของ %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "ความเห็นล่าสุดเมื่อ %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "ชื่อ"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "อีเมล"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "ข้อคิดเห็น"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "ระวังนะ ไม่สามารถใช้คำว่า %s ที่นี่ได้"
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "และ"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "ถ้าคุณใส่ข้อมูลใดๆ ก็ตามในส่วนนี้ มันจะกลายเป็นสแปม"
-
-#: models.py:23
-msgid "content type"
-msgstr "content type"
-
-#: models.py:25
-msgid "object ID"
-msgstr "อ็อบเจ็กต์ไอดี"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "ผู้ใช้"
-
-#: models.py:55
-msgid "user's name"
-msgstr "ชื่อของผู้ใช้"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "อีเมลของผู้ใช้"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL ของผู้ใช้"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "ข้อคิดเห็น"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "วันและเวลาที่ส่งข้อมูล"
-
-#: models.py:63
-msgid "IP address"
-msgstr "หมายเลขไอพี"
-
-#: models.py:64
-msgid "is public"
-msgstr "สาธารณะ"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "เลือกออกเพื่อที่จะทำให้ข้อคิดเห็นนั้นหายไปจากเว็บไซต์"
-
-#: models.py:67
-msgid "is removed"
-msgstr "ถอดออกแล้ว"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"เลือกเมื่อเห็นว่าข้อคิดเห็นไหนไม่เหมาะสม เมื่อข้อคิดเห็นนี้ได้ถูกลบแล้ว ข้อมูลอื่นจะถูกแสดงขึ้นแทน"
-
-#: models.py:80
-msgid "comments"
-msgstr "ความคิดเห็น"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr "ข้อคิดเห็นนี้ได้ถูกเขียนไว้โดยผู้ใช้ที่สามารถเชื่อถือได้ จะถูกอ่านได้เพียงอย่างเดียว"
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr "ข้อคิดเห็นนี้ถูกเขียนไว้โดยผู้ใช้ที่สามารถเชื่อถือได้ ดังนั้นอีเมลนั้นจะถูกอ่านเท่านั้น"
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"โพสต์โดย %(user)s ที่ %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "ธง"
-
-#: models.py:180
-msgid "date"
-msgstr "วันที่"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "ธงแสดงความเห็น"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "ปักธงแสดงความคิดเห็น"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "อนุมัติความคิดเห็น"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "ยืนยันที่จะให้ประชาชนแสดงความคิดเห็นนี้ไหม?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "อนุมัติ"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "ขอบคุณสำหรับการอนุมัติ"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "ขอบคุณที่สละเวลาเพื่อปรับปรุงคุณภาพของการสนทนาในเว็บไซต์ของเรา"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "ลบออกความคิดเห็น"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "ยืนยันที่จะลบความคิดเห็นนี้?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "ลบ"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "ขอบคุณสำหรับการลบ"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "ปักธงความคิดเห็นนี้"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "ยืยยันที่จะปักธงความคิดเห็นนี้นี้?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "ปักธง"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "ขอบคุณสำหรับการปักธง"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "โพสต์"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "ดูตัวอย่าง"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "ขอบคุณสำหรับการให้ความคิดเห็น"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "ขอบคุณสำหรับความคิดเห็นของคุณ"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "แสดงตัวอย่างความคิดเห็นของคุณ"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "กรุณาแก้ไขข้อผิดพลาดด้านล่าง"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "โพสต์ความคิดเห็นของคุณ"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "หรือทำการเปลี่ยนแปลง"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/tr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/tr/LC_MESSAGES/django.mo
deleted file mode 100644
index 3139455..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/tr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/tr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/tr/LC_MESSAGES/django.po
deleted file mode 100644
index bc3e384..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/tr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,303 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ahmet Emre Aladağ <emre.aladag@isik.edu.tr>, 2013
-# cihad <cihadgundogdu@gmail.com>, 2013
-# Murat Sahin <martinamca@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-10-23 16:49+0000\n"
-"Last-Translator: Ahmet Emre Aladağ <emre.aladag@isik.edu.tr>\n"
-"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/"
-"tr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "İçerik"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Başlık verisi"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d yorum başarıyla işaretlendi"
-msgstr[1] "%d yorum başarıyla işaretlendi"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Seçili yorumları işaretle"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d yorum başarıyla onaylandı"
-msgstr[1] "%d yorum başarıyla onaylandı"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Seçili yorumları onayla"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d yorum başarıyla kaldırıldı"
-msgstr[1] "%d yorum başarıyla kaldırıldı"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Seçili yorumları kaldır"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s yorumları"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "%(site_name)s üzerindeki son yorumlar"
-
-#: forms.py:96
-msgid "Name"
-msgstr "İsim"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Eposta adresi"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Yorum"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Ağzınıza hakim olun! %s kelimeleri burada kullanılamaz."
-msgstr[1] "Ağzınıza hakim olun! %s kelimeleri burada kullanılamaz."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "ve"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Bu alana herhangibir şey yazarsanız yorumunuz önemsiz olarak algılanır"
-
-#: models.py:23
-msgid "content type"
-msgstr "içerik tipi"
-
-#: models.py:25
-msgid "object ID"
-msgstr "nesne ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "kullanıcı"
-
-#: models.py:55
-msgid "user's name"
-msgstr "kullanıcının adı"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "kullanıcının eposta adresi"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "kullanıcının URL'i"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "yorum"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "gönderim tarihi/saati"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP adresi"
-
-#: models.py:64
-msgid "is public"
-msgstr "herkese açık"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Yorumu siteden kolayca gizlemek için bu kutunun işaretini kaldırın"
-
-#: models.py:67
-msgid "is removed"
-msgstr "kaldırıldı"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Bu yorum uygunsuz ise bu kutuyu işaretleyin. Yorum yerine \"Bu yorum "
-"kaldırıldı\" mesajı gösterilecektir."
-
-#: models.py:80
-msgid "comments"
-msgstr "yorumlar"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Bu yorum, kayıtlı bir kullanıcı tarafından yapıldığı için ismi salt-"
-"okunurdur."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Bu yorum, kayıtlı bir kullanıcı tarafından yapıldığı için eposta adresi salt-"
-"okunurdur."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"%(user)s tarafından %(date)s tarihinde gönderildi\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "işaret"
-
-#: models.py:180
-msgid "date"
-msgstr "tarih"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "yorum işareti"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "yorum işaretleri"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Bir yorumu onayla"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Bu yorumu herkese açık yapalım mı?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Onayla"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Onayladığınız için teşekkürler"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Sitemizin tartışma kalitesine katkıda bulunmaya vakit ayırdığınız için "
-"teşekkürler"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Bir yorum kaldır"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Gerçekten bu yorumu kaldıralım mı?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Kaldır"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Kaldırdığınız için teşekkürler"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Bu yorumu işaretle"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Gerçekten bu yorumu işaretleyelim mi?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Bayrak"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "İşaretlediğiniz için teşekkürler"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Gönderi"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Önizleme"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Yorum yaptığınız için teşekkürler"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Yorumunuz için teşekkürler"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Yorumunuzun önizlemesini görün"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Lütfen aşağıdaki hatayı düzeltin"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Lütfen aşağıdaki hataları düzeltin"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Yorumunuzu gönderin"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "ya da değişiklik yapı"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/tt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/tt/LC_MESSAGES/django.mo
deleted file mode 100644
index 4089786..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/tt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/tt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/tt/LC_MESSAGES/django.po
deleted file mode 100644
index 6c89541..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/tt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,283 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-04-24 19:38+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/"
-"tt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tt\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr ""
-
-#: admin.py:28
-msgid "Metadata"
-msgstr ""
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr ""
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr ""
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr ""
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr ""
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr ""
-
-#: forms.py:96
-msgid "Name"
-msgstr ""
-
-#: forms.py:97
-msgid "Email address"
-msgstr ""
-
-#: forms.py:98
-msgid "URL"
-msgstr ""
-
-#: forms.py:99
-msgid "Comment"
-msgstr ""
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr ""
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-
-#: models.py:23
-msgid "content type"
-msgstr ""
-
-#: models.py:25
-msgid "object ID"
-msgstr ""
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr ""
-
-#: models.py:55
-msgid "user's name"
-msgstr ""
-
-#: models.py:56
-msgid "user's email address"
-msgstr ""
-
-#: models.py:57
-msgid "user's URL"
-msgstr ""
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr ""
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr ""
-
-#: models.py:63
-msgid "IP address"
-msgstr ""
-
-#: models.py:64
-msgid "is public"
-msgstr ""
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-
-#: models.py:67
-msgid "is removed"
-msgstr ""
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-
-#: models.py:80
-msgid "comments"
-msgstr ""
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-
-#: models.py:179
-msgid "flag"
-msgstr ""
-
-#: models.py:180
-msgid "date"
-msgstr ""
-
-#: models.py:190
-msgid "comment flag"
-msgstr ""
-
-#: models.py:191
-msgid "comment flags"
-msgstr ""
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr ""
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr ""
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr ""
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr ""
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr ""
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr ""
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr ""
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr ""
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr ""
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr ""
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr ""
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr ""
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr ""
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr ""
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr ""
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr ""
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/uk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/uk/LC_MESSAGES/django.mo
deleted file mode 100644
index fd6a36d..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/uk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/uk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/uk/LC_MESSAGES/django.po
deleted file mode 100644
index 99fb25f..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/uk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,308 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sergey Lysach <sergikoff88@gmail.com>, 2011
-# Sergiy Kuzmenko <s.kuzmenko@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 08:39+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Зміст"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Мета-дані"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Позначити відзначені коментарі"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Апробувати відзначені коментарі"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Видалити відзначені коментарі"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "коментарі сайту %(site_name)s"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Останні коментарі на сайті %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Ім'я"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "E-mail адреса"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Коментар"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Слідкуйте за своїм язиком! Тут не дозволено вживати слово %s. "
-msgstr[1] "Слідкуйте за своїм язиком! Тут не дозволено вживати слова %s. "
-msgstr[2] "Слідкуйте за своїм язиком! Тут не дозволено вживати слова %s. "
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "та"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Якщо ви введете щось в це поле, ваш коментар буде вважатися спамом"
-
-#: models.py:23
-msgid "content type"
-msgstr "content type"
-
-#: models.py:25
-msgid "object ID"
-msgstr "ID об'єкту"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "користувач"
-
-#: models.py:55
-msgid "user's name"
-msgstr "ім'я користувача"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "e-mail адреса користувача"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "URL користувачів"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "коментар"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "дата/час додавання"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP адреса"
-
-#: models.py:64
-msgid "is public"
-msgstr "публічний"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Видаліть галочку звідси, щоб коментар зник з сайту."
-
-#: models.py:67
-msgid "is removed"
-msgstr "видалений"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Поставте тут галочку, якщо коментар неприйнятний. Повідомлення \"Цей "
-"коментар було видалено\" буде відображено замість цього коментаря."
-
-#: models.py:80
-msgid "comments"
-msgstr "коментарі"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"Цей коментар був розміщений зареєстрованим користувачем і тому ім'я не може "
-"бути відредаговано."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"Цей коментар був розміщений зареєстрованим користувачем і тому email не може "
-"бути відредагований."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Додав %(user)s %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "позначка"
-
-#: models.py:180
-msgid "date"
-msgstr "число"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "позначка коментаря"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "позначки коментаря"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Затвердіть коментар"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Дійсно, зробити цей коментар публічним?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Затвердити"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Дякуємо за затвердження."
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Дякуємо за те, що ви приділили увагу покращенню якості дискусії на нашому "
-"сайті"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Видалити коментар"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Дійсно, видалити цей коментар?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Видалити"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Дякуємо за видалення."
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Відмітити цей коментар?"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Дійсно відмітити цей коментар?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Відмітити"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Дякуємо за користування нашим сайтом."
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Надіслати"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Попередній перегляд"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Дякуємо за коментування"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Дякуємо за ваш коментар"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Попередній перегляд коментаря"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Будь ласка, виправте помилки зазначені нижче"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Опублікувати коментар"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "або зробити зміни"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ur/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/ur/LC_MESSAGES/django.mo
deleted file mode 100644
index 4ce391c..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ur/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/ur/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/ur/LC_MESSAGES/django.po
deleted file mode 100644
index 76cc7bd..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/ur/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,287 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-04-24 19:38+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/"
-"ur/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ur\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr ""
-
-#: admin.py:28
-msgid "Metadata"
-msgstr ""
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr ""
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr ""
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] ""
-msgstr[1] ""
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr ""
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr ""
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr ""
-
-#: forms.py:96
-msgid "Name"
-msgstr ""
-
-#: forms.py:97
-msgid "Email address"
-msgstr ""
-
-#: forms.py:98
-msgid "URL"
-msgstr ""
-
-#: forms.py:99
-msgid "Comment"
-msgstr ""
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] ""
-msgstr[1] ""
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr ""
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr ""
-
-#: models.py:23
-msgid "content type"
-msgstr ""
-
-#: models.py:25
-msgid "object ID"
-msgstr ""
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr ""
-
-#: models.py:55
-msgid "user's name"
-msgstr ""
-
-#: models.py:56
-msgid "user's email address"
-msgstr ""
-
-#: models.py:57
-msgid "user's URL"
-msgstr ""
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr ""
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr ""
-
-#: models.py:63
-msgid "IP address"
-msgstr ""
-
-#: models.py:64
-msgid "is public"
-msgstr ""
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr ""
-
-#: models.py:67
-msgid "is removed"
-msgstr ""
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-
-#: models.py:80
-msgid "comments"
-msgstr ""
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-
-#: models.py:179
-msgid "flag"
-msgstr ""
-
-#: models.py:180
-msgid "date"
-msgstr ""
-
-#: models.py:190
-msgid "comment flag"
-msgstr ""
-
-#: models.py:191
-msgid "comment flags"
-msgstr ""
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr ""
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr ""
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr ""
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr ""
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr ""
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr ""
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr ""
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr ""
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr ""
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr ""
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr ""
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr ""
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr ""
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr ""
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr ""
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr ""
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr ""
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr ""
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/vi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/vi/LC_MESSAGES/django.mo
deleted file mode 100644
index 64b2cf1..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/vi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/vi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/vi/LC_MESSAGES/django.po
deleted file mode 100644
index 0546b32..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/vi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,298 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Lê Thanh <lethanhx2k@gmail.com>, 2013
-# Tran <hongdiepkien@gmail.com>, 2011
-# Tran Van <vantxm@yahoo.co.uk>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-26 17:05+0000\n"
-"Last-Translator: Tran Van <vantxm@yahoo.co.uk>\n"
-"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/"
-"language/vi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "Nội dung"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "Siêu dữ liệu"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d nhận xét được đặt cờ thành công"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "Đặt cờ những nhận xét được chọn"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d bình luận đã được duyệt"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "Phê duyệt những nhận xét đã chọn"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d bình luận đã được xoá"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "Loại bỏ nhận xét được chọn"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "nhận xét %(site_name)s "
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "Nhận xét cuối cùng trên %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "Tên"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Địa chỉ email"
-
-#: forms.py:98
-msgid "URL"
-msgstr "Đường dẫn URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "Bình luận"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "Hãy cẩn thận! Cụm từ %s không được sử dụng ở đây."
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "và"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "Bất kì bình luận nào bạn nhập vào đây cũng sẽ bị coi là thư rác"
-
-#: models.py:23
-msgid "content type"
-msgstr "kiểu nội dung"
-
-#: models.py:25
-msgid "object ID"
-msgstr "object ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "Người dùng"
-
-#: models.py:55
-msgid "user's name"
-msgstr "Tên người sử dụng"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "Địa chỉ email của người sử dụng"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "Đường dẫn URL của người sử dụng"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "Bình luận"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "Ngày/giờ đã đăng kí"
-
-#: models.py:63
-msgid "IP address"
-msgstr "Địa chỉ IP"
-
-#: models.py:64
-msgid "is public"
-msgstr "Được phổ biến"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "Không đánh dấu vào hộp này để gỡ bình luận ra khỏi Site"
-
-#: models.py:67
-msgid "is removed"
-msgstr "Bị xóa"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"Đánh dấu vào hộp này nếu bình luận không thích hợp. Tin nhắn \"Bình luận đã "
-"bị xóa\" sẽ thay thế vào đó."
-
-#: models.py:80
-msgid "comments"
-msgstr "những nhận xét"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr ""
-"nhận xét này đã được đăng bởi một người dùng xác thực và do đó đặt tên cho "
-"là chỉ đọc."
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr ""
-"nhận xét này đã được đăng bởi một người dùng xác thực và do đó email là chỉ "
-"đọc."
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"Gửi bởi %(user)s vào %(date)s \n"
-"%(comment)s\n"
-"http://%(domain)s%(url)s "
-
-#: models.py:179
-msgid "flag"
-msgstr "cờ"
-
-#: models.py:180
-msgid "date"
-msgstr "ngày"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "cờ nhận xét"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "nhận xét được đặt cờ"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "Phê duyệt một nhận xét"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "Bạn thực sự muốn hiện nhận xét này cho mọi người xem?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "Chấp thuận"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "Cảm ơn bạn đã phê duyệt"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr ""
-"Cảm ơn bạn đã dành thời gian để cải thiện chất lượng cuộc thảo luận trên "
-"trang web của chúng tôi"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "Hủy bỏ một nhận xét"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "Thực sự loại bỏ bình luận này?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "Hủy bỏ"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "Cảm ơn đã loại bỏ"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "Dựng cờ nhận xét này"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "Bạn thực sự muốn đặt cờ nhận xét này?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "Flag"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "Cảm ơn đã đặt cờ"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "Post"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "Xem trước"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "Cảm ơn đã bình luận"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "Cảm ơn vì bình luận của bạn"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "Xem trước bình luận của bạn"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "Hãy sửa các lỗi dưới đây"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "Hãy sửa các lỗi dưới đây"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "Đăng bình luận của bạn"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "hoặc thay đổi"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/zh_CN/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/zh_CN/LC_MESSAGES/django.mo
deleted file mode 100644
index a040a5e..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/zh_CN/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/zh_CN/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/zh_CN/LC_MESSAGES/django.po
deleted file mode 100644
index df4a14c..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/zh_CN/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,293 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Lele Long <schemacs@gmail.com>, 2011
-# XiangYu <bupt.aswmtjdsj@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-05-30 06:09+0000\n"
-"Last-Translator: XiangYu <bupt.aswmtjdsj@gmail.com>\n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: admin.py:25
-msgid "Content"
-msgstr "内容"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "元数据"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "%d 个评论已被成功标记"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "标记选中的评论"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "%d 个评论已被成功批准"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "批准选中的评论"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "%d 个评论已被成功移除"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "移除选中的评论"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s的评论"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "%(site_name)s的最新评论"
-
-#: forms.py:96
-msgid "Name"
-msgstr "名称"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "Email 地址"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "评论"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "注意言论!%s 不允许在这里出现。"
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "和"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "如果你在该字段中输入任何内容,那么你的评论就会被视为垃圾评论。"
-
-#: models.py:23
-msgid "content type"
-msgstr "内容类型"
-
-#: models.py:25
-msgid "object ID"
-msgstr "对象ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "用户"
-
-#: models.py:55
-msgid "user's name"
-msgstr "用户名"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "用户的 email 地址"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "用户的网址"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "评论"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "提交日期/时间"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP 地址"
-
-#: models.py:64
-msgid "is public"
-msgstr "公开"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "取消选中此复选框,可隐藏该条评论。"
-
-#: models.py:67
-msgid "is removed"
-msgstr "已删除"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr ""
-"若评论内容不妥,则选中这个复选框。该评论将被一条\"此评论已经被删除\"的消息所"
-"替换。"
-
-#: models.py:80
-msgid "comments"
-msgstr "评论"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr "此评论由一位验证用户发表,因此该用户名是只读的。"
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr "此评论由一位验证用户发表,因此该 email 是只读的。"
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"由 %(user)s 在 %(date)s 张贴\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "标记"
-
-#: models.py:180
-msgid "date"
-msgstr "标记时间"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "评论标记"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "评论标记"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "批准评论"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "真的要公开该评论?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "批准"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "感谢批准"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "感谢花费时间改善本站点的讨论质量。"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "删除评论"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "真的要删除该评论?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "删除"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "感谢删除"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "标记该评论"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "确定要标记该评论?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "标记"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "感谢标记"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "发表"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "预览"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "感谢评论"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "感谢您的评论"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "预览您的评论"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "请修正如下错误"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "请改正下列错误"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "发表您的评论"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "或进行修改"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/zh_TW/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/comments/locale/zh_TW/LC_MESSAGES/django.mo
deleted file mode 100644
index ce0f6a4..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/zh_TW/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/comments/locale/zh_TW/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/comments/locale/zh_TW/LC_MESSAGES/django.po
deleted file mode 100644
index 8dceeb0..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/locale/zh_TW/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,291 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# tcc <tcchou@tcchou.org>, 2011
-# yyc1217 <yyc1217@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-25 14:19+0200\n"
-"PO-Revision-Date: 2013-07-31 01:29+0000\n"
-"Last-Translator: yyc1217 <yyc1217@gmail.com>\n"
-"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/"
-"language/zh_TW/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_TW\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:25
-msgid "Content"
-msgstr "內容"
-
-#: admin.py:28
-msgid "Metadata"
-msgstr "元資料"
-
-#: admin.py:55
-#, python-format
-msgid "%d comment was successfully flagged"
-msgid_plural "%d comments were successfully flagged"
-msgstr[0] "成功地標記了 %d 個評論。"
-
-#: admin.py:57
-msgid "Flag selected comments"
-msgstr "標記已選評論"
-
-#: admin.py:61
-#, python-format
-msgid "%d comment was successfully approved"
-msgid_plural "%d comments were successfully approved"
-msgstr[0] "成功地核可了 %d 個評論。"
-
-#: admin.py:63
-msgid "Approve selected comments"
-msgstr "核可已選評論"
-
-#: admin.py:67
-#, python-format
-msgid "%d comment was successfully removed"
-msgid_plural "%d comments were successfully removed"
-msgstr[0] "成功地刪除了 %d 個評論。"
-
-#: admin.py:69
-msgid "Remove selected comments"
-msgstr "移除已選評論"
-
-#: feeds.py:14
-#, python-format
-msgid "%(site_name)s comments"
-msgstr "%(site_name)s 評論"
-
-#: feeds.py:20
-#, python-format
-msgid "Latest comments on %(site_name)s"
-msgstr "最新評論在 %(site_name)s"
-
-#: forms.py:96
-msgid "Name"
-msgstr "名稱"
-
-#: forms.py:97
-msgid "Email address"
-msgstr "電子郵件地址"
-
-#: forms.py:98
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:99
-msgid "Comment"
-msgstr "評論"
-
-#: forms.py:177
-#, python-format
-msgid "Watch your mouth! The word %s is not allowed here."
-msgid_plural "Watch your mouth! The words %s are not allowed here."
-msgstr[0] "看住你的嘴!此處不允許 %s 這樣的字眼。"
-
-#: forms.py:181 templates/comments/preview.html:16
-msgid "and"
-msgstr "和"
-
-#: forms.py:186
-msgid ""
-"If you enter anything in this field your comment will be treated as spam"
-msgstr "如果你在這一個欄位輸入任何內容,會被視為是垃圾評論"
-
-#: models.py:23
-msgid "content type"
-msgstr "內容類型"
-
-#: models.py:25
-msgid "object ID"
-msgstr "物件 ID"
-
-#: models.py:53 models.py:177
-msgid "user"
-msgstr "使用者"
-
-#: models.py:55
-msgid "user's name"
-msgstr "使用者名稱"
-
-#: models.py:56
-msgid "user's email address"
-msgstr "使用者電子郵件"
-
-#: models.py:57
-msgid "user's URL"
-msgstr "使用者 URL"
-
-#: models.py:59 models.py:79 models.py:178
-msgid "comment"
-msgstr "評論"
-
-#: models.py:62
-msgid "date/time submitted"
-msgstr "日期/時間已送出"
-
-#: models.py:63
-msgid "IP address"
-msgstr "IP 位址"
-
-#: models.py:64
-msgid "is public"
-msgstr "公開"
-
-#: models.py:65
-msgid ""
-"Uncheck this box to make the comment effectively disappear from the site."
-msgstr "取消這個選項可讓評論立刻在網站消失。"
-
-#: models.py:67
-msgid "is removed"
-msgstr "已刪除"
-
-#: models.py:68
-msgid ""
-"Check this box if the comment is inappropriate. A \"This comment has been "
-"removed\" message will be displayed instead."
-msgstr "如果此評論不恰當則選取這個檢查框,其將以 \"此評論已被移除\" 訊息取代。"
-
-#: models.py:80
-msgid "comments"
-msgstr "評論"
-
-#: models.py:124
-msgid ""
-"This comment was posted by an authenticated user and thus the name is read-"
-"only."
-msgstr "這個評論由認證的使用者張貼, 因此名稱是唯讀的。"
-
-#: models.py:134
-msgid ""
-"This comment was posted by an authenticated user and thus the email is read-"
-"only."
-msgstr "這個評論由認證的使用者張貼, 因此名稱是唯讀的。"
-
-#: models.py:160
-#, python-format
-msgid ""
-"Posted by %(user)s at %(date)s\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-msgstr ""
-"由 %(user)s 在 %(date)s 張貼\n"
-"\n"
-"%(comment)s\n"
-"\n"
-"http://%(domain)s%(url)s"
-
-#: models.py:179
-msgid "flag"
-msgstr "標記"
-
-#: models.py:180
-msgid "date"
-msgstr "日期"
-
-#: models.py:190
-msgid "comment flag"
-msgstr "標記評論"
-
-#: models.py:191
-msgid "comment flags"
-msgstr "評論標記"
-
-#: templates/comments/approve.html:4
-msgid "Approve a comment"
-msgstr "核可評論"
-
-#: templates/comments/approve.html:7
-msgid "Really make this comment public?"
-msgstr "真的要讓這個評論公開?"
-
-#: templates/comments/approve.html:12
-msgid "Approve"
-msgstr "核可"
-
-#: templates/comments/approved.html:4
-msgid "Thanks for approving"
-msgstr "感謝進行審核"
-
-#: templates/comments/approved.html:7 templates/comments/deleted.html:7
-#: templates/comments/flagged.html:7
-msgid ""
-"Thanks for taking the time to improve the quality of discussion on our site"
-msgstr "感謝花費時間增進網站討論的品質"
-
-#: templates/comments/delete.html:4
-msgid "Remove a comment"
-msgstr "移除一個評論"
-
-#: templates/comments/delete.html:7
-msgid "Really remove this comment?"
-msgstr "真的要移除這個評論?"
-
-#: templates/comments/delete.html:12
-msgid "Remove"
-msgstr "移除"
-
-#: templates/comments/deleted.html:4
-msgid "Thanks for removing"
-msgstr "感謝移除"
-
-#: templates/comments/flag.html:4
-msgid "Flag this comment"
-msgstr "標記這個評論"
-
-#: templates/comments/flag.html:7
-msgid "Really flag this comment?"
-msgstr "真的要標記這個評論?"
-
-#: templates/comments/flag.html:12
-msgid "Flag"
-msgstr "標記"
-
-#: templates/comments/flagged.html:4
-msgid "Thanks for flagging"
-msgstr "感謝標記"
-
-#: templates/comments/form.html:17 templates/comments/preview.html:32
-msgid "Post"
-msgstr "張貼"
-
-#: templates/comments/form.html:18 templates/comments/preview.html:33
-msgid "Preview"
-msgstr "預覽"
-
-#: templates/comments/posted.html:4
-msgid "Thanks for commenting"
-msgstr "感謝寫下評論"
-
-#: templates/comments/posted.html:7
-msgid "Thank you for your comment"
-msgstr "謝謝你的評論"
-
-#: templates/comments/preview.html:4 templates/comments/preview.html.py:13
-msgid "Preview your comment"
-msgstr "預覽你的評論"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the error below"
-msgstr "請修正下面的錯誤"
-
-#: templates/comments/preview.html:11
-msgid "Please correct the errors below"
-msgstr "請修正下面的錯誤"
-
-#: templates/comments/preview.html:16
-msgid "Post your comment"
-msgstr "張貼你的評論"
-
-#: templates/comments/preview.html:16
-msgid "or make changes"
-msgstr "或進行變更"
diff --git a/lib/python2.7/site-packages/django/contrib/comments/managers.py b/lib/python2.7/site-packages/django/contrib/comments/managers.py
deleted file mode 100644
index 6562004..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/managers.py
+++ /dev/null
@@ -1,22 +0,0 @@
-from django.db import models
-from django.contrib.contenttypes.models import ContentType
-from django.utils.encoding import force_text
-
-class CommentManager(models.Manager):
-
- def in_moderation(self):
- """
- QuerySet for all comments currently in the moderation queue.
- """
- return self.get_queryset().filter(is_public=False, is_removed=False)
-
- def for_model(self, model):
- """
- QuerySet for all comments for a particular model (either an instance or
- a class).
- """
- ct = ContentType.objects.get_for_model(model)
- qs = self.get_queryset().filter(content_type=ct)
- if isinstance(model, models.Model):
- qs = qs.filter(object_pk=force_text(model._get_pk_val()))
- return qs
diff --git a/lib/python2.7/site-packages/django/contrib/comments/models.py b/lib/python2.7/site-packages/django/contrib/comments/models.py
deleted file mode 100644
index bc4d932..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/models.py
+++ /dev/null
@@ -1,200 +0,0 @@
-from django.conf import settings
-from django.contrib.comments.managers import CommentManager
-from django.contrib.contenttypes import generic
-from django.contrib.contenttypes.models import ContentType
-from django.contrib.sites.models import Site
-from django.core import urlresolvers
-from django.db import models
-from django.utils.translation import ugettext_lazy as _
-from django.utils import timezone
-from django.utils.encoding import python_2_unicode_compatible
-
-COMMENT_MAX_LENGTH = getattr(settings, 'COMMENT_MAX_LENGTH', 3000)
-
-
-class BaseCommentAbstractModel(models.Model):
- """
- An abstract base class that any custom comment models probably should
- subclass.
- """
-
- # Content-object field
- content_type = models.ForeignKey(ContentType,
- verbose_name=_('content type'),
- related_name="content_type_set_for_%(class)s")
- object_pk = models.TextField(_('object ID'))
- content_object = generic.GenericForeignKey(ct_field="content_type", fk_field="object_pk")
-
- # Metadata about the comment
- site = models.ForeignKey(Site)
-
- class Meta:
- abstract = True
-
- def get_content_object_url(self):
- """
- Get a URL suitable for redirecting to the content object.
- """
- return urlresolvers.reverse(
- "comments-url-redirect",
- args=(self.content_type_id, self.object_pk)
- )
-
-
-@python_2_unicode_compatible
-class Comment(BaseCommentAbstractModel):
- """
- A user comment about some object.
- """
-
- # Who posted this comment? If ``user`` is set then it was an authenticated
- # user; otherwise at least user_name should have been set and the comment
- # was posted by a non-authenticated user.
- user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('user'),
- blank=True, null=True, related_name="%(class)s_comments")
- user_name = models.CharField(_("user's name"), max_length=50, blank=True)
- user_email = models.EmailField(_("user's email address"), blank=True)
- user_url = models.URLField(_("user's URL"), blank=True)
-
- comment = models.TextField(_('comment'), max_length=COMMENT_MAX_LENGTH)
-
- # Metadata about the comment
- submit_date = models.DateTimeField(_('date/time submitted'), default=None)
- ip_address = models.GenericIPAddressField(_('IP address'), unpack_ipv4=True, blank=True, null=True)
- is_public = models.BooleanField(_('is public'), default=True,
- help_text=_('Uncheck this box to make the comment effectively ' \
- 'disappear from the site.'))
- is_removed = models.BooleanField(_('is removed'), default=False,
- help_text=_('Check this box if the comment is inappropriate. ' \
- 'A "This comment has been removed" message will ' \
- 'be displayed instead.'))
-
- # Manager
- objects = CommentManager()
-
- class Meta:
- db_table = "django_comments"
- ordering = ('submit_date',)
- permissions = [("can_moderate", "Can moderate comments")]
- verbose_name = _('comment')
- verbose_name_plural = _('comments')
-
- def __str__(self):
- return "%s: %s..." % (self.name, self.comment[:50])
-
- def save(self, *args, **kwargs):
- if self.submit_date is None:
- self.submit_date = timezone.now()
- super(Comment, self).save(*args, **kwargs)
-
- def _get_userinfo(self):
- """
- Get a dictionary that pulls together information about the poster
- safely for both authenticated and non-authenticated comments.
-
- This dict will have ``name``, ``email``, and ``url`` fields.
- """
- if not hasattr(self, "_userinfo"):
- userinfo = {
- "name": self.user_name,
- "email": self.user_email,
- "url": self.user_url
- }
- if self.user_id:
- u = self.user
- if u.email:
- userinfo["email"] = u.email
-
- # If the user has a full name, use that for the user name.
- # However, a given user_name overrides the raw user.username,
- # so only use that if this comment has no associated name.
- if u.get_full_name():
- userinfo["name"] = self.user.get_full_name()
- elif not self.user_name:
- userinfo["name"] = u.get_username()
- self._userinfo = userinfo
- return self._userinfo
- userinfo = property(_get_userinfo, doc=_get_userinfo.__doc__)
-
- def _get_name(self):
- return self.userinfo["name"]
-
- def _set_name(self, val):
- if self.user_id:
- raise AttributeError(_("This comment was posted by an authenticated "\
- "user and thus the name is read-only."))
- self.user_name = val
- name = property(_get_name, _set_name, doc="The name of the user who posted this comment")
-
- def _get_email(self):
- return self.userinfo["email"]
-
- def _set_email(self, val):
- if self.user_id:
- raise AttributeError(_("This comment was posted by an authenticated "\
- "user and thus the email is read-only."))
- self.user_email = val
- email = property(_get_email, _set_email, doc="The email of the user who posted this comment")
-
- def _get_url(self):
- return self.userinfo["url"]
-
- def _set_url(self, val):
- self.user_url = val
- url = property(_get_url, _set_url, doc="The URL given by the user who posted this comment")
-
- def get_absolute_url(self, anchor_pattern="#c%(id)s"):
- return self.get_content_object_url() + (anchor_pattern % self.__dict__)
-
- def get_as_text(self):
- """
- Return this comment as plain text. Useful for emails.
- """
- d = {
- 'user': self.user or self.name,
- 'date': self.submit_date,
- 'comment': self.comment,
- 'domain': self.site.domain,
- 'url': self.get_absolute_url()
- }
- return _('Posted by %(user)s at %(date)s\n\n%(comment)s\n\nhttp://%(domain)s%(url)s') % d
-
-
-@python_2_unicode_compatible
-class CommentFlag(models.Model):
- """
- Records a flag on a comment. This is intentionally flexible; right now, a
- flag could be:
-
- * A "removal suggestion" -- where a user suggests a comment for (potential) removal.
-
- * A "moderator deletion" -- used when a moderator deletes a comment.
-
- You can (ab)use this model to add other flags, if needed. However, by
- design users are only allowed to flag a comment with a given flag once;
- if you want rating look elsewhere.
- """
- user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=_('user'), related_name="comment_flags")
- comment = models.ForeignKey(Comment, verbose_name=_('comment'), related_name="flags")
- flag = models.CharField(_('flag'), max_length=30, db_index=True)
- flag_date = models.DateTimeField(_('date'), default=None)
-
- # Constants for flag types
- SUGGEST_REMOVAL = "removal suggestion"
- MODERATOR_DELETION = "moderator deletion"
- MODERATOR_APPROVAL = "moderator approval"
-
- class Meta:
- db_table = 'django_comment_flags'
- unique_together = [('user', 'comment', 'flag')]
- verbose_name = _('comment flag')
- verbose_name_plural = _('comment flags')
-
- def __str__(self):
- return "%s flag of comment ID %s by %s" % \
- (self.flag, self.comment_id, self.user.get_username())
-
- def save(self, *args, **kwargs):
- if self.flag_date is None:
- self.flag_date = timezone.now()
- super(CommentFlag, self).save(*args, **kwargs)
diff --git a/lib/python2.7/site-packages/django/contrib/comments/moderation.py b/lib/python2.7/site-packages/django/contrib/comments/moderation.py
deleted file mode 100644
index 6648aeb..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/moderation.py
+++ /dev/null
@@ -1,356 +0,0 @@
-"""
-A generic comment-moderation system which allows configuration of
-moderation options on a per-model basis.
-
-To use, do two things:
-
-1. Create or import a subclass of ``CommentModerator`` defining the
- options you want.
-
-2. Import ``moderator`` from this module and register one or more
- models, passing the models and the ``CommentModerator`` options
- class you want to use.
-
-
-Example
--------
-
-First, we define a simple model class which might represent entries in
-a Weblog::
-
- from django.db import models
-
- class Entry(models.Model):
- title = models.CharField(maxlength=250)
- body = models.TextField()
- pub_date = models.DateField()
- enable_comments = models.BooleanField()
-
-Then we create a ``CommentModerator`` subclass specifying some
-moderation options::
-
- from django.contrib.comments.moderation import CommentModerator, moderator
-
- class EntryModerator(CommentModerator):
- email_notification = True
- enable_field = 'enable_comments'
-
-And finally register it for moderation::
-
- moderator.register(Entry, EntryModerator)
-
-This sample class would apply two moderation steps to each new
-comment submitted on an Entry:
-
-* If the entry's ``enable_comments`` field is set to ``False``, the
- comment will be rejected (immediately deleted).
-
-* If the comment is successfully posted, an email notification of the
- comment will be sent to site staff.
-
-For a full list of built-in moderation options and other
-configurability, see the documentation for the ``CommentModerator``
-class.
-
-"""
-
-import datetime
-
-from django.conf import settings
-from django.core.mail import send_mail
-from django.contrib.comments import signals
-from django.db.models.base import ModelBase
-from django.template import Context, loader
-from django.contrib import comments
-from django.contrib.sites.models import get_current_site
-from django.utils import timezone
-
-class AlreadyModerated(Exception):
- """
- Raised when a model which is already registered for moderation is
- attempting to be registered again.
-
- """
- pass
-
-class NotModerated(Exception):
- """
- Raised when a model which is not registered for moderation is
- attempting to be unregistered.
-
- """
- pass
-
-class CommentModerator(object):
- """
- Encapsulates comment-moderation options for a given model.
-
- This class is not designed to be used directly, since it doesn't
- enable any of the available moderation options. Instead, subclass
- it and override attributes to enable different options::
-
- ``auto_close_field``
- If this is set to the name of a ``DateField`` or
- ``DateTimeField`` on the model for which comments are
- being moderated, new comments for objects of that model
- will be disallowed (immediately deleted) when a certain
- number of days have passed after the date specified in
- that field. Must be used in conjunction with
- ``close_after``, which specifies the number of days past
- which comments should be disallowed. Default value is
- ``None``.
-
- ``auto_moderate_field``
- Like ``auto_close_field``, but instead of outright
- deleting new comments when the requisite number of days
- have elapsed, it will simply set the ``is_public`` field
- of new comments to ``False`` before saving them. Must be
- used in conjunction with ``moderate_after``, which
- specifies the number of days past which comments should be
- moderated. Default value is ``None``.
-
- ``close_after``
- If ``auto_close_field`` is used, this must specify the
- number of days past the value of the field specified by
- ``auto_close_field`` after which new comments for an
- object should be disallowed. Default value is ``None``.
-
- ``email_notification``
- If ``True``, any new comment on an object of this model
- which survives moderation will generate an email to site
- staff. Default value is ``False``.
-
- ``enable_field``
- If this is set to the name of a ``BooleanField`` on the
- model for which comments are being moderated, new comments
- on objects of that model will be disallowed (immediately
- deleted) whenever the value of that field is ``False`` on
- the object the comment would be attached to. Default value
- is ``None``.
-
- ``moderate_after``
- If ``auto_moderate_field`` is used, this must specify the number
- of days past the value of the field specified by
- ``auto_moderate_field`` after which new comments for an
- object should be marked non-public. Default value is
- ``None``.
-
- Most common moderation needs can be covered by changing these
- attributes, but further customization can be obtained by
- subclassing and overriding the following methods. Each method will
- be called with three arguments: ``comment``, which is the comment
- being submitted, ``content_object``, which is the object the
- comment will be attached to, and ``request``, which is the
- ``HttpRequest`` in which the comment is being submitted::
-
- ``allow``
- Should return ``True`` if the comment should be allowed to
- post on the content object, and ``False`` otherwise (in
- which case the comment will be immediately deleted).
-
- ``email``
- If email notification of the new comment should be sent to
- site staff or moderators, this method is responsible for
- sending the email.
-
- ``moderate``
- Should return ``True`` if the comment should be moderated
- (in which case its ``is_public`` field will be set to
- ``False`` before saving), and ``False`` otherwise (in
- which case the ``is_public`` field will not be changed).
-
- Subclasses which want to introspect the model for which comments
- are being moderated can do so through the attribute ``_model``,
- which will be the model class.
-
- """
- auto_close_field = None
- auto_moderate_field = None
- close_after = None
- email_notification = False
- enable_field = None
- moderate_after = None
-
- def __init__(self, model):
- self._model = model
-
- def _get_delta(self, now, then):
- """
- Internal helper which will return a ``datetime.timedelta``
- representing the time between ``now`` and ``then``. Assumes
- ``now`` is a ``datetime.date`` or ``datetime.datetime`` later
- than ``then``.
-
- If ``now`` and ``then`` are not of the same type due to one of
- them being a ``datetime.date`` and the other being a
- ``datetime.datetime``, both will be coerced to
- ``datetime.date`` before calculating the delta.
-
- """
- if now.__class__ is not then.__class__:
- now = datetime.date(now.year, now.month, now.day)
- then = datetime.date(then.year, then.month, then.day)
- if now < then:
- raise ValueError("Cannot determine moderation rules because date field is set to a value in the future")
- return now - then
-
- def allow(self, comment, content_object, request):
- """
- Determine whether a given comment is allowed to be posted on
- a given object.
-
- Return ``True`` if the comment should be allowed, ``False
- otherwise.
-
- """
- if self.enable_field:
- if not getattr(content_object, self.enable_field):
- return False
- if self.auto_close_field and self.close_after is not None:
- close_after_date = getattr(content_object, self.auto_close_field)
- if close_after_date is not None and self._get_delta(timezone.now(), close_after_date).days >= self.close_after:
- return False
- return True
-
- def moderate(self, comment, content_object, request):
- """
- Determine whether a given comment on a given object should be
- allowed to show up immediately, or should be marked non-public
- and await approval.
-
- Return ``True`` if the comment should be moderated (marked
- non-public), ``False`` otherwise.
-
- """
- if self.auto_moderate_field and self.moderate_after is not None:
- moderate_after_date = getattr(content_object, self.auto_moderate_field)
- if moderate_after_date is not None and self._get_delta(timezone.now(), moderate_after_date).days >= self.moderate_after:
- return True
- return False
-
- def email(self, comment, content_object, request):
- """
- Send email notification of a new comment to site staff when email
- notifications have been requested.
-
- """
- if not self.email_notification:
- return
- recipient_list = [manager_tuple[1] for manager_tuple in settings.MANAGERS]
- t = loader.get_template('comments/comment_notification_email.txt')
- c = Context({ 'comment': comment,
- 'content_object': content_object })
- subject = '[%s] New comment posted on "%s"' % (get_current_site(request).name,
- content_object)
- message = t.render(c)
- send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, recipient_list, fail_silently=True)
-
-class Moderator(object):
- """
- Handles moderation of a set of models.
-
- An instance of this class will maintain a list of one or more
- models registered for comment moderation, and their associated
- moderation classes, and apply moderation to all incoming comments.
-
- To register a model, obtain an instance of ``Moderator`` (this
- module exports one as ``moderator``), and call its ``register``
- method, passing the model class and a moderation class (which
- should be a subclass of ``CommentModerator``). Note that both of
- these should be the actual classes, not instances of the classes.
-
- To cease moderation for a model, call the ``unregister`` method,
- passing the model class.
-
- For convenience, both ``register`` and ``unregister`` can also
- accept a list of model classes in place of a single model; this
- allows easier registration of multiple models with the same
- ``CommentModerator`` class.
-
- The actual moderation is applied in two phases: one prior to
- saving a new comment, and the other immediately after saving. The
- pre-save moderation may mark a comment as non-public or mark it to
- be removed; the post-save moderation may delete a comment which
- was disallowed (there is currently no way to prevent the comment
- being saved once before removal) and, if the comment is still
- around, will send any notification emails the comment generated.
-
- """
- def __init__(self):
- self._registry = {}
- self.connect()
-
- def connect(self):
- """
- Hook up the moderation methods to pre- and post-save signals
- from the comment models.
-
- """
- signals.comment_will_be_posted.connect(self.pre_save_moderation, sender=comments.get_model())
- signals.comment_was_posted.connect(self.post_save_moderation, sender=comments.get_model())
-
- def register(self, model_or_iterable, moderation_class):
- """
- Register a model or a list of models for comment moderation,
- using a particular moderation class.
-
- Raise ``AlreadyModerated`` if any of the models are already
- registered.
-
- """
- if isinstance(model_or_iterable, ModelBase):
- model_or_iterable = [model_or_iterable]
- for model in model_or_iterable:
- if model in self._registry:
- raise AlreadyModerated("The model '%s' is already being moderated" % model._meta.model_name)
- self._registry[model] = moderation_class(model)
-
- def unregister(self, model_or_iterable):
- """
- Remove a model or a list of models from the list of models
- whose comments will be moderated.
-
- Raise ``NotModerated`` if any of the models are not currently
- registered for moderation.
-
- """
- if isinstance(model_or_iterable, ModelBase):
- model_or_iterable = [model_or_iterable]
- for model in model_or_iterable:
- if model not in self._registry:
- raise NotModerated("The model '%s' is not currently being moderated" % model._meta.model_name)
- del self._registry[model]
-
- def pre_save_moderation(self, sender, comment, request, **kwargs):
- """
- Apply any necessary pre-save moderation steps to new
- comments.
-
- """
- model = comment.content_type.model_class()
- if model not in self._registry:
- return
- content_object = comment.content_object
- moderation_class = self._registry[model]
-
- # Comment will be disallowed outright (HTTP 403 response)
- if not moderation_class.allow(comment, content_object, request):
- return False
-
- if moderation_class.moderate(comment, content_object, request):
- comment.is_public = False
-
- def post_save_moderation(self, sender, comment, request, **kwargs):
- """
- Apply any necessary post-save moderation steps to new
- comments.
-
- """
- model = comment.content_type.model_class()
- if model not in self._registry:
- return
- self._registry[model].email(comment, comment.content_object, request)
-
-# Import this instance in your own code to use in registering
-# your models for moderation.
-moderator = Moderator()
diff --git a/lib/python2.7/site-packages/django/contrib/comments/signals.py b/lib/python2.7/site-packages/django/contrib/comments/signals.py
deleted file mode 100644
index 079afaf..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/signals.py
+++ /dev/null
@@ -1,21 +0,0 @@
-"""
-Signals relating to comments.
-"""
-from django.dispatch import Signal
-
-# Sent just before a comment will be posted (after it's been approved and
-# moderated; this can be used to modify the comment (in place) with posting
-# details or other such actions. If any receiver returns False the comment will be
-# discarded and a 400 response. This signal is sent at more or less
-# the same time (just before, actually) as the Comment object's pre-save signal,
-# except that the HTTP request is sent along with this signal.
-comment_will_be_posted = Signal(providing_args=["comment", "request"])
-
-# Sent just after a comment was posted. See above for how this differs
-# from the Comment object's post-save signal.
-comment_was_posted = Signal(providing_args=["comment", "request"])
-
-# Sent after a comment was "flagged" in some way. Check the flag to see if this
-# was a user requesting removal of a comment, a moderator approving/removing a
-# comment, or some other custom user flag.
-comment_was_flagged = Signal(providing_args=["comment", "flag", "created", "request"])
diff --git a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/400-debug.html b/lib/python2.7/site-packages/django/contrib/comments/templates/comments/400-debug.html
deleted file mode 100644
index 0d2efaf..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/400-debug.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8" />
- <title>Comment post not allowed (400)</title>
- <meta name="robots" content="NONE,NOARCHIVE" />
- <style type="text/css">
- <![CDATA[
- html * { padding:0; margin:0; }
- body * { padding:10px 20px; }
- body * * { padding:0; }
- body { font:small sans-serif; background:#eee; }
- body>div { border-bottom:1px solid #ddd; }
- h1 { font-weight:normal; margin-bottom:.4em; }
- h1 span { font-size:60%; color:#666; font-weight:normal; }
- table { border:none; border-collapse: collapse; width:100%; }
- td, th { vertical-align:top; padding:2px 3px; }
- th { width:12em; text-align:right; color:#666; padding-right:.5em; }
- #info { background:#f6f6f6; }
- #info ol { margin: 0.5em 4em; }
- #info ol li { font-family: monospace; }
- #summary { background: #ffc; }
- #explanation { background:#eee; border-bottom: 0px none; }
- ]]>
- </style>
-</head>
-<body>
- <div id="summary">
- <h1>Comment post not allowed <span>(400)</span></h1>
- <table class="meta">
- <tr>
- <th>Why:</th>
- <td>{{ why }}</td>
- </tr>
- </table>
- </div>
- <div id="info">
- <p>
- The comment you tried to post to this view wasn't saved because something
- tampered with the security information in the comment form. The message
- above should explain the problem, or you can check the <a
- href="http://docs.djangoproject.com/en/dev/ref/contrib/comments/">comment
- documentation</a> for more help.
- </p>
- </div>
-
- <div id="explanation">
- <p>
- You're seeing this error because you have <code>DEBUG = True</code> in
- your Django settings file. Change that to <code>False</code>, and Django
- will display a standard 400 error page.
- </p>
- </div>
-</body>
-</html>
diff --git a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/approve.html b/lib/python2.7/site-packages/django/contrib/comments/templates/comments/approve.html
deleted file mode 100644
index 78d15db..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/approve.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends "comments/base.html" %}
-{% load i18n %}
-
-{% block title %}{% trans "Approve a comment" %}{% endblock %}
-
-{% block content %}
- <h1>{% trans "Really make this comment public?" %}</h1>
- <blockquote>{{ comment|linebreaks }}</blockquote>
- <form action="." method="post">{% csrf_token %}
- {% if next %}<div><input type="hidden" name="next" value="{{ next }}" id="next" /></div>{% endif %}
- <p class="submit">
- <input type="submit" name="submit" value="{% trans "Approve" %}" /> or <a href="{{ comment.get_absolute_url }}">cancel</a>
- </p>
- </form>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/approved.html b/lib/python2.7/site-packages/django/contrib/comments/templates/comments/approved.html
deleted file mode 100644
index d4ba245..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/approved.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% extends "comments/base.html" %}
-{% load i18n %}
-
-{% block title %}{% trans "Thanks for approving" %}.{% endblock %}
-
-{% block content %}
- <h1>{% trans "Thanks for taking the time to improve the quality of discussion on our site" %}.</h1>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/base.html b/lib/python2.7/site-packages/django/contrib/comments/templates/comments/base.html
deleted file mode 100644
index 9828ff6..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/base.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>{% block title %}{% endblock %}</title>
-</head>
-<body>
- {% block content %}{% endblock %}
-</body>
-</html>
diff --git a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/delete.html b/lib/python2.7/site-packages/django/contrib/comments/templates/comments/delete.html
deleted file mode 100644
index 50c9a4d..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/delete.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends "comments/base.html" %}
-{% load i18n %}
-
-{% block title %}{% trans "Remove a comment" %}{% endblock %}
-
-{% block content %}
-<h1>{% trans "Really remove this comment?" %}</h1>
- <blockquote>{{ comment|linebreaks }}</blockquote>
- <form action="." method="post">{% csrf_token %}
- {% if next %}<div><input type="hidden" name="next" value="{{ next }}" id="next" /></div>{% endif %}
- <p class="submit">
- <input type="submit" name="submit" value="{% trans "Remove" %}" /> or <a href="{{ comment.get_absolute_url }}">cancel</a>
- </p>
- </form>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/deleted.html b/lib/python2.7/site-packages/django/contrib/comments/templates/comments/deleted.html
deleted file mode 100644
index e608481..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/deleted.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% extends "comments/base.html" %}
-{% load i18n %}
-
-{% block title %}{% trans "Thanks for removing" %}.{% endblock %}
-
-{% block content %}
- <h1>{% trans "Thanks for taking the time to improve the quality of discussion on our site" %}.</h1>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/flag.html b/lib/python2.7/site-packages/django/contrib/comments/templates/comments/flag.html
deleted file mode 100644
index ca7c77f..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/flag.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends "comments/base.html" %}
-{% load i18n %}
-
-{% block title %}{% trans "Flag this comment" %}{% endblock %}
-
-{% block content %}
-<h1>{% trans "Really flag this comment?" %}</h1>
- <blockquote>{{ comment|linebreaks }}</blockquote>
- <form action="." method="post">{% csrf_token %}
- {% if next %}<div><input type="hidden" name="next" value="{{ next }}" id="next" /></div>{% endif %}
- <p class="submit">
- <input type="submit" name="submit" value="{% trans "Flag" %}" /> or <a href="{{ comment.get_absolute_url }}">cancel</a>
- </p>
- </form>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/flagged.html b/lib/python2.7/site-packages/django/contrib/comments/templates/comments/flagged.html
deleted file mode 100644
index e558019..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/flagged.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% extends "comments/base.html" %}
-{% load i18n %}
-
-{% block title %}{% trans "Thanks for flagging" %}.{% endblock %}
-
-{% block content %}
- <h1>{% trans "Thanks for taking the time to improve the quality of discussion on our site" %}.</h1>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/form.html b/lib/python2.7/site-packages/django/contrib/comments/templates/comments/form.html
deleted file mode 100644
index 2a9ad55..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/form.html
+++ /dev/null
@@ -1,20 +0,0 @@
-{% load comments i18n %}
-<form action="{% comment_form_target %}" method="post">{% csrf_token %}
- {% if next %}<div><input type="hidden" name="next" value="{{ next }}" /></div>{% endif %}
- {% for field in form %}
- {% if field.is_hidden %}
- <div>{{ field }}</div>
- {% else %}
- {% if field.errors %}{{ field.errors }}{% endif %}
- <p
- {% if field.errors %} class="error"{% endif %}
- {% ifequal field.name "honeypot" %} style="display:none;"{% endifequal %}>
- {{ field.label_tag }} {{ field }}
- </p>
- {% endif %}
- {% endfor %}
- <p class="submit">
- <input type="submit" name="post" class="submit-post" value="{% trans "Post" %}" />
- <input type="submit" name="preview" class="submit-preview" value="{% trans "Preview" %}" />
- </p>
-</form>
diff --git a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/list.html b/lib/python2.7/site-packages/django/contrib/comments/templates/comments/list.html
deleted file mode 100644
index 3d4ec1e..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/list.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<dl id="comments">
- {% for comment in comment_list %}
- <dt id="c{{ comment.id }}">
- {{ comment.submit_date }} - {{ comment.name }}
- </dt>
- <dd>
- <p>{{ comment.comment }}</p>
- </dd>
- {% endfor %}
-</dl>
diff --git a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/posted.html b/lib/python2.7/site-packages/django/contrib/comments/templates/comments/posted.html
deleted file mode 100644
index 76f7f6d..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/posted.html
+++ /dev/null
@@ -1,8 +0,0 @@
-{% extends "comments/base.html" %}
-{% load i18n %}
-
-{% block title %}{% trans "Thanks for commenting" %}.{% endblock %}
-
-{% block content %}
- <h1>{% trans "Thank you for your comment" %}.</h1>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/preview.html b/lib/python2.7/site-packages/django/contrib/comments/templates/comments/preview.html
deleted file mode 100644
index 0e70567..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/templates/comments/preview.html
+++ /dev/null
@@ -1,36 +0,0 @@
-{% extends "comments/base.html" %}
-{% load i18n %}
-
-{% block title %}{% trans "Preview your comment" %}{% endblock %}
-
-{% block content %}
- {% load comments %}
- <form action="{% comment_form_target %}" method="post">{% csrf_token %}
- {% if next %}<div><input type="hidden" name="next" value="{{ next }}" /></div>{% endif %}
- {% if form.errors %}
- <h1>{% if form.errors|length == 1 %}{% trans "Please correct the error below" %}{% else %}{% trans "Please correct the errors below" %}{% endif %}</h1>
- {% else %}
- <h1>{% trans "Preview your comment" %}</h1>
- <blockquote>{{ comment|linebreaks }}</blockquote>
- <p>
- {% trans "and" %} <input type="submit" name="submit" class="submit-post" value="{% trans "Post your comment" %}" id="submit" /> {% trans "or make changes" %}:
- </p>
- {% endif %}
- {% for field in form %}
- {% if field.is_hidden %}
- <div>{{ field }}</div>
- {% else %}
- {% if field.errors %}{{ field.errors }}{% endif %}
- <p
- {% if field.errors %} class="error"{% endif %}
- {% ifequal field.name "honeypot" %} style="display:none;"{% endifequal %}>
- {{ field.label_tag }} {{ field }}
- </p>
- {% endif %}
- {% endfor %}
- <p class="submit">
- <input type="submit" name="submit" class="submit-post" value="{% trans "Post" %}" />
- <input type="submit" name="preview" class="submit-preview" value="{% trans "Preview" %}" />
- </p>
- </form>
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/comments/templatetags/__init__.py b/lib/python2.7/site-packages/django/contrib/comments/templatetags/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/templatetags/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/comments/templatetags/comments.py b/lib/python2.7/site-packages/django/contrib/comments/templatetags/comments.py
deleted file mode 100644
index d8eed76..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/templatetags/comments.py
+++ /dev/null
@@ -1,341 +0,0 @@
-from django import template
-from django.template.loader import render_to_string
-from django.conf import settings
-from django.contrib.contenttypes.models import ContentType
-from django.contrib import comments
-from django.utils import six
-from django.utils.deprecation import RenameMethodsBase
-from django.utils.encoding import smart_text
-
-register = template.Library()
-
-
-class RenameBaseCommentNodeMethods(RenameMethodsBase):
- renamed_methods = (
- ('get_query_set', 'get_queryset', PendingDeprecationWarning),
- )
-
-
-class BaseCommentNode(six.with_metaclass(RenameBaseCommentNodeMethods, template.Node)):
- """
- Base helper class (abstract) for handling the get_comment_* template tags.
- Looks a bit strange, but the subclasses below should make this a bit more
- obvious.
- """
-
- @classmethod
- def handle_token(cls, parser, token):
- """Class method to parse get_comment_list/count/form and return a Node."""
- tokens = token.split_contents()
- if tokens[1] != 'for':
- raise template.TemplateSyntaxError("Second argument in %r tag must be 'for'" % tokens[0])
-
- # {% get_whatever for obj as varname %}
- if len(tokens) == 5:
- if tokens[3] != 'as':
- raise template.TemplateSyntaxError("Third argument in %r must be 'as'" % tokens[0])
- return cls(
- object_expr = parser.compile_filter(tokens[2]),
- as_varname = tokens[4],
- )
-
- # {% get_whatever for app.model pk as varname %}
- elif len(tokens) == 6:
- if tokens[4] != 'as':
- raise template.TemplateSyntaxError("Fourth argument in %r must be 'as'" % tokens[0])
- return cls(
- ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]),
- object_pk_expr = parser.compile_filter(tokens[3]),
- as_varname = tokens[5]
- )
-
- else:
- raise template.TemplateSyntaxError("%r tag requires 4 or 5 arguments" % tokens[0])
-
- @staticmethod
- def lookup_content_type(token, tagname):
- try:
- app, model = token.split('.')
- return ContentType.objects.get_by_natural_key(app, model)
- except ValueError:
- raise template.TemplateSyntaxError("Third argument in %r must be in the format 'app.model'" % tagname)
- except ContentType.DoesNotExist:
- raise template.TemplateSyntaxError("%r tag has non-existant content-type: '%s.%s'" % (tagname, app, model))
-
- def __init__(self, ctype=None, object_pk_expr=None, object_expr=None, as_varname=None, comment=None):
- if ctype is None and object_expr is None:
- raise template.TemplateSyntaxError("Comment nodes must be given either a literal object or a ctype and object pk.")
- self.comment_model = comments.get_model()
- self.as_varname = as_varname
- self.ctype = ctype
- self.object_pk_expr = object_pk_expr
- self.object_expr = object_expr
- self.comment = comment
-
- def render(self, context):
- qs = self.get_queryset(context)
- context[self.as_varname] = self.get_context_value_from_queryset(context, qs)
- return ''
-
- def get_queryset(self, context):
- ctype, object_pk = self.get_target_ctype_pk(context)
- if not object_pk:
- return self.comment_model.objects.none()
-
- qs = self.comment_model.objects.filter(
- content_type = ctype,
- object_pk = smart_text(object_pk),
- site__pk = settings.SITE_ID,
- )
-
- # The is_public and is_removed fields are implementation details of the
- # built-in comment model's spam filtering system, so they might not
- # be present on a custom comment model subclass. If they exist, we
- # should filter on them.
- field_names = [f.name for f in self.comment_model._meta.fields]
- if 'is_public' in field_names:
- qs = qs.filter(is_public=True)
- if getattr(settings, 'COMMENTS_HIDE_REMOVED', True) and 'is_removed' in field_names:
- qs = qs.filter(is_removed=False)
-
- return qs
-
- def get_target_ctype_pk(self, context):
- if self.object_expr:
- try:
- obj = self.object_expr.resolve(context)
- except template.VariableDoesNotExist:
- return None, None
- return ContentType.objects.get_for_model(obj), obj.pk
- else:
- return self.ctype, self.object_pk_expr.resolve(context, ignore_failures=True)
-
- def get_context_value_from_queryset(self, context, qs):
- """Subclasses should override this."""
- raise NotImplementedError
-
-class CommentListNode(BaseCommentNode):
- """Insert a list of comments into the context."""
- def get_context_value_from_queryset(self, context, qs):
- return list(qs)
-
-class CommentCountNode(BaseCommentNode):
- """Insert a count of comments into the context."""
- def get_context_value_from_queryset(self, context, qs):
- return qs.count()
-
-class CommentFormNode(BaseCommentNode):
- """Insert a form for the comment model into the context."""
-
- def get_form(self, context):
- obj = self.get_object(context)
- if obj:
- return comments.get_form()(obj)
- else:
- return None
-
- def get_object(self, context):
- if self.object_expr:
- try:
- return self.object_expr.resolve(context)
- except template.VariableDoesNotExist:
- return None
- else:
- object_pk = self.object_pk_expr.resolve(context,
- ignore_failures=True)
- return self.ctype.get_object_for_this_type(pk=object_pk)
-
- def render(self, context):
- context[self.as_varname] = self.get_form(context)
- return ''
-
-class RenderCommentFormNode(CommentFormNode):
- """Render the comment form directly"""
-
- @classmethod
- def handle_token(cls, parser, token):
- """Class method to parse render_comment_form and return a Node."""
- tokens = token.split_contents()
- if tokens[1] != 'for':
- raise template.TemplateSyntaxError("Second argument in %r tag must be 'for'" % tokens[0])
-
- # {% render_comment_form for obj %}
- if len(tokens) == 3:
- return cls(object_expr=parser.compile_filter(tokens[2]))
-
- # {% render_comment_form for app.models pk %}
- elif len(tokens) == 4:
- return cls(
- ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]),
- object_pk_expr = parser.compile_filter(tokens[3])
- )
-
- def render(self, context):
- ctype, object_pk = self.get_target_ctype_pk(context)
- if object_pk:
- template_search_list = [
- "comments/%s/%s/form.html" % (ctype.app_label, ctype.model),
- "comments/%s/form.html" % ctype.app_label,
- "comments/form.html"
- ]
- context.push()
- formstr = render_to_string(template_search_list, {"form" : self.get_form(context)}, context)
- context.pop()
- return formstr
- else:
- return ''
-
-class RenderCommentListNode(CommentListNode):
- """Render the comment list directly"""
-
- @classmethod
- def handle_token(cls, parser, token):
- """Class method to parse render_comment_list and return a Node."""
- tokens = token.split_contents()
- if tokens[1] != 'for':
- raise template.TemplateSyntaxError("Second argument in %r tag must be 'for'" % tokens[0])
-
- # {% render_comment_list for obj %}
- if len(tokens) == 3:
- return cls(object_expr=parser.compile_filter(tokens[2]))
-
- # {% render_comment_list for app.models pk %}
- elif len(tokens) == 4:
- return cls(
- ctype = BaseCommentNode.lookup_content_type(tokens[2], tokens[0]),
- object_pk_expr = parser.compile_filter(tokens[3])
- )
-
- def render(self, context):
- ctype, object_pk = self.get_target_ctype_pk(context)
- if object_pk:
- template_search_list = [
- "comments/%s/%s/list.html" % (ctype.app_label, ctype.model),
- "comments/%s/list.html" % ctype.app_label,
- "comments/list.html"
- ]
- qs = self.get_queryset(context)
- context.push()
- liststr = render_to_string(template_search_list, {
- "comment_list" : self.get_context_value_from_queryset(context, qs)
- }, context)
- context.pop()
- return liststr
- else:
- return ''
-
-# We could just register each classmethod directly, but then we'd lose out on
-# the automagic docstrings-into-admin-docs tricks. So each node gets a cute
-# wrapper function that just exists to hold the docstring.
-
-@register.tag
-def get_comment_count(parser, token):
- """
- Gets the comment count for the given params and populates the template
- context with a variable containing that value, whose name is defined by the
- 'as' clause.
-
- Syntax::
-
- {% get_comment_count for [object] as [varname] %}
- {% get_comment_count for [app].[model] [object_id] as [varname] %}
-
- Example usage::
-
- {% get_comment_count for event as comment_count %}
- {% get_comment_count for calendar.event event.id as comment_count %}
- {% get_comment_count for calendar.event 17 as comment_count %}
-
- """
- return CommentCountNode.handle_token(parser, token)
-
-@register.tag
-def get_comment_list(parser, token):
- """
- Gets the list of comments for the given params and populates the template
- context with a variable containing that value, whose name is defined by the
- 'as' clause.
-
- Syntax::
-
- {% get_comment_list for [object] as [varname] %}
- {% get_comment_list for [app].[model] [object_id] as [varname] %}
-
- Example usage::
-
- {% get_comment_list for event as comment_list %}
- {% for comment in comment_list %}
- ...
- {% endfor %}
-
- """
- return CommentListNode.handle_token(parser, token)
-
-@register.tag
-def render_comment_list(parser, token):
- """
- Render the comment list (as returned by ``{% get_comment_list %}``)
- through the ``comments/list.html`` template
-
- Syntax::
-
- {% render_comment_list for [object] %}
- {% render_comment_list for [app].[model] [object_id] %}
-
- Example usage::
-
- {% render_comment_list for event %}
-
- """
- return RenderCommentListNode.handle_token(parser, token)
-
-@register.tag
-def get_comment_form(parser, token):
- """
- Get a (new) form object to post a new comment.
-
- Syntax::
-
- {% get_comment_form for [object] as [varname] %}
- {% get_comment_form for [app].[model] [object_id] as [varname] %}
- """
- return CommentFormNode.handle_token(parser, token)
-
-@register.tag
-def render_comment_form(parser, token):
- """
- Render the comment form (as returned by ``{% render_comment_form %}``) through
- the ``comments/form.html`` template.
-
- Syntax::
-
- {% render_comment_form for [object] %}
- {% render_comment_form for [app].[model] [object_id] %}
- """
- return RenderCommentFormNode.handle_token(parser, token)
-
-@register.simple_tag
-def comment_form_target():
- """
- Get the target URL for the comment form.
-
- Example::
-
- <form action="{% comment_form_target %}" method="post">
- """
- return comments.get_form_target()
-
-@register.simple_tag
-def get_comment_permalink(comment, anchor_pattern=None):
- """
- Get the permalink for a comment, optionally specifying the format of the
- named anchor to be appended to the end of the URL.
-
- Example::
- {% get_comment_permalink comment "#c%(id)s-by-%(user_name)s" %}
- """
-
- if anchor_pattern:
- return comment.get_absolute_url(anchor_pattern)
- return comment.get_absolute_url()
-
diff --git a/lib/python2.7/site-packages/django/contrib/comments/urls.py b/lib/python2.7/site-packages/django/contrib/comments/urls.py
deleted file mode 100644
index 69a0222..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/urls.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from django.conf.urls import patterns, url
-
-urlpatterns = patterns('django.contrib.comments.views',
- url(r'^post/$', 'comments.post_comment', name='comments-post-comment'),
- url(r'^posted/$', 'comments.comment_done', name='comments-comment-done'),
- url(r'^flag/(\d+)/$', 'moderation.flag', name='comments-flag'),
- url(r'^flagged/$', 'moderation.flag_done', name='comments-flag-done'),
- url(r'^delete/(\d+)/$', 'moderation.delete', name='comments-delete'),
- url(r'^deleted/$', 'moderation.delete_done', name='comments-delete-done'),
- url(r'^approve/(\d+)/$', 'moderation.approve', name='comments-approve'),
- url(r'^approved/$', 'moderation.approve_done', name='comments-approve-done'),
-)
-
-urlpatterns += patterns('',
- url(r'^cr/(\d+)/(.+)/$', 'django.contrib.contenttypes.views.shortcut', name='comments-url-redirect'),
-)
diff --git a/lib/python2.7/site-packages/django/contrib/comments/views/__init__.py b/lib/python2.7/site-packages/django/contrib/comments/views/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/views/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/comments/views/comments.py b/lib/python2.7/site-packages/django/contrib/comments/views/comments.py
deleted file mode 100644
index befd326..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/views/comments.py
+++ /dev/null
@@ -1,137 +0,0 @@
-from __future__ import absolute_import
-
-from django import http
-from django.conf import settings
-from django.contrib import comments
-from django.contrib.comments import signals
-from django.contrib.comments.views.utils import next_redirect, confirmation_view
-from django.core.exceptions import ObjectDoesNotExist, ValidationError
-from django.db import models
-from django.shortcuts import render_to_response
-from django.template import RequestContext
-from django.template.loader import render_to_string
-from django.utils.html import escape
-from django.views.decorators.csrf import csrf_protect
-from django.views.decorators.http import require_POST
-
-
-class CommentPostBadRequest(http.HttpResponseBadRequest):
- """
- Response returned when a comment post is invalid. If ``DEBUG`` is on a
- nice-ish error message will be displayed (for debugging purposes), but in
- production mode a simple opaque 400 page will be displayed.
- """
- def __init__(self, why):
- super(CommentPostBadRequest, self).__init__()
- if settings.DEBUG:
- self.content = render_to_string("comments/400-debug.html", {"why": why})
-
-
-@csrf_protect
-@require_POST
-def post_comment(request, next=None, using=None):
- """
- Post a comment.
-
- HTTP POST is required. If ``POST['submit'] == "preview"`` or if there are
- errors a preview template, ``comments/preview.html``, will be rendered.
- """
- # Fill out some initial data fields from an authenticated user, if present
- data = request.POST.copy()
- if request.user.is_authenticated():
- if not data.get('name', ''):
- data["name"] = request.user.get_full_name() or request.user.get_username()
- if not data.get('email', ''):
- data["email"] = request.user.email
-
- # Look up the object we're trying to comment about
- ctype = data.get("content_type")
- object_pk = data.get("object_pk")
- if ctype is None or object_pk is None:
- return CommentPostBadRequest("Missing content_type or object_pk field.")
- try:
- model = models.get_model(*ctype.split(".", 1))
- target = model._default_manager.using(using).get(pk=object_pk)
- except TypeError:
- return CommentPostBadRequest(
- "Invalid content_type value: %r" % escape(ctype))
- except AttributeError:
- return CommentPostBadRequest(
- "The given content-type %r does not resolve to a valid model." % \
- escape(ctype))
- except ObjectDoesNotExist:
- return CommentPostBadRequest(
- "No object matching content-type %r and object PK %r exists." % \
- (escape(ctype), escape(object_pk)))
- except (ValueError, ValidationError) as e:
- return CommentPostBadRequest(
- "Attempting go get content-type %r and object PK %r exists raised %s" % \
- (escape(ctype), escape(object_pk), e.__class__.__name__))
-
- # Do we want to preview the comment?
- preview = "preview" in data
-
- # Construct the comment form
- form = comments.get_form()(target, data=data)
-
- # Check security information
- if form.security_errors():
- return CommentPostBadRequest(
- "The comment form failed security verification: %s" % \
- escape(str(form.security_errors())))
-
- # If there are errors or if we requested a preview show the comment
- if form.errors or preview:
- template_list = [
- # These first two exist for purely historical reasons.
- # Django v1.0 and v1.1 allowed the underscore format for
- # preview templates, so we have to preserve that format.
- "comments/%s_%s_preview.html" % (model._meta.app_label, model._meta.model_name),
- "comments/%s_preview.html" % model._meta.app_label,
- # Now the usual directory based template hierarchy.
- "comments/%s/%s/preview.html" % (model._meta.app_label, model._meta.model_name),
- "comments/%s/preview.html" % model._meta.app_label,
- "comments/preview.html",
- ]
- return render_to_response(
- template_list, {
- "comment": form.data.get("comment", ""),
- "form": form,
- "next": data.get("next", next),
- },
- RequestContext(request, {})
- )
-
- # Otherwise create the comment
- comment = form.get_comment_object()
- comment.ip_address = request.META.get("REMOTE_ADDR", None)
- if request.user.is_authenticated():
- comment.user = request.user
-
- # Signal that the comment is about to be saved
- responses = signals.comment_will_be_posted.send(
- sender=comment.__class__,
- comment=comment,
- request=request
- )
-
- for (receiver, response) in responses:
- if response == False:
- return CommentPostBadRequest(
- "comment_will_be_posted receiver %r killed the comment" % receiver.__name__)
-
- # Save the comment and signal that it was saved
- comment.save()
- signals.comment_was_posted.send(
- sender=comment.__class__,
- comment=comment,
- request=request
- )
-
- return next_redirect(request, fallback=next or 'comments-comment-done',
- c=comment._get_pk_val())
-
-comment_done = confirmation_view(
- template="comments/posted.html",
- doc="""Display a "comment was posted" success page."""
-)
diff --git a/lib/python2.7/site-packages/django/contrib/comments/views/moderation.py b/lib/python2.7/site-packages/django/contrib/comments/views/moderation.py
deleted file mode 100644
index 31bb98f..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/views/moderation.py
+++ /dev/null
@@ -1,165 +0,0 @@
-from __future__ import absolute_import
-
-from django import template
-from django.conf import settings
-from django.contrib import comments
-from django.contrib.auth.decorators import login_required, permission_required
-from django.contrib.comments import signals
-from django.contrib.comments.views.utils import next_redirect, confirmation_view
-from django.shortcuts import get_object_or_404, render_to_response
-from django.views.decorators.csrf import csrf_protect
-
-
-@csrf_protect
-@login_required
-def flag(request, comment_id, next=None):
- """
- Flags a comment. Confirmation on GET, action on POST.
-
- Templates: :template:`comments/flag.html`,
- Context:
- comment
- the flagged `comments.comment` object
- """
- comment = get_object_or_404(comments.get_model(), pk=comment_id, site__pk=settings.SITE_ID)
-
- # Flag on POST
- if request.method == 'POST':
- perform_flag(request, comment)
- return next_redirect(request, fallback=next or 'comments-flag-done',
- c=comment.pk)
-
- # Render a form on GET
- else:
- return render_to_response('comments/flag.html',
- {'comment': comment, "next": next},
- template.RequestContext(request)
- )
-
-@csrf_protect
-@permission_required("comments.can_moderate")
-def delete(request, comment_id, next=None):
- """
- Deletes a comment. Confirmation on GET, action on POST. Requires the "can
- moderate comments" permission.
-
- Templates: :template:`comments/delete.html`,
- Context:
- comment
- the flagged `comments.comment` object
- """
- comment = get_object_or_404(comments.get_model(), pk=comment_id, site__pk=settings.SITE_ID)
-
- # Delete on POST
- if request.method == 'POST':
- # Flag the comment as deleted instead of actually deleting it.
- perform_delete(request, comment)
- return next_redirect(request, fallback=next or 'comments-delete-done',
- c=comment.pk)
-
- # Render a form on GET
- else:
- return render_to_response('comments/delete.html',
- {'comment': comment, "next": next},
- template.RequestContext(request)
- )
-
-@csrf_protect
-@permission_required("comments.can_moderate")
-def approve(request, comment_id, next=None):
- """
- Approve a comment (that is, mark it as public and non-removed). Confirmation
- on GET, action on POST. Requires the "can moderate comments" permission.
-
- Templates: :template:`comments/approve.html`,
- Context:
- comment
- the `comments.comment` object for approval
- """
- comment = get_object_or_404(comments.get_model(), pk=comment_id, site__pk=settings.SITE_ID)
-
- # Delete on POST
- if request.method == 'POST':
- # Flag the comment as approved.
- perform_approve(request, comment)
- return next_redirect(request, fallback=next or 'comments-approve-done',
- c=comment.pk)
-
- # Render a form on GET
- else:
- return render_to_response('comments/approve.html',
- {'comment': comment, "next": next},
- template.RequestContext(request)
- )
-
-# The following functions actually perform the various flag/aprove/delete
-# actions. They've been broken out into separate functions to that they
-# may be called from admin actions.
-
-def perform_flag(request, comment):
- """
- Actually perform the flagging of a comment from a request.
- """
- flag, created = comments.models.CommentFlag.objects.get_or_create(
- comment = comment,
- user = request.user,
- flag = comments.models.CommentFlag.SUGGEST_REMOVAL
- )
- signals.comment_was_flagged.send(
- sender = comment.__class__,
- comment = comment,
- flag = flag,
- created = created,
- request = request,
- )
-
-def perform_delete(request, comment):
- flag, created = comments.models.CommentFlag.objects.get_or_create(
- comment = comment,
- user = request.user,
- flag = comments.models.CommentFlag.MODERATOR_DELETION
- )
- comment.is_removed = True
- comment.save()
- signals.comment_was_flagged.send(
- sender = comment.__class__,
- comment = comment,
- flag = flag,
- created = created,
- request = request,
- )
-
-
-def perform_approve(request, comment):
- flag, created = comments.models.CommentFlag.objects.get_or_create(
- comment = comment,
- user = request.user,
- flag = comments.models.CommentFlag.MODERATOR_APPROVAL,
- )
-
- comment.is_removed = False
- comment.is_public = True
- comment.save()
-
- signals.comment_was_flagged.send(
- sender = comment.__class__,
- comment = comment,
- flag = flag,
- created = created,
- request = request,
- )
-
-# Confirmation views.
-
-flag_done = confirmation_view(
- template = "comments/flagged.html",
- doc = 'Displays a "comment was flagged" success page.'
-)
-delete_done = confirmation_view(
- template = "comments/deleted.html",
- doc = 'Displays a "comment was deleted" success page.'
-)
-approve_done = confirmation_view(
- template = "comments/approved.html",
- doc = 'Displays a "comment was approved" success page.'
-)
diff --git a/lib/python2.7/site-packages/django/contrib/comments/views/utils.py b/lib/python2.7/site-packages/django/contrib/comments/views/utils.py
deleted file mode 100644
index 3705b7e..0000000
--- a/lib/python2.7/site-packages/django/contrib/comments/views/utils.py
+++ /dev/null
@@ -1,67 +0,0 @@
-"""
-A few bits of helper functions for comment views.
-"""
-
-import textwrap
-
-from django.http import HttpResponseRedirect
-from django.shortcuts import render_to_response, resolve_url
-from django.template import RequestContext
-from django.core.exceptions import ObjectDoesNotExist
-from django.contrib import comments
-from django.utils.http import is_safe_url
-from django.utils.six.moves.urllib.parse import urlencode
-
-def next_redirect(request, fallback, **get_kwargs):
- """
- Handle the "where should I go next?" part of comment views.
-
- The next value could be a
- ``?next=...`` GET arg or the URL of a given view (``fallback``). See
- the view modules for examples.
-
- Returns an ``HttpResponseRedirect``.
- """
- next = request.POST.get('next')
- if not is_safe_url(url=next, host=request.get_host()):
- next = resolve_url(fallback)
-
- if get_kwargs:
- if '#' in next:
- tmp = next.rsplit('#', 1)
- next = tmp[0]
- anchor = '#' + tmp[1]
- else:
- anchor = ''
-
- joiner = '&' if '?' in next else '?'
- next += joiner + urlencode(get_kwargs) + anchor
- return HttpResponseRedirect(next)
-
-def confirmation_view(template, doc="Display a confirmation view."):
- """
- Confirmation view generator for the "comment was
- posted/flagged/deleted/approved" views.
- """
- def confirmed(request):
- comment = None
- if 'c' in request.GET:
- try:
- comment = comments.get_model().objects.get(pk=request.GET['c'])
- except (ObjectDoesNotExist, ValueError):
- pass
- return render_to_response(template,
- {'comment': comment},
- context_instance=RequestContext(request)
- )
-
- confirmed.__doc__ = textwrap.dedent("""\
- %s
-
- Templates: :template:`%s``
- Context:
- comment
- The posted comment
- """ % (doc, template)
- )
- return confirmed
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/__init__.py b/lib/python2.7/site-packages/django/contrib/contenttypes/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/generic.py b/lib/python2.7/site-packages/django/contrib/contenttypes/generic.py
deleted file mode 100644
index 3c36f77..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/generic.py
+++ /dev/null
@@ -1,508 +0,0 @@
-"""
-Classes allowing "generic" relations through ContentType and object-id fields.
-"""
-from __future__ import unicode_literals
-
-from collections import defaultdict
-from functools import partial
-
-from django.core.exceptions import ObjectDoesNotExist
-from django.db import connection
-from django.db import models, router, DEFAULT_DB_ALIAS
-from django.db.models import signals
-from django.db.models.fields.related import ForeignObject, ForeignObjectRel
-from django.db.models.related import PathInfo
-from django.db.models.sql.where import Constraint
-from django.forms import ModelForm, ALL_FIELDS
-from django.forms.models import (BaseModelFormSet, modelformset_factory, save_instance,
- modelform_defines_fields)
-from django.contrib.admin.options import InlineModelAdmin, flatten_fieldsets
-from django.contrib.contenttypes.models import ContentType
-from django.utils import six
-from django.utils.deprecation import RenameMethodsBase
-from django.utils.encoding import smart_text
-
-
-class RenameGenericForeignKeyMethods(RenameMethodsBase):
- renamed_methods = (
- ('get_prefetch_query_set', 'get_prefetch_queryset', PendingDeprecationWarning),
- )
-
-
-class GenericForeignKey(six.with_metaclass(RenameGenericForeignKeyMethods)):
- """
- Provides a generic relation to any object through content-type/object-id
- fields.
- """
-
- def __init__(self, ct_field="content_type", fk_field="object_id", for_concrete_model=True):
- self.ct_field = ct_field
- self.fk_field = fk_field
- self.for_concrete_model = for_concrete_model
- self.editable = False
-
- def contribute_to_class(self, cls, name):
- self.name = name
- self.model = cls
- self.cache_attr = "_%s_cache" % name
- cls._meta.add_virtual_field(self)
-
- # For some reason I don't totally understand, using weakrefs here doesn't work.
- signals.pre_init.connect(self.instance_pre_init, sender=cls, weak=False)
-
- # Connect myself as the descriptor for this field
- setattr(cls, name, self)
-
- def instance_pre_init(self, signal, sender, args, kwargs, **_kwargs):
- """
- Handles initializing an object with the generic FK instead of
- content-type/object-id fields.
- """
- if self.name in kwargs:
- value = kwargs.pop(self.name)
- kwargs[self.ct_field] = self.get_content_type(obj=value)
- kwargs[self.fk_field] = value._get_pk_val()
-
- def get_content_type(self, obj=None, id=None, using=None):
- if obj is not None:
- return ContentType.objects.db_manager(obj._state.db).get_for_model(
- obj, for_concrete_model=self.for_concrete_model)
- elif id:
- return ContentType.objects.db_manager(using).get_for_id(id)
- else:
- # This should never happen. I love comments like this, don't you?
- raise Exception("Impossible arguments to GFK.get_content_type!")
-
- def get_prefetch_queryset(self, instances):
- # For efficiency, group the instances by content type and then do one
- # query per model
- fk_dict = defaultdict(set)
- # We need one instance for each group in order to get the right db:
- instance_dict = {}
- ct_attname = self.model._meta.get_field(self.ct_field).get_attname()
- for instance in instances:
- # We avoid looking for values if either ct_id or fkey value is None
- ct_id = getattr(instance, ct_attname)
- if ct_id is not None:
- fk_val = getattr(instance, self.fk_field)
- if fk_val is not None:
- fk_dict[ct_id].add(fk_val)
- instance_dict[ct_id] = instance
-
- ret_val = []
- for ct_id, fkeys in fk_dict.items():
- instance = instance_dict[ct_id]
- ct = self.get_content_type(id=ct_id, using=instance._state.db)
- ret_val.extend(ct.get_all_objects_for_this_type(pk__in=fkeys))
-
- # For doing the join in Python, we have to match both the FK val and the
- # content type, so we use a callable that returns a (fk, class) pair.
- def gfk_key(obj):
- ct_id = getattr(obj, ct_attname)
- if ct_id is None:
- return None
- else:
- model = self.get_content_type(id=ct_id,
- using=obj._state.db).model_class()
- return (model._meta.pk.get_prep_value(getattr(obj, self.fk_field)),
- model)
-
- return (ret_val,
- lambda obj: (obj._get_pk_val(), obj.__class__),
- gfk_key,
- True,
- self.cache_attr)
-
- def is_cached(self, instance):
- return hasattr(instance, self.cache_attr)
-
- def __get__(self, instance, instance_type=None):
- if instance is None:
- return self
-
- try:
- return getattr(instance, self.cache_attr)
- except AttributeError:
- rel_obj = None
-
- # Make sure to use ContentType.objects.get_for_id() to ensure that
- # lookups are cached (see ticket #5570). This takes more code than
- # the naive ``getattr(instance, self.ct_field)``, but has better
- # performance when dealing with GFKs in loops and such.
- f = self.model._meta.get_field(self.ct_field)
- ct_id = getattr(instance, f.get_attname(), None)
- if ct_id:
- ct = self.get_content_type(id=ct_id, using=instance._state.db)
- try:
- rel_obj = ct.get_object_for_this_type(pk=getattr(instance, self.fk_field))
- except ObjectDoesNotExist:
- pass
- setattr(instance, self.cache_attr, rel_obj)
- return rel_obj
-
- def __set__(self, instance, value):
- ct = None
- fk = None
- if value is not None:
- ct = self.get_content_type(obj=value)
- fk = value._get_pk_val()
-
- setattr(instance, self.ct_field, ct)
- setattr(instance, self.fk_field, fk)
- setattr(instance, self.cache_attr, value)
-
-class GenericRelation(ForeignObject):
- """Provides an accessor to generic related objects (e.g. comments)"""
-
- def __init__(self, to, **kwargs):
- kwargs['verbose_name'] = kwargs.get('verbose_name', None)
- kwargs['rel'] = GenericRel(
- self, to, related_name=kwargs.pop('related_name', None),
- limit_choices_to=kwargs.pop('limit_choices_to', None),)
- # Override content-type/object-id field names on the related class
- self.object_id_field_name = kwargs.pop("object_id_field", "object_id")
- self.content_type_field_name = kwargs.pop("content_type_field", "content_type")
-
- self.for_concrete_model = kwargs.pop("for_concrete_model", True)
-
- kwargs['blank'] = True
- kwargs['editable'] = False
- kwargs['serialize'] = False
- # This construct is somewhat of an abuse of ForeignObject. This field
- # represents a relation from pk to object_id field. But, this relation
- # isn't direct, the join is generated reverse along foreign key. So,
- # the from_field is object_id field, to_field is pk because of the
- # reverse join.
- super(GenericRelation, self).__init__(
- to, to_fields=[],
- from_fields=[self.object_id_field_name], **kwargs)
-
- def resolve_related_fields(self):
- self.to_fields = [self.model._meta.pk.name]
- return [(self.rel.to._meta.get_field_by_name(self.object_id_field_name)[0],
- self.model._meta.pk)]
-
- def get_reverse_path_info(self):
- opts = self.rel.to._meta
- target = opts.get_field_by_name(self.object_id_field_name)[0]
- return [PathInfo(self.model._meta, opts, (target,), self.rel, True, False)]
-
- def get_choices_default(self):
- return super(GenericRelation, self).get_choices(include_blank=False)
-
- def value_to_string(self, obj):
- qs = getattr(obj, self.name).all()
- return smart_text([instance._get_pk_val() for instance in qs])
-
- def get_joining_columns(self, reverse_join=False):
- if not reverse_join:
- # This error message is meant for the user, and from user
- # perspective this is a reverse join along the GenericRelation.
- raise ValueError('Joining in reverse direction not allowed.')
- return super(GenericRelation, self).get_joining_columns(reverse_join)
-
- def contribute_to_class(self, cls, name):
- super(GenericRelation, self).contribute_to_class(cls, name, virtual_only=True)
- # Save a reference to which model this class is on for future use
- self.model = cls
- # Add the descriptor for the relation
- setattr(cls, self.name, ReverseGenericRelatedObjectsDescriptor(self, self.for_concrete_model))
-
- def contribute_to_related_class(self, cls, related):
- pass
-
- def set_attributes_from_rel(self):
- pass
-
- def get_internal_type(self):
- return "ManyToManyField"
-
- def get_content_type(self):
- """
- Returns the content type associated with this field's model.
- """
- return ContentType.objects.get_for_model(self.model,
- for_concrete_model=self.for_concrete_model)
-
- def get_extra_restriction(self, where_class, alias, remote_alias):
- field = self.rel.to._meta.get_field_by_name(self.content_type_field_name)[0]
- contenttype_pk = self.get_content_type().pk
- cond = where_class()
- cond.add((Constraint(remote_alias, field.column, field), 'exact', contenttype_pk), 'AND')
- return cond
-
- def bulk_related_objects(self, objs, using=DEFAULT_DB_ALIAS):
- """
- Return all objects related to ``objs`` via this ``GenericRelation``.
-
- """
- return self.rel.to._base_manager.db_manager(using).filter(**{
- "%s__pk" % self.content_type_field_name:
- ContentType.objects.db_manager(using).get_for_model(
- self.model, for_concrete_model=self.for_concrete_model).pk,
- "%s__in" % self.object_id_field_name:
- [obj.pk for obj in objs]
- })
-
-
-class ReverseGenericRelatedObjectsDescriptor(object):
- """
- This class provides the functionality that makes the related-object
- managers available as attributes on a model class, for fields that have
- multiple "remote" values and have a GenericRelation defined in their model
- (rather than having another model pointed *at* them). In the example
- "article.publications", the publications attribute is a
- ReverseGenericRelatedObjectsDescriptor instance.
- """
- def __init__(self, field, for_concrete_model=True):
- self.field = field
- self.for_concrete_model = for_concrete_model
-
- def __get__(self, instance, instance_type=None):
- if instance is None:
- return self
-
- # Dynamically create a class that subclasses the related model's
- # default manager.
- rel_model = self.field.rel.to
- superclass = rel_model._default_manager.__class__
- RelatedManager = create_generic_related_manager(superclass)
-
- qn = connection.ops.quote_name
- content_type = ContentType.objects.db_manager(instance._state.db).get_for_model(
- instance, for_concrete_model=self.for_concrete_model)
-
- join_cols = self.field.get_joining_columns(reverse_join=True)[0]
- manager = RelatedManager(
- model = rel_model,
- instance = instance,
- source_col_name = qn(join_cols[0]),
- target_col_name = qn(join_cols[1]),
- content_type = content_type,
- content_type_field_name = self.field.content_type_field_name,
- object_id_field_name = self.field.object_id_field_name,
- prefetch_cache_name = self.field.attname,
- )
-
- return manager
-
- def __set__(self, instance, value):
- manager = self.__get__(instance)
- manager.clear()
- for obj in value:
- manager.add(obj)
-
-def create_generic_related_manager(superclass):
- """
- Factory function for a manager that subclasses 'superclass' (which is a
- Manager) and adds behavior for generic related objects.
- """
-
- class GenericRelatedObjectManager(superclass):
- def __init__(self, model=None, instance=None, symmetrical=None,
- source_col_name=None, target_col_name=None, content_type=None,
- content_type_field_name=None, object_id_field_name=None,
- prefetch_cache_name=None):
-
- super(GenericRelatedObjectManager, self).__init__()
- self.model = model
- self.content_type = content_type
- self.symmetrical = symmetrical
- self.instance = instance
- self.source_col_name = source_col_name
- self.target_col_name = target_col_name
- self.content_type_field_name = content_type_field_name
- self.object_id_field_name = object_id_field_name
- self.prefetch_cache_name = prefetch_cache_name
- self.pk_val = self.instance._get_pk_val()
- self.core_filters = {
- '%s__pk' % content_type_field_name: content_type.id,
- '%s__exact' % object_id_field_name: instance._get_pk_val(),
- }
-
- def get_queryset(self):
- try:
- return self.instance._prefetched_objects_cache[self.prefetch_cache_name]
- except (AttributeError, KeyError):
- db = self._db or router.db_for_read(self.model, instance=self.instance)
- return super(GenericRelatedObjectManager, self).get_queryset().using(db).filter(**self.core_filters)
-
- def get_prefetch_queryset(self, instances):
- db = self._db or router.db_for_read(self.model, instance=instances[0])
- query = {
- '%s__pk' % self.content_type_field_name: self.content_type.id,
- '%s__in' % self.object_id_field_name:
- set(obj._get_pk_val() for obj in instances)
- }
- qs = super(GenericRelatedObjectManager, self).get_queryset().using(db).filter(**query)
- # We (possibly) need to convert object IDs to the type of the
- # instances' PK in order to match up instances:
- object_id_converter = instances[0]._meta.pk.to_python
- return (qs,
- lambda relobj: object_id_converter(getattr(relobj, self.object_id_field_name)),
- lambda obj: obj._get_pk_val(),
- False,
- self.prefetch_cache_name)
-
- def add(self, *objs):
- for obj in objs:
- if not isinstance(obj, self.model):
- raise TypeError("'%s' instance expected" % self.model._meta.object_name)
- setattr(obj, self.content_type_field_name, self.content_type)
- setattr(obj, self.object_id_field_name, self.pk_val)
- obj.save()
- add.alters_data = True
-
- def remove(self, *objs):
- db = router.db_for_write(self.model, instance=self.instance)
- for obj in objs:
- obj.delete(using=db)
- remove.alters_data = True
-
- def clear(self):
- db = router.db_for_write(self.model, instance=self.instance)
- for obj in self.all():
- obj.delete(using=db)
- clear.alters_data = True
-
- def create(self, **kwargs):
- kwargs[self.content_type_field_name] = self.content_type
- kwargs[self.object_id_field_name] = self.pk_val
- db = router.db_for_write(self.model, instance=self.instance)
- return super(GenericRelatedObjectManager, self).using(db).create(**kwargs)
- create.alters_data = True
-
- return GenericRelatedObjectManager
-
-class GenericRel(ForeignObjectRel):
-
- def __init__(self, field, to, related_name=None, limit_choices_to=None):
- super(GenericRel, self).__init__(field, to, related_name, limit_choices_to)
-
-class BaseGenericInlineFormSet(BaseModelFormSet):
- """
- A formset for generic inline objects to a parent.
- """
-
- def __init__(self, data=None, files=None, instance=None, save_as_new=None,
- prefix=None, queryset=None, **kwargs):
- opts = self.model._meta
- self.instance = instance
- self.rel_name = '-'.join((
- opts.app_label, opts.model_name,
- self.ct_field.name, self.ct_fk_field.name,
- ))
- if self.instance is None or self.instance.pk is None:
- qs = self.model._default_manager.none()
- else:
- if queryset is None:
- queryset = self.model._default_manager
- qs = queryset.filter(**{
- self.ct_field.name: ContentType.objects.get_for_model(
- self.instance, for_concrete_model=self.for_concrete_model),
- self.ct_fk_field.name: self.instance.pk,
- })
- super(BaseGenericInlineFormSet, self).__init__(
- queryset=qs, data=data, files=files,
- prefix=prefix,
- **kwargs
- )
-
- @classmethod
- def get_default_prefix(cls):
- opts = cls.model._meta
- return '-'.join((opts.app_label, opts.model_name,
- cls.ct_field.name, cls.ct_fk_field.name,
- ))
-
- def save_new(self, form, commit=True):
- kwargs = {
- self.ct_field.get_attname(): ContentType.objects.get_for_model(
- self.instance, for_concrete_model=self.for_concrete_model).pk,
- self.ct_fk_field.get_attname(): self.instance.pk,
- }
- new_obj = self.model(**kwargs)
- return save_instance(form, new_obj, commit=commit)
-
-def generic_inlineformset_factory(model, form=ModelForm,
- formset=BaseGenericInlineFormSet,
- ct_field="content_type", fk_field="object_id",
- fields=None, exclude=None,
- extra=3, can_order=False, can_delete=True,
- max_num=None,
- formfield_callback=None, validate_max=False,
- for_concrete_model=True):
- """
- Returns a ``GenericInlineFormSet`` for the given kwargs.
-
- You must provide ``ct_field`` and ``fk_field`` if they are different from
- the defaults ``content_type`` and ``object_id`` respectively.
- """
- opts = model._meta
- # if there is no field called `ct_field` let the exception propagate
- ct_field = opts.get_field(ct_field)
- if not isinstance(ct_field, models.ForeignKey) or ct_field.rel.to != ContentType:
- raise Exception("fk_name '%s' is not a ForeignKey to ContentType" % ct_field)
- fk_field = opts.get_field(fk_field) # let the exception propagate
- if exclude is not None:
- exclude = list(exclude)
- exclude.extend([ct_field.name, fk_field.name])
- else:
- exclude = [ct_field.name, fk_field.name]
- FormSet = modelformset_factory(model, form=form,
- formfield_callback=formfield_callback,
- formset=formset,
- extra=extra, can_delete=can_delete, can_order=can_order,
- fields=fields, exclude=exclude, max_num=max_num,
- validate_max=validate_max)
- FormSet.ct_field = ct_field
- FormSet.ct_fk_field = fk_field
- FormSet.for_concrete_model = for_concrete_model
- return FormSet
-
-class GenericInlineModelAdmin(InlineModelAdmin):
- ct_field = "content_type"
- ct_fk_field = "object_id"
- formset = BaseGenericInlineFormSet
-
- def get_formset(self, request, obj=None, **kwargs):
- if 'fields' in kwargs:
- fields = kwargs.pop('fields')
- else:
- fields = flatten_fieldsets(self.get_fieldsets(request, obj))
- if self.exclude is None:
- exclude = []
- else:
- exclude = list(self.exclude)
- exclude.extend(self.get_readonly_fields(request, obj))
- if self.exclude is None and hasattr(self.form, '_meta') and self.form._meta.exclude:
- # Take the custom ModelForm's Meta.exclude into account only if the
- # GenericInlineModelAdmin doesn't define its own.
- exclude.extend(self.form._meta.exclude)
- exclude = exclude or None
- can_delete = self.can_delete and self.has_delete_permission(request, obj)
- defaults = {
- "ct_field": self.ct_field,
- "fk_field": self.ct_fk_field,
- "form": self.form,
- "formfield_callback": partial(self.formfield_for_dbfield, request=request),
- "formset": self.formset,
- "extra": self.extra,
- "can_delete": can_delete,
- "can_order": False,
- "fields": fields,
- "max_num": self.max_num,
- "exclude": exclude
- }
- defaults.update(kwargs)
-
- if defaults['fields'] is None and not modelform_defines_fields(defaults['form']):
- defaults['fields'] = ALL_FIELDS
-
- return generic_inlineformset_factory(self.model, **defaults)
-
-class GenericStackedInline(GenericInlineModelAdmin):
- template = 'admin/edit_inline/stacked.html'
-
-class GenericTabularInline(GenericInlineModelAdmin):
- template = 'admin/edit_inline/tabular.html'
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.mo
deleted file mode 100644
index 594e2c6..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.po
deleted file mode 100644
index da31348..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ar/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/"
-"ar/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "اسم صنف النموذج في python"
-
-#: models.py:134
-msgid "content type"
-msgstr "نوع البيانات"
-
-#: models.py:135
-msgid "content types"
-msgstr "أنواع البيانات"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/az/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/az/LC_MESSAGES/django.mo
deleted file mode 100644
index 3c15a14..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/az/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/az/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/az/LC_MESSAGES/django.po
deleted file mode 100644
index 3aaa739..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/az/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Ismayilov <ali@ismailov.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/"
-"language/az/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: az\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "python modelinin sinif (class) adı"
-
-#: models.py:134
-msgid "content type"
-msgstr "məzmun tipi"
-
-#: models.py:135
-msgid "content types"
-msgstr "məzmun tipləri"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/be/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/be/LC_MESSAGES/django.mo
deleted file mode 100644
index fe8366a..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/be/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/be/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/be/LC_MESSAGES/django.po
deleted file mode 100644
index 8b1abd2..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/be/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/"
-"language/be/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: be\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "назва клясы пітонавае мадэлі"
-
-#: models.py:134
-msgid "content type"
-msgstr "від зьмесьціва"
-
-#: models.py:135
-msgid "content types"
-msgstr "віды зьмесьціва"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Аб’ект са зьмесьцівам віду %(ct_id)s не зьвязалі з мадэльлю"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Аб’ект %(obj_id)s са зьмесьцівам віду %(ct_id)s не існуе"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Аб’екты %(ct_name)s ня маюць спосабу «get_absolute_url()»"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.mo
deleted file mode 100644
index 215df57..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.po
deleted file mode 100644
index 48e7869..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bg/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Boris Chervenkov <office@sentido.bg>, 2012
-# Georgi Kostadinov <grgkostadinov@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/"
-"language/bg/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bg\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "име на класа на модела в Python"
-
-#: models.py:134
-msgid "content type"
-msgstr "тип на съдържанието"
-
-#: models.py:135
-msgid "content types"
-msgstr "типове съдържание"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Обект с тип на съдържанието %(ct_id)s няма асоцииран модел."
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Обект %(obj_id)s с тип на съдържанието %(ct_id)s не съществува."
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s обекти нямат метода get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.mo
deleted file mode 100644
index f2aae10..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.po
deleted file mode 100644
index ee8a3a2..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/"
-"bn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "পাইথন মডেল ক্লাসের নাম"
-
-#: models.py:134
-msgid "content type"
-msgstr "কনটেন্ট টাইপ"
-
-#: models.py:135
-msgid "content types"
-msgstr "কনটেন্ট টাইপ সমূহ"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/br/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/br/LC_MESSAGES/django.mo
deleted file mode 100644
index ea9ae6a..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/br/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/br/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/br/LC_MESSAGES/django.po
deleted file mode 100644
index 431b65e..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/br/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,44 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-15 10:56+0200\n"
-"PO-Revision-Date: 2011-01-19 15:05+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/"
-"br/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: br\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr ""
-
-#: models.py:134
-msgid "content type"
-msgstr ""
-
-#: models.py:135
-msgid "content types"
-msgstr ""
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.mo
deleted file mode 100644
index 8b8dae2..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.po
deleted file mode 100644
index a03ebf7..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/bs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/"
-"bs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bs\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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "ime python klase modela"
-
-#: models.py:134
-msgid "content type"
-msgstr "tip sadržaja"
-
-#: models.py:135
-msgid "content types"
-msgstr "tipovi sadržaja"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.mo
deleted file mode 100644
index 7adf3ea..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.po
deleted file mode 100644
index 19666a6..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ca/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Carles Barrobés <carles@barrobes.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Catalan (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "nom de la classe del model en python"
-
-#: models.py:134
-msgid "content type"
-msgstr "tipus de contingut"
-
-#: models.py:135
-msgid "content types"
-msgstr "tipus de continguts"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "L'objecte del tipus de contingut %(ct_id)s no té un model associat"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "L'objecte %(obj_id)s del tipus de contingut %(ct_id)s no existeix"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Els objectes %(ct_name)s no tenen un mètode get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.mo
deleted file mode 100644
index ce54c66..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.po
deleted file mode 100644
index c572eda..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/cs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Vlada Macek <macek@sandbox.cz>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Czech (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "název třídy modelu v Pythonu"
-
-#: models.py:134
-msgid "content type"
-msgstr "typ obsahu"
-
-#: models.py:135
-msgid "content types"
-msgstr "typy obsahu"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Typ obsahu %(ct_id)s nemá přidružený model."
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Objekt %(obj_id)s typu obsahu %(ct_id)s neexistuje."
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Objektům %(ct_name)s chybí metoda get_absolute_url()."
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.mo
deleted file mode 100644
index 69774d9..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.po
deleted file mode 100644
index 5fcc0ec..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/cy/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/"
-"cy/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cy\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
-"11) ? 2 : 3;\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr ""
-
-#: models.py:134
-msgid "content type"
-msgstr "math cynnwys"
-
-#: models.py:135
-msgid "content types"
-msgstr "mathau cynnwys"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/da/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/da/LC_MESSAGES/django.mo
deleted file mode 100644
index 6c2422f..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/da/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/da/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/da/LC_MESSAGES/django.po
deleted file mode 100644
index 05bfcad..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/da/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kristian Øllegaard <kristian@oellegaard.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/"
-"da/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: da\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "klassenavn i Python-model"
-
-#: models.py:134
-msgid "content type"
-msgstr "indholdstype"
-
-#: models.py:135
-msgid "content types"
-msgstr "indholdstyper"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Indholdstypen %(ct_id)s objekt har ingen tilhørende model"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Indholdstypen %(ct_id)s objekt %(obj_id)s findes ikke"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr " %(ct_name)s objekter ikke har en get_absolute_url ()-metode"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/de/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/de/LC_MESSAGES/django.mo
deleted file mode 100644
index d7667ff..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/de/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/de/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/de/LC_MESSAGES/django.po
deleted file mode 100644
index 28ec43a..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/de/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Hagenbruch <ahagenbruch@googlemail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011,2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-23 08:26+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "Python Modell-Klassenname"
-
-#: models.py:134
-msgid "content type"
-msgstr "Inhaltstyp"
-
-#: models.py:135
-msgid "content types"
-msgstr "Inhaltstypen"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Objekt des Inhaltstyps %(ct_id)s hat kein dazugehöriges Modell"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Objekt %(obj_id)s des Inhaltstyps %(ct_id)s ist nicht vorhanden"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr " %(ct_name)s Objekte haben keine get_absolute_url ()-Methode"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/el/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/el/LC_MESSAGES/django.mo
deleted file mode 100644
index 7ccd7d3..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/el/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/el/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/el/LC_MESSAGES/django.po
deleted file mode 100644
index 894c00a..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/el/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/"
-"el/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: el\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "όνομα python model class"
-
-#: models.py:134
-msgid "content type"
-msgstr "τύπος περιεχομένου"
-
-#: models.py:135
-msgid "content types"
-msgstr "τύποι περιεχομένου"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/en/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/en/LC_MESSAGES/django.mo
deleted file mode 100644
index 08a7b68..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/en/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/en/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/en/LC_MESSAGES/django.po
deleted file mode 100644
index 0ca678d..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/en/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,41 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2010-05-13 15:35+0200\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr ""
-
-#: models.py:134
-msgid "content type"
-msgstr ""
-
-#: models.py:135
-msgid "content types"
-msgstr ""
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.mo
deleted file mode 100644
index 9309e29..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.po
deleted file mode 100644
index 77f070c..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/en_GB/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# jon_atkinson <jon@jonatkinson.co.uk>, 2011
-# Ross Poulton <ross@rossp.org>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
-"django/language/en_GB/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: en_GB\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "python model class name"
-
-#: models.py:134
-msgid "content type"
-msgstr "content type"
-
-#: models.py:135
-msgid "content types"
-msgstr "content types"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Content type %(ct_id)s object has no associated model"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s objects don't have a get_absolute_url() method"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.mo
deleted file mode 100644
index b89a560..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.po
deleted file mode 100644
index 00688e6..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/eo/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,44 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/"
-"language/eo/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "klasa nomo de pitona modelo"
-
-#: models.py:134
-msgid "content type"
-msgstr "enhava tipo"
-
-#: models.py:135
-msgid "content types"
-msgstr "enhavaj tipoj"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Objekto kun enhava tipo %(ct_id)s ne havas asociitaj modeloj"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Objekto %(obj_id)s kun enhava tipo %(ct_id)s ne ekzistas"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr " %(ct_name)s objektoj ne havas metodon get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es/LC_MESSAGES/django.mo
deleted file mode 100644
index bccfbba..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es/LC_MESSAGES/django.po
deleted file mode 100644
index b87989c..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antoni Aloy <aaloy@apsl.net>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "nombre de la clase modelo de python"
-
-#: models.py:134
-msgid "content type"
-msgstr "tipo de contenido"
-
-#: models.py:135
-msgid "content types"
-msgstr "tipos de contenido"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-"El objeto de tipo de contenido %(ct_id)s no tiene ningún modelo asociado."
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "El objeto de tipo de contenido %(ct_id)s objeto %(obj_id)s no existe"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "El objeto %(ct_name)s no tiene un método get_absolute_url () "
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.mo
deleted file mode 100644
index b1c2495..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.po
deleted file mode 100644
index c350700..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es_AR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ramiro Morales <cramm0@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
-"django/language/es_AR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_AR\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "nombre de la clase python del modelo"
-
-#: models.py:134
-msgid "content type"
-msgstr "tipo de contenido"
-
-#: models.py:135
-msgid "content types"
-msgstr "tipos de contenido"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "El objeto Tipo de contenido %(ct_id)s no tiene un modelo asociado"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "El objeto Tipo de contenido %(ct_id)s %(obj_id)s no existe"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Los objetos %(ct_name)s no tienen un método et_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.mo
deleted file mode 100644
index 562ba48..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.po
deleted file mode 100644
index 59a3bef..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/es_MX/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Abraham Estrada <abraham.estrada@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/"
-"language/es_MX/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_MX\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "nombre de la clase python del modelo"
-
-#: models.py:134
-msgid "content type"
-msgstr "tipo de contenido"
-
-#: models.py:135
-msgid "content types"
-msgstr "tipos de contenido"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-"Los objetos con el tipo de contenido %(ct_id)s no tienen un modelo asociado"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Los objetos %(obj_id)s con el tipo de contenido %(ct_id)s no existen"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Los %(ct_name)s objetos no tienen el método get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/et/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/et/LC_MESSAGES/django.mo
deleted file mode 100644
index bbfadd2..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/et/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/et/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/et/LC_MESSAGES/django.po
deleted file mode 100644
index 61b6150..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/et/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jannolii <jannolii@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-28 15:36+0000\n"
-"Last-Translator: jannolii <jannolii@gmail.com>\n"
-"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/"
-"et/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: et\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "pythoni mudeli klassinimi"
-
-#: models.py:134
-msgid "content type"
-msgstr "sisutüüp"
-
-#: models.py:135
-msgid "content types"
-msgstr "sisutüübid"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Sisutüübi %(ct_id)s objektil puudub seos mudeliga"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Sisutüübi %(ct_id)s objekti %(obj_id)s ei ole olemas"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s objektil puudub meetod get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.mo
deleted file mode 100644
index 1360a21..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.po
deleted file mode 100644
index 855040b..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/eu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Aitzol Naberan <anaberan@codesyntax.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/"
-"eu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "python model class izena"
-
-#: models.py:134
-msgid "content type"
-msgstr "eduki mota"
-
-#: models.py:135
-msgid "content types"
-msgstr "eduki motak"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "%(ct_id)s eduki motak ez dauka lotutako eredurik"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "%(ct_id)s eduki motako %(obj_id)s objekturik ez da existitzen"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s objektuek ez dauketa get_absolute_url() metodorik"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.mo
deleted file mode 100644
index dba7185..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.po
deleted file mode 100644
index 37cc9ae..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Nikneshan <ali@nikneshan.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/"
-"fa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "نام پایتونی کلاس مدل"
-
-#: models.py:134
-msgid "content type"
-msgstr "نوع محتوا"
-
-#: models.py:135
-msgid "content types"
-msgstr "نوع‌های محتوا"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "نوع محتوای %(ct_id)s به هیچ مدلی مرتبط نشده است."
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "نوع محتوای %(ct_id)s شیی %(obj_id)s وجود ندارد"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr " اشیای %(ct_name)s متد get_absolute_url() را ندارند."
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.mo
deleted file mode 100644
index e498b36..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.po
deleted file mode 100644
index d1ec151..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# nanook <klaus.dahlen@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Finnish (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "mallin python-luokan nimi"
-
-#: models.py:134
-msgid "content type"
-msgstr "sisältötyyppi"
-
-#: models.py:135
-msgid "content types"
-msgstr "sisältötyypit"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Sisältötyypin %(ct_id)s objektiin ei ole liitetty mallia"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Sisältötyypin %(ct_id)s objektia %(obj_id)s ei ole olemassa"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s-objekteilla ei ole get_absolute_url()-metodia"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.mo
deleted file mode 100644
index c589358..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.po
deleted file mode 100644
index da1a97f..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# claudep <claude@2xlibre.net>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: French (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "nom de la classe python du modèle"
-
-#: models.py:134
-msgid "content type"
-msgstr "type de contenu"
-
-#: models.py:135
-msgid "content types"
-msgstr "types de contenu"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "L'objet type de contenu %(ct_id)s n'a pas de modèle associé"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "L'objet %(obj_id)s du type de contenu %(ct_id)s n'existe pas"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Les objets %(ct_name)s n'ont pas de méthode get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fy_NL/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fy_NL/LC_MESSAGES/django.mo
deleted file mode 100644
index 333b305..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fy_NL/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fy_NL/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fy_NL/LC_MESSAGES/django.po
deleted file mode 100644
index 7ae27e5..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/fy_NL/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,42 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-23 02:37+0100\n"
-"PO-Revision-Date: 2011-03-15 15:26+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: fy_NL\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"
-
-#: models.py:123
-msgid "python model class name"
-msgstr ""
-
-#: models.py:127
-msgid "content type"
-msgstr ""
-
-#: models.py:128
-msgid "content types"
-msgstr ""
-
-#: views.py:15
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:25
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.mo
deleted file mode 100644
index c73e88d..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.po
deleted file mode 100644
index 4252dd8..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ga/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Michael Thornhill <michael@maithu.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/"
-"ga/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ga\n"
-"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
-"4);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "píotón samhail aicme ainm"
-
-#: models.py:134
-msgid "content type"
-msgstr "tíopa inneachar "
-
-#: models.py:135
-msgid "content types"
-msgstr "tíopaI inneachair"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Ní bhaineann samhail leis an cineál inneachar %(ct_id)s"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Níl cineál inneachar %(ct_id)s oibiacht %(obj_id)s ann"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Níl modh get_absolute_url() ag %(ct_name)s oibiachtaí"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.mo
deleted file mode 100644
index dced972..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.po
deleted file mode 100644
index 9013ec3..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/gl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# fonso <fonzzo@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Leandro Regueiro <leandro.regueiro@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-09-07 11:52+0000\n"
-"Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
-"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/"
-"gl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "nome en Python da clase do modelo"
-
-#: models.py:134
-msgid "content type"
-msgstr "tipo de contido"
-
-#: models.py:135
-msgid "content types"
-msgstr "tipos de contido"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "O obxecto de tipo de contido %(ct_id)s non ten un modelo asociado"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "O obxecto %(obj_id)s con tipo de contido %(ct_id)s non existe"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Os obxectos %(ct_name)s non teñen un método get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/he/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/he/LC_MESSAGES/django.mo
deleted file mode 100644
index 0a87b37..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/he/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/he/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/he/LC_MESSAGES/django.po
deleted file mode 100644
index 4c4bcde..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/he/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Meir Kriheli <mkriheli@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "שם ה־class של מודל פייתון"
-
-#: models.py:134
-msgid "content type"
-msgstr "סוג תוכן"
-
-#: models.py:135
-msgid "content types"
-msgstr "סוגי תוכן"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "לא משוייך מודל לאובייקט מסוג התוכן %(ct_id)s"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "אובייקט %(obj_id)s מסוג תוכן %(ct_id)s אינו קיים"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "אובייקטי %(ct_name)s אינם כוללים מתודת get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.mo
deleted file mode 100644
index 2a7f8fd..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.po
deleted file mode 100644
index 64dc6d9..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Chandan kumar <chandankumar.093047@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/"
-"hi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "पैथॉन मॉडल क्लास नाम"
-
-#: models.py:134
-msgid "content type"
-msgstr "विषय-सूची प्रकार"
-
-#: models.py:135
-msgid "content types"
-msgstr "विषय-सूचियाँ प्रकार"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "सामग्री प्रकार के %(ct_id)s ऑब्जेक्ट कोई संबद्ध मॉडल नहीं है।"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "सामग्री प्रकार %(ct_id)s वस्तु %(obj_id)s मौजूद नहीं है."
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s वस्तुओं की get_absolute_url() विधि नहीं है."
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.mo
deleted file mode 100644
index 4a61a09..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.po
deleted file mode 100644
index ae3670e..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Bojan Mihelač <bmihelac@mihelac.org>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/"
-"hr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hr\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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "ime klase (class) python modela"
-
-#: models.py:134
-msgid "content type"
-msgstr "tip sadržaja"
-
-#: models.py:135
-msgid "content types"
-msgstr "tipovi sadržaja"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Tip sadržaja %(ct_id)s objekt nema pridruženi model"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Tip sadržaja %(ct_id)s objekt %(obj_id)s ne postoji"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s objekti nemaju get_absolute_url() metodu"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.mo
deleted file mode 100644
index 00df7dc..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.po
deleted file mode 100644
index dd47e06..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/hu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Attila Nagy <>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/"
-"language/hu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "python modell osztály neve"
-
-#: models.py:134
-msgid "content type"
-msgstr "tartalom típusa"
-
-#: models.py:135
-msgid "content types"
-msgstr "tartalom típusok"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "A %(ct_id)s tartalomtípus-objektumhoz nincsenek modellek hozzárendelve"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "%(ct_id)s tartalomtípus-objektum %(obj_id)s nem található"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s objektumoknak nincs get_absolute_url() metódusuk"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.mo
deleted file mode 100644
index 8070b77..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.po
deleted file mode 100644
index bfa156e..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ia/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Martijn Dekker <mcdutchie@hotmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/"
-"language/ia/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ia\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "nomine del classe del modello Python"
-
-#: models.py:134
-msgid "content type"
-msgstr "typo de contento"
-
-#: models.py:135
-msgid "content types"
-msgstr "typos de contento"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Le objecto del typo de contento %(ct_id)s non ha un modello associate"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Le objecto %(obj_id)s del typo de contento %(ct_id)s non existe"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Objectos %(ct_name)s non ha un methodo get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/id/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/id/LC_MESSAGES/django.mo
deleted file mode 100644
index 1cb6b88..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/id/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/id/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/id/LC_MESSAGES/django.po
deleted file mode 100644
index 956407d..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/id/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# rodin <romihardiyanto@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "nama kelas model python"
-
-#: models.py:134
-msgid "content type"
-msgstr "tipe konten"
-
-#: models.py:135
-msgid "content types"
-msgstr "tipe konten"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Tipe konten objek %(ct_id)s tidak memiliki model yang terkait"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Tipe konten %(ct_id)s objek %(obj_id)s tidak ada"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Objek %(ct_name)s tidak memiliki metode get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/is/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/is/LC_MESSAGES/django.mo
deleted file mode 100644
index 51132a3..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/is/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/is/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/is/LC_MESSAGES/django.po
deleted file mode 100644
index c20c051..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/is/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Hafsteinn Einarsson <haffi67@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/"
-"language/is/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: is\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "python eininga klasa nafn"
-
-#: models.py:134
-msgid "content type"
-msgstr "efnistag"
-
-#: models.py:135
-msgid "content types"
-msgstr "efnistög"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Gerð innihalds %(ct_id)s hefur ekkert tengt módel"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Gerð innihalds %(ct_id)s hlutar %(obj_id)s er ekki til"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s hlutir hafa ekki get_absolute_url () aðferð"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/it/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/it/LC_MESSAGES/django.mo
deleted file mode 100644
index ec19197..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/it/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/it/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/it/LC_MESSAGES/django.po
deleted file mode 100644
index 0356872..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/it/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nicola Larosa <transifex@teknico.net>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "nome della classe del modello Python"
-
-#: models.py:134
-msgid "content type"
-msgstr "content type"
-
-#: models.py:135
-msgid "content types"
-msgstr "content type"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "L'oggetto con content type %(ct_id)s non ha alcun modello associato"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "L'oggetto %(obj_id)s con content type %(ct_id)s non esiste"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Gli oggetti %(ct_name)s non hanno un metodo get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.mo
deleted file mode 100644
index 15f2ccd..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.po
deleted file mode 100644
index 54674d1..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ja/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,49 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Shinya Okano <tokibito@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/"
-"ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "Python モデルクラス名"
-
-#: models.py:134
-msgid "content type"
-msgstr "コンテンツタイプ"
-
-#: models.py:135
-msgid "content types"
-msgstr "コンテンツタイプ"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-"コンテンツタイプ %(ct_id)s のオブジェクトは、関連付けられたモデルを持っていま"
-"せん"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "コンテンツタイプ %(ct_id)s のオブジェクト %(obj_id)s は存在しません"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
-"%(ct_name)s のオブジェクトは get_absolute_url() メソッドを持っていません"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.mo
deleted file mode 100644
index 2c58425..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.po
deleted file mode 100644
index 8537391..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ka/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Bouatchidzé <a@anbz.net>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/"
-"ka/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ka\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "python-ის მოდელის კლასის სახელი"
-
-#: models.py:134
-msgid "content type"
-msgstr "კონტენტის ტიპი"
-
-#: models.py:135
-msgid "content types"
-msgstr "კონტენტის ტიპები"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "კონტენტის ტიპის %(ct_id)s ობიექტს არ გააჩნია ასოცირებული მოდელი"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "კონტენტის ტიპის %(ct_id)s ობიექტი %(obj_id)s არ არსებობს"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s ობიექტებს არ გააჩნიათ მეთოდი get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.mo
deleted file mode 100644
index f03b7dd..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.po
deleted file mode 100644
index c6398ed..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/kk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Nurlan Rakhimzhanov <nurlan.rakhimzhanov@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/"
-"kk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kk\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "питонның үлгі классның аты"
-
-#: models.py:134
-msgid "content type"
-msgstr "мазмұн түрі"
-
-#: models.py:135
-msgid "content types"
-msgstr "мазмұн түрлері"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/km/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/km/LC_MESSAGES/django.mo
deleted file mode 100644
index 16f579c..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/km/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/km/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/km/LC_MESSAGES/django.po
deleted file mode 100644
index 76aedcb..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/km/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Khmer (http://www.transifex.com/projects/p/django/language/"
-"km/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: km\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "ឈ្មោះ python model class"
-
-#: models.py:134
-msgid "content type"
-msgstr "ប្រភេទអត្ថន័យ"
-
-#: models.py:135
-msgid "content types"
-msgstr "ប្រភេទអត្ថន័យ"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.mo
deleted file mode 100644
index 6f75b97..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.po
deleted file mode 100644
index d1fab7d..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/kn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/"
-"kn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kn\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "ಪೈಥಾನ್ ಮಾಡೆಲ್ ಕ್ಲಾಸಿನ ಹೆಸರು"
-
-#: models.py:134
-msgid "content type"
-msgstr "ಒಳವಿಷಯದ ಬಗೆ"
-
-#: models.py:135
-msgid "content types"
-msgstr "ಒಳವಿಷಯದ ಬಗೆಗಳು"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.mo
deleted file mode 100644
index 7adf02e..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.po
deleted file mode 100644
index fdb4c94..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ko/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/"
-"ko/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ko\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "python 모델 클래스 명"
-
-#: models.py:134
-msgid "content type"
-msgstr "콘텐츠 타입"
-
-#: models.py:135
-msgid "content types"
-msgstr "콘텐츠 타입(들)"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.mo
deleted file mode 100644
index 215b55a..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.po
deleted file mode 100644
index 3b1ed18..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/lt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Simonas Kazlauskas <simonas@kazlauskas.me>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/"
-"language/lt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lt\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
-"%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "python modelio klasės vardas"
-
-#: models.py:134
-msgid "content type"
-msgstr "turinio tipas"
-
-#: models.py:135
-msgid "content types"
-msgstr "turinio tipai"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Tūrinio tipo %(ct_id)s objektas neturi priskirto modelio"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Tūrinio tipo %(ct_id)s objektas %(obj_id)s neegzistuoja"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s objektai neturi get_absolute_url() metodo"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.mo
deleted file mode 100644
index 2a2b522..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.po
deleted file mode 100644
index 210ad36..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/lv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/"
-"lv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lv\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "python modeļa klases nosaukums"
-
-#: models.py:134
-msgid "content type"
-msgstr "satura tips"
-
-#: models.py:135
-msgid "content types"
-msgstr "satura tipi"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.mo
deleted file mode 100644
index 874563b..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.po
deleted file mode 100644
index 5985705..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/mk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# vvangelovski <vvangelovski@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/"
-"language/mk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mk\n"
-"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "име на класата за python моделoт"
-
-#: models.py:134
-msgid "content type"
-msgstr "тип на содржина"
-
-#: models.py:135
-msgid "content types"
-msgstr "типови содржини"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Типот на содржина %(ct_id)s објект нема асоциран модел"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Типот на содржина %(ct_id)s објект %(obj_id)s не постои"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s објекти немаат get_absolute_url() метод"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.mo
deleted file mode 100644
index 862784e..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.po
deleted file mode 100644
index 97fa844..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ml/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Rajeesh Nair <rajeeshrnair@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/"
-"language/ml/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ml\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "പൈത്തണ്‍ മോഡല്‍ ക്ളാസ്സിന്റെ പേര്"
-
-#: models.py:134
-msgid "content type"
-msgstr "ഏതു തരം ഉള്ളടക്കം"
-
-#: models.py:135
-msgid "content types"
-msgstr "ഏതൊക്കെ തരം ഉള്ളടക്കം"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "കണ്ടന്റ് ടൈപ്പ് %(ct_id)s വസ്തുവിന് അനുബന്ധമായ മോഡല്‍ ഇല്ല."
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "കണ്ടന്റ് ടൈപ്പ് %(ct_id)s വസ്തു %(obj_id)s നിലവിലില്ല"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s വസ്തുക്കള്‍ക്ക് get_absolute_url() രീതി ഇല്ല."
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.mo
deleted file mode 100644
index ea80943..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.po
deleted file mode 100644
index 86ec688..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/mn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/"
-"language/mn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "пайтоны модел класын нэр"
-
-#: models.py:134
-msgid "content type"
-msgstr "агуулгын төрөл"
-
-#: models.py:135
-msgid "content types"
-msgstr "агуулгын төрлүүд"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "%(ct_id)s төрлийн холбоотой модель олдсонгүй"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "%(ct_id)s төрлийн %(obj_id)s id тай обект олдсонгүй"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
-"%(ct_name)s обектууд дээр get_absolute_url() функцийг тодохройлоогүй байна."
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/my/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/my/LC_MESSAGES/django.mo
deleted file mode 100644
index 6a080b6..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/my/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/my/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/my/LC_MESSAGES/django.po
deleted file mode 100644
index 3fe3555..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/my/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Yhal Htet Aung <jumoun@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Burmese (http://www.transifex.com/projects/p/django/language/"
-"my/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: my\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "စပါးကြီးမော်ဒယ်အမျိုးအစားနာမည်"
-
-#: models.py:134
-msgid "content type"
-msgstr "အကြောင်းအရာအမျိုးအစား"
-
-#: models.py:135
-msgid "content types"
-msgstr "အကြောင်းအရာအမျိုးအစားများ"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "အကြောင်းအရာအမျိုးအစား %(ct_id)s အရာဝတ္ထုမှာဆက်နွယ်သောမော်ဒယ်မရှိ"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "အကြောင်းအရာအမျိုးအစား %(ct_id)s အရာဝတ္ထု %(obj_id)s မတည်ရှိနေ"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s အရာဝတ္ထုများ get_absolute_url() နည်းလမ်းမရှိ"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.mo
deleted file mode 100644
index c0e51f0..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.po
deleted file mode 100644
index b26d0f7..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jonklo <jonklo@gmail.com>, 2012
-# Sigurd Gartmann <sigurdga-transifex@sigurdga.no>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/"
-"language/nb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "python-modellklassenavn"
-
-#: models.py:134
-msgid "content type"
-msgstr "innholdstype"
-
-#: models.py:135
-msgid "content types"
-msgstr "innholdstyper"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Innholdstype %(ct_id)s objekt har ingen assosiert model"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Innholdstype %(ct_id)s objekt %(obj_id)s finnes ikke"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s-objekter har ikke get_absolute_url()-metode"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.mo
deleted file mode 100644
index 1d25a99..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.po
deleted file mode 100644
index db97cba..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ne/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Sagar Chalise <chalisesagar@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-06-01 04:44+0000\n"
-"Last-Translator: Sagar Chalise <chalisesagar@gmail.com>\n"
-"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/"
-"ne/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ne\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "पाइथन मोडेल क्लासको नाम"
-
-#: models.py:134
-msgid "content type"
-msgstr "कन्टेन्ट टाइप"
-
-#: models.py:135
-msgid "content types"
-msgstr "कन्टेन्ट टाइपहरु"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "कन्टेन्ट टाइप %(ct_id)s वस्तु सँग सम्बन्धित मोडेल छैन ।"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "कन्टेन्ट टाइप %(ct_id)s वस्तु %(obj_id)s छैन ।"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s वस्तुमा get_absolute_url() तरिका छैन ।"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.mo
deleted file mode 100644
index 7768841..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.po
deleted file mode 100644
index c16e9b4..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Harro van der Klauw <hvdklauw@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Dutch (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "klassenaam van pythonmodel"
-
-#: models.py:134
-msgid "content type"
-msgstr "inhoudstype"
-
-#: models.py:135
-msgid "content types"
-msgstr "inhoudstypen"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Content type %(ct_id)s object heeft geen bijbehorende model"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Content type %(ct_id)s object %(obj_id)s bestaat niet"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s objecten niet over een get_absolute_url() methode"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.mo
deleted file mode 100644
index dd17272..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.po
deleted file mode 100644
index 262feb7..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/nn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jensadne <jensadne@pvv.ntnu.no>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-07-11 09:39+0000\n"
-"Last-Translator: jensadne <jensadne@pvv.ntnu.no>\n"
-"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/"
-"language/nn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "python-modell klassenamn"
-
-#: models.py:134
-msgid "content type"
-msgstr "innhaldstype"
-
-#: models.py:135
-msgid "content types"
-msgstr "innhaldstypar"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Innhaldstype %(ct_id)s-objektet har ingen modell knytta til seg"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Innhaldstype %(ct_id)s-objektet med id %(obj_id)s finst ikkje"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s-objekt har ingen get_absolute_url()-metode"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/os/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/os/LC_MESSAGES/django.mo
deleted file mode 100644
index 79e87da..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/os/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/os/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/os/LC_MESSAGES/django.po
deleted file mode 100644
index 0ede86c..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/os/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Ossetic (http://www.transifex.com/projects/p/django/language/"
-"os/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: os\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "python моделы классы ном"
-
-#: models.py:134
-msgid "content type"
-msgstr "мидисы хуыз"
-
-#: models.py:135
-msgid "content types"
-msgstr "мидисы хуызтӕ"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "%(ct_id)s мидисы хуызы объектӕн ӕмбӕлгӕ модел нӕй"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "%(ct_id)s мидисы хуызы объект %(obj_id)s нӕй"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s объекттӕн get_absolute_url() метод нӕй"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.mo
deleted file mode 100644
index 9a2fd03..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.po
deleted file mode 100644
index 54ff2e2..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/"
-"language/pa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pa\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "ਪਾਈਥਨ ਮਾਡਲ ਕਲਾਸ ਨਾਂ"
-
-#: models.py:134
-msgid "content type"
-msgstr "ਸਮੱਗਰੀ ਕਿਸਮ"
-
-#: models.py:135
-msgid "content types"
-msgstr "ਸਮੱਗਰੀ ਕਿਸਮ"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.mo
deleted file mode 100644
index fb5ca99..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.po
deleted file mode 100644
index 5deceae..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# angularcircle, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "nazwa pythonowa modelu klasy"
-
-#: models.py:134
-msgid "content type"
-msgstr "typ zawartości"
-
-#: models.py:135
-msgid "content types"
-msgstr "typy zawartości"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Obiekt typu zawartości %(ct_id)s nie posiada przypisanego modelu"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Obiekt %(obj_id)s typu zawartości %(ct_id)s nie istnieje"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Obiekty %(ct_name)s nie posiadają metody o nazwie get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.mo
deleted file mode 100644
index de62603..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.po
deleted file mode 100644
index 7f9410a..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nuno Mariz <nmariz@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-31 16:29+0000\n"
-"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
-"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "nome da classe do model em python"
-
-#: models.py:134
-msgid "content type"
-msgstr "tipo de conteúdo"
-
-#: models.py:135
-msgid "content types"
-msgstr "tipos de conteúdos"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Objeto do tipo de conteúdo %(ct_id)s não tem nenhum model associado"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Objeto %(obj_id)s do tipo de conteúdo %(ct_id)s não existe"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Objetos %(ct_name)s não tem um método get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.mo
deleted file mode 100644
index 081a071..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.po
deleted file mode 100644
index b746534..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/pt_BR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Guilherme Gondim <semente@taurinus.org>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
-"django/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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "nome da classe model em python"
-
-#: models.py:134
-msgid "content type"
-msgstr "tipo de conteúdo"
-
-#: models.py:135
-msgid "content types"
-msgstr "tipos de conteúdo"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Objeto do tipo de conteúdo %(ct_id)s não tem nenhum model associado"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Objeto %(obj_id)s do tipo de conteúdo %(ct_id)s não existe"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Objetos %(ct_name)s não tem um método get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.mo
deleted file mode 100644
index bfcd090..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.po
deleted file mode 100644
index 289cc80..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ro/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Daniel Ursache-Dogariu <contact@danniel.net>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/"
-"ro/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1));\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "nume clasă model Python"
-
-#: models.py:134
-msgid "content type"
-msgstr "tip conținut"
-
-#: models.py:135
-msgid "content types"
-msgstr "tipuri conținut"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.mo
deleted file mode 100644
index a792183..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.po
deleted file mode 100644
index 611319a..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ru/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Eugene MechanisM <contact@mechanism.name>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Алексей Борискин <sun.void@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/"
-"ru/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "имя класса модели"
-
-#: models.py:134
-msgid "content type"
-msgstr "тип содержимого"
-
-#: models.py:135
-msgid "content types"
-msgstr "типы содержимого"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Тип содержимого %(ct_id)s не имеет связанной модели"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-"Объект с идентификатором %(obj_id)s, имеющий тип содержимого %(ct_id)s, не "
-"существует"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Объекты типа \"%(ct_name)s\" не имеют метода get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.mo
deleted file mode 100644
index e25125e..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.po
deleted file mode 100644
index 31329c2..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Marian Andre <marian@andre.sk>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Slovak (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "pythonovské meno triedy modelu"
-
-#: models.py:134
-msgid "content type"
-msgstr "typ obsahu"
-
-#: models.py:135
-msgid "content types"
-msgstr "typy obsahu"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Objekt typu obsahu %(ct_id)s nemá pridružený model"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Objekt %(obj_id)s typu obsahu %(ct_id)s neexistuje"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr " Objekty %(ct_name)s neobsahujú metódu get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.mo
deleted file mode 100644
index c5c413a..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.po
deleted file mode 100644
index 55efc8c..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# zejn <zejn@kiberpipa.org>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/"
-"language/sl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "ime razreda modela python"
-
-#: models.py:134
-msgid "content type"
-msgstr "vrsta vsebine"
-
-#: models.py:135
-msgid "content types"
-msgstr "vrste vsebine"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Predmet vrste vsebine %(ct_id)s nima določenega povezanega modela"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Predmet %(obj_id)s vrste %(ct_id)s ne obstaja"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Predmeti vrste %(ct_name)s nimajo določila get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.mo
deleted file mode 100644
index 64990a2..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.po
deleted file mode 100644
index bddfa4d..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sq/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Besnik <besnik@programeshqip.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/"
-"sq/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sq\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "emër klase modeli python"
-
-#: models.py:134
-msgid "content type"
-msgstr "lloj lënde"
-
-#: models.py:135
-msgid "content types"
-msgstr "lloje lënde"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Objekti %(ct_id)s për lloj lënde nuk ka model të përshoqëruar"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-"Objekti %(obj_id)s për lloj lënde %(ct_id)s nuk ka model të përshoqëruar"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Objektet %(ct_name)s nuk përmbajnë ndonjë metodë get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.mo
deleted file mode 100644
index 555ef02..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.po
deleted file mode 100644
index 51c0dd7..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/"
-"sr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr\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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "име python класе модела"
-
-#: models.py:134
-msgid "content type"
-msgstr "тип садржаја"
-
-#: models.py:135
-msgid "content types"
-msgstr "типови садржаја"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Тип садржаја %(ct_id)s нема асоцирани модел"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Тип садржаја %(ct_id)s објекта %(obj_id)s не постоји"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Објекти %(ct_name)s немају метод get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.mo
deleted file mode 100644
index fa407ad..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.po
deleted file mode 100644
index 1a6c11d..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sr_Latn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/"
-"language/sr@latin/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr@latin\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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "ime python klase modela"
-
-#: models.py:134
-msgid "content type"
-msgstr "tip sadržaja"
-
-#: models.py:135
-msgid "content types"
-msgstr "tipovi sadržaja"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Tip sadržaja %(ct_id)s nema asocirani model"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Tip sadržaja %(ct_id)s objekta %(obj_id)s ne postoji"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Objekti %(ct_name)s nemaju metod get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.mo
deleted file mode 100644
index 7510188..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.po
deleted file mode 100644
index e1ad37d..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Andreas Pelme <andreas@pelme.se>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/"
-"sv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sv\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "klassnamn för Python-modell"
-
-#: models.py:134
-msgid "content type"
-msgstr "innehålls typ"
-
-#: models.py:135
-msgid "content types"
-msgstr "innehållstyper"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Innehållstypens %(ct_id)s har ingen associerad modell."
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Innehållstypens %(ct_id)s objekt %(obj_id)s finns inte"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s objekt har inte en get_absolute_url()-metod"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.mo
deleted file mode 100644
index 3a708a4..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.po
deleted file mode 100644
index d17af54..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/sw/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,44 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/"
-"sw/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sw\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr ""
-
-#: models.py:134
-msgid "content type"
-msgstr "aina ya maudhui"
-
-#: models.py:135
-msgid "content types"
-msgstr "aina ya maudhui"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.mo
deleted file mode 100644
index 217c39c..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.po
deleted file mode 100644
index 7cfe9e4..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ta/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/"
-"ta/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ta\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "python model class name"
-
-#: models.py:134
-msgid "content type"
-msgstr "பொருளடக்க வகை"
-
-#: models.py:135
-msgid "content types"
-msgstr "பொருளடக்க வகைகள்"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/te/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/te/LC_MESSAGES/django.mo
deleted file mode 100644
index 9e37917..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/te/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/te/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/te/LC_MESSAGES/django.po
deleted file mode 100644
index 89764f6..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/te/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/"
-"te/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: te\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "పైతాన్ మొడల్ క్లాస్ పేరు"
-
-#: models.py:134
-msgid "content type"
-msgstr "సూచన రకం"
-
-#: models.py:135
-msgid "content types"
-msgstr "సూచన రకాలు"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/th/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/th/LC_MESSAGES/django.mo
deleted file mode 100644
index bc3a43b..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/th/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/th/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/th/LC_MESSAGES/django.po
deleted file mode 100644
index ffdd0a2..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/th/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kowit Charoenratchatabhan <kowit.s.c@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/"
-"th/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: th\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "python model class name"
-
-#: models.py:134
-msgid "content type"
-msgstr "content type"
-
-#: models.py:135
-msgid "content types"
-msgstr "content types"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "ประเภทของเนื้อหา %(ct_id)s ไม่มีอ็อบเจ็กที่มีรูปแบบที่เกี่ยวข้อง"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "ไม่มีประเภทของเนื้อหา %(ct_id)s วัตถุ %(obj_id)s"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s ไม่มีเมธอด get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.mo
deleted file mode 100644
index eebd64f..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.po
deleted file mode 100644
index 2db8f6e..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/tr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Murat Çorlu <muratcorlu@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/"
-"tr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "python model sınıf adı"
-
-#: models.py:134
-msgid "content type"
-msgstr "içerik türü"
-
-#: models.py:135
-msgid "content types"
-msgstr "içerik türleri"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "%(ct_id)s içerik türü hiç bir model ile ilişkilendirilmemiş"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "%(ct_id)s nolu içerik türünün %(obj_id)s nolu objesi yok"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s objeleri bir get_absolute_url() metoduna sahip değiller"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.mo
deleted file mode 100644
index 350b870..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.po
deleted file mode 100644
index 307d5b5..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/tt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Azat Khasanshin <lordofbazuks@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/"
-"tt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tt\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "модель классының исеме"
-
-#: models.py:134
-msgid "content type"
-msgstr "эчтәлек тибы"
-
-#: models.py:135
-msgid "content types"
-msgstr "эчтәлек тиблары"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.mo
deleted file mode 100644
index 87edbd6..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.po
deleted file mode 100644
index 22cfc7e..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/uk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,48 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sergey Lysach <sergikoff88@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "ім'я класу моделі"
-
-#: models.py:134
-msgid "content type"
-msgstr "тип вмісту"
-
-#: models.py:135
-msgid "content types"
-msgstr "типи вмісту"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Тип вмісту %(ct_id)s не має пов'язанної моделі"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-"Об'єкт з ідентифікатором %(ct_id)s, що має тип вмісту %(obj_id)s не існує"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Об'єкт типу %(ct_name)s не має методу get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.mo
deleted file mode 100644
index a02bcf0..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.po
deleted file mode 100644
index a6d7adf..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/ur/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/"
-"ur/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ur\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "پائثان کے ماڈل کی کلاس کا نام"
-
-#: models.py:134
-msgid "content type"
-msgstr "مضمون کی قسم"
-
-#: models.py:135
-msgid "content types"
-msgstr "مضمون کی اقسام"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr ""
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr ""
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.mo
deleted file mode 100644
index 0985e16..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.po
deleted file mode 100644
index a9e0749..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/vi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Tran <hongdiepkien@gmail.com>, 2011
-# Tran Van <vantxm@yahoo.co.uk>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-26 17:03+0000\n"
-"Last-Translator: Tran Van <vantxm@yahoo.co.uk>\n"
-"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/"
-"language/vi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "tên lớp mô hình python"
-
-#: models.py:134
-msgid "content type"
-msgstr "kiểu nội dung"
-
-#: models.py:135
-msgid "content types"
-msgstr "kiểu nội dung"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "Đối tượng của kiểu nội dung %(ct_id)s không có model tương ứng"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "Đối tượng %(obj_id)s của Kiểu nội dung %(ct_id)s không tồn tại."
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "Đối tượng %(ct_name)s không có phương thức get_absolute_url()"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/zh_CN/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/zh_CN/LC_MESSAGES/django.mo
deleted file mode 100644
index 499dfc2..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/zh_CN/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/zh_CN/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/zh_CN/LC_MESSAGES/django.po
deleted file mode 100644
index 03d4b86..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/zh_CN/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# slene <vslene@gmail.com>, 2011
-# Kevin Shi <leiarix@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "python 模型类名"
-
-#: models.py:134
-msgid "content type"
-msgstr "内容类型"
-
-#: models.py:135
-msgid "content types"
-msgstr "内容类型"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "内容类型 %(ct_id)s 对象没有关联的模型"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "内容类型 %(ct_id)s 对象 %(obj_id)s 不存在"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s 对象没有 a get_absolute_url() 方法"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/zh_TW/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/zh_TW/LC_MESSAGES/django.mo
deleted file mode 100644
index 308726b..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/zh_TW/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/zh_TW/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/contenttypes/locale/zh_TW/LC_MESSAGES/django.po
deleted file mode 100644
index f78f241..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/locale/zh_TW/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# ilay <ilay@ilay.tw>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-26 14:19+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/"
-"language/zh_TW/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_TW\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:130
-msgid "python model class name"
-msgstr "python 模組名稱"
-
-#: models.py:134
-msgid "content type"
-msgstr "內容類型"
-
-#: models.py:135
-msgid "content types"
-msgstr "內容類型"
-
-#: views.py:17
-#, python-format
-msgid "Content type %(ct_id)s object has no associated model"
-msgstr "內容類型 %(ct_id)s 的物件沒有關聯的資料模型"
-
-#: views.py:21
-#, python-format
-msgid "Content type %(ct_id)s object %(obj_id)s doesn't exist"
-msgstr "內容類型 %(ct_id)s 的物件 %(obj_id)s 不存在"
-
-#: views.py:27
-#, python-format
-msgid "%(ct_name)s objects don't have a get_absolute_url() method"
-msgstr "%(ct_name)s 的物件沒有 get_absolute_url() 方法"
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/management.py b/lib/python2.7/site-packages/django/contrib/contenttypes/management.py
deleted file mode 100644
index 64d1c41..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/management.py
+++ /dev/null
@@ -1,94 +0,0 @@
-from django.contrib.contenttypes.models import ContentType
-from django.db import DEFAULT_DB_ALIAS, router
-from django.db.models import get_apps, get_model, get_models, signals, UnavailableApp
-from django.utils.encoding import smart_text
-from django.utils import six
-from django.utils.six.moves import input
-
-
-def update_contenttypes(app, created_models, verbosity=2, db=DEFAULT_DB_ALIAS, **kwargs):
- """
- Creates content types for models in the given app, removing any model
- entries that no longer have a matching model class.
- """
- try:
- get_model('contenttypes', 'ContentType')
- except UnavailableApp:
- return
-
- if not router.allow_syncdb(db, ContentType):
- return
-
- ContentType.objects.clear_cache()
- app_models = get_models(app)
- if not app_models:
- return
- # They all have the same app_label, get the first one.
- app_label = app_models[0]._meta.app_label
- app_models = dict(
- (model._meta.model_name, model)
- for model in app_models
- )
-
- # Get all the content types
- content_types = dict(
- (ct.model, ct)
- for ct in ContentType.objects.using(db).filter(app_label=app_label)
- )
- to_remove = [
- ct
- for (model_name, ct) in six.iteritems(content_types)
- if model_name not in app_models
- ]
-
- cts = [
- ContentType(
- name=smart_text(model._meta.verbose_name_raw),
- app_label=app_label,
- model=model_name,
- )
- for (model_name, model) in six.iteritems(app_models)
- if model_name not in content_types
- ]
- ContentType.objects.using(db).bulk_create(cts)
- if verbosity >= 2:
- for ct in cts:
- print("Adding content type '%s | %s'" % (ct.app_label, ct.model))
-
- # Confirm that the content type is stale before deletion.
- if to_remove:
- if kwargs.get('interactive', False):
- content_type_display = '\n'.join([
- ' %s | %s' % (ct.app_label, ct.model)
- for ct in to_remove
- ])
- ok_to_delete = input("""The following content types are stale and need to be deleted:
-
-%s
-
-Any objects related to these content types by a foreign key will also
-be deleted. Are you sure you want to delete these content types?
-If you're unsure, answer 'no'.
-
- Type 'yes' to continue, or 'no' to cancel: """ % content_type_display)
- else:
- ok_to_delete = False
-
- if ok_to_delete == 'yes':
- for ct in to_remove:
- if verbosity >= 2:
- print("Deleting stale content type '%s | %s'" % (ct.app_label, ct.model))
- ct.delete()
- else:
- if verbosity >= 2:
- print("Stale content types remain.")
-
-
-def update_all_contenttypes(verbosity=2, **kwargs):
- for app in get_apps():
- update_contenttypes(app, None, verbosity, **kwargs)
-
-signals.post_syncdb.connect(update_contenttypes)
-
-if __name__ == "__main__":
- update_all_contenttypes()
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/models.py b/lib/python2.7/site-packages/django/contrib/contenttypes/models.py
deleted file mode 100644
index 34d5444..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/models.py
+++ /dev/null
@@ -1,177 +0,0 @@
-from django.db import models
-from django.utils.translation import ugettext_lazy as _
-from django.utils.encoding import smart_text, force_text
-from django.utils.encoding import python_2_unicode_compatible
-
-class ContentTypeManager(models.Manager):
-
- # Cache to avoid re-looking up ContentType objects all over the place.
- # This cache is shared by all the get_for_* methods.
- _cache = {}
-
- def get_by_natural_key(self, app_label, model):
- try:
- ct = self.__class__._cache[self.db][(app_label, model)]
- except KeyError:
- ct = self.get(app_label=app_label, model=model)
- self._add_to_cache(self.db, ct)
- return ct
-
- def _get_opts(self, model, for_concrete_model):
- if for_concrete_model:
- model = model._meta.concrete_model
- elif model._deferred:
- model = model._meta.proxy_for_model
- return model._meta
-
- def _get_from_cache(self, opts):
- key = (opts.app_label, opts.model_name)
- return self.__class__._cache[self.db][key]
-
- def get_for_model(self, model, for_concrete_model=True):
- """
- Returns the ContentType object for a given model, creating the
- ContentType if necessary. Lookups are cached so that subsequent lookups
- for the same model don't hit the database.
- """
- opts = self._get_opts(model, for_concrete_model)
- try:
- ct = self._get_from_cache(opts)
- except KeyError:
- # Load or create the ContentType entry. The smart_text() is
- # needed around opts.verbose_name_raw because name_raw might be a
- # django.utils.functional.__proxy__ object.
- ct, created = self.get_or_create(
- app_label = opts.app_label,
- model = opts.model_name,
- defaults = {'name': smart_text(opts.verbose_name_raw)},
- )
- self._add_to_cache(self.db, ct)
-
- return ct
-
- def get_for_models(self, *models, **kwargs):
- """
- Given *models, returns a dictionary mapping {model: content_type}.
- """
- for_concrete_models = kwargs.pop('for_concrete_models', True)
- # Final results
- results = {}
- # models that aren't already in the cache
- needed_app_labels = set()
- needed_models = set()
- needed_opts = set()
- for model in models:
- opts = self._get_opts(model, for_concrete_models)
- try:
- ct = self._get_from_cache(opts)
- except KeyError:
- needed_app_labels.add(opts.app_label)
- needed_models.add(opts.model_name)
- needed_opts.add(opts)
- else:
- results[model] = ct
- if needed_opts:
- cts = self.filter(
- app_label__in=needed_app_labels,
- model__in=needed_models
- )
- for ct in cts:
- model = ct.model_class()
- if model._meta in needed_opts:
- results[model] = ct
- needed_opts.remove(model._meta)
- self._add_to_cache(self.db, ct)
- for opts in needed_opts:
- # These weren't in the cache, or the DB, create them.
- ct = self.create(
- app_label=opts.app_label,
- model=opts.model_name,
- name=smart_text(opts.verbose_name_raw),
- )
- self._add_to_cache(self.db, ct)
- results[ct.model_class()] = ct
- return results
-
- def get_for_id(self, id):
- """
- Lookup a ContentType by ID. Uses the same shared cache as get_for_model
- (though ContentTypes are obviously not created on-the-fly by get_by_id).
- """
- try:
- ct = self.__class__._cache[self.db][id]
- except KeyError:
- # This could raise a DoesNotExist; that's correct behavior and will
- # make sure that only correct ctypes get stored in the cache dict.
- ct = self.get(pk=id)
- self._add_to_cache(self.db, ct)
- return ct
-
- def clear_cache(self):
- """
- Clear out the content-type cache. This needs to happen during database
- flushes to prevent caching of "stale" content type IDs (see
- django.contrib.contenttypes.management.update_contenttypes for where
- this gets called).
- """
- self.__class__._cache.clear()
-
- def _add_to_cache(self, using, ct):
- """Insert a ContentType into the cache."""
- # Note it's possible for ContentType objects to be stale; model_class() will return None.
- # Hence, there is no reliance on model._meta.app_label here, just using the model fields instead.
- key = (ct.app_label, ct.model)
- self.__class__._cache.setdefault(using, {})[key] = ct
- self.__class__._cache.setdefault(using, {})[ct.id] = ct
-
-
-@python_2_unicode_compatible
-class ContentType(models.Model):
- name = models.CharField(max_length=100)
- app_label = models.CharField(max_length=100)
- model = models.CharField(_('python model class name'), max_length=100)
- objects = ContentTypeManager()
-
- class Meta:
- verbose_name = _('content type')
- verbose_name_plural = _('content types')
- db_table = 'django_content_type'
- ordering = ('name',)
- unique_together = (('app_label', 'model'),)
-
- def __str__(self):
- # self.name is deprecated in favor of using model's verbose_name, which
- # can be translated. Formal deprecation is delayed until we have DB
- # migration to be able to remove the field from the database along with
- # the attribute.
- #
- # We return self.name only when users have changed its value from the
- # initial verbose_name_raw and might rely on it.
- model = self.model_class()
- if not model or self.name != model._meta.verbose_name_raw:
- return self.name
- else:
- return force_text(model._meta.verbose_name)
-
- def model_class(self):
- "Returns the Python model class for this type of content."
- return models.get_model(self.app_label, self.model,
- only_installed=False)
-
- def get_object_for_this_type(self, **kwargs):
- """
- Returns an object of this type for the keyword arguments given.
- Basically, this is a proxy around this object_type's get_object() model
- method. The ObjectNotExist exception, if thrown, will not be caught,
- so code that calls this method should catch it.
- """
- return self.model_class()._base_manager.using(self._state.db).get(**kwargs)
-
- def get_all_objects_for_this_type(self, **kwargs):
- """
- Returns all objects of this type for the keyword arguments given.
- """
- return self.model_class()._base_manager.using(self._state.db).filter(**kwargs)
-
- def natural_key(self):
- return (self.app_label, self.model)
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/tests.py b/lib/python2.7/site-packages/django/contrib/contenttypes/tests.py
deleted file mode 100644
index f300294..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/tests.py
+++ /dev/null
@@ -1,283 +0,0 @@
-from __future__ import unicode_literals
-
-from django.db import models
-from django.contrib.contenttypes.models import ContentType
-from django.contrib.contenttypes.views import shortcut
-from django.contrib.sites.models import Site, get_current_site
-from django.http import HttpRequest, Http404
-from django.test import TestCase
-from django.test.utils import override_settings
-from django.utils.http import urlquote
-from django.utils import six
-from django.utils.encoding import python_2_unicode_compatible
-
-
-class ConcreteModel(models.Model):
- name = models.CharField(max_length=10)
-
-class ProxyModel(ConcreteModel):
- class Meta:
- proxy = True
-
-@python_2_unicode_compatible
-class FooWithoutUrl(models.Model):
- """
- Fake model not defining ``get_absolute_url`` for
- :meth:`ContentTypesTests.test_shortcut_view_without_get_absolute_url`"""
- name = models.CharField(max_length=30, unique=True)
-
- def __str__(self):
- return self.name
-
-
-class FooWithUrl(FooWithoutUrl):
- """
- Fake model defining ``get_absolute_url`` for
- :meth:`ContentTypesTests.test_shortcut_view`
- """
-
- def get_absolute_url(self):
- return "/users/%s/" % urlquote(self.name)
-
-class FooWithBrokenAbsoluteUrl(FooWithoutUrl):
- """
- Fake model defining a ``get_absolute_url`` method containing an error
- """
-
- def get_absolute_url(self):
- return "/users/%s/" % self.unknown_field
-
-class ContentTypesTests(TestCase):
-
- def setUp(self):
- self.old_Site_meta_installed = Site._meta.installed
- ContentType.objects.clear_cache()
-
- def tearDown(self):
- Site._meta.installed = self.old_Site_meta_installed
- ContentType.objects.clear_cache()
-
- def test_lookup_cache(self):
- """
- Make sure that the content type cache (see ContentTypeManager)
- works correctly. Lookups for a particular content type -- by model, ID
- or natural key -- should hit the database only on the first lookup.
- """
-
- # At this point, a lookup for a ContentType should hit the DB
- with self.assertNumQueries(1):
- ContentType.objects.get_for_model(ContentType)
-
- # A second hit, though, won't hit the DB, nor will a lookup by ID
- # or natural key
- with self.assertNumQueries(0):
- ct = ContentType.objects.get_for_model(ContentType)
- with self.assertNumQueries(0):
- ContentType.objects.get_for_id(ct.id)
- with self.assertNumQueries(0):
- ContentType.objects.get_by_natural_key('contenttypes',
- 'contenttype')
-
- # Once we clear the cache, another lookup will again hit the DB
- ContentType.objects.clear_cache()
- with self.assertNumQueries(1):
- ContentType.objects.get_for_model(ContentType)
-
- # The same should happen with a lookup by natural key
- ContentType.objects.clear_cache()
- with self.assertNumQueries(1):
- ContentType.objects.get_by_natural_key('contenttypes',
- 'contenttype')
- # And a second hit shouldn't hit the DB
- with self.assertNumQueries(0):
- ContentType.objects.get_by_natural_key('contenttypes',
- 'contenttype')
-
- def test_get_for_models_empty_cache(self):
- # Empty cache.
- with self.assertNumQueries(1):
- cts = ContentType.objects.get_for_models(ContentType, FooWithUrl)
- self.assertEqual(cts, {
- ContentType: ContentType.objects.get_for_model(ContentType),
- FooWithUrl: ContentType.objects.get_for_model(FooWithUrl),
- })
-
- def test_get_for_models_partial_cache(self):
- # Partial cache
- ContentType.objects.get_for_model(ContentType)
- with self.assertNumQueries(1):
- cts = ContentType.objects.get_for_models(ContentType, FooWithUrl)
- self.assertEqual(cts, {
- ContentType: ContentType.objects.get_for_model(ContentType),
- FooWithUrl: ContentType.objects.get_for_model(FooWithUrl),
- })
-
- def test_get_for_models_full_cache(self):
- # Full cache
- ContentType.objects.get_for_model(ContentType)
- ContentType.objects.get_for_model(FooWithUrl)
- with self.assertNumQueries(0):
- cts = ContentType.objects.get_for_models(ContentType, FooWithUrl)
- self.assertEqual(cts, {
- ContentType: ContentType.objects.get_for_model(ContentType),
- FooWithUrl: ContentType.objects.get_for_model(FooWithUrl),
- })
-
- def test_get_for_concrete_model(self):
- """
- Make sure the `for_concrete_model` kwarg correctly works
- with concrete, proxy and deferred models
- """
- concrete_model_ct = ContentType.objects.get_for_model(ConcreteModel)
-
- self.assertEqual(concrete_model_ct,
- ContentType.objects.get_for_model(ProxyModel))
-
- self.assertEqual(concrete_model_ct,
- ContentType.objects.get_for_model(ConcreteModel,
- for_concrete_model=False))
-
- proxy_model_ct = ContentType.objects.get_for_model(ProxyModel,
- for_concrete_model=False)
-
- self.assertNotEqual(concrete_model_ct, proxy_model_ct)
-
- # Make sure deferred model are correctly handled
- ConcreteModel.objects.create(name="Concrete")
- DeferredConcreteModel = ConcreteModel.objects.only('pk').get().__class__
- DeferredProxyModel = ProxyModel.objects.only('pk').get().__class__
-
- self.assertEqual(concrete_model_ct,
- ContentType.objects.get_for_model(DeferredConcreteModel))
-
- self.assertEqual(concrete_model_ct,
- ContentType.objects.get_for_model(DeferredConcreteModel,
- for_concrete_model=False))
-
- self.assertEqual(concrete_model_ct,
- ContentType.objects.get_for_model(DeferredProxyModel))
-
- self.assertEqual(proxy_model_ct,
- ContentType.objects.get_for_model(DeferredProxyModel,
- for_concrete_model=False))
-
- def test_get_for_concrete_models(self):
- """
- Make sure the `for_concrete_models` kwarg correctly works
- with concrete, proxy and deferred models.
- """
- concrete_model_ct = ContentType.objects.get_for_model(ConcreteModel)
-
- cts = ContentType.objects.get_for_models(ConcreteModel, ProxyModel)
- self.assertEqual(cts, {
- ConcreteModel: concrete_model_ct,
- ProxyModel: concrete_model_ct,
- })
-
- proxy_model_ct = ContentType.objects.get_for_model(ProxyModel,
- for_concrete_model=False)
- cts = ContentType.objects.get_for_models(ConcreteModel, ProxyModel,
- for_concrete_models=False)
- self.assertEqual(cts, {
- ConcreteModel: concrete_model_ct,
- ProxyModel: proxy_model_ct,
- })
-
- # Make sure deferred model are correctly handled
- ConcreteModel.objects.create(name="Concrete")
- DeferredConcreteModel = ConcreteModel.objects.only('pk').get().__class__
- DeferredProxyModel = ProxyModel.objects.only('pk').get().__class__
-
- cts = ContentType.objects.get_for_models(DeferredConcreteModel,
- DeferredProxyModel)
- self.assertEqual(cts, {
- DeferredConcreteModel: concrete_model_ct,
- DeferredProxyModel: concrete_model_ct,
- })
-
- cts = ContentType.objects.get_for_models(DeferredConcreteModel,
- DeferredProxyModel,
- for_concrete_models=False)
- self.assertEqual(cts, {
- DeferredConcreteModel: concrete_model_ct,
- DeferredProxyModel: proxy_model_ct,
- })
-
-
- @override_settings(ALLOWED_HOSTS=['example.com'])
- def test_shortcut_view(self):
- """
- Check that the shortcut view (used for the admin "view on site"
- functionality) returns a complete URL regardless of whether the sites
- framework is installed
- """
-
- request = HttpRequest()
- request.META = {
- "SERVER_NAME": "Example.com",
- "SERVER_PORT": "80",
- }
- user_ct = ContentType.objects.get_for_model(FooWithUrl)
- obj = FooWithUrl.objects.create(name="john")
-
- if Site._meta.installed:
- response = shortcut(request, user_ct.id, obj.id)
- self.assertEqual("http://%s/users/john/" % get_current_site(request).domain,
- response._headers.get("location")[1])
-
- Site._meta.installed = False
- response = shortcut(request, user_ct.id, obj.id)
- self.assertEqual("http://Example.com/users/john/",
- response._headers.get("location")[1])
-
- def test_shortcut_view_without_get_absolute_url(self):
- """
- Check that the shortcut view (used for the admin "view on site"
- functionality) returns 404 when get_absolute_url is not defined.
- """
-
- request = HttpRequest()
- request.META = {
- "SERVER_NAME": "Example.com",
- "SERVER_PORT": "80",
- }
- user_ct = ContentType.objects.get_for_model(FooWithoutUrl)
- obj = FooWithoutUrl.objects.create(name="john")
-
- self.assertRaises(Http404, shortcut, request, user_ct.id, obj.id)
-
- def test_shortcut_view_with_broken_get_absolute_url(self):
- """
- Check that the shortcut view does not catch an AttributeError raised
- by the model's get_absolute_url method.
- Refs #8997.
- """
- request = HttpRequest()
- request.META = {
- "SERVER_NAME": "Example.com",
- "SERVER_PORT": "80",
- }
- user_ct = ContentType.objects.get_for_model(FooWithBrokenAbsoluteUrl)
- obj = FooWithBrokenAbsoluteUrl.objects.create(name="john")
-
- self.assertRaises(AttributeError, shortcut, request, user_ct.id, obj.id)
-
- def test_missing_model(self):
- """
- Ensures that displaying content types in admin (or anywhere) doesn't
- break on leftover content type records in the DB for which no model
- is defined anymore.
- """
- ct = ContentType.objects.create(
- name = 'Old model',
- app_label = 'contenttypes',
- model = 'OldModel',
- )
- self.assertEqual(six.text_type(ct), 'Old model')
- self.assertIsNone(ct.model_class())
-
- # Make sure stale ContentTypes can be fetched like any other object.
- # Before Django 1.6 this caused a NoneType error in the caching mechanism.
- # Instead, just return the ContentType object and let the app detect stale states.
- ct_fetched = ContentType.objects.get_for_id(ct.pk)
- self.assertIsNone(ct_fetched.model_class())
diff --git a/lib/python2.7/site-packages/django/contrib/contenttypes/views.py b/lib/python2.7/site-packages/django/contrib/contenttypes/views.py
deleted file mode 100644
index 6d4a719..0000000
--- a/lib/python2.7/site-packages/django/contrib/contenttypes/views.py
+++ /dev/null
@@ -1,82 +0,0 @@
-from __future__ import unicode_literals
-
-from django import http
-from django.contrib.contenttypes.models import ContentType
-from django.contrib.sites.models import Site, get_current_site
-from django.core.exceptions import ObjectDoesNotExist
-from django.utils.translation import ugettext as _
-
-def shortcut(request, content_type_id, object_id):
- """
- Redirect to an object's page based on a content-type ID and an object ID.
- """
- # Look up the object, making sure it's got a get_absolute_url() function.
- try:
- content_type = ContentType.objects.get(pk=content_type_id)
- if not content_type.model_class():
- raise http.Http404(_("Content type %(ct_id)s object has no associated model") %
- {'ct_id': content_type_id})
- obj = content_type.get_object_for_this_type(pk=object_id)
- except (ObjectDoesNotExist, ValueError):
- raise http.Http404(_("Content type %(ct_id)s object %(obj_id)s doesn't exist") %
- {'ct_id': content_type_id, 'obj_id': object_id})
-
- try:
- get_absolute_url = obj.get_absolute_url
- except AttributeError:
- raise http.Http404(_("%(ct_name)s objects don't have a get_absolute_url() method") %
- {'ct_name': content_type.name})
- absurl = get_absolute_url()
-
- # Try to figure out the object's domain, so we can do a cross-site redirect
- # if necessary.
-
- # If the object actually defines a domain, we're done.
- if absurl.startswith('http://') or absurl.startswith('https://'):
- return http.HttpResponseRedirect(absurl)
-
- # Otherwise, we need to introspect the object's relationships for a
- # relation to the Site object
- object_domain = None
-
- if Site._meta.installed:
- opts = obj._meta
-
- # First, look for an many-to-many relationship to Site.
- for field in opts.many_to_many:
- if field.rel.to is Site:
- try:
- # Caveat: In the case of multiple related Sites, this just
- # selects the *first* one, which is arbitrary.
- object_domain = getattr(obj, field.name).all()[0].domain
- except IndexError:
- pass
- if object_domain is not None:
- break
-
- # Next, look for a many-to-one relationship to Site.
- if object_domain is None:
- for field in obj._meta.fields:
- if field.rel and field.rel.to is Site:
- try:
- object_domain = getattr(obj, field.name).domain
- except Site.DoesNotExist:
- pass
- if object_domain is not None:
- break
-
- # Fall back to the current site (if possible).
- if object_domain is None:
- try:
- object_domain = get_current_site(request).domain
- except Site.DoesNotExist:
- pass
-
- # If all that malarkey found an object domain, use it. Otherwise, fall back
- # to whatever get_absolute_url() returned.
- if object_domain is not None:
- protocol = 'https' if request.is_secure() else 'http'
- return http.HttpResponseRedirect('%s://%s%s'
- % (protocol, object_domain, absurl))
- else:
- return http.HttpResponseRedirect(absurl)
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/__init__.py b/lib/python2.7/site-packages/django/contrib/flatpages/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/admin.py b/lib/python2.7/site-packages/django/contrib/flatpages/admin.py
deleted file mode 100644
index 1329426..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/admin.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from django.contrib import admin
-from django.contrib.flatpages.models import FlatPage
-from django.utils.translation import ugettext_lazy as _
-from django.contrib.flatpages.forms import FlatpageForm
-
-class FlatPageAdmin(admin.ModelAdmin):
- form = FlatpageForm
- fieldsets = (
- (None, {'fields': ('url', 'title', 'content', 'sites')}),
- (_('Advanced options'), {'classes': ('collapse',), 'fields': ('enable_comments', 'registration_required', 'template_name')}),
- )
- list_display = ('url', 'title')
- list_filter = ('sites', 'enable_comments', 'registration_required')
- search_fields = ('url', 'title')
-
-admin.site.register(FlatPage, FlatPageAdmin)
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/fixtures/example_site.json b/lib/python2.7/site-packages/django/contrib/flatpages/fixtures/example_site.json
deleted file mode 100644
index 71aa84d..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/fixtures/example_site.json
+++ /dev/null
@@ -1,11 +0,0 @@
-[
- {
- "pk": 1,
- "model": "sites.site",
- "fields": {
- "domain": "example.com",
- "name": "example.com"
- }
- }
-]
-
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/fixtures/sample_flatpages.json b/lib/python2.7/site-packages/django/contrib/flatpages/fixtures/sample_flatpages.json
deleted file mode 100644
index 885af1e..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/fixtures/sample_flatpages.json
+++ /dev/null
@@ -1,63 +0,0 @@
-[
- {
- "pk": 1,
- "model": "flatpages.flatpage",
- "fields": {
- "registration_required": false,
- "title": "A Flatpage",
- "url": "/flatpage/",
- "template_name": "",
- "sites": [
- 1
- ],
- "content": "Isn't it flat!",
- "enable_comments": false
- }
- },
- {
- "pk": 2,
- "model": "flatpages.flatpage",
- "fields": {
- "registration_required": false,
- "title": "A Nested Flatpage",
- "url": "/location/flatpage/",
- "template_name": "",
- "sites": [
- 1
- ],
- "content": "Isn't it flat and deep!",
- "enable_comments": false
- }
- },
-
- {
- "pk": 101,
- "model": "flatpages.flatpage",
- "fields": {
- "registration_required": true,
- "title": "Sekrit Flatpage",
- "url": "/sekrit/",
- "template_name": "",
- "sites": [
- 1
- ],
- "content": "Isn't it sekrit!",
- "enable_comments": false
- }
- },
- {
- "pk": 102,
- "model": "flatpages.flatpage",
- "fields": {
- "registration_required": true,
- "title": "Sekrit Nested Flatpage",
- "url": "/location/sekrit/",
- "template_name": "",
- "sites": [
- 1
- ],
- "content": "Isn't it sekrit and deep!",
- "enable_comments": false
- }
- }
-] \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/forms.py b/lib/python2.7/site-packages/django/contrib/flatpages/forms.py
deleted file mode 100644
index a93a494..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/forms.py
+++ /dev/null
@@ -1,50 +0,0 @@
-from django import forms
-from django.conf import settings
-from django.contrib.flatpages.models import FlatPage
-from django.utils.translation import ugettext, ugettext_lazy as _
-
-class FlatpageForm(forms.ModelForm):
- url = forms.RegexField(label=_("URL"), max_length=100, regex=r'^[-\w/\.~]+$',
- help_text = _("Example: '/about/contact/'. Make sure to have leading"
- " and trailing slashes."),
- error_message = _("This value must contain only letters, numbers,"
- " dots, underscores, dashes, slashes or tildes."))
-
- class Meta:
- model = FlatPage
- fields = '__all__'
-
- def clean_url(self):
- url = self.cleaned_data['url']
- if not url.startswith('/'):
- raise forms.ValidationError(
- ugettext("URL is missing a leading slash."),
- code='missing_leading_slash',
- )
- if (settings.APPEND_SLASH and
- 'django.middleware.common.CommonMiddleware' in settings.MIDDLEWARE_CLASSES and
- not url.endswith('/')):
- raise forms.ValidationError(
- ugettext("URL is missing a trailing slash."),
- code='missing_trailing_slash',
- )
- return url
-
- def clean(self):
- url = self.cleaned_data.get('url', None)
- sites = self.cleaned_data.get('sites', None)
-
- same_url = FlatPage.objects.filter(url=url)
- if self.instance.pk:
- same_url = same_url.exclude(pk=self.instance.pk)
-
- if sites and same_url.filter(sites__in=sites).exists():
- for site in sites:
- if same_url.filter(sites=site).exists():
- raise forms.ValidationError(
- _('Flatpage with url %(url)s already exists for site %(site)s'),
- code='duplicate_url',
- params={'url': url, 'site': site},
- )
-
- return super(FlatpageForm, self).clean()
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/af/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/af/LC_MESSAGES/django.mo
deleted file mode 100644
index 6362758..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/af/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/af/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/af/LC_MESSAGES/django.po
deleted file mode 100644
index ba624dc..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/af/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,91 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Afrikaans (http://www.transifex.com/projects/p/django/"
-"language/af/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: af\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr ""
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr ""
-
-#: models.py:13
-msgid "content"
-msgstr ""
-
-#: models.py:14
-msgid "enable comments"
-msgstr ""
-
-#: models.py:15
-msgid "template name"
-msgstr ""
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-
-#: models.py:17
-msgid "registration required"
-msgstr ""
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-
-#: models.py:24
-msgid "flat page"
-msgstr ""
-
-#: models.py:25
-msgid "flat pages"
-msgstr ""
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Die veld is verpligtend."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ar/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ar/LC_MESSAGES/django.mo
deleted file mode 100644
index c66a7ed..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ar/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ar/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ar/LC_MESSAGES/django.po
deleted file mode 100644
index 13b5c3a..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ar/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,100 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# dado_eyad <d.eyad.t@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ossama Khayat <okhayat@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-28 09:27+0000\n"
-"Last-Translator: dado_eyad <d.eyad.t@gmail.com>\n"
-"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/"
-"ar/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "خيارات متقدّمة"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "رابط"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "مثال: '/about/contact/'. تأكد من وضع شرطات في البداية والنهاية."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"يجب أن تحتوي هذه القيمة الأحرف والأرقام والنقاط وعلامات _ و - و / أو ~ فقط."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "العنوان URL يفقد رمز / في بدايته."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "العنوان URL يفقد رمز / في نهايته."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "الصفحة ذو العنوان %(url)s موجودة سابقاً في موقع %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "العنوان"
-
-#: models.py:13
-msgid "content"
-msgstr "المحتوى"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "السماح بالتعليقات"
-
-#: models.py:15
-msgid "template name"
-msgstr "اسم القالب"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"مثال: 'flatpages/contact_page.html'. إن لم تكن الصفحة موجودة، فسوف يستخدم "
-"النظام 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "التسجيل مطلوب"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"إذا كان هذا الخيار محددا، فإن المستخدمين الداخلين فقط سيتمكنون من مشاهدة "
-"الصفحة."
-
-#: models.py:24
-msgid "flat page"
-msgstr "صفحة مسطحة"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "صفحات مسطحة"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "هذا الحقل مطلوب."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/az/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/az/LC_MESSAGES/django.mo
deleted file mode 100644
index 9556862..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/az/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/az/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/az/LC_MESSAGES/django.po
deleted file mode 100644
index 19b55d7..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/az/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,101 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Ismayilov <ali@ismailov.info>, 2011
-# Dimitris Glezos <glezos@transifex.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/"
-"language/az/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: az\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Əlavə imkanlar"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Məsələn, \"/about/contact/\". Əvvəldə və sondakı kəsr xəttinin olmasına "
-"diqqət edin."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Burada yalnız hərf, rəqəm, nöqtə, altdan xətt, defis, kəsr xətti və ya "
-"tildadan istifadə etmək olar."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "başlıq"
-
-#: models.py:13
-msgid "content"
-msgstr "məzmun"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "şərhlər olsun"
-
-#: models.py:15
-msgid "template name"
-msgstr "şablonun adı"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Məsələn, \"flatpages/contact_page.html\". Əgər göstərməsəniz, biz "
-"\"flatpages/default.html\" şablonundan istifadə edəcəyik."
-
-#: models.py:17
-msgid "registration required"
-msgstr "ancaq qeydiyyatlılar üçün"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Əgər bura quş qoysanız, ancaq qeydiyyatdan keçib sayta daxil olmuş "
-"istifadəçilər bu səhifəni görə biləcəklər."
-
-#: models.py:24
-msgid "flat page"
-msgstr "adi səhifə"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "adi səhifələr"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Bu sahə vacibdir."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/be/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/be/LC_MESSAGES/django.mo
deleted file mode 100644
index 4d23193..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/be/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/be/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/be/LC_MESSAGES/django.po
deleted file mode 100644
index a1946e1..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/be/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,100 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/"
-"language/be/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: be\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Адмысловыя можнасьці"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "Сеціўная спасылка"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Прыклад: «/about/contact/». Упэўніцеся, што адрас пачынаецца й заканчваецца "
-"рыскаю «/»."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Дазваляюцца толькі літары, лічбы, кропкі, знак падкрэсьліваньня, злучкі, "
-"нахіленыя рыскі, тыльды."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "Спасылка не пачынаецца з рыскі «/»."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "Спасылка не заканчваецца рыскаю «/»."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "На пляцоўцы «%(site)s» ужо існуе нязьменная бачына з адрасам «%(url)s»"
-
-#: models.py:12
-msgid "title"
-msgstr "назва"
-
-#: models.py:13
-msgid "content"
-msgstr "зьмесьціва"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "дазволіць выказваньні"
-
-#: models.py:15
-msgid "template name"
-msgstr "назва шаблёну"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Прыклад: «flatpages/contact_page.html». Калі не пазначаць нічога, сыстэма "
-"будзе ўжываць «flatpages/default.html»."
-
-#: models.py:17
-msgid "registration required"
-msgstr "трэба запісацца"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Калі абраць гэта, бачыну змогуць пабачыць толькі тыя карыстальнікі, што "
-"апазналіся."
-
-#: models.py:24
-msgid "flat page"
-msgstr "нязьменная бачына"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "нязьменныя бачыны"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Поле трэба запоўніць."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/bg/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/bg/LC_MESSAGES/django.mo
deleted file mode 100644
index 355c2df..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/bg/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/bg/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/bg/LC_MESSAGES/django.po
deleted file mode 100644
index f5e8a96..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/bg/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/"
-"language/bg/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bg\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Допълнителни опции"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Пример: '/about/contact/'. Началната и крайната наклонена чертичка са "
-"задължителни. "
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Тази стойност трябва да съдържа само букви, цифри, точки, долни тирета, "
-"наклонени черти или tildes."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "URL липсва водеща черта."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "URL липсва наклонена черта."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Flatpage с url %(url)s вече съществува за site %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "заглавие"
-
-#: models.py:13
-msgid "content"
-msgstr "съдържание"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "позволяване на коментари"
-
-#: models.py:15
-msgid "template name"
-msgstr "име на шаблон"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Пример: 'flatpages/contact_page.html'. Ако това не е указано, системата ще "
-"използва 'flatpages/default.html'. "
-
-#: models.py:17
-msgid "registration required"
-msgstr "изисква се регистрация"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Ако това е чекнато, само логнати потребители ще могат да виждат страницата. "
-
-#: models.py:24
-msgid "flat page"
-msgstr "информативна страница"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "информативни страници"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Това поле е задължително."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/bn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/bn/LC_MESSAGES/django.mo
deleted file mode 100644
index 8aafd1d..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/bn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/bn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/bn/LC_MESSAGES/django.po
deleted file mode 100644
index c05defd..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/bn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/"
-"bn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "এডভান্সড অপশন"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "ইউআরএল (URL)"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "উদাহরণঃ '/about/contact/'। শুরু এবং শেষের স্ল্যাশগুলো আবশ্যক।"
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "শিরোনাম"
-
-#: models.py:13
-msgid "content"
-msgstr "কনটেন্ট"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "মন্তব্য প্রদান সচল করুন"
-
-#: models.py:15
-msgid "template name"
-msgstr "টেমপ্লেট নাম"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"উদাহরণঃ ’flatpage/contact_page.html'। এটি যদি খালি থাকে, তবে সিস্টেম "
-"’flatpage/default.html' ব্যবহার করবে।"
-
-#: models.py:17
-msgid "registration required"
-msgstr "নিবন্ধন আবশ্যক"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "এটি চেক করা হলে, শুধুমাত্র লগইন করা সদস্যরা পাতাটি দেখতে সমর্থ হবেন।"
-
-#: models.py:24
-msgid "flat page"
-msgstr "ফ্লাট পাতা"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "ফ্লাট পাতা সমূহ"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "এটি আবশ্যক।"
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/br/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/br/LC_MESSAGES/django.mo
deleted file mode 100644
index 9d2e671..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/br/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/br/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/br/LC_MESSAGES/django.po
deleted file mode 100644
index 99b0e27..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/br/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,92 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Fulup <fulup.jakez@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/"
-"br/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: br\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr ""
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "titl"
-
-#: models.py:13
-msgid "content"
-msgstr "danvez"
-
-#: models.py:14
-msgid "enable comments"
-msgstr ""
-
-#: models.py:15
-msgid "template name"
-msgstr ""
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-
-#: models.py:17
-msgid "registration required"
-msgstr ""
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-
-#: models.py:24
-msgid "flat page"
-msgstr ""
-
-#: models.py:25
-msgid "flat pages"
-msgstr ""
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Rekis eo leuniañ ar vaezienn."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/bs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/bs/LC_MESSAGES/django.mo
deleted file mode 100644
index 68acedf..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/bs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/bs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/bs/LC_MESSAGES/django.po
deleted file mode 100644
index a77d525..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/bs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,102 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Filip Dupanović <filip.dupanovic@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/"
-"bs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bs\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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Napredna podešavanja"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Primjer: '/about/contact/'. Pazite na to da postoje i početne i završne kose "
-"crte."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Ova vrijednost smije samo sadržati slova, brijeve, tačke, donje crte, crte, "
-"kose crte i tilde."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "naslov"
-
-#: models.py:13
-msgid "content"
-msgstr "sadržaj"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "omogući komentare"
-
-#: models.py:15
-msgid "template name"
-msgstr "naziv obrazca"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Primjer: 'flatpages/contact_page.html'. Ako ovo ostavite praznim, sistem će "
-"koristiti 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "registracija obavezna"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Ako je ovo obilježeno, samo će prijavljeni korisnici moći da vide ovu "
-"stranicu."
-
-#: models.py:24
-msgid "flat page"
-msgstr "statična stranica"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "statične stranice"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Ovo polje se mora popuniti."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ca/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ca/LC_MESSAGES/django.mo
deleted file mode 100644
index f9cd457..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ca/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ca/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ca/LC_MESSAGES/django.po
deleted file mode 100644
index 220e708..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ca/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,100 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antoni Aloy <aaloy@apsl.net>, 2011
-# Carles Barrobés <carles@barrobes.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Catalan (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Opcions avançades"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Exemple: '/about/contact/'. Assegureu-vos de posar les barres al principi i "
-"al final."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Aquest valor sols pot contenir lletres, nombres, punts, subratllats, guions, "
-"barres o accents."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "La URL no comença amb \"/\"."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "La URL no acaba amb \"/\"."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Ja hi ha una pàgina estàtica amb la URL %(url)s per al lloc %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "títol"
-
-#: models.py:13
-msgid "content"
-msgstr "contingut"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "habilitar comentaris"
-
-#: models.py:15
-msgid "template name"
-msgstr "nom de la plantilla"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Exemple: 'flatpages/contact_page.html'. Si no es proporciona, el sistema "
-"utilitzarà 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "cal estar registrat"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Si està marcat, només els usuaris registrats podran veure la pàgina."
-
-#: models.py:24
-msgid "flat page"
-msgstr "pàgina estàtica"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "pàgines estàtiques"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Aquest camp és obligatori."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/cs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/cs/LC_MESSAGES/django.mo
deleted file mode 100644
index f8b279b..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/cs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/cs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/cs/LC_MESSAGES/django.po
deleted file mode 100644
index 117b295..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/cs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,98 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Vlada Macek <macek@sandbox.cz>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Czech (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Pokročilá nastavení"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Příklad: \"/o/kontakt/\". Ujistěte se, že máte počáteční a konečná lomítka."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Tato hodnota musí obsahovat pouze písmena, číslice, tečky, podtržítka, "
-"pomlčky, lomítka nebo vlnovky."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "V adrese URL chybí úvodní lomítko."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "V adrese URL chybí koncové lomítko."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Flat stránka s adresou %(url)s pro web %(site)s již existuje."
-
-#: models.py:12
-msgid "title"
-msgstr "titulek"
-
-#: models.py:13
-msgid "content"
-msgstr "obsah"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "povolit komentáře"
-
-#: models.py:15
-msgid "template name"
-msgstr "název šablony"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Příklad: \"flatpages/kontaktni_stranka.html\". Pokud toto není zadáno, bude "
-"použita šablona \"flatpages/default.html\"."
-
-#: models.py:17
-msgid "registration required"
-msgstr "nutná registrace"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Určuje, že tuto stránku uvidí pouze přihlášení uživatelé."
-
-#: models.py:24
-msgid "flat page"
-msgstr "statická stránka"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "statické stránky"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Pole je povinné."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/cy/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/cy/LC_MESSAGES/django.mo
deleted file mode 100644
index 9aeb859..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/cy/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/cy/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/cy/LC_MESSAGES/django.po
deleted file mode 100644
index 82e5844..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/cy/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/"
-"cy/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cy\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
-"11) ? 2 : 3;\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr ""
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Er enghraifft: '/amdan/cyswllt/'. Sicrhewch gennych slaesau arweiniol ac "
-"trywyddiol."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "teitl"
-
-#: models.py:13
-msgid "content"
-msgstr "cynnwys"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "galluogi sylwadau"
-
-#: models.py:15
-msgid "template name"
-msgstr "enw'r templed"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-
-#: models.py:17
-msgid "registration required"
-msgstr "cofrestriad gofynnol"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Os wedi dewis, dim ond defnyddwyr a mewngofnodwyd bydd yn gallu gweld y "
-"tudalen."
-
-#: models.py:24
-msgid "flat page"
-msgstr "tudalen fflat"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "tudalennau fflat"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Mae angen y faes yma."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/da/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/da/LC_MESSAGES/django.mo
deleted file mode 100644
index 74d1c08..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/da/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/da/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/da/LC_MESSAGES/django.po
deleted file mode 100644
index e6e5c60..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/da/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,103 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Christian Joergensen <christian@gmta.info>, 2012
-# Erik Wognsen <r4mses@gmail.com>, 2012
-# Finn Gruwier, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/"
-"da/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: da\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Avancerede muligheder"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Eksempel: '/om/kontakt/'. Vær opmærksom på, at der skal være skråstreg både "
-"først og sidst."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Denne værdi må kun indeholde bogstaver, tal, punktum, understreger, "
-"bindestreger, skråstreger eller tilder."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "URL mangler en skråstreg i starten."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "URL mangler en afsluttende skråstreg."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Flatpage med URL'en %(url)s eksisterer allerede for siden %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "titel"
-
-#: models.py:13
-msgid "content"
-msgstr "indhold"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "tillad kommentarer"
-
-#: models.py:15
-msgid "template name"
-msgstr "skabelonnavn"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Eksempel: 'flatpages/kontaktside'. Hvis dette ikke tilbydes, bruger systemet "
-"'flatpages/default'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "registrering påkrævet"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Hvis denne boks er markeret, vil kun brugere der er logget ind, kunne se "
-"siden."
-
-#: models.py:24
-msgid "flat page"
-msgstr "flad side"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "flade sider"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Dette felt er påkrævet."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/de/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/de/LC_MESSAGES/django.mo
deleted file mode 100644
index 363856c..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/de/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/de/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/de/LC_MESSAGES/django.po
deleted file mode 100644
index c8f6d97..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/de/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,101 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Hagenbruch <ahagenbruch@googlemail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011,2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-06-14 15:14+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Erweiterte Optionen"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "Adresse (URL)"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Beispiel: '/about/contact/'. Wichtig: Am Anfang und Ende muss ein / stehen."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Dieser Wert darf nur Buchstaben, Ziffern, Punkte, Unterstriche, "
-"Bindestriche, Schrägstriche und Tilden enthalten."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "Der URL fehlt ein vorangestellter Schrägstrich."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "Der URL fehlt ein abschließender Schrägstrich."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-"Flatpage mit der URL %(url)s ist für die Website %(site)s bereits vorhanden"
-
-#: models.py:12
-msgid "title"
-msgstr "Titel"
-
-#: models.py:13
-msgid "content"
-msgstr "Inhalt"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "Kommentare aktivieren"
-
-#: models.py:15
-msgid "template name"
-msgstr "Name des Templates"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Beispiel: 'flatpages/contact_page.html'. Wenn dieses Feld nicht gesetzt ist, "
-"wird standardmäßig 'flatpages/default.html' benutzt."
-
-#: models.py:17
-msgid "registration required"
-msgstr "Registrierung erforderlich"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Wenn hier ein Haken gesetzt ist, können nur angemeldete Benutzer die Seite "
-"sehen."
-
-#: models.py:24
-msgid "flat page"
-msgstr "Flat Page"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "Flat Pages"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Dieses Feld ist zwingend erforderlich."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/el/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/el/LC_MESSAGES/django.mo
deleted file mode 100644
index 7f938c9..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/el/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/el/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/el/LC_MESSAGES/django.po
deleted file mode 100644
index b17c71d..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/el/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,100 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Dimitris Glezos <glezos@transifex.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/"
-"el/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: el\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Προχωρημένες επιλογές"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Παράδειγμα: '/about/contact/'. Βεβαιωθείτε ότι περιέχει καθέτους στην αρχή "
-"και το τέλος."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Η τιμή αυτή πρέπει να περιέχει μόνο γράμματα, αριθμούς, τελείες, παύλες, "
-"κάτω παύλες, καθέτους ή περισπωμένες."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "τίτλος"
-
-#: models.py:13
-msgid "content"
-msgstr "περιεχόμενο"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "ενεργοποίηση σχολίων"
-
-#: models.py:15
-msgid "template name"
-msgstr "όνομα προτύπου"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Παράδειγμα: 'flatpages/contact_page.html'. Αν δεν εισαχθεί, το σύστημα θα "
-"χρησιμοποιήσει το 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "απαιτείται εγγραφή"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Εάν επιλεγεί, μόνο συνδεδεμένοι χρήστες θα μπορούν να βλέπουν τη σελίδα."
-
-#: models.py:24
-msgid "flat page"
-msgstr "απλή σελίδα"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "απλές σελίδες"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Αυτό το πεδίο είναι απαραίτητο."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/en/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/en/LC_MESSAGES/django.mo
deleted file mode 100644
index 08a7b68..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/en/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/en/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/en/LC_MESSAGES/django.po
deleted file mode 100644
index 53b82e5..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/en/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,88 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2010-05-13 15:35+0200\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr ""
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr ""
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr ""
-
-#: models.py:13
-msgid "content"
-msgstr ""
-
-#: models.py:14
-msgid "enable comments"
-msgstr ""
-
-#: models.py:15
-msgid "template name"
-msgstr ""
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-
-#: models.py:17
-msgid "registration required"
-msgstr ""
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-
-#: models.py:24
-msgid "flat page"
-msgstr ""
-
-#: models.py:25
-msgid "flat pages"
-msgstr ""
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.mo
deleted file mode 100644
index 62d3608..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.po
deleted file mode 100644
index acd425a..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/en_GB/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# jon_atkinson <jon@jonatkinson.co.uk>, 2012
-# Ross Poulton <ross@rossp.org>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
-"django/language/en_GB/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: en_GB\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Advanced options"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "URL is missing a leading slash."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "URL is missing a trailing slash."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Flatpage with url %(url)s already exists for site %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "title"
-
-#: models.py:13
-msgid "content"
-msgstr "content"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "enable comments"
-
-#: models.py:15
-msgid "template name"
-msgstr "template name"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "registration required"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"If this is checked, only logged-in users will be able to view the page."
-
-#: models.py:24
-msgid "flat page"
-msgstr "flat page"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "flat pages"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "This field is required."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/eo/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/eo/LC_MESSAGES/django.mo
deleted file mode 100644
index 4c13bd4..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/eo/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/eo/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/eo/LC_MESSAGES/django.po
deleted file mode 100644
index ceb8df6..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/eo/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,98 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Baptiste <baptiste+transifex@darthenay.fr>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/"
-"language/eo/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Altnivelaj elektoj"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Ekzemplo: '/pri/kontakto/'. Certigu, ke estas kondukaj kaj sekvaj strekoj."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Ĉi tiu valoro devus enhavi sole leterojn, nombrojn, punktojn, substrekoj, "
-"haltostrekoj, oblikvoj aŭ tildoj."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "La streka karaktero \"/\" ne ĉeestas en komenco de ĉeno."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "La streka karaktero \"/\" ne ĉeestas en fino de ĉeno."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Platpaĝo kun URL %(url)s jam ekzistas for la retejo %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "titolo"
-
-#: models.py:13
-msgid "content"
-msgstr "enhavo"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "ebligu rimarkoj"
-
-#: models.py:15
-msgid "template name"
-msgstr "nomo de ŝablono"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Ekzemplo: 'platpaĝoj/kontakto_paĝo.html'. Se ĉi tiu ne provizas, la sistemo "
-"uzos 'platpaĝoj/defaŭlto.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "registrado postulita"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Se ĉi tio estus elektita, nur ensalutitaj uzantoj povus rigardi la paĝon."
-
-#: models.py:24
-msgid "flat page"
-msgstr "plata paĝo"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "plataj paĝoj"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Tiu kampo estas postulata."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/es/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/es/LC_MESSAGES/django.mo
deleted file mode 100644
index 8623cb4..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/es/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/es/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/es/LC_MESSAGES/django.po
deleted file mode 100644
index c51a3a0..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/es/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antoni Aloy <aaloy@apsl.net>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Opciones avanzadas"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Ejemplo: '/about/contact/'. Asegúrese de que pone barras al principio y al "
-"final."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Este valor solo puede contener letras, números, puntos, subrayados, guiones, "
-"barras o tildes."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "A la URL le falta la barra inicial."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "A la url le falta la barra final."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Un Flatpage con la url %(url)s ya existe para el sitio %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "título"
-
-#: models.py:13
-msgid "content"
-msgstr "contenido"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "habilitar comentarios"
-
-#: models.py:15
-msgid "template name"
-msgstr "nombre de plantilla"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Ejemplo: 'flatpages/contact_page.html'. Si no es proporcionado, el sistema "
-"usará 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "debe estar registrado"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Si está marcado, sólo los usuarios registrados podrán ver la página."
-
-#: models.py:24
-msgid "flat page"
-msgstr "página estática"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "páginas estáticas"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Este campo es obligatorio."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.mo
deleted file mode 100644
index b530511..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.po
deleted file mode 100644
index 41ce279..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_AR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ramiro Morales <cramm0@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
-"django/language/es_AR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_AR\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Opciones avanzadas"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Ejemplo: '/about/contact/'. Asegúrese de usar barras '/' al principio y al "
-"final."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Este valor debe contener solamente letras, números, puntos, guiones bajos, "
-"guiones (-), barras (/) o tildes."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "A la URL le falta una / al principio"
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "A la URL le falta una / al final"
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Ya existe una flatpage con url %(url)s para el sitio %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "título"
-
-#: models.py:13
-msgid "content"
-msgstr "contenido"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "activar comentarios"
-
-#: models.py:15
-msgid "template name"
-msgstr "nombre de plantilla"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Ejemplo: 'flatpages/contact_page.html'. Si no lo proporciona, el sistema "
-"usará 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "debe estar registrado"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Si está marcado, sólo los usuarios registrados podrán ver la página."
-
-#: models.py:24
-msgid "flat page"
-msgstr "página estática"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "páginas estáticas"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Este campo es obligatorio."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.mo
deleted file mode 100644
index 725f00f..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.po
deleted file mode 100644
index 1c647c9..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_MX/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,98 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Abraham Estrada <abraham.estrada@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/"
-"language/es_MX/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_MX\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Opciones avanzadas"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Ejemplo: '/acerca/contacto/'. Asegúrese de usar barras '/' al principio y al "
-"final."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Este valor debe contener solamente letras, números, puntos, guiones bajos, "
-"guiones (-), barras (/) o tildes."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "A la URL le falta una diagonal al inicio"
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "A la URL le falta una diagonal al final"
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "La página con la url %(url)s ya existe para el sitio %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "título"
-
-#: models.py:13
-msgid "content"
-msgstr "contenido"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "activar comentarios"
-
-#: models.py:15
-msgid "template name"
-msgstr "nombre de la plantilla"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Ejemplo: 'flatpages/pagina_contacto.html'. Si no lo proporciona, el sistema "
-"usará 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "necesario registrarse"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Si está marcado, sólo los usuarios registrados podrán ver la página."
-
-#: models.py:24
-msgid "flat page"
-msgstr "página estática"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "páginas estática"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Este campo es obligatorio."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.mo
deleted file mode 100644
index fb1dde8..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.po
deleted file mode 100644
index 775ba34..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/es_VE/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,91 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (Venezuela) (http://www.transifex.com/projects/p/"
-"django/language/es_VE/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_VE\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr ""
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr ""
-
-#: models.py:13
-msgid "content"
-msgstr ""
-
-#: models.py:14
-msgid "enable comments"
-msgstr ""
-
-#: models.py:15
-msgid "template name"
-msgstr ""
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-
-#: models.py:17
-msgid "registration required"
-msgstr ""
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-
-#: models.py:24
-msgid "flat page"
-msgstr ""
-
-#: models.py:25
-msgid "flat pages"
-msgstr ""
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Este campo es obligatorio."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/et/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/et/LC_MESSAGES/django.mo
deleted file mode 100644
index 0f5cab4..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/et/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/et/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/et/LC_MESSAGES/django.po
deleted file mode 100644
index d8dd609..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/et/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jannolii <jannolii@gmail.com>, 2013
-# madisvain <madisvain@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-28 15:29+0000\n"
-"Last-Translator: jannolii <jannolii@gmail.com>\n"
-"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/"
-"et/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: et\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Lisavalikud"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Näide: '/about/contact/'. Veenduge, et URL algaks ja lõppeks kaldkriipsuga."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"See väärtus peab sisaldama ainult tähti, numbreid, punkte, alakriipse, "
-"kriipse, kaldkriipse või tildeseid."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "Internetiaadressil puudub alustav kaldkriips"
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "Internetiaadressil puudub lõpetav kaldkriips"
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Saidil %(site)s on sisuleht aadressiga %(url)s juba olemas"
-
-#: models.py:12
-msgid "title"
-msgstr "pealkiri"
-
-#: models.py:13
-msgid "content"
-msgstr "sisu"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "võimalda kommentaarid"
-
-#: models.py:15
-msgid "template name"
-msgstr "mall"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Näide: 'flatpages/contact_page.html'. Kui mall on määramata, kasutatakse "
-"vaikimisi malli 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "registreerumine nõutav"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Kui see on valitud, näevad lehte ainult sisselogitud kasutajad"
-
-#: models.py:24
-msgid "flat page"
-msgstr "sisuleht"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "sisulehed"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "See lahter on nõutav."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/eu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/eu/LC_MESSAGES/django.mo
deleted file mode 100644
index d13cb3d..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/eu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/eu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/eu/LC_MESSAGES/django.po
deleted file mode 100644
index 125c9cc..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/eu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,101 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Aitzol Naberan <anaberan@codesyntax.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/"
-"eu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Aukera aurreratuak"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Adibidez: '/about/contact/'. Ziurta zaitez '/' karaktera hasieran eta "
-"bukaeran dagoela."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Eremu honetan soilik hizki, zenbaki, puntu, azpimarra, gidoi, / edo ~ egon "
-"daitezke."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "URLak hasierako / falta du."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "URLk bukaerako / falta du."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "%(site)s webgunean dagoeneko existitzende %(url)s urldun Flatpage bat"
-
-#: models.py:12
-msgid "title"
-msgstr "izenburua"
-
-#: models.py:13
-msgid "content"
-msgstr "edukia"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "komentarioak onartu"
-
-#: models.py:15
-msgid "template name"
-msgstr "plantila izena"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Adibidez: 'flatpages/contact_page.html'. Hau ematen ez bada, sistemak "
-"'flatpages/default.html' erabiliko du."
-
-#: models.py:17
-msgid "registration required"
-msgstr "erregistratzea beharrezkoa da"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Hau markatuta badago, erregistratutako erabiltzaileek bakarrik ikusiko dute "
-"orria."
-
-#: models.py:24
-msgid "flat page"
-msgstr "flat page"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "flat pages"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Eremu hau beharrezkoa da."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/fa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/fa/LC_MESSAGES/django.mo
deleted file mode 100644
index ff33005..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/fa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/fa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/fa/LC_MESSAGES/django.po
deleted file mode 100644
index 90c848a..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/fa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Nikneshan <ali@nikneshan.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/"
-"fa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "گزینه‌های پیشرفته"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "نشانی اینترنتی"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"مثال: '/about/contact/'. مطمئن شوید که اسلش را هم در ابتدا و هم در انتها "
-"گذاشته‌اید."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr "این مقدار فقط باید حاوی حروف، اعداد، خط زیر، خط تیره و یا اسلش باشد."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "در آدرس اسلش آغازین فراموش شده است."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "در آدرس اسلش پایانی فراموش شده است."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "صفحه تخت با آدرس %(url)s برای سایت %(site)s وجود دارد "
-
-#: models.py:12
-msgid "title"
-msgstr "عنوان"
-
-#: models.py:13
-msgid "content"
-msgstr "محتوا"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "فعال کردن نظرات"
-
-#: models.py:15
-msgid "template name"
-msgstr "نام قالب"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"مثال: 'flatpages/contact_page.html'. اگر این مشخص نشود، سیستم از 'flatpages/"
-"default.html' استفاده خواهد کرد."
-
-#: models.py:17
-msgid "registration required"
-msgstr "عضویت لازم است"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"اگر این انتخاب شود، فقط کاربران وارد شده خواهند توانست این صفحه را مشاهده "
-"نمایند."
-
-#: models.py:24
-msgid "flat page"
-msgstr "صفحه تخت"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "صفحات تخت"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "این فیلد لازم است."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/fi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/fi/LC_MESSAGES/django.mo
deleted file mode 100644
index b4172ba..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/fi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/fi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/fi/LC_MESSAGES/django.po
deleted file mode 100644
index b49dd98..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/fi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,101 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# nanook <klaus.dahlen@gmail.com>, 2012
-# Ville Säävuori <ville@syneus.fi>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Finnish (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Lisäasetukset"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL-osoite"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Esimerkki: '/tietoja/yhteystiedot/'. Varmista, että sekä alussa että lopussa "
-"on kauttaviiva."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Tämä arvo saa sisältää vain kirjaimia, numeroita, pisteitä sekä ala-, tavu-, "
-"kautta- ja aaltoviivoja."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "URL:n alusta puuttuu kauttaviiva."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "URL:n lopusta puuttuu kauttaviiva."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Sivustolla %(site)s on jo sivu, jonka URL on %(url)s"
-
-#: models.py:12
-msgid "title"
-msgstr "otsikko"
-
-#: models.py:13
-msgid "content"
-msgstr "sisältö"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "salli kommentit"
-
-#: models.py:15
-msgid "template name"
-msgstr "mallipohjan nimi"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Esimerkiksi: 'flatpages/yhteydenotto.html'. Jos tämä jätetään tyhjäksi, "
-"käytetään oletuspohjaa 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "vaaditaan rekisteröityminen"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Jos tämä kohta on valittu, vain sisäänkirjautuneet käyttäjät näkevät sivun."
-
-#: models.py:24
-msgid "flat page"
-msgstr "tekstisivu"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "tekstisivut"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Tämä kenttä vaaditaan."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/fr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/fr/LC_MESSAGES/django.mo
deleted file mode 100644
index c8a1539..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/fr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/fr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/fr/LC_MESSAGES/django.po
deleted file mode 100644
index 46a0bdb..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/fr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,102 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# charettes <charette.s@gmail.com>, 2012
-# claudep <claude@2xlibre.net>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: French (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Options avancées"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Par exemple, « /a_propos/contact/ ». Vérifiez la présence du caractère « / » "
-"en début et en fin de chaîne."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Cette valeur ne peut contenir que des lettres, des chiffres, des points, des "
-"soulignés, des tirets, des barres obliques ou des tildes."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "Le caractère « / » n'est pas présent en début de chaîne."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "Le caractère « / » n'est pas présent en fin de chaîne."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "La page statique à l'URL %(url)s existe déjà pour le site %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "titre"
-
-#: models.py:13
-msgid "content"
-msgstr "contenu"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "autoriser les commentaires"
-
-#: models.py:15
-msgid "template name"
-msgstr "nom du template"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Par exemple, « flatpages/contact_page.html ». Sans définition, le système "
-"utilisera « flatpages/default.html »."
-
-#: models.py:17
-msgid "registration required"
-msgstr "enregistrement requis"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Si coché, seuls les utilisateurs connectés auront la possibilité de voir "
-"cette page."
-
-#: models.py:24
-msgid "flat page"
-msgstr "page statique"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "pages statiques"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Ce champ est obligatoire."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/fy_NL/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/fy_NL/LC_MESSAGES/django.mo
deleted file mode 100644
index 0c56af7..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/fy_NL/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/fy_NL/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/fy_NL/LC_MESSAGES/django.po
deleted file mode 100644
index 59fd8ee..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/fy_NL/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,85 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-23 02:37+0100\n"
-"PO-Revision-Date: 2011-03-15 15:46+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: fy_NL\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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr ""
-
-#: forms.py:7 models.py:7
-msgid "URL"
-msgstr ""
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:8
-msgid "title"
-msgstr ""
-
-#: models.py:9
-msgid "content"
-msgstr ""
-
-#: models.py:10
-msgid "enable comments"
-msgstr ""
-
-#: models.py:11
-msgid "template name"
-msgstr ""
-
-#: models.py:12
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-
-#: models.py:13
-msgid "registration required"
-msgstr ""
-
-#: models.py:13
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-
-#: models.py:18
-msgid "flat page"
-msgstr ""
-
-#: models.py:19
-msgid "flat pages"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ga/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ga/LC_MESSAGES/django.mo
deleted file mode 100644
index 5e800a4..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ga/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ga/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ga/LC_MESSAGES/django.po
deleted file mode 100644
index 662aa59..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ga/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,102 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Michael Thornhill <michael@maithu.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/"
-"ga/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ga\n"
-"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
-"4);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Ard-rogha"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Sampla '/about/contact/' Déan cinnte go bhfuil príomhslaid agus cúlslais "
-"agat."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Ní mór an luach a bhfuil ach litreacha, uimhreacha, poncanna, béim, dashes, "
-"slaiseanna nó thilde."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "Tá slais tosaigh in easnamh ag an URL."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "Tá slais deireanach in easnamh ag an URL."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Tá flatpage le url %(url)s ann cheana le suíomh %(site)s."
-
-#: models.py:12
-msgid "title"
-msgstr "teideal"
-
-#: models.py:13
-msgid "content"
-msgstr "inneachar"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "Cuir nótaí tráchta ar chumas"
-
-#: models.py:15
-msgid "template name"
-msgstr "ainm an teimpléid"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Sampla: 'flatpages/contact_page.html'. Muna bhfuil sé ar soláthair, bainfidh "
-"an córás úsáid as 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "clárúchán riachtanach"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Dá mbéadh é seo seicailte, ní beidh ach úsáideora logáilte isteach in ann an "
-"leathanach seo a fheiceail"
-
-#: models.py:24
-msgid "flat page"
-msgstr "leacleathanach"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "leacleathanaigh"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Tá an réimse seo riachtanach."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/gl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/gl/LC_MESSAGES/django.mo
deleted file mode 100644
index 06daca3..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/gl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/gl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/gl/LC_MESSAGES/django.po
deleted file mode 100644
index c45be56..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/gl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,100 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# fasouto <fsoutomoure@gmail.com>, 2011
-# fonso <fonzzo@gmail.com>, 2011,2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Leandro Regueiro <leandro.regueiro@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-09-07 12:03+0000\n"
-"Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
-"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/"
-"gl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Opcións avanzadas"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Exemplo: '/about/contact/'. Lembre incluír as barras ao principio e ao final."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Este valor soamente pode conter letras, números, puntos, guións baixos, "
-"guións, barras inclinadas e tiles do eñe (~)."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "Falta unha barra inclinada no principio da URL."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "Falta unha barra inclinada no final da URL."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Xa existe unha páxina simple con url %(url)s no sitio %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "título"
-
-#: models.py:13
-msgid "content"
-msgstr "contido"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "activar comentarios"
-
-#: models.py:15
-msgid "template name"
-msgstr "nome da plantilla"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Exemplo: 'flatpages/contact_page.html'. Se non se especifica, o sistema "
-"usará 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "require rexistro"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Se se marca, só poderán ver a páxina os usuarios identificados."
-
-#: models.py:24
-msgid "flat page"
-msgstr "páxina simple"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "páxinas simples"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Requírese este campo."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/he/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/he/LC_MESSAGES/django.mo
deleted file mode 100644
index 761ec0c..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/he/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/he/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/he/LC_MESSAGES/django.po
deleted file mode 100644
index e196b19..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/he/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Alex Gaynor <alex.gaynor@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Meir Kriheli <mkriheli@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "אפשרויות מתקדמות"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"לדוגמא: '/about/contact/'. יש לוודא הימצאות הקווים הנטויים בהתחלה ובסוף."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"הערך הזאת חייב להכיל רק אותיות, מספרים, נקודות, מקפים, קווים תחתונים, חתכים "
-"או סימני טילדה בלבד."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "חסר קו נטוי בתחילת URL."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "חסר קו נטוי בסוף URL."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "קיים כבר דף פשוט עם url %(url)s עבור אתר %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "כותרת"
-
-#: models.py:13
-msgid "content"
-msgstr "תוכן"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "אפשר תגובות"
-
-#: models.py:15
-msgid "template name"
-msgstr "שם תבנית"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"דוגמא: 'flatpages/contact_page.html'. אם לא צויין, המערכת תשתמש ב-'flatpages/"
-"default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "הרשמה נדרשת"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "אם מסומן, רק משתמשים מחוברים יוכלו לצפות בדף."
-
-#: models.py:24
-msgid "flat page"
-msgstr "דף פשוט"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "דפים פשוטים"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "יש להזין תוכן בשדה זה."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/hi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/hi/LC_MESSAGES/django.mo
deleted file mode 100644
index 0101160..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/hi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/hi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/hi/LC_MESSAGES/django.po
deleted file mode 100644
index d727fc4..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/hi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,96 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Chandan kumar <chandankumar.093047@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sandeep Satavlekar <sandysat@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/"
-"hi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "उन्नत विकल्प"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "अग्रणी है और अनुगामी स्लैश का होना सुनिश्चित करें. उदाहरण: '/about/contact/'"
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr "इस मूल्य में सिर्फ वर्णाक्षर, अंक, बिंदु, रेखांकन, डैश, स्लैश और टिल्ड्स ही होने चाहिए"
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "यूआरएल से प्रमुख स्लैश गायब है."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "यूआरएल से अनुगामी स्लैश गायब है."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "%(site)s साइट के लिए %(url)s यूआरएल के साथ चपटापृष्ट मौजूद है."
-
-#: models.py:12
-msgid "title"
-msgstr "शीर्षक"
-
-#: models.py:13
-msgid "content"
-msgstr "विषय सूची"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "टिप्पणियां सक्षम करें"
-
-#: models.py:15
-msgid "template name"
-msgstr "सांचे का नाम"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"उदाहरण: 'flatpages/contact_page.html'. यदि यह जिक्र नहीं किया तो यह प्रणाली "
-"'flatpages/default.html' का प्रयोग करेगी. ."
-
-#: models.py:17
-msgid "registration required"
-msgstr "पंजीकरण आवश्यक"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "अगर इस जाँच की है, केवल लॉग इन करने वालों के लिए पृष्ठ देखने में सक्षम हो जाएगा."
-
-#: models.py:24
-msgid "flat page"
-msgstr "चपटा पृष्ट"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "चपटे पृष्ट"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "यह क्षेत्र अपेक्षित हैं"
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/hr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/hr/LC_MESSAGES/django.mo
deleted file mode 100644
index 4842914..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/hr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/hr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/hr/LC_MESSAGES/django.po
deleted file mode 100644
index 1bf763c..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/hr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,101 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# aljosa <aljosa.mohorovic@gmail.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/"
-"hr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hr\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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Napredne opcije"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Primjer: '/about/contact/'. Provjerite ako imate prvi i preostale slash-eve "
-"(/)."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Ova vrijednost može sadržavati samo slova, brojeve, točke, podvlake, crtice, "
-"kose crte ili tilde."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "URL-u nedostaje početni /."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "URL-u nedostaje / na kraju."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Stranica sa URL-om %(url)s već postoji za web %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "naslov"
-
-#: models.py:13
-msgid "content"
-msgstr "sadržaj"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "uključi komentare"
-
-#: models.py:15
-msgid "template name"
-msgstr "ime template-a"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Primjer: 'flatpages/contact_page.html'. Ako navedeno nije definirano sistem "
-"će koristiti 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "registracija obavezna"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Ako je ovo selektirano samo logirani korisnici moći će vidjeti ovu stranicu."
-
-#: models.py:24
-msgid "flat page"
-msgstr "statična stranica"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "statične stranice"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Unos za ovo polje je obavezan."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/hu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/hu/LC_MESSAGES/django.mo
deleted file mode 100644
index 7786399..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/hu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/hu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/hu/LC_MESSAGES/django.po
deleted file mode 100644
index 9f54cf4..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/hu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Szilveszter Farkas <szilveszter.farkas@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/"
-"language/hu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "További beállítások"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Például: '/about/contact/'. Figyeljen a nyitó és záró perjelre!"
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Ez az érték csak betűt, számot, pontot, aláhúzást, kötőjelet, perjelet, vagy "
-"hullámot tartalmazhat."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "AZ URL-ből hiányzik a kezdő perjel."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "AZ URL-ből hiányzik a záró perjel."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "%(site)s honlapon már létezik egyszerű oldal ezzel az URL-lel: %(url)s"
-
-#: models.py:12
-msgid "title"
-msgstr "cím"
-
-#: models.py:13
-msgid "content"
-msgstr "tartalom"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "megjegyzések engedélyezése"
-
-#: models.py:15
-msgid "template name"
-msgstr "sablon neve"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Példa: 'flatpages/contact_page'. Ha ez nem létezik, a rendszer a 'flatpages/"
-"default.html' sablont fogja használni."
-
-#: models.py:17
-msgid "registration required"
-msgstr "regisztráció szükséges"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Ha ez be van jelölve, csak bejelentkezett felhasználó tudja az oldalt "
-"megnézni."
-
-#: models.py:24
-msgid "flat page"
-msgstr "egyszerű oldal"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "egyszerű oldalak"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Ennek a mezőnek a megadása kötelező."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ia/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ia/LC_MESSAGES/django.mo
deleted file mode 100644
index bfa2a58..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ia/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ia/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ia/LC_MESSAGES/django.po
deleted file mode 100644
index 0a390f0..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ia/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,91 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/"
-"language/ia/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ia\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr ""
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr ""
-
-#: models.py:13
-msgid "content"
-msgstr ""
-
-#: models.py:14
-msgid "enable comments"
-msgstr ""
-
-#: models.py:15
-msgid "template name"
-msgstr ""
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-
-#: models.py:17
-msgid "registration required"
-msgstr ""
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-
-#: models.py:24
-msgid "flat page"
-msgstr ""
-
-#: models.py:25
-msgid "flat pages"
-msgstr ""
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Iste campo es obligatori."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/id/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/id/LC_MESSAGES/django.mo
deleted file mode 100644
index 96d5818..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/id/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/id/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/id/LC_MESSAGES/django.po
deleted file mode 100644
index 8d8f2fb..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/id/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,101 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# rodin <romihardiyanto@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Opsi lanjutan"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Contoh: '/about/contact/'. Pastikan dimulai dan diakhiri dengan garis miring "
-"(/)."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Nilai hanya hanya dapat berisi huruf, angka, titik, garis bawah, tanda "
-"minus, garis miring, atau tanda tilde."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "Tidak ada garis miring awal pada URL."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "Tidak ada garis miring akhir pada URL."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Laman tetap %(url)s sudah ada untuk situs %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "judul"
-
-#: models.py:13
-msgid "content"
-msgstr "isi"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "aktifkan komentar"
-
-#: models.py:15
-msgid "template name"
-msgstr "nama templat"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Contoh: 'flatpages/contact_page.html'. Jika tidak tersedia, sistem akan "
-"menggunakan 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "pendaftaran diwajibkan"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Jika dipilih, hanya pengguna ter-otentikasi yang bisa mengunjungi halaman "
-"ini."
-
-#: models.py:24
-msgid "flat page"
-msgstr "laman tetap"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "laman tetap"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Bidang ini wajib diisi."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/is/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/is/LC_MESSAGES/django.mo
deleted file mode 100644
index 581d4f4..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/is/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/is/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/is/LC_MESSAGES/django.po
deleted file mode 100644
index c7bf80b..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/is/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Hafsteinn Einarsson <haffi67@gmail.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/"
-"language/is/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: is\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Ítarlegar stillingar"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "Veffang"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Dæmi: '/about/contact/'. Passaðu að hafa skástrik fremst og aftast."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Þessi reitur má aðeins innihalda bókstafi (ekki broddstafi), tölustafi og "
-"táknin . / - _ og ~."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "Skástrik vantar fremst í slóð"
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "Skástrik vantar aftast í slóð"
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "'Flatpage' með slóðina %(url)s er þegar til fyrir síðuna %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "titill"
-
-#: models.py:13
-msgid "content"
-msgstr "innihald"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "virkja athugasemdir"
-
-#: models.py:15
-msgid "template name"
-msgstr "nafn sniðmáts"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Dæmi: 'flatpages/contact_page.html'. Ef ekkert er gefið upp mun kerfið nota "
-"'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "skráning nauðsynleg"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Ef þetta er valið geta eingöngu innskráðir notendur séð síðuna."
-
-#: models.py:24
-msgid "flat page"
-msgstr "flatskrá"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "flatskrár"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Þennan reit þarf að fylla út."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/it/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/it/LC_MESSAGES/django.mo
deleted file mode 100644
index b857b9a..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/it/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/it/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/it/LC_MESSAGES/django.po
deleted file mode 100644
index 02c6e40..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/it/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,100 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Opzioni avanzate"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Esempio: '/about/contact/'. Assicurati di inserire le barre diagonali "
-"iniziali e finali."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Questo valore deve contenere solo lettere, numeri, punti, underscore, "
-"trattini, barre diagonali o tilde."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "Manca una barra iniziale nella URL."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "Manca una barra finale nella URL."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "La flatpage con url %(url)s esiste già per il sito %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "titolo"
-
-#: models.py:13
-msgid "content"
-msgstr "contenuto"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "abilita commenti"
-
-#: models.py:15
-msgid "template name"
-msgstr "nome template"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Esempio: 'flatpages/contact_page.html'. Se non specificato, il sistema userà "
-"'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "registrazione obbligatoria"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Se selezionato, solo gli utenti che hanno effettuato l'accesso potranno "
-"vedere la pagina."
-
-#: models.py:24
-msgid "flat page"
-msgstr "flat page"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "flat page"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Questo campo è obbligatorio."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ja/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ja/LC_MESSAGES/django.mo
deleted file mode 100644
index a6bbde1..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ja/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ja/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ja/LC_MESSAGES/django.po
deleted file mode 100644
index 6c585fe..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ja/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Shinya Okano <tokibito@gmail.com>, 2012
-# Tetsuya Morimoto <tetsuya.morimoto@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/"
-"ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "詳細設定"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"例: '/about/contact/'. 先頭と最後にスラッシュがあるか確認してください。"
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"この値は文字、数字、ドット、アンダースコア、ダッシュ、スラッシュかチルダのみ"
-"でなければいけません。"
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "URLの先頭はスラッシュが必要です。"
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "URLの末尾はスラッシュが必要です。"
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "URL %(url)s のフラットページは %(site)s のサイトに既に存在しています。"
-
-#: models.py:12
-msgid "title"
-msgstr "タイトル"
-
-#: models.py:13
-msgid "content"
-msgstr "内容"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "コメントを有効にする"
-
-#: models.py:15
-msgid "template name"
-msgstr "テンプレート名"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"例: 'flatpages/contact_page.html'. 指定しなければ、デフォルト設定"
-"の'flatpages/default.html' を使います。"
-
-#: models.py:17
-msgid "registration required"
-msgstr "登録が必要です"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "チェックした場合、ログインしたユーザーだけがページを参照できます。"
-
-#: models.py:24
-msgid "flat page"
-msgstr "フラットページ"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "フラットページ"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "このフィールドは必須です。"
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ka/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ka/LC_MESSAGES/django.mo
deleted file mode 100644
index 62a4334..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ka/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ka/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ka/LC_MESSAGES/django.po
deleted file mode 100644
index 86ecca0..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ka/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,102 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Bouatchidzé <a@anbz.net>, 2013
-# David Avsajanishvili <avsd05@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/"
-"ka/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ka\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "დამატებითი პარამეტრები"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"მაგალითი: '/about/contact/'. ყურადღება მიაქციეთ დახრილ ხაზებს თავში და "
-"ბოლოში."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"ეს მნიშვნელობა უნდა შეიცავდეს მხოლოდ ლათინურ ასოებს, ციფრებს, წერტილებს, "
-"ხაზგასმის ნიშნებს, დეფისებს, დახრილ ხაზებს და ტილდებს."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "URL-ს დასაწყისში აკლია დახრილი ხაზი."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "URL-ს ბოლოში აკლია დახრილი ხაზი."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "უბრალო გვერდი url-ით %(url)s უკვე არსებობს საიტისთვის %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "სათაური"
-
-#: models.py:13
-msgid "content"
-msgstr "კონტენტი"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "ჩავრთოთ კომენტარები"
-
-#: models.py:15
-msgid "template name"
-msgstr "შაბლონის სახელი"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"მაგალითი: 'flatpages/contact_page.html'. თუ იგი მითითებული არ არის, "
-"გამოყენებული იქნება 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "რეგისტრაცია აუცილებელია"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"თუ ეს დროშა ჩართულია, მხოლო შემოსულ მომხმარებლებს ექნებათ გვერდის "
-"დათვალიერების საშუალება."
-
-#: models.py:24
-msgid "flat page"
-msgstr "უბრალო გვერდი"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "უბრალო გვერდები"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "ეს ველი აუცილებელია."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/kk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/kk/LC_MESSAGES/django.mo
deleted file mode 100644
index c9c5bef..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/kk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/kk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/kk/LC_MESSAGES/django.po
deleted file mode 100644
index 9ad918c..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/kk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# yun_man_ger <germanilyin@gmail.com>, 2011
-# Zhazira <zhazira.mt@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/"
-"kk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kk\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Толық опциялар"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Мысал: '/about/contact/'. Басында және аяғында слэштің болуын тексеріңіз."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Бұл мән тек әріптерден, сандардан, нүктелерден, төменгі сызықтардан, "
-"сызықшалардан, слэштерден немесе тильдалардан құралуы тиіс. "
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "атау"
-
-#: models.py:13
-msgid "content"
-msgstr "мазмұн"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "комментарийларды рұқсат ету"
-
-#: models.py:15
-msgid "template name"
-msgstr "шаблон атауы"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Мысал: 'flatpages/contact_page.html'. Ештенке берілмесе, 'flatpages/default."
-"html' қолданылады."
-
-#: models.py:17
-msgid "registration required"
-msgstr "тіркеу қажетті"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Бұл белгіленген жағдайда, тек енген қолданушылар ғана бетті көре алады."
-
-#: models.py:24
-msgid "flat page"
-msgstr "Жай бет"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "Жай беттер"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Бұл өрісті толтыру міндетті."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/km/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/km/LC_MESSAGES/django.mo
deleted file mode 100644
index 90daaf5..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/km/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/km/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/km/LC_MESSAGES/django.po
deleted file mode 100644
index f836a57..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/km/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Khmer (http://www.transifex.com/projects/p/django/language/"
-"km/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: km\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr ""
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "អាស័យដ្ឋានគេហទំព័រ(URL)"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"ឧទាហរណ៍  '/about/contact/' ។ ត្រូវប្រាកដថាមានសញ្ញា / ទាំងនៅផ្នែកខាងមុខ និង ខាងក្រោយ។"
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "ចំណងជើង"
-
-#: models.py:13
-msgid "content"
-msgstr "អត្ថន័យ"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "អនុញ្ញាត"
-
-#: models.py:15
-msgid "template name"
-msgstr "ឈ្មោះឯកសារគំរូ"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"ឧទាហរណ៍ 'flatpages/contact_page.html'។ ប្រសិនឯកសារនេះមិនមានទេ​"
-" នោះឯកសារ 'flatpages/default.html'នឹងត្រូវប្រើ។"
-
-#: models.py:17
-msgid "registration required"
-msgstr "ត្រូវការសមាជិកភាព"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "ប្រសិនជាចុចជ្រើសរើសយកជំរើសនេះ នោះ មានតែសមាជិកទេដែលអាចមើលទំព័រនេះបាន​។"
-
-#: models.py:24
-msgid "flat page"
-msgstr "ទំព័ថ្មី"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "ទំព័ថ្មី"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "ចាំបាច់បំពេញទិន្នន័យកន្លែងនេះ។"
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/kn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/kn/LC_MESSAGES/django.mo
deleted file mode 100644
index 7b0d1b0..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/kn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/kn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/kn/LC_MESSAGES/django.po
deleted file mode 100644
index 6168257..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/kn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,96 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/"
-"kn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kn\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr ""
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"ಉದಾ:'/about/contact/'. ಮೊದಲು ಮತ್ತು ಕೊನೆಯಲ್ಲಿ ಓರೆಗೆರೆ (/) ಇರುವಂತೆ ನೋಡಿಕೊಳ್ಳಿ."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "ಶೀರ್ಷಿಕೆ"
-
-#: models.py:13
-msgid "content"
-msgstr "ಒಳವಿಷಯ"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "ಟಿಪ್ಪಣಿಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"
-
-#: models.py:15
-msgid "template name"
-msgstr "ಟೆಂಪ್ಲೇಟಿನ ಹೆಸರು"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"ಉದಾ:'flatpages/contact_page.html'. ಇದನ್ನು ಕೊಡದಿದ್ದರೆ ಗಣಕವ್ಯವಸ್ಥೆಯು 'flatpages/"
-"default.html' ಅನ್ನು ಬಳಸುವದು."
-
-#: models.py:17
-msgid "registration required"
-msgstr "ನೋಂದಾವಣೆ ಅಗತ್ಯವಿದೆ."
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"ಇದರಲ್ಲಿ ಗುರುತು ಮಾಡಿದರೆ, ಒಳಬಂದ (ಲಾಗಿನ್ ಆದ) ಬಳಕೆದಾರರು ಮಾತ್ರ ಪುಟವನ್ನು ನೋಡಬಹುದು."
-
-#: models.py:24
-msgid "flat page"
-msgstr "ಚಪ್ಪಟೆ ಪುಟ"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "ಚಪ್ಪಟೆ ಪುಟಗಳು"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "ಈ ಸ್ಥಳವು ಅಗತ್ಯವಿರುತ್ತದೆ."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ko/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ko/LC_MESSAGES/django.mo
deleted file mode 100644
index d2e215c..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ko/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ko/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ko/LC_MESSAGES/django.po
deleted file mode 100644
index a3b04e4..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ko/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,96 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jaehong Kim <mixe@korea.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/"
-"ko/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ko\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "고급 옵션"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "앞, 뒤에 슬래시(/)를 넣으세요. 예:'/about/contact/' "
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"이 문자열은 문자, 수자, 점, 언더스코어, 대쉬, 슬래쉬, 틸드만 사용해야 합니다."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "제목"
-
-#: models.py:13
-msgid "content"
-msgstr "내용"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "사용 가능한 코멘트"
-
-#: models.py:15
-msgid "template name"
-msgstr "템플릿명"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"예: 'flatpages/contact_page.html' 를 사용할 수 없는 경우 시스템이 'flatpages/"
-"default.html' (을)를 사용합니다."
-
-#: models.py:17
-msgid "registration required"
-msgstr "등록하세요."
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "체크할 경우, 로그인 사용자만 해당 페이지를 볼 수 있습니다."
-
-#: models.py:24
-msgid "flat page"
-msgstr "플랫 페이지"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "플랫 페이지(들)"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "필수 항목입니다."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/lb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/lb/LC_MESSAGES/django.mo
deleted file mode 100644
index 93360fa..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/lb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/lb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/lb/LC_MESSAGES/django.po
deleted file mode 100644
index 9bd6190..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/lb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,91 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/django/"
-"language/lb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr ""
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr ""
-
-#: models.py:13
-msgid "content"
-msgstr ""
-
-#: models.py:14
-msgid "enable comments"
-msgstr ""
-
-#: models.py:15
-msgid "template name"
-msgstr ""
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-
-#: models.py:17
-msgid "registration required"
-msgstr ""
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-
-#: models.py:24
-msgid "flat page"
-msgstr ""
-
-#: models.py:25
-msgid "flat pages"
-msgstr ""
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/lt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/lt/LC_MESSAGES/django.mo
deleted file mode 100644
index 9ed91eb..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/lt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/lt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/lt/LC_MESSAGES/django.po
deleted file mode 100644
index 1cf5516..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/lt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,101 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kostas <tamosiunas@gmail.com>, 2011
-# Simonas Kazlauskas <simonas@kazlauskas.me>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/"
-"language/lt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lt\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
-"%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Sudėtingesni nustatymai"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "Nuoroda"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Pavyzdžiui: '/about/contact/'. Įsitikink, kad yra pasvirieji brūkšniai "
-"pradžioj ir gale."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Ši reikšmė gali būti sudaryta tik iš raidžių, skaičių, pabraukimų, brūkšnių "
-"ir/arba pasvirų brūkšnių."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "Nuorodos pradžioje trūksta pasvirojo brūkšnio."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "Nuorodos pabaigoje trūksta pasvirojo brūkšnio."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Paprastas puslapis su adresu %(url)s %(site)s puslapyje jau egzistuoja"
-
-#: models.py:12
-msgid "title"
-msgstr "pavadinimas"
-
-#: models.py:13
-msgid "content"
-msgstr "turinys"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "įjungti komentavimą"
-
-#: models.py:15
-msgid "template name"
-msgstr "šablono vardas"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Pavyzdžiui: 'flatpages/contact_page.html'. Jeigu bus nenurodytas, sistema "
-"naudos 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "registracija privaloma"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Jeigu pažymėta, tik prisijungę vartotojai galės matyti šį puslapį."
-
-#: models.py:24
-msgid "flat page"
-msgstr "paprastas puslapis"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "paprasti puslapiai"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Šis laukas yra privalomas."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/lv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/lv/LC_MESSAGES/django.mo
deleted file mode 100644
index 5bd33cb..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/lv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/lv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/lv/LC_MESSAGES/django.po
deleted file mode 100644
index a04caae..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/lv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,98 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/"
-"lv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lv\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Papildus opcijas"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Piemēram: '/about/contact/'. Pārliecinieties, ka esat ievietojuši sākuma un "
-"beigu slīpsvītras."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "virsraksts"
-
-#: models.py:13
-msgid "content"
-msgstr "saturs"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "ieslēgt komentārus"
-
-#: models.py:15
-msgid "template name"
-msgstr "šablona nosaukums"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Piemēram: 'flatpages/contact_page.html'. Ja tas nav norādīts, sistēma "
-"lietos 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "reģistrācija obligāta"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Ja šis ir atzīmēts, tikai pieslēgušies lietotāji, varēs piekļūt šai lapu."
-
-#: models.py:24
-msgid "flat page"
-msgstr "vienkārša lapa"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "vienkāršas lapas"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Šis lauks ir obligāts."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/mk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/mk/LC_MESSAGES/django.mo
deleted file mode 100644
index 5776d0f..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/mk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/mk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/mk/LC_MESSAGES/django.po
deleted file mode 100644
index e3cd539..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/mk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,101 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# vvangelovski <vvangelovski@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/"
-"language/mk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mk\n"
-"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Напредни можности"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"На пр. „/за_сајтот/контакт/“. Осигурајте се да имате коса црта и на крајот и "
-"на почетокот."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Оваа вредност смее да има само букви, бројки, долни црти, црти, коси црти "
-"или тилди."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "На линкот му недостасува почетна црта."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "На линкот му недостасува завршна црта."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Страница со url %(url)s веќе постои за сајт %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "наслов"
-
-#: models.py:13
-msgid "content"
-msgstr "содржина"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "овозможи коментари"
-
-#: models.py:15
-msgid "template name"
-msgstr "име на шаблонот"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"На пр. „flatpages/kontakt.html'. Ако не го внесете ова, системот ќе користи "
-"„flatpages/default.html“."
-
-#: models.py:17
-msgid "registration required"
-msgstr "потребна е регистрација"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Ако ова е штиклирано, само најавените корисници ќе можат да ја гледаат оваа "
-"страница."
-
-#: models.py:24
-msgid "flat page"
-msgstr "статична страница"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "статични страници"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Ова поле е задолжително."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ml/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ml/LC_MESSAGES/django.mo
deleted file mode 100644
index 7d396d2..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ml/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ml/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ml/LC_MESSAGES/django.po
deleted file mode 100644
index 9e1fdd4..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ml/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Rajeesh Nair <rajeeshrnair@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/"
-"language/ml/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ml\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "ഉന്നത സൗകര്യങ്ങള്‍"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL(വെബ്-വിലാസം)"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "ഉദാ: '/about/contact/'. ആദ്യവും അവസാനവും സ്ളാഷുകള്‍ നിര്‍ബന്ധം."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"ഈ വിലയില്‍ അക്ഷരങ്ങള്‍, അക്കങ്ങള്‍, വിരാമം (ബിന്ദു), അടിവര (അണ്ടര്‍സ്കോര്‍), വരകള്‍ (ഡാഷ്), സ്ളാഷ്"
-"(/), ടില്ഡ് (~) എന്നിവ മാത്രമേ പാടുള്ളൂ."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "URLന്റെ മുന്‍വശത്ത് ഒരു സ്ലാഷിന്റെ കുറവുണ്ട്."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "URLന്റെ പിന്‍വശത്ത് ഒരു സ്ലാഷിന്റെ കുറവുണ്ട്."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "%(site)s എന്ന സൈറ്റിനു %(url)s എന്ന url ഉള്ള ഫ്ലാറ്റ്പേജ് നിലവിലുണ്ട്"
-
-#: models.py:12
-msgid "title"
-msgstr "ശീര്‍ഷകം"
-
-#: models.py:13
-msgid "content"
-msgstr "ഉള്ളടക്കം"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "അഭിപ്രായങ്ങള്‍ അനുവദിക്കുക"
-
-#: models.py:15
-msgid "template name"
-msgstr "ടെമ്പ്ലേറ്റിന്റെ പേര്"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"ഉദാ: 'flatpages/contact_page.html'. ഇതു നല്കിയില്ലെങ്കില്‍, 'flatpages/default."
-"html' എന്ന വിലാസം ഉപയോഗിക്കപ്പെടും."
-
-#: models.py:17
-msgid "registration required"
-msgstr "രജിസ്ട്രേഷന്‍ ആവശ്യമാണ്"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "ഇതു ടിക് ചെയ്താല്‍ പിന്നെ ലോഗ്-ഇന്‍ ചെയ്ത യൂസര്‍ക്കു മാത്രമേ ഈ പേജ് കാണാന്‍ കഴിയൂ."
-
-#: models.py:24
-msgid "flat page"
-msgstr "ഫ്ളാറ്റ് പേജ്"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "ഫ്ളാറ്റ് പേജുകള്‍"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "ഈ കള്ളി(ഫീല്‍ഡ്) നിര്‍ബന്ധമാണ്."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/mn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/mn/LC_MESSAGES/django.mo
deleted file mode 100644
index e587d33..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/mn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/mn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/mn/LC_MESSAGES/django.po
deleted file mode 100644
index 0135558..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/mn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,100 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/"
-"language/mn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Дээд хэрэглээний сонголтууд"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Жишээ: '/about/contact/'. Хөтлөх буюу зам заах ташуу зураас байх хэрэгтэй."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Энэ хэсэгт зөвхөн үсэг, тоо, цэг, доогуур зураас, налуу зураасууд бичих "
-"боломжтой. "
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "URL ийн эхний slash ийг мартсан байна."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "URL ийн арийн slash ийг мартсан байна"
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Хуудасны хаяг %(url)s %(site)s дээр давхардаж байна."
-
-#: models.py:12
-msgid "title"
-msgstr "гарчиг"
-
-#: models.py:13
-msgid "content"
-msgstr "агуулга"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "санал сэтгэгдэл үлдээх боломжтой болгох"
-
-#: models.py:15
-msgid "template name"
-msgstr "загварын нэр"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Жишээ: 'flatpages/contact_page.html'. Хэрэв ийм зүйл гарч ирэхгүй бол систем "
-"'flatpages/default.html'-ийг хэрэглэнэ."
-
-#: models.py:17
-msgid "registration required"
-msgstr "бүртгэгдсэн хэрэглэгчид үзнэ"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Үүнийг чагтлавал зөвхөн сайтад нэвтэрсэн хэрэглэгч сайтыг харах боломжтой "
-"болно."
-
-#: models.py:24
-msgid "flat page"
-msgstr "өөрчлөлтгүй хуудас"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "өөрчлөлтгүй хуудаснууд"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Энэ талбарыг бөглөх шаардлагатай."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/my/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/my/LC_MESSAGES/django.mo
deleted file mode 100644
index 5d7743d..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/my/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/my/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/my/LC_MESSAGES/django.po
deleted file mode 100644
index 7185b7f..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/my/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,91 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Burmese (http://www.transifex.com/projects/p/django/language/"
-"my/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: my\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr ""
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "ယူအာအယ်"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr ""
-
-#: models.py:13
-msgid "content"
-msgstr ""
-
-#: models.py:14
-msgid "enable comments"
-msgstr ""
-
-#: models.py:15
-msgid "template name"
-msgstr ""
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-
-#: models.py:17
-msgid "registration required"
-msgstr ""
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-
-#: models.py:24
-msgid "flat page"
-msgstr ""
-
-#: models.py:25
-msgid "flat pages"
-msgstr ""
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/nb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/nb/LC_MESSAGES/django.mo
deleted file mode 100644
index 7af11a6..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/nb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/nb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/nb/LC_MESSAGES/django.po
deleted file mode 100644
index ee11265..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/nb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jonklo <jonklo@gmail.com>, 2011-2012
-# Sigurd Gartmann <sigurdga-transifex@sigurdga.no>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/"
-"language/nb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Avanserte innstillinger"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "Nettadresse"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Eksempel: «/om/kontakt/». Kontroller at det er en skråstrek foran og bak."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Dette feltet kan kun inneholde bokstaver, nummer, skilletegn, understreker, "
-"bindestreker, skråstreker eller tilder."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "URL mangler innledende skråstrek."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "URL mangler avsluttende skråstrek."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Flatside med URL-en %(url)s finnes allerede for siden %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "tittel"
-
-#: models.py:13
-msgid "content"
-msgstr "innhold"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "tillat kommentarer"
-
-#: models.py:15
-msgid "template name"
-msgstr "malnavn"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Eksempel: «flatpages/kontakt_side.html». Hvis denne ikke er gitt, vil "
-"«flatpages/default.html» bli brukt."
-
-#: models.py:17
-msgid "registration required"
-msgstr "krever registrering"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Hvis denne er krysset av, kan kun innloggede brukere se siden."
-
-#: models.py:24
-msgid "flat page"
-msgstr "flatside"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "flatsider"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Feltet er påkrevet."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ne/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ne/LC_MESSAGES/django.mo
deleted file mode 100644
index 5b6a98d..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ne/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ne/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ne/LC_MESSAGES/django.po
deleted file mode 100644
index 7ed9a9f..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ne/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,92 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Sagar Chalise <chalisesagar@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/"
-"ne/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ne\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr ""
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "उदाहरणका लागि: '/about/contact/' । अगाडि र पछाडि '/' राख्न नभुल्नुहोला ।"
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr "यो मानमा अंक, वर्ण, थोप्लो, अन्डरस्कोर, ड्यास, स्ल्यास र टिल्ड मात्र हुनुपर्दछ ।"
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "शीर्षक"
-
-#: models.py:13
-msgid "content"
-msgstr "विषय"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "प्रतिकृयाको लागि मञ्जुरी दिनुहोस"
-
-#: models.py:15
-msgid "template name"
-msgstr ""
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-
-#: models.py:17
-msgid "registration required"
-msgstr ""
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-
-#: models.py:24
-msgid "flat page"
-msgstr ""
-
-#: models.py:25
-msgid "flat pages"
-msgstr ""
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "यो फाँट अनिवार्य छ ।"
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/nl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/nl/LC_MESSAGES/django.mo
deleted file mode 100644
index 7ed69bf..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/nl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/nl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/nl/LC_MESSAGES/django.po
deleted file mode 100644
index f1a72ae..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/nl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,101 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Harro van der Klauw <hvdklauw@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Jeffrey Gelens <jeffrey@noppo.pro>, 2012
-# Tino de Bruijn <tinodb@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Dutch (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Geavanceerde opties"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Voorbeeld: '/about/contact/'. Zorg voor slashes aan het begin en eind."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Deze waarde mag alleen letters, cijfers, punten, lage streepjes, streepjes, "
-"schuine strepen of tildes bevatten."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "In de URL ontbreekt een begin slash."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "In de URL ontbreekt een eind slash."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Platte pagina met url %(url)s bestaat al voor site %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "titel"
-
-#: models.py:13
-msgid "content"
-msgstr "inhoud"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "opmerkingen toestaan"
-
-#: models.py:15
-msgid "template name"
-msgstr "sjabloonnaam"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Voorbeeld: 'flatpages/contact_page.html'. Als deze niet is opgegeven, dan "
-"wordt 'flatpages/default.html' gebruikt."
-
-#: models.py:17
-msgid "registration required"
-msgstr "registratie verplicht"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Indien dit is aangevinkt kunnen alleen ingelogde gebruikers deze pagina "
-"bekijken."
-
-#: models.py:24
-msgid "flat page"
-msgstr "platte pagina"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "platte pagina's"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Dit veld is verplicht."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/nn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/nn/LC_MESSAGES/django.mo
deleted file mode 100644
index 2047300..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/nn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/nn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/nn/LC_MESSAGES/django.po
deleted file mode 100644
index d4c8641..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/nn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,98 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# hgrimelid <havard@grimelid.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/"
-"language/nn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Avanserte innstillingar"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "Nettadresse"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Eksempel: '/om/kontakt/'. Kontroller at det er ein skråstrek framfor og bak."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Dette feltet kan berre innehalde bokstavar, nummer, skilleteikn, "
-"understrekar, bindestrekar, skråstrekar eller tilder."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "tittel"
-
-#: models.py:13
-msgid "content"
-msgstr "innhald"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "tillat kommentarer"
-
-#: models.py:15
-msgid "template name"
-msgstr "malnamn"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Døme: 'flatpages/kontakt_side.html'. Dersom denne ikkje er gjeve, vil "
-"'flatpages/default.html' bli brukt."
-
-#: models.py:17
-msgid "registration required"
-msgstr "krevar registrering"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Dersom denne er kryssa av, kan berre innlogga brukarar sjå sida."
-
-#: models.py:24
-msgid "flat page"
-msgstr "flatside"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "flatsider"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Feltet er påkravd."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/os/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/os/LC_MESSAGES/django.mo
deleted file mode 100644
index 975b976..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/os/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/os/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/os/LC_MESSAGES/django.po
deleted file mode 100644
index 2e97a3f..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/os/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,100 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Ossetic (http://www.transifex.com/projects/p/django/language/"
-"os/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: os\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Флдӕр фадӕттӕ"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Цӕвиттон: '/about/contact/'. Дӕ хъус дар цӕмӕ дзы сӕйраг ӕмӕ хицӕнгӕнаг "
-"слӕштӕ уой."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Ам хъуамӕ ӕрмӕст дамгъӕтӕ, стъӕлфытӕ, бынылхӕххытӕ, дефистӕ, слӕштӕ ӕмӕ "
-"тильдӕтӕ уой."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "URL-ы сӕйраг слӕш нӕй."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "URL-ы хицӕнгӕнаг слӕш нӕй."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "%(url)s url-имӕ тъӕпӕнфарс нырид ис %(site)s сайтӕн"
-
-#: models.py:12
-msgid "title"
-msgstr "сӕр"
-
-#: models.py:13
-msgid "content"
-msgstr "мидис"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "хъуыдытӕ баиу кӕнын"
-
-#: models.py:15
-msgid "template name"
-msgstr "хуызӕгы ном"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Цӕвиттон: 'flatpages/contact_page.html'. Кӕд ай лӕвӕрд нӕу, уӕд системӕ "
-"сӕвӕрдзӕн 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "регистраци хъӕуы"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Кӕд ай нысангонд у, уӕд ацы фарс ӕрмӕст системӕмӕ хызт архайджытӕн уыдзӕнис "
-"бар уынын."
-
-#: models.py:24
-msgid "flat page"
-msgstr "тъӕпӕн фарс"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "тъӕпӕн фӕрстӕ"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Ацы быдыр ӕнӕмӕнг у."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/pa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/pa/LC_MESSAGES/django.mo
deleted file mode 100644
index 40807fd..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/pa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/pa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/pa/LC_MESSAGES/django.po
deleted file mode 100644
index 112d00f..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/pa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,92 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/"
-"language/pa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pa\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "ਤਕਨੀਕੀ ਚੋਣਾਂ"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "ਟਾਈਟਲ"
-
-#: models.py:13
-msgid "content"
-msgstr "ਸਮੱਗਰੀ"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "ਟਿੱਪਣੀਆਂ ਚਾਲੂ"
-
-#: models.py:15
-msgid "template name"
-msgstr "ਟੈਪਲੇਟ ਨਾਂ"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-
-#: models.py:17
-msgid "registration required"
-msgstr "ਰਜਿਸਟਰੇਸ਼ਨ ਲੋੜੀਦੀ ਹੈ"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-
-#: models.py:24
-msgid "flat page"
-msgstr ""
-
-#: models.py:25
-msgid "flat pages"
-msgstr ""
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "ਇਹ ਖੇਤਰ ਲਾਜ਼ਮੀ ਹੈ।"
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/pl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/pl/LC_MESSAGES/django.mo
deleted file mode 100644
index 760188f..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/pl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/pl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/pl/LC_MESSAGES/django.po
deleted file mode 100644
index e368873..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/pl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,102 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# angularcircle, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Opcje zaawansowane"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Przykład: '/about/contact/'. Upewnij się że wpisałeś otwierający i "
-"zamykający ukośnik."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"To pole może zawierać jedynie litery, cyfry, kropki, podkreślenia, myślniki "
-"i ukośniki lub tyldy."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "Na początku adresu URL brakuje ukośnika"
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "Na końcu adresu URL brakuje ukośnika"
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-"Strona statyczna o adresie %(url)s została już utworzona dla domeny %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "tytuł"
-
-#: models.py:13
-msgid "content"
-msgstr "zawartość"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "włącz komentarze"
-
-#: models.py:15
-msgid "template name"
-msgstr "nazwa szablonu"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Przykład: 'flatpages/contact_page.html'. Jeżeli nie zostanie podane, system "
-"użyje 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "wymagana rejestracja"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Jeżeli zaznaczone - tylko zalogowani użytkownicy będą mogli zobaczyć stronę."
-
-#: models.py:24
-msgid "flat page"
-msgstr "strona statyczna"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "strony statyczne"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "To pole jest wymagane."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/pt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/pt/LC_MESSAGES/django.mo
deleted file mode 100644
index 402e42f..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/pt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/pt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/pt/LC_MESSAGES/django.po
deleted file mode 100644
index 3a21843..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/pt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,100 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nuno Mariz <nmariz@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-31 16:28+0000\n"
-"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
-"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Opções avançadas"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Exemplo: '/about/contact/'. Verifique se possui as barras no inicio e no fim."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Este valor apenas poderá conter letras, números, pontos, underscores, "
-"hífenes, barras ou tils."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "Está a faltar a barra inicial no URL."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "Está a faltar a barra final no URL."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "A página plana com o url %(url)s já existe no site %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "título"
-
-#: models.py:13
-msgid "content"
-msgstr "conteúdo"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "permitir comentários"
-
-#: models.py:15
-msgid "template name"
-msgstr "nome da template"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Exemplo: 'flatpages/contact_page.html'. Se não for fornecido, o sistema "
-"usará: 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "é necessário registo"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Se estiver selecionado, apenas utilizadores autenticados poderão ver esta "
-"página."
-
-#: models.py:24
-msgid "flat page"
-msgstr "página plana"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "páginas planas"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Este campo é obrigatório."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.mo
deleted file mode 100644
index 8953603..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.po
deleted file mode 100644
index cb42a54..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/pt_BR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,103 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# andrewsmedina <andrewsmedina@gmail.com>, 2013
-# Eduardo Carvalho <eduardocereto@gmail.com>, 2011
-# Fábio <bnafta@gmail.com>, 2013
-# Guilherme Gondim <semente@taurinus.org>, 2012-2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# seocam <seocam@seocam.com>, 2013
-# Thiago Avelino <Thiagoavelinoster@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-08-13 19:01+0000\n"
-"Last-Translator: Guilherme Gondim <semente@taurinus.org>\n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
-"django/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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Opções avançadas"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "Exemplo: '/sobre/contato/'. Lembre-se das barras no começo e no final."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Este valor deve conter apenas letras, números, pontos, sublinhados, traços, "
-"barras ou til."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "Está faltando uma barra no início da URL."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "Está faltando uma barra no final da URL."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Uma flatpage com a URL %(url)s já existe para o site %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "título"
-
-#: models.py:13
-msgid "content"
-msgstr "conteúdo"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "habilitar comentários"
-
-#: models.py:15
-msgid "template name"
-msgstr "nome do template"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Exemplo: 'flatpages/contact_page.html'. Se não for informado, será utilizado "
-"'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "registro obrigatório"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Se estiver assinalado, apenas usuários autenticados poderão ver a página."
-
-#: models.py:24
-msgid "flat page"
-msgstr "página plana"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "páginas planas"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Este campo é obrigatório."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ro/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ro/LC_MESSAGES/django.mo
deleted file mode 100644
index a12342b..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ro/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ro/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ro/LC_MESSAGES/django.po
deleted file mode 100644
index 854d9ea..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ro/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,102 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Daniel Ursache-Dogariu <contact@danniel.net>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/"
-"ro/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1));\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Opțiuni avansate"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Exemplu: '/despre/contact/'. Asigurați-vă că sunt bare oblice la început și "
-"la sfârșit."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Această valoare trebuie să conţină doar litere, numere, puncte, linii joase, "
-"cratime, bare oblice sau tilde."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "titlu"
-
-#: models.py:13
-msgid "content"
-msgstr "conținut"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "permite comentarii"
-
-#: models.py:15
-msgid "template name"
-msgstr "nume șablon"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Exemplu: 'flatpages/contact_page.html'. Dacă aceasta nu există, sistemul va "
-"folosi 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "necesită înregistrare"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Dacă aceasta este bifată, numai utilizatorii autentificați vor putea vedea "
-"pagina."
-
-#: models.py:24
-msgid "flat page"
-msgstr "pagină statică"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "pagini statice"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Acest câmp este obligatoriu."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ru/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ru/LC_MESSAGES/django.mo
deleted file mode 100644
index 26c02bf..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ru/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ru/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ru/LC_MESSAGES/django.po
deleted file mode 100644
index 98c10ee..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ru/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,102 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Eugene MechanisM <contact@mechanism.name>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Mike Yumatov <mike@yumatov.org>, 2011
-# Алексей Борискин <sun.void@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/"
-"ru/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Расширенные настройки"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Пример: '/about/contact/'. Убедитесь, что ввели начальную и конечную косые "
-"черты."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Значение должно состоять только из букв, цифр и символов точки, "
-"подчеркивания, тире, косой черты и тильды."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "В начале URL отсутствует косая черта"
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "В конце URL отсутствует косая черта"
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Простая страница с адресом %(url)s уже существует для сайта %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "заголовок"
-
-#: models.py:13
-msgid "content"
-msgstr "содержимое"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "включить комментарии"
-
-#: models.py:15
-msgid "template name"
-msgstr "имя шаблона"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Пример: 'flatpages/contact_page.html'. Если не указано, система будет "
-"использовать 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "требуется регистрация"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Если отмечено, только вошедшие пользователи смогут видеть страницу."
-
-#: models.py:24
-msgid "flat page"
-msgstr "простая страница"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "простые страницы"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Обязательное поле."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/sk/LC_MESSAGES/django.mo
deleted file mode 100644
index fd3f894..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/sk/LC_MESSAGES/django.po
deleted file mode 100644
index f09f917..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,100 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Marian Andre <marian@andre.sk>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Slovak (http://www.transifex.com/projects/p/django/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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Pokročilé nastavenia"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Príklad: '/about/contact/'. Uistite sa, že máte lomky na začiatku a na konci."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Táto hodnota musí obsahovať len písmená, číslice, bodky, podčiarovníky, "
-"pomlčky, lomky alebo vlnovky."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "V URL chýba úvodná lomka."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "V URL chýba koncová lomka."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Statická stránka s url %(url)s pre sídlo %(site)s už existuje."
-
-#: models.py:12
-msgid "title"
-msgstr "názov"
-
-#: models.py:13
-msgid "content"
-msgstr "obsah"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "povoliť komentáre"
-
-#: models.py:15
-msgid "template name"
-msgstr "názov šablóny"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Príklad: 'flatpages/contact_page.html'. Ak nič nenapíšete, systém použije "
-"'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "nutná registrácia"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Ak je toto zaškrtnuté, stránku budú môcť prezerať len prihlásení "
-"používatelia."
-
-#: models.py:24
-msgid "flat page"
-msgstr "statická stránka"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "statické stránky"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Toto pole je povinné."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/sl/LC_MESSAGES/django.mo
deleted file mode 100644
index a2c3ca5..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/sl/LC_MESSAGES/django.po
deleted file mode 100644
index c357ca1..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,101 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# iElectric <domen@dev.si>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# zejn <zejn@kiberpipa.org>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/"
-"language/sl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Napredne možnosti"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "Naslov URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Primer: '/about/contact/'. Poševnica (/) mora biti na začetku in na koncu "
-"vnosa."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Vsebina lahko vsebuje samo črke, številke, pike, podčrtaje, poševnice, "
-"črtice in tilde."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "Na začetku naslov URL manjka poševnica."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "Na koncu naslova URL manjka poševnica."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Enostavna stran na naslovu %(url)s že obstaja na strani %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "naslov"
-
-#: models.py:13
-msgid "content"
-msgstr "vsebina"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "omogoči opombe"
-
-#: models.py:15
-msgid "template name"
-msgstr "ime predloge"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Primer: 'flatpages/contact_page.html'. Kadar je to polje prazno, sistem "
-"uporabi 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "zahtevana je registracija"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Izbrana možnost omogoča ogled strani le prijavljenim uporabnikom."
-
-#: models.py:24
-msgid "flat page"
-msgstr "enostavna stran"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "enostavne strani"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "To polje mora biti izpolnjeno."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sq/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/sq/LC_MESSAGES/django.mo
deleted file mode 100644
index 31d3cf6..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sq/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sq/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/sq/LC_MESSAGES/django.po
deleted file mode 100644
index d640fc2..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sq/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Besnik <besnik@programeshqip.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/"
-"sq/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sq\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Mundësi të mëtejshme"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Shembull: '/rreth/kontakt/'. Sigurohuni që vendosni pjerraket përkatëse."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Kjo vlerë duhet të përmbajë vetëm shkronja, numra, pika, nënvija, vija "
-"ndarëse, pjerrake ose shenjën afërsisht."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "URL-së i mungon një pjerrake në krye."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "URL-së i mungon një pjerrake në fund."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Ka tashmë një flatpage me url %(url)s për site-in %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "titull"
-
-#: models.py:13
-msgid "content"
-msgstr "lëndë"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "aktivizo komente"
-
-#: models.py:15
-msgid "template name"
-msgstr "emër gjedheje"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Shembull: 'flatpages/contact_page.html'. Nëse nuk ka një të tillë, sistemi "
-"do të përdorë 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "lypset regjistrim"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Po iu vu shenjë kësaj, vetëm përdoruesit që kanë bërë hyrjen do të jenë në "
-"gjendje të shohin faqen."
-
-#: models.py:24
-msgid "flat page"
-msgstr "faqe e e thjeshtë"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "faqe të thjeshta"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Kjo fushë është e domosdoshme."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/sr/LC_MESSAGES/django.mo
deleted file mode 100644
index e93ff67..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/sr/LC_MESSAGES/django.po
deleted file mode 100644
index b7cca12..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,101 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/"
-"sr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr\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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Напредна подешавања"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Пример: '/about/contact/'. Пазите на то да постоје и почетне и завршне косе "
-"црте."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Унета вредност може садржати само слова, бројке, тачке, доње црте, црте, "
-"знаке разломка или тилде."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "Недостаје коса црта на почетку URL-а."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "Недостаје коса црта на крају URL-а."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Страница са адресом %(url)s већ постоји за сајт %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "наслов"
-
-#: models.py:13
-msgid "content"
-msgstr "садржај"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "омогући коментарисање"
-
-#: models.py:15
-msgid "template name"
-msgstr "назив темплејта"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Пример: 'flatpages/contact_page.html'. Ако ово оставите празним, систем ће "
-"користити 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "потребна регистрација"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Ако је ово обележено, само ће пријављени корисници моћи да виде ову страницу."
-
-#: models.py:24
-msgid "flat page"
-msgstr "флет страница"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "флет странице"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Ово поље се мора попунити."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.mo
deleted file mode 100644
index 644365d..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.po
deleted file mode 100644
index 4914827..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sr_Latn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,102 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/"
-"language/sr@latin/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr@latin\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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Napredna podešavanja"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Primer: '/about/contact/'. Pazite na to da postoje i početne i završne kose "
-"crte."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Uneta vrednost može sadržati samo slova, brojke, tačke, donje crte, crte, "
-"znake razlomka ili tilde."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "Nedostaje kosa crta na početku URL-a."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "Nedostaje kosa crta na kraju URL-a."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Stranica sa adresom %(url)s već postoji za sajt %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "naslov"
-
-#: models.py:13
-msgid "content"
-msgstr "sadržaj"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "omogući komentarisanje"
-
-#: models.py:15
-msgid "template name"
-msgstr "naziv templejta"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Primer: 'flatpages/contact_page.html'. Ako ovo ostavite praznim, sistem će "
-"koristiti 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "potrebna registracija"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Ako je ovo obeleženo, samo će prijavljeni korisnici moći da vide ovu "
-"stranicu."
-
-#: models.py:24
-msgid "flat page"
-msgstr "flet stranica"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "flet stranice"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Ovo polje se mora popuniti."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/sv/LC_MESSAGES/django.mo
deleted file mode 100644
index ae3089c..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/sv/LC_MESSAGES/django.po
deleted file mode 100644
index de9b751..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,98 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Andreas Pelme <andreas@pelme.se>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/"
-"sv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sv\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Avancerade inställningar"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Exempel: '/om/kontakt/'. Se till att ha inledande och avslutande snedstreck."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Detta värde får endast innehålla bokstäver, siffror, punkter, understreck, "
-"bindestreck, snedstreck och tilde."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "URL:en saknar ett inledande snedstreck."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "URL:en saknar ett avslutande snedstreck."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Statisk sida med %(url)s finns redan för webbplatsen %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "titel"
-
-#: models.py:13
-msgid "content"
-msgstr "innehåll"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "aktivera kommentarer"
-
-#: models.py:15
-msgid "template name"
-msgstr "mallnamn"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Exempel: 'sidor/kontaktsida.html'. Om detta inte fylls i kommer systemet att "
-"använda 'flatpages/default.html'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "registrering krävs"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Om detta bockas för kommer endast inloggade användare kunna se sidan."
-
-#: models.py:24
-msgid "flat page"
-msgstr "statisk sida"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "statiska sidor"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Detta fält måste fyllas i."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sw/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/sw/LC_MESSAGES/django.mo
deleted file mode 100644
index b0bc942..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sw/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sw/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/sw/LC_MESSAGES/django.po
deleted file mode 100644
index 759e735..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/sw/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,91 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/"
-"sw/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sw\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Chaguzi za hali ya juu"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "kichwa"
-
-#: models.py:13
-msgid "content"
-msgstr "maudhui"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "ruhusu maoni"
-
-#: models.py:15
-msgid "template name"
-msgstr ""
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-
-#: models.py:17
-msgid "registration required"
-msgstr "usajili unahitajika"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-
-#: models.py:24
-msgid "flat page"
-msgstr ""
-
-#: models.py:25
-msgid "flat pages"
-msgstr ""
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Sehemu hii inahitajika"
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ta/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ta/LC_MESSAGES/django.mo
deleted file mode 100644
index d41da46..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ta/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ta/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ta/LC_MESSAGES/django.po
deleted file mode 100644
index 9d197a4..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ta/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/"
-"ta/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ta\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr ""
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "உதாரணம்: '/about/contact/'. முன்னும் பின்னும் '/' உள்ளதை உறுதி செய்க."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "தலைப்பு"
-
-#: models.py:13
-msgid "content"
-msgstr "பொருளடக்கம்"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "விமர்சனங்களை செயலாக்கு"
-
-#: models.py:15
-msgid "template name"
-msgstr "வார்ப்புரு பெயர்"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"உதாரணம் 'flatpages/contact_page'. இது இல்லையெனில் 'flatpages/default' என்பதே "
-"பயன்படுத்தப்படும்.ப்படும்."
-
-#: models.py:17
-msgid "registration required"
-msgstr "முன்பதிவு தேவை"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"இது தெரிவு செய்யப்பட்டிருந்தால், உள்நுழைந்த பயனர்கள் மட்டுமே இந்தப் பக்கத்தை பார்க்க முடியும்."
-
-#: models.py:24
-msgid "flat page"
-msgstr "எளிய பக்கம்"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "எளிய பக்கங்கள்"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "இந்த புலத்தில் மதிப்பு தேவை"
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/te/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/te/LC_MESSAGES/django.mo
deleted file mode 100644
index 4d2ecf3..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/te/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/te/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/te/LC_MESSAGES/django.po
deleted file mode 100644
index 6d5122c..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/te/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/"
-"te/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: te\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr ""
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "పట్టము"
-
-#: models.py:13
-msgid "content"
-msgstr "సూచన "
-
-#: models.py:14
-msgid "enable comments"
-msgstr ""
-
-#: models.py:15
-msgid "template name"
-msgstr ""
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"ఉదాహరణ: 'flatpages/contact_page.html'.ఇది ఇవ్వకపోతే సిస్టం 'flatpages/default."
-"html' ని వాడుకుంటడి"
-
-#: models.py:17
-msgid "registration required"
-msgstr "నమొదు చేయటము అవసరం"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "ఇది చెక్ చేసి ఉంటే కేవలం లాగ్గడ్ ఇన్ యూజర్లు పేజి చూడలేస్తారు"
-
-#: models.py:24
-msgid "flat page"
-msgstr ""
-
-#: models.py:25
-msgid "flat pages"
-msgstr ""
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "ఈ ఫీల్డ్ అవసరము"
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/th/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/th/LC_MESSAGES/django.mo
deleted file mode 100644
index e7cf096..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/th/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/th/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/th/LC_MESSAGES/django.po
deleted file mode 100644
index a4ba7e0..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/th/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kowit Charoenratchatabhan <kowit.s.c@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/"
-"th/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: th\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "ตัวเลือกเพิ่มเติม"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "ตัวอย่าง: '/about/contact/'. ต้องแน่ใจว่าขึ้นต้นและลงท้ายด้วยเครื่องหมาย /"
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr "ค่านี้จะต้องประกอบด้วยตัวอักษร, ตัวเลข, จุด, ขีดขีดกลาง, เครื่องหมาย / หรือตัวหนอน"
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "เครื่องหมาย \"/\" นำหน้า URL หายไป"
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "เครื่องหมาย \"/\" ตามหลัง URL หายไป"
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "หน้าเรียบชื่อ %(url)s ถูกใช้ไปแล้วสำหรับ %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "หัวข้อ"
-
-#: models.py:13
-msgid "content"
-msgstr "เนื้อหา"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "ใช้งานข้อติชม"
-
-#: models.py:15
-msgid "template name"
-msgstr "ชื่อเทมเพลต"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"ตัวอย่าง: 'flatpages/contact_page.html' ถ้าไม่ได้ถูกใช้ ระบบจะใช้ 'flatpages/default."
-"html' "
-
-#: models.py:17
-msgid "registration required"
-msgstr "ต้องลงทะเบียนก่อน"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "ถ้าถูกเลือก ผู้ใช้ที่ลงทะเบียนเข้าสู่ระบบเท่านั้นที่จะสามารถดูหน้านี้"
-
-#: models.py:24
-msgid "flat page"
-msgstr "หน้าเรียบ"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "หน้าเรียบ"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "ฟิลด์นี้จำเป็น"
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/tr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/tr/LC_MESSAGES/django.mo
deleted file mode 100644
index cb46b94..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/tr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/tr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/tr/LC_MESSAGES/django.po
deleted file mode 100644
index bc28e8b..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/tr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,100 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Metin Amiroff <amiroff@gmail.com>, 2011
-# Murat Çorlu <muratcorlu@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/"
-"tr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Gelişmiş seçenekler"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Örnek: '/about/contact/'. Başında ve sonunda bölü işareti olduğundan emin "
-"olun."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Bu değer sadece harf, rakam, nokta, alt çizgi, tire, bölme veya yaklaşık "
-"işareti içerebilir."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "URL başında bölü işareti yok."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "URL sonunda bölü işareti yok."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "%(url)s adresli düz sayfa %(site)s sitesinde zaten mevcut"
-
-#: models.py:12
-msgid "title"
-msgstr "başlık"
-
-#: models.py:13
-msgid "content"
-msgstr "içerik"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "yorumlara izin ver"
-
-#: models.py:15
-msgid "template name"
-msgstr "şablon adı"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Örnek: 'flatpages/contact_page.html'. Eğer birşey yazılmazsa, sistem "
-"otomatik olarak 'flatpages/default.html' kullanacak."
-
-#: models.py:17
-msgid "registration required"
-msgstr "kayıt gerekli"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "Bu seçili ise, sadece kayıtlı kullanıcılar sayfayı görüntüleyebilir."
-
-#: models.py:24
-msgid "flat page"
-msgstr "düz sayfa"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "düz sayfalar"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Bu alan zorunludur."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/tt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/tt/LC_MESSAGES/django.mo
deleted file mode 100644
index 081998f..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/tt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/tt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/tt/LC_MESSAGES/django.po
deleted file mode 100644
index 9602028..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/tt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Azat Khasanshin <lordofbazuks@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/"
-"tt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tt\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Өстәмә көйләүләр"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Үрнәк: '/about/contact/'. Алдынгы һәм арттагы авыш сызыкларын кертүне "
-"тикшерегез."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Бу кыйммәт тик хәрефләрдән, саннардан һәм нокта, астына сызу, тире, авыш "
-"сызык, тильда билгеләреннән генә тора ала."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "башлам"
-
-#: models.py:13
-msgid "content"
-msgstr "эчтәлек"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "фикерләрне ялгарга"
-
-#: models.py:15
-msgid "template name"
-msgstr "шаблон исеме"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Үрнәк: 'flatpages/contact_page.html'. Күрсәтелгән булмаса, система "
-"'flatpages/defalut.html' кулланыр."
-
-#: models.py:17
-msgid "registration required"
-msgstr "теркәлү кирәк"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Билгеләнгән булса, фәкать кергән кулланучылар гына сәхифәне күрә алырлар."
-
-#: models.py:24
-msgid "flat page"
-msgstr "гади сәхифә"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "гади сәхифәләр"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Мәҗбүри кыр."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/udm/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/udm/LC_MESSAGES/django.mo
deleted file mode 100644
index 7cf4ab2..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/udm/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/udm/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/udm/LC_MESSAGES/django.po
deleted file mode 100644
index f0b68a9..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/udm/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,91 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Udmurt (http://www.transifex.com/projects/p/django/language/"
-"udm/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: udm\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr ""
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr ""
-
-#: models.py:13
-msgid "content"
-msgstr ""
-
-#: models.py:14
-msgid "enable comments"
-msgstr ""
-
-#: models.py:15
-msgid "template name"
-msgstr ""
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-
-#: models.py:17
-msgid "registration required"
-msgstr ""
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-
-#: models.py:24
-msgid "flat page"
-msgstr ""
-
-#: models.py:25
-msgid "flat pages"
-msgstr ""
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Та клуэ."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/uk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/uk/LC_MESSAGES/django.mo
deleted file mode 100644
index ab8fdab..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/uk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/uk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/uk/LC_MESSAGES/django.po
deleted file mode 100644
index 227c505..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/uk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,102 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sergey Lysach <sergikoff88@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Додаткові опції"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"Приклад: '/about/contact/'. Переконайтеся у наявності слешу на початку та у "
-"кінці."
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"Це значення повинне містити тільки літери, цифри, крапки, підкреслення, "
-"тире, косі риси чи тільди."
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "На початку URL відсутня коса риса."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "В кінці URL відсутня коса риса."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "Проста сторінка з адресою %(url)s вже існує для сайту %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "заголовок"
-
-#: models.py:13
-msgid "content"
-msgstr "зміст"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "увімкнути коментарі"
-
-#: models.py:15
-msgid "template name"
-msgstr "ім'я шаблона"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"Приклад: 'flatpages/contact_page'. Якщо це не надано, система буда "
-"використовувати 'flatpages/default'."
-
-#: models.py:17
-msgid "registration required"
-msgstr "потрібна реєстрація"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Якщо тут є галочка, тільки користувачі, що увійшли, зможуть переглядати цю "
-"сторінку."
-
-#: models.py:24
-msgid "flat page"
-msgstr "проста сторінка"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "прості сторінки"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Це поле обов'язкове."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ur/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ur/LC_MESSAGES/django.mo
deleted file mode 100644
index 9ea75db..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ur/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ur/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/ur/LC_MESSAGES/django.po
deleted file mode 100644
index 2f08102..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/ur/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/"
-"ur/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ur\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "اعلٰی اختیارات"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "یو آر ایل (URL("
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-"مثال: '/about/contact/'۔ یقین کر لیں کہ سابقہ اور لاحقہ سلیش موجود ھے۔"
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"اس قیمت (ویلیو) کا صرف حروف، نمبروں، نقاط، انڈرسکور، ڈیش، سلیش، یا ٹائلڈ پر "
-"مشتمل ھونا ضروری ھے۔"
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "عنوان"
-
-#: models.py:13
-msgid "content"
-msgstr "مضمون"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "تبصرے فعال کریں"
-
-#: models.py:15
-msgid "template name"
-msgstr "قالب کا نام"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"مثال: 'flatpages/contact_page.html'۔ اگر یہ مھیا نھیں کیا گیا تو سسٹم "
-"'flatpages/default.html' استعمال کرے گا۔"
-
-#: models.py:17
-msgid "registration required"
-msgstr "رجسٹریشن ضروری ھے"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"اگر یہ فعال ھے تو صرف اندر آئے ھوئے (logged-in) صارفین یہ صفحہ دیکھنے کے "
-"قابل ھوں گے۔"
-
-#: models.py:24
-msgid "flat page"
-msgstr "ھموار صفحہ"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "ھموار صفحے"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "یہ خانہ درکار ھے۔"
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/vi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/vi/LC_MESSAGES/django.mo
deleted file mode 100644
index 33c2766..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/vi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/vi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/vi/LC_MESSAGES/django.po
deleted file mode 100644
index c675c04..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/vi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Tran <hongdiepkien@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/"
-"language/vi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "Các lựa chọn "
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr ""
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr ""
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr ""
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr ""
-
-#: models.py:12
-msgid "title"
-msgstr "tiêu đề"
-
-#: models.py:13
-msgid "content"
-msgstr "nội dung"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "mở bình luận"
-
-#: models.py:15
-msgid "template name"
-msgstr "tên thiết kế"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-
-#: models.py:17
-msgid "registration required"
-msgstr "Bạn cần phải cần đăng kí"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr ""
-"Nếu bạn đánh dấu vào đây, chỉ những tài khoản đã đăng nhập mới có thể xem "
-"được trang này."
-
-#: models.py:24
-msgid "flat page"
-msgstr ""
-
-#: models.py:25
-msgid "flat pages"
-msgstr ""
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "Trường này là bắt buộc."
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/zh_CN/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/zh_CN/LC_MESSAGES/django.mo
deleted file mode 100644
index a03fdd0..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/zh_CN/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/zh_CN/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/zh_CN/LC_MESSAGES/django.po
deleted file mode 100644
index 62d1818..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/zh_CN/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,96 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Lele Long <schemacs@gmail.com>, 2011
-# Kevin Shi <leiarix@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "高级选项"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "例如:'/about/contact/'。请确保开始和结尾的斜杠。"
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr "该值必须只能包含字母,数字,点号,下划线,破折号,和"
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "URL头部缺失斜线."
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "URL尾部缺失斜线."
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "带有url %(url)s的Flatpage已经存在于站点 %(site)s"
-
-#: models.py:12
-msgid "title"
-msgstr "标题"
-
-#: models.py:13
-msgid "content"
-msgstr "内容"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "允许评论"
-
-#: models.py:15
-msgid "template name"
-msgstr "模板名称"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"例如:'flatpages/contact_page.html'。若未提供,系统将使用'flatpages/default."
-"html'。"
-
-#: models.py:17
-msgid "registration required"
-msgstr "请先注册"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "如果被选中,仅登录用户才可以查看此页。"
-
-#: models.py:24
-msgid "flat page"
-msgstr "简单页面"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "简单页面"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "这个字段是必填项。"
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/zh_TW/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/flatpages/locale/zh_TW/LC_MESSAGES/django.mo
deleted file mode 100644
index 243c9cd..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/zh_TW/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/locale/zh_TW/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/flatpages/locale/zh_TW/LC_MESSAGES/django.po
deleted file mode 100644
index 405c550..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/locale/zh_TW/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# ilay <ilay@ilay.tw>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# quantum9876 <quantum9876@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 09:01+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/"
-"language/zh_TW/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_TW\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: admin.py:10
-msgid "Advanced options"
-msgstr "進階選項"
-
-#: forms.py:7 models.py:11
-msgid "URL"
-msgstr "URL"
-
-#: forms.py:8
-msgid ""
-"Example: '/about/contact/'. Make sure to have leading and trailing slashes."
-msgstr "例如: '/about/contact/'。開頭與結束的斜線。"
-
-#: forms.py:10
-msgid ""
-"This value must contain only letters, numbers, dots, underscores, dashes, "
-"slashes or tildes."
-msgstr ""
-"此欄位只能有: 英文字母、數字、點(.)、底線(_)、刪節號(-)、斜線(/)、波浪號(~)。"
-
-#: forms.py:19
-msgid "URL is missing a leading slash."
-msgstr "URL 缺少前導的斜線。"
-
-#: forms.py:23
-msgid "URL is missing a trailing slash."
-msgstr "URL 缺少一個斜線。"
-
-#: forms.py:38
-#, python-format
-msgid "Flatpage with url %(url)s already exists for site %(site)s"
-msgstr "網站 %(site)s 已經存在一個浮動頁面,其位址為 %(url)s。"
-
-#: models.py:12
-msgid "title"
-msgstr "標題"
-
-#: models.py:13
-msgid "content"
-msgstr "內容"
-
-#: models.py:14
-msgid "enable comments"
-msgstr "啟用評論"
-
-#: models.py:15
-msgid "template name"
-msgstr "模板名稱"
-
-#: models.py:16
-msgid ""
-"Example: 'flatpages/contact_page.html'. If this isn't provided, the system "
-"will use 'flatpages/default.html'."
-msgstr ""
-"例如: 'flatpages/contact_page'。如果沒有提供它,系統會使用 'flatpages/"
-"default.html'。"
-
-#: models.py:17
-msgid "registration required"
-msgstr "請先註冊"
-
-#: models.py:18
-msgid "If this is checked, only logged-in users will be able to view the page."
-msgstr "如果此項被選取,則只有登入的使用者可以檢視頁面。"
-
-#: models.py:24
-msgid "flat page"
-msgstr "簡平頁面"
-
-#: models.py:25
-msgid "flat pages"
-msgstr "簡平頁面"
-
-#: tests/test_forms.py:98
-msgid "This field is required."
-msgstr "這個欄位是必須的。"
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/middleware.py b/lib/python2.7/site-packages/django/contrib/flatpages/middleware.py
deleted file mode 100644
index fb98c39..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/middleware.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from django.contrib.flatpages.views import flatpage
-from django.http import Http404
-from django.conf import settings
-
-class FlatpageFallbackMiddleware(object):
- def process_response(self, request, response):
- if response.status_code != 404:
- return response # No need to check for a flatpage for non-404 responses.
- try:
- return flatpage(request, request.path_info)
- # Return the original response if any errors happened. Because this
- # is a middleware, we can't assume the errors will be caught elsewhere.
- except Http404:
- return response
- except:
- if settings.DEBUG:
- raise
- return response
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/models.py b/lib/python2.7/site-packages/django/contrib/flatpages/models.py
deleted file mode 100644
index 42bb3ad..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/models.py
+++ /dev/null
@@ -1,33 +0,0 @@
-from __future__ import unicode_literals
-
-from django.db import models
-from django.contrib.sites.models import Site
-from django.core.urlresolvers import get_script_prefix
-from django.utils.translation import ugettext_lazy as _
-from django.utils.encoding import iri_to_uri, python_2_unicode_compatible
-
-@python_2_unicode_compatible
-class FlatPage(models.Model):
- url = models.CharField(_('URL'), max_length=100, db_index=True)
- title = models.CharField(_('title'), max_length=200)
- content = models.TextField(_('content'), blank=True)
- enable_comments = models.BooleanField(_('enable comments'), default=False)
- template_name = models.CharField(_('template name'), max_length=70, blank=True,
- help_text=_("Example: 'flatpages/contact_page.html'. If this isn't provided, the system will use 'flatpages/default.html'."))
- registration_required = models.BooleanField(_('registration required'),
- help_text=_("If this is checked, only logged-in users will be able to view the page."),
- default=False)
- sites = models.ManyToManyField(Site)
-
- class Meta:
- db_table = 'django_flatpage'
- verbose_name = _('flat page')
- verbose_name_plural = _('flat pages')
- ordering = ('url',)
-
- def __str__(self):
- return "%s -- %s" % (self.url, self.title)
-
- def get_absolute_url(self):
- # Handle script prefix manually because we bypass reverse()
- return iri_to_uri(get_script_prefix().rstrip('/') + self.url)
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/templatetags/__init__.py b/lib/python2.7/site-packages/django/contrib/flatpages/templatetags/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/templatetags/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/templatetags/flatpages.py b/lib/python2.7/site-packages/django/contrib/flatpages/templatetags/flatpages.py
deleted file mode 100644
index a32ac7f..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/templatetags/flatpages.py
+++ /dev/null
@@ -1,102 +0,0 @@
-from django import template
-from django.conf import settings
-from django.contrib.flatpages.models import FlatPage
-from django.contrib.sites.models import get_current_site
-
-
-register = template.Library()
-
-
-class FlatpageNode(template.Node):
- def __init__(self, context_name, starts_with=None, user=None):
- self.context_name = context_name
- if starts_with:
- self.starts_with = template.Variable(starts_with)
- else:
- self.starts_with = None
- if user:
- self.user = template.Variable(user)
- else:
- self.user = None
-
- def render(self, context):
- if 'request' in context:
- site_pk = get_current_site(context['request']).pk
- else:
- site_pk = settings.SITE_ID
- flatpages = FlatPage.objects.filter(sites__id=site_pk)
- # If a prefix was specified, add a filter
- if self.starts_with:
- flatpages = flatpages.filter(
- url__startswith=self.starts_with.resolve(context))
-
- # If the provided user is not authenticated, or no user
- # was provided, filter the list to only public flatpages.
- if self.user:
- user = self.user.resolve(context)
- if not user.is_authenticated():
- flatpages = flatpages.filter(registration_required=False)
- else:
- flatpages = flatpages.filter(registration_required=False)
-
- context[self.context_name] = flatpages
- return ''
-
-
-@register.tag
-def get_flatpages(parser, token):
- """
- Retrieves all flatpage objects available for the current site and
- visible to the specific user (or visible to all users if no user is
- specified). Populates the template context with them in a variable
- whose name is defined by the ``as`` clause.
-
- An optional ``for`` clause can be used to control the user whose
- permissions are to be used in determining which flatpages are visible.
-
- An optional argument, ``starts_with``, can be applied to limit the
- returned flatpages to those beginning with a particular base URL.
- This argument can be passed as a variable or a string, as it resolves
- from the template context.
-
- Syntax::
-
- {% get_flatpages ['url_starts_with'] [for user] as context_name %}
-
- Example usage::
-
- {% get_flatpages as flatpages %}
- {% get_flatpages for someuser as flatpages %}
- {% get_flatpages '/about/' as about_pages %}
- {% get_flatpages prefix as about_pages %}
- {% get_flatpages '/about/' for someuser as about_pages %}
- """
- bits = token.split_contents()
- syntax_message = ("%(tag_name)s expects a syntax of %(tag_name)s "
- "['url_starts_with'] [for user] as context_name" %
- dict(tag_name=bits[0]))
- # Must have at 3-6 bits in the tag
- if len(bits) >= 3 and len(bits) <= 6:
-
- # If there's an even number of bits, there's no prefix
- if len(bits) % 2 == 0:
- prefix = bits[1]
- else:
- prefix = None
-
- # The very last bit must be the context name
- if bits[-2] != 'as':
- raise template.TemplateSyntaxError(syntax_message)
- context_name = bits[-1]
-
- # If there are 5 or 6 bits, there is a user defined
- if len(bits) >= 5:
- if bits[-4] != 'for':
- raise template.TemplateSyntaxError(syntax_message)
- user = bits[-3]
- else:
- user = None
-
- return FlatpageNode(context_name, starts_with=prefix, user=user)
- else:
- raise template.TemplateSyntaxError(syntax_message)
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/tests/__init__.py b/lib/python2.7/site-packages/django/contrib/flatpages/tests/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/tests/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/tests/templates/404.html b/lib/python2.7/site-packages/django/contrib/flatpages/tests/templates/404.html
deleted file mode 100644
index 5fd5f3c..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/tests/templates/404.html
+++ /dev/null
@@ -1 +0,0 @@
-<h1>Oh Noes!</h1> \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/tests/templates/flatpages/default.html b/lib/python2.7/site-packages/django/contrib/flatpages/tests/templates/flatpages/default.html
deleted file mode 100644
index 559e3f7..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/tests/templates/flatpages/default.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>{{ flatpage.title }}</title>
-</head>
-<body>
-<p>{{ flatpage.content }}</p>
-</body>
-</html>
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/tests/templates/registration/login.html b/lib/python2.7/site-packages/django/contrib/flatpages/tests/templates/registration/login.html
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/tests/templates/registration/login.html
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_csrf.py b/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_csrf.py
deleted file mode 100644
index cb51c12..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_csrf.py
+++ /dev/null
@@ -1,76 +0,0 @@
-import os
-from django.contrib.auth.models import User
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.test import TestCase, Client
-from django.test.utils import override_settings
-
-
-@override_settings(
- LOGIN_URL='/accounts/login/',
- MIDDLEWARE_CLASSES=(
- 'django.middleware.common.CommonMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
- 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
- ),
- TEMPLATE_DIRS=(
- os.path.join(os.path.dirname(__file__), 'templates'),
- ),
- SITE_ID=1,
-)
-class FlatpageCSRFTests(TestCase):
- fixtures = ['sample_flatpages', 'example_site']
- urls = 'django.contrib.flatpages.tests.urls'
-
- def setUp(self):
- self.client = Client(enforce_csrf_checks=True)
-
- def test_view_flatpage(self):
- "A flatpage can be served through a view, even when the middleware is in use"
- response = self.client.get('/flatpage_root/flatpage/')
- self.assertEqual(response.status_code, 200)
- self.assertContains(response, "<p>Isn't it flat!</p>")
-
- def test_view_non_existent_flatpage(self):
- "A non-existent flatpage raises 404 when served through a view, even when the middleware is in use"
- response = self.client.get('/flatpage_root/no_such_flatpage/')
- self.assertEqual(response.status_code, 404)
-
- @skipIfCustomUser
- def test_view_authenticated_flatpage(self):
- "A flatpage served through a view can require authentication"
- response = self.client.get('/flatpage_root/sekrit/')
- self.assertRedirects(response, '/accounts/login/?next=/flatpage_root/sekrit/')
- User.objects.create_user('testuser', 'test@example.com', 's3krit')
- self.client.login(username='testuser',password='s3krit')
- response = self.client.get('/flatpage_root/sekrit/')
- self.assertEqual(response.status_code, 200)
- self.assertContains(response, "<p>Isn't it sekrit!</p>")
-
- def test_fallback_flatpage(self):
- "A flatpage can be served by the fallback middlware"
- response = self.client.get('/flatpage/')
- self.assertEqual(response.status_code, 200)
- self.assertContains(response, "<p>Isn't it flat!</p>")
-
- def test_fallback_non_existent_flatpage(self):
- "A non-existent flatpage raises a 404 when served by the fallback middlware"
- response = self.client.get('/no_such_flatpage/')
- self.assertEqual(response.status_code, 404)
-
- def test_post_view_flatpage(self):
- "POSTing to a flatpage served through a view will raise a CSRF error if no token is provided (Refs #14156)"
- response = self.client.post('/flatpage_root/flatpage/')
- self.assertEqual(response.status_code, 403)
-
- def test_post_fallback_flatpage(self):
- "POSTing to a flatpage served by the middleware will raise a CSRF error if no token is provided (Refs #14156)"
- response = self.client.post('/flatpage/')
- self.assertEqual(response.status_code, 403)
-
- def test_post_unknown_page(self):
- "POSTing to an unknown page isn't caught as a 403 CSRF error"
- response = self.client.post('/no_such_page/')
- self.assertEqual(response.status_code, 404)
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_forms.py b/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_forms.py
deleted file mode 100644
index 29fc0ca..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_forms.py
+++ /dev/null
@@ -1,99 +0,0 @@
-from __future__ import unicode_literals
-
-from django.conf import settings
-from django.contrib.flatpages.forms import FlatpageForm
-from django.contrib.flatpages.models import FlatPage
-from django.test import TestCase
-from django.test.utils import override_settings
-from django.utils import translation
-
-@override_settings(SITE_ID=1)
-class FlatpageAdminFormTests(TestCase):
- fixtures = ['example_site']
-
- def setUp(self):
- self.form_data = {
- 'title': "A test page",
- 'content': "This is a test",
- 'sites': [settings.SITE_ID],
- }
-
- def test_flatpage_admin_form_url_validation(self):
- "The flatpage admin form correctly validates urls"
- self.assertTrue(FlatpageForm(data=dict(url='/new_flatpage/', **self.form_data)).is_valid())
- self.assertTrue(FlatpageForm(data=dict(url='/some.special~chars/', **self.form_data)).is_valid())
- self.assertTrue(FlatpageForm(data=dict(url='/some.very_special~chars-here/', **self.form_data)).is_valid())
-
- self.assertFalse(FlatpageForm(data=dict(url='/a space/', **self.form_data)).is_valid())
- self.assertFalse(FlatpageForm(data=dict(url='/a % char/', **self.form_data)).is_valid())
- self.assertFalse(FlatpageForm(data=dict(url='/a ! char/', **self.form_data)).is_valid())
- self.assertFalse(FlatpageForm(data=dict(url='/a & char/', **self.form_data)).is_valid())
- self.assertFalse(FlatpageForm(data=dict(url='/a ? char/', **self.form_data)).is_valid())
-
- def test_flatpage_requires_leading_slash(self):
- form = FlatpageForm(data=dict(url='no_leading_slash/', **self.form_data))
- with translation.override('en'):
- self.assertFalse(form.is_valid())
- self.assertEqual(form.errors['url'], ["URL is missing a leading slash."])
-
- @override_settings(APPEND_SLASH=True,
- MIDDLEWARE_CLASSES=('django.middleware.common.CommonMiddleware',))
- def test_flatpage_requires_trailing_slash_with_append_slash(self):
- form = FlatpageForm(data=dict(url='/no_trailing_slash', **self.form_data))
- with translation.override('en'):
- self.assertFalse(form.is_valid())
- self.assertEqual(form.errors['url'], ["URL is missing a trailing slash."])
-
- @override_settings(APPEND_SLASH=False,
- MIDDLEWARE_CLASSES=('django.middleware.common.CommonMiddleware',))
- def test_flatpage_doesnt_requires_trailing_slash_without_append_slash(self):
- form = FlatpageForm(data=dict(url='/no_trailing_slash', **self.form_data))
- self.assertTrue(form.is_valid())
-
- def test_flatpage_admin_form_url_uniqueness_validation(self):
- "The flatpage admin form correctly enforces url uniqueness among flatpages of the same site"
- data = dict(url='/myflatpage1/', **self.form_data)
-
- FlatpageForm(data=data).save()
-
- f = FlatpageForm(data=data)
-
- with translation.override('en'):
- self.assertFalse(f.is_valid())
-
- self.assertEqual(
- f.errors,
- {'__all__': ['Flatpage with url /myflatpage1/ already exists for site example.com']})
-
- def test_flatpage_admin_form_edit(self):
- """
- Existing flatpages can be edited in the admin form without triggering
- the url-uniqueness validation.
-
- """
- existing = FlatPage.objects.create(
- url="/myflatpage1/", title="Some page", content="The content")
- existing.sites.add(settings.SITE_ID)
-
- data = dict(url='/myflatpage1/', **self.form_data)
-
- f = FlatpageForm(data=data, instance=existing)
-
- self.assertTrue(f.is_valid(), f.errors)
-
- updated = f.save()
-
- self.assertEqual(updated.title, "A test page")
-
- def test_flatpage_nosites(self):
- data = dict(url='/myflatpage1/', **self.form_data)
- data.update({'sites': ''})
-
- f = FlatpageForm(data=data)
-
- self.assertFalse(f.is_valid())
-
- self.assertEqual(
- f.errors,
- {'sites': [translation.ugettext('This field is required.')]})
-
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_middleware.py b/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_middleware.py
deleted file mode 100644
index 1ad8fa9..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_middleware.py
+++ /dev/null
@@ -1,158 +0,0 @@
-import os
-from django.conf import settings
-from django.contrib.auth.models import User
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.contrib.flatpages.models import FlatPage
-from django.test import TestCase
-from django.test.utils import override_settings
-
-
-@override_settings(
- LOGIN_URL='/accounts/login/',
- MIDDLEWARE_CLASSES=(
- 'django.middleware.common.CommonMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
- 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
- ),
- TEMPLATE_DIRS=(
- os.path.join(os.path.dirname(__file__), 'templates'),
- ),
- SITE_ID=1,
-)
-class FlatpageMiddlewareTests(TestCase):
- fixtures = ['sample_flatpages', 'example_site']
- urls = 'django.contrib.flatpages.tests.urls'
-
- def test_view_flatpage(self):
- "A flatpage can be served through a view, even when the middleware is in use"
- response = self.client.get('/flatpage_root/flatpage/')
- self.assertEqual(response.status_code, 200)
- self.assertContains(response, "<p>Isn't it flat!</p>")
-
- def test_view_non_existent_flatpage(self):
- "A non-existent flatpage raises 404 when served through a view, even when the middleware is in use"
- response = self.client.get('/flatpage_root/no_such_flatpage/')
- self.assertEqual(response.status_code, 404)
-
- @skipIfCustomUser
- def test_view_authenticated_flatpage(self):
- "A flatpage served through a view can require authentication"
- response = self.client.get('/flatpage_root/sekrit/')
- self.assertRedirects(response, '/accounts/login/?next=/flatpage_root/sekrit/')
- User.objects.create_user('testuser', 'test@example.com', 's3krit')
- self.client.login(username='testuser',password='s3krit')
- response = self.client.get('/flatpage_root/sekrit/')
- self.assertEqual(response.status_code, 200)
- self.assertContains(response, "<p>Isn't it sekrit!</p>")
-
- def test_fallback_flatpage(self):
- "A flatpage can be served by the fallback middlware"
- response = self.client.get('/flatpage/')
- self.assertEqual(response.status_code, 200)
- self.assertContains(response, "<p>Isn't it flat!</p>")
-
- def test_fallback_non_existent_flatpage(self):
- "A non-existent flatpage raises a 404 when served by the fallback middlware"
- response = self.client.get('/no_such_flatpage/')
- self.assertEqual(response.status_code, 404)
-
- @skipIfCustomUser
- def test_fallback_authenticated_flatpage(self):
- "A flatpage served by the middleware can require authentication"
- response = self.client.get('/sekrit/')
- self.assertRedirects(response, '/accounts/login/?next=/sekrit/')
- User.objects.create_user('testuser', 'test@example.com', 's3krit')
- self.client.login(username='testuser',password='s3krit')
- response = self.client.get('/sekrit/')
- self.assertEqual(response.status_code, 200)
- self.assertContains(response, "<p>Isn't it sekrit!</p>")
-
- def test_fallback_flatpage_special_chars(self):
- "A flatpage with special chars in the URL can be served by the fallback middleware"
- fp = FlatPage.objects.create(
- url="/some.very_special~chars-here/",
- title="A very special page",
- content="Isn't it special!",
- enable_comments=False,
- registration_required=False,
- )
- fp.sites.add(settings.SITE_ID)
-
- response = self.client.get('/some.very_special~chars-here/')
- self.assertEqual(response.status_code, 200)
- self.assertContains(response, "<p>Isn't it special!</p>")
-
-
-@override_settings(
- APPEND_SLASH = True,
- LOGIN_URL='/accounts/login/',
- MIDDLEWARE_CLASSES=(
- 'django.middleware.common.CommonMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
- 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
- ),
- TEMPLATE_DIRS=(
- os.path.join(os.path.dirname(__file__), 'templates'),
- ),
- SITE_ID=1,
-)
-class FlatpageMiddlewareAppendSlashTests(TestCase):
- fixtures = ['sample_flatpages', 'example_site']
- urls = 'django.contrib.flatpages.tests.urls'
-
- def test_redirect_view_flatpage(self):
- "A flatpage can be served through a view and should add a slash"
- response = self.client.get('/flatpage_root/flatpage')
- self.assertRedirects(response, '/flatpage_root/flatpage/', status_code=301)
-
- def test_redirect_view_non_existent_flatpage(self):
- "A non-existent flatpage raises 404 when served through a view and should not add a slash"
- response = self.client.get('/flatpage_root/no_such_flatpage')
- self.assertEqual(response.status_code, 404)
-
- def test_redirect_fallback_flatpage(self):
- "A flatpage can be served by the fallback middlware and should add a slash"
- response = self.client.get('/flatpage')
- self.assertRedirects(response, '/flatpage/', status_code=301)
-
- def test_redirect_fallback_non_existent_flatpage(self):
- "A non-existent flatpage raises a 404 when served by the fallback middlware and should not add a slash"
- response = self.client.get('/no_such_flatpage')
- self.assertEqual(response.status_code, 404)
-
- def test_redirect_fallback_flatpage_special_chars(self):
- "A flatpage with special chars in the URL can be served by the fallback middleware and should add a slash"
- fp = FlatPage.objects.create(
- url="/some.very_special~chars-here/",
- title="A very special page",
- content="Isn't it special!",
- enable_comments=False,
- registration_required=False,
- )
- fp.sites.add(settings.SITE_ID)
-
- response = self.client.get('/some.very_special~chars-here')
- self.assertRedirects(response, '/some.very_special~chars-here/', status_code=301)
-
- def test_redirect_fallback_flatpage_root(self):
- "A flatpage at / should not cause a redirect loop when APPEND_SLASH is set"
- fp = FlatPage.objects.create(
- url="/",
- title="Root",
- content="Root",
- enable_comments=False,
- registration_required=False,
- )
- fp.sites.add(settings.SITE_ID)
-
- response = self.client.get('/')
- self.assertEqual(response.status_code, 200)
- self.assertContains(response, "<p>Root</p>")
-
-
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_models.py b/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_models.py
deleted file mode 100644
index af12c42..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_models.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# coding: utf-8
-
-from __future__ import unicode_literals
-
-from django.core.urlresolvers import set_script_prefix, clear_script_prefix
-from django.contrib.flatpages.models import FlatPage
-from django.test import TestCase
-
-
-class FlatpageModelTests(TestCase):
-
- def test_get_absolute_url_urlencodes(self):
- pf = FlatPage(title="Café!", url='/café/')
- self.assertEqual(pf.get_absolute_url(), '/caf%C3%A9/')
-
- def test_get_absolute_url_honors_script_prefix(self):
- pf = FlatPage(title="Tea!", url='/tea/')
- set_script_prefix('/beverages/')
- try:
- self.assertEqual(pf.get_absolute_url(), '/beverages/tea/')
- finally:
- clear_script_prefix()
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_templatetags.py b/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_templatetags.py
deleted file mode 100644
index 23fa8fa..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_templatetags.py
+++ /dev/null
@@ -1,136 +0,0 @@
-import os
-from django.contrib.auth.models import AnonymousUser, User
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.template import Template, Context, TemplateSyntaxError
-from django.test import TestCase
-from django.test.utils import override_settings
-
-
-@override_settings(
- MIDDLEWARE_CLASSES=(
- 'django.middleware.common.CommonMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
- 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
- ),
- TEMPLATE_DIRS=(
- os.path.join(os.path.dirname(__file__), 'templates'),
- ),
- SITE_ID=1,
-)
-class FlatpageTemplateTagTests(TestCase):
- fixtures = ['sample_flatpages']
- urls = 'django.contrib.flatpages.tests.urls'
-
- def test_get_flatpages_tag(self):
- "The flatpage template tag retrives unregistered prefixed flatpages by default"
- out = Template(
- "{% load flatpages %}"
- "{% get_flatpages as flatpages %}"
- "{% for page in flatpages %}"
- "{{ page.title }},"
- "{% endfor %}"
- ).render(Context())
- self.assertEqual(out, "A Flatpage,A Nested Flatpage,")
-
- def test_get_flatpages_tag_for_anon_user(self):
- "The flatpage template tag retrives unregistered flatpages for an anonymous user"
- out = Template(
- "{% load flatpages %}"
- "{% get_flatpages for anonuser as flatpages %}"
- "{% for page in flatpages %}"
- "{{ page.title }},"
- "{% endfor %}"
- ).render(Context({
- 'anonuser': AnonymousUser()
- }))
- self.assertEqual(out, "A Flatpage,A Nested Flatpage,")
-
- @skipIfCustomUser
- def test_get_flatpages_tag_for_user(self):
- "The flatpage template tag retrives all flatpages for an authenticated user"
- me = User.objects.create_user('testuser', 'test@example.com', 's3krit')
- out = Template(
- "{% load flatpages %}"
- "{% get_flatpages for me as flatpages %}"
- "{% for page in flatpages %}"
- "{{ page.title }},"
- "{% endfor %}"
- ).render(Context({
- 'me': me
- }))
- self.assertEqual(out, "A Flatpage,A Nested Flatpage,Sekrit Nested Flatpage,Sekrit Flatpage,")
-
- def test_get_flatpages_with_prefix(self):
- "The flatpage template tag retrives unregistered prefixed flatpages by default"
- out = Template(
- "{% load flatpages %}"
- "{% get_flatpages '/location/' as location_flatpages %}"
- "{% for page in location_flatpages %}"
- "{{ page.title }},"
- "{% endfor %}"
- ).render(Context())
- self.assertEqual(out, "A Nested Flatpage,")
-
- def test_get_flatpages_with_prefix_for_anon_user(self):
- "The flatpage template tag retrives unregistered prefixed flatpages for an anonymous user"
- out = Template(
- "{% load flatpages %}"
- "{% get_flatpages '/location/' for anonuser as location_flatpages %}"
- "{% for page in location_flatpages %}"
- "{{ page.title }},"
- "{% endfor %}"
- ).render(Context({
- 'anonuser': AnonymousUser()
- }))
- self.assertEqual(out, "A Nested Flatpage,")
-
- @skipIfCustomUser
- def test_get_flatpages_with_prefix_for_user(self):
- "The flatpage template tag retrive prefixed flatpages for an authenticated user"
- me = User.objects.create_user('testuser', 'test@example.com', 's3krit')
- out = Template(
- "{% load flatpages %}"
- "{% get_flatpages '/location/' for me as location_flatpages %}"
- "{% for page in location_flatpages %}"
- "{{ page.title }},"
- "{% endfor %}"
- ).render(Context({
- 'me': me
- }))
- self.assertEqual(out, "A Nested Flatpage,Sekrit Nested Flatpage,")
-
- def test_get_flatpages_with_variable_prefix(self):
- "The prefix for the flatpage template tag can be a template variable"
- out = Template(
- "{% load flatpages %}"
- "{% get_flatpages location_prefix as location_flatpages %}"
- "{% for page in location_flatpages %}"
- "{{ page.title }},"
- "{% endfor %}"
- ).render(Context({
- 'location_prefix': '/location/'
- }))
- self.assertEqual(out, "A Nested Flatpage,")
-
- def test_parsing_errors(self):
- "There are various ways that the flatpages template tag won't parse"
- render = lambda t: Template(t).render(Context())
-
- self.assertRaises(TemplateSyntaxError, render,
- "{% load flatpages %}{% get_flatpages %}")
- self.assertRaises(TemplateSyntaxError, render,
- "{% load flatpages %}{% get_flatpages as %}")
- self.assertRaises(TemplateSyntaxError, render,
- "{% load flatpages %}{% get_flatpages cheesecake flatpages %}")
- self.assertRaises(TemplateSyntaxError, render,
- "{% load flatpages %}{% get_flatpages as flatpages asdf%}")
- self.assertRaises(TemplateSyntaxError, render,
- "{% load flatpages %}{% get_flatpages cheesecake user as flatpages %}")
- self.assertRaises(TemplateSyntaxError, render,
- "{% load flatpages %}{% get_flatpages for user as flatpages asdf%}")
- self.assertRaises(TemplateSyntaxError, render,
- "{% load flatpages %}{% get_flatpages prefix for user as flatpages asdf%}")
-
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_views.py b/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_views.py
deleted file mode 100644
index 0448b21..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/tests/test_views.py
+++ /dev/null
@@ -1,129 +0,0 @@
-import os
-from django.conf import settings
-from django.contrib.auth.models import User
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.contrib.flatpages.models import FlatPage
-from django.test import TestCase
-from django.test.utils import override_settings
-
-
-@override_settings(
- LOGIN_URL='/accounts/login/',
- MIDDLEWARE_CLASSES=(
- 'django.middleware.common.CommonMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
- # no 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'
- ),
- TEMPLATE_DIRS=(
- os.path.join(os.path.dirname(__file__), 'templates'),
- ),
- SITE_ID=1,
-)
-class FlatpageViewTests(TestCase):
- fixtures = ['sample_flatpages', 'example_site']
- urls = 'django.contrib.flatpages.tests.urls'
-
- def test_view_flatpage(self):
- "A flatpage can be served through a view"
- response = self.client.get('/flatpage_root/flatpage/')
- self.assertEqual(response.status_code, 200)
- self.assertContains(response, "<p>Isn't it flat!</p>")
-
- def test_view_non_existent_flatpage(self):
- "A non-existent flatpage raises 404 when served through a view"
- response = self.client.get('/flatpage_root/no_such_flatpage/')
- self.assertEqual(response.status_code, 404)
-
- @skipIfCustomUser
- def test_view_authenticated_flatpage(self):
- "A flatpage served through a view can require authentication"
- response = self.client.get('/flatpage_root/sekrit/')
- self.assertRedirects(response, '/accounts/login/?next=/flatpage_root/sekrit/')
- User.objects.create_user('testuser', 'test@example.com', 's3krit')
- self.client.login(username='testuser',password='s3krit')
- response = self.client.get('/flatpage_root/sekrit/')
- self.assertEqual(response.status_code, 200)
- self.assertContains(response, "<p>Isn't it sekrit!</p>")
-
- def test_fallback_flatpage(self):
- "A fallback flatpage won't be served if the middleware is disabled"
- response = self.client.get('/flatpage/')
- self.assertEqual(response.status_code, 404)
-
- def test_fallback_non_existent_flatpage(self):
- "A non-existent flatpage won't be served if the fallback middlware is disabled"
- response = self.client.get('/no_such_flatpage/')
- self.assertEqual(response.status_code, 404)
-
- def test_view_flatpage_special_chars(self):
- "A flatpage with special chars in the URL can be served through a view"
- fp = FlatPage.objects.create(
- url="/some.very_special~chars-here/",
- title="A very special page",
- content="Isn't it special!",
- enable_comments=False,
- registration_required=False,
- )
- fp.sites.add(settings.SITE_ID)
-
- response = self.client.get('/flatpage_root/some.very_special~chars-here/')
- self.assertEqual(response.status_code, 200)
- self.assertContains(response, "<p>Isn't it special!</p>")
-
-
-@override_settings(
- APPEND_SLASH = True,
- LOGIN_URL='/accounts/login/',
- MIDDLEWARE_CLASSES=(
- 'django.middleware.common.CommonMiddleware',
- 'django.contrib.sessions.middleware.SessionMiddleware',
- 'django.middleware.csrf.CsrfViewMiddleware',
- 'django.contrib.auth.middleware.AuthenticationMiddleware',
- 'django.contrib.messages.middleware.MessageMiddleware',
- # no 'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware'
- ),
- TEMPLATE_DIRS=(
- os.path.join(os.path.dirname(__file__), 'templates'),
- ),
- SITE_ID=1,
-)
-class FlatpageViewAppendSlashTests(TestCase):
- fixtures = ['sample_flatpages', 'example_site']
- urls = 'django.contrib.flatpages.tests.urls'
-
- def test_redirect_view_flatpage(self):
- "A flatpage can be served through a view and should add a slash"
- response = self.client.get('/flatpage_root/flatpage')
- self.assertRedirects(response, '/flatpage_root/flatpage/', status_code=301)
-
- def test_redirect_view_non_existent_flatpage(self):
- "A non-existent flatpage raises 404 when served through a view and should not add a slash"
- response = self.client.get('/flatpage_root/no_such_flatpage')
- self.assertEqual(response.status_code, 404)
-
- def test_redirect_fallback_flatpage(self):
- "A fallback flatpage won't be served if the middleware is disabled and should not add a slash"
- response = self.client.get('/flatpage')
- self.assertEqual(response.status_code, 404)
-
- def test_redirect_fallback_non_existent_flatpage(self):
- "A non-existent flatpage won't be served if the fallback middlware is disabled and should not add a slash"
- response = self.client.get('/no_such_flatpage')
- self.assertEqual(response.status_code, 404)
-
- def test_redirect_view_flatpage_special_chars(self):
- "A flatpage with special chars in the URL can be served through a view and should add a slash"
- fp = FlatPage.objects.create(
- url="/some.very_special~chars-here/",
- title="A very special page",
- content="Isn't it special!",
- enable_comments=False,
- registration_required=False,
- )
- fp.sites.add(settings.SITE_ID)
-
- response = self.client.get('/flatpage_root/some.very_special~chars-here')
- self.assertRedirects(response, '/flatpage_root/some.very_special~chars-here/', status_code=301)
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/tests/urls.py b/lib/python2.7/site-packages/django/contrib/flatpages/tests/urls.py
deleted file mode 100644
index e0e7a07..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/tests/urls.py
+++ /dev/null
@@ -1,8 +0,0 @@
-from django.conf.urls import patterns, include
-
-# special urls for flatpage test cases
-urlpatterns = patterns('',
- (r'^flatpage_root', include('django.contrib.flatpages.urls')),
- (r'^accounts/', include('django.contrib.auth.urls')),
-)
-
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/urls.py b/lib/python2.7/site-packages/django/contrib/flatpages/urls.py
deleted file mode 100644
index 5abb8e1..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/urls.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from django.conf.urls import patterns
-
-urlpatterns = patterns('django.contrib.flatpages.views',
- (r'^(?P<url>.*)$', 'flatpage'),
-)
diff --git a/lib/python2.7/site-packages/django/contrib/flatpages/views.py b/lib/python2.7/site-packages/django/contrib/flatpages/views.py
deleted file mode 100644
index 20e930f..0000000
--- a/lib/python2.7/site-packages/django/contrib/flatpages/views.py
+++ /dev/null
@@ -1,72 +0,0 @@
-from django.conf import settings
-from django.contrib.flatpages.models import FlatPage
-from django.contrib.sites.models import get_current_site
-from django.http import Http404, HttpResponse, HttpResponsePermanentRedirect
-from django.shortcuts import get_object_or_404
-from django.template import loader, RequestContext
-from django.utils.safestring import mark_safe
-from django.views.decorators.csrf import csrf_protect
-
-DEFAULT_TEMPLATE = 'flatpages/default.html'
-
-# This view is called from FlatpageFallbackMiddleware.process_response
-# when a 404 is raised, which often means CsrfViewMiddleware.process_view
-# has not been called even if CsrfViewMiddleware is installed. So we need
-# to use @csrf_protect, in case the template needs {% csrf_token %}.
-# However, we can't just wrap this view; if no matching flatpage exists,
-# or a redirect is required for authentication, the 404 needs to be returned
-# without any CSRF checks. Therefore, we only
-# CSRF protect the internal implementation.
-def flatpage(request, url):
- """
- Public interface to the flat page view.
-
- Models: `flatpages.flatpages`
- Templates: Uses the template defined by the ``template_name`` field,
- or :template:`flatpages/default.html` if template_name is not defined.
- Context:
- flatpage
- `flatpages.flatpages` object
- """
- if not url.startswith('/'):
- url = '/' + url
- site_id = get_current_site(request).id
- try:
- f = get_object_or_404(FlatPage,
- url__exact=url, sites__id__exact=site_id)
- except Http404:
- if not url.endswith('/') and settings.APPEND_SLASH:
- url += '/'
- f = get_object_or_404(FlatPage,
- url__exact=url, sites__id__exact=site_id)
- return HttpResponsePermanentRedirect('%s/' % request.path)
- else:
- raise
- return render_flatpage(request, f)
-
-@csrf_protect
-def render_flatpage(request, f):
- """
- Internal interface to the flat page view.
- """
- # If registration is required for accessing this page, and the user isn't
- # logged in, redirect to the login page.
- if f.registration_required and not request.user.is_authenticated():
- from django.contrib.auth.views import redirect_to_login
- return redirect_to_login(request.path)
- if f.template_name:
- t = loader.select_template((f.template_name, DEFAULT_TEMPLATE))
- else:
- t = loader.get_template(DEFAULT_TEMPLATE)
-
- # To avoid having to always use the "|safe" filter in flatpage templates,
- # mark the title and content as already safe (since they are raw HTML
- # content in the first place).
- f.title = mark_safe(f.title)
- f.content = mark_safe(f.content)
-
- c = RequestContext(request, {
- 'flatpage': f,
- })
- response = HttpResponse(t.render(c))
- return response
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/__init__.py b/lib/python2.7/site-packages/django/contrib/formtools/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/exceptions.py b/lib/python2.7/site-packages/django/contrib/formtools/exceptions.py
deleted file mode 100644
index f07ac9f..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/exceptions.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from django.core.exceptions import SuspiciousOperation
-
-
-class WizardViewCookieModified(SuspiciousOperation):
- """Signature of cookie modified"""
- pass
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ar/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/ar/LC_MESSAGES/django.mo
deleted file mode 100644
index 05d932c..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ar/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ar/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/ar/LC_MESSAGES/django.po
deleted file mode 100644
index fc13ed9..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ar/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# dado_eyad <d.eyad.t@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-10-28 09:54+0000\n"
-"Last-Translator: dado_eyad <d.eyad.t@gmail.com>\n"
-"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/"
-"ar/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "الخطوة الأولى"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "الخطوة السابقة"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "أرسل"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/az/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/az/LC_MESSAGES/django.mo
deleted file mode 100644
index 3d7060f..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/az/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/az/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/az/LC_MESSAGES/django.po
deleted file mode 100644
index 9d749d3..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/az/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,33 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/"
-"language/az/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: az\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr ""
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/be/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/be/LC_MESSAGES/django.mo
deleted file mode 100644
index ac79538..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/be/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/be/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/be/LC_MESSAGES/django.po
deleted file mode 100644
index 9373d80..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/be/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/"
-"language/be/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: be\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "першы крок"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "папярэдні крок"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "падаць"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/bg/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/bg/LC_MESSAGES/django.mo
deleted file mode 100644
index acd8ff3..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/bg/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/bg/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/bg/LC_MESSAGES/django.po
deleted file mode 100644
index fe104fe..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/bg/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Georgi Kostadinov <grgkostadinov@gmail.com>, 2012
-# Todor Lube <tlubenov@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/"
-"language/bg/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bg\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "първа стъпка"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "предишна стъпка"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "запази"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/bn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/bn/LC_MESSAGES/django.mo
deleted file mode 100644
index f08a75b..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/bn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/bn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/bn/LC_MESSAGES/django.po
deleted file mode 100644
index 78d62f2..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/bn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,33 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/"
-"bn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr ""
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/br/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/br/LC_MESSAGES/django.mo
deleted file mode 100644
index cf43088..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/br/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/br/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/br/LC_MESSAGES/django.po
deleted file mode 100644
index c7d3313..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/br/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Fulup <fulup.jakez@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/"
-"br/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: br\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "pazenn gentañ"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "pazenn gent"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "kas"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/bs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/bs/LC_MESSAGES/django.mo
deleted file mode 100644
index 6be7f4c..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/bs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/bs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/bs/LC_MESSAGES/django.po
deleted file mode 100644
index ab3549f..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/bs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/"
-"bs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bs\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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr ""
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ca/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/ca/LC_MESSAGES/django.mo
deleted file mode 100644
index 1efc93e..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ca/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ca/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/ca/LC_MESSAGES/django.po
deleted file mode 100644
index d270091..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ca/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Carles Barrobés <carles@barrobes.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Catalan (http://www.transifex.com/projects/p/django/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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "primer pas"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "pas anterior"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "enviar"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/cs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/cs/LC_MESSAGES/django.mo
deleted file mode 100644
index 71a16cf..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/cs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/cs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/cs/LC_MESSAGES/django.po
deleted file mode 100644
index 114a7af..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/cs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Vlada Macek <macek@sandbox.cz>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-09-13 11:48+0000\n"
-"Last-Translator: Vlada Macek <macek@sandbox.cz>\n"
-"Language-Team: Czech (http://www.transifex.com/projects/p/django/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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "první krok"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "předchozí krok"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "odeslat"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "Data objektu ManagementForm chybí nebo byla pozměněna."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/cy/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/cy/LC_MESSAGES/django.mo
deleted file mode 100644
index 197a0ac..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/cy/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/cy/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/cy/LC_MESSAGES/django.po
deleted file mode 100644
index b5468ea..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/cy/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/"
-"cy/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cy\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
-"11) ? 2 : 3;\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr ""
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/da/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/da/LC_MESSAGES/django.mo
deleted file mode 100644
index 83f2fc3..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/da/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/da/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/da/LC_MESSAGES/django.po
deleted file mode 100644
index 1068519..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/da/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Christian Joergensen <christian@gmta.info>, 2012
-# Erik Wognsen <r4mses@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-11-10 11:08+0000\n"
-"Last-Translator: Erik Wognsen <r4mses@gmail.com>\n"
-"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/"
-"da/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: da\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "første skridt"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "forrige skridt"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "send"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "ManagementForm-data mangler eller er blevet manipuleret."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/de/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/de/LC_MESSAGES/django.mo
deleted file mode 100644
index 1e506c0..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/de/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/de/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/de/LC_MESSAGES/django.po
deleted file mode 100644
index 7b1d5d2..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/de/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Hagenbruch <ahagenbruch@googlemail.com>, 2012
-# Jannis , 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-10-23 08:25+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/django/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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "Erster Schritt"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "Vorheriger Schritt"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "Abschicken"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "ManagementForm-Daten fehlen oder wurden manipuliert."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/el/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/el/LC_MESSAGES/django.mo
deleted file mode 100644
index 607322f..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/el/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/el/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/el/LC_MESSAGES/django.po
deleted file mode 100644
index 654b11d..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/el/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Yorgos Pagles <y.pagles@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/"
-"el/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: el\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "πρώτο βήμα"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "επόμενο βήμα"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "αποδοχή"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/en/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/en/LC_MESSAGES/django.mo
deleted file mode 100644
index 684b735..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/en/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/en/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/en/LC_MESSAGES/django.po
deleted file mode 100644
index caea4ba..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/en/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,30 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2010-05-13 15:35+0200\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr ""
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/en_GB/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/en_GB/LC_MESSAGES/django.mo
deleted file mode 100644
index 3c20106..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/en_GB/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/en_GB/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/en_GB/LC_MESSAGES/django.po
deleted file mode 100644
index b47b800..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/en_GB/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jon_atkinson <jon@jonatkinson.co.uk>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
-"django/language/en_GB/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: en_GB\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "first step"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "prev step"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "submit"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/eo/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/eo/LC_MESSAGES/django.mo
deleted file mode 100644
index cf7f95e..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/eo/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/eo/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/eo/LC_MESSAGES/django.po
deleted file mode 100644
index e612912..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/eo/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Baptiste <baptiste+transifex@darthenay.fr>, 2011
-# Baptiste <baptiste+transifex@darthenay.fr>, 2013
-# sagittarian <adam.raizen@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-10-23 14:26+0000\n"
-"Last-Translator: Baptiste <baptiste+transifex@darthenay.fr>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/"
-"language/eo/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "unua paŝo"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "antaŭa paŝo"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "sendi"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "ManagementForm datumoj mankas, aŭ estas tuŝaĉitaj."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/es/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/es/LC_MESSAGES/django.mo
deleted file mode 100644
index 2d9d587..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/es/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/es/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/es/LC_MESSAGES/django.po
deleted file mode 100644
index 86215f3..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/es/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antoni Aloy <aaloy@apsl.net>, 2012-2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-09-04 20:33+0000\n"
-"Last-Translator: Antoni Aloy <aaloy@apsl.net>\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/django/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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "primer paso"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "paso anterior"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "enviar"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "Los datos de ManagementForm no están o han sido manipulados"
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/es_AR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/es_AR/LC_MESSAGES/django.mo
deleted file mode 100644
index 4a44940..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/es_AR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/es_AR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/es_AR/LC_MESSAGES/django.po
deleted file mode 100644
index 41b8310..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/es_AR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,37 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ramiro Morales <cramm0@gmail.com>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-10-26 20:48+0000\n"
-"Last-Translator: Ramiro Morales <cramm0@gmail.com>\n"
-"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
-"django/language/es_AR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_AR\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "primer paso"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "paso previo"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "enviar"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
-"Los datos correspondientes al ManagementForm no existen o han sido "
-"modificados"
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/es_MX/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/es_MX/LC_MESSAGES/django.mo
deleted file mode 100644
index 689459b..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/es_MX/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/es_MX/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/es_MX/LC_MESSAGES/django.po
deleted file mode 100644
index 87d05eb..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/es_MX/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Abraham Estrada <abraham.estrada@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/"
-"language/es_MX/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_MX\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "primer paso"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "paso anterior"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "enviar"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/et/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/et/LC_MESSAGES/django.mo
deleted file mode 100644
index 26eb330..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/et/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/et/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/et/LC_MESSAGES/django.po
deleted file mode 100644
index 4924a11..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/et/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# jannolii <jannolii@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-11-06 12:24+0000\n"
-"Last-Translator: jannolii <jannolii@gmail.com>\n"
-"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/"
-"et/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: et\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "esimene samm"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "eelmine samm"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "kinnita"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "ManagementForm andmed puuduvad või on muudetud."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/eu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/eu/LC_MESSAGES/django.mo
deleted file mode 100644
index 790d0fe..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/eu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/eu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/eu/LC_MESSAGES/django.po
deleted file mode 100644
index 120dbbf..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/eu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Aitzol Naberan <anaberan@codesyntax.com>, 2011-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-10-31 11:33+0000\n"
-"Last-Translator: Aitzol Naberan <anaberan@codesyntax.com>\n"
-"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/"
-"eu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "lehen pausua"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "aurreko pausua"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "bidali"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "ManagementForm daturik ez dago edo baliogabeak dira."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/fa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/fa/LC_MESSAGES/django.mo
deleted file mode 100644
index 8b8adfe..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/fa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/fa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/fa/LC_MESSAGES/django.po
deleted file mode 100644
index 8a7cb0c..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/fa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Nikneshan <ali@nikneshan.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Reza Mohammadi <reza@teeleh.ir>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-11-05 08:52+0000\n"
-"Last-Translator: Reza Mohammadi <reza@teeleh.ir>\n"
-"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/"
-"fa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "گام اول"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "گام قبل"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "ارسال"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "اطلاعات ManagementForm ناقص است و یا دستکاری شده است."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/fi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/fi/LC_MESSAGES/django.mo
deleted file mode 100644
index 2cd4b6b..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/fi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/fi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/fi/LC_MESSAGES/django.po
deleted file mode 100644
index 63cb09d..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/fi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# nanook <klaus.dahlen@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Finnish (http://www.transifex.com/projects/p/django/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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "ensimmäinen vaihe"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "edellinen vaihe"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "lähetä"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/fr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/fr/LC_MESSAGES/django.mo
deleted file mode 100644
index 25d58fc..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/fr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/fr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/fr/LC_MESSAGES/django.po
deleted file mode 100644
index c4dd26b..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/fr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# claudep <claude@2xlibre.net>, 2013
-# claudep <claude@2xlibre.net>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-22 07:10+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: French (http://www.transifex.com/projects/p/django/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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "première étape"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "étape précédente"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "soumettre"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
-"Les données du formulaire ManagementForm sont manquantes ou ont été "
-"manipulées."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/fy_NL/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/fy_NL/LC_MESSAGES/django.mo
deleted file mode 100644
index cf97e52..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/fy_NL/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/fy_NL/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/fy_NL/LC_MESSAGES/django.po
deleted file mode 100644
index 8fcb19c..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/fy_NL/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,33 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Western Frisian (Netherlands) (http://www.transifex.com/"
-"projects/p/django/language/fy_NL/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fy_NL\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr ""
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ga/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/ga/LC_MESSAGES/django.mo
deleted file mode 100644
index 53c83b8..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ga/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ga/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/ga/LC_MESSAGES/django.po
deleted file mode 100644
index 6edce56..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ga/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Michael Thornhill <michael@maithu.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/"
-"ga/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ga\n"
-"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
-"4);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "chéad chéim"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "chéim roimhe seo"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "chur faoi bhráid"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/gl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/gl/LC_MESSAGES/django.mo
deleted file mode 100644
index b1b34d5..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/gl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/gl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/gl/LC_MESSAGES/django.po
deleted file mode 100644
index 5068e15..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/gl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# fasouto <fsoutomoure@gmail.com>, 2011
-# fonso <fonzzo@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-09-07 11:30+0000\n"
-"Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
-"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/"
-"gl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "primeiro paso"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "paso anterior"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "enviar"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/he/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/he/LC_MESSAGES/django.mo
deleted file mode 100644
index c2bc32a..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/he/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/he/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/he/LC_MESSAGES/django.po
deleted file mode 100644
index bcf78c4..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/he/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Alex Gaynor <alex.gaynor@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Meir Kriheli <mkriheli@gmail.com>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-11-02 12:33+0000\n"
-"Last-Translator: Meir Kriheli <mkriheli@gmail.com>\n"
-"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "צעד ראשון"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "צעד אחרון"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "שלח"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "מידע ManagementForm חסר או התעסקו איתו."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/hi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/hi/LC_MESSAGES/django.mo
deleted file mode 100644
index ca46fcd..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/hi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/hi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/hi/LC_MESSAGES/django.po
deleted file mode 100644
index 30b2318..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/hi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Chandan kumar <chandankumar.093047@gmail.com>, 2012
-# Sandeep Satavlekar <sandysat@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/"
-"hi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "पहला कदम"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "पिछला कदम"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "प्रस्तुत करे "
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/hr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/hr/LC_MESSAGES/django.mo
deleted file mode 100644
index 48cdfec..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/hr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/hr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/hr/LC_MESSAGES/django.po
deleted file mode 100644
index ed35511..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/hr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,37 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# berislavlopac <berislav.lopac@gmail.com>, 2012
-# Dimitris Glezos <glezos@transifex.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/"
-"hr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hr\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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "prvi korak"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "prethodni korak"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "pošalji"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/hu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/hu/LC_MESSAGES/django.mo
deleted file mode 100644
index 4583998..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/hu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/hu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/hu/LC_MESSAGES/django.po
deleted file mode 100644
index 8f5c694..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/hu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Attila Nagy <>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/"
-"language/hu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "első"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "előző"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "küldés"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ia/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/ia/LC_MESSAGES/django.mo
deleted file mode 100644
index b0af1f4..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ia/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ia/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/ia/LC_MESSAGES/django.po
deleted file mode 100644
index 325d8fb..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ia/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Martijn Dekker <mcdutchie@hotmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/"
-"language/ia/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ia\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "prime passo"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "previe passo"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "submitter"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/id/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/id/LC_MESSAGES/django.mo
deleted file mode 100644
index cc76794..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/id/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/id/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/id/LC_MESSAGES/django.po
deleted file mode 100644
index 9b7b68e..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/id/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# rodin <romihardiyanto@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "langkah pertama"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "langkah pertama"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "langkah sebelumnya"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/is/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/is/LC_MESSAGES/django.mo
deleted file mode 100644
index f3c4c76..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/is/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/is/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/is/LC_MESSAGES/django.po
deleted file mode 100644
index f912f52..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/is/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Hafsteinn Einarsson <haffi67@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/"
-"language/is/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: is\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "fyrsta skref"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "fyrra skref"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "Senda"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/it/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/it/LC_MESSAGES/django.mo
deleted file mode 100644
index 335f669..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/it/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/it/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/it/LC_MESSAGES/django.po
deleted file mode 100644
index c346d0f..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/it/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Flavio Curella <flavio.curella@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nicola Larosa <transifex@teknico.net>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-10-23 16:36+0000\n"
-"Last-Translator: Flavio Curella <flavio.curella@gmail.com>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/django/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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "primo passo"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "passo precedente"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "invia"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "I dati del ManagementForm sono mancanti oppure sono stati manomessi."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ja/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/ja/LC_MESSAGES/django.mo
deleted file mode 100644
index d063d97..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ja/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ja/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/ja/LC_MESSAGES/django.po
deleted file mode 100644
index 0b695e4..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ja/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Shinya Okano <tokibito@gmail.com>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-10-05 06:49+0000\n"
-"Last-Translator: Shinya Okano <tokibito@gmail.com>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/"
-"ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "最初のステップ"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "前のステップ"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "送信"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "ManagementFormデータが見つからないか、改竄されています。"
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ka/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/ka/LC_MESSAGES/django.mo
deleted file mode 100644
index 8a0bc62..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ka/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ka/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/ka/LC_MESSAGES/django.po
deleted file mode 100644
index cb6a646..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ka/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Bouatchidzé <a@anbz.net>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/"
-"ka/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ka\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "პირველი ეტაპი"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "წინა ეტაპი"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "გაგზავნა"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/kk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/kk/LC_MESSAGES/django.mo
deleted file mode 100644
index dced094..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/kk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/kk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/kk/LC_MESSAGES/django.po
deleted file mode 100644
index cb061a0..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/kk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,33 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/"
-"kk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kk\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr ""
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/km/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/km/LC_MESSAGES/django.mo
deleted file mode 100644
index e714bcd..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/km/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/km/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/km/LC_MESSAGES/django.po
deleted file mode 100644
index df66594..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/km/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,33 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Khmer (http://www.transifex.com/projects/p/django/language/"
-"km/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: km\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr ""
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/kn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/kn/LC_MESSAGES/django.mo
deleted file mode 100644
index 25b028e..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/kn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/kn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/kn/LC_MESSAGES/django.po
deleted file mode 100644
index 2f35b34..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/kn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,33 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/"
-"kn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kn\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr ""
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ko/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/ko/LC_MESSAGES/django.mo
deleted file mode 100644
index 985db2d..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ko/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ko/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/ko/LC_MESSAGES/django.po
deleted file mode 100644
index 474e179..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ko/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,33 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/"
-"ko/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ko\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr ""
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/lt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/lt/LC_MESSAGES/django.mo
deleted file mode 100644
index ce083a9..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/lt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/lt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/lt/LC_MESSAGES/django.po
deleted file mode 100644
index a349475..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/lt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# lauris <lauris@runbox.com>, 2011
-# Simonas Kazlauskas <simonas@kazlauskas.me>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-10-23 16:04+0000\n"
-"Last-Translator: Simonas Kazlauskas <simonas@kazlauskas.me>\n"
-"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/"
-"language/lt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lt\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
-"%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "pirmas žingsnis"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "praeitas žingsnis"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "pateikti"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "ManagementForm duomenys yra sugadinti arba neegzistuoja."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/lv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/lv/LC_MESSAGES/django.mo
deleted file mode 100644
index 2694677..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/lv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/lv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/lv/LC_MESSAGES/django.po
deleted file mode 100644
index 6bbb6bf..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/lv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/"
-"lv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lv\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr ""
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/mk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/mk/LC_MESSAGES/django.mo
deleted file mode 100644
index b78b8bc..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/mk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/mk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/mk/LC_MESSAGES/django.po
deleted file mode 100644
index 70323d9..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/mk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# vvangelovski <vvangelovski@gmail.com>, 2013
-# vvangelovski <vvangelovski@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-09-23 11:29+0000\n"
-"Last-Translator: vvangelovski <vvangelovski@gmail.com>\n"
-"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/"
-"language/mk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mk\n"
-"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "прв чекор"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "претходен чекор"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "готово"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "податоците од ManagementForm недостасуваат или се менувани."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ml/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/ml/LC_MESSAGES/django.mo
deleted file mode 100644
index 6d8e26e..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ml/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ml/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/ml/LC_MESSAGES/django.po
deleted file mode 100644
index 0dd6857..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ml/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Rajeesh Nair <rajeeshrnair@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/"
-"language/ml/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ml\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "ആദ്യ ഘട്ടം"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "തൊട്ടു മുമ്പിലെ ഘട്ടം"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "സമര്‍പ്പിക്കൂ"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/mn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/mn/LC_MESSAGES/django.mo
deleted file mode 100644
index 951230f..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/mn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/mn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/mn/LC_MESSAGES/django.po
deleted file mode 100644
index e66f0ae..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/mn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jacara <baskhuujacara@gmail.com>, 2011
-# zorig <zorig_ezd@yahoo.com>, 2013
-# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-11-30 18:06+0000\n"
-"Last-Translator: zorig <zorig_ezd@yahoo.com>\n"
-"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/"
-"language/mn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "эхний алхам"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "өмнөх алхам"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "илгээх"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "УдирдахФормын мэдээлэл олдсонгүй эсвэл өөрчлөгдсөн байна"
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/nb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/nb/LC_MESSAGES/django.mo
deleted file mode 100644
index db031a8..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/nb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/nb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/nb/LC_MESSAGES/django.po
deleted file mode 100644
index cac007a..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/nb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jonklo <jonklo@gmail.com>, 2013
-# jonklo <jonklo@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-09-02 16:48+0000\n"
-"Last-Translator: jonklo <jonklo@gmail.com>\n"
-"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/"
-"language/nb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "første steg"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "forrige steg"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "lagre"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "ManagementForm-data mangler eller har blitt tuklet med."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ne/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/ne/LC_MESSAGES/django.mo
deleted file mode 100644
index c564d5e..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ne/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ne/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/ne/LC_MESSAGES/django.po
deleted file mode 100644
index 4dfae46..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ne/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Paras Nath Chaudhary <opnchaudhary@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/"
-"ne/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ne\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "प्रथम चाल "
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "अघिल्लो चाल "
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "जम्मा गर्नु "
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/nl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/nl/LC_MESSAGES/django.mo
deleted file mode 100644
index bdbc57f..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/nl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/nl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/nl/LC_MESSAGES/django.po
deleted file mode 100644
index a1a8107..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/nl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Bouke Haarsma <bouke@webatoom.nl>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Jeffrey Gelens <jeffrey@noppo.pro>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-10-30 08:12+0000\n"
-"Last-Translator: Bouke Haarsma <bouke@webatoom.nl>\n"
-"Language-Team: Dutch (http://www.transifex.com/projects/p/django/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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "eerste stap"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "vorige stap"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "verzenden"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "ManagementForm ontbreekt of is mee gesjoemeld."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/nn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/nn/LC_MESSAGES/django.mo
deleted file mode 100644
index f13137b..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/nn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/nn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/nn/LC_MESSAGES/django.po
deleted file mode 100644
index 5bfc7c1..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/nn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# velmont <odin.omdal@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/"
-"language/nn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "fyrste steg"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "førre steg"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "lagre"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/os/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/os/LC_MESSAGES/django.mo
deleted file mode 100644
index afdf864..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/os/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/os/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/os/LC_MESSAGES/django.po
deleted file mode 100644
index 71d39e2..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/os/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Ossetic (http://www.transifex.com/projects/p/django/language/"
-"os/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: os\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "фыццаг къахцӕф"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "ай размӕ къахцӕф"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "арвитын"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/pa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/pa/LC_MESSAGES/django.mo
deleted file mode 100644
index 6ec6ed5..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/pa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/pa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/pa/LC_MESSAGES/django.po
deleted file mode 100644
index 2b3366b..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/pa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# A S Alam <apreet.alam@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/"
-"language/pa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pa\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "ਪਹਿਲਾਂ ਪਗ"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "ਪਿਛਲਾ ਪਗ਼"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "ਭੇਜੋ"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/pl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/pl/LC_MESSAGES/django.mo
deleted file mode 100644
index a80242f..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/pl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/pl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/pl/LC_MESSAGES/django.po
deleted file mode 100644
index 4de198f..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/pl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# angularcircle, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/django/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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "Pierwszy krok"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "Poprzedni krok"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "Wyślij"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/pt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/pt/LC_MESSAGES/django.mo
deleted file mode 100644
index e4ed29b..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/pt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/pt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/pt/LC_MESSAGES/django.po
deleted file mode 100644
index eaa7a1b..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/pt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nuno Mariz <nmariz@gmail.com>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-10-31 16:28+0000\n"
-"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
-"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "primeiro passo"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "passo anterior"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "submeter"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "Os dados do ManagementForm está omisso ou foi adulterado."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/pt_BR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/pt_BR/LC_MESSAGES/django.mo
deleted file mode 100644
index f522244..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/pt_BR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/pt_BR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/pt_BR/LC_MESSAGES/django.po
deleted file mode 100644
index e9be26f..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/pt_BR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Elyézer Rezende <elyezermr@gmail.com>, 2013
-# Guilherme Gondim <semente@taurinus.org>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-21 13:05+0000\n"
-"Last-Translator: Elyézer Rezende <elyezermr@gmail.com>\n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
-"django/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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "primeiro passo"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "passo anterior"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "enviar"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "Os dados do ManagementForm não foram encontrados ou foram adulterados."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ro/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/ro/LC_MESSAGES/django.mo
deleted file mode 100644
index df1ae6c..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ro/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ro/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/ro/LC_MESSAGES/django.po
deleted file mode 100644
index 57695e3..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ro/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# mihneasim <contact@mesimian.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-09-02 13:28+0000\n"
-"Last-Translator: mihneasim <contact@mesimian.com>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/"
-"ro/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1));\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "primul pas"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "pasul anterior"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "confirmă"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ru/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/ru/LC_MESSAGES/django.mo
deleted file mode 100644
index 0b77ff8..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ru/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ru/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/ru/LC_MESSAGES/django.po
deleted file mode 100644
index bbbdb14..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ru/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,37 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Eugene MechanisM <contact@mechanism.name>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Алексей Борискин <sun.void@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-10-27 16:14+0000\n"
-"Last-Translator: Алексей Борискин <sun.void@gmail.com>\n"
-"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/"
-"ru/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "первый шаг"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "предыдущий шаг"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "отправить"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "Данные управляющей формы отсутствуют или были повреждены."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/sk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/sk/LC_MESSAGES/django.mo
deleted file mode 100644
index d0c2be1..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/sk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/sk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/sk/LC_MESSAGES/django.po
deleted file mode 100644
index e3aef73..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/sk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Juraj Bubniak <translations@jbub.eu>, 2013
-# Marian Andre <marian@andre.sk>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-10-30 15:51+0000\n"
-"Last-Translator: Juraj Bubniak <translations@jbub.eu>\n"
-"Language-Team: Slovak (http://www.transifex.com/projects/p/django/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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "prvý krok"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "predchádzajúci krok"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "odoslať"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "Dáta ManagementForm chýbajú alebo boli sfalšované."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/sl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/sl/LC_MESSAGES/django.mo
deleted file mode 100644
index d7c374f..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/sl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/sl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/sl/LC_MESSAGES/django.po
deleted file mode 100644
index 10ccb74..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/sl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,37 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# zejn <zejn@kiberpipa.org>, 2013
-# zejn <zejn@kiberpipa.org>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-10-23 14:28+0000\n"
-"Last-Translator: zejn <zejn@kiberpipa.org>\n"
-"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/"
-"language/sl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "prvi korak"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "predhodni korak"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "pošlji"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "Podatki iz ManagementForm manjkajo ali pa so bili spreminjani."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/sq/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/sq/LC_MESSAGES/django.mo
deleted file mode 100644
index 653096f..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/sq/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/sq/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/sq/LC_MESSAGES/django.po
deleted file mode 100644
index b9fcf6d..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/sq/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Besnik <besnik@programeshqip.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/"
-"sq/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sq\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "hapi i parë"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "hapi i mëparshëm"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "parashtroje"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/sr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/sr/LC_MESSAGES/django.mo
deleted file mode 100644
index 9649270..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/sr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/sr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/sr/LC_MESSAGES/django.po
deleted file mode 100644
index 9abae40..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/sr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/"
-"sr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr\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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "први корак"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "претходни корак"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "постави"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/sr_Latn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/sr_Latn/LC_MESSAGES/django.mo
deleted file mode 100644
index 95e68d7..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/sr_Latn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/sr_Latn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/sr_Latn/LC_MESSAGES/django.po
deleted file mode 100644
index a456b20..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/sr_Latn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/"
-"language/sr@latin/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr@latin\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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "prvi korak"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "prethodni korak"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "postavi"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/sv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/sv/LC_MESSAGES/django.mo
deleted file mode 100644
index 06752ec..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/sv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/sv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/sv/LC_MESSAGES/django.po
deleted file mode 100644
index 3af5f3a..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/sv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Andreas Pelme <andreas@pelme.se>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# biljettshop <thomas@biljettshop.se>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-10-28 10:07+0000\n"
-"Last-Translator: biljettshop <thomas@biljettshop.se>\n"
-"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/"
-"sv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sv\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "första steget"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "föregående steg"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "spara"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "ManagementForm data saknas eller har manipulerats"
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/sw/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/sw/LC_MESSAGES/django.mo
deleted file mode 100644
index f036372..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/sw/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/sw/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/sw/LC_MESSAGES/django.po
deleted file mode 100644
index b3f2995..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/sw/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# machaku <bmachaku@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-11-12 07:35+0000\n"
-"Last-Translator: machaku <bmachaku@gmail.com>\n"
-"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/"
-"sw/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sw\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "hatua ya kwanza"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "hatua iliyopita"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "wasilisha"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "Data za uratibu zimekosekana au zimechakachuliwa."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ta/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/ta/LC_MESSAGES/django.mo
deleted file mode 100644
index 41cef4b..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ta/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ta/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/ta/LC_MESSAGES/django.po
deleted file mode 100644
index 191f5db..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ta/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,33 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/"
-"ta/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ta\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr ""
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/te/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/te/LC_MESSAGES/django.mo
deleted file mode 100644
index e3a40fd..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/te/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/te/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/te/LC_MESSAGES/django.po
deleted file mode 100644
index c73fc99..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/te/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,33 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/"
-"te/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: te\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr ""
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/th/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/th/LC_MESSAGES/django.mo
deleted file mode 100644
index af95be5..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/th/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/th/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/th/LC_MESSAGES/django.po
deleted file mode 100644
index d44474c..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/th/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Vichai Vongvorakul <vongvichai@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/"
-"th/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: th\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "ขั้นตอนแรก"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "ขั้นตอนก่อนหน้านี้"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "ดำเนินการส่ง"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/tr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/tr/LC_MESSAGES/django.mo
deleted file mode 100644
index 9036db1..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/tr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/tr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/tr/LC_MESSAGES/django.po
deleted file mode 100644
index 6a4d429..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/tr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# cihad <cihadgundogdu@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Murat Çorlu <muratcorlu@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-20 11:19+0000\n"
-"Last-Translator: cihad <cihadgundogdu@gmail.com>\n"
-"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/"
-"tr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "ilk adım"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "önceki adım"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "gönder"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr "ManagementForm verisi eksik veya bozulmuş."
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/tt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/tt/LC_MESSAGES/django.mo
deleted file mode 100644
index a1b54eb..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/tt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/tt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/tt/LC_MESSAGES/django.po
deleted file mode 100644
index 3b9cf6d..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/tt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,33 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/"
-"tt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tt\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr ""
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/uk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/uk/LC_MESSAGES/django.mo
deleted file mode 100644
index 3bc9293..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/uk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/uk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/uk/LC_MESSAGES/django.po
deleted file mode 100644
index c78252b..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/uk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,36 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sergey Lysach <sergikoff88@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "перший крок"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "попередній крок"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "відправити"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ur/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/ur/LC_MESSAGES/django.mo
deleted file mode 100644
index c384b75..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ur/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/ur/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/ur/LC_MESSAGES/django.po
deleted file mode 100644
index 0200477..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/ur/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,33 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/"
-"ur/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ur\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr ""
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/vi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/vi/LC_MESSAGES/django.mo
deleted file mode 100644
index 09d65f1..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/vi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/vi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/vi/LC_MESSAGES/django.po
deleted file mode 100644
index 2639373..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/vi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,33 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/"
-"language/vi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr ""
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr ""
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/zh_CN/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/zh_CN/LC_MESSAGES/django.mo
deleted file mode 100644
index 378c27b..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/zh_CN/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/zh_CN/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/zh_CN/LC_MESSAGES/django.po
deleted file mode 100644
index c3119e7..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/zh_CN/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ziang Song <songziang@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "第一步"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "上一步"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "提交"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/zh_TW/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/formtools/locale/zh_TW/LC_MESSAGES/django.mo
deleted file mode 100644
index eb07917..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/zh_TW/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/locale/zh_TW/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/formtools/locale/zh_TW/LC_MESSAGES/django.po
deleted file mode 100644
index 820d6c3..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/locale/zh_TW/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# ilay <ilay@ilay.tw>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-08-16 15:07+0200\n"
-"PO-Revision-Date: 2013-08-17 09:27+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/"
-"language/zh_TW/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_TW\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: templates/formtools/wizard/wizard_form.html:15
-msgid "first step"
-msgstr "第一步"
-
-#: templates/formtools/wizard/wizard_form.html:16
-msgid "prev step"
-msgstr "下一步"
-
-#: templates/formtools/wizard/wizard_form.html:18
-msgid "submit"
-msgstr "送出"
-
-#: wizard/views.py:275
-msgid "ManagementForm data is missing or has been tampered."
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/models.py b/lib/python2.7/site-packages/django/contrib/formtools/models.py
deleted file mode 100644
index 13990e2..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/models.py
+++ /dev/null
@@ -1 +0,0 @@
-""" models.py (even empty) currently required by the runtests.py to enable unit tests """
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/preview.py b/lib/python2.7/site-packages/django/contrib/formtools/preview.py
deleted file mode 100644
index d2e6987..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/preview.py
+++ /dev/null
@@ -1,148 +0,0 @@
-"""
-Formtools Preview application.
-"""
-
-from django.http import Http404
-from django.shortcuts import render_to_response
-from django.template.context import RequestContext
-from django.utils.crypto import constant_time_compare
-from django.contrib.formtools.utils import form_hmac
-
-AUTO_ID = 'formtools_%s' # Each form here uses this as its auto_id parameter.
-
-class FormPreview(object):
- preview_template = 'formtools/preview.html'
- form_template = 'formtools/form.html'
-
- # METHODS SUBCLASSES SHOULDN'T OVERRIDE ###################################
-
- def __init__(self, form):
- # form should be a Form class, not an instance.
- self.form, self.state = form, {}
-
- def __call__(self, request, *args, **kwargs):
- stage = {'1': 'preview', '2': 'post'}.get(request.POST.get(self.unused_name('stage')), 'preview')
- self.parse_params(*args, **kwargs)
- try:
- method = getattr(self, stage + '_' + request.method.lower())
- except AttributeError:
- raise Http404
- return method(request)
-
- def unused_name(self, name):
- """
- Given a first-choice name, adds an underscore to the name until it
- reaches a name that isn't claimed by any field in the form.
-
- This is calculated rather than being hard-coded so that no field names
- are off-limits for use in the form.
- """
- while 1:
- try:
- f = self.form.base_fields[name]
- except KeyError:
- break # This field name isn't being used by the form.
- name += '_'
- return name
-
- def preview_get(self, request):
- "Displays the form"
- f = self.form(auto_id=self.get_auto_id(), initial=self.get_initial(request))
- return render_to_response(self.form_template,
- self.get_context(request, f),
- context_instance=RequestContext(request))
-
- def preview_post(self, request):
- "Validates the POST data. If valid, displays the preview page. Else, redisplays form."
- f = self.form(request.POST, auto_id=self.get_auto_id())
- context = self.get_context(request, f)
- if f.is_valid():
- self.process_preview(request, f, context)
- context['hash_field'] = self.unused_name('hash')
- context['hash_value'] = self.security_hash(request, f)
- return render_to_response(self.preview_template, context, context_instance=RequestContext(request))
- else:
- return render_to_response(self.form_template, context, context_instance=RequestContext(request))
-
- def _check_security_hash(self, token, request, form):
- expected = self.security_hash(request, form)
- return constant_time_compare(token, expected)
-
- def post_post(self, request):
- "Validates the POST data. If valid, calls done(). Else, redisplays form."
- f = self.form(request.POST, auto_id=self.get_auto_id())
- if f.is_valid():
- if not self._check_security_hash(request.POST.get(self.unused_name('hash'), ''),
- request, f):
- return self.failed_hash(request) # Security hash failed.
- return self.done(request, f.cleaned_data)
- else:
- return render_to_response(self.form_template,
- self.get_context(request, f),
- context_instance=RequestContext(request))
-
- # METHODS SUBCLASSES MIGHT OVERRIDE IF APPROPRIATE ########################
-
- def get_auto_id(self):
- """
- Hook to override the ``auto_id`` kwarg for the form. Needed when
- rendering two form previews in the same template.
- """
- return AUTO_ID
-
- def get_initial(self, request):
- """
- Takes a request argument and returns a dictionary to pass to the form's
- ``initial`` kwarg when the form is being created from an HTTP get.
- """
- return {}
-
- def get_context(self, request, form):
- "Context for template rendering."
- return {'form': form, 'stage_field': self.unused_name('stage'), 'state': self.state}
-
-
- def parse_params(self, *args, **kwargs):
- """
- Given captured args and kwargs from the URLconf, saves something in
- self.state and/or raises Http404 if necessary.
-
- For example, this URLconf captures a user_id variable:
-
- (r'^contact/(?P<user_id>\d{1,6})/$', MyFormPreview(MyForm)),
-
- In this case, the kwargs variable in parse_params would be
- {'user_id': 32} for a request to '/contact/32/'. You can use that
- user_id to make sure it's a valid user and/or save it for later, for
- use in done().
- """
- pass
-
- def process_preview(self, request, form, context):
- """
- Given a validated form, performs any extra processing before displaying
- the preview page, and saves any extra data in context.
- """
- pass
-
- def security_hash(self, request, form):
- """
- Calculates the security hash for the given HttpRequest and Form instances.
-
- Subclasses may want to take into account request-specific information,
- such as the IP address.
- """
- return form_hmac(form)
-
- def failed_hash(self, request):
- "Returns an HttpResponse in the case of an invalid security hash."
- return self.preview_post(request)
-
- # METHODS SUBCLASSES MUST OVERRIDE ########################################
-
- def done(self, request, cleaned_data):
- """
- Does something with the cleaned_data and returns an
- HttpResponseRedirect.
- """
- raise NotImplementedError('You must define a done() method on your %s subclass.' % self.__class__.__name__)
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/templates/formtools/form.html b/lib/python2.7/site-packages/django/contrib/formtools/templates/formtools/form.html
deleted file mode 100644
index 2f2de1f..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/templates/formtools/form.html
+++ /dev/null
@@ -1,15 +0,0 @@
-{% extends "base.html" %}
-
-{% block content %}
-
-{% if form.errors %}<h1>Please correct the following errors</h1>{% else %}<h1>Submit</h1>{% endif %}
-
-<form action="" method="post">{% csrf_token %}
-<table>
-{{ form }}
-</table>
-<input type="hidden" name="{{ stage_field }}" value="1" />
-<p><input type="submit" value="Preview" /></p>
-</form>
-
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/templates/formtools/preview.html b/lib/python2.7/site-packages/django/contrib/formtools/templates/formtools/preview.html
deleted file mode 100644
index eb88b1e..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/templates/formtools/preview.html
+++ /dev/null
@@ -1,36 +0,0 @@
-{% extends "base.html" %}
-
-{% block content %}
-
-<h1>Preview your submission</h1>
-
-<table>
-{% for field in form %}
-<tr>
-<th>{{ field.label }}:</th>
-<td>{{ field.data }}</td>
-</tr>
-{% endfor %}
-</table>
-
-<p>Security hash: {{ hash_value }}</p>
-
-<form action="" method="post">{% csrf_token %}
-{% for field in form %}{{ field.as_hidden }}
-{% endfor %}
-<input type="hidden" name="{{ stage_field }}" value="2" />
-<input type="hidden" name="{{ hash_field }}" value="{{ hash_value }}" />
-<p><input type="submit" value="Submit" /></p>
-</form>
-
-<h1>Or edit it again</h1>
-
-<form action="" method="post">{% csrf_token %}
-<table>
-{{ form }}
-</table>
-<input type="hidden" name="{{ stage_field }}" value="1" />
-<p><input type="submit" value="Preview" /></p>
-</form>
-
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/templates/formtools/wizard/wizard_form.html b/lib/python2.7/site-packages/django/contrib/formtools/templates/formtools/wizard/wizard_form.html
deleted file mode 100644
index 95bc576..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/templates/formtools/wizard/wizard_form.html
+++ /dev/null
@@ -1,18 +0,0 @@
-{% load i18n %}
-{% csrf_token %}
-{{ wizard.form.media }}
-{{ wizard.management_form }}
-{% if wizard.form.forms %}
- {{ wizard.form.management_form }}
- {% for form in wizard.form.forms %}
- {{ form.as_p }}
- {% endfor %}
-{% else %}
- {{ wizard.form.as_p }}
-{% endif %}
-
-{% if wizard.steps.prev %}
-<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.first }}">{% trans "first step" %}</button>
-<button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}">{% trans "prev step" %}</button>
-{% endif %}
-<input type="submit" name="submit" value="{% trans "submit" %}" />
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/__init__.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/forms.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/forms.py
deleted file mode 100644
index 6f3ce4b..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/forms.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from django import forms
-
-class TestForm(forms.Form):
- field1 = forms.CharField()
- field1_ = forms.CharField()
- bool1 = forms.BooleanField(required=False)
- date1 = forms.DateField(required=False)
-
-class HashTestForm(forms.Form):
- name = forms.CharField()
- bio = forms.CharField()
-
-class HashTestBlankForm(forms.Form):
- name = forms.CharField(required=False)
- bio = forms.CharField(required=False)
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/templates/404.html b/lib/python2.7/site-packages/django/contrib/formtools/tests/templates/404.html
deleted file mode 100644
index 4aa1203..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/templates/404.html
+++ /dev/null
@@ -1 +0,0 @@
-Not found.
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/templates/base.html b/lib/python2.7/site-packages/django/contrib/formtools/tests/templates/base.html
deleted file mode 100644
index c6afe66..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/templates/base.html
+++ /dev/null
@@ -1,2 +0,0 @@
-{% block content %}
-{% endblock %} \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/templates/forms/wizard.html b/lib/python2.7/site-packages/django/contrib/formtools/tests/templates/forms/wizard.html
deleted file mode 100644
index c911c3c..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/templates/forms/wizard.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<html>
- <body>
- <p>Step {{ step }} of {{ step_count }}</p>
- <form action="." method="post">
- <table>
- {{ form }}
- </table>
- <input type="hidden" name="{{ step_field }}" value="{{ step0 }}" />
- {{ previous_fields|safe }}
- <input type="submit">
- </form>
- </body>
-</html>
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/tests.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/tests.py
deleted file mode 100644
index 58c59f4..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/tests.py
+++ /dev/null
@@ -1,183 +0,0 @@
-# -*- coding: utf-8 -*-
-from __future__ import unicode_literals
-
-import datetime
-import os
-import warnings
-
-from django import http
-from django.contrib.formtools import preview, utils
-from django.test import TestCase
-from django.test.utils import override_settings
-from django.utils._os import upath
-from django.utils import unittest
-
-from django.contrib.formtools.tests.forms import *
-
-success_string = "Done was called!"
-success_string_encoded = success_string.encode()
-
-class TestFormPreview(preview.FormPreview):
- def get_context(self, request, form):
- context = super(TestFormPreview, self).get_context(request, form)
- context.update({'custom_context': True})
- return context
-
- def get_initial(self, request):
- return {'field1': 'Works!'}
-
- def done(self, request, cleaned_data):
- return http.HttpResponse(success_string)
-
-@override_settings(
- TEMPLATE_DIRS=(
- os.path.join(os.path.dirname(upath(__file__)), 'templates'),
- ),
-)
-class PreviewTests(TestCase):
- urls = 'django.contrib.formtools.tests.urls'
-
- def setUp(self):
- super(PreviewTests, self).setUp()
- # Create a FormPreview instance to share between tests
- self.preview = preview.FormPreview(TestForm)
- input_template = '<input type="hidden" name="%s" value="%s" />'
- self.input = input_template % (self.preview.unused_name('stage'), "%d")
- self.test_data = {'field1': 'foo', 'field1_': 'asdf'}
-
- def test_unused_name(self):
- """
- Verifies name mangling to get uniue field name.
- """
- self.assertEqual(self.preview.unused_name('field1'), 'field1__')
-
- def test_form_get(self):
- """
- Test contrib.formtools.preview form retrieval.
-
- Use the client library to see if we can sucessfully retrieve
- the form (mostly testing the setup ROOT_URLCONF
- process). Verify that an additional hidden input field
- is created to manage the stage.
-
- """
- response = self.client.get('/preview/')
- stage = self.input % 1
- self.assertContains(response, stage, 1)
- self.assertEqual(response.context['custom_context'], True)
- self.assertEqual(response.context['form'].initial, {'field1': 'Works!'})
-
- def test_form_preview(self):
- """
- Test contrib.formtools.preview form preview rendering.
-
- Use the client library to POST to the form to see if a preview
- is returned. If we do get a form back check that the hidden
- value is correctly managing the state of the form.
-
- """
- # Pass strings for form submittal and add stage variable to
- # show we previously saw first stage of the form.
- self.test_data.update({'stage': 1, 'date1': datetime.date(2006, 10, 25)})
- response = self.client.post('/preview/', self.test_data)
- # Check to confirm stage is set to 2 in output form.
- stage = self.input % 2
- self.assertContains(response, stage, 1)
-
- def test_form_submit(self):
- """
- Test contrib.formtools.preview form submittal.
-
- Use the client library to POST to the form with stage set to 3
- to see if our forms done() method is called. Check first
- without the security hash, verify failure, retry with security
- hash and verify sucess.
-
- """
- # Pass strings for form submittal and add stage variable to
- # show we previously saw first stage of the form.
- self.test_data.update({'stage': 2, 'date1': datetime.date(2006, 10, 25)})
- response = self.client.post('/preview/', self.test_data)
- self.assertNotEqual(response.content, success_string_encoded)
- hash = self.preview.security_hash(None, TestForm(self.test_data))
- self.test_data.update({'hash': hash})
- response = self.client.post('/preview/', self.test_data)
- self.assertEqual(response.content, success_string_encoded)
-
- def test_bool_submit(self):
- """
- Test contrib.formtools.preview form submittal when form contains:
- BooleanField(required=False)
-
- Ticket: #6209 - When an unchecked BooleanField is previewed, the preview
- form's hash would be computed with no value for ``bool1``. However, when
- the preview form is rendered, the unchecked hidden BooleanField would be
- rendered with the string value 'False'. So when the preview form is
- resubmitted, the hash would be computed with the value 'False' for
- ``bool1``. We need to make sure the hashes are the same in both cases.
-
- """
- self.test_data.update({'stage':2})
- hash = self.preview.security_hash(None, TestForm(self.test_data))
- self.test_data.update({'hash': hash, 'bool1': 'False'})
- with warnings.catch_warnings(record=True):
- response = self.client.post('/preview/', self.test_data)
- self.assertEqual(response.content, success_string_encoded)
-
- def test_form_submit_good_hash(self):
- """
- Test contrib.formtools.preview form submittal, using a correct
- hash
- """
- # Pass strings for form submittal and add stage variable to
- # show we previously saw first stage of the form.
- self.test_data.update({'stage':2})
- response = self.client.post('/preview/', self.test_data)
- self.assertNotEqual(response.content, success_string_encoded)
- hash = utils.form_hmac(TestForm(self.test_data))
- self.test_data.update({'hash': hash})
- response = self.client.post('/preview/', self.test_data)
- self.assertEqual(response.content, success_string_encoded)
-
-
- def test_form_submit_bad_hash(self):
- """
- Test contrib.formtools.preview form submittal does not proceed
- if the hash is incorrect.
- """
- # Pass strings for form submittal and add stage variable to
- # show we previously saw first stage of the form.
- self.test_data.update({'stage':2})
- response = self.client.post('/preview/', self.test_data)
- self.assertEqual(response.status_code, 200)
- self.assertNotEqual(response.content, success_string_encoded)
- hash = utils.form_hmac(TestForm(self.test_data)) + "bad"
- self.test_data.update({'hash': hash})
- response = self.client.post('/previewpreview/', self.test_data)
- self.assertNotEqual(response.content, success_string_encoded)
-
-
-class FormHmacTests(unittest.TestCase):
-
- def test_textfield_hash(self):
- """
- Regression test for #10034: the hash generation function should ignore
- leading/trailing whitespace so as to be friendly to broken browsers that
- submit it (usually in textareas).
- """
- f1 = HashTestForm({'name': 'joe', 'bio': 'Speaking español.'})
- f2 = HashTestForm({'name': ' joe', 'bio': 'Speaking español. '})
- hash1 = utils.form_hmac(f1)
- hash2 = utils.form_hmac(f2)
- self.assertEqual(hash1, hash2)
-
- def test_empty_permitted(self):
- """
- Regression test for #10643: the security hash should allow forms with
- empty_permitted = True, or forms where data has not changed.
- """
- f1 = HashTestBlankForm({})
- f2 = HashTestForm({}, empty_permitted=True)
- hash1 = utils.form_hmac(f1)
- hash2 = utils.form_hmac(f2)
- self.assertEqual(hash1, hash2)
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/urls.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/urls.py
deleted file mode 100644
index f96f89e..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/urls.py
+++ /dev/null
@@ -1,15 +0,0 @@
-"""
-This is a URLconf to be loaded by tests.py. Add any URLs needed for tests only.
-"""
-
-from __future__ import absolute_import
-
-from django.conf.urls import patterns, url
-from django.contrib.formtools.tests.tests import TestFormPreview
-
-from django.contrib.formtools.tests.forms import TestForm
-
-
-urlpatterns = patterns('',
- url(r'^preview/', TestFormPreview(TestForm)),
-)
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/__init__.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/__init__.py
deleted file mode 100644
index 81de44e..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/__init__.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from django.contrib.formtools.tests.wizard.test_cookiestorage import TestCookieStorage
-from django.contrib.formtools.tests.wizard.test_forms import FormTests, SessionFormTests, CookieFormTests
-from django.contrib.formtools.tests.wizard.test_loadstorage import TestLoadStorage
-from django.contrib.formtools.tests.wizard.namedwizardtests.tests import (
- NamedSessionWizardTests,
- NamedCookieWizardTests,
- TestNamedUrlSessionWizardView,
- TestNamedUrlCookieWizardView,
- NamedSessionFormTests,
- NamedCookieFormTests,
-)
-from django.contrib.formtools.tests.wizard.test_sessionstorage import TestSessionStorage
-from django.contrib.formtools.tests.wizard.wizardtests.tests import (
- SessionWizardTests,
- CookieWizardTests,
- WizardTestKwargs,
- WizardTestGenericViewInterface,
- WizardFormKwargsOverrideTests,
-)
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/__init__.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/forms.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/forms.py
deleted file mode 100644
index 39e914d..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/forms.py
+++ /dev/null
@@ -1,52 +0,0 @@
-import os
-import tempfile
-
-from django import forms
-from django.core.files.storage import FileSystemStorage
-from django.forms.formsets import formset_factory
-from django.http import HttpResponse
-from django.template import Template, Context
-
-from django.contrib.auth.models import User
-
-from django.contrib.formtools.wizard.views import NamedUrlWizardView
-
-temp_storage_location = tempfile.mkdtemp(dir=os.environ.get('DJANGO_TEST_TEMP_DIR'))
-temp_storage = FileSystemStorage(location=temp_storage_location)
-
-class Page1(forms.Form):
- name = forms.CharField(max_length=100)
- user = forms.ModelChoiceField(queryset=User.objects.all())
- thirsty = forms.NullBooleanField()
-
-class Page2(forms.Form):
- address1 = forms.CharField(max_length=100)
- address2 = forms.CharField(max_length=100)
- file1 = forms.FileField()
-
-class Page3(forms.Form):
- random_crap = forms.CharField(max_length=100)
-
-Page4 = formset_factory(Page3, extra=2)
-
-class ContactWizard(NamedUrlWizardView):
- file_storage = temp_storage
-
- def done(self, form_list, **kwargs):
- c = Context({
- 'form_list': [x.cleaned_data for x in form_list],
- 'all_cleaned_data': self.get_all_cleaned_data()
- })
-
- for form in self.form_list.keys():
- c[form] = self.get_cleaned_data_for_step(form)
-
- c['this_will_fail'] = self.get_cleaned_data_for_step('this_will_fail')
- return HttpResponse(Template('').render(c))
-
-class SessionContactWizard(ContactWizard):
- storage_name = 'django.contrib.formtools.wizard.storage.session.SessionStorage'
-
-class CookieContactWizard(ContactWizard):
- storage_name = 'django.contrib.formtools.wizard.storage.cookie.CookieStorage'
-
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/tests.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/tests.py
deleted file mode 100644
index b6125db..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/tests.py
+++ /dev/null
@@ -1,382 +0,0 @@
-from __future__ import unicode_literals
-
-from django.core.urlresolvers import reverse
-from django.http import QueryDict
-from django.test import TestCase
-
-from django.contrib.auth.models import User
-from django.contrib.auth.tests.utils import skipIfCustomUser
-
-from django.contrib.formtools.wizard.views import (NamedUrlSessionWizardView,
- NamedUrlCookieWizardView)
-from django.contrib.formtools.tests.wizard.test_forms import get_request, Step1, Step2
-
-
-class NamedWizardTests(object):
- urls = 'django.contrib.formtools.tests.wizard.namedwizardtests.urls'
-
- def setUp(self):
- self.testuser, created = User.objects.get_or_create(username='testuser1')
- self.wizard_step_data[0]['form1-user'] = self.testuser.pk
-
- def test_initial_call(self):
- response = self.client.get(reverse('%s_start' % self.wizard_urlname))
- self.assertEqual(response.status_code, 302)
- response = self.client.get(response.url)
- self.assertEqual(response.status_code, 200)
- wizard = response.context['wizard']
- self.assertEqual(wizard['steps'].current, 'form1')
- self.assertEqual(wizard['steps'].step0, 0)
- self.assertEqual(wizard['steps'].step1, 1)
- self.assertEqual(wizard['steps'].last, 'form4')
- self.assertEqual(wizard['steps'].prev, None)
- self.assertEqual(wizard['steps'].next, 'form2')
- self.assertEqual(wizard['steps'].count, 4)
- self.assertEqual(wizard['url_name'], self.wizard_urlname)
-
- def test_initial_call_with_params(self):
- get_params = {'getvar1': 'getval1', 'getvar2': 'getval2'}
- response = self.client.get(reverse('%s_start' % self.wizard_urlname),
- get_params)
- self.assertEqual(response.status_code, 302)
-
- # Test for proper redirect GET parameters
- location = response.url
- self.assertNotEqual(location.find('?'), -1)
- querydict = QueryDict(location[location.find('?') + 1:])
- self.assertEqual(dict(querydict.items()), get_params)
-
- def test_form_post_error(self):
- response = self.client.post(
- reverse(self.wizard_urlname, kwargs={'step': 'form1'}),
- self.wizard_step_1_data)
-
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form1')
- self.assertEqual(response.context['wizard']['form'].errors,
- {'name': ['This field is required.'],
- 'user': ['This field is required.']})
-
- def test_form_post_success(self):
- response = self.client.post(
- reverse(self.wizard_urlname, kwargs={'step': 'form1'}),
- self.wizard_step_data[0])
- response = self.client.get(response.url)
-
- self.assertEqual(response.status_code, 200)
- wizard = response.context['wizard']
- self.assertEqual(wizard['steps'].current, 'form2')
- self.assertEqual(wizard['steps'].step0, 1)
- self.assertEqual(wizard['steps'].prev, 'form1')
- self.assertEqual(wizard['steps'].next, 'form3')
-
- def test_form_stepback(self):
- response = self.client.get(
- reverse(self.wizard_urlname, kwargs={'step': 'form1'}))
-
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form1')
-
- response = self.client.post(
- reverse(self.wizard_urlname, kwargs={'step': 'form1'}),
- self.wizard_step_data[0])
- response = self.client.get(response.url)
-
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form2')
-
- response = self.client.post(
- reverse(self.wizard_urlname, kwargs={
- 'step': response.context['wizard']['steps'].current
- }), {'wizard_goto_step': response.context['wizard']['steps'].prev})
- response = self.client.get(response.url)
-
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form1')
-
- def test_form_jump(self):
- response = self.client.get(
- reverse(self.wizard_urlname, kwargs={'step': 'form1'}))
-
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form1')
-
- response = self.client.get(
- reverse(self.wizard_urlname, kwargs={'step': 'form3'}))
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form3')
-
- def test_form_finish(self):
- response = self.client.get(
- reverse(self.wizard_urlname, kwargs={'step': 'form1'}))
-
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form1')
-
- response = self.client.post(
- reverse(self.wizard_urlname,
- kwargs={'step': response.context['wizard']['steps'].current}),
- self.wizard_step_data[0])
- response = self.client.get(response.url)
-
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form2')
-
- post_data = self.wizard_step_data[1]
- post_data['form2-file1'].close()
- post_data['form2-file1'] = open(__file__, 'rb')
- response = self.client.post(
- reverse(self.wizard_urlname,
- kwargs={'step': response.context['wizard']['steps'].current}),
- post_data)
- response = self.client.get(response.url)
-
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form3')
-
- response = self.client.post(
- reverse(self.wizard_urlname,
- kwargs={'step': response.context['wizard']['steps'].current}),
- self.wizard_step_data[2])
- response = self.client.get(response.url)
-
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form4')
-
- response = self.client.post(
- reverse(self.wizard_urlname,
- kwargs={'step': response.context['wizard']['steps'].current}),
- self.wizard_step_data[3])
- response = self.client.get(response.url)
- self.assertEqual(response.status_code, 200)
-
- all_data = response.context['form_list']
- with open(__file__, 'rb') as f:
- self.assertEqual(all_data[1]['file1'].read(), f.read())
- all_data[1]['file1'].close()
- del all_data[1]['file1']
- self.assertEqual(all_data, [
- {'name': 'Pony', 'thirsty': True, 'user': self.testuser},
- {'address1': '123 Main St', 'address2': 'Djangoland'},
- {'random_crap': 'blah blah'},
- [{'random_crap': 'blah blah'}, {'random_crap': 'blah blah'}]])
-
- def test_cleaned_data(self):
- response = self.client.get(
- reverse(self.wizard_urlname, kwargs={'step': 'form1'}))
- self.assertEqual(response.status_code, 200)
-
- response = self.client.post(
- reverse(self.wizard_urlname,
- kwargs={'step': response.context['wizard']['steps'].current}),
- self.wizard_step_data[0])
- response = self.client.get(response.url)
- self.assertEqual(response.status_code, 200)
-
- post_data = self.wizard_step_data[1]
- post_data['form2-file1'] = open(__file__, 'rb')
- response = self.client.post(
- reverse(self.wizard_urlname,
- kwargs={'step': response.context['wizard']['steps'].current}),
- post_data)
- response = self.client.get(response.url)
- self.assertEqual(response.status_code, 200)
-
- step2_url = reverse(self.wizard_urlname, kwargs={'step': 'form2'})
- response = self.client.get(step2_url)
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form2')
- with open(__file__, 'rb') as f:
- self.assertEqual(
- response.context['wizard']['form'].files['form2-file1'].read(),
- f.read())
-
- response = self.client.post(
- reverse(self.wizard_urlname,
- kwargs={'step': response.context['wizard']['steps'].current}),
- self.wizard_step_data[2])
- response = self.client.get(response.url)
- self.assertEqual(response.status_code, 200)
-
- response = self.client.post(
- reverse(self.wizard_urlname,
- kwargs={'step': response.context['wizard']['steps'].current}),
- self.wizard_step_data[3])
- response = self.client.get(response.url)
- self.assertEqual(response.status_code, 200)
-
- all_data = response.context['all_cleaned_data']
- with open(__file__, 'rb') as f:
- self.assertEqual(all_data['file1'].read(), f.read())
- all_data['file1'].close()
- del all_data['file1']
- self.assertEqual(
- all_data,
- {'name': 'Pony', 'thirsty': True, 'user': self.testuser,
- 'address1': '123 Main St', 'address2': 'Djangoland',
- 'random_crap': 'blah blah', 'formset-form4': [
- {'random_crap': 'blah blah'},
- {'random_crap': 'blah blah'}
- ]})
-
- def test_manipulated_data(self):
- response = self.client.get(
- reverse(self.wizard_urlname, kwargs={'step': 'form1'}))
- self.assertEqual(response.status_code, 200)
-
- response = self.client.post(
- reverse(self.wizard_urlname,
- kwargs={'step': response.context['wizard']['steps'].current}),
- self.wizard_step_data[0])
- response = self.client.get(response.url)
- self.assertEqual(response.status_code, 200)
-
- post_data = self.wizard_step_data[1]
- post_data['form2-file1'].close()
- post_data['form2-file1'] = open(__file__, 'rb')
- response = self.client.post(
- reverse(self.wizard_urlname,
- kwargs={'step': response.context['wizard']['steps'].current}),
- post_data)
- response = self.client.get(response.url)
- self.assertEqual(response.status_code, 200)
-
- response = self.client.post(
- reverse(self.wizard_urlname,
- kwargs={'step': response.context['wizard']['steps'].current}),
- self.wizard_step_data[2])
- loc = response.url
- response = self.client.get(loc)
- self.assertEqual(response.status_code, 200, loc)
-
- self.client.cookies.pop('sessionid', None)
- self.client.cookies.pop('wizard_cookie_contact_wizard', None)
-
- response = self.client.post(
- reverse(self.wizard_urlname,
- kwargs={'step': response.context['wizard']['steps'].current}),
- self.wizard_step_data[3])
-
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form1')
-
- def test_form_reset(self):
- response = self.client.post(
- reverse(self.wizard_urlname, kwargs={'step': 'form1'}),
- self.wizard_step_data[0])
- response = self.client.get(response.url)
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form2')
-
- response = self.client.get(
- '%s?reset=1' % reverse('%s_start' % self.wizard_urlname))
- self.assertEqual(response.status_code, 302)
-
- response = self.client.get(response.url)
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form1')
-
-
-@skipIfCustomUser
-class NamedSessionWizardTests(NamedWizardTests, TestCase):
- wizard_urlname = 'nwiz_session'
- wizard_step_1_data = {
- 'session_contact_wizard-current_step': 'form1',
- }
- wizard_step_data = (
- {
- 'form1-name': 'Pony',
- 'form1-thirsty': '2',
- 'session_contact_wizard-current_step': 'form1',
- },
- {
- 'form2-address1': '123 Main St',
- 'form2-address2': 'Djangoland',
- 'session_contact_wizard-current_step': 'form2',
- },
- {
- 'form3-random_crap': 'blah blah',
- 'session_contact_wizard-current_step': 'form3',
- },
- {
- 'form4-INITIAL_FORMS': '0',
- 'form4-TOTAL_FORMS': '2',
- 'form4-MAX_NUM_FORMS': '0',
- 'form4-0-random_crap': 'blah blah',
- 'form4-1-random_crap': 'blah blah',
- 'session_contact_wizard-current_step': 'form4',
- }
- )
-
-
-@skipIfCustomUser
-class NamedCookieWizardTests(NamedWizardTests, TestCase):
- wizard_urlname = 'nwiz_cookie'
- wizard_step_1_data = {
- 'cookie_contact_wizard-current_step': 'form1',
- }
- wizard_step_data = (
- {
- 'form1-name': 'Pony',
- 'form1-thirsty': '2',
- 'cookie_contact_wizard-current_step': 'form1',
- },
- {
- 'form2-address1': '123 Main St',
- 'form2-address2': 'Djangoland',
- 'cookie_contact_wizard-current_step': 'form2',
- },
- {
- 'form3-random_crap': 'blah blah',
- 'cookie_contact_wizard-current_step': 'form3',
- },
- {
- 'form4-INITIAL_FORMS': '0',
- 'form4-TOTAL_FORMS': '2',
- 'form4-MAX_NUM_FORMS': '0',
- 'form4-0-random_crap': 'blah blah',
- 'form4-1-random_crap': 'blah blah',
- 'cookie_contact_wizard-current_step': 'form4',
- }
- )
-
-
-class NamedFormTests(object):
- urls = 'django.contrib.formtools.tests.wizard.namedwizardtests.urls'
-
- def test_revalidation(self):
- request = get_request()
-
- testform = self.formwizard_class.as_view(
- [('start', Step1), ('step2', Step2)],
- url_name=self.wizard_urlname)
- response, instance = testform(request, step='done')
-
- instance.render_done(None)
- self.assertEqual(instance.storage.current_step, 'start')
-
-
-class TestNamedUrlSessionWizardView(NamedUrlSessionWizardView):
-
- def dispatch(self, request, *args, **kwargs):
- response = super(TestNamedUrlSessionWizardView, self).dispatch(request, *args, **kwargs)
- return response, self
-
-
-class TestNamedUrlCookieWizardView(NamedUrlCookieWizardView):
-
- def dispatch(self, request, *args, **kwargs):
- response = super(TestNamedUrlCookieWizardView, self).dispatch(request, *args, **kwargs)
- return response, self
-
-
-@skipIfCustomUser
-class NamedSessionFormTests(NamedFormTests, TestCase):
- formwizard_class = TestNamedUrlSessionWizardView
- wizard_urlname = 'nwiz_session'
-
-
-@skipIfCustomUser
-class NamedCookieFormTests(NamedFormTests, TestCase):
- formwizard_class = TestNamedUrlCookieWizardView
- wizard_urlname = 'nwiz_cookie'
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/urls.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/urls.py
deleted file mode 100644
index ac2cadc..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/namedwizardtests/urls.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from django.conf.urls import patterns, url
-from django.contrib.formtools.tests.wizard.namedwizardtests.forms import (
- SessionContactWizard, CookieContactWizard, Page1, Page2, Page3, Page4)
-
-def get_named_session_wizard():
- return SessionContactWizard.as_view(
- [('form1', Page1), ('form2', Page2), ('form3', Page3), ('form4', Page4)],
- url_name='nwiz_session',
- done_step_name='nwiz_session_done'
- )
-
-def get_named_cookie_wizard():
- return CookieContactWizard.as_view(
- [('form1', Page1), ('form2', Page2), ('form3', Page3), ('form4', Page4)],
- url_name='nwiz_cookie',
- done_step_name='nwiz_cookie_done'
- )
-
-urlpatterns = patterns('',
- url(r'^nwiz_session/(?P<step>.+)/$', get_named_session_wizard(), name='nwiz_session'),
- url(r'^nwiz_session/$', get_named_session_wizard(), name='nwiz_session_start'),
- url(r'^nwiz_cookie/(?P<step>.+)/$', get_named_cookie_wizard(), name='nwiz_cookie'),
- url(r'^nwiz_cookie/$', get_named_cookie_wizard(), name='nwiz_cookie_start'),
-)
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/storage.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/storage.py
deleted file mode 100644
index 17968df..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/storage.py
+++ /dev/null
@@ -1,87 +0,0 @@
-from datetime import datetime
-
-from django.http import HttpRequest
-from django.conf import settings
-from django.utils.importlib import import_module
-
-from django.contrib.auth.models import User
-
-
-def get_request():
- request = HttpRequest()
- engine = import_module(settings.SESSION_ENGINE)
- request.session = engine.SessionStore(None)
- return request
-
-
-class TestStorage(object):
- def setUp(self):
- self.testuser, created = User.objects.get_or_create(username='testuser1')
-
- def test_current_step(self):
- request = get_request()
- storage = self.get_storage()('wizard1', request, None)
- my_step = 2
-
- self.assertEqual(storage.current_step, None)
-
- storage.current_step = my_step
- self.assertEqual(storage.current_step, my_step)
-
- storage.reset()
- self.assertEqual(storage.current_step, None)
-
- storage.current_step = my_step
- storage2 = self.get_storage()('wizard2', request, None)
- self.assertEqual(storage2.current_step, None)
-
- def test_step_data(self):
- request = get_request()
- storage = self.get_storage()('wizard1', request, None)
- step1 = 'start'
- step_data1 = {'field1': 'data1',
- 'field2': 'data2',
- 'field3': datetime.now(),
- 'field4': self.testuser}
-
- self.assertEqual(storage.get_step_data(step1), None)
-
- storage.set_step_data(step1, step_data1)
- self.assertEqual(storage.get_step_data(step1), step_data1)
-
- storage.reset()
- self.assertEqual(storage.get_step_data(step1), None)
-
- storage.set_step_data(step1, step_data1)
- storage2 = self.get_storage()('wizard2', request, None)
- self.assertEqual(storage2.get_step_data(step1), None)
-
- def test_extra_context(self):
- request = get_request()
- storage = self.get_storage()('wizard1', request, None)
- extra_context = {'key1': 'data1',
- 'key2': 'data2',
- 'key3': datetime.now(),
- 'key4': self.testuser}
-
- self.assertEqual(storage.extra_data, {})
-
- storage.extra_data = extra_context
- self.assertEqual(storage.extra_data, extra_context)
-
- storage.reset()
- self.assertEqual(storage.extra_data, {})
-
- storage.extra_data = extra_context
- storage2 = self.get_storage()('wizard2', request, None)
- self.assertEqual(storage2.extra_data, {})
-
- def test_extra_context_key_persistence(self):
- request = get_request()
- storage = self.get_storage()('wizard1', request, None)
-
- self.assertFalse('test' in storage.extra_data)
-
- storage.extra_data['test'] = True
-
- self.assertTrue('test' in storage.extra_data)
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_cookiestorage.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_cookiestorage.py
deleted file mode 100644
index 4c1ff97..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_cookiestorage.py
+++ /dev/null
@@ -1,47 +0,0 @@
-from django.test import TestCase
-from django.core import signing
-from django.core.exceptions import SuspiciousOperation
-from django.http import HttpResponse
-
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.contrib.formtools.wizard.storage.cookie import CookieStorage
-from django.contrib.formtools.tests.wizard.storage import get_request, TestStorage
-
-
-@skipIfCustomUser
-class TestCookieStorage(TestStorage, TestCase):
- def get_storage(self):
- return CookieStorage
-
- def test_manipulated_cookie(self):
- request = get_request()
- storage = self.get_storage()('wizard1', request, None)
-
- cookie_signer = signing.get_cookie_signer(storage.prefix)
-
- storage.request.COOKIES[storage.prefix] = cookie_signer.sign(
- storage.encoder.encode({'key1': 'value1'}))
-
- self.assertEqual(storage.load_data(), {'key1': 'value1'})
-
- storage.request.COOKIES[storage.prefix] = 'i_am_manipulated'
- self.assertRaises(SuspiciousOperation, storage.load_data)
-
- def test_reset_cookie(self):
- request = get_request()
- storage = self.get_storage()('wizard1', request, None)
-
- storage.data = {'key1': 'value1'}
-
- response = HttpResponse()
- storage.update_response(response)
-
- cookie_signer = signing.get_cookie_signer(storage.prefix)
- signed_cookie_data = cookie_signer.sign(storage.encoder.encode(storage.data))
- self.assertEqual(response.cookies[storage.prefix].value, signed_cookie_data)
-
- storage.init_data()
- storage.update_response(response)
- unsigned_cookie_data = cookie_signer.unsign(response.cookies[storage.prefix].value)
- self.assertJSONEqual(unsigned_cookie_data,
- {"step_files": {}, "step": None, "extra_data": {}, "step_data": {}})
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_forms.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_forms.py
deleted file mode 100644
index 2191782..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_forms.py
+++ /dev/null
@@ -1,253 +0,0 @@
-from __future__ import unicode_literals
-
-from django import forms, http
-from django.conf import settings
-from django.db import models
-from django.test import TestCase
-from django.template.response import TemplateResponse
-from django.utils.importlib import import_module
-
-from django.contrib.auth.models import User
-
-from django.contrib.formtools.wizard.views import (WizardView,
- SessionWizardView,
- CookieWizardView)
-
-
-class DummyRequest(http.HttpRequest):
- def __init__(self, POST=None):
- super(DummyRequest, self).__init__()
- self.method = "POST" if POST else "GET"
- if POST is not None:
- self.POST.update(POST)
- self.session = {}
- self._dont_enforce_csrf_checks = True
-
-
-def get_request(*args, **kwargs):
- request = DummyRequest(*args, **kwargs)
- engine = import_module(settings.SESSION_ENGINE)
- request.session = engine.SessionStore(None)
- return request
-
-
-class Step1(forms.Form):
- name = forms.CharField()
-
-
-class Step2(forms.Form):
- name = forms.CharField()
-
-
-class Step3(forms.Form):
- data = forms.CharField()
-
-
-class CustomKwargsStep1(Step1):
-
- def __init__(self, test=None, *args, **kwargs):
- self.test = test
- return super(CustomKwargsStep1, self).__init__(*args, **kwargs)
-
-
-class TestModel(models.Model):
- name = models.CharField(max_length=100)
-
- class Meta:
- app_label = 'formtools'
-
-
-class TestModelForm(forms.ModelForm):
- class Meta:
- model = TestModel
- fields = '__all__'
-
-
-TestModelFormSet = forms.models.modelformset_factory(TestModel, form=TestModelForm, extra=2,
- fields='__all__')
-
-
-class TestWizard(WizardView):
- storage_name = 'django.contrib.formtools.wizard.storage.session.SessionStorage'
-
- def dispatch(self, request, *args, **kwargs):
- response = super(TestWizard, self).dispatch(request, *args, **kwargs)
- return response, self
-
- def get_form_kwargs(self, step, *args, **kwargs):
- kwargs = super(TestWizard, self).get_form_kwargs(step, *args, **kwargs)
- if step == 'kwargs_test':
- kwargs['test'] = True
- return kwargs
-
-class TestWizardWithInitAttrs(TestWizard):
- form_list = [Step1, Step2]
- condition_dict = {'step2': True}
- initial_dict = {'start': {'name': 'value1'}}
- instance_dict = {'start': User()}
-
-class FormTests(TestCase):
- def test_form_init(self):
- testform = TestWizard.get_initkwargs([Step1, Step2])
- self.assertEqual(testform['form_list'], {'0': Step1, '1': Step2})
-
- testform = TestWizard.get_initkwargs([('start', Step1), ('step2', Step2)])
- self.assertEqual(
- testform['form_list'], {'start': Step1, 'step2': Step2})
-
- testform = TestWizard.get_initkwargs([Step1, Step2, ('finish', Step3)])
- self.assertEqual(
- testform['form_list'], {'0': Step1, '1': Step2, 'finish': Step3})
-
- testform = TestWizardWithInitAttrs.get_initkwargs()
- self.assertEqual(testform['form_list'], {'0': Step1, '1': Step2})
-
- def test_first_step(self):
- request = get_request()
-
- testform = TestWizard.as_view([Step1, Step2])
- response, instance = testform(request)
- self.assertEqual(instance.steps.current, '0')
-
- testform = TestWizard.as_view([('start', Step1), ('step2', Step2)])
- response, instance = testform(request)
-
- self.assertEqual(instance.steps.current, 'start')
-
- def test_persistence(self):
- testform = TestWizard.as_view([('start', Step1), ('step2', Step2)])
- request = get_request({'test_wizard-current_step': 'start',
- 'name': 'data1'})
- response, instance = testform(request)
- self.assertEqual(instance.steps.current, 'start')
-
- instance.storage.current_step = 'step2'
-
- testform2 = TestWizard.as_view([('start', Step1), ('step2', Step2)])
- request.POST = {'test_wizard-current_step': 'step2'}
- response, instance = testform2(request)
- self.assertEqual(instance.steps.current, 'step2')
-
- def test_form_condition(self):
- request = get_request()
-
- testform = TestWizard.as_view(
- [('start', Step1), ('step2', Step2), ('step3', Step3)],
- condition_dict={'step2': True})
- response, instance = testform(request)
- self.assertEqual(instance.get_next_step(), 'step2')
-
- testform = TestWizard.as_view(
- [('start', Step1), ('step2', Step2), ('step3', Step3)],
- condition_dict={'step2': False})
- response, instance = testform(request)
- self.assertEqual(instance.get_next_step(), 'step3')
-
- testform = TestWizardWithInitAttrs.as_view(
- [('start', Step1), ('step2', Step2), ('step3', Step3)])
- response, instance = testform(request)
- self.assertEqual(instance.get_next_step(), 'step2')
-
- def test_form_kwargs(self):
- request = get_request()
-
- testform = TestWizard.as_view([('start', Step1),
- ('kwargs_test', CustomKwargsStep1)])
- response, instance = testform(request)
-
- self.assertEqual(instance.get_form_kwargs('start'), {})
- self.assertEqual(instance.get_form_kwargs('kwargs_test'), {'test': True})
- self.assertEqual(instance.get_form('kwargs_test').test, True)
-
- def test_form_prefix(self):
- request = get_request()
-
- testform = TestWizard.as_view([('start', Step1), ('step2', Step2)])
- response, instance = testform(request)
-
- self.assertEqual(instance.get_form_prefix(), 'start')
- self.assertEqual(instance.get_form_prefix('another'), 'another')
-
- def test_form_initial(self):
- request = get_request()
-
- testform = TestWizard.as_view([('start', Step1), ('step2', Step2)],
- initial_dict={'start': {'name': 'value1'}})
- response, instance = testform(request)
-
- self.assertEqual(instance.get_form_initial('start'), {'name': 'value1'})
- self.assertEqual(instance.get_form_initial('step2'), {})
-
- testform = TestWizardWithInitAttrs.as_view(
- [('start', Step1), ('step2', Step2)])
- response, instance = testform(request)
-
- self.assertEqual(instance.get_form_initial('start'), {'name': 'value1'})
- self.assertEqual(instance.get_form_initial('step2'), {})
-
- def test_form_instance(self):
- request = get_request()
- the_instance = TestModel()
- testform = TestWizard.as_view([('start', TestModelForm), ('step2', Step2)],
- instance_dict={'start': the_instance})
- response, instance = testform(request)
-
- self.assertEqual(
- instance.get_form_instance('start'),
- the_instance)
- self.assertEqual(
- instance.get_form_instance('non_exist_instance'),
- None)
-
- testform = TestWizardWithInitAttrs.as_view(
- [('start', TestModelForm), ('step2', Step2)])
- response, instance = testform(request)
-
- self.assertEqual(
- instance.get_form_instance('start'),
- TestWizardWithInitAttrs.instance_dict['start'])
-
- def test_formset_instance(self):
- request = get_request()
- the_instance1, created = TestModel.objects.get_or_create(
- name='test object 1')
- the_instance2, created = TestModel.objects.get_or_create(
- name='test object 2')
- testform = TestWizard.as_view([('start', TestModelFormSet), ('step2', Step2)],
- instance_dict={'start': TestModel.objects.filter(name='test object 1')})
- response, instance = testform(request)
-
- self.assertEqual(list(instance.get_form_instance('start')), [the_instance1])
- self.assertEqual(instance.get_form_instance('non_exist_instance'), None)
-
- self.assertEqual(instance.get_form().initial_form_count(), 1)
-
- def test_done(self):
- request = get_request()
-
- testform = TestWizard.as_view([('start', Step1), ('step2', Step2)])
- response, instance = testform(request)
-
- self.assertRaises(NotImplementedError, instance.done, None)
-
- def test_revalidation(self):
- request = get_request()
-
- testform = TestWizard.as_view([('start', Step1), ('step2', Step2)])
- response, instance = testform(request)
- instance.render_done(None)
- self.assertEqual(instance.storage.current_step, 'start')
-
-
-class SessionFormTests(TestCase):
- def test_init(self):
- request = get_request()
- testform = SessionWizardView.as_view([('start', Step1)])
- self.assertTrue(isinstance(testform(request), TemplateResponse))
-
-
-class CookieFormTests(TestCase):
- def test_init(self):
- request = get_request()
- testform = CookieWizardView.as_view([('start', Step1)])
- self.assertTrue(isinstance(testform(request), TemplateResponse))
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_loadstorage.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_loadstorage.py
deleted file mode 100644
index bb0b06e..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_loadstorage.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from django.test import TestCase
-
-from django.contrib.formtools.wizard.storage import get_storage, MissingStorage
-from django.contrib.formtools.wizard.storage.base import BaseStorage
-
-
-class TestLoadStorage(TestCase):
- def test_load_storage(self):
- self.assertEqual(
- type(get_storage('django.contrib.formtools.wizard.storage.base.BaseStorage', 'wizard1')),
- BaseStorage)
-
- def test_missing_storage(self):
- self.assertRaises(MissingStorage, get_storage,
- 'django.contrib.formtools.wizard.storage.idontexist.IDontExistStorage', 'wizard1')
- self.assertRaises(MissingStorage, get_storage,
- 'django.contrib.formtools.wizard.storage.base.IDontExistStorage', 'wizard1')
-
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_sessionstorage.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_sessionstorage.py
deleted file mode 100644
index 0bd9fd8..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/test_sessionstorage.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from django.test import TestCase
-
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.contrib.formtools.tests.wizard.storage import TestStorage
-from django.contrib.formtools.wizard.storage.session import SessionStorage
-
-
-@skipIfCustomUser
-class TestSessionStorage(TestStorage, TestCase):
- def get_storage(self):
- return SessionStorage
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/__init__.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/forms.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/forms.py
deleted file mode 100644
index 6a81329..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/forms.py
+++ /dev/null
@@ -1,67 +0,0 @@
-import os
-import tempfile
-
-from django import forms
-from django.contrib.auth.models import User
-from django.core.files.storage import FileSystemStorage
-from django.forms.formsets import formset_factory
-from django.forms.models import modelformset_factory
-from django.http import HttpResponse
-from django.template import Template, Context
-
-from django.contrib.auth.models import User
-
-from django.contrib.formtools.wizard.views import WizardView
-
-temp_storage_location = tempfile.mkdtemp(dir=os.environ.get('DJANGO_TEST_TEMP_DIR'))
-temp_storage = FileSystemStorage(location=temp_storage_location)
-
-class Page1(forms.Form):
- name = forms.CharField(max_length=100)
- user = forms.ModelChoiceField(queryset=User.objects.all())
- thirsty = forms.NullBooleanField()
-
-class Page2(forms.Form):
- address1 = forms.CharField(max_length=100)
- address2 = forms.CharField(max_length=100)
- file1 = forms.FileField()
-
-class Page3(forms.Form):
- random_crap = forms.CharField(max_length=100)
-
-Page4 = formset_factory(Page3, extra=2)
-
-class ContactWizard(WizardView):
- file_storage = temp_storage
-
- def done(self, form_list, **kwargs):
- c = Context({
- 'form_list': [x.cleaned_data for x in form_list],
- 'all_cleaned_data': self.get_all_cleaned_data(),
- })
-
- for form in self.form_list.keys():
- c[form] = self.get_cleaned_data_for_step(form)
-
- c['this_will_fail'] = self.get_cleaned_data_for_step('this_will_fail')
- return HttpResponse(Template('').render(c))
-
- def get_context_data(self, form, **kwargs):
- context = super(ContactWizard, self).get_context_data(form, **kwargs)
- if self.storage.current_step == 'form2':
- context.update({'another_var': True})
- return context
-
-class UserForm(forms.ModelForm):
- class Meta:
- model = User
- fields = ('username', 'email')
-
-UserFormSet = modelformset_factory(User, form=UserForm)
-
-class SessionContactWizard(ContactWizard):
- storage_name = 'django.contrib.formtools.wizard.storage.session.SessionStorage'
-
-class CookieContactWizard(ContactWizard):
- storage_name = 'django.contrib.formtools.wizard.storage.cookie.CookieStorage'
-
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/templates/other_wizard_form.html b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/templates/other_wizard_form.html
deleted file mode 100644
index 45f812c..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/templates/other_wizard_form.html
+++ /dev/null
@@ -1 +0,0 @@
-{% extends "formtools/wizard/wizard_form.html" %}
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/tests.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/tests.py
deleted file mode 100644
index 3c2dbc3..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/tests.py
+++ /dev/null
@@ -1,407 +0,0 @@
-from __future__ import unicode_literals
-
-import os
-
-from django import forms
-from django.test import TestCase
-from django.test.client import RequestFactory
-from django.conf import settings
-from django.contrib.auth.models import User
-from django.contrib.auth.tests.utils import skipIfCustomUser
-from django.contrib.formtools.wizard.views import CookieWizardView
-from django.utils._os import upath
-
-
-class UserForm(forms.ModelForm):
- class Meta:
- model = User
- fields = '__all__'
-
-
-UserFormSet = forms.models.modelformset_factory(User, form=UserForm, extra=2)
-
-
-class WizardTests(object):
- urls = 'django.contrib.formtools.tests.wizard.wizardtests.urls'
-
- def setUp(self):
- self.testuser, created = User.objects.get_or_create(username='testuser1')
- self.wizard_step_data[0]['form1-user'] = self.testuser.pk
-
- def test_initial_call(self):
- response = self.client.get(self.wizard_url)
- wizard = response.context['wizard']
- self.assertEqual(response.status_code, 200)
- self.assertEqual(wizard['steps'].current, 'form1')
- self.assertEqual(wizard['steps'].step0, 0)
- self.assertEqual(wizard['steps'].step1, 1)
- self.assertEqual(wizard['steps'].last, 'form4')
- self.assertEqual(wizard['steps'].prev, None)
- self.assertEqual(wizard['steps'].next, 'form2')
- self.assertEqual(wizard['steps'].count, 4)
-
- def test_form_post_error(self):
- response = self.client.post(self.wizard_url, self.wizard_step_1_data)
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form1')
- self.assertEqual(response.context['wizard']['form'].errors,
- {'name': ['This field is required.'],
- 'user': ['This field is required.']})
-
- def test_form_post_success(self):
- response = self.client.post(self.wizard_url, self.wizard_step_data[0])
- wizard = response.context['wizard']
- self.assertEqual(response.status_code, 200)
- self.assertEqual(wizard['steps'].current, 'form2')
- self.assertEqual(wizard['steps'].step0, 1)
- self.assertEqual(wizard['steps'].prev, 'form1')
- self.assertEqual(wizard['steps'].next, 'form3')
-
- def test_form_stepback(self):
- response = self.client.get(self.wizard_url)
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form1')
-
- response = self.client.post(self.wizard_url, self.wizard_step_data[0])
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form2')
-
- response = self.client.post(self.wizard_url, {
- 'wizard_goto_step': response.context['wizard']['steps'].prev})
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form1')
-
- def test_template_context(self):
- response = self.client.get(self.wizard_url)
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form1')
- self.assertEqual(response.context.get('another_var', None), None)
-
- response = self.client.post(self.wizard_url, self.wizard_step_data[0])
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form2')
- self.assertEqual(response.context.get('another_var', None), True)
-
- # ticket #19025: `form` should be included in context
- form = response.context_data['wizard']['form']
- self.assertEqual(response.context_data['form'], form)
-
- def test_form_finish(self):
- response = self.client.get(self.wizard_url)
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form1')
-
- response = self.client.post(self.wizard_url, self.wizard_step_data[0])
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form2')
-
- post_data = self.wizard_step_data[1]
- post_data['form2-file1'] = open(upath(__file__), 'rb')
- response = self.client.post(self.wizard_url, post_data)
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form3')
-
- response = self.client.post(self.wizard_url, self.wizard_step_data[2])
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form4')
-
- response = self.client.post(self.wizard_url, self.wizard_step_data[3])
- self.assertEqual(response.status_code, 200)
-
- all_data = response.context['form_list']
- with open(upath(__file__), 'rb') as f:
- self.assertEqual(all_data[1]['file1'].read(), f.read())
- all_data[1]['file1'].close()
- del all_data[1]['file1']
- self.assertEqual(all_data, [
- {'name': 'Pony', 'thirsty': True, 'user': self.testuser},
- {'address1': '123 Main St', 'address2': 'Djangoland'},
- {'random_crap': 'blah blah'},
- [{'random_crap': 'blah blah'},
- {'random_crap': 'blah blah'}]])
-
- def test_cleaned_data(self):
- response = self.client.get(self.wizard_url)
- self.assertEqual(response.status_code, 200)
-
- response = self.client.post(self.wizard_url, self.wizard_step_data[0])
- self.assertEqual(response.status_code, 200)
-
- post_data = self.wizard_step_data[1]
- with open(upath(__file__), 'rb') as post_file:
- post_data['form2-file1'] = post_file
- response = self.client.post(self.wizard_url, post_data)
- self.assertEqual(response.status_code, 200)
-
- response = self.client.post(self.wizard_url, self.wizard_step_data[2])
- self.assertEqual(response.status_code, 200)
-
- response = self.client.post(self.wizard_url, self.wizard_step_data[3])
- self.assertEqual(response.status_code, 200)
-
- all_data = response.context['all_cleaned_data']
- with open(upath(__file__), 'rb') as f:
- self.assertEqual(all_data['file1'].read(), f.read())
- all_data['file1'].close()
- del all_data['file1']
- self.assertEqual(all_data, {
- 'name': 'Pony', 'thirsty': True, 'user': self.testuser,
- 'address1': '123 Main St', 'address2': 'Djangoland',
- 'random_crap': 'blah blah', 'formset-form4': [
- {'random_crap': 'blah blah'},
- {'random_crap': 'blah blah'}]})
-
- def test_manipulated_data(self):
- response = self.client.get(self.wizard_url)
- self.assertEqual(response.status_code, 200)
-
- response = self.client.post(self.wizard_url, self.wizard_step_data[0])
- self.assertEqual(response.status_code, 200)
-
- post_data = self.wizard_step_data[1]
- post_data['form2-file1'].close()
- post_data['form2-file1'] = open(upath(__file__), 'rb')
- response = self.client.post(self.wizard_url, post_data)
- self.assertEqual(response.status_code, 200)
-
- response = self.client.post(self.wizard_url, self.wizard_step_data[2])
- self.assertEqual(response.status_code, 200)
- self.client.cookies.pop('sessionid', None)
- self.client.cookies.pop('wizard_cookie_contact_wizard', None)
-
- response = self.client.post(self.wizard_url, self.wizard_step_data[3])
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form1')
-
- def test_form_refresh(self):
- response = self.client.get(self.wizard_url)
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form1')
-
- response = self.client.post(self.wizard_url, self.wizard_step_data[0])
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form2')
-
- response = self.client.post(self.wizard_url, self.wizard_step_data[0])
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form2')
-
- post_data = self.wizard_step_data[1]
- post_data['form2-file1'].close()
- post_data['form2-file1'] = open(upath(__file__), 'rb')
- response = self.client.post(self.wizard_url, post_data)
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form3')
-
- response = self.client.post(self.wizard_url, self.wizard_step_data[2])
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form4')
-
- response = self.client.post(self.wizard_url, self.wizard_step_data[0])
- self.assertEqual(response.status_code, 200)
- self.assertEqual(response.context['wizard']['steps'].current, 'form2')
-
- response = self.client.post(self.wizard_url, self.wizard_step_data[3])
- self.assertEqual(response.status_code, 200)
-
-
-@skipIfCustomUser
-class SessionWizardTests(WizardTests, TestCase):
- wizard_url = '/wiz_session/'
- wizard_step_1_data = {
- 'session_contact_wizard-current_step': 'form1',
- }
- wizard_step_data = (
- {
- 'form1-name': 'Pony',
- 'form1-thirsty': '2',
- 'session_contact_wizard-current_step': 'form1',
- },
- {
- 'form2-address1': '123 Main St',
- 'form2-address2': 'Djangoland',
- 'session_contact_wizard-current_step': 'form2',
- },
- {
- 'form3-random_crap': 'blah blah',
- 'session_contact_wizard-current_step': 'form3',
- },
- {
- 'form4-INITIAL_FORMS': '0',
- 'form4-TOTAL_FORMS': '2',
- 'form4-MAX_NUM_FORMS': '0',
- 'form4-0-random_crap': 'blah blah',
- 'form4-1-random_crap': 'blah blah',
- 'session_contact_wizard-current_step': 'form4',
- }
- )
-
-
-@skipIfCustomUser
-class CookieWizardTests(WizardTests, TestCase):
- wizard_url = '/wiz_cookie/'
- wizard_step_1_data = {
- 'cookie_contact_wizard-current_step': 'form1',
- }
- wizard_step_data = (
- {
- 'form1-name': 'Pony',
- 'form1-thirsty': '2',
- 'cookie_contact_wizard-current_step': 'form1',
- },
- {
- 'form2-address1': '123 Main St',
- 'form2-address2': 'Djangoland',
- 'cookie_contact_wizard-current_step': 'form2',
- },
- {
- 'form3-random_crap': 'blah blah',
- 'cookie_contact_wizard-current_step': 'form3',
- },
- {
- 'form4-INITIAL_FORMS': '0',
- 'form4-TOTAL_FORMS': '2',
- 'form4-MAX_NUM_FORMS': '0',
- 'form4-0-random_crap': 'blah blah',
- 'form4-1-random_crap': 'blah blah',
- 'cookie_contact_wizard-current_step': 'form4',
- }
- )
-
-
-@skipIfCustomUser
-class WizardTestKwargs(TestCase):
- wizard_url = '/wiz_other_template/'
- wizard_step_1_data = {
- 'cookie_contact_wizard-current_step': 'form1',
- }
- wizard_step_data = (
- {
- 'form1-name': 'Pony',
- 'form1-thirsty': '2',
- 'cookie_contact_wizard-current_step': 'form1',
- },
- {
- 'form2-address1': '123 Main St',
- 'form2-address2': 'Djangoland',
- 'cookie_contact_wizard-current_step': 'form2',
- },
- {
- 'form3-random_crap': 'blah blah',
- 'cookie_contact_wizard-current_step': 'form3',
- },
- {
- 'form4-INITIAL_FORMS': '0',
- 'form4-TOTAL_FORMS': '2',
- 'form4-MAX_NUM_FORMS': '0',
- 'form4-0-random_crap': 'blah blah',
- 'form4-1-random_crap': 'blah blah',
- 'cookie_contact_wizard-current_step': 'form4',
- }
- )
- urls = 'django.contrib.formtools.tests.wizard.wizardtests.urls'
-
- def setUp(self):
- self.testuser, created = User.objects.get_or_create(username='testuser1')
- self.wizard_step_data[0]['form1-user'] = self.testuser.pk
-
- def test_template(self):
- templates = os.path.join(os.path.dirname(upath(__file__)), 'templates')
- with self.settings(
- TEMPLATE_DIRS=list(settings.TEMPLATE_DIRS) + [templates]):
- response = self.client.get(self.wizard_url)
- self.assertTemplateUsed(response, 'other_wizard_form.html')
-
-
-class WizardTestGenericViewInterface(TestCase):
- def test_get_context_data_inheritance(self):
- class TestWizard(CookieWizardView):
- """
- A subclass that implements ``get_context_data`` using the standard
- protocol for generic views (accept only **kwargs).
-
- See ticket #17148.
- """
- def get_context_data(self, **kwargs):
- context = super(TestWizard, self).get_context_data(**kwargs)
- context['test_key'] = 'test_value'
- return context
-
- factory = RequestFactory()
- view = TestWizard.as_view([forms.Form])
-
- response = view(factory.get('/'))
- self.assertEqual(response.context_data['test_key'], 'test_value')
-
- def test_get_context_data_with_mixin(self):
- class AnotherMixin(object):
- def get_context_data(self, **kwargs):
- context = super(AnotherMixin, self).get_context_data(**kwargs)
- context['another_key'] = 'another_value'
- return context
-
- class TestWizard(AnotherMixin, CookieWizardView):
- """
- A subclass that implements ``get_context_data`` using the standard
- protocol for generic views (accept only **kwargs).
-
- See ticket #17148.
- """
- def get_context_data(self, **kwargs):
- context = super(TestWizard, self).get_context_data(**kwargs)
- context['test_key'] = 'test_value'
- return context
-
- factory = RequestFactory()
-
- view = TestWizard.as_view([forms.Form])
-
- response = view(factory.get('/'))
- self.assertEqual(response.context_data['test_key'], 'test_value')
- self.assertEqual(response.context_data['another_key'], 'another_value')
-
-
-@skipIfCustomUser
-class WizardFormKwargsOverrideTests(TestCase):
- def setUp(self):
- super(WizardFormKwargsOverrideTests, self).setUp()
- self.rf = RequestFactory()
-
- # Create two users so we can filter by is_staff when handing our
- # wizard a queryset keyword argument.
- self.normal_user = User.objects.create(username='test1', email='normal@example.com')
- self.staff_user = User.objects.create(username='test2', email='staff@example.com', is_staff=True)
-
- def test_instance_is_maintained(self):
- self.assertEqual(2, User.objects.count())
- queryset = User.objects.get(pk=self.staff_user.pk)
-
- class InstanceOverrideWizard(CookieWizardView):
- def get_form_kwargs(self, step):
- return {'instance': queryset}
-
- view = InstanceOverrideWizard.as_view([UserForm])
- response = view(self.rf.get('/'))
-
- form = response.context_data['wizard']['form']
-
- self.assertNotEqual(form.instance.pk, None)
- self.assertEqual(form.instance.pk, self.staff_user.pk)
- self.assertEqual('staff@example.com', form.initial.get('email', None))
-
- def test_queryset_is_maintained(self):
- queryset = User.objects.filter(pk=self.staff_user.pk)
-
- class QuerySetOverrideWizard(CookieWizardView):
- def get_form_kwargs(self, step):
- return {'queryset': queryset}
-
- view = QuerySetOverrideWizard.as_view([UserFormSet])
- response = view(self.rf.get('/'))
-
- formset = response.context_data['wizard']['form']
-
- self.assertNotEqual(formset.queryset, None)
- self.assertEqual(formset.initial_form_count(), 1)
- self.assertEqual(['staff@example.com'],
- list(formset.queryset.values_list('email', flat=True)))
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/urls.py b/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/urls.py
deleted file mode 100644
index dabce53..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/tests/wizard/wizardtests/urls.py
+++ /dev/null
@@ -1,22 +0,0 @@
-from django.conf.urls import patterns, url
-from django.contrib.formtools.tests.wizard.wizardtests.forms import (
- SessionContactWizard, CookieContactWizard, Page1, Page2, Page3, Page4)
-
-urlpatterns = patterns('',
- url(r'^wiz_session/$', SessionContactWizard.as_view(
- [('form1', Page1),
- ('form2', Page2),
- ('form3', Page3),
- ('form4', Page4)])),
- url(r'^wiz_cookie/$', CookieContactWizard.as_view(
- [('form1', Page1),
- ('form2', Page2),
- ('form3', Page3),
- ('form4', Page4)])),
- url(r'^wiz_other_template/$', CookieContactWizard.as_view(
- [('form1', Page1),
- ('form2', Page2),
- ('form3', Page3),
- ('form4', Page4)],
- template_name='other_wizard_form.html')),
-)
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/utils.py b/lib/python2.7/site-packages/django/contrib/formtools/utils.py
deleted file mode 100644
index 76277c6..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/utils.py
+++ /dev/null
@@ -1,28 +0,0 @@
-from __future__ import unicode_literals
-
-# Do not try cPickle here (see #18340)
-import pickle
-
-from django.utils.crypto import salted_hmac
-from django.utils import six
-
-
-def form_hmac(form):
- """
- Calculates a security hash for the given Form instance.
- """
- data = []
- for bf in form:
- # Get the value from the form data. If the form allows empty or hasn't
- # changed then don't call clean() to avoid trigger validation errors.
- if form.empty_permitted and not form.has_changed():
- value = bf.data or ''
- else:
- value = bf.field.clean(bf.data) or ''
- if isinstance(value, six.string_types):
- value = value.strip()
- data.append((bf.name, value))
-
- pickled = pickle.dumps(data, pickle.HIGHEST_PROTOCOL)
- key_salt = 'django.contrib.formtools'
- return salted_hmac(key_salt, pickled).hexdigest()
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/wizard/__init__.py b/lib/python2.7/site-packages/django/contrib/formtools/wizard/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/wizard/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/wizard/forms.py b/lib/python2.7/site-packages/django/contrib/formtools/wizard/forms.py
deleted file mode 100644
index bf46c5c..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/wizard/forms.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from django import forms
-
-class ManagementForm(forms.Form):
- """
- ``ManagementForm`` is used to keep track of the current wizard step.
- """
- current_step = forms.CharField(widget=forms.HiddenInput)
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/__init__.py b/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/__init__.py
deleted file mode 100644
index 8f57605..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/__init__.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from django.core.exceptions import ImproperlyConfigured
-from django.utils.module_loading import import_by_path
-
-from django.contrib.formtools.wizard.storage.base import BaseStorage
-from django.contrib.formtools.wizard.storage.exceptions import (
- MissingStorage, NoFileStorageConfigured)
-
-
-def get_storage(path, *args, **kwargs):
- try:
- storage_class = import_by_path(path)
- except ImproperlyConfigured as e:
- raise MissingStorage('Error loading storage: %s' % e)
- return storage_class(*args, **kwargs)
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/base.py b/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/base.py
deleted file mode 100644
index 6c155e0..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/base.py
+++ /dev/null
@@ -1,109 +0,0 @@
-from django.core.files.uploadedfile import UploadedFile
-from django.utils.datastructures import MultiValueDict
-from django.utils.functional import lazy_property
-from django.utils import six
-
-from django.contrib.formtools.wizard.storage.exceptions import NoFileStorageConfigured
-
-
-class BaseStorage(object):
- step_key = 'step'
- step_data_key = 'step_data'
- step_files_key = 'step_files'
- extra_data_key = 'extra_data'
-
- def __init__(self, prefix, request=None, file_storage=None):
- self.prefix = 'wizard_%s' % prefix
- self.request = request
- self.file_storage = file_storage
-
- def init_data(self):
- self.data = {
- self.step_key: None,
- self.step_data_key: {},
- self.step_files_key: {},
- self.extra_data_key: {},
- }
-
- def reset(self):
- self.init_data()
-
- def _get_current_step(self):
- return self.data[self.step_key]
-
- def _set_current_step(self, step):
- self.data[self.step_key] = step
-
- current_step = lazy_property(_get_current_step, _set_current_step)
-
- def _get_extra_data(self):
- return self.data[self.extra_data_key]
-
- def _set_extra_data(self, extra_data):
- self.data[self.extra_data_key] = extra_data
-
- extra_data = lazy_property(_get_extra_data, _set_extra_data)
-
- def get_step_data(self, step):
- # When reading the serialized data, upconvert it to a MultiValueDict,
- # some serializers (json) don't preserve the type of the object.
- values = self.data[self.step_data_key].get(step, None)
- if values is not None:
- values = MultiValueDict(values)
- return values
-
- def set_step_data(self, step, cleaned_data):
- # If the value is a MultiValueDict, convert it to a regular dict of the
- # underlying contents. Some serializers call the public API on it (as
- # opposed to the underlying dict methods), in which case the content
- # can be truncated (__getitem__ returns only the first item).
- if isinstance(cleaned_data, MultiValueDict):
- cleaned_data = dict(cleaned_data.lists())
- self.data[self.step_data_key][step] = cleaned_data
-
- @property
- def current_step_data(self):
- return self.get_step_data(self.current_step)
-
- def get_step_files(self, step):
- wizard_files = self.data[self.step_files_key].get(step, {})
-
- if wizard_files and not self.file_storage:
- raise NoFileStorageConfigured(
- "You need to define 'file_storage' in your "
- "wizard view in order to handle file uploads.")
-
- files = {}
- for field, field_dict in six.iteritems(wizard_files):
- field_dict = field_dict.copy()
- tmp_name = field_dict.pop('tmp_name')
- files[field] = UploadedFile(
- file=self.file_storage.open(tmp_name), **field_dict)
- return files or None
-
- def set_step_files(self, step, files):
- if files and not self.file_storage:
- raise NoFileStorageConfigured(
- "You need to define 'file_storage' in your "
- "wizard view in order to handle file uploads.")
-
- if step not in self.data[self.step_files_key]:
- self.data[self.step_files_key][step] = {}
-
- for field, field_file in six.iteritems(files or {}):
- tmp_filename = self.file_storage.save(field_file.name, field_file)
- file_dict = {
- 'tmp_name': tmp_filename,
- 'name': field_file.name,
- 'content_type': field_file.content_type,
- 'size': field_file.size,
- 'charset': field_file.charset
- }
- self.data[self.step_files_key][step][field] = file_dict
-
- @property
- def current_step_files(self):
- return self.get_step_files(self.current_step)
-
- def update_response(self, response):
- pass
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/cookie.py b/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/cookie.py
deleted file mode 100644
index 9bf6503..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/cookie.py
+++ /dev/null
@@ -1,33 +0,0 @@
-import json
-
-from django.core.signing import BadSignature
-
-from django.contrib.formtools.exceptions import WizardViewCookieModified
-from django.contrib.formtools.wizard import storage
-
-
-class CookieStorage(storage.BaseStorage):
- encoder = json.JSONEncoder(separators=(',', ':'))
-
- def __init__(self, *args, **kwargs):
- super(CookieStorage, self).__init__(*args, **kwargs)
- self.data = self.load_data()
- if self.data is None:
- self.init_data()
-
- def load_data(self):
- try:
- data = self.request.get_signed_cookie(self.prefix)
- except KeyError:
- data = None
- except BadSignature:
- raise WizardViewCookieModified('WizardView cookie manipulated')
- if data is None:
- return None
- return json.loads(data, cls=json.JSONDecoder)
-
- def update_response(self, response):
- if self.data:
- response.set_signed_cookie(self.prefix, self.encoder.encode(self.data))
- else:
- response.delete_cookie(self.prefix)
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/exceptions.py b/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/exceptions.py
deleted file mode 100644
index e273a86..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/exceptions.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from django.core.exceptions import ImproperlyConfigured
-
-class MissingStorage(ImproperlyConfigured):
- pass
-
-class NoFileStorageConfigured(ImproperlyConfigured):
- pass
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/session.py b/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/session.py
deleted file mode 100644
index 9cfae50..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/wizard/storage/session.py
+++ /dev/null
@@ -1,19 +0,0 @@
-from django.contrib.formtools.wizard import storage
-
-
-class SessionStorage(storage.BaseStorage):
-
- def __init__(self, *args, **kwargs):
- super(SessionStorage, self).__init__(*args, **kwargs)
- if self.prefix not in self.request.session:
- self.init_data()
-
- def _get_data(self):
- self.request.session.modified = True
- return self.request.session[self.prefix]
-
- def _set_data(self, value):
- self.request.session[self.prefix] = value
- self.request.session.modified = True
-
- data = property(_get_data, _set_data)
diff --git a/lib/python2.7/site-packages/django/contrib/formtools/wizard/views.py b/lib/python2.7/site-packages/django/contrib/formtools/wizard/views.py
deleted file mode 100644
index 494d87a..0000000
--- a/lib/python2.7/site-packages/django/contrib/formtools/wizard/views.py
+++ /dev/null
@@ -1,730 +0,0 @@
-import re
-
-from django import forms
-from django.shortcuts import redirect
-from django.core.urlresolvers import reverse
-from django.forms import formsets, ValidationError
-from django.views.generic import TemplateView
-from django.utils.datastructures import SortedDict
-from django.utils.decorators import classonlymethod
-from django.utils.translation import ugettext as _
-from django.utils import six
-
-from django.contrib.formtools.wizard.storage import get_storage
-from django.contrib.formtools.wizard.storage.exceptions import NoFileStorageConfigured
-from django.contrib.formtools.wizard.forms import ManagementForm
-
-
-def normalize_name(name):
- """
- Converts camel-case style names into underscore seperated words. Example::
-
- >>> normalize_name('oneTwoThree')
- 'one_two_three'
- >>> normalize_name('FourFiveSix')
- 'four_five_six'
-
- """
- new = re.sub('(((?<=[a-z])[A-Z])|([A-Z](?![A-Z]|$)))', '_\\1', name)
- return new.lower().strip('_')
-
-class StepsHelper(object):
-
- def __init__(self, wizard):
- self._wizard = wizard
-
- def __dir__(self):
- return self.all
-
- def __len__(self):
- return self.count
-
- def __repr__(self):
- return '<StepsHelper for %s (steps: %s)>' % (self._wizard, self.all)
-
- @property
- def all(self):
- "Returns the names of all steps/forms."
- return list(self._wizard.get_form_list())
-
- @property
- def count(self):
- "Returns the total number of steps/forms in this the wizard."
- return len(self.all)
-
- @property
- def current(self):
- """
- Returns the current step. If no current step is stored in the
- storage backend, the first step will be returned.
- """
- return self._wizard.storage.current_step or self.first
-
- @property
- def first(self):
- "Returns the name of the first step."
- return self.all[0]
-
- @property
- def last(self):
- "Returns the name of the last step."
- return self.all[-1]
-
- @property
- def next(self):
- "Returns the next step."
- return self._wizard.get_next_step()
-
- @property
- def prev(self):
- "Returns the previous step."
- return self._wizard.get_prev_step()
-
- @property
- def index(self):
- "Returns the index for the current step."
- return self._wizard.get_step_index()
-
- @property
- def step0(self):
- return int(self.index)
-
- @property
- def step1(self):
- return int(self.index) + 1
-
-
-class WizardView(TemplateView):
- """
- The WizardView is used to create multi-page forms and handles all the
- storage and validation stuff. The wizard is based on Django's generic
- class based views.
- """
- storage_name = None
- form_list = None
- initial_dict = None
- instance_dict = None
- condition_dict = None
- template_name = 'formtools/wizard/wizard_form.html'
-
- def __repr__(self):
- return '<%s: forms: %s>' % (self.__class__.__name__, self.form_list)
-
- @classonlymethod
- def as_view(cls, *args, **kwargs):
- """
- This method is used within urls.py to create unique wizardview
- instances for every request. We need to override this method because
- we add some kwargs which are needed to make the wizardview usable.
- """
- initkwargs = cls.get_initkwargs(*args, **kwargs)
- return super(WizardView, cls).as_view(**initkwargs)
-
- @classmethod
- def get_initkwargs(cls, form_list=None, initial_dict=None,
- instance_dict=None, condition_dict=None, *args, **kwargs):
- """
- Creates a dict with all needed parameters for the form wizard instances.
-
- * `form_list` - is a list of forms. The list entries can be single form
- classes or tuples of (`step_name`, `form_class`). If you pass a list
- of forms, the wizardview will convert the class list to
- (`zero_based_counter`, `form_class`). This is needed to access the
- form for a specific step.
- * `initial_dict` - contains a dictionary of initial data dictionaries.
- The key should be equal to the `step_name` in the `form_list` (or
- the str of the zero based counter - if no step_names added in the
- `form_list`)
- * `instance_dict` - contains a dictionary whose values are model
- instances if the step is based on a ``ModelForm`` and querysets if
- the step is based on a ``ModelFormSet``. The key should be equal to
- the `step_name` in the `form_list`. Same rules as for `initial_dict`
- apply.
- * `condition_dict` - contains a dictionary of boolean values or
- callables. If the value of for a specific `step_name` is callable it
- will be called with the wizardview instance as the only argument.
- If the return value is true, the step's form will be used.
- """
-
- kwargs.update({
- 'initial_dict': initial_dict or kwargs.pop('initial_dict',
- getattr(cls, 'initial_dict', None)) or {},
- 'instance_dict': instance_dict or kwargs.pop('instance_dict',
- getattr(cls, 'instance_dict', None)) or {},
- 'condition_dict': condition_dict or kwargs.pop('condition_dict',
- getattr(cls, 'condition_dict', None)) or {}
- })
-
- form_list = form_list or kwargs.pop('form_list',
- getattr(cls, 'form_list', None)) or []
-
- computed_form_list = SortedDict()
-
- assert len(form_list) > 0, 'at least one form is needed'
-
- # walk through the passed form list
- for i, form in enumerate(form_list):
- if isinstance(form, (list, tuple)):
- # if the element is a tuple, add the tuple to the new created
- # sorted dictionary.
- computed_form_list[six.text_type(form[0])] = form[1]
- else:
- # if not, add the form with a zero based counter as unicode
- computed_form_list[six.text_type(i)] = form
-
- # walk through the new created list of forms
- for form in six.itervalues(computed_form_list):
- if issubclass(form, formsets.BaseFormSet):
- # if the element is based on BaseFormSet (FormSet/ModelFormSet)
- # we need to override the form variable.
- form = form.form
- # check if any form contains a FileField, if yes, we need a
- # file_storage added to the wizardview (by subclassing).
- for field in six.itervalues(form.base_fields):
- if (isinstance(field, forms.FileField) and
- not hasattr(cls, 'file_storage')):
- raise NoFileStorageConfigured(
- "You need to define 'file_storage' in your "
- "wizard view in order to handle file uploads.")
-
- # build the kwargs for the wizardview instances
- kwargs['form_list'] = computed_form_list
- return kwargs
-
- def get_prefix(self, *args, **kwargs):
- # TODO: Add some kind of unique id to prefix
- return normalize_name(self.__class__.__name__)
-
- def get_form_list(self):
- """
- This method returns a form_list based on the initial form list but
- checks if there is a condition method/value in the condition_list.
- If an entry exists in the condition list, it will call/read the value
- and respect the result. (True means add the form, False means ignore
- the form)
-
- The form_list is always generated on the fly because condition methods
- could use data from other (maybe previous forms).
- """
- form_list = SortedDict()
- for form_key, form_class in six.iteritems(self.form_list):
- # try to fetch the value from condition list, by default, the form
- # gets passed to the new list.
- condition = self.condition_dict.get(form_key, True)
- if callable(condition):
- # call the value if needed, passes the current instance.
- condition = condition(self)
- if condition:
- form_list[form_key] = form_class
- return form_list
-
- def dispatch(self, request, *args, **kwargs):
- """
- This method gets called by the routing engine. The first argument is
- `request` which contains a `HttpRequest` instance.
- The request is stored in `self.request` for later use. The storage
- instance is stored in `self.storage`.
-
- After processing the request using the `dispatch` method, the
- response gets updated by the storage engine (for example add cookies).
- """
- # add the storage engine to the current wizardview instance
- self.prefix = self.get_prefix(*args, **kwargs)
- self.storage = get_storage(self.storage_name, self.prefix, request,
- getattr(self, 'file_storage', None))
- self.steps = StepsHelper(self)
- response = super(WizardView, self).dispatch(request, *args, **kwargs)
-
- # update the response (e.g. adding cookies)
- self.storage.update_response(response)
- return response
-
- def get(self, request, *args, **kwargs):
- """
- This method handles GET requests.
-
- If a GET request reaches this point, the wizard assumes that the user
- just starts at the first step or wants to restart the process.
- The data of the wizard will be resetted before rendering the first step.
- """
- self.storage.reset()
-
- # reset the current step to the first step.
- self.storage.current_step = self.steps.first
- return self.render(self.get_form())
-
- def post(self, *args, **kwargs):
- """
- This method handles POST requests.
-
- The wizard will render either the current step (if form validation
- wasn't successful), the next step (if the current step was stored
- successful) or the done view (if no more steps are available)
- """
- # Look for a wizard_goto_step element in the posted data which
- # contains a valid step name. If one was found, render the requested
- # form. (This makes stepping back a lot easier).
- wizard_goto_step = self.request.POST.get('wizard_goto_step', None)
- if wizard_goto_step and wizard_goto_step in self.get_form_list():
- return self.render_goto_step(wizard_goto_step)
-
- # Check if form was refreshed
- management_form = ManagementForm(self.request.POST, prefix=self.prefix)
- if not management_form.is_valid():
- raise ValidationError(
- _('ManagementForm data is missing or has been tampered.'),
- code='missing_management_form',
- )
-
- form_current_step = management_form.cleaned_data['current_step']
- if (form_current_step != self.steps.current and
- self.storage.current_step is not None):
- # form refreshed, change current step
- self.storage.current_step = form_current_step
-
- # get the form for the current step
- form = self.get_form(data=self.request.POST, files=self.request.FILES)
-
- # and try to validate
- if form.is_valid():
- # if the form is valid, store the cleaned data and files.
- self.storage.set_step_data(self.steps.current, self.process_step(form))
- self.storage.set_step_files(self.steps.current, self.process_step_files(form))
-
- # check if the current step is the last step
- if self.steps.current == self.steps.last:
- # no more steps, render done view
- return self.render_done(form, **kwargs)
- else:
- # proceed to the next step
- return self.render_next_step(form)
- return self.render(form)
-
- def render_next_step(self, form, **kwargs):
- """
- This method gets called when the next step/form should be rendered.
- `form` contains the last/current form.
- """
- # get the form instance based on the data from the storage backend
- # (if available).
- next_step = self.steps.next
- new_form = self.get_form(next_step,
- data=self.storage.get_step_data(next_step),
- files=self.storage.get_step_files(next_step))
-
- # change the stored current step
- self.storage.current_step = next_step
- return self.render(new_form, **kwargs)
-
- def render_goto_step(self, goto_step, **kwargs):
- """
- This method gets called when the current step has to be changed.
- `goto_step` contains the requested step to go to.
- """
- self.storage.current_step = goto_step
- form = self.get_form(
- data=self.storage.get_step_data(self.steps.current),
- files=self.storage.get_step_files(self.steps.current))
- return self.render(form)
-
- def render_done(self, form, **kwargs):
- """
- This method gets called when all forms passed. The method should also
- re-validate all steps to prevent manipulation. If any form don't
- validate, `render_revalidation_failure` should get called.
- If everything is fine call `done`.
- """
- final_form_list = []
- # walk through the form list and try to validate the data again.
- for form_key in self.get_form_list():
- form_obj = self.get_form(step=form_key,
- data=self.storage.get_step_data(form_key),
- files=self.storage.get_step_files(form_key))
- if not form_obj.is_valid():
- return self.render_revalidation_failure(form_key, form_obj, **kwargs)
- final_form_list.append(form_obj)
-
- # render the done view and reset the wizard before returning the
- # response. This is needed to prevent from rendering done with the
- # same data twice.
- done_response = self.done(final_form_list, **kwargs)
- self.storage.reset()
- return done_response
-
- def get_form_prefix(self, step=None, form=None):
- """
- Returns the prefix which will be used when calling the actual form for
- the given step. `step` contains the step-name, `form` the form which
- will be called with the returned prefix.
-
- If no step is given, the form_prefix will determine the current step
- automatically.
- """
- if step is None:
- step = self.steps.current
- return str(step)
-
- def get_form_initial(self, step):
- """
- Returns a dictionary which will be passed to the form for `step`
- as `initial`. If no initial data was provied while initializing the
- form wizard, a empty dictionary will be returned.
- """
- return self.initial_dict.get(step, {})
-
- def get_form_instance(self, step):
- """
- Returns a object which will be passed to the form for `step`
- as `instance`. If no instance object was provied while initializing
- the form wizard, None will be returned.
- """
- return self.instance_dict.get(step, None)
-
- def get_form_kwargs(self, step=None):
- """
- Returns the keyword arguments for instantiating the form
- (or formset) on the given step.
- """
- return {}
-
- def get_form(self, step=None, data=None, files=None):
- """
- Constructs the form for a given `step`. If no `step` is defined, the
- current step will be determined automatically.
-
- The form will be initialized using the `data` argument to prefill the
- new form. If needed, instance or queryset (for `ModelForm` or
- `ModelFormSet`) will be added too.
- """
- if step is None:
- step = self.steps.current
- # prepare the kwargs for the form instance.
- kwargs = self.get_form_kwargs(step)
- kwargs.update({
- 'data': data,
- 'files': files,
- 'prefix': self.get_form_prefix(step, self.form_list[step]),
- 'initial': self.get_form_initial(step),
- })
- if issubclass(self.form_list[step], forms.ModelForm):
- # If the form is based on ModelForm, add instance if available
- # and not previously set.
- kwargs.setdefault('instance', self.get_form_instance(step))
- elif issubclass(self.form_list[step], forms.models.BaseModelFormSet):
- # If the form is based on ModelFormSet, add queryset if available
- # and not previous set.
- kwargs.setdefault('queryset', self.get_form_instance(step))
- return self.form_list[step](**kwargs)
-
- def process_step(self, form):
- """
- This method is used to postprocess the form data. By default, it
- returns the raw `form.data` dictionary.
- """
- return self.get_form_step_data(form)
-
- def process_step_files(self, form):
- """
- This method is used to postprocess the form files. By default, it
- returns the raw `form.files` dictionary.
- """
- return self.get_form_step_files(form)
-
- def render_revalidation_failure(self, step, form, **kwargs):
- """
- Gets called when a form doesn't validate when rendering the done
- view. By default, it changes the current step to failing forms step
- and renders the form.
- """
- self.storage.current_step = step
- return self.render(form, **kwargs)
-
- def get_form_step_data(self, form):
- """
- Is used to return the raw form data. You may use this method to
- manipulate the data.
- """
- return form.data
-
- def get_form_step_files(self, form):
- """
- Is used to return the raw form files. You may use this method to
- manipulate the data.
- """
- return form.files
-
- def get_all_cleaned_data(self):
- """
- Returns a merged dictionary of all step cleaned_data dictionaries.
- If a step contains a `FormSet`, the key will be prefixed with
- 'formset-' and contain a list of the formset cleaned_data dictionaries.
- """
- cleaned_data = {}
- for form_key in self.get_form_list():
- form_obj = self.get_form(
- step=form_key,
- data=self.storage.get_step_data(form_key),
- files=self.storage.get_step_files(form_key)
- )
- if form_obj.is_valid():
- if isinstance(form_obj.cleaned_data, (tuple, list)):
- cleaned_data.update({
- 'formset-%s' % form_key: form_obj.cleaned_data
- })
- else:
- cleaned_data.update(form_obj.cleaned_data)
- return cleaned_data
-
- def get_cleaned_data_for_step(self, step):
- """
- Returns the cleaned data for a given `step`. Before returning the
- cleaned data, the stored values are revalidated through the form.
- If the data doesn't validate, None will be returned.
- """
- if step in self.form_list:
- form_obj = self.get_form(step=step,
- data=self.storage.get_step_data(step),
- files=self.storage.get_step_files(step))
- if form_obj.is_valid():
- return form_obj.cleaned_data
- return None
-
- def get_next_step(self, step=None):
- """
- Returns the next step after the given `step`. If no more steps are
- available, None will be returned. If the `step` argument is None, the
- current step will be determined automatically.
- """
- if step is None:
- step = self.steps.current
- form_list = self.get_form_list()
- key = form_list.keyOrder.index(step) + 1
- if len(form_list.keyOrder) > key:
- return form_list.keyOrder[key]
- return None
-
- def get_prev_step(self, step=None):
- """
- Returns the previous step before the given `step`. If there are no
- steps available, None will be returned. If the `step` argument is
- None, the current step will be determined automatically.
- """
- if step is None:
- step = self.steps.current
- form_list = self.get_form_list()
- key = form_list.keyOrder.index(step) - 1
- if key >= 0:
- return form_list.keyOrder[key]
- return None
-
- def get_step_index(self, step=None):
- """
- Returns the index for the given `step` name. If no step is given,
- the current step will be used to get the index.
- """
- if step is None:
- step = self.steps.current
- return self.get_form_list().keyOrder.index(step)
-
- def get_context_data(self, form, **kwargs):
- """
- Returns the template context for a step. You can overwrite this method
- to add more data for all or some steps. This method returns a
- dictionary containing the rendered form step. Available template
- context variables are:
-
- * all extra data stored in the storage backend
- * `wizard` - a dictionary representation of the wizard instance
-
- Example:
-
- .. code-block:: python
-
- class MyWizard(WizardView):
- def get_context_data(self, form, **kwargs):
- context = super(MyWizard, self).get_context_data(form=form, **kwargs)
- if self.steps.current == 'my_step_name':
- context.update({'another_var': True})
- return context
- """
- context = super(WizardView, self).get_context_data(form=form, **kwargs)
- context.update(self.storage.extra_data)
- context['wizard'] = {
- 'form': form,
- 'steps': self.steps,
- 'management_form': ManagementForm(prefix=self.prefix, initial={
- 'current_step': self.steps.current,
- }),
- }
- return context
-
- def render(self, form=None, **kwargs):
- """
- Returns a ``HttpResponse`` containing all needed context data.
- """
- form = form or self.get_form()
- context = self.get_context_data(form=form, **kwargs)
- return self.render_to_response(context)
-
- def done(self, form_list, **kwargs):
- """
- This method must be overridden by a subclass to process to form data
- after processing all steps.
- """
- raise NotImplementedError("Your %s class has not defined a done() "
- "method, which is required." % self.__class__.__name__)
-
-
-class SessionWizardView(WizardView):
- """
- A WizardView with pre-configured SessionStorage backend.
- """
- storage_name = 'django.contrib.formtools.wizard.storage.session.SessionStorage'
-
-
-class CookieWizardView(WizardView):
- """
- A WizardView with pre-configured CookieStorage backend.
- """
- storage_name = 'django.contrib.formtools.wizard.storage.cookie.CookieStorage'
-
-
-class NamedUrlWizardView(WizardView):
- """
- A WizardView with URL named steps support.
- """
- url_name = None
- done_step_name = None
-
- @classmethod
- def get_initkwargs(cls, *args, **kwargs):
- """
- We require a url_name to reverse URLs later. Additionally users can
- pass a done_step_name to change the URL name of the "done" view.
- """
- assert 'url_name' in kwargs, 'URL name is needed to resolve correct wizard URLs'
- extra_kwargs = {
- 'done_step_name': kwargs.pop('done_step_name', 'done'),
- 'url_name': kwargs.pop('url_name'),
- }
- initkwargs = super(NamedUrlWizardView, cls).get_initkwargs(*args, **kwargs)
- initkwargs.update(extra_kwargs)
-
- assert initkwargs['done_step_name'] not in initkwargs['form_list'], \
- 'step name "%s" is reserved for "done" view' % initkwargs['done_step_name']
- return initkwargs
-
- def get_step_url(self, step):
- return reverse(self.url_name, kwargs={'step': step})
-
- def get(self, *args, **kwargs):
- """
- This renders the form or, if needed, does the http redirects.
- """
- step_url = kwargs.get('step', None)
- if step_url is None:
- if 'reset' in self.request.GET:
- self.storage.reset()
- self.storage.current_step = self.steps.first
- if self.request.GET:
- query_string = "?%s" % self.request.GET.urlencode()
- else:
- query_string = ""
- return redirect(self.get_step_url(self.steps.current)
- + query_string)
-
- # is the current step the "done" name/view?
- elif step_url == self.done_step_name:
- last_step = self.steps.last
- return self.render_done(self.get_form(step=last_step,
- data=self.storage.get_step_data(last_step),
- files=self.storage.get_step_files(last_step)
- ), **kwargs)
-
- # is the url step name not equal to the step in the storage?
- # if yes, change the step in the storage (if name exists)
- elif step_url == self.steps.current:
- # URL step name and storage step name are equal, render!
- return self.render(self.get_form(
- data=self.storage.current_step_data,
- files=self.storage.current_step_files,
- ), **kwargs)
-
- elif step_url in self.get_form_list():
- self.storage.current_step = step_url
- return self.render(self.get_form(
- data=self.storage.current_step_data,
- files=self.storage.current_step_files,
- ), **kwargs)
-
- # invalid step name, reset to first and redirect.
- else:
- self.storage.current_step = self.steps.first
- return redirect(self.get_step_url(self.steps.first))
-
- def post(self, *args, **kwargs):
- """
- Do a redirect if user presses the prev. step button. The rest of this
- is super'd from WizardView.
- """
- wizard_goto_step = self.request.POST.get('wizard_goto_step', None)
- if wizard_goto_step and wizard_goto_step in self.get_form_list():
- return self.render_goto_step(wizard_goto_step)
- return super(NamedUrlWizardView, self).post(*args, **kwargs)
-
- def get_context_data(self, form, **kwargs):
- """
- NamedUrlWizardView provides the url_name of this wizard in the context
- dict `wizard`.
- """
- context = super(NamedUrlWizardView, self).get_context_data(form=form, **kwargs)
- context['wizard']['url_name'] = self.url_name
- return context
-
- def render_next_step(self, form, **kwargs):
- """
- When using the NamedUrlWizardView, we have to redirect to update the
- browser's URL to match the shown step.
- """
- next_step = self.get_next_step()
- self.storage.current_step = next_step
- return redirect(self.get_step_url(next_step))
-
- def render_goto_step(self, goto_step, **kwargs):
- """
- This method gets called when the current step has to be changed.
- `goto_step` contains the requested step to go to.
- """
- self.storage.current_step = goto_step
- return redirect(self.get_step_url(goto_step))
-
- def render_revalidation_failure(self, failed_step, form, **kwargs):
- """
- When a step fails, we have to redirect the user to the first failing
- step.
- """
- self.storage.current_step = failed_step
- return redirect(self.get_step_url(failed_step))
-
- def render_done(self, form, **kwargs):
- """
- When rendering the done view, we have to redirect first (if the URL
- name doesn't fit).
- """
- if kwargs.get('step', None) != self.done_step_name:
- return redirect(self.get_step_url(self.done_step_name))
- return super(NamedUrlWizardView, self).render_done(form, **kwargs)
-
-
-class NamedUrlSessionWizardView(NamedUrlWizardView):
- """
- A NamedUrlWizardView with pre-configured SessionStorage backend.
- """
- storage_name = 'django.contrib.formtools.wizard.storage.session.SessionStorage'
-
-
-class NamedUrlCookieWizardView(NamedUrlWizardView):
- """
- A NamedUrlFormWizard with pre-configured CookieStorageBackend.
- """
- storage_name = 'django.contrib.formtools.wizard.storage.cookie.CookieStorage'
diff --git a/lib/python2.7/site-packages/django/contrib/gis/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/__init__.py
deleted file mode 100644
index c996fdf..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/__init__.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from django.utils import six
-
-if six.PY3:
- memoryview = memoryview
-else:
- memoryview = buffer
diff --git a/lib/python2.7/site-packages/django/contrib/gis/admin/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/admin/__init__.py
deleted file mode 100644
index 2b56276..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/admin/__init__.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Getting the normal admin routines, classes, and `site` instance.
-from django.contrib.admin import autodiscover, site, AdminSite, ModelAdmin, StackedInline, TabularInline, HORIZONTAL, VERTICAL
-
-# Geographic admin options classes and widgets.
-from django.contrib.gis.admin.options import GeoModelAdmin
-from django.contrib.gis.admin.widgets import OpenLayersWidget
-
-try:
- from django.contrib.gis.admin.options import OSMGeoAdmin
- HAS_OSM = True
-except ImportError:
- HAS_OSM = False
diff --git a/lib/python2.7/site-packages/django/contrib/gis/admin/options.py b/lib/python2.7/site-packages/django/contrib/gis/admin/options.py
deleted file mode 100644
index 7e79be1..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/admin/options.py
+++ /dev/null
@@ -1,139 +0,0 @@
-from django.contrib.admin import ModelAdmin
-from django.contrib.gis.admin.widgets import OpenLayersWidget
-from django.contrib.gis.gdal import OGRGeomType
-from django.contrib.gis.db import models
-
-class GeoModelAdmin(ModelAdmin):
- """
- The administration options class for Geographic models. Map settings
- may be overloaded from their defaults to create custom maps.
- """
- # The default map settings that may be overloaded -- still subject
- # to API changes.
- default_lon = 0
- default_lat = 0
- default_zoom = 4
- display_wkt = False
- display_srid = False
- extra_js = []
- num_zoom = 18
- max_zoom = False
- min_zoom = False
- units = False
- max_resolution = False
- max_extent = False
- modifiable = True
- mouse_position = True
- scale_text = True
- layerswitcher = True
- scrollable = True
- map_width = 600
- map_height = 400
- map_srid = 4326
- map_template = 'gis/admin/openlayers.html'
- openlayers_url = 'http://openlayers.org/api/2.11/OpenLayers.js'
- point_zoom = num_zoom - 6
- wms_url = 'http://vmap0.tiles.osgeo.org/wms/vmap0'
- wms_layer = 'basic'
- wms_name = 'OpenLayers WMS'
- wms_options = {'format': 'image/jpeg'}
- debug = False
- widget = OpenLayersWidget
-
- @property
- def media(self):
- "Injects OpenLayers JavaScript into the admin."
- media = super(GeoModelAdmin, self).media
- media.add_js([self.openlayers_url])
- media.add_js(self.extra_js)
- return media
-
- def formfield_for_dbfield(self, db_field, **kwargs):
- """
- Overloaded from ModelAdmin so that an OpenLayersWidget is used
- for viewing/editing 2D GeometryFields (OpenLayers 2 does not support
- 3D editing).
- """
- if isinstance(db_field, models.GeometryField) and db_field.dim < 3:
- request = kwargs.pop('request', None)
- # Setting the widget with the newly defined widget.
- kwargs['widget'] = self.get_map_widget(db_field)
- return db_field.formfield(**kwargs)
- else:
- return super(GeoModelAdmin, self).formfield_for_dbfield(db_field, **kwargs)
-
- def get_map_widget(self, db_field):
- """
- Returns a subclass of the OpenLayersWidget (or whatever was specified
- in the `widget` attribute) using the settings from the attributes set
- in this class.
- """
- is_collection = db_field.geom_type in ('MULTIPOINT', 'MULTILINESTRING', 'MULTIPOLYGON', 'GEOMETRYCOLLECTION')
- if is_collection:
- if db_field.geom_type == 'GEOMETRYCOLLECTION': collection_type = 'Any'
- else: collection_type = OGRGeomType(db_field.geom_type.replace('MULTI', ''))
- else:
- collection_type = 'None'
-
- class OLMap(self.widget):
- template = self.map_template
- geom_type = db_field.geom_type
-
- wms_options = ''
- if self.wms_options:
- wms_options = ["%s: '%s'" % pair for pair in self.wms_options.items()]
- wms_options = ', %s' % ', '.join(wms_options)
-
- params = {'default_lon' : self.default_lon,
- 'default_lat' : self.default_lat,
- 'default_zoom' : self.default_zoom,
- 'display_wkt' : self.debug or self.display_wkt,
- 'geom_type' : OGRGeomType(db_field.geom_type),
- 'field_name' : db_field.name,
- 'is_collection' : is_collection,
- 'scrollable' : self.scrollable,
- 'layerswitcher' : self.layerswitcher,
- 'collection_type' : collection_type,
- 'is_generic' : db_field.geom_type == 'GEOMETRY',
- 'is_linestring' : db_field.geom_type in ('LINESTRING', 'MULTILINESTRING'),
- 'is_polygon' : db_field.geom_type in ('POLYGON', 'MULTIPOLYGON'),
- 'is_point' : db_field.geom_type in ('POINT', 'MULTIPOINT'),
- 'num_zoom' : self.num_zoom,
- 'max_zoom' : self.max_zoom,
- 'min_zoom' : self.min_zoom,
- 'units' : self.units, #likely shoud get from object
- 'max_resolution' : self.max_resolution,
- 'max_extent' : self.max_extent,
- 'modifiable' : self.modifiable,
- 'mouse_position' : self.mouse_position,
- 'scale_text' : self.scale_text,
- 'map_width' : self.map_width,
- 'map_height' : self.map_height,
- 'point_zoom' : self.point_zoom,
- 'srid' : self.map_srid,
- 'display_srid' : self.display_srid,
- 'wms_url' : self.wms_url,
- 'wms_layer' : self.wms_layer,
- 'wms_name' : self.wms_name,
- 'wms_options' : wms_options,
- 'debug' : self.debug,
- }
- return OLMap
-
-from django.contrib.gis import gdal
-if gdal.HAS_GDAL:
- # Use the official spherical mercator projection SRID on versions
- # of GDAL that support it; otherwise, fallback to 900913.
- if gdal.GDAL_VERSION >= (1, 7):
- spherical_mercator_srid = 3857
- else:
- spherical_mercator_srid = 900913
-
- class OSMGeoAdmin(GeoModelAdmin):
- map_template = 'gis/admin/osm.html'
- num_zoom = 20
- map_srid = spherical_mercator_srid
- max_extent = '-20037508,-20037508,20037508,20037508'
- max_resolution = '156543.0339'
- point_zoom = num_zoom - 6
- units = 'm'
diff --git a/lib/python2.7/site-packages/django/contrib/gis/admin/widgets.py b/lib/python2.7/site-packages/django/contrib/gis/admin/widgets.py
deleted file mode 100644
index 056d259..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/admin/widgets.py
+++ /dev/null
@@ -1,119 +0,0 @@
-import logging
-
-from django.forms.widgets import Textarea
-from django.template import loader, Context
-from django.utils import six
-from django.utils import translation
-
-from django.contrib.gis.gdal import OGRException
-from django.contrib.gis.geos import GEOSGeometry, GEOSException
-
-# Creating a template context that contains Django settings
-# values needed by admin map templates.
-geo_context = Context({'LANGUAGE_BIDI' : translation.get_language_bidi()})
-logger = logging.getLogger('django.contrib.gis')
-
-
-class OpenLayersWidget(Textarea):
- """
- Renders an OpenLayers map using the WKT of the geometry.
- """
- def render(self, name, value, attrs=None):
- # Update the template parameters with any attributes passed in.
- if attrs: self.params.update(attrs)
-
- # Defaulting the WKT value to a blank string -- this
- # will be tested in the JavaScript and the appropriate
- # interface will be constructed.
- self.params['wkt'] = ''
-
- # If a string reaches here (via a validation error on another
- # field) then just reconstruct the Geometry.
- if isinstance(value, six.string_types):
- try:
- value = GEOSGeometry(value)
- except (GEOSException, ValueError) as err:
- logger.error(
- "Error creating geometry from value '%s' (%s)" % (
- value, err)
- )
- value = None
-
- if (value and value.geom_type.upper() != self.geom_type and
- self.geom_type != 'GEOMETRY'):
- value = None
-
- # Constructing the dictionary of the map options.
- self.params['map_options'] = self.map_options()
-
- # Constructing the JavaScript module name using the name of
- # the GeometryField (passed in via the `attrs` keyword).
- # Use the 'name' attr for the field name (rather than 'field')
- self.params['name'] = name
- # note: we must switch out dashes for underscores since js
- # functions are created using the module variable
- js_safe_name = self.params['name'].replace('-','_')
- self.params['module'] = 'geodjango_%s' % js_safe_name
-
- if value:
- # Transforming the geometry to the projection used on the
- # OpenLayers map.
- srid = self.params['srid']
- if value.srid != srid:
- try:
- ogr = value.ogr
- ogr.transform(srid)
- wkt = ogr.wkt
- except OGRException as err:
- logger.error(
- "Error transforming geometry from srid '%s' to srid '%s' (%s)" % (
- value.srid, srid, err)
- )
- wkt = ''
- else:
- wkt = value.wkt
-
- # Setting the parameter WKT with that of the transformed
- # geometry.
- self.params['wkt'] = wkt
-
- return loader.render_to_string(self.template, self.params,
- context_instance=geo_context)
-
- def map_options(self):
- "Builds the map options hash for the OpenLayers template."
-
- # JavaScript construction utilities for the Bounds and Projection.
- def ol_bounds(extent):
- return 'new OpenLayers.Bounds(%s)' % str(extent)
- def ol_projection(srid):
- return 'new OpenLayers.Projection("EPSG:%s")' % srid
-
- # An array of the parameter name, the name of their OpenLayers
- # counterpart, and the type of variable they are.
- map_types = [('srid', 'projection', 'srid'),
- ('display_srid', 'displayProjection', 'srid'),
- ('units', 'units', str),
- ('max_resolution', 'maxResolution', float),
- ('max_extent', 'maxExtent', 'bounds'),
- ('num_zoom', 'numZoomLevels', int),
- ('max_zoom', 'maxZoomLevels', int),
- ('min_zoom', 'minZoomLevel', int),
- ]
-
- # Building the map options hash.
- map_options = {}
- for param_name, js_name, option_type in map_types:
- if self.params.get(param_name, False):
- if option_type == 'srid':
- value = ol_projection(self.params[param_name])
- elif option_type == 'bounds':
- value = ol_bounds(self.params[param_name])
- elif option_type in (float, int):
- value = self.params[param_name]
- elif option_type in (str,):
- value = '"%s"' % self.params[param_name]
- else:
- raise TypeError
- map_options[js_name] = value
- return map_options
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/db/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/adapter.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/adapter.py
deleted file mode 100644
index ca77124..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/adapter.py
+++ /dev/null
@@ -1,19 +0,0 @@
-class WKTAdapter(object):
- """
- This provides an adaptor for Geometries sent to the
- MySQL and Oracle database backends.
- """
- def __init__(self, geom):
- self.wkt = geom.wkt
- self.srid = geom.srid
-
- def __eq__(self, other):
- if not isinstance(other, WKTAdapter):
- return False
- return self.wkt == other.wkt and self.srid == other.srid
-
- def __str__(self):
- return self.wkt
-
- def prepare_database_save(self, unused):
- return self
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/base.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/base.py
deleted file mode 100644
index 7db7ce5..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/base.py
+++ /dev/null
@@ -1,349 +0,0 @@
-"""
-Base/mixin classes for the spatial backend database operations and the
-`SpatialRefSys` model the backend.
-"""
-import re
-
-from django.contrib.gis import gdal
-from django.utils import six
-from django.utils.encoding import python_2_unicode_compatible
-
-
-class BaseSpatialOperations(object):
- """
- This module holds the base `BaseSpatialBackend` object, which is
- instantiated by each spatial database backend with the features
- it has.
- """
- distance_functions = {}
- geometry_functions = {}
- geometry_operators = {}
- geography_operators = {}
- geography_functions = {}
- gis_terms = set()
- truncate_params = {}
-
- # Quick booleans for the type of this spatial backend, and
- # an attribute for the spatial database version tuple (if applicable)
- postgis = False
- spatialite = False
- mysql = False
- oracle = False
- spatial_version = None
-
- # How the geometry column should be selected.
- select = None
-
- # Does the spatial database have a geometry or geography type?
- geography = False
- geometry = False
-
- area = False
- centroid = False
- difference = False
- distance = False
- distance_sphere = False
- distance_spheroid = False
- envelope = False
- force_rhr = False
- mem_size = False
- bounding_circle = False
- num_geom = False
- num_points = False
- perimeter = False
- perimeter3d = False
- point_on_surface = False
- polygonize = False
- reverse = False
- scale = False
- snap_to_grid = False
- sym_difference = False
- transform = False
- translate = False
- union = False
-
- # Aggregates
- collect = False
- extent = False
- extent3d = False
- make_line = False
- unionagg = False
-
- # Serialization
- geohash = False
- geojson = False
- gml = False
- kml = False
- svg = False
-
- # Constructors
- from_text = False
- from_wkb = False
-
- # Default conversion functions for aggregates; will be overridden if implemented
- # for the spatial backend.
- def convert_extent(self, box):
- raise NotImplementedError('Aggregate extent not implemented for this spatial backend.')
-
- def convert_extent3d(self, box):
- raise NotImplementedError('Aggregate 3D extent not implemented for this spatial backend.')
-
- def convert_geom(self, geom_val, geom_field):
- raise NotImplementedError('Aggregate method not implemented for this spatial backend.')
-
- # For quoting column values, rather than columns.
- def geo_quote_name(self, name):
- return "'%s'" % name
-
- # GeometryField operations
- def geo_db_type(self, f):
- """
- Returns the database column type for the geometry field on
- the spatial backend.
- """
- raise NotImplementedError
-
- def get_distance(self, f, value, lookup_type):
- """
- Returns the distance parameters for the given geometry field,
- lookup value, and lookup type.
- """
- raise NotImplementedError('Distance operations not available on this spatial backend.')
-
- def get_geom_placeholder(self, f, value):
- """
- Returns the placeholder for the given geometry field with the given
- value. Depending on the spatial backend, the placeholder may contain a
- stored procedure call to the transformation function of the spatial
- backend.
- """
- raise NotImplementedError
-
- def get_expression_column(self, evaluator):
- """
- Helper method to return the quoted column string from the evaluator
- for its expression.
- """
- for expr, col_tup in evaluator.cols:
- if expr is evaluator.expression:
- return '%s.%s' % tuple(map(self.quote_name, col_tup))
- raise Exception("Could not find the column for the expression.")
-
- # Spatial SQL Construction
- def spatial_aggregate_sql(self, agg):
- raise NotImplementedError('Aggregate support not implemented for this spatial backend.')
-
- def spatial_lookup_sql(self, lvalue, lookup_type, value, field):
- raise NotImplementedError
-
- # Routines for getting the OGC-compliant models.
- def geometry_columns(self):
- raise NotImplementedError
-
- def spatial_ref_sys(self):
- raise NotImplementedError
-
-@python_2_unicode_compatible
-class SpatialRefSysMixin(object):
- """
- The SpatialRefSysMixin is a class used by the database-dependent
- SpatialRefSys objects to reduce redundnant code.
- """
- # For pulling out the spheroid from the spatial reference string. This
- # regular expression is used only if the user does not have GDAL installed.
- # TODO: Flattening not used in all ellipsoids, could also be a minor axis,
- # or 'b' parameter.
- spheroid_regex = re.compile(r'.+SPHEROID\[\"(?P<name>.+)\",(?P<major>\d+(\.\d+)?),(?P<flattening>\d{3}\.\d+),')
-
- # For pulling out the units on platforms w/o GDAL installed.
- # TODO: Figure out how to pull out angular units of projected coordinate system and
- # fix for LOCAL_CS types. GDAL should be highly recommended for performing
- # distance queries.
- units_regex = re.compile(r'.+UNIT ?\["(?P<unit_name>[\w \'\(\)]+)", ?(?P<unit>[\d\.]+)(,AUTHORITY\["(?P<unit_auth_name>[\w \'\(\)]+)","(?P<unit_auth_val>\d+)"\])?\]([\w ]+)?(,AUTHORITY\["(?P<auth_name>[\w \'\(\)]+)","(?P<auth_val>\d+)"\])?\]$')
-
- @property
- def srs(self):
- """
- Returns a GDAL SpatialReference object, if GDAL is installed.
- """
- if gdal.HAS_GDAL:
- # TODO: Is caching really necessary here? Is complexity worth it?
- if hasattr(self, '_srs'):
- # Returning a clone of the cached SpatialReference object.
- return self._srs.clone()
- else:
- # Attempting to cache a SpatialReference object.
-
- # Trying to get from WKT first.
- try:
- self._srs = gdal.SpatialReference(self.wkt)
- return self.srs
- except Exception as msg:
- pass
-
- try:
- self._srs = gdal.SpatialReference(self.proj4text)
- return self.srs
- except Exception as msg:
- pass
-
- raise Exception('Could not get OSR SpatialReference from WKT: %s\nError:\n%s' % (self.wkt, msg))
- else:
- raise Exception('GDAL is not installed.')
-
- @property
- def ellipsoid(self):
- """
- Returns a tuple of the ellipsoid parameters:
- (semimajor axis, semiminor axis, and inverse flattening).
- """
- if gdal.HAS_GDAL:
- return self.srs.ellipsoid
- else:
- m = self.spheroid_regex.match(self.wkt)
- if m: return (float(m.group('major')), float(m.group('flattening')))
- else: return None
-
- @property
- def name(self):
- "Returns the projection name."
- return self.srs.name
-
- @property
- def spheroid(self):
- "Returns the spheroid name for this spatial reference."
- return self.srs['spheroid']
-
- @property
- def datum(self):
- "Returns the datum for this spatial reference."
- return self.srs['datum']
-
- @property
- def projected(self):
- "Is this Spatial Reference projected?"
- if gdal.HAS_GDAL:
- return self.srs.projected
- else:
- return self.wkt.startswith('PROJCS')
-
- @property
- def local(self):
- "Is this Spatial Reference local?"
- if gdal.HAS_GDAL:
- return self.srs.local
- else:
- return self.wkt.startswith('LOCAL_CS')
-
- @property
- def geographic(self):
- "Is this Spatial Reference geographic?"
- if gdal.HAS_GDAL:
- return self.srs.geographic
- else:
- return self.wkt.startswith('GEOGCS')
-
- @property
- def linear_name(self):
- "Returns the linear units name."
- if gdal.HAS_GDAL:
- return self.srs.linear_name
- elif self.geographic:
- return None
- else:
- m = self.units_regex.match(self.wkt)
- return m.group('unit_name')
-
- @property
- def linear_units(self):
- "Returns the linear units."
- if gdal.HAS_GDAL:
- return self.srs.linear_units
- elif self.geographic:
- return None
- else:
- m = self.units_regex.match(self.wkt)
- return m.group('unit')
-
- @property
- def angular_name(self):
- "Returns the name of the angular units."
- if gdal.HAS_GDAL:
- return self.srs.angular_name
- elif self.projected:
- return None
- else:
- m = self.units_regex.match(self.wkt)
- return m.group('unit_name')
-
- @property
- def angular_units(self):
- "Returns the angular units."
- if gdal.HAS_GDAL:
- return self.srs.angular_units
- elif self.projected:
- return None
- else:
- m = self.units_regex.match(self.wkt)
- return m.group('unit')
-
- @property
- def units(self):
- "Returns a tuple of the units and the name."
- if self.projected or self.local:
- return (self.linear_units, self.linear_name)
- elif self.geographic:
- return (self.angular_units, self.angular_name)
- else:
- return (None, None)
-
- @classmethod
- def get_units(cls, wkt):
- """
- Class method used by GeometryField on initialization to
- retrive the units on the given WKT, without having to use
- any of the database fields.
- """
- if gdal.HAS_GDAL:
- return gdal.SpatialReference(wkt).units
- else:
- m = cls.units_regex.match(wkt)
- return m.group('unit'), m.group('unit_name')
-
- @classmethod
- def get_spheroid(cls, wkt, string=True):
- """
- Class method used by GeometryField on initialization to
- retrieve the `SPHEROID[..]` parameters from the given WKT.
- """
- if gdal.HAS_GDAL:
- srs = gdal.SpatialReference(wkt)
- sphere_params = srs.ellipsoid
- sphere_name = srs['spheroid']
- else:
- m = cls.spheroid_regex.match(wkt)
- if m:
- sphere_params = (float(m.group('major')), float(m.group('flattening')))
- sphere_name = m.group('name')
- else:
- return None
-
- if not string:
- return sphere_name, sphere_params
- else:
- # `string` parameter used to place in format acceptable by PostGIS
- if len(sphere_params) == 3:
- radius, flattening = sphere_params[0], sphere_params[2]
- else:
- radius, flattening = sphere_params
- return 'SPHEROID["%s",%s,%s]' % (sphere_name, radius, flattening)
-
- def __str__(self):
- """
- Returns the string representation. If GDAL is installed,
- it will be 'pretty' OGC WKT.
- """
- try:
- return six.text_type(self.srs)
- except:
- return six.text_type(self.wkt)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/base.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/base.py
deleted file mode 100644
index 7d94458..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/base.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from django.db.backends.mysql.base import *
-from django.db.backends.mysql.base import DatabaseWrapper as MySQLDatabaseWrapper
-from django.contrib.gis.db.backends.mysql.creation import MySQLCreation
-from django.contrib.gis.db.backends.mysql.introspection import MySQLIntrospection
-from django.contrib.gis.db.backends.mysql.operations import MySQLOperations
-
-class DatabaseWrapper(MySQLDatabaseWrapper):
-
- def __init__(self, *args, **kwargs):
- super(DatabaseWrapper, self).__init__(*args, **kwargs)
- self.creation = MySQLCreation(self)
- self.ops = MySQLOperations(self)
- self.introspection = MySQLIntrospection(self)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/compiler.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/compiler.py
deleted file mode 100644
index f4654ef..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/compiler.py
+++ /dev/null
@@ -1,35 +0,0 @@
-from django.contrib.gis.db.models.sql.compiler import GeoSQLCompiler as BaseGeoSQLCompiler
-from django.db.backends.mysql import compiler
-
-SQLCompiler = compiler.SQLCompiler
-
-class GeoSQLCompiler(BaseGeoSQLCompiler, SQLCompiler):
- def resolve_columns(self, row, fields=()):
- """
- Integrate the cases handled both by the base GeoSQLCompiler and the
- main MySQL compiler (converting 0/1 to True/False for boolean fields).
-
- Refs #15169.
-
- """
- row = BaseGeoSQLCompiler.resolve_columns(self, row, fields)
- return SQLCompiler.resolve_columns(self, row, fields)
-
-
-class SQLInsertCompiler(compiler.SQLInsertCompiler, GeoSQLCompiler):
- pass
-
-class SQLDeleteCompiler(compiler.SQLDeleteCompiler, GeoSQLCompiler):
- pass
-
-class SQLUpdateCompiler(compiler.SQLUpdateCompiler, GeoSQLCompiler):
- pass
-
-class SQLAggregateCompiler(compiler.SQLAggregateCompiler, GeoSQLCompiler):
- pass
-
-class SQLDateCompiler(compiler.SQLDateCompiler, GeoSQLCompiler):
- pass
-
-class SQLDateTimeCompiler(compiler.SQLDateTimeCompiler, GeoSQLCompiler):
- pass
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/creation.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/creation.py
deleted file mode 100644
index dda77ea..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/creation.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from django.db.backends.mysql.creation import DatabaseCreation
-
-class MySQLCreation(DatabaseCreation):
-
- def sql_indexes_for_field(self, model, f, style):
- from django.contrib.gis.db.models.fields import GeometryField
- output = super(MySQLCreation, self).sql_indexes_for_field(model, f, style)
-
- if isinstance(f, GeometryField) and f.spatial_index:
- qn = self.connection.ops.quote_name
- db_table = model._meta.db_table
- idx_name = '%s_%s_id' % (db_table, f.column)
- output.append(style.SQL_KEYWORD('CREATE SPATIAL INDEX ') +
- style.SQL_TABLE(qn(idx_name)) +
- style.SQL_KEYWORD(' ON ') +
- style.SQL_TABLE(qn(db_table)) + '(' +
- style.SQL_FIELD(qn(f.column)) + ');')
- return output
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/introspection.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/introspection.py
deleted file mode 100644
index 59d0f62..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/introspection.py
+++ /dev/null
@@ -1,32 +0,0 @@
-from MySQLdb.constants import FIELD_TYPE
-
-from django.contrib.gis.gdal import OGRGeomType
-from django.db.backends.mysql.introspection import DatabaseIntrospection
-
-class MySQLIntrospection(DatabaseIntrospection):
- # Updating the data_types_reverse dictionary with the appropriate
- # type for Geometry fields.
- data_types_reverse = DatabaseIntrospection.data_types_reverse.copy()
- data_types_reverse[FIELD_TYPE.GEOMETRY] = 'GeometryField'
-
- def get_geometry_type(self, table_name, geo_col):
- cursor = self.connection.cursor()
- try:
- # In order to get the specific geometry type of the field,
- # we introspect on the table definition using `DESCRIBE`.
- cursor.execute('DESCRIBE %s' %
- self.connection.ops.quote_name(table_name))
- # Increment over description info until we get to the geometry
- # column.
- for column, typ, null, key, default, extra in cursor.fetchall():
- if column == geo_col:
- # Using OGRGeomType to convert from OGC name to Django field.
- # MySQL does not support 3D or SRIDs, so the field params
- # are empty.
- field_type = OGRGeomType(typ).django
- field_params = {}
- break
- finally:
- cursor.close()
-
- return field_type, field_params
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/operations.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/operations.py
deleted file mode 100644
index 26cec74..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/mysql/operations.py
+++ /dev/null
@@ -1,67 +0,0 @@
-from django.db.backends.mysql.base import DatabaseOperations
-
-from django.contrib.gis.db.backends.adapter import WKTAdapter
-from django.contrib.gis.db.backends.base import BaseSpatialOperations
-
-
-class MySQLOperations(DatabaseOperations, BaseSpatialOperations):
-
- compiler_module = 'django.contrib.gis.db.backends.mysql.compiler'
- mysql = True
- name = 'mysql'
- select = 'AsText(%s)'
- from_wkb = 'GeomFromWKB'
- from_text = 'GeomFromText'
-
- Adapter = WKTAdapter
- Adaptor = Adapter # Backwards-compatibility alias.
-
- geometry_functions = {
- 'bbcontains': 'MBRContains', # For consistency w/PostGIS API
- 'bboverlaps': 'MBROverlaps', # .. ..
- 'contained': 'MBRWithin', # .. ..
- 'contains': 'MBRContains',
- 'disjoint': 'MBRDisjoint',
- 'equals': 'MBREqual',
- 'exact': 'MBREqual',
- 'intersects': 'MBRIntersects',
- 'overlaps': 'MBROverlaps',
- 'same_as': 'MBREqual',
- 'touches': 'MBRTouches',
- 'within': 'MBRWithin',
- }
-
- gis_terms = set(geometry_functions) | set(['isnull'])
-
- def geo_db_type(self, f):
- return f.geom_type
-
- def get_geom_placeholder(self, value, srid):
- """
- The placeholder here has to include MySQL's WKT constructor. Because
- MySQL does not support spatial transformations, there is no need to
- modify the placeholder based on the contents of the given value.
- """
- if hasattr(value, 'expression'):
- placeholder = self.get_expression_column(value)
- else:
- placeholder = '%s(%%s)' % self.from_text
- return placeholder
-
- def spatial_lookup_sql(self, lvalue, lookup_type, value, field, qn):
- alias, col, db_type = lvalue
-
- geo_col = '%s.%s' % (qn(alias), qn(col))
-
- lookup_info = self.geometry_functions.get(lookup_type, False)
- if lookup_info:
- sql = "%s(%s, %s)" % (lookup_info, geo_col,
- self.get_geom_placeholder(value, field.srid))
- return sql, []
-
- # TODO: Is this really necessary? MySQL can't handle NULL geometries
- # in its spatial indexes anyways.
- if lookup_type == 'isnull':
- return "%s IS %sNULL" % (geo_col, ('' if value else 'NOT ')), []
-
- raise TypeError("Got invalid lookup_type: %s" % repr(lookup_type))
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/adapter.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/adapter.py
deleted file mode 100644
index ea340d9..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/adapter.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from cx_Oracle import CLOB
-from django.contrib.gis.db.backends.adapter import WKTAdapter
-
-class OracleSpatialAdapter(WKTAdapter):
- input_size = CLOB
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/base.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/base.py
deleted file mode 100644
index 398b3d3..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/base.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from django.db.backends.oracle.base import *
-from django.db.backends.oracle.base import DatabaseWrapper as OracleDatabaseWrapper
-from django.contrib.gis.db.backends.oracle.creation import OracleCreation
-from django.contrib.gis.db.backends.oracle.introspection import OracleIntrospection
-from django.contrib.gis.db.backends.oracle.operations import OracleOperations
-
-class DatabaseWrapper(OracleDatabaseWrapper):
- def __init__(self, *args, **kwargs):
- super(DatabaseWrapper, self).__init__(*args, **kwargs)
- self.ops = OracleOperations(self)
- self.creation = OracleCreation(self)
- self.introspection = OracleIntrospection(self)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/compiler.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/compiler.py
deleted file mode 100644
index d00af7f..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/compiler.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from django.contrib.gis.db.models.sql.compiler import GeoSQLCompiler as BaseGeoSQLCompiler
-from django.db.backends.oracle import compiler
-
-SQLCompiler = compiler.SQLCompiler
-
-class GeoSQLCompiler(BaseGeoSQLCompiler, SQLCompiler):
- pass
-
-class SQLInsertCompiler(compiler.SQLInsertCompiler, GeoSQLCompiler):
- pass
-
-class SQLDeleteCompiler(compiler.SQLDeleteCompiler, GeoSQLCompiler):
- pass
-
-class SQLUpdateCompiler(compiler.SQLUpdateCompiler, GeoSQLCompiler):
- pass
-
-class SQLAggregateCompiler(compiler.SQLAggregateCompiler, GeoSQLCompiler):
- pass
-
-class SQLDateCompiler(compiler.SQLDateCompiler, GeoSQLCompiler):
- pass
-
-class SQLDateTimeCompiler(compiler.SQLDateTimeCompiler, GeoSQLCompiler):
- pass
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/creation.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/creation.py
deleted file mode 100644
index 043da91..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/creation.py
+++ /dev/null
@@ -1,42 +0,0 @@
-from django.db.backends.oracle.creation import DatabaseCreation
-from django.db.backends.util import truncate_name
-
-class OracleCreation(DatabaseCreation):
-
- def sql_indexes_for_field(self, model, f, style):
- "Return any spatial index creation SQL for the field."
- from django.contrib.gis.db.models.fields import GeometryField
-
- output = super(OracleCreation, self).sql_indexes_for_field(model, f, style)
-
- if isinstance(f, GeometryField):
- gqn = self.connection.ops.geo_quote_name
- qn = self.connection.ops.quote_name
- db_table = model._meta.db_table
-
- output.append(style.SQL_KEYWORD('INSERT INTO ') +
- style.SQL_TABLE('USER_SDO_GEOM_METADATA') +
- ' (%s, %s, %s, %s)\n ' % tuple(map(qn, ['TABLE_NAME', 'COLUMN_NAME', 'DIMINFO', 'SRID'])) +
- style.SQL_KEYWORD(' VALUES ') + '(\n ' +
- style.SQL_TABLE(gqn(db_table)) + ',\n ' +
- style.SQL_FIELD(gqn(f.column)) + ',\n ' +
- style.SQL_KEYWORD("MDSYS.SDO_DIM_ARRAY") + '(\n ' +
- style.SQL_KEYWORD("MDSYS.SDO_DIM_ELEMENT") +
- ("('LONG', %s, %s, %s),\n " % (f._extent[0], f._extent[2], f._tolerance)) +
- style.SQL_KEYWORD("MDSYS.SDO_DIM_ELEMENT") +
- ("('LAT', %s, %s, %s)\n ),\n" % (f._extent[1], f._extent[3], f._tolerance)) +
- ' %s\n );' % f.srid)
-
- if f.spatial_index:
- # Getting the index name, Oracle doesn't allow object
- # names > 30 characters.
- idx_name = truncate_name('%s_%s_id' % (db_table, f.column), 30)
-
- output.append(style.SQL_KEYWORD('CREATE INDEX ') +
- style.SQL_TABLE(qn(idx_name)) +
- style.SQL_KEYWORD(' ON ') +
- style.SQL_TABLE(qn(db_table)) + '(' +
- style.SQL_FIELD(qn(f.column)) + ') ' +
- style.SQL_KEYWORD('INDEXTYPE IS ') +
- style.SQL_TABLE('MDSYS.SPATIAL_INDEX') + ';')
- return output
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/introspection.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/introspection.py
deleted file mode 100644
index d6c8f45..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/introspection.py
+++ /dev/null
@@ -1,44 +0,0 @@
-import cx_Oracle
-import sys
-from django.db.backends.oracle.introspection import DatabaseIntrospection
-from django.utils import six
-
-class OracleIntrospection(DatabaseIntrospection):
- # Associating any OBJECTVAR instances with GeometryField. Of course,
- # this won't work right on Oracle objects that aren't MDSYS.SDO_GEOMETRY,
- # but it is the only object type supported within Django anyways.
- data_types_reverse = DatabaseIntrospection.data_types_reverse.copy()
- data_types_reverse[cx_Oracle.OBJECT] = 'GeometryField'
-
- def get_geometry_type(self, table_name, geo_col):
- cursor = self.connection.cursor()
- try:
- # Querying USER_SDO_GEOM_METADATA to get the SRID and dimension information.
- try:
- cursor.execute('SELECT "DIMINFO", "SRID" FROM "USER_SDO_GEOM_METADATA" WHERE "TABLE_NAME"=%s AND "COLUMN_NAME"=%s',
- (table_name.upper(), geo_col.upper()))
- row = cursor.fetchone()
- except Exception as msg:
- new_msg = (
- 'Could not find entry in USER_SDO_GEOM_METADATA '
- 'corresponding to "%s"."%s"\n'
- 'Error message: %s.') % (table_name, geo_col, msg)
- six.reraise(Exception, Exception(new_msg), sys.exc_info()[2])
-
- # TODO: Research way to find a more specific geometry field type for
- # the column's contents.
- field_type = 'GeometryField'
-
- # Getting the field parameters.
- field_params = {}
- dim, srid = row
- if srid != 4326:
- field_params['srid'] = srid
- # Length of object array ( SDO_DIM_ARRAY ) is number of dimensions.
- dim = len(dim)
- if dim != 2:
- field_params['dim'] = dim
- finally:
- cursor.close()
-
- return field_type, field_params
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/models.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/models.py
deleted file mode 100644
index b7deb3a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/models.py
+++ /dev/null
@@ -1,66 +0,0 @@
-"""
- The GeometryColumns and SpatialRefSys models for the Oracle spatial
- backend.
-
- It should be noted that Oracle Spatial does not have database tables
- named according to the OGC standard, so the closest analogs are used.
- For example, the `USER_SDO_GEOM_METADATA` is used for the GeometryColumns
- model and the `SDO_COORD_REF_SYS` is used for the SpatialRefSys model.
-"""
-from django.contrib.gis.db import models
-from django.contrib.gis.db.backends.base import SpatialRefSysMixin
-from django.utils.encoding import python_2_unicode_compatible
-
-@python_2_unicode_compatible
-class GeometryColumns(models.Model):
- "Maps to the Oracle USER_SDO_GEOM_METADATA table."
- table_name = models.CharField(max_length=32)
- column_name = models.CharField(max_length=1024)
- srid = models.IntegerField(primary_key=True)
- # TODO: Add support for `diminfo` column (type MDSYS.SDO_DIM_ARRAY).
- class Meta:
- db_table = 'USER_SDO_GEOM_METADATA'
- managed = False
-
- @classmethod
- def table_name_col(cls):
- """
- Returns the name of the metadata column used to store the
- the feature table name.
- """
- return 'table_name'
-
- @classmethod
- def geom_col_name(cls):
- """
- Returns the name of the metadata column used to store the
- the feature geometry column.
- """
- return 'column_name'
-
- def __str__(self):
- return '%s - %s (SRID: %s)' % (self.table_name, self.column_name, self.srid)
-
-class SpatialRefSys(models.Model, SpatialRefSysMixin):
- "Maps to the Oracle MDSYS.CS_SRS table."
- cs_name = models.CharField(max_length=68)
- srid = models.IntegerField(primary_key=True)
- auth_srid = models.IntegerField()
- auth_name = models.CharField(max_length=256)
- wktext = models.CharField(max_length=2046)
- # Optional geometry representing the bounds of this coordinate
- # system. By default, all are NULL in the table.
- cs_bounds = models.PolygonField(null=True)
- objects = models.GeoManager()
-
- class Meta:
- db_table = 'CS_SRS'
- managed = False
-
- @property
- def wkt(self):
- return self.wktext
-
- @classmethod
- def wkt_col(cls):
- return 'wktext'
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/operations.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/operations.py
deleted file mode 100644
index 84217c3..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/oracle/operations.py
+++ /dev/null
@@ -1,304 +0,0 @@
-"""
- This module contains the spatial lookup types, and the `get_geo_where_clause`
- routine for Oracle Spatial.
-
- Please note that WKT support is broken on the XE version, and thus
- this backend will not work on such platforms. Specifically, XE lacks
- support for an internal JVM, and Java libraries are required to use
- the WKT constructors.
-"""
-import re
-from decimal import Decimal
-
-from django.db.backends.oracle.base import DatabaseOperations
-from django.contrib.gis.db.backends.base import BaseSpatialOperations
-from django.contrib.gis.db.backends.oracle.adapter import OracleSpatialAdapter
-from django.contrib.gis.db.backends.util import SpatialFunction
-from django.contrib.gis.geometry.backend import Geometry
-from django.contrib.gis.measure import Distance
-from django.utils import six
-
-
-class SDOOperation(SpatialFunction):
- "Base class for SDO* Oracle operations."
- sql_template = "%(function)s(%(geo_col)s, %(geometry)s) %(operator)s '%(result)s'"
-
- def __init__(self, func, **kwargs):
- kwargs.setdefault('operator', '=')
- kwargs.setdefault('result', 'TRUE')
- super(SDOOperation, self).__init__(func, **kwargs)
-
-class SDODistance(SpatialFunction):
- "Class for Distance queries."
- sql_template = ('%(function)s(%(geo_col)s, %(geometry)s, %(tolerance)s) '
- '%(operator)s %(result)s')
- dist_func = 'SDO_GEOM.SDO_DISTANCE'
-
- def __init__(self, op, tolerance=0.05):
- super(SDODistance, self).__init__(self.dist_func,
- tolerance=tolerance,
- operator=op, result='%s')
-
-class SDODWithin(SpatialFunction):
- dwithin_func = 'SDO_WITHIN_DISTANCE'
- sql_template = "%(function)s(%(geo_col)s, %(geometry)s, %%s) = 'TRUE'"
-
- def __init__(self):
- super(SDODWithin, self).__init__(self.dwithin_func)
-
-class SDOGeomRelate(SpatialFunction):
- "Class for using SDO_GEOM.RELATE."
- relate_func = 'SDO_GEOM.RELATE'
- sql_template = ("%(function)s(%(geo_col)s, '%(mask)s', %(geometry)s, "
- "%(tolerance)s) %(operator)s '%(mask)s'")
-
- def __init__(self, mask, tolerance=0.05):
- # SDO_GEOM.RELATE(...) has a peculiar argument order: column, mask, geom, tolerance.
- # Moreover, the runction result is the mask (e.g., 'DISJOINT' instead of 'TRUE').
- super(SDOGeomRelate, self).__init__(self.relate_func, operator='=',
- mask=mask, tolerance=tolerance)
-
-class SDORelate(SpatialFunction):
- "Class for using SDO_RELATE."
- masks = 'TOUCH|OVERLAPBDYDISJOINT|OVERLAPBDYINTERSECT|EQUAL|INSIDE|COVEREDBY|CONTAINS|COVERS|ANYINTERACT|ON'
- mask_regex = re.compile(r'^(%s)(\+(%s))*$' % (masks, masks), re.I)
- sql_template = "%(function)s(%(geo_col)s, %(geometry)s, 'mask=%(mask)s') = 'TRUE'"
- relate_func = 'SDO_RELATE'
-
- def __init__(self, mask):
- if not self.mask_regex.match(mask):
- raise ValueError('Invalid %s mask: "%s"' % (self.relate_func, mask))
- super(SDORelate, self).__init__(self.relate_func, mask=mask)
-
-# Valid distance types and substitutions
-dtypes = (Decimal, Distance, float) + six.integer_types
-
-class OracleOperations(DatabaseOperations, BaseSpatialOperations):
- compiler_module = "django.contrib.gis.db.backends.oracle.compiler"
-
- name = 'oracle'
- oracle = True
- valid_aggregates = dict([(a, None) for a in ('Union', 'Extent')])
-
- Adapter = OracleSpatialAdapter
- Adaptor = Adapter # Backwards-compatibility alias.
-
- area = 'SDO_GEOM.SDO_AREA'
- gml = 'SDO_UTIL.TO_GMLGEOMETRY'
- centroid = 'SDO_GEOM.SDO_CENTROID'
- difference = 'SDO_GEOM.SDO_DIFFERENCE'
- distance = 'SDO_GEOM.SDO_DISTANCE'
- extent = 'SDO_AGGR_MBR'
- intersection = 'SDO_GEOM.SDO_INTERSECTION'
- length = 'SDO_GEOM.SDO_LENGTH'
- num_geom = 'SDO_UTIL.GETNUMELEM'
- num_points = 'SDO_UTIL.GETNUMVERTICES'
- perimeter = length
- point_on_surface = 'SDO_GEOM.SDO_POINTONSURFACE'
- reverse = 'SDO_UTIL.REVERSE_LINESTRING'
- sym_difference = 'SDO_GEOM.SDO_XOR'
- transform = 'SDO_CS.TRANSFORM'
- union = 'SDO_GEOM.SDO_UNION'
- unionagg = 'SDO_AGGR_UNION'
-
- # We want to get SDO Geometries as WKT because it is much easier to
- # instantiate GEOS proxies from WKT than SDO_GEOMETRY(...) strings.
- # However, this adversely affects performance (i.e., Java is called
- # to convert to WKT on every query). If someone wishes to write a
- # SDO_GEOMETRY(...) parser in Python, let me know =)
- select = 'SDO_UTIL.TO_WKTGEOMETRY(%s)'
-
- distance_functions = {
- 'distance_gt' : (SDODistance('>'), dtypes),
- 'distance_gte' : (SDODistance('>='), dtypes),
- 'distance_lt' : (SDODistance('<'), dtypes),
- 'distance_lte' : (SDODistance('<='), dtypes),
- 'dwithin' : (SDODWithin(), dtypes),
- }
-
- geometry_functions = {
- 'contains' : SDOOperation('SDO_CONTAINS'),
- 'coveredby' : SDOOperation('SDO_COVEREDBY'),
- 'covers' : SDOOperation('SDO_COVERS'),
- 'disjoint' : SDOGeomRelate('DISJOINT'),
- 'intersects' : SDOOperation('SDO_OVERLAPBDYINTERSECT'), # TODO: Is this really the same as ST_Intersects()?
- 'equals' : SDOOperation('SDO_EQUAL'),
- 'exact' : SDOOperation('SDO_EQUAL'),
- 'overlaps' : SDOOperation('SDO_OVERLAPS'),
- 'same_as' : SDOOperation('SDO_EQUAL'),
- 'relate' : (SDORelate, six.string_types), # Oracle uses a different syntax, e.g., 'mask=inside+touch'
- 'touches' : SDOOperation('SDO_TOUCH'),
- 'within' : SDOOperation('SDO_INSIDE'),
- }
- geometry_functions.update(distance_functions)
-
- gis_terms = set(['isnull'])
- gis_terms.update(geometry_functions)
-
- truncate_params = {'relate' : None}
-
- def convert_extent(self, clob):
- if clob:
- # Generally, Oracle returns a polygon for the extent -- however,
- # it can return a single point if there's only one Point in the
- # table.
- ext_geom = Geometry(clob.read())
- gtype = str(ext_geom.geom_type)
- if gtype == 'Polygon':
- # Construct the 4-tuple from the coordinates in the polygon.
- shell = ext_geom.shell
- ll, ur = shell[0][:2], shell[2][:2]
- elif gtype == 'Point':
- ll = ext_geom.coords[:2]
- ur = ll
- else:
- raise Exception('Unexpected geometry type returned for extent: %s' % gtype)
- xmin, ymin = ll
- xmax, ymax = ur
- return (xmin, ymin, xmax, ymax)
- else:
- return None
-
- def convert_geom(self, clob, geo_field):
- if clob:
- return Geometry(clob.read(), geo_field.srid)
- else:
- return None
-
- def geo_db_type(self, f):
- """
- Returns the geometry database type for Oracle. Unlike other spatial
- backends, no stored procedure is necessary and it's the same for all
- geometry types.
- """
- return 'MDSYS.SDO_GEOMETRY'
-
- def get_distance(self, f, value, lookup_type):
- """
- Returns the distance parameters given the value and the lookup type.
- On Oracle, geometry columns with a geodetic coordinate system behave
- implicitly like a geography column, and thus meters will be used as
- the distance parameter on them.
- """
- if not value:
- return []
- value = value[0]
- if isinstance(value, Distance):
- if f.geodetic(self.connection):
- dist_param = value.m
- else:
- dist_param = getattr(value, Distance.unit_attname(f.units_name(self.connection)))
- else:
- dist_param = value
-
- # dwithin lookups on oracle require a special string parameter
- # that starts with "distance=".
- if lookup_type == 'dwithin':
- dist_param = 'distance=%s' % dist_param
-
- return [dist_param]
-
- def get_geom_placeholder(self, f, value):
- """
- Provides a proper substitution value for Geometries that are not in the
- SRID of the field. Specifically, this routine will substitute in the
- SDO_CS.TRANSFORM() function call.
- """
- if value is None:
- return 'NULL'
-
- def transform_value(val, srid):
- return val.srid != srid
-
- if hasattr(value, 'expression'):
- if transform_value(value, f.srid):
- placeholder = '%s(%%s, %s)' % (self.transform, f.srid)
- else:
- placeholder = '%s'
- # No geometry value used for F expression, substitue in
- # the column name instead.
- return placeholder % self.get_expression_column(value)
- else:
- if transform_value(value, f.srid):
- return '%s(SDO_GEOMETRY(%%s, %s), %s)' % (self.transform, value.srid, f.srid)
- else:
- return 'SDO_GEOMETRY(%%s, %s)' % f.srid
-
- def spatial_lookup_sql(self, lvalue, lookup_type, value, field, qn):
- "Returns the SQL WHERE clause for use in Oracle spatial SQL construction."
- alias, col, db_type = lvalue
-
- # Getting the quoted table name as `geo_col`.
- geo_col = '%s.%s' % (qn(alias), qn(col))
-
- # See if a Oracle Geometry function matches the lookup type next
- lookup_info = self.geometry_functions.get(lookup_type, False)
- if lookup_info:
- # Lookup types that are tuples take tuple arguments, e.g., 'relate' and
- # 'dwithin' lookup types.
- if isinstance(lookup_info, tuple):
- # First element of tuple is lookup type, second element is the type
- # of the expected argument (e.g., str, float)
- sdo_op, arg_type = lookup_info
- geom = value[0]
-
- # Ensuring that a tuple _value_ was passed in from the user
- if not isinstance(value, tuple):
- raise ValueError('Tuple required for `%s` lookup type.' % lookup_type)
- if len(value) != 2:
- raise ValueError('2-element tuple required for %s lookup type.' % lookup_type)
-
- # Ensuring the argument type matches what we expect.
- if not isinstance(value[1], arg_type):
- raise ValueError('Argument type should be %s, got %s instead.' % (arg_type, type(value[1])))
-
- if lookup_type == 'relate':
- # The SDORelate class handles construction for these queries,
- # and verifies the mask argument.
- return sdo_op(value[1]).as_sql(geo_col, self.get_geom_placeholder(field, geom))
- else:
- # Otherwise, just call the `as_sql` method on the SDOOperation instance.
- return sdo_op.as_sql(geo_col, self.get_geom_placeholder(field, geom))
- else:
- # Lookup info is a SDOOperation instance, whose `as_sql` method returns
- # the SQL necessary for the geometry function call. For example:
- # SDO_CONTAINS("geoapp_country"."poly", SDO_GEOMTRY('POINT(5 23)', 4326)) = 'TRUE'
- return lookup_info.as_sql(geo_col, self.get_geom_placeholder(field, value))
- elif lookup_type == 'isnull':
- # Handling 'isnull' lookup type
- return "%s IS %sNULL" % (geo_col, ('' if value else 'NOT ')), []
-
- raise TypeError("Got invalid lookup_type: %s" % repr(lookup_type))
-
- def spatial_aggregate_sql(self, agg):
- """
- Returns the spatial aggregate SQL template and function for the
- given Aggregate instance.
- """
- agg_name = agg.__class__.__name__.lower()
- if agg_name == 'union':
- agg_name += 'agg'
- if agg.is_extent:
- sql_template = '%(function)s(%(field)s)'
- else:
- sql_template = '%(function)s(SDOAGGRTYPE(%(field)s,%(tolerance)s))'
- sql_function = getattr(self, agg_name)
- return self.select % sql_template, sql_function
-
- # Routines for getting the OGC-compliant models.
- def geometry_columns(self):
- from django.contrib.gis.db.backends.oracle.models import GeometryColumns
- return GeometryColumns
-
- def spatial_ref_sys(self):
- from django.contrib.gis.db.backends.oracle.models import SpatialRefSys
- return SpatialRefSys
-
- def modify_insert_params(self, placeholders, params):
- """Drop out insert parameters for NULL placeholder. Needed for Oracle Spatial
- backend due to #10888
- """
- # This code doesn't work for bulk insert cases.
- assert len(placeholders) == 1
- return [[param for pholder, param
- in six.moves.zip(placeholders[0], params[0]) if pholder != 'NULL'], ]
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/adapter.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/adapter.py
deleted file mode 100644
index 8bb514d..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/adapter.py
+++ /dev/null
@@ -1,46 +0,0 @@
-"""
- This object provides quoting for GEOS geometries into PostgreSQL/PostGIS.
-"""
-from __future__ import unicode_literals
-
-from psycopg2 import Binary
-from psycopg2.extensions import ISQLQuote
-
-class PostGISAdapter(object):
- def __init__(self, geom):
- "Initializes on the geometry."
- # Getting the WKB (in string form, to allow easy pickling of
- # the adaptor) and the SRID from the geometry.
- self.ewkb = bytes(geom.ewkb)
- self.srid = geom.srid
- self._adapter = Binary(self.ewkb)
-
- def __conform__(self, proto):
- # Does the given protocol conform to what Psycopg2 expects?
- if proto == ISQLQuote:
- return self
- else:
- raise Exception('Error implementing psycopg2 protocol. Is psycopg2 installed?')
-
- def __eq__(self, other):
- if not isinstance(other, PostGISAdapter):
- return False
- return (self.ewkb == other.ewkb) and (self.srid == other.srid)
-
- def __str__(self):
- return self.getquoted()
-
- def prepare(self, conn):
- """
- This method allows escaping the binary in the style required by the
- server's `standard_conforming_string` setting.
- """
- self._adapter.prepare(conn)
-
- def getquoted(self):
- "Returns a properly quoted string for use in PostgreSQL/PostGIS."
- # psycopg will figure out whether to use E'\\000' or '\000'
- return str('ST_GeomFromEWKB(%s)' % self._adapter.getquoted().decode())
-
- def prepare_database_save(self, unused):
- return self
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/base.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/base.py
deleted file mode 100644
index 634a7d5..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/base.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from django.db.backends.postgresql_psycopg2.base import *
-from django.db.backends.postgresql_psycopg2.base import DatabaseWrapper as Psycopg2DatabaseWrapper
-from django.contrib.gis.db.backends.postgis.creation import PostGISCreation
-from django.contrib.gis.db.backends.postgis.introspection import PostGISIntrospection
-from django.contrib.gis.db.backends.postgis.operations import PostGISOperations
-
-class DatabaseWrapper(Psycopg2DatabaseWrapper):
- def __init__(self, *args, **kwargs):
- super(DatabaseWrapper, self).__init__(*args, **kwargs)
- self.creation = PostGISCreation(self)
- self.ops = PostGISOperations(self)
- self.introspection = PostGISIntrospection(self)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/creation.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/creation.py
deleted file mode 100644
index 4f64ecc..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/creation.py
+++ /dev/null
@@ -1,95 +0,0 @@
-from django.conf import settings
-from django.db.backends.postgresql_psycopg2.creation import DatabaseCreation
-from django.utils.functional import cached_property
-
-
-class PostGISCreation(DatabaseCreation):
- geom_index_type = 'GIST'
- geom_index_ops = 'GIST_GEOMETRY_OPS'
- geom_index_ops_nd = 'GIST_GEOMETRY_OPS_ND'
-
- @cached_property
- def template_postgis(self):
- template_postgis = getattr(settings, 'POSTGIS_TEMPLATE', 'template_postgis')
- cursor = self.connection.cursor()
- cursor.execute('SELECT 1 FROM pg_database WHERE datname = %s LIMIT 1;', (template_postgis,))
- if cursor.fetchone():
- return template_postgis
- return None
-
- def sql_indexes_for_field(self, model, f, style):
- "Return any spatial index creation SQL for the field."
- from django.contrib.gis.db.models.fields import GeometryField
-
- output = super(PostGISCreation, self).sql_indexes_for_field(model, f, style)
-
- if isinstance(f, GeometryField):
- gqn = self.connection.ops.geo_quote_name
- qn = self.connection.ops.quote_name
- db_table = model._meta.db_table
-
- if f.geography or self.connection.ops.geometry:
- # Geography and Geometry (PostGIS 2.0+) columns are
- # created normally.
- pass
- else:
- # Geometry columns are created by `AddGeometryColumn`
- # stored procedure.
- output.append(style.SQL_KEYWORD('SELECT ') +
- style.SQL_TABLE('AddGeometryColumn') + '(' +
- style.SQL_TABLE(gqn(db_table)) + ', ' +
- style.SQL_FIELD(gqn(f.column)) + ', ' +
- style.SQL_FIELD(str(f.srid)) + ', ' +
- style.SQL_COLTYPE(gqn(f.geom_type)) + ', ' +
- style.SQL_KEYWORD(str(f.dim)) + ');')
-
- if not f.null:
- # Add a NOT NULL constraint to the field
- output.append(style.SQL_KEYWORD('ALTER TABLE ') +
- style.SQL_TABLE(qn(db_table)) +
- style.SQL_KEYWORD(' ALTER ') +
- style.SQL_FIELD(qn(f.column)) +
- style.SQL_KEYWORD(' SET NOT NULL') + ';')
-
- if f.spatial_index:
- # Spatial indexes created the same way for both Geometry and
- # Geography columns.
- # PostGIS 2.0 does not support GIST_GEOMETRY_OPS. So, on 1.5
- # we use GIST_GEOMETRY_OPS, on 2.0 we use either "nd" ops
- # which are fast on multidimensional cases, or just plain
- # gist index for the 2d case.
- if f.geography:
- index_ops = ''
- elif self.connection.ops.geometry:
- if f.dim > 2:
- index_ops = ' ' + style.SQL_KEYWORD(self.geom_index_ops_nd)
- else:
- index_ops = ''
- else:
- index_ops = ' ' + style.SQL_KEYWORD(self.geom_index_ops)
- output.append(style.SQL_KEYWORD('CREATE INDEX ') +
- style.SQL_TABLE(qn('%s_%s_id' % (db_table, f.column))) +
- style.SQL_KEYWORD(' ON ') +
- style.SQL_TABLE(qn(db_table)) +
- style.SQL_KEYWORD(' USING ') +
- style.SQL_COLTYPE(self.geom_index_type) + ' ( ' +
- style.SQL_FIELD(qn(f.column)) + index_ops + ' );')
- return output
-
- def sql_table_creation_suffix(self):
- if self.template_postgis is not None:
- return ' TEMPLATE %s' % (
- self.connection.ops.quote_name(self.template_postgis),)
- return ''
-
- def _create_test_db(self, verbosity, autoclobber):
- test_database_name = super(PostGISCreation, self)._create_test_db(verbosity, autoclobber)
- if self.template_postgis is None:
- # Connect to the test database in order to create the postgis extension
- self.connection.close()
- self.connection.settings_dict["NAME"] = test_database_name
- cursor = self.connection.cursor()
- cursor.execute("CREATE EXTENSION postgis")
- cursor.connection.commit()
-
- return test_database_name
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/introspection.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/introspection.py
deleted file mode 100644
index 7df09d0..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/introspection.py
+++ /dev/null
@@ -1,103 +0,0 @@
-from django.db.backends.postgresql_psycopg2.introspection import DatabaseIntrospection
-from django.contrib.gis.gdal import OGRGeomType
-
-class GeoIntrospectionError(Exception):
- pass
-
-class PostGISIntrospection(DatabaseIntrospection):
- # Reverse dictionary for PostGIS geometry types not populated until
- # introspection is actually performed.
- postgis_types_reverse = {}
-
- ignored_tables = DatabaseIntrospection.ignored_tables + [
- 'geography_columns',
- 'geometry_columns',
- 'raster_columns',
- 'spatial_ref_sys',
- 'raster_overviews',
- ]
-
- def get_postgis_types(self):
- """
- Returns a dictionary with keys that are the PostgreSQL object
- identification integers for the PostGIS geometry and/or
- geography types (if supported).
- """
- cursor = self.connection.cursor()
- # The OID integers associated with the geometry type may
- # be different across versions; hence, this is why we have
- # to query the PostgreSQL pg_type table corresponding to the
- # PostGIS custom data types.
- oid_sql = 'SELECT "oid" FROM "pg_type" WHERE "typname" = %s'
- try:
- cursor.execute(oid_sql, ('geometry',))
- GEOM_TYPE = cursor.fetchone()[0]
- postgis_types = { GEOM_TYPE : 'GeometryField' }
- if self.connection.ops.geography:
- cursor.execute(oid_sql, ('geography',))
- GEOG_TYPE = cursor.fetchone()[0]
- # The value for the geography type is actually a tuple
- # to pass in the `geography=True` keyword to the field
- # definition.
- postgis_types[GEOG_TYPE] = ('GeometryField', {'geography' : True})
- finally:
- cursor.close()
-
- return postgis_types
-
- def get_field_type(self, data_type, description):
- if not self.postgis_types_reverse:
- # If the PostGIS types reverse dictionary is not populated, do so
- # now. In order to prevent unnecessary requests upon connection
- # intialization, the `data_types_reverse` dictionary is not updated
- # with the PostGIS custom types until introspection is actually
- # performed -- in other words, when this function is called.
- self.postgis_types_reverse = self.get_postgis_types()
- self.data_types_reverse.update(self.postgis_types_reverse)
- return super(PostGISIntrospection, self).get_field_type(data_type, description)
-
- def get_geometry_type(self, table_name, geo_col):
- """
- The geometry type OID used by PostGIS does not indicate the particular
- type of field that a geometry column is (e.g., whether it's a
- PointField or a PolygonField). Thus, this routine queries the PostGIS
- metadata tables to determine the geometry type,
- """
- cursor = self.connection.cursor()
- try:
- try:
- # First seeing if this geometry column is in the `geometry_columns`
- cursor.execute('SELECT "coord_dimension", "srid", "type" '
- 'FROM "geometry_columns" '
- 'WHERE "f_table_name"=%s AND "f_geometry_column"=%s',
- (table_name, geo_col))
- row = cursor.fetchone()
- if not row: raise GeoIntrospectionError
- except GeoIntrospectionError:
- if self.connection.ops.geography:
- cursor.execute('SELECT "coord_dimension", "srid", "type" '
- 'FROM "geography_columns" '
- 'WHERE "f_table_name"=%s AND "f_geography_column"=%s',
- (table_name, geo_col))
- row = cursor.fetchone()
-
- if not row:
- raise Exception('Could not find a geometry or geography column for "%s"."%s"' %
- (table_name, geo_col))
-
- # OGRGeomType does not require GDAL and makes it easy to convert
- # from OGC geom type name to Django field.
- field_type = OGRGeomType(row[2]).django
-
- # Getting any GeometryField keyword arguments that are not the default.
- dim = row[0]
- srid = row[1]
- field_params = {}
- if srid != 4326:
- field_params['srid'] = srid
- if dim != 2:
- field_params['dim'] = dim
- finally:
- cursor.close()
-
- return field_type, field_params
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/models.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/models.py
deleted file mode 100644
index e805259..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/models.py
+++ /dev/null
@@ -1,68 +0,0 @@
-"""
- The GeometryColumns and SpatialRefSys models for the PostGIS backend.
-"""
-from django.db import models
-from django.contrib.gis.db.backends.base import SpatialRefSysMixin
-from django.utils.encoding import python_2_unicode_compatible
-
-@python_2_unicode_compatible
-class GeometryColumns(models.Model):
- """
- The 'geometry_columns' table from the PostGIS. See the PostGIS
- documentation at Ch. 4.2.2.
- """
- f_table_catalog = models.CharField(max_length=256)
- f_table_schema = models.CharField(max_length=256)
- f_table_name = models.CharField(max_length=256)
- f_geometry_column = models.CharField(max_length=256)
- coord_dimension = models.IntegerField()
- srid = models.IntegerField(primary_key=True)
- type = models.CharField(max_length=30)
-
- class Meta:
- db_table = 'geometry_columns'
- managed = False
-
- @classmethod
- def table_name_col(cls):
- """
- Returns the name of the metadata column used to store the
- the feature table name.
- """
- return 'f_table_name'
-
- @classmethod
- def geom_col_name(cls):
- """
- Returns the name of the metadata column used to store the
- the feature geometry column.
- """
- return 'f_geometry_column'
-
- def __str__(self):
- return "%s.%s - %dD %s field (SRID: %d)" % \
- (self.f_table_name, self.f_geometry_column,
- self.coord_dimension, self.type, self.srid)
-
-class SpatialRefSys(models.Model, SpatialRefSysMixin):
- """
- The 'spatial_ref_sys' table from PostGIS. See the PostGIS
- documentaiton at Ch. 4.2.1.
- """
- srid = models.IntegerField(primary_key=True)
- auth_name = models.CharField(max_length=256)
- auth_srid = models.IntegerField()
- srtext = models.CharField(max_length=2048)
- proj4text = models.CharField(max_length=2048)
-
- class Meta:
- db_table = 'spatial_ref_sys'
- managed = False
-
- @property
- def wkt(self):
- return self.srtext
-
- @classmethod
- def wkt_col(cls):
- return 'srtext'
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/operations.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/operations.py
deleted file mode 100644
index 84dbda3..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/postgis/operations.py
+++ /dev/null
@@ -1,569 +0,0 @@
-import re
-from decimal import Decimal
-
-from django.conf import settings
-from django.contrib.gis.db.backends.base import BaseSpatialOperations
-from django.contrib.gis.db.backends.util import SpatialOperation, SpatialFunction
-from django.contrib.gis.db.backends.postgis.adapter import PostGISAdapter
-from django.contrib.gis.geometry.backend import Geometry
-from django.contrib.gis.measure import Distance
-from django.core.exceptions import ImproperlyConfigured
-from django.db.backends.postgresql_psycopg2.base import DatabaseOperations
-from django.db.utils import DatabaseError
-from django.utils import six
-from django.utils.functional import cached_property
-
-from .models import GeometryColumns, SpatialRefSys
-
-
-#### Classes used in constructing PostGIS spatial SQL ####
-class PostGISOperator(SpatialOperation):
- "For PostGIS operators (e.g. `&&`, `~`)."
- def __init__(self, operator):
- super(PostGISOperator, self).__init__(operator=operator)
-
-class PostGISFunction(SpatialFunction):
- "For PostGIS function calls (e.g., `ST_Contains(table, geom)`)."
- def __init__(self, prefix, function, **kwargs):
- super(PostGISFunction, self).__init__(prefix + function, **kwargs)
-
-class PostGISFunctionParam(PostGISFunction):
- "For PostGIS functions that take another parameter (e.g. DWithin, Relate)."
- sql_template = '%(function)s(%(geo_col)s, %(geometry)s, %%s)'
-
-class PostGISDistance(PostGISFunction):
- "For PostGIS distance operations."
- dist_func = 'Distance'
- sql_template = '%(function)s(%(geo_col)s, %(geometry)s) %(operator)s %%s'
-
- def __init__(self, prefix, operator):
- super(PostGISDistance, self).__init__(prefix, self.dist_func,
- operator=operator)
-
-class PostGISSpheroidDistance(PostGISFunction):
- "For PostGIS spherical distance operations (using the spheroid)."
- dist_func = 'distance_spheroid'
- sql_template = '%(function)s(%(geo_col)s, %(geometry)s, %%s) %(operator)s %%s'
- def __init__(self, prefix, operator):
- # An extra parameter in `end_subst` is needed for the spheroid string.
- super(PostGISSpheroidDistance, self).__init__(prefix, self.dist_func,
- operator=operator)
-
-class PostGISSphereDistance(PostGISDistance):
- "For PostGIS spherical distance operations."
- dist_func = 'distance_sphere'
-
-class PostGISRelate(PostGISFunctionParam):
- "For PostGIS Relate(<geom>, <pattern>) calls."
- pattern_regex = re.compile(r'^[012TF\*]{9}$')
- def __init__(self, prefix, pattern):
- if not self.pattern_regex.match(pattern):
- raise ValueError('Invalid intersection matrix pattern "%s".' % pattern)
- super(PostGISRelate, self).__init__(prefix, 'Relate')
-
-
-class PostGISOperations(DatabaseOperations, BaseSpatialOperations):
- compiler_module = 'django.contrib.gis.db.models.sql.compiler'
- name = 'postgis'
- postgis = True
- geom_func_prefix = 'ST_'
- version_regex = re.compile(r'^(?P<major>\d)\.(?P<minor1>\d)\.(?P<minor2>\d+)')
- valid_aggregates = dict([(k, None) for k in
- ('Collect', 'Extent', 'Extent3D', 'MakeLine', 'Union')])
-
- Adapter = PostGISAdapter
- Adaptor = Adapter # Backwards-compatibility alias.
-
- def __init__(self, connection):
- super(PostGISOperations, self).__init__(connection)
-
- prefix = self.geom_func_prefix
- # PostGIS-specific operators. The commented descriptions of these
- # operators come from Section 7.6 of the PostGIS 1.4 documentation.
- self.geometry_operators = {
- # The "&<" operator returns true if A's bounding box overlaps or
- # is to the left of B's bounding box.
- 'overlaps_left' : PostGISOperator('&<'),
- # The "&>" operator returns true if A's bounding box overlaps or
- # is to the right of B's bounding box.
- 'overlaps_right' : PostGISOperator('&>'),
- # The "<<" operator returns true if A's bounding box is strictly
- # to the left of B's bounding box.
- 'left' : PostGISOperator('<<'),
- # The ">>" operator returns true if A's bounding box is strictly
- # to the right of B's bounding box.
- 'right' : PostGISOperator('>>'),
- # The "&<|" operator returns true if A's bounding box overlaps or
- # is below B's bounding box.
- 'overlaps_below' : PostGISOperator('&<|'),
- # The "|&>" operator returns true if A's bounding box overlaps or
- # is above B's bounding box.
- 'overlaps_above' : PostGISOperator('|&>'),
- # The "<<|" operator returns true if A's bounding box is strictly
- # below B's bounding box.
- 'strictly_below' : PostGISOperator('<<|'),
- # The "|>>" operator returns true if A's bounding box is strictly
- # above B's bounding box.
- 'strictly_above' : PostGISOperator('|>>'),
- # The "~=" operator is the "same as" operator. It tests actual
- # geometric equality of two features. So if A and B are the same feature,
- # vertex-by-vertex, the operator returns true.
- 'same_as' : PostGISOperator('~='),
- 'exact' : PostGISOperator('~='),
- # The "@" operator returns true if A's bounding box is completely contained
- # by B's bounding box.
- 'contained' : PostGISOperator('@'),
- # The "~" operator returns true if A's bounding box completely contains
- # by B's bounding box.
- 'bbcontains' : PostGISOperator('~'),
- # The "&&" operator returns true if A's bounding box overlaps
- # B's bounding box.
- 'bboverlaps' : PostGISOperator('&&'),
- }
-
- self.geometry_functions = {
- 'equals' : PostGISFunction(prefix, 'Equals'),
- 'disjoint' : PostGISFunction(prefix, 'Disjoint'),
- 'touches' : PostGISFunction(prefix, 'Touches'),
- 'crosses' : PostGISFunction(prefix, 'Crosses'),
- 'within' : PostGISFunction(prefix, 'Within'),
- 'overlaps' : PostGISFunction(prefix, 'Overlaps'),
- 'contains' : PostGISFunction(prefix, 'Contains'),
- 'intersects' : PostGISFunction(prefix, 'Intersects'),
- 'relate' : (PostGISRelate, six.string_types),
- 'coveredby' : PostGISFunction(prefix, 'CoveredBy'),
- 'covers' : PostGISFunction(prefix, 'Covers'),
- }
-
- # Valid distance types and substitutions
- dtypes = (Decimal, Distance, float) + six.integer_types
- def get_dist_ops(operator):
- "Returns operations for both regular and spherical distances."
- return {'cartesian' : PostGISDistance(prefix, operator),
- 'sphere' : PostGISSphereDistance(prefix, operator),
- 'spheroid' : PostGISSpheroidDistance(prefix, operator),
- }
- self.distance_functions = {
- 'distance_gt' : (get_dist_ops('>'), dtypes),
- 'distance_gte' : (get_dist_ops('>='), dtypes),
- 'distance_lt' : (get_dist_ops('<'), dtypes),
- 'distance_lte' : (get_dist_ops('<='), dtypes),
- 'dwithin' : (PostGISFunctionParam(prefix, 'DWithin'), dtypes)
- }
-
- # Adding the distance functions to the geometries lookup.
- self.geometry_functions.update(self.distance_functions)
-
- # Only PostGIS versions 1.3.4+ have GeoJSON serialization support.
- if self.spatial_version < (1, 3, 4):
- GEOJSON = False
- else:
- GEOJSON = prefix + 'AsGeoJson'
-
- # ST_ContainsProperly ST_MakeLine, and ST_GeoHash added in 1.4.
- if self.spatial_version >= (1, 4, 0):
- GEOHASH = 'ST_GeoHash'
- BOUNDINGCIRCLE = 'ST_MinimumBoundingCircle'
- self.geometry_functions['contains_properly'] = PostGISFunction(prefix, 'ContainsProperly')
- else:
- GEOHASH, BOUNDINGCIRCLE = False, False
-
- # Geography type support added in 1.5.
- if self.spatial_version >= (1, 5, 0):
- self.geography = True
- # Only a subset of the operators and functions are available
- # for the geography type.
- self.geography_functions = self.distance_functions.copy()
- self.geography_functions.update({
- 'coveredby': self.geometry_functions['coveredby'],
- 'covers': self.geometry_functions['covers'],
- 'intersects': self.geometry_functions['intersects'],
- })
- self.geography_operators = {
- 'bboverlaps': PostGISOperator('&&'),
- }
-
- # Native geometry type support added in PostGIS 2.0.
- if self.spatial_version >= (2, 0, 0):
- self.geometry = True
-
- # Creating a dictionary lookup of all GIS terms for PostGIS.
- self.gis_terms = set(['isnull'])
- self.gis_terms.update(self.geometry_operators)
- self.gis_terms.update(self.geometry_functions)
-
- self.area = prefix + 'Area'
- self.bounding_circle = BOUNDINGCIRCLE
- self.centroid = prefix + 'Centroid'
- self.collect = prefix + 'Collect'
- self.difference = prefix + 'Difference'
- self.distance = prefix + 'Distance'
- self.distance_sphere = prefix + 'distance_sphere'
- self.distance_spheroid = prefix + 'distance_spheroid'
- self.envelope = prefix + 'Envelope'
- self.extent = prefix + 'Extent'
- self.force_rhr = prefix + 'ForceRHR'
- self.geohash = GEOHASH
- self.geojson = GEOJSON
- self.gml = prefix + 'AsGML'
- self.intersection = prefix + 'Intersection'
- self.kml = prefix + 'AsKML'
- self.length = prefix + 'Length'
- self.length_spheroid = prefix + 'length_spheroid'
- self.makeline = prefix + 'MakeLine'
- self.mem_size = prefix + 'mem_size'
- self.num_geom = prefix + 'NumGeometries'
- self.num_points = prefix + 'npoints'
- self.perimeter = prefix + 'Perimeter'
- self.point_on_surface = prefix + 'PointOnSurface'
- self.polygonize = prefix + 'Polygonize'
- self.reverse = prefix + 'Reverse'
- self.scale = prefix + 'Scale'
- self.snap_to_grid = prefix + 'SnapToGrid'
- self.svg = prefix + 'AsSVG'
- self.sym_difference = prefix + 'SymDifference'
- self.transform = prefix + 'Transform'
- self.translate = prefix + 'Translate'
- self.union = prefix + 'Union'
- self.unionagg = prefix + 'Union'
-
- if self.spatial_version >= (2, 0, 0):
- self.extent3d = prefix + '3DExtent'
- self.length3d = prefix + '3DLength'
- self.perimeter3d = prefix + '3DPerimeter'
- else:
- self.extent3d = prefix + 'Extent3D'
- self.length3d = prefix + 'Length3D'
- self.perimeter3d = prefix + 'Perimeter3D'
-
- @cached_property
- def spatial_version(self):
- """Determine the version of the PostGIS library."""
- # Trying to get the PostGIS version because the function
- # signatures will depend on the version used. The cost
- # here is a database query to determine the version, which
- # can be mitigated by setting `POSTGIS_VERSION` with a 3-tuple
- # comprising user-supplied values for the major, minor, and
- # subminor revision of PostGIS.
- if hasattr(settings, 'POSTGIS_VERSION'):
- version = settings.POSTGIS_VERSION
- else:
- try:
- vtup = self.postgis_version_tuple()
- except DatabaseError:
- raise ImproperlyConfigured(
- 'Cannot determine PostGIS version for database "%s". '
- 'GeoDjango requires at least PostGIS version 1.3. '
- 'Was the database created from a spatial database '
- 'template?' % self.connection.settings_dict['NAME']
- )
- version = vtup[1:]
- return version
-
- def check_aggregate_support(self, aggregate):
- """
- Checks if the given aggregate name is supported (that is, if it's
- in `self.valid_aggregates`).
- """
- agg_name = aggregate.__class__.__name__
- return agg_name in self.valid_aggregates
-
- def convert_extent(self, box):
- """
- Returns a 4-tuple extent for the `Extent` aggregate by converting
- the bounding box text returned by PostGIS (`box` argument), for
- example: "BOX(-90.0 30.0, -85.0 40.0)".
- """
- ll, ur = box[4:-1].split(',')
- xmin, ymin = map(float, ll.split())
- xmax, ymax = map(float, ur.split())
- return (xmin, ymin, xmax, ymax)
-
- def convert_extent3d(self, box3d):
- """
- Returns a 6-tuple extent for the `Extent3D` aggregate by converting
- the 3d bounding-box text returnded by PostGIS (`box3d` argument), for
- example: "BOX3D(-90.0 30.0 1, -85.0 40.0 2)".
- """
- ll, ur = box3d[6:-1].split(',')
- xmin, ymin, zmin = map(float, ll.split())
- xmax, ymax, zmax = map(float, ur.split())
- return (xmin, ymin, zmin, xmax, ymax, zmax)
-
- def convert_geom(self, hex, geo_field):
- """
- Converts the geometry returned from PostGIS aggretates.
- """
- if hex:
- return Geometry(hex)
- else:
- return None
-
- def geo_db_type(self, f):
- """
- Return the database field type for the given geometry field.
- Typically this is `None` because geometry columns are added via
- the `AddGeometryColumn` stored procedure, unless the field
- has been specified to be of geography type instead.
- """
- if f.geography:
- if not self.geography:
- raise NotImplementedError('PostGIS 1.5 required for geography column support.')
-
- if f.srid != 4326:
- raise NotImplementedError('PostGIS 1.5 supports geography columns '
- 'only with an SRID of 4326.')
-
- return 'geography(%s,%d)' % (f.geom_type, f.srid)
- elif self.geometry:
- # Postgis 2.0 supports type-based geometries.
- # TODO: Support 'M' extension.
- if f.dim == 3:
- geom_type = f.geom_type + 'Z'
- else:
- geom_type = f.geom_type
- return 'geometry(%s,%d)' % (geom_type, f.srid)
- else:
- return None
-
- def get_distance(self, f, dist_val, lookup_type):
- """
- Retrieve the distance parameters for the given geometry field,
- distance lookup value, and the distance lookup type.
-
- This is the most complex implementation of the spatial backends due to
- what is supported on geodetic geometry columns vs. what's available on
- projected geometry columns. In addition, it has to take into account
- the newly introduced geography column type introudced in PostGIS 1.5.
- """
- # Getting the distance parameter and any options.
- if len(dist_val) == 1:
- value, option = dist_val[0], None
- else:
- value, option = dist_val
-
- # Shorthand boolean flags.
- geodetic = f.geodetic(self.connection)
- geography = f.geography and self.geography
-
- if isinstance(value, Distance):
- if geography:
- dist_param = value.m
- elif geodetic:
- if lookup_type == 'dwithin':
- raise ValueError('Only numeric values of degree units are '
- 'allowed on geographic DWithin queries.')
- dist_param = value.m
- else:
- dist_param = getattr(value, Distance.unit_attname(f.units_name(self.connection)))
- else:
- # Assuming the distance is in the units of the field.
- dist_param = value
-
- if (not geography and geodetic and lookup_type != 'dwithin'
- and option == 'spheroid'):
- # using distance_spheroid requires the spheroid of the field as
- # a parameter.
- return [f._spheroid, dist_param]
- else:
- return [dist_param]
-
- def get_geom_placeholder(self, f, value):
- """
- Provides a proper substitution value for Geometries that are not in the
- SRID of the field. Specifically, this routine will substitute in the
- ST_Transform() function call.
- """
- if value is None or value.srid == f.srid:
- placeholder = '%s'
- else:
- # Adding Transform() to the SQL placeholder.
- placeholder = '%s(%%s, %s)' % (self.transform, f.srid)
-
- if hasattr(value, 'expression'):
- # If this is an F expression, then we don't really want
- # a placeholder and instead substitute in the column
- # of the expression.
- placeholder = placeholder % self.get_expression_column(value)
-
- return placeholder
-
- def _get_postgis_func(self, func):
- """
- Helper routine for calling PostGIS functions and returning their result.
- """
- # Close out the connection. See #9437.
- with self.connection.temporary_connection() as cursor:
- cursor.execute('SELECT %s()' % func)
- return cursor.fetchone()[0]
-
- def postgis_geos_version(self):
- "Returns the version of the GEOS library used with PostGIS."
- return self._get_postgis_func('postgis_geos_version')
-
- def postgis_lib_version(self):
- "Returns the version number of the PostGIS library used with PostgreSQL."
- return self._get_postgis_func('postgis_lib_version')
-
- def postgis_proj_version(self):
- "Returns the version of the PROJ.4 library used with PostGIS."
- return self._get_postgis_func('postgis_proj_version')
-
- def postgis_version(self):
- "Returns PostGIS version number and compile-time options."
- return self._get_postgis_func('postgis_version')
-
- def postgis_full_version(self):
- "Returns PostGIS version number and compile-time options."
- return self._get_postgis_func('postgis_full_version')
-
- def postgis_version_tuple(self):
- """
- Returns the PostGIS version as a tuple (version string, major,
- minor, subminor).
- """
- # Getting the PostGIS version
- version = self.postgis_lib_version()
- m = self.version_regex.match(version)
-
- if m:
- major = int(m.group('major'))
- minor1 = int(m.group('minor1'))
- minor2 = int(m.group('minor2'))
- else:
- raise Exception('Could not parse PostGIS version string: %s' % version)
-
- return (version, major, minor1, minor2)
-
- def proj_version_tuple(self):
- """
- Return the version of PROJ.4 used by PostGIS as a tuple of the
- major, minor, and subminor release numbers.
- """
- proj_regex = re.compile(r'(\d+)\.(\d+)\.(\d+)')
- proj_ver_str = self.postgis_proj_version()
- m = proj_regex.search(proj_ver_str)
- if m:
- return tuple(map(int, [m.group(1), m.group(2), m.group(3)]))
- else:
- raise Exception('Could not determine PROJ.4 version from PostGIS.')
-
- def num_params(self, lookup_type, num_param):
- """
- Helper routine that returns a boolean indicating whether the number of
- parameters is correct for the lookup type.
- """
- def exactly_two(np): return np == 2
- def two_to_three(np): return np >= 2 and np <=3
- if (lookup_type in self.distance_functions and
- lookup_type != 'dwithin'):
- return two_to_three(num_param)
- else:
- return exactly_two(num_param)
-
- def spatial_lookup_sql(self, lvalue, lookup_type, value, field, qn):
- """
- Constructs spatial SQL from the given lookup value tuple a
- (alias, col, db_type), the lookup type string, lookup value, and
- the geometry field.
- """
- alias, col, db_type = lvalue
-
- # Getting the quoted geometry column.
- geo_col = '%s.%s' % (qn(alias), qn(col))
-
- if lookup_type in self.geometry_operators:
- if field.geography and not lookup_type in self.geography_operators:
- raise ValueError('PostGIS geography does not support the '
- '"%s" lookup.' % lookup_type)
- # Handling a PostGIS operator.
- op = self.geometry_operators[lookup_type]
- return op.as_sql(geo_col, self.get_geom_placeholder(field, value))
- elif lookup_type in self.geometry_functions:
- if field.geography and not lookup_type in self.geography_functions:
- raise ValueError('PostGIS geography type does not support the '
- '"%s" lookup.' % lookup_type)
-
- # See if a PostGIS geometry function matches the lookup type.
- tmp = self.geometry_functions[lookup_type]
-
- # Lookup types that are tuples take tuple arguments, e.g., 'relate' and
- # distance lookups.
- if isinstance(tmp, tuple):
- # First element of tuple is the PostGISOperation instance, and the
- # second element is either the type or a tuple of acceptable types
- # that may passed in as further parameters for the lookup type.
- op, arg_type = tmp
-
- # Ensuring that a tuple _value_ was passed in from the user
- if not isinstance(value, (tuple, list)):
- raise ValueError('Tuple required for `%s` lookup type.' % lookup_type)
-
- # Geometry is first element of lookup tuple.
- geom = value[0]
-
- # Number of valid tuple parameters depends on the lookup type.
- nparams = len(value)
- if not self.num_params(lookup_type, nparams):
- raise ValueError('Incorrect number of parameters given for `%s` lookup type.' % lookup_type)
-
- # Ensuring the argument type matches what we expect.
- if not isinstance(value[1], arg_type):
- raise ValueError('Argument type should be %s, got %s instead.' % (arg_type, type(value[1])))
-
- # For lookup type `relate`, the op instance is not yet created (has
- # to be instantiated here to check the pattern parameter).
- if lookup_type == 'relate':
- op = op(self.geom_func_prefix, value[1])
- elif lookup_type in self.distance_functions and lookup_type != 'dwithin':
- if not field.geography and field.geodetic(self.connection):
- # Geodetic distances are only available from Points to
- # PointFields on PostGIS 1.4 and below.
- if not self.connection.ops.geography:
- if field.geom_type != 'POINT':
- raise ValueError('PostGIS spherical operations are only valid on PointFields.')
-
- if str(geom.geom_type) != 'Point':
- raise ValueError('PostGIS geometry distance parameter is required to be of type Point.')
-
- # Setting up the geodetic operation appropriately.
- if nparams == 3 and value[2] == 'spheroid':
- op = op['spheroid']
- else:
- op = op['sphere']
- else:
- op = op['cartesian']
- else:
- op = tmp
- geom = value
-
- # Calling the `as_sql` function on the operation instance.
- return op.as_sql(geo_col, self.get_geom_placeholder(field, geom))
-
- elif lookup_type == 'isnull':
- # Handling 'isnull' lookup type
- return "%s IS %sNULL" % (geo_col, ('' if value else 'NOT ')), []
-
- raise TypeError("Got invalid lookup_type: %s" % repr(lookup_type))
-
- def spatial_aggregate_sql(self, agg):
- """
- Returns the spatial aggregate SQL template and function for the
- given Aggregate instance.
- """
- agg_name = agg.__class__.__name__
- if not self.check_aggregate_support(agg):
- raise NotImplementedError('%s spatial aggregate is not implmented for this backend.' % agg_name)
- agg_name = agg_name.lower()
- if agg_name == 'union':
- agg_name += 'agg'
- sql_template = '%(function)s(%(field)s)'
- sql_function = getattr(self, agg_name)
- return sql_template, sql_function
-
- # Routines for getting the OGC-compliant models.
- def geometry_columns(self):
- return GeometryColumns
-
- def spatial_ref_sys(self):
- return SpatialRefSys
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/adapter.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/adapter.py
deleted file mode 100644
index d8fefba..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/adapter.py
+++ /dev/null
@@ -1,8 +0,0 @@
-from django.db.backends.sqlite3.base import Database
-from django.contrib.gis.db.backends.adapter import WKTAdapter
-
-class SpatiaLiteAdapter(WKTAdapter):
- "SQLite adaptor for geometry objects."
- def __conform__(self, protocol):
- if protocol is Database.PrepareProtocol:
- return str(self)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/base.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/base.py
deleted file mode 100644
index 7b49d71..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/base.py
+++ /dev/null
@@ -1,60 +0,0 @@
-import sys
-from ctypes.util import find_library
-from django.conf import settings
-
-from django.core.exceptions import ImproperlyConfigured
-from django.db.backends.sqlite3.base import (Database,
- DatabaseWrapper as SQLiteDatabaseWrapper, SQLiteCursorWrapper)
-from django.contrib.gis.db.backends.spatialite.client import SpatiaLiteClient
-from django.contrib.gis.db.backends.spatialite.creation import SpatiaLiteCreation
-from django.contrib.gis.db.backends.spatialite.introspection import SpatiaLiteIntrospection
-from django.contrib.gis.db.backends.spatialite.operations import SpatiaLiteOperations
-from django.utils import six
-
-class DatabaseWrapper(SQLiteDatabaseWrapper):
- def __init__(self, *args, **kwargs):
- # Before we get too far, make sure pysqlite 2.5+ is installed.
- if Database.version_info < (2, 5, 0):
- raise ImproperlyConfigured('Only versions of pysqlite 2.5+ are '
- 'compatible with SpatiaLite and GeoDjango.')
-
- # Trying to find the location of the SpatiaLite library.
- # Here we are figuring out the path to the SpatiaLite library
- # (`libspatialite`). If it's not in the system library path (e.g., it
- # cannot be found by `ctypes.util.find_library`), then it may be set
- # manually in the settings via the `SPATIALITE_LIBRARY_PATH` setting.
- self.spatialite_lib = getattr(settings, 'SPATIALITE_LIBRARY_PATH',
- find_library('spatialite'))
- if not self.spatialite_lib:
- raise ImproperlyConfigured('Unable to locate the SpatiaLite library. '
- 'Make sure it is in your library path, or set '
- 'SPATIALITE_LIBRARY_PATH in your settings.'
- )
- super(DatabaseWrapper, self).__init__(*args, **kwargs)
- self.ops = SpatiaLiteOperations(self)
- self.client = SpatiaLiteClient(self)
- self.creation = SpatiaLiteCreation(self)
- self.introspection = SpatiaLiteIntrospection(self)
-
- def get_new_connection(self, conn_params):
- conn = super(DatabaseWrapper, self).get_new_connection(conn_params)
- # Enabling extension loading on the SQLite connection.
- try:
- conn.enable_load_extension(True)
- except AttributeError:
- raise ImproperlyConfigured(
- 'The pysqlite library does not support C extension loading. '
- 'Both SQLite and pysqlite must be configured to allow '
- 'the loading of extensions to use SpatiaLite.')
- # Loading the SpatiaLite library extension on the connection, and returning
- # the created cursor.
- cur = conn.cursor(factory=SQLiteCursorWrapper)
- try:
- cur.execute("SELECT load_extension(%s)", (self.spatialite_lib,))
- except Exception as msg:
- new_msg = (
- 'Unable to load the SpatiaLite library extension '
- '"%s" because: %s') % (self.spatialite_lib, msg)
- six.reraise(ImproperlyConfigured, ImproperlyConfigured(new_msg), sys.exc_info()[2])
- cur.close()
- return conn
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/client.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/client.py
deleted file mode 100644
index 536065a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/client.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from django.db.backends.sqlite3.client import DatabaseClient
-
-class SpatiaLiteClient(DatabaseClient):
- executable_name = 'spatialite'
-
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/creation.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/creation.py
deleted file mode 100644
index d0a5f82..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/creation.py
+++ /dev/null
@@ -1,129 +0,0 @@
-import os
-from django.conf import settings
-from django.core.cache import get_cache
-from django.core.cache.backends.db import BaseDatabaseCache
-from django.core.exceptions import ImproperlyConfigured
-from django.db.backends.sqlite3.creation import DatabaseCreation
-
-class SpatiaLiteCreation(DatabaseCreation):
-
- def create_test_db(self, verbosity=1, autoclobber=False):
- """
- Creates a test database, prompting the user for confirmation if the
- database already exists. Returns the name of the test database created.
-
- This method is overloaded to load up the SpatiaLite initialization
- SQL prior to calling the `syncdb` command.
- """
- # Don't import django.core.management if it isn't needed.
- from django.core.management import call_command
-
- test_database_name = self._get_test_db_name()
-
- if verbosity >= 1:
- test_db_repr = ''
- if verbosity >= 2:
- test_db_repr = " ('%s')" % test_database_name
- print("Creating test database for alias '%s'%s..." % (self.connection.alias, test_db_repr))
-
- self._create_test_db(verbosity, autoclobber)
-
- self.connection.close()
- self.connection.settings_dict["NAME"] = test_database_name
-
- # Need to load the SpatiaLite initialization SQL before running `syncdb`.
- self.load_spatialite_sql()
-
- # Report syncdb messages at one level lower than that requested.
- # This ensures we don't get flooded with messages during testing
- # (unless you really ask to be flooded)
- call_command('syncdb',
- verbosity=max(verbosity - 1, 0),
- interactive=False,
- database=self.connection.alias,
- load_initial_data=False)
-
- # We need to then do a flush to ensure that any data installed by
- # custom SQL has been removed. The only test data should come from
- # test fixtures, or autogenerated from post_syncdb triggers.
- # This has the side effect of loading initial data (which was
- # intentionally skipped in the syncdb).
- call_command('flush',
- verbosity=max(verbosity - 1, 0),
- interactive=False,
- database=self.connection.alias)
-
- from django.core.cache import get_cache
- from django.core.cache.backends.db import BaseDatabaseCache
- for cache_alias in settings.CACHES:
- cache = get_cache(cache_alias)
- if isinstance(cache, BaseDatabaseCache):
- call_command('createcachetable', cache._table, database=self.connection.alias)
-
- # Get a cursor (even though we don't need one yet). This has
- # the side effect of initializing the test database.
- cursor = self.connection.cursor()
-
- return test_database_name
-
- def sql_indexes_for_field(self, model, f, style):
- "Return any spatial index creation SQL for the field."
- from django.contrib.gis.db.models.fields import GeometryField
-
- output = super(SpatiaLiteCreation, self).sql_indexes_for_field(model, f, style)
-
- if isinstance(f, GeometryField):
- gqn = self.connection.ops.geo_quote_name
- qn = self.connection.ops.quote_name
- db_table = model._meta.db_table
-
- output.append(style.SQL_KEYWORD('SELECT ') +
- style.SQL_TABLE('AddGeometryColumn') + '(' +
- style.SQL_TABLE(gqn(db_table)) + ', ' +
- style.SQL_FIELD(gqn(f.column)) + ', ' +
- style.SQL_FIELD(str(f.srid)) + ', ' +
- style.SQL_COLTYPE(gqn(f.geom_type)) + ', ' +
- style.SQL_KEYWORD(str(f.dim)) + ', ' +
- style.SQL_KEYWORD(str(int(not f.null))) +
- ');')
-
- if f.spatial_index:
- output.append(style.SQL_KEYWORD('SELECT ') +
- style.SQL_TABLE('CreateSpatialIndex') + '(' +
- style.SQL_TABLE(gqn(db_table)) + ', ' +
- style.SQL_FIELD(gqn(f.column)) + ');')
-
- return output
-
- def load_spatialite_sql(self):
- """
- This routine loads up the SpatiaLite SQL file.
- """
- if self.connection.ops.spatial_version[:2] >= (2, 4):
- # Spatialite >= 2.4 -- No need to load any SQL file, calling
- # InitSpatialMetaData() transparently creates the spatial metadata
- # tables
- cur = self.connection._cursor()
- cur.execute("SELECT InitSpatialMetaData()")
- else:
- # Spatialite < 2.4 -- Load the initial SQL
-
- # Getting the location of the SpatiaLite SQL file, and confirming
- # it exists.
- spatialite_sql = self.spatialite_init_file()
- if not os.path.isfile(spatialite_sql):
- raise ImproperlyConfigured('Could not find the required SpatiaLite initialization '
- 'SQL file (necessary for testing): %s' % spatialite_sql)
-
- # Opening up the SpatiaLite SQL initialization file and executing
- # as a script.
- with open(spatialite_sql, 'r') as sql_fh:
- cur = self.connection._cursor()
- cur.executescript(sql_fh.read())
-
- def spatialite_init_file(self):
- # SPATIALITE_SQL may be placed in settings to tell GeoDjango
- # to use a specific path to the SpatiaLite initilization SQL.
- return getattr(settings, 'SPATIALITE_SQL',
- 'init_spatialite-%s.%s.sql' %
- self.connection.ops.spatial_version[:2])
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/introspection.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/introspection.py
deleted file mode 100644
index 4f12ade..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/introspection.py
+++ /dev/null
@@ -1,52 +0,0 @@
-from django.contrib.gis.gdal import OGRGeomType
-from django.db.backends.sqlite3.introspection import DatabaseIntrospection, FlexibleFieldLookupDict
-from django.utils import six
-
-class GeoFlexibleFieldLookupDict(FlexibleFieldLookupDict):
- """
- Sublcass that includes updates the `base_data_types_reverse` dict
- for geometry field types.
- """
- base_data_types_reverse = FlexibleFieldLookupDict.base_data_types_reverse.copy()
- base_data_types_reverse.update(
- {'point' : 'GeometryField',
- 'linestring' : 'GeometryField',
- 'polygon' : 'GeometryField',
- 'multipoint' : 'GeometryField',
- 'multilinestring' : 'GeometryField',
- 'multipolygon' : 'GeometryField',
- 'geometrycollection' : 'GeometryField',
- })
-
-class SpatiaLiteIntrospection(DatabaseIntrospection):
- data_types_reverse = GeoFlexibleFieldLookupDict()
-
- def get_geometry_type(self, table_name, geo_col):
- cursor = self.connection.cursor()
- try:
- # Querying the `geometry_columns` table to get additional metadata.
- cursor.execute('SELECT "coord_dimension", "srid", "type" '
- 'FROM "geometry_columns" '
- 'WHERE "f_table_name"=%s AND "f_geometry_column"=%s',
- (table_name, geo_col))
- row = cursor.fetchone()
- if not row:
- raise Exception('Could not find a geometry column for "%s"."%s"' %
- (table_name, geo_col))
-
- # OGRGeomType does not require GDAL and makes it easy to convert
- # from OGC geom type name to Django field.
- field_type = OGRGeomType(row[2]).django
-
- # Getting any GeometryField keyword arguments that are not the default.
- dim = row[0]
- srid = row[1]
- field_params = {}
- if srid != 4326:
- field_params['srid'] = srid
- if isinstance(dim, six.string_types) and 'Z' in dim:
- field_params['dim'] = 3
- finally:
- cursor.close()
-
- return field_type, field_params
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/models.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/models.py
deleted file mode 100644
index b281f0b..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/models.py
+++ /dev/null
@@ -1,62 +0,0 @@
-"""
- The GeometryColumns and SpatialRefSys models for the SpatiaLite backend.
-"""
-from django.db import models
-from django.contrib.gis.db.backends.base import SpatialRefSysMixin
-from django.utils.encoding import python_2_unicode_compatible
-
-@python_2_unicode_compatible
-class GeometryColumns(models.Model):
- """
- The 'geometry_columns' table from SpatiaLite.
- """
- f_table_name = models.CharField(max_length=256)
- f_geometry_column = models.CharField(max_length=256)
- type = models.CharField(max_length=30)
- coord_dimension = models.IntegerField()
- srid = models.IntegerField(primary_key=True)
- spatial_index_enabled = models.IntegerField()
-
- class Meta:
- db_table = 'geometry_columns'
- managed = False
-
- @classmethod
- def table_name_col(cls):
- """
- Returns the name of the metadata column used to store the
- the feature table name.
- """
- return 'f_table_name'
-
- @classmethod
- def geom_col_name(cls):
- """
- Returns the name of the metadata column used to store the
- the feature geometry column.
- """
- return 'f_geometry_column'
-
- def __str__(self):
- return "%s.%s - %dD %s field (SRID: %d)" % \
- (self.f_table_name, self.f_geometry_column,
- self.coord_dimension, self.type, self.srid)
-
-class SpatialRefSys(models.Model, SpatialRefSysMixin):
- """
- The 'spatial_ref_sys' table from SpatiaLite.
- """
- srid = models.IntegerField(primary_key=True)
- auth_name = models.CharField(max_length=256)
- auth_srid = models.IntegerField()
- ref_sys_name = models.CharField(max_length=256)
- proj4text = models.CharField(max_length=2048)
-
- @property
- def wkt(self):
- from django.contrib.gis.gdal import SpatialReference
- return SpatialReference(self.proj4text).wkt
-
- class Meta:
- db_table = 'spatial_ref_sys'
- managed = False
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/operations.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/operations.py
deleted file mode 100644
index 4281caf..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/spatialite/operations.py
+++ /dev/null
@@ -1,373 +0,0 @@
-import re
-import sys
-from decimal import Decimal
-
-from django.contrib.gis.db.backends.base import BaseSpatialOperations
-from django.contrib.gis.db.backends.util import SpatialOperation, SpatialFunction
-from django.contrib.gis.db.backends.spatialite.adapter import SpatiaLiteAdapter
-from django.contrib.gis.geometry.backend import Geometry
-from django.contrib.gis.measure import Distance
-from django.core.exceptions import ImproperlyConfigured
-from django.db.backends.sqlite3.base import DatabaseOperations
-from django.db.utils import DatabaseError
-from django.utils import six
-from django.utils.functional import cached_property
-
-
-class SpatiaLiteOperator(SpatialOperation):
- "For SpatiaLite operators (e.g. `&&`, `~`)."
- def __init__(self, operator):
- super(SpatiaLiteOperator, self).__init__(operator=operator)
-
-class SpatiaLiteFunction(SpatialFunction):
- "For SpatiaLite function calls."
- def __init__(self, function, **kwargs):
- super(SpatiaLiteFunction, self).__init__(function, **kwargs)
-
-class SpatiaLiteFunctionParam(SpatiaLiteFunction):
- "For SpatiaLite functions that take another parameter."
- sql_template = '%(function)s(%(geo_col)s, %(geometry)s, %%s)'
-
-class SpatiaLiteDistance(SpatiaLiteFunction):
- "For SpatiaLite distance operations."
- dist_func = 'Distance'
- sql_template = '%(function)s(%(geo_col)s, %(geometry)s) %(operator)s %%s'
-
- def __init__(self, operator):
- super(SpatiaLiteDistance, self).__init__(self.dist_func,
- operator=operator)
-
-class SpatiaLiteRelate(SpatiaLiteFunctionParam):
- "For SpatiaLite Relate(<geom>, <pattern>) calls."
- pattern_regex = re.compile(r'^[012TF\*]{9}$')
- def __init__(self, pattern):
- if not self.pattern_regex.match(pattern):
- raise ValueError('Invalid intersection matrix pattern "%s".' % pattern)
- super(SpatiaLiteRelate, self).__init__('Relate')
-
-# Valid distance types and substitutions
-dtypes = (Decimal, Distance, float) + six.integer_types
-def get_dist_ops(operator):
- "Returns operations for regular distances; spherical distances are not currently supported."
- return (SpatiaLiteDistance(operator),)
-
-class SpatiaLiteOperations(DatabaseOperations, BaseSpatialOperations):
- compiler_module = 'django.contrib.gis.db.models.sql.compiler'
- name = 'spatialite'
- spatialite = True
- version_regex = re.compile(r'^(?P<major>\d)\.(?P<minor1>\d)\.(?P<minor2>\d+)')
- valid_aggregates = dict([(k, None) for k in ('Extent', 'Union')])
-
- Adapter = SpatiaLiteAdapter
- Adaptor = Adapter # Backwards-compatibility alias.
-
- area = 'Area'
- centroid = 'Centroid'
- contained = 'MbrWithin'
- difference = 'Difference'
- distance = 'Distance'
- envelope = 'Envelope'
- intersection = 'Intersection'
- length = 'GLength' # OpenGis defines Length, but this conflicts with an SQLite reserved keyword
- num_geom = 'NumGeometries'
- num_points = 'NumPoints'
- point_on_surface = 'PointOnSurface'
- scale = 'ScaleCoords'
- svg = 'AsSVG'
- sym_difference = 'SymDifference'
- transform = 'Transform'
- translate = 'ShiftCoords'
- union = 'GUnion' # OpenGis defines Union, but this conflicts with an SQLite reserved keyword
- unionagg = 'GUnion'
-
- from_text = 'GeomFromText'
- from_wkb = 'GeomFromWKB'
- select = 'AsText(%s)'
-
- geometry_functions = {
- 'equals' : SpatiaLiteFunction('Equals'),
- 'disjoint' : SpatiaLiteFunction('Disjoint'),
- 'touches' : SpatiaLiteFunction('Touches'),
- 'crosses' : SpatiaLiteFunction('Crosses'),
- 'within' : SpatiaLiteFunction('Within'),
- 'overlaps' : SpatiaLiteFunction('Overlaps'),
- 'contains' : SpatiaLiteFunction('Contains'),
- 'intersects' : SpatiaLiteFunction('Intersects'),
- 'relate' : (SpatiaLiteRelate, six.string_types),
- # Returns true if B's bounding box completely contains A's bounding box.
- 'contained' : SpatiaLiteFunction('MbrWithin'),
- # Returns true if A's bounding box completely contains B's bounding box.
- 'bbcontains' : SpatiaLiteFunction('MbrContains'),
- # Returns true if A's bounding box overlaps B's bounding box.
- 'bboverlaps' : SpatiaLiteFunction('MbrOverlaps'),
- # These are implemented here as synonyms for Equals
- 'same_as' : SpatiaLiteFunction('Equals'),
- 'exact' : SpatiaLiteFunction('Equals'),
- }
-
- distance_functions = {
- 'distance_gt' : (get_dist_ops('>'), dtypes),
- 'distance_gte' : (get_dist_ops('>='), dtypes),
- 'distance_lt' : (get_dist_ops('<'), dtypes),
- 'distance_lte' : (get_dist_ops('<='), dtypes),
- }
- geometry_functions.update(distance_functions)
-
- def __init__(self, connection):
- super(DatabaseOperations, self).__init__(connection)
-
- # Creating the GIS terms dictionary.
- self.gis_terms = set(['isnull'])
- self.gis_terms.update(self.geometry_functions)
-
- @cached_property
- def spatial_version(self):
- """Determine the version of the SpatiaLite library."""
- try:
- version = self.spatialite_version_tuple()[1:]
- except Exception as msg:
- new_msg = (
- 'Cannot determine the SpatiaLite version for the "%s" '
- 'database (error was "%s"). Was the SpatiaLite initialization '
- 'SQL loaded on this database?') % (self.connection.settings_dict['NAME'], msg)
- six.reraise(ImproperlyConfigured, ImproperlyConfigured(new_msg), sys.exc_info()[2])
- if version < (2, 3, 0):
- raise ImproperlyConfigured('GeoDjango only supports SpatiaLite versions '
- '2.3.0 and above')
- return version
-
- @property
- def _version_greater_2_4_0_rc4(self):
- if self.spatial_version >= (2, 4, 1):
- return True
- elif self.spatial_version < (2, 4, 0):
- return False
- else:
- # Spatialite 2.4.0-RC4 added AsGML and AsKML, however both
- # RC2 (shipped in popular Debian/Ubuntu packages) and RC4
- # report version as '2.4.0', so we fall back to feature detection
- try:
- self._get_spatialite_func("AsGML(GeomFromText('POINT(1 1)'))")
- except DatabaseError:
- return False
- return True
-
- @cached_property
- def gml(self):
- return 'AsGML' if self._version_greater_2_4_0_rc4 else None
-
- @cached_property
- def kml(self):
- return 'AsKML' if self._version_greater_2_4_0_rc4 else None
-
- @cached_property
- def geojson(self):
- return 'AsGeoJSON' if self.spatial_version >= (3, 0, 0) else None
-
- def check_aggregate_support(self, aggregate):
- """
- Checks if the given aggregate name is supported (that is, if it's
- in `self.valid_aggregates`).
- """
- agg_name = aggregate.__class__.__name__
- return agg_name in self.valid_aggregates
-
- def convert_geom(self, wkt, geo_field):
- """
- Converts geometry WKT returned from a SpatiaLite aggregate.
- """
- if wkt:
- return Geometry(wkt, geo_field.srid)
- else:
- return None
-
- def geo_db_type(self, f):
- """
- Returns None because geometry columnas are added via the
- `AddGeometryColumn` stored procedure on SpatiaLite.
- """
- return None
-
- def get_distance(self, f, value, lookup_type):
- """
- Returns the distance parameters for the given geometry field,
- lookup value, and lookup type. SpatiaLite only supports regular
- cartesian-based queries (no spheroid/sphere calculations for point
- geometries like PostGIS).
- """
- if not value:
- return []
- value = value[0]
- if isinstance(value, Distance):
- if f.geodetic(self.connection):
- raise ValueError('SpatiaLite does not support distance queries on '
- 'geometry fields with a geodetic coordinate system. '
- 'Distance objects; use a numeric value of your '
- 'distance in degrees instead.')
- else:
- dist_param = getattr(value, Distance.unit_attname(f.units_name(self.connection)))
- else:
- dist_param = value
- return [dist_param]
-
- def get_geom_placeholder(self, f, value):
- """
- Provides a proper substitution value for Geometries that are not in the
- SRID of the field. Specifically, this routine will substitute in the
- Transform() and GeomFromText() function call(s).
- """
- def transform_value(value, srid):
- return not (value is None or value.srid == srid)
- if hasattr(value, 'expression'):
- if transform_value(value, f.srid):
- placeholder = '%s(%%s, %s)' % (self.transform, f.srid)
- else:
- placeholder = '%s'
- # No geometry value used for F expression, substitue in
- # the column name instead.
- return placeholder % self.get_expression_column(value)
- else:
- if transform_value(value, f.srid):
- # Adding Transform() to the SQL placeholder.
- return '%s(%s(%%s,%s), %s)' % (self.transform, self.from_text, value.srid, f.srid)
- else:
- return '%s(%%s,%s)' % (self.from_text, f.srid)
-
- def _get_spatialite_func(self, func):
- """
- Helper routine for calling SpatiaLite functions and returning
- their result.
- """
- cursor = self.connection._cursor()
- try:
- try:
- cursor.execute('SELECT %s' % func)
- row = cursor.fetchone()
- except:
- # Responsibility of caller to perform error handling.
- raise
- finally:
- cursor.close()
- return row[0]
-
- def geos_version(self):
- "Returns the version of GEOS used by SpatiaLite as a string."
- return self._get_spatialite_func('geos_version()')
-
- def proj4_version(self):
- "Returns the version of the PROJ.4 library used by SpatiaLite."
- return self._get_spatialite_func('proj4_version()')
-
- def spatialite_version(self):
- "Returns the SpatiaLite library version as a string."
- return self._get_spatialite_func('spatialite_version()')
-
- def spatialite_version_tuple(self):
- """
- Returns the SpatiaLite version as a tuple (version string, major,
- minor, subminor).
- """
- # Getting the SpatiaLite version.
- try:
- version = self.spatialite_version()
- except DatabaseError:
- # The `spatialite_version` function first appeared in version 2.3.1
- # of SpatiaLite, so doing a fallback test for 2.3.0 (which is
- # used by popular Debian/Ubuntu packages).
- version = None
- try:
- tmp = self._get_spatialite_func("X(GeomFromText('POINT(1 1)'))")
- if tmp == 1.0: version = '2.3.0'
- except DatabaseError:
- pass
- # If no version string defined, then just re-raise the original
- # exception.
- if version is None: raise
-
- m = self.version_regex.match(version)
- if m:
- major = int(m.group('major'))
- minor1 = int(m.group('minor1'))
- minor2 = int(m.group('minor2'))
- else:
- raise Exception('Could not parse SpatiaLite version string: %s' % version)
-
- return (version, major, minor1, minor2)
-
- def spatial_aggregate_sql(self, agg):
- """
- Returns the spatial aggregate SQL template and function for the
- given Aggregate instance.
- """
- agg_name = agg.__class__.__name__
- if not self.check_aggregate_support(agg):
- raise NotImplementedError('%s spatial aggregate is not implmented for this backend.' % agg_name)
- agg_name = agg_name.lower()
- if agg_name == 'union': agg_name += 'agg'
- sql_template = self.select % '%(function)s(%(field)s)'
- sql_function = getattr(self, agg_name)
- return sql_template, sql_function
-
- def spatial_lookup_sql(self, lvalue, lookup_type, value, field, qn):
- """
- Returns the SpatiaLite-specific SQL for the given lookup value
- [a tuple of (alias, column, db_type)], lookup type, lookup
- value, the model field, and the quoting function.
- """
- alias, col, db_type = lvalue
-
- # Getting the quoted field as `geo_col`.
- geo_col = '%s.%s' % (qn(alias), qn(col))
-
- if lookup_type in self.geometry_functions:
- # See if a SpatiaLite geometry function matches the lookup type.
- tmp = self.geometry_functions[lookup_type]
-
- # Lookup types that are tuples take tuple arguments, e.g., 'relate' and
- # distance lookups.
- if isinstance(tmp, tuple):
- # First element of tuple is the SpatiaLiteOperation instance, and the
- # second element is either the type or a tuple of acceptable types
- # that may passed in as further parameters for the lookup type.
- op, arg_type = tmp
-
- # Ensuring that a tuple _value_ was passed in from the user
- if not isinstance(value, (tuple, list)):
- raise ValueError('Tuple required for `%s` lookup type.' % lookup_type)
-
- # Geometry is first element of lookup tuple.
- geom = value[0]
-
- # Number of valid tuple parameters depends on the lookup type.
- if len(value) != 2:
- raise ValueError('Incorrect number of parameters given for `%s` lookup type.' % lookup_type)
-
- # Ensuring the argument type matches what we expect.
- if not isinstance(value[1], arg_type):
- raise ValueError('Argument type should be %s, got %s instead.' % (arg_type, type(value[1])))
-
- # For lookup type `relate`, the op instance is not yet created (has
- # to be instantiated here to check the pattern parameter).
- if lookup_type == 'relate':
- op = op(value[1])
- elif lookup_type in self.distance_functions:
- op = op[0]
- else:
- op = tmp
- geom = value
- # Calling the `as_sql` function on the operation instance.
- return op.as_sql(geo_col, self.get_geom_placeholder(field, geom))
- elif lookup_type == 'isnull':
- # Handling 'isnull' lookup type
- return "%s IS %sNULL" % (geo_col, ('' if value else 'NOT ')), []
-
- raise TypeError("Got invalid lookup_type: %s" % repr(lookup_type))
-
- # Routines for getting the OGC-compliant models.
- def geometry_columns(self):
- from django.contrib.gis.db.backends.spatialite.models import GeometryColumns
- return GeometryColumns
-
- def spatial_ref_sys(self):
- from django.contrib.gis.db.backends.spatialite.models import SpatialRefSys
- return SpatialRefSys
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/backends/util.py b/lib/python2.7/site-packages/django/contrib/gis/db/backends/util.py
deleted file mode 100644
index 2612810..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/backends/util.py
+++ /dev/null
@@ -1,44 +0,0 @@
-"""
-A collection of utility routines and classes used by the spatial
-backends.
-"""
-
-class SpatialOperation(object):
- """
- Base class for generating spatial SQL.
- """
- sql_template = '%(geo_col)s %(operator)s %(geometry)s'
-
- def __init__(self, function='', operator='', result='', **kwargs):
- self.function = function
- self.operator = operator
- self.result = result
- self.extra = kwargs
-
- def as_sql(self, geo_col, geometry='%s'):
- return self.sql_template % self.params(geo_col, geometry), []
-
- def params(self, geo_col, geometry):
- params = {'function' : self.function,
- 'geo_col' : geo_col,
- 'geometry' : geometry,
- 'operator' : self.operator,
- 'result' : self.result,
- }
- params.update(self.extra)
- return params
-
-class SpatialFunction(SpatialOperation):
- """
- Base class for generating spatial SQL related to a function.
- """
- sql_template = '%(function)s(%(geo_col)s, %(geometry)s)'
-
- def __init__(self, func, result='', operator='', **kwargs):
- # Getting the function prefix.
- default = {'function' : func,
- 'operator' : operator,
- 'result' : result
- }
- kwargs.update(default)
- super(SpatialFunction, self).__init__(**kwargs)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/models/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/db/models/__init__.py
deleted file mode 100644
index e36aa36..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/models/__init__.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# Want to get everything from the 'normal' models package.
-from django.db.models import *
-
-# Geographic aggregate functions
-from django.contrib.gis.db.models.aggregates import *
-
-# The GeoManager
-from django.contrib.gis.db.models.manager import GeoManager
-
-# The geographic-enabled fields.
-from django.contrib.gis.db.models.fields import (
- GeometryField, PointField, LineStringField, PolygonField,
- MultiPointField, MultiLineStringField, MultiPolygonField,
- GeometryCollectionField)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/models/aggregates.py b/lib/python2.7/site-packages/django/contrib/gis/db/models/aggregates.py
deleted file mode 100644
index d0fc6d3..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/models/aggregates.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from django.db.models import Aggregate
-
-class Collect(Aggregate):
- name = 'Collect'
-
-class Extent(Aggregate):
- name = 'Extent'
-
-class Extent3D(Aggregate):
- name = 'Extent3D'
-
-class MakeLine(Aggregate):
- name = 'MakeLine'
-
-class Union(Aggregate):
- name = 'Union'
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/models/fields.py b/lib/python2.7/site-packages/django/contrib/gis/db/models/fields.py
deleted file mode 100644
index 2e221b7..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/models/fields.py
+++ /dev/null
@@ -1,305 +0,0 @@
-from django.db.models.fields import Field
-from django.db.models.sql.expressions import SQLEvaluator
-from django.utils.translation import ugettext_lazy as _
-from django.contrib.gis import forms
-from django.contrib.gis.db.models.proxy import GeometryProxy
-from django.contrib.gis.geometry.backend import Geometry, GeometryException
-from django.utils import six
-
-# Local cache of the spatial_ref_sys table, which holds SRID data for each
-# spatial database alias. This cache exists so that the database isn't queried
-# for SRID info each time a distance query is constructed.
-_srid_cache = {}
-
-def get_srid_info(srid, connection):
- """
- Returns the units, unit name, and spheroid WKT associated with the
- given SRID from the `spatial_ref_sys` (or equivalent) spatial database
- table for the given database connection. These results are cached.
- """
- global _srid_cache
-
- try:
- # The SpatialRefSys model for the spatial backend.
- SpatialRefSys = connection.ops.spatial_ref_sys()
- except NotImplementedError:
- # No `spatial_ref_sys` table in spatial backend (e.g., MySQL).
- return None, None, None
-
- if not connection.alias in _srid_cache:
- # Initialize SRID dictionary for database if it doesn't exist.
- _srid_cache[connection.alias] = {}
-
- if not srid in _srid_cache[connection.alias]:
- # Use `SpatialRefSys` model to query for spatial reference info.
- sr = SpatialRefSys.objects.using(connection.alias).get(srid=srid)
- units, units_name = sr.units
- spheroid = SpatialRefSys.get_spheroid(sr.wkt)
- _srid_cache[connection.alias][srid] = (units, units_name, spheroid)
-
- return _srid_cache[connection.alias][srid]
-
-class GeometryField(Field):
- "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-
- # The OpenGIS Geometry name.
- geom_type = 'GEOMETRY'
- form_class = forms.GeometryField
-
- # Geodetic units.
- geodetic_units = ('Decimal Degree', 'degree')
-
- description = _("The base GIS field -- maps to the OpenGIS Specification Geometry type.")
-
- def __init__(self, verbose_name=None, srid=4326, spatial_index=True, dim=2,
- geography=False, **kwargs):
- """
- The initialization function for geometry fields. Takes the following
- as keyword arguments:
-
- srid:
- The spatial reference system identifier, an OGC standard.
- Defaults to 4326 (WGS84).
-
- spatial_index:
- Indicates whether to create a spatial index. Defaults to True.
- Set this instead of 'db_index' for geographic fields since index
- creation is different for geometry columns.
-
- dim:
- The number of dimensions for this geometry. Defaults to 2.
-
- extent:
- Customize the extent, in a 4-tuple of WGS 84 coordinates, for the
- geometry field entry in the `USER_SDO_GEOM_METADATA` table. Defaults
- to (-180.0, -90.0, 180.0, 90.0).
-
- tolerance:
- Define the tolerance, in meters, to use for the geometry field
- entry in the `USER_SDO_GEOM_METADATA` table. Defaults to 0.05.
- """
-
- # Setting the index flag with the value of the `spatial_index` keyword.
- self.spatial_index = spatial_index
-
- # Setting the SRID and getting the units. Unit information must be
- # easily available in the field instance for distance queries.
- self.srid = srid
-
- # Setting the dimension of the geometry field.
- self.dim = dim
-
- # Setting the verbose_name keyword argument with the positional
- # first parameter, so this works like normal fields.
- kwargs['verbose_name'] = verbose_name
-
- # Is this a geography rather than a geometry column?
- self.geography = geography
-
- # Oracle-specific private attributes for creating the entry in
- # `USER_SDO_GEOM_METADATA`
- self._extent = kwargs.pop('extent', (-180.0, -90.0, 180.0, 90.0))
- self._tolerance = kwargs.pop('tolerance', 0.05)
-
- super(GeometryField, self).__init__(**kwargs)
-
- # The following functions are used to get the units, their name, and
- # the spheroid corresponding to the SRID of the GeometryField.
- def _get_srid_info(self, connection):
- # Get attributes from `get_srid_info`.
- self._units, self._units_name, self._spheroid = get_srid_info(self.srid, connection)
-
- def spheroid(self, connection):
- if not hasattr(self, '_spheroid'):
- self._get_srid_info(connection)
- return self._spheroid
-
- def units(self, connection):
- if not hasattr(self, '_units'):
- self._get_srid_info(connection)
- return self._units
-
- def units_name(self, connection):
- if not hasattr(self, '_units_name'):
- self._get_srid_info(connection)
- return self._units_name
-
- ### Routines specific to GeometryField ###
- def geodetic(self, connection):
- """
- Returns true if this field's SRID corresponds with a coordinate
- system that uses non-projected units (e.g., latitude/longitude).
- """
- return self.units_name(connection) in self.geodetic_units
-
- def get_distance(self, value, lookup_type, connection):
- """
- Returns a distance number in units of the field. For example, if
- `D(km=1)` was passed in and the units of the field were in meters,
- then 1000 would be returned.
- """
- return connection.ops.get_distance(self, value, lookup_type)
-
- def get_prep_value(self, value):
- """
- Spatial lookup values are either a parameter that is (or may be
- converted to) a geometry, or a sequence of lookup values that
- begins with a geometry. This routine will setup the geometry
- value properly, and preserve any other lookup parameters before
- returning to the caller.
- """
- if isinstance(value, SQLEvaluator):
- return value
- elif isinstance(value, (tuple, list)):
- geom = value[0]
- seq_value = True
- else:
- geom = value
- seq_value = False
-
- # When the input is not a GEOS geometry, attempt to construct one
- # from the given string input.
- if isinstance(geom, Geometry):
- pass
- elif isinstance(geom, (bytes, six.string_types)) or hasattr(geom, '__geo_interface__'):
- try:
- geom = Geometry(geom)
- except GeometryException:
- raise ValueError('Could not create geometry from lookup value.')
- else:
- raise ValueError('Cannot use object with type %s for a geometry lookup parameter.' % type(geom).__name__)
-
- # Assigning the SRID value.
- geom.srid = self.get_srid(geom)
-
- if seq_value:
- lookup_val = [geom]
- lookup_val.extend(value[1:])
- return tuple(lookup_val)
- else:
- return geom
-
- def get_srid(self, geom):
- """
- Returns the default SRID for the given geometry, taking into account
- the SRID set for the field. For example, if the input geometry
- has no SRID, then that of the field will be returned.
- """
- gsrid = geom.srid # SRID of given geometry.
- if gsrid is None or self.srid == -1 or (gsrid == -1 and self.srid != -1):
- return self.srid
- else:
- return gsrid
-
- ### Routines overloaded from Field ###
- def contribute_to_class(self, cls, name):
- super(GeometryField, self).contribute_to_class(cls, name)
-
- # Setup for lazy-instantiated Geometry object.
- setattr(cls, self.attname, GeometryProxy(Geometry, self))
-
- def db_type(self, connection):
- return connection.ops.geo_db_type(self)
-
- def formfield(self, **kwargs):
- defaults = {'form_class' : self.form_class,
- 'geom_type' : self.geom_type,
- 'srid' : self.srid,
- }
- defaults.update(kwargs)
- if (self.dim > 2 and not 'widget' in kwargs and
- not getattr(defaults['form_class'].widget, 'supports_3d', False)):
- defaults['widget'] = forms.Textarea
- return super(GeometryField, self).formfield(**defaults)
-
- def get_db_prep_lookup(self, lookup_type, value, connection, prepared=False):
- """
- Prepare for the database lookup, and return any spatial parameters
- necessary for the query. This includes wrapping any geometry
- parameters with a backend-specific adapter and formatting any distance
- parameters into the correct units for the coordinate system of the
- field.
- """
- if lookup_type in connection.ops.gis_terms:
- # special case for isnull lookup
- if lookup_type == 'isnull':
- return []
-
- # Populating the parameters list, and wrapping the Geometry
- # with the Adapter of the spatial backend.
- if isinstance(value, (tuple, list)):
- params = [connection.ops.Adapter(value[0])]
- if lookup_type in connection.ops.distance_functions:
- # Getting the distance parameter in the units of the field.
- params += self.get_distance(value[1:], lookup_type, connection)
- elif lookup_type in connection.ops.truncate_params:
- # Lookup is one where SQL parameters aren't needed from the
- # given lookup value.
- pass
- else:
- params += value[1:]
- elif isinstance(value, SQLEvaluator):
- params = []
- else:
- params = [connection.ops.Adapter(value)]
-
- return params
- else:
- raise ValueError('%s is not a valid spatial lookup for %s.' %
- (lookup_type, self.__class__.__name__))
-
- def get_prep_lookup(self, lookup_type, value):
- if lookup_type == 'isnull':
- return bool(value)
- else:
- return self.get_prep_value(value)
-
- def get_db_prep_save(self, value, connection):
- "Prepares the value for saving in the database."
- if value is None:
- return None
- else:
- return connection.ops.Adapter(self.get_prep_value(value))
-
- def get_placeholder(self, value, connection):
- """
- Returns the placeholder for the geometry column for the
- given value.
- """
- return connection.ops.get_geom_placeholder(self, value)
-
-# The OpenGIS Geometry Type Fields
-class PointField(GeometryField):
- geom_type = 'POINT'
- form_class = forms.PointField
- description = _("Point")
-
-class LineStringField(GeometryField):
- geom_type = 'LINESTRING'
- form_class = forms.LineStringField
- description = _("Line string")
-
-class PolygonField(GeometryField):
- geom_type = 'POLYGON'
- form_class = forms.PolygonField
- description = _("Polygon")
-
-class MultiPointField(GeometryField):
- geom_type = 'MULTIPOINT'
- form_class = forms.MultiPointField
- description = _("Multi-point")
-
-class MultiLineStringField(GeometryField):
- geom_type = 'MULTILINESTRING'
- form_class = forms.MultiLineStringField
- description = _("Multi-line string")
-
-class MultiPolygonField(GeometryField):
- geom_type = 'MULTIPOLYGON'
- form_class = forms.MultiPolygonField
- description = _("Multi polygon")
-
-class GeometryCollectionField(GeometryField):
- geom_type = 'GEOMETRYCOLLECTION'
- form_class = forms.GeometryCollectionField
- description = _("Geometry collection")
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/models/manager.py b/lib/python2.7/site-packages/django/contrib/gis/db/models/manager.py
deleted file mode 100644
index aa57e3a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/models/manager.py
+++ /dev/null
@@ -1,103 +0,0 @@
-from django.db.models.manager import Manager
-from django.contrib.gis.db.models.query import GeoQuerySet
-
-class GeoManager(Manager):
- "Overrides Manager to return Geographic QuerySets."
-
- # This manager should be used for queries on related fields
- # so that geometry columns on Oracle and MySQL are selected
- # properly.
- use_for_related_fields = True
-
- def get_queryset(self):
- return GeoQuerySet(self.model, using=self._db)
-
- def area(self, *args, **kwargs):
- return self.get_queryset().area(*args, **kwargs)
-
- def centroid(self, *args, **kwargs):
- return self.get_queryset().centroid(*args, **kwargs)
-
- def collect(self, *args, **kwargs):
- return self.get_queryset().collect(*args, **kwargs)
-
- def difference(self, *args, **kwargs):
- return self.get_queryset().difference(*args, **kwargs)
-
- def distance(self, *args, **kwargs):
- return self.get_queryset().distance(*args, **kwargs)
-
- def envelope(self, *args, **kwargs):
- return self.get_queryset().envelope(*args, **kwargs)
-
- def extent(self, *args, **kwargs):
- return self.get_queryset().extent(*args, **kwargs)
-
- def extent3d(self, *args, **kwargs):
- return self.get_queryset().extent3d(*args, **kwargs)
-
- def force_rhr(self, *args, **kwargs):
- return self.get_queryset().force_rhr(*args, **kwargs)
-
- def geohash(self, *args, **kwargs):
- return self.get_queryset().geohash(*args, **kwargs)
-
- def geojson(self, *args, **kwargs):
- return self.get_queryset().geojson(*args, **kwargs)
-
- def gml(self, *args, **kwargs):
- return self.get_queryset().gml(*args, **kwargs)
-
- def intersection(self, *args, **kwargs):
- return self.get_queryset().intersection(*args, **kwargs)
-
- def kml(self, *args, **kwargs):
- return self.get_queryset().kml(*args, **kwargs)
-
- def length(self, *args, **kwargs):
- return self.get_queryset().length(*args, **kwargs)
-
- def make_line(self, *args, **kwargs):
- return self.get_queryset().make_line(*args, **kwargs)
-
- def mem_size(self, *args, **kwargs):
- return self.get_queryset().mem_size(*args, **kwargs)
-
- def num_geom(self, *args, **kwargs):
- return self.get_queryset().num_geom(*args, **kwargs)
-
- def num_points(self, *args, **kwargs):
- return self.get_queryset().num_points(*args, **kwargs)
-
- def perimeter(self, *args, **kwargs):
- return self.get_queryset().perimeter(*args, **kwargs)
-
- def point_on_surface(self, *args, **kwargs):
- return self.get_queryset().point_on_surface(*args, **kwargs)
-
- def reverse_geom(self, *args, **kwargs):
- return self.get_queryset().reverse_geom(*args, **kwargs)
-
- def scale(self, *args, **kwargs):
- return self.get_queryset().scale(*args, **kwargs)
-
- def snap_to_grid(self, *args, **kwargs):
- return self.get_queryset().snap_to_grid(*args, **kwargs)
-
- def svg(self, *args, **kwargs):
- return self.get_queryset().svg(*args, **kwargs)
-
- def sym_difference(self, *args, **kwargs):
- return self.get_queryset().sym_difference(*args, **kwargs)
-
- def transform(self, *args, **kwargs):
- return self.get_queryset().transform(*args, **kwargs)
-
- def translate(self, *args, **kwargs):
- return self.get_queryset().translate(*args, **kwargs)
-
- def union(self, *args, **kwargs):
- return self.get_queryset().union(*args, **kwargs)
-
- def unionagg(self, *args, **kwargs):
- return self.get_queryset().unionagg(*args, **kwargs)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/models/proxy.py b/lib/python2.7/site-packages/django/contrib/gis/db/models/proxy.py
deleted file mode 100644
index 1fdc503..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/models/proxy.py
+++ /dev/null
@@ -1,66 +0,0 @@
-"""
-The GeometryProxy object, allows for lazy-geometries. The proxy uses
-Python descriptors for instantiating and setting Geometry objects
-corresponding to geographic model fields.
-
-Thanks to Robert Coup for providing this functionality (see #4322).
-"""
-from django.contrib.gis import memoryview
-from django.utils import six
-
-class GeometryProxy(object):
- def __init__(self, klass, field):
- """
- Proxy initializes on the given Geometry class (not an instance) and
- the GeometryField.
- """
- self._field = field
- self._klass = klass
-
- def __get__(self, obj, type=None):
- """
- This accessor retrieves the geometry, initializing it using the geometry
- class specified during initialization and the HEXEWKB value of the field.
- Currently, only GEOS or OGR geometries are supported.
- """
- if obj is None:
- # Accessed on a class, not an instance
- return self
-
- # Getting the value of the field.
- geom_value = obj.__dict__[self._field.attname]
-
- if isinstance(geom_value, self._klass):
- geom = geom_value
- elif (geom_value is None) or (geom_value==''):
- geom = None
- else:
- # Otherwise, a Geometry object is built using the field's contents,
- # and the model's corresponding attribute is set.
- geom = self._klass(geom_value)
- setattr(obj, self._field.attname, geom)
- return geom
-
- def __set__(self, obj, value):
- """
- This accessor sets the proxied geometry with the geometry class
- specified during initialization. Values of None, HEXEWKB, or WKT may
- be used to set the geometry as well.
- """
- # The OGC Geometry type of the field.
- gtype = self._field.geom_type
-
- # The geometry type must match that of the field -- unless the
- # general GeometryField is used.
- if isinstance(value, self._klass) and (str(value.geom_type).upper() == gtype or gtype == 'GEOMETRY'):
- # Assigning the SRID to the geometry.
- if value.srid is None: value.srid = self._field.srid
- elif value is None or isinstance(value, six.string_types + (memoryview,)):
- # Set with None, WKT, HEX, or WKB
- pass
- else:
- raise TypeError('cannot set %s GeometryProxy with value of type: %s' % (obj.__class__.__name__, type(value)))
-
- # Setting the objects dictionary with the value, and returning.
- obj.__dict__[self._field.attname] = value
- return value
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/models/query.py b/lib/python2.7/site-packages/django/contrib/gis/db/models/query.py
deleted file mode 100644
index c89912b..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/models/query.py
+++ /dev/null
@@ -1,784 +0,0 @@
-from django.db import connections
-from django.db.models.query import QuerySet, ValuesQuerySet, ValuesListQuerySet
-
-from django.contrib.gis import memoryview
-from django.contrib.gis.db.models import aggregates
-from django.contrib.gis.db.models.fields import get_srid_info, PointField, LineStringField
-from django.contrib.gis.db.models.sql import AreaField, DistanceField, GeomField, GeoQuery
-from django.contrib.gis.geometry.backend import Geometry
-from django.contrib.gis.measure import Area, Distance
-
-from django.utils import six
-
-
-class GeoQuerySet(QuerySet):
- "The Geographic QuerySet."
-
- ### Methods overloaded from QuerySet ###
- def __init__(self, model=None, query=None, using=None):
- super(GeoQuerySet, self).__init__(model=model, query=query, using=using)
- self.query = query or GeoQuery(self.model)
-
- def values(self, *fields):
- return self._clone(klass=GeoValuesQuerySet, setup=True, _fields=fields)
-
- def values_list(self, *fields, **kwargs):
- flat = kwargs.pop('flat', False)
- if kwargs:
- raise TypeError('Unexpected keyword arguments to values_list: %s'
- % (list(kwargs),))
- if flat and len(fields) > 1:
- raise TypeError("'flat' is not valid when values_list is called with more than one field.")
- return self._clone(klass=GeoValuesListQuerySet, setup=True, flat=flat,
- _fields=fields)
-
- ### GeoQuerySet Methods ###
- def area(self, tolerance=0.05, **kwargs):
- """
- Returns the area of the geographic field in an `area` attribute on
- each element of this GeoQuerySet.
- """
- # Peforming setup here rather than in `_spatial_attribute` so that
- # we can get the units for `AreaField`.
- procedure_args, geo_field = self._spatial_setup('area', field_name=kwargs.get('field_name', None))
- s = {'procedure_args' : procedure_args,
- 'geo_field' : geo_field,
- 'setup' : False,
- }
- connection = connections[self.db]
- backend = connection.ops
- if backend.oracle:
- s['procedure_fmt'] = '%(geo_col)s,%(tolerance)s'
- s['procedure_args']['tolerance'] = tolerance
- s['select_field'] = AreaField('sq_m') # Oracle returns area in units of meters.
- elif backend.postgis or backend.spatialite:
- if backend.geography:
- # Geography fields support area calculation, returns square meters.
- s['select_field'] = AreaField('sq_m')
- elif not geo_field.geodetic(connection):
- # Getting the area units of the geographic field.
- s['select_field'] = AreaField(Area.unit_attname(geo_field.units_name(connection)))
- else:
- # TODO: Do we want to support raw number areas for geodetic fields?
- raise Exception('Area on geodetic coordinate systems not supported.')
- return self._spatial_attribute('area', s, **kwargs)
-
- def centroid(self, **kwargs):
- """
- Returns the centroid of the geographic field in a `centroid`
- attribute on each element of this GeoQuerySet.
- """
- return self._geom_attribute('centroid', **kwargs)
-
- def collect(self, **kwargs):
- """
- Performs an aggregate collect operation on the given geometry field.
- This is analagous to a union operation, but much faster because
- boundaries are not dissolved.
- """
- return self._spatial_aggregate(aggregates.Collect, **kwargs)
-
- def difference(self, geom, **kwargs):
- """
- Returns the spatial difference of the geographic field in a `difference`
- attribute on each element of this GeoQuerySet.
- """
- return self._geomset_attribute('difference', geom, **kwargs)
-
- def distance(self, geom, **kwargs):
- """
- Returns the distance from the given geographic field name to the
- given geometry in a `distance` attribute on each element of the
- GeoQuerySet.
-
- Keyword Arguments:
- `spheroid` => If the geometry field is geodetic and PostGIS is
- the spatial database, then the more accurate
- spheroid calculation will be used instead of the
- quicker sphere calculation.
-
- `tolerance` => Used only for Oracle. The tolerance is
- in meters -- a default of 5 centimeters (0.05)
- is used.
- """
- return self._distance_attribute('distance', geom, **kwargs)
-
- def envelope(self, **kwargs):
- """
- Returns a Geometry representing the bounding box of the
- Geometry field in an `envelope` attribute on each element of
- the GeoQuerySet.
- """
- return self._geom_attribute('envelope', **kwargs)
-
- def extent(self, **kwargs):
- """
- Returns the extent (aggregate) of the features in the GeoQuerySet. The
- extent will be returned as a 4-tuple, consisting of (xmin, ymin, xmax, ymax).
- """
- return self._spatial_aggregate(aggregates.Extent, **kwargs)
-
- def extent3d(self, **kwargs):
- """
- Returns the aggregate extent, in 3D, of the features in the
- GeoQuerySet. It is returned as a 6-tuple, comprising:
- (xmin, ymin, zmin, xmax, ymax, zmax).
- """
- return self._spatial_aggregate(aggregates.Extent3D, **kwargs)
-
- def force_rhr(self, **kwargs):
- """
- Returns a modified version of the Polygon/MultiPolygon in which
- all of the vertices follow the Right-Hand-Rule. By default,
- this is attached as the `force_rhr` attribute on each element
- of the GeoQuerySet.
- """
- return self._geom_attribute('force_rhr', **kwargs)
-
- def geojson(self, precision=8, crs=False, bbox=False, **kwargs):
- """
- Returns a GeoJSON representation of the geomtry field in a `geojson`
- attribute on each element of the GeoQuerySet.
-
- The `crs` and `bbox` keywords may be set to True if the users wants
- the coordinate reference system and the bounding box to be included
- in the GeoJSON representation of the geometry.
- """
- backend = connections[self.db].ops
- if not backend.geojson:
- raise NotImplementedError('Only PostGIS 1.3.4+ and SpatiaLite 3.0+ '
- 'support GeoJSON serialization.')
-
- if not isinstance(precision, six.integer_types):
- raise TypeError('Precision keyword must be set with an integer.')
-
- # Setting the options flag -- which depends on which version of
- # PostGIS we're using. SpatiaLite only uses the first group of options.
- if backend.spatial_version >= (1, 4, 0):
- options = 0
- if crs and bbox: options = 3
- elif bbox: options = 1
- elif crs: options = 2
- else:
- options = 0
- if crs and bbox: options = 3
- elif crs: options = 1
- elif bbox: options = 2
- s = {'desc' : 'GeoJSON',
- 'procedure_args' : {'precision' : precision, 'options' : options},
- 'procedure_fmt' : '%(geo_col)s,%(precision)s,%(options)s',
- }
- return self._spatial_attribute('geojson', s, **kwargs)
-
- def geohash(self, precision=20, **kwargs):
- """
- Returns a GeoHash representation of the given field in a `geohash`
- attribute on each element of the GeoQuerySet.
-
- The `precision` keyword may be used to custom the number of
- _characters_ used in the output GeoHash, the default is 20.
- """
- s = {'desc' : 'GeoHash',
- 'procedure_args': {'precision': precision},
- 'procedure_fmt': '%(geo_col)s,%(precision)s',
- }
- return self._spatial_attribute('geohash', s, **kwargs)
-
- def gml(self, precision=8, version=2, **kwargs):
- """
- Returns GML representation of the given field in a `gml` attribute
- on each element of the GeoQuerySet.
- """
- backend = connections[self.db].ops
- s = {'desc' : 'GML', 'procedure_args' : {'precision' : precision}}
- if backend.postgis:
- # PostGIS AsGML() aggregate function parameter order depends on the
- # version -- uggh.
- if backend.spatial_version > (1, 3, 1):
- s['procedure_fmt'] = '%(version)s,%(geo_col)s,%(precision)s'
- else:
- s['procedure_fmt'] = '%(geo_col)s,%(precision)s,%(version)s'
- s['procedure_args'] = {'precision' : precision, 'version' : version}
-
- return self._spatial_attribute('gml', s, **kwargs)
-
- def intersection(self, geom, **kwargs):
- """
- Returns the spatial intersection of the Geometry field in
- an `intersection` attribute on each element of this
- GeoQuerySet.
- """
- return self._geomset_attribute('intersection', geom, **kwargs)
-
- def kml(self, **kwargs):
- """
- Returns KML representation of the geometry field in a `kml`
- attribute on each element of this GeoQuerySet.
- """
- s = {'desc' : 'KML',
- 'procedure_fmt' : '%(geo_col)s,%(precision)s',
- 'procedure_args' : {'precision' : kwargs.pop('precision', 8)},
- }
- return self._spatial_attribute('kml', s, **kwargs)
-
- def length(self, **kwargs):
- """
- Returns the length of the geometry field as a `Distance` object
- stored in a `length` attribute on each element of this GeoQuerySet.
- """
- return self._distance_attribute('length', None, **kwargs)
-
- def make_line(self, **kwargs):
- """
- Creates a linestring from all of the PointField geometries in the
- this GeoQuerySet and returns it. This is a spatial aggregate
- method, and thus returns a geometry rather than a GeoQuerySet.
- """
- return self._spatial_aggregate(aggregates.MakeLine, geo_field_type=PointField, **kwargs)
-
- def mem_size(self, **kwargs):
- """
- Returns the memory size (number of bytes) that the geometry field takes
- in a `mem_size` attribute on each element of this GeoQuerySet.
- """
- return self._spatial_attribute('mem_size', {}, **kwargs)
-
- def num_geom(self, **kwargs):
- """
- Returns the number of geometries if the field is a
- GeometryCollection or Multi* Field in a `num_geom`
- attribute on each element of this GeoQuerySet; otherwise
- the sets with None.
- """
- return self._spatial_attribute('num_geom', {}, **kwargs)
-
- def num_points(self, **kwargs):
- """
- Returns the number of points in the first linestring in the
- Geometry field in a `num_points` attribute on each element of
- this GeoQuerySet; otherwise sets with None.
- """
- return self._spatial_attribute('num_points', {}, **kwargs)
-
- def perimeter(self, **kwargs):
- """
- Returns the perimeter of the geometry field as a `Distance` object
- stored in a `perimeter` attribute on each element of this GeoQuerySet.
- """
- return self._distance_attribute('perimeter', None, **kwargs)
-
- def point_on_surface(self, **kwargs):
- """
- Returns a Point geometry guaranteed to lie on the surface of the
- Geometry field in a `point_on_surface` attribute on each element
- of this GeoQuerySet; otherwise sets with None.
- """
- return self._geom_attribute('point_on_surface', **kwargs)
-
- def reverse_geom(self, **kwargs):
- """
- Reverses the coordinate order of the geometry, and attaches as a
- `reverse` attribute on each element of this GeoQuerySet.
- """
- s = {'select_field' : GeomField(),}
- kwargs.setdefault('model_att', 'reverse_geom')
- if connections[self.db].ops.oracle:
- s['geo_field_type'] = LineStringField
- return self._spatial_attribute('reverse', s, **kwargs)
-
- def scale(self, x, y, z=0.0, **kwargs):
- """
- Scales the geometry to a new size by multiplying the ordinates
- with the given x,y,z scale factors.
- """
- if connections[self.db].ops.spatialite:
- if z != 0.0:
- raise NotImplementedError('SpatiaLite does not support 3D scaling.')
- s = {'procedure_fmt' : '%(geo_col)s,%(x)s,%(y)s',
- 'procedure_args' : {'x' : x, 'y' : y},
- 'select_field' : GeomField(),
- }
- else:
- s = {'procedure_fmt' : '%(geo_col)s,%(x)s,%(y)s,%(z)s',
- 'procedure_args' : {'x' : x, 'y' : y, 'z' : z},
- 'select_field' : GeomField(),
- }
- return self._spatial_attribute('scale', s, **kwargs)
-
- def snap_to_grid(self, *args, **kwargs):
- """
- Snap all points of the input geometry to the grid. How the
- geometry is snapped to the grid depends on how many arguments
- were given:
- - 1 argument : A single size to snap both the X and Y grids to.
- - 2 arguments: X and Y sizes to snap the grid to.
- - 4 arguments: X, Y sizes and the X, Y origins.
- """
- if False in [isinstance(arg, (float,) + six.integer_types) for arg in args]:
- raise TypeError('Size argument(s) for the grid must be a float or integer values.')
-
- nargs = len(args)
- if nargs == 1:
- size = args[0]
- procedure_fmt = '%(geo_col)s,%(size)s'
- procedure_args = {'size' : size}
- elif nargs == 2:
- xsize, ysize = args
- procedure_fmt = '%(geo_col)s,%(xsize)s,%(ysize)s'
- procedure_args = {'xsize' : xsize, 'ysize' : ysize}
- elif nargs == 4:
- xsize, ysize, xorigin, yorigin = args
- procedure_fmt = '%(geo_col)s,%(xorigin)s,%(yorigin)s,%(xsize)s,%(ysize)s'
- procedure_args = {'xsize' : xsize, 'ysize' : ysize,
- 'xorigin' : xorigin, 'yorigin' : yorigin}
- else:
- raise ValueError('Must provide 1, 2, or 4 arguments to `snap_to_grid`.')
-
- s = {'procedure_fmt' : procedure_fmt,
- 'procedure_args' : procedure_args,
- 'select_field' : GeomField(),
- }
-
- return self._spatial_attribute('snap_to_grid', s, **kwargs)
-
- def svg(self, relative=False, precision=8, **kwargs):
- """
- Returns SVG representation of the geographic field in a `svg`
- attribute on each element of this GeoQuerySet.
-
- Keyword Arguments:
- `relative` => If set to True, this will evaluate the path in
- terms of relative moves (rather than absolute).
-
- `precision` => May be used to set the maximum number of decimal
- digits used in output (defaults to 8).
- """
- relative = int(bool(relative))
- if not isinstance(precision, six.integer_types):
- raise TypeError('SVG precision keyword argument must be an integer.')
- s = {'desc' : 'SVG',
- 'procedure_fmt' : '%(geo_col)s,%(rel)s,%(precision)s',
- 'procedure_args' : {'rel' : relative,
- 'precision' : precision,
- }
- }
- return self._spatial_attribute('svg', s, **kwargs)
-
- def sym_difference(self, geom, **kwargs):
- """
- Returns the symmetric difference of the geographic field in a
- `sym_difference` attribute on each element of this GeoQuerySet.
- """
- return self._geomset_attribute('sym_difference', geom, **kwargs)
-
- def translate(self, x, y, z=0.0, **kwargs):
- """
- Translates the geometry to a new location using the given numeric
- parameters as offsets.
- """
- if connections[self.db].ops.spatialite:
- if z != 0.0:
- raise NotImplementedError('SpatiaLite does not support 3D translation.')
- s = {'procedure_fmt' : '%(geo_col)s,%(x)s,%(y)s',
- 'procedure_args' : {'x' : x, 'y' : y},
- 'select_field' : GeomField(),
- }
- else:
- s = {'procedure_fmt' : '%(geo_col)s,%(x)s,%(y)s,%(z)s',
- 'procedure_args' : {'x' : x, 'y' : y, 'z' : z},
- 'select_field' : GeomField(),
- }
- return self._spatial_attribute('translate', s, **kwargs)
-
- def transform(self, srid=4326, **kwargs):
- """
- Transforms the given geometry field to the given SRID. If no SRID is
- provided, the transformation will default to using 4326 (WGS84).
- """
- if not isinstance(srid, six.integer_types):
- raise TypeError('An integer SRID must be provided.')
- field_name = kwargs.get('field_name', None)
- tmp, geo_field = self._spatial_setup('transform', field_name=field_name)
-
- # Getting the selection SQL for the given geographic field.
- field_col = self._geocol_select(geo_field, field_name)
-
- # Why cascading substitutions? Because spatial backends like
- # Oracle and MySQL already require a function call to convert to text, thus
- # when there's also a transformation we need to cascade the substitutions.
- # For example, 'SDO_UTIL.TO_WKTGEOMETRY(SDO_CS.TRANSFORM( ... )'
- geo_col = self.query.custom_select.get(geo_field, field_col)
-
- # Setting the key for the field's column with the custom SELECT SQL to
- # override the geometry column returned from the database.
- custom_sel = '%s(%s, %s)' % (connections[self.db].ops.transform, geo_col, srid)
- # TODO: Should we have this as an alias?
- # custom_sel = '(%s(%s, %s)) AS %s' % (SpatialBackend.transform, geo_col, srid, qn(geo_field.name))
- self.query.transformed_srid = srid # So other GeoQuerySet methods
- self.query.custom_select[geo_field] = custom_sel
- return self._clone()
-
- def union(self, geom, **kwargs):
- """
- Returns the union of the geographic field with the given
- Geometry in a `union` attribute on each element of this GeoQuerySet.
- """
- return self._geomset_attribute('union', geom, **kwargs)
-
- def unionagg(self, **kwargs):
- """
- Performs an aggregate union on the given geometry field. Returns
- None if the GeoQuerySet is empty. The `tolerance` keyword is for
- Oracle backends only.
- """
- return self._spatial_aggregate(aggregates.Union, **kwargs)
-
- ### Private API -- Abstracted DRY routines. ###
- def _spatial_setup(self, att, desc=None, field_name=None, geo_field_type=None):
- """
- Performs set up for executing the spatial function.
- """
- # Does the spatial backend support this?
- connection = connections[self.db]
- func = getattr(connection.ops, att, False)
- if desc is None: desc = att
- if not func:
- raise NotImplementedError('%s stored procedure not available on '
- 'the %s backend.' %
- (desc, connection.ops.name))
-
- # Initializing the procedure arguments.
- procedure_args = {'function' : func}
-
- # Is there a geographic field in the model to perform this
- # operation on?
- geo_field = self.query._geo_field(field_name)
- if not geo_field:
- raise TypeError('%s output only available on GeometryFields.' % func)
-
- # If the `geo_field_type` keyword was used, then enforce that
- # type limitation.
- if not geo_field_type is None and not isinstance(geo_field, geo_field_type):
- raise TypeError('"%s" stored procedures may only be called on %ss.' % (func, geo_field_type.__name__))
-
- # Setting the procedure args.
- procedure_args['geo_col'] = self._geocol_select(geo_field, field_name)
-
- return procedure_args, geo_field
-
- def _spatial_aggregate(self, aggregate, field_name=None,
- geo_field_type=None, tolerance=0.05):
- """
- DRY routine for calling aggregate spatial stored procedures and
- returning their result to the caller of the function.
- """
- # Getting the field the geographic aggregate will be called on.
- geo_field = self.query._geo_field(field_name)
- if not geo_field:
- raise TypeError('%s aggregate only available on GeometryFields.' % aggregate.name)
-
- # Checking if there are any geo field type limitations on this
- # aggregate (e.g. ST_Makeline only operates on PointFields).
- if not geo_field_type is None and not isinstance(geo_field, geo_field_type):
- raise TypeError('%s aggregate may only be called on %ss.' % (aggregate.name, geo_field_type.__name__))
-
- # Getting the string expression of the field name, as this is the
- # argument taken by `Aggregate` objects.
- agg_col = field_name or geo_field.name
-
- # Adding any keyword parameters for the Aggregate object. Oracle backends
- # in particular need an additional `tolerance` parameter.
- agg_kwargs = {}
- if connections[self.db].ops.oracle: agg_kwargs['tolerance'] = tolerance
-
- # Calling the QuerySet.aggregate, and returning only the value of the aggregate.
- return self.aggregate(geoagg=aggregate(agg_col, **agg_kwargs))['geoagg']
-
- def _spatial_attribute(self, att, settings, field_name=None, model_att=None):
- """
- DRY routine for calling a spatial stored procedure on a geometry column
- and attaching its output as an attribute of the model.
-
- Arguments:
- att:
- The name of the spatial attribute that holds the spatial
- SQL function to call.
-
- settings:
- Dictonary of internal settings to customize for the spatial procedure.
-
- Public Keyword Arguments:
-
- field_name:
- The name of the geographic field to call the spatial
- function on. May also be a lookup to a geometry field
- as part of a foreign key relation.
-
- model_att:
- The name of the model attribute to attach the output of
- the spatial function to.
- """
- # Default settings.
- settings.setdefault('desc', None)
- settings.setdefault('geom_args', ())
- settings.setdefault('geom_field', None)
- settings.setdefault('procedure_args', {})
- settings.setdefault('procedure_fmt', '%(geo_col)s')
- settings.setdefault('select_params', [])
-
- connection = connections[self.db]
- backend = connection.ops
-
- # Performing setup for the spatial column, unless told not to.
- if settings.get('setup', True):
- default_args, geo_field = self._spatial_setup(att, desc=settings['desc'], field_name=field_name,
- geo_field_type=settings.get('geo_field_type', None))
- for k, v in six.iteritems(default_args): settings['procedure_args'].setdefault(k, v)
- else:
- geo_field = settings['geo_field']
-
- # The attribute to attach to the model.
- if not isinstance(model_att, six.string_types): model_att = att
-
- # Special handling for any argument that is a geometry.
- for name in settings['geom_args']:
- # Using the field's get_placeholder() routine to get any needed
- # transformation SQL.
- geom = geo_field.get_prep_value(settings['procedure_args'][name])
- params = geo_field.get_db_prep_lookup('contains', geom, connection=connection)
- geom_placeholder = geo_field.get_placeholder(geom, connection)
-
- # Replacing the procedure format with that of any needed
- # transformation SQL.
- old_fmt = '%%(%s)s' % name
- new_fmt = geom_placeholder % '%%s'
- settings['procedure_fmt'] = settings['procedure_fmt'].replace(old_fmt, new_fmt)
- settings['select_params'].extend(params)
-
- # Getting the format for the stored procedure.
- fmt = '%%(function)s(%s)' % settings['procedure_fmt']
-
- # If the result of this function needs to be converted.
- if settings.get('select_field', False):
- sel_fld = settings['select_field']
- if isinstance(sel_fld, GeomField) and backend.select:
- self.query.custom_select[model_att] = backend.select
- if connection.ops.oracle:
- sel_fld.empty_strings_allowed = False
- self.query.extra_select_fields[model_att] = sel_fld
-
- # Finally, setting the extra selection attribute with
- # the format string expanded with the stored procedure
- # arguments.
- return self.extra(select={model_att : fmt % settings['procedure_args']},
- select_params=settings['select_params'])
-
- def _distance_attribute(self, func, geom=None, tolerance=0.05, spheroid=False, **kwargs):
- """
- DRY routine for GeoQuerySet distance attribute routines.
- """
- # Setting up the distance procedure arguments.
- procedure_args, geo_field = self._spatial_setup(func, field_name=kwargs.get('field_name', None))
-
- # If geodetic defaulting distance attribute to meters (Oracle and
- # PostGIS spherical distances return meters). Otherwise, use the
- # units of the geometry field.
- connection = connections[self.db]
- geodetic = geo_field.geodetic(connection)
- geography = geo_field.geography
-
- if geodetic:
- dist_att = 'm'
- else:
- dist_att = Distance.unit_attname(geo_field.units_name(connection))
-
- # Shortcut booleans for what distance function we're using and
- # whether the geometry field is 3D.
- distance = func == 'distance'
- length = func == 'length'
- perimeter = func == 'perimeter'
- if not (distance or length or perimeter):
- raise ValueError('Unknown distance function: %s' % func)
- geom_3d = geo_field.dim == 3
-
- # The field's get_db_prep_lookup() is used to get any
- # extra distance parameters. Here we set up the
- # parameters that will be passed in to field's function.
- lookup_params = [geom or 'POINT (0 0)', 0]
-
- # Getting the spatial backend operations.
- backend = connection.ops
-
- # If the spheroid calculation is desired, either by the `spheroid`
- # keyword or when calculating the length of geodetic field, make
- # sure the 'spheroid' distance setting string is passed in so we
- # get the correct spatial stored procedure.
- if spheroid or (backend.postgis and geodetic and
- (not geography) and length):
- lookup_params.append('spheroid')
- lookup_params = geo_field.get_prep_value(lookup_params)
- params = geo_field.get_db_prep_lookup('distance_lte', lookup_params, connection=connection)
-
- # The `geom_args` flag is set to true if a geometry parameter was
- # passed in.
- geom_args = bool(geom)
-
- if backend.oracle:
- if distance:
- procedure_fmt = '%(geo_col)s,%(geom)s,%(tolerance)s'
- elif length or perimeter:
- procedure_fmt = '%(geo_col)s,%(tolerance)s'
- procedure_args['tolerance'] = tolerance
- else:
- # Getting whether this field is in units of degrees since the field may have
- # been transformed via the `transform` GeoQuerySet method.
- if self.query.transformed_srid:
- u, unit_name, s = get_srid_info(self.query.transformed_srid, connection)
- geodetic = unit_name in geo_field.geodetic_units
-
- if backend.spatialite and geodetic:
- raise ValueError('SQLite does not support linear distance calculations on geodetic coordinate systems.')
-
- if distance:
- if self.query.transformed_srid:
- # Setting the `geom_args` flag to false because we want to handle
- # transformation SQL here, rather than the way done by default
- # (which will transform to the original SRID of the field rather
- # than to what was transformed to).
- geom_args = False
- procedure_fmt = '%s(%%(geo_col)s, %s)' % (backend.transform, self.query.transformed_srid)
- if geom.srid is None or geom.srid == self.query.transformed_srid:
- # If the geom parameter srid is None, it is assumed the coordinates
- # are in the transformed units. A placeholder is used for the
- # geometry parameter. `GeomFromText` constructor is also needed
- # to wrap geom placeholder for SpatiaLite.
- if backend.spatialite:
- procedure_fmt += ', %s(%%%%s, %s)' % (backend.from_text, self.query.transformed_srid)
- else:
- procedure_fmt += ', %%s'
- else:
- # We need to transform the geom to the srid specified in `transform()`,
- # so wrapping the geometry placeholder in transformation SQL.
- # SpatiaLite also needs geometry placeholder wrapped in `GeomFromText`
- # constructor.
- if backend.spatialite:
- procedure_fmt += ', %s(%s(%%%%s, %s), %s)' % (backend.transform, backend.from_text,
- geom.srid, self.query.transformed_srid)
- else:
- procedure_fmt += ', %s(%%%%s, %s)' % (backend.transform, self.query.transformed_srid)
- else:
- # `transform()` was not used on this GeoQuerySet.
- procedure_fmt = '%(geo_col)s,%(geom)s'
-
- if not geography and geodetic:
- # Spherical distance calculation is needed (because the geographic
- # field is geodetic). However, the PostGIS ST_distance_sphere/spheroid()
- # procedures may only do queries from point columns to point geometries
- # some error checking is required.
- if not backend.geography:
- if not isinstance(geo_field, PointField):
- raise ValueError('Spherical distance calculation only supported on PointFields.')
- if not str(Geometry(memoryview(params[0].ewkb)).geom_type) == 'Point':
- raise ValueError('Spherical distance calculation only supported with Point Geometry parameters')
- # The `function` procedure argument needs to be set differently for
- # geodetic distance calculations.
- if spheroid:
- # Call to distance_spheroid() requires spheroid param as well.
- procedure_fmt += ",'%(spheroid)s'"
- procedure_args.update({'function' : backend.distance_spheroid, 'spheroid' : params[1]})
- else:
- procedure_args.update({'function' : backend.distance_sphere})
- elif length or perimeter:
- procedure_fmt = '%(geo_col)s'
- if not geography and geodetic and length:
- # There's no `length_sphere`, and `length_spheroid` also
- # works on 3D geometries.
- procedure_fmt += ",'%(spheroid)s'"
- procedure_args.update({'function' : backend.length_spheroid, 'spheroid' : params[1]})
- elif geom_3d and backend.postgis:
- # Use 3D variants of perimeter and length routines on PostGIS.
- if perimeter:
- procedure_args.update({'function' : backend.perimeter3d})
- elif length:
- procedure_args.update({'function' : backend.length3d})
-
- # Setting up the settings for `_spatial_attribute`.
- s = {'select_field' : DistanceField(dist_att),
- 'setup' : False,
- 'geo_field' : geo_field,
- 'procedure_args' : procedure_args,
- 'procedure_fmt' : procedure_fmt,
- }
- if geom_args:
- s['geom_args'] = ('geom',)
- s['procedure_args']['geom'] = geom
- elif geom:
- # The geometry is passed in as a parameter because we handled
- # transformation conditions in this routine.
- s['select_params'] = [backend.Adapter(geom)]
- return self._spatial_attribute(func, s, **kwargs)
-
- def _geom_attribute(self, func, tolerance=0.05, **kwargs):
- """
- DRY routine for setting up a GeoQuerySet method that attaches a
- Geometry attribute (e.g., `centroid`, `point_on_surface`).
- """
- s = {'select_field' : GeomField(),}
- if connections[self.db].ops.oracle:
- s['procedure_fmt'] = '%(geo_col)s,%(tolerance)s'
- s['procedure_args'] = {'tolerance' : tolerance}
- return self._spatial_attribute(func, s, **kwargs)
-
- def _geomset_attribute(self, func, geom, tolerance=0.05, **kwargs):
- """
- DRY routine for setting up a GeoQuerySet method that attaches a
- Geometry attribute and takes a Geoemtry parameter. This is used
- for geometry set-like operations (e.g., intersection, difference,
- union, sym_difference).
- """
- s = {'geom_args' : ('geom',),
- 'select_field' : GeomField(),
- 'procedure_fmt' : '%(geo_col)s,%(geom)s',
- 'procedure_args' : {'geom' : geom},
- }
- if connections[self.db].ops.oracle:
- s['procedure_fmt'] += ',%(tolerance)s'
- s['procedure_args']['tolerance'] = tolerance
- return self._spatial_attribute(func, s, **kwargs)
-
- def _geocol_select(self, geo_field, field_name):
- """
- Helper routine for constructing the SQL to select the geographic
- column. Takes into account if the geographic field is in a
- ForeignKey relation to the current model.
- """
- opts = self.model._meta
- if not geo_field in opts.fields:
- # Is this operation going to be on a related geographic field?
- # If so, it'll have to be added to the select related information
- # (e.g., if 'location__point' was given as the field name).
- self.query.add_select_related([field_name])
- compiler = self.query.get_compiler(self.db)
- compiler.pre_sql_setup()
- for (rel_table, rel_col), field in self.query.related_select_cols:
- if field == geo_field:
- return compiler._field_column(geo_field, rel_table)
- raise ValueError("%r not in self.query.related_select_cols" % geo_field)
- elif not geo_field in opts.local_fields:
- # This geographic field is inherited from another model, so we have to
- # use the db table for the _parent_ model instead.
- tmp_fld, parent_model, direct, m2m = opts.get_field_by_name(geo_field.name)
- return self.query.get_compiler(self.db)._field_column(geo_field, parent_model._meta.db_table)
- else:
- return self.query.get_compiler(self.db)._field_column(geo_field)
-
-class GeoValuesQuerySet(ValuesQuerySet):
- def __init__(self, *args, **kwargs):
- super(GeoValuesQuerySet, self).__init__(*args, **kwargs)
- # This flag tells `resolve_columns` to run the values through
- # `convert_values`. This ensures that Geometry objects instead
- # of string values are returned with `values()` or `values_list()`.
- self.query.geo_values = True
-
-class GeoValuesListQuerySet(GeoValuesQuerySet, ValuesListQuerySet):
- pass
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/__init__.py
deleted file mode 100644
index 38d9507..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.contrib.gis.db.models.sql.conversion import AreaField, DistanceField, GeomField
-from django.contrib.gis.db.models.sql.query import GeoQuery
-from django.contrib.gis.db.models.sql.where import GeoWhereNode
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/aggregates.py b/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/aggregates.py
deleted file mode 100644
index ae848c0..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/aggregates.py
+++ /dev/null
@@ -1,62 +0,0 @@
-from django.db.models.sql.aggregates import *
-from django.contrib.gis.db.models.fields import GeometryField
-
-class GeoAggregate(Aggregate):
- # Default SQL template for spatial aggregates.
- sql_template = '%(function)s(%(field)s)'
-
- # Conversion class, if necessary.
- conversion_class = None
-
- # Flags for indicating the type of the aggregate.
- is_extent = False
-
- def __init__(self, col, source=None, is_summary=False, tolerance=0.05, **extra):
- super(GeoAggregate, self).__init__(col, source, is_summary, **extra)
-
- # Required by some Oracle aggregates.
- self.tolerance = tolerance
-
- # Can't use geographic aggregates on non-geometry fields.
- if not isinstance(self.source, GeometryField):
- raise ValueError('Geospatial aggregates only allowed on geometry fields.')
-
- def as_sql(self, qn, connection):
- "Return the aggregate, rendered as SQL with parameters."
-
- if connection.ops.oracle:
- self.extra['tolerance'] = self.tolerance
-
- params = []
-
- if hasattr(self.col, 'as_sql'):
- field_name, params = self.col.as_sql(qn, connection)
- elif isinstance(self.col, (list, tuple)):
- field_name = '.'.join([qn(c) for c in self.col])
- else:
- field_name = self.col
-
- sql_template, sql_function = connection.ops.spatial_aggregate_sql(self)
-
- substitutions = {
- 'function': sql_function,
- 'field': field_name
- }
- substitutions.update(self.extra)
-
- return sql_template % substitutions, params
-
-class Collect(GeoAggregate):
- pass
-
-class Extent(GeoAggregate):
- is_extent = '2D'
-
-class Extent3D(GeoAggregate):
- is_extent = '3D'
-
-class MakeLine(GeoAggregate):
- pass
-
-class Union(GeoAggregate):
- pass
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/compiler.py b/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/compiler.py
deleted file mode 100644
index 3fc9c17..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/compiler.py
+++ /dev/null
@@ -1,313 +0,0 @@
-import datetime
-
-from django.conf import settings
-from django.db.backends.util import truncate_name, typecast_date, typecast_timestamp
-from django.db.models.sql import compiler
-from django.db.models.sql.constants import MULTI
-from django.utils import six
-from django.utils.six.moves import zip, zip_longest
-from django.utils import timezone
-
-SQLCompiler = compiler.SQLCompiler
-
-class GeoSQLCompiler(compiler.SQLCompiler):
-
- def get_columns(self, with_aliases=False):
- """
- Return the list of columns to use in the select statement. If no
- columns have been specified, returns all columns relating to fields in
- the model.
-
- If 'with_aliases' is true, any column names that are duplicated
- (without the table names) are given unique aliases. This is needed in
- some cases to avoid ambiguitity with nested queries.
-
- This routine is overridden from Query to handle customized selection of
- geometry columns.
- """
- qn = self.quote_name_unless_alias
- qn2 = self.connection.ops.quote_name
- result = ['(%s) AS %s' % (self.get_extra_select_format(alias) % col[0], qn2(alias))
- for alias, col in six.iteritems(self.query.extra_select)]
- params = []
- aliases = set(self.query.extra_select.keys())
- if with_aliases:
- col_aliases = aliases.copy()
- else:
- col_aliases = set()
- if self.query.select:
- only_load = self.deferred_to_columns()
- # This loop customized for GeoQuery.
- for col, field in self.query.select:
- if isinstance(col, (list, tuple)):
- alias, column = col
- table = self.query.alias_map[alias].table_name
- if table in only_load and column not in only_load[table]:
- continue
- r = self.get_field_select(field, alias, column)
- if with_aliases:
- if col[1] in col_aliases:
- c_alias = 'Col%d' % len(col_aliases)
- result.append('%s AS %s' % (r, c_alias))
- aliases.add(c_alias)
- col_aliases.add(c_alias)
- else:
- result.append('%s AS %s' % (r, qn2(col[1])))
- aliases.add(r)
- col_aliases.add(col[1])
- else:
- result.append(r)
- aliases.add(r)
- col_aliases.add(col[1])
- else:
- col_sql, col_params = col.as_sql(qn, self.connection)
- result.append(col_sql)
- params.extend(col_params)
-
- if hasattr(col, 'alias'):
- aliases.add(col.alias)
- col_aliases.add(col.alias)
-
- elif self.query.default_cols:
- cols, new_aliases = self.get_default_columns(with_aliases,
- col_aliases)
- result.extend(cols)
- aliases.update(new_aliases)
-
- max_name_length = self.connection.ops.max_name_length()
- for alias, aggregate in self.query.aggregate_select.items():
- agg_sql, agg_params = aggregate.as_sql(qn, self.connection)
- if alias is None:
- result.append(agg_sql)
- else:
- result.append('%s AS %s' % (agg_sql, qn(truncate_name(alias, max_name_length))))
- params.extend(agg_params)
-
- # This loop customized for GeoQuery.
- for (table, col), field in self.query.related_select_cols:
- r = self.get_field_select(field, table, col)
- if with_aliases and col in col_aliases:
- c_alias = 'Col%d' % len(col_aliases)
- result.append('%s AS %s' % (r, c_alias))
- aliases.add(c_alias)
- col_aliases.add(c_alias)
- else:
- result.append(r)
- aliases.add(r)
- col_aliases.add(col)
-
- self._select_aliases = aliases
- return result, params
-
- def get_default_columns(self, with_aliases=False, col_aliases=None,
- start_alias=None, opts=None, as_pairs=False, from_parent=None):
- """
- Computes the default columns for selecting every field in the base
- model. Will sometimes be called to pull in related models (e.g. via
- select_related), in which case "opts" and "start_alias" will be given
- to provide a starting point for the traversal.
-
- Returns a list of strings, quoted appropriately for use in SQL
- directly, as well as a set of aliases used in the select statement (if
- 'as_pairs' is True, returns a list of (alias, col_name) pairs instead
- of strings as the first component and None as the second component).
-
- This routine is overridden from Query to handle customized selection of
- geometry columns.
- """
- result = []
- if opts is None:
- opts = self.query.get_meta()
- aliases = set()
- only_load = self.deferred_to_columns()
- seen = self.query.included_inherited_models.copy()
- if start_alias:
- seen[None] = start_alias
- for field, model in opts.get_concrete_fields_with_model():
- if from_parent and model is not None and issubclass(from_parent, model):
- # Avoid loading data for already loaded parents.
- continue
- alias = self.query.join_parent_model(opts, model, start_alias, seen)
- table = self.query.alias_map[alias].table_name
- if table in only_load and field.column not in only_load[table]:
- continue
- if as_pairs:
- result.append((alias, field))
- aliases.add(alias)
- continue
- # This part of the function is customized for GeoQuery. We
- # see if there was any custom selection specified in the
- # dictionary, and set up the selection format appropriately.
- field_sel = self.get_field_select(field, alias)
- if with_aliases and field.column in col_aliases:
- c_alias = 'Col%d' % len(col_aliases)
- result.append('%s AS %s' % (field_sel, c_alias))
- col_aliases.add(c_alias)
- aliases.add(c_alias)
- else:
- r = field_sel
- result.append(r)
- aliases.add(r)
- if with_aliases:
- col_aliases.add(field.column)
- return result, aliases
-
- def resolve_columns(self, row, fields=()):
- """
- This routine is necessary so that distances and geometries returned
- from extra selection SQL get resolved appropriately into Python
- objects.
- """
- values = []
- aliases = list(self.query.extra_select)
-
- # Have to set a starting row number offset that is used for
- # determining the correct starting row index -- needed for
- # doing pagination with Oracle.
- rn_offset = 0
- if self.connection.ops.oracle:
- if self.query.high_mark is not None or self.query.low_mark: rn_offset = 1
- index_start = rn_offset + len(aliases)
-
- # Converting any extra selection values (e.g., geometries and
- # distance objects added by GeoQuerySet methods).
- values = [self.query.convert_values(v,
- self.query.extra_select_fields.get(a, None),
- self.connection)
- for v, a in zip(row[rn_offset:index_start], aliases)]
- if self.connection.ops.oracle or getattr(self.query, 'geo_values', False):
- # We resolve the rest of the columns if we're on Oracle or if
- # the `geo_values` attribute is defined.
- for value, field in zip_longest(row[index_start:], fields):
- values.append(self.query.convert_values(value, field, self.connection))
- else:
- values.extend(row[index_start:])
- return tuple(values)
-
- #### Routines unique to GeoQuery ####
- def get_extra_select_format(self, alias):
- sel_fmt = '%s'
- if hasattr(self.query, 'custom_select') and alias in self.query.custom_select:
- sel_fmt = sel_fmt % self.query.custom_select[alias]
- return sel_fmt
-
- def get_field_select(self, field, alias=None, column=None):
- """
- Returns the SELECT SQL string for the given field. Figures out
- if any custom selection SQL is needed for the column The `alias`
- keyword may be used to manually specify the database table where
- the column exists, if not in the model associated with this
- `GeoQuery`. Similarly, `column` may be used to specify the exact
- column name, rather than using the `column` attribute on `field`.
- """
- sel_fmt = self.get_select_format(field)
- if field in self.query.custom_select:
- field_sel = sel_fmt % self.query.custom_select[field]
- else:
- field_sel = sel_fmt % self._field_column(field, alias, column)
- return field_sel
-
- def get_select_format(self, fld):
- """
- Returns the selection format string, depending on the requirements
- of the spatial backend. For example, Oracle and MySQL require custom
- selection formats in order to retrieve geometries in OGC WKT. For all
- other fields a simple '%s' format string is returned.
- """
- if self.connection.ops.select and hasattr(fld, 'geom_type'):
- # This allows operations to be done on fields in the SELECT,
- # overriding their values -- used by the Oracle and MySQL
- # spatial backends to get database values as WKT, and by the
- # `transform` method.
- sel_fmt = self.connection.ops.select
-
- # Because WKT doesn't contain spatial reference information,
- # the SRID is prefixed to the returned WKT to ensure that the
- # transformed geometries have an SRID different than that of the
- # field -- this is only used by `transform` for Oracle and
- # SpatiaLite backends.
- if self.query.transformed_srid and ( self.connection.ops.oracle or
- self.connection.ops.spatialite ):
- sel_fmt = "'SRID=%d;'||%s" % (self.query.transformed_srid, sel_fmt)
- else:
- sel_fmt = '%s'
- return sel_fmt
-
- # Private API utilities, subject to change.
- def _field_column(self, field, table_alias=None, column=None):
- """
- Helper function that returns the database column for the given field.
- The table and column are returned (quoted) in the proper format, e.g.,
- `"geoapp_city"."point"`. If `table_alias` is not specified, the
- database table associated with the model of this `GeoQuery` will be
- used. If `column` is specified, it will be used instead of the value
- in `field.column`.
- """
- if table_alias is None: table_alias = self.query.get_meta().db_table
- return "%s.%s" % (self.quote_name_unless_alias(table_alias),
- self.connection.ops.quote_name(column or field.column))
-
-class SQLInsertCompiler(compiler.SQLInsertCompiler, GeoSQLCompiler):
- pass
-
-class SQLDeleteCompiler(compiler.SQLDeleteCompiler, GeoSQLCompiler):
- pass
-
-class SQLUpdateCompiler(compiler.SQLUpdateCompiler, GeoSQLCompiler):
- pass
-
-class SQLAggregateCompiler(compiler.SQLAggregateCompiler, GeoSQLCompiler):
- pass
-
-class SQLDateCompiler(compiler.SQLDateCompiler, GeoSQLCompiler):
- """
- This is overridden for GeoDjango to properly cast date columns, since
- `GeoQuery.resolve_columns` is used for spatial values.
- See #14648, #16757.
- """
- def results_iter(self):
- if self.connection.ops.oracle:
- from django.db.models.fields import DateTimeField
- fields = [DateTimeField()]
- else:
- needs_string_cast = self.connection.features.needs_datetime_string_cast
-
- offset = len(self.query.extra_select)
- for rows in self.execute_sql(MULTI):
- for row in rows:
- date = row[offset]
- if self.connection.ops.oracle:
- date = self.resolve_columns(row, fields)[offset]
- elif needs_string_cast:
- date = typecast_date(str(date))
- if isinstance(date, datetime.datetime):
- date = date.date()
- yield date
-
-class SQLDateTimeCompiler(compiler.SQLDateTimeCompiler, GeoSQLCompiler):
- """
- This is overridden for GeoDjango to properly cast date columns, since
- `GeoQuery.resolve_columns` is used for spatial values.
- See #14648, #16757.
- """
- def results_iter(self):
- if self.connection.ops.oracle:
- from django.db.models.fields import DateTimeField
- fields = [DateTimeField()]
- else:
- needs_string_cast = self.connection.features.needs_datetime_string_cast
-
- offset = len(self.query.extra_select)
- for rows in self.execute_sql(MULTI):
- for row in rows:
- datetime = row[offset]
- if self.connection.ops.oracle:
- datetime = self.resolve_columns(row, fields)[offset]
- elif needs_string_cast:
- datetime = typecast_timestamp(str(datetime))
- # Datetimes are artifically returned in UTC on databases that
- # don't support time zone. Restore the zone used in the query.
- if settings.USE_TZ:
- datetime = datetime.replace(tzinfo=None)
- datetime = timezone.make_aware(datetime, self.query.tzinfo)
- yield datetime
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/conversion.py b/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/conversion.py
deleted file mode 100644
index 160b623..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/conversion.py
+++ /dev/null
@@ -1,27 +0,0 @@
-"""
-This module holds simple classes used by GeoQuery.convert_values
-to convert geospatial values from the database.
-"""
-
-class BaseField(object):
- empty_strings_allowed = True
- def get_internal_type(self):
- "Overloaded method so OracleQuery.convert_values doesn't balk."
- return None
-
-class AreaField(BaseField):
- "Wrapper for Area values."
- def __init__(self, area_att):
- self.area_att = area_att
-
-class DistanceField(BaseField):
- "Wrapper for Distance values."
- def __init__(self, distance_att):
- self.distance_att = distance_att
-
-class GeomField(BaseField):
- """
- Wrapper for Geometry values. It is a lightweight alternative to
- using GeometryField (which requires an SQL query upon instantiation).
- """
- pass
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/query.py b/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/query.py
deleted file mode 100644
index 5877f29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/query.py
+++ /dev/null
@@ -1,121 +0,0 @@
-from django.db import connections
-from django.db.models.query import sql
-
-from django.contrib.gis.db.models.fields import GeometryField
-from django.contrib.gis.db.models.sql import aggregates as gis_aggregates
-from django.contrib.gis.db.models.sql.conversion import AreaField, DistanceField, GeomField
-from django.contrib.gis.db.models.sql.where import GeoWhereNode
-from django.contrib.gis.geometry.backend import Geometry
-from django.contrib.gis.measure import Area, Distance
-
-
-ALL_TERMS = set([
- 'bbcontains', 'bboverlaps', 'contained', 'contains',
- 'contains_properly', 'coveredby', 'covers', 'crosses', 'disjoint',
- 'distance_gt', 'distance_gte', 'distance_lt', 'distance_lte',
- 'dwithin', 'equals', 'exact',
- 'intersects', 'overlaps', 'relate', 'same_as', 'touches', 'within',
- 'left', 'right', 'overlaps_left', 'overlaps_right',
- 'overlaps_above', 'overlaps_below',
- 'strictly_above', 'strictly_below'
- ])
-ALL_TERMS.update(sql.constants.QUERY_TERMS)
-
-class GeoQuery(sql.Query):
- """
- A single spatial SQL query.
- """
- # Overridding the valid query terms.
- query_terms = ALL_TERMS
- aggregates_module = gis_aggregates
-
- compiler = 'GeoSQLCompiler'
-
- #### Methods overridden from the base Query class ####
- def __init__(self, model, where=GeoWhereNode):
- super(GeoQuery, self).__init__(model, where)
- # The following attributes are customized for the GeoQuerySet.
- # The GeoWhereNode and SpatialBackend classes contain backend-specific
- # routines and functions.
- self.custom_select = {}
- self.transformed_srid = None
- self.extra_select_fields = {}
-
- def clone(self, *args, **kwargs):
- obj = super(GeoQuery, self).clone(*args, **kwargs)
- # Customized selection dictionary and transformed srid flag have
- # to also be added to obj.
- obj.custom_select = self.custom_select.copy()
- obj.transformed_srid = self.transformed_srid
- obj.extra_select_fields = self.extra_select_fields.copy()
- return obj
-
- def convert_values(self, value, field, connection):
- """
- Using the same routines that Oracle does we can convert our
- extra selection objects into Geometry and Distance objects.
- TODO: Make converted objects 'lazy' for less overhead.
- """
- if connection.ops.oracle:
- # Running through Oracle's first.
- value = super(GeoQuery, self).convert_values(value, field or GeomField(), connection)
-
- if value is None:
- # Output from spatial function is NULL (e.g., called
- # function on a geometry field with NULL value).
- pass
- elif isinstance(field, DistanceField):
- # Using the field's distance attribute, can instantiate
- # `Distance` with the right context.
- value = Distance(**{field.distance_att : value})
- elif isinstance(field, AreaField):
- value = Area(**{field.area_att : value})
- elif isinstance(field, (GeomField, GeometryField)) and value:
- value = Geometry(value)
- elif field is not None:
- return super(GeoQuery, self).convert_values(value, field, connection)
- return value
-
- def get_aggregation(self, using):
- # Remove any aggregates marked for reduction from the subquery
- # and move them to the outer AggregateQuery.
- connection = connections[using]
- for alias, aggregate in self.aggregate_select.items():
- if isinstance(aggregate, gis_aggregates.GeoAggregate):
- if not getattr(aggregate, 'is_extent', False) or connection.ops.oracle:
- self.extra_select_fields[alias] = GeomField()
- return super(GeoQuery, self).get_aggregation(using)
-
- def resolve_aggregate(self, value, aggregate, connection):
- """
- Overridden from GeoQuery's normalize to handle the conversion of
- GeoAggregate objects.
- """
- if isinstance(aggregate, self.aggregates_module.GeoAggregate):
- if aggregate.is_extent:
- if aggregate.is_extent == '3D':
- return connection.ops.convert_extent3d(value)
- else:
- return connection.ops.convert_extent(value)
- else:
- return connection.ops.convert_geom(value, aggregate.source)
- else:
- return super(GeoQuery, self).resolve_aggregate(value, aggregate, connection)
-
- # Private API utilities, subject to change.
- def _geo_field(self, field_name=None):
- """
- Returns the first Geometry field encountered; or specified via the
- `field_name` keyword. The `field_name` may be a string specifying
- the geometry field on this GeoQuery's model, or a lookup string
- to a geometry field via a ForeignKey relation.
- """
- if field_name is None:
- # Incrementing until the first geographic field is found.
- for fld in self.model._meta.fields:
- if isinstance(fld, GeometryField): return fld
- return False
- else:
- # Otherwise, check by the given field name -- which may be
- # a lookup to a _related_ geographic field.
- return GeoWhereNode._check_geo_field(self.model._meta, field_name)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/where.py b/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/where.py
deleted file mode 100644
index c29533b..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/db/models/sql/where.py
+++ /dev/null
@@ -1,91 +0,0 @@
-from django.db.models.constants import LOOKUP_SEP
-from django.db.models.fields import FieldDoesNotExist
-from django.db.models.sql.expressions import SQLEvaluator
-from django.db.models.sql.where import Constraint, WhereNode
-from django.contrib.gis.db.models.fields import GeometryField
-
-class GeoConstraint(Constraint):
- """
- This subclass overrides `process` to better handle geographic SQL
- construction.
- """
- def __init__(self, init_constraint):
- self.alias = init_constraint.alias
- self.col = init_constraint.col
- self.field = init_constraint.field
-
- def process(self, lookup_type, value, connection):
- if isinstance(value, SQLEvaluator):
- # Make sure the F Expression destination field exists, and
- # set an `srid` attribute with the same as that of the
- # destination.
- geo_fld = GeoWhereNode._check_geo_field(value.opts, value.expression.name)
- if not geo_fld:
- raise ValueError('No geographic field found in expression.')
- value.srid = geo_fld.srid
- db_type = self.field.db_type(connection=connection)
- params = self.field.get_db_prep_lookup(lookup_type, value, connection=connection)
- return (self.alias, self.col, db_type), params
-
-class GeoWhereNode(WhereNode):
- """
- Used to represent the SQL where-clause for spatial databases --
- these are tied to the GeoQuery class that created it.
- """
-
- def _prepare_data(self, data):
- if isinstance(data, (list, tuple)):
- obj, lookup_type, value = data
- if ( isinstance(obj, Constraint) and
- isinstance(obj.field, GeometryField) ):
- data = (GeoConstraint(obj), lookup_type, value)
- return super(GeoWhereNode, self)._prepare_data(data)
-
- def make_atom(self, child, qn, connection):
- lvalue, lookup_type, value_annot, params_or_value = child
- if isinstance(lvalue, GeoConstraint):
- data, params = lvalue.process(lookup_type, params_or_value, connection)
- spatial_sql, spatial_params = connection.ops.spatial_lookup_sql(
- data, lookup_type, params_or_value, lvalue.field, qn)
- return spatial_sql, spatial_params + params
- else:
- return super(GeoWhereNode, self).make_atom(child, qn, connection)
-
- @classmethod
- def _check_geo_field(cls, opts, lookup):
- """
- Utility for checking the given lookup with the given model options.
- The lookup is a string either specifying the geographic field, e.g.
- 'point, 'the_geom', or a related lookup on a geographic field like
- 'address__point'.
-
- If a GeometryField exists according to the given lookup on the model
- options, it will be returned. Otherwise returns None.
- """
- # This takes into account the situation where the lookup is a
- # lookup to a related geographic field, e.g., 'address__point'.
- field_list = lookup.split(LOOKUP_SEP)
-
- # Reversing so list operates like a queue of related lookups,
- # and popping the top lookup.
- field_list.reverse()
- fld_name = field_list.pop()
-
- try:
- geo_fld = opts.get_field(fld_name)
- # If the field list is still around, then it means that the
- # lookup was for a geometry field across a relationship --
- # thus we keep on getting the related model options and the
- # model field associated with the next field in the list
- # until there's no more left.
- while len(field_list):
- opts = geo_fld.rel.to._meta
- geo_fld = opts.get_field(field_list.pop())
- except (FieldDoesNotExist, AttributeError):
- return False
-
- # Finally, make sure we got a Geographic field and return.
- if isinstance(geo_fld, GeometryField):
- return geo_fld
- else:
- return False
diff --git a/lib/python2.7/site-packages/django/contrib/gis/feeds.py b/lib/python2.7/site-packages/django/contrib/gis/feeds.py
deleted file mode 100644
index d7c52bf..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/feeds.py
+++ /dev/null
@@ -1,137 +0,0 @@
-from __future__ import unicode_literals
-
-from django.contrib.syndication.views import Feed as BaseFeed
-from django.utils.feedgenerator import Atom1Feed, Rss201rev2Feed
-
-class GeoFeedMixin(object):
- """
- This mixin provides the necessary routines for SyndicationFeed subclasses
- to produce simple GeoRSS or W3C Geo elements.
- """
-
- def georss_coords(self, coords):
- """
- In GeoRSS coordinate pairs are ordered by lat/lon and separated by
- a single white space. Given a tuple of coordinates, this will return
- a unicode GeoRSS representation.
- """
- return ' '.join(['%f %f' % (coord[1], coord[0]) for coord in coords])
-
- def add_georss_point(self, handler, coords, w3c_geo=False):
- """
- Adds a GeoRSS point with the given coords using the given handler.
- Handles the differences between simple GeoRSS and the more pouplar
- W3C Geo specification.
- """
- if w3c_geo:
- lon, lat = coords[:2]
- handler.addQuickElement('geo:lat', '%f' % lat)
- handler.addQuickElement('geo:lon', '%f' % lon)
- else:
- handler.addQuickElement('georss:point', self.georss_coords((coords,)))
-
- def add_georss_element(self, handler, item, w3c_geo=False):
- """
- This routine adds a GeoRSS XML element using the given item and handler.
- """
- # Getting the Geometry object.
- geom = item.get('geometry', None)
- if not geom is None:
- if isinstance(geom, (list, tuple)):
- # Special case if a tuple/list was passed in. The tuple may be
- # a point or a box
- box_coords = None
- if isinstance(geom[0], (list, tuple)):
- # Box: ( (X0, Y0), (X1, Y1) )
- if len(geom) == 2:
- box_coords = geom
- else:
- raise ValueError('Only should be two sets of coordinates.')
- else:
- if len(geom) == 2:
- # Point: (X, Y)
- self.add_georss_point(handler, geom, w3c_geo=w3c_geo)
- elif len(geom) == 4:
- # Box: (X0, Y0, X1, Y1)
- box_coords = (geom[:2], geom[2:])
- else:
- raise ValueError('Only should be 2 or 4 numeric elements.')
- # If a GeoRSS box was given via tuple.
- if not box_coords is None:
- if w3c_geo: raise ValueError('Cannot use simple GeoRSS box in W3C Geo feeds.')
- handler.addQuickElement('georss:box', self.georss_coords(box_coords))
- else:
- # Getting the lower-case geometry type.
- gtype = str(geom.geom_type).lower()
- if gtype == 'point':
- self.add_georss_point(handler, geom.coords, w3c_geo=w3c_geo)
- else:
- if w3c_geo: raise ValueError('W3C Geo only supports Point geometries.')
- # For formatting consistent w/the GeoRSS simple standard:
- # http://georss.org/1.0#simple
- if gtype in ('linestring', 'linearring'):
- handler.addQuickElement('georss:line', self.georss_coords(geom.coords))
- elif gtype in ('polygon',):
- # Only support the exterior ring.
- handler.addQuickElement('georss:polygon', self.georss_coords(geom[0].coords))
- else:
- raise ValueError('Geometry type "%s" not supported.' % geom.geom_type)
-
-### SyndicationFeed subclasses ###
-class GeoRSSFeed(Rss201rev2Feed, GeoFeedMixin):
- def rss_attributes(self):
- attrs = super(GeoRSSFeed, self).rss_attributes()
- attrs['xmlns:georss'] = 'http://www.georss.org/georss'
- return attrs
-
- def add_item_elements(self, handler, item):
- super(GeoRSSFeed, self).add_item_elements(handler, item)
- self.add_georss_element(handler, item)
-
- def add_root_elements(self, handler):
- super(GeoRSSFeed, self).add_root_elements(handler)
- self.add_georss_element(handler, self.feed)
-
-class GeoAtom1Feed(Atom1Feed, GeoFeedMixin):
- def root_attributes(self):
- attrs = super(GeoAtom1Feed, self).root_attributes()
- attrs['xmlns:georss'] = 'http://www.georss.org/georss'
- return attrs
-
- def add_item_elements(self, handler, item):
- super(GeoAtom1Feed, self).add_item_elements(handler, item)
- self.add_georss_element(handler, item)
-
- def add_root_elements(self, handler):
- super(GeoAtom1Feed, self).add_root_elements(handler)
- self.add_georss_element(handler, self.feed)
-
-class W3CGeoFeed(Rss201rev2Feed, GeoFeedMixin):
- def rss_attributes(self):
- attrs = super(W3CGeoFeed, self).rss_attributes()
- attrs['xmlns:geo'] = 'http://www.w3.org/2003/01/geo/wgs84_pos#'
- return attrs
-
- def add_item_elements(self, handler, item):
- super(W3CGeoFeed, self).add_item_elements(handler, item)
- self.add_georss_element(handler, item, w3c_geo=True)
-
- def add_root_elements(self, handler):
- super(W3CGeoFeed, self).add_root_elements(handler)
- self.add_georss_element(handler, self.feed, w3c_geo=True)
-
-### Feed subclass ###
-class Feed(BaseFeed):
- """
- This is a subclass of the `Feed` from `django.contrib.syndication`.
- This allows users to define a `geometry(obj)` and/or `item_geometry(item)`
- methods on their own subclasses so that geo-referenced information may
- placed in the feed.
- """
- feed_type = GeoRSSFeed
-
- def feed_extra_kwargs(self, obj):
- return {'geometry' : self.__get_dynamic_attr('geometry', obj)}
-
- def item_extra_kwargs(self, item):
- return {'geometry' : self.__get_dynamic_attr('item_geometry', item)}
diff --git a/lib/python2.7/site-packages/django/contrib/gis/forms/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/forms/__init__.py
deleted file mode 100644
index 93a2d38..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/forms/__init__.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from django.forms import *
-from .fields import (GeometryField, GeometryCollectionField, PointField,
- MultiPointField, LineStringField, MultiLineStringField, PolygonField,
- MultiPolygonField)
-from .widgets import BaseGeometryWidget, OpenLayersWidget, OSMWidget
diff --git a/lib/python2.7/site-packages/django/contrib/gis/forms/fields.py b/lib/python2.7/site-packages/django/contrib/gis/forms/fields.py
deleted file mode 100644
index b1c0308..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/forms/fields.py
+++ /dev/null
@@ -1,137 +0,0 @@
-from __future__ import unicode_literals
-
-import warnings
-
-from django import forms
-from django.utils import six
-from django.utils.translation import ugettext_lazy as _
-
-# While this couples the geographic forms to the GEOS library,
-# it decouples from database (by not importing SpatialBackend).
-from django.contrib.gis.geos import GEOSException, GEOSGeometry, fromstr
-from .widgets import OpenLayersWidget
-
-
-class GeometryField(forms.Field):
- """
- This is the basic form field for a Geometry. Any textual input that is
- accepted by GEOSGeometry is accepted by this form. By default,
- this includes WKT, HEXEWKB, WKB (in a buffer), and GeoJSON.
- """
- widget = OpenLayersWidget
- geom_type = 'GEOMETRY'
-
- default_error_messages = {
- 'required' : _('No geometry value provided.'),
- 'invalid_geom' : _('Invalid geometry value.'),
- 'invalid_geom_type' : _('Invalid geometry type.'),
- 'transform_error' : _('An error occurred when transforming the geometry '
- 'to the SRID of the geometry form field.'),
- }
-
- def __init__(self, **kwargs):
- # Pop out attributes from the database field, or use sensible
- # defaults (e.g., allow None).
- self.srid = kwargs.pop('srid', None)
- self.geom_type = kwargs.pop('geom_type', self.geom_type)
- if 'null' in kwargs:
- kwargs.pop('null', True)
- warnings.warn("Passing 'null' keyword argument to GeometryField is deprecated.",
- DeprecationWarning, stacklevel=2)
- super(GeometryField, self).__init__(**kwargs)
- self.widget.attrs['geom_type'] = self.geom_type
-
- def to_python(self, value):
- """
- Transforms the value to a Geometry object.
- """
- if value in self.empty_values:
- return None
-
- if not isinstance(value, GEOSGeometry):
- try:
- value = GEOSGeometry(value)
- except (GEOSException, ValueError, TypeError):
- raise forms.ValidationError(self.error_messages['invalid_geom'], code='invalid_geom')
-
- # Try to set the srid
- if not value.srid:
- try:
- value.srid = self.widget.map_srid
- except AttributeError:
- if self.srid:
- value.srid = self.srid
- return value
-
- def clean(self, value):
- """
- Validates that the input value can be converted to a Geometry
- object (which is returned). A ValidationError is raised if
- the value cannot be instantiated as a Geometry.
- """
- geom = super(GeometryField, self).clean(value)
- if geom is None:
- return geom
-
- # Ensuring that the geometry is of the correct type (indicated
- # using the OGC string label).
- if str(geom.geom_type).upper() != self.geom_type and not self.geom_type == 'GEOMETRY':
- raise forms.ValidationError(self.error_messages['invalid_geom_type'], code='invalid_geom_type')
-
- # Transforming the geometry if the SRID was set.
- if self.srid and self.srid != -1 and self.srid != geom.srid:
- try:
- geom.transform(self.srid)
- except:
- raise forms.ValidationError(
- self.error_messages['transform_error'], code='transform_error')
-
- return geom
-
- def _has_changed(self, initial, data):
- """ Compare geographic value of data with its initial value. """
-
- try:
- data = self.to_python(data)
- initial = self.to_python(initial)
- except ValidationError:
- return True
-
- # Only do a geographic comparison if both values are available
- if initial and data:
- data.transform(initial.srid)
- # If the initial value was not added by the browser, the geometry
- # provided may be slightly different, the first time it is saved.
- # The comparison is done with a very low tolerance.
- return not initial.equals_exact(data, tolerance=0.000001)
- else:
- # Check for change of state of existence
- return bool(initial) != bool(data)
-
-
-class GeometryCollectionField(GeometryField):
- geom_type = 'GEOMETRYCOLLECTION'
-
-
-class PointField(GeometryField):
- geom_type = 'POINT'
-
-
-class MultiPointField(GeometryField):
- geom_type = 'MULTIPOINT'
-
-
-class LineStringField(GeometryField):
- geom_type = 'LINESTRING'
-
-
-class MultiLineStringField(GeometryField):
- geom_type = 'MULTILINESTRING'
-
-
-class PolygonField(GeometryField):
- geom_type = 'POLYGON'
-
-
-class MultiPolygonField(GeometryField):
- geom_type = 'MULTIPOLYGON'
diff --git a/lib/python2.7/site-packages/django/contrib/gis/forms/widgets.py b/lib/python2.7/site-packages/django/contrib/gis/forms/widgets.py
deleted file mode 100644
index 909684e..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/forms/widgets.py
+++ /dev/null
@@ -1,120 +0,0 @@
-from __future__ import unicode_literals
-
-import logging
-
-from django.conf import settings
-from django.contrib.gis import gdal
-from django.contrib.gis.geos import GEOSGeometry, GEOSException
-from django.forms.widgets import Widget
-from django.template import loader
-from django.utils import six
-from django.utils import translation
-
-logger = logging.getLogger('django.contrib.gis')
-
-
-class BaseGeometryWidget(Widget):
- """
- The base class for rich geometry widgets.
- Renders a map using the WKT of the geometry.
- """
- geom_type = 'GEOMETRY'
- map_srid = 4326
- map_width = 600
- map_height = 400
- display_raw = False
-
- supports_3d = False
- template_name = '' # set on subclasses
-
- def __init__(self, attrs=None):
- self.attrs = {}
- for key in ('geom_type', 'map_srid', 'map_width', 'map_height', 'display_raw'):
- self.attrs[key] = getattr(self, key)
- if attrs:
- self.attrs.update(attrs)
-
- def serialize(self, value):
- return value.wkt if value else ''
-
- def deserialize(self, value):
- try:
- return GEOSGeometry(value, self.map_srid)
- except (GEOSException, ValueError) as err:
- logger.error(
- "Error creating geometry from value '%s' (%s)" % (
- value, err)
- )
- return None
-
- def render(self, name, value, attrs=None):
- # If a string reaches here (via a validation error on another
- # field) then just reconstruct the Geometry.
- if isinstance(value, six.string_types):
- value = self.deserialize(value)
-
- if value:
- # Check that srid of value and map match
- if value.srid != self.map_srid:
- try:
- ogr = value.ogr
- ogr.transform(self.map_srid)
- value = ogr
- except gdal.OGRException as err:
- logger.error(
- "Error transforming geometry from srid '%s' to srid '%s' (%s)" % (
- value.srid, self.map_srid, err)
- )
-
- context = self.build_attrs(attrs,
- name=name,
- module='geodjango_%s' % name.replace('-','_'), # JS-safe
- serialized=self.serialize(value),
- geom_type=gdal.OGRGeomType(self.attrs['geom_type']),
- STATIC_URL=settings.STATIC_URL,
- LANGUAGE_BIDI=translation.get_language_bidi(),
- )
- return loader.render_to_string(self.template_name, context)
-
-
-class OpenLayersWidget(BaseGeometryWidget):
- template_name = 'gis/openlayers.html'
- class Media:
- js = (
- 'http://openlayers.org/api/2.11/OpenLayers.js',
- 'gis/js/OLMapWidget.js',
- )
-
-
-class OSMWidget(BaseGeometryWidget):
- """
- An OpenLayers/OpenStreetMap-based widget.
- """
- template_name = 'gis/openlayers-osm.html'
- default_lon = 5
- default_lat = 47
-
- class Media:
- js = (
- 'http://openlayers.org/api/2.11/OpenLayers.js',
- 'http://www.openstreetmap.org/openlayers/OpenStreetMap.js',
- 'gis/js/OLMapWidget.js',
- )
-
- @property
- def map_srid(self):
- # Use the official spherical mercator projection SRID on versions
- # of GDAL that support it; otherwise, fallback to 900913.
- if gdal.HAS_GDAL and gdal.GDAL_VERSION >= (1, 7):
- return 3857
- else:
- return 900913
-
- def render(self, name, value, attrs=None):
- default_attrs = {
- 'default_lon': self.default_lon,
- 'default_lat': self.default_lat,
- }
- if attrs:
- default_attrs.update(attrs)
- return super(OSMWidget, self).render(name, value, default_attrs)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/__init__.py
deleted file mode 100644
index 2aa867b..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/__init__.py
+++ /dev/null
@@ -1,55 +0,0 @@
-"""
- This module houses ctypes interfaces for GDAL objects. The following GDAL
- objects are supported:
-
- CoordTransform: Used for coordinate transformations from one spatial
- reference system to another.
-
- Driver: Wraps an OGR data source driver.
-
- DataSource: Wrapper for the OGR data source object, supports
- OGR-supported data sources.
-
- Envelope: A ctypes structure for bounding boxes (GDAL library
- not required).
-
- OGRGeometry: Object for accessing OGR Geometry functionality.
-
- OGRGeomType: A class for representing the different OGR Geometry
- types (GDAL library not required).
-
- SpatialReference: Represents OSR Spatial Reference objects.
-
- The GDAL library will be imported from the system path using the default
- library name for the current OS. The default library path may be overridden
- by setting `GDAL_LIBRARY_PATH` in your settings with the path to the GDAL C
- library on your system.
-
- GDAL links to a large number of external libraries that consume RAM when
- loaded. Thus, it may desirable to disable GDAL on systems with limited
- RAM resources -- this may be accomplished by setting `GDAL_LIBRARY_PATH`
- to a non-existant file location (e.g., `GDAL_LIBRARY_PATH='/null/path'`;
- setting to None/False/'' will not work as a string must be given).
-"""
-from django.contrib.gis.gdal.error import check_err, OGRException, OGRIndexError, SRSException
-from django.contrib.gis.gdal.geomtype import OGRGeomType
-
-# Attempting to import objects that depend on the GDAL library. The
-# HAS_GDAL flag will be set to True if the library is present on
-# the system.
-try:
- from django.contrib.gis.gdal.driver import Driver
- from django.contrib.gis.gdal.datasource import DataSource
- from django.contrib.gis.gdal.libgdal import gdal_version, gdal_full_version, GDAL_VERSION
- from django.contrib.gis.gdal.srs import SpatialReference, CoordTransform
- from django.contrib.gis.gdal.geometries import OGRGeometry
- HAS_GDAL = True
-except OGRException:
- HAS_GDAL = False
-
-try:
- from django.contrib.gis.gdal.envelope import Envelope
-except ImportError:
- # No ctypes, but don't raise an exception.
- pass
-
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/base.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/base.py
deleted file mode 100644
index e86277e..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/base.py
+++ /dev/null
@@ -1,36 +0,0 @@
-from ctypes import c_void_p
-
-from django.contrib.gis.gdal.error import GDALException
-from django.utils import six
-
-class GDALBase(object):
- """
- Base object for GDAL objects that has a pointer access property
- that controls access to the underlying C pointer.
- """
- # Initially the pointer is NULL.
- _ptr = None
-
- # Default allowed pointer type.
- ptr_type = c_void_p
-
- # Pointer access property.
- def _get_ptr(self):
- # Raise an exception if the pointer isn't valid don't
- # want to be passing NULL pointers to routines --
- # that's very bad.
- if self._ptr: return self._ptr
- else: raise GDALException('GDAL %s pointer no longer valid.' % self.__class__.__name__)
-
- def _set_ptr(self, ptr):
- # Only allow the pointer to be set with pointers of the
- # compatible type or None (NULL).
- if isinstance(ptr, six.integer_types):
- self._ptr = self.ptr_type(ptr)
- elif ptr is None or isinstance(ptr, self.ptr_type):
- self._ptr = ptr
- else:
- raise TypeError('Incompatible pointer type')
-
- ptr = property(_get_ptr, _set_ptr)
-
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/datasource.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/datasource.py
deleted file mode 100644
index c92b2e1..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/datasource.py
+++ /dev/null
@@ -1,135 +0,0 @@
-"""
- DataSource is a wrapper for the OGR Data Source object, which provides
- an interface for reading vector geometry data from many different file
- formats (including ESRI shapefiles).
-
- When instantiating a DataSource object, use the filename of a
- GDAL-supported data source. For example, a SHP file or a
- TIGER/Line file from the government.
-
- The ds_driver keyword is used internally when a ctypes pointer
- is passed in directly.
-
- Example:
- ds = DataSource('/home/foo/bar.shp')
- for layer in ds:
- for feature in layer:
- # Getting the geometry for the feature.
- g = feature.geom
-
- # Getting the 'description' field for the feature.
- desc = feature['description']
-
- # We can also increment through all of the fields
- # attached to this feature.
- for field in feature:
- # Get the name of the field (e.g. 'description')
- nm = field.name
-
- # Get the type (integer) of the field, e.g. 0 => OFTInteger
- t = field.type
-
- # Returns the value the field; OFTIntegers return ints,
- # OFTReal returns floats, all else returns string.
- val = field.value
-"""
-# ctypes prerequisites.
-from ctypes import byref
-
-# The GDAL C library, OGR exceptions, and the Layer object.
-from django.contrib.gis.gdal.base import GDALBase
-from django.contrib.gis.gdal.driver import Driver
-from django.contrib.gis.gdal.error import OGRException, OGRIndexError
-from django.contrib.gis.gdal.layer import Layer
-
-# Getting the ctypes prototypes for the DataSource.
-from django.contrib.gis.gdal.prototypes import ds as capi
-
-from django.utils.encoding import force_bytes, force_text
-from django.utils import six
-from django.utils.six.moves import xrange
-
-# For more information, see the OGR C API source code:
-# http://www.gdal.org/ogr/ogr__api_8h.html
-#
-# The OGR_DS_* routines are relevant here.
-class DataSource(GDALBase):
- "Wraps an OGR Data Source object."
-
- #### Python 'magic' routines ####
- def __init__(self, ds_input, ds_driver=False, write=False, encoding='utf-8'):
- # The write flag.
- if write:
- self._write = 1
- else:
- self._write = 0
- # See also http://trac.osgeo.org/gdal/wiki/rfc23_ogr_unicode
- self.encoding = encoding
-
- # Registering all the drivers, this needs to be done
- # _before_ we try to open up a data source.
- if not capi.get_driver_count():
- capi.register_all()
-
- if isinstance(ds_input, six.string_types):
- # The data source driver is a void pointer.
- ds_driver = Driver.ptr_type()
- try:
- # OGROpen will auto-detect the data source type.
- ds = capi.open_ds(force_bytes(ds_input), self._write, byref(ds_driver))
- except OGRException:
- # Making the error message more clear rather than something
- # like "Invalid pointer returned from OGROpen".
- raise OGRException('Could not open the datasource at "%s"' % ds_input)
- elif isinstance(ds_input, self.ptr_type) and isinstance(ds_driver, Driver.ptr_type):
- ds = ds_input
- else:
- raise OGRException('Invalid data source input type: %s' % type(ds_input))
-
- if bool(ds):
- self.ptr = ds
- self.driver = Driver(ds_driver)
- else:
- # Raise an exception if the returned pointer is NULL
- raise OGRException('Invalid data source file "%s"' % ds_input)
-
- def __del__(self):
- "Destroys this DataStructure object."
- if self._ptr: capi.destroy_ds(self._ptr)
-
- def __iter__(self):
- "Allows for iteration over the layers in a data source."
- for i in xrange(self.layer_count):
- yield self[i]
-
- def __getitem__(self, index):
- "Allows use of the index [] operator to get a layer at the index."
- if isinstance(index, six.string_types):
- l = capi.get_layer_by_name(self.ptr, force_bytes(index))
- if not l: raise OGRIndexError('invalid OGR Layer name given: "%s"' % index)
- elif isinstance(index, int):
- if index < 0 or index >= self.layer_count:
- raise OGRIndexError('index out of range')
- l = capi.get_layer(self._ptr, index)
- else:
- raise TypeError('Invalid index type: %s' % type(index))
- return Layer(l, self)
-
- def __len__(self):
- "Returns the number of layers within the data source."
- return self.layer_count
-
- def __str__(self):
- "Returns OGR GetName and Driver for the Data Source."
- return '%s (%s)' % (self.name, str(self.driver))
-
- @property
- def layer_count(self):
- "Returns the number of layers in the data source."
- return capi.get_layer_count(self._ptr)
-
- @property
- def name(self):
- "Returns the name of the data source."
- name = capi.get_ds_name(self._ptr)
- return force_text(name, self.encoding, strings_only=True)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/driver.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/driver.py
deleted file mode 100644
index 55a5d77..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/driver.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# prerequisites imports
-from ctypes import c_void_p
-from django.contrib.gis.gdal.base import GDALBase
-from django.contrib.gis.gdal.error import OGRException
-from django.contrib.gis.gdal.prototypes import ds as capi
-
-from django.utils import six
-from django.utils.encoding import force_bytes
-
-# For more information, see the OGR C API source code:
-# http://www.gdal.org/ogr/ogr__api_8h.html
-#
-# The OGR_Dr_* routines are relevant here.
-class Driver(GDALBase):
- "Wraps an OGR Data Source Driver."
-
- # Case-insensitive aliases for OGR Drivers.
- _alias = {'esri' : 'ESRI Shapefile',
- 'shp' : 'ESRI Shapefile',
- 'shape' : 'ESRI Shapefile',
- 'tiger' : 'TIGER',
- 'tiger/line' : 'TIGER',
- }
-
- def __init__(self, dr_input):
- "Initializes an OGR driver on either a string or integer input."
-
- if isinstance(dr_input, six.string_types):
- # If a string name of the driver was passed in
- self._register()
-
- # Checking the alias dictionary (case-insensitive) to see if an alias
- # exists for the given driver.
- if dr_input.lower() in self._alias:
- name = self._alias[dr_input.lower()]
- else:
- name = dr_input
-
- # Attempting to get the OGR driver by the string name.
- dr = capi.get_driver_by_name(force_bytes(name))
- elif isinstance(dr_input, int):
- self._register()
- dr = capi.get_driver(dr_input)
- elif isinstance(dr_input, c_void_p):
- dr = dr_input
- else:
- raise OGRException('Unrecognized input type for OGR Driver: %s' % str(type(dr_input)))
-
- # Making sure we get a valid pointer to the OGR Driver
- if not dr:
- raise OGRException('Could not initialize OGR Driver on input: %s' % str(dr_input))
- self.ptr = dr
-
- def __str__(self):
- "Returns the string name of the OGR Driver."
- return capi.get_driver_name(self.ptr)
-
- def _register(self):
- "Attempts to register all the data source drivers."
- # Only register all if the driver count is 0 (or else all drivers
- # will be registered over and over again)
- if not self.driver_count: capi.register_all()
-
- # Driver properties
- @property
- def driver_count(self):
- "Returns the number of OGR data source drivers registered."
- return capi.get_driver_count()
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/envelope.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/envelope.py
deleted file mode 100644
index f145526..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/envelope.py
+++ /dev/null
@@ -1,175 +0,0 @@
-"""
- The GDAL/OGR library uses an Envelope structure to hold the bounding
- box information for a geometry. The envelope (bounding box) contains
- two pairs of coordinates, one for the lower left coordinate and one
- for the upper right coordinate:
-
- +----------o Upper right; (max_x, max_y)
- | |
- | |
- | |
- Lower left (min_x, min_y) o----------+
-"""
-from ctypes import Structure, c_double
-from django.contrib.gis.gdal.error import OGRException
-
-# The OGR definition of an Envelope is a C structure containing four doubles.
-# See the 'ogr_core.h' source file for more information:
-# http://www.gdal.org/ogr/ogr__core_8h-source.html
-class OGREnvelope(Structure):
- "Represents the OGREnvelope C Structure."
- _fields_ = [("MinX", c_double),
- ("MaxX", c_double),
- ("MinY", c_double),
- ("MaxY", c_double),
- ]
-
-class Envelope(object):
- """
- The Envelope object is a C structure that contains the minimum and
- maximum X, Y coordinates for a rectangle bounding box. The naming
- of the variables is compatible with the OGR Envelope structure.
- """
-
- def __init__(self, *args):
- """
- The initialization function may take an OGREnvelope structure, 4-element
- tuple or list, or 4 individual arguments.
- """
-
- if len(args) == 1:
- if isinstance(args[0], OGREnvelope):
- # OGREnvelope (a ctypes Structure) was passed in.
- self._envelope = args[0]
- elif isinstance(args[0], (tuple, list)):
- # A tuple was passed in.
- if len(args[0]) != 4:
- raise OGRException('Incorrect number of tuple elements (%d).' % len(args[0]))
- else:
- self._from_sequence(args[0])
- else:
- raise TypeError('Incorrect type of argument: %s' % str(type(args[0])))
- elif len(args) == 4:
- # Individual parameters passed in.
- # Thanks to ww for the help
- self._from_sequence([float(a) for a in args])
- else:
- raise OGRException('Incorrect number (%d) of arguments.' % len(args))
-
- # Checking the x,y coordinates
- if self.min_x > self.max_x:
- raise OGRException('Envelope minimum X > maximum X.')
- if self.min_y > self.max_y:
- raise OGRException('Envelope minimum Y > maximum Y.')
-
- def __eq__(self, other):
- """
- Returns True if the envelopes are equivalent; can compare against
- other Envelopes and 4-tuples.
- """
- if isinstance(other, Envelope):
- return (self.min_x == other.min_x) and (self.min_y == other.min_y) and \
- (self.max_x == other.max_x) and (self.max_y == other.max_y)
- elif isinstance(other, tuple) and len(other) == 4:
- return (self.min_x == other[0]) and (self.min_y == other[1]) and \
- (self.max_x == other[2]) and (self.max_y == other[3])
- else:
- raise OGRException('Equivalence testing only works with other Envelopes.')
-
- def __str__(self):
- "Returns a string representation of the tuple."
- return str(self.tuple)
-
- def _from_sequence(self, seq):
- "Initializes the C OGR Envelope structure from the given sequence."
- self._envelope = OGREnvelope()
- self._envelope.MinX = seq[0]
- self._envelope.MinY = seq[1]
- self._envelope.MaxX = seq[2]
- self._envelope.MaxY = seq[3]
-
- def expand_to_include(self, *args):
- """
- Modifies the envelope to expand to include the boundaries of
- the passed-in 2-tuple (a point), 4-tuple (an extent) or
- envelope.
- """
- # We provide a number of different signatures for this method,
- # and the logic here is all about converting them into a
- # 4-tuple single parameter which does the actual work of
- # expanding the envelope.
- if len(args) == 1:
- if isinstance(args[0], Envelope):
- return self.expand_to_include(args[0].tuple)
- elif hasattr(args[0], 'x') and hasattr(args[0], 'y'):
- return self.expand_to_include(args[0].x, args[0].y, args[0].x, args[0].y)
- elif isinstance(args[0], (tuple, list)):
- # A tuple was passed in.
- if len(args[0]) == 2:
- return self.expand_to_include((args[0][0], args[0][1], args[0][0], args[0][1]))
- elif len(args[0]) == 4:
- (minx, miny, maxx, maxy) = args[0]
- if minx < self._envelope.MinX:
- self._envelope.MinX = minx
- if miny < self._envelope.MinY:
- self._envelope.MinY = miny
- if maxx > self._envelope.MaxX:
- self._envelope.MaxX = maxx
- if maxy > self._envelope.MaxY:
- self._envelope.MaxY = maxy
- else:
- raise OGRException('Incorrect number of tuple elements (%d).' % len(args[0]))
- else:
- raise TypeError('Incorrect type of argument: %s' % str(type(args[0])))
- elif len(args) == 2:
- # An x and an y parameter were passed in
- return self.expand_to_include((args[0], args[1], args[0], args[1]))
- elif len(args) == 4:
- # Individual parameters passed in.
- return self.expand_to_include(args)
- else:
- raise OGRException('Incorrect number (%d) of arguments.' % len(args[0]))
-
- @property
- def min_x(self):
- "Returns the value of the minimum X coordinate."
- return self._envelope.MinX
-
- @property
- def min_y(self):
- "Returns the value of the minimum Y coordinate."
- return self._envelope.MinY
-
- @property
- def max_x(self):
- "Returns the value of the maximum X coordinate."
- return self._envelope.MaxX
-
- @property
- def max_y(self):
- "Returns the value of the maximum Y coordinate."
- return self._envelope.MaxY
-
- @property
- def ur(self):
- "Returns the upper-right coordinate."
- return (self.max_x, self.max_y)
-
- @property
- def ll(self):
- "Returns the lower-left coordinate."
- return (self.min_x, self.min_y)
-
- @property
- def tuple(self):
- "Returns a tuple representing the envelope."
- return (self.min_x, self.min_y, self.max_x, self.max_y)
-
- @property
- def wkt(self):
- "Returns WKT representing a Polygon for this envelope."
- # TODO: Fix significant figures.
- return 'POLYGON((%s %s,%s %s,%s %s,%s %s,%s %s))' % \
- (self.min_x, self.min_y, self.min_x, self.max_y,
- self.max_x, self.max_y, self.max_x, self.min_y,
- self.min_x, self.min_y)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/error.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/error.py
deleted file mode 100644
index 1d89ad1..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/error.py
+++ /dev/null
@@ -1,42 +0,0 @@
-"""
- This module houses the OGR & SRS Exception objects, and the
- check_err() routine which checks the status code returned by
- OGR methods.
-"""
-#### OGR & SRS Exceptions ####
-class GDALException(Exception): pass
-class OGRException(Exception): pass
-class SRSException(Exception): pass
-class OGRIndexError(OGRException, KeyError):
- """
- This exception is raised when an invalid index is encountered, and has
- the 'silent_variable_feature' attribute set to true. This ensures that
- django's templates proceed to use the next lookup type gracefully when
- an Exception is raised. Fixes ticket #4740.
- """
- silent_variable_failure = True
-
-#### OGR error checking codes and routine ####
-
-# OGR Error Codes
-OGRERR_DICT = { 1 : (OGRException, 'Not enough data.'),
- 2 : (OGRException, 'Not enough memory.'),
- 3 : (OGRException, 'Unsupported geometry type.'),
- 4 : (OGRException, 'Unsupported operation.'),
- 5 : (OGRException, 'Corrupt data.'),
- 6 : (OGRException, 'OGR failure.'),
- 7 : (SRSException, 'Unsupported SRS.'),
- 8 : (OGRException, 'Invalid handle.'),
- }
-OGRERR_NONE = 0
-
-def check_err(code):
- "Checks the given OGRERR, and raises an exception where appropriate."
-
- if code == OGRERR_NONE:
- return
- elif code in OGRERR_DICT:
- e, msg = OGRERR_DICT[code]
- raise e(msg)
- else:
- raise OGRException('Unknown error code: "%s"' % code)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/feature.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/feature.py
deleted file mode 100644
index a11a687..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/feature.py
+++ /dev/null
@@ -1,124 +0,0 @@
-# The GDAL C library, OGR exception, and the Field object
-from django.contrib.gis.gdal.base import GDALBase
-from django.contrib.gis.gdal.error import OGRException, OGRIndexError
-from django.contrib.gis.gdal.field import Field
-from django.contrib.gis.gdal.geometries import OGRGeometry, OGRGeomType
-
-# ctypes function prototypes
-from django.contrib.gis.gdal.prototypes import ds as capi, geom as geom_api
-
-from django.utils.encoding import force_bytes, force_text
-from django.utils import six
-from django.utils.six.moves import xrange
-
-# For more information, see the OGR C API source code:
-# http://www.gdal.org/ogr/ogr__api_8h.html
-#
-# The OGR_F_* routines are relevant here.
-class Feature(GDALBase):
- """
- This class that wraps an OGR Feature, needs to be instantiated
- from a Layer object.
- """
-
- #### Python 'magic' routines ####
- def __init__(self, feat, layer):
- """
- Initializes Feature from a pointer and its Layer object.
- """
- if not feat:
- raise OGRException('Cannot create OGR Feature, invalid pointer given.')
- self.ptr = feat
- self._layer = layer
-
- def __del__(self):
- "Releases a reference to this object."
- if self._ptr: capi.destroy_feature(self._ptr)
-
- def __getitem__(self, index):
- """
- Gets the Field object at the specified index, which may be either
- an integer or the Field's string label. Note that the Field object
- is not the field's _value_ -- use the `get` method instead to
- retrieve the value (e.g. an integer) instead of a Field instance.
- """
- if isinstance(index, six.string_types):
- i = self.index(index)
- else:
- if index < 0 or index > self.num_fields:
- raise OGRIndexError('index out of range')
- i = index
- return Field(self, i)
-
- def __iter__(self):
- "Iterates over each field in the Feature."
- for i in xrange(self.num_fields):
- yield self[i]
-
- def __len__(self):
- "Returns the count of fields in this feature."
- return self.num_fields
-
- def __str__(self):
- "The string name of the feature."
- return 'Feature FID %d in Layer<%s>' % (self.fid, self.layer_name)
-
- def __eq__(self, other):
- "Does equivalence testing on the features."
- return bool(capi.feature_equal(self.ptr, other._ptr))
-
- #### Feature Properties ####
- @property
- def encoding(self):
- return self._layer._ds.encoding
-
- @property
- def fid(self):
- "Returns the feature identifier."
- return capi.get_fid(self.ptr)
-
- @property
- def layer_name(self):
- "Returns the name of the layer for the feature."
- name = capi.get_feat_name(self._layer._ldefn)
- return force_text(name, self.encoding, strings_only=True)
-
- @property
- def num_fields(self):
- "Returns the number of fields in the Feature."
- return capi.get_feat_field_count(self.ptr)
-
- @property
- def fields(self):
- "Returns a list of fields in the Feature."
- return [capi.get_field_name(capi.get_field_defn(self._layer._ldefn, i))
- for i in xrange(self.num_fields)]
-
- @property
- def geom(self):
- "Returns the OGR Geometry for this Feature."
- # Retrieving the geometry pointer for the feature.
- geom_ptr = capi.get_feat_geom_ref(self.ptr)
- return OGRGeometry(geom_api.clone_geom(geom_ptr))
-
- @property
- def geom_type(self):
- "Returns the OGR Geometry Type for this Feture."
- return OGRGeomType(capi.get_fd_geom_type(self._layer._ldefn))
-
- #### Feature Methods ####
- def get(self, field):
- """
- Returns the value of the field, instead of an instance of the Field
- object. May take a string of the field name or a Field object as
- parameters.
- """
- field_name = getattr(field, 'name', field)
- return self[field_name].value
-
- def index(self, field_name):
- "Returns the index of the given field name."
- i = capi.get_field_index(self.ptr, force_bytes(field_name))
- if i < 0:
- raise OGRIndexError('invalid OFT field name given: "%s"' % field_name)
- return i
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/field.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/field.py
deleted file mode 100644
index 2415f32..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/field.py
+++ /dev/null
@@ -1,194 +0,0 @@
-from ctypes import byref, c_int
-from datetime import date, datetime, time
-from django.contrib.gis.gdal.base import GDALBase
-from django.contrib.gis.gdal.error import OGRException
-from django.contrib.gis.gdal.prototypes import ds as capi
-from django.utils.encoding import force_text
-
-
-# For more information, see the OGR C API source code:
-# http://www.gdal.org/ogr/ogr__api_8h.html
-#
-# The OGR_Fld_* routines are relevant here.
-class Field(GDALBase):
- """
- This class wraps an OGR Field, and needs to be instantiated
- from a Feature object.
- """
-
- #### Python 'magic' routines ####
- def __init__(self, feat, index):
- """
- Initializes on the feature object and the integer index of
- the field within the feature.
- """
- # Setting the feature pointer and index.
- self._feat = feat
- self._index = index
-
- # Getting the pointer for this field.
- fld_ptr = capi.get_feat_field_defn(feat.ptr, index)
- if not fld_ptr:
- raise OGRException('Cannot create OGR Field, invalid pointer given.')
- self.ptr = fld_ptr
-
- # Setting the class depending upon the OGR Field Type (OFT)
- self.__class__ = OGRFieldTypes[self.type]
-
- # OFTReal with no precision should be an OFTInteger.
- if isinstance(self, OFTReal) and self.precision == 0:
- self.__class__ = OFTInteger
- self._double = True
-
- def __str__(self):
- "Returns the string representation of the Field."
- return str(self.value).strip()
-
- #### Field Methods ####
- def as_double(self):
- "Retrieves the Field's value as a double (float)."
- return capi.get_field_as_double(self._feat.ptr, self._index)
-
- def as_int(self):
- "Retrieves the Field's value as an integer."
- return capi.get_field_as_integer(self._feat.ptr, self._index)
-
- def as_string(self):
- "Retrieves the Field's value as a string."
- string = capi.get_field_as_string(self._feat.ptr, self._index)
- return force_text(string, encoding=self._feat.encoding, strings_only=True)
-
- def as_datetime(self):
- "Retrieves the Field's value as a tuple of date & time components."
- yy, mm, dd, hh, mn, ss, tz = [c_int() for i in range(7)]
- status = capi.get_field_as_datetime(
- self._feat.ptr, self._index, byref(yy), byref(mm), byref(dd),
- byref(hh), byref(mn), byref(ss), byref(tz))
- if status:
- return (yy, mm, dd, hh, mn, ss, tz)
- else:
- raise OGRException('Unable to retrieve date & time information from the field.')
-
- #### Field Properties ####
- @property
- def name(self):
- "Returns the name of this Field."
- name = capi.get_field_name(self.ptr)
- return force_text(name, encoding=self._feat.encoding, strings_only=True)
-
- @property
- def precision(self):
- "Returns the precision of this Field."
- return capi.get_field_precision(self.ptr)
-
- @property
- def type(self):
- "Returns the OGR type of this Field."
- return capi.get_field_type(self.ptr)
-
- @property
- def type_name(self):
- "Return the OGR field type name for this Field."
- return capi.get_field_type_name(self.type)
-
- @property
- def value(self):
- "Returns the value of this Field."
- # Default is to get the field as a string.
- return self.as_string()
-
- @property
- def width(self):
- "Returns the width of this Field."
- return capi.get_field_width(self.ptr)
-
-### The Field sub-classes for each OGR Field type. ###
-class OFTInteger(Field):
- _double = False
-
- @property
- def value(self):
- "Returns an integer contained in this field."
- if self._double:
- # If this is really from an OFTReal field with no precision,
- # read as a double and cast as Python int (to prevent overflow).
- return int(self.as_double())
- else:
- return self.as_int()
-
- @property
- def type(self):
- """
- GDAL uses OFTReals to represent OFTIntegers in created
- shapefiles -- forcing the type here since the underlying field
- type may actually be OFTReal.
- """
- return 0
-
-class OFTReal(Field):
- @property
- def value(self):
- "Returns a float contained in this field."
- return self.as_double()
-
-# String & Binary fields, just subclasses
-class OFTString(Field): pass
-class OFTWideString(Field): pass
-class OFTBinary(Field): pass
-
-# OFTDate, OFTTime, OFTDateTime fields.
-class OFTDate(Field):
- @property
- def value(self):
- "Returns a Python `date` object for the OFTDate field."
- try:
- yy, mm, dd, hh, mn, ss, tz = self.as_datetime()
- return date(yy.value, mm.value, dd.value)
- except (ValueError, OGRException):
- return None
-
-class OFTDateTime(Field):
- @property
- def value(self):
- "Returns a Python `datetime` object for this OFTDateTime field."
- # TODO: Adapt timezone information.
- # See http://lists.osgeo.org/pipermail/gdal-dev/2006-February/007990.html
- # The `tz` variable has values of: 0=unknown, 1=localtime (ambiguous),
- # 100=GMT, 104=GMT+1, 80=GMT-5, etc.
- try:
- yy, mm, dd, hh, mn, ss, tz = self.as_datetime()
- return datetime(yy.value, mm.value, dd.value, hh.value, mn.value, ss.value)
- except (ValueError, OGRException):
- return None
-
-class OFTTime(Field):
- @property
- def value(self):
- "Returns a Python `time` object for this OFTTime field."
- try:
- yy, mm, dd, hh, mn, ss, tz = self.as_datetime()
- return time(hh.value, mn.value, ss.value)
- except (ValueError, OGRException):
- return None
-
-# List fields are also just subclasses
-class OFTIntegerList(Field): pass
-class OFTRealList(Field): pass
-class OFTStringList(Field): pass
-class OFTWideStringList(Field): pass
-
-# Class mapping dictionary for OFT Types and reverse mapping.
-OGRFieldTypes = { 0 : OFTInteger,
- 1 : OFTIntegerList,
- 2 : OFTReal,
- 3 : OFTRealList,
- 4 : OFTString,
- 5 : OFTStringList,
- 6 : OFTWideString,
- 7 : OFTWideStringList,
- 8 : OFTBinary,
- 9 : OFTDate,
- 10 : OFTTime,
- 11 : OFTDateTime,
- }
-ROGRFieldTypes = dict([(cls, num) for num, cls in OGRFieldTypes.items()])
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/geometries.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/geometries.py
deleted file mode 100644
index 0d75620..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/geometries.py
+++ /dev/null
@@ -1,726 +0,0 @@
-"""
- The OGRGeometry is a wrapper for using the OGR Geometry class
- (see http://www.gdal.org/ogr/classOGRGeometry.html). OGRGeometry
- may be instantiated when reading geometries from OGR Data Sources
- (e.g. SHP files), or when given OGC WKT (a string).
-
- While the 'full' API is not present yet, the API is "pythonic" unlike
- the traditional and "next-generation" OGR Python bindings. One major
- advantage OGR Geometries have over their GEOS counterparts is support
- for spatial reference systems and their transformation.
-
- Example:
- >>> from django.contrib.gis.gdal import OGRGeometry, OGRGeomType, SpatialReference
- >>> wkt1, wkt2 = 'POINT(-90 30)', 'POLYGON((0 0, 5 0, 5 5, 0 5)'
- >>> pnt = OGRGeometry(wkt1)
- >>> print(pnt)
- POINT (-90 30)
- >>> mpnt = OGRGeometry(OGRGeomType('MultiPoint'), SpatialReference('WGS84'))
- >>> mpnt.add(wkt1)
- >>> mpnt.add(wkt1)
- >>> print(mpnt)
- MULTIPOINT (-90 30,-90 30)
- >>> print(mpnt.srs.name)
- WGS 84
- >>> print(mpnt.srs.proj)
- +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
- >>> mpnt.transform_to(SpatialReference('NAD27'))
- >>> print(mpnt.proj)
- +proj=longlat +ellps=clrk66 +datum=NAD27 +no_defs
- >>> print(mpnt)
- MULTIPOINT (-89.999930378602485 29.999797886557641,-89.999930378602485 29.999797886557641)
-
- The OGRGeomType class is to make it easy to specify an OGR geometry type:
- >>> from django.contrib.gis.gdal import OGRGeomType
- >>> gt1 = OGRGeomType(3) # Using an integer for the type
- >>> gt2 = OGRGeomType('Polygon') # Using a string
- >>> gt3 = OGRGeomType('POLYGON') # It's case-insensitive
- >>> print(gt1 == 3, gt1 == 'Polygon') # Equivalence works w/non-OGRGeomType objects
- True True
-"""
-# Python library requisites.
-import sys
-from binascii import a2b_hex, b2a_hex
-from ctypes import byref, string_at, c_char_p, c_double, c_ubyte, c_void_p
-
-from django.contrib.gis import memoryview
-
-# Getting GDAL prerequisites
-from django.contrib.gis.gdal.base import GDALBase
-from django.contrib.gis.gdal.envelope import Envelope, OGREnvelope
-from django.contrib.gis.gdal.error import OGRException, OGRIndexError, SRSException
-from django.contrib.gis.gdal.geomtype import OGRGeomType
-from django.contrib.gis.gdal.libgdal import GDAL_VERSION
-from django.contrib.gis.gdal.srs import SpatialReference, CoordTransform
-
-# Getting the ctypes prototype functions that interface w/the GDAL C library.
-from django.contrib.gis.gdal.prototypes import geom as capi, srs as srs_api
-
-# For recognizing geometry input.
-from django.contrib.gis.geometry.regex import hex_regex, wkt_regex, json_regex
-
-from django.utils import six
-from django.utils.six.moves import xrange
-
-# For more information, see the OGR C API source code:
-# http://www.gdal.org/ogr/ogr__api_8h.html
-#
-# The OGR_G_* routines are relevant here.
-
-#### OGRGeometry Class ####
-class OGRGeometry(GDALBase):
- "Generally encapsulates an OGR geometry."
-
- def __init__(self, geom_input, srs=None):
- "Initializes Geometry on either WKT or an OGR pointer as input."
-
- str_instance = isinstance(geom_input, six.string_types)
-
- # If HEX, unpack input to a binary buffer.
- if str_instance and hex_regex.match(geom_input):
- geom_input = memoryview(a2b_hex(geom_input.upper().encode()))
- str_instance = False
-
- # Constructing the geometry,
- if str_instance:
- wkt_m = wkt_regex.match(geom_input)
- json_m = json_regex.match(geom_input)
- if wkt_m:
- if wkt_m.group('srid'):
- # If there's EWKT, set the SRS w/value of the SRID.
- srs = int(wkt_m.group('srid'))
- if wkt_m.group('type').upper() == 'LINEARRING':
- # OGR_G_CreateFromWkt doesn't work with LINEARRING WKT.
- # See http://trac.osgeo.org/gdal/ticket/1992.
- g = capi.create_geom(OGRGeomType(wkt_m.group('type')).num)
- capi.import_wkt(g, byref(c_char_p(wkt_m.group('wkt').encode())))
- else:
- g = capi.from_wkt(byref(c_char_p(wkt_m.group('wkt').encode())), None, byref(c_void_p()))
- elif json_m:
- g = capi.from_json(geom_input.encode())
- else:
- # Seeing if the input is a valid short-hand string
- # (e.g., 'Point', 'POLYGON').
- ogr_t = OGRGeomType(geom_input)
- g = capi.create_geom(OGRGeomType(geom_input).num)
- elif isinstance(geom_input, memoryview):
- # WKB was passed in
- g = capi.from_wkb(bytes(geom_input), None, byref(c_void_p()), len(geom_input))
- elif isinstance(geom_input, OGRGeomType):
- # OGRGeomType was passed in, an empty geometry will be created.
- g = capi.create_geom(geom_input.num)
- elif isinstance(geom_input, self.ptr_type):
- # OGR pointer (c_void_p) was the input.
- g = geom_input
- else:
- raise OGRException('Invalid input type for OGR Geometry construction: %s' % type(geom_input))
-
- # Now checking the Geometry pointer before finishing initialization
- # by setting the pointer for the object.
- if not g:
- raise OGRException('Cannot create OGR Geometry from input: %s' % str(geom_input))
- self.ptr = g
-
- # Assigning the SpatialReference object to the geometry, if valid.
- if bool(srs): self.srs = srs
-
- # Setting the class depending upon the OGR Geometry Type
- self.__class__ = GEO_CLASSES[self.geom_type.num]
-
- def __del__(self):
- "Deletes this Geometry."
- if self._ptr: capi.destroy_geom(self._ptr)
-
- # Pickle routines
- def __getstate__(self):
- srs = self.srs
- if srs:
- srs = srs.wkt
- else:
- srs = None
- return bytes(self.wkb), srs
-
- def __setstate__(self, state):
- wkb, srs = state
- ptr = capi.from_wkb(wkb, None, byref(c_void_p()), len(wkb))
- if not ptr: raise OGRException('Invalid OGRGeometry loaded from pickled state.')
- self.ptr = ptr
- self.srs = srs
-
- @classmethod
- def from_bbox(cls, bbox):
- "Constructs a Polygon from a bounding box (4-tuple)."
- x0, y0, x1, y1 = bbox
- return OGRGeometry( 'POLYGON((%s %s, %s %s, %s %s, %s %s, %s %s))' % (
- x0, y0, x0, y1, x1, y1, x1, y0, x0, y0) )
-
- ### Geometry set-like operations ###
- # g = g1 | g2
- def __or__(self, other):
- "Returns the union of the two geometries."
- return self.union(other)
-
- # g = g1 & g2
- def __and__(self, other):
- "Returns the intersection of this Geometry and the other."
- return self.intersection(other)
-
- # g = g1 - g2
- def __sub__(self, other):
- "Return the difference this Geometry and the other."
- return self.difference(other)
-
- # g = g1 ^ g2
- def __xor__(self, other):
- "Return the symmetric difference of this Geometry and the other."
- return self.sym_difference(other)
-
- def __eq__(self, other):
- "Is this Geometry equal to the other?"
- if isinstance(other, OGRGeometry):
- return self.equals(other)
- else:
- return False
-
- def __ne__(self, other):
- "Tests for inequality."
- return not (self == other)
-
- def __str__(self):
- "WKT is used for the string representation."
- return self.wkt
-
- #### Geometry Properties ####
- @property
- def dimension(self):
- "Returns 0 for points, 1 for lines, and 2 for surfaces."
- return capi.get_dims(self.ptr)
-
- def _get_coord_dim(self):
- "Returns the coordinate dimension of the Geometry."
- if isinstance(self, GeometryCollection) and GDAL_VERSION < (1, 5, 2):
- # On GDAL versions prior to 1.5.2, there exists a bug in which
- # the coordinate dimension of geometry collections is always 2:
- # http://trac.osgeo.org/gdal/ticket/2334
- # Here we workaround by returning the coordinate dimension of the
- # first geometry in the collection instead.
- if len(self):
- return capi.get_coord_dim(capi.get_geom_ref(self.ptr, 0))
- return capi.get_coord_dim(self.ptr)
-
- def _set_coord_dim(self, dim):
- "Sets the coordinate dimension of this Geometry."
- if not dim in (2, 3):
- raise ValueError('Geometry dimension must be either 2 or 3')
- capi.set_coord_dim(self.ptr, dim)
-
- coord_dim = property(_get_coord_dim, _set_coord_dim)
-
- @property
- def geom_count(self):
- "The number of elements in this Geometry."
- return capi.get_geom_count(self.ptr)
-
- @property
- def point_count(self):
- "Returns the number of Points in this Geometry."
- return capi.get_point_count(self.ptr)
-
- @property
- def num_points(self):
- "Alias for `point_count` (same name method in GEOS API.)"
- return self.point_count
-
- @property
- def num_coords(self):
- "Alais for `point_count`."
- return self.point_count
-
- @property
- def geom_type(self):
- "Returns the Type for this Geometry."
- return OGRGeomType(capi.get_geom_type(self.ptr))
-
- @property
- def geom_name(self):
- "Returns the Name of this Geometry."
- return capi.get_geom_name(self.ptr)
-
- @property
- def area(self):
- "Returns the area for a LinearRing, Polygon, or MultiPolygon; 0 otherwise."
- return capi.get_area(self.ptr)
-
- @property
- def envelope(self):
- "Returns the envelope for this Geometry."
- # TODO: Fix Envelope() for Point geometries.
- return Envelope(capi.get_envelope(self.ptr, byref(OGREnvelope())))
-
- @property
- def extent(self):
- "Returns the envelope as a 4-tuple, instead of as an Envelope object."
- return self.envelope.tuple
-
- #### SpatialReference-related Properties ####
-
- # The SRS property
- def _get_srs(self):
- "Returns the Spatial Reference for this Geometry."
- try:
- srs_ptr = capi.get_geom_srs(self.ptr)
- return SpatialReference(srs_api.clone_srs(srs_ptr))
- except SRSException:
- return None
-
- def _set_srs(self, srs):
- "Sets the SpatialReference for this geometry."
- # Do not have to clone the `SpatialReference` object pointer because
- # when it is assigned to this `OGRGeometry` it's internal OGR
- # reference count is incremented, and will likewise be released
- # (decremented) when this geometry's destructor is called.
- if isinstance(srs, SpatialReference):
- srs_ptr = srs.ptr
- elif isinstance(srs, six.integer_types + six.string_types):
- sr = SpatialReference(srs)
- srs_ptr = sr.ptr
- else:
- raise TypeError('Cannot assign spatial reference with object of type: %s' % type(srs))
- capi.assign_srs(self.ptr, srs_ptr)
-
- srs = property(_get_srs, _set_srs)
-
- # The SRID property
- def _get_srid(self):
- srs = self.srs
- if srs: return srs.srid
- return None
-
- def _set_srid(self, srid):
- if isinstance(srid, six.integer_types):
- self.srs = srid
- else:
- raise TypeError('SRID must be set with an integer.')
-
- srid = property(_get_srid, _set_srid)
-
- #### Output Methods ####
- @property
- def geos(self):
- "Returns a GEOSGeometry object from this OGRGeometry."
- from django.contrib.gis.geos import GEOSGeometry
- return GEOSGeometry(self.wkb, self.srid)
-
- @property
- def gml(self):
- "Returns the GML representation of the Geometry."
- return capi.to_gml(self.ptr)
-
- @property
- def hex(self):
- "Returns the hexadecimal representation of the WKB (a string)."
- return b2a_hex(self.wkb).upper()
-
- @property
- def json(self):
- """
- Returns the GeoJSON representation of this Geometry.
- """
- return capi.to_json(self.ptr)
- geojson = json
-
- @property
- def kml(self):
- "Returns the KML representation of the Geometry."
- return capi.to_kml(self.ptr, None)
-
- @property
- def wkb_size(self):
- "Returns the size of the WKB buffer."
- return capi.get_wkbsize(self.ptr)
-
- @property
- def wkb(self):
- "Returns the WKB representation of the Geometry."
- if sys.byteorder == 'little':
- byteorder = 1 # wkbNDR (from ogr_core.h)
- else:
- byteorder = 0 # wkbXDR
- sz = self.wkb_size
- # Creating the unsigned character buffer, and passing it in by reference.
- buf = (c_ubyte * sz)()
- wkb = capi.to_wkb(self.ptr, byteorder, byref(buf))
- # Returning a buffer of the string at the pointer.
- return memoryview(string_at(buf, sz))
-
- @property
- def wkt(self):
- "Returns the WKT representation of the Geometry."
- return capi.to_wkt(self.ptr, byref(c_char_p()))
-
- @property
- def ewkt(self):
- "Returns the EWKT representation of the Geometry."
- srs = self.srs
- if srs and srs.srid:
- return 'SRID=%s;%s' % (srs.srid, self.wkt)
- else:
- return self.wkt
-
- #### Geometry Methods ####
- def clone(self):
- "Clones this OGR Geometry."
- return OGRGeometry(capi.clone_geom(self.ptr), self.srs)
-
- def close_rings(self):
- """
- If there are any rings within this geometry that have not been
- closed, this routine will do so by adding the starting point at the
- end.
- """
- # Closing the open rings.
- capi.geom_close_rings(self.ptr)
-
- def transform(self, coord_trans, clone=False):
- """
- Transforms this geometry to a different spatial reference system.
- May take a CoordTransform object, a SpatialReference object, string
- WKT or PROJ.4, and/or an integer SRID. By default nothing is returned
- and the geometry is transformed in-place. However, if the `clone`
- keyword is set, then a transformed clone of this geometry will be
- returned.
- """
- if clone:
- klone = self.clone()
- klone.transform(coord_trans)
- return klone
-
- # Have to get the coordinate dimension of the original geometry
- # so it can be used to reset the transformed geometry's dimension
- # afterwards. This is done because of GDAL bug (in versions prior
- # to 1.7) that turns geometries 3D after transformation, see:
- # http://trac.osgeo.org/gdal/changeset/17792
- if GDAL_VERSION < (1, 7):
- orig_dim = self.coord_dim
-
- # Depending on the input type, use the appropriate OGR routine
- # to perform the transformation.
- if isinstance(coord_trans, CoordTransform):
- capi.geom_transform(self.ptr, coord_trans.ptr)
- elif isinstance(coord_trans, SpatialReference):
- capi.geom_transform_to(self.ptr, coord_trans.ptr)
- elif isinstance(coord_trans, six.integer_types + six.string_types):
- sr = SpatialReference(coord_trans)
- capi.geom_transform_to(self.ptr, sr.ptr)
- else:
- raise TypeError('Transform only accepts CoordTransform, '
- 'SpatialReference, string, and integer objects.')
-
- # Setting with original dimension, see comment above.
- if GDAL_VERSION < (1, 7):
- if isinstance(self, GeometryCollection):
- # With geometry collections have to set dimension on
- # each internal geometry reference, as the collection
- # dimension isn't affected.
- for i in xrange(len(self)):
- internal_ptr = capi.get_geom_ref(self.ptr, i)
- if orig_dim != capi.get_coord_dim(internal_ptr):
- capi.set_coord_dim(internal_ptr, orig_dim)
- else:
- if self.coord_dim != orig_dim:
- self.coord_dim = orig_dim
-
- def transform_to(self, srs):
- "For backwards-compatibility."
- self.transform(srs)
-
- #### Topology Methods ####
- def _topology(self, func, other):
- """A generalized function for topology operations, takes a GDAL function and
- the other geometry to perform the operation on."""
- if not isinstance(other, OGRGeometry):
- raise TypeError('Must use another OGRGeometry object for topology operations!')
-
- # Returning the output of the given function with the other geometry's
- # pointer.
- return func(self.ptr, other.ptr)
-
- def intersects(self, other):
- "Returns True if this geometry intersects with the other."
- return self._topology(capi.ogr_intersects, other)
-
- def equals(self, other):
- "Returns True if this geometry is equivalent to the other."
- return self._topology(capi.ogr_equals, other)
-
- def disjoint(self, other):
- "Returns True if this geometry and the other are spatially disjoint."
- return self._topology(capi.ogr_disjoint, other)
-
- def touches(self, other):
- "Returns True if this geometry touches the other."
- return self._topology(capi.ogr_touches, other)
-
- def crosses(self, other):
- "Returns True if this geometry crosses the other."
- return self._topology(capi.ogr_crosses, other)
-
- def within(self, other):
- "Returns True if this geometry is within the other."
- return self._topology(capi.ogr_within, other)
-
- def contains(self, other):
- "Returns True if this geometry contains the other."
- return self._topology(capi.ogr_contains, other)
-
- def overlaps(self, other):
- "Returns True if this geometry overlaps the other."
- return self._topology(capi.ogr_overlaps, other)
-
- #### Geometry-generation Methods ####
- def _geomgen(self, gen_func, other=None):
- "A helper routine for the OGR routines that generate geometries."
- if isinstance(other, OGRGeometry):
- return OGRGeometry(gen_func(self.ptr, other.ptr), self.srs)
- else:
- return OGRGeometry(gen_func(self.ptr), self.srs)
-
- @property
- def boundary(self):
- "Returns the boundary of this geometry."
- return self._geomgen(capi.get_boundary)
-
- @property
- def convex_hull(self):
- """
- Returns the smallest convex Polygon that contains all the points in
- this Geometry.
- """
- return self._geomgen(capi.geom_convex_hull)
-
- def difference(self, other):
- """
- Returns a new geometry consisting of the region which is the difference
- of this geometry and the other.
- """
- return self._geomgen(capi.geom_diff, other)
-
- def intersection(self, other):
- """
- Returns a new geometry consisting of the region of intersection of this
- geometry and the other.
- """
- return self._geomgen(capi.geom_intersection, other)
-
- def sym_difference(self, other):
- """
- Returns a new geometry which is the symmetric difference of this
- geometry and the other.
- """
- return self._geomgen(capi.geom_sym_diff, other)
-
- def union(self, other):
- """
- Returns a new geometry consisting of the region which is the union of
- this geometry and the other.
- """
- return self._geomgen(capi.geom_union, other)
-
-# The subclasses for OGR Geometry.
-class Point(OGRGeometry):
-
- @property
- def x(self):
- "Returns the X coordinate for this Point."
- return capi.getx(self.ptr, 0)
-
- @property
- def y(self):
- "Returns the Y coordinate for this Point."
- return capi.gety(self.ptr, 0)
-
- @property
- def z(self):
- "Returns the Z coordinate for this Point."
- if self.coord_dim == 3:
- return capi.getz(self.ptr, 0)
-
- @property
- def tuple(self):
- "Returns the tuple of this point."
- if self.coord_dim == 2:
- return (self.x, self.y)
- elif self.coord_dim == 3:
- return (self.x, self.y, self.z)
- coords = tuple
-
-class LineString(OGRGeometry):
-
- def __getitem__(self, index):
- "Returns the Point at the given index."
- if index >= 0 and index < self.point_count:
- x, y, z = c_double(), c_double(), c_double()
- capi.get_point(self.ptr, index, byref(x), byref(y), byref(z))
- dim = self.coord_dim
- if dim == 1:
- return (x.value,)
- elif dim == 2:
- return (x.value, y.value)
- elif dim == 3:
- return (x.value, y.value, z.value)
- else:
- raise OGRIndexError('index out of range: %s' % str(index))
-
- def __iter__(self):
- "Iterates over each point in the LineString."
- for i in xrange(self.point_count):
- yield self[i]
-
- def __len__(self):
- "The length returns the number of points in the LineString."
- return self.point_count
-
- @property
- def tuple(self):
- "Returns the tuple representation of this LineString."
- return tuple([self[i] for i in xrange(len(self))])
- coords = tuple
-
- def _listarr(self, func):
- """
- Internal routine that returns a sequence (list) corresponding with
- the given function.
- """
- return [func(self.ptr, i) for i in xrange(len(self))]
-
- @property
- def x(self):
- "Returns the X coordinates in a list."
- return self._listarr(capi.getx)
-
- @property
- def y(self):
- "Returns the Y coordinates in a list."
- return self._listarr(capi.gety)
-
- @property
- def z(self):
- "Returns the Z coordinates in a list."
- if self.coord_dim == 3:
- return self._listarr(capi.getz)
-
-# LinearRings are used in Polygons.
-class LinearRing(LineString): pass
-
-class Polygon(OGRGeometry):
-
- def __len__(self):
- "The number of interior rings in this Polygon."
- return self.geom_count
-
- def __iter__(self):
- "Iterates through each ring in the Polygon."
- for i in xrange(self.geom_count):
- yield self[i]
-
- def __getitem__(self, index):
- "Gets the ring at the specified index."
- if index < 0 or index >= self.geom_count:
- raise OGRIndexError('index out of range: %s' % index)
- else:
- return OGRGeometry(capi.clone_geom(capi.get_geom_ref(self.ptr, index)), self.srs)
-
- # Polygon Properties
- @property
- def shell(self):
- "Returns the shell of this Polygon."
- return self[0] # First ring is the shell
- exterior_ring = shell
-
- @property
- def tuple(self):
- "Returns a tuple of LinearRing coordinate tuples."
- return tuple([self[i].tuple for i in xrange(self.geom_count)])
- coords = tuple
-
- @property
- def point_count(self):
- "The number of Points in this Polygon."
- # Summing up the number of points in each ring of the Polygon.
- return sum([self[i].point_count for i in xrange(self.geom_count)])
-
- @property
- def centroid(self):
- "Returns the centroid (a Point) of this Polygon."
- # The centroid is a Point, create a geometry for this.
- p = OGRGeometry(OGRGeomType('Point'))
- capi.get_centroid(self.ptr, p.ptr)
- return p
-
-# Geometry Collection base class.
-class GeometryCollection(OGRGeometry):
- "The Geometry Collection class."
-
- def __getitem__(self, index):
- "Gets the Geometry at the specified index."
- if index < 0 or index >= self.geom_count:
- raise OGRIndexError('index out of range: %s' % index)
- else:
- return OGRGeometry(capi.clone_geom(capi.get_geom_ref(self.ptr, index)), self.srs)
-
- def __iter__(self):
- "Iterates over each Geometry."
- for i in xrange(self.geom_count):
- yield self[i]
-
- def __len__(self):
- "The number of geometries in this Geometry Collection."
- return self.geom_count
-
- def add(self, geom):
- "Add the geometry to this Geometry Collection."
- if isinstance(geom, OGRGeometry):
- if isinstance(geom, self.__class__):
- for g in geom: capi.add_geom(self.ptr, g.ptr)
- else:
- capi.add_geom(self.ptr, geom.ptr)
- elif isinstance(geom, six.string_types):
- tmp = OGRGeometry(geom)
- capi.add_geom(self.ptr, tmp.ptr)
- else:
- raise OGRException('Must add an OGRGeometry.')
-
- @property
- def point_count(self):
- "The number of Points in this Geometry Collection."
- # Summing up the number of points in each geometry in this collection
- return sum([self[i].point_count for i in xrange(self.geom_count)])
-
- @property
- def tuple(self):
- "Returns a tuple representation of this Geometry Collection."
- return tuple([self[i].tuple for i in xrange(self.geom_count)])
- coords = tuple
-
-# Multiple Geometry types.
-class MultiPoint(GeometryCollection): pass
-class MultiLineString(GeometryCollection): pass
-class MultiPolygon(GeometryCollection): pass
-
-# Class mapping dictionary (using the OGRwkbGeometryType as the key)
-GEO_CLASSES = {1 : Point,
- 2 : LineString,
- 3 : Polygon,
- 4 : MultiPoint,
- 5 : MultiLineString,
- 6 : MultiPolygon,
- 7 : GeometryCollection,
- 101: LinearRing,
- 1 + OGRGeomType.wkb25bit : Point,
- 2 + OGRGeomType.wkb25bit : LineString,
- 3 + OGRGeomType.wkb25bit : Polygon,
- 4 + OGRGeomType.wkb25bit : MultiPoint,
- 5 + OGRGeomType.wkb25bit : MultiLineString,
- 6 + OGRGeomType.wkb25bit : MultiPolygon,
- 7 + OGRGeomType.wkb25bit : GeometryCollection,
- }
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/geomtype.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/geomtype.py
deleted file mode 100644
index fe4b89a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/geomtype.py
+++ /dev/null
@@ -1,87 +0,0 @@
-from django.contrib.gis.gdal.error import OGRException
-
-from django.utils import six
-
-#### OGRGeomType ####
-class OGRGeomType(object):
- "Encapulates OGR Geometry Types."
-
- wkb25bit = -2147483648
-
- # Dictionary of acceptable OGRwkbGeometryType s and their string names.
- _types = {0 : 'Unknown',
- 1 : 'Point',
- 2 : 'LineString',
- 3 : 'Polygon',
- 4 : 'MultiPoint',
- 5 : 'MultiLineString',
- 6 : 'MultiPolygon',
- 7 : 'GeometryCollection',
- 100 : 'None',
- 101 : 'LinearRing',
- 1 + wkb25bit: 'Point25D',
- 2 + wkb25bit: 'LineString25D',
- 3 + wkb25bit: 'Polygon25D',
- 4 + wkb25bit: 'MultiPoint25D',
- 5 + wkb25bit : 'MultiLineString25D',
- 6 + wkb25bit : 'MultiPolygon25D',
- 7 + wkb25bit : 'GeometryCollection25D',
- }
- # Reverse type dictionary, keyed by lower-case of the name.
- _str_types = dict([(v.lower(), k) for k, v in _types.items()])
-
- def __init__(self, type_input):
- "Figures out the correct OGR Type based upon the input."
- if isinstance(type_input, OGRGeomType):
- num = type_input.num
- elif isinstance(type_input, six.string_types):
- type_input = type_input.lower()
- if type_input == 'geometry': type_input='unknown'
- num = self._str_types.get(type_input, None)
- if num is None:
- raise OGRException('Invalid OGR String Type "%s"' % type_input)
- elif isinstance(type_input, int):
- if not type_input in self._types:
- raise OGRException('Invalid OGR Integer Type: %d' % type_input)
- num = type_input
- else:
- raise TypeError('Invalid OGR input type given.')
-
- # Setting the OGR geometry type number.
- self.num = num
-
- def __str__(self):
- "Returns the value of the name property."
- return self.name
-
- def __eq__(self, other):
- """
- Does an equivalence test on the OGR type with the given
- other OGRGeomType, the short-hand string, or the integer.
- """
- if isinstance(other, OGRGeomType):
- return self.num == other.num
- elif isinstance(other, six.string_types):
- return self.name.lower() == other.lower()
- elif isinstance(other, int):
- return self.num == other
- else:
- return False
-
- def __ne__(self, other):
- return not (self == other)
-
- @property
- def name(self):
- "Returns a short-hand string form of the OGR Geometry type."
- return self._types[self.num]
-
- @property
- def django(self):
- "Returns the Django GeometryField for this OGR Type."
- s = self.name.replace('25D', '')
- if s in ('LinearRing', 'None'):
- return None
- elif s == 'Unknown':
- s = 'Geometry'
- return s + 'Field'
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/layer.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/layer.py
deleted file mode 100644
index 7f935cd..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/layer.py
+++ /dev/null
@@ -1,218 +0,0 @@
-# Needed ctypes routines
-from ctypes import c_double, byref
-
-# Other GDAL imports.
-from django.contrib.gis.gdal.base import GDALBase
-from django.contrib.gis.gdal.envelope import Envelope, OGREnvelope
-from django.contrib.gis.gdal.error import OGRException, OGRIndexError, SRSException
-from django.contrib.gis.gdal.feature import Feature
-from django.contrib.gis.gdal.field import OGRFieldTypes
-from django.contrib.gis.gdal.geomtype import OGRGeomType
-from django.contrib.gis.gdal.geometries import OGRGeometry
-from django.contrib.gis.gdal.srs import SpatialReference
-
-# GDAL ctypes function prototypes.
-from django.contrib.gis.gdal.prototypes import ds as capi, geom as geom_api, srs as srs_api
-
-from django.utils.encoding import force_bytes, force_text
-from django.utils import six
-from django.utils.six.moves import xrange
-
-# For more information, see the OGR C API source code:
-# http://www.gdal.org/ogr/ogr__api_8h.html
-#
-# The OGR_L_* routines are relevant here.
-class Layer(GDALBase):
- "A class that wraps an OGR Layer, needs to be instantiated from a DataSource object."
-
- #### Python 'magic' routines ####
- def __init__(self, layer_ptr, ds):
- """
- Initializes on an OGR C pointer to the Layer and the `DataSource` object
- that owns this layer. The `DataSource` object is required so that a
- reference to it is kept with this Layer. This prevents garbage
- collection of the `DataSource` while this Layer is still active.
- """
- if not layer_ptr:
- raise OGRException('Cannot create Layer, invalid pointer given')
- self.ptr = layer_ptr
- self._ds = ds
- self._ldefn = capi.get_layer_defn(self._ptr)
- # Does the Layer support random reading?
- self._random_read = self.test_capability(b'RandomRead')
-
- def __getitem__(self, index):
- "Gets the Feature at the specified index."
- if isinstance(index, six.integer_types):
- # An integer index was given -- we cannot do a check based on the
- # number of features because the beginning and ending feature IDs
- # are not guaranteed to be 0 and len(layer)-1, respectively.
- if index < 0: raise OGRIndexError('Negative indices are not allowed on OGR Layers.')
- return self._make_feature(index)
- elif isinstance(index, slice):
- # A slice was given
- start, stop, stride = index.indices(self.num_feat)
- return [self._make_feature(fid) for fid in xrange(start, stop, stride)]
- else:
- raise TypeError('Integers and slices may only be used when indexing OGR Layers.')
-
- def __iter__(self):
- "Iterates over each Feature in the Layer."
- # ResetReading() must be called before iteration is to begin.
- capi.reset_reading(self._ptr)
- for i in xrange(self.num_feat):
- yield Feature(capi.get_next_feature(self._ptr), self)
-
- def __len__(self):
- "The length is the number of features."
- return self.num_feat
-
- def __str__(self):
- "The string name of the layer."
- return self.name
-
- def _make_feature(self, feat_id):
- """
- Helper routine for __getitem__ that constructs a Feature from the given
- Feature ID. If the OGR Layer does not support random-access reading,
- then each feature of the layer will be incremented through until the
- a Feature is found matching the given feature ID.
- """
- if self._random_read:
- # If the Layer supports random reading, return.
- try:
- return Feature(capi.get_feature(self.ptr, feat_id), self)
- except OGRException:
- pass
- else:
- # Random access isn't supported, have to increment through
- # each feature until the given feature ID is encountered.
- for feat in self:
- if feat.fid == feat_id: return feat
- # Should have returned a Feature, raise an OGRIndexError.
- raise OGRIndexError('Invalid feature id: %s.' % feat_id)
-
- #### Layer properties ####
- @property
- def extent(self):
- "Returns the extent (an Envelope) of this layer."
- env = OGREnvelope()
- capi.get_extent(self.ptr, byref(env), 1)
- return Envelope(env)
-
- @property
- def name(self):
- "Returns the name of this layer in the Data Source."
- name = capi.get_fd_name(self._ldefn)
- return force_text(name, self._ds.encoding, strings_only=True)
-
- @property
- def num_feat(self, force=1):
- "Returns the number of features in the Layer."
- return capi.get_feature_count(self.ptr, force)
-
- @property
- def num_fields(self):
- "Returns the number of fields in the Layer."
- return capi.get_field_count(self._ldefn)
-
- @property
- def geom_type(self):
- "Returns the geometry type (OGRGeomType) of the Layer."
- return OGRGeomType(capi.get_fd_geom_type(self._ldefn))
-
- @property
- def srs(self):
- "Returns the Spatial Reference used in this Layer."
- try:
- ptr = capi.get_layer_srs(self.ptr)
- return SpatialReference(srs_api.clone_srs(ptr))
- except SRSException:
- return None
-
- @property
- def fields(self):
- """
- Returns a list of string names corresponding to each of the Fields
- available in this Layer.
- """
- return [force_text(capi.get_field_name(capi.get_field_defn(self._ldefn, i)),
- self._ds.encoding, strings_only=True)
- for i in xrange(self.num_fields)]
-
- @property
- def field_types(self):
- """
- Returns a list of the types of fields in this Layer. For example,
- the list [OFTInteger, OFTReal, OFTString] would be returned for
- an OGR layer that had an integer, a floating-point, and string
- fields.
- """
- return [OGRFieldTypes[capi.get_field_type(capi.get_field_defn(self._ldefn, i))]
- for i in xrange(self.num_fields)]
-
- @property
- def field_widths(self):
- "Returns a list of the maximum field widths for the features."
- return [capi.get_field_width(capi.get_field_defn(self._ldefn, i))
- for i in xrange(self.num_fields)]
-
- @property
- def field_precisions(self):
- "Returns the field precisions for the features."
- return [capi.get_field_precision(capi.get_field_defn(self._ldefn, i))
- for i in xrange(self.num_fields)]
-
- def _get_spatial_filter(self):
- try:
- return OGRGeometry(geom_api.clone_geom(capi.get_spatial_filter(self.ptr)))
- except OGRException:
- return None
-
- def _set_spatial_filter(self, filter):
- if isinstance(filter, OGRGeometry):
- capi.set_spatial_filter(self.ptr, filter.ptr)
- elif isinstance(filter, (tuple, list)):
- if not len(filter) == 4:
- raise ValueError('Spatial filter list/tuple must have 4 elements.')
- # Map c_double onto params -- if a bad type is passed in it
- # will be caught here.
- xmin, ymin, xmax, ymax = map(c_double, filter)
- capi.set_spatial_filter_rect(self.ptr, xmin, ymin, xmax, ymax)
- elif filter is None:
- capi.set_spatial_filter(self.ptr, None)
- else:
- raise TypeError('Spatial filter must be either an OGRGeometry instance, a 4-tuple, or None.')
-
- spatial_filter = property(_get_spatial_filter, _set_spatial_filter)
-
- #### Layer Methods ####
- def get_fields(self, field_name):
- """
- Returns a list containing the given field name for every Feature
- in the Layer.
- """
- if not field_name in self.fields:
- raise OGRException('invalid field name: %s' % field_name)
- return [feat.get(field_name) for feat in self]
-
- def get_geoms(self, geos=False):
- """
- Returns a list containing the OGRGeometry for every Feature in
- the Layer.
- """
- if geos:
- from django.contrib.gis.geos import GEOSGeometry
- return [GEOSGeometry(feat.geom.wkb) for feat in self]
- else:
- return [feat.geom for feat in self]
-
- def test_capability(self, capability):
- """
- Returns a bool indicating whether the this Layer supports the given
- capability (a string). Valid capability strings include:
- 'RandomRead', 'SequentialWrite', 'RandomWrite', 'FastSpatialFilter',
- 'FastFeatureCount', 'FastGetExtent', 'CreateField', 'Transactions',
- 'DeleteFeature', and 'FastSetNextByIndex'.
- """
- return bool(capi.test_capability(self.ptr, force_bytes(capability)))
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/libgdal.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/libgdal.py
deleted file mode 100644
index 91f8d61..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/libgdal.py
+++ /dev/null
@@ -1,109 +0,0 @@
-from __future__ import unicode_literals
-
-import logging
-import os
-import re
-from ctypes import c_char_p, c_int, CDLL, CFUNCTYPE
-from ctypes.util import find_library
-
-from django.contrib.gis.gdal.error import OGRException
-from django.core.exceptions import ImproperlyConfigured
-
-logger = logging.getLogger('django.contrib.gis')
-
-# Custom library path set?
-try:
- from django.conf import settings
- lib_path = settings.GDAL_LIBRARY_PATH
-except (AttributeError, EnvironmentError,
- ImportError, ImproperlyConfigured):
- lib_path = None
-
-if lib_path:
- lib_names = None
-elif os.name == 'nt':
- # Windows NT shared libraries
- lib_names = ['gdal19', 'gdal18', 'gdal17', 'gdal16', 'gdal15']
-elif os.name == 'posix':
- # *NIX library names.
- lib_names = ['gdal', 'GDAL', 'gdal1.9.0', 'gdal1.8.0', 'gdal1.7.0',
- 'gdal1.6.0', 'gdal1.5.0']
-else:
- raise OGRException('Unsupported OS "%s"' % os.name)
-
-# Using the ctypes `find_library` utility to find the
-# path to the GDAL library from the list of library names.
-if lib_names:
- for lib_name in lib_names:
- lib_path = find_library(lib_name)
- if not lib_path is None: break
-
-if lib_path is None:
- raise OGRException('Could not find the GDAL library (tried "%s"). '
- 'Try setting GDAL_LIBRARY_PATH in your settings.' %
- '", "'.join(lib_names))
-
-# This loads the GDAL/OGR C library
-lgdal = CDLL(lib_path)
-
-# On Windows, the GDAL binaries have some OSR routines exported with
-# STDCALL, while others are not. Thus, the library will also need to
-# be loaded up as WinDLL for said OSR functions that require the
-# different calling convention.
-if os.name == 'nt':
- from ctypes import WinDLL
- lwingdal = WinDLL(lib_path)
-
-def std_call(func):
- """
- Returns the correct STDCALL function for certain OSR routines on Win32
- platforms.
- """
- if os.name == 'nt':
- return lwingdal[func]
- else:
- return lgdal[func]
-
-#### Version-information functions. ####
-
-# Returns GDAL library version information with the given key.
-_version_info = std_call('GDALVersionInfo')
-_version_info.argtypes = [c_char_p]
-_version_info.restype = c_char_p
-
-def gdal_version():
- "Returns only the GDAL version number information."
- return _version_info(b'RELEASE_NAME')
-
-def gdal_full_version():
- "Returns the full GDAL version information."
- return _version_info('')
-
-version_regex = re.compile(r'^(?P<major>\d+)\.(?P<minor>\d+)(\.(?P<subminor>\d+))?')
-def gdal_version_info():
- ver = gdal_version().decode()
- m = version_regex.match(ver)
- if not m: raise OGRException('Could not parse GDAL version string "%s"' % ver)
- return dict([(key, m.group(key)) for key in ('major', 'minor', 'subminor')])
-
-_verinfo = gdal_version_info()
-GDAL_MAJOR_VERSION = int(_verinfo['major'])
-GDAL_MINOR_VERSION = int(_verinfo['minor'])
-GDAL_SUBMINOR_VERSION = _verinfo['subminor'] and int(_verinfo['subminor'])
-GDAL_VERSION = (GDAL_MAJOR_VERSION, GDAL_MINOR_VERSION, GDAL_SUBMINOR_VERSION)
-del _verinfo
-
-# Set library error handling so as errors are logged
-CPLErrorHandler = CFUNCTYPE(None, c_int, c_int, c_char_p)
-def err_handler(error_class, error_number, message):
- logger.error('GDAL_ERROR %d: %s' % (error_number, message))
-err_handler = CPLErrorHandler(err_handler)
-
-def function(name, args, restype):
- func = std_call(name)
- func.argtypes = args
- func.restype = restype
- return func
-
-set_error_handler = function('CPLSetErrorHandler', [CPLErrorHandler], CPLErrorHandler)
-set_error_handler(err_handler)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/ds.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/ds.py
deleted file mode 100644
index f798069..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/ds.py
+++ /dev/null
@@ -1,70 +0,0 @@
-"""
- This module houses the ctypes function prototypes for OGR DataSource
- related data structures. OGR_Dr_*, OGR_DS_*, OGR_L_*, OGR_F_*,
- OGR_Fld_* routines are relevant here.
-"""
-from ctypes import c_char_p, c_double, c_int, c_long, c_void_p, POINTER
-from django.contrib.gis.gdal.envelope import OGREnvelope
-from django.contrib.gis.gdal.libgdal import lgdal
-from django.contrib.gis.gdal.prototypes.generation import (const_string_output,
- double_output, geom_output, int_output, srs_output, void_output, voidptr_output)
-
-c_int_p = POINTER(c_int) # shortcut type
-
-### Driver Routines ###
-register_all = void_output(lgdal.OGRRegisterAll, [], errcheck=False)
-cleanup_all = void_output(lgdal.OGRCleanupAll, [], errcheck=False)
-get_driver = voidptr_output(lgdal.OGRGetDriver, [c_int])
-get_driver_by_name = voidptr_output(lgdal.OGRGetDriverByName, [c_char_p])
-get_driver_count = int_output(lgdal.OGRGetDriverCount, [])
-get_driver_name = const_string_output(lgdal.OGR_Dr_GetName, [c_void_p], decoding='ascii')
-
-### DataSource ###
-open_ds = voidptr_output(lgdal.OGROpen, [c_char_p, c_int, POINTER(c_void_p)])
-destroy_ds = void_output(lgdal.OGR_DS_Destroy, [c_void_p], errcheck=False)
-release_ds = void_output(lgdal.OGRReleaseDataSource, [c_void_p])
-get_ds_name = const_string_output(lgdal.OGR_DS_GetName, [c_void_p])
-get_layer = voidptr_output(lgdal.OGR_DS_GetLayer, [c_void_p, c_int])
-get_layer_by_name = voidptr_output(lgdal.OGR_DS_GetLayerByName, [c_void_p, c_char_p])
-get_layer_count = int_output(lgdal.OGR_DS_GetLayerCount, [c_void_p])
-
-### Layer Routines ###
-get_extent = void_output(lgdal.OGR_L_GetExtent, [c_void_p, POINTER(OGREnvelope), c_int])
-get_feature = voidptr_output(lgdal.OGR_L_GetFeature, [c_void_p, c_long])
-get_feature_count = int_output(lgdal.OGR_L_GetFeatureCount, [c_void_p, c_int])
-get_layer_defn = voidptr_output(lgdal.OGR_L_GetLayerDefn, [c_void_p])
-get_layer_srs = srs_output(lgdal.OGR_L_GetSpatialRef, [c_void_p])
-get_next_feature = voidptr_output(lgdal.OGR_L_GetNextFeature, [c_void_p])
-reset_reading = void_output(lgdal.OGR_L_ResetReading, [c_void_p], errcheck=False)
-test_capability = int_output(lgdal.OGR_L_TestCapability, [c_void_p, c_char_p])
-get_spatial_filter = geom_output(lgdal.OGR_L_GetSpatialFilter, [c_void_p])
-set_spatial_filter = void_output(lgdal.OGR_L_SetSpatialFilter, [c_void_p, c_void_p], errcheck=False)
-set_spatial_filter_rect = void_output(lgdal.OGR_L_SetSpatialFilterRect, [c_void_p, c_double, c_double, c_double, c_double], errcheck=False)
-
-### Feature Definition Routines ###
-get_fd_geom_type = int_output(lgdal.OGR_FD_GetGeomType, [c_void_p])
-get_fd_name = const_string_output(lgdal.OGR_FD_GetName, [c_void_p])
-get_feat_name = const_string_output(lgdal.OGR_FD_GetName, [c_void_p])
-get_field_count = int_output(lgdal.OGR_FD_GetFieldCount, [c_void_p])
-get_field_defn = voidptr_output(lgdal.OGR_FD_GetFieldDefn, [c_void_p, c_int])
-
-### Feature Routines ###
-clone_feature = voidptr_output(lgdal.OGR_F_Clone, [c_void_p])
-destroy_feature = void_output(lgdal.OGR_F_Destroy, [c_void_p], errcheck=False)
-feature_equal = int_output(lgdal.OGR_F_Equal, [c_void_p, c_void_p])
-get_feat_geom_ref = geom_output(lgdal.OGR_F_GetGeometryRef, [c_void_p])
-get_feat_field_count = int_output(lgdal.OGR_F_GetFieldCount, [c_void_p])
-get_feat_field_defn = voidptr_output(lgdal.OGR_F_GetFieldDefnRef, [c_void_p, c_int])
-get_fid = int_output(lgdal.OGR_F_GetFID, [c_void_p])
-get_field_as_datetime = int_output(lgdal.OGR_F_GetFieldAsDateTime, [c_void_p, c_int, c_int_p, c_int_p, c_int_p, c_int_p, c_int_p, c_int_p])
-get_field_as_double = double_output(lgdal.OGR_F_GetFieldAsDouble, [c_void_p, c_int])
-get_field_as_integer = int_output(lgdal.OGR_F_GetFieldAsInteger, [c_void_p, c_int])
-get_field_as_string = const_string_output(lgdal.OGR_F_GetFieldAsString, [c_void_p, c_int])
-get_field_index = int_output(lgdal.OGR_F_GetFieldIndex, [c_void_p, c_char_p])
-
-### Field Routines ###
-get_field_name = const_string_output(lgdal.OGR_Fld_GetNameRef, [c_void_p])
-get_field_precision = int_output(lgdal.OGR_Fld_GetPrecision, [c_void_p])
-get_field_type = int_output(lgdal.OGR_Fld_GetType, [c_void_p])
-get_field_type_name = const_string_output(lgdal.OGR_GetFieldTypeName, [c_int])
-get_field_width = int_output(lgdal.OGR_Fld_GetWidth, [c_void_p])
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/errcheck.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/errcheck.py
deleted file mode 100644
index 2d27911..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/errcheck.py
+++ /dev/null
@@ -1,128 +0,0 @@
-"""
- This module houses the error-checking routines used by the GDAL
- ctypes prototypes.
-"""
-from ctypes import c_void_p, string_at
-from django.contrib.gis.gdal.error import check_err, OGRException, SRSException
-from django.contrib.gis.gdal.libgdal import lgdal
-from django.utils import six
-
-# Helper routines for retrieving pointers and/or values from
-# arguments passed in by reference.
-def arg_byref(args, offset=-1):
- "Returns the pointer argument's by-refernece value."
- return args[offset]._obj.value
-
-def ptr_byref(args, offset=-1):
- "Returns the pointer argument passed in by-reference."
- return args[offset]._obj
-
-def check_bool(result, func, cargs):
- "Returns the boolean evaluation of the value."
- if bool(result): return True
- else: return False
-
-### String checking Routines ###
-def check_const_string(result, func, cargs, offset=None):
- """
- Similar functionality to `check_string`, but does not free the pointer.
- """
- if offset:
- check_err(result)
- ptr = ptr_byref(cargs, offset)
- return ptr.value
- else:
- return result
-
-def check_string(result, func, cargs, offset=-1, str_result=False):
- """
- Checks the string output returned from the given function, and frees
- the string pointer allocated by OGR. The `str_result` keyword
- may be used when the result is the string pointer, otherwise
- the OGR error code is assumed. The `offset` keyword may be used
- to extract the string pointer passed in by-reference at the given
- slice offset in the function arguments.
- """
- if str_result:
- # For routines that return a string.
- ptr = result
- if not ptr: s = None
- else: s = string_at(result)
- else:
- # Error-code return specified.
- check_err(result)
- ptr = ptr_byref(cargs, offset)
- # Getting the string value
- s = ptr.value
- # Correctly freeing the allocated memory beind GDAL pointer
- # w/the VSIFree routine.
- if ptr: lgdal.VSIFree(ptr)
- return s
-
-### DataSource, Layer error-checking ###
-
-### Envelope checking ###
-def check_envelope(result, func, cargs, offset=-1):
- "Checks a function that returns an OGR Envelope by reference."
- env = ptr_byref(cargs, offset)
- return env
-
-### Geometry error-checking routines ###
-def check_geom(result, func, cargs):
- "Checks a function that returns a geometry."
- # OGR_G_Clone may return an integer, even though the
- # restype is set to c_void_p
- if isinstance(result, six.integer_types):
- result = c_void_p(result)
- if not result:
- raise OGRException('Invalid geometry pointer returned from "%s".' % func.__name__)
- return result
-
-def check_geom_offset(result, func, cargs, offset=-1):
- "Chcks the geometry at the given offset in the C parameter list."
- check_err(result)
- geom = ptr_byref(cargs, offset=offset)
- return check_geom(geom, func, cargs)
-
-### Spatial Reference error-checking routines ###
-def check_srs(result, func, cargs):
- if isinstance(result, six.integer_types):
- result = c_void_p(result)
- if not result:
- raise SRSException('Invalid spatial reference pointer returned from "%s".' % func.__name__)
- return result
-
-### Other error-checking routines ###
-def check_arg_errcode(result, func, cargs):
- """
- The error code is returned in the last argument, by reference.
- Check its value with `check_err` before returning the result.
- """
- check_err(arg_byref(cargs))
- return result
-
-def check_errcode(result, func, cargs):
- """
- Check the error code returned (c_int).
- """
- check_err(result)
- return
-
-def check_pointer(result, func, cargs):
- "Makes sure the result pointer is valid."
- if isinstance(result, six.integer_types):
- result = c_void_p(result)
- if bool(result):
- return result
- else:
- raise OGRException('Invalid pointer returned from "%s"' % func.__name__)
-
-def check_str_arg(result, func, cargs):
- """
- This is for the OSRGet[Angular|Linear]Units functions, which
- require that the returned string pointer not be freed. This
- returns both the double and tring values.
- """
- dbl = result
- ptr = cargs[-1]._obj
- return dbl, ptr.value.decode()
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/generation.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/generation.py
deleted file mode 100644
index 577d29b..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/generation.py
+++ /dev/null
@@ -1,125 +0,0 @@
-"""
- This module contains functions that generate ctypes prototypes for the
- GDAL routines.
-"""
-
-from ctypes import c_char_p, c_double, c_int, c_void_p
-from django.contrib.gis.gdal.prototypes.errcheck import (
- check_arg_errcode, check_errcode, check_geom, check_geom_offset,
- check_pointer, check_srs, check_str_arg, check_string, check_const_string)
-
-class gdal_char_p(c_char_p):
- pass
-
-def double_output(func, argtypes, errcheck=False, strarg=False):
- "Generates a ctypes function that returns a double value."
- func.argtypes = argtypes
- func.restype = c_double
- if errcheck: func.errcheck = check_arg_errcode
- if strarg: func.errcheck = check_str_arg
- return func
-
-def geom_output(func, argtypes, offset=None):
- """
- Generates a function that returns a Geometry either by reference
- or directly (if the return_geom keyword is set to True).
- """
- # Setting the argument types
- func.argtypes = argtypes
-
- if not offset:
- # When a geometry pointer is directly returned.
- func.restype = c_void_p
- func.errcheck = check_geom
- else:
- # Error code returned, geometry is returned by-reference.
- func.restype = c_int
- def geomerrcheck(result, func, cargs):
- return check_geom_offset(result, func, cargs, offset)
- func.errcheck = geomerrcheck
-
- return func
-
-def int_output(func, argtypes):
- "Generates a ctypes function that returns an integer value."
- func.argtypes = argtypes
- func.restype = c_int
- return func
-
-def srs_output(func, argtypes):
- """
- Generates a ctypes prototype for the given function with
- the given C arguments that returns a pointer to an OGR
- Spatial Reference System.
- """
- func.argtypes = argtypes
- func.restype = c_void_p
- func.errcheck = check_srs
- return func
-
-def const_string_output(func, argtypes, offset=None, decoding=None):
- func.argtypes = argtypes
- if offset:
- func.restype = c_int
- else:
- func.restype = c_char_p
-
- def _check_const(result, func, cargs):
- res = check_const_string(result, func, cargs, offset=offset)
- if res and decoding:
- res = res.decode(decoding)
- return res
- func.errcheck = _check_const
-
- return func
-
-def string_output(func, argtypes, offset=-1, str_result=False, decoding=None):
- """
- Generates a ctypes prototype for the given function with the
- given argument types that returns a string from a GDAL pointer.
- The `const` flag indicates whether the allocated pointer should
- be freed via the GDAL library routine VSIFree -- but only applies
- only when `str_result` is True.
- """
- func.argtypes = argtypes
- if str_result:
- # Use subclass of c_char_p so the error checking routine
- # can free the memory at the pointer's address.
- func.restype = gdal_char_p
- else:
- # Error code is returned
- func.restype = c_int
-
- # Dynamically defining our error-checking function with the
- # given offset.
- def _check_str(result, func, cargs):
- res = check_string(result, func, cargs,
- offset=offset, str_result=str_result)
- if res and decoding:
- res = res.decode(decoding)
- return res
- func.errcheck = _check_str
- return func
-
-def void_output(func, argtypes, errcheck=True):
- """
- For functions that don't only return an error code that needs to
- be examined.
- """
- if argtypes: func.argtypes = argtypes
- if errcheck:
- # `errcheck` keyword may be set to False for routines that
- # return void, rather than a status code.
- func.restype = c_int
- func.errcheck = check_errcode
- else:
- func.restype = None
-
- return func
-
-def voidptr_output(func, argtypes):
- "For functions that return c_void_p."
- func.argtypes = argtypes
- func.restype = c_void_p
- func.errcheck = check_pointer
- return func
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/geom.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/geom.py
deleted file mode 100644
index fa0b503..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/geom.py
+++ /dev/null
@@ -1,98 +0,0 @@
-from ctypes import c_char_p, c_double, c_int, c_void_p, POINTER
-from django.contrib.gis.gdal.envelope import OGREnvelope
-from django.contrib.gis.gdal.libgdal import lgdal
-from django.contrib.gis.gdal.prototypes.errcheck import check_bool, check_envelope
-from django.contrib.gis.gdal.prototypes.generation import (const_string_output,
- double_output, geom_output, int_output, srs_output, string_output, void_output)
-
-### Generation routines specific to this module ###
-def env_func(f, argtypes):
- "For getting OGREnvelopes."
- f.argtypes = argtypes
- f.restype = None
- f.errcheck = check_envelope
- return f
-
-def pnt_func(f):
- "For accessing point information."
- return double_output(f, [c_void_p, c_int])
-
-def topology_func(f):
- f.argtypes = [c_void_p, c_void_p]
- f.restype = c_int
- f.errchck = check_bool
- return f
-
-### OGR_G ctypes function prototypes ###
-
-# GeoJSON routines.
-from_json = geom_output(lgdal.OGR_G_CreateGeometryFromJson, [c_char_p])
-to_json = string_output(lgdal.OGR_G_ExportToJson, [c_void_p], str_result=True, decoding='ascii')
-to_kml = string_output(lgdal.OGR_G_ExportToKML, [c_void_p, c_char_p], str_result=True, decoding='ascii')
-
-# GetX, GetY, GetZ all return doubles.
-getx = pnt_func(lgdal.OGR_G_GetX)
-gety = pnt_func(lgdal.OGR_G_GetY)
-getz = pnt_func(lgdal.OGR_G_GetZ)
-
-# Geometry creation routines.
-from_wkb = geom_output(lgdal.OGR_G_CreateFromWkb, [c_char_p, c_void_p, POINTER(c_void_p), c_int], offset=-2)
-from_wkt = geom_output(lgdal.OGR_G_CreateFromWkt, [POINTER(c_char_p), c_void_p, POINTER(c_void_p)], offset=-1)
-create_geom = geom_output(lgdal.OGR_G_CreateGeometry, [c_int])
-clone_geom = geom_output(lgdal.OGR_G_Clone, [c_void_p])
-get_geom_ref = geom_output(lgdal.OGR_G_GetGeometryRef, [c_void_p, c_int])
-get_boundary = geom_output(lgdal.OGR_G_GetBoundary, [c_void_p])
-geom_convex_hull = geom_output(lgdal.OGR_G_ConvexHull, [c_void_p])
-geom_diff = geom_output(lgdal.OGR_G_Difference, [c_void_p, c_void_p])
-geom_intersection = geom_output(lgdal.OGR_G_Intersection, [c_void_p, c_void_p])
-geom_sym_diff = geom_output(lgdal.OGR_G_SymmetricDifference, [c_void_p, c_void_p])
-geom_union = geom_output(lgdal.OGR_G_Union, [c_void_p, c_void_p])
-
-# Geometry modification routines.
-add_geom = void_output(lgdal.OGR_G_AddGeometry, [c_void_p, c_void_p])
-import_wkt = void_output(lgdal.OGR_G_ImportFromWkt, [c_void_p, POINTER(c_char_p)])
-
-# Destroys a geometry
-destroy_geom = void_output(lgdal.OGR_G_DestroyGeometry, [c_void_p], errcheck=False)
-
-# Geometry export routines.
-to_wkb = void_output(lgdal.OGR_G_ExportToWkb, None, errcheck=True) # special handling for WKB.
-to_wkt = string_output(lgdal.OGR_G_ExportToWkt, [c_void_p, POINTER(c_char_p)], decoding='ascii')
-to_gml = string_output(lgdal.OGR_G_ExportToGML, [c_void_p], str_result=True, decoding='ascii')
-get_wkbsize = int_output(lgdal.OGR_G_WkbSize, [c_void_p])
-
-# Geometry spatial-reference related routines.
-assign_srs = void_output(lgdal.OGR_G_AssignSpatialReference, [c_void_p, c_void_p], errcheck=False)
-get_geom_srs = srs_output(lgdal.OGR_G_GetSpatialReference, [c_void_p])
-
-# Geometry properties
-get_area = double_output(lgdal.OGR_G_GetArea, [c_void_p])
-get_centroid = void_output(lgdal.OGR_G_Centroid, [c_void_p, c_void_p])
-get_dims = int_output(lgdal.OGR_G_GetDimension, [c_void_p])
-get_coord_dim = int_output(lgdal.OGR_G_GetCoordinateDimension, [c_void_p])
-set_coord_dim = void_output(lgdal.OGR_G_SetCoordinateDimension, [c_void_p, c_int], errcheck=False)
-
-get_geom_count = int_output(lgdal.OGR_G_GetGeometryCount, [c_void_p])
-get_geom_name = const_string_output(lgdal.OGR_G_GetGeometryName, [c_void_p], decoding='ascii')
-get_geom_type = int_output(lgdal.OGR_G_GetGeometryType, [c_void_p])
-get_point_count = int_output(lgdal.OGR_G_GetPointCount, [c_void_p])
-get_point = void_output(lgdal.OGR_G_GetPoint, [c_void_p, c_int, POINTER(c_double), POINTER(c_double), POINTER(c_double)], errcheck=False)
-geom_close_rings = void_output(lgdal.OGR_G_CloseRings, [c_void_p], errcheck=False)
-
-# Topology routines.
-ogr_contains = topology_func(lgdal.OGR_G_Contains)
-ogr_crosses = topology_func(lgdal.OGR_G_Crosses)
-ogr_disjoint = topology_func(lgdal.OGR_G_Disjoint)
-ogr_equals = topology_func(lgdal.OGR_G_Equals)
-ogr_intersects = topology_func(lgdal.OGR_G_Intersects)
-ogr_overlaps = topology_func(lgdal.OGR_G_Overlaps)
-ogr_touches = topology_func(lgdal.OGR_G_Touches)
-ogr_within = topology_func(lgdal.OGR_G_Within)
-
-# Transformation routines.
-geom_transform = void_output(lgdal.OGR_G_Transform, [c_void_p, c_void_p])
-geom_transform_to = void_output(lgdal.OGR_G_TransformTo, [c_void_p, c_void_p])
-
-# For retrieving the envelope of the geometry.
-get_envelope = env_func(lgdal.OGR_G_GetEnvelope, [c_void_p, POINTER(OGREnvelope)])
-
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/srs.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/srs.py
deleted file mode 100644
index 58ceb75..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/prototypes/srs.py
+++ /dev/null
@@ -1,71 +0,0 @@
-from ctypes import c_char_p, c_int, c_void_p, POINTER
-from django.contrib.gis.gdal.libgdal import lgdal, std_call
-from django.contrib.gis.gdal.prototypes.generation import (const_string_output,
- double_output, int_output, srs_output, string_output, void_output)
-
-## Shortcut generation for routines with known parameters.
-def srs_double(f):
- """
- Creates a function prototype for the OSR routines that take
- the OSRSpatialReference object and
- """
- return double_output(f, [c_void_p, POINTER(c_int)], errcheck=True)
-
-def units_func(f):
- """
- Creates a ctypes function prototype for OSR units functions, e.g.,
- OSRGetAngularUnits, OSRGetLinearUnits.
- """
- return double_output(f, [c_void_p, POINTER(c_char_p)], strarg=True)
-
-# Creation & destruction.
-clone_srs = srs_output(std_call('OSRClone'), [c_void_p])
-new_srs = srs_output(std_call('OSRNewSpatialReference'), [c_char_p])
-release_srs = void_output(lgdal.OSRRelease, [c_void_p], errcheck=False)
-destroy_srs = void_output(std_call('OSRDestroySpatialReference'), [c_void_p], errcheck=False)
-srs_validate = void_output(lgdal.OSRValidate, [c_void_p])
-
-# Getting the semi_major, semi_minor, and flattening functions.
-semi_major = srs_double(lgdal.OSRGetSemiMajor)
-semi_minor = srs_double(lgdal.OSRGetSemiMinor)
-invflattening = srs_double(lgdal.OSRGetInvFlattening)
-
-# WKT, PROJ, EPSG, XML importation routines.
-from_wkt = void_output(lgdal.OSRImportFromWkt, [c_void_p, POINTER(c_char_p)])
-from_proj = void_output(lgdal.OSRImportFromProj4, [c_void_p, c_char_p])
-from_epsg = void_output(std_call('OSRImportFromEPSG'), [c_void_p, c_int])
-from_xml = void_output(lgdal.OSRImportFromXML, [c_void_p, c_char_p])
-from_user_input = void_output(std_call('OSRSetFromUserInput'), [c_void_p, c_char_p])
-
-# Morphing to/from ESRI WKT.
-morph_to_esri = void_output(lgdal.OSRMorphToESRI, [c_void_p])
-morph_from_esri = void_output(lgdal.OSRMorphFromESRI, [c_void_p])
-
-# Identifying the EPSG
-identify_epsg = void_output(lgdal.OSRAutoIdentifyEPSG, [c_void_p])
-
-# Getting the angular_units, linear_units functions
-linear_units = units_func(lgdal.OSRGetLinearUnits)
-angular_units = units_func(lgdal.OSRGetAngularUnits)
-
-# For exporting to WKT, PROJ.4, "Pretty" WKT, and XML.
-to_wkt = string_output(std_call('OSRExportToWkt'), [c_void_p, POINTER(c_char_p)], decoding='ascii')
-to_proj = string_output(std_call('OSRExportToProj4'), [c_void_p, POINTER(c_char_p)], decoding='ascii')
-to_pretty_wkt = string_output(std_call('OSRExportToPrettyWkt'), [c_void_p, POINTER(c_char_p), c_int], offset=-2, decoding='ascii')
-
-# Memory leak fixed in GDAL 1.5; still exists in 1.4.
-to_xml = string_output(lgdal.OSRExportToXML, [c_void_p, POINTER(c_char_p), c_char_p], offset=-2, decoding='ascii')
-
-# String attribute retrival routines.
-get_attr_value = const_string_output(std_call('OSRGetAttrValue'), [c_void_p, c_char_p, c_int], decoding='ascii')
-get_auth_name = const_string_output(lgdal.OSRGetAuthorityName, [c_void_p, c_char_p], decoding='ascii')
-get_auth_code = const_string_output(lgdal.OSRGetAuthorityCode, [c_void_p, c_char_p], decoding='ascii')
-
-# SRS Properties
-isgeographic = int_output(lgdal.OSRIsGeographic, [c_void_p])
-islocal = int_output(lgdal.OSRIsLocal, [c_void_p])
-isprojected = int_output(lgdal.OSRIsProjected, [c_void_p])
-
-# Coordinate transformation
-new_ct= srs_output(std_call('OCTNewCoordinateTransformation'), [c_void_p, c_void_p])
-destroy_ct = void_output(std_call('OCTDestroyCoordinateTransformation'), [c_void_p], errcheck=False)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/srs.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/srs.py
deleted file mode 100644
index 66a8d4e..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/srs.py
+++ /dev/null
@@ -1,342 +0,0 @@
-"""
- The Spatial Reference class, represensents OGR Spatial Reference objects.
-
- Example:
- >>> from django.contrib.gis.gdal import SpatialReference
- >>> srs = SpatialReference('WGS84')
- >>> print(srs)
- GEOGCS["WGS 84",
- DATUM["WGS_1984",
- SPHEROID["WGS 84",6378137,298.257223563,
- AUTHORITY["EPSG","7030"]],
- TOWGS84[0,0,0,0,0,0,0],
- AUTHORITY["EPSG","6326"]],
- PRIMEM["Greenwich",0,
- AUTHORITY["EPSG","8901"]],
- UNIT["degree",0.01745329251994328,
- AUTHORITY["EPSG","9122"]],
- AUTHORITY["EPSG","4326"]]
- >>> print(srs.proj)
- +proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs
- >>> print(srs.ellipsoid)
- (6378137.0, 6356752.3142451793, 298.25722356300003)
- >>> print(srs.projected, srs.geographic)
- False True
- >>> srs.import_epsg(32140)
- >>> print(srs.name)
- NAD83 / Texas South Central
-"""
-from ctypes import byref, c_char_p, c_int
-
-# Getting the error checking routine and exceptions
-from django.contrib.gis.gdal.base import GDALBase
-from django.contrib.gis.gdal.error import SRSException
-from django.contrib.gis.gdal.prototypes import srs as capi
-
-from django.utils import six
-from django.utils.encoding import force_bytes
-
-
-#### Spatial Reference class. ####
-class SpatialReference(GDALBase):
- """
- A wrapper for the OGRSpatialReference object. According to the GDAL Web site,
- the SpatialReference object "provide[s] services to represent coordinate
- systems (projections and datums) and to transform between them."
- """
-
- #### Python 'magic' routines ####
- def __init__(self, srs_input=''):
- """
- Creates a GDAL OSR Spatial Reference object from the given input.
- The input may be string of OGC Well Known Text (WKT), an integer
- EPSG code, a PROJ.4 string, and/or a projection "well known" shorthand
- string (one of 'WGS84', 'WGS72', 'NAD27', 'NAD83').
- """
- srs_type = 'user'
-
- if isinstance(srs_input, six.string_types):
- # Encoding to ASCII if unicode passed in.
- if isinstance(srs_input, six.text_type):
- srs_input = srs_input.encode('ascii')
- try:
- # If SRID is a string, e.g., '4326', then make acceptable
- # as user input.
- srid = int(srs_input)
- srs_input = 'EPSG:%d' % srid
- except ValueError:
- pass
- elif isinstance(srs_input, six.integer_types):
- # EPSG integer code was input.
- srs_type = 'epsg'
- elif isinstance(srs_input, self.ptr_type):
- srs = srs_input
- srs_type = 'ogr'
- else:
- raise TypeError('Invalid SRS type "%s"' % srs_type)
-
- if srs_type == 'ogr':
- # Input is already an SRS pointer.
- srs = srs_input
- else:
- # Creating a new SRS pointer, using the string buffer.
- buf = c_char_p(b'')
- srs = capi.new_srs(buf)
-
- # If the pointer is NULL, throw an exception.
- if not srs:
- raise SRSException('Could not create spatial reference from: %s' % srs_input)
- else:
- self.ptr = srs
-
- # Importing from either the user input string or an integer SRID.
- if srs_type == 'user':
- self.import_user_input(srs_input)
- elif srs_type == 'epsg':
- self.import_epsg(srs_input)
-
- def __del__(self):
- "Destroys this spatial reference."
- if self._ptr: capi.release_srs(self._ptr)
-
- def __getitem__(self, target):
- """
- Returns the value of the given string attribute node, None if the node
- doesn't exist. Can also take a tuple as a parameter, (target, child),
- where child is the index of the attribute in the WKT. For example:
-
- >>> wkt = 'GEOGCS["WGS 84", DATUM["WGS_1984, ... AUTHORITY["EPSG","4326"]]')
- >>> srs = SpatialReference(wkt) # could also use 'WGS84', or 4326
- >>> print(srs['GEOGCS'])
- WGS 84
- >>> print(srs['DATUM'])
- WGS_1984
- >>> print(srs['AUTHORITY'])
- EPSG
- >>> print(srs['AUTHORITY', 1]) # The authority value
- 4326
- >>> print(srs['TOWGS84', 4]) # the fourth value in this wkt
- 0
- >>> print(srs['UNIT|AUTHORITY']) # For the units authority, have to use the pipe symbole.
- EPSG
- >>> print(srs['UNIT|AUTHORITY', 1]) # The authority value for the untis
- 9122
- """
- if isinstance(target, tuple):
- return self.attr_value(*target)
- else:
- return self.attr_value(target)
-
- def __str__(self):
- "The string representation uses 'pretty' WKT."
- return self.pretty_wkt
-
- #### SpatialReference Methods ####
- def attr_value(self, target, index=0):
- """
- The attribute value for the given target node (e.g. 'PROJCS'). The index
- keyword specifies an index of the child node to return.
- """
- if not isinstance(target, six.string_types) or not isinstance(index, int):
- raise TypeError
- return capi.get_attr_value(self.ptr, force_bytes(target), index)
-
- def auth_name(self, target):
- "Returns the authority name for the given string target node."
- return capi.get_auth_name(self.ptr, force_bytes(target))
-
- def auth_code(self, target):
- "Returns the authority code for the given string target node."
- return capi.get_auth_code(self.ptr, force_bytes(target))
-
- def clone(self):
- "Returns a clone of this SpatialReference object."
- return SpatialReference(capi.clone_srs(self.ptr))
-
- def from_esri(self):
- "Morphs this SpatialReference from ESRI's format to EPSG."
- capi.morph_from_esri(self.ptr)
-
- def identify_epsg(self):
- """
- This method inspects the WKT of this SpatialReference, and will
- add EPSG authority nodes where an EPSG identifier is applicable.
- """
- capi.identify_epsg(self.ptr)
-
- def to_esri(self):
- "Morphs this SpatialReference to ESRI's format."
- capi.morph_to_esri(self.ptr)
-
- def validate(self):
- "Checks to see if the given spatial reference is valid."
- capi.srs_validate(self.ptr)
-
- #### Name & SRID properties ####
- @property
- def name(self):
- "Returns the name of this Spatial Reference."
- if self.projected: return self.attr_value('PROJCS')
- elif self.geographic: return self.attr_value('GEOGCS')
- elif self.local: return self.attr_value('LOCAL_CS')
- else: return None
-
- @property
- def srid(self):
- "Returns the SRID of top-level authority, or None if undefined."
- try:
- return int(self.attr_value('AUTHORITY', 1))
- except (TypeError, ValueError):
- return None
-
- #### Unit Properties ####
- @property
- def linear_name(self):
- "Returns the name of the linear units."
- units, name = capi.linear_units(self.ptr, byref(c_char_p()))
- return name
-
- @property
- def linear_units(self):
- "Returns the value of the linear units."
- units, name = capi.linear_units(self.ptr, byref(c_char_p()))
- return units
-
- @property
- def angular_name(self):
- "Returns the name of the angular units."
- units, name = capi.angular_units(self.ptr, byref(c_char_p()))
- return name
-
- @property
- def angular_units(self):
- "Returns the value of the angular units."
- units, name = capi.angular_units(self.ptr, byref(c_char_p()))
- return units
-
- @property
- def units(self):
- """
- Returns a 2-tuple of the units value and the units name,
- and will automatically determines whether to return the linear
- or angular units.
- """
- units, name = None, None
- if self.projected or self.local:
- units, name = capi.linear_units(self.ptr, byref(c_char_p()))
- elif self.geographic:
- units, name = capi.angular_units(self.ptr, byref(c_char_p()))
- if name is not None:
- name.decode()
- return (units, name)
-
- #### Spheroid/Ellipsoid Properties ####
- @property
- def ellipsoid(self):
- """
- Returns a tuple of the ellipsoid parameters:
- (semimajor axis, semiminor axis, and inverse flattening)
- """
- return (self.semi_major, self.semi_minor, self.inverse_flattening)
-
- @property
- def semi_major(self):
- "Returns the Semi Major Axis for this Spatial Reference."
- return capi.semi_major(self.ptr, byref(c_int()))
-
- @property
- def semi_minor(self):
- "Returns the Semi Minor Axis for this Spatial Reference."
- return capi.semi_minor(self.ptr, byref(c_int()))
-
- @property
- def inverse_flattening(self):
- "Returns the Inverse Flattening for this Spatial Reference."
- return capi.invflattening(self.ptr, byref(c_int()))
-
- #### Boolean Properties ####
- @property
- def geographic(self):
- """
- Returns True if this SpatialReference is geographic
- (root node is GEOGCS).
- """
- return bool(capi.isgeographic(self.ptr))
-
- @property
- def local(self):
- "Returns True if this SpatialReference is local (root node is LOCAL_CS)."
- return bool(capi.islocal(self.ptr))
-
- @property
- def projected(self):
- """
- Returns True if this SpatialReference is a projected coordinate system
- (root node is PROJCS).
- """
- return bool(capi.isprojected(self.ptr))
-
- #### Import Routines #####
- def import_epsg(self, epsg):
- "Imports the Spatial Reference from the EPSG code (an integer)."
- capi.from_epsg(self.ptr, epsg)
-
- def import_proj(self, proj):
- "Imports the Spatial Reference from a PROJ.4 string."
- capi.from_proj(self.ptr, proj)
-
- def import_user_input(self, user_input):
- "Imports the Spatial Reference from the given user input string."
- capi.from_user_input(self.ptr, force_bytes(user_input))
-
- def import_wkt(self, wkt):
- "Imports the Spatial Reference from OGC WKT (string)"
- capi.from_wkt(self.ptr, byref(c_char_p(wkt)))
-
- def import_xml(self, xml):
- "Imports the Spatial Reference from an XML string."
- capi.from_xml(self.ptr, xml)
-
- #### Export Properties ####
- @property
- def wkt(self):
- "Returns the WKT representation of this Spatial Reference."
- return capi.to_wkt(self.ptr, byref(c_char_p()))
-
- @property
- def pretty_wkt(self, simplify=0):
- "Returns the 'pretty' representation of the WKT."
- return capi.to_pretty_wkt(self.ptr, byref(c_char_p()), simplify)
-
- @property
- def proj(self):
- "Returns the PROJ.4 representation for this Spatial Reference."
- return capi.to_proj(self.ptr, byref(c_char_p()))
-
- @property
- def proj4(self):
- "Alias for proj()."
- return self.proj
-
- @property
- def xml(self, dialect=''):
- "Returns the XML representation of this Spatial Reference."
- return capi.to_xml(self.ptr, byref(c_char_p()), dialect)
-
-class CoordTransform(GDALBase):
- "The coordinate system transformation object."
-
- def __init__(self, source, target):
- "Initializes on a source and target SpatialReference objects."
- if not isinstance(source, SpatialReference) or not isinstance(target, SpatialReference):
- raise TypeError('source and target must be of type SpatialReference')
- self.ptr = capi.new_ct(source._ptr, target._ptr)
- self._srs1_name = source.name
- self._srs2_name = target.name
-
- def __del__(self):
- "Deletes this Coordinate Transformation object."
- if self._ptr: capi.destroy_ct(self._ptr)
-
- def __str__(self):
- return 'Transform from "%s" to "%s"' % (self._srs1_name, self._srs2_name)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_driver.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_driver.py
deleted file mode 100644
index c27302d..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_driver.py
+++ /dev/null
@@ -1,39 +0,0 @@
-from django.contrib.gis.gdal import HAS_GDAL
-from django.utils import unittest
-from django.utils.unittest import skipUnless
-
-if HAS_GDAL:
- from django.contrib.gis.gdal import Driver, OGRException
-
-
-valid_drivers = ('ESRI Shapefile', 'MapInfo File', 'TIGER', 'S57', 'DGN',
- 'Memory', 'CSV', 'GML', 'KML')
-
-invalid_drivers = ('Foo baz', 'clucka', 'ESRI Shp')
-
-aliases = {'eSrI' : 'ESRI Shapefile',
- 'TigER/linE' : 'TIGER',
- 'SHAPE' : 'ESRI Shapefile',
- 'sHp' : 'ESRI Shapefile',
- }
-
-
-@skipUnless(HAS_GDAL, "GDAL is required")
-class DriverTest(unittest.TestCase):
-
- def test01_valid_driver(self):
- "Testing valid OGR Data Source Drivers."
- for d in valid_drivers:
- dr = Driver(d)
- self.assertEqual(d, str(dr))
-
- def test02_invalid_driver(self):
- "Testing invalid OGR Data Source Drivers."
- for i in invalid_drivers:
- self.assertRaises(OGRException, Driver, i)
-
- def test03_aliases(self):
- "Testing driver aliases."
- for alias, full_name in aliases.items():
- dr = Driver(alias)
- self.assertEqual(full_name, str(dr))
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_ds.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_ds.py
deleted file mode 100644
index 3664f05..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_ds.py
+++ /dev/null
@@ -1,244 +0,0 @@
-import os
-
-from django.contrib.gis.gdal import HAS_GDAL
-from django.contrib.gis.geometry.test_data import get_ds_file, TestDS, TEST_DATA
-from django.utils import unittest
-from django.utils.unittest import skipUnless
-
-if HAS_GDAL:
- from django.contrib.gis.gdal import DataSource, Envelope, OGRGeometry, OGRException, OGRIndexError, GDAL_VERSION
- from django.contrib.gis.gdal.field import OFTReal, OFTInteger, OFTString
-
- # List of acceptable data sources.
- ds_list = (
- TestDS('test_point', nfeat=5, nfld=3, geom='POINT', gtype=1, driver='ESRI Shapefile',
- fields={'dbl' : OFTReal, 'int' : OFTInteger, 'str' : OFTString,},
- extent=(-1.35011,0.166623,-0.524093,0.824508), # Got extent from QGIS
- srs_wkt='GEOGCS["GCS_WGS_1984",DATUM["WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]',
- field_values={'dbl' : [float(i) for i in range(1, 6)], 'int' : list(range(1, 6)), 'str' : [str(i) for i in range(1, 6)]},
- fids=range(5)),
- TestDS('test_vrt', ext='vrt', nfeat=3, nfld=3, geom='POINT', gtype='Point25D', driver='VRT',
- fields={'POINT_X' : OFTString, 'POINT_Y' : OFTString, 'NUM' : OFTString}, # VRT uses CSV, which all types are OFTString.
- extent=(1.0, 2.0, 100.0, 523.5), # Min/Max from CSV
- field_values={'POINT_X' : ['1.0', '5.0', '100.0'], 'POINT_Y' : ['2.0', '23.0', '523.5'], 'NUM' : ['5', '17', '23']},
- fids=range(1,4)),
- TestDS('test_poly', nfeat=3, nfld=3, geom='POLYGON', gtype=3,
- driver='ESRI Shapefile',
- fields={'float' : OFTReal, 'int' : OFTInteger, 'str' : OFTString,},
- extent=(-1.01513,-0.558245,0.161876,0.839637), # Got extent from QGIS
- srs_wkt='GEOGCS["GCS_WGS_1984",DATUM["WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]'),
- )
-
-bad_ds = (TestDS('foo'),)
-
-
-@skipUnless(HAS_GDAL, "GDAL is required")
-class DataSourceTest(unittest.TestCase):
-
- def test01_valid_shp(self):
- "Testing valid SHP Data Source files."
-
- for source in ds_list:
- # Loading up the data source
- ds = DataSource(source.ds)
-
- # Making sure the layer count is what's expected (only 1 layer in a SHP file)
- self.assertEqual(1, len(ds))
-
- # Making sure GetName works
- self.assertEqual(source.ds, ds.name)
-
- # Making sure the driver name matches up
- self.assertEqual(source.driver, str(ds.driver))
-
- # Making sure indexing works
- try:
- ds[len(ds)]
- except OGRIndexError:
- pass
- else:
- self.fail('Expected an IndexError!')
-
- def test02_invalid_shp(self):
- "Testing invalid SHP files for the Data Source."
- for source in bad_ds:
- self.assertRaises(OGRException, DataSource, source.ds)
-
- def test03a_layers(self):
- "Testing Data Source Layers."
- for source in ds_list:
- ds = DataSource(source.ds)
-
- # Incrementing through each layer, this tests DataSource.__iter__
- for layer in ds:
- # Making sure we get the number of features we expect
- self.assertEqual(len(layer), source.nfeat)
-
- # Making sure we get the number of fields we expect
- self.assertEqual(source.nfld, layer.num_fields)
- self.assertEqual(source.nfld, len(layer.fields))
-
- # Testing the layer's extent (an Envelope), and it's properties
- if source.driver == 'VRT' and (GDAL_VERSION >= (1, 7, 0) and GDAL_VERSION < (1, 7, 3)):
- # There's a known GDAL regression with retrieving the extent
- # of a VRT layer in versions 1.7.0-1.7.2:
- # http://trac.osgeo.org/gdal/ticket/3783
- pass
- else:
- self.assertEqual(True, isinstance(layer.extent, Envelope))
- self.assertAlmostEqual(source.extent[0], layer.extent.min_x, 5)
- self.assertAlmostEqual(source.extent[1], layer.extent.min_y, 5)
- self.assertAlmostEqual(source.extent[2], layer.extent.max_x, 5)
- self.assertAlmostEqual(source.extent[3], layer.extent.max_y, 5)
-
- # Now checking the field names.
- flds = layer.fields
- for f in flds: self.assertEqual(True, f in source.fields)
-
- # Negative FIDs are not allowed.
- self.assertRaises(OGRIndexError, layer.__getitem__, -1)
- self.assertRaises(OGRIndexError, layer.__getitem__, 50000)
-
- if hasattr(source, 'field_values'):
- fld_names = source.field_values.keys()
-
- # Testing `Layer.get_fields` (which uses Layer.__iter__)
- for fld_name in fld_names:
- self.assertEqual(source.field_values[fld_name], layer.get_fields(fld_name))
-
- # Testing `Layer.__getitem__`.
- for i, fid in enumerate(source.fids):
- feat = layer[fid]
- self.assertEqual(fid, feat.fid)
- # Maybe this should be in the test below, but we might as well test
- # the feature values here while in this loop.
- for fld_name in fld_names:
- self.assertEqual(source.field_values[fld_name][i], feat.get(fld_name))
-
- def test03b_layer_slice(self):
- "Test indexing and slicing on Layers."
- # Using the first data-source because the same slice
- # can be used for both the layer and the control values.
- source = ds_list[0]
- ds = DataSource(source.ds)
-
- sl = slice(1, 3)
- feats = ds[0][sl]
-
- for fld_name in ds[0].fields:
- test_vals = [feat.get(fld_name) for feat in feats]
- control_vals = source.field_values[fld_name][sl]
- self.assertEqual(control_vals, test_vals)
-
- def test03c_layer_references(self):
- """
- Ensure OGR objects keep references to the objects they belong to.
- """
- source = ds_list[0]
-
- # See ticket #9448.
- def get_layer():
- # This DataSource object is not accessible outside this
- # scope. However, a reference should still be kept alive
- # on the `Layer` returned.
- ds = DataSource(source.ds)
- return ds[0]
-
- # Making sure we can call OGR routines on the Layer returned.
- lyr = get_layer()
- self.assertEqual(source.nfeat, len(lyr))
- self.assertEqual(source.gtype, lyr.geom_type.num)
-
- # Same issue for Feature/Field objects, see #18640
- self.assertEqual(str(lyr[0]['str']), "1")
-
- def test04_features(self):
- "Testing Data Source Features."
- for source in ds_list:
- ds = DataSource(source.ds)
-
- # Incrementing through each layer
- for layer in ds:
- # Incrementing through each feature in the layer
- for feat in layer:
- # Making sure the number of fields, and the geometry type
- # are what's expected.
- self.assertEqual(source.nfld, len(list(feat)))
- self.assertEqual(source.gtype, feat.geom_type)
-
- # Making sure the fields match to an appropriate OFT type.
- for k, v in source.fields.items():
- # Making sure we get the proper OGR Field instance, using
- # a string value index for the feature.
- self.assertEqual(True, isinstance(feat[k], v))
-
- # Testing Feature.__iter__
- for fld in feat:
- self.assertEqual(True, fld.name in source.fields.keys())
-
- def test05_geometries(self):
- "Testing Geometries from Data Source Features."
- for source in ds_list:
- ds = DataSource(source.ds)
-
- # Incrementing through each layer and feature.
- for layer in ds:
- for feat in layer:
- g = feat.geom
-
- # Making sure we get the right Geometry name & type
- self.assertEqual(source.geom, g.geom_name)
- self.assertEqual(source.gtype, g.geom_type)
-
- # Making sure the SpatialReference is as expected.
- if hasattr(source, 'srs_wkt'):
- self.assertEqual(
- source.srs_wkt,
- # Depending on lib versions, WGS_84 might be WGS_1984
- g.srs.wkt.replace('SPHEROID["WGS_84"', 'SPHEROID["WGS_1984"')
- )
-
- def test06_spatial_filter(self):
- "Testing the Layer.spatial_filter property."
- ds = DataSource(get_ds_file('cities', 'shp'))
- lyr = ds[0]
-
- # When not set, it should be None.
- self.assertEqual(None, lyr.spatial_filter)
-
- # Must be set a/an OGRGeometry or 4-tuple.
- self.assertRaises(TypeError, lyr._set_spatial_filter, 'foo')
-
- # Setting the spatial filter with a tuple/list with the extent of
- # a buffer centering around Pueblo.
- self.assertRaises(ValueError, lyr._set_spatial_filter, list(range(5)))
- filter_extent = (-105.609252, 37.255001, -103.609252, 39.255001)
- lyr.spatial_filter = (-105.609252, 37.255001, -103.609252, 39.255001)
- self.assertEqual(OGRGeometry.from_bbox(filter_extent), lyr.spatial_filter)
- feats = [feat for feat in lyr]
- self.assertEqual(1, len(feats))
- self.assertEqual('Pueblo', feats[0].get('Name'))
-
- # Setting the spatial filter with an OGRGeometry for buffer centering
- # around Houston.
- filter_geom = OGRGeometry('POLYGON((-96.363151 28.763374,-94.363151 28.763374,-94.363151 30.763374,-96.363151 30.763374,-96.363151 28.763374))')
- lyr.spatial_filter = filter_geom
- self.assertEqual(filter_geom, lyr.spatial_filter)
- feats = [feat for feat in lyr]
- self.assertEqual(1, len(feats))
- self.assertEqual('Houston', feats[0].get('Name'))
-
- # Clearing the spatial filter by setting it to None. Now
- # should indicate that there are 3 features in the Layer.
- lyr.spatial_filter = None
- self.assertEqual(3, len(lyr))
-
- def test07_integer_overflow(self):
- "Testing that OFTReal fields, treated as OFTInteger, do not overflow."
- # Using *.dbf from Census 2010 TIGER Shapefile for Texas,
- # which has land area ('ALAND10') stored in a Real field
- # with no precision.
- ds = DataSource(os.path.join(TEST_DATA, 'texas.dbf'))
- feat = ds[0][0]
- # Reference value obtained using `ogrinfo`.
- self.assertEqual(676586997978, feat.get('ALAND10'))
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_envelope.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_envelope.py
deleted file mode 100644
index 7518dc6..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_envelope.py
+++ /dev/null
@@ -1,93 +0,0 @@
-from django.contrib.gis.gdal import HAS_GDAL
-from django.utils import unittest
-from django.utils.unittest import skipUnless
-
-if HAS_GDAL:
- from django.contrib.gis.gdal import Envelope, OGRException
-
-
-class TestPoint(object):
- def __init__(self, x, y):
- self.x = x
- self.y = y
-
-
-@skipUnless(HAS_GDAL, "GDAL is required")
-class EnvelopeTest(unittest.TestCase):
-
- def setUp(self):
- self.e = Envelope(0, 0, 5, 5)
-
- def test01_init(self):
- "Testing Envelope initilization."
- e1 = Envelope((0, 0, 5, 5))
- e2 = Envelope(0, 0, 5, 5)
- e3 = Envelope(0, '0', '5', 5) # Thanks to ww for this
- e4 = Envelope(e1._envelope)
- self.assertRaises(OGRException, Envelope, (5, 5, 0, 0))
- self.assertRaises(OGRException, Envelope, 5, 5, 0, 0)
- self.assertRaises(OGRException, Envelope, (0, 0, 5, 5, 3))
- self.assertRaises(OGRException, Envelope, ())
- self.assertRaises(ValueError, Envelope, 0, 'a', 5, 5)
- self.assertRaises(TypeError, Envelope, 'foo')
- self.assertRaises(OGRException, Envelope, (1, 1, 0, 0))
- try:
- Envelope(0, 0, 0, 0)
- except OGRException:
- self.fail("shouldn't raise an exception for min_x == max_x or min_y == max_y")
-
- def test02_properties(self):
- "Testing Envelope properties."
- e = Envelope(0, 0, 2, 3)
- self.assertEqual(0, e.min_x)
- self.assertEqual(0, e.min_y)
- self.assertEqual(2, e.max_x)
- self.assertEqual(3, e.max_y)
- self.assertEqual((0, 0), e.ll)
- self.assertEqual((2, 3), e.ur)
- self.assertEqual((0, 0, 2, 3), e.tuple)
- self.assertEqual('POLYGON((0.0 0.0,0.0 3.0,2.0 3.0,2.0 0.0,0.0 0.0))', e.wkt)
- self.assertEqual('(0.0, 0.0, 2.0, 3.0)', str(e))
-
- def test03_equivalence(self):
- "Testing Envelope equivalence."
- e1 = Envelope(0.523, 0.217, 253.23, 523.69)
- e2 = Envelope((0.523, 0.217, 253.23, 523.69))
- self.assertEqual(e1, e2)
- self.assertEqual((0.523, 0.217, 253.23, 523.69), e1)
-
- def test04_expand_to_include_pt_2_params(self):
- "Testing Envelope expand_to_include -- point as two parameters."
- self.e.expand_to_include(2, 6)
- self.assertEqual((0, 0, 5, 6), self.e)
- self.e.expand_to_include(-1, -1)
- self.assertEqual((-1, -1, 5, 6), self.e)
-
- def test05_expand_to_include_pt_2_tuple(self):
- "Testing Envelope expand_to_include -- point as a single 2-tuple parameter."
- self.e.expand_to_include((10, 10))
- self.assertEqual((0, 0, 10, 10), self.e)
- self.e.expand_to_include((-10, -10))
- self.assertEqual((-10, -10, 10, 10), self.e)
-
- def test06_expand_to_include_extent_4_params(self):
- "Testing Envelope expand_to_include -- extent as 4 parameters."
- self.e.expand_to_include(-1, 1, 3, 7)
- self.assertEqual((-1, 0, 5, 7), self.e)
-
- def test06_expand_to_include_extent_4_tuple(self):
- "Testing Envelope expand_to_include -- extent as a single 4-tuple parameter."
- self.e.expand_to_include((-1, 1, 3, 7))
- self.assertEqual((-1, 0, 5, 7), self.e)
-
- def test07_expand_to_include_envelope(self):
- "Testing Envelope expand_to_include with Envelope as parameter."
- self.e.expand_to_include(Envelope(-1, 1, 3, 7))
- self.assertEqual((-1, 0, 5, 7), self.e)
-
- def test08_expand_to_include_point(self):
- "Testing Envelope expand_to_include with Point as parameter."
- self.e.expand_to_include(TestPoint(-1, 1))
- self.assertEqual((-1, 0, 5, 5), self.e)
- self.e.expand_to_include(TestPoint(10, 10))
- self.assertEqual((-1, 0, 10, 10), self.e)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_geom.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_geom.py
deleted file mode 100644
index c048d2b..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_geom.py
+++ /dev/null
@@ -1,485 +0,0 @@
-import json
-from binascii import b2a_hex
-try:
- from django.utils.six.moves import cPickle as pickle
-except ImportError:
- import pickle
-
-from django.contrib.gis.gdal import HAS_GDAL
-from django.contrib.gis.geometry.test_data import TestDataMixin
-from django.utils.six.moves import xrange
-from django.utils import unittest
-from django.utils.unittest import skipUnless
-
-if HAS_GDAL:
- from django.contrib.gis.gdal import (OGRGeometry, OGRGeomType,
- OGRException, OGRIndexError, SpatialReference, CoordTransform,
- GDAL_VERSION)
-
-
-@skipUnless(HAS_GDAL, "GDAL is required")
-class OGRGeomTest(unittest.TestCase, TestDataMixin):
- "This tests the OGR Geometry."
-
- def test00a_geomtype(self):
- "Testing OGRGeomType object."
-
- # OGRGeomType should initialize on all these inputs.
- try:
- g = OGRGeomType(1)
- g = OGRGeomType(7)
- g = OGRGeomType('point')
- g = OGRGeomType('GeometrycollectioN')
- g = OGRGeomType('LINearrING')
- g = OGRGeomType('Unknown')
- except:
- self.fail('Could not create an OGRGeomType object!')
-
- # Should throw TypeError on this input
- self.assertRaises(OGRException, OGRGeomType, 23)
- self.assertRaises(OGRException, OGRGeomType, 'fooD')
- self.assertRaises(OGRException, OGRGeomType, 9)
-
- # Equivalence can take strings, ints, and other OGRGeomTypes
- self.assertEqual(True, OGRGeomType(1) == OGRGeomType(1))
- self.assertEqual(True, OGRGeomType(7) == 'GeometryCollection')
- self.assertEqual(True, OGRGeomType('point') == 'POINT')
- self.assertEqual(False, OGRGeomType('point') == 2)
- self.assertEqual(True, OGRGeomType('unknown') == 0)
- self.assertEqual(True, OGRGeomType(6) == 'MULtiPolyGON')
- self.assertEqual(False, OGRGeomType(1) != OGRGeomType('point'))
- self.assertEqual(True, OGRGeomType('POINT') != OGRGeomType(6))
-
- # Testing the Django field name equivalent property.
- self.assertEqual('PointField', OGRGeomType('Point').django)
- self.assertEqual('GeometryField', OGRGeomType('Unknown').django)
- self.assertEqual(None, OGRGeomType('none').django)
-
- # 'Geometry' initialization implies an unknown geometry type.
- gt = OGRGeomType('Geometry')
- self.assertEqual(0, gt.num)
- self.assertEqual('Unknown', gt.name)
-
- def test00b_geomtype_25d(self):
- "Testing OGRGeomType object with 25D types."
- wkb25bit = OGRGeomType.wkb25bit
- self.assertTrue(OGRGeomType(wkb25bit + 1) == 'Point25D')
- self.assertTrue(OGRGeomType('MultiLineString25D') == (5 + wkb25bit))
- self.assertEqual('GeometryCollectionField', OGRGeomType('GeometryCollection25D').django)
-
- def test01a_wkt(self):
- "Testing WKT output."
- for g in self.geometries.wkt_out:
- geom = OGRGeometry(g.wkt)
- self.assertEqual(g.wkt, geom.wkt)
-
- def test01a_ewkt(self):
- "Testing EWKT input/output."
- for ewkt_val in ('POINT (1 2 3)', 'LINEARRING (0 0,1 1,2 1,0 0)'):
- # First with ewkt output when no SRID in EWKT
- self.assertEqual(ewkt_val, OGRGeometry(ewkt_val).ewkt)
- # No test consumption with an SRID specified.
- ewkt_val = 'SRID=4326;%s' % ewkt_val
- geom = OGRGeometry(ewkt_val)
- self.assertEqual(ewkt_val, geom.ewkt)
- self.assertEqual(4326, geom.srs.srid)
-
- def test01b_gml(self):
- "Testing GML output."
- for g in self.geometries.wkt_out:
- geom = OGRGeometry(g.wkt)
- exp_gml = g.gml
- if GDAL_VERSION >= (1, 8):
- # In GDAL 1.8, the non-conformant GML tag <gml:GeometryCollection> was
- # replaced with <gml:MultiGeometry>.
- exp_gml = exp_gml.replace('GeometryCollection', 'MultiGeometry')
- self.assertEqual(exp_gml, geom.gml)
-
- def test01c_hex(self):
- "Testing HEX input/output."
- for g in self.geometries.hex_wkt:
- geom1 = OGRGeometry(g.wkt)
- self.assertEqual(g.hex.encode(), geom1.hex)
- # Constructing w/HEX
- geom2 = OGRGeometry(g.hex)
- self.assertEqual(geom1, geom2)
-
- def test01d_wkb(self):
- "Testing WKB input/output."
- for g in self.geometries.hex_wkt:
- geom1 = OGRGeometry(g.wkt)
- wkb = geom1.wkb
- self.assertEqual(b2a_hex(wkb).upper(), g.hex.encode())
- # Constructing w/WKB.
- geom2 = OGRGeometry(wkb)
- self.assertEqual(geom1, geom2)
-
- def test01e_json(self):
- "Testing GeoJSON input/output."
- for g in self.geometries.json_geoms:
- geom = OGRGeometry(g.wkt)
- if not hasattr(g, 'not_equal'):
- # Loading jsons to prevent decimal differences
- self.assertEqual(json.loads(g.json), json.loads(geom.json))
- self.assertEqual(json.loads(g.json), json.loads(geom.geojson))
- self.assertEqual(OGRGeometry(g.wkt), OGRGeometry(geom.json))
-
- def test02_points(self):
- "Testing Point objects."
-
- prev = OGRGeometry('POINT(0 0)')
- for p in self.geometries.points:
- if not hasattr(p, 'z'): # No 3D
- pnt = OGRGeometry(p.wkt)
- self.assertEqual(1, pnt.geom_type)
- self.assertEqual('POINT', pnt.geom_name)
- self.assertEqual(p.x, pnt.x)
- self.assertEqual(p.y, pnt.y)
- self.assertEqual((p.x, p.y), pnt.tuple)
-
- def test03_multipoints(self):
- "Testing MultiPoint objects."
- for mp in self.geometries.multipoints:
- mgeom1 = OGRGeometry(mp.wkt) # First one from WKT
- self.assertEqual(4, mgeom1.geom_type)
- self.assertEqual('MULTIPOINT', mgeom1.geom_name)
- mgeom2 = OGRGeometry('MULTIPOINT') # Creating empty multipoint
- mgeom3 = OGRGeometry('MULTIPOINT')
- for g in mgeom1:
- mgeom2.add(g) # adding each point from the multipoints
- mgeom3.add(g.wkt) # should take WKT as well
- self.assertEqual(mgeom1, mgeom2) # they should equal
- self.assertEqual(mgeom1, mgeom3)
- self.assertEqual(mp.coords, mgeom2.coords)
- self.assertEqual(mp.n_p, mgeom2.point_count)
-
- def test04_linestring(self):
- "Testing LineString objects."
- prev = OGRGeometry('POINT(0 0)')
- for ls in self.geometries.linestrings:
- linestr = OGRGeometry(ls.wkt)
- self.assertEqual(2, linestr.geom_type)
- self.assertEqual('LINESTRING', linestr.geom_name)
- self.assertEqual(ls.n_p, linestr.point_count)
- self.assertEqual(ls.coords, linestr.tuple)
- self.assertEqual(True, linestr == OGRGeometry(ls.wkt))
- self.assertEqual(True, linestr != prev)
- self.assertRaises(OGRIndexError, linestr.__getitem__, len(linestr))
- prev = linestr
-
- # Testing the x, y properties.
- x = [tmpx for tmpx, tmpy in ls.coords]
- y = [tmpy for tmpx, tmpy in ls.coords]
- self.assertEqual(x, linestr.x)
- self.assertEqual(y, linestr.y)
-
- def test05_multilinestring(self):
- "Testing MultiLineString objects."
- prev = OGRGeometry('POINT(0 0)')
- for mls in self.geometries.multilinestrings:
- mlinestr = OGRGeometry(mls.wkt)
- self.assertEqual(5, mlinestr.geom_type)
- self.assertEqual('MULTILINESTRING', mlinestr.geom_name)
- self.assertEqual(mls.n_p, mlinestr.point_count)
- self.assertEqual(mls.coords, mlinestr.tuple)
- self.assertEqual(True, mlinestr == OGRGeometry(mls.wkt))
- self.assertEqual(True, mlinestr != prev)
- prev = mlinestr
- for ls in mlinestr:
- self.assertEqual(2, ls.geom_type)
- self.assertEqual('LINESTRING', ls.geom_name)
- self.assertRaises(OGRIndexError, mlinestr.__getitem__, len(mlinestr))
-
- def test06_linearring(self):
- "Testing LinearRing objects."
- prev = OGRGeometry('POINT(0 0)')
- for rr in self.geometries.linearrings:
- lr = OGRGeometry(rr.wkt)
- #self.assertEqual(101, lr.geom_type.num)
- self.assertEqual('LINEARRING', lr.geom_name)
- self.assertEqual(rr.n_p, len(lr))
- self.assertEqual(True, lr == OGRGeometry(rr.wkt))
- self.assertEqual(True, lr != prev)
- prev = lr
-
- def test07a_polygons(self):
- "Testing Polygon objects."
-
- # Testing `from_bbox` class method
- bbox = (-180,-90,180,90)
- p = OGRGeometry.from_bbox( bbox )
- self.assertEqual(bbox, p.extent)
-
- prev = OGRGeometry('POINT(0 0)')
- for p in self.geometries.polygons:
- poly = OGRGeometry(p.wkt)
- self.assertEqual(3, poly.geom_type)
- self.assertEqual('POLYGON', poly.geom_name)
- self.assertEqual(p.n_p, poly.point_count)
- self.assertEqual(p.n_i + 1, len(poly))
-
- # Testing area & centroid.
- self.assertAlmostEqual(p.area, poly.area, 9)
- x, y = poly.centroid.tuple
- self.assertAlmostEqual(p.centroid[0], x, 9)
- self.assertAlmostEqual(p.centroid[1], y, 9)
-
- # Testing equivalence
- self.assertEqual(True, poly == OGRGeometry(p.wkt))
- self.assertEqual(True, poly != prev)
-
- if p.ext_ring_cs:
- ring = poly[0]
- self.assertEqual(p.ext_ring_cs, ring.tuple)
- self.assertEqual(p.ext_ring_cs, poly[0].tuple)
- self.assertEqual(len(p.ext_ring_cs), ring.point_count)
-
- for r in poly:
- self.assertEqual('LINEARRING', r.geom_name)
-
- def test07b_closepolygons(self):
- "Testing closing Polygon objects."
- # Both rings in this geometry are not closed.
- poly = OGRGeometry('POLYGON((0 0, 5 0, 5 5, 0 5), (1 1, 2 1, 2 2, 2 1))')
- self.assertEqual(8, poly.point_count)
- with self.assertRaises(OGRException):
- _ = poly.centroid
-
- poly.close_rings()
- self.assertEqual(10, poly.point_count) # Two closing points should've been added
- self.assertEqual(OGRGeometry('POINT(2.5 2.5)'), poly.centroid)
-
- def test08_multipolygons(self):
- "Testing MultiPolygon objects."
- prev = OGRGeometry('POINT(0 0)')
- for mp in self.geometries.multipolygons:
- mpoly = OGRGeometry(mp.wkt)
- self.assertEqual(6, mpoly.geom_type)
- self.assertEqual('MULTIPOLYGON', mpoly.geom_name)
- if mp.valid:
- self.assertEqual(mp.n_p, mpoly.point_count)
- self.assertEqual(mp.num_geom, len(mpoly))
- self.assertRaises(OGRIndexError, mpoly.__getitem__, len(mpoly))
- for p in mpoly:
- self.assertEqual('POLYGON', p.geom_name)
- self.assertEqual(3, p.geom_type)
- self.assertEqual(mpoly.wkt, OGRGeometry(mp.wkt).wkt)
-
- def test09a_srs(self):
- "Testing OGR Geometries with Spatial Reference objects."
- for mp in self.geometries.multipolygons:
- # Creating a geometry w/spatial reference
- sr = SpatialReference('WGS84')
- mpoly = OGRGeometry(mp.wkt, sr)
- self.assertEqual(sr.wkt, mpoly.srs.wkt)
-
- # Ensuring that SRS is propagated to clones.
- klone = mpoly.clone()
- self.assertEqual(sr.wkt, klone.srs.wkt)
-
- # Ensuring all children geometries (polygons and their rings) all
- # return the assigned spatial reference as well.
- for poly in mpoly:
- self.assertEqual(sr.wkt, poly.srs.wkt)
- for ring in poly:
- self.assertEqual(sr.wkt, ring.srs.wkt)
-
- # Ensuring SRS propagate in topological ops.
- a = OGRGeometry(self.geometries.topology_geoms[0].wkt_a, sr)
- b = OGRGeometry(self.geometries.topology_geoms[0].wkt_b, sr)
- diff = a.difference(b)
- union = a.union(b)
- self.assertEqual(sr.wkt, diff.srs.wkt)
- self.assertEqual(sr.srid, union.srs.srid)
-
- # Instantiating w/an integer SRID
- mpoly = OGRGeometry(mp.wkt, 4326)
- self.assertEqual(4326, mpoly.srid)
- mpoly.srs = SpatialReference(4269)
- self.assertEqual(4269, mpoly.srid)
- self.assertEqual('NAD83', mpoly.srs.name)
-
- # Incrementing through the multipolyogn after the spatial reference
- # has been re-assigned.
- for poly in mpoly:
- self.assertEqual(mpoly.srs.wkt, poly.srs.wkt)
- poly.srs = 32140
- for ring in poly:
- # Changing each ring in the polygon
- self.assertEqual(32140, ring.srs.srid)
- self.assertEqual('NAD83 / Texas South Central', ring.srs.name)
- ring.srs = str(SpatialReference(4326)) # back to WGS84
- self.assertEqual(4326, ring.srs.srid)
-
- # Using the `srid` property.
- ring.srid = 4322
- self.assertEqual('WGS 72', ring.srs.name)
- self.assertEqual(4322, ring.srid)
-
- def test09b_srs_transform(self):
- "Testing transform()."
- orig = OGRGeometry('POINT (-104.609 38.255)', 4326)
- trans = OGRGeometry('POINT (992385.4472045 481455.4944650)', 2774)
-
- # Using an srid, a SpatialReference object, and a CoordTransform object
- # or transformations.
- t1, t2, t3 = orig.clone(), orig.clone(), orig.clone()
- t1.transform(trans.srid)
- t2.transform(SpatialReference('EPSG:2774'))
- ct = CoordTransform(SpatialReference('WGS84'), SpatialReference(2774))
- t3.transform(ct)
-
- # Testing use of the `clone` keyword.
- k1 = orig.clone()
- k2 = k1.transform(trans.srid, clone=True)
- self.assertEqual(k1, orig)
- self.assertNotEqual(k1, k2)
-
- prec = 3
- for p in (t1, t2, t3, k2):
- self.assertAlmostEqual(trans.x, p.x, prec)
- self.assertAlmostEqual(trans.y, p.y, prec)
-
- def test09c_transform_dim(self):
- "Testing coordinate dimension is the same on transformed geometries."
- ls_orig = OGRGeometry('LINESTRING(-104.609 38.255)', 4326)
- ls_trans = OGRGeometry('LINESTRING(992385.4472045 481455.4944650)', 2774)
-
- prec = 3
- ls_orig.transform(ls_trans.srs)
- # Making sure the coordinate dimension is still 2D.
- self.assertEqual(2, ls_orig.coord_dim)
- self.assertAlmostEqual(ls_trans.x[0], ls_orig.x[0], prec)
- self.assertAlmostEqual(ls_trans.y[0], ls_orig.y[0], prec)
-
- def test10_difference(self):
- "Testing difference()."
- for i in xrange(len(self.geometries.topology_geoms)):
- a = OGRGeometry(self.geometries.topology_geoms[i].wkt_a)
- b = OGRGeometry(self.geometries.topology_geoms[i].wkt_b)
- d1 = OGRGeometry(self.geometries.diff_geoms[i].wkt)
- d2 = a.difference(b)
- self.assertEqual(d1, d2)
- self.assertEqual(d1, a - b) # __sub__ is difference operator
- a -= b # testing __isub__
- self.assertEqual(d1, a)
-
- def test11_intersection(self):
- "Testing intersects() and intersection()."
- for i in xrange(len(self.geometries.topology_geoms)):
- a = OGRGeometry(self.geometries.topology_geoms[i].wkt_a)
- b = OGRGeometry(self.geometries.topology_geoms[i].wkt_b)
- i1 = OGRGeometry(self.geometries.intersect_geoms[i].wkt)
- self.assertEqual(True, a.intersects(b))
- i2 = a.intersection(b)
- self.assertEqual(i1, i2)
- self.assertEqual(i1, a & b) # __and__ is intersection operator
- a &= b # testing __iand__
- self.assertEqual(i1, a)
-
- def test12_symdifference(self):
- "Testing sym_difference()."
- for i in xrange(len(self.geometries.topology_geoms)):
- a = OGRGeometry(self.geometries.topology_geoms[i].wkt_a)
- b = OGRGeometry(self.geometries.topology_geoms[i].wkt_b)
- d1 = OGRGeometry(self.geometries.sdiff_geoms[i].wkt)
- d2 = a.sym_difference(b)
- self.assertEqual(d1, d2)
- self.assertEqual(d1, a ^ b) # __xor__ is symmetric difference operator
- a ^= b # testing __ixor__
- self.assertEqual(d1, a)
-
- def test13_union(self):
- "Testing union()."
- for i in xrange(len(self.geometries.topology_geoms)):
- a = OGRGeometry(self.geometries.topology_geoms[i].wkt_a)
- b = OGRGeometry(self.geometries.topology_geoms[i].wkt_b)
- u1 = OGRGeometry(self.geometries.union_geoms[i].wkt)
- u2 = a.union(b)
- self.assertEqual(u1, u2)
- self.assertEqual(u1, a | b) # __or__ is union operator
- a |= b # testing __ior__
- self.assertEqual(u1, a)
-
- def test14_add(self):
- "Testing GeometryCollection.add()."
- # Can't insert a Point into a MultiPolygon.
- mp = OGRGeometry('MultiPolygon')
- pnt = OGRGeometry('POINT(5 23)')
- self.assertRaises(OGRException, mp.add, pnt)
-
- # GeometryCollection.add may take an OGRGeometry (if another collection
- # of the same type all child geoms will be added individually) or WKT.
- for mp in self.geometries.multipolygons:
- mpoly = OGRGeometry(mp.wkt)
- mp1 = OGRGeometry('MultiPolygon')
- mp2 = OGRGeometry('MultiPolygon')
- mp3 = OGRGeometry('MultiPolygon')
-
- for poly in mpoly:
- mp1.add(poly) # Adding a geometry at a time
- mp2.add(poly.wkt) # Adding WKT
- mp3.add(mpoly) # Adding a MultiPolygon's entire contents at once.
- for tmp in (mp1, mp2, mp3): self.assertEqual(mpoly, tmp)
-
- def test15_extent(self):
- "Testing `extent` property."
- # The xmin, ymin, xmax, ymax of the MultiPoint should be returned.
- mp = OGRGeometry('MULTIPOINT(5 23, 0 0, 10 50)')
- self.assertEqual((0.0, 0.0, 10.0, 50.0), mp.extent)
- # Testing on the 'real world' Polygon.
- poly = OGRGeometry(self.geometries.polygons[3].wkt)
- ring = poly.shell
- x, y = ring.x, ring.y
- xmin, ymin = min(x), min(y)
- xmax, ymax = max(x), max(y)
- self.assertEqual((xmin, ymin, xmax, ymax), poly.extent)
-
- def test16_25D(self):
- "Testing 2.5D geometries."
- pnt_25d = OGRGeometry('POINT(1 2 3)')
- self.assertEqual('Point25D', pnt_25d.geom_type.name)
- self.assertEqual(3.0, pnt_25d.z)
- self.assertEqual(3, pnt_25d.coord_dim)
- ls_25d = OGRGeometry('LINESTRING(1 1 1,2 2 2,3 3 3)')
- self.assertEqual('LineString25D', ls_25d.geom_type.name)
- self.assertEqual([1.0, 2.0, 3.0], ls_25d.z)
- self.assertEqual(3, ls_25d.coord_dim)
-
- def test17_pickle(self):
- "Testing pickle support."
- g1 = OGRGeometry('LINESTRING(1 1 1,2 2 2,3 3 3)', 'WGS84')
- g2 = pickle.loads(pickle.dumps(g1))
- self.assertEqual(g1, g2)
- self.assertEqual(4326, g2.srs.srid)
- self.assertEqual(g1.srs.wkt, g2.srs.wkt)
-
- def test18_ogrgeometry_transform_workaround(self):
- "Testing coordinate dimensions on geometries after transformation."
- # A bug in GDAL versions prior to 1.7 changes the coordinate
- # dimension of a geometry after it has been transformed.
- # This test ensures that the bug workarounds employed within
- # `OGRGeometry.transform` indeed work.
- wkt_2d = "MULTILINESTRING ((0 0,1 1,2 2))"
- wkt_3d = "MULTILINESTRING ((0 0 0,1 1 1,2 2 2))"
- srid = 4326
-
- # For both the 2D and 3D MultiLineString, ensure _both_ the dimension
- # of the collection and the component LineString have the expected
- # coordinate dimension after transform.
- geom = OGRGeometry(wkt_2d, srid)
- geom.transform(srid)
- self.assertEqual(2, geom.coord_dim)
- self.assertEqual(2, geom[0].coord_dim)
- self.assertEqual(wkt_2d, geom.wkt)
-
- geom = OGRGeometry(wkt_3d, srid)
- geom.transform(srid)
- self.assertEqual(3, geom.coord_dim)
- self.assertEqual(3, geom[0].coord_dim)
- self.assertEqual(wkt_3d, geom.wkt)
-
- def test19_equivalence_regression(self):
- "Testing equivalence methods with non-OGRGeometry instances."
- self.assertNotEqual(None, OGRGeometry('POINT(0 0)'))
- self.assertEqual(False, OGRGeometry('LINESTRING(0 0, 1 1)') == 3)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_srs.py b/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_srs.py
deleted file mode 100644
index 363b597..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/gdal/tests/test_srs.py
+++ /dev/null
@@ -1,163 +0,0 @@
-from django.contrib.gis.gdal import HAS_GDAL
-from django.utils import unittest
-from django.utils.unittest import skipUnless
-
-if HAS_GDAL:
- from django.contrib.gis.gdal import SpatialReference, CoordTransform, OGRException, SRSException
-
-
-class TestSRS:
- def __init__(self, wkt, **kwargs):
- self.wkt = wkt
- for key, value in kwargs.items():
- setattr(self, key, value)
-
-# Some Spatial Reference examples
-srlist = (TestSRS('GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]',
- proj='+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs ',
- epsg=4326, projected=False, geographic=True, local=False,
- lin_name='unknown', ang_name='degree', lin_units=1.0, ang_units=0.0174532925199,
- auth={'GEOGCS' : ('EPSG', '4326'), 'spheroid' : ('EPSG', '7030')},
- attr=(('DATUM', 'WGS_1984'), (('SPHEROID', 1), '6378137'),('primem|authority', 'EPSG'),),
- ),
- TestSRS('PROJCS["NAD83 / Texas South Central",GEOGCS["NAD83",DATUM["North_American_Datum_1983",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6269"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4269"]],PROJECTION["Lambert_Conformal_Conic_2SP"],PARAMETER["standard_parallel_1",30.28333333333333],PARAMETER["standard_parallel_2",28.38333333333333],PARAMETER["latitude_of_origin",27.83333333333333],PARAMETER["central_meridian",-99],PARAMETER["false_easting",600000],PARAMETER["false_northing",4000000],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","32140"]]',
- proj=None, epsg=32140, projected=True, geographic=False, local=False,
- lin_name='metre', ang_name='degree', lin_units=1.0, ang_units=0.0174532925199,
- auth={'PROJCS' : ('EPSG', '32140'), 'spheroid' : ('EPSG', '7019'), 'unit' : ('EPSG', '9001'),},
- attr=(('DATUM', 'North_American_Datum_1983'),(('SPHEROID', 2), '298.257222101'),('PROJECTION','Lambert_Conformal_Conic_2SP'),),
- ),
- TestSRS('PROJCS["NAD_1983_StatePlane_Texas_South_Central_FIPS_4204_Feet",GEOGCS["GCS_North_American_1983",DATUM["North_American_Datum_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Lambert_Conformal_Conic_2SP"],PARAMETER["False_Easting",1968500.0],PARAMETER["False_Northing",13123333.33333333],PARAMETER["Central_Meridian",-99.0],PARAMETER["Standard_Parallel_1",28.38333333333333],PARAMETER["Standard_Parallel_2",30.28333333333334],PARAMETER["Latitude_Of_Origin",27.83333333333333],UNIT["Foot_US",0.3048006096012192]]',
- proj=None, epsg=None, projected=True, geographic=False, local=False,
- lin_name='Foot_US', ang_name='Degree', lin_units=0.3048006096012192, ang_units=0.0174532925199,
- auth={'PROJCS' : (None, None),},
- attr=(('PROJCS|GeOgCs|spheroid', 'GRS_1980'),(('projcs', 9), 'UNIT'), (('projcs', 11), None),),
- ),
- # This is really ESRI format, not WKT -- but the import should work the same
- TestSRS('LOCAL_CS["Non-Earth (Meter)",LOCAL_DATUM["Local Datum",0],UNIT["Meter",1.0],AXIS["X",EAST],AXIS["Y",NORTH]]',
- esri=True, proj=None, epsg=None, projected=False, geographic=False, local=True,
- lin_name='Meter', ang_name='degree', lin_units=1.0, ang_units=0.0174532925199,
- attr=(('LOCAL_DATUM', 'Local Datum'), ('unit', 'Meter')),
- ),
- )
-
-# Well-Known Names
-well_known = (TestSRS('GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]', wk='WGS84', name='WGS 84', attrs=(('GEOGCS|AUTHORITY', 1, '4326'), ('SPHEROID', 'WGS 84'))),
- TestSRS('GEOGCS["WGS 72",DATUM["WGS_1972",SPHEROID["WGS 72",6378135,298.26,AUTHORITY["EPSG","7043"]],AUTHORITY["EPSG","6322"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4322"]]', wk='WGS72', name='WGS 72', attrs=(('GEOGCS|AUTHORITY', 1, '4322'), ('SPHEROID', 'WGS 72'))),
- TestSRS('GEOGCS["NAD27",DATUM["North_American_Datum_1927",SPHEROID["Clarke 1866",6378206.4,294.9786982138982,AUTHORITY["EPSG","7008"]],AUTHORITY["EPSG","6267"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4267"]]', wk='NAD27', name='NAD27', attrs=(('GEOGCS|AUTHORITY', 1, '4267'), ('SPHEROID', 'Clarke 1866'))),
- TestSRS('GEOGCS["NAD83",DATUM["North_American_Datum_1983",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6269"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4269"]]', wk='NAD83', name='NAD83', attrs=(('GEOGCS|AUTHORITY', 1, '4269'), ('SPHEROID', 'GRS 1980'))),
- TestSRS('PROJCS["NZGD49 / Karamea Circuit",GEOGCS["NZGD49",DATUM["New_Zealand_Geodetic_Datum_1949",SPHEROID["International 1924",6378388,297,AUTHORITY["EPSG","7022"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUTHORITY["EPSG","6272"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4272"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",-41.28991152777778],PARAMETER["central_meridian",172.1090281944444],PARAMETER["scale_factor",1],PARAMETER["false_easting",300000],PARAMETER["false_northing",700000],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","27216"]]', wk='EPSG:27216', name='NZGD49 / Karamea Circuit', attrs=(('PROJECTION','Transverse_Mercator'), ('SPHEROID', 'International 1924'))),
- )
-
-bad_srlist = ('Foobar', 'OOJCS["NAD83 / Texas South Central",GEOGCS["NAD83",DATUM["North_American_Datum_1983",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6269"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4269"]],PROJECTION["Lambert_Conformal_Conic_2SP"],PARAMETER["standard_parallel_1",30.28333333333333],PARAMETER["standard_parallel_2",28.38333333333333],PARAMETER["latitude_of_origin",27.83333333333333],PARAMETER["central_meridian",-99],PARAMETER["false_easting",600000],PARAMETER["false_northing",4000000],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AUTHORITY["EPSG","32140"]]',)
-
-
-@skipUnless(HAS_GDAL, "GDAL is required")
-class SpatialRefTest(unittest.TestCase):
-
- def test01_wkt(self):
- "Testing initialization on valid OGC WKT."
- for s in srlist:
- srs = SpatialReference(s.wkt)
-
- def test02_bad_wkt(self):
- "Testing initialization on invalid WKT."
- for bad in bad_srlist:
- try:
- srs = SpatialReference(bad)
- srs.validate()
- except (SRSException, OGRException):
- pass
- else:
- self.fail('Should not have initialized on bad WKT "%s"!')
-
- def test03_get_wkt(self):
- "Testing getting the WKT."
- for s in srlist:
- srs = SpatialReference(s.wkt)
- self.assertEqual(s.wkt, srs.wkt)
-
- def test04_proj(self):
- "Test PROJ.4 import and export."
- for s in srlist:
- if s.proj:
- srs1 = SpatialReference(s.wkt)
- srs2 = SpatialReference(s.proj)
- self.assertEqual(srs1.proj, srs2.proj)
-
- def test05_epsg(self):
- "Test EPSG import."
- for s in srlist:
- if s.epsg:
- srs1 = SpatialReference(s.wkt)
- srs2 = SpatialReference(s.epsg)
- srs3 = SpatialReference(str(s.epsg))
- srs4 = SpatialReference('EPSG:%d' % s.epsg)
- for srs in (srs1, srs2, srs3, srs4):
- for attr, expected in s.attr:
- self.assertEqual(expected, srs[attr])
-
- def test07_boolean_props(self):
- "Testing the boolean properties."
- for s in srlist:
- srs = SpatialReference(s.wkt)
- self.assertEqual(s.projected, srs.projected)
- self.assertEqual(s.geographic, srs.geographic)
-
- def test08_angular_linear(self):
- "Testing the linear and angular units routines."
- for s in srlist:
- srs = SpatialReference(s.wkt)
- self.assertEqual(s.ang_name, srs.angular_name)
- self.assertEqual(s.lin_name, srs.linear_name)
- self.assertAlmostEqual(s.ang_units, srs.angular_units, 9)
- self.assertAlmostEqual(s.lin_units, srs.linear_units, 9)
-
- def test09_authority(self):
- "Testing the authority name & code routines."
- for s in srlist:
- if hasattr(s, 'auth'):
- srs = SpatialReference(s.wkt)
- for target, tup in s.auth.items():
- self.assertEqual(tup[0], srs.auth_name(target))
- self.assertEqual(tup[1], srs.auth_code(target))
-
- def test10_attributes(self):
- "Testing the attribute retrieval routines."
- for s in srlist:
- srs = SpatialReference(s.wkt)
- for tup in s.attr:
- att = tup[0] # Attribute to test
- exp = tup[1] # Expected result
- self.assertEqual(exp, srs[att])
-
- def test11_wellknown(self):
- "Testing Well Known Names of Spatial References."
- for s in well_known:
- srs = SpatialReference(s.wk)
- self.assertEqual(s.name, srs.name)
- for tup in s.attrs:
- if len(tup) == 2:
- key = tup[0]
- exp = tup[1]
- elif len(tup) == 3:
- key = tup[:2]
- exp = tup[2]
- self.assertEqual(srs[key], exp)
-
- def test12_coordtransform(self):
- "Testing initialization of a CoordTransform."
- target = SpatialReference('WGS84')
- for s in srlist:
- if s.proj:
- ct = CoordTransform(SpatialReference(s.wkt), target)
-
- def test13_attr_value(self):
- "Testing the attr_value() method."
- s1 = SpatialReference('WGS84')
- self.assertRaises(TypeError, s1.__getitem__, 0)
- self.assertRaises(TypeError, s1.__getitem__, ('GEOGCS', 'foo'))
- self.assertEqual('WGS 84', s1['GEOGCS'])
- self.assertEqual('WGS_1984', s1['DATUM'])
- self.assertEqual('EPSG', s1['AUTHORITY'])
- self.assertEqual(4326, int(s1['AUTHORITY', 1]))
- self.assertEqual(None, s1['FOOBAR'])
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geoip/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/geoip/__init__.py
deleted file mode 100644
index 8b519a2..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geoip/__init__.py
+++ /dev/null
@@ -1,20 +0,0 @@
-"""
- This module houses the GeoIP object, a ctypes wrapper for the MaxMind GeoIP(R)
- C API (http://www.maxmind.com/app/c). This is an alternative to the GPL
- licensed Python GeoIP interface provided by MaxMind.
-
- GeoIP(R) is a registered trademark of MaxMind, LLC of Boston, Massachusetts.
-
- For IP-based geolocation, this module requires the GeoLite Country and City
- datasets, in binary format (CSV will not work!). The datasets may be
- downloaded from MaxMind at http://www.maxmind.com/download/geoip/database/.
- Grab GeoIP.dat.gz and GeoLiteCity.dat.gz, and unzip them in the directory
- corresponding to settings.GEOIP_PATH.
-"""
-from __future__ import absolute_import
-
-try:
- from .base import GeoIP, GeoIPException
- HAS_GEOIP = True
-except:
- HAS_GEOIP = False
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geoip/base.py b/lib/python2.7/site-packages/django/contrib/gis/geoip/base.py
deleted file mode 100644
index d4793a2..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geoip/base.py
+++ /dev/null
@@ -1,265 +0,0 @@
-import os
-import re
-from ctypes import c_char_p
-
-from django.core.validators import ipv4_re
-from django.contrib.gis.geoip.libgeoip import GEOIP_SETTINGS
-from django.contrib.gis.geoip.prototypes import (
- GeoIPRecord, GeoIPTag, GeoIP_open, GeoIP_delete, GeoIP_database_info,
- GeoIP_lib_version, GeoIP_record_by_addr, GeoIP_record_by_name,
- GeoIP_country_code_by_addr, GeoIP_country_code_by_name,
- GeoIP_country_name_by_addr, GeoIP_country_name_by_name)
-
-from django.utils import six
-from django.utils.encoding import force_bytes
-
-# Regular expressions for recognizing the GeoIP free database editions.
-free_regex = re.compile(r'^GEO-\d{3}FREE')
-lite_regex = re.compile(r'^GEO-\d{3}LITE')
-
-#### GeoIP classes ####
-class GeoIPException(Exception): pass
-
-class GeoIP(object):
- # The flags for GeoIP memory caching.
- # GEOIP_STANDARD - read database from filesystem, uses least memory.
- #
- # GEOIP_MEMORY_CACHE - load database into memory, faster performance
- # but uses more memory
- #
- # GEOIP_CHECK_CACHE - check for updated database. If database has been
- # updated, reload filehandle and/or memory cache. This option
- # is not thread safe.
- #
- # GEOIP_INDEX_CACHE - just cache the most frequently accessed index
- # portion of the database, resulting in faster lookups than
- # GEOIP_STANDARD, but less memory usage than GEOIP_MEMORY_CACHE -
- # useful for larger databases such as GeoIP Organization and
- # GeoIP City. Note, for GeoIP Country, Region and Netspeed
- # databases, GEOIP_INDEX_CACHE is equivalent to GEOIP_MEMORY_CACHE
- #
- # GEOIP_MMAP_CACHE - load database into mmap shared memory ( not available
- # on Windows).
- GEOIP_STANDARD = 0
- GEOIP_MEMORY_CACHE = 1
- GEOIP_CHECK_CACHE = 2
- GEOIP_INDEX_CACHE = 4
- GEOIP_MMAP_CACHE = 8
- cache_options = dict((opt, None) for opt in (0, 1, 2, 4, 8))
-
- # Paths to the city & country binary databases.
- _city_file = ''
- _country_file = ''
-
- # Initially, pointers to GeoIP file references are NULL.
- _city = None
- _country = None
-
- def __init__(self, path=None, cache=0, country=None, city=None):
- """
- Initializes the GeoIP object, no parameters are required to use default
- settings. Keyword arguments may be passed in to customize the locations
- of the GeoIP data sets.
-
- * path: Base directory to where GeoIP data is located or the full path
- to where the city or country data files (*.dat) are located.
- Assumes that both the city and country data sets are located in
- this directory; overrides the GEOIP_PATH settings attribute.
-
- * cache: The cache settings when opening up the GeoIP datasets,
- and may be an integer in (0, 1, 2, 4, 8) corresponding to
- the GEOIP_STANDARD, GEOIP_MEMORY_CACHE, GEOIP_CHECK_CACHE,
- GEOIP_INDEX_CACHE, and GEOIP_MMAP_CACHE, `GeoIPOptions` C API
- settings, respectively. Defaults to 0, meaning that the data is read
- from the disk.
-
- * country: The name of the GeoIP country data file. Defaults to
- 'GeoIP.dat'; overrides the GEOIP_COUNTRY settings attribute.
-
- * city: The name of the GeoIP city data file. Defaults to
- 'GeoLiteCity.dat'; overrides the GEOIP_CITY settings attribute.
- """
- # Checking the given cache option.
- if cache in self.cache_options:
- self._cache = cache
- else:
- raise GeoIPException('Invalid GeoIP caching option: %s' % cache)
-
- # Getting the GeoIP data path.
- if not path:
- path = GEOIP_SETTINGS.get('GEOIP_PATH', None)
- if not path: raise GeoIPException('GeoIP path must be provided via parameter or the GEOIP_PATH setting.')
- if not isinstance(path, six.string_types):
- raise TypeError('Invalid path type: %s' % type(path).__name__)
-
- if os.path.isdir(path):
- # Constructing the GeoIP database filenames using the settings
- # dictionary. If the database files for the GeoLite country
- # and/or city datasets exist, then try and open them.
- country_db = os.path.join(path, country or GEOIP_SETTINGS.get('GEOIP_COUNTRY', 'GeoIP.dat'))
- if os.path.isfile(country_db):
- self._country = GeoIP_open(force_bytes(country_db), cache)
- self._country_file = country_db
-
- city_db = os.path.join(path, city or GEOIP_SETTINGS.get('GEOIP_CITY', 'GeoLiteCity.dat'))
- if os.path.isfile(city_db):
- self._city = GeoIP_open(force_bytes(city_db), cache)
- self._city_file = city_db
- elif os.path.isfile(path):
- # Otherwise, some detective work will be needed to figure
- # out whether the given database path is for the GeoIP country
- # or city databases.
- ptr = GeoIP_open(force_bytes(path), cache)
- info = GeoIP_database_info(ptr)
- if lite_regex.match(info):
- # GeoLite City database detected.
- self._city = ptr
- self._city_file = path
- elif free_regex.match(info):
- # GeoIP Country database detected.
- self._country = ptr
- self._country_file = path
- else:
- raise GeoIPException('Unable to recognize database edition: %s' % info)
- else:
- raise GeoIPException('GeoIP path must be a valid file or directory.')
-
- def __del__(self):
- # Cleaning any GeoIP file handles lying around.
- if GeoIP_delete is None:
- return
- if self._country: GeoIP_delete(self._country)
- if self._city: GeoIP_delete(self._city)
-
- def _check_query(self, query, country=False, city=False, city_or_country=False):
- "Helper routine for checking the query and database availability."
- # Making sure a string was passed in for the query.
- if not isinstance(query, six.string_types):
- raise TypeError('GeoIP query must be a string, not type %s' % type(query).__name__)
-
- # Extra checks for the existence of country and city databases.
- if city_or_country and not (self._country or self._city):
- raise GeoIPException('Invalid GeoIP country and city data files.')
- elif country and not self._country:
- raise GeoIPException('Invalid GeoIP country data file: %s' % self._country_file)
- elif city and not self._city:
- raise GeoIPException('Invalid GeoIP city data file: %s' % self._city_file)
-
- # Return the query string back to the caller. GeoIP only takes bytestrings.
- return force_bytes(query)
-
- def city(self, query):
- """
- Returns a dictionary of city information for the given IP address or
- Fully Qualified Domain Name (FQDN). Some information in the dictionary
- may be undefined (None).
- """
- enc_query = self._check_query(query, city=True)
- if ipv4_re.match(query):
- # If an IP address was passed in
- return GeoIP_record_by_addr(self._city, c_char_p(enc_query))
- else:
- # If a FQDN was passed in.
- return GeoIP_record_by_name(self._city, c_char_p(enc_query))
-
- def country_code(self, query):
- "Returns the country code for the given IP Address or FQDN."
- enc_query = self._check_query(query, city_or_country=True)
- if self._country:
- if ipv4_re.match(query):
- return GeoIP_country_code_by_addr(self._country, enc_query)
- else:
- return GeoIP_country_code_by_name(self._country, enc_query)
- else:
- return self.city(query)['country_code']
-
- def country_name(self, query):
- "Returns the country name for the given IP Address or FQDN."
- enc_query = self._check_query(query, city_or_country=True)
- if self._country:
- if ipv4_re.match(query):
- return GeoIP_country_name_by_addr(self._country, enc_query)
- else:
- return GeoIP_country_name_by_name(self._country, enc_query)
- else:
- return self.city(query)['country_name']
-
- def country(self, query):
- """
- Returns a dictonary with with the country code and name when given an
- IP address or a Fully Qualified Domain Name (FQDN). For example, both
- '24.124.1.80' and 'djangoproject.com' are valid parameters.
- """
- # Returning the country code and name
- return {'country_code' : self.country_code(query),
- 'country_name' : self.country_name(query),
- }
-
- #### Coordinate retrieval routines ####
- def coords(self, query, ordering=('longitude', 'latitude')):
- cdict = self.city(query)
- if cdict is None: return None
- else: return tuple(cdict[o] for o in ordering)
-
- def lon_lat(self, query):
- "Returns a tuple of the (longitude, latitude) for the given query."
- return self.coords(query)
-
- def lat_lon(self, query):
- "Returns a tuple of the (latitude, longitude) for the given query."
- return self.coords(query, ('latitude', 'longitude'))
-
- def geos(self, query):
- "Returns a GEOS Point object for the given query."
- ll = self.lon_lat(query)
- if ll:
- from django.contrib.gis.geos import Point
- return Point(ll, srid=4326)
- else:
- return None
-
- #### GeoIP Database Information Routines ####
- @property
- def country_info(self):
- "Returns information about the GeoIP country database."
- if self._country is None:
- ci = 'No GeoIP Country data in "%s"' % self._country_file
- else:
- ci = GeoIP_database_info(self._country)
- return ci
-
- @property
- def city_info(self):
- "Retuns information about the GeoIP city database."
- if self._city is None:
- ci = 'No GeoIP City data in "%s"' % self._city_file
- else:
- ci = GeoIP_database_info(self._city)
- return ci
-
- @property
- def info(self):
- "Returns information about the GeoIP library and databases in use."
- info = ''
- if GeoIP_lib_version:
- info += 'GeoIP Library:\n\t%s\n' % GeoIP_lib_version()
- return info + 'Country:\n\t%s\nCity:\n\t%s' % (self.country_info, self.city_info)
-
- #### Methods for compatibility w/the GeoIP-Python API. ####
- @classmethod
- def open(cls, full_path, cache):
- return GeoIP(full_path, cache)
-
- def _rec_by_arg(self, arg):
- if self._city:
- return self.city(arg)
- else:
- return self.country(arg)
- region_by_addr = city
- region_by_name = city
- record_by_addr = _rec_by_arg
- record_by_name = _rec_by_arg
- country_code_by_addr = country_code
- country_code_by_name = country_code
- country_name_by_addr = country_name
- country_name_by_name = country_name
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geoip/libgeoip.py b/lib/python2.7/site-packages/django/contrib/gis/geoip/libgeoip.py
deleted file mode 100644
index e9e7cd7..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geoip/libgeoip.py
+++ /dev/null
@@ -1,31 +0,0 @@
-import os
-from ctypes import CDLL
-from ctypes.util import find_library
-from django.conf import settings
-
-# Creating the settings dictionary with any settings, if needed.
-GEOIP_SETTINGS = dict((key, getattr(settings, key))
- for key in ('GEOIP_PATH', 'GEOIP_LIBRARY_PATH', 'GEOIP_COUNTRY', 'GEOIP_CITY')
- if hasattr(settings, key))
-lib_path = GEOIP_SETTINGS.get('GEOIP_LIBRARY_PATH', None)
-
-# The shared library for the GeoIP C API. May be downloaded
-# from http://www.maxmind.com/download/geoip/api/c/
-if lib_path:
- lib_name = None
-else:
- # TODO: Is this really the library name for Windows?
- lib_name = 'GeoIP'
-
-# Getting the path to the GeoIP library.
-if lib_name: lib_path = find_library(lib_name)
-if lib_path is None: raise RuntimeError('Could not find the GeoIP library (tried "%s"). '
- 'Try setting GEOIP_LIBRARY_PATH in your settings.' % lib_name)
-lgeoip = CDLL(lib_path)
-
-# Getting the C `free` for the platform.
-if os.name == 'nt':
- libc = CDLL('msvcrt')
-else:
- libc = CDLL(None)
-free = libc.free
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geoip/prototypes.py b/lib/python2.7/site-packages/django/contrib/gis/geoip/prototypes.py
deleted file mode 100644
index a5db5e7..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geoip/prototypes.py
+++ /dev/null
@@ -1,115 +0,0 @@
-from ctypes import c_char_p, c_float, c_int, string_at, Structure, POINTER
-from django.contrib.gis.geoip.libgeoip import lgeoip, free
-
-#### GeoIP C Structure definitions ####
-
-class GeoIPRecord(Structure):
- _fields_ = [('country_code', c_char_p),
- ('country_code3', c_char_p),
- ('country_name', c_char_p),
- ('region', c_char_p),
- ('city', c_char_p),
- ('postal_code', c_char_p),
- ('latitude', c_float),
- ('longitude', c_float),
- # TODO: In 1.4.6 this changed from `int dma_code;` to
- # `union {int metro_code; int dma_code;};`. Change
- # to a `ctypes.Union` in to accomodate in future when
- # pre-1.4.6 versions are no longer distributed.
- ('dma_code', c_int),
- ('area_code', c_int),
- ('charset', c_int),
- ('continent_code', c_char_p),
- ]
-geoip_char_fields = [name for name, ctype in GeoIPRecord._fields_ if ctype is c_char_p]
-GEOIP_DEFAULT_ENCODING = 'iso-8859-1'
-geoip_encodings = { 0: 'iso-8859-1',
- 1: 'utf8',
- }
-
-class GeoIPTag(Structure): pass
-
-RECTYPE = POINTER(GeoIPRecord)
-DBTYPE = POINTER(GeoIPTag)
-
-#### ctypes function prototypes ####
-
-# GeoIP_lib_version appeared in version 1.4.7.
-if hasattr(lgeoip, 'GeoIP_lib_version'):
- GeoIP_lib_version = lgeoip.GeoIP_lib_version
- GeoIP_lib_version.argtypes = None
- GeoIP_lib_version.restype = c_char_p
-else:
- GeoIP_lib_version = None
-
-# For freeing memory allocated within a record
-GeoIPRecord_delete = lgeoip.GeoIPRecord_delete
-GeoIPRecord_delete.argtypes = [RECTYPE]
-GeoIPRecord_delete.restype = None
-
-# For retrieving records by name or address.
-def check_record(result, func, cargs):
- if bool(result):
- # Checking the pointer to the C structure, if valid pull out elements
- # into a dicionary.
- rec = result.contents
- record = dict((fld, getattr(rec, fld)) for fld, ctype in rec._fields_)
-
- # Now converting the strings to unicode using the proper encoding.
- encoding = geoip_encodings[record['charset']]
- for char_field in geoip_char_fields:
- if record[char_field]:
- record[char_field] = record[char_field].decode(encoding)
-
- # Free the memory allocated for the struct & return.
- GeoIPRecord_delete(result)
- return record
- else:
- return None
-
-def record_output(func):
- func.argtypes = [DBTYPE, c_char_p]
- func.restype = RECTYPE
- func.errcheck = check_record
- return func
-GeoIP_record_by_addr = record_output(lgeoip.GeoIP_record_by_addr)
-GeoIP_record_by_name = record_output(lgeoip.GeoIP_record_by_name)
-
-
-# For opening & closing GeoIP database files.
-GeoIP_open = lgeoip.GeoIP_open
-GeoIP_open.restype = DBTYPE
-GeoIP_delete = lgeoip.GeoIP_delete
-GeoIP_delete.argtypes = [DBTYPE]
-GeoIP_delete.restype = None
-
-# This is so the string pointer can be freed within Python.
-class geoip_char_p(c_char_p):
- pass
-
-def check_string(result, func, cargs):
- if result:
- s = string_at(result)
- free(result)
- else:
- s = ''
- return s.decode(GEOIP_DEFAULT_ENCODING)
-
-GeoIP_database_info = lgeoip.GeoIP_database_info
-GeoIP_database_info.restype = geoip_char_p
-GeoIP_database_info.errcheck = check_string
-
-# String output routines.
-def string_output(func):
- def _err_check(result, func, cargs):
- if result:
- return result.decode(GEOIP_DEFAULT_ENCODING)
- return result
- func.restype = c_char_p
- func.errcheck = _err_check
- return func
-
-GeoIP_country_code_by_addr = string_output(lgeoip.GeoIP_country_code_by_addr)
-GeoIP_country_code_by_name = string_output(lgeoip.GeoIP_country_code_by_name)
-GeoIP_country_name_by_addr = string_output(lgeoip.GeoIP_country_name_by_addr)
-GeoIP_country_name_by_name = string_output(lgeoip.GeoIP_country_name_by_name)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geoip/tests.py b/lib/python2.7/site-packages/django/contrib/gis/geoip/tests.py
deleted file mode 100644
index 0a99a97..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geoip/tests.py
+++ /dev/null
@@ -1,122 +0,0 @@
-# -*- coding: utf-8 -*-
-from __future__ import unicode_literals
-
-import os
-from django.conf import settings
-from django.contrib.gis.geos import HAS_GEOS
-from django.contrib.gis.geoip import HAS_GEOIP
-from django.utils import unittest
-from django.utils.unittest import skipUnless
-
-from django.utils import six
-
-if HAS_GEOIP:
- from . import GeoIP, GeoIPException
-
-if HAS_GEOS:
- from ..geos import GEOSGeometry
-
-
-# Note: Requires use of both the GeoIP country and city datasets.
-# The GEOIP_DATA path should be the only setting set (the directory
-# should contain links or the actual database files 'GeoIP.dat' and
-# 'GeoLiteCity.dat'.
-
-
-@skipUnless(HAS_GEOIP and getattr(settings, "GEOIP_PATH", None),
- "GeoIP is required along with the GEOIP_PATH setting.")
-class GeoIPTest(unittest.TestCase):
-
- def test01_init(self):
- "Testing GeoIP initialization."
- g1 = GeoIP() # Everything inferred from GeoIP path
- path = settings.GEOIP_PATH
- g2 = GeoIP(path, 0) # Passing in data path explicitly.
- g3 = GeoIP.open(path, 0) # MaxMind Python API syntax.
-
- for g in (g1, g2, g3):
- self.assertEqual(True, bool(g._country))
- self.assertEqual(True, bool(g._city))
-
- # Only passing in the location of one database.
- city = os.path.join(path, 'GeoLiteCity.dat')
- cntry = os.path.join(path, 'GeoIP.dat')
- g4 = GeoIP(city, country='')
- self.assertEqual(None, g4._country)
- g5 = GeoIP(cntry, city='')
- self.assertEqual(None, g5._city)
-
- # Improper parameters.
- bad_params = (23, 'foo', 15.23)
- for bad in bad_params:
- self.assertRaises(GeoIPException, GeoIP, cache=bad)
- if isinstance(bad, six.string_types):
- e = GeoIPException
- else:
- e = TypeError
- self.assertRaises(e, GeoIP, bad, 0)
-
- def test02_bad_query(self):
- "Testing GeoIP query parameter checking."
- cntry_g = GeoIP(city='<foo>')
- # No city database available, these calls should fail.
- self.assertRaises(GeoIPException, cntry_g.city, 'google.com')
- self.assertRaises(GeoIPException, cntry_g.coords, 'yahoo.com')
-
- # Non-string query should raise TypeError
- self.assertRaises(TypeError, cntry_g.country_code, 17)
- self.assertRaises(TypeError, cntry_g.country_name, GeoIP)
-
- def test03_country(self):
- "Testing GeoIP country querying methods."
- g = GeoIP(city='<foo>')
-
- fqdn = 'www.google.com'
- addr = '12.215.42.19'
-
- for query in (fqdn, addr):
- for func in (g.country_code, g.country_code_by_addr, g.country_code_by_name):
- self.assertEqual('US', func(query))
- for func in (g.country_name, g.country_name_by_addr, g.country_name_by_name):
- self.assertEqual('United States', func(query))
- self.assertEqual({'country_code' : 'US', 'country_name' : 'United States'},
- g.country(query))
-
- @skipUnless(HAS_GEOS, "Geos is required")
- def test04_city(self):
- "Testing GeoIP city querying methods."
- g = GeoIP(country='<foo>')
-
- addr = '128.249.1.1'
- fqdn = 'tmc.edu'
- for query in (fqdn, addr):
- # Country queries should still work.
- for func in (g.country_code, g.country_code_by_addr, g.country_code_by_name):
- self.assertEqual('US', func(query))
- for func in (g.country_name, g.country_name_by_addr, g.country_name_by_name):
- self.assertEqual('United States', func(query))
- self.assertEqual({'country_code' : 'US', 'country_name' : 'United States'},
- g.country(query))
-
- # City information dictionary.
- d = g.city(query)
- self.assertEqual('USA', d['country_code3'])
- self.assertEqual('Houston', d['city'])
- self.assertEqual('TX', d['region'])
- self.assertEqual(713, d['area_code'])
- geom = g.geos(query)
- self.assertTrue(isinstance(geom, GEOSGeometry))
- lon, lat = (-95.4010, 29.7079)
- lat_lon = g.lat_lon(query)
- lat_lon = (lat_lon[1], lat_lon[0])
- for tup in (geom.tuple, g.coords(query), g.lon_lat(query), lat_lon):
- self.assertAlmostEqual(lon, tup[0], 4)
- self.assertAlmostEqual(lat, tup[1], 4)
-
- def test05_unicode_response(self):
- "Testing that GeoIP strings are properly encoded, see #16553."
- g = GeoIP()
- d = g.city("www.osnabrueck.de")
- self.assertEqual('Osnabrück', d['city'])
- d = g.country('200.7.49.81')
- self.assertEqual('Curaçao', d['country_name'])
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geometry/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/geometry/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geometry/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geometry/backend/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/geometry/backend/__init__.py
deleted file mode 100644
index 52fa0de..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geometry/backend/__init__.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured
-from django.utils.importlib import import_module
-
-geom_backend = getattr(settings, 'GEOMETRY_BACKEND', 'geos')
-
-try:
- module = import_module('django.contrib.gis.geometry.backend.%s' % geom_backend)
-except ImportError:
- try:
- module = import_module(geom_backend)
- except ImportError:
- raise ImproperlyConfigured('Could not import user-defined GEOMETRY_BACKEND '
- '"%s".' % geom_backend)
-
-try:
- Geometry = module.Geometry
- GeometryException = module.GeometryException
-except AttributeError:
- raise ImproperlyConfigured('Cannot import Geometry from the "%s" '
- 'geometry backend.' % geom_backend)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geometry/backend/geos.py b/lib/python2.7/site-packages/django/contrib/gis/geometry/backend/geos.py
deleted file mode 100644
index cdc40ed..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geometry/backend/geos.py
+++ /dev/null
@@ -1,2 +0,0 @@
-from django.contrib.gis.geos import (
- GEOSGeometry as Geometry, GEOSException as GeometryException)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geometry/regex.py b/lib/python2.7/site-packages/django/contrib/gis/geometry/regex.py
deleted file mode 100644
index 22d16cb..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geometry/regex.py
+++ /dev/null
@@ -1,12 +0,0 @@
-import re
-
-# Regular expression for recognizing HEXEWKB and WKT. A prophylactic measure
-# to prevent potentially malicious input from reaching the underlying C
-# library. Not a substitute for good Web security programming practices.
-hex_regex = re.compile(r'^[0-9A-F]+$', re.I)
-wkt_regex = re.compile(r'^(SRID=(?P<srid>\-?\d+);)?'
- r'(?P<wkt>'
- r'(?P<type>POINT|LINESTRING|LINEARRING|POLYGON|MULTIPOINT|MULTILINESTRING|MULTIPOLYGON|GEOMETRYCOLLECTION)'
- r'[ACEGIMLONPSRUTYZ\d,\.\-\(\) ]+)$',
- re.I)
-json_regex = re.compile(r'^(\s+)?\{[\s\w,\[\]\{\}\-\."\':]+\}(\s+)?$')
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geometry/test_data.py b/lib/python2.7/site-packages/django/contrib/gis/geometry/test_data.py
deleted file mode 100644
index e13e858..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geometry/test_data.py
+++ /dev/null
@@ -1,106 +0,0 @@
-"""
-This module has the mock object definitions used to hold reference geometry
-for the GEOS and GDAL tests.
-"""
-import json
-import os
-
-from django.contrib import gis
-from django.utils import six
-from django.utils._os import upath
-
-
-# This global used to store reference geometry data.
-GEOMETRIES = None
-
-# Path where reference test data is located.
-TEST_DATA = os.path.join(os.path.dirname(upath(gis.__file__)), 'tests', 'data')
-
-
-def tuplize(seq):
- "Turn all nested sequences to tuples in given sequence."
- if isinstance(seq, (list, tuple)):
- return tuple([tuplize(i) for i in seq])
- return seq
-
-
-def strconvert(d):
- "Converts all keys in dictionary to str type."
- return dict([(str(k), v) for k, v in six.iteritems(d)])
-
-
-def get_ds_file(name, ext):
- return os.path.join(TEST_DATA,
- name,
- name + '.%s' % ext
- )
-
-
-class TestObj(object):
- """
- Base testing object, turns keyword args into attributes.
- """
- def __init__(self, **kwargs):
- for key, value in kwargs.items():
- setattr(self, key, value)
-
-
-class TestDS(TestObj):
- """
- Object for testing GDAL data sources.
- """
- def __init__(self, name, **kwargs):
- # Shapefile is default extension, unless specified otherwise.
- ext = kwargs.pop('ext', 'shp')
- self.ds = get_ds_file(name, ext)
- super(TestDS, self).__init__(**kwargs)
-
-
-class TestGeom(TestObj):
- """
- Testing object used for wrapping reference geometry data
- in GEOS/GDAL tests.
- """
- def __init__(self, **kwargs):
- # Converting lists to tuples of certain keyword args
- # so coordinate test cases will match (JSON has no
- # concept of tuple).
- coords = kwargs.pop('coords', None)
- if coords:
- self.coords = tuplize(coords)
-
- centroid = kwargs.pop('centroid', None)
- if centroid:
- self.centroid = tuple(centroid)
-
- ext_ring_cs = kwargs.pop('ext_ring_cs', None)
- if ext_ring_cs:
- ext_ring_cs = tuplize(ext_ring_cs)
- self.ext_ring_cs = ext_ring_cs
-
- super(TestGeom, self).__init__(**kwargs)
-
-
-class TestGeomSet(object):
- """
- Each attribute of this object is a list of `TestGeom` instances.
- """
- def __init__(self, **kwargs):
- for key, value in kwargs.items():
- setattr(self, key, [TestGeom(**strconvert(kw)) for kw in value])
-
-
-class TestDataMixin(object):
- """
- Mixin used for GEOS/GDAL test cases that defines a `geometries`
- property, which returns and/or loads the reference geometry data.
- """
- @property
- def geometries(self):
- global GEOMETRIES
- if GEOMETRIES is None:
- # Load up the test geometry data from fixture into global.
- with open(os.path.join(TEST_DATA, 'geometries.json')) as f:
- geometries = json.load(f)
- GEOMETRIES = TestGeomSet(**strconvert(geometries))
- return GEOMETRIES
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/geos/__init__.py
deleted file mode 100644
index 945f561..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/__init__.py
+++ /dev/null
@@ -1,20 +0,0 @@
-"""
-The GeoDjango GEOS module. Please consult the GeoDjango documentation
-for more details:
- http://geodjango.org/docs/geos.html
-"""
-try:
- from .libgeos import geos_version, geos_version_info, GEOS_PREPARE
- HAS_GEOS = True
-except ImportError:
- HAS_GEOS = False
-
-if HAS_GEOS:
- from .geometry import GEOSGeometry, wkt_regex, hex_regex
- from .point import Point
- from .linestring import LineString, LinearRing
- from .polygon import Polygon
- from .collections import GeometryCollection, MultiPoint, MultiLineString, MultiPolygon
- from .error import GEOSException, GEOSIndexError
- from .io import WKTReader, WKTWriter, WKBReader, WKBWriter
- from .factory import fromfile, fromstr
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/base.py b/lib/python2.7/site-packages/django/contrib/gis/geos/base.py
deleted file mode 100644
index fd2693e..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/base.py
+++ /dev/null
@@ -1,51 +0,0 @@
-from ctypes import c_void_p
-
-from django.contrib.gis.geos.error import GEOSException
-
-# Trying to import GDAL libraries, if available. Have to place in
-# try/except since this package may be used outside GeoDjango.
-try:
- from django.contrib.gis import gdal
-except ImportError:
- # A 'dummy' gdal module.
- class GDALInfo(object):
- HAS_GDAL = False
- gdal = GDALInfo()
-
-# NumPy supported?
-try:
- import numpy
-except ImportError:
- numpy = False
-
-class GEOSBase(object):
- """
- Base object for GEOS objects that has a pointer access property
- that controls access to the underlying C pointer.
- """
- # Initially the pointer is NULL.
- _ptr = None
-
- # Default allowed pointer type.
- ptr_type = c_void_p
-
- # Pointer access property.
- def _get_ptr(self):
- # Raise an exception if the pointer isn't valid don't
- # want to be passing NULL pointers to routines --
- # that's very bad.
- if self._ptr: return self._ptr
- else: raise GEOSException('NULL GEOS %s pointer encountered.' % self.__class__.__name__)
-
- def _set_ptr(self, ptr):
- # Only allow the pointer to be set with pointers of the
- # compatible type or None (NULL).
- if ptr is None or isinstance(ptr, self.ptr_type):
- self._ptr = ptr
- else:
- raise TypeError('Incompatible pointer type')
-
- # Property for controlling access to the GEOS object pointers. Using
- # this raises an exception when the pointer is NULL, thus preventing
- # the C library from attempting to access an invalid memory location.
- ptr = property(_get_ptr, _set_ptr)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/collections.py b/lib/python2.7/site-packages/django/contrib/gis/geos/collections.py
deleted file mode 100644
index 2b62bce..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/collections.py
+++ /dev/null
@@ -1,124 +0,0 @@
-"""
- This module houses the Geometry Collection objects:
- GeometryCollection, MultiPoint, MultiLineString, and MultiPolygon
-"""
-from ctypes import c_int, c_uint, byref
-from django.contrib.gis.geos.error import GEOSException
-from django.contrib.gis.geos.geometry import GEOSGeometry
-from django.contrib.gis.geos.libgeos import get_pointer_arr, GEOS_PREPARE
-from django.contrib.gis.geos.linestring import LineString, LinearRing
-from django.contrib.gis.geos.point import Point
-from django.contrib.gis.geos.polygon import Polygon
-from django.contrib.gis.geos import prototypes as capi
-from django.utils.six.moves import xrange
-
-class GeometryCollection(GEOSGeometry):
- _typeid = 7
-
- def __init__(self, *args, **kwargs):
- "Initializes a Geometry Collection from a sequence of Geometry objects."
-
- # Checking the arguments
- if not args:
- raise TypeError('Must provide at least one Geometry to initialize %s.' % self.__class__.__name__)
-
- if len(args) == 1:
- # If only one geometry provided or a list of geometries is provided
- # in the first argument.
- if isinstance(args[0], (tuple, list)):
- init_geoms = args[0]
- else:
- init_geoms = args
- else:
- init_geoms = args
-
- # Ensuring that only the permitted geometries are allowed in this collection
- # this is moved to list mixin super class
- self._check_allowed(init_geoms)
-
- # Creating the geometry pointer array.
- collection = self._create_collection(len(init_geoms), iter(init_geoms))
- super(GeometryCollection, self).__init__(collection, **kwargs)
-
- def __iter__(self):
- "Iterates over each Geometry in the Collection."
- for i in xrange(len(self)):
- yield self[i]
-
- def __len__(self):
- "Returns the number of geometries in this Collection."
- return self.num_geom
-
- ### Methods for compatibility with ListMixin ###
- def _create_collection(self, length, items):
- # Creating the geometry pointer array.
- geoms = get_pointer_arr(length)
- for i, g in enumerate(items):
- # this is a little sloppy, but makes life easier
- # allow GEOSGeometry types (python wrappers) or pointer types
- geoms[i] = capi.geom_clone(getattr(g, 'ptr', g))
-
- return capi.create_collection(c_int(self._typeid), byref(geoms), c_uint(length))
-
- def _get_single_internal(self, index):
- return capi.get_geomn(self.ptr, index)
-
- def _get_single_external(self, index):
- "Returns the Geometry from this Collection at the given index (0-based)."
- # Checking the index and returning the corresponding GEOS geometry.
- return GEOSGeometry(capi.geom_clone(self._get_single_internal(index)), srid=self.srid)
-
- def _set_list(self, length, items):
- "Create a new collection, and destroy the contents of the previous pointer."
- prev_ptr = self.ptr
- srid = self.srid
- self.ptr = self._create_collection(length, items)
- if srid: self.srid = srid
- capi.destroy_geom(prev_ptr)
-
- _set_single = GEOSGeometry._set_single_rebuild
- _assign_extended_slice = GEOSGeometry._assign_extended_slice_rebuild
-
- @property
- def kml(self):
- "Returns the KML for this Geometry Collection."
- return '<MultiGeometry>%s</MultiGeometry>' % ''.join([g.kml for g in self])
-
- @property
- def tuple(self):
- "Returns a tuple of all the coordinates in this Geometry Collection"
- return tuple([g.tuple for g in self])
- coords = tuple
-
-# MultiPoint, MultiLineString, and MultiPolygon class definitions.
-class MultiPoint(GeometryCollection):
- _allowed = Point
- _typeid = 4
-
-class MultiLineString(GeometryCollection):
- _allowed = (LineString, LinearRing)
- _typeid = 5
-
- @property
- def merged(self):
- """
- Returns a LineString representing the line merge of this
- MultiLineString.
- """
- return self._topology(capi.geos_linemerge(self.ptr))
-
-class MultiPolygon(GeometryCollection):
- _allowed = Polygon
- _typeid = 6
-
- @property
- def cascaded_union(self):
- "Returns a cascaded union of this MultiPolygon."
- if GEOS_PREPARE:
- return GEOSGeometry(capi.geos_cascaded_union(self.ptr), self.srid)
- else:
- raise GEOSException('The cascaded union operation requires GEOS 3.1+.')
-
-# Setting the allowed types here since GeometryCollection is defined before
-# its subclasses.
-GeometryCollection._allowed = (Point, LineString, LinearRing, Polygon, MultiPoint, MultiLineString, MultiPolygon)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/coordseq.py b/lib/python2.7/site-packages/django/contrib/gis/geos/coordseq.py
deleted file mode 100644
index acf34f7..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/coordseq.py
+++ /dev/null
@@ -1,157 +0,0 @@
-"""
- This module houses the GEOSCoordSeq object, which is used internally
- by GEOSGeometry to house the actual coordinates of the Point,
- LineString, and LinearRing geometries.
-"""
-from ctypes import c_double, c_uint, byref
-from django.contrib.gis.geos.base import GEOSBase, numpy
-from django.contrib.gis.geos.error import GEOSException, GEOSIndexError
-from django.contrib.gis.geos.libgeos import CS_PTR
-from django.contrib.gis.geos import prototypes as capi
-from django.utils.six.moves import xrange
-
-class GEOSCoordSeq(GEOSBase):
- "The internal representation of a list of coordinates inside a Geometry."
-
- ptr_type = CS_PTR
-
- #### Python 'magic' routines ####
- def __init__(self, ptr, z=False):
- "Initializes from a GEOS pointer."
- if not isinstance(ptr, CS_PTR):
- raise TypeError('Coordinate sequence should initialize with a CS_PTR.')
- self._ptr = ptr
- self._z = z
-
- def __iter__(self):
- "Iterates over each point in the coordinate sequence."
- for i in xrange(self.size):
- yield self[i]
-
- def __len__(self):
- "Returns the number of points in the coordinate sequence."
- return int(self.size)
-
- def __str__(self):
- "Returns the string representation of the coordinate sequence."
- return str(self.tuple)
-
- def __getitem__(self, index):
- "Returns the coordinate sequence value at the given index."
- coords = [self.getX(index), self.getY(index)]
- if self.dims == 3 and self._z:
- coords.append(self.getZ(index))
- return tuple(coords)
-
- def __setitem__(self, index, value):
- "Sets the coordinate sequence value at the given index."
- # Checking the input value
- if isinstance(value, (list, tuple)):
- pass
- elif numpy and isinstance(value, numpy.ndarray):
- pass
- else:
- raise TypeError('Must set coordinate with a sequence (list, tuple, or numpy array).')
- # Checking the dims of the input
- if self.dims == 3 and self._z:
- n_args = 3
- set_3d = True
- else:
- n_args = 2
- set_3d = False
- if len(value) != n_args:
- raise TypeError('Dimension of value does not match.')
- # Setting the X, Y, Z
- self.setX(index, value[0])
- self.setY(index, value[1])
- if set_3d: self.setZ(index, value[2])
-
- #### Internal Routines ####
- def _checkindex(self, index):
- "Checks the given index."
- sz = self.size
- if (sz < 1) or (index < 0) or (index >= sz):
- raise GEOSIndexError('invalid GEOS Geometry index: %s' % str(index))
-
- def _checkdim(self, dim):
- "Checks the given dimension."
- if dim < 0 or dim > 2:
- raise GEOSException('invalid ordinate dimension "%d"' % dim)
-
- #### Ordinate getting and setting routines ####
- def getOrdinate(self, dimension, index):
- "Returns the value for the given dimension and index."
- self._checkindex(index)
- self._checkdim(dimension)
- return capi.cs_getordinate(self.ptr, index, dimension, byref(c_double()))
-
- def setOrdinate(self, dimension, index, value):
- "Sets the value for the given dimension and index."
- self._checkindex(index)
- self._checkdim(dimension)
- capi.cs_setordinate(self.ptr, index, dimension, value)
-
- def getX(self, index):
- "Get the X value at the index."
- return self.getOrdinate(0, index)
-
- def setX(self, index, value):
- "Set X with the value at the given index."
- self.setOrdinate(0, index, value)
-
- def getY(self, index):
- "Get the Y value at the given index."
- return self.getOrdinate(1, index)
-
- def setY(self, index, value):
- "Set Y with the value at the given index."
- self.setOrdinate(1, index, value)
-
- def getZ(self, index):
- "Get Z with the value at the given index."
- return self.getOrdinate(2, index)
-
- def setZ(self, index, value):
- "Set Z with the value at the given index."
- self.setOrdinate(2, index, value)
-
- ### Dimensions ###
- @property
- def size(self):
- "Returns the size of this coordinate sequence."
- return capi.cs_getsize(self.ptr, byref(c_uint()))
-
- @property
- def dims(self):
- "Returns the dimensions of this coordinate sequence."
- return capi.cs_getdims(self.ptr, byref(c_uint()))
-
- @property
- def hasz(self):
- """
- Returns whether this coordinate sequence is 3D. This property value is
- inherited from the parent Geometry.
- """
- return self._z
-
- ### Other Methods ###
- def clone(self):
- "Clones this coordinate sequence."
- return GEOSCoordSeq(capi.cs_clone(self.ptr), self.hasz)
-
- @property
- def kml(self):
- "Returns the KML representation for the coordinates."
- # Getting the substitution string depending on whether the coordinates have
- # a Z dimension.
- if self.hasz: substr = '%s,%s,%s '
- else: substr = '%s,%s,0 '
- return '<coordinates>%s</coordinates>' % \
- ''.join([substr % self[i] for i in xrange(len(self))]).strip()
-
- @property
- def tuple(self):
- "Returns a tuple version of this coordinate sequence."
- n = self.size
- if n == 1: return self[0]
- else: return tuple([self[i] for i in xrange(n)])
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/error.py b/lib/python2.7/site-packages/django/contrib/gis/geos/error.py
deleted file mode 100644
index 46bdfe6..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/error.py
+++ /dev/null
@@ -1,20 +0,0 @@
-"""
- This module houses the GEOS exceptions, specifically, GEOSException and
- GEOSGeometryIndexError.
-"""
-
-class GEOSException(Exception):
- "The base GEOS exception, indicates a GEOS-related error."
- pass
-
-class GEOSIndexError(GEOSException, KeyError):
- """
- This exception is raised when an invalid index is encountered, and has
- the 'silent_variable_feature' attribute set to true. This ensures that
- django's templates proceed to use the next lookup type gracefully when
- an Exception is raised. Fixes ticket #4740.
- """
- # "If, during the method lookup, a method raises an exception, the exception
- # will be propagated, unless the exception has an attribute
- # `silent_variable_failure` whose value is True." -- Django template docs.
- silent_variable_failure = True
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/factory.py b/lib/python2.7/site-packages/django/contrib/gis/geos/factory.py
deleted file mode 100644
index 2e5fa4f..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/factory.py
+++ /dev/null
@@ -1,35 +0,0 @@
-from django.contrib.gis import memoryview
-from django.contrib.gis.geos.geometry import GEOSGeometry, wkt_regex, hex_regex
-
-from django.utils import six
-
-
-def fromfile(file_h):
- """
- Given a string file name, returns a GEOSGeometry. The file may contain WKB,
- WKT, or HEX.
- """
- # If given a file name, get a real handle.
- if isinstance(file_h, six.string_types):
- with open(file_h, 'rb') as file_h:
- buf = file_h.read()
- else:
- buf = file_h.read()
-
- # If we get WKB need to wrap in memoryview(), so run through regexes.
- if isinstance(buf, bytes):
- try:
- decoded = buf.decode()
- if wkt_regex.match(decoded) or hex_regex.match(decoded):
- return GEOSGeometry(decoded)
- except UnicodeDecodeError:
- pass
- else:
- return GEOSGeometry(buf)
-
- return GEOSGeometry(memoryview(buf))
-
-
-def fromstr(string, **kwargs):
- "Given a string value, returns a GEOSGeometry object."
- return GEOSGeometry(string, **kwargs)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/geometry.py b/lib/python2.7/site-packages/django/contrib/gis/geos/geometry.py
deleted file mode 100644
index b088ec2..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/geometry.py
+++ /dev/null
@@ -1,715 +0,0 @@
-"""
- This module contains the 'base' GEOSGeometry object -- all GEOS Geometries
- inherit from this object.
-"""
-from __future__ import unicode_literals
-
-# Python, ctypes and types dependencies.
-from ctypes import addressof, byref, c_double
-
-from django.contrib.gis import memoryview
-# super-class for mutable list behavior
-from django.contrib.gis.geos.mutable_list import ListMixin
-
-from django.contrib.gis.gdal.error import SRSException
-
-# GEOS-related dependencies.
-from django.contrib.gis.geos.base import GEOSBase, gdal
-from django.contrib.gis.geos.coordseq import GEOSCoordSeq
-from django.contrib.gis.geos.error import GEOSException, GEOSIndexError
-from django.contrib.gis.geos.libgeos import GEOM_PTR, GEOS_PREPARE
-from django.contrib.gis.geos.mutable_list import ListMixin
-
-# All other functions in this module come from the ctypes
-# prototypes module -- which handles all interaction with
-# the underlying GEOS library.
-from django.contrib.gis.geos import prototypes as capi
-
-# These functions provide access to a thread-local instance
-# of their corresponding GEOS I/O class.
-from django.contrib.gis.geos.prototypes.io import wkt_r, wkt_w, wkb_r, wkb_w, ewkb_w
-
-# For recognizing geometry input.
-from django.contrib.gis.geometry.regex import hex_regex, wkt_regex, json_regex
-
-from django.utils import six
-from django.utils.encoding import force_bytes, force_text
-
-
-class GEOSGeometry(GEOSBase, ListMixin):
- "A class that, generally, encapsulates a GEOS geometry."
-
- # Raise GEOSIndexError instead of plain IndexError
- # (see ticket #4740 and GEOSIndexError docstring)
- _IndexError = GEOSIndexError
-
- ptr_type = GEOM_PTR
-
- #### Python 'magic' routines ####
- def __init__(self, geo_input, srid=None):
- """
- The base constructor for GEOS geometry objects, and may take the
- following inputs:
-
- * strings:
- - WKT
- - HEXEWKB (a PostGIS-specific canonical form)
- - GeoJSON (requires GDAL)
- * buffer:
- - WKB
-
- The `srid` keyword is used to specify the Source Reference Identifier
- (SRID) number for this Geometry. If not set, the SRID will be None.
- """
- if isinstance(geo_input, bytes):
- geo_input = force_text(geo_input)
- if isinstance(geo_input, six.string_types):
- wkt_m = wkt_regex.match(geo_input)
- if wkt_m:
- # Handling WKT input.
- if wkt_m.group('srid'): srid = int(wkt_m.group('srid'))
- g = wkt_r().read(force_bytes(wkt_m.group('wkt')))
- elif hex_regex.match(geo_input):
- # Handling HEXEWKB input.
- g = wkb_r().read(force_bytes(geo_input))
- elif gdal.HAS_GDAL and json_regex.match(geo_input):
- # Handling GeoJSON input.
- g = wkb_r().read(gdal.OGRGeometry(geo_input).wkb)
- else:
- raise ValueError('String or unicode input unrecognized as WKT EWKT, and HEXEWKB.')
- elif isinstance(geo_input, GEOM_PTR):
- # When the input is a pointer to a geomtry (GEOM_PTR).
- g = geo_input
- elif isinstance(geo_input, memoryview):
- # When the input is a buffer (WKB).
- g = wkb_r().read(geo_input)
- elif isinstance(geo_input, GEOSGeometry):
- g = capi.geom_clone(geo_input.ptr)
- else:
- # Invalid geometry type.
- raise TypeError('Improper geometry input type: %s' % str(type(geo_input)))
-
- if bool(g):
- # Setting the pointer object with a valid pointer.
- self.ptr = g
- else:
- raise GEOSException('Could not initialize GEOS Geometry with given input.')
-
- # Post-initialization setup.
- self._post_init(srid)
-
- def _post_init(self, srid):
- "Helper routine for performing post-initialization setup."
- # Setting the SRID, if given.
- if srid and isinstance(srid, int): self.srid = srid
-
- # Setting the class type (e.g., Point, Polygon, etc.)
- self.__class__ = GEOS_CLASSES[self.geom_typeid]
-
- # Setting the coordinate sequence for the geometry (will be None on
- # geometries that do not have coordinate sequences)
- self._set_cs()
-
- def __del__(self):
- """
- Destroys this Geometry; in other words, frees the memory used by the
- GEOS C++ object.
- """
- if self._ptr: capi.destroy_geom(self._ptr)
-
- def __copy__(self):
- """
- Returns a clone because the copy of a GEOSGeometry may contain an
- invalid pointer location if the original is garbage collected.
- """
- return self.clone()
-
- def __deepcopy__(self, memodict):
- """
- The `deepcopy` routine is used by the `Node` class of django.utils.tree;
- thus, the protocol routine needs to be implemented to return correct
- copies (clones) of these GEOS objects, which use C pointers.
- """
- return self.clone()
-
- def __str__(self):
- "WKT is used for the string representation."
- return self.wkt
-
- def __repr__(self):
- "Short-hand representation because WKT may be very large."
- return '<%s object at %s>' % (self.geom_type, hex(addressof(self.ptr)))
-
- # Pickling support
- def __getstate__(self):
- # The pickled state is simply a tuple of the WKB (in string form)
- # and the SRID.
- return bytes(self.wkb), self.srid
-
- def __setstate__(self, state):
- # Instantiating from the tuple state that was pickled.
- wkb, srid = state
- ptr = wkb_r().read(memoryview(wkb))
- if not ptr: raise GEOSException('Invalid Geometry loaded from pickled state.')
- self.ptr = ptr
- self._post_init(srid)
-
- # Comparison operators
- def __eq__(self, other):
- """
- Equivalence testing, a Geometry may be compared with another Geometry
- or a WKT representation.
- """
- if isinstance(other, six.string_types):
- return self.wkt == other
- elif isinstance(other, GEOSGeometry):
- return self.equals_exact(other)
- else:
- return False
-
- def __ne__(self, other):
- "The not equals operator."
- return not (self == other)
-
- ### Geometry set-like operations ###
- # Thanks to Sean Gillies for inspiration:
- # http://lists.gispython.org/pipermail/community/2007-July/001034.html
- # g = g1 | g2
- def __or__(self, other):
- "Returns the union of this Geometry and the other."
- return self.union(other)
-
- # g = g1 & g2
- def __and__(self, other):
- "Returns the intersection of this Geometry and the other."
- return self.intersection(other)
-
- # g = g1 - g2
- def __sub__(self, other):
- "Return the difference this Geometry and the other."
- return self.difference(other)
-
- # g = g1 ^ g2
- def __xor__(self, other):
- "Return the symmetric difference of this Geometry and the other."
- return self.sym_difference(other)
-
- #### Coordinate Sequence Routines ####
- @property
- def has_cs(self):
- "Returns True if this Geometry has a coordinate sequence, False if not."
- # Only these geometries are allowed to have coordinate sequences.
- if isinstance(self, (Point, LineString, LinearRing)):
- return True
- else:
- return False
-
- def _set_cs(self):
- "Sets the coordinate sequence for this Geometry."
- if self.has_cs:
- self._cs = GEOSCoordSeq(capi.get_cs(self.ptr), self.hasz)
- else:
- self._cs = None
-
- @property
- def coord_seq(self):
- "Returns a clone of the coordinate sequence for this Geometry."
- if self.has_cs:
- return self._cs.clone()
-
- #### Geometry Info ####
- @property
- def geom_type(self):
- "Returns a string representing the Geometry type, e.g. 'Polygon'"
- return capi.geos_type(self.ptr).decode()
-
- @property
- def geom_typeid(self):
- "Returns an integer representing the Geometry type."
- return capi.geos_typeid(self.ptr)
-
- @property
- def num_geom(self):
- "Returns the number of geometries in the Geometry."
- return capi.get_num_geoms(self.ptr)
-
- @property
- def num_coords(self):
- "Returns the number of coordinates in the Geometry."
- return capi.get_num_coords(self.ptr)
-
- @property
- def num_points(self):
- "Returns the number points, or coordinates, in the Geometry."
- return self.num_coords
-
- @property
- def dims(self):
- "Returns the dimension of this Geometry (0=point, 1=line, 2=surface)."
- return capi.get_dims(self.ptr)
-
- def normalize(self):
- "Converts this Geometry to normal form (or canonical form)."
- return capi.geos_normalize(self.ptr)
-
- #### Unary predicates ####
- @property
- def empty(self):
- """
- Returns a boolean indicating whether the set of points in this Geometry
- are empty.
- """
- return capi.geos_isempty(self.ptr)
-
- @property
- def hasz(self):
- "Returns whether the geometry has a 3D dimension."
- return capi.geos_hasz(self.ptr)
-
- @property
- def ring(self):
- "Returns whether or not the geometry is a ring."
- return capi.geos_isring(self.ptr)
-
- @property
- def simple(self):
- "Returns false if the Geometry not simple."
- return capi.geos_issimple(self.ptr)
-
- @property
- def valid(self):
- "This property tests the validity of this Geometry."
- return capi.geos_isvalid(self.ptr)
-
- @property
- def valid_reason(self):
- """
- Returns a string containing the reason for any invalidity.
- """
- if not GEOS_PREPARE:
- raise GEOSException('Upgrade GEOS to 3.1 to get validity reason.')
- return capi.geos_isvalidreason(self.ptr).decode()
-
- #### Binary predicates. ####
- def contains(self, other):
- "Returns true if other.within(this) returns true."
- return capi.geos_contains(self.ptr, other.ptr)
-
- def crosses(self, other):
- """
- Returns true if the DE-9IM intersection matrix for the two Geometries
- is T*T****** (for a point and a curve,a point and an area or a line and
- an area) 0******** (for two curves).
- """
- return capi.geos_crosses(self.ptr, other.ptr)
-
- def disjoint(self, other):
- """
- Returns true if the DE-9IM intersection matrix for the two Geometries
- is FF*FF****.
- """
- return capi.geos_disjoint(self.ptr, other.ptr)
-
- def equals(self, other):
- """
- Returns true if the DE-9IM intersection matrix for the two Geometries
- is T*F**FFF*.
- """
- return capi.geos_equals(self.ptr, other.ptr)
-
- def equals_exact(self, other, tolerance=0):
- """
- Returns true if the two Geometries are exactly equal, up to a
- specified tolerance.
- """
- return capi.geos_equalsexact(self.ptr, other.ptr, float(tolerance))
-
- def intersects(self, other):
- "Returns true if disjoint returns false."
- return capi.geos_intersects(self.ptr, other.ptr)
-
- def overlaps(self, other):
- """
- Returns true if the DE-9IM intersection matrix for the two Geometries
- is T*T***T** (for two points or two surfaces) 1*T***T** (for two curves).
- """
- return capi.geos_overlaps(self.ptr, other.ptr)
-
- def relate_pattern(self, other, pattern):
- """
- Returns true if the elements in the DE-9IM intersection matrix for the
- two Geometries match the elements in pattern.
- """
- if not isinstance(pattern, six.string_types) or len(pattern) > 9:
- raise GEOSException('invalid intersection matrix pattern')
- return capi.geos_relatepattern(self.ptr, other.ptr, force_bytes(pattern))
-
- def touches(self, other):
- """
- Returns true if the DE-9IM intersection matrix for the two Geometries
- is FT*******, F**T***** or F***T****.
- """
- return capi.geos_touches(self.ptr, other.ptr)
-
- def within(self, other):
- """
- Returns true if the DE-9IM intersection matrix for the two Geometries
- is T*F**F***.
- """
- return capi.geos_within(self.ptr, other.ptr)
-
- #### SRID Routines ####
- def get_srid(self):
- "Gets the SRID for the geometry, returns None if no SRID is set."
- s = capi.geos_get_srid(self.ptr)
- if s == 0: return None
- else: return s
-
- def set_srid(self, srid):
- "Sets the SRID for the geometry."
- capi.geos_set_srid(self.ptr, srid)
- srid = property(get_srid, set_srid)
-
- #### Output Routines ####
- @property
- def ewkt(self):
- """
- Returns the EWKT (WKT + SRID) of the Geometry. Note that Z values
- are *not* included in this representation because GEOS does not yet
- support serializing them.
- """
- if self.get_srid(): return 'SRID=%s;%s' % (self.srid, self.wkt)
- else: return self.wkt
-
- @property
- def wkt(self):
- "Returns the WKT (Well-Known Text) representation of this Geometry."
- return wkt_w(3 if self.hasz else 2).write(self).decode()
-
- @property
- def hex(self):
- """
- Returns the WKB of this Geometry in hexadecimal form. Please note
- that the SRID is not included in this representation because it is not
- a part of the OGC specification (use the `hexewkb` property instead).
- """
- # A possible faster, all-python, implementation:
- # str(self.wkb).encode('hex')
- return wkb_w(3 if self.hasz else 2).write_hex(self)
-
- @property
- def hexewkb(self):
- """
- Returns the EWKB of this Geometry in hexadecimal form. This is an
- extension of the WKB specification that includes SRID value that are
- a part of this geometry.
- """
- if self.hasz and not GEOS_PREPARE:
- # See: http://trac.osgeo.org/geos/ticket/216
- raise GEOSException('Upgrade GEOS to 3.1 to get valid 3D HEXEWKB.')
- return ewkb_w(3 if self.hasz else 2).write_hex(self)
-
- @property
- def json(self):
- """
- Returns GeoJSON representation of this Geometry if GDAL is installed.
- """
- if gdal.HAS_GDAL:
- return self.ogr.json
- else:
- raise GEOSException('GeoJSON output only supported when GDAL is installed.')
- geojson = json
-
- @property
- def wkb(self):
- """
- Returns the WKB (Well-Known Binary) representation of this Geometry
- as a Python buffer. SRID and Z values are not included, use the
- `ewkb` property instead.
- """
- return wkb_w(3 if self.hasz else 2).write(self)
-
- @property
- def ewkb(self):
- """
- Return the EWKB representation of this Geometry as a Python buffer.
- This is an extension of the WKB specification that includes any SRID
- value that are a part of this geometry.
- """
- if self.hasz and not GEOS_PREPARE:
- # See: http://trac.osgeo.org/geos/ticket/216
- raise GEOSException('Upgrade GEOS to 3.1 to get valid 3D EWKB.')
- return ewkb_w(3 if self.hasz else 2).write(self)
-
- @property
- def kml(self):
- "Returns the KML representation of this Geometry."
- gtype = self.geom_type
- return '<%s>%s</%s>' % (gtype, self.coord_seq.kml, gtype)
-
- @property
- def prepared(self):
- """
- Returns a PreparedGeometry corresponding to this geometry -- it is
- optimized for the contains, intersects, and covers operations.
- """
- if GEOS_PREPARE:
- return PreparedGeometry(self)
- else:
- raise GEOSException('GEOS 3.1+ required for prepared geometry support.')
-
- #### GDAL-specific output routines ####
- @property
- def ogr(self):
- "Returns the OGR Geometry for this Geometry."
- if not gdal.HAS_GDAL:
- raise GEOSException('GDAL required to convert to an OGRGeometry.')
- if self.srid:
- try:
- return gdal.OGRGeometry(self.wkb, self.srid)
- except SRSException:
- pass
- return gdal.OGRGeometry(self.wkb)
-
- @property
- def srs(self):
- "Returns the OSR SpatialReference for SRID of this Geometry."
- if not gdal.HAS_GDAL:
- raise GEOSException('GDAL required to return a SpatialReference object.')
- if self.srid:
- try:
- return gdal.SpatialReference(self.srid)
- except SRSException:
- pass
- return None
-
- @property
- def crs(self):
- "Alias for `srs` property."
- return self.srs
-
- def transform(self, ct, clone=False):
- """
- Requires GDAL. Transforms the geometry according to the given
- transformation object, which may be an integer SRID, and WKT or
- PROJ.4 string. By default, the geometry is transformed in-place and
- nothing is returned. However if the `clone` keyword is set, then this
- geometry will not be modified and a transformed clone will be returned
- instead.
- """
- srid = self.srid
-
- if ct == srid:
- # short-circuit where source & dest SRIDs match
- if clone:
- return self.clone()
- else:
- return
-
- if (srid is None) or (srid < 0):
- raise GEOSException("Calling transform() with no SRID set is not supported")
-
- if not gdal.HAS_GDAL:
- raise GEOSException("GDAL library is not available to transform() geometry.")
-
- # Creating an OGR Geometry, which is then transformed.
- g = self.ogr
- g.transform(ct)
- # Getting a new GEOS pointer
- ptr = wkb_r().read(g.wkb)
- if clone:
- # User wants a cloned transformed geometry returned.
- return GEOSGeometry(ptr, srid=g.srid)
- if ptr:
- # Reassigning pointer, and performing post-initialization setup
- # again due to the reassignment.
- capi.destroy_geom(self.ptr)
- self.ptr = ptr
- self._post_init(g.srid)
- else:
- raise GEOSException('Transformed WKB was invalid.')
-
- #### Topology Routines ####
- def _topology(self, gptr):
- "Helper routine to return Geometry from the given pointer."
- return GEOSGeometry(gptr, srid=self.srid)
-
- @property
- def boundary(self):
- "Returns the boundary as a newly allocated Geometry object."
- return self._topology(capi.geos_boundary(self.ptr))
-
- def buffer(self, width, quadsegs=8):
- """
- Returns a geometry that represents all points whose distance from this
- Geometry is less than or equal to distance. Calculations are in the
- Spatial Reference System of this Geometry. The optional third parameter sets
- the number of segment used to approximate a quarter circle (defaults to 8).
- (Text from PostGIS documentation at ch. 6.1.3)
- """
- return self._topology(capi.geos_buffer(self.ptr, width, quadsegs))
-
- @property
- def centroid(self):
- """
- The centroid is equal to the centroid of the set of component Geometries
- of highest dimension (since the lower-dimension geometries contribute zero
- "weight" to the centroid).
- """
- return self._topology(capi.geos_centroid(self.ptr))
-
- @property
- def convex_hull(self):
- """
- Returns the smallest convex Polygon that contains all the points
- in the Geometry.
- """
- return self._topology(capi.geos_convexhull(self.ptr))
-
- def difference(self, other):
- """
- Returns a Geometry representing the points making up this Geometry
- that do not make up other.
- """
- return self._topology(capi.geos_difference(self.ptr, other.ptr))
-
- @property
- def envelope(self):
- "Return the envelope for this geometry (a polygon)."
- return self._topology(capi.geos_envelope(self.ptr))
-
- def interpolate(self, distance):
- if not isinstance(self, (LineString, MultiLineString)):
- raise TypeError('interpolate only works on LineString and MultiLineString geometries')
- if not hasattr(capi, 'geos_interpolate'):
- raise NotImplementedError('interpolate requires GEOS 3.2+')
- return self._topology(capi.geos_interpolate(self.ptr, distance))
-
- def interpolate_normalized(self, distance):
- if not isinstance(self, (LineString, MultiLineString)):
- raise TypeError('interpolate only works on LineString and MultiLineString geometries')
- if not hasattr(capi, 'geos_interpolate_normalized'):
- raise NotImplementedError('interpolate_normalized requires GEOS 3.2+')
- return self._topology(capi.geos_interpolate_normalized(self.ptr, distance))
-
- def intersection(self, other):
- "Returns a Geometry representing the points shared by this Geometry and other."
- return self._topology(capi.geos_intersection(self.ptr, other.ptr))
-
- @property
- def point_on_surface(self):
- "Computes an interior point of this Geometry."
- return self._topology(capi.geos_pointonsurface(self.ptr))
-
- def project(self, point):
- if not isinstance(point, Point):
- raise TypeError('locate_point argument must be a Point')
- if not isinstance(self, (LineString, MultiLineString)):
- raise TypeError('locate_point only works on LineString and MultiLineString geometries')
- if not hasattr(capi, 'geos_project'):
- raise NotImplementedError('geos_project requires GEOS 3.2+')
- return capi.geos_project(self.ptr, point.ptr)
-
- def project_normalized(self, point):
- if not isinstance(point, Point):
- raise TypeError('locate_point argument must be a Point')
- if not isinstance(self, (LineString, MultiLineString)):
- raise TypeError('locate_point only works on LineString and MultiLineString geometries')
- if not hasattr(capi, 'geos_project_normalized'):
- raise NotImplementedError('project_normalized requires GEOS 3.2+')
- return capi.geos_project_normalized(self.ptr, point.ptr)
-
- def relate(self, other):
- "Returns the DE-9IM intersection matrix for this Geometry and the other."
- return capi.geos_relate(self.ptr, other.ptr).decode()
-
- def simplify(self, tolerance=0.0, preserve_topology=False):
- """
- Returns the Geometry, simplified using the Douglas-Peucker algorithm
- to the specified tolerance (higher tolerance => less points). If no
- tolerance provided, defaults to 0.
-
- By default, this function does not preserve topology - e.g. polygons can
- be split, collapse to lines or disappear holes can be created or
- disappear, and lines can cross. By specifying preserve_topology=True,
- the result will have the same dimension and number of components as the
- input. This is significantly slower.
- """
- if preserve_topology:
- return self._topology(capi.geos_preservesimplify(self.ptr, tolerance))
- else:
- return self._topology(capi.geos_simplify(self.ptr, tolerance))
-
- def sym_difference(self, other):
- """
- Returns a set combining the points in this Geometry not in other,
- and the points in other not in this Geometry.
- """
- return self._topology(capi.geos_symdifference(self.ptr, other.ptr))
-
- def union(self, other):
- "Returns a Geometry representing all the points in this Geometry and other."
- return self._topology(capi.geos_union(self.ptr, other.ptr))
-
- #### Other Routines ####
- @property
- def area(self):
- "Returns the area of the Geometry."
- return capi.geos_area(self.ptr, byref(c_double()))
-
- def distance(self, other):
- """
- Returns the distance between the closest points on this Geometry
- and the other. Units will be in those of the coordinate system of
- the Geometry.
- """
- if not isinstance(other, GEOSGeometry):
- raise TypeError('distance() works only on other GEOS Geometries.')
- return capi.geos_distance(self.ptr, other.ptr, byref(c_double()))
-
- @property
- def extent(self):
- """
- Returns the extent of this geometry as a 4-tuple, consisting of
- (xmin, ymin, xmax, ymax).
- """
- env = self.envelope
- if isinstance(env, Point):
- xmin, ymin = env.tuple
- xmax, ymax = xmin, ymin
- else:
- xmin, ymin = env[0][0]
- xmax, ymax = env[0][2]
- return (xmin, ymin, xmax, ymax)
-
- @property
- def length(self):
- """
- Returns the length of this Geometry (e.g., 0 for point, or the
- circumfrence of a Polygon).
- """
- return capi.geos_length(self.ptr, byref(c_double()))
-
- def clone(self):
- "Clones this Geometry."
- return GEOSGeometry(capi.geom_clone(self.ptr), srid=self.srid)
-
-# Class mapping dictionary. Has to be at the end to avoid import
-# conflicts with GEOSGeometry.
-from django.contrib.gis.geos.linestring import LineString, LinearRing
-from django.contrib.gis.geos.point import Point
-from django.contrib.gis.geos.polygon import Polygon
-from django.contrib.gis.geos.collections import GeometryCollection, MultiPoint, MultiLineString, MultiPolygon
-GEOS_CLASSES = {0 : Point,
- 1 : LineString,
- 2 : LinearRing,
- 3 : Polygon,
- 4 : MultiPoint,
- 5 : MultiLineString,
- 6 : MultiPolygon,
- 7 : GeometryCollection,
- }
-
-# If supported, import the PreparedGeometry class.
-if GEOS_PREPARE:
- from django.contrib.gis.geos.prepared import PreparedGeometry
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/io.py b/lib/python2.7/site-packages/django/contrib/gis/geos/io.py
deleted file mode 100644
index 54ba6b4..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/io.py
+++ /dev/null
@@ -1,20 +0,0 @@
-"""
-Module that holds classes for performing I/O operations on GEOS geometry
-objects. Specifically, this has Python implementations of WKB/WKT
-reader and writer classes.
-"""
-from django.contrib.gis.geos.geometry import GEOSGeometry
-from django.contrib.gis.geos.prototypes.io import _WKTReader, _WKBReader, WKBWriter, WKTWriter
-
-# Public classes for (WKB|WKT)Reader, which return GEOSGeometry
-class WKBReader(_WKBReader):
- def read(self, wkb):
- "Returns a GEOSGeometry for the given WKB buffer."
- return GEOSGeometry(super(WKBReader, self).read(wkb))
-
-class WKTReader(_WKTReader):
- def read(self, wkt):
- "Returns a GEOSGeometry for the given WKT string."
- return GEOSGeometry(super(WKTReader, self).read(wkt))
-
-
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/libgeos.py b/lib/python2.7/site-packages/django/contrib/gis/geos/libgeos.py
deleted file mode 100644
index 6963b78..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/libgeos.py
+++ /dev/null
@@ -1,155 +0,0 @@
-"""
- This module houses the ctypes initialization procedures, as well
- as the notice and error handler function callbacks (get called
- when an error occurs in GEOS).
-
- This module also houses GEOS Pointer utilities, including
- get_pointer_arr(), and GEOM_PTR.
-"""
-import logging
-import os
-import re
-from ctypes import c_char_p, Structure, CDLL, CFUNCTYPE, POINTER
-from ctypes.util import find_library
-
-from django.contrib.gis.geos.error import GEOSException
-from django.core.exceptions import ImproperlyConfigured
-
-logger = logging.getLogger('django.contrib.gis')
-
-# Custom library path set?
-try:
- from django.conf import settings
- lib_path = settings.GEOS_LIBRARY_PATH
-except (AttributeError, EnvironmentError,
- ImportError, ImproperlyConfigured):
- lib_path = None
-
-# Setting the appropriate names for the GEOS-C library.
-if lib_path:
- lib_names = None
-elif os.name == 'nt':
- # Windows NT libraries
- lib_names = ['geos_c', 'libgeos_c-1']
-elif os.name == 'posix':
- # *NIX libraries
- lib_names = ['geos_c', 'GEOS']
-else:
- raise ImportError('Unsupported OS "%s"' % os.name)
-
-# Using the ctypes `find_library` utility to find the path to the GEOS
-# shared library. This is better than manually specifiying each library name
-# and extension (e.g., libgeos_c.[so|so.1|dylib].).
-if lib_names:
- for lib_name in lib_names:
- lib_path = find_library(lib_name)
- if not lib_path is None: break
-
-# No GEOS library could be found.
-if lib_path is None:
- raise ImportError('Could not find the GEOS library (tried "%s"). '
- 'Try setting GEOS_LIBRARY_PATH in your settings.' %
- '", "'.join(lib_names))
-
-# Getting the GEOS C library. The C interface (CDLL) is used for
-# both *NIX and Windows.
-# See the GEOS C API source code for more details on the library function calls:
-# http://geos.refractions.net/ro/doxygen_docs/html/geos__c_8h-source.html
-lgeos = CDLL(lib_path)
-
-# The notice and error handler C function callback definitions.
-# Supposed to mimic the GEOS message handler (C below):
-# typedef void (*GEOSMessageHandler)(const char *fmt, ...);
-NOTICEFUNC = CFUNCTYPE(None, c_char_p, c_char_p)
-def notice_h(fmt, lst):
- fmt, lst = fmt.decode(), lst.decode()
- try:
- warn_msg = fmt % lst
- except:
- warn_msg = fmt
- logger.warning('GEOS_NOTICE: %s\n' % warn_msg)
-notice_h = NOTICEFUNC(notice_h)
-
-ERRORFUNC = CFUNCTYPE(None, c_char_p, c_char_p)
-def error_h(fmt, lst):
- fmt, lst = fmt.decode(), lst.decode()
- try:
- err_msg = fmt % lst
- except:
- err_msg = fmt
- logger.error('GEOS_ERROR: %s\n' % err_msg)
-error_h = ERRORFUNC(error_h)
-
-#### GEOS Geometry C data structures, and utility functions. ####
-
-# Opaque GEOS geometry structures, used for GEOM_PTR and CS_PTR
-class GEOSGeom_t(Structure): pass
-class GEOSPrepGeom_t(Structure): pass
-class GEOSCoordSeq_t(Structure): pass
-class GEOSContextHandle_t(Structure): pass
-
-# Pointers to opaque GEOS geometry structures.
-GEOM_PTR = POINTER(GEOSGeom_t)
-PREPGEOM_PTR = POINTER(GEOSPrepGeom_t)
-CS_PTR = POINTER(GEOSCoordSeq_t)
-CONTEXT_PTR = POINTER(GEOSContextHandle_t)
-
-# Used specifically by the GEOSGeom_createPolygon and GEOSGeom_createCollection
-# GEOS routines
-def get_pointer_arr(n):
- "Gets a ctypes pointer array (of length `n`) for GEOSGeom_t opaque pointer."
- GeomArr = GEOM_PTR * n
- return GeomArr()
-
-# Returns the string version of the GEOS library. Have to set the restype
-# explicitly to c_char_p to ensure compatibility accross 32 and 64-bit platforms.
-geos_version = lgeos.GEOSversion
-geos_version.argtypes = None
-geos_version.restype = c_char_p
-
-# Regular expression should be able to parse version strings such as
-# '3.0.0rc4-CAPI-1.3.3', '3.0.0-CAPI-1.4.1', '3.4.0dev-CAPI-1.8.0' or '3.4.0dev-CAPI-1.8.0 r0'
-version_regex = re.compile(
- r'^(?P<version>(?P<major>\d+)\.(?P<minor>\d+)\.(?P<subminor>\d+))'
- r'((rc(?P<release_candidate>\d+))|dev)?-CAPI-(?P<capi_version>\d+\.\d+\.\d+)( r\d+)?$'
-)
-def geos_version_info():
- """
- Returns a dictionary containing the various version metadata parsed from
- the GEOS version string, including the version number, whether the version
- is a release candidate (and what number release candidate), and the C API
- version.
- """
- ver = geos_version().decode()
- m = version_regex.match(ver)
- if not m:
- raise GEOSException('Could not parse version info string "%s"' % ver)
- return dict((key, m.group(key)) for key in (
- 'version', 'release_candidate', 'capi_version', 'major', 'minor', 'subminor'))
-
-# Version numbers and whether or not prepared geometry support is available.
-_verinfo = geos_version_info()
-GEOS_MAJOR_VERSION = int(_verinfo['major'])
-GEOS_MINOR_VERSION = int(_verinfo['minor'])
-GEOS_SUBMINOR_VERSION = int(_verinfo['subminor'])
-del _verinfo
-GEOS_VERSION = (GEOS_MAJOR_VERSION, GEOS_MINOR_VERSION, GEOS_SUBMINOR_VERSION)
-GEOS_PREPARE = GEOS_VERSION >= (3, 1, 0)
-
-if GEOS_PREPARE:
- # Here we set up the prototypes for the initGEOS_r and finishGEOS_r
- # routines. These functions aren't actually called until they are
- # attached to a GEOS context handle -- this actually occurs in
- # geos/prototypes/threadsafe.py.
- lgeos.initGEOS_r.restype = CONTEXT_PTR
- lgeos.finishGEOS_r.argtypes = [CONTEXT_PTR]
-else:
- # When thread-safety isn't available, the initGEOS routine must be called
- # first. This function takes the notice and error functions, defined
- # as Python callbacks above, as parameters. Here is the C code that is
- # wrapped:
- # extern void GEOS_DLL initGEOS(GEOSMessageHandler notice_function, GEOSMessageHandler error_function);
- lgeos.initGEOS(notice_h, error_h)
- # Calling finishGEOS() upon exit of the interpreter.
- import atexit
- atexit.register(lgeos.finishGEOS)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/linestring.py b/lib/python2.7/site-packages/django/contrib/gis/geos/linestring.py
deleted file mode 100644
index 4784ea7..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/linestring.py
+++ /dev/null
@@ -1,153 +0,0 @@
-from django.contrib.gis.geos.base import numpy
-from django.contrib.gis.geos.coordseq import GEOSCoordSeq
-from django.contrib.gis.geos.error import GEOSException
-from django.contrib.gis.geos.geometry import GEOSGeometry
-from django.contrib.gis.geos.point import Point
-from django.contrib.gis.geos import prototypes as capi
-from django.utils.six.moves import xrange
-
-class LineString(GEOSGeometry):
- _init_func = capi.create_linestring
- _minlength = 2
-
- #### Python 'magic' routines ####
- def __init__(self, *args, **kwargs):
- """
- Initializes on the given sequence -- may take lists, tuples, NumPy arrays
- of X,Y pairs, or Point objects. If Point objects are used, ownership is
- _not_ transferred to the LineString object.
-
- Examples:
- ls = LineString((1, 1), (2, 2))
- ls = LineString([(1, 1), (2, 2)])
- ls = LineString(array([(1, 1), (2, 2)]))
- ls = LineString(Point(1, 1), Point(2, 2))
- """
- # If only one argument provided, set the coords array appropriately
- if len(args) == 1: coords = args[0]
- else: coords = args
-
- if isinstance(coords, (tuple, list)):
- # Getting the number of coords and the number of dimensions -- which
- # must stay the same, e.g., no LineString((1, 2), (1, 2, 3)).
- ncoords = len(coords)
- if coords: ndim = len(coords[0])
- else: raise TypeError('Cannot initialize on empty sequence.')
- self._checkdim(ndim)
- # Incrementing through each of the coordinates and verifying
- for i in xrange(1, ncoords):
- if not isinstance(coords[i], (tuple, list, Point)):
- raise TypeError('each coordinate should be a sequence (list or tuple)')
- if len(coords[i]) != ndim: raise TypeError('Dimension mismatch.')
- numpy_coords = False
- elif numpy and isinstance(coords, numpy.ndarray):
- shape = coords.shape # Using numpy's shape.
- if len(shape) != 2: raise TypeError('Too many dimensions.')
- self._checkdim(shape[1])
- ncoords = shape[0]
- ndim = shape[1]
- numpy_coords = True
- else:
- raise TypeError('Invalid initialization input for LineStrings.')
-
- # Creating a coordinate sequence object because it is easier to
- # set the points using GEOSCoordSeq.__setitem__().
- cs = GEOSCoordSeq(capi.create_cs(ncoords, ndim), z=bool(ndim==3))
-
- for i in xrange(ncoords):
- if numpy_coords: cs[i] = coords[i,:]
- elif isinstance(coords[i], Point): cs[i] = coords[i].tuple
- else: cs[i] = coords[i]
-
- # If SRID was passed in with the keyword arguments
- srid = kwargs.get('srid', None)
-
- # Calling the base geometry initialization with the returned pointer
- # from the function.
- super(LineString, self).__init__(self._init_func(cs.ptr), srid=srid)
-
- def __iter__(self):
- "Allows iteration over this LineString."
- for i in xrange(len(self)):
- yield self[i]
-
- def __len__(self):
- "Returns the number of points in this LineString."
- return len(self._cs)
-
- def _get_single_external(self, index):
- return self._cs[index]
-
- _get_single_internal = _get_single_external
-
- def _set_list(self, length, items):
- ndim = self._cs.dims #
- hasz = self._cs.hasz # I don't understand why these are different
-
- # create a new coordinate sequence and populate accordingly
- cs = GEOSCoordSeq(capi.create_cs(length, ndim), z=hasz)
- for i, c in enumerate(items):
- cs[i] = c
-
- ptr = self._init_func(cs.ptr)
- if ptr:
- capi.destroy_geom(self.ptr)
- self.ptr = ptr
- self._post_init(self.srid)
- else:
- # can this happen?
- raise GEOSException('Geometry resulting from slice deletion was invalid.')
-
- def _set_single(self, index, value):
- self._checkindex(index)
- self._cs[index] = value
-
- def _checkdim(self, dim):
- if dim not in (2, 3): raise TypeError('Dimension mismatch.')
-
- #### Sequence Properties ####
- @property
- def tuple(self):
- "Returns a tuple version of the geometry from the coordinate sequence."
- return self._cs.tuple
- coords = tuple
-
- def _listarr(self, func):
- """
- Internal routine that returns a sequence (list) corresponding with
- the given function. Will return a numpy array if possible.
- """
- lst = [func(i) for i in xrange(len(self))]
- if numpy: return numpy.array(lst) # ARRRR!
- else: return lst
-
- @property
- def array(self):
- "Returns a numpy array for the LineString."
- return self._listarr(self._cs.__getitem__)
-
- @property
- def merged(self):
- "Returns the line merge of this LineString."
- return self._topology(capi.geos_linemerge(self.ptr))
-
- @property
- def x(self):
- "Returns a list or numpy array of the X variable."
- return self._listarr(self._cs.getX)
-
- @property
- def y(self):
- "Returns a list or numpy array of the Y variable."
- return self._listarr(self._cs.getY)
-
- @property
- def z(self):
- "Returns a list or numpy array of the Z variable."
- if not self.hasz: return None
- else: return self._listarr(self._cs.getZ)
-
-# LinearRings are LineStrings used within Polygons.
-class LinearRing(LineString):
- _minLength = 4
- _init_func = capi.create_linearring
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/mutable_list.py b/lib/python2.7/site-packages/django/contrib/gis/geos/mutable_list.py
deleted file mode 100644
index 0418282..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/mutable_list.py
+++ /dev/null
@@ -1,328 +0,0 @@
-# Copyright (c) 2008-2009 Aryeh Leib Taurog, all rights reserved.
-# Released under the New BSD license.
-"""
-This module contains a base type which provides list-style mutations
-without specific data storage methods.
-
-See also http://www.aryehleib.com/MutableLists.html
-
-Author: Aryeh Leib Taurog.
-"""
-from django.utils.functional import total_ordering
-from django.utils import six
-from django.utils.six.moves import xrange
-
-@total_ordering
-class ListMixin(object):
- """
- A base class which provides complete list interface.
- Derived classes must call ListMixin's __init__() function
- and implement the following:
-
- function _get_single_external(self, i):
- Return single item with index i for general use.
- The index i will always satisfy 0 <= i < len(self).
-
- function _get_single_internal(self, i):
- Same as above, but for use within the class [Optional]
- Note that if _get_single_internal and _get_single_internal return
- different types of objects, _set_list must distinguish
- between the two and handle each appropriately.
-
- function _set_list(self, length, items):
- Recreate the entire object.
-
- NOTE: items may be a generator which calls _get_single_internal.
- Therefore, it is necessary to cache the values in a temporary:
- temp = list(items)
- before clobbering the original storage.
-
- function _set_single(self, i, value):
- Set the single item at index i to value [Optional]
- If left undefined, all mutations will result in rebuilding
- the object using _set_list.
-
- function __len__(self):
- Return the length
-
- int _minlength:
- The minimum legal length [Optional]
-
- int _maxlength:
- The maximum legal length [Optional]
-
- type or tuple _allowed:
- A type or tuple of allowed item types [Optional]
-
- class _IndexError:
- The type of exception to be raise on invalid index [Optional]
- """
-
- _minlength = 0
- _maxlength = None
- _IndexError = IndexError
-
- ### Python initialization and special list interface methods ###
-
- def __init__(self, *args, **kwargs):
- if not hasattr(self, '_get_single_internal'):
- self._get_single_internal = self._get_single_external
-
- if not hasattr(self, '_set_single'):
- self._set_single = self._set_single_rebuild
- self._assign_extended_slice = self._assign_extended_slice_rebuild
-
- super(ListMixin, self).__init__(*args, **kwargs)
-
- def __getitem__(self, index):
- "Get the item(s) at the specified index/slice."
- if isinstance(index, slice):
- return [self._get_single_external(i) for i in xrange(*index.indices(len(self)))]
- else:
- index = self._checkindex(index)
- return self._get_single_external(index)
-
- def __delitem__(self, index):
- "Delete the item(s) at the specified index/slice."
- if not isinstance(index, six.integer_types + (slice,)):
- raise TypeError("%s is not a legal index" % index)
-
- # calculate new length and dimensions
- origLen = len(self)
- if isinstance(index, six.integer_types):
- index = self._checkindex(index)
- indexRange = [index]
- else:
- indexRange = range(*index.indices(origLen))
-
- newLen = origLen - len(indexRange)
- newItems = ( self._get_single_internal(i)
- for i in xrange(origLen)
- if i not in indexRange )
-
- self._rebuild(newLen, newItems)
-
- def __setitem__(self, index, val):
- "Set the item(s) at the specified index/slice."
- if isinstance(index, slice):
- self._set_slice(index, val)
- else:
- index = self._checkindex(index)
- self._check_allowed((val,))
- self._set_single(index, val)
-
- def __iter__(self):
- "Iterate over the items in the list"
- for i in xrange(len(self)):
- yield self[i]
-
- ### Special methods for arithmetic operations ###
- def __add__(self, other):
- 'add another list-like object'
- return self.__class__(list(self) + list(other))
-
- def __radd__(self, other):
- 'add to another list-like object'
- return other.__class__(list(other) + list(self))
-
- def __iadd__(self, other):
- 'add another list-like object to self'
- self.extend(list(other))
- return self
-
- def __mul__(self, n):
- 'multiply'
- return self.__class__(list(self) * n)
-
- def __rmul__(self, n):
- 'multiply'
- return self.__class__(list(self) * n)
-
- def __imul__(self, n):
- 'multiply'
- if n <= 0:
- del self[:]
- else:
- cache = list(self)
- for i in range(n-1):
- self.extend(cache)
- return self
-
- def __eq__(self, other):
- olen = len(other)
- for i in range(olen):
- try:
- c = self[i] == other[i]
- except self._IndexError:
- # self must be shorter
- return False
- if not c:
- return False
- return len(self) == olen
-
- def __lt__(self, other):
- olen = len(other)
- for i in range(olen):
- try:
- c = self[i] < other[i]
- except self._IndexError:
- # self must be shorter
- return True
- if c:
- return c
- elif other[i] < self[i]:
- return False
- return len(self) < olen
-
- ### Public list interface Methods ###
- ## Non-mutating ##
- def count(self, val):
- "Standard list count method"
- count = 0
- for i in self:
- if val == i: count += 1
- return count
-
- def index(self, val):
- "Standard list index method"
- for i in xrange(0, len(self)):
- if self[i] == val: return i
- raise ValueError('%s not found in object' % str(val))
-
- ## Mutating ##
- def append(self, val):
- "Standard list append method"
- self[len(self):] = [val]
-
- def extend(self, vals):
- "Standard list extend method"
- self[len(self):] = vals
-
- def insert(self, index, val):
- "Standard list insert method"
- if not isinstance(index, six.integer_types):
- raise TypeError("%s is not a legal index" % index)
- self[index:index] = [val]
-
- def pop(self, index=-1):
- "Standard list pop method"
- result = self[index]
- del self[index]
- return result
-
- def remove(self, val):
- "Standard list remove method"
- del self[self.index(val)]
-
- def reverse(self):
- "Standard list reverse method"
- self[:] = self[-1::-1]
-
- def sort(self, cmp=None, key=None, reverse=False):
- "Standard list sort method"
- if key:
- temp = [(key(v),v) for v in self]
- temp.sort(key=lambda x: x[0], reverse=reverse)
- self[:] = [v[1] for v in temp]
- else:
- temp = list(self)
- if cmp is not None:
- temp.sort(cmp=cmp, reverse=reverse)
- else:
- temp.sort(reverse=reverse)
- self[:] = temp
-
- ### Private routines ###
- def _rebuild(self, newLen, newItems):
- if newLen < self._minlength:
- raise ValueError('Must have at least %d items' % self._minlength)
- if self._maxlength is not None and newLen > self._maxlength:
- raise ValueError('Cannot have more than %d items' % self._maxlength)
-
- self._set_list(newLen, newItems)
-
- def _set_single_rebuild(self, index, value):
- self._set_slice(slice(index, index + 1, 1), [value])
-
- def _checkindex(self, index, correct=True):
- length = len(self)
- if 0 <= index < length:
- return index
- if correct and -length <= index < 0:
- return index + length
- raise self._IndexError('invalid index: %s' % str(index))
-
- def _check_allowed(self, items):
- if hasattr(self, '_allowed'):
- if False in [isinstance(val, self._allowed) for val in items]:
- raise TypeError('Invalid type encountered in the arguments.')
-
- def _set_slice(self, index, values):
- "Assign values to a slice of the object"
- try:
- iter(values)
- except TypeError:
- raise TypeError('can only assign an iterable to a slice')
-
- self._check_allowed(values)
-
- origLen = len(self)
- valueList = list(values)
- start, stop, step = index.indices(origLen)
-
- # CAREFUL: index.step and step are not the same!
- # step will never be None
- if index.step is None:
- self._assign_simple_slice(start, stop, valueList)
- else:
- self._assign_extended_slice(start, stop, step, valueList)
-
- def _assign_extended_slice_rebuild(self, start, stop, step, valueList):
- 'Assign an extended slice by rebuilding entire list'
- indexList = range(start, stop, step)
- # extended slice, only allow assigning slice of same size
- if len(valueList) != len(indexList):
- raise ValueError('attempt to assign sequence of size %d '
- 'to extended slice of size %d'
- % (len(valueList), len(indexList)))
-
- # we're not changing the length of the sequence
- newLen = len(self)
- newVals = dict(zip(indexList, valueList))
- def newItems():
- for i in xrange(newLen):
- if i in newVals:
- yield newVals[i]
- else:
- yield self._get_single_internal(i)
-
- self._rebuild(newLen, newItems())
-
- def _assign_extended_slice(self, start, stop, step, valueList):
- 'Assign an extended slice by re-assigning individual items'
- indexList = range(start, stop, step)
- # extended slice, only allow assigning slice of same size
- if len(valueList) != len(indexList):
- raise ValueError('attempt to assign sequence of size %d '
- 'to extended slice of size %d'
- % (len(valueList), len(indexList)))
-
- for i, val in zip(indexList, valueList):
- self._set_single(i, val)
-
- def _assign_simple_slice(self, start, stop, valueList):
- 'Assign a simple slice; Can assign slice of any length'
- origLen = len(self)
- stop = max(start, stop)
- newLen = origLen - stop + start + len(valueList)
- def newItems():
- for i in xrange(origLen + 1):
- if i == start:
- for val in valueList:
- yield val
-
- if i < origLen:
- if i < start or i >= stop:
- yield self._get_single_internal(i)
-
- self._rebuild(newLen, newItems())
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/point.py b/lib/python2.7/site-packages/django/contrib/gis/geos/point.py
deleted file mode 100644
index 907347d..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/point.py
+++ /dev/null
@@ -1,137 +0,0 @@
-from ctypes import c_uint
-from django.contrib.gis.geos.error import GEOSException
-from django.contrib.gis.geos.geometry import GEOSGeometry
-from django.contrib.gis.geos import prototypes as capi
-from django.utils import six
-from django.utils.six.moves import xrange
-
-class Point(GEOSGeometry):
- _minlength = 2
- _maxlength = 3
-
- def __init__(self, x, y=None, z=None, srid=None):
- """
- The Point object may be initialized with either a tuple, or individual
- parameters.
-
- For Example:
- >>> p = Point((5, 23)) # 2D point, passed in as a tuple
- >>> p = Point(5, 23, 8) # 3D point, passed in with individual parameters
- """
- if isinstance(x, (tuple, list)):
- # Here a tuple or list was passed in under the `x` parameter.
- ndim = len(x)
- coords = x
- elif isinstance(x, six.integer_types + (float,)) and isinstance(y, six.integer_types + (float,)):
- # Here X, Y, and (optionally) Z were passed in individually, as parameters.
- if isinstance(z, six.integer_types + (float,)):
- ndim = 3
- coords = [x, y, z]
- else:
- ndim = 2
- coords = [x, y]
- else:
- raise TypeError('Invalid parameters given for Point initialization.')
-
- point = self._create_point(ndim, coords)
-
- # Initializing using the address returned from the GEOS
- # createPoint factory.
- super(Point, self).__init__(point, srid=srid)
-
- def _create_point(self, ndim, coords):
- """
- Create a coordinate sequence, set X, Y, [Z], and create point
- """
- if ndim < 2 or ndim > 3:
- raise TypeError('Invalid point dimension: %s' % str(ndim))
-
- cs = capi.create_cs(c_uint(1), c_uint(ndim))
- i = iter(coords)
- capi.cs_setx(cs, 0, next(i))
- capi.cs_sety(cs, 0, next(i))
- if ndim == 3: capi.cs_setz(cs, 0, next(i))
-
- return capi.create_point(cs)
-
- def _set_list(self, length, items):
- ptr = self._create_point(length, items)
- if ptr:
- capi.destroy_geom(self.ptr)
- self._ptr = ptr
- self._set_cs()
- else:
- # can this happen?
- raise GEOSException('Geometry resulting from slice deletion was invalid.')
-
- def _set_single(self, index, value):
- self._cs.setOrdinate(index, 0, value)
-
- def __iter__(self):
- "Allows iteration over coordinates of this Point."
- for i in xrange(len(self)):
- yield self[i]
-
- def __len__(self):
- "Returns the number of dimensions for this Point (either 0, 2 or 3)."
- if self.empty: return 0
- if self.hasz: return 3
- else: return 2
-
- def _get_single_external(self, index):
- if index == 0:
- return self.x
- elif index == 1:
- return self.y
- elif index == 2:
- return self.z
-
- _get_single_internal = _get_single_external
-
- def get_x(self):
- "Returns the X component of the Point."
- return self._cs.getOrdinate(0, 0)
-
- def set_x(self, value):
- "Sets the X component of the Point."
- self._cs.setOrdinate(0, 0, value)
-
- def get_y(self):
- "Returns the Y component of the Point."
- return self._cs.getOrdinate(1, 0)
-
- def set_y(self, value):
- "Sets the Y component of the Point."
- self._cs.setOrdinate(1, 0, value)
-
- def get_z(self):
- "Returns the Z component of the Point."
- if self.hasz:
- return self._cs.getOrdinate(2, 0)
- else:
- return None
-
- def set_z(self, value):
- "Sets the Z component of the Point."
- if self.hasz:
- self._cs.setOrdinate(2, 0, value)
- else:
- raise GEOSException('Cannot set Z on 2D Point.')
-
- # X, Y, Z properties
- x = property(get_x, set_x)
- y = property(get_y, set_y)
- z = property(get_z, set_z)
-
- ### Tuple setting and retrieval routines. ###
- def get_coords(self):
- "Returns a tuple of the point."
- return self._cs.tuple
-
- def set_coords(self, tup):
- "Sets the coordinates of the point with the given tuple."
- self._cs[0] = tup
-
- # The tuple and coords properties
- tuple = property(get_coords, set_coords)
- coords = tuple
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/polygon.py b/lib/python2.7/site-packages/django/contrib/gis/geos/polygon.py
deleted file mode 100644
index c50f549..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/polygon.py
+++ /dev/null
@@ -1,170 +0,0 @@
-from ctypes import c_uint, byref
-from django.contrib.gis.geos.geometry import GEOSGeometry
-from django.contrib.gis.geos.libgeos import get_pointer_arr, GEOM_PTR
-from django.contrib.gis.geos.linestring import LinearRing
-from django.contrib.gis.geos import prototypes as capi
-from django.utils import six
-from django.utils.six.moves import xrange
-
-class Polygon(GEOSGeometry):
- _minlength = 1
-
- def __init__(self, *args, **kwargs):
- """
- Initializes on an exterior ring and a sequence of holes (both
- instances may be either LinearRing instances, or a tuple/list
- that may be constructed into a LinearRing).
-
- Examples of initialization, where shell, hole1, and hole2 are
- valid LinearRing geometries:
- >>> poly = Polygon(shell, hole1, hole2)
- >>> poly = Polygon(shell, (hole1, hole2))
-
- Example where a tuple parameters are used:
- >>> poly = Polygon(((0, 0), (0, 10), (10, 10), (0, 10), (0, 0)),
- ((4, 4), (4, 6), (6, 6), (6, 4), (4, 4)))
- """
- if not args:
- raise TypeError('Must provide at least one LinearRing, or a tuple, to initialize a Polygon.')
-
- # Getting the ext_ring and init_holes parameters from the argument list
- ext_ring = args[0]
- init_holes = args[1:]
- n_holes = len(init_holes)
-
- # If initialized as Polygon(shell, (LinearRing, LinearRing)) [for backward-compatibility]
- if n_holes == 1 and isinstance(init_holes[0], (tuple, list)):
- if len(init_holes[0]) == 0:
- init_holes = ()
- n_holes = 0
- elif isinstance(init_holes[0][0], LinearRing):
- init_holes = init_holes[0]
- n_holes = len(init_holes)
-
- polygon = self._create_polygon(n_holes + 1, (ext_ring,) + init_holes)
- super(Polygon, self).__init__(polygon, **kwargs)
-
- def __iter__(self):
- "Iterates over each ring in the polygon."
- for i in xrange(len(self)):
- yield self[i]
-
- def __len__(self):
- "Returns the number of rings in this Polygon."
- return self.num_interior_rings + 1
-
- @classmethod
- def from_bbox(cls, bbox):
- "Constructs a Polygon from a bounding box (4-tuple)."
- x0, y0, x1, y1 = bbox
- for z in bbox:
- if not isinstance(z, six.integer_types + (float,)):
- return GEOSGeometry('POLYGON((%s %s, %s %s, %s %s, %s %s, %s %s))' %
- (x0, y0, x0, y1, x1, y1, x1, y0, x0, y0))
- return Polygon(((x0, y0), (x0, y1), (x1, y1), (x1, y0), (x0, y0)))
-
- ### These routines are needed for list-like operation w/ListMixin ###
- def _create_polygon(self, length, items):
- # Instantiate LinearRing objects if necessary, but don't clone them yet
- # _construct_ring will throw a TypeError if a parameter isn't a valid ring
- # If we cloned the pointers here, we wouldn't be able to clean up
- # in case of error.
- rings = []
- for r in items:
- if isinstance(r, GEOM_PTR):
- rings.append(r)
- else:
- rings.append(self._construct_ring(r))
-
- shell = self._clone(rings.pop(0))
-
- n_holes = length - 1
- if n_holes:
- holes = get_pointer_arr(n_holes)
- for i, r in enumerate(rings):
- holes[i] = self._clone(r)
- holes_param = byref(holes)
- else:
- holes_param = None
-
- return capi.create_polygon(shell, holes_param, c_uint(n_holes))
-
- def _clone(self, g):
- if isinstance(g, GEOM_PTR):
- return capi.geom_clone(g)
- else:
- return capi.geom_clone(g.ptr)
-
- def _construct_ring(self, param, msg='Parameter must be a sequence of LinearRings or objects that can initialize to LinearRings'):
- "Helper routine for trying to construct a ring from the given parameter."
- if isinstance(param, LinearRing): return param
- try:
- ring = LinearRing(param)
- return ring
- except TypeError:
- raise TypeError(msg)
-
- def _set_list(self, length, items):
- # Getting the current pointer, replacing with the newly constructed
- # geometry, and destroying the old geometry.
- prev_ptr = self.ptr
- srid = self.srid
- self.ptr = self._create_polygon(length, items)
- if srid: self.srid = srid
- capi.destroy_geom(prev_ptr)
-
- def _get_single_internal(self, index):
- """
- Returns the ring at the specified index. The first index, 0, will
- always return the exterior ring. Indices > 0 will return the
- interior ring at the given index (e.g., poly[1] and poly[2] would
- return the first and second interior ring, respectively).
-
- CAREFUL: Internal/External are not the same as Interior/Exterior!
- _get_single_internal returns a pointer from the existing geometries for use
- internally by the object's methods. _get_single_external returns a clone
- of the same geometry for use by external code.
- """
- if index == 0:
- return capi.get_extring(self.ptr)
- else:
- # Getting the interior ring, have to subtract 1 from the index.
- return capi.get_intring(self.ptr, index-1)
-
- def _get_single_external(self, index):
- return GEOSGeometry(capi.geom_clone(self._get_single_internal(index)), srid=self.srid)
-
- _set_single = GEOSGeometry._set_single_rebuild
- _assign_extended_slice = GEOSGeometry._assign_extended_slice_rebuild
-
- #### Polygon Properties ####
- @property
- def num_interior_rings(self):
- "Returns the number of interior rings."
- # Getting the number of rings
- return capi.get_nrings(self.ptr)
-
- def _get_ext_ring(self):
- "Gets the exterior ring of the Polygon."
- return self[0]
-
- def _set_ext_ring(self, ring):
- "Sets the exterior ring of the Polygon."
- self[0] = ring
-
- # Properties for the exterior ring/shell.
- exterior_ring = property(_get_ext_ring, _set_ext_ring)
- shell = exterior_ring
-
- @property
- def tuple(self):
- "Gets the tuple for each ring in this Polygon."
- return tuple([self[i].tuple for i in xrange(len(self))])
- coords = tuple
-
- @property
- def kml(self):
- "Returns the KML representation of this Polygon."
- inner_kml = ''.join(["<innerBoundaryIs>%s</innerBoundaryIs>" % self[i+1].kml
- for i in xrange(self.num_interior_rings)])
- return "<Polygon><outerBoundaryIs>%s</outerBoundaryIs>%s</Polygon>" % (self[0].kml, inner_kml)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/prepared.py b/lib/python2.7/site-packages/django/contrib/gis/geos/prepared.py
deleted file mode 100644
index ae2548f..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/prepared.py
+++ /dev/null
@@ -1,35 +0,0 @@
-from django.contrib.gis.geos.base import GEOSBase
-from django.contrib.gis.geos.geometry import GEOSGeometry
-from django.contrib.gis.geos.prototypes import prepared as capi
-
-class PreparedGeometry(GEOSBase):
- """
- A geometry that is prepared for performing certain operations.
- At the moment this includes the contains covers, and intersects
- operations.
- """
- ptr_type = capi.PREPGEOM_PTR
-
- def __init__(self, geom):
- # Keeping a reference to the original geometry object to prevent it
- # from being garbage collected which could then crash the prepared one
- # See #21662
- self._base_geom = geom
- if not isinstance(geom, GEOSGeometry):
- raise TypeError
- self.ptr = capi.geos_prepare(geom.ptr)
-
- def __del__(self):
- if self._ptr: capi.prepared_destroy(self._ptr)
-
- def contains(self, other):
- return capi.prepared_contains(self.ptr, other.ptr)
-
- def contains_properly(self, other):
- return capi.prepared_contains_properly(self.ptr, other.ptr)
-
- def covers(self, other):
- return capi.prepared_covers(self.ptr, other.ptr)
-
- def intersects(self, other):
- return capi.prepared_intersects(self.ptr, other.ptr)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/__init__.py
deleted file mode 100644
index 89b96c0..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/__init__.py
+++ /dev/null
@@ -1,30 +0,0 @@
-"""
- This module contains all of the GEOS ctypes function prototypes. Each
- prototype handles the interaction between the GEOS library and Python
- via ctypes.
-"""
-
-# Coordinate sequence routines.
-from django.contrib.gis.geos.prototypes.coordseq import (create_cs, get_cs,
- cs_clone, cs_getordinate, cs_setordinate, cs_getx, cs_gety, cs_getz,
- cs_setx, cs_sety, cs_setz, cs_getsize, cs_getdims)
-
-# Geometry routines.
-from django.contrib.gis.geos.prototypes.geom import (from_hex, from_wkb, from_wkt,
- create_point, create_linestring, create_linearring, create_polygon, create_collection,
- destroy_geom, get_extring, get_intring, get_nrings, get_geomn, geom_clone,
- geos_normalize, geos_type, geos_typeid, geos_get_srid, geos_set_srid,
- get_dims, get_num_coords, get_num_geoms,
- to_hex, to_wkb, to_wkt)
-
-# Miscellaneous routines.
-from django.contrib.gis.geos.prototypes.misc import *
-
-# Predicates
-from django.contrib.gis.geos.prototypes.predicates import (geos_hasz, geos_isempty,
- geos_isring, geos_issimple, geos_isvalid, geos_contains, geos_crosses,
- geos_disjoint, geos_equals, geos_equalsexact, geos_intersects,
- geos_intersects, geos_overlaps, geos_relatepattern, geos_touches, geos_within)
-
-# Topology routines
-from django.contrib.gis.geos.prototypes.topology import *
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/coordseq.py b/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/coordseq.py
deleted file mode 100644
index 68b9480..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/coordseq.py
+++ /dev/null
@@ -1,83 +0,0 @@
-from ctypes import c_double, c_int, c_uint, POINTER
-from django.contrib.gis.geos.libgeos import GEOM_PTR, CS_PTR
-from django.contrib.gis.geos.prototypes.errcheck import last_arg_byref, GEOSException
-from django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc
-
-## Error-checking routines specific to coordinate sequences. ##
-def check_cs_ptr(result, func, cargs):
- "Error checking on routines that return Geometries."
- if not result:
- raise GEOSException('Error encountered checking Coordinate Sequence returned from GEOS C function "%s".' % func.__name__)
- return result
-
-def check_cs_op(result, func, cargs):
- "Checks the status code of a coordinate sequence operation."
- if result == 0:
- raise GEOSException('Could not set value on coordinate sequence')
- else:
- return result
-
-def check_cs_get(result, func, cargs):
- "Checking the coordinate sequence retrieval."
- check_cs_op(result, func, cargs)
- # Object in by reference, return its value.
- return last_arg_byref(cargs)
-
-## Coordinate sequence prototype generation functions. ##
-def cs_int(func):
- "For coordinate sequence routines that return an integer."
- func.argtypes = [CS_PTR, POINTER(c_uint)]
- func.restype = c_int
- func.errcheck = check_cs_get
- return func
-
-def cs_operation(func, ordinate=False, get=False):
- "For coordinate sequence operations."
- if get:
- # Get routines get double parameter passed-in by reference.
- func.errcheck = check_cs_get
- dbl_param = POINTER(c_double)
- else:
- func.errcheck = check_cs_op
- dbl_param = c_double
-
- if ordinate:
- # Get/Set ordinate routines have an extra uint parameter.
- func.argtypes = [CS_PTR, c_uint, c_uint, dbl_param]
- else:
- func.argtypes = [CS_PTR, c_uint, dbl_param]
-
- func.restype = c_int
- return func
-
-def cs_output(func, argtypes):
- "For routines that return a coordinate sequence."
- func.argtypes = argtypes
- func.restype = CS_PTR
- func.errcheck = check_cs_ptr
- return func
-
-## Coordinate Sequence ctypes prototypes ##
-
-# Coordinate Sequence constructors & cloning.
-cs_clone = cs_output(GEOSFunc('GEOSCoordSeq_clone'), [CS_PTR])
-create_cs = cs_output(GEOSFunc('GEOSCoordSeq_create'), [c_uint, c_uint])
-get_cs = cs_output(GEOSFunc('GEOSGeom_getCoordSeq'), [GEOM_PTR])
-
-# Getting, setting ordinate
-cs_getordinate = cs_operation(GEOSFunc('GEOSCoordSeq_getOrdinate'), ordinate=True, get=True)
-cs_setordinate = cs_operation(GEOSFunc('GEOSCoordSeq_setOrdinate'), ordinate=True)
-
-# For getting, x, y, z
-cs_getx = cs_operation(GEOSFunc('GEOSCoordSeq_getX'), get=True)
-cs_gety = cs_operation(GEOSFunc('GEOSCoordSeq_getY'), get=True)
-cs_getz = cs_operation(GEOSFunc('GEOSCoordSeq_getZ'), get=True)
-
-# For setting, x, y, z
-cs_setx = cs_operation(GEOSFunc('GEOSCoordSeq_setX'))
-cs_sety = cs_operation(GEOSFunc('GEOSCoordSeq_setY'))
-cs_setz = cs_operation(GEOSFunc('GEOSCoordSeq_setZ'))
-
-# These routines return size & dimensions.
-cs_getsize = cs_int(GEOSFunc('GEOSCoordSeq_getSize'))
-cs_getdims = cs_int(GEOSFunc('GEOSCoordSeq_getDimensions'))
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/errcheck.py b/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/errcheck.py
deleted file mode 100644
index 97fcd21..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/errcheck.py
+++ /dev/null
@@ -1,95 +0,0 @@
-"""
- Error checking functions for GEOS ctypes prototype functions.
-"""
-import os
-from ctypes import c_void_p, string_at, CDLL
-from django.contrib.gis.geos.error import GEOSException
-from django.contrib.gis.geos.libgeos import GEOS_VERSION
-from django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc
-
-# Getting the `free` routine used to free the memory allocated for
-# string pointers returned by GEOS.
-if GEOS_VERSION >= (3, 1, 1):
- # In versions 3.1.1 and above, `GEOSFree` was added to the C API
- # because `free` isn't always available on all platforms.
- free = GEOSFunc('GEOSFree')
- free.argtypes = [c_void_p]
- free.restype = None
-else:
- # Getting the `free` routine from the C library of the platform.
- if os.name == 'nt':
- # On NT, use the MS C library.
- libc = CDLL('msvcrt')
- else:
- # On POSIX platforms C library is obtained by passing None into `CDLL`.
- libc = CDLL(None)
- free = libc.free
-
-### ctypes error checking routines ###
-def last_arg_byref(args):
- "Returns the last C argument's value by reference."
- return args[-1]._obj.value
-
-def check_dbl(result, func, cargs):
- "Checks the status code and returns the double value passed in by reference."
- # Checking the status code
- if result != 1: return None
- # Double passed in by reference, return its value.
- return last_arg_byref(cargs)
-
-def check_geom(result, func, cargs):
- "Error checking on routines that return Geometries."
- if not result:
- raise GEOSException('Error encountered checking Geometry returned from GEOS C function "%s".' % func.__name__)
- return result
-
-def check_minus_one(result, func, cargs):
- "Error checking on routines that should not return -1."
- if result == -1:
- raise GEOSException('Error encountered in GEOS C function "%s".' % func.__name__)
- else:
- return result
-
-def check_predicate(result, func, cargs):
- "Error checking for unary/binary predicate functions."
- val = ord(result) # getting the ordinal from the character
- if val == 1: return True
- elif val == 0: return False
- else:
- raise GEOSException('Error encountered on GEOS C predicate function "%s".' % func.__name__)
-
-def check_sized_string(result, func, cargs):
- """
- Error checking for routines that return explicitly sized strings.
-
- This frees the memory allocated by GEOS at the result pointer.
- """
- if not result:
- raise GEOSException('Invalid string pointer returned by GEOS C function "%s"' % func.__name__)
- # A c_size_t object is passed in by reference for the second
- # argument on these routines, and its needed to determine the
- # correct size.
- s = string_at(result, last_arg_byref(cargs))
- # Freeing the memory allocated within GEOS
- free(result)
- return s
-
-def check_string(result, func, cargs):
- """
- Error checking for routines that return strings.
-
- This frees the memory allocated by GEOS at the result pointer.
- """
- if not result: raise GEOSException('Error encountered checking string return value in GEOS C function "%s".' % func.__name__)
- # Getting the string value at the pointer address.
- s = string_at(result)
- # Freeing the memory allocated within GEOS
- free(result)
- return s
-
-def check_zero(result, func, cargs):
- "Error checking on routines that should not return 0."
- if result == 0:
- raise GEOSException('Error encountered in GEOS C function "%s".' % func.__name__)
- else:
- return result
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/geom.py b/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/geom.py
deleted file mode 100644
index 2683c2e..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/geom.py
+++ /dev/null
@@ -1,119 +0,0 @@
-from ctypes import c_char_p, c_int, c_size_t, c_ubyte, POINTER
-from django.contrib.gis.geos.libgeos import CS_PTR, GEOM_PTR
-from django.contrib.gis.geos.prototypes.errcheck import (
- check_geom, check_minus_one, check_sized_string, check_string, check_zero)
-from django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc
-
-# This is the return type used by binary output (WKB, HEX) routines.
-c_uchar_p = POINTER(c_ubyte)
-
-# We create a simple subclass of c_char_p here because when the response
-# type is set to c_char_p, you get a _Python_ string and there's no way
-# to access the string's address inside the error checking function.
-# In other words, you can't free the memory allocated inside GEOS. Previously,
-# the return type would just be omitted and the integer address would be
-# used -- but this allows us to be specific in the function definition and
-# keeps the reference so it may be free'd.
-class geos_char_p(c_char_p):
- pass
-
-### ctypes generation functions ###
-def bin_constructor(func):
- "Generates a prototype for binary construction (HEX, WKB) GEOS routines."
- func.argtypes = [c_char_p, c_size_t]
- func.restype = GEOM_PTR
- func.errcheck = check_geom
- return func
-
-# HEX & WKB output
-def bin_output(func):
- "Generates a prototype for the routines that return a sized string."
- func.argtypes = [GEOM_PTR, POINTER(c_size_t)]
- func.errcheck = check_sized_string
- func.restype = c_uchar_p
- return func
-
-def geom_output(func, argtypes):
- "For GEOS routines that return a geometry."
- if argtypes: func.argtypes = argtypes
- func.restype = GEOM_PTR
- func.errcheck = check_geom
- return func
-
-def geom_index(func):
- "For GEOS routines that return geometries from an index."
- return geom_output(func, [GEOM_PTR, c_int])
-
-def int_from_geom(func, zero=False):
- "Argument is a geometry, return type is an integer."
- func.argtypes = [GEOM_PTR]
- func.restype = c_int
- if zero:
- func.errcheck = check_zero
- else:
- func.errcheck = check_minus_one
- return func
-
-def string_from_geom(func):
- "Argument is a Geometry, return type is a string."
- func.argtypes = [GEOM_PTR]
- func.restype = geos_char_p
- func.errcheck = check_string
- return func
-
-### ctypes prototypes ###
-
-# Deprecated creation routines from WKB, HEX, WKT
-from_hex = bin_constructor(GEOSFunc('GEOSGeomFromHEX_buf'))
-from_wkb = bin_constructor(GEOSFunc('GEOSGeomFromWKB_buf'))
-from_wkt = geom_output(GEOSFunc('GEOSGeomFromWKT'), [c_char_p])
-
-# Deprecated output routines
-to_hex = bin_output(GEOSFunc('GEOSGeomToHEX_buf'))
-to_wkb = bin_output(GEOSFunc('GEOSGeomToWKB_buf'))
-to_wkt = string_from_geom(GEOSFunc('GEOSGeomToWKT'))
-
-# The GEOS geometry type, typeid, num_coordites and number of geometries
-geos_normalize = int_from_geom(GEOSFunc('GEOSNormalize'))
-geos_type = string_from_geom(GEOSFunc('GEOSGeomType'))
-geos_typeid = int_from_geom(GEOSFunc('GEOSGeomTypeId'))
-get_dims = int_from_geom(GEOSFunc('GEOSGeom_getDimensions'), zero=True)
-get_num_coords = int_from_geom(GEOSFunc('GEOSGetNumCoordinates'))
-get_num_geoms = int_from_geom(GEOSFunc('GEOSGetNumGeometries'))
-
-# Geometry creation factories
-create_point = geom_output(GEOSFunc('GEOSGeom_createPoint'), [CS_PTR])
-create_linestring = geom_output(GEOSFunc('GEOSGeom_createLineString'), [CS_PTR])
-create_linearring = geom_output(GEOSFunc('GEOSGeom_createLinearRing'), [CS_PTR])
-
-# Polygon and collection creation routines are special and will not
-# have their argument types defined.
-create_polygon = geom_output(GEOSFunc('GEOSGeom_createPolygon'), None)
-create_collection = geom_output(GEOSFunc('GEOSGeom_createCollection'), None)
-
-# Ring routines
-get_extring = geom_output(GEOSFunc('GEOSGetExteriorRing'), [GEOM_PTR])
-get_intring = geom_index(GEOSFunc('GEOSGetInteriorRingN'))
-get_nrings = int_from_geom(GEOSFunc('GEOSGetNumInteriorRings'))
-
-# Collection Routines
-get_geomn = geom_index(GEOSFunc('GEOSGetGeometryN'))
-
-# Cloning
-geom_clone = GEOSFunc('GEOSGeom_clone')
-geom_clone.argtypes = [GEOM_PTR]
-geom_clone.restype = GEOM_PTR
-
-# Destruction routine.
-destroy_geom = GEOSFunc('GEOSGeom_destroy')
-destroy_geom.argtypes = [GEOM_PTR]
-destroy_geom.restype = None
-
-# SRID routines
-geos_get_srid = GEOSFunc('GEOSGetSRID')
-geos_get_srid.argtypes = [GEOM_PTR]
-geos_get_srid.restype = c_int
-
-geos_set_srid = GEOSFunc('GEOSSetSRID')
-geos_set_srid.argtypes = [GEOM_PTR, c_int]
-geos_set_srid.restype = None
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/io.py b/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/io.py
deleted file mode 100644
index 1e80351..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/io.py
+++ /dev/null
@@ -1,265 +0,0 @@
-import threading
-from ctypes import byref, c_char_p, c_int, c_char, c_size_t, Structure, POINTER
-from django.contrib.gis import memoryview
-from django.contrib.gis.geos.base import GEOSBase
-from django.contrib.gis.geos.libgeos import GEOM_PTR
-from django.contrib.gis.geos.prototypes.errcheck import check_geom, check_string, check_sized_string
-from django.contrib.gis.geos.prototypes.geom import c_uchar_p, geos_char_p
-from django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc
-
-from django.utils import six
-from django.utils.encoding import force_bytes
-
-### The WKB/WKT Reader/Writer structures and pointers ###
-class WKTReader_st(Structure): pass
-class WKTWriter_st(Structure): pass
-class WKBReader_st(Structure): pass
-class WKBWriter_st(Structure): pass
-
-WKT_READ_PTR = POINTER(WKTReader_st)
-WKT_WRITE_PTR = POINTER(WKTWriter_st)
-WKB_READ_PTR = POINTER(WKBReader_st)
-WKB_WRITE_PTR = POINTER(WKBReader_st)
-
-### WKTReader routines ###
-wkt_reader_create = GEOSFunc('GEOSWKTReader_create')
-wkt_reader_create.restype = WKT_READ_PTR
-
-wkt_reader_destroy = GEOSFunc('GEOSWKTReader_destroy')
-wkt_reader_destroy.argtypes = [WKT_READ_PTR]
-
-wkt_reader_read = GEOSFunc('GEOSWKTReader_read')
-wkt_reader_read.argtypes = [WKT_READ_PTR, c_char_p]
-wkt_reader_read.restype = GEOM_PTR
-wkt_reader_read.errcheck = check_geom
-
-### WKTWriter routines ###
-wkt_writer_create = GEOSFunc('GEOSWKTWriter_create')
-wkt_writer_create.restype = WKT_WRITE_PTR
-
-wkt_writer_destroy = GEOSFunc('GEOSWKTWriter_destroy')
-wkt_writer_destroy.argtypes = [WKT_WRITE_PTR]
-
-wkt_writer_write = GEOSFunc('GEOSWKTWriter_write')
-wkt_writer_write.argtypes = [WKT_WRITE_PTR, GEOM_PTR]
-wkt_writer_write.restype = geos_char_p
-wkt_writer_write.errcheck = check_string
-
-try:
- wkt_writer_get_outdim = GEOSFunc('GEOSWKTWriter_getOutputDimension')
- wkt_writer_get_outdim.argtypes = [WKT_WRITE_PTR]
- wkt_writer_get_outdim.restype = c_int
- wkt_writer_set_outdim = GEOSFunc('GEOSWKTWriter_setOutputDimension')
- wkt_writer_set_outdim.argtypes = [WKT_WRITE_PTR, c_int]
-except AttributeError:
- # GEOSWKTWriter_get/setOutputDimension has been introduced in GEOS 3.3.0
- # Always return 2 if not available
- wkt_writer_get_outdim = lambda ptr: 2
- wkt_writer_set_outdim = lambda ptr, dim: None
-
-### WKBReader routines ###
-wkb_reader_create = GEOSFunc('GEOSWKBReader_create')
-wkb_reader_create.restype = WKB_READ_PTR
-
-wkb_reader_destroy = GEOSFunc('GEOSWKBReader_destroy')
-wkb_reader_destroy.argtypes = [WKB_READ_PTR]
-
-def wkb_read_func(func):
- # Although the function definitions take `const unsigned char *`
- # as their parameter, we use c_char_p here so the function may
- # take Python strings directly as parameters. Inside Python there
- # is not a difference between signed and unsigned characters, so
- # it is not a problem.
- func.argtypes = [WKB_READ_PTR, c_char_p, c_size_t]
- func.restype = GEOM_PTR
- func.errcheck = check_geom
- return func
-
-wkb_reader_read = wkb_read_func(GEOSFunc('GEOSWKBReader_read'))
-wkb_reader_read_hex = wkb_read_func(GEOSFunc('GEOSWKBReader_readHEX'))
-
-### WKBWriter routines ###
-wkb_writer_create = GEOSFunc('GEOSWKBWriter_create')
-wkb_writer_create.restype = WKB_WRITE_PTR
-
-wkb_writer_destroy = GEOSFunc('GEOSWKBWriter_destroy')
-wkb_writer_destroy.argtypes = [WKB_WRITE_PTR]
-
-# WKB Writing prototypes.
-def wkb_write_func(func):
- func.argtypes = [WKB_WRITE_PTR, GEOM_PTR, POINTER(c_size_t)]
- func.restype = c_uchar_p
- func.errcheck = check_sized_string
- return func
-
-wkb_writer_write = wkb_write_func(GEOSFunc('GEOSWKBWriter_write'))
-wkb_writer_write_hex = wkb_write_func(GEOSFunc('GEOSWKBWriter_writeHEX'))
-
-# WKBWriter property getter/setter prototypes.
-def wkb_writer_get(func, restype=c_int):
- func.argtypes = [WKB_WRITE_PTR]
- func.restype = restype
- return func
-
-def wkb_writer_set(func, argtype=c_int):
- func.argtypes = [WKB_WRITE_PTR, argtype]
- return func
-
-wkb_writer_get_byteorder = wkb_writer_get(GEOSFunc('GEOSWKBWriter_getByteOrder'))
-wkb_writer_set_byteorder = wkb_writer_set(GEOSFunc('GEOSWKBWriter_setByteOrder'))
-wkb_writer_get_outdim = wkb_writer_get(GEOSFunc('GEOSWKBWriter_getOutputDimension'))
-wkb_writer_set_outdim = wkb_writer_set(GEOSFunc('GEOSWKBWriter_setOutputDimension'))
-wkb_writer_get_include_srid = wkb_writer_get(GEOSFunc('GEOSWKBWriter_getIncludeSRID'), restype=c_char)
-wkb_writer_set_include_srid = wkb_writer_set(GEOSFunc('GEOSWKBWriter_setIncludeSRID'), argtype=c_char)
-
-### Base I/O Class ###
-class IOBase(GEOSBase):
- "Base class for GEOS I/O objects."
- def __init__(self):
- # Getting the pointer with the constructor.
- self.ptr = self._constructor()
-
- def __del__(self):
- # Cleaning up with the appropriate destructor.
- if self._ptr: self._destructor(self._ptr)
-
-### Base WKB/WKT Reading and Writing objects ###
-
-# Non-public WKB/WKT reader classes for internal use because
-# their `read` methods return _pointers_ instead of GEOSGeometry
-# objects.
-class _WKTReader(IOBase):
- _constructor = wkt_reader_create
- _destructor = wkt_reader_destroy
- ptr_type = WKT_READ_PTR
-
- def read(self, wkt):
- if not isinstance(wkt, (bytes, six.string_types)):
- raise TypeError
- return wkt_reader_read(self.ptr, force_bytes(wkt))
-
-class _WKBReader(IOBase):
- _constructor = wkb_reader_create
- _destructor = wkb_reader_destroy
- ptr_type = WKB_READ_PTR
-
- def read(self, wkb):
- "Returns a _pointer_ to C GEOS Geometry object from the given WKB."
- if isinstance(wkb, memoryview):
- wkb_s = bytes(wkb)
- return wkb_reader_read(self.ptr, wkb_s, len(wkb_s))
- elif isinstance(wkb, (bytes, six.string_types)):
- return wkb_reader_read_hex(self.ptr, wkb, len(wkb))
- else:
- raise TypeError
-
-### WKB/WKT Writer Classes ###
-class WKTWriter(IOBase):
- _constructor = wkt_writer_create
- _destructor = wkt_writer_destroy
- ptr_type = WKT_WRITE_PTR
-
- def write(self, geom):
- "Returns the WKT representation of the given geometry."
- return wkt_writer_write(self.ptr, geom.ptr)
-
- @property
- def outdim(self):
- return wkt_writer_get_outdim(self.ptr)
-
- @outdim.setter
- def outdim(self, new_dim):
- if not new_dim in (2, 3):
- raise ValueError('WKT output dimension must be 2 or 3')
- wkt_writer_set_outdim(self.ptr, new_dim)
-
-
-class WKBWriter(IOBase):
- _constructor = wkb_writer_create
- _destructor = wkb_writer_destroy
- ptr_type = WKB_WRITE_PTR
-
- def write(self, geom):
- "Returns the WKB representation of the given geometry."
- return memoryview(wkb_writer_write(self.ptr, geom.ptr, byref(c_size_t())))
-
- def write_hex(self, geom):
- "Returns the HEXEWKB representation of the given geometry."
- return wkb_writer_write_hex(self.ptr, geom.ptr, byref(c_size_t()))
-
- ### WKBWriter Properties ###
-
- # Property for getting/setting the byteorder.
- def _get_byteorder(self):
- return wkb_writer_get_byteorder(self.ptr)
-
- def _set_byteorder(self, order):
- if not order in (0, 1): raise ValueError('Byte order parameter must be 0 (Big Endian) or 1 (Little Endian).')
- wkb_writer_set_byteorder(self.ptr, order)
-
- byteorder = property(_get_byteorder, _set_byteorder)
-
- # Property for getting/setting the output dimension.
- def _get_outdim(self):
- return wkb_writer_get_outdim(self.ptr)
-
- def _set_outdim(self, new_dim):
- if not new_dim in (2, 3): raise ValueError('WKB output dimension must be 2 or 3')
- wkb_writer_set_outdim(self.ptr, new_dim)
-
- outdim = property(_get_outdim, _set_outdim)
-
- # Property for getting/setting the include srid flag.
- def _get_include_srid(self):
- return bool(ord(wkb_writer_get_include_srid(self.ptr)))
-
- def _set_include_srid(self, include):
- if bool(include): flag = b'\x01'
- else: flag = b'\x00'
- wkb_writer_set_include_srid(self.ptr, flag)
-
- srid = property(_get_include_srid, _set_include_srid)
-
-# `ThreadLocalIO` object holds instances of the WKT and WKB reader/writer
-# objects that are local to the thread. The `GEOSGeometry` internals
-# access these instances by calling the module-level functions, defined
-# below.
-class ThreadLocalIO(threading.local):
- wkt_r = None
- wkt_w = None
- wkb_r = None
- wkb_w = None
- ewkb_w = None
-
-thread_context = ThreadLocalIO()
-
-# These module-level routines return the I/O object that is local to the
-# thread. If the I/O object does not exist yet it will be initialized.
-def wkt_r():
- if not thread_context.wkt_r:
- thread_context.wkt_r = _WKTReader()
- return thread_context.wkt_r
-
-def wkt_w(dim=2):
- if not thread_context.wkt_w:
- thread_context.wkt_w = WKTWriter()
- thread_context.wkt_w.outdim = dim
- return thread_context.wkt_w
-
-def wkb_r():
- if not thread_context.wkb_r:
- thread_context.wkb_r = _WKBReader()
- return thread_context.wkb_r
-
-def wkb_w(dim=2):
- if not thread_context.wkb_w:
- thread_context.wkb_w = WKBWriter()
- thread_context.wkb_w.outdim = dim
- return thread_context.wkb_w
-
-def ewkb_w(dim=2):
- if not thread_context.ewkb_w:
- thread_context.ewkb_w = WKBWriter()
- thread_context.ewkb_w.srid = True
- thread_context.ewkb_w.outdim = dim
- return thread_context.ewkb_w
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/misc.py b/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/misc.py
deleted file mode 100644
index 5a9b555..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/misc.py
+++ /dev/null
@@ -1,40 +0,0 @@
-"""
- This module is for the miscellaneous GEOS routines, particularly the
- ones that return the area, distance, and length.
-"""
-from ctypes import c_int, c_double, POINTER
-from django.contrib.gis.geos.libgeos import GEOM_PTR, GEOS_PREPARE
-from django.contrib.gis.geos.prototypes.errcheck import check_dbl, check_string
-from django.contrib.gis.geos.prototypes.geom import geos_char_p
-from django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc
-from django.utils.six.moves import xrange
-
-__all__ = ['geos_area', 'geos_distance', 'geos_length']
-
-### ctypes generator function ###
-def dbl_from_geom(func, num_geom=1):
- """
- Argument is a Geometry, return type is double that is passed
- in by reference as the last argument.
- """
- argtypes = [GEOM_PTR for i in xrange(num_geom)]
- argtypes += [POINTER(c_double)]
- func.argtypes = argtypes
- func.restype = c_int # Status code returned
- func.errcheck = check_dbl
- return func
-
-### ctypes prototypes ###
-
-# Area, distance, and length prototypes.
-geos_area = dbl_from_geom(GEOSFunc('GEOSArea'))
-geos_distance = dbl_from_geom(GEOSFunc('GEOSDistance'), num_geom=2)
-geos_length = dbl_from_geom(GEOSFunc('GEOSLength'))
-
-# Validity reason; only in GEOS 3.1+
-if GEOS_PREPARE:
- geos_isvalidreason = GEOSFunc('GEOSisValidReason')
- geos_isvalidreason.argtypes = [GEOM_PTR]
- geos_isvalidreason.restype = geos_char_p
- geos_isvalidreason.errcheck = check_string
- __all__.append('geos_isvalidreason')
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/predicates.py b/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/predicates.py
deleted file mode 100644
index bf69bb1..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/predicates.py
+++ /dev/null
@@ -1,44 +0,0 @@
-"""
- This module houses the GEOS ctypes prototype functions for the
- unary and binary predicate operations on geometries.
-"""
-from ctypes import c_char, c_char_p, c_double
-from django.contrib.gis.geos.libgeos import GEOM_PTR
-from django.contrib.gis.geos.prototypes.errcheck import check_predicate
-from django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc
-
-## Binary & unary predicate functions ##
-def binary_predicate(func, *args):
- "For GEOS binary predicate functions."
- argtypes = [GEOM_PTR, GEOM_PTR]
- if args: argtypes += args
- func.argtypes = argtypes
- func.restype = c_char
- func.errcheck = check_predicate
- return func
-
-def unary_predicate(func):
- "For GEOS unary predicate functions."
- func.argtypes = [GEOM_PTR]
- func.restype = c_char
- func.errcheck = check_predicate
- return func
-
-## Unary Predicates ##
-geos_hasz = unary_predicate(GEOSFunc('GEOSHasZ'))
-geos_isempty = unary_predicate(GEOSFunc('GEOSisEmpty'))
-geos_isring = unary_predicate(GEOSFunc('GEOSisRing'))
-geos_issimple = unary_predicate(GEOSFunc('GEOSisSimple'))
-geos_isvalid = unary_predicate(GEOSFunc('GEOSisValid'))
-
-## Binary Predicates ##
-geos_contains = binary_predicate(GEOSFunc('GEOSContains'))
-geos_crosses = binary_predicate(GEOSFunc('GEOSCrosses'))
-geos_disjoint = binary_predicate(GEOSFunc('GEOSDisjoint'))
-geos_equals = binary_predicate(GEOSFunc('GEOSEquals'))
-geos_equalsexact = binary_predicate(GEOSFunc('GEOSEqualsExact'), c_double)
-geos_intersects = binary_predicate(GEOSFunc('GEOSIntersects'))
-geos_overlaps = binary_predicate(GEOSFunc('GEOSOverlaps'))
-geos_relatepattern = binary_predicate(GEOSFunc('GEOSRelatePattern'), c_char_p)
-geos_touches = binary_predicate(GEOSFunc('GEOSTouches'))
-geos_within = binary_predicate(GEOSFunc('GEOSWithin'))
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/prepared.py b/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/prepared.py
deleted file mode 100644
index 7342d7d..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/prepared.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from ctypes import c_char
-from django.contrib.gis.geos.libgeos import GEOM_PTR, PREPGEOM_PTR
-from django.contrib.gis.geos.prototypes.errcheck import check_predicate
-from django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc
-
-# Prepared geometry constructor and destructors.
-geos_prepare = GEOSFunc('GEOSPrepare')
-geos_prepare.argtypes = [GEOM_PTR]
-geos_prepare.restype = PREPGEOM_PTR
-
-prepared_destroy = GEOSFunc('GEOSPreparedGeom_destroy')
-prepared_destroy.argtpes = [PREPGEOM_PTR]
-prepared_destroy.restype = None
-
-# Prepared geometry binary predicate support.
-def prepared_predicate(func):
- func.argtypes= [PREPGEOM_PTR, GEOM_PTR]
- func.restype = c_char
- func.errcheck = check_predicate
- return func
-
-prepared_contains = prepared_predicate(GEOSFunc('GEOSPreparedContains'))
-prepared_contains_properly = prepared_predicate(GEOSFunc('GEOSPreparedContainsProperly'))
-prepared_covers = prepared_predicate(GEOSFunc('GEOSPreparedCovers'))
-prepared_intersects = prepared_predicate(GEOSFunc('GEOSPreparedIntersects'))
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/threadsafe.py b/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/threadsafe.py
deleted file mode 100644
index 2c9d25e..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/threadsafe.py
+++ /dev/null
@@ -1,86 +0,0 @@
-import threading
-from django.contrib.gis.geos.libgeos import lgeos, notice_h, error_h, CONTEXT_PTR
-
-class GEOSContextHandle(object):
- """
- Python object representing a GEOS context handle.
- """
- def __init__(self):
- # Initializing the context handler for this thread with
- # the notice and error handler.
- self.ptr = lgeos.initGEOS_r(notice_h, error_h)
-
- def __del__(self):
- if self.ptr: lgeos.finishGEOS_r(self.ptr)
-
-# Defining a thread-local object and creating an instance
-# to hold a reference to GEOSContextHandle for this thread.
-class GEOSContext(threading.local):
- handle = None
-
-thread_context = GEOSContext()
-
-class GEOSFunc(object):
- """
- Class that serves as a wrapper for GEOS C Functions, and will
- use thread-safe function variants when available.
- """
- def __init__(self, func_name):
- try:
- # GEOS thread-safe function signatures end with '_r', and
- # take an additional context handle parameter.
- self.cfunc = getattr(lgeos, func_name + '_r')
- self.threaded = True
- # Create a reference here to thread_context so it's not
- # garbage-collected before an attempt to call this object.
- self.thread_context = thread_context
- except AttributeError:
- # Otherwise, use usual function.
- self.cfunc = getattr(lgeos, func_name)
- self.threaded = False
-
- def __call__(self, *args):
- if self.threaded:
- # If a context handle does not exist for this thread, initialize one.
- if not self.thread_context.handle:
- self.thread_context.handle = GEOSContextHandle()
- # Call the threaded GEOS routine with pointer of the context handle
- # as the first argument.
- return self.cfunc(self.thread_context.handle.ptr, *args)
- else:
- return self.cfunc(*args)
-
- def __str__(self):
- return self.cfunc.__name__
-
- # argtypes property
- def _get_argtypes(self):
- return self.cfunc.argtypes
-
- def _set_argtypes(self, argtypes):
- if self.threaded:
- new_argtypes = [CONTEXT_PTR]
- new_argtypes.extend(argtypes)
- self.cfunc.argtypes = new_argtypes
- else:
- self.cfunc.argtypes = argtypes
-
- argtypes = property(_get_argtypes, _set_argtypes)
-
- # restype property
- def _get_restype(self):
- return self.cfunc.restype
-
- def _set_restype(self, restype):
- self.cfunc.restype = restype
-
- restype = property(_get_restype, _set_restype)
-
- # errcheck property
- def _get_errcheck(self):
- return self.cfunc.errcheck
-
- def _set_errcheck(self, errcheck):
- self.cfunc.errcheck = errcheck
-
- errcheck = property(_get_errcheck, _set_errcheck)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/topology.py b/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/topology.py
deleted file mode 100644
index dfea3e9..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/prototypes/topology.py
+++ /dev/null
@@ -1,64 +0,0 @@
-"""
- This module houses the GEOS ctypes prototype functions for the
- topological operations on geometries.
-"""
-__all__ = ['geos_boundary', 'geos_buffer', 'geos_centroid', 'geos_convexhull',
- 'geos_difference', 'geos_envelope', 'geos_intersection',
- 'geos_linemerge', 'geos_pointonsurface', 'geos_preservesimplify',
- 'geos_simplify', 'geos_symdifference', 'geos_union', 'geos_relate']
-
-from ctypes import c_double, c_int
-from django.contrib.gis.geos.libgeos import geos_version_info, GEOM_PTR, GEOS_PREPARE
-from django.contrib.gis.geos.prototypes.errcheck import check_geom, check_minus_one, check_string
-from django.contrib.gis.geos.prototypes.geom import geos_char_p
-from django.contrib.gis.geos.prototypes.threadsafe import GEOSFunc
-
-def topology(func, *args, **kwargs):
- "For GEOS unary topology functions."
- argtypes = [GEOM_PTR]
- if args: argtypes += args
- func.argtypes = argtypes
- func.restype = kwargs.get('restype', GEOM_PTR)
- func.errcheck = kwargs.get('errcheck', check_geom)
- return func
-
-### Topology Routines ###
-geos_boundary = topology(GEOSFunc('GEOSBoundary'))
-geos_buffer = topology(GEOSFunc('GEOSBuffer'), c_double, c_int)
-geos_centroid = topology(GEOSFunc('GEOSGetCentroid'))
-geos_convexhull = topology(GEOSFunc('GEOSConvexHull'))
-geos_difference = topology(GEOSFunc('GEOSDifference'), GEOM_PTR)
-geos_envelope = topology(GEOSFunc('GEOSEnvelope'))
-geos_intersection = topology(GEOSFunc('GEOSIntersection'), GEOM_PTR)
-geos_linemerge = topology(GEOSFunc('GEOSLineMerge'))
-geos_pointonsurface = topology(GEOSFunc('GEOSPointOnSurface'))
-geos_preservesimplify = topology(GEOSFunc('GEOSTopologyPreserveSimplify'), c_double)
-geos_simplify = topology(GEOSFunc('GEOSSimplify'), c_double)
-geos_symdifference = topology(GEOSFunc('GEOSSymDifference'), GEOM_PTR)
-geos_union = topology(GEOSFunc('GEOSUnion'), GEOM_PTR)
-
-# GEOSRelate returns a string, not a geometry.
-geos_relate = GEOSFunc('GEOSRelate')
-geos_relate.argtypes = [GEOM_PTR, GEOM_PTR]
-geos_relate.restype = geos_char_p
-geos_relate.errcheck = check_string
-
-# Routines only in GEOS 3.1+
-if GEOS_PREPARE:
- geos_cascaded_union = GEOSFunc('GEOSUnionCascaded')
- geos_cascaded_union.argtypes = [GEOM_PTR]
- geos_cascaded_union.restype = GEOM_PTR
- __all__.append('geos_cascaded_union')
-
-# Linear referencing routines
-info = geos_version_info()
-if info['version'] >= '3.2.0':
- geos_project = topology(GEOSFunc('GEOSProject'), GEOM_PTR,
- restype=c_double, errcheck=check_minus_one)
- geos_interpolate = topology(GEOSFunc('GEOSInterpolate'), c_double)
-
- geos_project_normalized = topology(GEOSFunc('GEOSProjectNormalized'),
- GEOM_PTR, restype=c_double, errcheck=check_minus_one)
- geos_interpolate_normalized = topology(GEOSFunc('GEOSInterpolateNormalized'), c_double)
- __all__.extend(['geos_project', 'geos_interpolate',
- 'geos_project_normalized', 'geos_interpolate_normalized'])
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/tests/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/geos/tests/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/tests/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/tests/test_geos.py b/lib/python2.7/site-packages/django/contrib/gis/geos/tests/test_geos.py
deleted file mode 100644
index c8e064b..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/tests/test_geos.py
+++ /dev/null
@@ -1,1108 +0,0 @@
-from __future__ import unicode_literals
-
-import ctypes
-import json
-import random
-from binascii import a2b_hex, b2a_hex
-from io import BytesIO
-
-from django.contrib.gis.gdal import HAS_GDAL
-
-from django.contrib.gis import memoryview
-from django.contrib.gis.geometry.test_data import TestDataMixin
-
-from django.utils.encoding import force_bytes
-from django.utils import six
-from django.utils.six.moves import xrange
-from django.utils import unittest
-from django.utils.unittest import skipUnless
-
-from .. import HAS_GEOS
-
-if HAS_GEOS:
- from .. import (GEOSException, GEOSIndexError, GEOSGeometry,
- GeometryCollection, Point, MultiPoint, Polygon, MultiPolygon, LinearRing,
- LineString, MultiLineString, fromfile, fromstr, geos_version_info,
- GEOS_PREPARE)
- from ..base import gdal, numpy, GEOSBase
-
-
-@skipUnless(HAS_GEOS, "Geos is required.")
-class GEOSTest(unittest.TestCase, TestDataMixin):
-
- @property
- def null_srid(self):
- """
- Returns the proper null SRID depending on the GEOS version.
- See the comments in `test_srid` for more details.
- """
- info = geos_version_info()
- if info['version'] == '3.0.0' and info['release_candidate']:
- return -1
- else:
- return None
-
- def test_base(self):
- "Tests out the GEOSBase class."
- # Testing out GEOSBase class, which provides a `ptr` property
- # that abstracts out access to underlying C pointers.
- class FakeGeom1(GEOSBase):
- pass
-
- # This one only accepts pointers to floats
- c_float_p = ctypes.POINTER(ctypes.c_float)
- class FakeGeom2(GEOSBase):
- ptr_type = c_float_p
-
- # Default ptr_type is `c_void_p`.
- fg1 = FakeGeom1()
- # Default ptr_type is C float pointer
- fg2 = FakeGeom2()
-
- # These assignments are OK -- None is allowed because
- # it's equivalent to the NULL pointer.
- fg1.ptr = ctypes.c_void_p()
- fg1.ptr = None
- fg2.ptr = c_float_p(ctypes.c_float(5.23))
- fg2.ptr = None
-
- # Because pointers have been set to NULL, an exception should be
- # raised when we try to access it. Raising an exception is
- # preferrable to a segmentation fault that commonly occurs when
- # a C method is given a NULL memory reference.
- for fg in (fg1, fg2):
- # Equivalent to `fg.ptr`
- self.assertRaises(GEOSException, fg._get_ptr)
-
- # Anything that is either not None or the acceptable pointer type will
- # result in a TypeError when trying to assign it to the `ptr` property.
- # Thus, memmory addresses (integers) and pointers of the incorrect type
- # (in `bad_ptrs`) will not be allowed.
- bad_ptrs = (5, ctypes.c_char_p(b'foobar'))
- for bad_ptr in bad_ptrs:
- # Equivalent to `fg.ptr = bad_ptr`
- self.assertRaises(TypeError, fg1._set_ptr, bad_ptr)
- self.assertRaises(TypeError, fg2._set_ptr, bad_ptr)
-
- def test_wkt(self):
- "Testing WKT output."
- for g in self.geometries.wkt_out:
- geom = fromstr(g.wkt)
- if geom.hasz and geos_version_info()['version'] >= '3.3.0':
- self.assertEqual(g.ewkt, geom.wkt)
-
- def test_hex(self):
- "Testing HEX output."
- for g in self.geometries.hex_wkt:
- geom = fromstr(g.wkt)
- self.assertEqual(g.hex, geom.hex.decode())
-
- def test_hexewkb(self):
- "Testing (HEX)EWKB output."
- # For testing HEX(EWKB).
- ogc_hex = b'01010000000000000000000000000000000000F03F'
- ogc_hex_3d = b'01010000800000000000000000000000000000F03F0000000000000040'
- # `SELECT ST_AsHEXEWKB(ST_GeomFromText('POINT(0 1)', 4326));`
- hexewkb_2d = b'0101000020E61000000000000000000000000000000000F03F'
- # `SELECT ST_AsHEXEWKB(ST_GeomFromEWKT('SRID=4326;POINT(0 1 2)'));`
- hexewkb_3d = b'01010000A0E61000000000000000000000000000000000F03F0000000000000040'
-
- pnt_2d = Point(0, 1, srid=4326)
- pnt_3d = Point(0, 1, 2, srid=4326)
-
- # OGC-compliant HEX will not have SRID value.
- self.assertEqual(ogc_hex, pnt_2d.hex)
- self.assertEqual(ogc_hex_3d, pnt_3d.hex)
-
- # HEXEWKB should be appropriate for its dimension -- have to use an
- # a WKBWriter w/dimension set accordingly, else GEOS will insert
- # garbage into 3D coordinate if there is none. Also, GEOS has a
- # a bug in versions prior to 3.1 that puts the X coordinate in
- # place of Z; an exception should be raised on those versions.
- self.assertEqual(hexewkb_2d, pnt_2d.hexewkb)
- if GEOS_PREPARE:
- self.assertEqual(hexewkb_3d, pnt_3d.hexewkb)
- self.assertEqual(True, GEOSGeometry(hexewkb_3d).hasz)
- else:
- try:
- hexewkb = pnt_3d.hexewkb
- except GEOSException:
- pass
- else:
- self.fail('Should have raised GEOSException.')
-
- # Same for EWKB.
- self.assertEqual(memoryview(a2b_hex(hexewkb_2d)), pnt_2d.ewkb)
- if GEOS_PREPARE:
- self.assertEqual(memoryview(a2b_hex(hexewkb_3d)), pnt_3d.ewkb)
- else:
- try:
- ewkb = pnt_3d.ewkb
- except GEOSException:
- pass
- else:
- self.fail('Should have raised GEOSException')
-
- # Redundant sanity check.
- self.assertEqual(4326, GEOSGeometry(hexewkb_2d).srid)
-
- def test_kml(self):
- "Testing KML output."
- for tg in self.geometries.wkt_out:
- geom = fromstr(tg.wkt)
- kml = getattr(tg, 'kml', False)
- if kml: self.assertEqual(kml, geom.kml)
-
- def test_errors(self):
- "Testing the Error handlers."
- # string-based
- for err in self.geometries.errors:
- with self.assertRaises((GEOSException, ValueError)):
- _ = fromstr(err.wkt)
-
- # Bad WKB
- self.assertRaises(GEOSException, GEOSGeometry, memoryview(b'0'))
-
- class NotAGeometry(object):
- pass
-
- # Some other object
- self.assertRaises(TypeError, GEOSGeometry, NotAGeometry())
- # None
- self.assertRaises(TypeError, GEOSGeometry, None)
-
- def test_wkb(self):
- "Testing WKB output."
- for g in self.geometries.hex_wkt:
- geom = fromstr(g.wkt)
- wkb = geom.wkb
- self.assertEqual(b2a_hex(wkb).decode().upper(), g.hex)
-
- def test_create_hex(self):
- "Testing creation from HEX."
- for g in self.geometries.hex_wkt:
- geom_h = GEOSGeometry(g.hex)
- # we need to do this so decimal places get normalised
- geom_t = fromstr(g.wkt)
- self.assertEqual(geom_t.wkt, geom_h.wkt)
-
- def test_create_wkb(self):
- "Testing creation from WKB."
- for g in self.geometries.hex_wkt:
- wkb = memoryview(a2b_hex(g.hex.encode()))
- geom_h = GEOSGeometry(wkb)
- # we need to do this so decimal places get normalised
- geom_t = fromstr(g.wkt)
- self.assertEqual(geom_t.wkt, geom_h.wkt)
-
- def test_ewkt(self):
- "Testing EWKT."
- srids = (-1, 32140)
- for srid in srids:
- for p in self.geometries.polygons:
- ewkt = 'SRID=%d;%s' % (srid, p.wkt)
- poly = fromstr(ewkt)
- self.assertEqual(srid, poly.srid)
- self.assertEqual(srid, poly.shell.srid)
- self.assertEqual(srid, fromstr(poly.ewkt).srid) # Checking export
-
- @skipUnless(HAS_GDAL, "GDAL is required.")
- def test_json(self):
- "Testing GeoJSON input/output (via GDAL)."
- for g in self.geometries.json_geoms:
- geom = GEOSGeometry(g.wkt)
- if not hasattr(g, 'not_equal'):
- # Loading jsons to prevent decimal differences
- self.assertEqual(json.loads(g.json), json.loads(geom.json))
- self.assertEqual(json.loads(g.json), json.loads(geom.geojson))
- self.assertEqual(GEOSGeometry(g.wkt), GEOSGeometry(geom.json))
-
- def test_fromfile(self):
- "Testing the fromfile() factory."
- ref_pnt = GEOSGeometry('POINT(5 23)')
-
- wkt_f = BytesIO()
- wkt_f.write(force_bytes(ref_pnt.wkt))
- wkb_f = BytesIO()
- wkb_f.write(bytes(ref_pnt.wkb))
-
- # Other tests use `fromfile()` on string filenames so those
- # aren't tested here.
- for fh in (wkt_f, wkb_f):
- fh.seek(0)
- pnt = fromfile(fh)
- self.assertEqual(ref_pnt, pnt)
-
- def test_eq(self):
- "Testing equivalence."
- p = fromstr('POINT(5 23)')
- self.assertEqual(p, p.wkt)
- self.assertNotEqual(p, 'foo')
- ls = fromstr('LINESTRING(0 0, 1 1, 5 5)')
- self.assertEqual(ls, ls.wkt)
- self.assertNotEqual(p, 'bar')
- # Error shouldn't be raise on equivalence testing with
- # an invalid type.
- for g in (p, ls):
- self.assertNotEqual(g, None)
- self.assertNotEqual(g, {'foo' : 'bar'})
- self.assertNotEqual(g, False)
-
- def test_points(self):
- "Testing Point objects."
- prev = fromstr('POINT(0 0)')
- for p in self.geometries.points:
- # Creating the point from the WKT
- pnt = fromstr(p.wkt)
- self.assertEqual(pnt.geom_type, 'Point')
- self.assertEqual(pnt.geom_typeid, 0)
- self.assertEqual(p.x, pnt.x)
- self.assertEqual(p.y, pnt.y)
- self.assertEqual(True, pnt == fromstr(p.wkt))
- self.assertEqual(False, pnt == prev)
-
- # Making sure that the point's X, Y components are what we expect
- self.assertAlmostEqual(p.x, pnt.tuple[0], 9)
- self.assertAlmostEqual(p.y, pnt.tuple[1], 9)
-
- # Testing the third dimension, and getting the tuple arguments
- if hasattr(p, 'z'):
- self.assertEqual(True, pnt.hasz)
- self.assertEqual(p.z, pnt.z)
- self.assertEqual(p.z, pnt.tuple[2], 9)
- tup_args = (p.x, p.y, p.z)
- set_tup1 = (2.71, 3.14, 5.23)
- set_tup2 = (5.23, 2.71, 3.14)
- else:
- self.assertEqual(False, pnt.hasz)
- self.assertEqual(None, pnt.z)
- tup_args = (p.x, p.y)
- set_tup1 = (2.71, 3.14)
- set_tup2 = (3.14, 2.71)
-
- # Centroid operation on point should be point itself
- self.assertEqual(p.centroid, pnt.centroid.tuple)
-
- # Now testing the different constructors
- pnt2 = Point(tup_args) # e.g., Point((1, 2))
- pnt3 = Point(*tup_args) # e.g., Point(1, 2)
- self.assertEqual(True, pnt == pnt2)
- self.assertEqual(True, pnt == pnt3)
-
- # Now testing setting the x and y
- pnt.y = 3.14
- pnt.x = 2.71
- self.assertEqual(3.14, pnt.y)
- self.assertEqual(2.71, pnt.x)
-
- # Setting via the tuple/coords property
- pnt.tuple = set_tup1
- self.assertEqual(set_tup1, pnt.tuple)
- pnt.coords = set_tup2
- self.assertEqual(set_tup2, pnt.coords)
-
- prev = pnt # setting the previous geometry
-
- def test_multipoints(self):
- "Testing MultiPoint objects."
- for mp in self.geometries.multipoints:
- mpnt = fromstr(mp.wkt)
- self.assertEqual(mpnt.geom_type, 'MultiPoint')
- self.assertEqual(mpnt.geom_typeid, 4)
-
- self.assertAlmostEqual(mp.centroid[0], mpnt.centroid.tuple[0], 9)
- self.assertAlmostEqual(mp.centroid[1], mpnt.centroid.tuple[1], 9)
-
- self.assertRaises(GEOSIndexError, mpnt.__getitem__, len(mpnt))
- self.assertEqual(mp.centroid, mpnt.centroid.tuple)
- self.assertEqual(mp.coords, tuple(m.tuple for m in mpnt))
- for p in mpnt:
- self.assertEqual(p.geom_type, 'Point')
- self.assertEqual(p.geom_typeid, 0)
- self.assertEqual(p.empty, False)
- self.assertEqual(p.valid, True)
-
- def test_linestring(self):
- "Testing LineString objects."
- prev = fromstr('POINT(0 0)')
- for l in self.geometries.linestrings:
- ls = fromstr(l.wkt)
- self.assertEqual(ls.geom_type, 'LineString')
- self.assertEqual(ls.geom_typeid, 1)
- self.assertEqual(ls.empty, False)
- self.assertEqual(ls.ring, False)
- if hasattr(l, 'centroid'):
- self.assertEqual(l.centroid, ls.centroid.tuple)
- if hasattr(l, 'tup'):
- self.assertEqual(l.tup, ls.tuple)
-
- self.assertEqual(True, ls == fromstr(l.wkt))
- self.assertEqual(False, ls == prev)
- self.assertRaises(GEOSIndexError, ls.__getitem__, len(ls))
- prev = ls
-
- # Creating a LineString from a tuple, list, and numpy array
- self.assertEqual(ls, LineString(ls.tuple)) # tuple
- self.assertEqual(ls, LineString(*ls.tuple)) # as individual arguments
- self.assertEqual(ls, LineString([list(tup) for tup in ls.tuple])) # as list
- self.assertEqual(ls.wkt, LineString(*tuple(Point(tup) for tup in ls.tuple)).wkt) # Point individual arguments
- if numpy: self.assertEqual(ls, LineString(numpy.array(ls.tuple))) # as numpy array
-
- def test_multilinestring(self):
- "Testing MultiLineString objects."
- prev = fromstr('POINT(0 0)')
- for l in self.geometries.multilinestrings:
- ml = fromstr(l.wkt)
- self.assertEqual(ml.geom_type, 'MultiLineString')
- self.assertEqual(ml.geom_typeid, 5)
-
- self.assertAlmostEqual(l.centroid[0], ml.centroid.x, 9)
- self.assertAlmostEqual(l.centroid[1], ml.centroid.y, 9)
-
- self.assertEqual(True, ml == fromstr(l.wkt))
- self.assertEqual(False, ml == prev)
- prev = ml
-
- for ls in ml:
- self.assertEqual(ls.geom_type, 'LineString')
- self.assertEqual(ls.geom_typeid, 1)
- self.assertEqual(ls.empty, False)
-
- self.assertRaises(GEOSIndexError, ml.__getitem__, len(ml))
- self.assertEqual(ml.wkt, MultiLineString(*tuple(s.clone() for s in ml)).wkt)
- self.assertEqual(ml, MultiLineString(*tuple(LineString(s.tuple) for s in ml)))
-
- def test_linearring(self):
- "Testing LinearRing objects."
- for rr in self.geometries.linearrings:
- lr = fromstr(rr.wkt)
- self.assertEqual(lr.geom_type, 'LinearRing')
- self.assertEqual(lr.geom_typeid, 2)
- self.assertEqual(rr.n_p, len(lr))
- self.assertEqual(True, lr.valid)
- self.assertEqual(False, lr.empty)
-
- # Creating a LinearRing from a tuple, list, and numpy array
- self.assertEqual(lr, LinearRing(lr.tuple))
- self.assertEqual(lr, LinearRing(*lr.tuple))
- self.assertEqual(lr, LinearRing([list(tup) for tup in lr.tuple]))
- if numpy: self.assertEqual(lr, LinearRing(numpy.array(lr.tuple)))
-
- def test_polygons_from_bbox(self):
- "Testing `from_bbox` class method."
- bbox = (-180, -90, 180, 90)
- p = Polygon.from_bbox(bbox)
- self.assertEqual(bbox, p.extent)
-
- # Testing numerical precision
- x = 3.14159265358979323
- bbox = (0, 0, 1, x)
- p = Polygon.from_bbox(bbox)
- y = p.extent[-1]
- self.assertEqual(format(x, '.13f'), format(y, '.13f'))
-
- def test_polygons(self):
- "Testing Polygon objects."
-
- prev = fromstr('POINT(0 0)')
- for p in self.geometries.polygons:
- # Creating the Polygon, testing its properties.
- poly = fromstr(p.wkt)
- self.assertEqual(poly.geom_type, 'Polygon')
- self.assertEqual(poly.geom_typeid, 3)
- self.assertEqual(poly.empty, False)
- self.assertEqual(poly.ring, False)
- self.assertEqual(p.n_i, poly.num_interior_rings)
- self.assertEqual(p.n_i + 1, len(poly)) # Testing __len__
- self.assertEqual(p.n_p, poly.num_points)
-
- # Area & Centroid
- self.assertAlmostEqual(p.area, poly.area, 9)
- self.assertAlmostEqual(p.centroid[0], poly.centroid.tuple[0], 9)
- self.assertAlmostEqual(p.centroid[1], poly.centroid.tuple[1], 9)
-
- # Testing the geometry equivalence
- self.assertEqual(True, poly == fromstr(p.wkt))
- self.assertEqual(False, poly == prev) # Should not be equal to previous geometry
- self.assertEqual(True, poly != prev)
-
- # Testing the exterior ring
- ring = poly.exterior_ring
- self.assertEqual(ring.geom_type, 'LinearRing')
- self.assertEqual(ring.geom_typeid, 2)
- if p.ext_ring_cs:
- self.assertEqual(p.ext_ring_cs, ring.tuple)
- self.assertEqual(p.ext_ring_cs, poly[0].tuple) # Testing __getitem__
-
- # Testing __getitem__ and __setitem__ on invalid indices
- self.assertRaises(GEOSIndexError, poly.__getitem__, len(poly))
- self.assertRaises(GEOSIndexError, poly.__setitem__, len(poly), False)
- self.assertRaises(GEOSIndexError, poly.__getitem__, -1 * len(poly) - 1)
-
- # Testing __iter__
- for r in poly:
- self.assertEqual(r.geom_type, 'LinearRing')
- self.assertEqual(r.geom_typeid, 2)
-
- # Testing polygon construction.
- self.assertRaises(TypeError, Polygon, 0, [1, 2, 3])
- self.assertRaises(TypeError, Polygon, 'foo')
-
- # Polygon(shell, (hole1, ... holeN))
- rings = tuple(r for r in poly)
- self.assertEqual(poly, Polygon(rings[0], rings[1:]))
-
- # Polygon(shell_tuple, hole_tuple1, ... , hole_tupleN)
- ring_tuples = tuple(r.tuple for r in poly)
- self.assertEqual(poly, Polygon(*ring_tuples))
-
- # Constructing with tuples of LinearRings.
- self.assertEqual(poly.wkt, Polygon(*tuple(r for r in poly)).wkt)
- self.assertEqual(poly.wkt, Polygon(*tuple(LinearRing(r.tuple) for r in poly)).wkt)
-
- def test_polygon_comparison(self):
- p1 = Polygon(((0, 0), (0, 1), (1, 1), (1, 0), (0, 0)))
- p2 = Polygon(((0, 0), (0, 1), (1, 0), (0, 0)))
- self.assertTrue(p1 > p2)
- self.assertFalse(p1 < p2)
- self.assertFalse(p2 > p1)
- self.assertTrue(p2 < p1)
-
- p3 = Polygon(((0, 0), (0, 1), (1, 1), (2, 0), (0, 0)))
- p4 = Polygon(((0, 0), (0, 1), (2, 2), (1, 0), (0, 0)))
- self.assertFalse(p4 < p3)
- self.assertTrue(p3 < p4)
- self.assertTrue(p4 > p3)
- self.assertFalse(p3 > p4)
-
- def test_multipolygons(self):
- "Testing MultiPolygon objects."
- prev = fromstr('POINT (0 0)')
- for mp in self.geometries.multipolygons:
- mpoly = fromstr(mp.wkt)
- self.assertEqual(mpoly.geom_type, 'MultiPolygon')
- self.assertEqual(mpoly.geom_typeid, 6)
- self.assertEqual(mp.valid, mpoly.valid)
-
- if mp.valid:
- self.assertEqual(mp.num_geom, mpoly.num_geom)
- self.assertEqual(mp.n_p, mpoly.num_coords)
- self.assertEqual(mp.num_geom, len(mpoly))
- self.assertRaises(GEOSIndexError, mpoly.__getitem__, len(mpoly))
- for p in mpoly:
- self.assertEqual(p.geom_type, 'Polygon')
- self.assertEqual(p.geom_typeid, 3)
- self.assertEqual(p.valid, True)
- self.assertEqual(mpoly.wkt, MultiPolygon(*tuple(poly.clone() for poly in mpoly)).wkt)
-
- def test_memory_hijinks(self):
- "Testing Geometry __del__() on rings and polygons."
- #### Memory issues with rings and polygons
-
- # These tests are needed to ensure sanity with writable geometries.
-
- # Getting a polygon with interior rings, and pulling out the interior rings
- poly = fromstr(self.geometries.polygons[1].wkt)
- ring1 = poly[0]
- ring2 = poly[1]
-
- # These deletes should be 'harmless' since they are done on child geometries
- del ring1
- del ring2
- ring1 = poly[0]
- ring2 = poly[1]
-
- # Deleting the polygon
- del poly
-
- # Access to these rings is OK since they are clones.
- s1, s2 = str(ring1), str(ring2)
-
- def test_coord_seq(self):
- "Testing Coordinate Sequence objects."
- for p in self.geometries.polygons:
- if p.ext_ring_cs:
- # Constructing the polygon and getting the coordinate sequence
- poly = fromstr(p.wkt)
- cs = poly.exterior_ring.coord_seq
-
- self.assertEqual(p.ext_ring_cs, cs.tuple) # done in the Polygon test too.
- self.assertEqual(len(p.ext_ring_cs), len(cs)) # Making sure __len__ works
-
- # Checks __getitem__ and __setitem__
- for i in xrange(len(p.ext_ring_cs)):
- c1 = p.ext_ring_cs[i] # Expected value
- c2 = cs[i] # Value from coordseq
- self.assertEqual(c1, c2)
-
- # Constructing the test value to set the coordinate sequence with
- if len(c1) == 2: tset = (5, 23)
- else: tset = (5, 23, 8)
- cs[i] = tset
-
- # Making sure every set point matches what we expect
- for j in range(len(tset)):
- cs[i] = tset
- self.assertEqual(tset[j], cs[i][j])
-
- def test_relate_pattern(self):
- "Testing relate() and relate_pattern()."
- g = fromstr('POINT (0 0)')
- self.assertRaises(GEOSException, g.relate_pattern, 0, 'invalid pattern, yo')
- for rg in self.geometries.relate_geoms:
- a = fromstr(rg.wkt_a)
- b = fromstr(rg.wkt_b)
- self.assertEqual(rg.result, a.relate_pattern(b, rg.pattern))
- self.assertEqual(rg.pattern, a.relate(b))
-
- def test_intersection(self):
- "Testing intersects() and intersection()."
- for i in xrange(len(self.geometries.topology_geoms)):
- a = fromstr(self.geometries.topology_geoms[i].wkt_a)
- b = fromstr(self.geometries.topology_geoms[i].wkt_b)
- i1 = fromstr(self.geometries.intersect_geoms[i].wkt)
- self.assertEqual(True, a.intersects(b))
- i2 = a.intersection(b)
- self.assertEqual(i1, i2)
- self.assertEqual(i1, a & b) # __and__ is intersection operator
- a &= b # testing __iand__
- self.assertEqual(i1, a)
-
- def test_union(self):
- "Testing union()."
- for i in xrange(len(self.geometries.topology_geoms)):
- a = fromstr(self.geometries.topology_geoms[i].wkt_a)
- b = fromstr(self.geometries.topology_geoms[i].wkt_b)
- u1 = fromstr(self.geometries.union_geoms[i].wkt)
- u2 = a.union(b)
- self.assertEqual(u1, u2)
- self.assertEqual(u1, a | b) # __or__ is union operator
- a |= b # testing __ior__
- self.assertEqual(u1, a)
-
- def test_difference(self):
- "Testing difference()."
- for i in xrange(len(self.geometries.topology_geoms)):
- a = fromstr(self.geometries.topology_geoms[i].wkt_a)
- b = fromstr(self.geometries.topology_geoms[i].wkt_b)
- d1 = fromstr(self.geometries.diff_geoms[i].wkt)
- d2 = a.difference(b)
- self.assertEqual(d1, d2)
- self.assertEqual(d1, a - b) # __sub__ is difference operator
- a -= b # testing __isub__
- self.assertEqual(d1, a)
-
- def test_symdifference(self):
- "Testing sym_difference()."
- for i in xrange(len(self.geometries.topology_geoms)):
- a = fromstr(self.geometries.topology_geoms[i].wkt_a)
- b = fromstr(self.geometries.topology_geoms[i].wkt_b)
- d1 = fromstr(self.geometries.sdiff_geoms[i].wkt)
- d2 = a.sym_difference(b)
- self.assertEqual(d1, d2)
- self.assertEqual(d1, a ^ b) # __xor__ is symmetric difference operator
- a ^= b # testing __ixor__
- self.assertEqual(d1, a)
-
- def test_buffer(self):
- "Testing buffer()."
- for bg in self.geometries.buffer_geoms:
- g = fromstr(bg.wkt)
-
- # The buffer we expect
- exp_buf = fromstr(bg.buffer_wkt)
- quadsegs = bg.quadsegs
- width = bg.width
-
- # Can't use a floating-point for the number of quadsegs.
- self.assertRaises(ctypes.ArgumentError, g.buffer, width, float(quadsegs))
-
- # Constructing our buffer
- buf = g.buffer(width, quadsegs)
- self.assertEqual(exp_buf.num_coords, buf.num_coords)
- self.assertEqual(len(exp_buf), len(buf))
-
- # Now assuring that each point in the buffer is almost equal
- for j in xrange(len(exp_buf)):
- exp_ring = exp_buf[j]
- buf_ring = buf[j]
- self.assertEqual(len(exp_ring), len(buf_ring))
- for k in xrange(len(exp_ring)):
- # Asserting the X, Y of each point are almost equal (due to floating point imprecision)
- self.assertAlmostEqual(exp_ring[k][0], buf_ring[k][0], 9)
- self.assertAlmostEqual(exp_ring[k][1], buf_ring[k][1], 9)
-
- def test_srid(self):
- "Testing the SRID property and keyword."
- # Testing SRID keyword on Point
- pnt = Point(5, 23, srid=4326)
- self.assertEqual(4326, pnt.srid)
- pnt.srid = 3084
- self.assertEqual(3084, pnt.srid)
- self.assertRaises(ctypes.ArgumentError, pnt.set_srid, '4326')
-
- # Testing SRID keyword on fromstr(), and on Polygon rings.
- poly = fromstr(self.geometries.polygons[1].wkt, srid=4269)
- self.assertEqual(4269, poly.srid)
- for ring in poly: self.assertEqual(4269, ring.srid)
- poly.srid = 4326
- self.assertEqual(4326, poly.shell.srid)
-
- # Testing SRID keyword on GeometryCollection
- gc = GeometryCollection(Point(5, 23), LineString((0, 0), (1.5, 1.5), (3, 3)), srid=32021)
- self.assertEqual(32021, gc.srid)
- for i in range(len(gc)): self.assertEqual(32021, gc[i].srid)
-
- # GEOS may get the SRID from HEXEWKB
- # 'POINT(5 23)' at SRID=4326 in hex form -- obtained from PostGIS
- # using `SELECT GeomFromText('POINT (5 23)', 4326);`.
- hex = '0101000020E610000000000000000014400000000000003740'
- p1 = fromstr(hex)
- self.assertEqual(4326, p1.srid)
-
- # In GEOS 3.0.0rc1-4 when the EWKB and/or HEXEWKB is exported,
- # the SRID information is lost and set to -1 -- this is not a
- # problem on the 3.0.0 version (another reason to upgrade).
- exp_srid = self.null_srid
-
- p2 = fromstr(p1.hex)
- self.assertEqual(exp_srid, p2.srid)
- p3 = fromstr(p1.hex, srid=-1) # -1 is intended.
- self.assertEqual(-1, p3.srid)
-
- @skipUnless(HAS_GDAL, "GDAL is required.")
- def test_custom_srid(self):
- """ Test with a srid unknown from GDAL """
- pnt = Point(111200, 220900, srid=999999)
- self.assertTrue(pnt.ewkt.startswith("SRID=999999;POINT (111200.0"))
- self.assertIsInstance(pnt.ogr, gdal.OGRGeometry)
- self.assertIsNone(pnt.srs)
-
- # Test conversion from custom to a known srid
- c2w = gdal.CoordTransform(
- gdal.SpatialReference('+proj=mill +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +R_A +ellps=WGS84 +datum=WGS84 +units=m +no_defs'),
- gdal.SpatialReference(4326))
- new_pnt = pnt.transform(c2w, clone=True)
- self.assertEqual(new_pnt.srid, 4326)
- self.assertAlmostEqual(new_pnt.x, 1, 3)
- self.assertAlmostEqual(new_pnt.y, 2, 3)
-
- def test_mutable_geometries(self):
- "Testing the mutability of Polygons and Geometry Collections."
- ### Testing the mutability of Polygons ###
- for p in self.geometries.polygons:
- poly = fromstr(p.wkt)
-
- # Should only be able to use __setitem__ with LinearRing geometries.
- self.assertRaises(TypeError, poly.__setitem__, 0, LineString((1, 1), (2, 2)))
-
- # Constructing the new shell by adding 500 to every point in the old shell.
- shell_tup = poly.shell.tuple
- new_coords = []
- for point in shell_tup: new_coords.append((point[0] + 500., point[1] + 500.))
- new_shell = LinearRing(*tuple(new_coords))
-
- # Assigning polygon's exterior ring w/the new shell
- poly.exterior_ring = new_shell
- s = str(new_shell) # new shell is still accessible
- self.assertEqual(poly.exterior_ring, new_shell)
- self.assertEqual(poly[0], new_shell)
-
- ### Testing the mutability of Geometry Collections
- for tg in self.geometries.multipoints:
- mp = fromstr(tg.wkt)
- for i in range(len(mp)):
- # Creating a random point.
- pnt = mp[i]
- new = Point(random.randint(21, 100), random.randint(21, 100))
- # Testing the assignment
- mp[i] = new
- s = str(new) # what was used for the assignment is still accessible
- self.assertEqual(mp[i], new)
- self.assertEqual(mp[i].wkt, new.wkt)
- self.assertNotEqual(pnt, mp[i])
-
- # MultiPolygons involve much more memory management because each
- # Polygon w/in the collection has its own rings.
- for tg in self.geometries.multipolygons:
- mpoly = fromstr(tg.wkt)
- for i in xrange(len(mpoly)):
- poly = mpoly[i]
- old_poly = mpoly[i]
- # Offsetting the each ring in the polygon by 500.
- for j in xrange(len(poly)):
- r = poly[j]
- for k in xrange(len(r)): r[k] = (r[k][0] + 500., r[k][1] + 500.)
- poly[j] = r
-
- self.assertNotEqual(mpoly[i], poly)
- # Testing the assignment
- mpoly[i] = poly
- s = str(poly) # Still accessible
- self.assertEqual(mpoly[i], poly)
- self.assertNotEqual(mpoly[i], old_poly)
-
- # Extreme (!!) __setitem__ -- no longer works, have to detect
- # in the first object that __setitem__ is called in the subsequent
- # objects -- maybe mpoly[0, 0, 0] = (3.14, 2.71)?
- #mpoly[0][0][0] = (3.14, 2.71)
- #self.assertEqual((3.14, 2.71), mpoly[0][0][0])
- # Doing it more slowly..
- #self.assertEqual((3.14, 2.71), mpoly[0].shell[0])
- #del mpoly
-
- def test_threed(self):
- "Testing three-dimensional geometries."
- # Testing a 3D Point
- pnt = Point(2, 3, 8)
- self.assertEqual((2.,3.,8.), pnt.coords)
- self.assertRaises(TypeError, pnt.set_coords, (1.,2.))
- pnt.coords = (1.,2.,3.)
- self.assertEqual((1.,2.,3.), pnt.coords)
-
- # Testing a 3D LineString
- ls = LineString((2., 3., 8.), (50., 250., -117.))
- self.assertEqual(((2.,3.,8.), (50.,250.,-117.)), ls.tuple)
- self.assertRaises(TypeError, ls.__setitem__, 0, (1.,2.))
- ls[0] = (1.,2.,3.)
- self.assertEqual((1.,2.,3.), ls[0])
-
- def test_distance(self):
- "Testing the distance() function."
- # Distance to self should be 0.
- pnt = Point(0, 0)
- self.assertEqual(0.0, pnt.distance(Point(0, 0)))
-
- # Distance should be 1
- self.assertEqual(1.0, pnt.distance(Point(0, 1)))
-
- # Distance should be ~ sqrt(2)
- self.assertAlmostEqual(1.41421356237, pnt.distance(Point(1, 1)), 11)
-
- # Distances are from the closest vertex in each geometry --
- # should be 3 (distance from (2, 2) to (5, 2)).
- ls1 = LineString((0, 0), (1, 1), (2, 2))
- ls2 = LineString((5, 2), (6, 1), (7, 0))
- self.assertEqual(3, ls1.distance(ls2))
-
- def test_length(self):
- "Testing the length property."
- # Points have 0 length.
- pnt = Point(0, 0)
- self.assertEqual(0.0, pnt.length)
-
- # Should be ~ sqrt(2)
- ls = LineString((0, 0), (1, 1))
- self.assertAlmostEqual(1.41421356237, ls.length, 11)
-
- # Should be circumfrence of Polygon
- poly = Polygon(LinearRing((0, 0), (0, 1), (1, 1), (1, 0), (0, 0)))
- self.assertEqual(4.0, poly.length)
-
- # Should be sum of each element's length in collection.
- mpoly = MultiPolygon(poly.clone(), poly)
- self.assertEqual(8.0, mpoly.length)
-
- def test_emptyCollections(self):
- "Testing empty geometries and collections."
- gc1 = GeometryCollection([])
- gc2 = fromstr('GEOMETRYCOLLECTION EMPTY')
- pnt = fromstr('POINT EMPTY')
- ls = fromstr('LINESTRING EMPTY')
- poly = fromstr('POLYGON EMPTY')
- mls = fromstr('MULTILINESTRING EMPTY')
- mpoly1 = fromstr('MULTIPOLYGON EMPTY')
- mpoly2 = MultiPolygon(())
-
- for g in [gc1, gc2, pnt, ls, poly, mls, mpoly1, mpoly2]:
- self.assertEqual(True, g.empty)
-
- # Testing len() and num_geom.
- if isinstance(g, Polygon):
- self.assertEqual(1, len(g)) # Has one empty linear ring
- self.assertEqual(1, g.num_geom)
- self.assertEqual(0, len(g[0]))
- elif isinstance(g, (Point, LineString)):
- self.assertEqual(1, g.num_geom)
- self.assertEqual(0, len(g))
- else:
- self.assertEqual(0, g.num_geom)
- self.assertEqual(0, len(g))
-
- # Testing __getitem__ (doesn't work on Point or Polygon)
- if isinstance(g, Point):
- self.assertRaises(GEOSIndexError, g.get_x)
- elif isinstance(g, Polygon):
- lr = g.shell
- self.assertEqual('LINEARRING EMPTY', lr.wkt)
- self.assertEqual(0, len(lr))
- self.assertEqual(True, lr.empty)
- self.assertRaises(GEOSIndexError, lr.__getitem__, 0)
- else:
- self.assertRaises(GEOSIndexError, g.__getitem__, 0)
-
- def test_collections_of_collections(self):
- "Testing GeometryCollection handling of other collections."
- # Creating a GeometryCollection WKT string composed of other
- # collections and polygons.
- coll = [mp.wkt for mp in self.geometries.multipolygons if mp.valid]
- coll.extend([mls.wkt for mls in self.geometries.multilinestrings])
- coll.extend([p.wkt for p in self.geometries.polygons])
- coll.extend([mp.wkt for mp in self.geometries.multipoints])
- gc_wkt = 'GEOMETRYCOLLECTION(%s)' % ','.join(coll)
-
- # Should construct ok from WKT
- gc1 = GEOSGeometry(gc_wkt)
-
- # Should also construct ok from individual geometry arguments.
- gc2 = GeometryCollection(*tuple(g for g in gc1))
-
- # And, they should be equal.
- self.assertEqual(gc1, gc2)
-
- @skipUnless(HAS_GDAL, "GDAL is required.")
- def test_gdal(self):
- "Testing `ogr` and `srs` properties."
- g1 = fromstr('POINT(5 23)')
- self.assertIsInstance(g1.ogr, gdal.OGRGeometry)
- self.assertIsNone(g1.srs)
-
- if GEOS_PREPARE:
- g1_3d = fromstr('POINT(5 23 8)')
- self.assertIsInstance(g1_3d.ogr, gdal.OGRGeometry)
- self.assertEqual(g1_3d.ogr.z, 8)
-
- g2 = fromstr('LINESTRING(0 0, 5 5, 23 23)', srid=4326)
- self.assertIsInstance(g2.ogr, gdal.OGRGeometry)
- self.assertIsInstance(g2.srs, gdal.SpatialReference)
- self.assertEqual(g2.hex, g2.ogr.hex)
- self.assertEqual('WGS 84', g2.srs.name)
-
- def test_copy(self):
- "Testing use with the Python `copy` module."
- import copy
- poly = GEOSGeometry('POLYGON((0 0, 0 23, 23 23, 23 0, 0 0), (5 5, 5 10, 10 10, 10 5, 5 5))')
- cpy1 = copy.copy(poly)
- cpy2 = copy.deepcopy(poly)
- self.assertNotEqual(poly._ptr, cpy1._ptr)
- self.assertNotEqual(poly._ptr, cpy2._ptr)
-
- @skipUnless(HAS_GDAL, "GDAL is required to transform geometries")
- def test_transform(self):
- "Testing `transform` method."
- orig = GEOSGeometry('POINT (-104.609 38.255)', 4326)
- trans = GEOSGeometry('POINT (992385.4472045 481455.4944650)', 2774)
-
- # Using a srid, a SpatialReference object, and a CoordTransform object
- # for transformations.
- t1, t2, t3 = orig.clone(), orig.clone(), orig.clone()
- t1.transform(trans.srid)
- t2.transform(gdal.SpatialReference('EPSG:2774'))
- ct = gdal.CoordTransform(gdal.SpatialReference('WGS84'), gdal.SpatialReference(2774))
- t3.transform(ct)
-
- # Testing use of the `clone` keyword.
- k1 = orig.clone()
- k2 = k1.transform(trans.srid, clone=True)
- self.assertEqual(k1, orig)
- self.assertNotEqual(k1, k2)
-
- prec = 3
- for p in (t1, t2, t3, k2):
- self.assertAlmostEqual(trans.x, p.x, prec)
- self.assertAlmostEqual(trans.y, p.y, prec)
-
- @skipUnless(HAS_GDAL, "GDAL is required to transform geometries")
- def test_transform_3d(self):
- p3d = GEOSGeometry('POINT (5 23 100)', 4326)
- p3d.transform(2774)
- if GEOS_PREPARE:
- self.assertEqual(p3d.z, 100)
- else:
- self.assertIsNone(p3d.z)
-
- @skipUnless(HAS_GDAL, "GDAL is required.")
- def test_transform_noop(self):
- """ Testing `transform` method (SRID match) """
- # transform() should no-op if source & dest SRIDs match,
- # regardless of whether GDAL is available.
- if gdal.HAS_GDAL:
- g = GEOSGeometry('POINT (-104.609 38.255)', 4326)
- gt = g.tuple
- g.transform(4326)
- self.assertEqual(g.tuple, gt)
- self.assertEqual(g.srid, 4326)
-
- g = GEOSGeometry('POINT (-104.609 38.255)', 4326)
- g1 = g.transform(4326, clone=True)
- self.assertEqual(g1.tuple, g.tuple)
- self.assertEqual(g1.srid, 4326)
- self.assertTrue(g1 is not g, "Clone didn't happen")
-
- old_has_gdal = gdal.HAS_GDAL
- try:
- gdal.HAS_GDAL = False
-
- g = GEOSGeometry('POINT (-104.609 38.255)', 4326)
- gt = g.tuple
- g.transform(4326)
- self.assertEqual(g.tuple, gt)
- self.assertEqual(g.srid, 4326)
-
- g = GEOSGeometry('POINT (-104.609 38.255)', 4326)
- g1 = g.transform(4326, clone=True)
- self.assertEqual(g1.tuple, g.tuple)
- self.assertEqual(g1.srid, 4326)
- self.assertTrue(g1 is not g, "Clone didn't happen")
- finally:
- gdal.HAS_GDAL = old_has_gdal
-
- def test_transform_nosrid(self):
- """ Testing `transform` method (no SRID or negative SRID) """
-
- g = GEOSGeometry('POINT (-104.609 38.255)', srid=None)
- self.assertRaises(GEOSException, g.transform, 2774)
-
- g = GEOSGeometry('POINT (-104.609 38.255)', srid=None)
- self.assertRaises(GEOSException, g.transform, 2774, clone=True)
-
- g = GEOSGeometry('POINT (-104.609 38.255)', srid=-1)
- self.assertRaises(GEOSException, g.transform, 2774)
-
- g = GEOSGeometry('POINT (-104.609 38.255)', srid=-1)
- self.assertRaises(GEOSException, g.transform, 2774, clone=True)
-
- @skipUnless(HAS_GDAL, "GDAL is required.")
- def test_transform_nogdal(self):
- """ Testing `transform` method (GDAL not available) """
- old_has_gdal = gdal.HAS_GDAL
- try:
- gdal.HAS_GDAL = False
-
- g = GEOSGeometry('POINT (-104.609 38.255)', 4326)
- self.assertRaises(GEOSException, g.transform, 2774)
-
- g = GEOSGeometry('POINT (-104.609 38.255)', 4326)
- self.assertRaises(GEOSException, g.transform, 2774, clone=True)
- finally:
- gdal.HAS_GDAL = old_has_gdal
-
- def test_extent(self):
- "Testing `extent` method."
- # The xmin, ymin, xmax, ymax of the MultiPoint should be returned.
- mp = MultiPoint(Point(5, 23), Point(0, 0), Point(10, 50))
- self.assertEqual((0.0, 0.0, 10.0, 50.0), mp.extent)
- pnt = Point(5.23, 17.8)
- # Extent of points is just the point itself repeated.
- self.assertEqual((5.23, 17.8, 5.23, 17.8), pnt.extent)
- # Testing on the 'real world' Polygon.
- poly = fromstr(self.geometries.polygons[3].wkt)
- ring = poly.shell
- x, y = ring.x, ring.y
- xmin, ymin = min(x), min(y)
- xmax, ymax = max(x), max(y)
- self.assertEqual((xmin, ymin, xmax, ymax), poly.extent)
-
- def test_pickle(self):
- "Testing pickling and unpickling support."
- # Using both pickle and cPickle -- just 'cause.
- from django.utils.six.moves import cPickle
- import pickle
-
- # Creating a list of test geometries for pickling,
- # and setting the SRID on some of them.
- def get_geoms(lst, srid=None):
- return [GEOSGeometry(tg.wkt, srid) for tg in lst]
- tgeoms = get_geoms(self.geometries.points)
- tgeoms.extend(get_geoms(self.geometries.multilinestrings, 4326))
- tgeoms.extend(get_geoms(self.geometries.polygons, 3084))
- tgeoms.extend(get_geoms(self.geometries.multipolygons, 900913))
-
- # The SRID won't be exported in GEOS 3.0 release candidates.
- no_srid = self.null_srid == -1
- for geom in tgeoms:
- s1, s2 = cPickle.dumps(geom), pickle.dumps(geom)
- g1, g2 = cPickle.loads(s1), pickle.loads(s2)
- for tmpg in (g1, g2):
- self.assertEqual(geom, tmpg)
- if not no_srid: self.assertEqual(geom.srid, tmpg.srid)
-
- @skipUnless(HAS_GEOS and GEOS_PREPARE, "geos >= 3.1.0 is required")
- def test_prepared(self):
- "Testing PreparedGeometry support."
- # Creating a simple multipolygon and getting a prepared version.
- mpoly = GEOSGeometry('MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))')
- prep = mpoly.prepared
-
- # A set of test points.
- pnts = [Point(5, 5), Point(7.5, 7.5), Point(2.5, 7.5)]
- covers = [True, True, False] # No `covers` op for regular GEOS geoms.
- for pnt, c in zip(pnts, covers):
- # Results should be the same (but faster)
- self.assertEqual(mpoly.contains(pnt), prep.contains(pnt))
- self.assertEqual(mpoly.intersects(pnt), prep.intersects(pnt))
- self.assertEqual(c, prep.covers(pnt))
-
- # Original geometry deletion should not crash the prepared one (#21662)
- del mpoly
- self.assertTrue(prep.covers(Point(5, 5)))
-
- def test_line_merge(self):
- "Testing line merge support"
- ref_geoms = (fromstr('LINESTRING(1 1, 1 1, 3 3)'),
- fromstr('MULTILINESTRING((1 1, 3 3), (3 3, 4 2))'),
- )
- ref_merged = (fromstr('LINESTRING(1 1, 3 3)'),
- fromstr('LINESTRING (1 1, 3 3, 4 2)'),
- )
- for geom, merged in zip(ref_geoms, ref_merged):
- self.assertEqual(merged, geom.merged)
-
- @skipUnless(HAS_GEOS and GEOS_PREPARE, "geos >= 3.1.0 is required")
- def test_valid_reason(self):
- "Testing IsValidReason support"
-
- g = GEOSGeometry("POINT(0 0)")
- self.assertTrue(g.valid)
- self.assertIsInstance(g.valid_reason, six.string_types)
- self.assertEqual(g.valid_reason, "Valid Geometry")
-
- g = GEOSGeometry("LINESTRING(0 0, 0 0)")
-
- self.assertFalse(g.valid)
- self.assertIsInstance(g.valid_reason, six.string_types)
- self.assertTrue(g.valid_reason.startswith("Too few points in geometry component"))
-
- @skipUnless(HAS_GEOS and geos_version_info()['version'] >= '3.2.0', "geos >= 3.2.0 is required")
- def test_linearref(self):
- "Testing linear referencing"
-
- ls = fromstr('LINESTRING(0 0, 0 10, 10 10, 10 0)')
- mls = fromstr('MULTILINESTRING((0 0, 0 10), (10 0, 10 10))')
-
- self.assertEqual(ls.project(Point(0, 20)), 10.0)
- self.assertEqual(ls.project(Point(7, 6)), 24)
- self.assertEqual(ls.project_normalized(Point(0, 20)), 1.0/3)
-
- self.assertEqual(ls.interpolate(10), Point(0, 10))
- self.assertEqual(ls.interpolate(24), Point(10, 6))
- self.assertEqual(ls.interpolate_normalized(1.0/3), Point(0, 10))
-
- self.assertEqual(mls.project(Point(0, 20)), 10)
- self.assertEqual(mls.project(Point(7, 6)), 16)
-
- self.assertEqual(mls.interpolate(9), Point(0, 9))
- self.assertEqual(mls.interpolate(17), Point(10, 7))
-
- def test_geos_version(self):
- """Testing the GEOS version regular expression."""
- from django.contrib.gis.geos.libgeos import version_regex
- versions = [('3.0.0rc4-CAPI-1.3.3', '3.0.0', '1.3.3'),
- ('3.0.0-CAPI-1.4.1', '3.0.0', '1.4.1'),
- ('3.4.0dev-CAPI-1.8.0', '3.4.0', '1.8.0'),
- ('3.4.0dev-CAPI-1.8.0 r0', '3.4.0', '1.8.0')]
- for v_init, v_geos, v_capi in versions:
- m = version_regex.match(v_init)
- self.assertTrue(m, msg="Unable to parse the version string '%s'" % v_init)
- self.assertEqual(m.group('version'), v_geos)
- self.assertEqual(m.group('capi_version'), v_capi)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/tests/test_geos_mutation.py b/lib/python2.7/site-packages/django/contrib/gis/geos/tests/test_geos_mutation.py
deleted file mode 100644
index 40b708a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/tests/test_geos_mutation.py
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2008-2009 Aryeh Leib Taurog, all rights reserved.
-# Modified from original contribution by Aryeh Leib Taurog, which was
-# released under the New BSD license.
-
-from django.utils import unittest
-from django.utils.unittest import skipUnless
-
-from .. import HAS_GEOS
-
-if HAS_GEOS:
- from .. import *
- from ..error import GEOSIndexError
-
-
-def getItem(o,i): return o[i]
-def delItem(o,i): del o[i]
-def setItem(o,i,v): o[i] = v
-
-if HAS_GEOS:
- def api_get_distance(x): return x.distance(Point(-200,-200))
-
-def api_get_buffer(x): return x.buffer(10)
-def api_get_geom_typeid(x): return x.geom_typeid
-def api_get_num_coords(x): return x.num_coords
-def api_get_centroid(x): return x.centroid
-def api_get_empty(x): return x.empty
-def api_get_valid(x): return x.valid
-def api_get_simple(x): return x.simple
-def api_get_ring(x): return x.ring
-def api_get_boundary(x): return x.boundary
-def api_get_convex_hull(x): return x.convex_hull
-def api_get_extent(x): return x.extent
-def api_get_area(x): return x.area
-def api_get_length(x): return x.length
-
-geos_function_tests = [ val for name, val in vars().items()
- if hasattr(val, '__call__')
- and name.startswith('api_get_') ]
-
-
-@skipUnless(HAS_GEOS, "Geos is required.")
-class GEOSMutationTest(unittest.TestCase):
- """
- Tests Pythonic Mutability of Python GEOS geometry wrappers
- get/set/delitem on a slice, normal list methods
- """
-
- def test00_GEOSIndexException(self):
- 'Testing Geometry GEOSIndexError'
- p = Point(1,2)
- for i in range(-2,2): p._checkindex(i)
- self.assertRaises(GEOSIndexError, p._checkindex, 2)
- self.assertRaises(GEOSIndexError, p._checkindex, -3)
-
- def test01_PointMutations(self):
- 'Testing Point mutations'
- for p in (Point(1,2,3), fromstr('POINT (1 2 3)')):
- self.assertEqual(p._get_single_external(1), 2.0, 'Point _get_single_external')
-
- # _set_single
- p._set_single(0,100)
- self.assertEqual(p.coords, (100.0,2.0,3.0), 'Point _set_single')
-
- # _set_list
- p._set_list(2,(50,3141))
- self.assertEqual(p.coords, (50.0,3141.0), 'Point _set_list')
-
- def test02_PointExceptions(self):
- 'Testing Point exceptions'
- self.assertRaises(TypeError, Point, range(1))
- self.assertRaises(TypeError, Point, range(4))
-
- def test03_PointApi(self):
- 'Testing Point API'
- q = Point(4,5,3)
- for p in (Point(1,2,3), fromstr('POINT (1 2 3)')):
- p[0:2] = [4,5]
- for f in geos_function_tests:
- self.assertEqual(f(q), f(p), 'Point ' + f.__name__)
-
- def test04_LineStringMutations(self):
- 'Testing LineString mutations'
- for ls in (LineString((1,0),(4,1),(6,-1)),
- fromstr('LINESTRING (1 0,4 1,6 -1)')):
- self.assertEqual(ls._get_single_external(1), (4.0,1.0), 'LineString _get_single_external')
-
- # _set_single
- ls._set_single(0,(-50,25))
- self.assertEqual(ls.coords, ((-50.0,25.0),(4.0,1.0),(6.0,-1.0)), 'LineString _set_single')
-
- # _set_list
- ls._set_list(2, ((-50.0,25.0),(6.0,-1.0)))
- self.assertEqual(ls.coords, ((-50.0,25.0),(6.0,-1.0)), 'LineString _set_list')
-
- lsa = LineString(ls.coords)
- for f in geos_function_tests:
- self.assertEqual(f(lsa), f(ls), 'LineString ' + f.__name__)
-
- def test05_Polygon(self):
- 'Testing Polygon mutations'
- for pg in (Polygon(((1,0),(4,1),(6,-1),(8,10),(1,0)),
- ((5,4),(6,4),(6,3),(5,4))),
- fromstr('POLYGON ((1 0,4 1,6 -1,8 10,1 0),(5 4,6 4,6 3,5 4))')):
- self.assertEqual(pg._get_single_external(0),
- LinearRing((1,0),(4,1),(6,-1),(8,10),(1,0)),
- 'Polygon _get_single_external(0)')
- self.assertEqual(pg._get_single_external(1),
- LinearRing((5,4),(6,4),(6,3),(5,4)),
- 'Polygon _get_single_external(1)')
-
- # _set_list
- pg._set_list(2, (((1,2),(10,0),(12,9),(-1,15),(1,2)),
- ((4,2),(5,2),(5,3),(4,2))))
- self.assertEqual(pg.coords,
- (((1.0,2.0),(10.0,0.0),(12.0,9.0),(-1.0,15.0),(1.0,2.0)),
- ((4.0,2.0),(5.0,2.0),(5.0,3.0),(4.0,2.0))),
- 'Polygon _set_list')
-
- lsa = Polygon(*pg.coords)
- for f in geos_function_tests:
- self.assertEqual(f(lsa), f(pg), 'Polygon ' + f.__name__)
-
- def test06_Collection(self):
- 'Testing Collection mutations'
- for mp in (MultiPoint(*map(Point,((3,4),(-1,2),(5,-4),(2,8)))),
- fromstr('MULTIPOINT (3 4,-1 2,5 -4,2 8)')):
- self.assertEqual(mp._get_single_external(2), Point(5,-4), 'Collection _get_single_external')
-
- mp._set_list(3, map(Point,((5,5),(3,-2),(8,1))))
- self.assertEqual(mp.coords, ((5.0,5.0),(3.0,-2.0),(8.0,1.0)), 'Collection _set_list')
-
- lsa = MultiPoint(*map(Point,((5,5),(3,-2),(8,1))))
- for f in geos_function_tests:
- self.assertEqual(f(lsa), f(mp), 'MultiPoint ' + f.__name__)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/tests/test_io.py b/lib/python2.7/site-packages/django/contrib/gis/geos/tests/test_io.py
deleted file mode 100644
index 34eeaf9..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/tests/test_io.py
+++ /dev/null
@@ -1,116 +0,0 @@
-from __future__ import unicode_literals
-
-import binascii
-import unittest
-
-from django.contrib.gis import memoryview
-from django.utils.unittest import skipUnless
-
-from ..import HAS_GEOS
-
-if HAS_GEOS:
- from .. import GEOSGeometry, WKTReader, WKTWriter, WKBReader, WKBWriter, geos_version_info
-
-
-@skipUnless(HAS_GEOS, "Geos is required.")
-class GEOSIOTest(unittest.TestCase):
-
- def test01_wktreader(self):
- # Creating a WKTReader instance
- wkt_r = WKTReader()
- wkt = 'POINT (5 23)'
-
- # read() should return a GEOSGeometry
- ref = GEOSGeometry(wkt)
- g1 = wkt_r.read(wkt.encode())
- g2 = wkt_r.read(wkt)
-
- for geom in (g1, g2):
- self.assertEqual(ref, geom)
-
- # Should only accept six.string_types objects.
- self.assertRaises(TypeError, wkt_r.read, 1)
- self.assertRaises(TypeError, wkt_r.read, memoryview(b'foo'))
-
- def test02_wktwriter(self):
- # Creating a WKTWriter instance, testing its ptr property.
- wkt_w = WKTWriter()
- self.assertRaises(TypeError, wkt_w._set_ptr, WKTReader.ptr_type())
-
- ref = GEOSGeometry('POINT (5 23)')
- ref_wkt = 'POINT (5.0000000000000000 23.0000000000000000)'
- self.assertEqual(ref_wkt, wkt_w.write(ref).decode())
-
- def test03_wkbreader(self):
- # Creating a WKBReader instance
- wkb_r = WKBReader()
-
- hex = b'000000000140140000000000004037000000000000'
- wkb = memoryview(binascii.a2b_hex(hex))
- ref = GEOSGeometry(hex)
-
- # read() should return a GEOSGeometry on either a hex string or
- # a WKB buffer.
- g1 = wkb_r.read(wkb)
- g2 = wkb_r.read(hex)
- for geom in (g1, g2):
- self.assertEqual(ref, geom)
-
- bad_input = (1, 5.23, None, False)
- for bad_wkb in bad_input:
- self.assertRaises(TypeError, wkb_r.read, bad_wkb)
-
- def test04_wkbwriter(self):
- wkb_w = WKBWriter()
-
- # Representations of 'POINT (5 23)' in hex -- one normal and
- # the other with the byte order changed.
- g = GEOSGeometry('POINT (5 23)')
- hex1 = b'010100000000000000000014400000000000003740'
- wkb1 = memoryview(binascii.a2b_hex(hex1))
- hex2 = b'000000000140140000000000004037000000000000'
- wkb2 = memoryview(binascii.a2b_hex(hex2))
-
- self.assertEqual(hex1, wkb_w.write_hex(g))
- self.assertEqual(wkb1, wkb_w.write(g))
-
- # Ensuring bad byteorders are not accepted.
- for bad_byteorder in (-1, 2, 523, 'foo', None):
- # Equivalent of `wkb_w.byteorder = bad_byteorder`
- self.assertRaises(ValueError, wkb_w._set_byteorder, bad_byteorder)
-
- # Setting the byteorder to 0 (for Big Endian)
- wkb_w.byteorder = 0
- self.assertEqual(hex2, wkb_w.write_hex(g))
- self.assertEqual(wkb2, wkb_w.write(g))
-
- # Back to Little Endian
- wkb_w.byteorder = 1
-
- # Now, trying out the 3D and SRID flags.
- g = GEOSGeometry('POINT (5 23 17)')
- g.srid = 4326
-
- hex3d = b'0101000080000000000000144000000000000037400000000000003140'
- wkb3d = memoryview(binascii.a2b_hex(hex3d))
- hex3d_srid = b'01010000A0E6100000000000000000144000000000000037400000000000003140'
- wkb3d_srid = memoryview(binascii.a2b_hex(hex3d_srid))
-
- # Ensuring bad output dimensions are not accepted
- for bad_outdim in (-1, 0, 1, 4, 423, 'foo', None):
- # Equivalent of `wkb_w.outdim = bad_outdim`
- self.assertRaises(ValueError, wkb_w._set_outdim, bad_outdim)
-
- # These tests will fail on 3.0.0 because of a bug that was fixed in 3.1:
- # http://trac.osgeo.org/geos/ticket/216
- if not geos_version_info()['version'].startswith('3.0.'):
- # Now setting the output dimensions to be 3
- wkb_w.outdim = 3
-
- self.assertEqual(hex3d, wkb_w.write_hex(g))
- self.assertEqual(wkb3d, wkb_w.write(g))
-
- # Telling the WKBWriter to include the srid in the representation.
- wkb_w.srid = True
- self.assertEqual(hex3d_srid, wkb_w.write_hex(g))
- self.assertEqual(wkb3d_srid, wkb_w.write(g))
diff --git a/lib/python2.7/site-packages/django/contrib/gis/geos/tests/test_mutable_list.py b/lib/python2.7/site-packages/django/contrib/gis/geos/tests/test_mutable_list.py
deleted file mode 100644
index a4a56f2..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/geos/tests/test_mutable_list.py
+++ /dev/null
@@ -1,397 +0,0 @@
-# Copyright (c) 2008-2009 Aryeh Leib Taurog, http://www.aryehleib.com
-# All rights reserved.
-#
-# Modified from original contribution by Aryeh Leib Taurog, which was
-# released under the New BSD license.
-from django.contrib.gis.geos.mutable_list import ListMixin
-from django.utils import six
-from django.utils import unittest
-
-
-class UserListA(ListMixin):
- _mytype = tuple
- def __init__(self, i_list, *args, **kwargs):
- self._list = self._mytype(i_list)
- super(UserListA, self).__init__(*args, **kwargs)
-
- def __len__(self): return len(self._list)
-
- def __str__(self): return str(self._list)
-
- def __repr__(self): return repr(self._list)
-
- def _set_list(self, length, items):
- # this would work:
- # self._list = self._mytype(items)
- # but then we wouldn't be testing length parameter
- itemList = ['x'] * length
- for i, v in enumerate(items):
- itemList[i] = v
-
- self._list = self._mytype(itemList)
-
- def _get_single_external(self, index):
- return self._list[index]
-
-class UserListB(UserListA):
- _mytype = list
-
- def _set_single(self, index, value):
- self._list[index] = value
-
-def nextRange(length):
- nextRange.start += 100
- return range(nextRange.start, nextRange.start + length)
-
-nextRange.start = 0
-
-class ListMixinTest(unittest.TestCase):
- """
- Tests base class ListMixin by comparing a list clone which is
- a ListMixin subclass with a real Python list.
- """
- limit = 3
- listType = UserListA
-
- def lists_of_len(self, length=None):
- if length is None: length = self.limit
- pl = list(range(length))
- return pl, self.listType(pl)
-
- def limits_plus(self, b):
- return range(-self.limit - b, self.limit + b)
-
- def step_range(self):
- return list(range(-1 - self.limit, 0)) + list(range(1, 1 + self.limit))
-
- def test01_getslice(self):
- 'Slice retrieval'
- pl, ul = self.lists_of_len()
- for i in self.limits_plus(1):
- self.assertEqual(pl[i:], ul[i:], 'slice [%d:]' % (i))
- self.assertEqual(pl[:i], ul[:i], 'slice [:%d]' % (i))
-
- for j in self.limits_plus(1):
- self.assertEqual(pl[i:j], ul[i:j], 'slice [%d:%d]' % (i,j))
- for k in self.step_range():
- self.assertEqual(pl[i:j:k], ul[i:j:k], 'slice [%d:%d:%d]' % (i,j,k))
-
- for k in self.step_range():
- self.assertEqual(pl[i::k], ul[i::k], 'slice [%d::%d]' % (i,k))
- self.assertEqual(pl[:i:k], ul[:i:k], 'slice [:%d:%d]' % (i,k))
-
- for k in self.step_range():
- self.assertEqual(pl[::k], ul[::k], 'slice [::%d]' % (k))
-
- def test02_setslice(self):
- 'Slice assignment'
- def setfcn(x,i,j,k,L): x[i:j:k] = range(L)
- pl, ul = self.lists_of_len()
- for slen in range(self.limit + 1):
- ssl = nextRange(slen)
- ul[:] = ssl
- pl[:] = ssl
- self.assertEqual(pl, ul[:], 'set slice [:]')
-
- for i in self.limits_plus(1):
- ssl = nextRange(slen)
- ul[i:] = ssl
- pl[i:] = ssl
- self.assertEqual(pl, ul[:], 'set slice [%d:]' % (i))
-
- ssl = nextRange(slen)
- ul[:i] = ssl
- pl[:i] = ssl
- self.assertEqual(pl, ul[:], 'set slice [:%d]' % (i))
-
- for j in self.limits_plus(1):
- ssl = nextRange(slen)
- ul[i:j] = ssl
- pl[i:j] = ssl
- self.assertEqual(pl, ul[:], 'set slice [%d:%d]' % (i, j))
-
- for k in self.step_range():
- ssl = nextRange( len(ul[i:j:k]) )
- ul[i:j:k] = ssl
- pl[i:j:k] = ssl
- self.assertEqual(pl, ul[:], 'set slice [%d:%d:%d]' % (i, j, k))
-
- sliceLen = len(ul[i:j:k])
- self.assertRaises(ValueError, setfcn, ul, i, j, k, sliceLen + 1)
- if sliceLen > 2:
- self.assertRaises(ValueError, setfcn, ul, i, j, k, sliceLen - 1)
-
- for k in self.step_range():
- ssl = nextRange( len(ul[i::k]) )
- ul[i::k] = ssl
- pl[i::k] = ssl
- self.assertEqual(pl, ul[:], 'set slice [%d::%d]' % (i, k))
-
- ssl = nextRange( len(ul[:i:k]) )
- ul[:i:k] = ssl
- pl[:i:k] = ssl
- self.assertEqual(pl, ul[:], 'set slice [:%d:%d]' % (i, k))
-
- for k in self.step_range():
- ssl = nextRange(len(ul[::k]))
- ul[::k] = ssl
- pl[::k] = ssl
- self.assertEqual(pl, ul[:], 'set slice [::%d]' % (k))
-
-
- def test03_delslice(self):
- 'Delete slice'
- for Len in range(self.limit):
- pl, ul = self.lists_of_len(Len)
- del pl[:]
- del ul[:]
- self.assertEqual(pl[:], ul[:], 'del slice [:]')
- for i in range(-Len - 1, Len + 1):
- pl, ul = self.lists_of_len(Len)
- del pl[i:]
- del ul[i:]
- self.assertEqual(pl[:], ul[:], 'del slice [%d:]' % (i))
- pl, ul = self.lists_of_len(Len)
- del pl[:i]
- del ul[:i]
- self.assertEqual(pl[:], ul[:], 'del slice [:%d]' % (i))
- for j in range(-Len - 1, Len + 1):
- pl, ul = self.lists_of_len(Len)
- del pl[i:j]
- del ul[i:j]
- self.assertEqual(pl[:], ul[:], 'del slice [%d:%d]' % (i,j))
- for k in list(range(-Len - 1, 0)) + list(range(1, Len)):
- pl, ul = self.lists_of_len(Len)
- del pl[i:j:k]
- del ul[i:j:k]
- self.assertEqual(pl[:], ul[:], 'del slice [%d:%d:%d]' % (i,j,k))
-
- for k in list(range(-Len - 1, 0)) + list(range(1, Len)):
- pl, ul = self.lists_of_len(Len)
- del pl[:i:k]
- del ul[:i:k]
- self.assertEqual(pl[:], ul[:], 'del slice [:%d:%d]' % (i,k))
-
- pl, ul = self.lists_of_len(Len)
- del pl[i::k]
- del ul[i::k]
- self.assertEqual(pl[:], ul[:], 'del slice [%d::%d]' % (i,k))
-
- for k in list(range(-Len - 1, 0)) + list(range(1, Len)):
- pl, ul = self.lists_of_len(Len)
- del pl[::k]
- del ul[::k]
- self.assertEqual(pl[:], ul[:], 'del slice [::%d]' % (k))
-
- def test04_get_set_del_single(self):
- 'Get/set/delete single item'
- pl, ul = self.lists_of_len()
- for i in self.limits_plus(0):
- self.assertEqual(pl[i], ul[i], 'get single item [%d]' % i)
-
- for i in self.limits_plus(0):
- pl, ul = self.lists_of_len()
- pl[i] = 100
- ul[i] = 100
- self.assertEqual(pl[:], ul[:], 'set single item [%d]' % i)
-
- for i in self.limits_plus(0):
- pl, ul = self.lists_of_len()
- del pl[i]
- del ul[i]
- self.assertEqual(pl[:], ul[:], 'del single item [%d]' % i)
-
- def test05_out_of_range_exceptions(self):
- 'Out of range exceptions'
- def setfcn(x, i): x[i] = 20
- def getfcn(x, i): return x[i]
- def delfcn(x, i): del x[i]
- pl, ul = self.lists_of_len()
- for i in (-1 - self.limit, self.limit):
- self.assertRaises(IndexError, setfcn, ul, i) # 'set index %d' % i)
- self.assertRaises(IndexError, getfcn, ul, i) # 'get index %d' % i)
- self.assertRaises(IndexError, delfcn, ul, i) # 'del index %d' % i)
-
- def test06_list_methods(self):
- 'List methods'
- pl, ul = self.lists_of_len()
- pl.append(40)
- ul.append(40)
- self.assertEqual(pl[:], ul[:], 'append')
-
- pl.extend(range(50,55))
- ul.extend(range(50,55))
- self.assertEqual(pl[:], ul[:], 'extend')
-
- pl.reverse()
- ul.reverse()
- self.assertEqual(pl[:], ul[:], 'reverse')
-
- for i in self.limits_plus(1):
- pl, ul = self.lists_of_len()
- pl.insert(i,50)
- ul.insert(i,50)
- self.assertEqual(pl[:], ul[:], 'insert at %d' % i)
-
- for i in self.limits_plus(0):
- pl, ul = self.lists_of_len()
- self.assertEqual(pl.pop(i), ul.pop(i), 'popped value at %d' % i)
- self.assertEqual(pl[:], ul[:], 'after pop at %d' % i)
-
- pl, ul = self.lists_of_len()
- self.assertEqual(pl.pop(), ul.pop(i), 'popped value')
- self.assertEqual(pl[:], ul[:], 'after pop')
-
- pl, ul = self.lists_of_len()
- def popfcn(x, i): x.pop(i)
- self.assertRaises(IndexError, popfcn, ul, self.limit)
- self.assertRaises(IndexError, popfcn, ul, -1 - self.limit)
-
- pl, ul = self.lists_of_len()
- for val in range(self.limit):
- self.assertEqual(pl.index(val), ul.index(val), 'index of %d' % val)
-
- for val in self.limits_plus(2):
- self.assertEqual(pl.count(val), ul.count(val), 'count %d' % val)
-
- for val in range(self.limit):
- pl, ul = self.lists_of_len()
- pl.remove(val)
- ul.remove(val)
- self.assertEqual(pl[:], ul[:], 'after remove val %d' % val)
-
- def indexfcn(x, v): return x.index(v)
- def removefcn(x, v): return x.remove(v)
- self.assertRaises(ValueError, indexfcn, ul, 40)
- self.assertRaises(ValueError, removefcn, ul, 40)
-
- def test07_allowed_types(self):
- 'Type-restricted list'
- pl, ul = self.lists_of_len()
- ul._allowed = six.integer_types
- ul[1] = 50
- ul[:2] = [60, 70, 80]
- def setfcn(x, i, v): x[i] = v
- self.assertRaises(TypeError, setfcn, ul, 2, 'hello')
- self.assertRaises(TypeError, setfcn, ul, slice(0,3,2), ('hello','goodbye'))
-
- def test08_min_length(self):
- 'Length limits'
- pl, ul = self.lists_of_len()
- ul._minlength = 1
- def delfcn(x,i): del x[:i]
- def setfcn(x,i): x[:i] = []
- for i in range(self.limit - ul._minlength + 1, self.limit + 1):
- self.assertRaises(ValueError, delfcn, ul, i)
- self.assertRaises(ValueError, setfcn, ul, i)
- del ul[:ul._minlength]
-
- ul._maxlength = 4
- for i in range(0, ul._maxlength - len(ul)):
- ul.append(i)
- self.assertRaises(ValueError, ul.append, 10)
-
- def test09_iterable_check(self):
- 'Error on assigning non-iterable to slice'
- pl, ul = self.lists_of_len(self.limit + 1)
- def setfcn(x, i, v): x[i] = v
- self.assertRaises(TypeError, setfcn, ul, slice(0,3,2), 2)
-
- def test10_checkindex(self):
- 'Index check'
- pl, ul = self.lists_of_len()
- for i in self.limits_plus(0):
- if i < 0:
- self.assertEqual(ul._checkindex(i), i + self.limit, '_checkindex(neg index)')
- else:
- self.assertEqual(ul._checkindex(i), i, '_checkindex(pos index)')
-
- for i in (-self.limit - 1, self.limit):
- self.assertRaises(IndexError, ul._checkindex, i)
-
- ul._IndexError = TypeError
- self.assertRaises(TypeError, ul._checkindex, -self.limit - 1)
-
- def test_11_sorting(self):
- 'Sorting'
- pl, ul = self.lists_of_len()
- pl.insert(0, pl.pop())
- ul.insert(0, ul.pop())
- pl.sort()
- ul.sort()
- self.assertEqual(pl[:], ul[:], 'sort')
- mid = pl[len(pl) // 2]
- pl.sort(key=lambda x: (mid-x)**2)
- ul.sort(key=lambda x: (mid-x)**2)
- self.assertEqual(pl[:], ul[:], 'sort w/ key')
-
- pl.insert(0, pl.pop())
- ul.insert(0, ul.pop())
- pl.sort(reverse=True)
- ul.sort(reverse=True)
- self.assertEqual(pl[:], ul[:], 'sort w/ reverse')
- mid = pl[len(pl) // 2]
- pl.sort(key=lambda x: (mid-x)**2)
- ul.sort(key=lambda x: (mid-x)**2)
- self.assertEqual(pl[:], ul[:], 'sort w/ key')
-
- def test_12_arithmetic(self):
- 'Arithmetic'
- pl, ul = self.lists_of_len()
- al = list(range(10,14))
- self.assertEqual(list(pl + al), list(ul + al), 'add')
- self.assertEqual(type(ul), type(ul + al), 'type of add result')
- self.assertEqual(list(al + pl), list(al + ul), 'radd')
- self.assertEqual(type(al), type(al + ul), 'type of radd result')
- objid = id(ul)
- pl += al
- ul += al
- self.assertEqual(pl[:], ul[:], 'in-place add')
- self.assertEqual(objid, id(ul), 'in-place add id')
-
- for n in (-1,0,1,3):
- pl, ul = self.lists_of_len()
- self.assertEqual(list(pl * n), list(ul * n), 'mul by %d' % n)
- self.assertEqual(type(ul), type(ul * n), 'type of mul by %d result' % n)
- self.assertEqual(list(n * pl), list(n * ul), 'rmul by %d' % n)
- self.assertEqual(type(ul), type(n * ul), 'type of rmul by %d result' % n)
- objid = id(ul)
- pl *= n
- ul *= n
- self.assertEqual(pl[:], ul[:], 'in-place mul by %d' % n)
- self.assertEqual(objid, id(ul), 'in-place mul by %d id' % n)
-
- pl, ul = self.lists_of_len()
- self.assertEqual(pl, ul, 'cmp for equal')
- self.assertFalse(ul == pl + [2], 'cmp for not equal')
- self.assertTrue(pl >= ul, 'cmp for gte self')
- self.assertTrue(pl <= ul, 'cmp for lte self')
- self.assertTrue(ul >= pl, 'cmp for self gte')
- self.assertTrue(ul <= pl, 'cmp for self lte')
-
- self.assertTrue(pl + [5] > ul, 'cmp')
- self.assertTrue(pl + [5] >= ul, 'cmp')
- self.assertTrue(pl < ul + [2], 'cmp')
- self.assertTrue(pl <= ul + [2], 'cmp')
- self.assertTrue(ul + [5] > pl, 'cmp')
- self.assertTrue(ul + [5] >= pl, 'cmp')
- self.assertTrue(ul < pl + [2], 'cmp')
- self.assertTrue(ul <= pl + [2], 'cmp')
-
- # Also works with a custom IndexError
- ul_longer = ul + [2]
- ul_longer._IndexError = TypeError
- ul._IndexError = TypeError
- self.assertFalse(ul_longer == pl)
- self.assertFalse(ul == ul_longer)
- self.assertTrue(ul_longer > ul)
-
- pl[1] = 20
- self.assertTrue(pl > ul, 'cmp for gt self')
- self.assertTrue(ul < pl, 'cmp for self lt')
- pl[1] = -20
- self.assertTrue(pl < ul, 'cmp for lt self')
- self.assertTrue(pl < ul, 'cmp for lt self')
-
-class ListMixinTestSingle(ListMixinTest):
- listType = UserListB
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ar/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/ar/LC_MESSAGES/django.mo
deleted file mode 100644
index f210eff..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ar/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ar/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/ar/LC_MESSAGES/django.po
deleted file mode 100644
index d02c771..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ar/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# dado_eyad <d.eyad.t@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-28 09:52+0000\n"
-"Last-Translator: dado_eyad <d.eyad.t@gmail.com>\n"
-"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/"
-"ar/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "حقل GIS الأساسي -- مُرتبط بنوع مواصفات OpenGIS الهندسية."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "نقطة إحداثية"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "سطر تسلسل أحرف"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "مُضلّع إحداثي"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "نقاط إحداثية"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "تسلسل أحرف متعدد الأسطر"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "مجموعة مُضلعات إحداثية"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "مجموعة إحداثية"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "لم تُدخل أي أحداثيات."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "الإحداثيات غير صحيحة."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "نوع الإحداثيات غير صحيح."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "حدث خطأ أثناء تحويل geometry إلى حقل SRID."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "لا يوجد خريطة موقع للقسم: %r "
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "الصفحة %s فارغة"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "لا يوجد صفحة بالإسم '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/az/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/az/LC_MESSAGES/django.mo
deleted file mode 100644
index 5a8ed32..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/az/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/az/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/az/LC_MESSAGES/django.po
deleted file mode 100644
index 3544e66..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/az/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Ismayilov <ali@ismailov.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/"
-"language/az/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: az\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Əsas GIS sahəsi OpenGIS Müəyyənləşdirmə Həndəsəsi tipinə uyğunlaşdırılır."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Nöqtə"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Xətt"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Poliqon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Nöqtələr"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Xətlər"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Poliqonlar"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Fiqurlar çoxluğu"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Həndəsi qiyməti verilməyib."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Həndəsi qiyməti düzgün deyil."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Həndəsi tipi düzgün deyil."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Fiquru vərəqənin fiqur sahəsinin SRID qiymətinə çevirərkən xəta baş verdi."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/be/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/be/LC_MESSAGES/django.mo
deleted file mode 100644
index 3ace6d6..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/be/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/be/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/be/LC_MESSAGES/django.po
deleted file mode 100644
index 08c8a49..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/be/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/"
-"language/be/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: be\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Няма запісаных стужак."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Біркі «%r» няма ў запісаных."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Галоўнае поле ҐІС — адлюстроўвае ґеамэтрычныя віды паводле спэцыфікацыі "
-"«OpenGIS»."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Пункт"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Ломаная"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Шматкутнік"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Набор пунктаў"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Набор ломаных"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Набор шматкутнікаў"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Набор ґеамэтрычных аб’ектаў"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Не пазначылі значэньне ґеамэтрыі."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Хібнае значэньне ґеамэтрыі."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Хібны від ґеамэтрыі."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "Не ўдалося ператварыць ґеамэтрыю ў SRID."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Разьдзел «%r» ня мае мапы пляцоўкі."
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Бачына «%s» парожняя"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Бачына «%s» не існуе"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/bg/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/bg/LC_MESSAGES/django.mo
deleted file mode 100644
index 18f5f77..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/bg/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/bg/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/bg/LC_MESSAGES/django.po
deleted file mode 100644
index dfa1f93..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/bg/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Georgi Kostadinov <grgkostadinov@gmail.com>, 2012
-# Todor Lube <tlubenov@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/"
-"language/bg/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bg\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Няма регистрирани фийда."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Слъгът %r не е регистриран."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "Основно ГИС поле - карти за спецификация от OpenGIS геометричен тип."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Точка"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Линеен елемент"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Полигон"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Комплексна-точка"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Комплексен-линеен елемент"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Комплексен полигон"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Геометрична колекция"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Няма предоставена геометрична стойност."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Невалидна геометрична стойност."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Невалиден геометричен тип."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Възникна грешка при трансформиране на геометрията на SRID от полето "
-"геометрия."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Не съществува 'sitemap' на тази секция: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Страница %s е празна"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Няма страница '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/bn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/bn/LC_MESSAGES/django.mo
deleted file mode 100644
index c605fb9..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/bn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/bn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/bn/LC_MESSAGES/django.po
deleted file mode 100644
index 75bab75..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/bn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,92 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/"
-"bn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr ""
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr ""
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr ""
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr ""
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr ""
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr ""
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr ""
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "কোন জ্যামিতিক মান দেয়া হয়নি।"
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "জ্যামিতিক মানটি বৈধ নয়।"
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "জ্যামিতিক নমুনাটি বৈধ নয়।"
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/br/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/br/LC_MESSAGES/django.mo
deleted file mode 100644
index 4d31fd9..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/br/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/br/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/br/LC_MESSAGES/django.po
deleted file mode 100644
index 31293d4..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/br/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,92 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Fulup <fulup.jakez@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/"
-"br/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: br\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr ""
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr ""
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr ""
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr ""
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr ""
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr ""
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr ""
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr ""
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr ""
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr ""
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Pajenn %s goullo"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Pajenn '%s' ebet"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/bs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/bs/LC_MESSAGES/django.mo
deleted file mode 100644
index 172b0dd..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/bs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/bs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/bs/LC_MESSAGES/django.po
deleted file mode 100644
index 6903b9f..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/bs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,96 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/"
-"bs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bs\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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Osnovno GIS polje -- mapiran je za OpenGIS Specification Geometry tip polja."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Tačka"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Linijska nit"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Poligon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multi-point"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Višelinijska nit"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi poligon"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Geometrijska kolekcija"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Niste zadali parametre za geometriju."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Neispravan parametar za geometriju."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Nepostojeći tip geometrije."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Došlo je do greške tokom pretvaranje geometrije u SRID geometrijskom polja "
-"obrazca."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ca/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/ca/LC_MESSAGES/django.mo
deleted file mode 100644
index 354072d..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ca/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ca/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/ca/LC_MESSAGES/django.po
deleted file mode 100644
index 6f4b4f6..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ca/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antoni Aloy <aaloy@apsl.net>, 2012
-# Carles Barrobés <carles@barrobes.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:54+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Catalan (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "No s'han registrat canal de contingut"
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "L'slug %r no està registrat"
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"El camp GIS base -- correspon al tipus 'Geometry' de l'especificació OpenGIS."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punt"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Cadena de línies"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polígon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multi-punt"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Cadena de multi-línies"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi polígon"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Col·leció de geometria"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "No s'ha indicat cap valor de geometria."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Valor de geometria invàlid."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Tipus de geometria invàlid."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"S'ha produït un error en transformar la geometria al SRID del camp de "
-"geometria del formulari."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "No hi ha un mapa del lloc disponible per a la secció: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Pàgina %s buida"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "No hi ha cap pàgina '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/cs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/cs/LC_MESSAGES/django.mo
deleted file mode 100644
index 1d36711..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/cs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/cs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/cs/LC_MESSAGES/django.po
deleted file mode 100644
index 92d0a61..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/cs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,96 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Vlada Macek <macek@sandbox.cz>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Czech (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Žádné dávky nejsou registrované."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Identifikátor %r není registrován."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Základní GIS pole -- mapováno na typ Geometry podle specifikace OpenGIS."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Bod"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Úsek čáry"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polygon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Mnohonásobný bod"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Mnohonásobný úsek čáry"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Mnohonásobný polygon"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Kolekce geometrií"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Hodnota geometrie nezadána."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Neplatná hodnota geometrie."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Neplatný typ geometrie."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Nastala chyba při transformaci geometrie na identifikátor SRID geometrického "
-"formulářového pole."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Mapa webu není definovaná pro sekci: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Stránka %s je prázdná"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Není stránka '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/cy/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/cy/LC_MESSAGES/django.mo
deleted file mode 100644
index 377df3d..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/cy/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/cy/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/cy/LC_MESSAGES/django.po
deleted file mode 100644
index b29153a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/cy/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,92 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-15 10:56+0200\n"
-"PO-Revision-Date: 2011-01-19 16:52+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/"
-"cy/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cy\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
-"11) ? 2 : 3;\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-
-#: db/models/fields.py:271
-msgid "Point"
-msgstr ""
-
-#: db/models/fields.py:275
-msgid "Line string"
-msgstr ""
-
-#: db/models/fields.py:279
-msgid "Polygon"
-msgstr ""
-
-#: db/models/fields.py:283
-msgid "Multi-point"
-msgstr ""
-
-#: db/models/fields.py:287
-msgid "Multi-line string"
-msgstr ""
-
-#: db/models/fields.py:291
-msgid "Multi polygon"
-msgstr ""
-
-#: db/models/fields.py:295
-msgid "Geometry collection"
-msgstr ""
-
-#: forms/fields.py:19
-msgid "No geometry value provided."
-msgstr ""
-
-#: forms/fields.py:20
-msgid "Invalid geometry value."
-msgstr ""
-
-#: forms/fields.py:21
-msgid "Invalid geometry type."
-msgstr ""
-
-#: forms/fields.py:22
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/da/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/da/LC_MESSAGES/django.mo
deleted file mode 100644
index bd87e6a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/da/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/da/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/da/LC_MESSAGES/django.po
deleted file mode 100644
index 9b76a4d..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/da/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Erik Wognsen <r4mses@gmail.com>, 2012
-# Finn Gruwier, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kristian Øllegaard <kristian@oellegaard.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/"
-"da/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: da\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Ingen feeds registrerede."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "\"Slug\" %r er ikke registreret."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Det grundlæggende GIS-felt - kæder til OpenGIS Specification geometritype."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punkt"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Linjesegment"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polygon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multipunkt"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Multilinjesegment"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multipolygon"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Geometrisamling"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Ingen værdi givet for geometri."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Ugyldig geometriværdi."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Ugyldig gemometritype."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Der opstod en fejl ved transformation af geometrien til formularfeltets SRID"
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Intet sitemap tilgængelig for sektion: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Siden %s er tom"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Ingen side hedder '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/de/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/de/LC_MESSAGES/django.mo
deleted file mode 100644
index 31c5747..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/de/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/de/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/de/LC_MESSAGES/django.po
deleted file mode 100644
index 60111f1..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/de/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Hagenbruch <ahagenbruch@googlemail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-06-14 15:07+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Keine Feeds registriert."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Kürzel %r nicht registriert."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "Das Basis-GIS-Feld, das dem OpenGIS-Geometrie-Typ entspricht."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punkt"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Linienzug"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polygon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Mehrere Punkte"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Mehrere Linienzüge"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Mehrere Polygone"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Sammlung geometrischer Objekte"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Kein geometrischer Wert gegeben."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Ungültiger geometrischer Wert."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Ungültiger geometrischer Typ."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Ein Fehler ist beim Umwandeln der Geometrie-Werte in die SRID des Geometrie-"
-"Formularfeldes aufgetreten."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Für den Abschnit %r ist keine Sitemap vorhanden"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Seite %s ist leer"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Seite '%s' existiert nicht"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/el/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/el/LC_MESSAGES/django.mo
deleted file mode 100644
index c02e2c2..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/el/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/el/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/el/LC_MESSAGES/django.po
deleted file mode 100644
index ba1907c..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/el/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Dimitris Glezos <glezos@transifex.com>, 2011
-# Kostas Papadimitriou <vinilios@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/"
-"el/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: el\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Δεν υπάρχουν εγγεγραμμένες ροές ειδήσεων."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Το βασικό πεδίο GIS - αντιστοιχεί στον τύπο γεωμετρίας των προδιαγραφών "
-"OpenGIS."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Σημείο"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Γραμμή string"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Πολύγωνο"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Πολλαπλό σημείο"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Multi-line string"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Πολλαπλό πολύγωνο"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Συλλογή γεωμετριών"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Δε δόθηκε τιμή γεωμετρίας."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Άκυρα τιμή γεωμετρίας."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Άκυρος τύπος γεωμετρίας."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Παρουσιάστηκε σφάλμα κατά τη μετατροπή της γεωμετρίας στο SRID του πεδίου "
-"της φόρμας γεωμετρίας."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/en/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/en/LC_MESSAGES/django.mo
deleted file mode 100644
index 08a7b68..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/en/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/en/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/en/LC_MESSAGES/django.po
deleted file mode 100644
index 6c8d7ec..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/en/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,88 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2010-05-13 15:35+0200\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr ""
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr ""
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr ""
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr ""
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr ""
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr ""
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr ""
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr ""
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr ""
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr ""
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/en_GB/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/en_GB/LC_MESSAGES/django.mo
deleted file mode 100644
index a7c876f..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/en_GB/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/en_GB/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/en_GB/LC_MESSAGES/django.po
deleted file mode 100644
index d6df0dc..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/en_GB/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# jon_atkinson <jon@jonatkinson.co.uk>, 2011
-# Ross Poulton <ross@rossp.org>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
-"django/language/en_GB/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: en_GB\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "No feeds are registered."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Slug %r isn't registered."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Point"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Line string"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polygon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multi-point"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Multi-line string"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi polygon"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Geometry collection"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "No geometry value provided."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Invalid geometry value."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Invalid geometry type."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "No sitemap available for section: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Page %s empty"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "No page '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/eo/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/eo/LC_MESSAGES/django.mo
deleted file mode 100644
index d356af5..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/eo/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/eo/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/eo/LC_MESSAGES/django.po
deleted file mode 100644
index f489c0d..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/eo/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Baptiste <baptiste+transifex@darthenay.fr>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/"
-"language/eo/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Neniu fluo estas registrita."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Ĵetonvorto %r ne estas registrita."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "La baza GISa kampo -- mapas al la MalfermaGIS Specifa Geometria tipo."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punkto"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Liniŝnuro"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Plurangulo"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multpunkto"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Multlinia ŝnuro"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multplurangulo"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Geometriaro"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Neniu geometria valoro provizas."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Malvalida geometria valoro."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Malvalida geometria tipo."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Eraro okazis dum transformi la geometrion al la SRID de la geometria forma "
-"kampo."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Neniu paĝaro-mapo disponebla por sekcio:%r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Paĝo %s malplena"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Neniu paĝo '%s' trovita"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/es/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/es/LC_MESSAGES/django.mo
deleted file mode 100644
index 65713a4..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/es/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/es/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/es/LC_MESSAGES/django.po
deleted file mode 100644
index 0396c3d..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/es/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antoni Aloy <aaloy@apsl.net>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Marc Garcia <garcia.marc@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "No se han registrado canales de contenido."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "El slug %r no está registrado."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"El campo GIS base -- apunta al tipo de especificación geométrica de OpenGIS."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punto"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Cadena de línea"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polígono"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Punto múltiple"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Cadena de línea múltiple"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Polígono múltiple"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Colección de \"Geometry\""
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "No se indico ningún valor de geometría."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Valor de geometría inválido."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Tipo de geometría inválido."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Ocurrió un error al transformar la geometria al SRID de la geometria del "
-"campo de formulario."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "No hay sitemap disponible para la sección: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "La página %s está vacía"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "No hay página '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/es_AR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/es_AR/LC_MESSAGES/django.mo
deleted file mode 100644
index 42f1add..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/es_AR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/es_AR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/es_AR/LC_MESSAGES/django.po
deleted file mode 100644
index 9153961..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/es_AR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ramiro Morales <cramm0@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
-"django/language/es_AR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_AR\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "No se han registrado feeds"
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "El slug %r no ha sido registrado"
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"El campo GIS base -- corresponde al tipo Geometry de la especificación "
-"OpenGIS."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punto"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Secuencia de líneas"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polígono"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multi-punto"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Cadena multi-línea"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi polígono"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Colección de Geometry's"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "No se ha proporcionado un valor de geometría."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Valor de geometría no válido."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Tipo de geometría no válido."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Ha ocurrido un error mientras se transformaba la geometría al SRID del campo "
-"de formulario de la misma."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "No hay un sitemap disponible para la sección: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "La página %s está vacía"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "No existe la página '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/es_MX/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/es_MX/LC_MESSAGES/django.mo
deleted file mode 100644
index c26a2aa..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/es_MX/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/es_MX/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/es_MX/LC_MESSAGES/django.po
deleted file mode 100644
index 8471135..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/es_MX/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,96 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Abraham Estrada <abraham.estrada@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/"
-"language/es_MX/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_MX\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "No hay feeds registrados."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "El slug %r no está registrado."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"El campo GIS base -- corresponde al tipo Geometry de la especificación "
-"OpenGIS."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punto"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Secuencia de líneas"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polígono"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multi-punto"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Cadena multi-línea"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi polígonos"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Colección de geometrías"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "No se ha proporcionado un valor de geometría."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Valor de geometría no válido."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Tipo de geometría no válido."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Ha ocurrido un error mientras se transformaba la geometría al SRID del campo "
-"de formulario de la misma."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "No hay mapa del sitio disponible para esta sección: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Página %s vacía"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "No hay página '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/et/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/et/LC_MESSAGES/django.mo
deleted file mode 100644
index 8c1f137..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/et/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/et/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/et/LC_MESSAGES/django.po
deleted file mode 100644
index 374519f..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/et/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# eallik <eallik@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# madisvain <madisvain@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/"
-"et/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: et\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "Baas GIS väli -- ühildub OpenGIS Spetsifikatsiooni Geomeetria tüübiga."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punkt"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr ""
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polügon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multi-punkt"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Mitmerealine string"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi-polügon"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Geomeetriakogum"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Geomeetriline väärtus puudub."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Vigane geomeetriline väärtus."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Vigane geomeetriline tüüp."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "Geomeetria teisendamisel geomeetria vormivälja SRID-ks tekkis viga."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/eu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/eu/LC_MESSAGES/django.mo
deleted file mode 100644
index 702b98e..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/eu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/eu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/eu/LC_MESSAGES/django.po
deleted file mode 100644
index 49593d1..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/eu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,93 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Aitzol Naberan <anaberan@codesyntax.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/"
-"eu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Ez dago jariorik erregistratuta."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "%r sluga ez dago erregistratuta."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Oinarrizko GIS eremua -- OpenGIS zehaztapeneko Geomtry motarentzat mapak"
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Puntua"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Lerro string-a"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Poligonoa"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Puntu anitz"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Lerro anitz sting-a"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi poligonoa"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Geometria bilduma"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Ez fa geometria baliorik eman."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Geometria balio okera."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Geometria mota okerra."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "Errore bat gertatu da geometria bere form eremuaren SRIDra biurtzean."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "%r atalarentzat ez dago sitemap-ik"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "%s orria hutsik dago"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "'%s' orririk ez"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/fa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/fa/LC_MESSAGES/django.mo
deleted file mode 100644
index 8551527..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/fa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/fa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/fa/LC_MESSAGES/django.po
deleted file mode 100644
index 96c65d0..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/fa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Nikneshan <ali@nikneshan.com>, 2012
-# Alireza Savand <alireza.savand@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Saeed <sd.javadi@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/"
-"fa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "هیچ کدام از فید ها ثبت شده است."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Slug %r ثبت نشده"
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "فیلد GIS پایه -- نقشه‌ها برای مشخصه‌های هندسی OpenGIS"
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "نقطه"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "رشته خط"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "چندضلعی"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "چند نقطه ای"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "چند خط رشته"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "چندین چند ضلعی "
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "مجموعه هندسی"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "مقدار جغرافیایی‌ای مقرر نشده است."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "مقدار جغرافیایی نامعتبر"
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "نوعِ جغرافیایی نامعتبر"
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "مشکلی در هنگام انتقال مختصات هندسی از فیلد به SRID رخ داد."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "هیچ سایت مپی برای قسمت %r موجود نیست"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "صفحه %s خالی است."
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "صفحه '%s' یافت نشد"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/fi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/fi/LC_MESSAGES/django.mo
deleted file mode 100644
index 3513d73..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/fi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/fi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/fi/LC_MESSAGES/django.po
deleted file mode 100644
index 4a681a8..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/fi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,93 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antti Kaihola <antti-2013@ambitone.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Finnish (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "GIS-peruskenttä – vastaa OpenGIS-määrittelyn geometriatyyppiä."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Piste"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Murtoviiva"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polygoni"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Monipiste"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Monimurtoviiva"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Monipolygoni"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Geometriakokoelma"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Geometria-arvoa ei annettu."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Virheellinen geometria-arvo."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Virheellinen geometriatyyppi."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "Kentän SRID-muunnoksessa tapahtui virhe."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/fr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/fr/LC_MESSAGES/django.mo
deleted file mode 100644
index 70ec1ab..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/fr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/fr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/fr/LC_MESSAGES/django.po
deleted file mode 100644
index d7ad0c7..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/fr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# claudep <claude@2xlibre.net>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: French (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Aucun flux enregistré."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Le slug %r n'est pas enregistré."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Le champ GIS -- convertit dans le type de spécification géométrique "
-"d'OpenGIS."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Point"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Chaîne de segment"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polygone"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multipoint"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Chaîne multisegment"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multipolygone"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Collection géométrique"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Acune valeur géométrique fournie."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Valeur géométrique non valide."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Type de géométrie non valide."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Une erreur est survenue lors de la transformation de l'objet géométrique "
-"dans le SRID du champ de formulaire géométrique."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Aucun plan de site disponible pour la section %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Page %s vide"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Aucune page « %s »"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/fy_NL/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/fy_NL/LC_MESSAGES/django.mo
deleted file mode 100644
index 3fb851a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/fy_NL/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/fy_NL/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/fy_NL/LC_MESSAGES/django.po
deleted file mode 100644
index 86bc66b..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/fy_NL/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,89 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-23 02:39+0100\n"
-"PO-Revision-Date: 2011-03-15 15:48+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: fy_NL\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"
-
-#: views.py:7
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:17
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:50
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr ""
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr ""
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr ""
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr ""
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr ""
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr ""
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr ""
-
-#: forms/fields.py:17
-msgid "No geometry value provided."
-msgstr ""
-
-#: forms/fields.py:18
-msgid "Invalid geometry value."
-msgstr ""
-
-#: forms/fields.py:19
-msgid "Invalid geometry type."
-msgstr ""
-
-#: forms/fields.py:20
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-
-#: sitemaps/views.py:44
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:58
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ga/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/ga/LC_MESSAGES/django.mo
deleted file mode 100644
index 465a791..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ga/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ga/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/ga/LC_MESSAGES/django.po
deleted file mode 100644
index c234a0d..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ga/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,98 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Michael Thornhill <michael@maithu.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/"
-"ga/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ga\n"
-"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
-"4);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Níl fothaí cláraithe."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Níl slug %r cláraithe."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"GIS an bonn réimse - léarscáileanna chun an Sonraíocht OpenGIS cineál "
-"Céimseata."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Pointe"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Líne teaghrán"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polagán"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Il-phointe"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Il-líne teaghrán"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Il polagán"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Céimseata bhailiú"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Ní soláthair méid geoiméadracht"
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Méid geoiméadracht neamhbhailí"
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Tíopa geoiméadracht neamhbhailí"
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Tharla earráid ag claochlú an geoiméadracht go dtí SRID an réimse fhoirm "
-"geoiméadracht."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Níl léarscáil an tSuoímh ar fáil le haghaidh roinn: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Leathanach %s folamh"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Níl leathanach '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/gl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/gl/LC_MESSAGES/django.mo
deleted file mode 100644
index fae9fa5..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/gl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/gl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/gl/LC_MESSAGES/django.po
deleted file mode 100644
index 71a4c95..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/gl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# fasouto <fsoutomoure@gmail.com>, 2011
-# fonso <fonzzo@gmail.com>, 2013
-# Leandro Regueiro <leandro.regueiro@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-09-07 11:47+0000\n"
-"Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
-"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/"
-"gl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Non hai feeds rexistradas."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "A url curta %r non está rexistrada."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"O campo GIS base -- correspóndese co tipo Geometry da especificación OpenGIS."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punto"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Secuencia de liñas"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polígono"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Punto múltiple"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Cadea multi-liña"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi polígono"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Colección de xeometrías"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Non se proporcionou un valor de xeometría."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Valor xeométrico non válido."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Tipo xeométrico non válido."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Atopouse un erro mentras se trasnformaba a xeometría ó SRID do campo "
-"xeométrico do formulario."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Non hai un mapa do sitio dispoñíbel para a sección: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "A páxina %s baleira"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Non existe a páxina '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/he/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/he/LC_MESSAGES/django.mo
deleted file mode 100644
index 7452fe4..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/he/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/he/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/he/LC_MESSAGES/django.po
deleted file mode 100644
index 046d91a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/he/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,93 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Meir Kriheli <mkriheli@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "לא נרשמו פידים."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Slug %r אינו רשום."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "שדה ה־GIS הבסיסי -- ממופה לטיפוס OpenGIS Specification Geometry."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "נקודה"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "מחרוזת קו"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "פוליגון"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "מרובה־נקודות"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "מחרוזת קו מרובת שורות"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "פוליגון מרובה"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "אוסף גיאומטרי"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "לא סופק ערך גיאומטרי."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "ערך גאומטרי שגוי."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "סוג גיאומטרי שגוי."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "הייתה בעיה עם השינוי של הצורה לסוג של השדה."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "אין sitemap זמין עבור מדור: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "עמוד %s ריק"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "עמוד '%s' אינו קיים"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/hi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/hi/LC_MESSAGES/django.mo
deleted file mode 100644
index 5840114..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/hi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/hi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/hi/LC_MESSAGES/django.po
deleted file mode 100644
index 39ceaf6..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/hi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Chandan kumar <chandankumar.093047@gmail.com>, 2012
-# Sandeep Satavlekar <sandysat@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/"
-"hi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "कोई फ़ीड पंजीकृत नहीं हैं."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "स्लग %r पंजीकृत नहीं है."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "आधारभूत GIS फ़ील्ड OpenGIS विशिष्टता ज्यामिति के प्ररूप हैं ."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "बिंदु"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "पंक्ति शृंखला"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "बहुभुज"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "बहु बिंदु"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "बहु - पंक्ति शृंखला"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "बहु बहुभुज"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "ज्यामिति संग्रह"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "कोई ज्यामिति मूल्य प्रदान नहीं की है."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "अवैध ज्यामिति मूल्य."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "अवैध ज्यामिति प्रकार"
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"ज्यामिति को ज्यामिति प्रपत्र फ़ील्ड के SRID में परिवर्तित करते वक़्त एक ग़लती हो गयी ."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "अनुभाग के लिए कोई साइटमैप उपलब्ध नहीं: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "पृष्ठ %s खाली"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "कोई पृष्ठ '%s' नहीं "
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/hr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/hr/LC_MESSAGES/django.mo
deleted file mode 100644
index 757cef7..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/hr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/hr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/hr/LC_MESSAGES/django.po
deleted file mode 100644
index 161ae5f..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/hr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# berislavlopac <berislav.lopac@gmail.com>, 2012
-# Davor Lučić <r.dav.lc@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/"
-"hr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hr\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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Nema registriranih izvora."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Slug %r nije registriran."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "Osnovno GIS polje -- mapira OpenGIS Specification Geometry tip."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Točka"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Linija (Line string)"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Poligon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Više točaka"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Više linija (Line string)"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Više poligona"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Geometrijska kolekcija"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Geometrijska vrijednost nije priložena."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Neispravna geometrijska vrijednost."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Neispravan geometrijski tip."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Došlo je do greške pri transformaciji geometrije na SRID geometrijskog polja "
-"forme."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Ne postoji mapa za odjeljak: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Stranica %s je prazna"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Stranica '%s' ne postoji"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/hu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/hu/LC_MESSAGES/django.mo
deleted file mode 100644
index 0ddda60..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/hu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/hu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/hu/LC_MESSAGES/django.po
deleted file mode 100644
index ab09c4b..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/hu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kristóf Gruber <>, 2012
-# Szilveszter Farkas <szilveszter.farkas@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/"
-"language/hu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Nincs regisztrált feed."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "%r slug nincs regisztrálva."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Az alap GIS mező -- az OpenGIS specifikáció geometria típusának megfelelően"
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Pont"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Vonallánc"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Poligon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multi-pont"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Többes vonallánc"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi-poligon"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Geometria gyűjtemény"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Geometriai adat nem került megadásra."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Érvénytelen geometriai érték."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Érvénytelen geometriai típus."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "Hiba történt a geometriai transzformáció során."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "%r szekcióhoz nincsen oldaltérkép"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "'%s' oldal üres"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "'%s' oldal nem létezik"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ia/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/ia/LC_MESSAGES/django.mo
deleted file mode 100644
index e751729..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ia/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ia/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/ia/LC_MESSAGES/django.po
deleted file mode 100644
index c5111f8..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ia/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,96 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Martijn Dekker <mcdutchie@hotmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/"
-"language/ia/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ia\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Nulle syndication es registrate."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Le denotation %r non es registrate."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Le campo GIS de base. Corresponde al typo geometric del specification "
-"OpenGIS."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Puncto"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Texto de linea"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polygono"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Plure punctos"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Texto con plure lineas"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Plure polygonos"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Collection geometric"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Nulle valor geometric fornite."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Valor geometric invalide."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Typo geometric invalide."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Un error occurreva durante le transformation del geometria al SRID del campo "
-"del formulario geometric."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Nulle mappa de sito disponibile pro le section: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Le pagina '%s' es vacue"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Le pagina '%s' non existe"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/id/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/id/LC_MESSAGES/django.mo
deleted file mode 100644
index fed1c0e..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/id/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/id/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/id/LC_MESSAGES/django.po
deleted file mode 100644
index d37f86e..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/id/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# rodin <romihardiyanto@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Tidak ada umpan terdaftar."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Slug %r tidak terdaftar."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Bidang dasar GIS disesuaikan berdasarkan OpenGIS Specification Geometry."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Point"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Line string"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polygon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multi-point"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Multi-line string"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi polygon"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Geometry collection"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Nilai geometri tidak disediakan."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Nilai geometri salah."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Tipe geometri salah."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Galat terjadi saat mentransformasi geometri ke SRID bidang formulir geometri."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Tidak ada peta situs tersedia untuk bagian: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Laman %s kosong"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Tidak ada laman '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/is/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/is/LC_MESSAGES/django.mo
deleted file mode 100644
index 16445de..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/is/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/is/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/is/LC_MESSAGES/django.po
deleted file mode 100644
index 1038518..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/is/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,93 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Hafsteinn Einarsson <haffi67@gmail.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/"
-"language/is/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: is\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Engir listar (feeds) eru skráðir"
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Slögg %r er ekki skráður"
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "Grunn GIS reitur -- varpast í OpenGIS rúmgerð."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punktur"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Lína"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Marghyrningur"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Punktar"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Línur"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Marghyrningar"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Rúmsafn"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Ekkert rúmgildi gefið."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Ógild rúmeining"
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Ógild rúmmálsgerð."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "Villa kom upp við að varpa rúmgildi í SRID reitsins."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Ekkert veftré tiltækt fyrir: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Síða %s tóm"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Engin síða %s"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/it/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/it/LC_MESSAGES/django.mo
deleted file mode 100644
index 0e5fe80..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/it/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/it/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/it/LC_MESSAGES/django.po
deleted file mode 100644
index 00c578d..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/it/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,96 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nicola Larosa <transifex@teknico.net>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Non ci sono feed registrati."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Lo slug %r non è registrato."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Il campo base GIS -- corrisponde al tipo Geometry delle specifiche OpenGIS."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punto"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Stringa linea"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Poligono"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multipunto"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Stringa multilinea"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi poligono"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Raccolta Geometry"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Nessun valore geometrico fornito."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Valore geometrico non valido."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Tipo geometrico non valido."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Si è verificato un errore durante la trasformazione della geometria nello "
-"SRID del campo geometria della form."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Nessun sitemap disponibile per la sezione: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Pagina %s vuota"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Nessuna pagina '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ja/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/ja/LC_MESSAGES/django.mo
deleted file mode 100644
index fe5b508..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ja/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ja/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/ja/LC_MESSAGES/django.po
deleted file mode 100644
index 525e377..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ja/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Shinya Okano <tokibito@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/"
-"ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "フィードが登録されていません。"
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "スラグ %r は登録されていません。"
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "GIS基底フィールドです -- OpenGIS で決められた地形タイプに対応"
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "点"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "線"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "ポリゴン"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "複数の点"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "複数の線"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "複数のポリゴン"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "地形の集合"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "geometry値がありません。"
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "geometry値が不正です"
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "geometryタイプが不正です。"
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"geometry を geometry フォームフィールドの SRID に変換しようとしてエラーが起き"
-"ました。"
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "このセクションで利用可能なサイトマップはありません: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "ページ %s は空です"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "ページ '%s' は存在しません"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ka/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/ka/LC_MESSAGES/django.mo
deleted file mode 100644
index d39bb7f..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ka/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ka/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/ka/LC_MESSAGES/django.po
deleted file mode 100644
index 676bb3d..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ka/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Bouatchidzé <a@anbz.net>, 2013
-# David Avsajanishvili <avsd05@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/"
-"ka/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ka\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "არცერთი ფიდი არ არის რეგისტრირებული."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "სლაგი %r არ არის რეგისტრირებული."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "GIS-ის ბაზური ველი -- შეესაბამება OpenGIS სპეციფიკაციის Geometry ტიპს."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "წერტილი"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "ხაზის მასივი"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "მრავალკუთხედი"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "წერტილების სიმრავლე"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "ხაზების სიმრავლის მასივი"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "მრავალკუთხედების სიმრავლე"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "გეომეტრიული კოლექცია"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "გეომეტრიის მნიშვნელობა მოცემული არ არის."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "გეომეტრიის მნიშვნელობა არასწორია."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "გეომეტრიის ტიპი არასწორია."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "ველიდან გეომეტრიის SRID-ში გადაყვანისას მოხდა შეცდომა."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "არ არსებობს საიტის რუკა სექციისთვის: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "გვერდი %s ცარიელია"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "გვერდი '%s' არ არსებობს"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/kk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/kk/LC_MESSAGES/django.mo
deleted file mode 100644
index 5739646..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/kk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/kk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/kk/LC_MESSAGES/django.po
deleted file mode 100644
index 505a777..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/kk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# yun_man_ger <germanilyin@gmail.com>, 2011
-# Zhazira <zhazira.mt@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/"
-"kk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kk\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Негізгі GIS алаңы - OpenGIS спецификация бойынша геометриялық түрлерін "
-"белгілейді."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Нүкте"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Сынық"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Көпбұрыш"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Нүкте жинағы"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Сынықтар жинағы"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Көпбұрыш жинағы"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Геометриялық объект жинағы"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Геметрия мәні берілген жоқ"
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Геометрия мәні дұрыс емес"
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Геометрия түрі дұрыс емес"
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "Геометрияны SRID-ге өзгерту кезінде қате шықты."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/km/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/km/LC_MESSAGES/django.mo
deleted file mode 100644
index 192134f..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/km/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/km/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/km/LC_MESSAGES/django.po
deleted file mode 100644
index 753dae6..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/km/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,89 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-23 02:39+0100\n"
-"PO-Revision-Date: 2011-03-15 15:48+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: km\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
-
-#: views.py:7
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:17
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:50
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr ""
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr ""
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr ""
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr ""
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr ""
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr ""
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr ""
-
-#: forms/fields.py:17
-msgid "No geometry value provided."
-msgstr ""
-
-#: forms/fields.py:18
-msgid "Invalid geometry value."
-msgstr ""
-
-#: forms/fields.py:19
-msgid "Invalid geometry type."
-msgstr ""
-
-#: forms/fields.py:20
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-
-#: sitemaps/views.py:44
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:58
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/kn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/kn/LC_MESSAGES/django.mo
deleted file mode 100644
index 69ad9e1..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/kn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/kn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/kn/LC_MESSAGES/django.po
deleted file mode 100644
index f5bb345..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/kn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,91 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-15 10:56+0200\n"
-"PO-Revision-Date: 2011-01-19 16:52+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/"
-"kn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kn\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-
-#: db/models/fields.py:271
-msgid "Point"
-msgstr ""
-
-#: db/models/fields.py:275
-msgid "Line string"
-msgstr ""
-
-#: db/models/fields.py:279
-msgid "Polygon"
-msgstr ""
-
-#: db/models/fields.py:283
-msgid "Multi-point"
-msgstr ""
-
-#: db/models/fields.py:287
-msgid "Multi-line string"
-msgstr ""
-
-#: db/models/fields.py:291
-msgid "Multi polygon"
-msgstr ""
-
-#: db/models/fields.py:295
-msgid "Geometry collection"
-msgstr ""
-
-#: forms/fields.py:19
-msgid "No geometry value provided."
-msgstr ""
-
-#: forms/fields.py:20
-msgid "Invalid geometry value."
-msgstr ""
-
-#: forms/fields.py:21
-msgid "Invalid geometry type."
-msgstr ""
-
-#: forms/fields.py:22
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ko/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/ko/LC_MESSAGES/django.mo
deleted file mode 100644
index 39d7e81..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ko/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ko/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/ko/LC_MESSAGES/django.po
deleted file mode 100644
index e7f2ab2..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ko/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,93 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jaehong Kim <mixe@korea.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/"
-"ko/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ko\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "기본 GIS 필드. OpenGIS Specification의 Geometry type으로 매핑됩니다."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "위치"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "한줄 문자열"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "다각형"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "복수위치"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "여러줄 문자열"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "복수 다각형"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "지리적 위치 모음"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Geometry 값이 없습니다."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Geometry 값이 부적절합니다."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Geometry 형식이 부적절합니다."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "Geometry를 geometry 필드의 SRID로 변환하는 도중 오류가 발생하였습니다."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/lt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/lt/LC_MESSAGES/django.mo
deleted file mode 100644
index c62968a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/lt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/lt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/lt/LC_MESSAGES/django.po
deleted file mode 100644
index d969c36..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/lt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Kostas <tamosiunas@gmail.com>, 2011
-# lauris <lauris@runbox.com>, 2011
-# Simonas Kazlauskas <simonas@kazlauskas.me>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/"
-"language/lt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lt\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
-"%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Nėra užregistruotų srautų."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Adresas %r neregistruotas."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "Bazinis GIS laukas - atvaizduoja OpenGIS Specification Geometry tipą"
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Taškas"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Atkarpa"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Daugiakampis"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Taškų aibė"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Atkarpų aibė"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Daugiakampių aibė"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Geometrinė kolekcija"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Nenurodyta geometrinė reikšmė"
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Netinkama geometrinė reikšmė"
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Netinkamas geometrinis tipas"
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "Įvyko klaida pertvarkant geometrijos lauko SRID geometriją."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Nėra %r skyriaus svetainės medžio"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Puslapis %s tuščias"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Nėra '%s' puslapio"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/lv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/lv/LC_MESSAGES/django.mo
deleted file mode 100644
index e3273e6..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/lv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/lv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/lv/LC_MESSAGES/django.po
deleted file mode 100644
index 8b8f31f..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/lv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/"
-"lv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lv\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "Bāzes ĢIS lauks -- atbilst OpenGIS specifikācijas Geometry tipam."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punkts"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Līniju virkne"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Daudzstūris"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Vairāki punkti"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Vairāku rindu virkne"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Vairāki daudzstūri"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Ģeometrijas kolekcija"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Nav norādīta ģeometrijas vērtība."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Nekorekta ģeometrijas vērtība."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Nekorekts ģeometrijas tips."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Sastapta kļūda, pārveidojot ģeometriju uz ģeometriskās formas lauka SRID."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/mk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/mk/LC_MESSAGES/django.mo
deleted file mode 100644
index e0fe02c..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/mk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/mk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/mk/LC_MESSAGES/django.po
deleted file mode 100644
index c8f42a5..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/mk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# vvangelovski <vvangelovski@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/"
-"language/mk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mk\n"
-"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Нема регистрирани фидови."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Краткото име %r не е регистрирано"
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Базичното GIS поле -- соодветствува на геометриски тип од OpenGIS "
-"спецификацијата."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Точка"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Линиска нишка"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Полигон"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Повеќе точки"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Повеќе-линиска нишка"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Повеќе полигони"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Колекција од геометриски објекти"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Не е внесена геометриска вредност."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Невалидна геометриска вредност."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Невалиден геометриски тип."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Се појави грешка при трансформација на геометриската вредност во SRID од "
-"геометриското поле"
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Нема достапна мапа на сијтот за секцијата: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Страницата %s е празна"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Нема страница '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ml/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/ml/LC_MESSAGES/django.mo
deleted file mode 100644
index 02cb934..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ml/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ml/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/ml/LC_MESSAGES/django.po
deleted file mode 100644
index 8b15eb8..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ml/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,96 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Rajeesh Nair <rajeeshrnair@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/"
-"language/ml/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ml\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr " ഫീഡുകളൊന്നും രജിസ്റ്റര്‍ ചെയ്തിട്ടില്ല."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "%r എന്ന സ്ലഗ് രജിസ്റ്റര്‍ ചെയ്തിട്ടില്ല."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"അടിസ്ഥാന ജി.ഐ.എസ് കളം (ഫീല്‍ഡ്) -- ഓപ്പണ്‍ ജി.ഐ.എസ് നിര്‍ദേശിച്ച തരം ജ്യാമിതീയ രൂപത്തെ "
-"സൂചിപ്പിക്കാന്‍"
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "ബിന്ദു"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "രേഖാ സ്ട്രിങ്ങ്"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "ബഹുഭുജം"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "ബഹുബിന്ദു"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "ബഹു രേഖാ സ്ട്രിങ്ങ്"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "ബഹു ബഹുഭുജം"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "ജ്യാമിതി ശേഖരം"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "ജ്യാമിതീയ മൂല്യമൊന്നും തന്നിട്ടില്ല."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "തെറ്റായ ജ്യാമിതീയ മൂല്യം."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "തെറ്റായ തരം ജ്യാമിതി."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"ജ്യാമിതീയ രൂപത്തെ ജ്യാമിതി കളത്തിന്റെ SRID-ലേക്കു മാറ്റുമ്പോള്‍ എന്തോ തകരാറു സംഭവിച്ചിട്ടുണ്ട്."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "%r എന്ന വിഭാഗത്തിനു സൈറ്റ്മാപ്പൊന്നും ലഭ്യമല്ല."
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "പേജ് %s കാലിയാണ്"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "'%s' എന്ന പേജില്ല."
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/mn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/mn/LC_MESSAGES/django.mo
deleted file mode 100644
index 7fa1bfa..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/mn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/mn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/mn/LC_MESSAGES/django.po
deleted file mode 100644
index 11a0309..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/mn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jacara <baskhuujacara@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011-2012
-# Баясгалан Цэвлээ <bayasaa_7672@yahoo.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/"
-"language/mn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Бүртгэгдсэн feeds байхгүй байна."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "%r слаг бүгтгэгдээгүй байна"
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Үндсэн GIS талбар -- OpenGIS газрын зургын Геометрын дүрсны онцгой төрөлтэй "
-"байна."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Цэг"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Тэмдэгт мөр"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Олон өнцөгт"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Олон цэг"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Олон мөр бүхий тэмтэгт мөр"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Олон өнцөгтийн олонлог"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Дүрсний цуглуулга"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Дүрс оруулаагүй байна."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Буруу дүрс байна."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Дүрсийн төрөл буруу байна."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"An error occurred when transforming the geometry to the SRID дүрсний форм "
-"талбарын SRID утгыг хөрвүүлэхэд алдаа гарлаа."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Энэ хэсэгт Sitemap алга: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "%s хуудас хоосон"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "'%s' хуудас байхгүй"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/nb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/nb/LC_MESSAGES/django.mo
deleted file mode 100644
index 41a8521..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/nb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/nb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/nb/LC_MESSAGES/django.po
deleted file mode 100644
index c00c4a5..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/nb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jonklo <jonklo@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/"
-"language/nb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Ingen feeds er registrert."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Slug %r er ikke registrert."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "GIS-basefeltet - tilordnes til OpenGIS Specification Geometry-typen."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punkt"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Linje-string"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polygon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multipunkt"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Multilinje-string"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi-polygon"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Geometri-samling"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Ingen geometriverdi oppgitt."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Ugyldig geometriverdi"
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Ugyldig geometritype"
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"En feil oppstod ved transformering av geometrien til SRID fra geometrifeltet."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Ingen sitemap tilgjengelig for seksjon: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Side %s tom"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Ingen side '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ne/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/ne/LC_MESSAGES/django.mo
deleted file mode 100644
index fd997b7..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ne/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ne/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/ne/LC_MESSAGES/django.po
deleted file mode 100644
index 5fcca3b..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ne/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,92 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Sagar Chalise <chalisesagar@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/"
-"ne/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ne\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "बिन्दु"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr ""
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "बहुभुज"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr ""
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr ""
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr ""
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "ज्यामिति संकलन"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "ज्यामिति मान उपलब्ध छैन ।"
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "उनुपयुक्त ज्यामिति मान"
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "उनुपयुक्त ज्यामिति प्रकार"
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/nl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/nl/LC_MESSAGES/django.mo
deleted file mode 100644
index cc67419..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/nl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/nl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/nl/LC_MESSAGES/django.po
deleted file mode 100644
index b4d080b..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/nl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,99 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Blue <alexandervanratingen@gmail.com>, 2011
-# Harro van der Klauw <hvdklauw@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Jeffrey Gelens <jeffrey@noppo.pro>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Dutch (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Er zijn geen feeds geregistreerd"
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Slug %r is niet geregistreerd."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Het basis GIS veld -- corresponderend met het OpenGIS Specificatie "
-"Geometrisch type"
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punt"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Lijn string"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polygoon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multi-punt"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Multi-lijn string"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi-polygoon"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Geometrie collectie"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Geen geometrische waarde opgegeven."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Ongeldige geometrie waarde."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Ongeldig geometrie type."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Er is een fout opgetreden bij het omvormen van de geometrie naar de SRID van "
-"het geometrie veld."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Geen sitemap beschikbaar voor sectie: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Pagina %s leeg"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Geen pagina '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/nn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/nn/LC_MESSAGES/django.mo
deleted file mode 100644
index 2f8a3c5..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/nn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/nn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/nn/LC_MESSAGES/django.po
deleted file mode 100644
index e9b3587..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/nn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/"
-"language/nn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punkt"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Linjestreng"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polygon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Fleirpunkt"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Fleirlinje-streng"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi-polygon"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Geometrisamling"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Ingen geometriverdi oppgjeve."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Ugyldig geometriverdi"
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Ugyldig geometritype"
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Det oppstod ein feil ved transformering av geometrien til SRID frå "
-"geometrifeltet."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/os/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/os/LC_MESSAGES/django.mo
deleted file mode 100644
index bd01fd7..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/os/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/os/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/os/LC_MESSAGES/django.po
deleted file mode 100644
index dc7004a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/os/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-09 05:30+0000\n"
-"Last-Translator: Soslan Khubulov <soslanx@gmail.com>\n"
-"Language-Team: Ossetic (http://www.transifex.com/projects/p/django/language/"
-"os/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: os\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Ницы лӕсӕн уыд регистрацигонд."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Слаг %r регистрацигонд нӕу."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "Бындурон GIS бӕрц -- ӕндавы OpenGIS бӕрӕг геометрион хуызӕм."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Стъӕлф"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Хаахы рӕнхъ"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Бирӕкъуымон"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Бирӕ-стъӕлф"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Бирӕ-хаххы рӕнхъ"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Бирӕ бирӕкъуымон"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Геометриты ӕмбырд"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Геометрийы бӕрц амынд нӕу."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Геометрийы бӕрц раст нӕу."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Геометрийы хуыз раст нӕу."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Рӕдыд ӕрцыд SRID геометри формӕйы бынаты геометримӕ ивд куы цыдис, уӕд."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Ацы хайӕн сайтмап нӕй: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Фарс %s афтид у"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Фарс '%s' нӕй"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/pa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/pa/LC_MESSAGES/django.mo
deleted file mode 100644
index 51de451..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/pa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/pa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/pa/LC_MESSAGES/django.po
deleted file mode 100644
index 4492c6f..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/pa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,93 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# A S Alam <apreet.alam@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-06-23 14:15+0000\n"
-"Last-Translator: A S Alam <apreet.alam@gmail.com>\n"
-"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/"
-"language/pa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pa\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "ਕੋਈ ਫੀਡ ਰਜਿਸਟਰ ਨਹੀਂ ਹੈ।"
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "ਪੁਆਇੰਟ"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "ਲਾਈਨ ਸਤਰ"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "ਬਹੁਭੁਜ"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "ਕਈ-ਪੁਆਇੰਟ"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr ""
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "ਮਲਟੀ ਬਹੁ-ਭੁਜ"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "ਜੁਮੈਟਰੀ ਭੰਡਾਰ"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "ਕੋਈ ਜੁਮੈਟਰੀ ਮੁੱਲ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ।"
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "ਗਲਤ ਜੁਮੈਟਰੀ ਮੁੱਲ।"
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "ਗਲਤ ਜੁਮੈਟਰੀ ਕਿਸਮ।"
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "ਪੇਜ਼ %s ਖਾਲੀ ਹੈ"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "ਪੇਜ਼ '%s' ਨਹੀਂ ਹੈ"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/pl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/pl/LC_MESSAGES/django.mo
deleted file mode 100644
index b8feae0..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/pl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/pl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/pl/LC_MESSAGES/django.po
deleted file mode 100644
index 3123196..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/pl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# angularcircle, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Kanał informacyjny (RSS/ATOM) nie został zarejestrowany."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Slug '%r' nie został zarejestrowany."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Podstawowe pole GIS - odpowiada typowi Geometry w specyfikacji OpenGIS."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punkt"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Ścieżka"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Wielokąt"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Zbiór punktów"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Zbiór ścieżek"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Zbiór wielokątów"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Zbiór geometrii"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Brak wartości geometrii."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Błędna wartość geometrii."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Błędny typ geometrii."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Wystąpił błąd podczas przekształcania geometrii do SRID pola formularza "
-"geometrii."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Mapa strony dla sekcji '%r' nie jest dostępna"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Strona '%s' jest pusta"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Brak strony '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/pt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/pt/LC_MESSAGES/django.mo
deleted file mode 100644
index b7d7867..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/pt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/pt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/pt/LC_MESSAGES/django.po
deleted file mode 100644
index 43b10b8..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/pt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,96 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nuno Mariz <nmariz@gmail.com>, 2011-2012
-# Paulo Köch <paulo.koch@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-31 16:28+0000\n"
-"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
-"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Nenhum feed está registado."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "O slug %r não está registado."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "O campo GIS base -- mapeado para o tipo especificado no OpenGIS."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Ponto"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Linha"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polígono"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multi-ponto"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Multi-linha"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi-polígono"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Coleção geométrica"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Não foi submetido nenhum valor do tipo geometria."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Valor inválido de geometria."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Tipo inválido de geometria."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Ocorreu um erro na transformação da geometria para o SRID da geometria do "
-"campo do formulário."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Nenhum sitemap disponível para secção: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Página %s vazia"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Nenhuma página '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.mo
deleted file mode 100644
index a3af5b7..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.po
deleted file mode 100644
index e248a25..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/pt_BR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Eduardo Carvalho <eduardocereto@gmail.com>, 2011
-# Guilherme Gondim <semente@taurinus.org>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
-"django/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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Nenhum feed foi registrado."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "O slug %r não foi registrado."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"O campo GIS base -- mapeia para o tipo Especificação de Geometria OpenGIS"
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Ponto"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Linha string"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polígono"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multiponto"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Multilinha string"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multipolígono"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Coleção geométrica"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Nenhum valor geométrico fornecido."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Valor geométrico inválido."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Tipo geométrico inválido."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Ocorreu um erro ao transformar a geometria para o SRID do campo de "
-"formulário de geometria."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Nenhum sitemap disponível para a seção: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Página %s vazia"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Nenhuma página '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ro/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/ro/LC_MESSAGES/django.mo
deleted file mode 100644
index 8e7c7d1..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ro/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ro/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/ro/LC_MESSAGES/django.po
deleted file mode 100644
index f62a4b4..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ro/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Daniel Ursache-Dogariu <contact@danniel.net>, 2011
-# Denis Darii <sinednx@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/"
-"ro/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1));\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Câmpul GIS de bază -- mapat către tipul OpenGIS Specification Geometry."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punct"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Șir linii"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Poligon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multi-punct"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Șir multi-linie"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi poligon"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Colecție geometrie"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Nicio valoare geometrică furnizată."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Valoare geometrică nevalidă."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Tip geometric nevalid."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"A avut loc o eroare la transformarea geometriei în SRID-ul câmpului "
-"geometric al formularului."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ru/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/ru/LC_MESSAGES/django.mo
deleted file mode 100644
index 72631a1..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ru/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ru/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/ru/LC_MESSAGES/django.po
deleted file mode 100644
index 7e707e9..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ru/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Eugene MechanisM <contact@mechanism.name>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Алексей Борискин <sun.void@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/"
-"ru/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Нет зарегистрированных фидов."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Слаг %r не зарегистрирован."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Базовое ГИС-поле. Его потомки отражают конкретные геометрические типы по "
-"спецификации OpenGIS."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Точка"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Ломаная"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Многоугольник"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Набор точек"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Набор ломаных"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Набор многоугольников"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Набор геометрических объектов"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Не указано значение геометрии."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Неверное значение геометрии."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Неверный тип геометрии."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "Произошла ошибка во время преобразования геометрии в SRID."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Нет карты сайта для секции: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Страница %s пустая"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Нет страницы '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/sk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/sk/LC_MESSAGES/django.mo
deleted file mode 100644
index 14cb6dd..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/sk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/sk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/sk/LC_MESSAGES/django.po
deleted file mode 100644
index 1ed5d58..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/sk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,93 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Juraj Bubniak <translations@jbub.eu>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Slovak (http://www.transifex.com/projects/p/django/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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Žiadne kanály nie sú registrované."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Identifikátor %r nie je registrovaný."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "Základné GIS pole -- mapuje na typ OpenGIS Specification Geometry"
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Bod"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Čiara"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polygón"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Viacero bodov"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Viacero čiar"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Viacero polygónov"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Goemetrická kolekcia"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Nie je zadaná žiadna geometrická hodnota."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Chybná geometrická hodnota."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Chybný geometrický typ."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "Nastala chyba pri prevode geometrie do SRID z formulárového poľa."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Žiadna mapa stránok nie je dostupná pre sekciu: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Stránka %s je prázdna"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Žiadna stránka '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/sl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/sl/LC_MESSAGES/django.mo
deleted file mode 100644
index 4db4e0a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/sl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/sl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/sl/LC_MESSAGES/django.po
deleted file mode 100644
index afce95e..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/sl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# zejn <zejn@kiberpipa.org>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/"
-"language/sl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Ni vpisanih virov."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Okrajšava %r ni vpisana."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Osnovno polje GIS -- se preslika v vrsto Geometry po določilih OpenGIS."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Točka"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Črtni niz"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Mnogokotnik"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Več-točkovi predmet"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Več črtni niz"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Večkratni mnogokotnikov"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Zbirka likov"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Ni navdene geometrijske vrednosti."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Neveljavna geometrijska vrednost."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Neveljavna vrsta geometrije."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Med pretvarjanjem geometrijskega zapisa v SRID geometrijskega polja je "
-"prišlo do napake."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Za odsek %r ni zemljevida strani."
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Stran %s je prazna"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Ni strani '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/sq/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/sq/LC_MESSAGES/django.mo
deleted file mode 100644
index f61db69..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/sq/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/sq/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/sq/LC_MESSAGES/django.po
deleted file mode 100644
index 0dc81bd..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/sq/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Besnik <besnik@programeshqip.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/"
-"sq/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sq\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Nuk ka prurje të regjistruara."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Identifikuesi %r nuk është i regjistruar."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Fusha bazë GIS -- skiconi sipas llojit Gjeometri me Specifikime OpenGIS."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Pikë"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Varg vije"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Shumëkëndësh"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multi-pika"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Varg multi-vijë"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi shumëkëndësh"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Përmbledhje gjeometrie"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Nuk u dha vlerë gjeometrie."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Vlerë e pavlefshme gjeometrie."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Lloj i pavlefshëm gjeometrie."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Ndodhi një gabim gjatë shndërrimit të gjeometrisë në fushë SRID formulari "
-"gjeometrie."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Nuk ka të passhme hartë site-i për ndarjen: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Faqe %s e zbrazët"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Nuk ka faqe '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/sr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/sr/LC_MESSAGES/django.mo
deleted file mode 100644
index a9c9807..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/sr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/sr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/sr/LC_MESSAGES/django.po
deleted file mode 100644
index 6e897d5..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/sr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/"
-"sr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr\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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Нема регистрованих фидова."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Слаг „%r“ није регистрован."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Основно „GIS“ поље које мапира тип геометрије по „OpenGIS“ спецификацији."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Тачка"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Линија"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Полигон"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Више тачака"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Више линија"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Више полигона"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Колекција геопметријских облика"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Нисте задали параметре за геометрију."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Неисправан параметар за геометрију."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Непостојећи тип геометрије."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "Грешка се десила током трансформације геометрије на „SRID“ тип поља."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Нема сајт мапа за секцију: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Страница %s је празна"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Страница „%s“ не постоји"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.mo
deleted file mode 100644
index 62d9d81..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.po
deleted file mode 100644
index fe259d1..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/sr_Latn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,95 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Janos Guljas <janos@resenje.org>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/"
-"language/sr@latin/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr@latin\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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Nema registrovanih fidova."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Slag „%r“ nije registrovan."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Osnovno „GIS“ polje koje mapira tip geometrije po „OpenGIS“ specifikaciji."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Tačka"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Linija"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Poligon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Više tačaka"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Više linija"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Više poligona"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Kolekcija geopmetrijskih oblika"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Niste zadali parametre za geometriju."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Neispravan parametar za geometriju."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Nepostojeći tip geometrije."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "Greška se desila tokom transformacije geometrije na „SRID“ tip polja."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Nema sajt mapa za sekciju: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Stranica %s je prazna"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Stranica „%s“ ne postoji"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/sv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/sv/LC_MESSAGES/django.mo
deleted file mode 100644
index cdb6197..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/sv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/sv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/sv/LC_MESSAGES/django.po
deleted file mode 100644
index ca3cfff..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/sv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,93 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Andreas Pelme <andreas@pelme.se>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/"
-"sv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sv\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Inga flöden är registrerade."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Slugen %r är inte registrerad."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "Grundläggande GIS-fält -- motsvarar ett OpenGIS-geometrifält."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Punkt"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Linjesegment"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polygon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multipunkt"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Multilinjesegment"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multipolygon"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Geometrisamling"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Inget geometriskt värde angivet."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Ogiltigt geometrivärde."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Ogiltig geometrityp"
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "Ett fel uppstod under transformering till SRID:t hos formulärsfältet."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Ingen sitemap finns tillgänglig för sektionen: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Sidan %s tom"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Ingen sida '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/sw/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/sw/LC_MESSAGES/django.mo
deleted file mode 100644
index 0625761..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/sw/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/sw/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/sw/LC_MESSAGES/django.po
deleted file mode 100644
index c6710ef..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/sw/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,93 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/"
-"sw/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sw\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Slagi %r haijasajiliwa"
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Nukta"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr ""
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Poligoni"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Nukta-mbalimbali"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr ""
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Poligoni mbalimbali"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Mkusanyiko wa jiometri"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Hakuna thamani ya jiometri iliyotolewa"
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Thamani batili ya jiometri."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Aina batili ya jiometri."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Makosa yametokea wakati wa kubadilisha jiometri kuwa SRID ya sehemu ya fomu "
-"ya jiometri."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Hakuna ramani ya tovuti kipengele %r inayopatikana"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Ukurasa mtupu %s"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Ukurasa '%s' haupo"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ta/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/ta/LC_MESSAGES/django.mo
deleted file mode 100644
index 9cd19ef..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ta/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ta/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/ta/LC_MESSAGES/django.po
deleted file mode 100644
index 5f878b1..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ta/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,91 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-15 10:56+0200\n"
-"PO-Revision-Date: 2011-01-19 16:52+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/"
-"ta/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ta\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-
-#: db/models/fields.py:271
-msgid "Point"
-msgstr ""
-
-#: db/models/fields.py:275
-msgid "Line string"
-msgstr ""
-
-#: db/models/fields.py:279
-msgid "Polygon"
-msgstr ""
-
-#: db/models/fields.py:283
-msgid "Multi-point"
-msgstr ""
-
-#: db/models/fields.py:287
-msgid "Multi-line string"
-msgstr ""
-
-#: db/models/fields.py:291
-msgid "Multi polygon"
-msgstr ""
-
-#: db/models/fields.py:295
-msgid "Geometry collection"
-msgstr ""
-
-#: forms/fields.py:19
-msgid "No geometry value provided."
-msgstr ""
-
-#: forms/fields.py:20
-msgid "Invalid geometry value."
-msgstr ""
-
-#: forms/fields.py:21
-msgid "Invalid geometry type."
-msgstr ""
-
-#: forms/fields.py:22
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/te/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/te/LC_MESSAGES/django.mo
deleted file mode 100644
index fe16076..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/te/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/te/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/te/LC_MESSAGES/django.po
deleted file mode 100644
index 30a291d..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/te/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,92 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/"
-"te/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: te\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr ""
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr ""
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr ""
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr ""
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr ""
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr ""
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr ""
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "క్షెత్రగనిత మూల్యము ఇవ్వలెదు."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "సరికాని క్షేత్రగణిత మూల్యము."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "సరికాని క్షేత్రగణిత రకం."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/th/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/th/LC_MESSAGES/django.mo
deleted file mode 100644
index c7d179e..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/th/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/th/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/th/LC_MESSAGES/django.po
deleted file mode 100644
index 837f9c9..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/th/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kowit Charoenratchatabhan <kowit.s.c@gmail.com>, 2012
-# Vichai Vongvorakul <vongvichai@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/"
-"th/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: th\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "ไม่มีฟีดที่ลงทะเบียน"
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Slug %r ไม่ได้ลงทะเบียน"
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "เขตข้อมูล GIS ฐาน -- แผนที่ไปยังประเภท OpenGIS เรขาคณิตจำเพาะ"
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "จุด"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "สายสตริง"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "รูปหลายเหลี่ยม"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "หลาย ๆ จุด"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "สตริงหลายบรรทัด"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "รูปหลายเหลี่ยมหลายรูป"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "คอลเลกชันรูปทรงเรขาคณิต"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "ไม่พบข้อมูลพิกัด"
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "ค่าพิกัดผิดพลาด "
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "ขนิดข้อมูลพิกัดผิดพลาด"
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "ข้อผิดพลาดที่เกิดขึ้นเมื่อการเปลี่ยนรูปทรงเรขาคณิตที่ SRID ของเขตข้อมูลฟอร์มเรขาคณิต"
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "ไม่มีแผนผังไซต์บริการสำหรับส่วน: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "หน้า %s ที่ว่างเปล่า"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "ไม่มีหน้า '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/tr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/tr/LC_MESSAGES/django.mo
deleted file mode 100644
index 714895f..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/tr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/tr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/tr/LC_MESSAGES/django.po
deleted file mode 100644
index 0031f3c..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/tr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,97 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Murat Çorlu <muratcorlu@gmail.com>, 2012
-# Murat Sahin <martinamca@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/"
-"tr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Hiçbir besleme kayıtlı değildir."
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Slug %r kayıtlı değildir."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Taban GIS alanı -- OpenGIS Spesifikasyonu Geometri türüne eşleşmektedir."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Nokta"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Satır dizisi"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Poligon"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Çok noktalı"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Çok satırlı metin"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Çoklu poligon"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Geometri kolleksiyonu"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Hiçbir geometri değeri verilmemiştir."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Geçersiz geometri değeri."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Geçersiz geometri türü."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"Geometri verisi geometri form alanının SRID değerine dönüştürülürken hata "
-"oluştu."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "%r bölümü için bir site haritası mevcut değil"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "%s sayfası boş"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "'%s' adında sayfa yok"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/tt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/tt/LC_MESSAGES/django.mo
deleted file mode 100644
index be379ad..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/tt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/tt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/tt/LC_MESSAGES/django.po
deleted file mode 100644
index 96a5aa5..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/tt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Azat Khasanshin <lordofbazuks@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/"
-"tt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tt\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Төп ГИС-кыр. Аның токымы OpenGIS спецификациясе буенча геометрик тибларны "
-"күрсәтә."
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Нокта"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Сынык сызык"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Күппочмак"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Нокта җыелмасы"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Сынык сызыклар җыелмасы"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Күппочмаклар җыелмасы"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Геометрик объектлар җыелмасы"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Геометрик кыйммәт күрсәтелмәгән."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Дөрес булмаган геометрик кыйммәт."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Дөрес булмаган геометрик тип."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "Геометриядән SRIDгә үзгәртү вакытында хата килеп чыкты."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/uk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/uk/LC_MESSAGES/django.mo
deleted file mode 100644
index 0013f4a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/uk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/uk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/uk/LC_MESSAGES/django.po
deleted file mode 100644
index 126512b..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/uk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,96 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Roman Kozlovskiy <krzroman@gmail.com>, 2012
-# Sergey Lysach <sergikoff88@gmail.com>, 2011
-# Андрей Костенко <andrey@kostenko.name>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:57+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Точка"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr ""
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Багатокутник"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr ""
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr ""
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr ""
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr ""
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Не задано геометрічне значення."
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Невірне геометричне значення."
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Невірний геометричний тип."
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "Помилка при перетворенні геометрії до SRID геометричного поля форми."
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Немає карти сайту для розділу: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Сторінка %s порожня"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Немає сторінки '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ur/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/ur/LC_MESSAGES/django.mo
deleted file mode 100644
index dfbc355..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ur/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/ur/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/ur/LC_MESSAGES/django.po
deleted file mode 100644
index 754fb69..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/ur/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/"
-"ur/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ur\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr ""
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr ""
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "بنیادی GIS خانہ -- مخصوص OpenGIS جیومیٹری کی قسم سے منسلک ھے۔"
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "نقطہ"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "لائن سٹرنگ"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "پولی گان"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "کثیر النقاط"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "متعدد لائنوں والا سٹرنگ"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "ملٹی پولی گان"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "جیومیٹری کا ذخیرہ"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "کوئی جیومیٹری ویلیو مھیا نھیں کی گئی۔"
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "غلط جیومیٹری ویلیو۔"
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "غلط جیومیٹری ٹائپ"
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr ""
-"جیومیٹری کو جیومیٹری کے فارم کے SRID خانے میں تبدیل کرتے ھوئےکوئی خرابی واقع "
-"ھو گئی ھے۔"
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr ""
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr ""
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/vi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/vi/LC_MESSAGES/django.mo
deleted file mode 100644
index be55515..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/vi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/vi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/vi/LC_MESSAGES/django.po
deleted file mode 100644
index b60c89a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/vi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,96 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Lê Thanh <lethanhx2k@gmail.com>, 2013
-# Tran <hongdiepkien@gmail.com>, 2011
-# Tran Van <vantxm@yahoo.co.uk>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-11 02:24+0000\n"
-"Last-Translator: Lê Thanh <lethanhx2k@gmail.com>\n"
-"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/"
-"language/vi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "Không có feed nào được đăng kí"
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Slug %r không được đăng kí"
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr ""
-"Trường GIS cơ bản -- ánh xạ đến kiểu đặc tả hình học của OpenGIS ( OpenGIS "
-"Specification Geometry)"
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Điểm"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Đường"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Đa giác"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Đa điểm"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Multi-line string"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi polygon"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Kiểu hình học"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "Không có giá trị geometry"
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "Giá trị geometry không hợp lệ"
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "Kiểu geometry không hợp lệ"
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "Có lỗi khi chuyển đổi hình học từ SRID của trường geometry"
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "Không có sitemap cho mục: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "Trang %s trống"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "Không có trang '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/zh_CN/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/zh_CN/LC_MESSAGES/django.mo
deleted file mode 100644
index 86415ce..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/zh_CN/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/zh_CN/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/zh_CN/LC_MESSAGES/django.po
deleted file mode 100644
index 33d0728..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/zh_CN/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,96 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Daniel Duan <DaNmarner@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Lei Yang <yanglei.go@gmail.com>, 2011
-# Lele Long <schemacs@gmail.com>, 2011
-# Kevin Shi <leiarix@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:56+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "没有已注册的源。"
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "Slug %r 没有注册."
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "基本地理信息系统域 - 映射于 OpenGIS 规范几何类型。"
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "点"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "行字串"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "多边形"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "多点"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "多行字符串"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "多个多边形"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "几何集合"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "未提供几何信息。"
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "无效几何信息。"
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "无效几何类型。"
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "几何形状的SRID字段发生试图转换错误ました。"
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "没有站点地图可用的部分: %r"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "页面 %s 为空"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "无页面 '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/zh_TW/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/gis/locale/zh_TW/LC_MESSAGES/django.mo
deleted file mode 100644
index a4e1c73..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/zh_TW/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/locale/zh_TW/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/gis/locale/zh_TW/LC_MESSAGES/django.po
deleted file mode 100644
index d9e6931..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/locale/zh_TW/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,94 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# ilay <ilay@ilay.tw>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# quantum9876 <quantum9876@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-24 18:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/"
-"language/zh_TW/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_TW\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: views.py:9
-msgid "No feeds are registered."
-msgstr "沒有已註冊的 feed。"
-
-#: views.py:19
-#, python-format
-msgid "Slug %r isn't registered."
-msgstr "嵌入式語法 %r 尚未註冊。"
-
-#: db/models/fields.py:51
-msgid "The base GIS field -- maps to the OpenGIS Specification Geometry type."
-msgstr "將基本的 GIS 平面以OpenGIS Specification Geometry type對應。"
-
-#: db/models/fields.py:270
-msgid "Point"
-msgstr "Point 類別"
-
-#: db/models/fields.py:274
-msgid "Line string"
-msgstr "Line string 類別"
-
-#: db/models/fields.py:278
-msgid "Polygon"
-msgstr "Polygon 類別"
-
-#: db/models/fields.py:282
-msgid "Multi-point"
-msgstr "Multi-point 類別"
-
-#: db/models/fields.py:286
-msgid "Multi-line string"
-msgstr "Multi-line string 類別"
-
-#: db/models/fields.py:290
-msgid "Multi polygon"
-msgstr "Multi polygon 類別"
-
-#: db/models/fields.py:294
-msgid "Geometry collection"
-msgstr "Geometry collection (幾何型別之叢集) 類別"
-
-#: forms/fields.py:23
-msgid "No geometry value provided."
-msgstr "沒有幾何資訊。"
-
-#: forms/fields.py:24
-msgid "Invalid geometry value."
-msgstr "無效的幾何參數。"
-
-#: forms/fields.py:25
-msgid "Invalid geometry type."
-msgstr "無效的幾何類型。"
-
-#: forms/fields.py:26
-msgid ""
-"An error occurred when transforming the geometry to the SRID of the geometry "
-"form field."
-msgstr "當把目前地理資訊-GIS,轉成空間參考識別碼-SRID時發生錯誤。"
-
-#: sitemaps/views.py:46
-#, python-format
-msgid "No sitemap available for section: %r"
-msgstr "區域 %r 無可用的網站地圖"
-
-#: sitemaps/views.py:60
-#, python-format
-msgid "Page %s empty"
-msgstr "頁面 %s 為空"
-
-#: sitemaps/views.py:62
-#, python-format
-msgid "No page '%s'"
-msgstr "無此頁面 '%s'"
diff --git a/lib/python2.7/site-packages/django/contrib/gis/management/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/management/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/management/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/management/commands/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/management/commands/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/management/commands/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/management/commands/inspectdb.py b/lib/python2.7/site-packages/django/contrib/gis/management/commands/inspectdb.py
deleted file mode 100644
index bbf40e1..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/management/commands/inspectdb.py
+++ /dev/null
@@ -1,29 +0,0 @@
-from django.core.management.commands.inspectdb import Command as InspectDBCommand
-
-class Command(InspectDBCommand):
- db_module = 'django.contrib.gis.db'
- gis_tables = {}
-
- def get_field_type(self, connection, table_name, row):
- field_type, field_params, field_notes = super(Command, self).get_field_type(connection, table_name, row)
- if field_type == 'GeometryField':
- geo_col = row[0]
- # Getting a more specific field type and any additional parameters
- # from the `get_geometry_type` routine for the spatial backend.
- field_type, geo_params = connection.introspection.get_geometry_type(table_name, geo_col)
- field_params.update(geo_params)
- # Adding the table name and column to the `gis_tables` dictionary, this
- # allows us to track which tables need a GeoManager.
- if table_name in self.gis_tables:
- self.gis_tables[table_name].append(geo_col)
- else:
- self.gis_tables[table_name] = [geo_col]
- return field_type, field_params, field_notes
-
- def get_meta(self, table_name):
- meta_lines = super(Command, self).get_meta(table_name)
- if table_name in self.gis_tables:
- # If the table is a geographic one, then we need make
- # GeoManager the default manager for the model.
- meta_lines.insert(0, ' objects = models.GeoManager()')
- return meta_lines
diff --git a/lib/python2.7/site-packages/django/contrib/gis/management/commands/ogrinspect.py b/lib/python2.7/site-packages/django/contrib/gis/management/commands/ogrinspect.py
deleted file mode 100644
index 2a29fe6..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/management/commands/ogrinspect.py
+++ /dev/null
@@ -1,118 +0,0 @@
-from optparse import make_option
-from django.contrib.gis import gdal
-from django.core.management.base import LabelCommand, CommandError
-
-def layer_option(option, opt, value, parser):
- """
- Callback for `make_option` for the `ogrinspect` `layer_key`
- keyword option which may be an integer or a string.
- """
- try:
- dest = int(value)
- except ValueError:
- dest = value
- setattr(parser.values, option.dest, dest)
-
-def list_option(option, opt, value, parser):
- """
- Callback for `make_option` for `ogrinspect` keywords that require
- a string list. If the string is 'True'/'true' then the option
- value will be a boolean instead.
- """
- if value.lower() == 'true':
- dest = True
- else:
- dest = [s for s in value.split(',')]
- setattr(parser.values, option.dest, dest)
-
-class Command(LabelCommand):
- help = ('Inspects the given OGR-compatible data source (e.g., a shapefile) and outputs\n'
- 'a GeoDjango model with the given model name. For example:\n'
- ' ./manage.py ogrinspect zipcode.shp Zipcode')
- args = '[data_source] [model_name]'
-
- option_list = LabelCommand.option_list + (
- make_option('--blank', dest='blank', type='string', action='callback',
- callback=list_option, default=False,
- help='Use a comma separated list of OGR field names to add '
- 'the `blank=True` option to the field definition. Set with'
- '`true` to apply to all applicable fields.'),
- make_option('--decimal', dest='decimal', type='string', action='callback',
- callback=list_option, default=False,
- help='Use a comma separated list of OGR float fields to '
- 'generate `DecimalField` instead of the default '
- '`FloatField`. Set to `true` to apply to all OGR float fields.'),
- make_option('--geom-name', dest='geom_name', type='string', default='geom',
- help='Specifies the model name for the Geometry Field '
- '(defaults to `geom`)'),
- make_option('--layer', dest='layer_key', type='string', action='callback',
- callback=layer_option, default=0,
- help='The key for specifying which layer in the OGR data '
- 'source to use. Defaults to 0 (the first layer). May be '
- 'an integer or a string identifier for the layer.'),
- make_option('--multi-geom', action='store_true', dest='multi_geom', default=False,
- help='Treat the geometry in the data source as a geometry collection.'),
- make_option('--name-field', dest='name_field',
- help='Specifies a field name to return for the `__unicode__`/`__str__` function.'),
- make_option('--no-imports', action='store_false', dest='imports', default=True,
- help='Do not include `from django.contrib.gis.db import models` '
- 'statement.'),
- make_option('--null', dest='null', type='string', action='callback',
- callback=list_option, default=False,
- help='Use a comma separated list of OGR field names to add '
- 'the `null=True` option to the field definition. Set with'
- '`true` to apply to all applicable fields.'),
- make_option('--srid', dest='srid',
- help='The SRID to use for the Geometry Field. If it can be '
- 'determined, the SRID of the data source is used.'),
- make_option('--mapping', action='store_true', dest='mapping',
- help='Generate mapping dictionary for use with `LayerMapping`.')
- )
-
- requires_model_validation = False
-
- def handle(self, *args, **options):
- try:
- data_source, model_name = args
- except ValueError:
- raise CommandError('Invalid arguments, must provide: %s' % self.args)
-
- if not gdal.HAS_GDAL:
- raise CommandError('GDAL is required to inspect geospatial data sources.')
-
- # Removing options with `None` values.
- options = dict([(k, v) for k, v in options.items() if not v is None])
-
- # Getting the OGR DataSource from the string parameter.
- try:
- ds = gdal.DataSource(data_source)
- except gdal.OGRException as msg:
- raise CommandError(msg)
-
- # Whether the user wants to generate the LayerMapping dictionary as well.
- show_mapping = options.pop('mapping', False)
-
- # Getting rid of settings that `_ogrinspect` doesn't like.
- verbosity = options.pop('verbosity', False)
- settings = options.pop('settings', False)
-
- # Returning the output of ogrinspect with the given arguments
- # and options.
- from django.contrib.gis.utils.ogrinspect import _ogrinspect, mapping
- output = [s for s in _ogrinspect(ds, model_name, **options)]
- if show_mapping:
- # Constructing the keyword arguments for `mapping`, and
- # calling it on the data source.
- kwargs = {'geom_name' : options['geom_name'],
- 'layer_key' : options['layer_key'],
- 'multi_geom' : options['multi_geom'],
- }
- mapping_dict = mapping(ds, **kwargs)
- # This extra legwork is so that the dictionary definition comes
- # out in the same order as the fields in the model definition.
- rev_mapping = dict([(v, k) for k, v in mapping_dict.items()])
- output.extend(['', '# Auto-generated `LayerMapping` dictionary for %s model' % model_name,
- '%s_mapping = {' % model_name.lower()])
- output.extend([" '%s' : '%s'," % (rev_mapping[ogr_fld], ogr_fld) for ogr_fld in ds[options['layer_key']].fields])
- output.extend([" '%s' : '%s'," % (options['geom_name'], mapping_dict[options['geom_name']]), '}'])
- return '\n'.join(output) + '\n'
diff --git a/lib/python2.7/site-packages/django/contrib/gis/maps/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/maps/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/maps/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/maps/google/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/maps/google/__init__.py
deleted file mode 100644
index 9be689c..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/maps/google/__init__.py
+++ /dev/null
@@ -1,61 +0,0 @@
-"""
- This module houses the GoogleMap object, used for generating
- the needed javascript to embed Google Maps in a Web page.
-
- Google(R) is a registered trademark of Google, Inc. of Mountain View, California.
-
- Example:
-
- * In the view:
- return render_to_response('template.html', {'google' : GoogleMap(key="abcdefg")})
-
- * In the template:
-
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- {{ google.xhtml }}
- <head>
- <title>Google Maps via GeoDjango</title>
- {{ google.style }}
- {{ google.scripts }}
- </head>
- {{ google.body }}
- <div id="{{ google.dom_id }}" style="width:600px;height:400px;"></div>
- </body>
- </html>
-
- Note: If you want to be more explicit in your templates, the following are
- equivalent:
- {{ google.body }} => "<body {{ google.onload }} {{ google.onunload }}>"
- {{ google.xhtml }} => "<html xmlns="http://www.w3.org/1999/xhtml" {{ google.xmlns }}>"
- {{ google.style }} => "<style>{{ google.vml_css }}</style>"
-
- Explanation:
- - The `xhtml` property provides the correct XML namespace needed for
- Google Maps to operate in IE using XHTML. Google Maps on IE uses
- VML to draw polylines. Returns, by default:
- <html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
-
- - The `style` property provides the correct style tag for the CSS
- properties required by Google Maps on IE:
- <style type="text/css">v\:* {behavior:url(#default#VML);}</style>
-
- - The `scripts` property provides the necessary <script> tags for
- including the Google Maps javascript, as well as including the
- generated javascript.
-
- - The `body` property provides the correct attributes for the
- body tag to load the generated javascript. By default, returns:
- <body onload="gmap_load()" onunload="GUnload()">
-
- - The `dom_id` property returns the DOM id for the map. Defaults to "map".
-
- The following attributes may be set or customized in your local settings:
- * GOOGLE_MAPS_API_KEY: String of your Google Maps API key. These are tied to
- to a domain. May be obtained from http://www.google.com/apis/maps/
- * GOOGLE_MAPS_API_VERSION (optional): Defaults to using "2.x"
- * GOOGLE_MAPS_URL (optional): Must have a substitution ('%s') for the API
- version.
-"""
-from django.contrib.gis.maps.google.gmap import GoogleMap, GoogleMapSet
-from django.contrib.gis.maps.google.overlays import GEvent, GIcon, GMarker, GPolygon, GPolyline
-from django.contrib.gis.maps.google.zoom import GoogleZoom
diff --git a/lib/python2.7/site-packages/django/contrib/gis/maps/google/gmap.py b/lib/python2.7/site-packages/django/contrib/gis/maps/google/gmap.py
deleted file mode 100644
index ff65626..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/maps/google/gmap.py
+++ /dev/null
@@ -1,233 +0,0 @@
-from django.conf import settings
-from django.template.loader import render_to_string
-from django.utils.html import format_html
-from django.utils.safestring import mark_safe
-from django.utils.six.moves import xrange
-
-from django.contrib.gis.maps.google.overlays import GPolygon, GPolyline, GMarker
-
-class GoogleMapException(Exception):
- pass
-
-
-# The default Google Maps URL (for the API javascript)
-# TODO: Internationalize for Japan, UK, etc.
-GOOGLE_MAPS_URL='http://maps.google.com/maps?file=api&v=%s&key='
-
-
-class GoogleMap(object):
- "A class for generating Google Maps JavaScript."
-
- # String constants
- onunload = mark_safe('onunload="GUnload()"') # Cleans up after Google Maps
- vml_css = mark_safe('v\:* {behavior:url(#default#VML);}') # CSS for IE VML
- xmlns = mark_safe('xmlns:v="urn:schemas-microsoft-com:vml"') # XML Namespace (for IE VML).
-
- def __init__(self, key=None, api_url=None, version=None,
- center=None, zoom=None, dom_id='map',
- kml_urls=[], polylines=None, polygons=None, markers=None,
- template='gis/google/google-map.js',
- js_module='geodjango',
- extra_context={}):
-
- # The Google Maps API Key defined in the settings will be used
- # if not passed in as a parameter. The use of an API key is
- # _required_.
- if not key:
- try:
- self.key = settings.GOOGLE_MAPS_API_KEY
- except AttributeError:
- raise GoogleMapException('Google Maps API Key not found (try adding GOOGLE_MAPS_API_KEY to your settings).')
- else:
- self.key = key
-
- # Getting the Google Maps API version, defaults to using the latest ("2.x"),
- # this is not necessarily the most stable.
- if not version:
- self.version = getattr(settings, 'GOOGLE_MAPS_API_VERSION', '2.x')
- else:
- self.version = version
-
- # Can specify the API URL in the `api_url` keyword.
- if not api_url:
- self.api_url = getattr(settings, 'GOOGLE_MAPS_URL', GOOGLE_MAPS_URL) % self.version
- else:
- self.api_url = api_url
-
- # Setting the DOM id of the map, the load function, the JavaScript
- # template, and the KML URLs array.
- self.dom_id = dom_id
- self.extra_context = extra_context
- self.js_module = js_module
- self.template = template
- self.kml_urls = kml_urls
-
- # Does the user want any GMarker, GPolygon, and/or GPolyline overlays?
- overlay_info = [[GMarker, markers, 'markers'],
- [GPolygon, polygons, 'polygons'],
- [GPolyline, polylines, 'polylines']]
-
- for overlay_class, overlay_list, varname in overlay_info:
- setattr(self, varname, [])
- if overlay_list:
- for overlay in overlay_list:
- if isinstance(overlay, overlay_class):
- getattr(self, varname).append(overlay)
- else:
- getattr(self, varname).append(overlay_class(overlay))
-
- # If GMarker, GPolygons, and/or GPolylines are used the zoom will be
- # automatically calculated via the Google Maps API. If both a zoom
- # level and a center coordinate are provided with polygons/polylines,
- # no automatic determination will occur.
- self.calc_zoom = False
- if self.polygons or self.polylines or self.markers:
- if center is None or zoom is None:
- self.calc_zoom = True
-
- # Defaults for the zoom level and center coordinates if the zoom
- # is not automatically calculated.
- if zoom is None: zoom = 4
- self.zoom = zoom
- if center is None: center = (0, 0)
- self.center = center
-
- def render(self):
- """
- Generates the JavaScript necessary for displaying this Google Map.
- """
- params = {'calc_zoom' : self.calc_zoom,
- 'center' : self.center,
- 'dom_id' : self.dom_id,
- 'js_module' : self.js_module,
- 'kml_urls' : self.kml_urls,
- 'zoom' : self.zoom,
- 'polygons' : self.polygons,
- 'polylines' : self.polylines,
- 'icons': self.icons,
- 'markers' : self.markers,
- }
- params.update(self.extra_context)
- return render_to_string(self.template, params)
-
- @property
- def body(self):
- "Returns HTML body tag for loading and unloading Google Maps javascript."
- return format_html('<body {0} {1}>', self.onload, self.onunload)
-
- @property
- def onload(self):
- "Returns the `onload` HTML <body> attribute."
- return format_html('onload="{0}.{1}_load()"', self.js_module, self.dom_id)
-
- @property
- def api_script(self):
- "Returns the <script> tag for the Google Maps API javascript."
- return format_html('<script src="{0}{1}" type="text/javascript"></script>',
- self.api_url, self.key)
-
- @property
- def js(self):
- "Returns only the generated Google Maps JavaScript (no <script> tags)."
- return self.render()
-
- @property
- def scripts(self):
- "Returns all <script></script> tags required with Google Maps JavaScript."
- return format_html('{0}\n <script type="text/javascript">\n//<![CDATA[\n{1}//]]>\n </script>',
- self.api_script, mark_safe(self.js))
-
- @property
- def style(self):
- "Returns additional CSS styling needed for Google Maps on IE."
- return format_html('<style type="text/css">{0}</style>', self.vml_css)
-
- @property
- def xhtml(self):
- "Returns XHTML information needed for IE VML overlays."
- return format_html('<html xmlns="http://www.w3.org/1999/xhtml" {0}>', self.xmlns)
-
- @property
- def icons(self):
- "Returns a sequence of GIcon objects in this map."
- return set([marker.icon for marker in self.markers if marker.icon])
-
-class GoogleMapSet(GoogleMap):
-
- def __init__(self, *args, **kwargs):
- """
- A class for generating sets of Google Maps that will be shown on the
- same page together.
-
- Example:
- gmapset = GoogleMapSet( GoogleMap( ... ), GoogleMap( ... ) )
- gmapset = GoogleMapSet( [ gmap1, gmap2] )
- """
- # The `google-multi.js` template is used instead of `google-single.js`
- # by default.
- template = kwargs.pop('template', 'gis/google/google-multi.js')
-
- # This is the template used to generate the GMap load JavaScript for
- # each map in the set.
- self.map_template = kwargs.pop('map_template', 'gis/google/google-single.js')
-
- # Running GoogleMap.__init__(), and resetting the template
- # value with default obtained above.
- super(GoogleMapSet, self).__init__(**kwargs)
- self.template = template
-
- # If a tuple/list passed in as first element of args, then assume
- if isinstance(args[0], (tuple, list)):
- self.maps = args[0]
- else:
- self.maps = args
-
- # Generating DOM ids for each of the maps in the set.
- self.dom_ids = ['map%d' % i for i in xrange(len(self.maps))]
-
- def load_map_js(self):
- """
- Returns JavaScript containing all of the loading routines for each
- map in this set.
- """
- result = []
- for dom_id, gmap in zip(self.dom_ids, self.maps):
- # Backup copies the GoogleMap DOM id and template attributes.
- # They are overridden on each GoogleMap instance in the set so
- # that only the loading JavaScript (and not the header variables)
- # is used with the generated DOM ids.
- tmp = (gmap.template, gmap.dom_id)
- gmap.template = self.map_template
- gmap.dom_id = dom_id
- result.append(gmap.js)
- # Restoring the backup values.
- gmap.template, gmap.dom_id = tmp
- return mark_safe(''.join(result))
-
- def render(self):
- """
- Generates the JavaScript for the collection of Google Maps in
- this set.
- """
- params = {'js_module' : self.js_module,
- 'dom_ids' : self.dom_ids,
- 'load_map_js' : self.load_map_js(),
- 'icons' : self.icons,
- }
- params.update(self.extra_context)
- return render_to_string(self.template, params)
-
- @property
- def onload(self):
- "Returns the `onload` HTML <body> attribute."
- # Overloaded to use the `load` function defined in the
- # `google-multi.js`, which calls the load routines for
- # each one of the individual maps in the set.
- return mark_safe('onload="%s.load()"' % self.js_module)
-
- @property
- def icons(self):
- "Returns a sequence of all icons in each map of the set."
- icons = set()
- for map in self.maps: icons |= map.icons
- return icons
diff --git a/lib/python2.7/site-packages/django/contrib/gis/maps/google/overlays.py b/lib/python2.7/site-packages/django/contrib/gis/maps/google/overlays.py
deleted file mode 100644
index b82d967..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/maps/google/overlays.py
+++ /dev/null
@@ -1,311 +0,0 @@
-from django.contrib.gis.geos import fromstr, Point, LineString, LinearRing, Polygon
-from django.utils.functional import total_ordering
-from django.utils.safestring import mark_safe
-from django.utils import six
-from django.utils.encoding import python_2_unicode_compatible
-
-
-@python_2_unicode_compatible
-class GEvent(object):
- """
- A Python wrapper for the Google GEvent object.
-
- Events can be attached to any object derived from GOverlayBase with the
- add_event() call.
-
- For more information please see the Google Maps API Reference:
- http://code.google.com/apis/maps/documentation/reference.html#GEvent
-
- Example:
-
- from django.shortcuts import render_to_response
- from django.contrib.gis.maps.google import GoogleMap, GEvent, GPolyline
-
- def sample_request(request):
- polyline = GPolyline('LINESTRING(101 26, 112 26, 102 31)')
- event = GEvent('click',
- 'function() { location.href = "http://www.google.com"}')
- polyline.add_event(event)
- return render_to_response('mytemplate.html',
- {'google' : GoogleMap(polylines=[polyline])})
- """
-
- def __init__(self, event, action):
- """
- Initializes a GEvent object.
-
- Parameters:
-
- event:
- string for the event, such as 'click'. The event must be a valid
- event for the object in the Google Maps API.
- There is no validation of the event type within Django.
-
- action:
- string containing a Javascript function, such as
- 'function() { location.href = "newurl";}'
- The string must be a valid Javascript function. Again there is no
- validation fo the function within Django.
- """
- self.event = event
- self.action = action
-
- def __str__(self):
- "Returns the parameter part of a GEvent."
- return mark_safe('"%s", %s' %(self.event, self.action))
-
-@python_2_unicode_compatible
-class GOverlayBase(object):
- def __init__(self):
- self.events = []
-
- def latlng_from_coords(self, coords):
- "Generates a JavaScript array of GLatLng objects for the given coordinates."
- return '[%s]' % ','.join(['new GLatLng(%s,%s)' % (y, x) for x, y in coords])
-
- def add_event(self, event):
- "Attaches a GEvent to the overlay object."
- self.events.append(event)
-
- def __str__(self):
- "The string representation is the JavaScript API call."
- return mark_safe('%s(%s)' % (self.__class__.__name__, self.js_params))
-
-class GPolygon(GOverlayBase):
- """
- A Python wrapper for the Google GPolygon object. For more information
- please see the Google Maps API Reference:
- http://code.google.com/apis/maps/documentation/reference.html#GPolygon
- """
- def __init__(self, poly,
- stroke_color='#0000ff', stroke_weight=2, stroke_opacity=1,
- fill_color='#0000ff', fill_opacity=0.4):
- """
- The GPolygon object initializes on a GEOS Polygon or a parameter that
- may be instantiated into GEOS Polygon. Please note that this will not
- depict a Polygon's internal rings.
-
- Keyword Options:
-
- stroke_color:
- The color of the polygon outline. Defaults to '#0000ff' (blue).
-
- stroke_weight:
- The width of the polygon outline, in pixels. Defaults to 2.
-
- stroke_opacity:
- The opacity of the polygon outline, between 0 and 1. Defaults to 1.
-
- fill_color:
- The color of the polygon fill. Defaults to '#0000ff' (blue).
-
- fill_opacity:
- The opacity of the polygon fill. Defaults to 0.4.
- """
- if isinstance(poly, six.string_types): poly = fromstr(poly)
- if isinstance(poly, (tuple, list)): poly = Polygon(poly)
- if not isinstance(poly, Polygon):
- raise TypeError('GPolygon may only initialize on GEOS Polygons.')
-
- # Getting the envelope of the input polygon (used for automatically
- # determining the zoom level).
- self.envelope = poly.envelope
-
- # Translating the coordinates into a JavaScript array of
- # Google `GLatLng` objects.
- self.points = self.latlng_from_coords(poly.shell.coords)
-
- # Stroke settings.
- self.stroke_color, self.stroke_opacity, self.stroke_weight = stroke_color, stroke_opacity, stroke_weight
-
- # Fill settings.
- self.fill_color, self.fill_opacity = fill_color, fill_opacity
-
- super(GPolygon, self).__init__()
-
- @property
- def js_params(self):
- return '%s, "%s", %s, %s, "%s", %s' % (self.points, self.stroke_color, self.stroke_weight, self.stroke_opacity,
- self.fill_color, self.fill_opacity)
-
-class GPolyline(GOverlayBase):
- """
- A Python wrapper for the Google GPolyline object. For more information
- please see the Google Maps API Reference:
- http://code.google.com/apis/maps/documentation/reference.html#GPolyline
- """
- def __init__(self, geom, color='#0000ff', weight=2, opacity=1):
- """
- The GPolyline object may be initialized on GEOS LineStirng, LinearRing,
- and Polygon objects (internal rings not supported) or a parameter that
- may instantiated into one of the above geometries.
-
- Keyword Options:
-
- color:
- The color to use for the polyline. Defaults to '#0000ff' (blue).
-
- weight:
- The width of the polyline, in pixels. Defaults to 2.
-
- opacity:
- The opacity of the polyline, between 0 and 1. Defaults to 1.
- """
- # If a GEOS geometry isn't passed in, try to contsruct one.
- if isinstance(geom, six.string_types): geom = fromstr(geom)
- if isinstance(geom, (tuple, list)): geom = Polygon(geom)
- # Generating the lat/lng coordinate pairs.
- if isinstance(geom, (LineString, LinearRing)):
- self.latlngs = self.latlng_from_coords(geom.coords)
- elif isinstance(geom, Polygon):
- self.latlngs = self.latlng_from_coords(geom.shell.coords)
- else:
- raise TypeError('GPolyline may only initialize on GEOS LineString, LinearRing, and/or Polygon geometries.')
-
- # Getting the envelope for automatic zoom determination.
- self.envelope = geom.envelope
- self.color, self.weight, self.opacity = color, weight, opacity
- super(GPolyline, self).__init__()
-
- @property
- def js_params(self):
- return '%s, "%s", %s, %s' % (self.latlngs, self.color, self.weight, self.opacity)
-
-
-@total_ordering
-class GIcon(object):
- """
- Creates a GIcon object to pass into a Gmarker object.
-
- The keyword arguments map to instance attributes of the same name. These,
- in turn, correspond to a subset of the attributes of the official GIcon
- javascript object:
-
- http://code.google.com/apis/maps/documentation/reference.html#GIcon
-
- Because a Google map often uses several different icons, a name field has
- been added to the required arguments.
-
- Required Arguments:
- varname:
- A string which will become the basis for the js variable name of
- the marker, for this reason, your code should assign a unique
- name for each GIcon you instantiate, otherwise there will be
- name space collisions in your javascript.
-
- Keyword Options:
- image:
- The url of the image to be used as the icon on the map defaults
- to 'G_DEFAULT_ICON'
-
- iconsize:
- a tuple representing the pixel size of the foreground (not the
- shadow) image of the icon, in the format: (width, height) ex.:
-
- GIcon('fast_food',
- image="/media/icon/star.png",
- iconsize=(15,10))
-
- Would indicate your custom icon was 15px wide and 10px height.
-
- shadow:
- the url of the image of the icon's shadow
-
- shadowsize:
- a tuple representing the pixel size of the shadow image, format is
- the same as ``iconsize``
-
- iconanchor:
- a tuple representing the pixel coordinate relative to the top left
- corner of the icon image at which this icon is anchored to the map.
- In (x, y) format. x increases to the right in the Google Maps
- coordinate system and y increases downwards in the Google Maps
- coordinate system.)
-
- infowindowanchor:
- The pixel coordinate relative to the top left corner of the icon
- image at which the info window is anchored to this icon.
-
- """
- def __init__(self, varname, image=None, iconsize=None,
- shadow=None, shadowsize=None, iconanchor=None,
- infowindowanchor=None):
- self.varname = varname
- self.image = image
- self.iconsize = iconsize
- self.shadow = shadow
- self.shadowsize = shadowsize
- self.iconanchor = iconanchor
- self.infowindowanchor = infowindowanchor
-
- def __eq__(self, other):
- return self.varname == other.varname
-
- def __lt__(self, other):
- return self.varname < other.varname
-
- def __hash__(self):
- # XOR with hash of GIcon type so that hash('varname') won't
- # equal hash(GIcon('varname')).
- return hash(self.__class__) ^ hash(self.varname)
-
-class GMarker(GOverlayBase):
- """
- A Python wrapper for the Google GMarker object. For more information
- please see the Google Maps API Reference:
- http://code.google.com/apis/maps/documentation/reference.html#GMarker
-
- Example:
-
- from django.shortcuts import render_to_response
- from django.contrib.gis.maps.google.overlays import GMarker, GEvent
-
- def sample_request(request):
- marker = GMarker('POINT(101 26)')
- event = GEvent('click',
- 'function() { location.href = "http://www.google.com"}')
- marker.add_event(event)
- return render_to_response('mytemplate.html',
- {'google' : GoogleMap(markers=[marker])})
- """
- def __init__(self, geom, title=None, draggable=False, icon=None):
- """
- The GMarker object may initialize on GEOS Points or a parameter
- that may be instantiated into a GEOS point. Keyword options map to
- GMarkerOptions -- so far only the title option is supported.
-
- Keyword Options:
- title:
- Title option for GMarker, will be displayed as a tooltip.
-
- draggable:
- Draggable option for GMarker, disabled by default.
- """
- # If a GEOS geometry isn't passed in, try to construct one.
- if isinstance(geom, six.string_types): geom = fromstr(geom)
- if isinstance(geom, (tuple, list)): geom = Point(geom)
- if isinstance(geom, Point):
- self.latlng = self.latlng_from_coords(geom.coords)
- else:
- raise TypeError('GMarker may only initialize on GEOS Point geometry.')
- # Getting the envelope for automatic zoom determination.
- self.envelope = geom.envelope
- # TODO: Add support for more GMarkerOptions
- self.title = title
- self.draggable = draggable
- self.icon = icon
- super(GMarker, self).__init__()
-
- def latlng_from_coords(self, coords):
- return 'new GLatLng(%s,%s)' %(coords[1], coords[0])
-
- def options(self):
- result = []
- if self.title: result.append('title: "%s"' % self.title)
- if self.icon: result.append('icon: %s' % self.icon.varname)
- if self.draggable: result.append('draggable: true')
- return '{%s}' % ','.join(result)
-
- @property
- def js_params(self):
- return '%s, %s' % (self.latlng, self.options())
diff --git a/lib/python2.7/site-packages/django/contrib/gis/maps/google/zoom.py b/lib/python2.7/site-packages/django/contrib/gis/maps/google/zoom.py
deleted file mode 100644
index c93cf4e..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/maps/google/zoom.py
+++ /dev/null
@@ -1,162 +0,0 @@
-from django.contrib.gis.geos import GEOSGeometry, LinearRing, Polygon, Point
-from django.contrib.gis.maps.google.gmap import GoogleMapException
-from django.utils.six.moves import xrange
-from math import pi, sin, log, exp, atan
-
-# Constants used for degree to radian conversion, and vice-versa.
-DTOR = pi / 180.
-RTOD = 180. / pi
-
-class GoogleZoom(object):
- """
- GoogleZoom is a utility for performing operations related to the zoom
- levels on Google Maps.
-
- This class is inspired by the OpenStreetMap Mapnik tile generation routine
- `generate_tiles.py`, and the article "How Big Is the World" (Hack #16) in
- "Google Maps Hacks" by Rich Gibson and Schuyler Erle.
-
- `generate_tiles.py` may be found at:
- http://trac.openstreetmap.org/browser/applications/rendering/mapnik/generate_tiles.py
-
- "Google Maps Hacks" may be found at http://safari.oreilly.com/0596101619
- """
-
- def __init__(self, num_zoom=19, tilesize=256):
- "Initializes the Google Zoom object."
- # Google's tilesize is 256x256, square tiles are assumed.
- self._tilesize = tilesize
-
- # The number of zoom levels
- self._nzoom = num_zoom
-
- # Initializing arrays to hold the parameters for each one of the
- # zoom levels.
- self._degpp = [] # Degrees per pixel
- self._radpp = [] # Radians per pixel
- self._npix = [] # 1/2 the number of pixels for a tile at the given zoom level
-
- # Incrementing through the zoom levels and populating the parameter arrays.
- z = tilesize # The number of pixels per zoom level.
- for i in xrange(num_zoom):
- # Getting the degrees and radians per pixel, and the 1/2 the number of
- # for every zoom level.
- self._degpp.append(z / 360.) # degrees per pixel
- self._radpp.append(z / (2 * pi)) # radians per pixel
- self._npix.append(z / 2) # number of pixels to center of tile
-
- # Multiplying `z` by 2 for the next iteration.
- z *= 2
-
- def __len__(self):
- "Returns the number of zoom levels."
- return self._nzoom
-
- def get_lon_lat(self, lonlat):
- "Unpacks longitude, latitude from GEOS Points and 2-tuples."
- if isinstance(lonlat, Point):
- lon, lat = lonlat.coords
- else:
- lon, lat = lonlat
- return lon, lat
-
- def lonlat_to_pixel(self, lonlat, zoom):
- "Converts a longitude, latitude coordinate pair for the given zoom level."
- # Setting up, unpacking the longitude, latitude values and getting the
- # number of pixels for the given zoom level.
- lon, lat = self.get_lon_lat(lonlat)
- npix = self._npix[zoom]
-
- # Calculating the pixel x coordinate by multiplying the longitude value
- # with with the number of degrees/pixel at the given zoom level.
- px_x = round(npix + (lon * self._degpp[zoom]))
-
- # Creating the factor, and ensuring that 1 or -1 is not passed in as the
- # base to the logarithm. Here's why:
- # if fac = -1, we'll get log(0) which is undefined;
- # if fac = 1, our logarithm base will be divided by 0, also undefined.
- fac = min(max(sin(DTOR * lat), -0.9999), 0.9999)
-
- # Calculating the pixel y coordinate.
- px_y = round(npix + (0.5 * log((1 + fac)/(1 - fac)) * (-1.0 * self._radpp[zoom])))
-
- # Returning the pixel x, y to the caller of the function.
- return (px_x, px_y)
-
- def pixel_to_lonlat(self, px, zoom):
- "Converts a pixel to a longitude, latitude pair at the given zoom level."
- if len(px) != 2:
- raise TypeError('Pixel should be a sequence of two elements.')
-
- # Getting the number of pixels for the given zoom level.
- npix = self._npix[zoom]
-
- # Calculating the longitude value, using the degrees per pixel.
- lon = (px[0] - npix) / self._degpp[zoom]
-
- # Calculating the latitude value.
- lat = RTOD * ( 2 * atan(exp((px[1] - npix)/ (-1.0 * self._radpp[zoom]))) - 0.5 * pi)
-
- # Returning the longitude, latitude coordinate pair.
- return (lon, lat)
-
- def tile(self, lonlat, zoom):
- """
- Returns a Polygon corresponding to the region represented by a fictional
- Google Tile for the given longitude/latitude pair and zoom level. This
- tile is used to determine the size of a tile at the given point.
- """
- # The given lonlat is the center of the tile.
- delta = self._tilesize / 2
-
- # Getting the pixel coordinates corresponding to the
- # the longitude/latitude.
- px = self.lonlat_to_pixel(lonlat, zoom)
-
- # Getting the lower-left and upper-right lat/lon coordinates
- # for the bounding box of the tile.
- ll = self.pixel_to_lonlat((px[0]-delta, px[1]-delta), zoom)
- ur = self.pixel_to_lonlat((px[0]+delta, px[1]+delta), zoom)
-
- # Constructing the Polygon, representing the tile and returning.
- return Polygon(LinearRing(ll, (ll[0], ur[1]), ur, (ur[0], ll[1]), ll), srid=4326)
-
- def get_zoom(self, geom):
- "Returns the optimal Zoom level for the given geometry."
- # Checking the input type.
- if not isinstance(geom, GEOSGeometry) or geom.srid != 4326:
- raise TypeError('get_zoom() expects a GEOS Geometry with an SRID of 4326.')
-
- # Getting the envelope for the geometry, and its associated width, height
- # and centroid.
- env = geom.envelope
- env_w, env_h = self.get_width_height(env.extent)
- center = env.centroid
-
- for z in xrange(self._nzoom):
- # Getting the tile at the zoom level.
- tile_w, tile_h = self.get_width_height(self.tile(center, z).extent)
-
- # When we span more than one tile, this is an approximately good
- # zoom level.
- if (env_w > tile_w) or (env_h > tile_h):
- if z == 0:
- raise GoogleMapException('Geometry width and height should not exceed that of the Earth.')
- return z-1
-
- # Otherwise, we've zoomed in to the max.
- return self._nzoom-1
-
- def get_width_height(self, extent):
- """
- Returns the width and height for the given extent.
- """
- # Getting the lower-left, upper-left, and upper-right
- # coordinates from the extent.
- ll = Point(extent[:2])
- ul = Point(extent[0], extent[3])
- ur = Point(extent[2:])
- # Calculating the width and height.
- height = ll.distance(ul)
- width = ul.distance(ur)
- return width, height
diff --git a/lib/python2.7/site-packages/django/contrib/gis/maps/openlayers/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/maps/openlayers/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/maps/openlayers/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/measure.py b/lib/python2.7/site-packages/django/contrib/gis/measure.py
deleted file mode 100644
index e2e6b6b..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/measure.py
+++ /dev/null
@@ -1,330 +0,0 @@
-# Copyright (c) 2007, Robert Coup <robert.coup@onetrackmind.co.nz>
-# 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 Distance 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.
-#
-"""
-Distance and Area objects to allow for sensible and convienient calculation
-and conversions.
-
-Authors: Robert Coup, Justin Bronn, Riccardo Di Virgilio
-
-Inspired by GeoPy (http://exogen.case.edu/projects/geopy/)
-and Geoff Biggs' PhD work on dimensioned units for robotics.
-"""
-__all__ = ['A', 'Area', 'D', 'Distance']
-from decimal import Decimal
-
-from django.utils.functional import total_ordering
-from django.utils import six
-
-NUMERIC_TYPES = six.integer_types + (float, Decimal)
-AREA_PREFIX = "sq_"
-
-def pretty_name(obj):
- return obj.__name__ if obj.__class__ == type else obj.__class__.__name__
-
-
-@total_ordering
-class MeasureBase(object):
- STANDARD_UNIT = None
- ALIAS = {}
- UNITS = {}
- LALIAS = {}
-
- def __init__(self, default_unit=None, **kwargs):
- value, self._default_unit = self.default_units(kwargs)
- setattr(self, self.STANDARD_UNIT, value)
- if default_unit and isinstance(default_unit, six.string_types):
- self._default_unit = default_unit
-
- def _get_standard(self):
- return getattr(self, self.STANDARD_UNIT)
-
- def _set_standard(self, value):
- setattr(self, self.STANDARD_UNIT, value)
-
- standard = property(_get_standard, _set_standard)
-
- def __getattr__(self, name):
- if name in self.UNITS:
- return self.standard / self.UNITS[name]
- else:
- raise AttributeError('Unknown unit type: %s' % name)
-
- def __repr__(self):
- return '%s(%s=%s)' % (pretty_name(self), self._default_unit,
- getattr(self, self._default_unit))
-
- def __str__(self):
- return '%s %s' % (getattr(self, self._default_unit), self._default_unit)
-
- # **** Comparison methods ****
-
- def __eq__(self, other):
- if isinstance(other, self.__class__):
- return self.standard == other.standard
- else:
- return NotImplemented
-
- def __lt__(self, other):
- if isinstance(other, self.__class__):
- return self.standard < other.standard
- else:
- return NotImplemented
-
- # **** Operators methods ****
-
- def __add__(self, other):
- if isinstance(other, self.__class__):
- return self.__class__(default_unit=self._default_unit,
- **{self.STANDARD_UNIT: (self.standard + other.standard)})
- else:
- raise TypeError('%(class)s must be added with %(class)s' % {"class":pretty_name(self)})
-
- def __iadd__(self, other):
- if isinstance(other, self.__class__):
- self.standard += other.standard
- return self
- else:
- raise TypeError('%(class)s must be added with %(class)s' % {"class":pretty_name(self)})
-
- def __sub__(self, other):
- if isinstance(other, self.__class__):
- return self.__class__(default_unit=self._default_unit,
- **{self.STANDARD_UNIT: (self.standard - other.standard)})
- else:
- raise TypeError('%(class)s must be subtracted from %(class)s' % {"class":pretty_name(self)})
-
- def __isub__(self, other):
- if isinstance(other, self.__class__):
- self.standard -= other.standard
- return self
- else:
- raise TypeError('%(class)s must be subtracted from %(class)s' % {"class":pretty_name(self)})
-
- def __mul__(self, other):
- if isinstance(other, NUMERIC_TYPES):
- return self.__class__(default_unit=self._default_unit,
- **{self.STANDARD_UNIT: (self.standard * other)})
- else:
- raise TypeError('%(class)s must be multiplied with number' % {"class":pretty_name(self)})
-
- def __imul__(self, other):
- if isinstance(other, NUMERIC_TYPES):
- self.standard *= float(other)
- return self
- else:
- raise TypeError('%(class)s must be multiplied with number' % {"class":pretty_name(self)})
-
- def __rmul__(self, other):
- return self * other
-
- def __truediv__(self, other):
- if isinstance(other, self.__class__):
- return self.standard / other.standard
- if isinstance(other, NUMERIC_TYPES):
- return self.__class__(default_unit=self._default_unit,
- **{self.STANDARD_UNIT: (self.standard / other)})
- else:
- raise TypeError('%(class)s must be divided with number or %(class)s' % {"class":pretty_name(self)})
-
- def __div__(self, other): # Python 2 compatibility
- return type(self).__truediv__(self, other)
-
- def __itruediv__(self, other):
- if isinstance(other, NUMERIC_TYPES):
- self.standard /= float(other)
- return self
- else:
- raise TypeError('%(class)s must be divided with number' % {"class":pretty_name(self)})
-
- def __idiv__(self, other): # Python 2 compatibility
- return type(self).__itruediv__(self, other)
-
- def __bool__(self):
- return bool(self.standard)
-
- def __nonzero__(self): # Python 2 compatibility
- return type(self).__bool__(self)
-
- def default_units(self, kwargs):
- """
- Return the unit value and the default units specified
- from the given keyword arguments dictionary.
- """
- val = 0.0
- default_unit = self.STANDARD_UNIT
- for unit, value in six.iteritems(kwargs):
- if not isinstance(value, float): value = float(value)
- if unit in self.UNITS:
- val += self.UNITS[unit] * value
- default_unit = unit
- elif unit in self.ALIAS:
- u = self.ALIAS[unit]
- val += self.UNITS[u] * value
- default_unit = u
- else:
- lower = unit.lower()
- if lower in self.UNITS:
- val += self.UNITS[lower] * value
- default_unit = lower
- elif lower in self.LALIAS:
- u = self.LALIAS[lower]
- val += self.UNITS[u] * value
- default_unit = u
- else:
- raise AttributeError('Unknown unit type: %s' % unit)
- return val, default_unit
-
- @classmethod
- def unit_attname(cls, unit_str):
- """
- Retrieves the unit attribute name for the given unit string.
- For example, if the given unit string is 'metre', 'm' would be returned.
- An exception is raised if an attribute cannot be found.
- """
- lower = unit_str.lower()
- if unit_str in cls.UNITS:
- return unit_str
- elif lower in cls.UNITS:
- return lower
- elif lower in cls.LALIAS:
- return cls.LALIAS[lower]
- else:
- raise Exception('Could not find a unit keyword associated with "%s"' % unit_str)
-
-class Distance(MeasureBase):
- STANDARD_UNIT = "m"
- UNITS = {
- 'chain' : 20.1168,
- 'chain_benoit' : 20.116782,
- 'chain_sears' : 20.1167645,
- 'british_chain_benoit' : 20.1167824944,
- 'british_chain_sears' : 20.1167651216,
- 'british_chain_sears_truncated' : 20.116756,
- 'cm' : 0.01,
- 'british_ft' : 0.304799471539,
- 'british_yd' : 0.914398414616,
- 'clarke_ft' : 0.3047972654,
- 'clarke_link' : 0.201166195164,
- 'fathom' : 1.8288,
- 'ft': 0.3048,
- 'german_m' : 1.0000135965,
- 'gold_coast_ft' : 0.304799710181508,
- 'indian_yd' : 0.914398530744,
- 'inch' : 0.0254,
- 'km': 1000.0,
- 'link' : 0.201168,
- 'link_benoit' : 0.20116782,
- 'link_sears' : 0.20116765,
- 'm': 1.0,
- 'mi': 1609.344,
- 'mm' : 0.001,
- 'nm': 1852.0,
- 'nm_uk' : 1853.184,
- 'rod' : 5.0292,
- 'sears_yd' : 0.91439841,
- 'survey_ft' : 0.304800609601,
- 'um' : 0.000001,
- 'yd': 0.9144,
- }
-
- # Unit aliases for `UNIT` terms encountered in Spatial Reference WKT.
- ALIAS = {
- 'centimeter' : 'cm',
- 'foot' : 'ft',
- 'inches' : 'inch',
- 'kilometer' : 'km',
- 'kilometre' : 'km',
- 'meter' : 'm',
- 'metre' : 'm',
- 'micrometer' : 'um',
- 'micrometre' : 'um',
- 'millimeter' : 'mm',
- 'millimetre' : 'mm',
- 'mile' : 'mi',
- 'yard' : 'yd',
- 'British chain (Benoit 1895 B)' : 'british_chain_benoit',
- 'British chain (Sears 1922)' : 'british_chain_sears',
- 'British chain (Sears 1922 truncated)' : 'british_chain_sears_truncated',
- 'British foot (Sears 1922)' : 'british_ft',
- 'British foot' : 'british_ft',
- 'British yard (Sears 1922)' : 'british_yd',
- 'British yard' : 'british_yd',
- "Clarke's Foot" : 'clarke_ft',
- "Clarke's link" : 'clarke_link',
- 'Chain (Benoit)' : 'chain_benoit',
- 'Chain (Sears)' : 'chain_sears',
- 'Foot (International)' : 'ft',
- 'German legal metre' : 'german_m',
- 'Gold Coast foot' : 'gold_coast_ft',
- 'Indian yard' : 'indian_yd',
- 'Link (Benoit)': 'link_benoit',
- 'Link (Sears)': 'link_sears',
- 'Nautical Mile' : 'nm',
- 'Nautical Mile (UK)' : 'nm_uk',
- 'US survey foot' : 'survey_ft',
- 'U.S. Foot' : 'survey_ft',
- 'Yard (Indian)' : 'indian_yd',
- 'Yard (Sears)' : 'sears_yd'
- }
- LALIAS = dict([(k.lower(), v) for k, v in ALIAS.items()])
-
- def __mul__(self, other):
- if isinstance(other, self.__class__):
- return Area(default_unit=AREA_PREFIX + self._default_unit,
- **{AREA_PREFIX + self.STANDARD_UNIT: (self.standard * other.standard)})
- elif isinstance(other, NUMERIC_TYPES):
- return self.__class__(default_unit=self._default_unit,
- **{self.STANDARD_UNIT: (self.standard * other)})
- else:
- raise TypeError('%(distance)s must be multiplied with number or %(distance)s' % {
- "distance" : pretty_name(self.__class__),
- })
-
-
-class Area(MeasureBase):
- STANDARD_UNIT = AREA_PREFIX + Distance.STANDARD_UNIT
- # Getting the square units values and the alias dictionary.
- UNITS = dict([('%s%s' % (AREA_PREFIX, k), v ** 2) for k, v in Distance.UNITS.items()])
- ALIAS = dict([(k, '%s%s' % (AREA_PREFIX, v)) for k, v in Distance.ALIAS.items()])
- LALIAS = dict([(k.lower(), v) for k, v in ALIAS.items()])
-
- def __truediv__(self, other):
- if isinstance(other, NUMERIC_TYPES):
- return self.__class__(default_unit=self._default_unit,
- **{self.STANDARD_UNIT: (self.standard / other)})
- else:
- raise TypeError('%(class)s must be divided by a number' % {"class":pretty_name(self)})
-
- def __div__(self, other): # Python 2 compatibility
- return type(self).__truediv__(self, other)
-
-
-# Shortcuts
-D = Distance
-A = Area
diff --git a/lib/python2.7/site-packages/django/contrib/gis/models.py b/lib/python2.7/site-packages/django/contrib/gis/models.py
deleted file mode 100644
index e379e82..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/models.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from django.db import connection
-
-if (hasattr(connection.ops, 'spatial_version') and
- not connection.ops.mysql):
- # Getting the `SpatialRefSys` and `GeometryColumns`
- # models for the default spatial backend. These
- # aliases are provided for backwards-compatibility.
- SpatialRefSys = connection.ops.spatial_ref_sys()
- GeometryColumns = connection.ops.geometry_columns()
diff --git a/lib/python2.7/site-packages/django/contrib/gis/shortcuts.py b/lib/python2.7/site-packages/django/contrib/gis/shortcuts.py
deleted file mode 100644
index 16b0fdf..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/shortcuts.py
+++ /dev/null
@@ -1,33 +0,0 @@
-import zipfile
-from io import BytesIO
-
-from django.conf import settings
-from django.http import HttpResponse
-from django.template import loader
-
-def compress_kml(kml):
- "Returns compressed KMZ from the given KML string."
- kmz = BytesIO()
- zf = zipfile.ZipFile(kmz, 'a', zipfile.ZIP_DEFLATED)
- zf.writestr('doc.kml', kml.encode(settings.DEFAULT_CHARSET))
- zf.close()
- kmz.seek(0)
- return kmz.read()
-
-def render_to_kml(*args, **kwargs):
- "Renders the response as KML (using the correct MIME type)."
- return HttpResponse(loader.render_to_string(*args, **kwargs),
- content_type='application/vnd.google-earth.kml+xml')
-
-def render_to_kmz(*args, **kwargs):
- """
- Compresses the KML content and returns as KMZ (using the correct
- MIME type).
- """
- return HttpResponse(compress_kml(loader.render_to_string(*args, **kwargs)),
- content_type='application/vnd.google-earth.kmz')
-
-def render_to_text(*args, **kwargs):
- "Renders the response using the MIME type for plain text."
- return HttpResponse(loader.render_to_string(*args, **kwargs),
- content_type='text/plain')
diff --git a/lib/python2.7/site-packages/django/contrib/gis/sitemaps/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/sitemaps/__init__.py
deleted file mode 100644
index 9b6287f..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/sitemaps/__init__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# Geo-enabled Sitemap classes.
-from django.contrib.gis.sitemaps.georss import GeoRSSSitemap
-from django.contrib.gis.sitemaps.kml import KMLSitemap, KMZSitemap
-
diff --git a/lib/python2.7/site-packages/django/contrib/gis/sitemaps/georss.py b/lib/python2.7/site-packages/django/contrib/gis/sitemaps/georss.py
deleted file mode 100644
index ccb7dc2..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/sitemaps/georss.py
+++ /dev/null
@@ -1,53 +0,0 @@
-from django.core import urlresolvers
-from django.contrib.sitemaps import Sitemap
-
-class GeoRSSSitemap(Sitemap):
- """
- A minimal hook to produce sitemaps for GeoRSS feeds.
- """
- def __init__(self, feed_dict, slug_dict=None):
- """
- This sitemap object initializes on a feed dictionary (as would be passed
- to `django.contrib.gis.views.feed`) and a slug dictionary.
- If the slug dictionary is not defined, then it's assumed the keys provide
- the URL parameter to the feed. However, if you have a complex feed (e.g.,
- you override `get_object`, then you'll need to provide a slug dictionary.
- The slug dictionary should have the same keys as the feed dictionary, but
- each value in the slug dictionary should be a sequence of slugs that may
- be used for valid feeds. For example, let's say we have a feed that
- returns objects for a specific ZIP code in our feed dictionary:
-
- feed_dict = {'zipcode' : ZipFeed}
-
- Then we would use a slug dictionary with a list of the zip code slugs
- corresponding to feeds you want listed in the sitemap:
-
- slug_dict = {'zipcode' : ['77002', '77054']}
- """
- # Setting up.
- self.feed_dict = feed_dict
- self.locations = []
- if slug_dict is None: slug_dict = {}
- # Getting the feed locations.
- for section in feed_dict.keys():
- if slug_dict.get(section, False):
- for slug in slug_dict[section]:
- self.locations.append('%s/%s' % (section, slug))
- else:
- self.locations.append(section)
-
- def get_urls(self, page=1, site=None):
- """
- This method is overrridden so the appropriate `geo_format` attribute
- is placed on each URL element.
- """
- urls = Sitemap.get_urls(self, page=page, site=site)
- for url in urls: url['geo_format'] = 'georss'
- return urls
-
- def items(self):
- return self.locations
-
- def location(self, obj):
- return urlresolvers.reverse('django.contrib.gis.views.feed', args=(obj,))
-
diff --git a/lib/python2.7/site-packages/django/contrib/gis/sitemaps/kml.py b/lib/python2.7/site-packages/django/contrib/gis/sitemaps/kml.py
deleted file mode 100644
index 837fe62..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/sitemaps/kml.py
+++ /dev/null
@@ -1,63 +0,0 @@
-from django.core import urlresolvers
-from django.contrib.sitemaps import Sitemap
-from django.contrib.gis.db.models.fields import GeometryField
-from django.db import models
-
-class KMLSitemap(Sitemap):
- """
- A minimal hook to produce KML sitemaps.
- """
- geo_format = 'kml'
-
- def __init__(self, locations=None):
- # If no locations specified, then we try to build for
- # every model in installed applications.
- self.locations = self._build_kml_sources(locations)
-
- def _build_kml_sources(self, sources):
- """
- Goes through the given sources and returns a 3-tuple of
- the application label, module name, and field name of every
- GeometryField encountered in the sources.
-
- If no sources are provided, then all models.
- """
- kml_sources = []
- if sources is None:
- sources = models.get_models()
- for source in sources:
- if isinstance(source, models.base.ModelBase):
- for field in source._meta.fields:
- if isinstance(field, GeometryField):
- kml_sources.append((source._meta.app_label,
- source._meta.model_name,
- field.name))
- elif isinstance(source, (list, tuple)):
- if len(source) != 3:
- raise ValueError('Must specify a 3-tuple of (app_label, module_name, field_name).')
- kml_sources.append(source)
- else:
- raise TypeError('KML Sources must be a model or a 3-tuple.')
- return kml_sources
-
- def get_urls(self, page=1, site=None):
- """
- This method is overrridden so the appropriate `geo_format` attribute
- is placed on each URL element.
- """
- urls = Sitemap.get_urls(self, page=page, site=site)
- for url in urls: url['geo_format'] = self.geo_format
- return urls
-
- def items(self):
- return self.locations
-
- def location(self, obj):
- return urlresolvers.reverse('django.contrib.gis.sitemaps.views.%s' % self.geo_format,
- kwargs={'label' : obj[0],
- 'model' : obj[1],
- 'field_name': obj[2],
- }
- )
-class KMZSitemap(KMLSitemap):
- geo_format = 'kmz'
diff --git a/lib/python2.7/site-packages/django/contrib/gis/sitemaps/views.py b/lib/python2.7/site-packages/django/contrib/gis/sitemaps/views.py
deleted file mode 100644
index 9682c12..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/sitemaps/views.py
+++ /dev/null
@@ -1,114 +0,0 @@
-from __future__ import unicode_literals
-
-from django.http import HttpResponse, Http404
-from django.template import loader
-from django.contrib.sites.models import get_current_site
-from django.core import urlresolvers
-from django.core.paginator import EmptyPage, PageNotAnInteger
-from django.contrib.gis.db.models.fields import GeometryField
-from django.db import connections, DEFAULT_DB_ALIAS
-from django.db.models import get_model
-from django.utils import six
-from django.utils.translation import ugettext as _
-
-from django.contrib.gis.shortcuts import render_to_kml, render_to_kmz
-
-def index(request, sitemaps):
- """
- This view generates a sitemap index that uses the proper view
- for resolving geographic section sitemap URLs.
- """
- current_site = get_current_site(request)
- sites = []
- protocol = 'https' if request.is_secure() else 'http'
- for section, site in sitemaps.items():
- if callable(site):
- pages = site().paginator.num_pages
- else:
- pages = site.paginator.num_pages
- sitemap_url = urlresolvers.reverse('django.contrib.gis.sitemaps.views.sitemap', kwargs={'section': section})
- sites.append('%s://%s%s' % (protocol, current_site.domain, sitemap_url))
-
- if pages > 1:
- for page in range(2, pages+1):
- sites.append('%s://%s%s?p=%s' % (protocol, current_site.domain, sitemap_url, page))
- xml = loader.render_to_string('sitemap_index.xml', {'sitemaps': sites})
- return HttpResponse(xml, content_type='application/xml')
-
-def sitemap(request, sitemaps, section=None):
- """
- This view generates a sitemap with additional geographic
- elements defined by Google.
- """
- maps, urls = [], []
- if section is not None:
- if section not in sitemaps:
- raise Http404(_("No sitemap available for section: %r") % section)
- maps.append(sitemaps[section])
- else:
- maps = list(six.itervalues(sitemaps))
-
- page = request.GET.get("p", 1)
- current_site = get_current_site(request)
- for site in maps:
- try:
- if callable(site):
- urls.extend(site().get_urls(page=page, site=current_site))
- else:
- urls.extend(site.get_urls(page=page, site=current_site))
- except EmptyPage:
- raise Http404(_("Page %s empty") % page)
- except PageNotAnInteger:
- raise Http404(_("No page '%s'") % page)
- xml = loader.render_to_string('gis/sitemaps/geo_sitemap.xml', {'urlset': urls})
- return HttpResponse(xml, content_type='application/xml')
-
-def kml(request, label, model, field_name=None, compress=False, using=DEFAULT_DB_ALIAS):
- """
- This view generates KML for the given app label, model, and field name.
-
- The model's default manager must be GeoManager, and the field name
- must be that of a geographic field.
- """
- placemarks = []
- klass = get_model(label, model)
- if not klass:
- raise Http404('You must supply a valid app label and module name. Got "%s.%s"' % (label, model))
-
- if field_name:
- try:
- info = klass._meta.get_field_by_name(field_name)
- if not isinstance(info[0], GeometryField):
- raise Exception
- except:
- raise Http404('Invalid geometry field.')
-
- connection = connections[using]
-
- if connection.ops.postgis:
- # PostGIS will take care of transformation.
- placemarks = klass._default_manager.using(using).kml(field_name=field_name)
- else:
- # There's no KML method on Oracle or MySQL, so we use the `kml`
- # attribute of the lazy geometry instead.
- placemarks = []
- if connection.ops.oracle:
- qs = klass._default_manager.using(using).transform(4326, field_name=field_name)
- else:
- qs = klass._default_manager.using(using).all()
- for mod in qs:
- mod.kml = getattr(mod, field_name).kml
- placemarks.append(mod)
-
- # Getting the render function and rendering to the correct.
- if compress:
- render = render_to_kmz
- else:
- render = render_to_kml
- return render('gis/kml/placemarks.kml', {'places' : placemarks})
-
-def kmz(request, label, model, field_name=None, using=DEFAULT_DB_ALIAS):
- """
- This view returns KMZ for the given app label, model, and field name.
- """
- return kml(request, label, model, field_name, compress=True, using=using)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/static/gis/js/OLMapWidget.js b/lib/python2.7/site-packages/django/contrib/gis/static/gis/js/OLMapWidget.js
deleted file mode 100644
index b20e872..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/static/gis/js/OLMapWidget.js
+++ /dev/null
@@ -1,376 +0,0 @@
-(function() {
-/**
- * Transforms an array of features to a single feature with the merged
- * geometry of geom_type
- */
-OpenLayers.Util.properFeatures = function(features, geom_type) {
- if (features.constructor == Array) {
- var geoms = [];
- for (var i=0; i<features.length; i++) {
- geoms.push(features[i].geometry);
- }
- var geom = new geom_type(geoms);
- features = new OpenLayers.Feature.Vector(geom);
- }
- return features;
-}
-
-/**
- * @requires OpenLayers/Format/WKT.js
- */
-
-/**
- * Class: OpenLayers.Format.DjangoWKT
- * Class for reading Well-Known Text, with workarounds to successfully parse
- * geometries and collections as returnes by django.contrib.gis.geos.
- *
- * Inherits from:
- * - <OpenLayers.Format.WKT>
- */
-
-OpenLayers.Format.DjangoWKT = OpenLayers.Class(OpenLayers.Format.WKT, {
- initialize: function(options) {
- OpenLayers.Format.WKT.prototype.initialize.apply(this, [options]);
- this.regExes.justComma = /\s*,\s*/;
- },
-
- parse: {
- 'point': function(str) {
- var coords = OpenLayers.String.trim(str).split(this.regExes.spaces);
- return new OpenLayers.Feature.Vector(
- new OpenLayers.Geometry.Point(coords[0], coords[1])
- );
- },
-
- 'multipoint': function(str) {
- var point;
- var points = OpenLayers.String.trim(str).split(this.regExes.justComma);
- var components = [];
- for(var i=0, len=points.length; i<len; ++i) {
- point = points[i].replace(this.regExes.trimParens, '$1');
- components.push(this.parse.point.apply(this, [point]).geometry);
- }
- return new OpenLayers.Feature.Vector(
- new OpenLayers.Geometry.MultiPoint(components)
- );
- },
-
- 'linestring': function(str) {
- var points = OpenLayers.String.trim(str).split(',');
- var components = [];
- for(var i=0, len=points.length; i<len; ++i) {
- components.push(this.parse.point.apply(this, [points[i]]).geometry);
- }
- return new OpenLayers.Feature.Vector(
- new OpenLayers.Geometry.LineString(components)
- );
- },
-
- 'multilinestring': function(str) {
- var line;
- var lines = OpenLayers.String.trim(str).split(this.regExes.parenComma);
- var components = [];
- for(var i=0, len=lines.length; i<len; ++i) {
- line = lines[i].replace(this.regExes.trimParens, '$1');
- components.push(this.parse.linestring.apply(this, [line]).geometry);
- }
- return new OpenLayers.Feature.Vector(
- new OpenLayers.Geometry.MultiLineString(components)
- );
- },
-
- 'polygon': function(str) {
- var ring, linestring, linearring;
- var rings = OpenLayers.String.trim(str).split(this.regExes.parenComma);
- var components = [];
- for(var i=0, len=rings.length; i<len; ++i) {
- ring = rings[i].replace(this.regExes.trimParens, '$1');
- linestring = this.parse.linestring.apply(this, [ring]).geometry;
- linearring = new OpenLayers.Geometry.LinearRing(linestring.components);
- components.push(linearring);
- }
- return new OpenLayers.Feature.Vector(
- new OpenLayers.Geometry.Polygon(components)
- );
- },
-
- 'multipolygon': function(str) {
- var polygon;
- var polygons = OpenLayers.String.trim(str).split(this.regExes.doubleParenComma);
- var components = [];
- for(var i=0, len=polygons.length; i<len; ++i) {
- polygon = polygons[i].replace(this.regExes.trimParens, '$1');
- components.push(this.parse.polygon.apply(this, [polygon]).geometry);
- }
- return new OpenLayers.Feature.Vector(
- new OpenLayers.Geometry.MultiPolygon(components)
- );
- },
-
- 'geometrycollection': function(str) {
- // separate components of the collection with |
- str = str.replace(/,\s*([A-Za-z])/g, '|$1');
- var wktArray = OpenLayers.String.trim(str).split('|');
- var components = [];
- for(var i=0, len=wktArray.length; i<len; ++i) {
- components.push(OpenLayers.Format.WKT.prototype.read.apply(this,[wktArray[i]]));
- }
- return components;
- }
- },
-
- extractGeometry: function(geometry) {
- var type = geometry.CLASS_NAME.split('.')[2].toLowerCase();
- if (!this.extract[type]) {
- return null;
- }
- if (this.internalProjection && this.externalProjection) {
- geometry = geometry.clone();
- geometry.transform(this.internalProjection, this.externalProjection);
- }
- var wktType = type == 'collection' ? 'GEOMETRYCOLLECTION' : type.toUpperCase();
- var data = wktType + '(' + this.extract[type].apply(this, [geometry]) + ')';
- return data;
- },
-
- /**
- * Patched write: successfully writes WKT for geometries and
- * geometrycollections.
- */
- write: function(features) {
- var collection, geometry, type, data, isCollection;
- isCollection = features.geometry.CLASS_NAME == "OpenLayers.Geometry.Collection";
- var pieces = [];
- if (isCollection) {
- collection = features.geometry.components;
- pieces.push('GEOMETRYCOLLECTION(');
- for (var i=0, len=collection.length; i<len; ++i) {
- if (i>0) {
- pieces.push(',');
- }
- pieces.push(this.extractGeometry(collection[i]));
- }
- pieces.push(')');
- } else {
- pieces.push(this.extractGeometry(features.geometry));
- }
- return pieces.join('');
- },
-
- CLASS_NAME: "OpenLayers.Format.DjangoWKT"
-});
-
-function MapWidget(options) {
- this.map = null;
- this.controls = null;
- this.panel = null;
- this.layers = {};
- this.wkt_f = new OpenLayers.Format.DjangoWKT();
-
- // Mapping from OGRGeomType name to OpenLayers.Geometry name
- if (options['geom_name'] == 'Unknown') options['geom_type'] = OpenLayers.Geometry;
- else if (options['geom_name'] == 'GeometryCollection') options['geom_type'] = OpenLayers.Geometry.Collection;
- else options['geom_type'] = eval('OpenLayers.Geometry' + options['geom_name']);
-
- // Default options
- this.options = {
- color: 'ee9900',
- default_lat: 0,
- default_lon: 0,
- default_zoom: 4,
- is_collection: options['geom_type'] instanceof OpenLayers.Geometry.Collection,
- layerswitcher: false,
- map_options: {},
- map_srid: 4326,
- modifiable: true,
- mouse_position: false,
- opacity: 0.4,
- point_zoom: 12,
- scale_text: false,
- scrollable: true
- };
-
- // Altering using user-provied options
- for (var property in options) {
- if (options.hasOwnProperty(property)) {
- this.options[property] = options[property];
- }
- }
-
- this.map = this.create_map();
-
- var defaults_style = {
- 'fillColor': '#' + this.options.color,
- 'fillOpacity': this.options.opacity,
- 'strokeColor': '#' + this.options.color,
- };
- if (this.options.geom_name == 'LineString') {
- defaults_style['strokeWidth'] = 3;
- }
- var styleMap = new OpenLayers.StyleMap({'default': OpenLayers.Util.applyDefaults(defaults_style, OpenLayers.Feature.Vector.style['default'])});
- this.layers.vector = new OpenLayers.Layer.Vector(" " + this.options.name, {styleMap: styleMap});
- this.map.addLayer(this.layers.vector);
- var wkt = document.getElementById(this.options.id).value;
- if (wkt) {
- var feat = OpenLayers.Util.properFeatures(this.read_wkt(wkt), this.options.geom_type);
- this.write_wkt(feat);
- if (this.options.is_collection) {
- for (var i=0; i<this.num_geom; i++) {
- this.layers.vector.addFeatures([new OpenLayers.Feature.Vector(feat.geometry.components[i].clone())]);
- }
- } else {
- this.layers.vector.addFeatures([feat]);
- }
- this.map.zoomToExtent(feat.geometry.getBounds());
- if (this.options.geom_name == 'Point') {
- this.map.zoomTo(this.options.point_zoom);
- }
- } else {
- this.map.setCenter(this.defaultCenter(), this.options.default_zoom);
- }
- this.layers.vector.events.on({'featuremodified': this.modify_wkt, scope: this});
- this.layers.vector.events.on({'featureadded': this.add_wkt, scope: this});
-
- this.getControls(this.layers.vector);
- this.panel.addControls(this.controls);
- this.map.addControl(this.panel);
- this.addSelectControl();
-
- if (this.options.mouse_position) {
- this.map.addControl(new OpenLayers.Control.MousePosition());
- }
- if (this.options.scale_text) {
- this.map.addControl(new OpenLayers.Control.Scale());
- }
- if (this.options.layerswitcher) {
- this.map.addControl(new OpenLayers.Control.LayerSwitcher());
- }
- if (!this.options.scrollable) {
- this.map.getControlsByClass('OpenLayers.Control.Navigation')[0].disableZoomWheel();
- }
- if (wkt) {
- if (this.options.modifiable) {
- this.enableEditing();
- }
- } else {
- this.enableDrawing();
- }
-}
-
-MapWidget.prototype.create_map = function() {
- var map = new OpenLayers.Map(this.options.map_id, this.options.map_options);
- if (this.options.base_layer) this.layers.base = this.options.base_layer;
- else this.layers.base = new OpenLayers.Layer.WMS('OpenLayers WMS', 'http://vmap0.tiles.osgeo.org/wms/vmap0', {layers: 'basic'});
- map.addLayer(this.layers.base);
- return map
-};
-
-MapWidget.prototype.get_ewkt = function(feat) {
- return "SRID=" + this.options.map_srid + ";" + this.wkt_f.write(feat);
-};
-
-MapWidget.prototype.read_wkt = function(wkt) {
- var prefix = 'SRID=' + this.options.map_srid + ';'
- if (wkt.indexOf(prefix) === 0) {
- wkt = wkt.slice(prefix.length);
- }
- return this.wkt_f.read(wkt);
-};
-
-MapWidget.prototype.write_wkt = function(feat) {
- feat = OpenLayers.Util.properFeatures(feat, this.options.geom_type);
- if (this.options.is_collection) {
- this.num_geom = feat.geometry.components.length;
- } else {
- this.num_geom = 1;
- }
- document.getElementById(this.options.id).value = this.get_ewkt(feat);
-};
-
-MapWidget.prototype.add_wkt = function(event) {
- if (this.options.is_collection) {
- var feat = new OpenLayers.Feature.Vector(new this.options.geom_type());
- for (var i=0; i<this.layers.vector.features.length; i++) {
- feat.geometry.addComponents([this.layers.vector.features[i].geometry]);
- }
- this.write_wkt(feat);
- } else {
- if (this.layers.vector.features.length > 1) {
- old_feats = [this.layers.vector.features[0]];
- this.layers.vector.removeFeatures(old_feats);
- this.layers.vector.destroyFeatures(old_feats);
- }
- this.write_wkt(event.feature);
- }
-};
-
-MapWidget.prototype.modify_wkt = function(event) {
- if (this.options.is_collection) {
- if (this.options.geom_name == 'MultiPoint') {
- this.add_wkt(event);
- return;
- } else {
- var feat = new OpenLayers.Feature.Vector(new this.options.geom_type());
- for (var i=0; i<this.num_geom; i++) {
- feat.geometry.addComponents([this.layers.vector.features[i].geometry]);
- }
- this.write_wkt(feat);
- }
- } else {
- this.write_wkt(event.feature);
- }
-};
-
-MapWidget.prototype.deleteFeatures = function() {
- this.layers.vector.removeFeatures(this.layers.vector.features);
- this.layers.vector.destroyFeatures();
-};
-
-MapWidget.prototype.clearFeatures = function() {
- this.deleteFeatures();
- document.getElementById(this.options.id).value = '';
- this.map.setCenter(this.defaultCenter(), this.options.default_zoom);
-};
-
-MapWidget.prototype.defaultCenter = function() {
- var center = new OpenLayers.LonLat(this.options.default_lon, this.options.default_lat);
- if (this.options.map_srid) {
- return center.transform(new OpenLayers.Projection("EPSG:4326"), this.map.getProjectionObject());
- }
- return center;
-};
-
-MapWidget.prototype.addSelectControl = function() {
- var select = new OpenLayers.Control.SelectFeature(this.layers.vector, {'toggle': true, 'clickout': true});
- this.map.addControl(select);
- select.activate();
-};
-
-MapWidget.prototype.enableDrawing = function () {
- this.map.getControlsByClass('OpenLayers.Control.DrawFeature')[0].activate();
-};
-
-MapWidget.prototype.enableEditing = function () {
- this.map.getControlsByClass('OpenLayers.Control.ModifyFeature')[0].activate();
-};
-
-MapWidget.prototype.getControls = function(layer) {
- this.panel = new OpenLayers.Control.Panel({'displayClass': 'olControlEditingToolbar'});
- this.controls = [new OpenLayers.Control.Navigation()];
- if (!this.options.modifiable && layer.features.length)
- return;
- if (this.options.geom_name == 'LineString' || this.options.geom_name == 'Unknown') {
- this.controls.push(new OpenLayers.Control.DrawFeature(layer, OpenLayers.Handler.Path, {'displayClass': 'olControlDrawFeaturePath'}));
- }
- if (this.options.geom_name == 'Polygon' || this.options.geom_name == 'Unknown') {
- this.controls.push(new OpenLayers.Control.DrawFeature(layer, OpenLayers.Handler.Polygon, {'displayClass': 'olControlDrawFeaturePolygon'}));
- }
- if (this.options.geom_name == 'Point' || this.options.geom_name == 'Unknown') {
- this.controls.push(new OpenLayers.Control.DrawFeature(layer, OpenLayers.Handler.Point, {'displayClass': 'olControlDrawFeaturePoint'}));
- }
- if (this.options.modifiable) {
- this.controls.push(new OpenLayers.Control.ModifyFeature(layer, {'displayClass': 'olControlModifyFeature'}));
- }
-};
-window.MapWidget = MapWidget;
-})();
diff --git a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/admin/openlayers.html b/lib/python2.7/site-packages/django/contrib/gis/templates/gis/admin/openlayers.html
deleted file mode 100644
index a61b689..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/admin/openlayers.html
+++ /dev/null
@@ -1,38 +0,0 @@
-{% block extrastyle %}
-{% load static %}
-<style type="text/css">
- #{{ id }}_map { width: {{ map_width }}px; height: {{ map_height }}px; }
- #{{ id }}_map .aligned label { float:inherit; }
- #{{ id }}_admin_map { position: relative; vertical-align: top; float: {{ LANGUAGE_BIDI|yesno:"right,left" }}; }
- {% if not display_wkt %}#{{ id }} { display: none; }{% endif %}
- .olControlEditingToolbar .olControlModifyFeatureItemActive {
- background-image: url("{% static "admin/img/gis/move_vertex_on.png" %}");
- background-repeat: no-repeat;
- }
- .olControlEditingToolbar .olControlModifyFeatureItemInactive {
- background-image: url("{% static "admin/img/gis/move_vertex_off.png" %}");
- background-repeat: no-repeat;
- }
-</style>
-<!--[if IE]>
-<style type="text/css">
- /* This fixes the mouse offset issues in IE. */
- #{{ id }}_admin_map { position: static; vertical-align: top; }
- /* `font-size: 0` fixes the 1px border between tiles, but borks LayerSwitcher.
- Thus, this is disabled until a better fix is found.
- #{{ id }}_map { width: {{ map_width }}px; height: {{ map_height }}px; font-size: 0; } */
-</style>
-<![endif]-->
-{% endblock %}
-<span id="{{ id }}_admin_map">
-<script type="text/javascript">
-//<![CDATA[
-{% block openlayers %}{% include "gis/admin/openlayers.js" %}{% endblock %}
-//]]>
-</script>
-<div id="{{ id }}_map"{% if LANGUAGE_BIDI %} dir="ltr"{% endif %}></div>
-<a href="javascript:{{ module }}.clearFeatures()">Delete all Features</a>
-{% if display_wkt %}<p> WKT debugging window:</p>{% endif %}
-<textarea id="{{ id }}" class="vWKTField required" cols="150" rows="10" name="{{ name }}">{{ wkt }}</textarea>
-<script type="text/javascript">{% block init_function %}{{ module }}.init();{% endblock %}</script>
-</span>
diff --git a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/admin/openlayers.js b/lib/python2.7/site-packages/django/contrib/gis/templates/gis/admin/openlayers.js
deleted file mode 100644
index 4425fee..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/admin/openlayers.js
+++ /dev/null
@@ -1,176 +0,0 @@
-{% load l10n %}
-OpenLayers.Projection.addTransform("EPSG:4326", "EPSG:3857", OpenLayers.Layer.SphericalMercator.projectForward);
-{% block vars %}var {{ module }} = {};
-{{ module }}.map = null; {{ module }}.controls = null; {{ module }}.panel = null; {{ module }}.re = new RegExp("^SRID=\\d+;(.+)", "i"); {{ module }}.layers = {};
-{{ module }}.modifiable = {{ modifiable|yesno:"true,false" }};
-{{ module }}.wkt_f = new OpenLayers.Format.WKT();
-{{ module }}.is_collection = {{ is_collection|yesno:"true,false" }};
-{{ module }}.collection_type = '{{ collection_type }}';
-{{ module }}.is_generic = {{ is_generic|yesno:"true,false" }};
-{{ module }}.is_linestring = {{ is_linestring|yesno:"true,false" }};
-{{ module }}.is_polygon = {{ is_polygon|yesno:"true,false" }};
-{{ module }}.is_point = {{ is_point|yesno:"true,false" }};
-{% endblock %}
-{{ module }}.get_ewkt = function(feat){
- return 'SRID={{ srid|unlocalize }};' + {{ module }}.wkt_f.write(feat);
-};
-{{ module }}.read_wkt = function(wkt){
- // OpenLayers cannot handle EWKT -- we make sure to strip it out.
- // EWKT is only exposed to OL if there's a validation error in the admin.
- var match = {{ module }}.re.exec(wkt);
- if (match){wkt = match[1];}
- return {{ module }}.wkt_f.read(wkt);
-};
-{{ module }}.write_wkt = function(feat){
- if ({{ module }}.is_collection){ {{ module }}.num_geom = feat.geometry.components.length;}
- else { {{ module }}.num_geom = 1;}
- document.getElementById('{{ id }}').value = {{ module }}.get_ewkt(feat);
-};
-{{ module }}.add_wkt = function(event){
- // This function will sync the contents of the `vector` layer with the
- // WKT in the text field.
- if ({{ module }}.is_collection){
- var feat = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.{{ geom_type }}());
- for (var i = 0; i < {{ module }}.layers.vector.features.length; i++){
- feat.geometry.addComponents([{{ module }}.layers.vector.features[i].geometry]);
- }
- {{ module }}.write_wkt(feat);
- } else {
- // Make sure to remove any previously added features.
- if ({{ module }}.layers.vector.features.length > 1){
- old_feats = [{{ module }}.layers.vector.features[0]];
- {{ module }}.layers.vector.removeFeatures(old_feats);
- {{ module }}.layers.vector.destroyFeatures(old_feats);
- }
- {{ module }}.write_wkt(event.feature);
- }
-};
-{{ module }}.modify_wkt = function(event){
- if ({{ module }}.is_collection){
- if ({{ module }}.is_point){
- {{ module }}.add_wkt(event);
- return;
- } else {
- // When modifying the selected components are added to the
- // vector layer so we only increment to the `num_geom` value.
- var feat = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.{{ geom_type }}());
- for (var i = 0; i < {{ module }}.num_geom; i++){
- feat.geometry.addComponents([{{ module }}.layers.vector.features[i].geometry]);
- }
- {{ module }}.write_wkt(feat);
- }
- } else {
- {{ module }}.write_wkt(event.feature);
- }
-};
-// Function to clear vector features and purge wkt from div
-{{ module }}.deleteFeatures = function(){
- {{ module }}.layers.vector.removeFeatures({{ module }}.layers.vector.features);
- {{ module }}.layers.vector.destroyFeatures();
-};
-{{ module }}.clearFeatures = function (){
- {{ module }}.deleteFeatures();
- document.getElementById('{{ id }}').value = '';
- {% localize off %}
- {{ module }}.map.setCenter(new OpenLayers.LonLat({{ default_lon }}, {{ default_lat }}), {{ default_zoom }});
- {% endlocalize %}
-};
-// Add Select control
-{{ module }}.addSelectControl = function(){
- var select = new OpenLayers.Control.SelectFeature({{ module }}.layers.vector, {'toggle' : true, 'clickout' : true});
- {{ module }}.map.addControl(select);
- select.activate();
-};
-{{ module }}.enableDrawing = function(){
- {{ module }}.map.getControlsByClass('OpenLayers.Control.DrawFeature')[0].activate();
-};
-{{ module }}.enableEditing = function(){
- {{ module }}.map.getControlsByClass('OpenLayers.Control.ModifyFeature')[0].activate();
-};
-// Create an array of controls based on geometry type
-{{ module }}.getControls = function(lyr){
- {{ module }}.panel = new OpenLayers.Control.Panel({'displayClass': 'olControlEditingToolbar'});
- {{ module }}.controls = [new OpenLayers.Control.Navigation()];
- if (!{{ module }}.modifiable && lyr.features.length) return;
- if ({{ module }}.is_linestring || {{ module }}.is_generic){
- {{ module }}.controls.push(new OpenLayers.Control.DrawFeature(lyr, OpenLayers.Handler.Path, {'displayClass': 'olControlDrawFeaturePath'}));
- }
- if ({{ module }}.is_polygon || {{ module }}.is_generic){
- {{ module }}.controls.push(new OpenLayers.Control.DrawFeature(lyr, OpenLayers.Handler.Polygon, {'displayClass': 'olControlDrawFeaturePolygon'}));
- }
- if ({{ module }}.is_point || {{ module }}.is_generic){
- {{ module }}.controls.push(new OpenLayers.Control.DrawFeature(lyr, OpenLayers.Handler.Point, {'displayClass': 'olControlDrawFeaturePoint'}));
- }
- if ({{ module }}.modifiable){
- {{ module }}.controls.push(new OpenLayers.Control.ModifyFeature(lyr, {'displayClass': 'olControlModifyFeature'}));
- }
-};
-{{ module }}.init = function(){
- {% block map_options %}// The options hash, w/ zoom, resolution, and projection settings.
- var options = {
-{% autoescape off %}{% for item in map_options.items %} '{{ item.0 }}' : {{ item.1 }}{% if not forloop.last %},{% endif %}
-{% endfor %}{% endautoescape %} };{% endblock %}
- // The admin map for this geometry field.
- {% block map_creation %}
- {{ module }}.map = new OpenLayers.Map('{{ id }}_map', options);
- // Base Layer
- {{ module }}.layers.base = {% block base_layer %}new OpenLayers.Layer.WMS("{{ wms_name }}", "{{ wms_url }}", {layers: '{{ wms_layer }}'{{ wms_options|safe }}});{% endblock %}
- {{ module }}.map.addLayer({{ module }}.layers.base);
- {% endblock %}
- {% block extra_layers %}{% endblock %}
- {% if is_linestring %}OpenLayers.Feature.Vector.style["default"]["strokeWidth"] = 3; // Default too thin for linestrings. {% endif %}
- {{ module }}.layers.vector = new OpenLayers.Layer.Vector(" {{ field_name }}");
- {{ module }}.map.addLayer({{ module }}.layers.vector);
- // Read WKT from the text field.
- var wkt = document.getElementById('{{ id }}').value;
- if (wkt){
- // After reading into geometry, immediately write back to
- // WKT <textarea> as EWKT (so that SRID is included).
- var admin_geom = {{ module }}.read_wkt(wkt);
- {{ module }}.write_wkt(admin_geom);
- if ({{ module }}.is_collection){
- // If geometry collection, add each component individually so they may be
- // edited individually.
- for (var i = 0; i < {{ module }}.num_geom; i++){
- {{ module }}.layers.vector.addFeatures([new OpenLayers.Feature.Vector(admin_geom.geometry.components[i].clone())]);
- }
- } else {
- {{ module }}.layers.vector.addFeatures([admin_geom]);
- }
- // Zooming to the bounds.
- {{ module }}.map.zoomToExtent(admin_geom.geometry.getBounds());
- if ({{ module }}.is_point){
- {{ module }}.map.zoomTo({{ point_zoom }});
- }
- } else {
- {% localize off %}
- {{ module }}.map.setCenter(new OpenLayers.LonLat({{ default_lon }}, {{ default_lat }}), {{ default_zoom }});
- {% endlocalize %}
- }
- // This allows editing of the geographic fields -- the modified WKT is
- // written back to the content field (as EWKT, so that the ORM will know
- // to transform back to original SRID).
- {{ module }}.layers.vector.events.on({"featuremodified" : {{ module }}.modify_wkt});
- {{ module }}.layers.vector.events.on({"featureadded" : {{ module }}.add_wkt});
- {% block controls %}
- // Map controls:
- // Add geometry specific panel of toolbar controls
- {{ module }}.getControls({{ module }}.layers.vector);
- {{ module }}.panel.addControls({{ module }}.controls);
- {{ module }}.map.addControl({{ module }}.panel);
- {{ module }}.addSelectControl();
- // Then add optional visual controls
- {% if mouse_position %}{{ module }}.map.addControl(new OpenLayers.Control.MousePosition());{% endif %}
- {% if scale_text %}{{ module }}.map.addControl(new OpenLayers.Control.Scale());{% endif %}
- {% if layerswitcher %}{{ module }}.map.addControl(new OpenLayers.Control.LayerSwitcher());{% endif %}
- // Then add optional behavior controls
- {% if not scrollable %}{{ module }}.map.getControlsByClass('OpenLayers.Control.Navigation')[0].disableZoomWheel();{% endif %}
- {% endblock %}
- if (wkt){
- if ({{ module }}.modifiable){
- {{ module }}.enableEditing();
- }
- } else {
- {{ module }}.enableDrawing();
- }
-};
diff --git a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/admin/osm.html b/lib/python2.7/site-packages/django/contrib/gis/templates/gis/admin/osm.html
deleted file mode 100644
index b74b41f..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/admin/osm.html
+++ /dev/null
@@ -1,2 +0,0 @@
-{% extends "gis/admin/openlayers.html" %}
-{% block openlayers %}{% include "gis/admin/osm.js" %}{% endblock %} \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/admin/osm.js b/lib/python2.7/site-packages/django/contrib/gis/templates/gis/admin/osm.js
deleted file mode 100644
index 16a5773..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/admin/osm.js
+++ /dev/null
@@ -1,2 +0,0 @@
-{% extends "gis/admin/openlayers.js" %}
-{% block base_layer %}new OpenLayers.Layer.OSM("OpenStreetMap (Mapnik)");{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/google/google-map.html b/lib/python2.7/site-packages/django/contrib/gis/templates/gis/google/google-map.html
deleted file mode 100644
index fb60e44..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/google/google-map.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" {{ gmap.xmlns }}>
-<head>
- <title>{% block title %}Google Maps via GeoDjango{% endblock %}</title>
- {{ gmap.style }}
- {{ gmap.scripts }}
-</head>
-<body {{ gmap.onload }} {{ gmap.onunload }}>
-{% if gmap.dom_ids %}{% for dom_id in gmap.dom_ids %}<div id="{{ dom_id }}" style="width:600px;height:400px;"></div>{% endfor %}
-{% else %}<div id="{{ gmap.dom_id }}" style="width:600px;height:400px;"></div>{% endif %}
-</body>
-</html>
diff --git a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/google/google-map.js b/lib/python2.7/site-packages/django/contrib/gis/templates/gis/google/google-map.js
deleted file mode 100644
index 5c1c813..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/google/google-map.js
+++ /dev/null
@@ -1,37 +0,0 @@
-{% load l10n %}
-{% autoescape off %}
-{% localize off %}
-{% block vars %}var geodjango = {};{% for icon in icons %}
-var {{ icon.varname }} = new GIcon(G_DEFAULT_ICON);
-{% if icon.image %}{{ icon.varname }}.image = "{{ icon.image }}";{% endif %}
-{% if icon.shadow %}{{ icon.varname }}.shadow = "{{ icon.shadow }}";{% endif %} {% if icon.shadowsize %}{{ icon.varname }}.shadowSize = new GSize({{ icon.shadowsize.0 }}, {{ icon.shadowsize.1 }});{% endif %}
-{% if icon.iconanchor %}{{ icon.varname }}.iconAnchor = new GPoint({{ icon.iconanchor.0 }}, {{ icon.iconanchor.1 }});{% endif %} {% if icon.iconsize %}{{ icon.varname }}.iconSize = new GSize({{ icon.iconsize.0 }}, {{ icon.iconsize.1 }});{% endif %}
-{% if icon.infowindowanchor %}{{ icon.varname }}.infoWindowAnchor = new GPoint({{ icon.infowindowanchor.0 }}, {{ icon.infowindowanchor.1 }});{% endif %}{% endfor %}
-{% endblock vars %}{% block functions %}
-{% block load %}{{ js_module }}.{{ dom_id }}_load = function(){
- if (GBrowserIsCompatible()) {
- {{ js_module }}.{{ dom_id }} = new GMap2(document.getElementById("{{ dom_id }}"));
- {{ js_module }}.{{ dom_id }}.setCenter(new GLatLng({{ center.1 }}, {{ center.0 }}), {{ zoom }});
- {% block controls %}{{ js_module }}.{{ dom_id }}.setUIToDefault();{% endblock %}
- {% if calc_zoom %}var bounds = new GLatLngBounds(); var tmp_bounds = new GLatLngBounds();{% endif %}
- {% for kml_url in kml_urls %}{{ js_module }}.{{ dom_id }}_kml{{ forloop.counter }} = new GGeoXml("{{ kml_url }}");
- {{ js_module }}.{{ dom_id }}.addOverlay({{ js_module }}.{{ dom_id }}_kml{{ forloop.counter }});{% endfor %}
- {% for polygon in polygons %}{{ js_module }}.{{ dom_id }}_poly{{ forloop.counter }} = new {{ polygon }};
- {{ js_module }}.{{ dom_id }}.addOverlay({{ js_module }}.{{ dom_id }}_poly{{ forloop.counter }});
- {% for event in polygon.events %}GEvent.addListener({{ js_module }}.{{ dom_id }}_poly{{ forloop.parentloop.counter }}, {{ event }});{% endfor %}
- {% if calc_zoom %}tmp_bounds = {{ js_module }}.{{ dom_id }}_poly{{ forloop.counter }}.getBounds(); bounds.extend(tmp_bounds.getSouthWest()); bounds.extend(tmp_bounds.getNorthEast());{% endif %}{% endfor %}
- {% for polyline in polylines %}{{ js_module }}.{{ dom_id }}_polyline{{ forloop.counter }} = new {{ polyline }};
- {{ js_module }}.{{ dom_id }}.addOverlay({{ js_module }}.{{ dom_id }}_polyline{{ forloop.counter }});
- {% for event in polyline.events %}GEvent.addListener({{ js_module }}.{{ dom_id }}_polyline{{ forloop.parentloop.counter }}, {{ event }}); {% endfor %}
- {% if calc_zoom %}tmp_bounds = {{ js_module }}.{{ dom_id }}_polyline{{ forloop.counter }}.getBounds(); bounds.extend(tmp_bounds.getSouthWest()); bounds.extend(tmp_bounds.getNorthEast());{% endif %}{% endfor %}
- {% for marker in markers %}{{ js_module }}.{{ dom_id }}_marker{{ forloop.counter }} = new {{ marker }};
- {{ js_module }}.{{ dom_id }}.addOverlay({{ js_module }}.{{ dom_id }}_marker{{ forloop.counter }});
- {% for event in marker.events %}GEvent.addListener({{ js_module }}.{{ dom_id }}_marker{{ forloop.parentloop.counter }}, {{ event }}); {% endfor %}
- {% if calc_zoom %}bounds.extend({{ js_module }}.{{ dom_id }}_marker{{ forloop.counter }}.getLatLng()); {% endif %}{% endfor %}
- {% if calc_zoom %}{{ js_module }}.{{ dom_id }}.setCenter(bounds.getCenter(), {{ js_module }}.{{ dom_id }}.getBoundsZoomLevel(bounds));{% endif %}
- {% block load_extra %}{% endblock %}
- }else {
- alert("Sorry, the Google Maps API is not compatible with this browser.");
- }
-}
-{% endblock load %}{% endblock functions %}{% endlocalize %}{% endautoescape %}
diff --git a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/google/google-multi.js b/lib/python2.7/site-packages/django/contrib/gis/templates/gis/google/google-multi.js
deleted file mode 100644
index e3c7e8f..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/google/google-multi.js
+++ /dev/null
@@ -1,8 +0,0 @@
-{% extends "gis/google/google-map.js" %}
-{% block functions %}
-{{ load_map_js }}
-{{ js_module }}.load = function(){
- {% for dom_id in dom_ids %}{{ js_module }}.{{ dom_id }}_load();
- {% endfor %}
-}
-{% endblock %} \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/google/google-single.js b/lib/python2.7/site-packages/django/contrib/gis/templates/gis/google/google-single.js
deleted file mode 100644
index b930e45..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/google/google-single.js
+++ /dev/null
@@ -1,2 +0,0 @@
-{% extends "gis/google/google-map.js" %}
-{% block vars %}{# No vars here because used within GoogleMapSet #}{% endblock %} \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/kml/base.kml b/lib/python2.7/site-packages/django/contrib/gis/templates/gis/kml/base.kml
deleted file mode 100644
index 374404c..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/kml/base.kml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<kml xmlns="http://earth.google.com/kml/{% block kml_version %}2.1{% endblock %}">
-<Document>{% block name %}{% endblock %}
-{% block placemarks %}{% endblock %}
-</Document>
-</kml>
diff --git a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/kml/placemarks.kml b/lib/python2.7/site-packages/django/contrib/gis/templates/gis/kml/placemarks.kml
deleted file mode 100644
index ea2ac19..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/kml/placemarks.kml
+++ /dev/null
@@ -1,8 +0,0 @@
-{% extends "gis/kml/base.kml" %}
-{% block placemarks %}{% for place in places %}
- <Placemark>
- <name>{% if place.name %}{{ place.name }}{% else %}{{ place }}{% endif %}</name>
- <description>{% if place.description %}{{ place.description }}{% else %}{{ place }}{% endif %}</description>
- {{ place.kml|safe }}
- </Placemark>{% endfor %}{% endblock %}
-
diff --git a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/openlayers-osm.html b/lib/python2.7/site-packages/django/contrib/gis/templates/gis/openlayers-osm.html
deleted file mode 100644
index 7b644aa..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/openlayers-osm.html
+++ /dev/null
@@ -1,17 +0,0 @@
-{% extends "gis/openlayers.html" %}
-{% load l10n %}
-
-{% block map_options %}var map_options = {
- maxExtend: new OpenLayers.Bounds(-20037508,-20037508,20037508,20037508),
- maxResolution: 156543.0339,
- numZoomLevels: 20,
- units: 'm'
-};{% endblock %}
-
-{% block options %}{{ block.super }}
-options['scale_text'] = true;
-options['mouse_position'] = true;
-options['default_lon'] = {{ default_lon|unlocalize }};
-options['default_lat'] = {{ default_lat|unlocalize }};
-options['base_layer'] = new OpenLayers.Layer.OSM.Mapnik("OpenStreetMap (Mapnik)");
-{% endblock %}
diff --git a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/openlayers.html b/lib/python2.7/site-packages/django/contrib/gis/templates/gis/openlayers.html
deleted file mode 100644
index 4884f48..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/openlayers.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<style type="text/css">{% block map_css %}
- #{{ id }}_map { width: {{ map_width }}px; height: {{ map_height }}px; }
- #{{ id }}_map .aligned label { float: inherit; }
- #{{ id }}_div_map { position: relative; vertical-align: top; float: {{ LANGUAGE_BIDI|yesno:"right,left" }}; }
- {% if not display_raw %}#{{ id }} { display: none; }{% endif %}
- .olControlEditingToolbar .olControlModifyFeatureItemActive {
- background-image: url("{{ STATIC_URL }}admin/img/gis/move_vertex_on.png");
- background-repeat: no-repeat;
- }
- .olControlEditingToolbar .olControlModifyFeatureItemInactive {
- background-image: url("{{ STATIC_URL }}admin/img/gis/move_vertex_off.png");
- background-repeat: no-repeat;
- }{% endblock %}
-</style>
-
-<div id="{{ id }}_div_map">
- <div id="{{ id }}_map"></div>
- <span class="clear_features"><a href="javascript:{{ module }}.clearFeatures()">Delete all Features</a></span>
- {% if display_raw %}<p>Debugging window (serialized value):</p>{% endif %}
- <textarea id="{{ id }}" class="vSerializedField required" cols="150" rows="10" name="{{ name }}">{{ serialized }}</textarea>
- <script type="text/javascript">
- {% block map_options %}var map_options = {};{% endblock %}
- {% block options %}var options = {
- geom_name: '{{ geom_type }}',
- id: '{{ id }}',
- map_id: '{{ id }}_map',
- map_options: map_options,
- map_srid: {{ map_srid }},
- name: '{{ name }}'
- };
- {% endblock %}
- var {{ module }} = new MapWidget(options);
- </script>
-</div>
diff --git a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/sitemaps/geo_sitemap.xml b/lib/python2.7/site-packages/django/contrib/gis/templates/gis/sitemaps/geo_sitemap.xml
deleted file mode 100644
index dbf858e..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/templates/gis/sitemaps/geo_sitemap.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-{% autoescape off %}<?xml version="1.0" encoding="UTF-8"?>
-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:geo="http://www.google.com/geo/schemas/sitemap/1.0">
-{% spaceless %}
-{% for url in urlset %}
- <url>
- <loc>{{ url.location|escape }}</loc>
- {% if url.lastmod %}<lastmod>{{ url.lastmod|date:"Y-m-d" }}</lastmod>{% endif %}
- {% if url.changefreq %}<changefreq>{{ url.changefreq }}</changefreq>{% endif %}
- {% if url.priority %}<priority>{{ url.priority }}</priority>{% endif %}
- {% if url.geo_format %}<geo:geo>
- <geo:format>{{ url.geo_format }}</geo:format>
- </geo:geo>{% endif %}
- </url>
-{% endfor %}
-{% endspaceless %}
-</urlset>
-{% endautoescape %}
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/tests/__init__.py
deleted file mode 100644
index 1703f3f..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/__init__.py
+++ /dev/null
@@ -1,30 +0,0 @@
-def geo_apps():
- """
- Returns a list of GeoDjango test applications that reside in
- `django.contrib.gis.tests` that can be used with the current
- database and the spatial libraries that are installed.
- """
- from django.db import connection
- from django.contrib.gis.geos import GEOS_PREPARE
- from django.contrib.gis.gdal import HAS_GDAL
-
- apps = ['geoapp', 'relatedapp']
-
- # No distance queries on MySQL.
- if not connection.ops.mysql:
- apps.append('distapp')
-
- # Test geography support with PostGIS 1.5+.
- if connection.ops.postgis and connection.ops.geography:
- apps.append('geogapp')
-
- # The following GeoDjango test apps depend on GDAL support.
- if HAS_GDAL:
- # Geographic admin, LayerMapping, and ogrinspect test apps
- # all require GDAL.
- apps.extend(['geoadmin', 'layermap', 'inspectapp'])
-
- # 3D apps use LayerMapping, which uses GDAL and require GEOS 3.1+.
- if connection.ops.postgis and GEOS_PREPARE:
- apps.append('geo3d')
- return [('django.contrib.gis.tests', app) for app in apps]
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/ch-city/ch-city.dbf b/lib/python2.7/site-packages/django/contrib/gis/tests/data/ch-city/ch-city.dbf
deleted file mode 100644
index 6ba9d69..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/ch-city/ch-city.dbf
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/ch-city/ch-city.prj b/lib/python2.7/site-packages/django/contrib/gis/tests/data/ch-city/ch-city.prj
deleted file mode 100644
index a30c00a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/ch-city/ch-city.prj
+++ /dev/null
@@ -1 +0,0 @@
-GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/ch-city/ch-city.shp b/lib/python2.7/site-packages/django/contrib/gis/tests/data/ch-city/ch-city.shp
deleted file mode 100644
index e430020..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/ch-city/ch-city.shp
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/ch-city/ch-city.shx b/lib/python2.7/site-packages/django/contrib/gis/tests/data/ch-city/ch-city.shx
deleted file mode 100644
index a1487ad..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/ch-city/ch-city.shx
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/cities/cities.dbf b/lib/python2.7/site-packages/django/contrib/gis/tests/data/cities/cities.dbf
deleted file mode 100644
index 8b27633..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/cities/cities.dbf
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/cities/cities.prj b/lib/python2.7/site-packages/django/contrib/gis/tests/data/cities/cities.prj
deleted file mode 100644
index a30c00a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/cities/cities.prj
+++ /dev/null
@@ -1 +0,0 @@
-GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/cities/cities.shp b/lib/python2.7/site-packages/django/contrib/gis/tests/data/cities/cities.shp
deleted file mode 100644
index 1c46ccc..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/cities/cities.shp
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/cities/cities.shx b/lib/python2.7/site-packages/django/contrib/gis/tests/data/cities/cities.shx
deleted file mode 100644
index 6be3fd6..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/cities/cities.shx
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/counties/counties.dbf b/lib/python2.7/site-packages/django/contrib/gis/tests/data/counties/counties.dbf
deleted file mode 100644
index ccdbb26..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/counties/counties.dbf
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/counties/counties.shp b/lib/python2.7/site-packages/django/contrib/gis/tests/data/counties/counties.shp
deleted file mode 100644
index 2e7dca5..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/counties/counties.shp
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/counties/counties.shx b/lib/python2.7/site-packages/django/contrib/gis/tests/data/counties/counties.shx
deleted file mode 100644
index 46ed3bb..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/counties/counties.shx
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/geometries.json b/lib/python2.7/site-packages/django/contrib/gis/tests/data/geometries.json
deleted file mode 100644
index b1a6ad1..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/geometries.json
+++ /dev/null
@@ -1,123 +0,0 @@
-{
- "polygons": [
- {"wkt": "POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0), (10 10, 10 90, 90 90, 90 10, 10 10))", "n_i": 1, "ext_ring_cs": [[0, 0], [0, 100], [100, 100], [100, 0], [0, 0]], "n_p": 10, "area": 3600.0, "centroid": [50.0, 50.0]},
- {"wkt": "POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0), (10 10, 10 20, 20 20, 20 10, 10 10), (80 80, 80 90, 90 90, 90 80, 80 80))", "n_i": 2, "ext_ring_cs": [[0, 0], [0, 100], [100, 100], [100, 0], [0, 0]], "n_p": 15, "area": 9800.0, "centroid": [50.0, 50.0]},
- {"wkt": "POLYGON ((0 0, 0 100, 100 100, 100 0, 0 0))", "n_i": 0, "ext_ring_cs": [[0, 0], [0, 100], [100, 100], [100, 0], [0, 0]], "n_p": 5, "area": 10000.0, "centroid": [50.0, 50.0]},
- {"wkt": "POLYGON ((-95.3848703124799471 29.7056021479768511, -95.3851905195191847 29.7046588196500281, -95.3859356966379011 29.7025053545605502, -95.3860723000647539 29.7020963367038391, -95.3871517697222089 29.6989779021280995, -95.3865578518265522 29.6990856888057202, -95.3862634205175226 29.6999471753441782, -95.3861991779541967 29.6999591988978615, -95.3856773799358137 29.6998323107113578, -95.3856209915427229 29.6998005235473741, -95.3855833545501639 29.6996619391729801, -95.3855776331865002 29.6996232659570047, -95.3850162731712885 29.6997236706530536, -95.3831047357410284 29.7000847603095082, -95.3829800724914776 29.7000676365023502, -95.3828084594470909 29.6999969684031200, -95.3828131504821499 29.6999090511531065, -95.3828022942979601 29.6998152117366025, -95.3827893930918833 29.6997790953076759, -95.3825174668099862 29.6998267772748825, -95.3823521544804862 29.7000451723151606, -95.3820491918785223 29.6999682034582335, -95.3817932841505893 29.6999640407204772, -95.3815438924600443 29.7005983712500630, -95.3807812390843424 29.7007538492921590, -95.3778578936435935 29.7012966201172048, -95.3770817300034679 29.7010555145969093, -95.3772763716395957 29.7004995005932031, -95.3769891024414420 29.7005797730360186, -95.3759855007185990 29.7007754783987821, -95.3759516423090474 29.7007305400669388, -95.3765252155960042 29.6989549173240874, -95.3766842746727832 29.6985134987163164, -95.3768510987262914 29.6980530300744938, -95.3769198676258014 29.6977137204527573, -95.3769616670751930 29.6973351617272172, -95.3770309229297766 29.6969821084304186, -95.3772352596880637 29.6959751305871613, -95.3776232419333354 29.6945439060847463, -95.3776849628727064 29.6943364710766069, -95.3779699491714723 29.6926548349458947, -95.3781945479573494 29.6920088336742545, -95.3785807118394189 29.6908279316076005, -95.3787441368896651 29.6908846275832197, -95.3787903214163890 29.6907152912461640, -95.3791765069353659 29.6893335376821526, -95.3794935959513026 29.6884781789101595, -95.3796592071232112 29.6880066681407619, -95.3799788182090111 29.6873687353035081, -95.3801545516183893 29.6868782380716993, -95.3801258908302145 29.6867756621337762, -95.3801104284899566 29.6867229678809572, -95.3803803523746154 29.6863753372986459, -95.3821028558287622 29.6837392961470421, -95.3827289584682205 29.6828097375216160, -95.3827494698109035 29.6790739156259278, -95.3826022014838486 29.6776502228345507, -95.3825047356438063 29.6765773006280753, -95.3823473035336917 29.6750405250369127, -95.3824540163482055 29.6750076408228587, -95.3838984230304305 29.6745679207378679, -95.3916547074937426 29.6722459226508377, -95.3926154662749468 29.6719609085105489, -95.3967246645118081 29.6707316485589736, -95.3974588054406780 29.6705065336410989, -95.3978523748756828 29.6703795547846845, -95.3988598162279970 29.6700874981900853, -95.3995628600665952 29.6698505300412414, -95.4134721665944170 29.6656841279906232, -95.4143262068232616 29.6654291174019278, -95.4159685142480214 29.6649750989232288, -95.4180067396277565 29.6643253024318021, -95.4185886692196590 29.6641482768691063, -95.4234155309609662 29.6626925393704788, -95.4287785503196346 29.6611023620959706, -95.4310287312749352 29.6604222580752648, -95.4320295629628959 29.6603361318136720, -95.4332899683975739 29.6600560661713608, -95.4342675748811047 29.6598454934599900, -95.4343110414310871 29.6598411486215490, -95.4345576779282538 29.6598147020668499, -95.4348823041721630 29.6597875803673112, -95.4352827715209457 29.6597762346946681, -95.4355290431309982 29.6597827926562374, -95.4359197997999331 29.6598014511782715, -95.4361907884752156 29.6598444333523368, -95.4364608955807228 29.6598901433108217, -95.4367250147512323 29.6599494499910712, -95.4364898759758091 29.6601880616540186, -95.4354501111810691 29.6616378572201107, -95.4381459623171224 29.6631265631655126, -95.4367852490863129 29.6642266600024023, -95.4370040894557263 29.6643425389568769, -95.4367078350812648 29.6645492592343238, -95.4366081749871285 29.6646291473027297, -95.4358539359938192 29.6652308742342932, -95.4350327668927889 29.6658995989314462, -95.4350580905272921 29.6678812477895271, -95.4349710541447536 29.6680054925936965, -95.4349500440473548 29.6671410080890006, -95.4341492724148850 29.6678790545191688, -95.4340248868274728 29.6680353198492135, -95.4333227845797438 29.6689245624945990, -95.4331325652123326 29.6691616138940901, -95.4321314741096955 29.6704473333237253, -95.4320435792664341 29.6702578985411982, -95.4320147929883547 29.6701800936425109, -95.4319764538662980 29.6683246590817085, -95.4317490976340679 29.6684974372577166, -95.4305958185342718 29.6694049049170374, -95.4296600735653016 29.6701723430938493, -95.4284928989940937 29.6710931793380972, -95.4274630532378580 29.6719378813640091, -95.4273056811974811 29.6720684984625791, -95.4260554084574864 29.6730668861566969, -95.4253558063699643 29.6736342467365724, -95.4249278826026028 29.6739557343648919, -95.4248648873821423 29.6745400910786152, -95.4260016131471929 29.6750987014005858, -95.4258567183010911 29.6753452063069929, -95.4260238081486847 29.6754322077221353, -95.4258707374502393 29.6756647377294307, -95.4257951755816691 29.6756407098663360, -95.4257701599566985 29.6761077719536068, -95.4257726684792260 29.6761711204603955, -95.4257980187195614 29.6770219651929423, -95.4252712669032519 29.6770161558853758, -95.4249234392992065 29.6770068683962300, -95.4249574272905789 29.6779707498635759, -95.4244725881033702 29.6779825646764159, -95.4222269476429545 29.6780711474441716, -95.4223032371999267 29.6796029391538809, -95.4239133706588945 29.6795331493690355, -95.4224579084327331 29.6813706893847780, -95.4224290108823965 29.6821953228763924, -95.4230916478977349 29.6822130268724109, -95.4222928279595521 29.6832041816675343, -95.4228763710016352 29.6832087677714505, -95.4223401691637179 29.6838987872753748, -95.4211655906087088 29.6838784024852984, -95.4201984153205558 29.6851319258758082, -95.4206156387716362 29.6851623398125319, -95.4213438084897660 29.6851763011334739, -95.4212071118618752 29.6853679931624974, -95.4202651399651245 29.6865313962980508, -95.4172061157659783 29.6865816431043932, -95.4182217951255183 29.6872251197301544, -95.4178664826439160 29.6876750901471631, -95.4180678442928780 29.6877960336377207, -95.4188763472917572 29.6882826379510938, -95.4185374500596311 29.6887137897831934, -95.4182121713132290 29.6885097429738813, -95.4179857231741551 29.6888118367840086, -95.4183106010563620 29.6890048676118212, -95.4179489865331334 29.6894546700979056, -95.4175581746284820 29.6892323606815438, -95.4173439957341571 29.6894990139807007, -95.4177411199311081 29.6897435034738422, -95.4175789200209721 29.6899207529979208, -95.4170598559864800 29.6896042165807508, -95.4166733682539814 29.6900891174451367, -95.4165941362704331 29.6900347214235047, -95.4163537218065301 29.6903529467753238, -95.4126843270708775 29.6881086357212780, -95.4126604121378392 29.6880942378803496, -95.4126672298953338 29.6885951670109982, -95.4126680884821923 29.6887052446594275, -95.4158080137241882 29.6906382377959339, -95.4152061403821961 29.6910871045531586, -95.4155842583188161 29.6917382915894308, -95.4157426793520358 29.6920726941677096, -95.4154520563662203 29.6922052332446427, -95.4151389936167078 29.6923261661269571, -95.4148649784384872 29.6924343866430256, -95.4144051352401590 29.6925623927348106, -95.4146792019416665 29.6926770338507744, -95.4148824479948985 29.6928117893696388, -95.4149851734360226 29.6929823719519774, -95.4140436551925291 29.6929626643100946, -95.4140465993023241 29.6926545917254892, -95.4137269186733334 29.6927395764256090, -95.4137372859685513 29.6935432485666624, -95.4135702836218655 29.6933186678088283, -95.4133925235973237 29.6930415229852152, -95.4133017035615580 29.6928685062036166, -95.4129588921634593 29.6929391128977862, -95.4125107395559695 29.6930481664661485, -95.4102647423187307 29.6935850183258019, -95.4081931340840157 29.6940907430947760, -95.4078783596459772 29.6941703429951609, -95.4049213975000043 29.6948723732981961, -95.4045944244127071 29.6949626434239207, -95.4045865139788134 29.6954109019001358, -95.4045953345484037 29.6956972800496963, -95.4038879332535146 29.6958296089365490, -95.4040366394459340 29.6964389004769842, -95.4032774779020798 29.6965643341263892, -95.4026066501239853 29.6966646227683881, -95.4024991226393837 29.6961389766619703, -95.4011781398631911 29.6963566063186377, -95.4011524097636112 29.6962596176762190, -95.4018184046368276 29.6961399466727336, -95.4016995838361908 29.6956442609415099, -95.4007100753964608 29.6958900524002978, -95.4008032469935188 29.6962639900781404, -95.3995660267125487 29.6965636449370329, -95.3996140564775601 29.6967877962763644, -95.3996364430014410 29.6968901984825280, -95.3984003269631842 29.6968679634805746, -95.3981442026887265 29.6983660679730335, -95.3980178461957706 29.6990890276252415, -95.3977097967130163 29.7008526152273049, -95.3962347157626027 29.7009697553607630, -95.3951949050136250 29.7004740386619019, -95.3957564950617183 29.6990281830553187, -95.3965927101519924 29.6968771129030706, -95.3957496517238184 29.6970800358387095, -95.3957720559467361 29.6972264611230727, -95.3957391586571788 29.6973548894558732, -95.3956286413405365 29.6974949857280883, -95.3955111053256957 29.6975661086270186, -95.3953215342724121 29.6976022763384790, -95.3951795558443365 29.6975846977491038, -95.3950369632041060 29.6975175779330200, -95.3949401089966500 29.6974269267953304, -95.3948740281415581 29.6972903308506346, -95.3946650813866910 29.6973397326847923, -95.3947654059391112 29.6974882560192022, -95.3949627316619768 29.6980355864961858, -95.3933200807862249 29.6984590863712796, -95.3932606497523494 29.6984464798710839, -95.3932983699113350 29.6983154306484352, -95.3933058014696655 29.6982165816983610, -95.3932946347785133 29.6981089778195759, -95.3931780601756287 29.6977068906794841, -95.3929928222970602 29.6977541771878180, -95.3930873169846478 29.6980676264932946, -95.3932743746374570 29.6981249406449663, -95.3929512584706316 29.6989526513922222, -95.3919850280655197 29.7014358632108646, -95.3918950918929056 29.7014169320765724, -95.3916928317890296 29.7019232352846423, -95.3915424614970959 29.7022988712928289, -95.3901530441668939 29.7058519502930061, -95.3899656322116698 29.7059156823562418, -95.3897628748670883 29.7059900058266777, -95.3896062677805787 29.7060738276384946, -95.3893941800512266 29.7061891695242046, -95.3892150365492455 29.7062641292949436, -95.3890502563035199 29.7063339729630940, -95.3888717930715586 29.7063896908080736, -95.3886925428988945 29.7064453871994978, -95.3885376849411983 29.7064797304524149, -95.3883284158984139 29.7065153575050189, -95.3881046767627794 29.7065368368267357, -95.3878809284696132 29.7065363048447537, -95.3876046356120924 29.7065288525102424, -95.3873060894974714 29.7064822806001452, -95.3869851943158409 29.7063993367575350, -95.3865967896568065 29.7062870572919202, -95.3861785624983156 29.7061492099008184, -95.3857375009733488 29.7059887337478798, -95.3854573290902152 29.7058683664514618, -95.3848703124799471 29.7056021479768511))", "n_i": 0, "ext_ring_cs": false, "n_p": 264, "area": 0.00129917360654, "centroid": [-95.403569179437341, 29.681772571690402]}
- ],
- "multipolygons": [
- {"wkt": "MULTIPOLYGON (((100 20, 180 20, 180 100, 100 100, 100 20)), ((20 100, 100 100, 100 180, 20 180, 20 100)), ((100 180, 180 180, 180 260, 100 260, 100 180)), ((180 100, 260 100, 260 180, 180 180, 180 100)))","valid": true, "num_geom":4, "n_p":20},
- {"wkt": "MULTIPOLYGON (((60 300, 320 220, 260 60, 60 100, 60 300)), ((60 300, 320 220, 260 60, 60 100, 60 300)))", "valid": false},
- {"wkt": "MULTIPOLYGON (((180 60, 240 160, 300 60, 180 60)), ((80 80, 180 60, 160 140, 240 160, 360 140, 300 60, 420 100, 320 280, 120 260, 80 80)))", "valid": true, "num_geom": 2, "n_p": 14}
- ],
- "errors": [
- {"wkt": "GEOMETR##!@#%#............a32515", "bad": true, "hex": false},
- {"wkt": "Foo.Bar", "bad": true, "hex": false},
- {"wkt": "POINT (5, 23)", "bad": true, "hex": false},
- {"wkt": "AAABBBDDDAAD##@#1113511111-098111111111111111533333333333333", "bad": true, "hex": true},
- {"wkt": "FFFFFFFFFFFFFFFFF1355555555555555555565111", "bad": true, "hex": true},
- {"wkt": "", "bad": true, "hex": false}
- ],
- "wkt_out": [
- {"wkt": "POINT (110 130)", "ewkt": "POINT (110.0000000000000000 130.0000000000000000)", "kml": "<Point><coordinates>110.0,130.0,0</coordinates></Point>", "gml": "<gml:Point><gml:coordinates>110,130</gml:coordinates></gml:Point>"},
- {"wkt": "POINT (110 130 85)", "ewkt": "POINT Z (110.0000000000000000 130.0000000000000000 85.0000000000000000)", "kml": "<Point><coordinates>110.0,130.0,85.0</coordinates></Point>", "gml": "<gml:Point><gml:coordinates>110,130,85</gml:coordinates></gml:Point>"},
- {"wkt": "LINESTRING (40 40,50 130,130 130)", "ewkt": "LINESTRING (40.0000000000000000 40.0000000000000000, 50.0000000000000000 130.0000000000000000, 130.0000000000000000 130.0000000000000000)", "kml": "<LineString><coordinates>40.0,40.0,0 50.0,130.0,0 130.0,130.0,0</coordinates></LineString>", "gml": "<gml:LineString><gml:coordinates>40,40 50,130 130,130</gml:coordinates></gml:LineString>"},
- {"wkt": "POLYGON ((150 150,410 150,280 20,20 20,150 150),(170 120,330 120,260 50,100 50,170 120))", "ewkt": "POLYGON ((150.0000000000000000 150.0000000000000000, 410.0000000000000000 150.0000000000000000, 280.0000000000000000 20.0000000000000000, 20.0000000000000000 20.0000000000000000, 150.0000000000000000 150.0000000000000000), (170.0000000000000000 120.0000000000000000, 330.0000000000000000 120.0000000000000000, 260.0000000000000000 50.0000000000000000, 100.0000000000000000 50.0000000000000000, 170.0000000000000000 120.0000000000000000))", "kml": "<Polygon><outerBoundaryIs><LinearRing><coordinates>150.0,150.0,0 410.0,150.0,0 280.0,20.0,0 20.0,20.0,0 150.0,150.0,0</coordinates></LinearRing></outerBoundaryIs><innerBoundaryIs><LinearRing><coordinates>170.0,120.0,0 330.0,120.0,0 260.0,50.0,0 100.0,50.0,0 170.0,120.0,0</coordinates></LinearRing></innerBoundaryIs></Polygon>", "gml": "<gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>150,150 410,150 280,20 20,20 150,150</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>170,120 330,120 260,50 100,50 170,120</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon>"},
- {"wkt": "MULTIPOINT (10 80,110 170,110 120)", "ewkt": "MULTIPOINT (10.0000000000000000 80.0000000000000000, 110.0000000000000000 170.0000000000000000, 110.0000000000000000 120.0000000000000000)", "kml": "<MultiGeometry><Point><coordinates>10.0,80.0,0</coordinates></Point><Point><coordinates>110.0,170.0,0</coordinates></Point><Point><coordinates>110.0,120.0,0</coordinates></Point></MultiGeometry>", "gml": "<gml:MultiPoint><gml:pointMember><gml:Point><gml:coordinates>10,80</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>110,170</gml:coordinates></gml:Point></gml:pointMember><gml:pointMember><gml:Point><gml:coordinates>110,120</gml:coordinates></gml:Point></gml:pointMember></gml:MultiPoint>"},
- {"wkt": "MULTILINESTRING ((110 100,40 30,180 30),(170 30,110 90,50 30))", "ewkt": "MULTILINESTRING ((110.0000000000000000 100.0000000000000000, 40.0000000000000000 30.0000000000000000, 180.0000000000000000 30.0000000000000000), (170.0000000000000000 30.0000000000000000, 110.0000000000000000 90.0000000000000000, 50.0000000000000000 30.0000000000000000))", "kml": "<MultiGeometry><LineString><coordinates>110.0,100.0,0 40.0,30.0,0 180.0,30.0,0</coordinates></LineString><LineString><coordinates>170.0,30.0,0 110.0,90.0,0 50.0,30.0,0</coordinates></LineString></MultiGeometry>", "gml": "<gml:MultiLineString><gml:lineStringMember><gml:LineString><gml:coordinates>110,100 40,30 180,30</gml:coordinates></gml:LineString></gml:lineStringMember><gml:lineStringMember><gml:LineString><gml:coordinates>170,30 110,90 50,30</gml:coordinates></gml:LineString></gml:lineStringMember></gml:MultiLineString>"},
- {"wkt": "MULTIPOLYGON (((110 110,70 200,150 200,110 110),(110 110,100 180,120 180,110 110)),((110 110,150 20,70 20,110 110),(110 110,120 40,100 40,110 110)))", "ewkt": "MULTIPOLYGON (((110.0000000000000000 110.0000000000000000, 70.0000000000000000 200.0000000000000000, 150.0000000000000000 200.0000000000000000, 110.0000000000000000 110.0000000000000000), (110.0000000000000000 110.0000000000000000, 100.0000000000000000 180.0000000000000000, 120.0000000000000000 180.0000000000000000, 110.0000000000000000 110.0000000000000000)), ((110.0000000000000000 110.0000000000000000, 150.0000000000000000 20.0000000000000000, 70.0000000000000000 20.0000000000000000, 110.0000000000000000 110.0000000000000000), (110.0000000000000000 110.0000000000000000, 120.0000000000000000 40.0000000000000000, 100.0000000000000000 40.0000000000000000, 110.0000000000000000 110.0000000000000000)))", "kml": "<MultiGeometry><Polygon><outerBoundaryIs><LinearRing><coordinates>110.0,110.0,0 70.0,200.0,0 150.0,200.0,0 110.0,110.0,0</coordinates></LinearRing></outerBoundaryIs><innerBoundaryIs><LinearRing><coordinates>110.0,110.0,0 100.0,180.0,0 120.0,180.0,0 110.0,110.0,0</coordinates></LinearRing></innerBoundaryIs></Polygon><Polygon><outerBoundaryIs><LinearRing><coordinates>110.0,110.0,0 150.0,20.0,0 70.0,20.0,0 110.0,110.0,0</coordinates></LinearRing></outerBoundaryIs><innerBoundaryIs><LinearRing><coordinates>110.0,110.0,0 120.0,40.0,0 100.0,40.0,0 110.0,110.0,0</coordinates></LinearRing></innerBoundaryIs></Polygon></MultiGeometry>", "gml": "<gml:MultiPolygon><gml:polygonMember><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>110,110 70,200 150,200 110,110</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>110,110 100,180 120,180 110,110</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon></gml:polygonMember><gml:polygonMember><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates>110,110 150,20 70,20 110,110</gml:coordinates></gml:LinearRing></gml:outerBoundaryIs><gml:innerBoundaryIs><gml:LinearRing><gml:coordinates>110,110 120,40 100,40 110,110</gml:coordinates></gml:LinearRing></gml:innerBoundaryIs></gml:Polygon></gml:polygonMember></gml:MultiPolygon>"},
- {"wkt": "GEOMETRYCOLLECTION (POINT (110 260),LINESTRING (110 0,110 60))", "ewkt": "GEOMETRYCOLLECTION (POINT (110.0000000000000000 260.0000000000000000), LINESTRING (110.0000000000000000 0.0000000000000000, 110.0000000000000000 60.0000000000000000))", "kml": "<MultiGeometry><Point><coordinates>110.0,260.0,0</coordinates></Point><LineString><coordinates>110.0,0.0,0 110.0,60.0,0</coordinates></LineString></MultiGeometry>", "gml": "<gml:GeometryCollection><gml:geometryMember><gml:Point><gml:coordinates>110,260</gml:coordinates></gml:Point></gml:geometryMember><gml:geometryMember><gml:LineString><gml:coordinates>110,0 110,60</gml:coordinates></gml:LineString></gml:geometryMember></gml:GeometryCollection>"}
- ],
- "hex_wkt": [
- {"wkt": "POINT(0 1)", "hex": "01010000000000000000000000000000000000F03F"},
- {"wkt": "POINT(0 1 5)", "hex": "01010000800000000000000000000000000000F03F0000000000001440"},
- {"wkt": "LINESTRING(0 1, 2 3, 4 5)", "hex": "0102000000030000000000000000000000000000000000F03F0000000000000040000000000000084000000000000010400000000000001440"},
- {"wkt": "POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))", "hex": "010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000"},
- {"wkt": "MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0)", "hex": "010400000005000000010100000000000000000000000000000000000000010100000000000000000024400000000000000000010100000000000000000024400000000000002440010100000000000000000000000000000000002440010100000000000000000000000000000000000000"},
- {"wkt": "MULTILINESTRING((0 0, 10 0, 10 10, 0 10),(20 20, 30 20))", "hex": "01050000000200000001020000000400000000000000000000000000000000000000000000000000244000000000000000000000000000002440000000000000244000000000000000000000000000002440010200000002000000000000000000344000000000000034400000000000003E400000000000003440"},
- {"wkt": "MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),((20 20, 20 30, 30 30, 30 20, 20 20),(25 25, 25 26, 26 26, 26 25, 25 25)))", "hex": "010600000002000000010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000010300000002000000050000000000000000003440000000000000344000000000000034400000000000003E400000000000003E400000000000003E400000000000003E40000000000000344000000000000034400000000000003440050000000000000000003940000000000000394000000000000039400000000000003A400000000000003A400000000000003A400000000000003A40000000000000394000000000000039400000000000003940"},
- {"wkt": "GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0)),((20 20, 20 30, 30 30, 30 20, 20 20),(25 25, 25 26, 26 26, 26 25, 25 25))),MULTILINESTRING((0 0, 10 0, 10 10, 0 10),(20 20, 30 20)),MULTIPOINT(0 0, 10 0, 10 10, 0 10, 0 0))", "hex": "010700000003000000010600000002000000010300000001000000050000000000000000000000000000000000000000000000000024400000000000000000000000000000244000000000000024400000000000000000000000000000244000000000000000000000000000000000010300000002000000050000000000000000003440000000000000344000000000000034400000000000003E400000000000003E400000000000003E400000000000003E40000000000000344000000000000034400000000000003440050000000000000000003940000000000000394000000000000039400000000000003A400000000000003A400000000000003A400000000000003A4000000000000039400000000000003940000000000000394001050000000200000001020000000400000000000000000000000000000000000000000000000000244000000000000000000000000000002440000000000000244000000000000000000000000000002440010200000002000000000000000000344000000000000034400000000000003E400000000000003440010400000005000000010100000000000000000000000000000000000000010100000000000000000024400000000000000000010100000000000000000024400000000000002440010100000000000000000000000000000000002440010100000000000000000000000000000000000000"}
- ],
- "json_geoms": [
- {"wkt": "POINT(100 0)", "json": "{ \"type\": \"Point\", \"coordinates\": [ 100.000000, 0.000000 ] }"},
- {"wkt": "POLYGON((0 0, -10 0, -10 -10, 0 -10, 0 0))", "json": "{ \"type\": \"Polygon\", \"coordinates\": [ [ [ 0.000000, 0.000000 ], [ -10.000000, 0.000000 ], [ -10.000000, -10.000000 ], [ 0.000000, -10.000000 ], [ 0.000000, 0.000000 ] ] ] }"},
- {"wkt": "MULTIPOLYGON(((102 2, 103 2, 103 3, 102 3, 102 2)), ((100.0 0.0, 101.0 0.0, 101.0 1.0, 100.0 1.0, 100.0 0.0), (100.2 0.2, 100.8 0.2, 100.8 0.8, 100.2 0.8, 100.2 0.2)))", "json": "{ \"type\": \"MultiPolygon\", \"coordinates\": [ [ [ [ 102.000000, 2.000000 ], [ 103.000000, 2.000000 ], [ 103.000000, 3.000000 ], [ 102.000000, 3.000000 ], [ 102.000000, 2.000000 ] ] ], [ [ [ 100.000000, 0.000000 ], [ 101.000000, 0.000000 ], [ 101.000000, 1.000000 ], [ 100.000000, 1.000000 ], [ 100.000000, 0.000000 ] ], [ [ 100.200000, 0.200000 ], [ 100.800000, 0.200000 ], [ 100.800000, 0.800000 ], [ 100.200000, 0.800000 ], [ 100.200000, 0.200000 ] ] ] ] }"},
- {"wkt": "GEOMETRYCOLLECTION(POINT(100 0),LINESTRING(101.0 0.0, 102.0 1.0))", "json": "{ \"type\": \"GeometryCollection\", \"geometries\": [ { \"type\": \"Point\", \"coordinates\": [ 100.000000, 0.000000 ] }, { \"type\": \"LineString\", \"coordinates\": [ [ 101.000000, 0.000000 ], [ 102.000000, 1.000000 ] ] } ] }"},
- {"wkt": "MULTILINESTRING((100.0 0.0, 101.0 1.0),(102.0 2.0, 103.0 3.0))", "json": "\\n\\n{ \"type\": \"MultiLineString\",\\n \"coordinates\": [\\n [ [100.0, 0.0], [101.0, 1.0] ],\\n [ [102.0, 2.0], [103.0, 3.0] ]\\n ]\\n }\\n\\n", "not_equal": true}
- ],
- "points": [
- {"wkt": "POINT (5 23)", "x": 5.0, "y": 23.0, "centroid": [5.0, 23.0]},
- {"wkt": "POINT (-95.338492 29.723893)", "x": -95.338492, "y": 29.723893, "centroid": [-95.338492, 29.723893]},
- {"wkt": "POINT(1.234 5.678)", "x": 1.234, "y": 5.678, "centroid": [1.234, 5.678]},
- {"wkt": "POINT(4.321 8.765)", "x": 4.321, "y": 8.765, "centroid": [4.321, 8.765]},
- {"wkt": "POINT(10 10)", "x": 10, "y": 10, "centroid": [10.0, 10.0]},
- {"wkt": "POINT (5 23 8)", "x": 5.0, "y": 23.0, "z": 8.0, "centroid": [5.0, 23.0]}
- ],
- "multipoints":[
- {"wkt": "MULTIPOINT(10 10, 20 20 )", "n_p": 2, "coords": [[10.0, 10.0], [20.0, 20.0]], "centroid": [15.0, 15.0]},
- {"wkt": "MULTIPOINT(10 10, 20 20, 10 20, 20 10)", "n_p": 4, "coords": [[10.0, 10.0], [20.0, 20.0], [10.0, 20.0], [20.0, 10.0]], "centroid": [15.0, 15.0]}
- ],
- "linestrings": [
- {"wkt": "LINESTRING (60 180, 120 100, 180 180)", "n_p": 3, "centroid": [120.0, 140.0], "coords": [[60.0, 180.0], [120.0, 100.0], [180.0, 180.0]]},
- {"wkt": "LINESTRING (0 0, 5 5, 10 5, 10 10)", "n_p": 4, "centroid": [6.1611652351681556, 4.6966991411008934], "coords": [[0.0, 0.0], [5.0, 5.0], [10.0, 5.0], [10.0, 10.0]]}
- ],
- "linearrings": [
- {"wkt": "LINEARRING (649899.3065171393100172 4176512.3807915160432458, 649902.7294133581453934 4176512.7834989596158266, 649906.5550170192727819 4176514.3942507002502680, 649910.5820134161040187 4176516.0050024418160319, 649914.4076170771149918 4176518.0184616246260703, 649917.2264131171396002 4176519.4278986593708396, 649920.0452871860470623 4176521.6427505780011415, 649922.0587463703704998 4176522.8507948759943247, 649924.2735982896992937 4176524.4616246484220028, 649926.2870574744883925 4176525.4683542405255139, 649927.8978092158213258 4176526.8777912775985897, 649929.3072462501004338 4176528.0858355751261115, 649930.1126611357321963 4176529.4952726080082357, 649927.4951798024121672 4176506.9444361114874482, 649899.3065171393100172 4176512.3807915160432458)", "n_p": 15}
- ],
- "multilinestrings": [
- {"wkt": "MULTILINESTRING ((0 0, 0 100), (100 0, 100 100))", "n_p": 4, "centroid": [50.0, 50.0], "coords": [[[0, 0], [0, 100]], [[100, 0], [100, 100]]]},
- {"wkt": "MULTILINESTRING ((20 20, 60 60), (20 -20, 60 -60), (-20 -20, -60 -60), (-20 20, -60 60), (-80 0, 0 80, 80 0, 0 -80, -80 0), (-40 20, -40 -20), (-20 40, 20 40), (40 20, 40 -20), (20 -40, -20 -40))", "n_p": 21, "centroid": [0.0, 0.0], "coords": [[[20.0, 20.0], [60.0, 60.0]], [[20.0, -20.0], [60.0, -60.0]], [[-20.0, -20.0], [-60.0, -60.0]], [[-20.0, 20.0], [-60.0, 60.0]], [[-80.0, 0.0], [0.0, 80.0], [80.0, 0.0], [0.0, -80.0], [-80.0, 0.0]], [[-40.0, 20.0], [-40.0, -20.0]], [[-20.0, 40.0], [20.0, 40.0]], [[40.0, 20.0], [40.0, -20.0]], [[20.0, -40.0], [-20.0, -40.0]]]}
- ],
- "buffer_geoms": [
- {"wkt": "POINT(0 0)",
- "buffer_wkt": "POLYGON ((5 0,4.903926402016153 -0.97545161008064,4.619397662556435 -1.913417161825447,4.157348061512728 -2.777851165098009,3.53553390593274 -3.535533905932735,2.777851165098015 -4.157348061512724,1.913417161825454 -4.619397662556431,0.975451610080648 -4.903926402016151,0.000000000000008 -5.0,-0.975451610080632 -4.903926402016154,-1.913417161825439 -4.619397662556437,-2.777851165098002 -4.157348061512732,-3.53553390593273 -3.535533905932746,-4.157348061512719 -2.777851165098022,-4.619397662556429 -1.913417161825462,-4.903926402016149 -0.975451610080656,-5.0 -0.000000000000016,-4.903926402016156 0.975451610080624,-4.619397662556441 1.913417161825432,-4.157348061512737 2.777851165097995,-3.535533905932752 3.535533905932723,-2.777851165098029 4.157348061512714,-1.913417161825468 4.619397662556426,-0.975451610080661 4.903926402016149,-0.000000000000019 5.0,0.975451610080624 4.903926402016156,1.913417161825434 4.61939766255644,2.777851165097998 4.157348061512735,3.535533905932727 3.535533905932748,4.157348061512719 2.777851165098022,4.619397662556429 1.91341716182546,4.90392640201615 0.975451610080652,5 0))",
- "width": 5.0, "quadsegs": 8
- },
- {"wkt": "POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))",
- "buffer_wkt": "POLYGON ((-2 0,-2 10,-1.961570560806461 10.390180644032258,-1.847759065022573 10.765366864730179,-1.662939224605091 11.111140466039204,-1.414213562373095 11.414213562373096,-1.111140466039204 11.662939224605092,-0.765366864730179 11.847759065022574,-0.390180644032256 11.961570560806461,0 12,10 12,10.390180644032256 11.961570560806461,10.765366864730179 11.847759065022574,11.111140466039204 11.66293922460509,11.414213562373096 11.414213562373096,11.66293922460509 11.111140466039204,11.847759065022574 10.765366864730179,11.961570560806461 10.390180644032256,12 10,12 0,11.961570560806461 -0.390180644032256,11.847759065022574 -0.76536686473018,11.66293922460509 -1.111140466039204,11.414213562373096 -1.414213562373095,11.111140466039204 -1.66293922460509,10.765366864730179 -1.847759065022573,10.390180644032256 -1.961570560806461,10 -2,0.0 -2.0,-0.390180644032255 -1.961570560806461,-0.765366864730177 -1.847759065022575,-1.1111404660392 -1.662939224605093,-1.41421356237309 -1.4142135623731,-1.662939224605086 -1.111140466039211,-1.84775906502257 -0.765366864730189,-1.961570560806459 -0.390180644032268,-2 0))",
- "width": 2.0, "quadsegs": 8
- }
- ],
- "relate_geoms": [
- {"wkt_a": "MULTIPOINT(80 70, 20 20, 200 170, 140 120)",
- "wkt_b": "MULTIPOINT(80 170, 140 120, 200 80, 80 70)",
- "pattern": "0F0FFF0F2", "result": true
- },
- {"wkt_a": "POINT(20 20)",
- "wkt_b": "POINT(40 60)",
- "pattern": "FF0FFF0F2", "result": true
- },
- {"wkt_a": "POINT(110 110)",
- "wkt_b": "LINESTRING(200 200, 110 110, 200 20, 20 20, 110 110, 20 200, 200 200)",
- "pattern": "0FFFFF1F2", "result": true
- },
- {"wkt_a": "MULTILINESTRING((20 20, 90 20, 170 20), (90 20, 90 80, 90 140))",
- "wkt_b": "MULTILINESTRING((90 20, 170 100, 170 140), (130 140, 130 60, 90 20, 20 90, 90 20))",
- "pattern": "FF10F0102", "result": true
- }
- ],
- "topology_geoms": [
- {"wkt_a": "POLYGON ((-5.0 0.0, -5.0 10.0, 5.0 10.0, 5.0 0.0, -5.0 0.0))",
- "wkt_b": "POLYGON ((0.0 -5.0, 0.0 5.0, 10.0 5.0, 10.0 -5.0, 0.0 -5.0))"
- },
- {"wkt_a": "POLYGON ((2 0, 18 0, 18 15, 2 15, 2 0))",
- "wkt_b": "POLYGON ((10 1, 11 3, 13 4, 15 6, 16 8, 16 10, 15 12, 13 13, 11 12, 10 10, 9 12, 7 13, 5 12, 4 10, 4 8, 5 6, 7 4, 9 3, 10 1))"
- }
- ],
- "diff_geoms": [
- {"wkt": "POLYGON ((-5 0,-5 10,5 10,5 5,0 5,0 0,-5 0))"},
- {"wkt": "POLYGON ((2 0, 2 15, 18 15, 18 0, 2 0), (10 1, 11 3, 13 4, 15 6, 16 8, 16 10, 15 12, 13 13, 11 12, 10 10, 9 12, 7 13, 5 12, 4 10, 4 8, 5 6, 7 4, 9 3, 10 1))"}
- ],
- "sdiff_geoms": [
- {"wkt": "MULTIPOLYGON (((-5 0,-5 10,5 10,5 5,0 5,0 0,-5 0)),((0 0,5 0,5 5,10 5,10 -5,0 -5,0 0)))"},
- {"wkt": "POLYGON ((2 0, 2 15, 18 15, 18 0, 2 0), (10 1, 11 3, 13 4, 15 6, 16 8, 16 10, 15 12, 13 13, 11 12, 10 10, 9 12, 7 13, 5 12, 4 10, 4 8, 5 6, 7 4, 9 3, 10 1))"}
- ],
- "intersect_geoms": [
- {"wkt": "POLYGON ((5 5,5 0,0 0,0 5,5 5))"},
- {"wkt": "POLYGON ((10 1, 9 3, 7 4, 5 6, 4 8, 4 10, 5 12, 7 13, 9 12, 10 10, 11 12, 13 13, 15 12, 16 10, 16 8, 15 6, 13 4, 11 3, 10 1))"}
- ],
- "union_geoms": [
- {"wkt": "POLYGON ((-5 0,-5 10,5 10,5 5,10 5,10 -5,0 -5,0 0,-5 0))"},
- {"wkt": "POLYGON ((2 0, 2 15, 18 15, 18 0, 2 0))"}
- ]
-}
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/interstates/interstates.dbf b/lib/python2.7/site-packages/django/contrib/gis/tests/data/interstates/interstates.dbf
deleted file mode 100644
index a88d171..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/interstates/interstates.dbf
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/interstates/interstates.prj b/lib/python2.7/site-packages/django/contrib/gis/tests/data/interstates/interstates.prj
deleted file mode 100644
index a30c00a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/interstates/interstates.prj
+++ /dev/null
@@ -1 +0,0 @@
-GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/interstates/interstates.shp b/lib/python2.7/site-packages/django/contrib/gis/tests/data/interstates/interstates.shp
deleted file mode 100644
index 6d93de7..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/interstates/interstates.shp
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/interstates/interstates.shx b/lib/python2.7/site-packages/django/contrib/gis/tests/data/interstates/interstates.shx
deleted file mode 100644
index 7b9088a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/interstates/interstates.shx
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/invalid/emptypoints.dbf b/lib/python2.7/site-packages/django/contrib/gis/tests/data/invalid/emptypoints.dbf
deleted file mode 100644
index aa21090..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/invalid/emptypoints.dbf
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/invalid/emptypoints.shp b/lib/python2.7/site-packages/django/contrib/gis/tests/data/invalid/emptypoints.shp
deleted file mode 100644
index bdcfb83..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/invalid/emptypoints.shp
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/invalid/emptypoints.shx b/lib/python2.7/site-packages/django/contrib/gis/tests/data/invalid/emptypoints.shx
deleted file mode 100644
index dea663e..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/invalid/emptypoints.shx
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_point/test_point.dbf b/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_point/test_point.dbf
deleted file mode 100644
index b2b4eca..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_point/test_point.dbf
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_point/test_point.prj b/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_point/test_point.prj
deleted file mode 100644
index a30c00a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_point/test_point.prj
+++ /dev/null
@@ -1 +0,0 @@
-GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_point/test_point.shp b/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_point/test_point.shp
deleted file mode 100644
index 95e8b0a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_point/test_point.shp
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_point/test_point.shx b/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_point/test_point.shx
deleted file mode 100644
index 087f3da..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_point/test_point.shx
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_poly/test_poly.dbf b/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_poly/test_poly.dbf
deleted file mode 100644
index 7965bd6..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_poly/test_poly.dbf
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_poly/test_poly.prj b/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_poly/test_poly.prj
deleted file mode 100644
index a30c00a..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_poly/test_poly.prj
+++ /dev/null
@@ -1 +0,0 @@
-GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_poly/test_poly.shp b/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_poly/test_poly.shp
deleted file mode 100644
index b22930b..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_poly/test_poly.shp
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_poly/test_poly.shx b/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_poly/test_poly.shx
deleted file mode 100644
index c92f78b..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_poly/test_poly.shx
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_vrt/test_vrt.csv b/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_vrt/test_vrt.csv
deleted file mode 100644
index dff648f..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_vrt/test_vrt.csv
+++ /dev/null
@@ -1,4 +0,0 @@
-POINT_X,POINT_Y,NUM
-1.0,2.0,5
-5.0,23.0,17
-100.0,523.5,23
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_vrt/test_vrt.vrt b/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_vrt/test_vrt.vrt
deleted file mode 100644
index 979c179..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/test_vrt/test_vrt.vrt
+++ /dev/null
@@ -1,7 +0,0 @@
-<OGRVRTDataSource>
-<OGRVRTLayer name="test_vrt">
-<SrcDataSource relativeToVRT="1">test_vrt.csv</SrcDataSource>
-<GeometryType>wkbPoint25D</GeometryType>
-<GeometryField encoding="PointFromColumns" x="POINT_X" y="POINT_Y" z="NUM"/>
-</OGRVRTLayer>
-</OGRVRTDataSource> \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/data/texas.dbf b/lib/python2.7/site-packages/django/contrib/gis/tests/data/texas.dbf
deleted file mode 100644
index 827c065..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/data/texas.dbf
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/distapp/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/tests/distapp/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/distapp/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/distapp/fixtures/initial_data.json.gz b/lib/python2.7/site-packages/django/contrib/gis/tests/distapp/fixtures/initial_data.json.gz
deleted file mode 100644
index 5151d33..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/distapp/fixtures/initial_data.json.gz
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/distapp/models.py b/lib/python2.7/site-packages/django/contrib/gis/tests/distapp/models.py
deleted file mode 100644
index bf08829..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/distapp/models.py
+++ /dev/null
@@ -1,58 +0,0 @@
-from django.contrib.gis.db import models
-from django.utils.encoding import python_2_unicode_compatible
-
-@python_2_unicode_compatible
-class SouthTexasCity(models.Model):
- "City model on projected coordinate system for South Texas."
- name = models.CharField(max_length=30)
- point = models.PointField(srid=32140)
- objects = models.GeoManager()
- def __str__(self): return self.name
-
-@python_2_unicode_compatible
-class SouthTexasCityFt(models.Model):
- "Same City model as above, but U.S. survey feet are the units."
- name = models.CharField(max_length=30)
- point = models.PointField(srid=2278)
- objects = models.GeoManager()
- def __str__(self): return self.name
-
-@python_2_unicode_compatible
-class AustraliaCity(models.Model):
- "City model for Australia, using WGS84."
- name = models.CharField(max_length=30)
- point = models.PointField()
- objects = models.GeoManager()
- def __str__(self): return self.name
-
-@python_2_unicode_compatible
-class CensusZipcode(models.Model):
- "Model for a few South Texas ZIP codes (in original Census NAD83)."
- name = models.CharField(max_length=5)
- poly = models.PolygonField(srid=4269)
- objects = models.GeoManager()
- def __str__(self): return self.name
-
-@python_2_unicode_compatible
-class SouthTexasZipcode(models.Model):
- "Model for a few South Texas ZIP codes."
- name = models.CharField(max_length=5)
- poly = models.PolygonField(srid=32140, null=True)
- objects = models.GeoManager()
- def __str__(self): return self.name
-
-@python_2_unicode_compatible
-class Interstate(models.Model):
- "Geodetic model for U.S. Interstates."
- name = models.CharField(max_length=10)
- path = models.LineStringField()
- objects = models.GeoManager()
- def __str__(self): return self.name
-
-@python_2_unicode_compatible
-class SouthTexasInterstate(models.Model):
- "Projected model for South Texas Interstates."
- name = models.CharField(max_length=10)
- path = models.LineStringField(srid=32140)
- objects = models.GeoManager()
- def __str__(self): return self.name
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/distapp/tests.py b/lib/python2.7/site-packages/django/contrib/gis/tests/distapp/tests.py
deleted file mode 100644
index 2ed17a0..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/distapp/tests.py
+++ /dev/null
@@ -1,367 +0,0 @@
-from __future__ import absolute_import
-
-from django.db import connection
-from django.db.models import Q
-from django.contrib.gis.geos import HAS_GEOS
-from django.contrib.gis.measure import D # alias for Distance
-from django.contrib.gis.tests.utils import (
- HAS_SPATIAL_DB, mysql, oracle, postgis, spatialite, no_oracle, no_spatialite
-)
-from django.test import TestCase
-from django.utils.unittest import skipUnless
-
-if HAS_GEOS and HAS_SPATIAL_DB:
- from django.contrib.gis.geos import GEOSGeometry, LineString
-
- from .models import (AustraliaCity, Interstate, SouthTexasInterstate,
- SouthTexasCity, SouthTexasCityFt, CensusZipcode, SouthTexasZipcode)
-
-
-@skipUnless(HAS_GEOS and HAS_SPATIAL_DB and not mysql,
- "Geos and spatial db (not mysql) are required.")
-class DistanceTest(TestCase):
-
- if HAS_GEOS and HAS_SPATIAL_DB:
- # A point we are testing distances with -- using a WGS84
- # coordinate that'll be implicitly transormed to that to
- # the coordinate system of the field, EPSG:32140 (Texas South Central
- # w/units in meters)
- stx_pnt = GEOSGeometry('POINT (-95.370401017314293 29.704867409475465)', 4326)
- # Another one for Australia
- au_pnt = GEOSGeometry('POINT (150.791 -34.4919)', 4326)
-
- def get_names(self, qs):
- cities = [c.name for c in qs]
- cities.sort()
- return cities
-
- def test01_init(self):
- "Test initialization of distance models."
- self.assertEqual(9, SouthTexasCity.objects.count())
- self.assertEqual(9, SouthTexasCityFt.objects.count())
- self.assertEqual(11, AustraliaCity.objects.count())
- self.assertEqual(4, SouthTexasZipcode.objects.count())
- self.assertEqual(4, CensusZipcode.objects.count())
- self.assertEqual(1, Interstate.objects.count())
- self.assertEqual(1, SouthTexasInterstate.objects.count())
-
- @no_spatialite
- def test02_dwithin(self):
- "Testing the `dwithin` lookup type."
- # Distances -- all should be equal (except for the
- # degree/meter pair in au_cities, that's somewhat
- # approximate).
- tx_dists = [(7000, 22965.83), D(km=7), D(mi=4.349)]
- au_dists = [(0.5, 32000), D(km=32), D(mi=19.884)]
-
- # Expected cities for Australia and Texas.
- tx_cities = ['Downtown Houston', 'Southside Place']
- au_cities = ['Mittagong', 'Shellharbour', 'Thirroul', 'Wollongong']
-
- # Performing distance queries on two projected coordinate systems one
- # with units in meters and the other in units of U.S. survey feet.
- for dist in tx_dists:
- if isinstance(dist, tuple): dist1, dist2 = dist
- else: dist1 = dist2 = dist
- qs1 = SouthTexasCity.objects.filter(point__dwithin=(self.stx_pnt, dist1))
- qs2 = SouthTexasCityFt.objects.filter(point__dwithin=(self.stx_pnt, dist2))
- for qs in qs1, qs2:
- self.assertEqual(tx_cities, self.get_names(qs))
-
- # Now performing the `dwithin` queries on a geodetic coordinate system.
- for dist in au_dists:
- if isinstance(dist, D) and not oracle: type_error = True
- else: type_error = False
-
- if isinstance(dist, tuple):
- if oracle: dist = dist[1]
- else: dist = dist[0]
-
- # Creating the query set.
- qs = AustraliaCity.objects.order_by('name')
- if type_error:
- # A ValueError should be raised on PostGIS when trying to pass
- # Distance objects into a DWithin query using a geodetic field.
- self.assertRaises(ValueError, AustraliaCity.objects.filter(point__dwithin=(self.au_pnt, dist)).count)
- else:
- self.assertEqual(au_cities, self.get_names(qs.filter(point__dwithin=(self.au_pnt, dist))))
-
- def test03a_distance_method(self):
- "Testing the `distance` GeoQuerySet method on projected coordinate systems."
- # The point for La Grange, TX
- lagrange = GEOSGeometry('POINT(-96.876369 29.905320)', 4326)
- # Reference distances in feet and in meters. Got these values from
- # using the provided raw SQL statements.
- # SELECT ST_Distance(point, ST_Transform(ST_GeomFromText('POINT(-96.876369 29.905320)', 4326), 32140)) FROM distapp_southtexascity;
- m_distances = [147075.069813, 139630.198056, 140888.552826,
- 138809.684197, 158309.246259, 212183.594374,
- 70870.188967, 165337.758878, 139196.085105]
- # SELECT ST_Distance(point, ST_Transform(ST_GeomFromText('POINT(-96.876369 29.905320)', 4326), 2278)) FROM distapp_southtexascityft;
- # Oracle 11 thinks this is not a projected coordinate system, so it's s
- # not tested.
- ft_distances = [482528.79154625, 458103.408123001, 462231.860397575,
- 455411.438904354, 519386.252102563, 696139.009211594,
- 232513.278304279, 542445.630586414, 456679.155883207]
-
- # Testing using different variations of parameters and using models
- # with different projected coordinate systems.
- dist1 = SouthTexasCity.objects.distance(lagrange, field_name='point')
- dist2 = SouthTexasCity.objects.distance(lagrange) # Using GEOSGeometry parameter
- if spatialite or oracle:
- dist_qs = [dist1, dist2]
- else:
- dist3 = SouthTexasCityFt.objects.distance(lagrange.ewkt) # Using EWKT string parameter.
- dist4 = SouthTexasCityFt.objects.distance(lagrange)
- dist_qs = [dist1, dist2, dist3, dist4]
-
- # Original query done on PostGIS, have to adjust AlmostEqual tolerance
- # for Oracle.
- if oracle: tol = 2
- else: tol = 5
-
- # Ensuring expected distances are returned for each distance queryset.
- for qs in dist_qs:
- for i, c in enumerate(qs):
- self.assertAlmostEqual(m_distances[i], c.distance.m, tol)
- self.assertAlmostEqual(ft_distances[i], c.distance.survey_ft, tol)
-
- @no_spatialite
- def test03b_distance_method(self):
- "Testing the `distance` GeoQuerySet method on geodetic coordnate systems."
- if oracle: tol = 2
- else: tol = 5
-
- # Testing geodetic distance calculation with a non-point geometry
- # (a LineString of Wollongong and Shellharbour coords).
- ls = LineString( ( (150.902, -34.4245), (150.87, -34.5789) ) )
- if oracle or connection.ops.geography:
- # Reference query:
- # SELECT ST_distance_sphere(point, ST_GeomFromText('LINESTRING(150.9020 -34.4245,150.8700 -34.5789)', 4326)) FROM distapp_australiacity ORDER BY name;
- distances = [1120954.92533513, 140575.720018241, 640396.662906304,
- 60580.9693849269, 972807.955955075, 568451.8357838,
- 40435.4335201384, 0, 68272.3896586844, 12375.0643697706, 0]
- qs = AustraliaCity.objects.distance(ls).order_by('name')
- for city, distance in zip(qs, distances):
- # Testing equivalence to within a meter.
- self.assertAlmostEqual(distance, city.distance.m, 0)
- else:
- # PostGIS 1.4 and below is limited to disance queries only
- # to/from point geometries, check for raising of ValueError.
- self.assertRaises(ValueError, AustraliaCity.objects.distance, ls)
- self.assertRaises(ValueError, AustraliaCity.objects.distance, ls.wkt)
-
- # Got the reference distances using the raw SQL statements:
- # SELECT ST_distance_spheroid(point, ST_GeomFromText('POINT(151.231341 -33.952685)', 4326), 'SPHEROID["WGS 84",6378137.0,298.257223563]') FROM distapp_australiacity WHERE (NOT (id = 11));
- # SELECT ST_distance_sphere(point, ST_GeomFromText('POINT(151.231341 -33.952685)', 4326)) FROM distapp_australiacity WHERE (NOT (id = 11)); st_distance_sphere
- if connection.ops.postgis and connection.ops.proj_version_tuple() >= (4, 7, 0):
- # PROJ.4 versions 4.7+ have updated datums, and thus different
- # distance values.
- spheroid_distances = [60504.0628957201, 77023.9489850262, 49154.8867574404,
- 90847.4358768573, 217402.811919332, 709599.234564757,
- 640011.483550888, 7772.00667991925, 1047861.78619339,
- 1165126.55236034]
- sphere_distances = [60580.9693849267, 77144.0435286473, 49199.4415344719,
- 90804.7533823494, 217713.384600405, 709134.127242793,
- 639828.157159169, 7786.82949717788, 1049204.06569028,
- 1162623.7238134]
-
- else:
- spheroid_distances = [60504.0628825298, 77023.948962654, 49154.8867507115,
- 90847.435881812, 217402.811862568, 709599.234619957,
- 640011.483583758, 7772.00667666425, 1047861.7859506,
- 1165126.55237647]
- sphere_distances = [60580.7612632291, 77143.7785056615, 49199.2725132184,
- 90804.4414289463, 217712.63666124, 709131.691061906,
- 639825.959074112, 7786.80274606706, 1049200.46122281,
- 1162619.7297006]
-
- # Testing with spheroid distances first.
- hillsdale = AustraliaCity.objects.get(name='Hillsdale')
- qs = AustraliaCity.objects.exclude(id=hillsdale.id).distance(hillsdale.point, spheroid=True)
- for i, c in enumerate(qs):
- self.assertAlmostEqual(spheroid_distances[i], c.distance.m, tol)
- if postgis:
- # PostGIS uses sphere-only distances by default, testing these as well.
- qs = AustraliaCity.objects.exclude(id=hillsdale.id).distance(hillsdale.point)
- for i, c in enumerate(qs):
- self.assertAlmostEqual(sphere_distances[i], c.distance.m, tol)
-
- @no_oracle # Oracle already handles geographic distance calculation.
- def test03c_distance_method(self):
- "Testing the `distance` GeoQuerySet method used with `transform` on a geographic field."
- # Normally you can't compute distances from a geometry field
- # that is not a PointField (on PostGIS 1.4 and below).
- if not connection.ops.geography:
- self.assertRaises(ValueError, CensusZipcode.objects.distance, self.stx_pnt)
-
- # We'll be using a Polygon (created by buffering the centroid
- # of 77005 to 100m) -- which aren't allowed in geographic distance
- # queries normally, however our field has been transformed to
- # a non-geographic system.
- z = SouthTexasZipcode.objects.get(name='77005')
-
- # Reference query:
- # SELECT ST_Distance(ST_Transform("distapp_censuszipcode"."poly", 32140), ST_GeomFromText('<buffer_wkt>', 32140)) FROM "distapp_censuszipcode";
- dists_m = [3553.30384972258, 1243.18391525602, 2186.15439472242]
-
- # Having our buffer in the SRID of the transformation and of the field
- # -- should get the same results. The first buffer has no need for
- # transformation SQL because it is the same SRID as what was given
- # to `transform()`. The second buffer will need to be transformed,
- # however.
- buf1 = z.poly.centroid.buffer(100)
- buf2 = buf1.transform(4269, clone=True)
- ref_zips = ['77002', '77025', '77401']
-
- for buf in [buf1, buf2]:
- qs = CensusZipcode.objects.exclude(name='77005').transform(32140).distance(buf)
- self.assertEqual(ref_zips, self.get_names(qs))
- for i, z in enumerate(qs):
- self.assertAlmostEqual(z.distance.m, dists_m[i], 5)
-
- def test04_distance_lookups(self):
- "Testing the `distance_lt`, `distance_gt`, `distance_lte`, and `distance_gte` lookup types."
- # Retrieving the cities within a 20km 'donut' w/a 7km radius 'hole'
- # (thus, Houston and Southside place will be excluded as tested in
- # the `test02_dwithin` above).
- qs1 = SouthTexasCity.objects.filter(point__distance_gte=(self.stx_pnt, D(km=7))).filter(point__distance_lte=(self.stx_pnt, D(km=20)))
-
- # Can't determine the units on SpatiaLite from PROJ.4 string, and
- # Oracle 11 incorrectly thinks it is not projected.
- if spatialite or oracle:
- dist_qs = (qs1,)
- else:
- qs2 = SouthTexasCityFt.objects.filter(point__distance_gte=(self.stx_pnt, D(km=7))).filter(point__distance_lte=(self.stx_pnt, D(km=20)))
- dist_qs = (qs1, qs2)
-
- for qs in dist_qs:
- cities = self.get_names(qs)
- self.assertEqual(cities, ['Bellaire', 'Pearland', 'West University Place'])
-
- # Doing a distance query using Polygons instead of a Point.
- z = SouthTexasZipcode.objects.get(name='77005')
- qs = SouthTexasZipcode.objects.exclude(name='77005').filter(poly__distance_lte=(z.poly, D(m=275)))
- self.assertEqual(['77025', '77401'], self.get_names(qs))
- # If we add a little more distance 77002 should be included.
- qs = SouthTexasZipcode.objects.exclude(name='77005').filter(poly__distance_lte=(z.poly, D(m=300)))
- self.assertEqual(['77002', '77025', '77401'], self.get_names(qs))
-
- def test05_geodetic_distance_lookups(self):
- "Testing distance lookups on geodetic coordinate systems."
- # Line is from Canberra to Sydney. Query is for all other cities within
- # a 100km of that line (which should exclude only Hobart & Adelaide).
- line = GEOSGeometry('LINESTRING(144.9630 -37.8143,151.2607 -33.8870)', 4326)
- dist_qs = AustraliaCity.objects.filter(point__distance_lte=(line, D(km=100)))
-
- if oracle or connection.ops.geography:
- # Oracle and PostGIS 1.5 can do distance lookups on arbitrary geometries.
- self.assertEqual(9, dist_qs.count())
- self.assertEqual(['Batemans Bay', 'Canberra', 'Hillsdale',
- 'Melbourne', 'Mittagong', 'Shellharbour',
- 'Sydney', 'Thirroul', 'Wollongong'],
- self.get_names(dist_qs))
- else:
- # PostGIS 1.4 and below only allows geodetic distance queries (utilizing
- # ST_Distance_Sphere/ST_Distance_Spheroid) from Points to PointFields
- # on geometry columns.
- self.assertRaises(ValueError, dist_qs.count)
-
- # Ensured that a ValueError was raised, none of the rest of the test is
- # support on this backend, so bail now.
- if spatialite: return
-
- # Too many params (4 in this case) should raise a ValueError.
- self.assertRaises(ValueError, len,
- AustraliaCity.objects.filter(point__distance_lte=('POINT(5 23)', D(km=100), 'spheroid', '4')))
-
- # Not enough params should raise a ValueError.
- self.assertRaises(ValueError, len,
- AustraliaCity.objects.filter(point__distance_lte=('POINT(5 23)',)))
-
- # Getting all cities w/in 550 miles of Hobart.
- hobart = AustraliaCity.objects.get(name='Hobart')
- qs = AustraliaCity.objects.exclude(name='Hobart').filter(point__distance_lte=(hobart.point, D(mi=550)))
- cities = self.get_names(qs)
- self.assertEqual(cities, ['Batemans Bay', 'Canberra', 'Melbourne'])
-
- # Cities that are either really close or really far from Wollongong --
- # and using different units of distance.
- wollongong = AustraliaCity.objects.get(name='Wollongong')
- d1, d2 = D(yd=19500), D(nm=400) # Yards (~17km) & Nautical miles.
-
- # Normal geodetic distance lookup (uses `distance_sphere` on PostGIS.
- gq1 = Q(point__distance_lte=(wollongong.point, d1))
- gq2 = Q(point__distance_gte=(wollongong.point, d2))
- qs1 = AustraliaCity.objects.exclude(name='Wollongong').filter(gq1 | gq2)
-
- # Geodetic distance lookup but telling GeoDjango to use `distance_spheroid`
- # instead (we should get the same results b/c accuracy variance won't matter
- # in this test case).
- if postgis:
- gq3 = Q(point__distance_lte=(wollongong.point, d1, 'spheroid'))
- gq4 = Q(point__distance_gte=(wollongong.point, d2, 'spheroid'))
- qs2 = AustraliaCity.objects.exclude(name='Wollongong').filter(gq3 | gq4)
- querysets = [qs1, qs2]
- else:
- querysets = [qs1]
-
- for qs in querysets:
- cities = self.get_names(qs)
- self.assertEqual(cities, ['Adelaide', 'Hobart', 'Shellharbour', 'Thirroul'])
-
- def test06_area(self):
- "Testing the `area` GeoQuerySet method."
- # Reference queries:
- # SELECT ST_Area(poly) FROM distapp_southtexaszipcode;
- area_sq_m = [5437908.90234375, 10183031.4389648, 11254471.0073242, 9881708.91772461]
- # Tolerance has to be lower for Oracle and differences
- # with GEOS 3.0.0RC4
- tol = 2
- for i, z in enumerate(SouthTexasZipcode.objects.area()):
- self.assertAlmostEqual(area_sq_m[i], z.area.sq_m, tol)
-
- def test07_length(self):
- "Testing the `length` GeoQuerySet method."
- # Reference query (should use `length_spheroid`).
- # SELECT ST_length_spheroid(ST_GeomFromText('<wkt>', 4326) 'SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]]');
- len_m1 = 473504.769553813
- len_m2 = 4617.668
-
- if spatialite:
- # Does not support geodetic coordinate systems.
- self.assertRaises(ValueError, Interstate.objects.length)
- else:
- qs = Interstate.objects.length()
- if oracle: tol = 2
- else: tol = 3
- self.assertAlmostEqual(len_m1, qs[0].length.m, tol)
-
- # Now doing length on a projected coordinate system.
- i10 = SouthTexasInterstate.objects.length().get(name='I-10')
- self.assertAlmostEqual(len_m2, i10.length.m, 2)
-
- @no_spatialite
- def test08_perimeter(self):
- "Testing the `perimeter` GeoQuerySet method."
- # Reference query:
- # SELECT ST_Perimeter(distapp_southtexaszipcode.poly) FROM distapp_southtexaszipcode;
- perim_m = [18404.3550889361, 15627.2108551001, 20632.5588368978, 17094.5996143697]
- if oracle: tol = 2
- else: tol = 7
- for i, z in enumerate(SouthTexasZipcode.objects.perimeter()):
- self.assertAlmostEqual(perim_m[i], z.perimeter.m, tol)
-
- # Running on points; should return 0.
- for i, c in enumerate(SouthTexasCity.objects.perimeter(model_att='perim')):
- self.assertEqual(0, c.perim.m)
-
- def test09_measurement_null_fields(self):
- "Testing the measurement GeoQuerySet methods on fields with NULL values."
- # Creating SouthTexasZipcode w/NULL value.
- SouthTexasZipcode.objects.create(name='78212')
- # Performing distance/area queries against the NULL PolygonField,
- # and ensuring the result of the operations is None.
- htown = SouthTexasCity.objects.get(name='Downtown Houston')
- z = SouthTexasZipcode.objects.distance(htown.point).area().get(name='78212')
- self.assertEqual(None, z.distance)
- self.assertEqual(None, z.area)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geo3d/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geo3d/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geo3d/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geo3d/models.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geo3d/models.py
deleted file mode 100644
index 81e5f55..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geo3d/models.py
+++ /dev/null
@@ -1,77 +0,0 @@
-from django.contrib.gis.db import models
-from django.utils.encoding import python_2_unicode_compatible
-
-@python_2_unicode_compatible
-class City3D(models.Model):
- name = models.CharField(max_length=30)
- point = models.PointField(dim=3)
- objects = models.GeoManager()
-
- def __str__(self):
- return self.name
-
-@python_2_unicode_compatible
-class Interstate2D(models.Model):
- name = models.CharField(max_length=30)
- line = models.LineStringField(srid=4269)
- objects = models.GeoManager()
-
- def __str__(self):
- return self.name
-
-@python_2_unicode_compatible
-class Interstate3D(models.Model):
- name = models.CharField(max_length=30)
- line = models.LineStringField(dim=3, srid=4269)
- objects = models.GeoManager()
-
- def __str__(self):
- return self.name
-
-@python_2_unicode_compatible
-class InterstateProj2D(models.Model):
- name = models.CharField(max_length=30)
- line = models.LineStringField(srid=32140)
- objects = models.GeoManager()
-
- def __str__(self):
- return self.name
-
-@python_2_unicode_compatible
-class InterstateProj3D(models.Model):
- name = models.CharField(max_length=30)
- line = models.LineStringField(dim=3, srid=32140)
- objects = models.GeoManager()
-
- def __str__(self):
- return self.name
-
-@python_2_unicode_compatible
-class Polygon2D(models.Model):
- name = models.CharField(max_length=30)
- poly = models.PolygonField(srid=32140)
- objects = models.GeoManager()
-
- def __str__(self):
- return self.name
-
-@python_2_unicode_compatible
-class Polygon3D(models.Model):
- name = models.CharField(max_length=30)
- poly = models.PolygonField(dim=3, srid=32140)
- objects = models.GeoManager()
-
- def __str__(self):
- return self.name
-
-class Point2D(models.Model):
- point = models.PointField()
- objects = models.GeoManager()
-
-class Point3D(models.Model):
- point = models.PointField(dim=3)
- objects = models.GeoManager()
-
-class MultiPoint3D(models.Model):
- mpoint = models.MultiPointField(dim=3)
- objects = models.GeoManager()
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geo3d/tests.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geo3d/tests.py
deleted file mode 100644
index df9f356..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geo3d/tests.py
+++ /dev/null
@@ -1,278 +0,0 @@
-from __future__ import absolute_import, unicode_literals
-
-import os
-import re
-
-from django.contrib.gis.gdal import HAS_GDAL
-from django.contrib.gis.geos import HAS_GEOS
-from django.contrib.gis.tests.utils import postgis
-from django.test import TestCase
-from django.utils._os import upath
-from django.utils.unittest import skipUnless
-
-if HAS_GEOS:
- from django.contrib.gis.db.models import Union, Extent3D
- from django.contrib.gis.geos import GEOSGeometry, LineString, Point, Polygon
-
- from .models import (City3D, Interstate2D, Interstate3D, InterstateProj2D,
- InterstateProj3D, Point2D, Point3D, MultiPoint3D, Polygon2D, Polygon3D)
-
-if HAS_GDAL:
- from django.contrib.gis.utils import LayerMapping, LayerMapError
-
-
-data_path = os.path.realpath(os.path.join(os.path.dirname(upath(__file__)), '..', 'data'))
-city_file = os.path.join(data_path, 'cities', 'cities.shp')
-vrt_file = os.path.join(data_path, 'test_vrt', 'test_vrt.vrt')
-
-# The coordinates of each city, with Z values corresponding to their
-# altitude in meters.
-city_data = (
- ('Houston', (-95.363151, 29.763374, 18)),
- ('Dallas', (-96.801611, 32.782057, 147)),
- ('Oklahoma City', (-97.521157, 34.464642, 380)),
- ('Wellington', (174.783117, -41.315268, 14)),
- ('Pueblo', (-104.609252, 38.255001, 1433)),
- ('Lawrence', (-95.235060, 38.971823, 251)),
- ('Chicago', (-87.650175, 41.850385, 181)),
- ('Victoria', (-123.305196, 48.462611, 15)),
-)
-
-# Reference mapping of city name to its altitude (Z value).
-city_dict = dict((name, coords) for name, coords in city_data)
-
-# 3D freeway data derived from the National Elevation Dataset:
-# http://seamless.usgs.gov/products/9arc.php
-interstate_data = (
- ('I-45',
- 'LINESTRING(-95.3708481 29.7765870 11.339,-95.3694580 29.7787980 4.536,-95.3690305 29.7797359 9.762,-95.3691886 29.7812450 12.448,-95.3696447 29.7850144 10.457,-95.3702511 29.7868518 9.418,-95.3706724 29.7881286 14.858,-95.3711632 29.7896157 15.386,-95.3714525 29.7936267 13.168,-95.3717848 29.7955007 15.104,-95.3717719 29.7969804 16.516,-95.3717305 29.7982117 13.923,-95.3717254 29.8000778 14.385,-95.3719875 29.8013539 15.160,-95.3720575 29.8026785 15.544,-95.3721321 29.8040912 14.975,-95.3722074 29.8050998 15.688,-95.3722779 29.8060430 16.099,-95.3733818 29.8076750 15.197,-95.3741563 29.8103686 17.268,-95.3749458 29.8129927 19.857,-95.3763564 29.8144557 15.435)',
- ( 11.339, 4.536, 9.762, 12.448, 10.457, 9.418, 14.858,
- 15.386, 13.168, 15.104, 16.516, 13.923, 14.385, 15.16 ,
- 15.544, 14.975, 15.688, 16.099, 15.197, 17.268, 19.857,
- 15.435),
- ),
- )
-
-# Bounding box polygon for inner-loop of Houston (in projected coordinate
-# system 32140), with elevation values from the National Elevation Dataset
-# (see above).
-bbox_data = (
- 'POLYGON((941527.97 4225693.20,962596.48 4226349.75,963152.57 4209023.95,942051.75 4208366.38,941527.97 4225693.20))',
- (21.71, 13.21, 9.12, 16.40, 21.71)
-)
-
-
-@skipUnless(HAS_GEOS and HAS_GDAL and postgis, "Geos, GDAL and postgis are required.")
-class Geo3DTest(TestCase):
- """
- Only a subset of the PostGIS routines are 3D-enabled, and this TestCase
- tries to test the features that can handle 3D and that are also
- available within GeoDjango. For more information, see the PostGIS docs
- on the routines that support 3D:
-
- http://postgis.refractions.net/documentation/manual-1.4/ch08.html#PostGIS_3D_Functions
- """
-
- def _load_interstate_data(self):
- # Interstate (2D / 3D and Geographic/Projected variants)
- for name, line, exp_z in interstate_data:
- line_3d = GEOSGeometry(line, srid=4269)
- line_2d = LineString([l[:2] for l in line_3d.coords], srid=4269)
-
- # Creating a geographic and projected version of the
- # interstate in both 2D and 3D.
- Interstate3D.objects.create(name=name, line=line_3d)
- InterstateProj3D.objects.create(name=name, line=line_3d)
- Interstate2D.objects.create(name=name, line=line_2d)
- InterstateProj2D.objects.create(name=name, line=line_2d)
-
- def _load_city_data(self):
- for name, pnt_data in city_data:
- City3D.objects.create(name=name, point=Point(*pnt_data, srid=4326))
-
- def _load_polygon_data(self):
- bbox_wkt, bbox_z = bbox_data
- bbox_2d = GEOSGeometry(bbox_wkt, srid=32140)
- bbox_3d = Polygon(tuple((x, y, z) for (x, y), z in zip(bbox_2d[0].coords, bbox_z)), srid=32140)
- Polygon2D.objects.create(name='2D BBox', poly=bbox_2d)
- Polygon3D.objects.create(name='3D BBox', poly=bbox_3d)
-
- def test_3d_hasz(self):
- """
- Make sure data is 3D and has expected Z values -- shouldn't change
- because of coordinate system.
- """
- self._load_interstate_data()
- for name, line, exp_z in interstate_data:
- interstate = Interstate3D.objects.get(name=name)
- interstate_proj = InterstateProj3D.objects.get(name=name)
- for i in [interstate, interstate_proj]:
- self.assertTrue(i.line.hasz)
- self.assertEqual(exp_z, tuple(i.line.z))
-
- self._load_city_data()
- for name, pnt_data in city_data:
- city = City3D.objects.get(name=name)
- z = pnt_data[2]
- self.assertTrue(city.point.hasz)
- self.assertEqual(z, city.point.z)
-
- def test_3d_polygons(self):
- """
- Test the creation of polygon 3D models.
- """
- self._load_polygon_data()
- p3d = Polygon3D.objects.get(name='3D BBox')
- self.assertTrue(p3d.poly.hasz)
- self.assertIsInstance(p3d.poly, Polygon)
- self.assertEqual(p3d.poly.srid, 32140)
-
- def test_3d_layermapping(self):
- """
- Testing LayerMapping on 3D models.
- """
- point_mapping = {'point' : 'POINT'}
- mpoint_mapping = {'mpoint' : 'MULTIPOINT'}
-
- # The VRT is 3D, but should still be able to map sans the Z.
- lm = LayerMapping(Point2D, vrt_file, point_mapping, transform=False)
- lm.save()
- self.assertEqual(3, Point2D.objects.count())
-
- # The city shapefile is 2D, and won't be able to fill the coordinates
- # in the 3D model -- thus, a LayerMapError is raised.
- self.assertRaises(LayerMapError, LayerMapping,
- Point3D, city_file, point_mapping, transform=False)
-
- # 3D model should take 3D data just fine.
- lm = LayerMapping(Point3D, vrt_file, point_mapping, transform=False)
- lm.save()
- self.assertEqual(3, Point3D.objects.count())
-
- # Making sure LayerMapping.make_multi works right, by converting
- # a Point25D into a MultiPoint25D.
- lm = LayerMapping(MultiPoint3D, vrt_file, mpoint_mapping, transform=False)
- lm.save()
- self.assertEqual(3, MultiPoint3D.objects.count())
-
- def test_kml(self):
- """
- Test GeoQuerySet.kml() with Z values.
- """
- self._load_city_data()
- h = City3D.objects.kml(precision=6).get(name='Houston')
- # KML should be 3D.
- # `SELECT ST_AsKML(point, 6) FROM geo3d_city3d WHERE name = 'Houston';`
- ref_kml_regex = re.compile(r'^<Point><coordinates>-95.363\d+,29.763\d+,18</coordinates></Point>$')
- self.assertTrue(ref_kml_regex.match(h.kml))
-
- def test_geojson(self):
- """
- Test GeoQuerySet.geojson() with Z values.
- """
- self._load_city_data()
- h = City3D.objects.geojson(precision=6).get(name='Houston')
- # GeoJSON should be 3D
- # `SELECT ST_AsGeoJSON(point, 6) FROM geo3d_city3d WHERE name='Houston';`
- ref_json_regex = re.compile(r'^{"type":"Point","coordinates":\[-95.363151,29.763374,18(\.0+)?\]}$')
- self.assertTrue(ref_json_regex.match(h.geojson))
-
- def test_union(self):
- """
- Testing the Union aggregate of 3D models.
- """
- # PostGIS query that returned the reference EWKT for this test:
- # `SELECT ST_AsText(ST_Union(point)) FROM geo3d_city3d;`
- self._load_city_data()
- ref_ewkt = 'SRID=4326;MULTIPOINT(-123.305196 48.462611 15,-104.609252 38.255001 1433,-97.521157 34.464642 380,-96.801611 32.782057 147,-95.363151 29.763374 18,-95.23506 38.971823 251,-87.650175 41.850385 181,174.783117 -41.315268 14)'
- ref_union = GEOSGeometry(ref_ewkt)
- union = City3D.objects.aggregate(Union('point'))['point__union']
- self.assertTrue(union.hasz)
- self.assertEqual(ref_union, union)
-
- def test_extent(self):
- """
- Testing the Extent3D aggregate for 3D models.
- """
- self._load_city_data()
- # `SELECT ST_Extent3D(point) FROM geo3d_city3d;`
- ref_extent3d = (-123.305196, -41.315268, 14,174.783117, 48.462611, 1433)
- extent1 = City3D.objects.aggregate(Extent3D('point'))['point__extent3d']
- extent2 = City3D.objects.extent3d()
-
- def check_extent3d(extent3d, tol=6):
- for ref_val, ext_val in zip(ref_extent3d, extent3d):
- self.assertAlmostEqual(ref_val, ext_val, tol)
-
- for e3d in [extent1, extent2]:
- check_extent3d(e3d)
-
- def test_perimeter(self):
- """
- Testing GeoQuerySet.perimeter() on 3D fields.
- """
- self._load_polygon_data()
- # Reference query for values below:
- # `SELECT ST_Perimeter3D(poly), ST_Perimeter2D(poly) FROM geo3d_polygon3d;`
- ref_perim_3d = 76859.2620451
- ref_perim_2d = 76859.2577803
- tol = 6
- self.assertAlmostEqual(ref_perim_2d,
- Polygon2D.objects.perimeter().get(name='2D BBox').perimeter.m,
- tol)
- self.assertAlmostEqual(ref_perim_3d,
- Polygon3D.objects.perimeter().get(name='3D BBox').perimeter.m,
- tol)
-
- def test_length(self):
- """
- Testing GeoQuerySet.length() on 3D fields.
- """
- # ST_Length_Spheroid Z-aware, and thus does not need to use
- # a separate function internally.
- # `SELECT ST_Length_Spheroid(line, 'SPHEROID["GRS 1980",6378137,298.257222101]')
- # FROM geo3d_interstate[2d|3d];`
- self._load_interstate_data()
- tol = 3
- ref_length_2d = 4368.1721949481
- ref_length_3d = 4368.62547052088
- self.assertAlmostEqual(ref_length_2d,
- Interstate2D.objects.length().get(name='I-45').length.m,
- tol)
- self.assertAlmostEqual(ref_length_3d,
- Interstate3D.objects.length().get(name='I-45').length.m,
- tol)
-
- # Making sure `ST_Length3D` is used on for a projected
- # and 3D model rather than `ST_Length`.
- # `SELECT ST_Length(line) FROM geo3d_interstateproj2d;`
- ref_length_2d = 4367.71564892392
- # `SELECT ST_Length3D(line) FROM geo3d_interstateproj3d;`
- ref_length_3d = 4368.16897234101
- self.assertAlmostEqual(ref_length_2d,
- InterstateProj2D.objects.length().get(name='I-45').length.m,
- tol)
- self.assertAlmostEqual(ref_length_3d,
- InterstateProj3D.objects.length().get(name='I-45').length.m,
- tol)
-
- def test_scale(self):
- """
- Testing GeoQuerySet.scale() on Z values.
- """
- self._load_city_data()
- # Mapping of City name to reference Z values.
- zscales = (-3, 4, 23)
- for zscale in zscales:
- for city in City3D.objects.scale(1.0, 1.0, zscale):
- self.assertEqual(city_dict[city.name][2] * zscale, city.scale.z)
-
- def test_translate(self):
- """
- Testing GeoQuerySet.translate() on Z values.
- """
- self._load_city_data()
- ztranslations = (5.23, 23, -17)
- for ztrans in ztranslations:
- for city in City3D.objects.translate(0, 0, ztrans):
- self.assertEqual(city_dict[city.name][2] + ztrans, city.translate.z)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geo3d/views.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geo3d/views.py
deleted file mode 100644
index 60f00ef..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geo3d/views.py
+++ /dev/null
@@ -1 +0,0 @@
-# Create your views here.
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geoadmin/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geoadmin/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geoadmin/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geoadmin/models.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geoadmin/models.py
deleted file mode 100644
index af08988..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geoadmin/models.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from django.contrib.gis.db import models
-from django.contrib.gis import admin
-from django.utils.encoding import python_2_unicode_compatible
-
-@python_2_unicode_compatible
-class City(models.Model):
- name = models.CharField(max_length=30)
- point = models.PointField()
- objects = models.GeoManager()
- def __str__(self): return self.name
-
-admin.site.register(City, admin.OSMGeoAdmin)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geoadmin/tests.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geoadmin/tests.py
deleted file mode 100644
index 1bb54f2..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geoadmin/tests.py
+++ /dev/null
@@ -1,73 +0,0 @@
-from __future__ import absolute_import
-
-from django.contrib.gis.geos import HAS_GEOS
-from django.contrib.gis.tests.utils import HAS_SPATIAL_DB
-from django.test import TestCase
-from django.test.utils import override_settings
-from django.utils.unittest import skipUnless
-
-if HAS_GEOS and HAS_SPATIAL_DB:
- from django.contrib.gis import admin
- from django.contrib.gis.geos import Point
-
- from .models import City
-
-GOOGLE_MAPS_API_KEY = 'XXXX'
-
-
-@skipUnless(HAS_GEOS and HAS_SPATIAL_DB, "Geos and spatial db are required.")
-class GeoAdminTest(TestCase):
- urls = 'django.contrib.gis.tests.geoadmin.urls'
-
- def test_ensure_geographic_media(self):
- geoadmin = admin.site._registry[City]
- admin_js = geoadmin.media.render_js()
- self.assertTrue(any([geoadmin.openlayers_url in js for js in admin_js]))
-
- def test_olmap_OSM_rendering(self):
- geoadmin = admin.site._registry[City]
- result = geoadmin.get_map_widget(City._meta.get_field('point'))(
- ).render('point', Point(-79.460734, 40.18476))
- self.assertIn(
- """geodjango_point.layers.base = new OpenLayers.Layer.OSM("OpenStreetMap (Mapnik)");""",
- result)
-
- def test_olmap_WMS_rendering(self):
- geoadmin = admin.GeoModelAdmin(City, admin.site)
- result = geoadmin.get_map_widget(City._meta.get_field('point'))(
- ).render('point', Point(-79.460734, 40.18476))
- self.assertIn(
- """geodjango_point.layers.base = new OpenLayers.Layer.WMS("OpenLayers WMS", "http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: \'basic\', format: 'image/jpeg'});""",
- result)
-
- def test_olwidget_has_changed(self):
- """
- Check that changes are accurately noticed by OpenLayersWidget.
- """
- geoadmin = admin.site._registry[City]
- form = geoadmin.get_changelist_form(None)()
- has_changed = form.fields['point']._has_changed
-
- initial = Point(13.4197458572965953, 52.5194108501149799, srid=4326)
- data_same = "SRID=3857;POINT(1493879.2754093995 6894592.019687599)"
- data_almost_same = "SRID=3857;POINT(1493879.2754093990 6894592.019687590)"
- data_changed = "SRID=3857;POINT(1493884.0527237 6894593.8111804)"
-
- self.assertTrue(has_changed(None, data_changed))
- self.assertTrue(has_changed(initial, ""))
- self.assertFalse(has_changed(None, ""))
- self.assertFalse(has_changed(initial, data_same))
- self.assertFalse(has_changed(initial, data_almost_same))
- self.assertTrue(has_changed(initial, data_changed))
-
- @override_settings(GOOGLE_MAPS_API_KEY=GOOGLE_MAPS_API_KEY)
- def test_google_map_scripts(self):
- """
- Testing GoogleMap.scripts() output. See #20773.
- """
- from django.contrib.gis.maps.google.gmap import GoogleMap
-
- google_map = GoogleMap()
- scripts = google_map.scripts
- self.assertIn(GOOGLE_MAPS_API_KEY, scripts)
- self.assertIn("new GMap2", scripts)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geoadmin/urls.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geoadmin/urls.py
deleted file mode 100644
index f415872..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geoadmin/urls.py
+++ /dev/null
@@ -1,6 +0,0 @@
-from django.conf.urls import patterns, include
-from django.contrib import admin
-
-urlpatterns = patterns('',
- (r'^admin/', include(admin.site.urls)),
-)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/feeds.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/feeds.py
deleted file mode 100644
index f53431c..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/feeds.py
+++ /dev/null
@@ -1,66 +0,0 @@
-from __future__ import absolute_import
-
-from django.contrib.gis import feeds
-
-from .models import City
-
-
-class TestGeoRSS1(feeds.Feed):
- link = '/city/'
- title = 'Test GeoDjango Cities'
-
- def items(self):
- return City.objects.all()
-
- def item_link(self, item):
- return '/city/%s/' % item.pk
-
- def item_geometry(self, item):
- return item.point
-
-class TestGeoRSS2(TestGeoRSS1):
- def geometry(self, obj):
- # This should attach a <georss:box> element for the extent of
- # of the cities in the database. This tuple came from
- # calling `City.objects.extent()` -- we can't do that call here
- # because `extent` is not implemented for MySQL/Oracle.
- return (-123.30, -41.32, 174.78, 48.46)
-
- def item_geometry(self, item):
- # Returning a simple tuple for the geometry.
- return item.point.x, item.point.y
-
-class TestGeoAtom1(TestGeoRSS1):
- feed_type = feeds.GeoAtom1Feed
-
-class TestGeoAtom2(TestGeoRSS2):
- feed_type = feeds.GeoAtom1Feed
-
- def geometry(self, obj):
- # This time we'll use a 2-tuple of coordinates for the box.
- return ((-123.30, -41.32), (174.78, 48.46))
-
-class TestW3CGeo1(TestGeoRSS1):
- feed_type = feeds.W3CGeoFeed
-
-# The following feeds are invalid, and will raise exceptions.
-class TestW3CGeo2(TestGeoRSS2):
- feed_type = feeds.W3CGeoFeed
-
-class TestW3CGeo3(TestGeoRSS1):
- feed_type = feeds.W3CGeoFeed
-
- def item_geometry(self, item):
- from django.contrib.gis.geos import Polygon
- return Polygon(((0, 0), (0, 1), (1, 1), (1, 0), (0, 0)))
-
-# The feed dictionary to use for URLs.
-feed_dict = {
- 'rss1' : TestGeoRSS1,
- 'rss2' : TestGeoRSS2,
- 'atom1' : TestGeoAtom1,
- 'atom2' : TestGeoAtom2,
- 'w3cgeo1' : TestW3CGeo1,
- 'w3cgeo2' : TestW3CGeo2,
- 'w3cgeo3' : TestW3CGeo3,
-}
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/fixtures/initial_data.json.gz b/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/fixtures/initial_data.json.gz
deleted file mode 100644
index c695082..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/fixtures/initial_data.json.gz
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/models.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/models.py
deleted file mode 100644
index fa83859..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/models.py
+++ /dev/null
@@ -1,56 +0,0 @@
-from django.contrib.gis.db import models
-from django.contrib.gis.tests.utils import mysql, spatialite
-from django.utils.encoding import python_2_unicode_compatible
-
-# MySQL spatial indices can't handle NULL geometries.
-null_flag = not mysql
-
-@python_2_unicode_compatible
-class Country(models.Model):
- name = models.CharField(max_length=30)
- mpoly = models.MultiPolygonField() # SRID, by default, is 4326
- objects = models.GeoManager()
- def __str__(self): return self.name
-
-@python_2_unicode_compatible
-class City(models.Model):
- name = models.CharField(max_length=30)
- point = models.PointField()
- objects = models.GeoManager()
- def __str__(self): return self.name
-
-# This is an inherited model from City
-class PennsylvaniaCity(City):
- county = models.CharField(max_length=30)
- founded = models.DateTimeField(null=True)
- objects = models.GeoManager() # TODO: This should be implicitly inherited.
-
-@python_2_unicode_compatible
-class State(models.Model):
- name = models.CharField(max_length=30)
- poly = models.PolygonField(null=null_flag) # Allowing NULL geometries here.
- objects = models.GeoManager()
- def __str__(self): return self.name
-
-@python_2_unicode_compatible
-class Track(models.Model):
- name = models.CharField(max_length=30)
- line = models.LineStringField()
- objects = models.GeoManager()
- def __str__(self): return self.name
-
-class Truth(models.Model):
- val = models.BooleanField(default=False)
- objects = models.GeoManager()
-
-if not spatialite:
- @python_2_unicode_compatible
- class Feature(models.Model):
- name = models.CharField(max_length=20)
- geom = models.GeometryField()
- objects = models.GeoManager()
- def __str__(self): return self.name
-
- class MinusOneSRID(models.Model):
- geom = models.PointField(srid=-1) # Minus one SRID.
- objects = models.GeoManager()
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/sitemaps.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/sitemaps.py
deleted file mode 100644
index 0e85fda..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/sitemaps.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from __future__ import absolute_import
-
-from django.contrib.gis.sitemaps import GeoRSSSitemap, KMLSitemap, KMZSitemap
-
-from .feeds import feed_dict
-from .models import City, Country
-
-
-sitemaps = {'kml' : KMLSitemap([City, Country]),
- 'kmz' : KMZSitemap([City, Country]),
- 'georss' : GeoRSSSitemap(feed_dict),
- }
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/test_feeds.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/test_feeds.py
deleted file mode 100644
index 778cadc..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/test_feeds.py
+++ /dev/null
@@ -1,96 +0,0 @@
-from __future__ import absolute_import
-
-from xml.dom import minidom
-
-from django.conf import settings
-from django.contrib.sites.models import Site
-from django.contrib.gis.geos import HAS_GEOS
-from django.contrib.gis.tests.utils import HAS_SPATIAL_DB
-from django.test import TestCase
-from django.utils.unittest import skipUnless
-
-if HAS_GEOS:
- from .models import City
-
-
-@skipUnless(HAS_GEOS and HAS_SPATIAL_DB, "Geos and spatial db are required.")
-class GeoFeedTest(TestCase):
-
- urls = 'django.contrib.gis.tests.geoapp.urls'
-
- def setUp(self):
- Site(id=settings.SITE_ID, domain="example.com", name="example.com").save()
- self.old_Site_meta_installed = Site._meta.installed
- Site._meta.installed = True
-
- def tearDown(self):
- Site._meta.installed = self.old_Site_meta_installed
-
- def assertChildNodes(self, elem, expected):
- "Taken from syndication/tests.py."
- actual = set([n.nodeName for n in elem.childNodes])
- expected = set(expected)
- self.assertEqual(actual, expected)
-
- def test_geofeed_rss(self):
- "Tests geographic feeds using GeoRSS over RSSv2."
- # Uses `GEOSGeometry` in `item_geometry`
- doc1 = minidom.parseString(self.client.get('/feeds/rss1/').content)
- # Uses a 2-tuple in `item_geometry`
- doc2 = minidom.parseString(self.client.get('/feeds/rss2/').content)
- feed1, feed2 = doc1.firstChild, doc2.firstChild
-
- # Making sure the box got added to the second GeoRSS feed.
- self.assertChildNodes(feed2.getElementsByTagName('channel')[0],
- ['title', 'link', 'description', 'language',
- 'lastBuildDate', 'item', 'georss:box', 'atom:link']
- )
-
- # Incrementing through the feeds.
- for feed in [feed1, feed2]:
- # Ensuring the georss namespace was added to the <rss> element.
- self.assertEqual(feed.getAttribute('xmlns:georss'), 'http://www.georss.org/georss')
- chan = feed.getElementsByTagName('channel')[0]
- items = chan.getElementsByTagName('item')
- self.assertEqual(len(items), City.objects.count())
-
- # Ensuring the georss element was added to each item in the feed.
- for item in items:
- self.assertChildNodes(item, ['title', 'link', 'description', 'guid', 'georss:point'])
-
- def test_geofeed_atom(self):
- "Testing geographic feeds using GeoRSS over Atom."
- doc1 = minidom.parseString(self.client.get('/feeds/atom1/').content)
- doc2 = minidom.parseString(self.client.get('/feeds/atom2/').content)
- feed1, feed2 = doc1.firstChild, doc2.firstChild
-
- # Making sure the box got added to the second GeoRSS feed.
- self.assertChildNodes(feed2, ['title', 'link', 'id', 'updated', 'entry', 'georss:box'])
-
- for feed in [feed1, feed2]:
- # Ensuring the georsss namespace was added to the <feed> element.
- self.assertEqual(feed.getAttribute('xmlns:georss'), 'http://www.georss.org/georss')
- entries = feed.getElementsByTagName('entry')
- self.assertEqual(len(entries), City.objects.count())
-
- # Ensuring the georss element was added to each entry in the feed.
- for entry in entries:
- self.assertChildNodes(entry, ['title', 'link', 'id', 'summary', 'georss:point'])
-
- def test_geofeed_w3c(self):
- "Testing geographic feeds using W3C Geo."
- doc = minidom.parseString(self.client.get('/feeds/w3cgeo1/').content)
- feed = doc.firstChild
- # Ensuring the geo namespace was added to the <feed> element.
- self.assertEqual(feed.getAttribute('xmlns:geo'), 'http://www.w3.org/2003/01/geo/wgs84_pos#')
- chan = feed.getElementsByTagName('channel')[0]
- items = chan.getElementsByTagName('item')
- self.assertEqual(len(items), City.objects.count())
-
- # Ensuring the geo:lat and geo:lon element was added to each item in the feed.
- for item in items:
- self.assertChildNodes(item, ['title', 'link', 'description', 'guid', 'geo:lat', 'geo:lon'])
-
- # Boxes and Polygons aren't allowed in W3C Geo feeds.
- self.assertRaises(ValueError, self.client.get, '/feeds/w3cgeo2/') # Box in <channel>
- self.assertRaises(ValueError, self.client.get, '/feeds/w3cgeo3/') # Polygons in <entry>
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/test_regress.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/test_regress.py
deleted file mode 100644
index 43dbcfd..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/test_regress.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# -*- encoding: utf-8 -*-
-from __future__ import absolute_import, unicode_literals
-
-from datetime import datetime
-
-from django.contrib.gis.geos import HAS_GEOS
-from django.contrib.gis.tests.utils import no_mysql, no_spatialite
-from django.contrib.gis.shortcuts import render_to_kmz
-from django.contrib.gis.tests.utils import HAS_SPATIAL_DB
-from django.db.models import Count, Min
-from django.test import TestCase
-from django.utils.unittest import skipUnless
-
-if HAS_GEOS:
- from .models import City, PennsylvaniaCity, State, Truth
-
-
-@skipUnless(HAS_GEOS and HAS_SPATIAL_DB, "Geos and spatial db are required.")
-class GeoRegressionTests(TestCase):
-
- def test_update(self):
- "Testing GeoQuerySet.update(). See #10411."
- pnt = City.objects.get(name='Pueblo').point
- bak = pnt.clone()
- pnt.y += 0.005
- pnt.x += 0.005
-
- City.objects.filter(name='Pueblo').update(point=pnt)
- self.assertEqual(pnt, City.objects.get(name='Pueblo').point)
- City.objects.filter(name='Pueblo').update(point=bak)
- self.assertEqual(bak, City.objects.get(name='Pueblo').point)
-
- def test_kmz(self):
- "Testing `render_to_kmz` with non-ASCII data. See #11624."
- name = "Åland Islands"
- places = [{'name' : name,
- 'description' : name,
- 'kml' : '<Point><coordinates>5.0,23.0</coordinates></Point>'
- }]
- kmz = render_to_kmz('gis/kml/placemarks.kml', {'places' : places})
-
- @no_spatialite
- @no_mysql
- def test_extent(self):
- "Testing `extent` on a table with a single point. See #11827."
- pnt = City.objects.get(name='Pueblo').point
- ref_ext = (pnt.x, pnt.y, pnt.x, pnt.y)
- extent = City.objects.filter(name='Pueblo').extent()
- for ref_val, val in zip(ref_ext, extent):
- self.assertAlmostEqual(ref_val, val, 4)
-
- def test_unicode_date(self):
- "Testing dates are converted properly, even on SpatiaLite. See #16408."
- founded = datetime(1857, 5, 23)
- mansfield = PennsylvaniaCity.objects.create(name='Mansfield', county='Tioga', point='POINT(-77.071445 41.823881)',
- founded=founded)
- self.assertEqual(founded, PennsylvaniaCity.objects.datetimes('founded', 'day')[0])
- self.assertEqual(founded, PennsylvaniaCity.objects.aggregate(Min('founded'))['founded__min'])
-
- def test_empty_count(self):
- "Testing that PostGISAdapter.__eq__ does check empty strings. See #13670."
- # contrived example, but need a geo lookup paired with an id__in lookup
- pueblo = City.objects.get(name='Pueblo')
- state = State.objects.filter(poly__contains=pueblo.point)
- cities_within_state = City.objects.filter(id__in=state)
-
- # .count() should not throw TypeError in __eq__
- self.assertEqual(cities_within_state.count(), 1)
-
- def test_defer_or_only_with_annotate(self):
- "Regression for #16409. Make sure defer() and only() work with annotate()"
- self.assertIsInstance(list(City.objects.annotate(Count('point')).defer('name')), list)
- self.assertIsInstance(list(City.objects.annotate(Count('point')).only('name')), list)
-
- def test_boolean_conversion(self):
- "Testing Boolean value conversion with the spatial backend, see #15169."
- t1 = Truth.objects.create(val=True)
- t2 = Truth.objects.create(val=False)
-
- val1 = Truth.objects.get(pk=t1.pk).val
- val2 = Truth.objects.get(pk=t2.pk).val
- # verify types -- should't be 0/1
- self.assertIsInstance(val1, bool)
- self.assertIsInstance(val2, bool)
- # verify values
- self.assertEqual(val1, True)
- self.assertEqual(val2, False)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/test_sitemaps.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/test_sitemaps.py
deleted file mode 100644
index 337b4b7..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/test_sitemaps.py
+++ /dev/null
@@ -1,104 +0,0 @@
-from __future__ import absolute_import
-
-from io import BytesIO
-from xml.dom import minidom
-import zipfile
-
-from django.conf import settings
-from django.contrib.gis.geos import HAS_GEOS
-from django.contrib.gis.tests.utils import HAS_SPATIAL_DB
-from django.contrib.sites.models import Site
-from django.test import TestCase
-from django.utils.unittest import skipUnless
-
-if HAS_GEOS:
- from .models import City, Country
-
-
-@skipUnless(HAS_GEOS and HAS_SPATIAL_DB, "Geos and spatial db are required.")
-class GeoSitemapTest(TestCase):
-
- urls = 'django.contrib.gis.tests.geoapp.urls'
-
- def setUp(self):
- Site(id=settings.SITE_ID, domain="example.com", name="example.com").save()
- self.old_Site_meta_installed = Site._meta.installed
- Site._meta.installed = True
-
- def tearDown(self):
- Site._meta.installed = self.old_Site_meta_installed
-
- def assertChildNodes(self, elem, expected):
- "Taken from syndication/tests.py."
- actual = set([n.nodeName for n in elem.childNodes])
- expected = set(expected)
- self.assertEqual(actual, expected)
-
- def test_geositemap_index(self):
- "Tests geographic sitemap index."
- # Getting the geo index.
- doc = minidom.parseString(self.client.get('/sitemap.xml').content)
- index = doc.firstChild
- self.assertEqual(index.getAttribute('xmlns'), 'http://www.sitemaps.org/schemas/sitemap/0.9')
- self.assertEqual(3, len(index.getElementsByTagName('sitemap')))
-
- def test_geositemap_kml(self):
- "Tests KML/KMZ geographic sitemaps."
- for kml_type in ('kml', 'kmz'):
- doc = minidom.parseString(self.client.get('/sitemaps/%s.xml' % kml_type).content)
-
- # Ensuring the right sitemaps namespaces are present.
- urlset = doc.firstChild
- self.assertEqual(urlset.getAttribute('xmlns'), 'http://www.sitemaps.org/schemas/sitemap/0.9')
- self.assertEqual(urlset.getAttribute('xmlns:geo'), 'http://www.google.com/geo/schemas/sitemap/1.0')
-
- urls = urlset.getElementsByTagName('url')
- self.assertEqual(2, len(urls)) # Should only be 2 sitemaps.
- for url in urls:
- self.assertChildNodes(url, ['loc', 'geo:geo'])
- # Making sure the 'geo:format' element was properly set.
- geo_elem = url.getElementsByTagName('geo:geo')[0]
- geo_format = geo_elem.getElementsByTagName('geo:format')[0]
- self.assertEqual(kml_type, geo_format.childNodes[0].data)
-
- # Getting the relative URL since we don't have a real site.
- kml_url = url.getElementsByTagName('loc')[0].childNodes[0].data.split('http://example.com')[1]
-
- if kml_type == 'kml':
- kml_doc = minidom.parseString(self.client.get(kml_url).content)
- elif kml_type == 'kmz':
- # Have to decompress KMZ before parsing.
- buf = BytesIO(self.client.get(kml_url).content)
- zf = zipfile.ZipFile(buf)
- self.assertEqual(1, len(zf.filelist))
- self.assertEqual('doc.kml', zf.filelist[0].filename)
- kml_doc = minidom.parseString(zf.read('doc.kml'))
-
- # Ensuring the correct number of placemarks are in the KML doc.
- if 'city' in kml_url:
- model = City
- elif 'country' in kml_url:
- model = Country
- self.assertEqual(model.objects.count(), len(kml_doc.getElementsByTagName('Placemark')))
-
- def test_geositemap_georss(self):
- "Tests GeoRSS geographic sitemaps."
- from .feeds import feed_dict
-
- doc = minidom.parseString(self.client.get('/sitemaps/georss.xml').content)
-
- # Ensuring the right sitemaps namespaces are present.
- urlset = doc.firstChild
- self.assertEqual(urlset.getAttribute('xmlns'), 'http://www.sitemaps.org/schemas/sitemap/0.9')
- self.assertEqual(urlset.getAttribute('xmlns:geo'), 'http://www.google.com/geo/schemas/sitemap/1.0')
-
- # Making sure the correct number of feed URLs were included.
- urls = urlset.getElementsByTagName('url')
- self.assertEqual(len(feed_dict), len(urls))
-
- for url in urls:
- self.assertChildNodes(url, ['loc', 'geo:geo'])
- # Making sure the 'geo:format' element was properly set to 'georss'.
- geo_elem = url.getElementsByTagName('geo:geo')[0]
- geo_format = geo_elem.getElementsByTagName('geo:format')[0]
- self.assertEqual('georss', geo_format.childNodes[0].data)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/tests.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/tests.py
deleted file mode 100644
index 617d92b..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/tests.py
+++ /dev/null
@@ -1,788 +0,0 @@
-from __future__ import absolute_import
-
-import re
-
-from django.db import connection
-from django.contrib.gis import gdal
-from django.contrib.gis.geos import HAS_GEOS
-from django.contrib.gis.tests.utils import (
- HAS_SPATIAL_DB, no_mysql, no_oracle, no_spatialite,
- mysql, oracle, postgis, spatialite)
-from django.test import TestCase
-from django.utils import six, unittest
-from django.utils.unittest import skipUnless
-
-if HAS_GEOS:
- from django.contrib.gis.geos import (fromstr, GEOSGeometry,
- Point, LineString, LinearRing, Polygon, GeometryCollection)
-
- from .models import Country, City, PennsylvaniaCity, State, Track
-
-if HAS_GEOS and not spatialite:
- from .models import Feature, MinusOneSRID
-
-
-def postgis_bug_version():
- spatial_version = getattr(connection.ops, "spatial_version", (0,0,0))
- return spatial_version and (2, 0, 0) <= spatial_version <= (2, 0, 1)
-
-
-@skipUnless(HAS_GEOS and HAS_SPATIAL_DB, "Geos and spatial db are required.")
-class GeoModelTest(TestCase):
-
- def test_fixtures(self):
- "Testing geographic model initialization from fixtures."
- # Ensuring that data was loaded from initial data fixtures.
- self.assertEqual(2, Country.objects.count())
- self.assertEqual(8, City.objects.count())
- self.assertEqual(2, State.objects.count())
-
- def test_proxy(self):
- "Testing Lazy-Geometry support (using the GeometryProxy)."
- ## Testing on a Point
- pnt = Point(0, 0)
- nullcity = City(name='NullCity', point=pnt)
- nullcity.save()
-
- # Making sure TypeError is thrown when trying to set with an
- # incompatible type.
- for bad in [5, 2.0, LineString((0, 0), (1, 1))]:
- try:
- nullcity.point = bad
- except TypeError:
- pass
- else:
- self.fail('Should throw a TypeError')
-
- # Now setting with a compatible GEOS Geometry, saving, and ensuring
- # the save took, notice no SRID is explicitly set.
- new = Point(5, 23)
- nullcity.point = new
-
- # Ensuring that the SRID is automatically set to that of the
- # field after assignment, but before saving.
- self.assertEqual(4326, nullcity.point.srid)
- nullcity.save()
-
- # Ensuring the point was saved correctly after saving
- self.assertEqual(new, City.objects.get(name='NullCity').point)
-
- # Setting the X and Y of the Point
- nullcity.point.x = 23
- nullcity.point.y = 5
- # Checking assignments pre & post-save.
- self.assertNotEqual(Point(23, 5), City.objects.get(name='NullCity').point)
- nullcity.save()
- self.assertEqual(Point(23, 5), City.objects.get(name='NullCity').point)
- nullcity.delete()
-
- ## Testing on a Polygon
- shell = LinearRing((0, 0), (0, 100), (100, 100), (100, 0), (0, 0))
- inner = LinearRing((40, 40), (40, 60), (60, 60), (60, 40), (40, 40))
-
- # Creating a State object using a built Polygon
- ply = Polygon(shell, inner)
- nullstate = State(name='NullState', poly=ply)
- self.assertEqual(4326, nullstate.poly.srid) # SRID auto-set from None
- nullstate.save()
-
- ns = State.objects.get(name='NullState')
- self.assertEqual(ply, ns.poly)
-
- # Testing the `ogr` and `srs` lazy-geometry properties.
- if gdal.HAS_GDAL:
- self.assertEqual(True, isinstance(ns.poly.ogr, gdal.OGRGeometry))
- self.assertEqual(ns.poly.wkb, ns.poly.ogr.wkb)
- self.assertEqual(True, isinstance(ns.poly.srs, gdal.SpatialReference))
- self.assertEqual('WGS 84', ns.poly.srs.name)
-
- # Changing the interior ring on the poly attribute.
- new_inner = LinearRing((30, 30), (30, 70), (70, 70), (70, 30), (30, 30))
- ns.poly[1] = new_inner
- ply[1] = new_inner
- self.assertEqual(4326, ns.poly.srid)
- ns.save()
- self.assertEqual(ply, State.objects.get(name='NullState').poly)
- ns.delete()
-
- @no_mysql
- def test_lookup_insert_transform(self):
- "Testing automatic transform for lookups and inserts."
- # San Antonio in 'WGS84' (SRID 4326)
- sa_4326 = 'POINT (-98.493183 29.424170)'
- wgs_pnt = fromstr(sa_4326, srid=4326) # Our reference point in WGS84
-
- # Oracle doesn't have SRID 3084, using 41157.
- if oracle:
- # San Antonio in 'Texas 4205, Southern Zone (1983, meters)' (SRID 41157)
- # Used the following Oracle SQL to get this value:
- # SELECT SDO_UTIL.TO_WKTGEOMETRY(SDO_CS.TRANSFORM(SDO_GEOMETRY('POINT (-98.493183 29.424170)', 4326), 41157)) FROM DUAL;
- nad_wkt = 'POINT (300662.034646583 5416427.45974934)'
- nad_srid = 41157
- else:
- # San Antonio in 'NAD83(HARN) / Texas Centric Lambert Conformal' (SRID 3084)
- nad_wkt = 'POINT (1645978.362408288754523 6276356.025927528738976)' # Used ogr.py in gdal 1.4.1 for this transform
- nad_srid = 3084
-
- # Constructing & querying with a point from a different SRID. Oracle
- # `SDO_OVERLAPBDYINTERSECT` operates differently from
- # `ST_Intersects`, so contains is used instead.
- nad_pnt = fromstr(nad_wkt, srid=nad_srid)
- if oracle:
- tx = Country.objects.get(mpoly__contains=nad_pnt)
- else:
- tx = Country.objects.get(mpoly__intersects=nad_pnt)
- self.assertEqual('Texas', tx.name)
-
- # Creating San Antonio. Remember the Alamo.
- sa = City.objects.create(name='San Antonio', point=nad_pnt)
-
- # Now verifying that San Antonio was transformed correctly
- sa = City.objects.get(name='San Antonio')
- self.assertAlmostEqual(wgs_pnt.x, sa.point.x, 6)
- self.assertAlmostEqual(wgs_pnt.y, sa.point.y, 6)
-
- # If the GeometryField SRID is -1, then we shouldn't perform any
- # transformation if the SRID of the input geometry is different.
- # SpatiaLite does not support missing SRID values.
- if not spatialite:
- m1 = MinusOneSRID(geom=Point(17, 23, srid=4326))
- m1.save()
- self.assertEqual(-1, m1.geom.srid)
-
- def test_createnull(self):
- "Testing creating a model instance and the geometry being None"
- c = City()
- self.assertEqual(c.point, None)
-
- @no_spatialite # SpatiaLite does not support abstract geometry columns
- def test_geometryfield(self):
- "Testing the general GeometryField."
- Feature(name='Point', geom=Point(1, 1)).save()
- Feature(name='LineString', geom=LineString((0, 0), (1, 1), (5, 5))).save()
- Feature(name='Polygon', geom=Polygon(LinearRing((0, 0), (0, 5), (5, 5), (5, 0), (0, 0)))).save()
- Feature(name='GeometryCollection',
- geom=GeometryCollection(Point(2, 2), LineString((0, 0), (2, 2)),
- Polygon(LinearRing((0, 0), (0, 5), (5, 5), (5, 0), (0, 0))))).save()
-
- f_1 = Feature.objects.get(name='Point')
- self.assertEqual(True, isinstance(f_1.geom, Point))
- self.assertEqual((1.0, 1.0), f_1.geom.tuple)
- f_2 = Feature.objects.get(name='LineString')
- self.assertEqual(True, isinstance(f_2.geom, LineString))
- self.assertEqual(((0.0, 0.0), (1.0, 1.0), (5.0, 5.0)), f_2.geom.tuple)
-
- f_3 = Feature.objects.get(name='Polygon')
- self.assertEqual(True, isinstance(f_3.geom, Polygon))
- f_4 = Feature.objects.get(name='GeometryCollection')
- self.assertEqual(True, isinstance(f_4.geom, GeometryCollection))
- self.assertEqual(f_3.geom, f_4.geom[2])
-
- @no_mysql
- def test_inherited_geofields(self):
- "Test GeoQuerySet methods on inherited Geometry fields."
- # Creating a Pennsylvanian city.
- mansfield = PennsylvaniaCity.objects.create(name='Mansfield', county='Tioga', point='POINT(-77.071445 41.823881)')
-
- # All transformation SQL will need to be performed on the
- # _parent_ table.
- qs = PennsylvaniaCity.objects.transform(32128)
-
- self.assertEqual(1, qs.count())
- for pc in qs: self.assertEqual(32128, pc.point.srid)
-
- def test_raw_sql_query(self):
- "Testing raw SQL query."
- cities1 = City.objects.all()
- # Only PostGIS would support a 'select *' query because of its recognized
- # HEXEWKB format for geometry fields
- as_text = 'ST_AsText' if postgis else 'asText'
- cities2 = City.objects.raw('select id, name, %s(point) from geoapp_city' % as_text)
- self.assertEqual(len(cities1), len(list(cities2)))
- self.assertTrue(isinstance(cities2[0].point, Point))
-
-
-@skipUnless(HAS_GEOS and HAS_SPATIAL_DB, "Geos and spatial db are required.")
-class GeoLookupTest(TestCase):
-
- @no_mysql
- def test_disjoint_lookup(self):
- "Testing the `disjoint` lookup type."
- ptown = City.objects.get(name='Pueblo')
- qs1 = City.objects.filter(point__disjoint=ptown.point)
- self.assertEqual(7, qs1.count())
-
- qs2 = State.objects.filter(poly__disjoint=ptown.point)
- self.assertEqual(1, qs2.count())
- self.assertEqual('Kansas', qs2[0].name)
-
- def test_contains_contained_lookups(self):
- "Testing the 'contained', 'contains', and 'bbcontains' lookup types."
- # Getting Texas, yes we were a country -- once ;)
- texas = Country.objects.get(name='Texas')
-
- # Seeing what cities are in Texas, should get Houston and Dallas,
- # and Oklahoma City because 'contained' only checks on the
- # _bounding box_ of the Geometries.
- if not oracle:
- qs = City.objects.filter(point__contained=texas.mpoly)
- self.assertEqual(3, qs.count())
- cities = ['Houston', 'Dallas', 'Oklahoma City']
- for c in qs: self.assertEqual(True, c.name in cities)
-
- # Pulling out some cities.
- houston = City.objects.get(name='Houston')
- wellington = City.objects.get(name='Wellington')
- pueblo = City.objects.get(name='Pueblo')
- okcity = City.objects.get(name='Oklahoma City')
- lawrence = City.objects.get(name='Lawrence')
-
- # Now testing contains on the countries using the points for
- # Houston and Wellington.
- tx = Country.objects.get(mpoly__contains=houston.point) # Query w/GEOSGeometry
- nz = Country.objects.get(mpoly__contains=wellington.point.hex) # Query w/EWKBHEX
- self.assertEqual('Texas', tx.name)
- self.assertEqual('New Zealand', nz.name)
-
- # Spatialite 2.3 thinks that Lawrence is in Puerto Rico (a NULL geometry).
- if not spatialite:
- ks = State.objects.get(poly__contains=lawrence.point)
- self.assertEqual('Kansas', ks.name)
-
- # Pueblo and Oklahoma City (even though OK City is within the bounding box of Texas)
- # are not contained in Texas or New Zealand.
- self.assertEqual(0, len(Country.objects.filter(mpoly__contains=pueblo.point))) # Query w/GEOSGeometry object
- self.assertEqual((mysql and 1) or 0,
- len(Country.objects.filter(mpoly__contains=okcity.point.wkt))) # Qeury w/WKT
-
- # OK City is contained w/in bounding box of Texas.
- if not oracle:
- qs = Country.objects.filter(mpoly__bbcontains=okcity.point)
- self.assertEqual(1, len(qs))
- self.assertEqual('Texas', qs[0].name)
-
- # Only PostGIS has `left` and `right` lookup types.
- @no_mysql
- @no_oracle
- @no_spatialite
- def test_left_right_lookups(self):
- "Testing the 'left' and 'right' lookup types."
- # Left: A << B => true if xmax(A) < xmin(B)
- # Right: A >> B => true if xmin(A) > xmax(B)
- # See: BOX2D_left() and BOX2D_right() in lwgeom_box2dfloat4.c in PostGIS source.
-
- # Getting the borders for Colorado & Kansas
- co_border = State.objects.get(name='Colorado').poly
- ks_border = State.objects.get(name='Kansas').poly
-
- # Note: Wellington has an 'X' value of 174, so it will not be considered
- # to the left of CO.
-
- # These cities should be strictly to the right of the CO border.
- cities = ['Houston', 'Dallas', 'Oklahoma City',
- 'Lawrence', 'Chicago', 'Wellington']
- qs = City.objects.filter(point__right=co_border)
- self.assertEqual(6, len(qs))
- for c in qs: self.assertEqual(True, c.name in cities)
-
- # These cities should be strictly to the right of the KS border.
- cities = ['Chicago', 'Wellington']
- qs = City.objects.filter(point__right=ks_border)
- self.assertEqual(2, len(qs))
- for c in qs: self.assertEqual(True, c.name in cities)
-
- # Note: Wellington has an 'X' value of 174, so it will not be considered
- # to the left of CO.
- vic = City.objects.get(point__left=co_border)
- self.assertEqual('Victoria', vic.name)
-
- cities = ['Pueblo', 'Victoria']
- qs = City.objects.filter(point__left=ks_border)
- self.assertEqual(2, len(qs))
- for c in qs: self.assertEqual(True, c.name in cities)
-
- # The left/right lookup tests are known failures on PostGIS 2.0/2.0.1
- # http://trac.osgeo.org/postgis/ticket/2035
- if postgis_bug_version():
- test_left_right_lookups = unittest.expectedFailure(test_left_right_lookups)
-
- def test_equals_lookups(self):
- "Testing the 'same_as' and 'equals' lookup types."
- pnt = fromstr('POINT (-95.363151 29.763374)', srid=4326)
- c1 = City.objects.get(point=pnt)
- c2 = City.objects.get(point__same_as=pnt)
- c3 = City.objects.get(point__equals=pnt)
- for c in [c1, c2, c3]: self.assertEqual('Houston', c.name)
-
- @no_mysql
- def test_null_geometries(self):
- "Testing NULL geometry support, and the `isnull` lookup type."
- # Creating a state with a NULL boundary.
- State.objects.create(name='Puerto Rico')
-
- # Querying for both NULL and Non-NULL values.
- nullqs = State.objects.filter(poly__isnull=True)
- validqs = State.objects.filter(poly__isnull=False)
-
- # Puerto Rico should be NULL (it's a commonwealth unincorporated territory)
- self.assertEqual(1, len(nullqs))
- self.assertEqual('Puerto Rico', nullqs[0].name)
-
- # The valid states should be Colorado & Kansas
- self.assertEqual(2, len(validqs))
- state_names = [s.name for s in validqs]
- self.assertEqual(True, 'Colorado' in state_names)
- self.assertEqual(True, 'Kansas' in state_names)
-
- # Saving another commonwealth w/a NULL geometry.
- nmi = State.objects.create(name='Northern Mariana Islands', poly=None)
- self.assertEqual(nmi.poly, None)
-
- # Assigning a geomery and saving -- then UPDATE back to NULL.
- nmi.poly = 'POLYGON((0 0,1 0,1 1,1 0,0 0))'
- nmi.save()
- State.objects.filter(name='Northern Mariana Islands').update(poly=None)
- self.assertEqual(None, State.objects.get(name='Northern Mariana Islands').poly)
-
- @no_mysql
- def test_relate_lookup(self):
- "Testing the 'relate' lookup type."
- # To make things more interesting, we will have our Texas reference point in
- # different SRIDs.
- pnt1 = fromstr('POINT (649287.0363174 4177429.4494686)', srid=2847)
- pnt2 = fromstr('POINT(-98.4919715741052 29.4333344025053)', srid=4326)
-
- # Not passing in a geometry as first param shoud
- # raise a type error when initializing the GeoQuerySet
- self.assertRaises(ValueError, Country.objects.filter, mpoly__relate=(23, 'foo'))
-
- # Making sure the right exception is raised for the given
- # bad arguments.
- for bad_args, e in [((pnt1, 0), ValueError), ((pnt2, 'T*T***FF*', 0), ValueError)]:
- qs = Country.objects.filter(mpoly__relate=bad_args)
- self.assertRaises(e, qs.count)
-
- # Relate works differently for the different backends.
- if postgis or spatialite:
- contains_mask = 'T*T***FF*'
- within_mask = 'T*F**F***'
- intersects_mask = 'T********'
- elif oracle:
- contains_mask = 'contains'
- within_mask = 'inside'
- # TODO: This is not quite the same as the PostGIS mask above
- intersects_mask = 'overlapbdyintersect'
-
- # Testing contains relation mask.
- self.assertEqual('Texas', Country.objects.get(mpoly__relate=(pnt1, contains_mask)).name)
- self.assertEqual('Texas', Country.objects.get(mpoly__relate=(pnt2, contains_mask)).name)
-
- # Testing within relation mask.
- ks = State.objects.get(name='Kansas')
- self.assertEqual('Lawrence', City.objects.get(point__relate=(ks.poly, within_mask)).name)
-
- # Testing intersection relation mask.
- if not oracle:
- self.assertEqual('Texas', Country.objects.get(mpoly__relate=(pnt1, intersects_mask)).name)
- self.assertEqual('Texas', Country.objects.get(mpoly__relate=(pnt2, intersects_mask)).name)
- self.assertEqual('Lawrence', City.objects.get(point__relate=(ks.poly, intersects_mask)).name)
-
-
-@skipUnless(HAS_GEOS and HAS_SPATIAL_DB, "Geos and spatial db are required.")
-class GeoQuerySetTest(TestCase):
- # Please keep the tests in GeoQuerySet method's alphabetic order
-
- @no_mysql
- def test_centroid(self):
- "Testing the `centroid` GeoQuerySet method."
- qs = State.objects.exclude(poly__isnull=True).centroid()
- if oracle:
- tol = 0.1
- elif spatialite:
- tol = 0.000001
- else:
- tol = 0.000000001
- for s in qs:
- self.assertEqual(True, s.poly.centroid.equals_exact(s.centroid, tol))
-
- @no_mysql
- def test_diff_intersection_union(self):
- "Testing the `difference`, `intersection`, `sym_difference`, and `union` GeoQuerySet methods."
- geom = Point(5, 23)
- tol = 1
- qs = Country.objects.all().difference(geom).sym_difference(geom).union(geom)
-
- # XXX For some reason SpatiaLite does something screwey with the Texas geometry here. Also,
- # XXX it doesn't like the null intersection.
- if spatialite:
- qs = qs.exclude(name='Texas')
- else:
- qs = qs.intersection(geom)
-
- for c in qs:
- if oracle:
- # Should be able to execute the queries; however, they won't be the same
- # as GEOS (because Oracle doesn't use GEOS internally like PostGIS or
- # SpatiaLite).
- pass
- else:
- self.assertEqual(c.mpoly.difference(geom), c.difference)
- if not spatialite:
- self.assertEqual(c.mpoly.intersection(geom), c.intersection)
- self.assertEqual(c.mpoly.sym_difference(geom), c.sym_difference)
- self.assertEqual(c.mpoly.union(geom), c.union)
-
- @no_mysql
- @no_spatialite # SpatiaLite does not have an Extent function
- def test_extent(self):
- "Testing the `extent` GeoQuerySet method."
- # Reference query:
- # `SELECT ST_extent(point) FROM geoapp_city WHERE (name='Houston' or name='Dallas');`
- # => BOX(-96.8016128540039 29.7633724212646,-95.3631439208984 32.7820587158203)
- expected = (-96.8016128540039, 29.7633724212646, -95.3631439208984, 32.782058715820)
-
- qs = City.objects.filter(name__in=('Houston', 'Dallas'))
- extent = qs.extent()
-
- for val, exp in zip(extent, expected):
- self.assertAlmostEqual(exp, val, 4)
-
- @no_mysql
- @no_oracle
- @no_spatialite
- def test_force_rhr(self):
- "Testing GeoQuerySet.force_rhr()."
- rings = ( ( (0, 0), (5, 0), (0, 5), (0, 0) ),
- ( (1, 1), (1, 3), (3, 1), (1, 1) ),
- )
- rhr_rings = ( ( (0, 0), (0, 5), (5, 0), (0, 0) ),
- ( (1, 1), (3, 1), (1, 3), (1, 1) ),
- )
- State.objects.create(name='Foo', poly=Polygon(*rings))
- s = State.objects.force_rhr().get(name='Foo')
- self.assertEqual(rhr_rings, s.force_rhr.coords)
-
- @no_mysql
- @no_oracle
- @no_spatialite
- def test_geohash(self):
- "Testing GeoQuerySet.geohash()."
- if not connection.ops.geohash: return
- # Reference query:
- # SELECT ST_GeoHash(point) FROM geoapp_city WHERE name='Houston';
- # SELECT ST_GeoHash(point, 5) FROM geoapp_city WHERE name='Houston';
- ref_hash = '9vk1mfq8jx0c8e0386z6'
- h1 = City.objects.geohash().get(name='Houston')
- h2 = City.objects.geohash(precision=5).get(name='Houston')
- self.assertEqual(ref_hash, h1.geohash)
- self.assertEqual(ref_hash[:5], h2.geohash)
-
- def test_geojson(self):
- "Testing GeoJSON output from the database using GeoQuerySet.geojson()."
- # Only PostGIS 1.3.4+ and SpatiaLite 3.0+ support GeoJSON.
- if not connection.ops.geojson:
- self.assertRaises(NotImplementedError, Country.objects.all().geojson, field_name='mpoly')
- return
-
- pueblo_json = '{"type":"Point","coordinates":[-104.609252,38.255001]}'
- houston_json = '{"type":"Point","crs":{"type":"name","properties":{"name":"EPSG:4326"}},"coordinates":[-95.363151,29.763374]}'
- victoria_json = '{"type":"Point","bbox":[-123.30519600,48.46261100,-123.30519600,48.46261100],"coordinates":[-123.305196,48.462611]}'
- chicago_json = '{"type":"Point","crs":{"type":"name","properties":{"name":"EPSG:4326"}},"bbox":[-87.65018,41.85039,-87.65018,41.85039],"coordinates":[-87.65018,41.85039]}'
- if postgis and connection.ops.spatial_version < (1, 4, 0):
- pueblo_json = '{"type":"Point","coordinates":[-104.60925200,38.25500100]}'
- houston_json = '{"type":"Point","crs":{"type":"EPSG","properties":{"EPSG":4326}},"coordinates":[-95.36315100,29.76337400]}'
- victoria_json = '{"type":"Point","bbox":[-123.30519600,48.46261100,-123.30519600,48.46261100],"coordinates":[-123.30519600,48.46261100]}'
- elif spatialite:
- victoria_json = '{"type":"Point","bbox":[-123.305196,48.462611,-123.305196,48.462611],"coordinates":[-123.305196,48.462611]}'
-
- # Precision argument should only be an integer
- self.assertRaises(TypeError, City.objects.geojson, precision='foo')
-
- # Reference queries and values.
- # SELECT ST_AsGeoJson("geoapp_city"."point", 8, 0) FROM "geoapp_city" WHERE "geoapp_city"."name" = 'Pueblo';
- self.assertEqual(pueblo_json, City.objects.geojson().get(name='Pueblo').geojson)
-
- # 1.3.x: SELECT ST_AsGeoJson("geoapp_city"."point", 8, 1) FROM "geoapp_city" WHERE "geoapp_city"."name" = 'Houston';
- # 1.4.x: SELECT ST_AsGeoJson("geoapp_city"."point", 8, 2) FROM "geoapp_city" WHERE "geoapp_city"."name" = 'Houston';
- # This time we want to include the CRS by using the `crs` keyword.
- self.assertEqual(houston_json, City.objects.geojson(crs=True, model_att='json').get(name='Houston').json)
-
- # 1.3.x: SELECT ST_AsGeoJson("geoapp_city"."point", 8, 2) FROM "geoapp_city" WHERE "geoapp_city"."name" = 'Victoria';
- # 1.4.x: SELECT ST_AsGeoJson("geoapp_city"."point", 8, 1) FROM "geoapp_city" WHERE "geoapp_city"."name" = 'Houston';
- # This time we include the bounding box by using the `bbox` keyword.
- self.assertEqual(victoria_json, City.objects.geojson(bbox=True).get(name='Victoria').geojson)
-
- # 1.(3|4).x: SELECT ST_AsGeoJson("geoapp_city"."point", 5, 3) FROM "geoapp_city" WHERE "geoapp_city"."name" = 'Chicago';
- # Finally, we set every available keyword.
- self.assertEqual(chicago_json, City.objects.geojson(bbox=True, crs=True, precision=5).get(name='Chicago').geojson)
-
- def test_gml(self):
- "Testing GML output from the database using GeoQuerySet.gml()."
- if mysql or (spatialite and not connection.ops.gml) :
- self.assertRaises(NotImplementedError, Country.objects.all().gml, field_name='mpoly')
- return
-
- # Should throw a TypeError when tyring to obtain GML from a
- # non-geometry field.
- qs = City.objects.all()
- self.assertRaises(TypeError, qs.gml, field_name='name')
- ptown1 = City.objects.gml(field_name='point', precision=9).get(name='Pueblo')
- ptown2 = City.objects.gml(precision=9).get(name='Pueblo')
-
- if oracle:
- # No precision parameter for Oracle :-/
- gml_regex = re.compile(r'^<gml:Point srsName="SDO:4326" xmlns:gml="http://www.opengis.net/gml"><gml:coordinates decimal="\." cs="," ts=" ">-104.60925\d+,38.25500\d+ </gml:coordinates></gml:Point>')
- elif spatialite and connection.ops.spatial_version < (3, 0, 0):
- # Spatialite before 3.0 has extra colon in SrsName
- gml_regex = re.compile(r'^<gml:Point SrsName="EPSG::4326"><gml:coordinates decimal="\." cs="," ts=" ">-104.609251\d+,38.255001</gml:coordinates></gml:Point>')
- else:
- gml_regex = re.compile(r'^<gml:Point srsName="EPSG:4326"><gml:coordinates>-104\.60925\d+,38\.255001</gml:coordinates></gml:Point>')
-
- for ptown in [ptown1, ptown2]:
- self.assertTrue(gml_regex.match(ptown.gml))
-
- # PostGIS < 1.5 doesn't include dimension im GMLv3 output.
- if postgis and connection.ops.spatial_version >= (1, 5, 0):
- self.assertIn('<gml:pos srsDimension="2">',
- City.objects.gml(version=3).get(name='Pueblo').gml)
-
- def test_kml(self):
- "Testing KML output from the database using GeoQuerySet.kml()."
- # Only PostGIS and Spatialite (>=2.4.0-RC4) support KML serialization
- if not (postgis or (spatialite and connection.ops.kml)):
- self.assertRaises(NotImplementedError, State.objects.all().kml, field_name='poly')
- return
-
- # Should throw a TypeError when trying to obtain KML from a
- # non-geometry field.
- qs = City.objects.all()
- self.assertRaises(TypeError, qs.kml, 'name')
-
- # The reference KML depends on the version of PostGIS used
- # (the output stopped including altitude in 1.3.3).
- if connection.ops.spatial_version >= (1, 3, 3):
- ref_kml = '<Point><coordinates>-104.609252,38.255001</coordinates></Point>'
- else:
- ref_kml = '<Point><coordinates>-104.609252,38.255001,0</coordinates></Point>'
-
- # Ensuring the KML is as expected.
- ptown1 = City.objects.kml(field_name='point', precision=9).get(name='Pueblo')
- ptown2 = City.objects.kml(precision=9).get(name='Pueblo')
- for ptown in [ptown1, ptown2]:
- self.assertEqual(ref_kml, ptown.kml)
-
- # Only PostGIS has support for the MakeLine aggregate.
- @no_mysql
- @no_oracle
- @no_spatialite
- def test_make_line(self):
- "Testing the `make_line` GeoQuerySet method."
- # Ensuring that a `TypeError` is raised on models without PointFields.
- self.assertRaises(TypeError, State.objects.make_line)
- self.assertRaises(TypeError, Country.objects.make_line)
- # Reference query:
- # SELECT AsText(ST_MakeLine(geoapp_city.point)) FROM geoapp_city;
- ref_line = GEOSGeometry('LINESTRING(-95.363151 29.763374,-96.801611 32.782057,-97.521157 34.464642,174.783117 -41.315268,-104.609252 38.255001,-95.23506 38.971823,-87.650175 41.850385,-123.305196 48.462611)', srid=4326)
- self.assertEqual(ref_line, City.objects.make_line())
-
- @no_mysql
- def test_num_geom(self):
- "Testing the `num_geom` GeoQuerySet method."
- # Both 'countries' only have two geometries.
- for c in Country.objects.num_geom():
- self.assertEqual(2, c.num_geom)
-
- for c in City.objects.filter(point__isnull=False).num_geom():
- # Oracle and PostGIS 2.0+ will return 1 for the number of
- # geometries on non-collections, whereas PostGIS < 2.0.0
- # will return None.
- if postgis and connection.ops.spatial_version < (2, 0, 0):
- self.assertIsNone(c.num_geom)
- else:
- self.assertEqual(1, c.num_geom)
-
- @no_mysql
- @no_spatialite # SpatiaLite can only count vertices in LineStrings
- def test_num_points(self):
- "Testing the `num_points` GeoQuerySet method."
- for c in Country.objects.num_points():
- self.assertEqual(c.mpoly.num_points, c.num_points)
-
- if not oracle:
- # Oracle cannot count vertices in Point geometries.
- for c in City.objects.num_points(): self.assertEqual(1, c.num_points)
-
- @no_mysql
- def test_point_on_surface(self):
- "Testing the `point_on_surface` GeoQuerySet method."
- # Reference values.
- if oracle:
- # SELECT SDO_UTIL.TO_WKTGEOMETRY(SDO_GEOM.SDO_POINTONSURFACE(GEOAPP_COUNTRY.MPOLY, 0.05)) FROM GEOAPP_COUNTRY;
- ref = {'New Zealand' : fromstr('POINT (174.616364 -36.100861)', srid=4326),
- 'Texas' : fromstr('POINT (-103.002434 36.500397)', srid=4326),
- }
-
- elif postgis or spatialite:
- # Using GEOSGeometry to compute the reference point on surface values
- # -- since PostGIS also uses GEOS these should be the same.
- ref = {'New Zealand' : Country.objects.get(name='New Zealand').mpoly.point_on_surface,
- 'Texas' : Country.objects.get(name='Texas').mpoly.point_on_surface
- }
-
- for c in Country.objects.point_on_surface():
- if spatialite:
- # XXX This seems to be a WKT-translation-related precision issue?
- tol = 0.00001
- else:
- tol = 0.000000001
- self.assertEqual(True, ref[c.name].equals_exact(c.point_on_surface, tol))
-
- @no_mysql
- @no_spatialite
- def test_reverse_geom(self):
- "Testing GeoQuerySet.reverse_geom()."
- coords = [ (-95.363151, 29.763374), (-95.448601, 29.713803) ]
- Track.objects.create(name='Foo', line=LineString(coords))
- t = Track.objects.reverse_geom().get(name='Foo')
- coords.reverse()
- self.assertEqual(tuple(coords), t.reverse_geom.coords)
- if oracle:
- self.assertRaises(TypeError, State.objects.reverse_geom)
-
- @no_mysql
- @no_oracle
- def test_scale(self):
- "Testing the `scale` GeoQuerySet method."
- xfac, yfac = 2, 3
- tol = 5 # XXX The low precision tolerance is for SpatiaLite
- qs = Country.objects.scale(xfac, yfac, model_att='scaled')
- for c in qs:
- for p1, p2 in zip(c.mpoly, c.scaled):
- for r1, r2 in zip(p1, p2):
- for c1, c2 in zip(r1.coords, r2.coords):
- self.assertAlmostEqual(c1[0] * xfac, c2[0], tol)
- self.assertAlmostEqual(c1[1] * yfac, c2[1], tol)
-
- @no_mysql
- @no_oracle
- @no_spatialite
- def test_snap_to_grid(self):
- "Testing GeoQuerySet.snap_to_grid()."
- # Let's try and break snap_to_grid() with bad combinations of arguments.
- for bad_args in ((), range(3), range(5)):
- self.assertRaises(ValueError, Country.objects.snap_to_grid, *bad_args)
- for bad_args in (('1.0',), (1.0, None), tuple(map(six.text_type, range(4)))):
- self.assertRaises(TypeError, Country.objects.snap_to_grid, *bad_args)
-
- # Boundary for San Marino, courtesy of Bjorn Sandvik of thematicmapping.org
- # from the world borders dataset he provides.
- wkt = ('MULTIPOLYGON(((12.41580 43.95795,12.45055 43.97972,12.45389 43.98167,'
- '12.46250 43.98472,12.47167 43.98694,12.49278 43.98917,'
- '12.50555 43.98861,12.51000 43.98694,12.51028 43.98277,'
- '12.51167 43.94333,12.51056 43.93916,12.49639 43.92333,'
- '12.49500 43.91472,12.48778 43.90583,12.47444 43.89722,'
- '12.46472 43.89555,12.45917 43.89611,12.41639 43.90472,'
- '12.41222 43.90610,12.40782 43.91366,12.40389 43.92667,'
- '12.40500 43.94833,12.40889 43.95499,12.41580 43.95795)))')
- sm = Country.objects.create(name='San Marino', mpoly=fromstr(wkt))
-
- # Because floating-point arithmetic isn't exact, we set a tolerance
- # to pass into GEOS `equals_exact`.
- tol = 0.000000001
-
- # SELECT AsText(ST_SnapToGrid("geoapp_country"."mpoly", 0.1)) FROM "geoapp_country" WHERE "geoapp_country"."name" = 'San Marino';
- ref = fromstr('MULTIPOLYGON(((12.4 44,12.5 44,12.5 43.9,12.4 43.9,12.4 44)))')
- self.assertTrue(ref.equals_exact(Country.objects.snap_to_grid(0.1).get(name='San Marino').snap_to_grid, tol))
-
- # SELECT AsText(ST_SnapToGrid("geoapp_country"."mpoly", 0.05, 0.23)) FROM "geoapp_country" WHERE "geoapp_country"."name" = 'San Marino';
- ref = fromstr('MULTIPOLYGON(((12.4 43.93,12.45 43.93,12.5 43.93,12.45 43.93,12.4 43.93)))')
- self.assertTrue(ref.equals_exact(Country.objects.snap_to_grid(0.05, 0.23).get(name='San Marino').snap_to_grid, tol))
-
- # SELECT AsText(ST_SnapToGrid("geoapp_country"."mpoly", 0.5, 0.17, 0.05, 0.23)) FROM "geoapp_country" WHERE "geoapp_country"."name" = 'San Marino';
- ref = fromstr('MULTIPOLYGON(((12.4 43.87,12.45 43.87,12.45 44.1,12.5 44.1,12.5 43.87,12.45 43.87,12.4 43.87)))')
- self.assertTrue(ref.equals_exact(Country.objects.snap_to_grid(0.05, 0.23, 0.5, 0.17).get(name='San Marino').snap_to_grid, tol))
-
- def test_svg(self):
- "Testing SVG output using GeoQuerySet.svg()."
- if mysql or oracle:
- self.assertRaises(NotImplementedError, City.objects.svg)
- return
-
- self.assertRaises(TypeError, City.objects.svg, precision='foo')
- # SELECT AsSVG(geoapp_city.point, 0, 8) FROM geoapp_city WHERE name = 'Pueblo';
- svg1 = 'cx="-104.609252" cy="-38.255001"'
- # Even though relative, only one point so it's practically the same except for
- # the 'c' letter prefix on the x,y values.
- svg2 = svg1.replace('c', '')
- self.assertEqual(svg1, City.objects.svg().get(name='Pueblo').svg)
- self.assertEqual(svg2, City.objects.svg(relative=5).get(name='Pueblo').svg)
-
- @no_mysql
- def test_transform(self):
- "Testing the transform() GeoQuerySet method."
- # Pre-transformed points for Houston and Pueblo.
- htown = fromstr('POINT(1947516.83115183 6322297.06040572)', srid=3084)
- ptown = fromstr('POINT(992363.390841912 481455.395105533)', srid=2774)
- prec = 3 # Precision is low due to version variations in PROJ and GDAL.
-
- # Asserting the result of the transform operation with the values in
- # the pre-transformed points. Oracle does not have the 3084 SRID.
- if not oracle:
- h = City.objects.transform(htown.srid).get(name='Houston')
- self.assertEqual(3084, h.point.srid)
- self.assertAlmostEqual(htown.x, h.point.x, prec)
- self.assertAlmostEqual(htown.y, h.point.y, prec)
-
- p1 = City.objects.transform(ptown.srid, field_name='point').get(name='Pueblo')
- p2 = City.objects.transform(srid=ptown.srid).get(name='Pueblo')
- for p in [p1, p2]:
- self.assertEqual(2774, p.point.srid)
- self.assertAlmostEqual(ptown.x, p.point.x, prec)
- self.assertAlmostEqual(ptown.y, p.point.y, prec)
-
- @no_mysql
- @no_oracle
- def test_translate(self):
- "Testing the `translate` GeoQuerySet method."
- xfac, yfac = 5, -23
- qs = Country.objects.translate(xfac, yfac, model_att='translated')
- for c in qs:
- for p1, p2 in zip(c.mpoly, c.translated):
- for r1, r2 in zip(p1, p2):
- for c1, c2 in zip(r1.coords, r2.coords):
- # XXX The low precision is for SpatiaLite
- self.assertAlmostEqual(c1[0] + xfac, c2[0], 5)
- self.assertAlmostEqual(c1[1] + yfac, c2[1], 5)
-
- @no_mysql
- def test_unionagg(self):
- "Testing the `unionagg` (aggregate union) GeoQuerySet method."
- tx = Country.objects.get(name='Texas').mpoly
- # Houston, Dallas -- Oracle has different order.
- union1 = fromstr('MULTIPOINT(-96.801611 32.782057,-95.363151 29.763374)')
- union2 = fromstr('MULTIPOINT(-96.801611 32.782057,-95.363151 29.763374)')
- qs = City.objects.filter(point__within=tx)
- self.assertRaises(TypeError, qs.unionagg, 'name')
- # Using `field_name` keyword argument in one query and specifying an
- # order in the other (which should not be used because this is
- # an aggregate method on a spatial column)
- u1 = qs.unionagg(field_name='point')
- u2 = qs.order_by('name').unionagg()
- tol = 0.00001
- if oracle:
- union = union2
- else:
- union = union1
- self.assertEqual(True, union.equals_exact(u1, tol))
- self.assertEqual(True, union.equals_exact(u2, tol))
- qs = City.objects.filter(name='NotACity')
- self.assertEqual(None, qs.unionagg(field_name='point'))
-
- def test_non_concrete_field(self):
- pkfield = City._meta.get_field_by_name('id')[0]
- orig_pkfield_col = pkfield.column
- pkfield.column = None
- try:
- list(City.objects.all())
- finally:
- pkfield.column = orig_pkfield_col
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/urls.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/urls.py
deleted file mode 100644
index 55a5fa3..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geoapp/urls.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from __future__ import absolute_import
-
-from django.conf.urls import patterns
-
-from .feeds import feed_dict
-from .sitemaps import sitemaps
-
-
-urlpatterns = patterns('',
- (r'^feeds/(?P<url>.*)/$', 'django.contrib.gis.views.feed', {'feed_dict': feed_dict}),
-)
-
-urlpatterns += patterns('django.contrib.gis.sitemaps.views',
- (r'^sitemap.xml$', 'index', {'sitemaps' : sitemaps}),
- (r'^sitemaps/(?P<section>\w+)\.xml$', 'sitemap', {'sitemaps' : sitemaps}),
- (r'^sitemaps/kml/(?P<label>\w+)/(?P<model>\w+)/(?P<field_name>\w+)\.kml$', 'kml'),
- (r'^sitemaps/kml/(?P<label>\w+)/(?P<model>\w+)/(?P<field_name>\w+)\.kmz$', 'kmz'),
-)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geogapp/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geogapp/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geogapp/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geogapp/fixtures/initial_data.json b/lib/python2.7/site-packages/django/contrib/gis/tests/geogapp/fixtures/initial_data.json
deleted file mode 100644
index 0664411..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geogapp/fixtures/initial_data.json
+++ /dev/null
@@ -1,98 +0,0 @@
-[
- {
- "pk": 1,
- "model": "geogapp.city",
- "fields": {
- "name": "Houston",
- "point": "POINT (-95.363151 29.763374)"
- }
- },
- {
- "pk": 2,
- "model": "geogapp.city",
- "fields": {
- "name": "Dallas",
- "point": "POINT (-96.801611 32.782057)"
- }
- },
- {
- "pk": 3,
- "model": "geogapp.city",
- "fields": {
- "name": "Oklahoma City",
- "point": "POINT (-97.521157 34.464642)"
- }
- },
- {
- "pk": 4,
- "model": "geogapp.city",
- "fields": {
- "name": "Wellington",
- "point": "POINT (174.783117 -41.315268)"
- }
- },
- {
- "pk": 5,
- "model": "geogapp.city",
- "fields": {
- "name": "Pueblo",
- "point": "POINT (-104.609252 38.255001)"
- }
- },
- {
- "pk": 6,
- "model": "geogapp.city",
- "fields": {
- "name": "Lawrence",
- "point": "POINT (-95.235060 38.971823)"
- }
- },
- {
- "pk": 7,
- "model": "geogapp.city",
- "fields": {
- "name": "Chicago",
- "point": "POINT (-87.650175 41.850385)"
- }
- },
- {
- "pk": 8,
- "model": "geogapp.city",
- "fields": {
- "name": "Victoria",
- "point": "POINT (-123.305196 48.462611)"
- }
- },
- {
- "pk": 1,
- "model": "geogapp.zipcode",
- "fields" : {
- "code" : "77002",
- "poly" : "SRID=4269;POLYGON ((-95.365015 29.772327, -95.362415 29.772327, -95.360915 29.771827, -95.354615 29.771827, -95.351515 29.772527, -95.350915 29.765327, -95.351015 29.762436, -95.350115 29.760328, -95.347515 29.758528, -95.352315 29.753928, -95.356415 29.756328, -95.358215 29.754028, -95.360215 29.756328, -95.363415 29.757128, -95.364014 29.75638, -95.363415 29.753928, -95.360015 29.751828, -95.361815 29.749528, -95.362715 29.750028, -95.367516 29.744128, -95.369316 29.745128, -95.373916 29.744128, -95.380116 29.738028, -95.387916 29.727929, -95.388516 29.729629, -95.387916 29.732129, -95.382916 29.737428, -95.376616 29.742228, -95.372616 29.747228, -95.378601 29.750846, -95.378616 29.752028, -95.378616 29.754428, -95.376016 29.754528, -95.374616 29.759828, -95.373616 29.761128, -95.371916 29.763928, -95.372316 29.768727, -95.365884 29.76791, -95.366015 29.767127, -95.358715 29.765327, -95.358615 29.766327, -95.359115 29.767227, -95.360215 29.767027, -95.362783 29.768267, -95.365315 29.770527, -95.365015 29.772327))"
- }
- },
- {
- "pk": 2,
- "model": "geogapp.zipcode",
- "fields" : {
- "code" : "77005",
- "poly" : "SRID=4269;POLYGON ((-95.447918 29.727275, -95.428017 29.728729, -95.421117 29.729029, -95.418617 29.727629, -95.418517 29.726429, -95.402117 29.726629, -95.402117 29.725729, -95.395316 29.725729, -95.391916 29.726229, -95.389716 29.725829, -95.396517 29.715429, -95.397517 29.715929, -95.400917 29.711429, -95.411417 29.715029, -95.418417 29.714729, -95.418317 29.70623, -95.440818 29.70593, -95.445018 29.70683, -95.446618 29.70763, -95.447418 29.71003, -95.447918 29.727275))"
- }
- },
- {
- "pk": 3,
- "model": "geogapp.zipcode",
- "fields" : {
- "code" : "77025",
- "poly" : "SRID=4269;POLYGON ((-95.418317 29.70623, -95.414717 29.706129, -95.414617 29.70533, -95.418217 29.70533, -95.419817 29.69533, -95.419484 29.694196, -95.417166 29.690901, -95.414517 29.69433, -95.413317 29.69263, -95.412617 29.68973, -95.412817 29.68753, -95.414087 29.685055, -95.419165 29.685428, -95.421617 29.68513, -95.425717 29.67983, -95.425017 29.67923, -95.424517 29.67763, -95.427418 29.67763, -95.438018 29.664631, -95.436713 29.664411, -95.440118 29.662231, -95.439218 29.661031, -95.437718 29.660131, -95.435718 29.659731, -95.431818 29.660331, -95.441418 29.656631, -95.441318 29.656331, -95.441818 29.656131, -95.441718 29.659031, -95.441118 29.661031, -95.446718 29.656431, -95.446518 29.673431, -95.446918 29.69013, -95.447418 29.71003, -95.446618 29.70763, -95.445018 29.70683, -95.440818 29.70593, -95.418317 29.70623))"
- }
- },
- {
- "pk": 4,
- "model": "geogapp.zipcode",
- "fields" : {
- "code" : "77401",
- "poly" : "SRID=4269;POLYGON ((-95.447918 29.727275, -95.447418 29.71003, -95.446918 29.69013, -95.454318 29.68893, -95.475819 29.68903, -95.475819 29.69113, -95.484419 29.69103, -95.484519 29.69903, -95.480419 29.70133, -95.480419 29.69833, -95.474119 29.69833, -95.474119 29.70453, -95.472719 29.71283, -95.468019 29.71293, -95.468219 29.720229, -95.464018 29.720229, -95.464118 29.724529, -95.463018 29.725929, -95.459818 29.726129, -95.459918 29.720329, -95.451418 29.720429, -95.451775 29.726303, -95.451318 29.727029, -95.447918 29.727275))"
- }
- }
-] \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geogapp/models.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geogapp/models.py
deleted file mode 100644
index 7e802f9..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geogapp/models.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from django.contrib.gis.db import models
-from django.utils.encoding import python_2_unicode_compatible
-
-@python_2_unicode_compatible
-class City(models.Model):
- name = models.CharField(max_length=30)
- point = models.PointField(geography=True)
- objects = models.GeoManager()
- def __str__(self): return self.name
-
-@python_2_unicode_compatible
-class Zipcode(models.Model):
- code = models.CharField(max_length=10)
- poly = models.PolygonField(geography=True)
- objects = models.GeoManager()
- def __str__(self): return self.code
-
-@python_2_unicode_compatible
-class County(models.Model):
- name = models.CharField(max_length=25)
- state = models.CharField(max_length=20)
- mpoly = models.MultiPolygonField(geography=True)
- objects = models.GeoManager()
- def __str__(self): return ' County, '.join([self.name, self.state])
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/geogapp/tests.py b/lib/python2.7/site-packages/django/contrib/gis/tests/geogapp/tests.py
deleted file mode 100644
index ed54999..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/geogapp/tests.py
+++ /dev/null
@@ -1,97 +0,0 @@
-"""
-Tests for geography support in PostGIS 1.5+
-"""
-from __future__ import absolute_import
-
-import os
-
-from django.contrib.gis.gdal import HAS_GDAL
-from django.contrib.gis.geos import HAS_GEOS
-from django.contrib.gis.measure import D
-from django.contrib.gis.tests.utils import postgis
-from django.test import TestCase
-from django.utils._os import upath
-from django.utils.unittest import skipUnless
-
-if HAS_GEOS:
- from .models import City, County, Zipcode
-
-
-@skipUnless(HAS_GEOS and postgis, "Geos and postgis are required.")
-class GeographyTest(TestCase):
-
- def test01_fixture_load(self):
- "Ensure geography features loaded properly."
- self.assertEqual(8, City.objects.count())
-
- def test02_distance_lookup(self):
- "Testing GeoQuerySet distance lookup support on non-point geography fields."
- z = Zipcode.objects.get(code='77002')
- cities1 = list(City.objects
- .filter(point__distance_lte=(z.poly, D(mi=500)))
- .order_by('name')
- .values_list('name', flat=True))
- cities2 = list(City.objects
- .filter(point__dwithin=(z.poly, D(mi=500)))
- .order_by('name')
- .values_list('name', flat=True))
- for cities in [cities1, cities2]:
- self.assertEqual(['Dallas', 'Houston', 'Oklahoma City'], cities)
-
- def test03_distance_method(self):
- "Testing GeoQuerySet.distance() support on non-point geography fields."
- # `GeoQuerySet.distance` is not allowed geometry fields.
- htown = City.objects.get(name='Houston')
- qs = Zipcode.objects.distance(htown.point)
-
- def test04_invalid_operators_functions(self):
- "Ensuring exceptions are raised for operators & functions invalid on geography fields."
- # Only a subset of the geometry functions & operator are available
- # to PostGIS geography types. For more information, visit:
- # http://postgis.refractions.net/documentation/manual-1.5/ch08.html#PostGIS_GeographyFunctions
- z = Zipcode.objects.get(code='77002')
- # ST_Within not available.
- self.assertRaises(ValueError, City.objects.filter(point__within=z.poly).count)
- # `@` operator not available.
- self.assertRaises(ValueError, City.objects.filter(point__contained=z.poly).count)
-
- # Regression test for #14060, `~=` was never really implemented for PostGIS.
- htown = City.objects.get(name='Houston')
- self.assertRaises(ValueError, City.objects.get, point__exact=htown.point)
-
- @skipUnless(HAS_GDAL, "GDAL is required.")
- def test05_geography_layermapping(self):
- "Testing LayerMapping support on models with geography fields."
- # There is a similar test in `layermap` that uses the same data set,
- # but the County model here is a bit different.
- from django.contrib.gis.utils import LayerMapping
-
- # Getting the shapefile and mapping dictionary.
- shp_path = os.path.realpath(os.path.join(os.path.dirname(upath(__file__)), '..', 'data'))
- co_shp = os.path.join(shp_path, 'counties', 'counties.shp')
- co_mapping = {'name' : 'Name',
- 'state' : 'State',
- 'mpoly' : 'MULTIPOLYGON',
- }
-
- # Reference county names, number of polygons, and state names.
- names = ['Bexar', 'Galveston', 'Harris', 'Honolulu', 'Pueblo']
- num_polys = [1, 2, 1, 19, 1] # Number of polygons for each.
- st_names = ['Texas', 'Texas', 'Texas', 'Hawaii', 'Colorado']
-
- lm = LayerMapping(County, co_shp, co_mapping, source_srs=4269, unique='name')
- lm.save(silent=True, strict=True)
-
- for c, name, num_poly, state in zip(County.objects.order_by('name'), names, num_polys, st_names):
- self.assertEqual(4326, c.mpoly.srid)
- self.assertEqual(num_poly, len(c.mpoly))
- self.assertEqual(name, c.name)
- self.assertEqual(state, c.state)
-
- def test06_geography_area(self):
- "Testing that Area calculations work on geography columns."
- # SELECT ST_Area(poly) FROM geogapp_zipcode WHERE code='77002';
- ref_area = 5439084.70637573
- tol = 5
- z = Zipcode.objects.area().get(code='77002')
- self.assertAlmostEqual(z.area.sq_m, ref_area, tol)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/inspectapp/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/tests/inspectapp/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/inspectapp/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/inspectapp/models.py b/lib/python2.7/site-packages/django/contrib/gis/tests/inspectapp/models.py
deleted file mode 100644
index 0f1b0d4..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/inspectapp/models.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from django.contrib.gis.db import models
-
-class AllOGRFields(models.Model):
- f_decimal = models.FloatField()
- f_float = models.FloatField()
- f_int = models.IntegerField()
- f_char = models.CharField(max_length=10)
- f_date = models.DateField()
- f_datetime = models.DateTimeField()
- f_time = models.TimeField()
- geom = models.PolygonField()
-
- objects = models.GeoManager()
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/inspectapp/tests.py b/lib/python2.7/site-packages/django/contrib/gis/tests/inspectapp/tests.py
deleted file mode 100644
index 668b87b..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/inspectapp/tests.py
+++ /dev/null
@@ -1,143 +0,0 @@
-from __future__ import absolute_import
-
-import os
-
-from django.db import connections
-from django.test import TestCase
-from django.contrib.gis.gdal import HAS_GDAL
-from django.contrib.gis.geometry.test_data import TEST_DATA
-from django.contrib.gis.tests.utils import HAS_SPATIAL_DB
-from django.utils.unittest import skipUnless
-
-if HAS_GDAL:
- from django.contrib.gis.gdal import Driver
- from django.contrib.gis.utils.ogrinspect import ogrinspect
-
- from .models import AllOGRFields
-
-
-@skipUnless(HAS_GDAL and HAS_SPATIAL_DB, "GDAL and spatial db are required.")
-class OGRInspectTest(TestCase):
- maxDiff = 1024
-
- def test_poly(self):
- shp_file = os.path.join(TEST_DATA, 'test_poly', 'test_poly.shp')
- model_def = ogrinspect(shp_file, 'MyModel')
-
- expected = [
- '# This is an auto-generated Django model module created by ogrinspect.',
- 'from django.contrib.gis.db import models',
- '',
- 'class MyModel(models.Model):',
- ' float = models.FloatField()',
- ' int = models.FloatField()',
- ' str = models.CharField(max_length=80)',
- ' geom = models.PolygonField(srid=-1)',
- ' objects = models.GeoManager()',
- ]
-
- self.assertEqual(model_def, '\n'.join(expected))
-
- def test_date_field(self):
- shp_file = os.path.join(TEST_DATA, 'cities', 'cities.shp')
- model_def = ogrinspect(shp_file, 'City')
-
- expected = [
- '# This is an auto-generated Django model module created by ogrinspect.',
- 'from django.contrib.gis.db import models',
- '',
- 'class City(models.Model):',
- ' name = models.CharField(max_length=80)',
- ' population = models.FloatField()',
- ' density = models.FloatField()',
- ' created = models.DateField()',
- ' geom = models.PointField(srid=-1)',
- ' objects = models.GeoManager()',
- ]
-
- self.assertEqual(model_def, '\n'.join(expected))
-
- def test_time_field(self):
- # Only possible to test this on PostGIS at the momemnt. MySQL
- # complains about permissions, and SpatiaLite/Oracle are
- # insanely difficult to get support compiled in for in GDAL.
- if not connections['default'].ops.postgis:
- self.skipTest("This database does not support 'ogrinspect'ion")
-
- # Getting the database identifier used by OGR, if None returned
- # GDAL does not have the support compiled in.
- ogr_db = get_ogr_db_string()
- if not ogr_db:
- self.skipTest("Your GDAL installation does not support PostGIS databases")
-
- # Writing shapefiles via GDAL currently does not support writing OGRTime
- # fields, so we need to actually use a database
- model_def = ogrinspect(ogr_db, 'Measurement',
- layer_key=AllOGRFields._meta.db_table,
- decimal=['f_decimal'])
-
- self.assertTrue(model_def.startswith(
- '# This is an auto-generated Django model module created by ogrinspect.\n'
- 'from django.contrib.gis.db import models\n'
- '\n'
- 'class Measurement(models.Model):\n'
- ))
-
- # The ordering of model fields might vary depending on several factors (version of GDAL, etc.)
- self.assertIn(' f_decimal = models.DecimalField(max_digits=0, decimal_places=0)', model_def)
- self.assertIn(' f_int = models.IntegerField()', model_def)
- self.assertIn(' f_datetime = models.DateTimeField()', model_def)
- self.assertIn(' f_time = models.TimeField()', model_def)
- self.assertIn(' f_float = models.FloatField()', model_def)
- self.assertIn(' f_char = models.CharField(max_length=10)', model_def)
- self.assertIn(' f_date = models.DateField()', model_def)
-
- self.assertTrue(model_def.endswith(
- ' geom = models.PolygonField()\n'
- ' objects = models.GeoManager()'
- ))
-
-
-def get_ogr_db_string():
- """
- Construct the DB string that GDAL will use to inspect the database.
- GDAL will create its own connection to the database, so we re-use the
- connection settings from the Django test.
- """
- db = connections.databases['default']
-
- # Map from the django backend into the OGR driver name and database identifier
- # http://www.gdal.org/ogr/ogr_formats.html
- #
- # TODO: Support Oracle (OCI).
- drivers = {
- 'django.contrib.gis.db.backends.postgis': ('PostgreSQL', "PG:dbname='%(db_name)s'", ' '),
- 'django.contrib.gis.db.backends.mysql': ('MySQL', 'MYSQL:"%(db_name)s"', ','),
- 'django.contrib.gis.db.backends.spatialite': ('SQLite', '%(db_name)s', '')
- }
-
- drv_name, db_str, param_sep = drivers[db['ENGINE']]
-
- # Ensure that GDAL library has driver support for the database.
- try:
- Driver(drv_name)
- except:
- return None
-
- # SQLite/Spatialite in-memory databases
- if db['NAME'] == ":memory:":
- return None
-
- # Build the params of the OGR database connection string
- params = [db_str % {'db_name': db['NAME']}]
- def add(key, template):
- value = db.get(key, None)
- # Don't add the parameter if it is not in django's settings
- if value:
- params.append(template % value)
- add('HOST', "host='%s'")
- add('PORT', "port='%s'")
- add('USER', "user='%s'")
- add('PASSWORD', "password='%s'")
-
- return param_sep.join(params)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/layermap/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/tests/layermap/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/layermap/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/layermap/models.py b/lib/python2.7/site-packages/django/contrib/gis/tests/layermap/models.py
deleted file mode 100644
index b58dccd..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/layermap/models.py
+++ /dev/null
@@ -1,70 +0,0 @@
-from django.contrib.gis.db import models
-
-class State(models.Model):
- name = models.CharField(max_length=20)
- objects = models.GeoManager()
-
-class County(models.Model):
- name = models.CharField(max_length=25)
- state = models.ForeignKey(State)
- mpoly = models.MultiPolygonField(srid=4269) # Multipolygon in NAD83
- objects = models.GeoManager()
-
-class CountyFeat(models.Model):
- name = models.CharField(max_length=25)
- poly = models.PolygonField(srid=4269)
- objects = models.GeoManager()
-
-class City(models.Model):
- name = models.CharField(max_length=25)
- name_txt = models.TextField(default='')
- population = models.IntegerField()
- density = models.DecimalField(max_digits=7, decimal_places=1)
- dt = models.DateField()
- point = models.PointField()
- objects = models.GeoManager()
-
-class Interstate(models.Model):
- name = models.CharField(max_length=20)
- length = models.DecimalField(max_digits=6, decimal_places=2)
- path = models.LineStringField()
- objects = models.GeoManager()
-
-# Same as `City` above, but for testing model inheritance.
-class CityBase(models.Model):
- name = models.CharField(max_length=25)
- population = models.IntegerField()
- density = models.DecimalField(max_digits=7, decimal_places=1)
- point = models.PointField()
- objects = models.GeoManager()
-
-class ICity1(CityBase):
- dt = models.DateField()
-
-class ICity2(ICity1):
- dt_time = models.DateTimeField(auto_now=True)
-
-class Invalid(models.Model):
- point = models.PointField()
-
-# Mapping dictionaries for the models above.
-co_mapping = {'name' : 'Name',
- 'state' : {'name' : 'State'}, # ForeignKey's use another mapping dictionary for the _related_ Model (State in this case).
- 'mpoly' : 'MULTIPOLYGON', # Will convert POLYGON features into MULTIPOLYGONS.
- }
-
-cofeat_mapping = {'name' : 'Name',
- 'poly' : 'POLYGON',
- }
-
-city_mapping = {'name' : 'Name',
- 'population' : 'Population',
- 'density' : 'Density',
- 'dt' : 'Created',
- 'point' : 'POINT',
- }
-
-inter_mapping = {'name' : 'Name',
- 'length' : 'Length',
- 'path' : 'LINESTRING',
- }
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/layermap/tests.py b/lib/python2.7/site-packages/django/contrib/gis/tests/layermap/tests.py
deleted file mode 100644
index 8379311..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/layermap/tests.py
+++ /dev/null
@@ -1,331 +0,0 @@
-# coding: utf-8
-from __future__ import absolute_import, unicode_literals
-
-import os
-from copy import copy
-from decimal import Decimal
-
-from django.contrib.gis.gdal import HAS_GDAL
-from django.contrib.gis.tests.utils import HAS_SPATIAL_DB, mysql
-from django.db import router
-from django.conf import settings
-from django.test import TestCase
-from django.utils import unittest
-from django.utils.unittest import skipUnless
-from django.utils._os import upath
-
-if HAS_GDAL:
- from django.contrib.gis.utils.layermapping import (LayerMapping,
- LayerMapError, InvalidDecimal, MissingForeignKey)
- from django.contrib.gis.gdal import DataSource
-
- from .models import (
- City, County, CountyFeat, Interstate, ICity1, ICity2, Invalid, State,
- city_mapping, co_mapping, cofeat_mapping, inter_mapping)
-
-
-shp_path = os.path.realpath(os.path.join(os.path.dirname(upath(__file__)), os.pardir, 'data'))
-city_shp = os.path.join(shp_path, 'cities', 'cities.shp')
-co_shp = os.path.join(shp_path, 'counties', 'counties.shp')
-inter_shp = os.path.join(shp_path, 'interstates', 'interstates.shp')
-invalid_shp = os.path.join(shp_path, 'invalid', 'emptypoints.shp')
-
-# Dictionaries to hold what's expected in the county shapefile.
-NAMES = ['Bexar', 'Galveston', 'Harris', 'Honolulu', 'Pueblo']
-NUMS = [1, 2, 1, 19, 1] # Number of polygons for each.
-STATES = ['Texas', 'Texas', 'Texas', 'Hawaii', 'Colorado']
-
-
-@skipUnless(HAS_GDAL and HAS_SPATIAL_DB, "GDAL and spatial db are required.")
-class LayerMapTest(TestCase):
-
- def test_init(self):
- "Testing LayerMapping initialization."
-
- # Model field that does not exist.
- bad1 = copy(city_mapping)
- bad1['foobar'] = 'FooField'
-
- # Shapefile field that does not exist.
- bad2 = copy(city_mapping)
- bad2['name'] = 'Nombre'
-
- # Nonexistent geographic field type.
- bad3 = copy(city_mapping)
- bad3['point'] = 'CURVE'
-
- # Incrementing through the bad mapping dictionaries and
- # ensuring that a LayerMapError is raised.
- for bad_map in (bad1, bad2, bad3):
- with self.assertRaises(LayerMapError):
- lm = LayerMapping(City, city_shp, bad_map)
-
- # A LookupError should be thrown for bogus encodings.
- with self.assertRaises(LookupError):
- lm = LayerMapping(City, city_shp, city_mapping, encoding='foobar')
-
- def test_simple_layermap(self):
- "Test LayerMapping import of a simple point shapefile."
- # Setting up for the LayerMapping.
- lm = LayerMapping(City, city_shp, city_mapping)
- lm.save()
-
- # There should be three cities in the shape file.
- self.assertEqual(3, City.objects.count())
-
- # Opening up the shapefile, and verifying the values in each
- # of the features made it to the model.
- ds = DataSource(city_shp)
- layer = ds[0]
- for feat in layer:
- city = City.objects.get(name=feat['Name'].value)
- self.assertEqual(feat['Population'].value, city.population)
- self.assertEqual(Decimal(str(feat['Density'])), city.density)
- self.assertEqual(feat['Created'].value, city.dt)
-
- # Comparing the geometries.
- pnt1, pnt2 = feat.geom, city.point
- self.assertAlmostEqual(pnt1.x, pnt2.x, 5)
- self.assertAlmostEqual(pnt1.y, pnt2.y, 5)
-
- def test_layermap_strict(self):
- "Testing the `strict` keyword, and import of a LineString shapefile."
- # When the `strict` keyword is set an error encountered will force
- # the importation to stop.
- with self.assertRaises(InvalidDecimal):
- lm = LayerMapping(Interstate, inter_shp, inter_mapping)
- lm.save(silent=True, strict=True)
- Interstate.objects.all().delete()
-
- # This LayerMapping should work b/c `strict` is not set.
- lm = LayerMapping(Interstate, inter_shp, inter_mapping)
- lm.save(silent=True)
-
- # Two interstate should have imported correctly.
- self.assertEqual(2, Interstate.objects.count())
-
- # Verifying the values in the layer w/the model.
- ds = DataSource(inter_shp)
-
- # Only the first two features of this shapefile are valid.
- valid_feats = ds[0][:2]
- for feat in valid_feats:
- istate = Interstate.objects.get(name=feat['Name'].value)
-
- if feat.fid == 0:
- self.assertEqual(Decimal(str(feat['Length'])), istate.length)
- elif feat.fid == 1:
- # Everything but the first two decimal digits were truncated,
- # because the Interstate model's `length` field has decimal_places=2.
- self.assertAlmostEqual(feat.get('Length'), float(istate.length), 2)
-
- for p1, p2 in zip(feat.geom, istate.path):
- self.assertAlmostEqual(p1[0], p2[0], 6)
- self.assertAlmostEqual(p1[1], p2[1], 6)
-
- def county_helper(self, county_feat=True):
- "Helper function for ensuring the integrity of the mapped County models."
- for name, n, st in zip(NAMES, NUMS, STATES):
- # Should only be one record b/c of `unique` keyword.
- c = County.objects.get(name=name)
- self.assertEqual(n, len(c.mpoly))
- self.assertEqual(st, c.state.name) # Checking ForeignKey mapping.
-
- # Multiple records because `unique` was not set.
- if county_feat:
- qs = CountyFeat.objects.filter(name=name)
- self.assertEqual(n, qs.count())
-
- def test_layermap_unique_multigeometry_fk(self):
- "Testing the `unique`, and `transform`, geometry collection conversion, and ForeignKey mappings."
- # All the following should work.
- try:
- # Telling LayerMapping that we want no transformations performed on the data.
- lm = LayerMapping(County, co_shp, co_mapping, transform=False)
-
- # Specifying the source spatial reference system via the `source_srs` keyword.
- lm = LayerMapping(County, co_shp, co_mapping, source_srs=4269)
- lm = LayerMapping(County, co_shp, co_mapping, source_srs='NAD83')
-
- # Unique may take tuple or string parameters.
- for arg in ('name', ('name', 'mpoly')):
- lm = LayerMapping(County, co_shp, co_mapping, transform=False, unique=arg)
- except:
- self.fail('No exception should be raised for proper use of keywords.')
-
- # Testing invalid params for the `unique` keyword.
- for e, arg in ((TypeError, 5.0), (ValueError, 'foobar'), (ValueError, ('name', 'mpolygon'))):
- self.assertRaises(e, LayerMapping, County, co_shp, co_mapping, transform=False, unique=arg)
-
- # No source reference system defined in the shapefile, should raise an error.
- if not mysql:
- self.assertRaises(LayerMapError, LayerMapping, County, co_shp, co_mapping)
-
- # Passing in invalid ForeignKey mapping parameters -- must be a dictionary
- # mapping for the model the ForeignKey points to.
- bad_fk_map1 = copy(co_mapping); bad_fk_map1['state'] = 'name'
- bad_fk_map2 = copy(co_mapping); bad_fk_map2['state'] = {'nombre' : 'State'}
- self.assertRaises(TypeError, LayerMapping, County, co_shp, bad_fk_map1, transform=False)
- self.assertRaises(LayerMapError, LayerMapping, County, co_shp, bad_fk_map2, transform=False)
-
- # There exist no State models for the ForeignKey mapping to work -- should raise
- # a MissingForeignKey exception (this error would be ignored if the `strict`
- # keyword is not set).
- lm = LayerMapping(County, co_shp, co_mapping, transform=False, unique='name')
- self.assertRaises(MissingForeignKey, lm.save, silent=True, strict=True)
-
- # Now creating the state models so the ForeignKey mapping may work.
- State.objects.bulk_create([
- State(name='Colorado'), State(name='Hawaii'), State(name='Texas')
- ])
-
- # If a mapping is specified as a collection, all OGR fields that
- # are not collections will be converted into them. For example,
- # a Point column would be converted to MultiPoint. Other things being done
- # w/the keyword args:
- # `transform=False`: Specifies that no transform is to be done; this
- # has the effect of ignoring the spatial reference check (because the
- # county shapefile does not have implicit spatial reference info).
- #
- # `unique='name'`: Creates models on the condition that they have
- # unique county names; geometries from each feature however will be
- # appended to the geometry collection of the unique model. Thus,
- # all of the various islands in Honolulu county will be in in one
- # database record with a MULTIPOLYGON type.
- lm = LayerMapping(County, co_shp, co_mapping, transform=False, unique='name')
- lm.save(silent=True, strict=True)
-
- # A reference that doesn't use the unique keyword; a new database record will
- # created for each polygon.
- lm = LayerMapping(CountyFeat, co_shp, cofeat_mapping, transform=False)
- lm.save(silent=True, strict=True)
-
- # The county helper is called to ensure integrity of County models.
- self.county_helper()
-
- def test_test_fid_range_step(self):
- "Tests the `fid_range` keyword and the `step` keyword of .save()."
- # Function for clearing out all the counties before testing.
- def clear_counties(): County.objects.all().delete()
-
- State.objects.bulk_create([
- State(name='Colorado'), State(name='Hawaii'), State(name='Texas')
- ])
-
- # Initializing the LayerMapping object to use in these tests.
- lm = LayerMapping(County, co_shp, co_mapping, transform=False, unique='name')
-
- # Bad feature id ranges should raise a type error.
- bad_ranges = (5.0, 'foo', co_shp)
- for bad in bad_ranges:
- self.assertRaises(TypeError, lm.save, fid_range=bad)
-
- # Step keyword should not be allowed w/`fid_range`.
- fr = (3, 5) # layer[3:5]
- self.assertRaises(LayerMapError, lm.save, fid_range=fr, step=10)
- lm.save(fid_range=fr)
-
- # Features IDs 3 & 4 are for Galveston County, Texas -- only
- # one model is returned because the `unique` keyword was set.
- qs = County.objects.all()
- self.assertEqual(1, qs.count())
- self.assertEqual('Galveston', qs[0].name)
-
- # Features IDs 5 and beyond for Honolulu County, Hawaii, and
- # FID 0 is for Pueblo County, Colorado.
- clear_counties()
- lm.save(fid_range=slice(5, None), silent=True, strict=True) # layer[5:]
- lm.save(fid_range=slice(None, 1), silent=True, strict=True) # layer[:1]
-
- # Only Pueblo & Honolulu counties should be present because of
- # the `unique` keyword. Have to set `order_by` on this QuerySet
- # or else MySQL will return a different ordering than the other dbs.
- qs = County.objects.order_by('name')
- self.assertEqual(2, qs.count())
- hi, co = tuple(qs)
- hi_idx, co_idx = tuple(map(NAMES.index, ('Honolulu', 'Pueblo')))
- self.assertEqual('Pueblo', co.name)
- self.assertEqual(NUMS[co_idx], len(co.mpoly))
- self.assertEqual('Honolulu', hi.name)
- self.assertEqual(NUMS[hi_idx], len(hi.mpoly))
-
- # Testing the `step` keyword -- should get the same counties
- # regardless of we use a step that divides equally, that is odd,
- # or that is larger than the dataset.
- for st in (4,7,1000):
- clear_counties()
- lm.save(step=st, strict=True)
- self.county_helper(county_feat=False)
-
- def test_model_inheritance(self):
- "Tests LayerMapping on inherited models. See #12093."
- icity_mapping = {'name' : 'Name',
- 'population' : 'Population',
- 'density' : 'Density',
- 'point' : 'POINT',
- 'dt' : 'Created',
- }
-
- # Parent model has geometry field.
- lm1 = LayerMapping(ICity1, city_shp, icity_mapping)
- lm1.save()
-
- # Grandparent has geometry field.
- lm2 = LayerMapping(ICity2, city_shp, icity_mapping)
- lm2.save()
-
- self.assertEqual(6, ICity1.objects.count())
- self.assertEqual(3, ICity2.objects.count())
-
- def test_invalid_layer(self):
- "Tests LayerMapping on invalid geometries. See #15378."
- invalid_mapping = {'point': 'POINT'}
- lm = LayerMapping(Invalid, invalid_shp, invalid_mapping,
- source_srs=4326)
- lm.save(silent=True)
-
- def test_textfield(self):
- "Tests that String content fits also in a TextField"
- mapping = copy(city_mapping)
- mapping['name_txt'] = 'Name'
- lm = LayerMapping(City, city_shp, mapping)
- lm.save(silent=True, strict=True)
- self.assertEqual(City.objects.count(), 3)
- self.assertEqual(City.objects.all().order_by('name_txt')[0].name_txt, "Houston")
-
- def test_encoded_name(self):
- """ Test a layer containing utf-8-encoded name """
- city_shp = os.path.join(shp_path, 'ch-city', 'ch-city.shp')
- lm = LayerMapping(City, city_shp, city_mapping)
- lm.save(silent=True, strict=True)
- self.assertEqual(City.objects.count(), 1)
- self.assertEqual(City.objects.all()[0].name, "Zürich")
-
-class OtherRouter(object):
- def db_for_read(self, model, **hints):
- return 'other'
-
- def db_for_write(self, model, **hints):
- return self.db_for_read(model, **hints)
-
- def allow_relation(self, obj1, obj2, **hints):
- return None
-
- def allow_syncdb(self, db, model):
- return True
-
-
-@skipUnless(HAS_GDAL and HAS_SPATIAL_DB, "GDAL and spatial db are required.")
-class LayerMapRouterTest(TestCase):
-
- def setUp(self):
- self.old_routers = router.routers
- router.routers = [OtherRouter()]
-
- def tearDown(self):
- router.routers = self.old_routers
-
- @unittest.skipUnless(len(settings.DATABASES) > 1, 'multiple databases required')
- def test_layermapping_default_db(self):
- lm = LayerMapping(City, city_shp, city_mapping)
- self.assertEqual(lm.using, 'other')
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/relatedapp/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/tests/relatedapp/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/relatedapp/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/relatedapp/fixtures/initial_data.json.gz b/lib/python2.7/site-packages/django/contrib/gis/tests/relatedapp/fixtures/initial_data.json.gz
deleted file mode 100644
index 8937637..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/relatedapp/fixtures/initial_data.json.gz
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/relatedapp/models.py b/lib/python2.7/site-packages/django/contrib/gis/tests/relatedapp/models.py
deleted file mode 100644
index 5fc5e13..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/relatedapp/models.py
+++ /dev/null
@@ -1,53 +0,0 @@
-from django.contrib.gis.db import models
-from django.utils.encoding import python_2_unicode_compatible
-
-@python_2_unicode_compatible
-class Location(models.Model):
- point = models.PointField()
- objects = models.GeoManager()
- def __str__(self): return self.point.wkt
-
-@python_2_unicode_compatible
-class City(models.Model):
- name = models.CharField(max_length=50)
- state = models.CharField(max_length=2)
- location = models.ForeignKey(Location)
- objects = models.GeoManager()
- def __str__(self): return self.name
-
-class AugmentedLocation(Location):
- extra_text = models.TextField(blank=True)
- objects = models.GeoManager()
-
-class DirectoryEntry(models.Model):
- listing_text = models.CharField(max_length=50)
- location = models.ForeignKey(AugmentedLocation)
- objects = models.GeoManager()
-
-@python_2_unicode_compatible
-class Parcel(models.Model):
- name = models.CharField(max_length=30)
- city = models.ForeignKey(City)
- center1 = models.PointField()
- # Throwing a curveball w/`db_column` here.
- center2 = models.PointField(srid=2276, db_column='mycenter')
- border1 = models.PolygonField()
- border2 = models.PolygonField(srid=2276)
- objects = models.GeoManager()
- def __str__(self): return self.name
-
-# These use the GeoManager but do not have any geographic fields.
-class Author(models.Model):
- name = models.CharField(max_length=100)
- dob = models.DateField()
- objects = models.GeoManager()
-
-class Article(models.Model):
- title = models.CharField(max_length=100)
- author = models.ForeignKey(Author, unique=True)
- objects = models.GeoManager()
-
-class Book(models.Model):
- title = models.CharField(max_length=100)
- author = models.ForeignKey(Author, related_name='books', null=True)
- objects = models.GeoManager()
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/relatedapp/tests.py b/lib/python2.7/site-packages/django/contrib/gis/tests/relatedapp/tests.py
deleted file mode 100644
index d93adbc..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/relatedapp/tests.py
+++ /dev/null
@@ -1,305 +0,0 @@
-from __future__ import absolute_import
-
-from django.contrib.gis.geos import HAS_GEOS
-from django.contrib.gis.tests.utils import HAS_SPATIAL_DB, mysql, oracle, no_mysql, no_oracle, no_spatialite
-from django.test import TestCase
-from django.utils.unittest import skipUnless
-
-if HAS_GEOS:
- from django.contrib.gis.db.models import Collect, Count, Extent, F, Union
- from django.contrib.gis.geometry.backend import Geometry
- from django.contrib.gis.geos import GEOSGeometry, Point, MultiPoint
-
- from .models import City, Location, DirectoryEntry, Parcel, Book, Author, Article
-
-
-@skipUnless(HAS_GEOS and HAS_SPATIAL_DB, "Geos and spatial db are required.")
-class RelatedGeoModelTest(TestCase):
-
- def test02_select_related(self):
- "Testing `select_related` on geographic models (see #7126)."
- qs1 = City.objects.all()
- qs2 = City.objects.select_related()
- qs3 = City.objects.select_related('location')
-
- # Reference data for what's in the fixtures.
- cities = (
- ('Aurora', 'TX', -97.516111, 33.058333),
- ('Roswell', 'NM', -104.528056, 33.387222),
- ('Kecksburg', 'PA', -79.460734, 40.18476),
- )
-
- for qs in (qs1, qs2, qs3):
- for ref, c in zip(cities, qs):
- nm, st, lon, lat = ref
- self.assertEqual(nm, c.name)
- self.assertEqual(st, c.state)
- self.assertEqual(Point(lon, lat), c.location.point)
-
- @no_mysql
- def test03_transform_related(self):
- "Testing the `transform` GeoQuerySet method on related geographic models."
- # All the transformations are to state plane coordinate systems using
- # US Survey Feet (thus a tolerance of 0 implies error w/in 1 survey foot).
- tol = 0
-
- def check_pnt(ref, pnt):
- self.assertAlmostEqual(ref.x, pnt.x, tol)
- self.assertAlmostEqual(ref.y, pnt.y, tol)
- self.assertEqual(ref.srid, pnt.srid)
-
- # Each city transformed to the SRID of their state plane coordinate system.
- transformed = (('Kecksburg', 2272, 'POINT(1490553.98959621 314792.131023984)'),
- ('Roswell', 2257, 'POINT(481902.189077221 868477.766629735)'),
- ('Aurora', 2276, 'POINT(2269923.2484839 7069381.28722222)'),
- )
-
- for name, srid, wkt in transformed:
- # Doing this implicitly sets `select_related` select the location.
- # TODO: Fix why this breaks on Oracle.
- qs = list(City.objects.filter(name=name).transform(srid, field_name='location__point'))
- check_pnt(GEOSGeometry(wkt, srid), qs[0].location.point)
-
- @no_mysql
- @no_spatialite
- def test04a_related_extent_aggregate(self):
- "Testing the `extent` GeoQuerySet aggregates on related geographic models."
- # This combines the Extent and Union aggregates into one query
- aggs = City.objects.aggregate(Extent('location__point'))
-
- # One for all locations, one that excludes New Mexico (Roswell).
- all_extent = (-104.528056, 29.763374, -79.460734, 40.18476)
- txpa_extent = (-97.516111, 29.763374, -79.460734, 40.18476)
- e1 = City.objects.extent(field_name='location__point')
- e2 = City.objects.exclude(state='NM').extent(field_name='location__point')
- e3 = aggs['location__point__extent']
-
- # The tolerance value is to four decimal places because of differences
- # between the Oracle and PostGIS spatial backends on the extent calculation.
- tol = 4
- for ref, e in [(all_extent, e1), (txpa_extent, e2), (all_extent, e3)]:
- for ref_val, e_val in zip(ref, e): self.assertAlmostEqual(ref_val, e_val, tol)
-
- @no_mysql
- def test04b_related_union_aggregate(self):
- "Testing the `unionagg` GeoQuerySet aggregates on related geographic models."
- # This combines the Extent and Union aggregates into one query
- aggs = City.objects.aggregate(Union('location__point'))
-
- # These are the points that are components of the aggregate geographic
- # union that is returned. Each point # corresponds to City PK.
- p1 = Point(-104.528056, 33.387222)
- p2 = Point(-97.516111, 33.058333)
- p3 = Point(-79.460734, 40.18476)
- p4 = Point(-96.801611, 32.782057)
- p5 = Point(-95.363151, 29.763374)
-
- # Creating the reference union geometry depending on the spatial backend,
- # as Oracle will have a different internal ordering of the component
- # geometries than PostGIS. The second union aggregate is for a union
- # query that includes limiting information in the WHERE clause (in other
- # words a `.filter()` precedes the call to `.unionagg()`).
- if oracle:
- ref_u1 = MultiPoint(p4, p5, p3, p1, p2, srid=4326)
- ref_u2 = MultiPoint(p3, p2, srid=4326)
- else:
- # Looks like PostGIS points by longitude value.
- ref_u1 = MultiPoint(p1, p2, p4, p5, p3, srid=4326)
- ref_u2 = MultiPoint(p2, p3, srid=4326)
-
- u1 = City.objects.unionagg(field_name='location__point')
- u2 = City.objects.exclude(name__in=('Roswell', 'Houston', 'Dallas', 'Fort Worth')).unionagg(field_name='location__point')
- u3 = aggs['location__point__union']
-
- self.assertEqual(ref_u1, u1)
- self.assertEqual(ref_u2, u2)
- self.assertEqual(ref_u1, u3)
-
- def test05_select_related_fk_to_subclass(self):
- "Testing that calling select_related on a query over a model with an FK to a model subclass works"
- # Regression test for #9752.
- l = list(DirectoryEntry.objects.all().select_related())
-
- def test06_f_expressions(self):
- "Testing F() expressions on GeometryFields."
- # Constructing a dummy parcel border and getting the City instance for
- # assigning the FK.
- b1 = GEOSGeometry('POLYGON((-97.501205 33.052520,-97.501205 33.052576,-97.501150 33.052576,-97.501150 33.052520,-97.501205 33.052520))', srid=4326)
- pcity = City.objects.get(name='Aurora')
-
- # First parcel has incorrect center point that is equal to the City;
- # it also has a second border that is different from the first as a
- # 100ft buffer around the City.
- c1 = pcity.location.point
- c2 = c1.transform(2276, clone=True)
- b2 = c2.buffer(100)
- p1 = Parcel.objects.create(name='P1', city=pcity, center1=c1, center2=c2, border1=b1, border2=b2)
-
- # Now creating a second Parcel where the borders are the same, just
- # in different coordinate systems. The center points are also the
- # same (but in different coordinate systems), and this time they
- # actually correspond to the centroid of the border.
- c1 = b1.centroid
- c2 = c1.transform(2276, clone=True)
- p2 = Parcel.objects.create(name='P2', city=pcity, center1=c1, center2=c2, border1=b1, border2=b1)
-
- # Should return the second Parcel, which has the center within the
- # border.
- qs = Parcel.objects.filter(center1__within=F('border1'))
- self.assertEqual(1, len(qs))
- self.assertEqual('P2', qs[0].name)
-
- if not mysql:
- # This time center2 is in a different coordinate system and needs
- # to be wrapped in transformation SQL.
- qs = Parcel.objects.filter(center2__within=F('border1'))
- self.assertEqual(1, len(qs))
- self.assertEqual('P2', qs[0].name)
-
- # Should return the first Parcel, which has the center point equal
- # to the point in the City ForeignKey.
- qs = Parcel.objects.filter(center1=F('city__location__point'))
- self.assertEqual(1, len(qs))
- self.assertEqual('P1', qs[0].name)
-
- if not mysql:
- # This time the city column should be wrapped in transformation SQL.
- qs = Parcel.objects.filter(border2__contains=F('city__location__point'))
- self.assertEqual(1, len(qs))
- self.assertEqual('P1', qs[0].name)
-
- def test07_values(self):
- "Testing values() and values_list() and GeoQuerySets."
- # GeoQuerySet and GeoValuesQuerySet, and GeoValuesListQuerySet respectively.
- gqs = Location.objects.all()
- gvqs = Location.objects.values()
- gvlqs = Location.objects.values_list()
-
- # Incrementing through each of the models, dictionaries, and tuples
- # returned by the different types of GeoQuerySets.
- for m, d, t in zip(gqs, gvqs, gvlqs):
- # The values should be Geometry objects and not raw strings returned
- # by the spatial database.
- self.assertTrue(isinstance(d['point'], Geometry))
- self.assertTrue(isinstance(t[1], Geometry))
- self.assertEqual(m.point, d['point'])
- self.assertEqual(m.point, t[1])
-
- def test08_defer_only(self):
- "Testing defer() and only() on Geographic models."
- qs = Location.objects.all()
- def_qs = Location.objects.defer('point')
- for loc, def_loc in zip(qs, def_qs):
- self.assertEqual(loc.point, def_loc.point)
-
- def test09_pk_relations(self):
- "Ensuring correct primary key column is selected across relations. See #10757."
- # The expected ID values -- notice the last two location IDs
- # are out of order. Dallas and Houston have location IDs that differ
- # from their PKs -- this is done to ensure that the related location
- # ID column is selected instead of ID column for the city.
- city_ids = (1, 2, 3, 4, 5)
- loc_ids = (1, 2, 3, 5, 4)
- ids_qs = City.objects.order_by('id').values('id', 'location__id')
- for val_dict, c_id, l_id in zip(ids_qs, city_ids, loc_ids):
- self.assertEqual(val_dict['id'], c_id)
- self.assertEqual(val_dict['location__id'], l_id)
-
- def test10_combine(self):
- "Testing the combination of two GeoQuerySets. See #10807."
- buf1 = City.objects.get(name='Aurora').location.point.buffer(0.1)
- buf2 = City.objects.get(name='Kecksburg').location.point.buffer(0.1)
- qs1 = City.objects.filter(location__point__within=buf1)
- qs2 = City.objects.filter(location__point__within=buf2)
- combined = qs1 | qs2
- names = [c.name for c in combined]
- self.assertEqual(2, len(names))
- self.assertTrue('Aurora' in names)
- self.assertTrue('Kecksburg' in names)
-
- def test11_geoquery_pickle(self):
- "Ensuring GeoQuery objects are unpickled correctly. See #10839."
- import pickle
- from django.contrib.gis.db.models.sql import GeoQuery
- qs = City.objects.all()
- q_str = pickle.dumps(qs.query)
- q = pickle.loads(q_str)
- self.assertEqual(GeoQuery, q.__class__)
-
- # TODO: fix on Oracle -- get the following error because the SQL is ordered
- # by a geometry object, which Oracle apparently doesn't like:
- # ORA-22901: cannot compare nested table or VARRAY or LOB attributes of an object type
- @no_oracle
- def test12a_count(self):
- "Testing `Count` aggregate use with the `GeoManager` on geo-fields."
- # The City, 'Fort Worth' uses the same location as Dallas.
- dallas = City.objects.get(name='Dallas')
-
- # Count annotation should be 2 for the Dallas location now.
- loc = Location.objects.annotate(num_cities=Count('city')).get(id=dallas.location.id)
- self.assertEqual(2, loc.num_cities)
-
- def test12b_count(self):
- "Testing `Count` aggregate use with the `GeoManager` on non geo-fields. See #11087."
- # Should only be one author (Trevor Paglen) returned by this query, and
- # the annotation should have 3 for the number of books, see #11087.
- # Also testing with a `GeoValuesQuerySet`, see #11489.
- qs = Author.objects.annotate(num_books=Count('books')).filter(num_books__gt=1)
- vqs = Author.objects.values('name').annotate(num_books=Count('books')).filter(num_books__gt=1)
- self.assertEqual(1, len(qs))
- self.assertEqual(3, qs[0].num_books)
- self.assertEqual(1, len(vqs))
- self.assertEqual(3, vqs[0]['num_books'])
-
- def test13c_count(self):
- "Testing `Count` aggregate with `.values()`. See #15305."
- qs = Location.objects.filter(id=5).annotate(num_cities=Count('city')).values('id', 'point', 'num_cities')
- self.assertEqual(1, len(qs))
- self.assertEqual(2, qs[0]['num_cities'])
- self.assertTrue(isinstance(qs[0]['point'], GEOSGeometry))
-
- # TODO: The phantom model does appear on Oracle.
- @no_oracle
- def test13_select_related_null_fk(self):
- "Testing `select_related` on a nullable ForeignKey via `GeoManager`. See #11381."
- no_author = Book.objects.create(title='Without Author')
- b = Book.objects.select_related('author').get(title='Without Author')
- # Should be `None`, and not a 'dummy' model.
- self.assertEqual(None, b.author)
-
- @no_mysql
- @no_oracle
- @no_spatialite
- def test14_collect(self):
- "Testing the `collect` GeoQuerySet method and `Collect` aggregate."
- # Reference query:
- # SELECT AsText(ST_Collect("relatedapp_location"."point")) FROM "relatedapp_city" LEFT OUTER JOIN
- # "relatedapp_location" ON ("relatedapp_city"."location_id" = "relatedapp_location"."id")
- # WHERE "relatedapp_city"."state" = 'TX';
- ref_geom = GEOSGeometry('MULTIPOINT(-97.516111 33.058333,-96.801611 32.782057,-95.363151 29.763374,-96.801611 32.782057)')
-
- c1 = City.objects.filter(state='TX').collect(field_name='location__point')
- c2 = City.objects.filter(state='TX').aggregate(Collect('location__point'))['location__point__collect']
-
- for coll in (c1, c2):
- # Even though Dallas and Ft. Worth share same point, Collect doesn't
- # consolidate -- that's why 4 points in MultiPoint.
- self.assertEqual(4, len(coll))
- self.assertEqual(ref_geom, coll)
-
- def test15_invalid_select_related(self):
- "Testing doing select_related on the related name manager of a unique FK. See #13934."
- qs = Article.objects.select_related('author__article')
- # This triggers TypeError when `get_default_columns` has no `local_only`
- # keyword. The TypeError is swallowed if QuerySet is actually
- # evaluated as list generation swallows TypeError in CPython.
- sql = str(qs.query)
-
- def test16_annotated_date_queryset(self):
- "Ensure annotated date querysets work if spatial backend is used. See #14648."
- birth_years = [dt.year for dt in
- list(Author.objects.annotate(num_books=Count('books')).dates('dob', 'year'))]
- birth_years.sort()
- self.assertEqual([1950, 1974], birth_years)
-
- # TODO: Related tests for KML, GML, and distance lookups.
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/test_geoforms.py b/lib/python2.7/site-packages/django/contrib/gis/tests/test_geoforms.py
deleted file mode 100644
index 0fa37e4..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/test_geoforms.py
+++ /dev/null
@@ -1,300 +0,0 @@
-from django.forms import ValidationError
-from django.contrib.gis.gdal import HAS_GDAL
-from django.contrib.gis.tests.utils import HAS_SPATIALREFSYS
-from django.test import SimpleTestCase
-from django.utils import six
-from django.utils.html import escape
-from django.utils.unittest import skipUnless
-
-if HAS_SPATIALREFSYS:
- from django.contrib.gis import forms
- from django.contrib.gis.geos import GEOSGeometry
-
-@skipUnless(HAS_GDAL and HAS_SPATIALREFSYS, "GeometryFieldTest needs gdal support and a spatial database")
-class GeometryFieldTest(SimpleTestCase):
-
- def test_init(self):
- "Testing GeometryField initialization with defaults."
- fld = forms.GeometryField()
- for bad_default in ('blah', 3, 'FoO', None, 0):
- self.assertRaises(ValidationError, fld.clean, bad_default)
-
- def test_srid(self):
- "Testing GeometryField with a SRID set."
- # Input that doesn't specify the SRID is assumed to be in the SRID
- # of the input field.
- fld = forms.GeometryField(srid=4326)
- geom = fld.clean('POINT(5 23)')
- self.assertEqual(4326, geom.srid)
- # Making the field in a different SRID from that of the geometry, and
- # asserting it transforms.
- fld = forms.GeometryField(srid=32140)
- tol = 0.0000001
- xform_geom = GEOSGeometry('POINT (951640.547328465 4219369.26171664)', srid=32140)
- # The cleaned geometry should be transformed to 32140.
- cleaned_geom = fld.clean('SRID=4326;POINT (-95.363151 29.763374)')
- self.assertTrue(xform_geom.equals_exact(cleaned_geom, tol))
-
- def test_null(self):
- "Testing GeometryField's handling of null (None) geometries."
- # Form fields, by default, are required (`required=True`)
- fld = forms.GeometryField()
- with six.assertRaisesRegex(self, forms.ValidationError,
- "No geometry value provided."):
- fld.clean(None)
-
- # This will clean None as a geometry (See #10660).
- fld = forms.GeometryField(required=False)
- self.assertIsNone(fld.clean(None))
-
- def test_geom_type(self):
- "Testing GeometryField's handling of different geometry types."
- # By default, all geometry types are allowed.
- fld = forms.GeometryField()
- for wkt in ('POINT(5 23)', 'MULTIPOLYGON(((0 0, 0 1, 1 1, 1 0, 0 0)))', 'LINESTRING(0 0, 1 1)'):
- self.assertEqual(GEOSGeometry(wkt), fld.clean(wkt))
-
- pnt_fld = forms.GeometryField(geom_type='POINT')
- self.assertEqual(GEOSGeometry('POINT(5 23)'), pnt_fld.clean('POINT(5 23)'))
- # a WKT for any other geom_type will be properly transformed by `to_python`
- self.assertEqual(GEOSGeometry('LINESTRING(0 0, 1 1)'), pnt_fld.to_python('LINESTRING(0 0, 1 1)'))
- # but rejected by `clean`
- self.assertRaises(forms.ValidationError, pnt_fld.clean, 'LINESTRING(0 0, 1 1)')
-
- def test_to_python(self):
- """
- Testing to_python returns a correct GEOSGeometry object or
- a ValidationError
- """
- fld = forms.GeometryField()
- # to_python returns the same GEOSGeometry for a WKT
- for wkt in ('POINT(5 23)', 'MULTIPOLYGON(((0 0, 0 1, 1 1, 1 0, 0 0)))', 'LINESTRING(0 0, 1 1)'):
- self.assertEqual(GEOSGeometry(wkt), fld.to_python(wkt))
- # but raises a ValidationError for any other string
- for wkt in ('POINT(5)', 'MULTI POLYGON(((0 0, 0 1, 1 1, 1 0, 0 0)))', 'BLAH(0 0, 1 1)'):
- self.assertRaises(forms.ValidationError, fld.to_python, wkt)
-
- def test_field_with_text_widget(self):
- class PointForm(forms.Form):
- pt = forms.PointField(srid=4326, widget=forms.TextInput)
-
- form = PointForm()
- cleaned_pt = form.fields['pt'].clean('POINT(5 23)')
- self.assertEqual(cleaned_pt, GEOSGeometry('POINT(5 23)'))
- self.assertEqual(4326, cleaned_pt.srid)
-
- point = GEOSGeometry('SRID=4326;POINT(5 23)')
- form = PointForm(data={'pt': 'POINT(5 23)'}, initial={'pt': point})
- self.assertFalse(form.has_changed())
-
-
-@skipUnless(HAS_GDAL and HAS_SPATIALREFSYS,
- "SpecializedFieldTest needs gdal support and a spatial database")
-class SpecializedFieldTest(SimpleTestCase):
- def setUp(self):
- self.geometries = {
- 'point': GEOSGeometry("SRID=4326;POINT(9.052734375 42.451171875)"),
- 'multipoint': GEOSGeometry("SRID=4326;MULTIPOINT("
- "(13.18634033203125 14.504356384277344),"
- "(13.207969665527 14.490966796875),"
- "(13.177070617675 14.454917907714))"),
- 'linestring': GEOSGeometry("SRID=4326;LINESTRING("
- "-8.26171875 -0.52734375,"
- "-7.734375 4.21875,"
- "6.85546875 3.779296875,"
- "5.44921875 -3.515625)"),
- 'multilinestring': GEOSGeometry("SRID=4326;MULTILINESTRING("
- "(-16.435546875 -2.98828125,"
- "-17.2265625 2.98828125,"
- "-0.703125 3.515625,"
- "-1.494140625 -3.33984375),"
- "(-8.0859375 -5.9765625,"
- "8.525390625 -8.7890625,"
- "12.392578125 -0.87890625,"
- "10.01953125 7.646484375))"),
- 'polygon': GEOSGeometry("SRID=4326;POLYGON("
- "(-1.669921875 6.240234375,"
- "-3.8671875 -0.615234375,"
- "5.9765625 -3.955078125,"
- "18.193359375 3.955078125,"
- "9.84375 9.4921875,"
- "-1.669921875 6.240234375))"),
- 'multipolygon': GEOSGeometry("SRID=4326;MULTIPOLYGON("
- "((-17.578125 13.095703125,"
- "-17.2265625 10.8984375,"
- "-13.974609375 10.1953125,"
- "-13.359375 12.744140625,"
- "-15.732421875 13.7109375,"
- "-17.578125 13.095703125)),"
- "((-8.525390625 5.537109375,"
- "-8.876953125 2.548828125,"
- "-5.888671875 1.93359375,"
- "-5.09765625 4.21875,"
- "-6.064453125 6.240234375,"
- "-8.525390625 5.537109375)))"),
- 'geometrycollection': GEOSGeometry("SRID=4326;GEOMETRYCOLLECTION("
- "POINT(5.625 -0.263671875),"
- "POINT(6.767578125 -3.603515625),"
- "POINT(8.525390625 0.087890625),"
- "POINT(8.0859375 -2.13134765625),"
- "LINESTRING("
- "6.273193359375 -1.175537109375,"
- "5.77880859375 -1.812744140625,"
- "7.27294921875 -2.230224609375,"
- "7.657470703125 -1.25244140625))"),
- }
-
- def assertMapWidget(self, form_instance):
- """
- Make sure the MapWidget js is passed in the form media and a MapWidget
- is actually created
- """
- self.assertTrue(form_instance.is_valid())
- rendered = form_instance.as_p()
- self.assertIn('new MapWidget(options);', rendered)
- self.assertIn('gis/js/OLMapWidget.js', str(form_instance.media))
-
- def assertTextarea(self, geom, rendered):
- """Makes sure the wkt and a textarea are in the content"""
-
- self.assertIn('<textarea ', rendered)
- self.assertIn('required', rendered)
- self.assertIn(geom.wkt, rendered)
-
- def test_pointfield(self):
- class PointForm(forms.Form):
- p = forms.PointField()
-
- geom = self.geometries['point']
- form = PointForm(data={'p': geom})
- self.assertTextarea(geom, form.as_p())
- self.assertMapWidget(form)
- self.assertFalse(PointForm().is_valid())
- invalid = PointForm(data={'p': 'some invalid geom'})
- self.assertFalse(invalid.is_valid())
- self.assertTrue('Invalid geometry value' in str(invalid.errors))
-
- for invalid in [geom for key, geom in self.geometries.items() if key!='point']:
- self.assertFalse(PointForm(data={'p': invalid.wkt}).is_valid())
-
- def test_multipointfield(self):
- class PointForm(forms.Form):
- p = forms.MultiPointField()
-
- geom = self.geometries['multipoint']
- form = PointForm(data={'p': geom})
- self.assertTextarea(geom, form.as_p())
- self.assertMapWidget(form)
- self.assertFalse(PointForm().is_valid())
-
- for invalid in [geom for key, geom in self.geometries.items() if key!='multipoint']:
- self.assertFalse(PointForm(data={'p': invalid.wkt}).is_valid())
-
- def test_linestringfield(self):
- class LineStringForm(forms.Form):
- l = forms.LineStringField()
-
- geom = self.geometries['linestring']
- form = LineStringForm(data={'l': geom})
- self.assertTextarea(geom, form.as_p())
- self.assertMapWidget(form)
- self.assertFalse(LineStringForm().is_valid())
-
- for invalid in [geom for key, geom in self.geometries.items() if key!='linestring']:
- self.assertFalse(LineStringForm(data={'p': invalid.wkt}).is_valid())
-
- def test_multilinestringfield(self):
- class LineStringForm(forms.Form):
- l = forms.MultiLineStringField()
-
- geom = self.geometries['multilinestring']
- form = LineStringForm(data={'l': geom})
- self.assertTextarea(geom, form.as_p())
- self.assertMapWidget(form)
- self.assertFalse(LineStringForm().is_valid())
-
- for invalid in [geom for key, geom in self.geometries.items() if key!='multilinestring']:
- self.assertFalse(LineStringForm(data={'p': invalid.wkt}).is_valid())
-
- def test_polygonfield(self):
- class PolygonForm(forms.Form):
- p = forms.PolygonField()
-
- geom = self.geometries['polygon']
- form = PolygonForm(data={'p': geom})
- self.assertTextarea(geom, form.as_p())
- self.assertMapWidget(form)
- self.assertFalse(PolygonForm().is_valid())
-
- for invalid in [geom for key, geom in self.geometries.items() if key!='polygon']:
- self.assertFalse(PolygonForm(data={'p': invalid.wkt}).is_valid())
-
- def test_multipolygonfield(self):
- class PolygonForm(forms.Form):
- p = forms.MultiPolygonField()
-
- geom = self.geometries['multipolygon']
- form = PolygonForm(data={'p': geom})
- self.assertTextarea(geom, form.as_p())
- self.assertMapWidget(form)
- self.assertFalse(PolygonForm().is_valid())
-
- for invalid in [geom for key, geom in self.geometries.items() if key!='multipolygon']:
- self.assertFalse(PolygonForm(data={'p': invalid.wkt}).is_valid())
-
- def test_geometrycollectionfield(self):
- class GeometryForm(forms.Form):
- g = forms.GeometryCollectionField()
-
- geom = self.geometries['geometrycollection']
- form = GeometryForm(data={'g': geom})
- self.assertTextarea(geom, form.as_p())
- self.assertMapWidget(form)
- self.assertFalse(GeometryForm().is_valid())
-
- for invalid in [geom for key, geom in self.geometries.items() if key!='geometrycollection']:
- self.assertFalse(GeometryForm(data={'g': invalid.wkt}).is_valid())
-
- def test_osm_widget(self):
- class PointForm(forms.Form):
- p = forms.PointField(widget=forms.OSMWidget)
-
- geom = self.geometries['point']
- form = PointForm(data={'p': geom})
- rendered = form.as_p()
- self.assertIn("OpenStreetMap (Mapnik)", rendered)
- self.assertIn("id: 'id_p',", rendered)
-
-
-@skipUnless(HAS_GDAL and HAS_SPATIALREFSYS,
- "CustomGeometryWidgetTest needs gdal support and a spatial database")
-class CustomGeometryWidgetTest(SimpleTestCase):
-
- def test_custom_serialization_widget(self):
- class CustomGeometryWidget(forms.BaseGeometryWidget):
- template_name = 'gis/openlayers.html'
- deserialize_called = 0
- def serialize(self, value):
- return value.json if value else ''
-
- def deserialize(self, value):
- self.deserialize_called += 1
- return GEOSGeometry(value)
-
- class PointForm(forms.Form):
- p = forms.PointField(widget=CustomGeometryWidget)
-
- point = GEOSGeometry("SRID=4326;POINT(9.052734375 42.451171875)")
- form = PointForm(data={'p': point})
- self.assertIn(escape(point.json), form.as_p())
-
- CustomGeometryWidget.called = 0
- widget = form.fields['p'].widget
- # Force deserialize use due to a string value
- self.assertIn(escape(point.json), widget.render('p', point.json))
- self.assertEqual(widget.deserialize_called, 1)
-
- form = PointForm(data={'p': point.json})
- self.assertTrue(form.is_valid())
- # Ensure that resulting geometry has srid set
- self.assertEqual(form.cleaned_data['p'].srid, 4326)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/test_measure.py b/lib/python2.7/site-packages/django/contrib/gis/tests/test_measure.py
deleted file mode 100644
index 0428704..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/test_measure.py
+++ /dev/null
@@ -1,290 +0,0 @@
-"""
-Distance and Area objects to allow for sensible and convienient calculation
-and conversions. Here are some tests.
-"""
-
-from django.contrib.gis.measure import Distance, Area, D, A
-from django.utils import unittest
-
-
-class DistanceTest(unittest.TestCase):
- "Testing the Distance object"
-
- def testInit(self):
- "Testing initialisation from valid units"
- d = Distance(m=100)
- self.assertEqual(d.m, 100)
-
- d1, d2, d3 = D(m=100), D(meter=100), D(metre=100)
- for d in (d1, d2, d3):
- self.assertEqual(d.m, 100)
-
- d = D(nm=100)
- self.assertEqual(d.m, 185200)
-
- y1, y2, y3 = D(yd=100), D(yard=100), D(Yard=100)
- for d in (y1, y2, y3):
- self.assertEqual(d.yd, 100)
-
- mm1, mm2 = D(millimeter=1000), D(MiLLiMeTeR=1000)
- for d in (mm1, mm2):
- self.assertEqual(d.m, 1.0)
- self.assertEqual(d.mm, 1000.0)
-
-
- def testInitInvalid(self):
- "Testing initialisation from invalid units"
- self.assertRaises(AttributeError, D, banana=100)
-
- def testAccess(self):
- "Testing access in different units"
- d = D(m=100)
- self.assertEqual(d.km, 0.1)
- self.assertAlmostEqual(d.ft, 328.084, 3)
-
- def testAccessInvalid(self):
- "Testing access in invalid units"
- d = D(m=100)
- self.assertFalse(hasattr(d, 'banana'))
-
- def testAddition(self):
- "Test addition & subtraction"
- d1 = D(m=100)
- d2 = D(m=200)
-
- d3 = d1 + d2
- self.assertEqual(d3.m, 300)
- d3 += d1
- self.assertEqual(d3.m, 400)
-
- d4 = d1 - d2
- self.assertEqual(d4.m, -100)
- d4 -= d1
- self.assertEqual(d4.m, -200)
-
- with self.assertRaises(TypeError):
- d5 = d1 + 1
- self.fail('Distance + number should raise TypeError')
-
- with self.assertRaises(TypeError):
- d5 = d1 - 1
- self.fail('Distance - number should raise TypeError')
-
- with self.assertRaises(TypeError):
- d1 += 1
- self.fail('Distance += number should raise TypeError')
-
- with self.assertRaises(TypeError):
- d1 -= 1
- self.fail('Distance -= number should raise TypeError')
-
- def testMultiplication(self):
- "Test multiplication & division"
- d1 = D(m=100)
-
- d3 = d1 * 2
- self.assertEqual(d3.m, 200)
- d3 = 2 * d1
- self.assertEqual(d3.m, 200)
- d3 *= 5
- self.assertEqual(d3.m, 1000)
-
- d4 = d1 / 2
- self.assertEqual(d4.m, 50)
- d4 /= 5
- self.assertEqual(d4.m, 10)
- d5 = d1 / D(m=2)
- self.assertEqual(d5, 50)
-
- a5 = d1 * D(m=10)
- self.assertTrue(isinstance(a5, Area))
- self.assertEqual(a5.sq_m, 100*10)
-
- with self.assertRaises(TypeError):
- d1 *= D(m=1)
- self.fail('Distance *= Distance should raise TypeError')
-
- with self.assertRaises(TypeError):
- d1 /= D(m=1)
- self.fail('Distance /= Distance should raise TypeError')
-
- def testUnitConversions(self):
- "Testing default units during maths"
- d1 = D(m=100)
- d2 = D(km=1)
-
- d3 = d1 + d2
- self.assertEqual(d3._default_unit, 'm')
- d4 = d2 + d1
- self.assertEqual(d4._default_unit, 'km')
- d5 = d1 * 2
- self.assertEqual(d5._default_unit, 'm')
- d6 = d1 / 2
- self.assertEqual(d6._default_unit, 'm')
-
- def testComparisons(self):
- "Testing comparisons"
- d1 = D(m=100)
- d2 = D(km=1)
- d3 = D(km=0)
-
- self.assertTrue(d2 > d1)
- self.assertTrue(d1 == d1)
- self.assertTrue(d1 < d2)
- self.assertFalse(d3)
-
- def testUnitsStr(self):
- "Testing conversion to strings"
- d1 = D(m=100)
- d2 = D(km=3.5)
-
- self.assertEqual(str(d1), '100.0 m')
- self.assertEqual(str(d2), '3.5 km')
- self.assertEqual(repr(d1), 'Distance(m=100.0)')
- self.assertEqual(repr(d2), 'Distance(km=3.5)')
-
- def testUnitAttName(self):
- "Testing the `unit_attname` class method"
- unit_tuple = [('Yard', 'yd'), ('Nautical Mile', 'nm'), ('German legal metre', 'german_m'),
- ('Indian yard', 'indian_yd'), ('Chain (Sears)', 'chain_sears'), ('Chain', 'chain')]
- for nm, att in unit_tuple:
- self.assertEqual(att, D.unit_attname(nm))
-
-class AreaTest(unittest.TestCase):
- "Testing the Area object"
-
- def testInit(self):
- "Testing initialisation from valid units"
- a = Area(sq_m=100)
- self.assertEqual(a.sq_m, 100)
-
- a = A(sq_m=100)
- self.assertEqual(a.sq_m, 100)
-
- a = A(sq_mi=100)
- self.assertEqual(a.sq_m, 258998811.0336)
-
- def testInitInvaliA(self):
- "Testing initialisation from invalid units"
- self.assertRaises(AttributeError, A, banana=100)
-
- def testAccess(self):
- "Testing access in different units"
- a = A(sq_m=100)
- self.assertEqual(a.sq_km, 0.0001)
- self.assertAlmostEqual(a.sq_ft, 1076.391, 3)
-
- def testAccessInvaliA(self):
- "Testing access in invalid units"
- a = A(sq_m=100)
- self.assertFalse(hasattr(a, 'banana'))
-
- def testAddition(self):
- "Test addition & subtraction"
- a1 = A(sq_m=100)
- a2 = A(sq_m=200)
-
- a3 = a1 + a2
- self.assertEqual(a3.sq_m, 300)
- a3 += a1
- self.assertEqual(a3.sq_m, 400)
-
- a4 = a1 - a2
- self.assertEqual(a4.sq_m, -100)
- a4 -= a1
- self.assertEqual(a4.sq_m, -200)
-
- with self.assertRaises(TypeError):
- a5 = a1 + 1
- self.fail('Area + number should raise TypeError')
-
- with self.assertRaises(TypeError):
- a5 = a1 - 1
- self.fail('Area - number should raise TypeError')
-
- with self.assertRaises(TypeError):
- a1 += 1
- self.fail('Area += number should raise TypeError')
-
- with self.assertRaises(TypeError):
- a1 -= 1
- self.fail('Area -= number should raise TypeError')
-
- def testMultiplication(self):
- "Test multiplication & division"
- a1 = A(sq_m=100)
-
- a3 = a1 * 2
- self.assertEqual(a3.sq_m, 200)
- a3 = 2 * a1
- self.assertEqual(a3.sq_m, 200)
- a3 *= 5
- self.assertEqual(a3.sq_m, 1000)
-
- a4 = a1 / 2
- self.assertEqual(a4.sq_m, 50)
- a4 /= 5
- self.assertEqual(a4.sq_m, 10)
-
- with self.assertRaises(TypeError):
- a5 = a1 * A(sq_m=1)
- self.fail('Area * Area should raise TypeError')
-
- with self.assertRaises(TypeError):
- a1 *= A(sq_m=1)
- self.fail('Area *= Area should raise TypeError')
-
- with self.assertRaises(TypeError):
- a5 = a1 / A(sq_m=1)
- self.fail('Area / Area should raise TypeError')
-
- with self.assertRaises(TypeError):
- a1 /= A(sq_m=1)
- self.fail('Area /= Area should raise TypeError')
-
- def testUnitConversions(self):
- "Testing default units during maths"
- a1 = A(sq_m=100)
- a2 = A(sq_km=1)
-
- a3 = a1 + a2
- self.assertEqual(a3._default_unit, 'sq_m')
- a4 = a2 + a1
- self.assertEqual(a4._default_unit, 'sq_km')
- a5 = a1 * 2
- self.assertEqual(a5._default_unit, 'sq_m')
- a6 = a1 / 2
- self.assertEqual(a6._default_unit, 'sq_m')
-
- def testComparisons(self):
- "Testing comparisons"
- a1 = A(sq_m=100)
- a2 = A(sq_km=1)
- a3 = A(sq_km=0)
-
- self.assertTrue(a2 > a1)
- self.assertTrue(a1 == a1)
- self.assertTrue(a1 < a2)
- self.assertFalse(a3)
-
- def testUnitsStr(self):
- "Testing conversion to strings"
- a1 = A(sq_m=100)
- a2 = A(sq_km=3.5)
-
- self.assertEqual(str(a1), '100.0 sq_m')
- self.assertEqual(str(a2), '3.5 sq_km')
- self.assertEqual(repr(a1), 'Area(sq_m=100.0)')
- self.assertEqual(repr(a2), 'Area(sq_km=3.5)')
-
-def suite():
- s = unittest.TestSuite()
- s.addTest(unittest.makeSuite(DistanceTest))
- s.addTest(unittest.makeSuite(AreaTest))
- return s
-
-def run(verbosity=2):
- unittest.TextTestRunner(verbosity=verbosity).run(suite())
-
-if __name__=="__main__":
- run()
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/test_spatialrefsys.py b/lib/python2.7/site-packages/django/contrib/gis/tests/test_spatialrefsys.py
deleted file mode 100644
index e8bb5b5..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/test_spatialrefsys.py
+++ /dev/null
@@ -1,104 +0,0 @@
-from django.contrib.gis.gdal import HAS_GDAL
-from django.contrib.gis.tests.utils import (no_mysql, oracle, postgis,
- spatialite, HAS_SPATIALREFSYS, SpatialRefSys)
-from django.utils import six
-from django.utils import unittest
-
-
-test_srs = ({'srid' : 4326,
- 'auth_name' : ('EPSG', True),
- 'auth_srid' : 4326,
- # Only the beginning, because there are differences depending on installed libs
- 'srtext' : 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84"',
- # +ellps=WGS84 has been removed in the 4326 proj string in proj-4.8
- 'proj4_re' : r'\+proj=longlat (\+ellps=WGS84 )?\+datum=WGS84 \+no_defs ',
- 'spheroid' : 'WGS 84', 'name' : 'WGS 84',
- 'geographic' : True, 'projected' : False, 'spatialite' : True,
- 'ellipsoid' : (6378137.0, 6356752.3, 298.257223563), # From proj's "cs2cs -le" and Wikipedia (semi-minor only)
- 'eprec' : (1, 1, 9),
- },
- {'srid' : 32140,
- 'auth_name' : ('EPSG', False),
- 'auth_srid' : 32140,
- 'srtext' : 'PROJCS["NAD83 / Texas South Central",GEOGCS["NAD83",DATUM["North_American_Datum_1983",SPHEROID["GRS 1980"',
- 'proj4_re' : r'\+proj=lcc \+lat_1=30.28333333333333 \+lat_2=28.38333333333333 \+lat_0=27.83333333333333 '
- r'\+lon_0=-99 \+x_0=600000 \+y_0=4000000 (\+ellps=GRS80 )?'
- r'(\+datum=NAD83 |\+towgs84=0,0,0,0,0,0,0 )?\+units=m \+no_defs ',
- 'spheroid' : 'GRS 1980', 'name' : 'NAD83 / Texas South Central',
- 'geographic' : False, 'projected' : True, 'spatialite' : False,
- 'ellipsoid' : (6378137.0, 6356752.31414, 298.257222101), # From proj's "cs2cs -le" and Wikipedia (semi-minor only)
- 'eprec' : (1, 5, 10),
- },
- )
-
-@unittest.skipUnless(HAS_GDAL and HAS_SPATIALREFSYS,
- "SpatialRefSysTest needs gdal support and a spatial database")
-class SpatialRefSysTest(unittest.TestCase):
-
- @no_mysql
- def test01_retrieve(self):
- "Testing retrieval of SpatialRefSys model objects."
- for sd in test_srs:
- srs = SpatialRefSys.objects.get(srid=sd['srid'])
- self.assertEqual(sd['srid'], srs.srid)
-
- # Some of the authority names are borked on Oracle, e.g., SRID=32140.
- # also, Oracle Spatial seems to add extraneous info to fields, hence the
- # the testing with the 'startswith' flag.
- auth_name, oracle_flag = sd['auth_name']
- if postgis or (oracle and oracle_flag):
- self.assertEqual(True, srs.auth_name.startswith(auth_name))
-
- self.assertEqual(sd['auth_srid'], srs.auth_srid)
-
- # No proj.4 and different srtext on oracle backends :(
- if postgis:
- self.assertTrue(srs.wkt.startswith(sd['srtext']))
- six.assertRegex(self, srs.proj4text, sd['proj4_re'])
-
- @no_mysql
- def test02_osr(self):
- "Testing getting OSR objects from SpatialRefSys model objects."
- for sd in test_srs:
- sr = SpatialRefSys.objects.get(srid=sd['srid'])
- self.assertEqual(True, sr.spheroid.startswith(sd['spheroid']))
- self.assertEqual(sd['geographic'], sr.geographic)
- self.assertEqual(sd['projected'], sr.projected)
-
- if not (spatialite and not sd['spatialite']):
- # Can't get 'NAD83 / Texas South Central' from PROJ.4 string
- # on SpatiaLite
- self.assertEqual(True, sr.name.startswith(sd['name']))
-
- # Testing the SpatialReference object directly.
- if postgis or spatialite:
- srs = sr.srs
- six.assertRegex(self, srs.proj4, sd['proj4_re'])
- # No `srtext` field in the `spatial_ref_sys` table in SpatiaLite
- if not spatialite:
- self.assertTrue(srs.wkt.startswith(sd['srtext']))
-
- @no_mysql
- def test03_ellipsoid(self):
- "Testing the ellipsoid property."
- for sd in test_srs:
- # Getting the ellipsoid and precision parameters.
- ellps1 = sd['ellipsoid']
- prec = sd['eprec']
-
- # Getting our spatial reference and its ellipsoid
- srs = SpatialRefSys.objects.get(srid=sd['srid'])
- ellps2 = srs.ellipsoid
-
- for i in range(3):
- param1 = ellps1[i]
- param2 = ellps2[i]
- self.assertAlmostEqual(ellps1[i], ellps2[i], prec[i])
-
-def suite():
- s = unittest.TestSuite()
- s.addTest(unittest.makeSuite(SpatialRefSysTest))
- return s
-
-def run(verbosity=2):
- unittest.TextTestRunner(verbosity=verbosity).run(suite())
diff --git a/lib/python2.7/site-packages/django/contrib/gis/tests/utils.py b/lib/python2.7/site-packages/django/contrib/gis/tests/utils.py
deleted file mode 100644
index a09a3ab..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/tests/utils.py
+++ /dev/null
@@ -1,46 +0,0 @@
-from django.conf import settings
-from django.db import DEFAULT_DB_ALIAS
-
-# function that will pass a test.
-def pass_test(*args): return
-
-def no_backend(test_func, backend):
- "Use this decorator to disable test on specified backend."
- if settings.DATABASES[DEFAULT_DB_ALIAS]['ENGINE'].rsplit('.')[-1] == backend:
- return pass_test
- else:
- return test_func
-
-# Decorators to disable entire test functions for specific
-# spatial backends.
-def no_oracle(func): return no_backend(func, 'oracle')
-def no_postgis(func): return no_backend(func, 'postgis')
-def no_mysql(func): return no_backend(func, 'mysql')
-def no_spatialite(func): return no_backend(func, 'spatialite')
-
-# Shortcut booleans to omit only portions of tests.
-_default_db = settings.DATABASES[DEFAULT_DB_ALIAS]['ENGINE'].rsplit('.')[-1]
-oracle = _default_db == 'oracle'
-postgis = _default_db == 'postgis'
-mysql = _default_db == 'mysql'
-spatialite = _default_db == 'spatialite'
-
-HAS_SPATIALREFSYS = True
-if oracle and 'gis' in settings.DATABASES[DEFAULT_DB_ALIAS]['ENGINE']:
- from django.contrib.gis.db.backends.oracle.models import SpatialRefSys
-elif postgis:
- from django.contrib.gis.db.backends.postgis.models import SpatialRefSys
-elif spatialite:
- from django.contrib.gis.db.backends.spatialite.models import SpatialRefSys
-else:
- HAS_SPATIALREFSYS = False
- SpatialRefSys = None
-
-
-def has_spatial_db():
- # All databases must have spatial backends to run GeoDjango tests.
- spatial_dbs = [name for name, db_dict in settings.DATABASES.items()
- if db_dict['ENGINE'].startswith('django.contrib.gis')]
- return len(spatial_dbs) == len(settings.DATABASES)
-
-HAS_SPATIAL_DB = has_spatial_db()
diff --git a/lib/python2.7/site-packages/django/contrib/gis/utils/__init__.py b/lib/python2.7/site-packages/django/contrib/gis/utils/__init__.py
deleted file mode 100644
index c6617d2..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/utils/__init__.py
+++ /dev/null
@@ -1,17 +0,0 @@
-"""
- This module contains useful utilities for GeoDjango.
-"""
-# Importing the utilities that depend on GDAL, if available.
-from django.contrib.gis.gdal import HAS_GDAL
-if HAS_GDAL:
- from django.contrib.gis.utils.ogrinfo import ogrinfo, sample
- from django.contrib.gis.utils.ogrinspect import mapping, ogrinspect
- from django.contrib.gis.utils.srs import add_postgis_srs, add_srs_entry
- try:
- # LayerMapping requires DJANGO_SETTINGS_MODULE to be set,
- # so this needs to be in try/except.
- from django.contrib.gis.utils.layermapping import LayerMapping, LayerMapError
- except:
- pass
-
-from django.contrib.gis.utils.wkt import precision_wkt
diff --git a/lib/python2.7/site-packages/django/contrib/gis/utils/layermapping.py b/lib/python2.7/site-packages/django/contrib/gis/utils/layermapping.py
deleted file mode 100644
index a502aa2..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/utils/layermapping.py
+++ /dev/null
@@ -1,596 +0,0 @@
-# LayerMapping -- A Django Model/OGR Layer Mapping Utility
-"""
- The LayerMapping class provides a way to map the contents of OGR
- vector files (e.g. SHP files) to Geographic-enabled Django models.
-
- For more information, please consult the GeoDjango documentation:
- http://geodjango.org/docs/layermapping.html
-"""
-import sys
-from decimal import Decimal
-from django.core.exceptions import ObjectDoesNotExist
-from django.db import connections, router
-from django.contrib.gis.db.models import GeometryField
-from django.contrib.gis.gdal import (CoordTransform, DataSource,
- OGRException, OGRGeometry, OGRGeomType, SpatialReference)
-from django.contrib.gis.gdal.field import (
- OFTDate, OFTDateTime, OFTInteger, OFTReal, OFTString, OFTTime)
-from django.db import models, transaction
-from django.utils import six
-from django.utils.encoding import force_text
-
-
-# LayerMapping exceptions.
-class LayerMapError(Exception): pass
-class InvalidString(LayerMapError): pass
-class InvalidDecimal(LayerMapError): pass
-class InvalidInteger(LayerMapError): pass
-class MissingForeignKey(LayerMapError): pass
-
-class LayerMapping(object):
- "A class that maps OGR Layers to GeoDjango Models."
-
- # Acceptable 'base' types for a multi-geometry type.
- MULTI_TYPES = {1 : OGRGeomType('MultiPoint'),
- 2 : OGRGeomType('MultiLineString'),
- 3 : OGRGeomType('MultiPolygon'),
- OGRGeomType('Point25D').num : OGRGeomType('MultiPoint25D'),
- OGRGeomType('LineString25D').num : OGRGeomType('MultiLineString25D'),
- OGRGeomType('Polygon25D').num : OGRGeomType('MultiPolygon25D'),
- }
-
- # Acceptable Django field types and corresponding acceptable OGR
- # counterparts.
- FIELD_TYPES = {
- models.AutoField : OFTInteger,
- models.IntegerField : (OFTInteger, OFTReal, OFTString),
- models.FloatField : (OFTInteger, OFTReal),
- models.DateField : OFTDate,
- models.DateTimeField : OFTDateTime,
- models.EmailField : OFTString,
- models.TimeField : OFTTime,
- models.DecimalField : (OFTInteger, OFTReal),
- models.CharField : OFTString,
- models.SlugField : OFTString,
- models.TextField : OFTString,
- models.URLField : OFTString,
- models.BigIntegerField : (OFTInteger, OFTReal, OFTString),
- models.SmallIntegerField : (OFTInteger, OFTReal, OFTString),
- models.PositiveSmallIntegerField : (OFTInteger, OFTReal, OFTString),
- }
-
- def __init__(self, model, data, mapping, layer=0,
- source_srs=None, encoding='utf-8',
- transaction_mode='commit_on_success',
- transform=True, unique=None, using=None):
- """
- A LayerMapping object is initialized using the given Model (not an instance),
- a DataSource (or string path to an OGR-supported data file), and a mapping
- dictionary. See the module level docstring for more details and keyword
- argument usage.
- """
- # Getting the DataSource and the associated Layer.
- if isinstance(data, six.string_types):
- self.ds = DataSource(data, encoding=encoding)
- else:
- self.ds = data
- self.layer = self.ds[layer]
-
- self.using = using if using is not None else router.db_for_write(model)
- self.spatial_backend = connections[self.using].ops
-
- # Setting the mapping & model attributes.
- self.mapping = mapping
- self.model = model
-
- # Checking the layer -- intitialization of the object will fail if
- # things don't check out before hand.
- self.check_layer()
-
- # Getting the geometry column associated with the model (an
- # exception will be raised if there is no geometry column).
- if self.spatial_backend.mysql:
- transform = False
- else:
- self.geo_field = self.geometry_field()
-
- # Checking the source spatial reference system, and getting
- # the coordinate transformation object (unless the `transform`
- # keyword is set to False)
- if transform:
- self.source_srs = self.check_srs(source_srs)
- self.transform = self.coord_transform()
- else:
- self.transform = transform
-
- # Setting the encoding for OFTString fields, if specified.
- if encoding:
- # Making sure the encoding exists, if not a LookupError
- # exception will be thrown.
- from codecs import lookup
- lookup(encoding)
- self.encoding = encoding
- else:
- self.encoding = None
-
- if unique:
- self.check_unique(unique)
- transaction_mode = 'autocommit' # Has to be set to autocommit.
- self.unique = unique
- else:
- self.unique = None
-
- # Setting the transaction decorator with the function in the
- # transaction modes dictionary.
- self.transaction_mode = transaction_mode
- if transaction_mode == 'autocommit':
- self.transaction_decorator = None
- elif transaction_mode == 'commit_on_success':
- self.transaction_decorator = transaction.atomic
- else:
- raise LayerMapError('Unrecognized transaction mode: %s' % transaction_mode)
-
- #### Checking routines used during initialization ####
- def check_fid_range(self, fid_range):
- "This checks the `fid_range` keyword."
- if fid_range:
- if isinstance(fid_range, (tuple, list)):
- return slice(*fid_range)
- elif isinstance(fid_range, slice):
- return fid_range
- else:
- raise TypeError
- else:
- return None
-
- def check_layer(self):
- """
- This checks the Layer metadata, and ensures that it is compatible
- with the mapping information and model. Unlike previous revisions,
- there is no need to increment through each feature in the Layer.
- """
- # The geometry field of the model is set here.
- # TODO: Support more than one geometry field / model. However, this
- # depends on the GDAL Driver in use.
- self.geom_field = False
- self.fields = {}
-
- # Getting lists of the field names and the field types available in
- # the OGR Layer.
- ogr_fields = self.layer.fields
- ogr_field_types = self.layer.field_types
-
- # Function for determining if the OGR mapping field is in the Layer.
- def check_ogr_fld(ogr_map_fld):
- try:
- idx = ogr_fields.index(ogr_map_fld)
- except ValueError:
- raise LayerMapError('Given mapping OGR field "%s" not found in OGR Layer.' % ogr_map_fld)
- return idx
-
- # No need to increment through each feature in the model, simply check
- # the Layer metadata against what was given in the mapping dictionary.
- for field_name, ogr_name in self.mapping.items():
- # Ensuring that a corresponding field exists in the model
- # for the given field name in the mapping.
- try:
- model_field = self.model._meta.get_field(field_name)
- except models.fields.FieldDoesNotExist:
- raise LayerMapError('Given mapping field "%s" not in given Model fields.' % field_name)
-
- # Getting the string name for the Django field class (e.g., 'PointField').
- fld_name = model_field.__class__.__name__
-
- if isinstance(model_field, GeometryField):
- if self.geom_field:
- raise LayerMapError('LayerMapping does not support more than one GeometryField per model.')
-
- # Getting the coordinate dimension of the geometry field.
- coord_dim = model_field.dim
-
- try:
- if coord_dim == 3:
- gtype = OGRGeomType(ogr_name + '25D')
- else:
- gtype = OGRGeomType(ogr_name)
- except OGRException:
- raise LayerMapError('Invalid mapping for GeometryField "%s".' % field_name)
-
- # Making sure that the OGR Layer's Geometry is compatible.
- ltype = self.layer.geom_type
- if not (ltype.name.startswith(gtype.name) or self.make_multi(ltype, model_field)):
- raise LayerMapError('Invalid mapping geometry; model has %s%s, '
- 'layer geometry type is %s.' %
- (fld_name, '(dim=3)' if coord_dim == 3 else '', ltype))
-
- # Setting the `geom_field` attribute w/the name of the model field
- # that is a Geometry. Also setting the coordinate dimension
- # attribute.
- self.geom_field = field_name
- self.coord_dim = coord_dim
- fields_val = model_field
- elif isinstance(model_field, models.ForeignKey):
- if isinstance(ogr_name, dict):
- # Is every given related model mapping field in the Layer?
- rel_model = model_field.rel.to
- for rel_name, ogr_field in ogr_name.items():
- idx = check_ogr_fld(ogr_field)
- try:
- rel_field = rel_model._meta.get_field(rel_name)
- except models.fields.FieldDoesNotExist:
- raise LayerMapError('ForeignKey mapping field "%s" not in %s fields.' %
- (rel_name, rel_model.__class__.__name__))
- fields_val = rel_model
- else:
- raise TypeError('ForeignKey mapping must be of dictionary type.')
- else:
- # Is the model field type supported by LayerMapping?
- if not model_field.__class__ in self.FIELD_TYPES:
- raise LayerMapError('Django field type "%s" has no OGR mapping (yet).' % fld_name)
-
- # Is the OGR field in the Layer?
- idx = check_ogr_fld(ogr_name)
- ogr_field = ogr_field_types[idx]
-
- # Can the OGR field type be mapped to the Django field type?
- if not issubclass(ogr_field, self.FIELD_TYPES[model_field.__class__]):
- raise LayerMapError('OGR field "%s" (of type %s) cannot be mapped to Django %s.' %
- (ogr_field, ogr_field.__name__, fld_name))
- fields_val = model_field
-
- self.fields[field_name] = fields_val
-
- def check_srs(self, source_srs):
- "Checks the compatibility of the given spatial reference object."
-
- if isinstance(source_srs, SpatialReference):
- sr = source_srs
- elif isinstance(source_srs, self.spatial_backend.spatial_ref_sys()):
- sr = source_srs.srs
- elif isinstance(source_srs, (int, six.string_types)):
- sr = SpatialReference(source_srs)
- else:
- # Otherwise just pulling the SpatialReference from the layer
- sr = self.layer.srs
-
- if not sr:
- raise LayerMapError('No source reference system defined.')
- else:
- return sr
-
- def check_unique(self, unique):
- "Checks the `unique` keyword parameter -- may be a sequence or string."
- if isinstance(unique, (list, tuple)):
- # List of fields to determine uniqueness with
- for attr in unique:
- if not attr in self.mapping: raise ValueError
- elif isinstance(unique, six.string_types):
- # Only a single field passed in.
- if unique not in self.mapping: raise ValueError
- else:
- raise TypeError('Unique keyword argument must be set with a tuple, list, or string.')
-
- #### Keyword argument retrieval routines ####
- def feature_kwargs(self, feat):
- """
- Given an OGR Feature, this will return a dictionary of keyword arguments
- for constructing the mapped model.
- """
- # The keyword arguments for model construction.
- kwargs = {}
-
- # Incrementing through each model field and OGR field in the
- # dictionary mapping.
- for field_name, ogr_name in self.mapping.items():
- model_field = self.fields[field_name]
-
- if isinstance(model_field, GeometryField):
- # Verify OGR geometry.
- try:
- val = self.verify_geom(feat.geom, model_field)
- except OGRException:
- raise LayerMapError('Could not retrieve geometry from feature.')
- elif isinstance(model_field, models.base.ModelBase):
- # The related _model_, not a field was passed in -- indicating
- # another mapping for the related Model.
- val = self.verify_fk(feat, model_field, ogr_name)
- else:
- # Otherwise, verify OGR Field type.
- val = self.verify_ogr_field(feat[ogr_name], model_field)
-
- # Setting the keyword arguments for the field name with the
- # value obtained above.
- kwargs[field_name] = val
-
- return kwargs
-
- def unique_kwargs(self, kwargs):
- """
- Given the feature keyword arguments (from `feature_kwargs`) this routine
- will construct and return the uniqueness keyword arguments -- a subset
- of the feature kwargs.
- """
- if isinstance(self.unique, six.string_types):
- return {self.unique : kwargs[self.unique]}
- else:
- return dict((fld, kwargs[fld]) for fld in self.unique)
-
- #### Verification routines used in constructing model keyword arguments. ####
- def verify_ogr_field(self, ogr_field, model_field):
- """
- Verifies if the OGR Field contents are acceptable to the Django
- model field. If they are, the verified value is returned,
- otherwise the proper exception is raised.
- """
- if (isinstance(ogr_field, OFTString) and
- isinstance(model_field, (models.CharField, models.TextField))):
- if self.encoding:
- # The encoding for OGR data sources may be specified here
- # (e.g., 'cp437' for Census Bureau boundary files).
- val = force_text(ogr_field.value, self.encoding)
- else:
- val = ogr_field.value
- if model_field.max_length and len(val) > model_field.max_length:
- raise InvalidString('%s model field maximum string length is %s, given %s characters.' %
- (model_field.name, model_field.max_length, len(val)))
- elif isinstance(ogr_field, OFTReal) and isinstance(model_field, models.DecimalField):
- try:
- # Creating an instance of the Decimal value to use.
- d = Decimal(str(ogr_field.value))
- except:
- raise InvalidDecimal('Could not construct decimal from: %s' % ogr_field.value)
-
- # Getting the decimal value as a tuple.
- dtup = d.as_tuple()
- digits = dtup[1]
- d_idx = dtup[2] # index where the decimal is
-
- # Maximum amount of precision, or digits to the left of the decimal.
- max_prec = model_field.max_digits - model_field.decimal_places
-
- # Getting the digits to the left of the decimal place for the
- # given decimal.
- if d_idx < 0:
- n_prec = len(digits[:d_idx])
- else:
- n_prec = len(digits) + d_idx
-
- # If we have more than the maximum digits allowed, then throw an
- # InvalidDecimal exception.
- if n_prec > max_prec:
- raise InvalidDecimal('A DecimalField with max_digits %d, decimal_places %d must round to an absolute value less than 10^%d.' %
- (model_field.max_digits, model_field.decimal_places, max_prec))
- val = d
- elif isinstance(ogr_field, (OFTReal, OFTString)) and isinstance(model_field, models.IntegerField):
- # Attempt to convert any OFTReal and OFTString value to an OFTInteger.
- try:
- val = int(ogr_field.value)
- except:
- raise InvalidInteger('Could not construct integer from: %s' % ogr_field.value)
- else:
- val = ogr_field.value
- return val
-
- def verify_fk(self, feat, rel_model, rel_mapping):
- """
- Given an OGR Feature, the related model and its dictionary mapping,
- this routine will retrieve the related model for the ForeignKey
- mapping.
- """
- # TODO: It is expensive to retrieve a model for every record --
- # explore if an efficient mechanism exists for caching related
- # ForeignKey models.
-
- # Constructing and verifying the related model keyword arguments.
- fk_kwargs = {}
- for field_name, ogr_name in rel_mapping.items():
- fk_kwargs[field_name] = self.verify_ogr_field(feat[ogr_name], rel_model._meta.get_field(field_name))
-
- # Attempting to retrieve and return the related model.
- try:
- return rel_model.objects.using(self.using).get(**fk_kwargs)
- except ObjectDoesNotExist:
- raise MissingForeignKey('No ForeignKey %s model found with keyword arguments: %s' % (rel_model.__name__, fk_kwargs))
-
- def verify_geom(self, geom, model_field):
- """
- Verifies the geometry -- will construct and return a GeometryCollection
- if necessary (for example if the model field is MultiPolygonField while
- the mapped shapefile only contains Polygons).
- """
- # Downgrade a 3D geom to a 2D one, if necessary.
- if self.coord_dim != geom.coord_dim:
- geom.coord_dim = self.coord_dim
-
- if self.make_multi(geom.geom_type, model_field):
- # Constructing a multi-geometry type to contain the single geometry
- multi_type = self.MULTI_TYPES[geom.geom_type.num]
- g = OGRGeometry(multi_type)
- g.add(geom)
- else:
- g = geom
-
- # Transforming the geometry with our Coordinate Transformation object,
- # but only if the class variable `transform` is set w/a CoordTransform
- # object.
- if self.transform: g.transform(self.transform)
-
- # Returning the WKT of the geometry.
- return g.wkt
-
- #### Other model methods ####
- def coord_transform(self):
- "Returns the coordinate transformation object."
- SpatialRefSys = self.spatial_backend.spatial_ref_sys()
- try:
- # Getting the target spatial reference system
- target_srs = SpatialRefSys.objects.using(self.using).get(srid=self.geo_field.srid).srs
-
- # Creating the CoordTransform object
- return CoordTransform(self.source_srs, target_srs)
- except Exception as msg:
- new_msg = 'Could not translate between the data source and model geometry: %s' % msg
- six.reraise(LayerMapError, LayerMapError(new_msg), sys.exc_info()[2])
-
- def geometry_field(self):
- "Returns the GeometryField instance associated with the geographic column."
- # Use the `get_field_by_name` on the model's options so that we
- # get the correct field instance if there's model inheritance.
- opts = self.model._meta
- fld, model, direct, m2m = opts.get_field_by_name(self.geom_field)
- return fld
-
- def make_multi(self, geom_type, model_field):
- """
- Given the OGRGeomType for a geometry and its associated GeometryField,
- determine whether the geometry should be turned into a GeometryCollection.
- """
- return (geom_type.num in self.MULTI_TYPES and
- model_field.__class__.__name__ == 'Multi%s' % geom_type.django)
-
- def save(self, verbose=False, fid_range=False, step=False,
- progress=False, silent=False, stream=sys.stdout, strict=False):
- """
- Saves the contents from the OGR DataSource Layer into the database
- according to the mapping dictionary given at initialization.
-
- Keyword Parameters:
- verbose:
- If set, information will be printed subsequent to each model save
- executed on the database.
-
- fid_range:
- May be set with a slice or tuple of (begin, end) feature ID's to map
- from the data source. In other words, this keyword enables the user
- to selectively import a subset range of features in the geographic
- data source.
-
- step:
- If set with an integer, transactions will occur at every step
- interval. For example, if step=1000, a commit would occur after
- the 1,000th feature, the 2,000th feature etc.
-
- progress:
- When this keyword is set, status information will be printed giving
- the number of features processed and sucessfully saved. By default,
- progress information will pe printed every 1000 features processed,
- however, this default may be overridden by setting this keyword with an
- integer for the desired interval.
-
- stream:
- Status information will be written to this file handle. Defaults to
- using `sys.stdout`, but any object with a `write` method is supported.
-
- silent:
- By default, non-fatal error notifications are printed to stdout, but
- this keyword may be set to disable these notifications.
-
- strict:
- Execution of the model mapping will cease upon the first error
- encountered. The default behavior is to attempt to continue.
- """
- # Getting the default Feature ID range.
- default_range = self.check_fid_range(fid_range)
-
- # Setting the progress interval, if requested.
- if progress:
- if progress is True or not isinstance(progress, int):
- progress_interval = 1000
- else:
- progress_interval = progress
-
- def _save(feat_range=default_range, num_feat=0, num_saved=0):
- if feat_range:
- layer_iter = self.layer[feat_range]
- else:
- layer_iter = self.layer
-
- for feat in layer_iter:
- num_feat += 1
- # Getting the keyword arguments
- try:
- kwargs = self.feature_kwargs(feat)
- except LayerMapError as msg:
- # Something borked the validation
- if strict: raise
- elif not silent:
- stream.write('Ignoring Feature ID %s because: %s\n' % (feat.fid, msg))
- else:
- # Constructing the model using the keyword args
- is_update = False
- if self.unique:
- # If we want unique models on a particular field, handle the
- # geometry appropriately.
- try:
- # Getting the keyword arguments and retrieving
- # the unique model.
- u_kwargs = self.unique_kwargs(kwargs)
- m = self.model.objects.using(self.using).get(**u_kwargs)
- is_update = True
-
- # Getting the geometry (in OGR form), creating
- # one from the kwargs WKT, adding in additional
- # geometries, and update the attribute with the
- # just-updated geometry WKT.
- geom = getattr(m, self.geom_field).ogr
- new = OGRGeometry(kwargs[self.geom_field])
- for g in new: geom.add(g)
- setattr(m, self.geom_field, geom.wkt)
- except ObjectDoesNotExist:
- # No unique model exists yet, create.
- m = self.model(**kwargs)
- else:
- m = self.model(**kwargs)
-
- try:
- # Attempting to save.
- m.save(using=self.using)
- num_saved += 1
- if verbose: stream.write('%s: %s\n' % ('Updated' if is_update else 'Saved', m))
- except SystemExit:
- raise
- except Exception as msg:
- if strict:
- # Bailing out if the `strict` keyword is set.
- if not silent:
- stream.write('Failed to save the feature (id: %s) into the model with the keyword arguments:\n' % feat.fid)
- stream.write('%s\n' % kwargs)
- raise
- elif not silent:
- stream.write('Failed to save %s:\n %s\nContinuing\n' % (kwargs, msg))
-
- # Printing progress information, if requested.
- if progress and num_feat % progress_interval == 0:
- stream.write('Processed %d features, saved %d ...\n' % (num_feat, num_saved))
-
- # Only used for status output purposes -- incremental saving uses the
- # values returned here.
- return num_saved, num_feat
-
- if self.transaction_decorator is not None:
- _save = self.transaction_decorator(_save)
-
- nfeat = self.layer.num_feat
- if step and isinstance(step, int) and step < nfeat:
- # Incremental saving is requested at the given interval (step)
- if default_range:
- raise LayerMapError('The `step` keyword may not be used in conjunction with the `fid_range` keyword.')
- beg, num_feat, num_saved = (0, 0, 0)
- indices = range(step, nfeat, step)
- n_i = len(indices)
-
- for i, end in enumerate(indices):
- # Constructing the slice to use for this step; the last slice is
- # special (e.g, [100:] instead of [90:100]).
- if i+1 == n_i: step_slice = slice(beg, None)
- else: step_slice = slice(beg, end)
-
- try:
- num_feat, num_saved = _save(step_slice, num_feat, num_saved)
- beg = end
- except:
- stream.write('%s\nFailed to save slice: %s\n' % ('=-' * 20, step_slice))
- raise
- else:
- # Otherwise, just calling the previously defined _save() function.
- _save()
diff --git a/lib/python2.7/site-packages/django/contrib/gis/utils/ogrinfo.py b/lib/python2.7/site-packages/django/contrib/gis/utils/ogrinfo.py
deleted file mode 100644
index d9c3e09..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/utils/ogrinfo.py
+++ /dev/null
@@ -1,53 +0,0 @@
-"""
-This module includes some utility functions for inspecting the layout
-of a GDAL data source -- the functionality is analogous to the output
-produced by the `ogrinfo` utility.
-"""
-
-from django.contrib.gis.gdal import DataSource
-from django.contrib.gis.gdal.geometries import GEO_CLASSES
-
-def ogrinfo(data_source, num_features=10):
- """
- Walks the available layers in the supplied `data_source`, displaying
- the fields for the first `num_features` features.
- """
-
- # Checking the parameters.
- if isinstance(data_source, str):
- data_source = DataSource(data_source)
- elif isinstance(data_source, DataSource):
- pass
- else:
- raise Exception('Data source parameter must be a string or a DataSource object.')
-
- for i, layer in enumerate(data_source):
- print("data source : %s" % data_source.name)
- print("==== layer %s" % i)
- print(" shape type: %s" % GEO_CLASSES[layer.geom_type.num].__name__)
- print(" # features: %s" % len(layer))
- print(" srs: %s" % layer.srs)
- extent_tup = layer.extent.tuple
- print(" extent: %s - %s" % (extent_tup[0:2], extent_tup[2:4]))
- print("Displaying the first %s features ====" % num_features)
-
- width = max(*map(len,layer.fields))
- fmt = " %%%ss: %%s" % width
- for j, feature in enumerate(layer[:num_features]):
- print("=== Feature %s" % j)
- for fld_name in layer.fields:
- type_name = feature[fld_name].type_name
- output = fmt % (fld_name, type_name)
- val = feature.get(fld_name)
- if val:
- if isinstance(val, str):
- val_fmt = ' ("%s")'
- else:
- val_fmt = ' (%s)'
- output += val_fmt % val
- else:
- output += ' (None)'
- print(output)
-
-# For backwards compatibility.
-sample = ogrinfo
diff --git a/lib/python2.7/site-packages/django/contrib/gis/utils/ogrinspect.py b/lib/python2.7/site-packages/django/contrib/gis/utils/ogrinspect.py
deleted file mode 100644
index b7cfafd..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/utils/ogrinspect.py
+++ /dev/null
@@ -1,225 +0,0 @@
-"""
-This module is for inspecting OGR data sources and generating either
-models for GeoDjango and/or mapping dictionaries for use with the
-`LayerMapping` utility.
-"""
-from django.utils.six.moves import zip
-# Requires GDAL to use.
-from django.contrib.gis.gdal import DataSource
-from django.contrib.gis.gdal.field import OFTDate, OFTDateTime, OFTInteger, OFTReal, OFTString, OFTTime
-from django.utils import six
-
-def mapping(data_source, geom_name='geom', layer_key=0, multi_geom=False):
- """
- Given a DataSource, generates a dictionary that may be used
- for invoking the LayerMapping utility.
-
- Keyword Arguments:
- `geom_name` => The name of the geometry field to use for the model.
-
- `layer_key` => The key for specifying which layer in the DataSource to use;
- defaults to 0 (the first layer). May be an integer index or a string
- identifier for the layer.
-
- `multi_geom` => Boolean (default: False) - specify as multigeometry.
- """
- if isinstance(data_source, six.string_types):
- # Instantiating the DataSource from the string.
- data_source = DataSource(data_source)
- elif isinstance(data_source, DataSource):
- pass
- else:
- raise TypeError('Data source parameter must be a string or a DataSource object.')
-
- # Creating the dictionary.
- _mapping = {}
-
- # Generating the field name for each field in the layer.
- for field in data_source[layer_key].fields:
- mfield = field.lower()
- if mfield[-1:] == '_': mfield += 'field'
- _mapping[mfield] = field
- gtype = data_source[layer_key].geom_type
- if multi_geom and gtype.num in (1, 2, 3): prefix = 'MULTI'
- else: prefix = ''
- _mapping[geom_name] = prefix + str(gtype).upper()
- return _mapping
-
-def ogrinspect(*args, **kwargs):
- """
- Given a data source (either a string or a DataSource object) and a string
- model name this function will generate a GeoDjango model.
-
- Usage:
-
- >>> from django.contrib.gis.utils import ogrinspect
- >>> ogrinspect('/path/to/shapefile.shp','NewModel')
-
- ...will print model definition to stout
-
- or put this in a python script and use to redirect the output to a new
- model like:
-
- $ python generate_model.py > myapp/models.py
-
- # generate_model.py
- from django.contrib.gis.utils import ogrinspect
- shp_file = 'data/mapping_hacks/world_borders.shp'
- model_name = 'WorldBorders'
-
- print(ogrinspect(shp_file, model_name, multi_geom=True, srid=4326,
- geom_name='shapes', blank=True))
-
- Required Arguments
- `datasource` => string or DataSource object to file pointer
-
- `model name` => string of name of new model class to create
-
- Optional Keyword Arguments
- `geom_name` => For specifying the model name for the Geometry Field.
- Otherwise will default to `geom`
-
- `layer_key` => The key for specifying which layer in the DataSource to use;
- defaults to 0 (the first layer). May be an integer index or a string
- identifier for the layer.
-
- `srid` => The SRID to use for the Geometry Field. If it can be determined,
- the SRID of the datasource is used.
-
- `multi_geom` => Boolean (default: False) - specify as multigeometry.
-
- `name_field` => String - specifies a field name to return for the
- `__unicode__`/`__str__` function (which will be generated if specified).
-
- `imports` => Boolean (default: True) - set to False to omit the
- `from django.contrib.gis.db import models` code from the
- autogenerated models thus avoiding duplicated imports when building
- more than one model by batching ogrinspect()
-
- `decimal` => Boolean or sequence (default: False). When set to True
- all generated model fields corresponding to the `OFTReal` type will
- be `DecimalField` instead of `FloatField`. A sequence of specific
- field names to generate as `DecimalField` may also be used.
-
- `blank` => Boolean or sequence (default: False). When set to True all
- generated model fields will have `blank=True`. If the user wants to
- give specific fields to have blank, then a list/tuple of OGR field
- names may be used.
-
- `null` => Boolean (default: False) - When set to True all generated
- model fields will have `null=True`. If the user wants to specify
- give specific fields to have null, then a list/tuple of OGR field
- names may be used.
-
- Note: This routine calls the _ogrinspect() helper to do the heavy lifting.
- """
- return '\n'.join(s for s in _ogrinspect(*args, **kwargs))
-
-def _ogrinspect(data_source, model_name, geom_name='geom', layer_key=0, srid=None,
- multi_geom=False, name_field=None, imports=True,
- decimal=False, blank=False, null=False):
- """
- Helper routine for `ogrinspect` that generates GeoDjango models corresponding
- to the given data source. See the `ogrinspect` docstring for more details.
- """
- # Getting the DataSource
- if isinstance(data_source, six.string_types):
- data_source = DataSource(data_source)
- elif isinstance(data_source, DataSource):
- pass
- else:
- raise TypeError('Data source parameter must be a string or a DataSource object.')
-
- # Getting the layer corresponding to the layer key and getting
- # a string listing of all OGR fields in the Layer.
- layer = data_source[layer_key]
- ogr_fields = layer.fields
-
- # Creating lists from the `null`, `blank`, and `decimal`
- # keyword arguments.
- def process_kwarg(kwarg):
- if isinstance(kwarg, (list, tuple)):
- return [s.lower() for s in kwarg]
- elif kwarg:
- return [s.lower() for s in ogr_fields]
- else:
- return []
- null_fields = process_kwarg(null)
- blank_fields = process_kwarg(blank)
- decimal_fields = process_kwarg(decimal)
-
- # Gets the `null` and `blank` keywords for the given field name.
- def get_kwargs_str(field_name):
- kwlist = []
- if field_name.lower() in null_fields: kwlist.append('null=True')
- if field_name.lower() in blank_fields: kwlist.append('blank=True')
- if kwlist: return ', ' + ', '.join(kwlist)
- else: return ''
-
- # For those wishing to disable the imports.
- if imports:
- yield '# This is an auto-generated Django model module created by ogrinspect.'
- yield 'from django.contrib.gis.db import models'
- yield ''
-
- yield 'class %s(models.Model):' % model_name
-
- for field_name, width, precision, field_type in zip(ogr_fields, layer.field_widths, layer.field_precisions, layer.field_types):
- # The model field name.
- mfield = field_name.lower()
- if mfield[-1:] == '_': mfield += 'field'
-
- # Getting the keyword args string.
- kwargs_str = get_kwargs_str(field_name)
-
- if field_type is OFTReal:
- # By default OFTReals are mapped to `FloatField`, however, they
- # may also be mapped to `DecimalField` if specified in the
- # `decimal` keyword.
- if field_name.lower() in decimal_fields:
- yield ' %s = models.DecimalField(max_digits=%d, decimal_places=%d%s)' % (mfield, width, precision, kwargs_str)
- else:
- yield ' %s = models.FloatField(%s)' % (mfield, kwargs_str[2:])
- elif field_type is OFTInteger:
- yield ' %s = models.IntegerField(%s)' % (mfield, kwargs_str[2:])
- elif field_type is OFTString:
- yield ' %s = models.CharField(max_length=%s%s)' % (mfield, width, kwargs_str)
- elif field_type is OFTDate:
- yield ' %s = models.DateField(%s)' % (mfield, kwargs_str[2:])
- elif field_type is OFTDateTime:
- yield ' %s = models.DateTimeField(%s)' % (mfield, kwargs_str[2:])
- elif field_type is OFTTime:
- yield ' %s = models.TimeField(%s)' % (mfield, kwargs_str[2:])
- else:
- raise TypeError('Unknown field type %s in %s' % (field_type, mfield))
-
- # TODO: Autodetection of multigeometry types (see #7218).
- gtype = layer.geom_type
- if multi_geom and gtype.num in (1, 2, 3):
- geom_field = 'Multi%s' % gtype.django
- else:
- geom_field = gtype.django
-
- # Setting up the SRID keyword string.
- if srid is None:
- if layer.srs is None:
- srid_str = 'srid=-1'
- else:
- srid = layer.srs.srid
- if srid is None:
- srid_str = 'srid=-1'
- elif srid == 4326:
- # WGS84 is already the default.
- srid_str = ''
- else:
- srid_str = 'srid=%s' % srid
- else:
- srid_str = 'srid=%s' % srid
-
- yield ' %s = models.%s(%s)' % (geom_name, geom_field, srid_str)
- yield ' objects = models.GeoManager()'
-
- if name_field:
- yield ''
- yield ' def __%s__(self): return self.%s' % (
- 'str' if six.PY3 else 'unicode', name_field)
diff --git a/lib/python2.7/site-packages/django/contrib/gis/utils/srs.py b/lib/python2.7/site-packages/django/contrib/gis/utils/srs.py
deleted file mode 100644
index fe2f291..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/utils/srs.py
+++ /dev/null
@@ -1,80 +0,0 @@
-from django.contrib.gis.gdal import SpatialReference
-
-def add_srs_entry(srs, auth_name='EPSG', auth_srid=None, ref_sys_name=None,
- database=None):
- """
- This function takes a GDAL SpatialReference system and adds its information
- to the `spatial_ref_sys` table of the spatial backend. Doing this enables
- database-level spatial transformations for the backend. Thus, this utility
- is useful for adding spatial reference systems not included by default with
- the backend -- for example, the so-called "Google Maps Mercator Projection"
- is excluded in PostGIS 1.3 and below, and the following adds it to the
- `spatial_ref_sys` table:
-
- >>> from django.contrib.gis.utils import add_srs_entry
- >>> add_srs_entry(900913)
-
- Keyword Arguments:
- auth_name:
- This keyword may be customized with the value of the `auth_name` field.
- Defaults to 'EPSG'.
-
- auth_srid:
- This keyword may be customized with the value of the `auth_srid` field.
- Defaults to the SRID determined by GDAL.
-
- ref_sys_name:
- For SpatiaLite users only, sets the value of the `ref_sys_name` field.
- Defaults to the name determined by GDAL.
-
- database:
- The name of the database connection to use; the default is the value
- of `django.db.DEFAULT_DB_ALIAS` (at the time of this writing, it's value
- is 'default').
- """
- from django.db import connections, DEFAULT_DB_ALIAS
- if not database:
- database = DEFAULT_DB_ALIAS
- connection = connections[database]
-
- if not hasattr(connection.ops, 'spatial_version'):
- raise Exception('The `add_srs_entry` utility only works '
- 'with spatial backends.')
- if connection.ops.oracle or connection.ops.mysql:
- raise Exception('This utility does not support the '
- 'Oracle or MySQL spatial backends.')
- SpatialRefSys = connection.ops.spatial_ref_sys()
-
- # If argument is not a `SpatialReference` instance, use it as parameter
- # to construct a `SpatialReference` instance.
- if not isinstance(srs, SpatialReference):
- srs = SpatialReference(srs)
-
- if srs.srid is None:
- raise Exception('Spatial reference requires an SRID to be '
- 'compatible with the spatial backend.')
-
- # Initializing the keyword arguments dictionary for both PostGIS
- # and SpatiaLite.
- kwargs = {'srid' : srs.srid,
- 'auth_name' : auth_name,
- 'auth_srid' : auth_srid or srs.srid,
- 'proj4text' : srs.proj4,
- }
-
- # Backend-specific fields for the SpatialRefSys model.
- if connection.ops.postgis:
- kwargs['srtext'] = srs.wkt
- if connection.ops.spatialite:
- kwargs['ref_sys_name'] = ref_sys_name or srs.name
-
- # Creating the spatial_ref_sys model.
- try:
- # Try getting via SRID only, because using all kwargs may
- # differ from exact wkt/proj in database.
- sr = SpatialRefSys.objects.using(database).get(srid=srs.srid)
- except SpatialRefSys.DoesNotExist:
- sr = SpatialRefSys.objects.using(database).create(**kwargs)
-
-# Alias is for backwards-compatibility purposes.
-add_postgis_srs = add_srs_entry
diff --git a/lib/python2.7/site-packages/django/contrib/gis/utils/wkt.py b/lib/python2.7/site-packages/django/contrib/gis/utils/wkt.py
deleted file mode 100644
index d60eed3..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/utils/wkt.py
+++ /dev/null
@@ -1,57 +0,0 @@
-"""
- Utilities for manipulating Geometry WKT.
-"""
-
-from django.utils import six
-
-def precision_wkt(geom, prec):
- """
- Returns WKT text of the geometry according to the given precision (an
- integer or a string). If the precision is an integer, then the decimal
- places of coordinates WKT will be truncated to that number:
-
- >>> pnt = Point(5, 23)
- >>> pnt.wkt
- 'POINT (5.0000000000000000 23.0000000000000000)'
- >>> precision(geom, 1)
- 'POINT (5.0 23.0)'
-
- If the precision is a string, it must be valid Python format string
- (e.g., '%20.7f') -- thus, you should know what you're doing.
- """
- if isinstance(prec, int):
- num_fmt = '%%.%df' % prec
- elif isinstance(prec, six.string_types):
- num_fmt = prec
- else:
- raise TypeError
-
- # TODO: Support 3D geometries.
- coord_fmt = ' '.join([num_fmt, num_fmt])
-
- def formatted_coords(coords):
- return ','.join([coord_fmt % c[:2] for c in coords])
-
- def formatted_poly(poly):
- return ','.join(['(%s)' % formatted_coords(r) for r in poly])
-
- def formatted_geom(g):
- gtype = str(g.geom_type).upper()
- yield '%s(' % gtype
- if gtype == 'POINT':
- yield formatted_coords((g.coords,))
- elif gtype in ('LINESTRING', 'LINEARRING'):
- yield formatted_coords(g.coords)
- elif gtype in ('POLYGON', 'MULTILINESTRING'):
- yield formatted_poly(g)
- elif gtype == 'MULTIPOINT':
- yield formatted_coords(g.coords)
- elif gtype == 'MULTIPOLYGON':
- yield ','.join(['(%s)' % formatted_poly(p) for p in g])
- elif gtype == 'GEOMETRYCOLLECTION':
- yield ','.join([''.join([wkt for wkt in formatted_geom(child)]) for child in g])
- else:
- raise TypeError
- yield ')'
-
- return ''.join([wkt for wkt in formatted_geom(geom)])
diff --git a/lib/python2.7/site-packages/django/contrib/gis/views.py b/lib/python2.7/site-packages/django/contrib/gis/views.py
deleted file mode 100644
index 3fa8f04..0000000
--- a/lib/python2.7/site-packages/django/contrib/gis/views.py
+++ /dev/null
@@ -1,25 +0,0 @@
-from __future__ import unicode_literals
-
-from django.http import Http404
-from django.utils.translation import ugettext as _
-
-def feed(request, url, feed_dict=None):
- """Provided for backwards compatibility."""
- if not feed_dict:
- raise Http404(_("No feeds are registered."))
-
- try:
- slug, param = url.split('/', 1)
- except ValueError:
- slug, param = url, ''
-
- try:
- f = feed_dict[slug]
- except KeyError:
- raise Http404(_("Slug %r isn't registered.") % slug)
-
- instance = f()
- instance.feed_url = getattr(f, 'feed_url', None) or request.path
- instance.title_template = f.title_template or ('feeds/%s_title.html' % slug)
- instance.description_template = f.description_template or ('feeds/%s_description.html' % slug)
- return instance(request)
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/__init__.py b/lib/python2.7/site-packages/django/contrib/humanize/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ar/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/ar/LC_MESSAGES/django.mo
deleted file mode 100644
index 611d4b3..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ar/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ar/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/ar/LC_MESSAGES/django.po
deleted file mode 100644
index 51c0cec..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ar/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,421 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# dado_eyad <d.eyad.t@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ossama Khayat <okhayat@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/"
-"ar/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "اليوم"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "أمس"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "غداً"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr " "
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr " "
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr " "
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr " "
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f مليون"
-msgstr[1] "%(value).1f مليون"
-msgstr[2] "%(value).1f مليونان"
-msgstr[3] "%(value).1f مليون"
-msgstr[4] "%(value).1f مليون"
-msgstr[5] "%(value).1f مليون"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f مليار"
-msgstr[1] "%(value).1f مليار"
-msgstr[2] "%(value).1f ملياران"
-msgstr[3] "%(value).1f مليار"
-msgstr[4] "%(value).1f مليار"
-msgstr[5] "%(value).1f مليار"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f ترليون"
-msgstr[1] "%(value).1f ترليون"
-msgstr[2] "%(value).1f ترليونان"
-msgstr[3] "%(value).1f ترليونات"
-msgstr[4] "%(value).1f ترليون"
-msgstr[5] "%(value).1f ترليون"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "واحد"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "إثنان"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "ثلالثة"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "أربعة"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "خمسة"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "ستة"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "سبعة"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "ثمانية"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "تسعة"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s مضت"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "الآن"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s من الآن"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-msgstr[4] ""
-msgstr[5] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/az/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/az/LC_MESSAGES/django.mo
deleted file mode 100644
index 2afe890..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/az/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/az/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/az/LC_MESSAGES/django.po
deleted file mode 100644
index 3b5fad9..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/az/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,279 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Ismayilov <ali@ismailov.info>, 2011
-# claudep <claude@2xlibre.net>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/"
-"language/az/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: az\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "bu gün"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "dünən"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "sabah"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "-ıncı"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "-ıncı"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "-ıncı"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "-ıncı"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milyon"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s milyon"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milyard"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s milyard"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f trilyon"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s trilyon"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "bir"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "iki"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "üç"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "dörd"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "beş"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "altı"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "yeddi"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "səkkiz"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "doqquz"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s əvvəl"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "indi"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "%(count)s saniyə əvvəl"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "%(count)s dəqiqə əvvəl"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "%(count)s saat əvvəl"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s sonra"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "%(count)s saniyə sonra"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "%(count)s dəqiqə sonra"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "%(count)s saat sonra"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/be/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/be/LC_MESSAGES/django.mo
deleted file mode 100644
index 1f5f74a..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/be/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/be/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/be/LC_MESSAGES/django.po
deleted file mode 100644
index e12f4ce..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/be/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,362 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/"
-"language/be/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: be\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "сёньня"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "ўчора"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "заўтра"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "ы"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "ы"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "і"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "і"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f мільён"
-msgstr[1] "%(value).1f мільёны"
-msgstr[2] "%(value).1f мільёнаў"
-msgstr[3] "%(value).1f мільёнаў"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s мільён"
-msgstr[1] "%(value)s мільёны"
-msgstr[2] "%(value)s мільёнаў"
-msgstr[3] "%(value)s мільёнаў"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f мільярд"
-msgstr[1] "%(value).1f мільярды"
-msgstr[2] "%(value).1f мільярдаў"
-msgstr[3] "%(value).1f мільярдаў"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value).s мільярд"
-msgstr[1] "%(value)s мільярды"
-msgstr[2] "%(value)s мільярдаў"
-msgstr[3] "%(value)s мільярдаў"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f трыльён"
-msgstr[1] "%(value).1f трыльёны"
-msgstr[2] "%(value).1f трыльёнаў"
-msgstr[3] "%(value).1f трыльёнаў"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s трыльён"
-msgstr[1] "%(value)s трыльёны"
-msgstr[2] "%(value)s трыльёнаў"
-msgstr[3] "%(value)s трыльёнаў"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f квадрыльён"
-msgstr[1] "%(value).1f квадрыльёны"
-msgstr[2] "%(value).1f квадрыльёнаў"
-msgstr[3] "%(value).1f квадрыльёнаў"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s квадрыльён"
-msgstr[1] "%(value)s квадрыльёны"
-msgstr[2] "%(value)s квадрыльёнаў"
-msgstr[3] "%(value)s квадрыльёнаў"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f квінтыльён"
-msgstr[1] "%(value).1f квінтыльёны"
-msgstr[2] "%(value).1f квінтыльёнаў"
-msgstr[3] "%(value).1f квінтыльёнаў"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s квінтыльён"
-msgstr[1] "%(value)s квінтыльёны"
-msgstr[2] "%(value)s квінтыльёнаў"
-msgstr[3] "%(value)s квінтыльёнаў"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f сэкстыльён"
-msgstr[1] "%(value).1f сэкстыльёны"
-msgstr[2] "%(value).1f сэкстыльёнаў"
-msgstr[3] "%(value).1f сэкстыльёнаў"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s сэкстыльён"
-msgstr[1] "%(value)s сэкстыльёны"
-msgstr[2] "%(value)s сэкстыльёнаў"
-msgstr[3] "%(value)s сэкстыльёнаў"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f сэптыльён"
-msgstr[1] "%(value).1f сэптыльёны"
-msgstr[2] "%(value).1f сэптыльёнаў"
-msgstr[3] "%(value).1f сэптыльёнаў"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s сэптыльён"
-msgstr[1] "%(value)s сэптыльёны"
-msgstr[2] "%(value)s сэптыльёнаў"
-msgstr[3] "%(value)s сэптыльёнаў"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f актыльён"
-msgstr[1] "%(value).1f актыльёны"
-msgstr[2] "%(value).1f актыльёнаў"
-msgstr[3] "%(value).1f актыльёнаў"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s актыльён"
-msgstr[1] "%(value)s актыльёны"
-msgstr[2] "%(value)s актыльёнаў"
-msgstr[3] "%(value)s актыльёнаў"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f нанільён"
-msgstr[1] "%(value).1f нанільёны"
-msgstr[2] "%(value).1f нанільёнаў"
-msgstr[3] "%(value).1f нанільёнаў"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s нанільён"
-msgstr[1] "%(value)s нанільёны"
-msgstr[2] "%(value)s нанільёнаў"
-msgstr[3] "%(value)s нанільёнаў"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f дэцыльён"
-msgstr[1] "%(value).1f дэцыльёны"
-msgstr[2] "%(value).1f дэцыльёнаў"
-msgstr[3] "%(value).1f дэцыльёнаў"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s дэцыльён"
-msgstr[1] "%(value)s дэцыльёны"
-msgstr[2] "%(value)s дэцыльёнаў"
-msgstr[3] "%(value)s дэцыльёнаў"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f ґуґал"
-msgstr[1] "%(value).1f ґуґлы"
-msgstr[2] "%(value).1f ґуґлаў"
-msgstr[3] "%(value).1f ґуґлаў"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s ґуґал"
-msgstr[1] "%(value)s ґуґлы"
-msgstr[2] "%(value)s ґуґлаў"
-msgstr[3] "%(value)s ґуґлаў"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "адзін"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "два"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "тры"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "чатыры"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "пяць"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "шэсьць"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "сем"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "восем"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "дзевяць"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s таму"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "зараз"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "%(count)s сэкунду таму"
-msgstr[1] "%(count)s сэкунды таму"
-msgstr[2] "%(count)s сэкундаў таму"
-msgstr[3] "%(count)s сэкундаў таму"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "%(count)s хвіліну таму"
-msgstr[1] "%(count)s хвіліны таму"
-msgstr[2] "%(count)s хвілінаў таму"
-msgstr[3] "%(count)s хвілінаў таму"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "%(count)s гадзіну таму"
-msgstr[1] "%(count)s гадзіны таму"
-msgstr[2] "%(count)s гадзінаў таму"
-msgstr[3] "%(count)s гадзінаў таму"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "праз %(delta)s"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "праз %(count)s сэкунду"
-msgstr[1] "праз %(count)s сэкунды"
-msgstr[2] "праз %(count)s сэкундаў"
-msgstr[3] "праз %(count)s сэкундаў"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "праз %(count)s хвіліну"
-msgstr[1] "праз %(count)s хвіліны"
-msgstr[2] "праз %(count)s хвілінаў"
-msgstr[3] "праз %(count)s хвілінаў"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "праз %(count)s гадзіну"
-msgstr[1] "праз %(count)s гадзіны"
-msgstr[2] "праз %(count)s гадзінаў"
-msgstr[3] "праз %(count)s гадзінаў"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/bg/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/bg/LC_MESSAGES/django.mo
deleted file mode 100644
index 2685927..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/bg/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/bg/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/bg/LC_MESSAGES/django.po
deleted file mode 100644
index 5ba1aab..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/bg/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,308 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Georgi Kostadinov <grgkostadinov@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Todor Lube <tlubenov@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/"
-"language/bg/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bg\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "днес"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "вчера"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "Утре"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "и"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "ви"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "ри"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "ти"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f милион"
-msgstr[1] "%(value).1f милиона"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s милион"
-msgstr[1] "%(value)s милиона"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f милиард"
-msgstr[1] "%(value).1f милиарда"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s милиард"
-msgstr[1] "%(value)s милиарда"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f трилион"
-msgstr[1] "%(value).1f трилиона"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s трилион"
-msgstr[1] "%(value)s трилиона"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f квадрилион"
-msgstr[1] "%(value).1f квадрилиона"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s квадрилион"
-msgstr[1] "%(value)s квадрилиона"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f квинтилион"
-msgstr[1] "%(value).1f квинтилиона"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s квинтилион"
-msgstr[1] "%(value)s квинтилиона"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f секстилион"
-msgstr[1] "%(value).1f секстилиона"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s секстилион"
-msgstr[1] "%(value)s секстилиона"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f септилион"
-msgstr[1] "%(value).1f септилиона"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s септилион"
-msgstr[1] "%(value)s септилиона"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f октилион"
-msgstr[1] "%(value).1f октилиона"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s октилион"
-msgstr[1] "%(value)s октилиона"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f нонилион"
-msgstr[1] "%(value).1f нонилиона"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s нонилион"
-msgstr[1] "%(value)s нонилиона"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f децилион"
-msgstr[1] "%(value).1f децилиона"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s децилион"
-msgstr[1] "%(value)s децилиона"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f гугол"
-msgstr[1] "%(value).1f гугола"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s гугол"
-msgstr[1] "%(value)s гугола"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "един"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "два"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "три"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "четири"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "пет"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "шест"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "седем"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "осем"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "девет"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "преди %(delta)s"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "сега"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "преди секунда"
-msgstr[1] "преди %(count)s секунди"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "преди минута"
-msgstr[1] "преди %(count)s минути"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "преди час"
-msgstr[1] "преди %(count)s часа"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s от сега"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "секунда от сега"
-msgstr[1] "%(count)s секунди от сега"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "минута от сега"
-msgstr[1] "%(count)s минути от сега"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "час от сега"
-msgstr[1] "%(count)s часа от сега"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/bn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/bn/LC_MESSAGES/django.mo
deleted file mode 100644
index 632c1c7..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/bn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/bn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/bn/LC_MESSAGES/django.po
deleted file mode 100644
index ffb3e1a..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/bn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,306 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/"
-"bn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "আজ"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "গতকাল"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "আগামীকাল"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "তম"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "ম"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "য়"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "য়"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f মিলিয়ন"
-msgstr[1] "%(value).1f মিলিয়ন"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f বিলিয়ন"
-msgstr[1] "%(value).1f বিলিয়ন"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f ট্রিলিয়ন"
-msgstr[1] "%(value).1f ট্রিলিয়ন"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "এক"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "দুই"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "তিন"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "চার"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "পাঁচ"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "ছয়"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "সাত"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "আট"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "নয়"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr ""
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
-msgstr[1] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/br/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/br/LC_MESSAGES/django.mo
deleted file mode 100644
index 49b5e32..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/br/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/br/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/br/LC_MESSAGES/django.po
deleted file mode 100644
index 583321c..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/br/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,306 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Fulup <fulup.jakez@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/"
-"br/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: br\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "hiziv"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "dec'h"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "warc'hoazh"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "<sup>e</sup>"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "<sup>añ</sup>"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "<sup>l</sup>"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "<sup>e</sup>"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milion"
-msgstr[1] "%(value).1f milion"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s million"
-msgstr[1] "%(value)s million"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miliard"
-msgstr[1] "%(value).1f miliard"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s miliard"
-msgstr[1] "%(value)s miliard"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f bilion"
-msgstr[1] "%(value).1f bilion"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s bilion"
-msgstr[1] "%(value)s bilion"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f c'hadrilion"
-msgstr[1] "%(value).1f kadrilion"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s c'hadrilion"
-msgstr[1] "%(value)s kadrilion"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f c'hintilion"
-msgstr[1] "%(value).1f kintilion"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s c'hintilion"
-msgstr[1] "%(value)s kintilion"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f sekstilion"
-msgstr[1] "%(value).1f sekstilion"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s sekstilion"
-msgstr[1] "%(value)s sekstilion"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f septilion"
-msgstr[1] "%(value).1f septilion"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s septilion"
-msgstr[1] "%(value)s septilion"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f oktilion"
-msgstr[1] "%(value).1f oktilion"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s oktilion"
-msgstr[1] "%(value)s oktilion"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f nonilion"
-msgstr[1] "%(value).1f nonilion"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s nonilion"
-msgstr[1] "%(value)s nonilion"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f dekilion"
-msgstr[1] "%(value).1f dekilion"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s dekilion"
-msgstr[1] "%(value)s dekilion"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f gogol"
-msgstr[1] "%(value).1f gogol"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s gogol"
-msgstr[1] "%(value)s gogol"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "unan"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "daou"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tri"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "pevar"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "pemp"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "c'hwec'h"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "seizh"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "eizh"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "nav"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s zo"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "bremañ"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "un eilenn zo"
-msgstr[1] "%(count)s eilenn zo"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "ur vunutenn zo"
-msgstr[1] "%(count)s munut zo"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "un eurvezh zo"
-msgstr[1] "%(count)s eurvezh zo"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "a-benn %(delta)s "
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "a-benn un eilenn"
-msgstr[1] "a-benn %(count)s eilenn"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "a-benn ur vunutenn"
-msgstr[1] "a-benn %(count)s munut"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "a-benn un eurvezh"
-msgstr[1] "a-benn %(count)s eurvezh"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/bs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/bs/LC_MESSAGES/django.mo
deleted file mode 100644
index 491cce5..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/bs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/bs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/bs/LC_MESSAGES/django.po
deleted file mode 100644
index bfa01f4..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/bs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,336 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Filip Dupanović <filip.dupanovic@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/"
-"bs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bs\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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "deset"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "jučer"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "sutra"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "-i"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "-vi"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "-i"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "-i"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f million"
-msgstr[1] "%(value).1f miliona"
-msgstr[2] "%(value).1f miliona"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milijarda"
-msgstr[1] "%(value).1f milijarde"
-msgstr[2] "%(value).1f milijardi"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f bilion"
-msgstr[1] "%(value).1f biliona"
-msgstr[2] "%(value).1f biliona"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "jedan"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "dva"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tri"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "četiri"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "pet"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "šest"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "sedam"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "osam"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "devet"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr ""
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ca/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/ca/LC_MESSAGES/django.mo
deleted file mode 100644
index 8fdd7ec..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ca/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ca/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/ca/LC_MESSAGES/django.po
deleted file mode 100644
index 98f843a..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ca/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,308 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antoni Aloy <aaloy@apsl.net>, 2011-2012
-# Carles Barrobés <carles@barrobes.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Catalan (http://www.transifex.com/projects/p/django/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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "avui"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "ahir"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "demà"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "è"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "r"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "n"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "r"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milió"
-msgstr[1] "%(value).1f milions"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s milió"
-msgstr[1] "%(value)s milions"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miliard"
-msgstr[1] "%(value).1f miliards"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s miliard"
-msgstr[1] "%(value)s miliards"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f bilió"
-msgstr[1] "%(value).1f bilions"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s bilió"
-msgstr[1] "%(value)s bilió"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f quadrilió"
-msgstr[1] "%(value).1f quadrilions"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s quadrilió"
-msgstr[1] "%(value)s quadrilions"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f quintilió"
-msgstr[1] "%(value).1f quintilions"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s quintilió"
-msgstr[1] "%(value)s quintilions"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f sextilió"
-msgstr[1] "%(value).1f sextilions"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s sextilió"
-msgstr[1] "%(value)s sextilions"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f septilió"
-msgstr[1] "%(value).1f septilions"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s septilió"
-msgstr[1] "%(value)s septilions"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f octilió"
-msgstr[1] "%(value).1f octilions"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s octilió"
-msgstr[1] "%(value)s octilions"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f nonilió"
-msgstr[1] "%(value).1f nonilions"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s nonilió"
-msgstr[1] "%(value)s nonilions"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f decilió"
-msgstr[1] "%(value).1f decilions"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s decilió"
-msgstr[1] "%(value)s decilions"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googols"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googols"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "un"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "dos"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tres"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "quatre"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "cinc"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "sis"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "set"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "vuit"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "nou"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "fa %(delta)s"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "ara"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "fa un segon"
-msgstr[1] "fa %(count)s segons"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "fa un minut"
-msgstr[1] "fa %(count)s minuts"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "fa una hora"
-msgstr[1] "fa %(count)s hores"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s des d'ara"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "d'aquí a un segon"
-msgstr[1] "d'aquí a %(count)s segons"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "d'aquí a un minut"
-msgstr[1] "d'aquí a %(count)s minuts"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "d'aquí a una hora"
-msgstr[1] "d'aquí a %(count)s hores"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/cs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/cs/LC_MESSAGES/django.mo
deleted file mode 100644
index 2891946..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/cs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/cs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/cs/LC_MESSAGES/django.po
deleted file mode 100644
index 8dd29ac..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/cs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,335 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Vlada Macek <macek@sandbox.cz>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Czech (http://www.transifex.com/projects/p/django/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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "dnes"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "včera"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "zítra"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "."
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milion"
-msgstr[1] "%(value).1f miliony"
-msgstr[2] "%(value).1f milionů"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] " %(value)s milion"
-msgstr[1] " %(value)s miliony"
-msgstr[2] " %(value)s milionů"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miliarda"
-msgstr[1] "%(value).1f miliardy"
-msgstr[2] "%(value).1f miliard"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s miliarda"
-msgstr[1] "%(value)s miliardy"
-msgstr[2] "%(value)s miliard"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f bilion"
-msgstr[1] "%(value).1f biliony"
-msgstr[2] "%(value).1f bilionů"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s bilion"
-msgstr[1] "%(value)s biliony"
-msgstr[2] "%(value)s bilionů"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f biliarda"
-msgstr[1] "%(value).1f biliardy"
-msgstr[2] "%(value).1f biliard"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s biliarda"
-msgstr[1] "%(value)s biliardy"
-msgstr[2] "%(value)s biliard"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f trilion"
-msgstr[1] "%(value).1f triliony"
-msgstr[2] "%(value).1f trilionů"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s trilion"
-msgstr[1] "%(value)s triliony"
-msgstr[2] "%(value)s trilionů"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f triliarda"
-msgstr[1] "%(value).1f triliardy"
-msgstr[2] "%(value).1f triliard"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s triliard"
-msgstr[1] "%(value)s triliardy"
-msgstr[2] "%(value)s triliard"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f kvadrilion"
-msgstr[1] "%(value).1f kvadriliony"
-msgstr[2] "%(value).1f kvadrilionů"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s kvadrilion"
-msgstr[1] "%(value)s kvadriliony"
-msgstr[2] "%(value)s kvadrilionů"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f kvadriliarda"
-msgstr[1] "%(value).1f kvadriliardy"
-msgstr[2] "%(value).1f kvadriliard"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s kvadriliarda"
-msgstr[1] "%(value)s kvadriliardy"
-msgstr[2] "%(value)s kvadriliard"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f kvintilion"
-msgstr[1] "%(value).1f kvintiliony"
-msgstr[2] "%(value).1f kvintilionů"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s kvintilion"
-msgstr[1] "%(value)s kvintiliony"
-msgstr[2] "%(value)s kvintilionů"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f kvintiliarda"
-msgstr[1] "%(value).1f kvintiliardy"
-msgstr[2] "%(value).1f kvintiliard"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s kvintiliarda"
-msgstr[1] "%(value)s kvintiliardy"
-msgstr[2] "%(value)s kvintiliard"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googoly"
-msgstr[2] "%(value).1f googolů"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googoly"
-msgstr[2] "%(value)s googolů"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "jedna"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "dvě"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tři"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "čtyři"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "pět"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "šest"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "sedm"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "osm"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "devět"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s v minulosti"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "nyní"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "před sekundou"
-msgstr[1] "před %(count)s sekundami"
-msgstr[2] "před %(count)s sekundami"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "před minutou"
-msgstr[1] "před %(count)s minutami"
-msgstr[2] "před %(count)s minutami"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "před hodinou"
-msgstr[1] "před %(count)s hodinami"
-msgstr[2] "před %(count)s hodinami"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s v budoucnosti"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "za sekundu"
-msgstr[1] "za %(count)s sekundy"
-msgstr[2] "za %(count)s sekund"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "za minutu"
-msgstr[1] "za %(count)s minuty"
-msgstr[2] "za %(count)s minut"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "za hodinu"
-msgstr[1] "za %(count)s hodiny"
-msgstr[2] "za %(count)s hodin"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/cy/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/cy/LC_MESSAGES/django.mo
deleted file mode 100644
index 167c5cd..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/cy/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/cy/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/cy/LC_MESSAGES/django.po
deleted file mode 100644
index 81f2463..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/cy/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,362 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-04-24 18:40+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/"
-"cy/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cy\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
-"11) ? 2 : 3;\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr ""
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr ""
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr ""
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-msgstr[3] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/da/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/da/LC_MESSAGES/django.mo
deleted file mode 100644
index c4efde1..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/da/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/da/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/da/LC_MESSAGES/django.po
deleted file mode 100644
index c4376d6..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/da/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Christian Joergensen <christian@gmta.info>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/"
-"da/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: da\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "i dag"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "i går"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "i morgen"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "."
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f million"
-msgstr[1] "%(value).1f millioner"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s million"
-msgstr[1] "%(value)s millioner"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milliard"
-msgstr[1] "%(value).1f milliarder"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s milliard"
-msgstr[1] "%(value)s milliarder"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f billion"
-msgstr[1] "%(value).1f billioner"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s billion"
-msgstr[1] "%(value)s billioner"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f billiard"
-msgstr[1] "%(value).1f billiarder"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s billiard"
-msgstr[1] "%(value)s billiarder"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f trillion"
-msgstr[1] "%(value).1f trillioner"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s trillion"
-msgstr[1] "%(value)s trillioner"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f trilliard"
-msgstr[1] "%(value).1f trilliarder"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s trilliard"
-msgstr[1] "%(value)s trilliarder"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f kvadrillion"
-msgstr[1] "%(value).1f kvadrillioner"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s kvadrillion"
-msgstr[1] "%(value)s kvadrillioner"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f kvadrilliard"
-msgstr[1] "%(value).1f kvadrilliarder"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s kvadrilliard"
-msgstr[1] "%(value)s kvadrilliarder"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f kvintillion"
-msgstr[1] "%(value).1f kvintillioner"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s kvintillion"
-msgstr[1] "%(value)s kvintillioner"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f kvintilliard"
-msgstr[1] "%(value).1f kvintilliarder"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s kvintilliard"
-msgstr[1] "%(value)s kvintilliarder"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f gogol"
-msgstr[1] "%(value).1f gogoler"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s gogol"
-msgstr[1] "%(value)s gogoler"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "en"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "to"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tre"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "fire"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "fem"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "seks"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "syv"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "otte"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "ni"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s siden"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "nu"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "et sekund siden"
-msgstr[1] "%(count)s sekunder siden"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "et minut siden"
-msgstr[1] "%(count)s minutter siden"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "en time siden"
-msgstr[1] "%(count)s timer siden"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s fra nu af"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "et sekund fra nu af"
-msgstr[1] "%(count)s sekunder fra nu af"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "et minut fra nu af"
-msgstr[1] "%(count)s minutter fra nu af"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "en time fra nu af"
-msgstr[1] "%(count)s timer fra nu af"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/de/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/de/LC_MESSAGES/django.mo
deleted file mode 100644
index 0223b7d..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/de/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/de/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/de/LC_MESSAGES/django.po
deleted file mode 100644
index 1a217d4..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/de/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,308 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Hagenbruch <ahagenbruch@googlemail.com>, 2011
-# claudep <claude@2xlibre.net>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011,2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 16:43+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/django/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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "heute"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "gestern"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "morgen"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "."
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f Million"
-msgstr[1] "%(value).1f Millionen"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s Million"
-msgstr[1] "%(value)s Millionen"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f Milliarde"
-msgstr[1] "%(value).1f Milliarden"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s Milliarde"
-msgstr[1] "%(value)s Milliarden"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f Billion"
-msgstr[1] "%(value).1f Billionen"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s Billion"
-msgstr[1] "%(value)s Billionen"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f Billiarde"
-msgstr[1] "%(value).1f Billiarden"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s Billiarde"
-msgstr[1] "%(value)s Billiarden"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f Trillion"
-msgstr[1] "%(value).1f Trillionen"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s Trillion"
-msgstr[1] "%(value)s Trillionen"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f Trilliarde"
-msgstr[1] "%(value).1f Trilliarden"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s Trilliarde"
-msgstr[1] "%(value)s Trilliarden"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f Quadrillion"
-msgstr[1] "%(value).1f Quadrillionen"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s Quadrillion"
-msgstr[1] "%(value)s Quadrillionen"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f Quadrilliarde"
-msgstr[1] "%(value).1f Quadrilliarden"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s Quadrilliarde"
-msgstr[1] "%(value)s Quadrilliarden"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f Quintillion"
-msgstr[1] "%(value).1f Quintillionen"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s Quintillion"
-msgstr[1] "%(value)s Quintillionen"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f Quintilliarde"
-msgstr[1] "%(value).1f Quintilliarden"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s Quintilliarde"
-msgstr[1] "%(value)s Quintilliarden"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f Sedezilliarde"
-msgstr[1] "%(value).1f Sedezilliarden"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s Sedezilliarde"
-msgstr[1] "%(value)s Sedezilliarden"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "eins"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "zwei"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "drei"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "vier"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "fünf"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "sechs"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "sieben"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "acht"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "neun"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "vor %(delta)s"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "jetzt"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "vor einer Sekunde"
-msgstr[1] "vor %(count)s Sekunden"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "vor einer Minute"
-msgstr[1] "vor %(count)s Minuten"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "vor einer Stunde"
-msgstr[1] "vor %(count)s Stunden"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "in %(delta)s"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "in einer Sekunde"
-msgstr[1] "in %(count)s Sekunden"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "in einer Minute"
-msgstr[1] "in %(count)s Minuten"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "in einer Stunde"
-msgstr[1] "in %(count)s Stunden"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/el/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/el/LC_MESSAGES/django.mo
deleted file mode 100644
index 1f4de96..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/el/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/el/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/el/LC_MESSAGES/django.po
deleted file mode 100644
index c3444a6..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/el/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,308 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Dimitris Glezos <glezos@transifex.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kostas Papadimitriou <vinilios@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/"
-"el/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: el\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "σήμερα"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "χθες"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "αύριο"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "η"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "η"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "η"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "η"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f εκατομμύριο"
-msgstr[1] "%(value).1f εκατομμύρια"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] " %(value)s εκατομμύριο"
-msgstr[1] " %(value)s εκατομμύρια"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f δισεκατομμύριο"
-msgstr[1] "%(value).1f δισεκατομμύρια"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s δισεκατομμύριο"
-msgstr[1] "%(value)s δισεκατομμύρια"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f τρισεκατομμύριο"
-msgstr[1] "%(value).1f τρισεκατομμύρια"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s τρισεκατομμύριο"
-msgstr[1] "%(value)s τρισεκατομμύρια"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f τετράκις εκατομμύριο"
-msgstr[1] "%(value).1f τετράκις εκατομμύρια"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s τετράκις εκατομμύριο"
-msgstr[1] "%(value)s τετράκις εκατομμύρια"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f πεντάκις εκατομμύριo"
-msgstr[1] "%(value).1f πεντάκις εκατομμύρια"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s πεντάκις εκατομμύριo"
-msgstr[1] "%(value)s πεντάκις εκατομμύρια"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f εξάκις εκατομμύριo"
-msgstr[1] "%(value).1f εξάκις εκατομμύρια"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s εξάκις εκατομμύριo"
-msgstr[1] "%(value)s εξάκις εκατομμύρια"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f επτάκις εκατομμύριο"
-msgstr[1] "%(value).1f επτάκις εκατομμύρια"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s επτάκις εκατομμύριο"
-msgstr[1] "%(value)s επτάκις εκατομμύρια"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f οκτάκις εκατομμύριο"
-msgstr[1] "%(value).1f οκτάκις εκατομμύρια"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s οκτάκις εκατομμύριο"
-msgstr[1] "%(value)s οκτάκις εκατομμύρια"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f εννεάκις εκατομμύριο"
-msgstr[1] "%(value).1f εννεάκις εκατομμύρια"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s εννεάκις εκατομμύριο"
-msgstr[1] "%(value)s εννεάκις εκατομμύρια"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f δεκάκις εκατομμύριο"
-msgstr[1] "%(value).1f δεκάκις εκατομμύρια"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s δεκάκις εκατομμύριο"
-msgstr[1] "%(value)s δεκάκις εκατομμύρια"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googol"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googol"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "ένα"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "δύο"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "τρία"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "τέσσερα"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "πέντε"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "έξι"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "εφτά"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "οκτώ"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "εννιά"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "πριν από %(delta)s"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "τώρα"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "πριν από ένα δευτερόλεπτο"
-msgstr[1] "πριν από %(count)s δευτερόλεπτα"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "πριν από ένα λεπτό"
-msgstr[1] "πριν από %(count)s λεπτά"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "πριν από μια ώρα"
-msgstr[1] "πριν από %(count)s ώρες"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "σε %(delta)s"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "σε ένα δευτερόλεπτο"
-msgstr[1] "σε %(count)s δευτερόλεπτα"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "σε ένα λεπτό"
-msgstr[1] "σε %(count)s λεπτά"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "σε μία ώρα"
-msgstr[1] "σε %(count)s ώρες"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/en/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/en/LC_MESSAGES/django.mo
deleted file mode 100644
index 9be9f7a..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/en/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/en/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/en/LC_MESSAGES/django.po
deleted file mode 100644
index ca0c768..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/en/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,302 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2010-05-13 15:35+0200\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr ""
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr ""
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr ""
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
-msgstr[1] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.mo
deleted file mode 100644
index 476f770..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.po
deleted file mode 100644
index 76b9228..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/en_GB/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# bfirsh <ben@firshman.co.uk>, 2011
-# jon_atkinson <jon@jonatkinson.co.uk>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
-"django/language/en_GB/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: en_GB\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "today"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "yesterday"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "tomorrow"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "th"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "st"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "nd"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "rd"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f million"
-msgstr[1] "%(value).1f million"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s million"
-msgstr[1] "%(value)s million"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f billion"
-msgstr[1] "%(value).1f billion"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s billion"
-msgstr[1] "%(value)s billion"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f trillion"
-msgstr[1] "%(value).1f trillion"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s trillion"
-msgstr[1] "%(value)s trillion"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f quadrillion"
-msgstr[1] "%(value).1f quadrillion"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s quadrillion"
-msgstr[1] "%(value)s quadrillion"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f quintillion"
-msgstr[1] "%(value).1f quintillion"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s quintillion"
-msgstr[1] "%(value)s quintillion"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f sextillion"
-msgstr[1] "%(value).1f sextillion"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s sextillion"
-msgstr[1] "%(value)s sextillion"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f septillion"
-msgstr[1] "%(value).1f septillion"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s septillion"
-msgstr[1] "%(value)s septillion"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f octillion"
-msgstr[1] "%(value).1f octillion"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s octillion"
-msgstr[1] "%(value)s octillion"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f nonillion"
-msgstr[1] "%(value).1f nonillion"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s nonillion"
-msgstr[1] "%(value)s nonillion"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f decillion"
-msgstr[1] "%(value).1f decillion"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s decillion"
-msgstr[1] "%(value)s decillion"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googol"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googol"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "one"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "two"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "three"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "four"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "five"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "six"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "seven"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "eight"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "nine"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s ago"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "now"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "a second ago"
-msgstr[1] "%(count)s seconds ago"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "a minute ago"
-msgstr[1] "%(count)s minutes ago"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "an hour ago"
-msgstr[1] "%(count)s hours ago"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s from now"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "a second from now"
-msgstr[1] "%(count)s seconds from now"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "a minute from now"
-msgstr[1] "%(count)s minutes from now"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "an hour from now"
-msgstr[1] "%(count)s hours from now"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/eo/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/eo/LC_MESSAGES/django.mo
deleted file mode 100644
index 0bd556a..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/eo/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/eo/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/eo/LC_MESSAGES/django.po
deleted file mode 100644
index 83228c2..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/eo/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,305 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/"
-"language/eo/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "hodiaŭ"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "hieraŭ"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "morgaŭ"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "a"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "a"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "a"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "a"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milionoj"
-msgstr[1] "%(value).1f milionoj"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s milionoj"
-msgstr[1] "%(value)s milionoj"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miliardoj"
-msgstr[1] "%(value).1f miliardoj"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s miliardoj"
-msgstr[1] "%(value)s miliardoj"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f triiliono"
-msgstr[1] "%(value).1f triiliono"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s triilionoj"
-msgstr[1] "%(value)s triilionoj"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f kvariliono"
-msgstr[1] "%(value).1f kvariliono"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s kvarilionoj"
-msgstr[1] "%(value)s kvarilionoj"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f kvinilionoj"
-msgstr[1] "%(value).1f kvinilionoj"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s kvinilionoj"
-msgstr[1] "%(value)s kvinilionoj"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f sesilionoj"
-msgstr[1] "%(value).1f sesilionoj"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s sesilionoj"
-msgstr[1] "%(value)s sesilionoj"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f sepilionoj"
-msgstr[1] "%(value).1f sepilionoj"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s sepilionoj"
-msgstr[1] "%(value)s sepilionoj"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f okilionoj"
-msgstr[1] "%(value).1f okilionoj"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s okilionoj"
-msgstr[1] "%(value)s okilionoj"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f naŭilionoj"
-msgstr[1] "%(value).1f naŭilionoj"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s naŭilionoj"
-msgstr[1] "%(value)s naŭilionoj"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f dekilionoj"
-msgstr[1] "%(value).1f dekilionoj"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s dekilionoj"
-msgstr[1] "%(value)s dekilionoj"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f guglo"
-msgstr[1] "%(value).1f guglo"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s gugloj"
-msgstr[1] "%(value)s gugloj"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "unu"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "du"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tri"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "kvar"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "kvin"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "ses"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "sep"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "ok"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "naŭ"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s antaŭe"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "nun"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "unu sekundo antaŭe"
-msgstr[1] "%(count)s sekundoj antaŭe"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "unu minuto antaŭe"
-msgstr[1] "%(count)s minutoj antaŭe"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "unu horo antaŭe"
-msgstr[1] "%(count)s horoj antaŭe"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s ekde nun"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "unu sekundo ekde nun"
-msgstr[1] "%(count)s sekundoj ekde nun"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "unu minuto ekde nun"
-msgstr[1] "%(count)s minutoj ekde nun"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "unu horo ekde nun"
-msgstr[1] "%(count)s horoj ekde nun"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/es/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/es/LC_MESSAGES/django.mo
deleted file mode 100644
index 5ed790e..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/es/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/es/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/es/LC_MESSAGES/django.po
deleted file mode 100644
index ae576e0..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/es/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,308 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antoni Aloy <aaloy@apsl.net>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/django/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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "hoy"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "ayer"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "mañana"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "º"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "º"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "º"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "º"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f millón"
-msgstr[1] "%(value).1f millón"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s millon"
-msgstr[1] "%(value)s millones"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f millardo"
-msgstr[1] "%(value).1f millardos"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s millardo"
-msgstr[1] "%(value)s millardos"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f billón"
-msgstr[1] "%(value).1f billón"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s billón"
-msgstr[1] "%(value)s billones"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f billardo"
-msgstr[1] "%(value).1f billardos"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s billardos"
-msgstr[1] "%(value)s billardos"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f trillón"
-msgstr[1] "%(value).1f trillones"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s trillón"
-msgstr[1] "%(value)s trillones"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f trillardo"
-msgstr[1] "%(value).1f trillardos"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s trillardo"
-msgstr[1] "%(value)s trillardos"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f cuatrillón"
-msgstr[1] "%(value).1f cuatrillones"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s cuatrillón"
-msgstr[1] "%(value)s cuatrillones"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f cuatrillardo"
-msgstr[1] "%(value).1f cuatrillardos"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s cuatrillardo"
-msgstr[1] "%(value)s cuatrillardos"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f quintillón"
-msgstr[1] "%(value).1f quintillones"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s quintillón"
-msgstr[1] "%(value)s quintillones"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f quintillardo"
-msgstr[1] "%(value).1f quintillardos"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s quintillardo"
-msgstr[1] "%(value)s quintillardos"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googol"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] " %(value)s googol"
-msgstr[1] " %(value)s googol"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "uno"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "dos"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tres"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "cuatro"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "cinco"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "seis"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "siete"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "ocho"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "nueve"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "hace %(delta)s"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "ahora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "hace un segundo"
-msgstr[1] "hace %(count)s segundos"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "hace un minuto"
-msgstr[1] "hace %(count)s minutos "
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "hace una hora"
-msgstr[1] "hace %(count)s horas"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s a partir de ahora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "un segundo a partir de ahora"
-msgstr[1] "%(count)s segundos a partir de ahora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "un minuto a partir de ahora"
-msgstr[1] " %(count)s minutos a partir de ahora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "una hora a partir de ahora"
-msgstr[1] "%(count)s horas a partir de ahora"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.mo
deleted file mode 100644
index 2d88898..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.po
deleted file mode 100644
index fc4b6f5..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/es_AR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ramiro Morales <cramm0@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
-"django/language/es_AR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_AR\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "hoy"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "ayer"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "mañana"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "to"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "ro"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "do"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "ro"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f millón"
-msgstr[1] "%(value).1f millones"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s millón"
-msgstr[1] "%(value)s millones"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f millardo"
-msgstr[1] "%(value).1f millardos"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s millardo"
-msgstr[1] "%(value)s millardos"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f billón"
-msgstr[1] "%(value).1f billones"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s billón"
-msgstr[1] "%(value)s billones"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f mil billones"
-msgstr[1] "%(value).1f miles de billones"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s mil billones"
-msgstr[1] "%(value)s miles de billones"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f trillón"
-msgstr[1] "%(value).1f trilliones"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s trillón"
-msgstr[1] "%(value)s trilliones"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f mil trillones"
-msgstr[1] "%(value).1f miles de trillones"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s mil trillones"
-msgstr[1] "%(value)s miles de trillones"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f cuatrillón"
-msgstr[1] "%(value).1f cuatrillones"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s cuatrillón"
-msgstr[1] "%(value)s cuatrillones"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f mil cuatrillones"
-msgstr[1] "%(value).1f miles de cuatrillones"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s mil cuatrillones"
-msgstr[1] "%(value)s miles de cuatrillones"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f quintillón"
-msgstr[1] "%(value).1f quintillones"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s quintillón"
-msgstr[1] "%(value)s quintillones"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f mil quintillones"
-msgstr[1] "%(value).1f miles de quintillones"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s mil quintillones"
-msgstr[1] "%(value)s miles de quintillones"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f \"gúgol\""
-msgstr[1] "%(value).1f \"gúgols\""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s \"gúgol\""
-msgstr[1] "%(value)s \"gúgols\""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "uno"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "dos"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tres"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "cuatro"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "cinco"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "seis"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "siete"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "ocho"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "nueve"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "hace %(delta)s"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "ahora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "hace un segundo"
-msgstr[1] "hace %(count)s segundos"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "hace un minuto"
-msgstr[1] "hace %(count)s minutos"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "hace una hora"
-msgstr[1] "hace %(count)s horas"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "dentro de %(delta)s"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "dentro de un segundo"
-msgstr[1] "dentro de %(count)s segundos"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "dentro de un minuto"
-msgstr[1] "dentro de %(count)s minutos"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "dentro de una hora"
-msgstr[1] "dentro de %(count)s horas"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.mo
deleted file mode 100644
index 07be7ff..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.po
deleted file mode 100644
index 77f66d8..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/es_MX/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,306 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Abraham Estrada <abraham.estrada@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/"
-"language/es_MX/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_MX\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "hoy"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "ayer"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "mañana"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "to"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "ro"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "do"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "ro"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f millón"
-msgstr[1] "%(value).1f millones"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s millones"
-msgstr[1] "%(value)s millones"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f billón"
-msgstr[1] "%(value).1f billones"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s billiones"
-msgstr[1] "%(value)s billiones"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f trillón"
-msgstr[1] "%(value).1f trillones"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s trilliones"
-msgstr[1] "%(value)s trilliones"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f cuatrillón"
-msgstr[1] "%(value).1f cuatrillones"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s cuatrillón"
-msgstr[1] "%(value)s cuatrillones"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f quintillón"
-msgstr[1] "%(value).1f quintillones"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s quintillón"
-msgstr[1] "%(value)s quintillones"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f sextillón"
-msgstr[1] "%(value).1f sextillones"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s sextillón"
-msgstr[1] "%(value)s sextillones"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f septillón"
-msgstr[1] "%(value).1f septillones"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s septillón"
-msgstr[1] "%(value)s septillones"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f octillón"
-msgstr[1] "%(value).1f octillones"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s octillón"
-msgstr[1] "%(value)s octillones"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f nonillion"
-msgstr[1] "%(value).1f nonillion"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s nonillón"
-msgstr[1] "%(value)s nonillones"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f decillón"
-msgstr[1] "%(value).1f decillones"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s decillón"
-msgstr[1] "%(value)s decillones"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googoles"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googoles"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "uno"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "dos"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tres"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "cuatro"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "cinco"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "seis"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "siete"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "ocho"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "nueve"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "hace %(delta)s"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "ahora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "hace un segundo"
-msgstr[1] "hace %(count)s segundos"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "Hace un minuto"
-msgstr[1] "Hace %(count)s minutos"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "Hace una hora"
-msgstr[1] "Hace %(count)s horas"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s a partir de ahora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "un segundo a partir de ahora"
-msgstr[1] "%(count)s segundos a partir de ahora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "un minuto a partir de ahora"
-msgstr[1] "%(count)s minutos a partir de ahora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "una hora a partir de ahora"
-msgstr[1] "%(count)s horas a partir de ahora"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/et/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/et/LC_MESSAGES/django.mo
deleted file mode 100644
index 6dd3ecb..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/et/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/et/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/et/LC_MESSAGES/django.po
deleted file mode 100644
index e9f8d2f..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/et/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,308 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# claudep <claude@2xlibre.net>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jannolii <jannolii@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 16:55+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/"
-"et/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: et\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "täna"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "eile"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "homme"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "."
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f miljonit"
-msgstr[1] "%(value).1f miljonit"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s miljon"
-msgstr[1] "%(value)s miljonit"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miljardit"
-msgstr[1] "%(value).1f miljardit"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s miljard"
-msgstr[1] "%(value)s miljardit"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f triljonit"
-msgstr[1] "%(value).1f triljonit"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s triljon"
-msgstr[1] "%(value)s triljonit"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f kvadriljonit"
-msgstr[1] "%(value).1f kvadriljonit"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s kvadriljon"
-msgstr[1] "%(value)s kvadriljonit"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f kvintiljonit"
-msgstr[1] "%(value).1f kvintiljonit"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s kvintiljon"
-msgstr[1] "%(value)s kvintiljonit"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f sekstiljonit"
-msgstr[1] "%(value).1f sekstiljonit"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s sekstiljon"
-msgstr[1] "%(value)s sekstiljonit"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f septiljonit"
-msgstr[1] "%(value).1f septiljonit"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s septiljon"
-msgstr[1] "%(value)s septiljonit"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f oktiljonit"
-msgstr[1] "%(value).1f oktiljonit"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s oktiljon"
-msgstr[1] "%(value)s oktiljonit"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f noniljonit"
-msgstr[1] "%(value).1f noniljonit"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s noniljon"
-msgstr[1] "%(value)s noniljonit"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f detsiljonit"
-msgstr[1] "%(value).1f detsiljonit"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s detsiljon"
-msgstr[1] "%(value)s detsiljonit"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googolit"
-msgstr[1] "%(value).1f googolit"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googolit"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "üks"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "kaks"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "kolm"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "neli"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "viis"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "kuus"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "seitse"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "kaheksa"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "üheksa"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s tagasi"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "praegu"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "sekund tagasi"
-msgstr[1] "%(count)s sekundit tagasi"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "minut tagasi"
-msgstr[1] "%(count)s minutit tagasi"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "tund tagasi"
-msgstr[1] "%(count)s tundi tagasi"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s praegusest hetkest"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "sekund praegusest hetkest"
-msgstr[1] "%(count)s sekundit praegusest hetkest"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "minut praegusest hetkest"
-msgstr[1] "%(count)s minutit praegusest hetkest"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "tund praegusest hetkest"
-msgstr[1] "%(count)s tundi praegusest hetkest"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/eu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/eu/LC_MESSAGES/django.mo
deleted file mode 100644
index 5a82559..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/eu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/eu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/eu/LC_MESSAGES/django.po
deleted file mode 100644
index 736129e..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/eu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Aitzol Naberan <anaberan@codesyntax.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/"
-"eu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "gaur"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "atzo"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "bihar"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "garren"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "garren"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "garren"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "miloi %(value).1f "
-msgstr[1] "%(value).1f miloi"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "milioi %(value)s"
-msgstr[1] "%(value)s milioi"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "biloi %(value).1f "
-msgstr[1] "%(value).1f biloi"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "bilioi %(value)s"
-msgstr[1] "%(value)s bilioi"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "triloi %(value).1f "
-msgstr[1] "%(value).1f triloi"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "trilioi %(value)s"
-msgstr[1] "%(value)s trilioi"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "kuatrilioi %(value).1f "
-msgstr[1] "%(value).1f kuatrilioi"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "kuatrilioi %(value)s"
-msgstr[1] "%(value)s kuatrilioi"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "kintilioi %(value).1f"
-msgstr[1] "%(value).1f kintilioi"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "kintilioi %(value)s"
-msgstr[1] "%(value)s kintilioi"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "sextilioi %(value).1f"
-msgstr[1] "%(value).1f sextilioi"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "sextilioi %(value)s"
-msgstr[1] "%(value)s sextilioi"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "septilioi %(value).1f"
-msgstr[1] "%(value).1f septilioi"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "septilioi %(value)s"
-msgstr[1] "%(value)s septilioi"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "octilioi %(value).1f"
-msgstr[1] "%(value).1f octilioi"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "octillioi %(value)s"
-msgstr[1] " %(value)s octilioi"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "nonilioi %(value).1f "
-msgstr[1] "%(value).1f nonilioi"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "nonilioi %(value)s"
-msgstr[1] "%(value)s nonilioi"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "dezilioi %(value).1f"
-msgstr[1] "%(value).1f deziioi"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "dezilioi %(value)s "
-msgstr[1] "%(value)s dezilioi"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "gugol %(value).1f"
-msgstr[1] "%(value).1f gugol"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "gugol %(value)s"
-msgstr[1] "%(value)s gugol"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "bat"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "bi"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "hiru"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "lau"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "bost"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "sei"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "zazpi"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "zortzi"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "bederatzi"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "duela %(delta)s"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "orain"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "duela segundu bat"
-msgstr[1] "duela %(count)s segundu"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "duela minutu bat"
-msgstr[1] "duela %(count)s minutu "
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "duela ordubete"
-msgstr[1] "duela %(count)s ordu"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s barru"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "segundu bat barru"
-msgstr[1] "%(count)s segundu barru"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "minutu bat barru"
-msgstr[1] "%(count)s minutu barru"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "ordubete barru"
-msgstr[1] "%(count)s ordu barru"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/fa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/fa/LC_MESSAGES/django.mo
deleted file mode 100644
index ece1efe..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/fa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/fa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/fa/LC_MESSAGES/django.po
deleted file mode 100644
index 8b5b97e..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/fa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,281 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Nikneshan <ali@nikneshan.com>, 2012
-# Alireza Savand <alireza.savand@gmail.com>, 2012
-# claudep <claude@2xlibre.net>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 16:49+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/"
-"fa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "امروز"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "دیروز"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "فردا"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "اُم"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "اُم"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "اُم"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "اُم"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f میلیون"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s میلیون"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f بیلیون"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s میلیارد"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f تریلون"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s تریلیون"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f کوادریلیون"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s کوادریلیون"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f کوانتینیوم"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s کوانتینیوم"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f با 21 صفر"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s با 21 صفر"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f سپتیلیون"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s سپتیلیون"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f octillion"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s octillion"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] " %(value).1f با 54 صفر"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s با 54 صفر"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f با شصت صفر"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s با شصت صفر"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "یک"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "دو"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "سه"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "چهار"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "پنج"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "شش"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "هفت"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "هشت"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "نُه"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s قبل"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "اکنون"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "%(count)s ثانیه پیش"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "%(count)s دقیقه پیش"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "%(count)s ساعت پیش"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s از الان"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "%(count)s ثانیه بعد"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "%(count)s دقیقه بعد"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "%(count)s ساعت بعد"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/fi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/fi/LC_MESSAGES/django.mo
deleted file mode 100644
index bfb2bf5..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/fi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/fi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/fi/LC_MESSAGES/django.po
deleted file mode 100644
index 032f6e2..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/fi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antti Kaihola <antti-2013@ambitone.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Finnish (http://www.transifex.com/projects/p/django/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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "tänään"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "eilen"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "huomenna"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "."
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f miljoona"
-msgstr[1] "%(value).1f miljoonaa"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s miljoona"
-msgstr[1] "%(value)s miljoonaa"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miljardi"
-msgstr[1] "%(value).1f miljardia"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s miljardi"
-msgstr[1] "%(value)s miljardia"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f biljoona"
-msgstr[1] "%(value).1f biljoonaa"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s biljoona"
-msgstr[1] "%(value)s biljoonaa"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "yksi"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "kaksi"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "kolme"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "neljä"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "viisi"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "kuusi"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "seitsemän"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "kahdeksan"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "yhdeksän"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s sitten"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "nyt"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "sekunti sitten"
-msgstr[1] "%(count)s sekuntia sitten"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "minuutti sitten"
-msgstr[1] "%(count)s minuuttia sitten"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "tunti sitten"
-msgstr[1] "%(count)s tuntia sitten"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s tästä hetkestä"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "sekunnin kuluttua"
-msgstr[1] "%(count)s sekunnin kuluttua"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "minuutin kuluttua"
-msgstr[1] "%(count)s minuutin kuluttua"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "tunnin kuluttua"
-msgstr[1] "%(count)s tunnin kuluttua"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/fr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/fr/LC_MESSAGES/django.mo
deleted file mode 100644
index 42c2f8d..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/fr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/fr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/fr/LC_MESSAGES/django.po
deleted file mode 100644
index e1b764a..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/fr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,308 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# claudep <claude@2xlibre.net>, 2013
-# claudep <claude@2xlibre.net>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 16:51+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: French (http://www.transifex.com/projects/p/django/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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "aujourd'hui"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "hier"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "demain"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "<sup>e</sup>"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "<sup>er</sup>"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "<sup>e</sup>"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "<sup>e</sup>"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f million"
-msgstr[1] "%(value).1f millions"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s million"
-msgstr[1] "%(value)s millions"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milliard"
-msgstr[1] "%(value).1f milliards"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s milliard"
-msgstr[1] "%(value)s milliards"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f billion"
-msgstr[1] "%(value).1f billions"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s billion"
-msgstr[1] "%(value)s billions"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f quadrillion"
-msgstr[1] "%(value).1f quadrillions"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s quadrillion"
-msgstr[1] "%(value)s quadrillions"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f quintillion"
-msgstr[1] "%(value).1f quintillions"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s quintillion"
-msgstr[1] "%(value)s quintillions"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f sextillion"
-msgstr[1] "%(value).1f sextillions"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s sextillion"
-msgstr[1] "%(value)s sextillion"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f septillion"
-msgstr[1] "%(value).1f septillions"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s septillion"
-msgstr[1] "%(value)s septillions"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f octillion"
-msgstr[1] "%(value).1f octillions"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s octillion"
-msgstr[1] "%(value)s octillions"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f nonillion"
-msgstr[1] "%(value).1f nonillions"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s nonillion"
-msgstr[1] "%(value)s nonillions"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f décillion"
-msgstr[1] "%(value).1f décillions"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s décillion"
-msgstr[1] "%(value)s décillions"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f gogol"
-msgstr[1] "%(value).1f gogols"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s gogol"
-msgstr[1] "%(value)s gogols"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "un"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "deux"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "trois"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "quatre"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "cinq"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "six"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "sept"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "huit"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "neuf"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "il y a %(delta)s"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "maintenant"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "il y a une seconde"
-msgstr[1] "il y a %(count)s secondes"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "il y a une minute"
-msgstr[1] "il y a %(count)s minutes"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "il y a une heure"
-msgstr[1] "il y a %(count)s heures"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "dans %(delta)s"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "dans une seconde"
-msgstr[1] "dans %(count)s secondes"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "dans une minute"
-msgstr[1] "dans %(count)s minutes"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "dans une heure"
-msgstr[1] "dans %(count)s heures"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/fy_NL/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/fy_NL/LC_MESSAGES/django.mo
deleted file mode 100644
index a70d0ee..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/fy_NL/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/fy_NL/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/fy_NL/LC_MESSAGES/django.po
deleted file mode 100644
index 171f4c2..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/fy_NL/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,305 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-04-24 18:40+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Western Frisian (Netherlands) (http://www.transifex.com/"
-"projects/p/django/language/fy_NL/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fy_NL\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr ""
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr ""
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr ""
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
-msgstr[1] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ga/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/ga/LC_MESSAGES/django.mo
deleted file mode 100644
index 35e3e92..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ga/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ga/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/ga/LC_MESSAGES/django.po
deleted file mode 100644
index b7cbe7d..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ga/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,392 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Michael Thornhill <michael@maithu.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/"
-"ga/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ga\n"
-"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
-"4);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "inniu"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "inné"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "amárach"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "ú"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "ú"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "ú"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "ú"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milliún"
-msgstr[1] "%(value).1f milliún"
-msgstr[2] "%(value).1f milliún"
-msgstr[3] "%(value).1f milliún"
-msgstr[4] "%(value).1f milliún"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] " %(value)s milliún"
-msgstr[1] " %(value)s milliún"
-msgstr[2] " %(value)s milliún"
-msgstr[3] " %(value)s milliún"
-msgstr[4] " %(value)s milliún"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f billiún"
-msgstr[1] "%(value).1f billiún"
-msgstr[2] "%(value).1f billiún"
-msgstr[3] "%(value).1f billiún"
-msgstr[4] "%(value).1f billiún"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] " %(value)s billiún"
-msgstr[1] " %(value)s billiún"
-msgstr[2] " %(value)s billiún"
-msgstr[3] " %(value)s billiún"
-msgstr[4] " %(value)s billiún"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f trilliún"
-msgstr[1] "%(value).1f trilliún"
-msgstr[2] "%(value).1f trilliún"
-msgstr[3] "%(value).1f trilliún"
-msgstr[4] "%(value).1f trilliún"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] " %(value)s trilliún"
-msgstr[1] " %(value)s trilliún"
-msgstr[2] " %(value)s trilliún"
-msgstr[3] " %(value)s trilliún"
-msgstr[4] " %(value)s trilliún"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f quadrilliún"
-msgstr[1] "%(value).1f quadrilliún"
-msgstr[2] "%(value).1f quadrilliún"
-msgstr[3] "%(value).1f quadrilliún"
-msgstr[4] "%(value).1f quadrilliún"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s quadrilliún"
-msgstr[1] "%(value)s quadrilliún"
-msgstr[2] "%(value)s quadrilliún"
-msgstr[3] "%(value)s quadrilliún"
-msgstr[4] "%(value)s quadrilliún"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f quintillion"
-msgstr[1] "%(value).1f quintillion"
-msgstr[2] "%(value).1f quintillion"
-msgstr[3] "%(value).1f quintillion"
-msgstr[4] "%(value).1f quintillion"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s quintillion"
-msgstr[1] "%(value)s quintillion"
-msgstr[2] "%(value)s quintillion"
-msgstr[3] "%(value)s quintillion"
-msgstr[4] "%(value)s quintillion"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f sextillion"
-msgstr[1] "%(value).1f sextillion"
-msgstr[2] "%(value).1f sextillion"
-msgstr[3] "%(value).1f sextillion"
-msgstr[4] "%(value).1f sextillion"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s sextillion"
-msgstr[1] "%(value)s sextillion"
-msgstr[2] "%(value)s sextillion"
-msgstr[3] "%(value)s sextillion"
-msgstr[4] "%(value)s sextillion"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f septillion"
-msgstr[1] "%(value).1f septillion"
-msgstr[2] "%(value).1f septillion"
-msgstr[3] "%(value).1f septillion"
-msgstr[4] "%(value).1f septillion"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s septillion"
-msgstr[1] "%(value)s septillion"
-msgstr[2] "%(value)s septillion"
-msgstr[3] "%(value)s septillion"
-msgstr[4] "%(value)s septillion"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f octillion"
-msgstr[1] "%(value).1f octillion"
-msgstr[2] "%(value).1f octillion"
-msgstr[3] "%(value).1f octillion"
-msgstr[4] "%(value).1f octillion"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s octillion"
-msgstr[1] "%(value)s octillion"
-msgstr[2] "%(value)s octillion"
-msgstr[3] "%(value)s octillion"
-msgstr[4] "%(value)s octillion"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f nonillion"
-msgstr[1] "%(value).1f nonillion"
-msgstr[2] "%(value).1f nonillion"
-msgstr[3] "%(value).1f nonillion"
-msgstr[4] "%(value).1f nonillion"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s nonillion"
-msgstr[1] "%(value)s nonillion"
-msgstr[2] "%(value)s nonillion"
-msgstr[3] "%(value)s nonillion"
-msgstr[4] "%(value)s nonillion"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f decillion"
-msgstr[1] "%(value).1f decillion"
-msgstr[2] "%(value).1f decillion"
-msgstr[3] "%(value).1f decillion"
-msgstr[4] "%(value).1f decillion"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s decillion"
-msgstr[1] "%(value)s decillion"
-msgstr[2] "%(value)s decillion"
-msgstr[3] "%(value)s decillion"
-msgstr[4] "%(value)s decillion"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googol"
-msgstr[2] "%(value).1f googol"
-msgstr[3] "%(value).1f googol"
-msgstr[4] "%(value).1f googol"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googol"
-msgstr[2] "%(value)s googol"
-msgstr[3] "%(value)s googol"
-msgstr[4] "%(value)s googol"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "aon"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "dó"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "trí"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "ceathair"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "cúig"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "sé"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "seacht"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "ocht"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "naoi"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s ó shin"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "anois"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "soicind ó shin"
-msgstr[1] "%(count)s soicind ó shin"
-msgstr[2] "%(count)s soicind ó shin"
-msgstr[3] "%(count)s soicind ó shin"
-msgstr[4] "%(count)s soicind ó shin"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "nóiméad ó shin"
-msgstr[1] "%(count)s nóiméad ó shin"
-msgstr[2] "%(count)s nóiméad ó shin"
-msgstr[3] "%(count)s nóiméad ó shin"
-msgstr[4] "%(count)s nóiméad ó shin"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "uair a chloig ó shin"
-msgstr[1] "%(count)s uair a chloig ó shin"
-msgstr[2] "%(count)s uair a chloig ó shin"
-msgstr[3] "%(count)s uair a chloig ó shin"
-msgstr[4] "%(count)s uair a chloig ó shin"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr " %(delta)s as seo amach"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "soicind as seo amach"
-msgstr[1] "%(count)s soicind as seo amach"
-msgstr[2] "%(count)s soicind as seo amach"
-msgstr[3] "%(count)s soicind as seo amach"
-msgstr[4] "%(count)s soicind as seo amach"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "nóiméad as seo amach"
-msgstr[1] "%(count)s nóiméad as seo amach"
-msgstr[2] "%(count)s nóiméad as seo amach"
-msgstr[3] "%(count)s nóiméad as seo amach"
-msgstr[4] "%(count)s nóiméad as seo amach"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "uair a chloig as seo amach"
-msgstr[1] "%(count)s uair a chloig as seo amach"
-msgstr[2] "%(count)s uair a chloig as seo amach"
-msgstr[3] "%(count)s uair a chloig as seo amach"
-msgstr[4] "%(count)s uair a chloig as seo amach"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/gl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/gl/LC_MESSAGES/django.mo
deleted file mode 100644
index 0951791..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/gl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/gl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/gl/LC_MESSAGES/django.po
deleted file mode 100644
index 68dc2f6..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/gl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,309 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# fasouto <fsoutomoure@gmail.com>, 2011
-# fonso <fonzzo@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Leandro Regueiro <leandro.regueiro@gmail.com>, 2011,2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/"
-"gl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "hoxe"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "onte"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "mañá"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "º"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "º"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "º"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "º"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f millón"
-msgstr[1] "%(value).1f millóns"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s millón"
-msgstr[1] "%(value)s millóns"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f mil millóns"
-msgstr[1] "%(value).1f mil millóns"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s mil millóns"
-msgstr[1] "%(value)s mil millóns"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f billón"
-msgstr[1] "%(value).1f billóns"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s billón"
-msgstr[1] "%(value)s billóns"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f trillóns"
-msgstr[1] "%(value).1f trillóns"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s trillón"
-msgstr[1] "%(value)s trillóns"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f cuadrillóns"
-msgstr[1] "%(value).1f cuadrillóns"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s cuadrillón"
-msgstr[1] "%(value)s cuadrillóns"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f quintillóns"
-msgstr[1] "%(value).1f quintillóns"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s quintillón"
-msgstr[1] "%(value)s quintillóns"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f sextillóns"
-msgstr[1] "%(value).1f sextillóns"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s sextillón"
-msgstr[1] "%(value)s sextillóns"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f septillóns"
-msgstr[1] "%(value).1f septillóns"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s septillón"
-msgstr[1] "%(value)s septillóns"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f octillóns"
-msgstr[1] "%(value).1f octillóns"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s octillón"
-msgstr[1] "%(value)s octillóns"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f nonillóns"
-msgstr[1] "%(value).1f nonillóns"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s nonillón"
-msgstr[1] "%(value)s nonillóns"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f gúgols"
-msgstr[1] "%(value).1f gúgols"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s gúgol"
-msgstr[1] "%(value)s gúgols"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "un"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "dous"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tres"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "catro"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "cinco"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "seis"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "sete"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "oito"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "nove"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "hai %(delta)s"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "agora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "hai un segundo"
-msgstr[1] "hai %(count)s segundos"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "hai un minuto"
-msgstr[1] "hai %(count)s minutos"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "hai unha hora"
-msgstr[1] "hai %(count)s horas"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "dentro de %(delta)s"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "dentro dun segundo"
-msgstr[1] "dentro de %(count)s segundos"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "dentro dun minuto"
-msgstr[1] "dentro de %(count)s minutos"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "dentro dunha hora"
-msgstr[1] "dentro de %(count)s horas"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/he/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/he/LC_MESSAGES/django.mo
deleted file mode 100644
index ee604c5..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/he/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/he/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/he/LC_MESSAGES/django.po
deleted file mode 100644
index 3033873..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/he/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,308 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Alex Gaynor <alex.gaynor@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Meir Kriheli <mkriheli@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "היום"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "אתמול"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "מחר"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "רביעי"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "ראשון"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "שני"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "שלישי"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f מיליון"
-msgstr[1] "%(value).1f מיליונים"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s מיליון"
-msgstr[1] "%(value)s מיליון"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f מיליארד"
-msgstr[1] "%(value).1f מיליארדים"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s מיליארד"
-msgstr[1] "%(value)s מיליארד"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f טריליון"
-msgstr[1] "%(value).1f טריליונים"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s טריליון"
-msgstr[1] "%(value)s טריליון"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f קוודריליון"
-msgstr[1] "%(value).1f קוודריליון"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s קוודריליון"
-msgstr[1] "%(value)s קוודריליון"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f קווינטיליון"
-msgstr[1] "%(value).1f קווינטיליון"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s קווינטיליון"
-msgstr[1] "%(value)s קווינטיליון"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f סקסטיליון"
-msgstr[1] "%(value).1f סקסטיליון"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s סקסטיליון"
-msgstr[1] "%(value)s סקסטיליון"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f ספטיליון"
-msgstr[1] "%(value).1f ספטיליון"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s ספטיליון"
-msgstr[1] "%(value)s ספטיליון"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f אוקטיליון"
-msgstr[1] "%(value).1f אוקטיליון"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s אוקטיליון"
-msgstr[1] "%(value)s אוקטיליון"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f נוניליון"
-msgstr[1] "%(value).1f נוניליון"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s נוניליון"
-msgstr[1] "%(value)s נוניליון"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f דציליון"
-msgstr[1] "%(value).1f דציליון"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s דציליון"
-msgstr[1] "%(value)s דציליון"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f גוגול"
-msgstr[1] "%(value).1f גוגול"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s גוגול"
-msgstr[1] "%(value)s גוגול"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "אחד"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "שניים"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "שלושה"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "ארבעה"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "חמישה"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "שישה"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "שבעה"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "שמונה"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "תשעה"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "לפני %(delta)s"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "עכשיו"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "לפני שנייה"
-msgstr[1] "לפני %(count)s שניות"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "לפני דקה"
-msgstr[1] "לפני %(count)s דקות"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "לפני שעה"
-msgstr[1] "לפני %(count)s שעות"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "בעוד %(delta)s"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "בעוד שנייה"
-msgstr[1] "בעוד %(count)s שניות"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "בעוד דקה"
-msgstr[1] "בעוד %(count)s דקות"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "בעוד שעה"
-msgstr[1] "בעוד %(count)s שעות"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/hi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/hi/LC_MESSAGES/django.mo
deleted file mode 100644
index 0d338b2..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/hi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/hi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/hi/LC_MESSAGES/django.po
deleted file mode 100644
index 30384b0..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/hi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,308 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Chandan kumar <chandankumar.093047@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sandeep Satavlekar <sandysat@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/"
-"hi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "आज"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "कल (बीता)"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "कल"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "वाँ"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "ला"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "रा"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "रा"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f मिलियन"
-msgstr[1] "%(value).1f मिलियन"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s मिलियन"
-msgstr[1] "%(value)s मिलियन"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f बिलियन"
-msgstr[1] "%(value).1f बिलियन"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s बिलियन"
-msgstr[1] "%(value)s बिलियन"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f खरब"
-msgstr[1] "%(value).1f खरब"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s खरब"
-msgstr[1] "%(value)s खरब"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f करोड़ शंख"
-msgstr[1] "%(value).1f करोड़ शंख"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s करोड़ शंख"
-msgstr[1] "%(value)s करोड़ शंख"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f कुइनतिलिअन "
-msgstr[1] "%(value).1f कुइनतिलिअन "
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s कुइनतिलिअन "
-msgstr[1] "%(value)s कुइनतिलिअन "
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f सेक्सतिलियन"
-msgstr[1] "%(value).1f सेक्सतिलियन"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s सेक्सतिलियन"
-msgstr[1] "%(value)s सेक्सतिलियन"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f सेपतिलियन "
-msgstr[1] "%(value).1f सेपतिलियन "
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s सेपतिलियन "
-msgstr[1] "%(value)s सेपतिलियन "
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f ओकतिलियन "
-msgstr[1] "%(value).1f ओकतिलियन "
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s ओकतिलियन "
-msgstr[1] "%(value)s ओकतिलियन "
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f नोनिलियन"
-msgstr[1] "%(value).1f नोनिलियन"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s नोनिलियन"
-msgstr[1] "%(value)s नोनिलियन"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f देसीलियन"
-msgstr[1] "%(value).1f देसीलियन"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s देसीलियन"
-msgstr[1] "%(value)s देसीलियन"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f गोगोल"
-msgstr[1] "%(value).1f गोगोल"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s गोगोल"
-msgstr[1] "%(value)s गोगोल"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "एक"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "दो"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "तीन"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "चार"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "पाँच"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "छह"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "सात"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "आठ"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "नौ"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s पहले"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "अभी"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "एक सेकेंड पहले"
-msgstr[1] "%(count)s सेकेंड पहले"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] " एक मिनट पहले"
-msgstr[1] "%(count)s मिनट पहले"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "एक घंटा पहले"
-msgstr[1] "%(count)s घंटे पहले"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s अब से"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "अब से एक सेकेंड"
-msgstr[1] "अब से %(count)s सेकेंड"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "अब से एक मिनट"
-msgstr[1] "अब से %(count)s मिनट"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "अब से एक घंटा"
-msgstr[1] "अब से %(count)s घंटे"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/hr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/hr/LC_MESSAGES/django.mo
deleted file mode 100644
index 8d764c1..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/hr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/hr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/hr/LC_MESSAGES/django.po
deleted file mode 100644
index 5ce5887..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/hr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,334 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-04-24 18:40+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/"
-"hr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hr\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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr ""
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr ""
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr ""
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/hu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/hu/LC_MESSAGES/django.mo
deleted file mode 100644
index 6ac250f..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/hu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/hu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/hu/LC_MESSAGES/django.po
deleted file mode 100644
index 0d46e09..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/hu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,308 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Attila Nagy <>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# János Péter Ronkay <transifex@hangya.net>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/"
-"language/hu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "ma"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "tegnap"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "holnap"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "."
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value)1f millió"
-msgstr[1] "%(value)1f millió"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s millió"
-msgstr[1] "%(value)s millió"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value)1f milliárd"
-msgstr[1] "%(value)1f milliárd"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] " %(value)s milliárd"
-msgstr[1] " %(value)s milliárd"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value)1f trilliárd"
-msgstr[1] "%(value)1f trilliárd"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s billió"
-msgstr[1] "%(value)s billió"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f billiárd"
-msgstr[1] "%(value).1f billiárd"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s billiárd"
-msgstr[1] "%(value)s billiárd"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f trillió"
-msgstr[1] "%(value).1f trillió"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s trillió"
-msgstr[1] "%(value)s trillió"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f trilliárd"
-msgstr[1] "%(value).1f trilliárd"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s trilliárd"
-msgstr[1] "%(value)s trilliárd"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f kvadrillió"
-msgstr[1] "%(value).1f kvadrillió"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s kvadrillió"
-msgstr[1] "%(value)s kvadrillió"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f kvadrilliárd"
-msgstr[1] "%(value).1f kvadrilliárd"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s kvadrilliárd"
-msgstr[1] "%(value)s kvadrilliárd"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f kvintillió"
-msgstr[1] "%(value).1f kvintillió"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s kvintillió"
-msgstr[1] "%(value)s kvintillió"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f kvintilliárd"
-msgstr[1] "%(value).1f kvintilliárd"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s kvintilliárd"
-msgstr[1] "%(value)s kvintilliárd"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googol"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googol"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "egy"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "kettő"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "három"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "négy"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "öt"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "hat"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "hét"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "nyolc"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "kilenc"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr " %(delta)s ezelőtt"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "most"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "egy másodperccel ezelőtt"
-msgstr[1] "%(count)s másodperccel ezelőtt"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "egy perccel ezelőtt"
-msgstr[1] "%(count)s perccel ezelőtt"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "egy órával ezelőtt"
-msgstr[1] "%(count)s órával ezelőtt"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s mostantól"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "egy másodperccel ezután"
-msgstr[1] "%(count)s másodperccel ezután"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "egy perccel ezután"
-msgstr[1] "%(count)s perccel ezután"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "egy órával ezután"
-msgstr[1] "%(count)s órával ezután"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ia/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/ia/LC_MESSAGES/django.mo
deleted file mode 100644
index 17385b2..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ia/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ia/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/ia/LC_MESSAGES/django.po
deleted file mode 100644
index eb8caeb..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ia/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,306 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Martijn Dekker <mcdutchie@hotmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/"
-"language/ia/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ia\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "hodie"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "heri"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "deman"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "e"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "me"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "nde"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "tie"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f million"
-msgstr[1] "%(value).1f milliones"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s million"
-msgstr[1] "%(value)s milliones"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milliardo"
-msgstr[1] "%(value).1f milliardos"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s milliardo"
-msgstr[1] "%(value)s milliardos"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f billion"
-msgstr[1] "%(value).1f billiones"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s billion"
-msgstr[1] "%(value)s billiones"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f billiardo"
-msgstr[1] "%(value).1f billiardos"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s billiardo"
-msgstr[1] "%(value)s billiardos"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f trillion"
-msgstr[1] "%(value).1f trilliones"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s trillion"
-msgstr[1] "%(value)s trilliones"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f trilliardo"
-msgstr[1] "%(value).1f trilliardos"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s trilliardo"
-msgstr[1] "%(value)s trilliardos"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f quadrillion"
-msgstr[1] "%(value).1f quadrilliones"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s quadrillion"
-msgstr[1] "%(value)s quadrilliones"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f quadrilliardo"
-msgstr[1] "%(value).1f quadrilliardos"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s quadrilliardo"
-msgstr[1] "%(value)s quadrilliardos"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f quintillion"
-msgstr[1] "%(value).1f quintilliones"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s quintillion"
-msgstr[1] "%(value)s quintilliones"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f quintilliardo"
-msgstr[1] "%(value).1f quintilliardos"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s quintilliardo"
-msgstr[1] "%(value)s quintilliardos"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googoles"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googoles"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "un"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "duo"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tres"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "quatro"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "cinque"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "sex"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "septe"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "octo"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "novem"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s retro"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "ora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "un secunda retro"
-msgstr[1] "%(count)s secundas retro"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "un minuta retro"
-msgstr[1] "%(count)s minutas retro"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "un hora retro"
-msgstr[1] "%(count)s horas retro"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "in %(delta)s"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "in un secunda"
-msgstr[1] "in %(count)s secundas"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "in un minuta"
-msgstr[1] "in %(count)s minutas"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "in un hora"
-msgstr[1] "in %(count)s horas"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/id/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/id/LC_MESSAGES/django.mo
deleted file mode 100644
index 8e9cb94..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/id/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/id/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/id/LC_MESSAGES/django.po
deleted file mode 100644
index 5b97243..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/id/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,279 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# rodin <romihardiyanto@gmail.com>, 2011-2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "hari ini"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "kemarin"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "besok"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "th"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "st"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "nd"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "rd"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f juta"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s juta"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milyar"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s miliar"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f trilyun"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s triliun"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f kuadriliun"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s kuadriliun"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f kuintiliun"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s kuintiliun"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f sekstiliun"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s sekstiliun"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f septiliun"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s septiliun"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f oktiliun"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s oktiliun"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f noniliun"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s noniliun"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f desiliun"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s desiliun"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "satu"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "dua"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tiga"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "empat"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "lima"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "enam"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "tujuh"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "delapan"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "sembilan"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s yang lalu"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "sekarang"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "%(count)s detik yang lalu"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "%(count)s menit yang lalu"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "%(count)s jam yang lalu"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s dari sekarang"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "%(count)s detik dari sekarang"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "%(count)s menit dari sekarang"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "%(count)s jam dari sekarang"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/is/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/is/LC_MESSAGES/django.mo
deleted file mode 100644
index a8936d9..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/is/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/is/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/is/LC_MESSAGES/django.po
deleted file mode 100644
index 8b4db7d..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/is/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,308 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# gudmundur <gudmundur.bjarni@gmail.com>, 2012
-# Hafsteinn Einarsson <haffi67@gmail.com>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/"
-"language/is/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: is\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "í dag"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "gærdagur"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "morgundagur"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "."
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milljón"
-msgstr[1] "%(value).1f milljónir"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s milljón"
-msgstr[1] "%(value)s milljónir"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milljarður"
-msgstr[1] "%(value).1f milljarðar"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s milljarður"
-msgstr[1] "%(value)s milljarðar"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f billjarður"
-msgstr[1] "%(value).1f billjónir"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s billjón"
-msgstr[1] "%(value)s billjónir"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f billjarður"
-msgstr[1] "%(value).1f billjarðar"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s billjarður"
-msgstr[1] "%(value)s billjarðar"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f trilljón"
-msgstr[1] "%(value).1f trilljónir"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s trilljón"
-msgstr[1] "%(value)s trilljónir"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f trilljarður"
-msgstr[1] "%(value).1f trilljarðar"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s trilljarður"
-msgstr[1] "%(value)s trilljarðar"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f kvaðrilljón"
-msgstr[1] "%(value).1f kvaðrilljónir"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s kvaðrilljón"
-msgstr[1] "%(value)s kvaðrilljónir"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f kvaðrilljarður"
-msgstr[1] "%(value).1f kvaðrilljarðar"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s kvaðrilljarður"
-msgstr[1] "%(value)s kvaðrilljarðar"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f kvintilljón"
-msgstr[1] "%(value).1f kvintilljónir"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s kvintilljón"
-msgstr[1] "%(value)s kvintilljónir"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f kvintilljarður"
-msgstr[1] "%(value).1f kvintilljarðar"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s kvintilljarður"
-msgstr[1] "%(value)s kvintilljarðar"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googol"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googol"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "einn"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "tveir"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "þrír"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "fjórir"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "fimm"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "sex"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "sjö"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "átta"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "níu"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s síðan"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "núna"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "fyrir sekúndu síðan"
-msgstr[1] "%(count)s sekúndum síðan"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "fyrir mínútu síðan"
-msgstr[1] "%(count)s mínútum síðan"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "fyrir klukkustund"
-msgstr[1] "fyrir %(count)s klukkustundum"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "eftir %(delta)s"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "eftir sekúndu"
-msgstr[1] "eftir %(count)s sekúndur"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "eftir mínútu"
-msgstr[1] "eftir %(count)s mínútur"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "eftir klukkustund"
-msgstr[1] "eftir %(count)s klukkustundir"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/it/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/it/LC_MESSAGES/django.mo
deleted file mode 100644
index 4039bf5..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/it/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/it/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/it/LC_MESSAGES/django.po
deleted file mode 100644
index 215c685..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/it/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,309 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Federico Capoano <federico.capoano@teletu.it>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Luca Manlio De Lisi <lukefiltroman@gmail.com>, 2011
-# Nicola Larosa <transifex@teknico.net>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/django/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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "oggi"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "ieri"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "domani"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "º"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "º"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "º"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "º"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milione"
-msgstr[1] "%(value).1f milioni"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s milione"
-msgstr[1] "%(value)s milioni"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miliardo"
-msgstr[1] "%(value).1f miliardi"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s miliardo"
-msgstr[1] "%(value)s miliardi"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f migliaio di miliardi"
-msgstr[1] "%(value).1f migliaia di miliardi"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s migliaio di miliardi"
-msgstr[1] "%(value)s migliaia di miliardi"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f milione di miliardi"
-msgstr[1] "%(value).1f milioni di miliardi"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s milione di miliardi"
-msgstr[1] "%(value)s milioni di miliardi"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f miliardo di miliardi"
-msgstr[1] "%(value).1f miliardi di miliardi"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s miliardo di miliardi"
-msgstr[1] "%(value)s miliardi di miliardi"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f migliaio di miliardi di miliardi"
-msgstr[1] "%(value).1f migliaia di miliardi di miliardi"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s migliaio di miliardi di miliardi"
-msgstr[1] "%(value)s migliaia di miliardi di miliardi"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f milione di miliardi di miliardi"
-msgstr[1] "%(value).1f milioni di miliardi di miliardi"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s milione di miliardi di miliardi"
-msgstr[1] "%(value)s milioni di miliardi di miliardi"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f miliardo di miliardi di miliardi"
-msgstr[1] "%(value).1f miliardi di miliardi di miliardi"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s miliardo di miliardi di miliardi"
-msgstr[1] "%(value)s miliardi di miliardi di miliardi"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f migliaio di miliardi di miliardi di miliardi"
-msgstr[1] "%(value).1f migliaioa di miliardi di miliardi di miliardi"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s migliaio di miliardi di miliardi di miliardi"
-msgstr[1] "%(value)s migliaia di miliardi di miliardi di miliardi"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f milione di miliardi di miliardi di miliardi"
-msgstr[1] "%(value).1f milioni di miliardi di miliardi di miliardi"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s milione di miliardi di miliardi di miliardi"
-msgstr[1] "%(value)s milioni di miliardi di miliardi di miliardi"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googol"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googol"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "uno"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "due"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tre"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "quattro"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "cinque"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "sei"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "sette"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "otto"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "nove"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s fa"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "adesso"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "un secondo fa"
-msgstr[1] "%(count)s secondi fa"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "un minuto fa"
-msgstr[1] "%(count)s minuti fa"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "un'ora fa"
-msgstr[1] "%(count)s ore fa"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s da adesso"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "un secondo da adesso"
-msgstr[1] "%(count)s secondi da adesso"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "un minuto da adesso"
-msgstr[1] "%(count)s minuti da adesso"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "un'ora da adesso"
-msgstr[1] "%(count)s ore da adesso"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ja/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/ja/LC_MESSAGES/django.mo
deleted file mode 100644
index 2183388..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ja/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ja/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/ja/LC_MESSAGES/django.po
deleted file mode 100644
index 30da07c..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ja/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,280 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Jonas Obrist <ojiidotch@gmail.com>, 2012
-# Shinya Okano <tokibito@gmail.com>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/"
-"ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "今日"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "昨日"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "明日"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "番目"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "番目"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "番目"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "番目"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f ミリオン"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s ミリオン"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f ビリオン"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s ビリオン"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f トリリオン"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s トリリオン"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f クァドリリオン"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] " %(value)s クァドリリオン"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f クインテリオン"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s クインテリオン"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f セクスティリオン"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s セクスティリオン"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f セプティリオン"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s セプティリオン"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f オクティリオン"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s オクティリオン"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f ノニリオン"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s ノニリオン"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f デシリオン"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s デシリオン"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f グーゴル"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s グーゴル"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "1"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "2"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "3"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "4"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "5"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "6"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "7"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "8"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "9"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s前"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "今"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "%(count)s秒前"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "%(count)s分前"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "%(count)s時間前"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "今から%(delta)s"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "今から%(count)s秒"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "今から%(count)s分"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "今から%(count)s時間"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ka/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/ka/LC_MESSAGES/django.mo
deleted file mode 100644
index a26668e..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ka/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ka/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/ka/LC_MESSAGES/django.po
deleted file mode 100644
index 4eef2f9..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ka/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,279 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# André Bouatchidzé <a@anbz.net>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/"
-"ka/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ka\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "დღეს"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "გუშინ"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "ხვალ"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "-ე"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "-ლი"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "-ე"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "-ე"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f მილიონი"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s მილიონი"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f მილიარდი"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s მილიარდი"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f ტრილიონი"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s ტრილიონი"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f კვადრილიონი"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s კვადრილიონი"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f კვინტილიონი"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s კვინტილიონი"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f სექსტილიონი"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s სექსტილიონი"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f სეპტილიონი"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s სეპტილიონი"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f ოქტილიონი"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s ოქტილიონი"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f ნონილიონი"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s ნონილიონი"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f დეცილიონი"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s დეცილიონი"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f გუგოლი"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s გუგოლი"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "ერთი"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "ორი"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "სამი"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "ოთხი"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "ხუთი"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "ექვსი"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "შვიდი"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "რვა"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "ცხრა"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s-ის წინ"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "ახლა"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "%(count)s წამის წინ"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "%(count)s წუთის წინ"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "%(count)s საათის წინ"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s-ის შემდეგ"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "%(count)s წამის შემდეგ"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "%(count)s წუთის შემდეგ"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "%(count)s საათის შემდეგ"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/kk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/kk/LC_MESSAGES/django.mo
deleted file mode 100644
index 87539ef..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/kk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/kk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/kk/LC_MESSAGES/django.po
deleted file mode 100644
index f3b320a..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/kk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,290 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# yun_man_ger <germanilyin@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/"
-"kk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kk\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "бүгін"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "кеше"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "ерте"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "ші"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "ші"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "ші"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "ші"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f миллион"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s миллион"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f миллиард"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s миллиард"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f триллион"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s trillion"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "бір"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "екі"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "үш"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "төрт"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "бес"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "алты"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "жеті"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "сегіз"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "тоғыз"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s бұрын"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "кәзір"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-"one: бір секунд бұрын\n"
-"other: %(count)s секунд бұрын"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-"one: бір минут бұрын\n"
-"other: %(count)s минут бұрын"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-"one: бір сағат бұрын\n"
-"other: %(count)s сағат бұрын"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "кәзірден %(delta)s"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-"one: кәзірден бір секунд\n"
-"other: кәзірден %(count)s секунд"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-"one: кәзірден бір минут\n"
-"other: кәзірден %(count)s минут"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
-"one: кәзірден бір сағат\n"
-"other: кәзірден %(count)s сағат"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/km/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/km/LC_MESSAGES/django.mo
deleted file mode 100644
index e97b1e1..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/km/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/km/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/km/LC_MESSAGES/django.po
deleted file mode 100644
index 3fbd1c9..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/km/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,277 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-04-24 18:40+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Khmer (http://www.transifex.com/projects/p/django/language/"
-"km/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: km\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr ""
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] ""
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr ""
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr ""
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/kn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/kn/LC_MESSAGES/django.mo
deleted file mode 100644
index 7019b4f..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/kn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/kn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/kn/LC_MESSAGES/django.po
deleted file mode 100644
index 27076c3..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/kn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,277 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-04-24 18:40+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/"
-"kn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kn\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr ""
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] ""
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr ""
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr ""
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ko/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/ko/LC_MESSAGES/django.mo
deleted file mode 100644
index 4af0331..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ko/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ko/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/ko/LC_MESSAGES/django.po
deleted file mode 100644
index e4fad1a..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ko/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,278 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/"
-"ko/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ko\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "오늘"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "어제"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "내일"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "번째"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "번째"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "번째"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "번째"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f백만"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f십억"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f조"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "1"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "2"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "3"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "4"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "5"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "6"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "7"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "8"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "9"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr ""
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/lt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/lt/LC_MESSAGES/django.mo
deleted file mode 100644
index 2b64c12..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/lt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/lt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/lt/LC_MESSAGES/django.po
deleted file mode 100644
index 1c35a75..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/lt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,335 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Simonas Kazlauskas <simonas@kazlauskas.me>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-17 20:50+0000\n"
-"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
-"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/"
-"language/lt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lt\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
-"%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "šiandien"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "vakar"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "rytoj"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "-as"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "-as"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "-as"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "-as"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milijonas"
-msgstr[1] "%(value).1f milijonai"
-msgstr[2] "%(value).1f milijonų"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s milijonas"
-msgstr[1] "%(value)s milijonai"
-msgstr[2] "%(value)s milijonų"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milijardas"
-msgstr[1] "%(value).1f milijardai"
-msgstr[2] "%(value).1f milijardų"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s milijardas"
-msgstr[1] "%(value)s milijardai"
-msgstr[2] "%(value)s milijardų"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f trilijonas"
-msgstr[1] "%(value).1f trilijonai"
-msgstr[2] "%(value).1f trilijonų"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s trilijonas"
-msgstr[1] "%(value)s trilijonai"
-msgstr[2] "%(value)s trilijonų"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f kvadrilijonas"
-msgstr[1] "%(value).1f kvadrilijonai"
-msgstr[2] "%(value).1f kvadrilijonų"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s kvadrilijonas"
-msgstr[1] "%(value)s kvadrilijonai"
-msgstr[2] "%(value)s kvadrilijonų"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f kvintilijonas"
-msgstr[1] "%(value).1f kvintilijonai"
-msgstr[2] "%(value).1f kvintilijonų"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s kvintilijonas"
-msgstr[1] "%(value)s kvintilijonai"
-msgstr[2] "%(value)s kvintilijonų"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f sikstilijonas"
-msgstr[1] "%(value).1f sikstilijonai"
-msgstr[2] "%(value).1f sikstilijonų"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s sikstilijonas"
-msgstr[1] "%(value)s sikstilijonai"
-msgstr[2] "%(value)s sikstilijonų"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f septilijonas"
-msgstr[1] "%(value).1f septilijonai"
-msgstr[2] "%(value).1f septilijonų"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s septilijonas"
-msgstr[1] "%(value)s septilijonai"
-msgstr[2] "%(value)s septilijonų"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f oktilijonas"
-msgstr[1] "%(value).1f oktilijonai"
-msgstr[2] "%(value).1f oktilijonų"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s oktilijonas"
-msgstr[1] "%(value)s oktilijonai"
-msgstr[2] "%(value)s oktilijonų"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f naintilijonas"
-msgstr[1] "%(value).1f naintilijonai"
-msgstr[2] "%(value).1f naintilijonų"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s naintilijonas"
-msgstr[1] "%(value)s naintilijonai"
-msgstr[2] "%(value)s naintilijonų"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f decilijonas"
-msgstr[1] "%(value).1f decilijonai"
-msgstr[2] "%(value).1f decilijonų"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s decilijonas"
-msgstr[1] "%(value)s decilijonai"
-msgstr[2] "%(value)s decilijonų"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f gugolas"
-msgstr[1] "%(value).1f gugolai"
-msgstr[2] "%(value).1f gugolų"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s gugolas"
-msgstr[1] "%(value)s gugolai"
-msgstr[2] "%(value)s gugolų"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "vienas"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "du"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "trys"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "keturi"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "penki"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "šeši"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "septyni"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "aštuoni"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "devyni"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "prieš %(delta)s"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "dabar"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "prieš %(count)s sekundę"
-msgstr[1] "prieš %(count)s sekundes"
-msgstr[2] "prieš %(count)s sekundžių"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "prieš %(count)s minutę"
-msgstr[1] "prieš %(count)s minutes"
-msgstr[2] "prieš %(count)s minučių"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "prieš %(count)s valandą"
-msgstr[1] "prieš %(count)s valandas"
-msgstr[2] "prieš %(count)s valandų"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s nuo dabar"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "%(count)s sekundė nuo dabar"
-msgstr[1] "%(count)s sekundės nuo dabar"
-msgstr[2] "%(count)s sekundžių nuo dabar"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "%(count)s minutė nuo dabar"
-msgstr[1] "%(count)s minutės nuo dabar"
-msgstr[2] "%(count)s minučių nuo dabar"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "%(count)s valanda nuo dabar"
-msgstr[1] "%(count)s valandos nuo dabar"
-msgstr[2] "%(count)s valandų nuo dabar"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/lv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/lv/LC_MESSAGES/django.mo
deleted file mode 100644
index 929154a..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/lv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/lv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/lv/LC_MESSAGES/django.po
deleted file mode 100644
index c2a93a7..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/lv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,335 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/"
-"lv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lv\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "šodien"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "vakar"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "rīt"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "th"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "st"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "nd"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "rd"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f miljons"
-msgstr[1] "%(value).1f miljoni"
-msgstr[2] "%(value).1f miljonu"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miljards"
-msgstr[1] "%(value).1f miljardi"
-msgstr[2] "%(value).1f miljardu"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f triljons"
-msgstr[1] "%(value).1f triljoni"
-msgstr[2] "%(value).1f triljonu"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "viens"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "divi"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "trīs"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "četri"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "pieci"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "seši"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "septiņi"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "astoņi"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "deviņi"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr ""
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/mk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/mk/LC_MESSAGES/django.mo
deleted file mode 100644
index 8783b71..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/mk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/mk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/mk/LC_MESSAGES/django.po
deleted file mode 100644
index 32f001c..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/mk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,306 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# vvangelovski <vvangelovski@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/"
-"language/mk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mk\n"
-"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "денес"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "вчера"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "утре"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "ти"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "ви"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "ри"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "ти"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f милион"
-msgstr[1] "%(value).1f милиони"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s милион"
-msgstr[1] "%(value)s милиони"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f милијарда"
-msgstr[1] "%(value).1f милијарди"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s милијарда"
-msgstr[1] "%(value)s милијарди"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f трилион"
-msgstr[1] "%(value).1f трилиони"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s трилион"
-msgstr[1] "%(value)s трилиони"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f квадрилион"
-msgstr[1] "%(value).1f квадрилиони"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s квадрилион"
-msgstr[1] "%(value)s квадрилиони"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f квинтилион"
-msgstr[1] "%(value).1f квинтилиони"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s квинтилион"
-msgstr[1] "%(value)s квинтилиони"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f секстилион"
-msgstr[1] "%(value).1f секстилиони"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s секстилион"
-msgstr[1] "%(value)s секстилиони"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f септилион"
-msgstr[1] "%(value).1f септилиони"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s септилион"
-msgstr[1] "%(value)s септилиони"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f октилион"
-msgstr[1] "%(value).1f октилиони"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s октилион"
-msgstr[1] "%(value)s октилиони"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f нонилион"
-msgstr[1] "%(value).1f нонилиони"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s нонилион"
-msgstr[1] "%(value)s нонилиони"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f децилион"
-msgstr[1] "%(value).1f децилиони"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s децилион"
-msgstr[1] "%(value)s децилиони"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f гугол"
-msgstr[1] "%(value).1f гуголи"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s гугол"
-msgstr[1] "%(value)s гуголи"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "еден"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "две"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "three"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "четри"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "пет"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "шест"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "седум"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "осум"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "девет"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "пред %(delta)s"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "сега"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "пред секунда"
-msgstr[1] "пред %(count)s\\u00a0секунди"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "пред минута"
-msgstr[1] "пред %(count)s\\u00a0минути"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "пред час"
-msgstr[1] "пред %(count)s\\u00a0часа"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s од сега"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "за една секунда"
-msgstr[1] "%(count)s\\u00a0секунди од сега"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "за една минута"
-msgstr[1] "%(count)s\\u00a0минути од сега"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "за еден час"
-msgstr[1] "%(count)s\\u00a0часа од сега"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ml/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/ml/LC_MESSAGES/django.mo
deleted file mode 100644
index 190e6d8..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ml/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ml/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/ml/LC_MESSAGES/django.po
deleted file mode 100644
index 057b90d..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ml/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Rajeesh Nair <rajeeshrnair@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/"
-"language/ml/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ml\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "ഇന്ന്"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "ഇന്നലെ"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "നാളെ"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "ആം"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "ആം"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "ആം"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "ആം"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f മില്ല്യണ്‍ (ദശലക്ഷം)"
-msgstr[1] "%(value).1f മില്ല്യണ്‍ (ദശലക്ഷം)"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s ദശലക്ഷം"
-msgstr[1] "%(value)s ദശലക്ഷം"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f ബില്ല്യണ്‍ (ശതകോടി)"
-msgstr[1] "%(value).1f ബില്ല്യണ്‍ (ശതകോടി)"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s ശതകോടി"
-msgstr[1] "%(value)s ശതകോടി"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f ട്രില്ല്യണ്‍ (ലക്ഷം കോടി)"
-msgstr[1] "%(value).1f ട്രില്ല്യണ്‍ (ലക്ഷം കോടി)"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s ലക്ഷം കോടി"
-msgstr[1] "%(value)s ലക്ഷം കോടി"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f ക്വാഡ്രില്ല്യണ്‍"
-msgstr[1] "%(value).1f ക്വാഡ്രില്ല്യണ്‍"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s ക്വാഡ്രില്ല്യണ്‍"
-msgstr[1] "%(value)s ക്വാഡ്രില്ല്യണ്‍"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f ക്വിന്റില്ല്യണ്‍"
-msgstr[1] "%(value).1f ക്വിന്റില്ല്യണ്‍"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s ക്വിന്റില്ല്യണ്‍"
-msgstr[1] "%(value)s ക്വിന്റില്ല്യണ്‍"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f സെക്സ്റ്റില്ല്യണ്‍"
-msgstr[1] "%(value).1f സെക്സ്റ്റില്ല്യണ്‍"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s സെക്സ്റ്റില്ല്യണ്‍"
-msgstr[1] "%(value)s സെക്സ്റ്റില്ല്യണ്‍"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f സെപ്റ്റില്ല്യണ്‍"
-msgstr[1] "%(value).1f സെപ്റ്റില്ല്യണ്‍"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s സെപ്റ്റില്ല്യണ്‍"
-msgstr[1] "%(value)s സെപ്റ്റില്ല്യണ്‍"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f ഒക്റ്റില്ല്യണ്‍"
-msgstr[1] "%(value).1f ഒക്റ്റില്ല്യണ്‍"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s ഒക്റ്റില്ല്യണ്‍"
-msgstr[1] "%(value)s ഒക്റ്റില്ല്യണ്‍"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f നോനില്ല്യണ്‍"
-msgstr[1] "%(value).1f നോനില്ല്യണ്‍"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s നോനില്ല്യണ്‍"
-msgstr[1] "%(value)s നോനില്ല്യണ്‍"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f ഡെസില്ല്യണ്‍"
-msgstr[1] "%(value).1f ഡെസില്ല്യണ്‍"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s ഡെസില്ല്യണ്‍"
-msgstr[1] "%(value)s ഡെസില്ല്യണ്‍"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f ഗൂഗോള്‍"
-msgstr[1] "%(value).1f ഗൂഗോള്‍"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s ഗൂഗോള്‍"
-msgstr[1] "%(value)s ഗൂഗോള്‍"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "ഒന്ന്"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "രണ്ട്"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "മൂന്ന്"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "നാല്"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "അഞ്ച്"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "ആറ്"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "ഏഴ്"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "എട്ട്"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "ഒന്‍പത്"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s മുമ്പ്"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "ഇപ്പോള്‍"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "ഒരു സെക്കന്‍ഡ് മുമ്പ്"
-msgstr[1] "%(count)s സെക്കന്‍ഡുകള്‍ മുമ്പ്"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "ഒരു മിനുറ്റ് മുമ്പ്"
-msgstr[1] "%(count)s മിനുറ്റുകള്‍ മുമ്പ്"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "ഒരു മണിക്കൂര്‍ മുമ്പ്"
-msgstr[1] "%(count)s മണിക്കൂര്‍ മുമ്പ്"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "ഇപ്പോള്‍ മുതല്‍ %(delta)s"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "ഇപ്പോള്‍ മുതല്‍ ഒരു സെക്കന്‍ഡ്"
-msgstr[1] "ഇപ്പോള്‍ മുതല്‍ %(count)s സെക്കന്‍ഡുകള്‍"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "ഇപ്പോള്‍ മുതല്‍ ഒരു മിനുട്ട്"
-msgstr[1] "ഇപ്പോള്‍ മുതല്‍ %(count)s മിനുട്ടുകള്‍"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "ഇപ്പോള്‍ മുതല്‍ ഒരു മണിക്കൂര്‍"
-msgstr[1] "ഇപ്പോള്‍ മുതല്‍ %(count)s മണിക്കൂറുകള്‍"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/mn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/mn/LC_MESSAGES/django.mo
deleted file mode 100644
index 00792b8..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/mn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/mn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/mn/LC_MESSAGES/django.po
deleted file mode 100644
index d470e06..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/mn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,308 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# bayarkhuu <brka_8@yahoo.com>, 2013
-# zorig <zorig_ezd@yahoo.com>, 2013
-# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-30 18:17+0000\n"
-"Last-Translator: zorig <zorig_ezd@yahoo.com>\n"
-"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/"
-"language/mn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "өнөөдөр"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "өчигдөр"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "маргааш"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "-р"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "-р"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "-р"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "-р"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f сая"
-msgstr[1] "%(value).1f сая"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s сая"
-msgstr[1] "%(value)s сая"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f тэрбум"
-msgstr[1] "%(value).1f тэрбум"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s тэрбум"
-msgstr[1] "%(value)s тэрбум"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f наяд"
-msgstr[1] "%(value).1f наяд"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s наяд"
-msgstr[1] "%(value)s наяд"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f тунамал"
-msgstr[1] "%(value).1f тунамал"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s тунамал"
-msgstr[1] "%(value)s тунамал"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f их ингүүмэл "
-msgstr[1] "%(value).1f их ингүүмэл "
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s их ингүүмэл "
-msgstr[1] "%(value)s их ингүүмэл "
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f ялгаруулагч"
-msgstr[1] "%(value).1f ялгаруулагч"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s ялгаруулагч"
-msgstr[1] "%(value)s ялгаруулагч"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f их өөр дээр "
-msgstr[1] "%(value).1f их өөр дээр "
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s их өөр дээр "
-msgstr[1] "%(value)s их өөр дээр "
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f өөр дээр "
-msgstr[1] "%(value).1f өөр дээр "
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s өөр дээр "
-msgstr[1] "%(value)s өөр дээр "
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "нэг"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "хоёр"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "гурав"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "дөрөв"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "тав"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "зургаа"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "долоо"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "найм"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "ес"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s өмнө"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "одоо"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "одооноос %(delta)s "
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
-msgstr[1] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/my/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/my/LC_MESSAGES/django.mo
deleted file mode 100644
index 0a555f0..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/my/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/my/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/my/LC_MESSAGES/django.po
deleted file mode 100644
index 0871a65..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/my/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,278 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Yhal Htet Aung <jumoun@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Burmese (http://www.transifex.com/projects/p/django/language/"
-"my/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: my\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "ယနေ့"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "မနေ့"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "မနက်ဖြန်"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "မြောက်"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "မြောက်"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "မြောက်"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "မြောက်"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f မီလီယံ"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s မီလီယံ"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f ဘီလီယံ"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s ဘီလီယံ"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f တရီလျံ"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s တရီလျံ"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f ကွပ်ဒရီလျံ"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s ကွပ်ဒရီလျံ"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f ကွင့်တီလျံ"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s ကွင့်တီလျံ"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f ဆက်တီလျံ"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s ဆက်တီလျံ"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f ဆပ်တီလျံ"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s ဆပ်တီလျံ"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f အော့တီလျံ"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s အော့တီလျံ"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f နိုနီလျံ"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s နိုနီလျံ"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f ဒက်စီလျံ"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s ဒက်စီလျံ"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f ဂူးဂေါ်"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s ဂူးဂေါ်"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "တစ်"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "နှစ်"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "သံုး"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "လေး"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "ငါး"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "ခြောက်"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "ခုနစ်"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "ရှစ်"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "ကိုး"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s အခါက"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "ယခု"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "%(count)s စက္ကန့်များအခါက"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "%(count)s မိနစ်များအခါက"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "%(count)s နာရီများအခါက"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s ယခုမှ"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "ယခုမှ %(count)s စက္ကန့်များ"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "ယခုမှ %(count)s မိနစ်များ"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "ယခုမှ %(count)s နာရီများ"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/nb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/nb/LC_MESSAGES/django.mo
deleted file mode 100644
index 09b944d..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/nb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/nb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/nb/LC_MESSAGES/django.po
deleted file mode 100644
index 5f79181..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/nb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jonklo <jonklo@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/"
-"language/nb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "i dag"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "i går"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "i morgen"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "."
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f million"
-msgstr[1] "%(value).1f millioner"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s million"
-msgstr[1] "%(value)s millioner"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milliard"
-msgstr[1] "%(value).1f milliarder"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s milliard"
-msgstr[1] "%(value)s milliarder"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f billion"
-msgstr[1] "%(value).1f billioner"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s billion"
-msgstr[1] "%(value)s billioner"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f kvadrillion"
-msgstr[1] "%(value).1f kvadrillioner"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s kvadrillion"
-msgstr[1] "%(value)s kvadrillioner"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f kvintillion"
-msgstr[1] "%(value).1f kvintillioner"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s kvintillion"
-msgstr[1] "%(value)s kvintillioner"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f sekstillion"
-msgstr[1] "%(value).1f sekstillioner"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s sekstillion"
-msgstr[1] "%(value)s sekstillioner"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f septillion"
-msgstr[1] "%(value).1f septillioner"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s septillion"
-msgstr[1] "%(value)s septillioner"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f oktillion"
-msgstr[1] "%(value).1f oktillioner"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s oktillion"
-msgstr[1] "%(value)s oktillioner"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f nonillion"
-msgstr[1] "%(value).1f nonillioner"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s nonillion"
-msgstr[1] "%(value)s nonillioner"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f desillion"
-msgstr[1] "%(value).1f desillioner"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s desillion"
-msgstr[1] "%(value)s desillioner"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googoler"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googoler"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "én"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "to"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tre"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "fire"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "fem"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "seks"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "sju"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "åtte"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "ni"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s siden"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "nå"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "ett sekund siden"
-msgstr[1] "%(count)s sekunder siden"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "ett minutt siden"
-msgstr[1] "%(count)s minutter siden"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "en time siden"
-msgstr[1] "%(count)s timer siden"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s fra nå"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "ett sekund fra nå"
-msgstr[1] "%(count)s sekunder fra nå"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "ett minutt fra nå"
-msgstr[1] "%(count)s minutter fra nå"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "en time fra nå"
-msgstr[1] "%(count)s timer fra nå"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ne/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/ne/LC_MESSAGES/django.mo
deleted file mode 100644
index 789c602..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ne/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ne/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/ne/LC_MESSAGES/django.po
deleted file mode 100644
index 9235318..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ne/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,306 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Paras Nath Chaudhary <opnchaudhary@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/"
-"ne/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ne\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "आज"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "हिजो"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "भोली"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr ""
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s मिलियन"
-msgstr[1] "%(value)s मिलियन"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s अरब"
-msgstr[1] "%(value)s अरब"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s खरब"
-msgstr[1] "%(value)s खरब"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s करोड़ शंख"
-msgstr[1] "%(value)s करोड़ शंख"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "एक "
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "दुई "
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "तीन "
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "चार "
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "पाँच "
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "छ "
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "सात "
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "आठ "
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "नौ "
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s अगाडी"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "अहिले"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "एक सेकेन्ड अगाडी "
-msgstr[1] "%(count)s सेकेन्ड अगाडी "
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "एक मिनेट अगाडी "
-msgstr[1] "%(count)s मिनेट अगाडी "
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "एक घन्टा अगाडी "
-msgstr[1] "%(count)s घन्टा अगाडी "
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
-msgstr[1] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/nl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/nl/LC_MESSAGES/django.mo
deleted file mode 100644
index b67da73..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/nl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/nl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/nl/LC_MESSAGES/django.po
deleted file mode 100644
index 0563d4c..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/nl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,308 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Blue <alexandervanratingen@gmail.com>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Tino de Bruijn <tinodb@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Dutch (http://www.transifex.com/projects/p/django/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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "vandaag"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "gisteren"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "morgen"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "e"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "e"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "e"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "e"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f miljoen"
-msgstr[1] "%(value).1f miljoen"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s miljoen"
-msgstr[1] "%(value)s miljoen"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miljard"
-msgstr[1] "%(value).1f miljard"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s miljard"
-msgstr[1] "%(value)s miljard"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f biljoen"
-msgstr[1] "%(value).1f biljoen"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s biljoen"
-msgstr[1] "%(value)s biljoen"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f biljard"
-msgstr[1] "%(value).1f biljard"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s biljard"
-msgstr[1] "%(value)s biljard"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f triljoen"
-msgstr[1] "%(value).1f triljoen"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s triljoen"
-msgstr[1] "%(value)s triljoen"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f triljard"
-msgstr[1] "%(value).1f triljard"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s triljard"
-msgstr[1] "%(value)s triljard"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f quadriljoen"
-msgstr[1] "%(value).1f quadriljoen"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s quadriljoen"
-msgstr[1] "%(value)s quadriljoen"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f quadriljard"
-msgstr[1] "%(value).1f quadriljard"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s quadriljard"
-msgstr[1] "%(value)s quadriljard"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f quintiljoen"
-msgstr[1] "%(value).1f quintiljoen"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s quintiljoen"
-msgstr[1] "%(value)s quintiljoen"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f quintiljard"
-msgstr[1] "%(value).1f quintiljard"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s quintiljard"
-msgstr[1] "%(value)s quintiljard"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googol"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googol"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "één"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "twee"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "drie"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "vier"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "vijf"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "zes"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "zeven"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "acht"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "negen"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s geleden"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "nu"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "een seconde geleden"
-msgstr[1] "%(count)s seconden geleden"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "een minuut geleden"
-msgstr[1] "%(count)s minuten geleden"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "een uur geleden"
-msgstr[1] "%(count)s uur geleden"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s van nu"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "een seconde van nu"
-msgstr[1] "%(count)s seconden van nu"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "een minuut van nu"
-msgstr[1] "%(count)s minuten van nu"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "een uur geleden"
-msgstr[1] "%(count)s uur van nu"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/nn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/nn/LC_MESSAGES/django.mo
deleted file mode 100644
index a322f27..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/nn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/nn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/nn/LC_MESSAGES/django.po
deleted file mode 100644
index 60e4e4f..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/nn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# velmont <odin.omdal@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/"
-"language/nn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "i dag"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "i går"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "i morgon"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "."
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f million"
-msgstr[1] "%(value).1f millionar"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s million"
-msgstr[1] "%(value)s millionar"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milliard"
-msgstr[1] "%(value).1f milliardar"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s milliard"
-msgstr[1] "%(value)s milliardar"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f billion"
-msgstr[1] "%(value).1f billionar"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s billion"
-msgstr[1] "%(value)s billionar"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f kvadrillion"
-msgstr[1] "%(value).1f kvadrillionar"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s kvadrillion"
-msgstr[1] "%(value)s kvadrillionar"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f kvintillion"
-msgstr[1] "%(value).1f kvintillionar"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s kvintillion"
-msgstr[1] "%(value)s kvintillionar"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f sekstillion"
-msgstr[1] "%(value).1f sekstilionar"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s sekstillion"
-msgstr[1] "%(value)s sekstillionar"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f septillion"
-msgstr[1] "%(value).1f septillionar"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s septillion"
-msgstr[1] "%(value)s septillionar"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f oktillion"
-msgstr[1] "%(value).1f oktillionar"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s oktillion"
-msgstr[1] "%(value)s oktillionar"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f nonillion"
-msgstr[1] "%(value).1f nonillionar"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s nonillion"
-msgstr[1] "%(value)s nonillionar"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f desillion"
-msgstr[1] "%(value).1f desillionar"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s desillion"
-msgstr[1] "%(value)s desillionar"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googolar"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googolar"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "éin"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "to"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tre"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "fire"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "fem"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "seks"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "sju"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "åtte"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "ni"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s sidan"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "no"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "eitt sekund sidan"
-msgstr[1] "%(count)s sekund sidan"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "eitt minutt sidan"
-msgstr[1] "%(count)s minutt sidan"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "éin time sidan"
-msgstr[1] "%(count)s timar sidan"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s frå no"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "eitt sekund frå no"
-msgstr[1] "%(count)s sekund frå no"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "eitt minutt frå no"
-msgstr[1] "%(count)s minutt frå no"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "éin time frå no"
-msgstr[1] "%(count)s timar frå no"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/os/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/os/LC_MESSAGES/django.mo
deleted file mode 100644
index 3ac36cc..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/os/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/os/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/os/LC_MESSAGES/django.po
deleted file mode 100644
index 91a220b..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/os/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,306 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Ossetic (http://www.transifex.com/projects/p/django/language/"
-"os/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: os\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "абон"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "знон"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "сом"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "-ӕм"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "-аг"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "-аг"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "-аг"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f милуан"
-msgstr[1] "%(value).1f милуан"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s милуан"
-msgstr[1] "%(value)s милуан"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f биллон"
-msgstr[1] "%(value).1f биллион"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s биллион"
-msgstr[1] "%(value)s биллион"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f триллион"
-msgstr[1] "%(value).1f триллион"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s триллион"
-msgstr[1] "%(value)s триллион"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f къуадриллион"
-msgstr[1] "%(value).1f къуадриллион"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s къуадриллион"
-msgstr[1] "%(value)s къуадриллион"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f къуинтиллион"
-msgstr[1] "%(value).1f къуинтиллион"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s къуинтиллион"
-msgstr[1] "%(value)s къуинтиллион"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f секстиллион"
-msgstr[1] "%(value).1f секстиллион"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s секстиллион"
-msgstr[1] "%(value)s секстиллион"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f септиллион"
-msgstr[1] "%(value).1f септиллион"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s септиллион"
-msgstr[1] "%(value)s септиллион"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f октиллион"
-msgstr[1] "%(value).1f октиллион"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s октиллион"
-msgstr[1] "%(value)s октиллион"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f нониллион"
-msgstr[1] "%(value).1f нониллион"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s нониллион"
-msgstr[1] "%(value)s нониллион"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f дециллион"
-msgstr[1] "%(value).1f дециллион"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s дециллион"
-msgstr[1] "%(value)s дециллион"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f гугол"
-msgstr[1] "%(value).1f гугол"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s гугол"
-msgstr[1] "%(value)s гугол"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "иу"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "дыууӕ"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "ӕртӕ"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "цыппар"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "фондз"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "ӕхсӕз"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "авд"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "аст"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "фараст"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s раздӕр"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "ныр"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "секунд размӕ"
-msgstr[1] "%(count)s секунды размӕ"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "минут размӕ"
-msgstr[1] "%(count)s минут размӕ"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "сахат размӕ"
-msgstr[1] "%(count)s сахат размӕ"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s енырӕй"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "иу секунд енырӕй"
-msgstr[1] "енырӕй %(count)s секунд"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "енырӕй 1 минут"
-msgstr[1] "енырӕй %(count)s минут"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "енырӕй 1 сахат"
-msgstr[1] "енырӕй %(count)s сахат"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/pa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/pa/LC_MESSAGES/django.mo
deleted file mode 100644
index 03b965e..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/pa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/pa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/pa/LC_MESSAGES/django.po
deleted file mode 100644
index c57f6e7..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/pa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# A S Alam <apreet.alam@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/"
-"language/pa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pa\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "ਅੱਜ"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "ਕੱਲ੍ਹ"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "ਭਲਕੇ"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "ਵਾਂ"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "ਲਾਂ"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "ਜਾ"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "ਜਾ"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f ਮਿਲੀਅਨ"
-msgstr[1] "%(value).1f ਮਿਲੀਅਨ"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s ਮਿਲੀਅਨ"
-msgstr[1] "%(value)s ਮਿਲੀਅਨ"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f ਬਿਲੀਅਨ"
-msgstr[1] "%(value).1f ਬਿਲੀਅਨ"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f ਟਰਲੀਅਨ"
-msgstr[1] "%(value).1f ਟਰਲੀਅਨ"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "ਇੱਕ"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "ਦੋ"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "ਤਿੰਨ"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "ਚਾਰ"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "ਪੰਜ"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "ਛੇ"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "ਸੱਤ"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "ਅੱਠ"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "ਨੌ"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr ""
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "ਹੁਣ"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
-msgstr[1] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/pl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/pl/LC_MESSAGES/django.mo
deleted file mode 100644
index 3f7e02f..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/pl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/pl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/pl/LC_MESSAGES/django.po
deleted file mode 100644
index 19f1e85..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/pl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,337 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# angularcircle, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Roman Barczyński <rombar@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/django/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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "dzisiaj"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "wczoraj"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "jutro"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "-y"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "-szy"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "-gi"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "-ci"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milion"
-msgstr[1] "%(value).1f miliony"
-msgstr[2] "%(value).1f milionów"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s milion"
-msgstr[1] "%(value)s miliony"
-msgstr[2] "%(value)s milionów"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miliard"
-msgstr[1] "%(value).1f miliardy"
-msgstr[2] "%(value).1f miliardów"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s miliard"
-msgstr[1] "%(value)s miliardy"
-msgstr[2] "%(value)s miliardów"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f bilion"
-msgstr[1] "%(value).1f biliony"
-msgstr[2] "%(value).1f bilionów"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s bilion"
-msgstr[1] "%(value)s biliony"
-msgstr[2] "%(value)s bilionów"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f biliard"
-msgstr[1] "%(value).1f biliardy"
-msgstr[2] "%(value).1f biliardów"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s biliard"
-msgstr[1] "%(value)s biliardy"
-msgstr[2] "%(value)s biliardów"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f trylion"
-msgstr[1] "%(value).1f tryliony"
-msgstr[2] "%(value).1f trylionów"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s trylion"
-msgstr[1] "%(value)s tryliony"
-msgstr[2] "%(value)s trylionyów"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f tryliard"
-msgstr[1] "%(value).1f tryliardy"
-msgstr[2] "%(value).1f tryliardów"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] " %(value)s tryliard"
-msgstr[1] "%(value)s tryliardy"
-msgstr[2] "%(value)s tryliardów"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f kwadrylion"
-msgstr[1] "%(value).1f kwadryliony"
-msgstr[2] "%(value).1f kwadrylionów"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s kwadrylion"
-msgstr[1] "%(value)s kwadryliony"
-msgstr[2] "%(value)s kwadrylionów"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f kwadryliard"
-msgstr[1] "%(value).1f kwardyliardy"
-msgstr[2] "%(value).1f kwadryliardów"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s kwadryliard"
-msgstr[1] "%(value)s kwardyliardy"
-msgstr[2] "%(value)s kwadryliardów"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f kwintylion"
-msgstr[1] "%(value).1f kwintyliony"
-msgstr[2] "%(value).1f kwintylionów"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s kwintylion"
-msgstr[1] "%(value)s kwintyliony"
-msgstr[2] "%(value)s kwintylionów"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f kwintyliard"
-msgstr[1] "%(value).1f kwintyliardy"
-msgstr[2] "%(value).1f kwintyliardów"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s kwintyliard"
-msgstr[1] "%(value)s kwintyliardy"
-msgstr[2] "%(value)s kwintyliardów"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googole"
-msgstr[2] "%(value).1f googolów"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googole"
-msgstr[2] "%(value)s googolów"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "jeden"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "dwa"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "trzy"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "cztery"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "pięć"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "sześć"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "siedem"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "osiem"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "dziewięć"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s temu"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "teraz"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "sekundę temu"
-msgstr[1] "%(count)s sekundy temu"
-msgstr[2] "%(count)s sekund temu"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "minutę temu"
-msgstr[1] "%(count)s minuty temu"
-msgstr[2] "%(count)s minut temu"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "godzinę temu"
-msgstr[1] "%(count)s godzin temu"
-msgstr[2] "%(count)s godziny temu"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "za %(delta)s "
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "za sekundę"
-msgstr[1] "za %(count)s sekundy"
-msgstr[2] "za %(count)s sekund"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "za minutę"
-msgstr[1] "za %(count)s minuty"
-msgstr[2] "za %(count)s minut"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "za godzinę"
-msgstr[1] "za %(count)s godziny"
-msgstr[2] "za %(count)s godzin"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/pt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/pt/LC_MESSAGES/django.mo
deleted file mode 100644
index fdebaa9..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/pt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/pt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/pt/LC_MESSAGES/django.po
deleted file mode 100644
index 7707000..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/pt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nuno Mariz <nmariz@gmail.com>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "hoje"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "ontem"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "amanhã"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "º"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "º"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "º"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "º"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milhão"
-msgstr[1] "%(value).1f milhões"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s milhão"
-msgstr[1] "%(value)s milhões"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f bilião"
-msgstr[1] "%(value).1f biliões"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s bilião"
-msgstr[1] "%(value)s biliões"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f trilião"
-msgstr[1] "%(value).1f triliões"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s trilião"
-msgstr[1] "%(value)s triliões"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f quadrilião"
-msgstr[1] "%(value).1f quatriliões"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s quadrilião"
-msgstr[1] "%(value)s quatriliões"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f quintilião"
-msgstr[1] "%(value).1f quintiliões"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s quintilião"
-msgstr[1] "%(value)s quintiliões"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f sextilião"
-msgstr[1] "%(value).1f sextiliões"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s sextilião"
-msgstr[1] "%(value)s sextiliões"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f septilião"
-msgstr[1] "%(value).1f septiliões"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s septilião"
-msgstr[1] "%(value)s septiliões"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f octilião"
-msgstr[1] "%(value).1f octiliões"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s octilião"
-msgstr[1] "%(value)s octiliões"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f nonilião"
-msgstr[1] "%(value).1f noniliões"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s nonilião"
-msgstr[1] "%(value)s noniliões"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f decilião"
-msgstr[1] "%(value).1f deciliões"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s decilião"
-msgstr[1] "%(value)s deciliões"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googol"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googol"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "um"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "dois"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "três"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "quatro"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "cinco"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "seis"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "sete"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "oito"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "nove"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s atrás"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "agora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "há 1 segundo"
-msgstr[1] "há %(count)s segundos"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "há 1 minuto"
-msgstr[1] "há %(count)s minutos"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "há 1 hora"
-msgstr[1] "há %(count)s horas"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s a partir de agora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "1 segundo a partir de agora"
-msgstr[1] "%(count)s segundos a partir de agora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "1 minuto a partir de agora"
-msgstr[1] "%(count)s minutos a partir de agora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "1 hora a partir de agora"
-msgstr[1] "%(count)s horas a partir de agora"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.mo
deleted file mode 100644
index c698018..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.po
deleted file mode 100644
index 6bd81c8..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/pt_BR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,309 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Eduardo Carvalho <eduardocereto@gmail.com>, 2012
-# Guilherme Gondim <semente@taurinus.org>, 2012-2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sandro <sandrossv@hotmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
-"django/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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "hoje"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "ontem"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "amanhã"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "º"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "º"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "º"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "º"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milhão"
-msgstr[1] "%(value).1f milhões"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s milhão"
-msgstr[1] "%(value)s milhões"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f bilhão"
-msgstr[1] "%(value).1f bilhões"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s bilhão"
-msgstr[1] "%(value)s bilhões"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f trilhão"
-msgstr[1] "%(value).1f trilhões"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s trilhão"
-msgstr[1] "%(value)s trilhões"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f quadrilhão"
-msgstr[1] "%(value).1f quadrilhões"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s quadrilhão"
-msgstr[1] "%(value)s quadrilhões"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f quintilhão"
-msgstr[1] "%(value).1f quintilhões"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s quintilhão"
-msgstr[1] "%(value)s quintilhões"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f sextilhão"
-msgstr[1] "%(value).1f sextilhões"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s sextilhão"
-msgstr[1] "%(value)s sextilhões"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f septilhão"
-msgstr[1] "%(value).1f septilhões"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s septilhão"
-msgstr[1] "%(value)s septilhões"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f octilhão"
-msgstr[1] "%(value).1f octilhões"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s octilhão"
-msgstr[1] "%(value)s octilhões"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f nonilhão"
-msgstr[1] "%(value).1f nonilhões"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s nonilhão"
-msgstr[1] "%(value)s nonilhões"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f decilhão"
-msgstr[1] "%(value).1f decilhões"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s decilhão"
-msgstr[1] "%(value)s decilhões"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googol"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googol"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "um"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "dois"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "três"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "quatro"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "cinco"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "seis"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "sete"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "oito"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "nove"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s atrás"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "agora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "há 1 segundo"
-msgstr[1] "há %(count)s segundos"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "há 1 minuto"
-msgstr[1] "há %(count)s minutos"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "há 1 hora"
-msgstr[1] "há %(count)s horas"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s a partir de agora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "1 segundo a partir de agora"
-msgstr[1] "%(count)s segundos a partir de agora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "1 minuto a partir de agora"
-msgstr[1] "%(count)s minutos a partir de agora"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "1 hora a partir de agora"
-msgstr[1] "%(count)s horas a partir de agora"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ro/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/ro/LC_MESSAGES/django.mo
deleted file mode 100644
index 66019d2..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ro/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ro/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/ro/LC_MESSAGES/django.po
deleted file mode 100644
index 7d147ee..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ro/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,337 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Daniel Ursache-Dogariu <contact@danniel.net>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-# sorin <sorin.sbarnea@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/"
-"ro/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1));\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "astăzi"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "ieri"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "mâine"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "ul"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "ul"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "lea"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "lea"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milion"
-msgstr[1] "%(value).1f milioane"
-msgstr[2] "%(value).1f de milione"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s milion"
-msgstr[1] "%(value)s milioane"
-msgstr[2] "%(value)s de milioane"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miliard"
-msgstr[1] "%(value).1f miliarde"
-msgstr[2] "%(value).1f de miliarde"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s miliard"
-msgstr[1] "%(value)s miliarde"
-msgstr[2] "%(value)s de miliarde"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f trilion"
-msgstr[1] "%(value).1f trilioane"
-msgstr[2] "%(value).1f de trilioane"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s trilion"
-msgstr[1] "%(value)s trilioane"
-msgstr[2] "%(value)s de trilioane"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "unu"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "doi"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "trei"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "patru"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "cinci"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "șase"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "șapte"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "opt"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "nouă"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "acum %(delta)s"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "acum"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "acum o secundă"
-msgstr[1] "acum %(count)s secunde"
-msgstr[2] "acum %(count)s de secunde"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "acum un minut"
-msgstr[1] "acum %(count)s minute "
-msgstr[2] "acum %(count)s de minute "
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "acum o oră"
-msgstr[1] "acum %(count)s ore"
-msgstr[2] "acum %(count)s de ore"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s de acum"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "o secundă de acum"
-msgstr[1] "%(count)s secunde de acum"
-msgstr[2] "%(count)s de secunde de acum"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "un minut de acum"
-msgstr[1] "%(count)s minute de acum"
-msgstr[2] "%(count)s de ore de acum"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "o oră de acum"
-msgstr[1] "%(count)s ore de acum"
-msgstr[2] "%(count)s de ore de acum"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ru/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/ru/LC_MESSAGES/django.mo
deleted file mode 100644
index aaf6b1c..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ru/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ru/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/ru/LC_MESSAGES/django.po
deleted file mode 100644
index 0b87852..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ru/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,338 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Dimmus <dmitri.chudinov@gmail.com>, 2011
-# Eugene MechanisM <contact@mechanism.name>, 2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Алексей Борискин <sun.void@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/"
-"ru/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "сегодня"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "вчера"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "завтра"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "ий"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "ый"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "ой"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "ий"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f миллион"
-msgstr[1] "%(value).1f миллиона"
-msgstr[2] "%(value).1f миллионов"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s миллион"
-msgstr[1] "%(value)s миллиона"
-msgstr[2] "%(value)s миллионов"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f миллиард"
-msgstr[1] "%(value).1f миллиарда"
-msgstr[2] "%(value).1f миллиардов"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s миллиард"
-msgstr[1] "%(value)s миллиарда"
-msgstr[2] "%(value)s миллиардов"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f триллион"
-msgstr[1] "%(value).1f триллиона"
-msgstr[2] "%(value).1f триллионов"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s триллион"
-msgstr[1] "%(value)s триллиона"
-msgstr[2] "%(value)s триллионов"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f квадриллион"
-msgstr[1] "%(value).1f квадриллиона"
-msgstr[2] "%(value).1f квадриллионов"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s квадриллион"
-msgstr[1] "%(value)s квадриллиона"
-msgstr[2] "%(value)s квадриллионов"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f квинтиллион"
-msgstr[1] "%(value).1f квинтиллиона"
-msgstr[2] "%(value).1f квинтиллионов"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s квинтиллион"
-msgstr[1] "%(value)s квинтиллиона"
-msgstr[2] "%(value)s квинтиллионов"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f секстиллион"
-msgstr[1] "%(value).1f секстиллиона"
-msgstr[2] "%(value).1f секстиллионов"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s секстиллион"
-msgstr[1] "%(value)s секстиллиона"
-msgstr[2] "%(value)s секстиллионов"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f септиллион"
-msgstr[1] "%(value).1f септиллиона"
-msgstr[2] "%(value).1f септиллионов"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s септиллион"
-msgstr[1] "%(value)s септиллиона"
-msgstr[2] "%(value)s септиллионов"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f октиллион"
-msgstr[1] "%(value).1f октиллиона"
-msgstr[2] "%(value).1f октиллионов"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s октиллион"
-msgstr[1] "%(value)s октиллиона"
-msgstr[2] "%(value)s октиллионов"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f нониллион"
-msgstr[1] "%(value).1f нониллиона"
-msgstr[2] "%(value).1f нониллионов"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s нониллион"
-msgstr[1] "%(value)s нониллиона"
-msgstr[2] "%(value)s нониллионов"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f дециллион"
-msgstr[1] "%(value).1f дециллиона"
-msgstr[2] "%(value).1f дециллионов"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s дециллион"
-msgstr[1] "%(value)s дециллиона"
-msgstr[2] "%(value)s дециллионов"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f гугол"
-msgstr[1] "%(value).1f гугола"
-msgstr[2] "%(value).1f гуголов"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s гугол"
-msgstr[1] "%(value)s гугола"
-msgstr[2] "%(value)s гуголов"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "один"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "два"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "три"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "четыре"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "пять"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "шесть"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "семь"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "восемь"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "девять"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s назад"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "сейчас"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "%(count)s секунду назад"
-msgstr[1] "%(count)s секунды назад"
-msgstr[2] "%(count)s секунд назад"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "%(count)s минуту назад"
-msgstr[1] "%(count)s минуты назад"
-msgstr[2] "%(count)s минут назад"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "%(count)s час назад"
-msgstr[1] "%(count)s часа назад"
-msgstr[2] "%(count)s часов назад"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "через %(delta)s"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "через %(count)s секунду"
-msgstr[1] "через %(count)s секунды"
-msgstr[2] "через %(count)s секунд"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "через %(count)s минуту"
-msgstr[1] "через %(count)s минуты"
-msgstr[2] "через %(count)s минут"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "через %(count)s час"
-msgstr[1] "через %(count)s часа"
-msgstr[2] "через %(count)s часов"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/sk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/sk/LC_MESSAGES/django.mo
deleted file mode 100644
index 62404fd..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/sk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/sk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/sk/LC_MESSAGES/django.po
deleted file mode 100644
index adb9820..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/sk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,336 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# claudep <claude@2xlibre.net>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Marian Andre <marian@andre.sk>, 2012-2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-17 20:08+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Slovak (http://www.transifex.com/projects/p/django/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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "dnes"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "včera"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "zajtra"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "th"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "st"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "nd"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "rd"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f miliónu"
-msgstr[1] "%(value).1f miliónu"
-msgstr[2] "%(value).1f miliónu"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] " %(value)s milión"
-msgstr[1] " %(value)s milióny"
-msgstr[2] " %(value)s miliónov"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miliarda"
-msgstr[1] "%(value).1f miliardy"
-msgstr[2] "%(value).1f miliárd"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] " %(value)s miliarda"
-msgstr[1] " %(value)s miliardy"
-msgstr[2] " %(value)s miliárd"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f bilión"
-msgstr[1] "%(value).1f bilióny"
-msgstr[2] "%(value).1f biliónov"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s bilión"
-msgstr[1] "%(value)s bilióny"
-msgstr[2] "%(value)s biliónov"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f biliardy"
-msgstr[1] "%(value).1f biliardy"
-msgstr[2] "%(value).1f biliárd"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s biliarda"
-msgstr[1] "%(value)s biliardy"
-msgstr[2] "%(value)s biliárd"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f triliónu"
-msgstr[1] "%(value).1f triliónu"
-msgstr[2] "%(value).1f triliónu"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s trilión"
-msgstr[1] "%(value)s trilióny"
-msgstr[2] "%(value)s triliónov"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f triliardy"
-msgstr[1] "%(value).1f triliardy"
-msgstr[2] "%(value).1f triliárd"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s triliarda"
-msgstr[1] "%(value)s triliardy"
-msgstr[2] "%(value)s triliárd"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f kvadriliónu"
-msgstr[1] "%(value).1f kvadriliónu"
-msgstr[2] "%(value).1f kvadriliónov"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s kvadrilión"
-msgstr[1] "%(value)s kvadrilióny"
-msgstr[2] "%(value)s kvadriliónov"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f kvadriliardy"
-msgstr[1] "%(value).1f kvadriliardy"
-msgstr[2] "%(value).1f kvadriliárd"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s kvadriliarda"
-msgstr[1] "%(value)s kvadriliardy"
-msgstr[2] "%(value)s kvadriliárd"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f kvintiliónu"
-msgstr[1] "%(value).1f kvintiliónu"
-msgstr[2] "%(value).1f kvintiliónov"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s kvintilión"
-msgstr[1] "%(value)s kvintilióny"
-msgstr[2] "%(value)s kvintiliónov"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f kvintiliardy"
-msgstr[1] "%(value).1f kvintiliardy"
-msgstr[2] "%(value).1f kvintiliárd"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s kvintiliarda"
-msgstr[1] "%(value)s kvintiliardy"
-msgstr[2] "%(value)s kvintiliárd"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googol"
-msgstr[2] "%(value).1f googol"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googol"
-msgstr[2] "%(value)s googol"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "jeden"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "dva"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tri"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "štyri"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "päť"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "šesť"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "sedem"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "osem"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "deväť"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "pred %(delta)s"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "teraz"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "pred sekundou"
-msgstr[1] "pred %(count)s sekundami"
-msgstr[2] "pred %(count)s sekundami"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "pred minútou"
-msgstr[1] "pred %(count)s minútami"
-msgstr[2] "pred %(count)s minútami"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "pred hodinou"
-msgstr[1] "pred %(count)s hodinami"
-msgstr[2] "pred %(count)s hodinami"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s odteraz"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "sekundu odteraz"
-msgstr[1] "%(count)s sekundy odteraz"
-msgstr[2] "%(count)s sekúnd odteraz"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "minútu odteraz"
-msgstr[1] "%(count)s minúty odteraz"
-msgstr[2] "%(count)s minút odteraz"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "hodinu odteraz"
-msgstr[1] "%(count)s\\u00a0hodiny odteraz"
-msgstr[2] "%(count)s hodín odteraz"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/sl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/sl/LC_MESSAGES/django.mo
deleted file mode 100644
index ca1279d..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/sl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/sl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/sl/LC_MESSAGES/django.po
deleted file mode 100644
index a919c05..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/sl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,366 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Jure Cuhalev <gandalf@owca.info>, 2011
-# Primož Verdnik <primoz.verdnik@gmail.com>, 2013
-# zejn <zejn@kiberpipa.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-17 21:10+0000\n"
-"Last-Translator: Claude Paroz <claude@2xlibre.net>\n"
-"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/"
-"language/sl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "danes"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "včeraj"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "jutri"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "th"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "st"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "nd"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "rd"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milijon"
-msgstr[1] "%(value).1f milijona"
-msgstr[2] "%(value).1f milijoni"
-msgstr[3] "%(value).1f milijonov"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s milijon"
-msgstr[1] "%(value)s milijona"
-msgstr[2] "%(value)s milijoni"
-msgstr[3] "%(value)s milijonov"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miljarda"
-msgstr[1] "%(value).1f miljardi"
-msgstr[2] "%(value).1f miljarde"
-msgstr[3] "%(value).1f miljard"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s miljarda"
-msgstr[1] "%(value)s miljardi"
-msgstr[2] "%(value)s miljarde"
-msgstr[3] "%(value)s miljard"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f triljon"
-msgstr[1] "%(value).1f triljona"
-msgstr[2] "%(value).1f triljoni"
-msgstr[3] "%(value).1f triljonov"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s triljon"
-msgstr[1] "%(value)s triljona"
-msgstr[2] "%(value)s triljoni"
-msgstr[3] "%(value)s triljonov"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f kvadrilijon"
-msgstr[1] "%(value).1f kvadrilijona"
-msgstr[2] "%(value).1f kvadrilijoni"
-msgstr[3] "%(value).1f kvadrilijonov"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s kvadrilijon"
-msgstr[1] "%(value)s kvadrilijona"
-msgstr[2] "%(value)s kvadrilijoni"
-msgstr[3] "%(value)s kvadrilijonov"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f kvintilijon"
-msgstr[1] "%(value).1f kvintilijona"
-msgstr[2] "%(value).1f kvintilijoni"
-msgstr[3] "%(value).1f kvintilijonov"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s kvintilijon"
-msgstr[1] "%(value)s kvintilijona"
-msgstr[2] "%(value)s kvintilijoni"
-msgstr[3] "%(value)s kvintilijonov"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f sekstilijon"
-msgstr[1] "%(value).1f sekstilijona"
-msgstr[2] "%(value).1f sekstilijoni"
-msgstr[3] "%(value).1f sekstilijonov"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s sekstilijon"
-msgstr[1] "%(value)s sekstilijona"
-msgstr[2] "%(value)s sekstilijoni"
-msgstr[3] "%(value)s sekstilijonov"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f septilijon"
-msgstr[1] "%(value).1f septilijona"
-msgstr[2] "%(value).1f septilijoni"
-msgstr[3] "%(value).1f septilijonov"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s septilijon"
-msgstr[1] "%(value)s septilijona"
-msgstr[2] "%(value)s septilijoni"
-msgstr[3] "%(value)s septilijonov"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f oktilijon"
-msgstr[1] "%(value).1f oktilijona"
-msgstr[2] "%(value).1f oktilijoni"
-msgstr[3] "%(value).1f oktilijonov"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s oktilijon"
-msgstr[1] "%(value)s oktilijona"
-msgstr[2] "%(value)s oktilijoni"
-msgstr[3] "%(value)s oktilijonov"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f nonilijon"
-msgstr[1] "%(value).1f nonilijona"
-msgstr[2] "%(value).1f nonilijoni"
-msgstr[3] "%(value).1f nonilijonov"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s nonilijon"
-msgstr[1] "%(value)s nonilijona"
-msgstr[2] "%(value)s nonilijoni"
-msgstr[3] "%(value)s nonilijonov"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f decilijon"
-msgstr[1] "%(value).1f decilijona"
-msgstr[2] "%(value).1f decilijoni"
-msgstr[3] "%(value).1f decilijonov"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s decilijon"
-msgstr[1] "%(value)s decilijona"
-msgstr[2] "%(value)s decilijoni"
-msgstr[3] "%(value)s decilijonov"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f gugol"
-msgstr[1] "%(value).1f gugola"
-msgstr[2] "%(value).1f gugoli"
-msgstr[3] "%(value).1f gugolov"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s gugol"
-msgstr[1] "%(value)s gugola"
-msgstr[2] "%(value)s gugoli"
-msgstr[3] "%(value)s gugolov"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "ena"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "dve"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tri"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "štiri"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "pet"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "šest"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "sedem"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "osem"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "devet"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "Pred %(delta)s"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "zdaj"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "pred %(count)s sekundo"
-msgstr[1] "pred %(count)s sekundama"
-msgstr[2] "pred %(count)s sekundami"
-msgstr[3] "pred %(count)s sekundami"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "pred %(count)s minuto"
-msgstr[1] "pred %(count)s minutama"
-msgstr[2] "pred %(count)s minutami"
-msgstr[3] "pred %(count)s minutami"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "pred %(count)s uro"
-msgstr[1] "pred %(count)s urama"
-msgstr[2] "pred %(count)s urami"
-msgstr[3] "pred %(count)s urami"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "čez %(delta)s"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "čez %(count)s sekundo"
-msgstr[1] "čez %(count)s sekundi"
-msgstr[2] "čez %(count)s sekunde"
-msgstr[3] "čez %(count)s sekund"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "čez %(count)s minuto"
-msgstr[1] "čez %(count)s minuti"
-msgstr[2] "čez %(count)s minute"
-msgstr[3] "čez %(count)s minut"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "čez %(count)s uro"
-msgstr[1] "čez %(count)s uri"
-msgstr[2] "čez %(count)s ure"
-msgstr[3] "čez %(count)s ur"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/sq/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/sq/LC_MESSAGES/django.mo
deleted file mode 100644
index 69c0188..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/sq/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/sq/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/sq/LC_MESSAGES/django.po
deleted file mode 100644
index 0cff5ff..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/sq/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,306 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Besnik <besnik@programeshqip.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/"
-"sq/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sq\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "sot"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "dje"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "nesër"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "ti"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "ti"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "ti"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milion"
-msgstr[1] "%(value).1f milionë"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s milion"
-msgstr[1] "%(value)s milionë"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f miliard"
-msgstr[1] "%(value).1f miliardë"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s miliard"
-msgstr[1] "%(value)s miliardë"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f trilion"
-msgstr[1] "%(value).1f trilionë"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s trilion"
-msgstr[1] "%(value)s trilionë"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f kuadrilion"
-msgstr[1] "%(value).1f kuadrilionë"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s kuadrilion"
-msgstr[1] "%(value)s kuadrilionë"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f kuintilion"
-msgstr[1] "%(value).1f kuintilionë"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s kuintilionë"
-msgstr[1] "%(value)s kuintilionë"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f sestilion"
-msgstr[1] "%(value).1f sestilionë"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s sestilion"
-msgstr[1] "%(value)s sestilionë"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f septilion"
-msgstr[1] "%(value).1f septilionë"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s septilion"
-msgstr[1] "%(value)s septilionë"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f oktilion"
-msgstr[1] "%(value).1f oktilionë"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s oktilion"
-msgstr[1] "%(value)s oktilionë"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f nonilion"
-msgstr[1] "%(value).1f nonilionë"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s nonilion"
-msgstr[1] "%(value)s nonilionë"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f decilion"
-msgstr[1] "%(value).1f decilionë"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s decillion"
-msgstr[1] "%(value)s decilionë"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f gugol"
-msgstr[1] "%(value).1f gugolë"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s gugol"
-msgstr[1] "%(value)s gugolë"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "një"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "dy"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tre"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "katër"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "pesë"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "gjashtë"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "shtatë"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "tetë"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "nëntë"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s më parë"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "tani"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "një sekondë më parë"
-msgstr[1] "%(count)s sekonda më parë"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "një minutë më parë"
-msgstr[1] "%(count)s minuta më parë"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "një orë më parë"
-msgstr[1] "%(count)s orë më parë"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s nga tani"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "një sekondë nga tani"
-msgstr[1] "%(count)s sekonda nga tani"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "një minutë nga tani"
-msgstr[1] "%(count)s minuta nga tani"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "një orë nga tani"
-msgstr[1] "%(count)s orë nga tani"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/sr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/sr/LC_MESSAGES/django.mo
deleted file mode 100644
index 90b76e3..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/sr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/sr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/sr/LC_MESSAGES/django.po
deleted file mode 100644
index 12f4184..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/sr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,334 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-04-24 18:40+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/"
-"sr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr\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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr ""
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr ""
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr ""
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.mo
deleted file mode 100644
index 3e7ccff..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.po
deleted file mode 100644
index efb717a..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/sr_Latn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,334 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-04-24 18:40+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/"
-"language/sr@latin/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr@latin\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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr ""
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr ""
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr ""
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/sv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/sv/LC_MESSAGES/django.mo
deleted file mode 100644
index 69c22e8..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/sv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/sv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/sv/LC_MESSAGES/django.po
deleted file mode 100644
index 7011c8a..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/sv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Andreas Pelme <andreas@pelme.se>, 2011-2012
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/"
-"sv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sv\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "idag"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "igår"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "imorgon"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr ":a"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr ":a"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr ":e"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr ":e"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f miljon"
-msgstr[1] "%(value).1f miljoner"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s miljon"
-msgstr[1] "%(value)s miljoner"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value)1.f miljard"
-msgstr[1] "%(value)1.f miljarder"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s miljard"
-msgstr[1] "%(value)s miljarder"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value)1.f biljon"
-msgstr[1] "%(value)1.f biljoner"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s triljon"
-msgstr[1] "%(value)s triljoner"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f biljard"
-msgstr[1] "%(value).1f biljarder"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s biljard"
-msgstr[1] "%(value)s biljarder"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f kvintiljon"
-msgstr[1] "%(value).1f kvintiljoner"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s kvintiljon"
-msgstr[1] "%(value)s kvintiljoner"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f triljard"
-msgstr[1] "%(value).1f triljarder"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s triljard"
-msgstr[1] "%(value)s triljarder"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f kvadriljon"
-msgstr[1] "%(value).1f kvadriljoner"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s kvadriljon"
-msgstr[1] "%(value)s kvadriljoner"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f kvadriljard"
-msgstr[1] "%(value).1f kvadriljarder"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s kvadriljard"
-msgstr[1] "%(value)s kvadriljarder"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f kvintiljon"
-msgstr[1] "%(value).1f kvintiljoner"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s kvintiljon"
-msgstr[1] "%(value)s kvintiljoner"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f kvintiljard"
-msgstr[1] "%(value).1f kvintiljarder"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s kvintiljard"
-msgstr[1] "%(value)s kvintiljarder"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googoler"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googoler"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "ett"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "två"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tre"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "fyra"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "fem"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "sex"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "sju"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "åtta"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "nio"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s sedan"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "nu"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "en sekund sedan"
-msgstr[1] "%(count)s sekunder sedan"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "en minut sedan"
-msgstr[1] "%(count)s minuter sedan"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "en timma sedan"
-msgstr[1] "%(count)s timmar sedan"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s från nu"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "en sekund från nu"
-msgstr[1] "%(count)s sekunder från nu"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "en minut från nu"
-msgstr[1] "%(count)s minuter från nu"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "en timma från nu"
-msgstr[1] "%(count)s timmar från nu"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/sw/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/sw/LC_MESSAGES/django.mo
deleted file mode 100644
index b90fad8..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/sw/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/sw/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/sw/LC_MESSAGES/django.po
deleted file mode 100644
index 4c7bd83..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/sw/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,305 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:37+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/"
-"sw/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sw\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "leo"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "jana"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "kesho"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr " "
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr " "
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr " "
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr " "
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "milioni %(value).1f"
-msgstr[1] "milioni %(value).1f"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "milioni %(value)s"
-msgstr[1] "milioni %(value)s"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "bilioni %(value).1f"
-msgstr[1] "bilioni %(value).1f"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "bilioni %(value)s"
-msgstr[1] "bilioni %(value)s"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "trilioni %(value).1f"
-msgstr[1] "trilioni %(value).1f"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "trilioni %(value)s"
-msgstr[1] "trilioni %(value)s"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "kuadrilioni %(value).1f"
-msgstr[1] "kuadrilioni %(value).1f"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "kuadrilioni %(value)s"
-msgstr[1] "kuadrilioni %(value)s"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "kuintilioni %(value).1f"
-msgstr[1] "kuintilioni %(value).1f"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "kuintilioni %(value)s"
-msgstr[1] "kuintilioni %(value)s"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "seksitilioni %(value).1f"
-msgstr[1] "seksitilioni %(value).1f"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "seksitilioni %(value)s"
-msgstr[1] "seksitilioni %(value)s"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "septilioni %(value).1f"
-msgstr[1] "septilioni %(value).1f"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "septilioni %(value)s"
-msgstr[1] "septilioni %(value)s"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f oktilioni"
-msgstr[1] "%(value).1f oktilioni"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "oktilioni %(value)s"
-msgstr[1] "oktilioni %(value)s"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "nonilioni %(value).1f"
-msgstr[1] "nonilioni %(value).1f"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "nonilioni %(value)s"
-msgstr[1] "nonilioni %(value)s"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "desilioni %(value).1f"
-msgstr[1] "desilioni %(value).1f"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "desilioni %(value)s"
-msgstr[1] "desilioni %(value)s"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "gogoli %(value).1f"
-msgstr[1] "gogoli %(value).1f"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "gogoli %(value)s"
-msgstr[1] "gogoli %(value)s"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "moja"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "mbili"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "tatu"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "nne"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "tano"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "sita"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "saba"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "nane"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "tisa"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s zilizopita"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "sasa"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "sekunde iliyopita"
-msgstr[1] "sekunde %(count)s zilizopita"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "dakika iliyopita"
-msgstr[1] "dakika %(count)s zilizopita"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "saa iliyopita"
-msgstr[1] "saa %(count)s zilizopita"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s kutoka sasa"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "sekunde moja kutoka sasa"
-msgstr[1] "sekunde %(count)s kutoka sasa"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "dakika moja kutoka sasa"
-msgstr[1] "dakika %(count)s kutoka sasa"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "saa moja kutoka sasa"
-msgstr[1] "saa %(count)s kutoka sasa"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ta/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/ta/LC_MESSAGES/django.mo
deleted file mode 100644
index 26ef0ea..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ta/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ta/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/ta/LC_MESSAGES/django.po
deleted file mode 100644
index d8ab8c2..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ta/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,305 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-04-24 18:40+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/"
-"ta/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ta\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr ""
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr ""
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr ""
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr ""
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr ""
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr ""
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
-msgstr[1] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/te/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/te/LC_MESSAGES/django.mo
deleted file mode 100644
index 4f87137..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/te/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/te/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/te/LC_MESSAGES/django.po
deleted file mode 100644
index 7771d8d..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/te/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,307 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# bhaskar teja yerneni <prudhviy@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/"
-"te/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: te\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "ఈ రోజు"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "నిన్న"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "రెపు"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "వ"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "వ"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "వ"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "వ"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "ఒక్కటి"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "రెండు"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "మూడు"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "నాలుగు"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "ఐదు"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "ఆరు"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "ఏడు"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "ఎనిమిది "
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "తొమ్మిది"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s క్రితము"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "ఇప్పుడు "
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "ఒక క్షణం క్రితము "
-msgstr[1] "%(count)s క్షణాలు క్రితము "
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "ఒక నిముషము క్రితము "
-msgstr[1] "%(count)s నిముషాల క్రితము "
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "ఒక గంట క్రితము "
-msgstr[1] "%(count)s గంటల క్రితము "
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "ఇప్పటినుండి %(delta)s కు"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "ఒక క్షణములో "
-msgstr[1] "%(count)s క్షణాలో "
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "ఒక నిముషములో "
-msgstr[1] "%(count)s నిముషాలో "
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "ఒక గంట సమయములో "
-msgstr[1] "%(count)s గంటల సమయము లో "
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/th/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/th/LC_MESSAGES/django.mo
deleted file mode 100644
index dce8527..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/th/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/th/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/th/LC_MESSAGES/django.po
deleted file mode 100644
index b946d92..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/th/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,280 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kowit Charoenratchatabhan <kowit.s.c@gmail.com>, 2012
-# Vichai Vongvorakul <vongvichai@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/"
-"th/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: th\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "วันนี้"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "เมื่อวานนี้"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "พรุ่งนี้"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "th"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "st"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "nd"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "rd"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f หนึ่งล้าน"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s ล้าน"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f สิบล้าน"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s พันล้าน"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f ร้อยล้าน"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] " %(value)s ล้านล้าน"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f quadrillion"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s quadrillion"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f quintillion"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s quintillion"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f sextillion"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s sextillion"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f septillion"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s septillion"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f octillion"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s octillion"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f nonillion"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s nonillion"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f decillion"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s decillion"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "หนึ่ง"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "สอง"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "สาม"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "สี่"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "ห้า"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "หก"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "เจ็ด"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "แปด"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "เก้า"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr " %(delta)s ที่ผ่านมา"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "ขณะนี้"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "%(count)s วินาทีที่ผ่านมา"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "%(count)s นาทีที่แล้ว"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "%(count)s ชั่วโมงที่แล้ว"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s จากนี้"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "%(count)s วินาทีต่อจากนี้"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] " %(count)s นาทีต่อจากนี้"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "%(count)s ชั่วโมงต่อจากนี้"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/tr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/tr/LC_MESSAGES/django.mo
deleted file mode 100644
index e822d3c..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/tr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/tr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/tr/LC_MESSAGES/django.po
deleted file mode 100644
index 47d0e53..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/tr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,309 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ahmet Emre Aladağ <emre.aladag@isik.edu.tr>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Metin Amiroff <amiroff@gmail.com>, 2012
-# Murat Sahin <martinamca@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/"
-"tr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "bugün"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "dün"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "yarın"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "."
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "."
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f milyon"
-msgstr[1] "%(value).1f milyon"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s milyon"
-msgstr[1] "%(value)s milyon"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f milyar"
-msgstr[1] "%(value).1f milyar"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s milyar"
-msgstr[1] "%(value)s milyar"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f trilyon"
-msgstr[1] "%(value).1f trilyon"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s trilyon"
-msgstr[1] "%(value)s trilyon"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f katrilyon"
-msgstr[1] "%(value).1f katrilyon"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s katrilyon"
-msgstr[1] "%(value)s katrilyon"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f kentilyon"
-msgstr[1] "%(value).1f kentilyon"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s kentilyon"
-msgstr[1] "%(value)s kentilyon"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f seksilyon"
-msgstr[1] "%(value).1f seksilyon"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s seksilyon"
-msgstr[1] "%(value)s seksilyon"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f septilyon"
-msgstr[1] "%(value).1f septilyon"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s septilyon"
-msgstr[1] "%(value)s septilyon"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f oktilyon"
-msgstr[1] "%(value).1f oktilyon"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s oktilyon"
-msgstr[1] "%(value)s oktilyon"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f nonilyon"
-msgstr[1] "%(value).1f nonilyon"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s nonilyon"
-msgstr[1] "%(value)s nonilyon"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f desilyon"
-msgstr[1] "%(value).1f desilyon"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s desilyon"
-msgstr[1] "%(value)s desilyon"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f googol"
-msgstr[1] "%(value).1f googol"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s googol"
-msgstr[1] "%(value)s googol"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "bir"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "iki"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "üç"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "dört"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "beş"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "altı"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "yedi"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "sekiz"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "dokuz"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s önce"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "şimdi"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "%(count)s saniye önce"
-msgstr[1] "%(count)s saniye önce"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "bir dakika önce"
-msgstr[1] "%(count)s dakika önce"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "bir saat önce"
-msgstr[1] "%(count)s saat önce"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "şu andan %(delta)s sonra"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "şu andan %(count)s saniye sonra"
-msgstr[1] "şu andan %(count)s saniye sonra"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "şu andan %(count)s dakika sonra"
-msgstr[1] "şu andan %(count)s dakika sonra"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "şu andan %(count)s saat sonra"
-msgstr[1] "şu andan %(count)s saat sonra"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/tt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/tt/LC_MESSAGES/django.mo
deleted file mode 100644
index db5e971..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/tt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/tt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/tt/LC_MESSAGES/django.po
deleted file mode 100644
index 3e1efd4..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/tt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,278 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Azat Khasanshin <lordofbazuks@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/"
-"tt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tt\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "бүген"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "кичә"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "иртәгә"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "че"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "че"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "че"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "че"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f миллион"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s миллион"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f миллиард"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s миллиард"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f триллион"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s триллион"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f квадриллион"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s квадриллион"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f квинтиллион"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s квинтиллион"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f секстиллион"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s секстиллион"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f септиллион"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s септиллион"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f октиллион"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s октиллион"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f нониллион"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s нониллион"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f дециллион"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s дециллион"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f дециллион"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s гугол"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "бер"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "ике"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "өч"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "дүрт"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "биш"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "алты"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "җиде"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "сигез"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "тугыз"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s элек"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "хәзер"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "%(count)s секунд элек"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "%(count)s минут элек"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "%(count)s сәгать элек"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "хәзердән %(delta)s"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "%(count)s секундта"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "%(count)s минутта"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "%(count)s сәгаттә"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/uk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/uk/LC_MESSAGES/django.mo
deleted file mode 100644
index c5390ce..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/uk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/uk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/uk/LC_MESSAGES/django.po
deleted file mode 100644
index 6f16670..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/uk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,335 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Alex Bolotov <oleksandr.bolotov@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-21 12:46+0000\n"
-"Last-Translator: Alex Bolotov <oleksandr.bolotov@gmail.com>\n"
-"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "сьогодні"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "вчора"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "завтра"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "-ий"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "-ий"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "-ий"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "-ій"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "один"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "два"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "три"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "чотири"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "п'ять"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "шість"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "сім"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "вісім"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "дев'ять"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s тому"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "зараз"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "секунду назад"
-msgstr[1] "%(count)s секунди тому"
-msgstr[2] "%(count)s секунд тому"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "хвилину тому"
-msgstr[1] "%(count)s хвилини тому"
-msgstr[2] "%(count)s хвилин тому"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "годину тому"
-msgstr[1] "%(count)s години тому"
-msgstr[2] "%(count)s годин тому"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s від тепер"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
-msgstr[1] ""
-msgstr[2] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ur/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/ur/LC_MESSAGES/django.mo
deleted file mode 100644
index 3295bc7..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ur/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/ur/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/ur/LC_MESSAGES/django.po
deleted file mode 100644
index 78e5894..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/ur/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,306 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/"
-"ur/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ur\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "آج"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "گزستہ کل"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "آئندہ کل"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "واں"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "پہلا"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "دوسرا"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "تیسرا"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f ملین"
-msgstr[1] "%(value).1f ملین"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f بلین"
-msgstr[1] "%(value).1f بلین"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f ٹریلین"
-msgstr[1] "%(value).1f ٹریلین"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "ایک"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "دو"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "تین"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "چار"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "پانچ"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "چھ"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "سات"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "آتھ"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "نو"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr ""
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-msgstr[1] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-msgstr[1] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
-msgstr[1] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/vi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/vi/LC_MESSAGES/django.mo
deleted file mode 100644
index 65c5f6d..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/vi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/vi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/vi/LC_MESSAGES/django.po
deleted file mode 100644
index 84c807e..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/vi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,278 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/"
-"language/vi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "Hôm nay"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "Hôm qua"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "Ngày mai"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "th"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "st"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "nd"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "rd"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] ""
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] ""
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] ""
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] ""
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] ""
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "Một"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "Hai"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "Ba"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "Bốn"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "Năm"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "Sáu"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "Bảy"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "Tám"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "Chín"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr ""
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] ""
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] ""
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] ""
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/zh_CN/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/zh_CN/LC_MESSAGES/django.mo
deleted file mode 100644
index bff7f1d..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/zh_CN/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/zh_CN/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/zh_CN/LC_MESSAGES/django.po
deleted file mode 100644
index 0b36d48..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/zh_CN/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,280 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ziang Song <songziang@gmail.com>, 2011
-# Kevin Shi <leiarix@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "今天"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "昨天"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "明天"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "th"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "st"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "nd"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "rd"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f 百万"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s 百万"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f 十亿"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s 十亿"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f 万亿"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s 万亿"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f 1000的5次方"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s 1000的5次方"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f 1000的4次方"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s 1000的4次方"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f 1000的7次方"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s 1000的7次方"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f 1000的8次方"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s 1000的8次方"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f 1000的9次方"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s 1000的9次方"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f 1000的10次方"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s 1000的10次方"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f 1000的11次方"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s 1000的11次方"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f 10的100次方"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s 10的100次方"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "一"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "二"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "三"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "四"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "五"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "六"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "七"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "八"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "九"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s 之前"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "现在"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "%(count)s 秒钟之前"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "%(count)s 分钟之前"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "%(count)s 小时之前"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s 之后"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "%(count)s 秒钟之后"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "%(count)s 分钟之后"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "%(count)s 小时之后"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/zh_TW/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/humanize/locale/zh_TW/LC_MESSAGES/django.mo
deleted file mode 100644
index 936eacd..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/zh_TW/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/locale/zh_TW/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/humanize/locale/zh_TW/LC_MESSAGES/django.po
deleted file mode 100644
index 081f25f..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/locale/zh_TW/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,280 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# tcc <tcchou@tcchou.org>, 2011
-# yyc1217 <yyc1217@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-11-15 15:36+0100\n"
-"PO-Revision-Date: 2013-11-16 09:36+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/"
-"language/zh_TW/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_TW\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests.py:135 templatetags/humanize.py:168
-msgid "today"
-msgstr "今天"
-
-#: tests.py:135 templatetags/humanize.py:172
-msgid "yesterday"
-msgstr "昨天"
-
-#: tests.py:135 templatetags/humanize.py:170
-msgid "tomorrow"
-msgstr "明天"
-
-#: templatetags/humanize.py:26
-msgid "th"
-msgstr "th"
-
-#: templatetags/humanize.py:26
-msgid "st"
-msgstr "st"
-
-#: templatetags/humanize.py:26
-msgid "nd"
-msgstr "nd"
-
-#: templatetags/humanize.py:26
-msgid "rd"
-msgstr "rd"
-
-#: templatetags/humanize.py:55
-#, python-format
-msgid "%(value).1f million"
-msgid_plural "%(value).1f million"
-msgstr[0] "%(value).1f 百萬"
-
-#: templatetags/humanize.py:56
-#, python-format
-msgid "%(value)s million"
-msgid_plural "%(value)s million"
-msgstr[0] "%(value)s 百萬"
-
-#: templatetags/humanize.py:59
-#, python-format
-msgid "%(value).1f billion"
-msgid_plural "%(value).1f billion"
-msgstr[0] "%(value).1f 十億"
-
-#: templatetags/humanize.py:60
-#, python-format
-msgid "%(value)s billion"
-msgid_plural "%(value)s billion"
-msgstr[0] "%(value)s 十億"
-
-#: templatetags/humanize.py:63
-#, python-format
-msgid "%(value).1f trillion"
-msgid_plural "%(value).1f trillion"
-msgstr[0] "%(value).1f 兆"
-
-#: templatetags/humanize.py:64
-#, python-format
-msgid "%(value)s trillion"
-msgid_plural "%(value)s trillion"
-msgstr[0] "%(value)s 兆"
-
-#: templatetags/humanize.py:67
-#, python-format
-msgid "%(value).1f quadrillion"
-msgid_plural "%(value).1f quadrillion"
-msgstr[0] "%(value).1f 千兆"
-
-#: templatetags/humanize.py:68
-#, python-format
-msgid "%(value)s quadrillion"
-msgid_plural "%(value)s quadrillion"
-msgstr[0] "%(value)s 千兆"
-
-#: templatetags/humanize.py:71
-#, python-format
-msgid "%(value).1f quintillion"
-msgid_plural "%(value).1f quintillion"
-msgstr[0] "%(value).1f 百京"
-
-#: templatetags/humanize.py:72
-#, python-format
-msgid "%(value)s quintillion"
-msgid_plural "%(value)s quintillion"
-msgstr[0] "%(value)s 百京"
-
-#: templatetags/humanize.py:75
-#, python-format
-msgid "%(value).1f sextillion"
-msgid_plural "%(value).1f sextillion"
-msgstr[0] "%(value).1f 十垓"
-
-#: templatetags/humanize.py:76
-#, python-format
-msgid "%(value)s sextillion"
-msgid_plural "%(value)s sextillion"
-msgstr[0] "%(value)s 十垓"
-
-#: templatetags/humanize.py:79
-#, python-format
-msgid "%(value).1f septillion"
-msgid_plural "%(value).1f septillion"
-msgstr[0] "%(value).1f 秭"
-
-#: templatetags/humanize.py:80
-#, python-format
-msgid "%(value)s septillion"
-msgid_plural "%(value)s septillion"
-msgstr[0] "%(value)s 秭"
-
-#: templatetags/humanize.py:83
-#, python-format
-msgid "%(value).1f octillion"
-msgid_plural "%(value).1f octillion"
-msgstr[0] "%(value).1f 千秭"
-
-#: templatetags/humanize.py:84
-#, python-format
-msgid "%(value)s octillion"
-msgid_plural "%(value)s octillion"
-msgstr[0] "%(value)s 千秭"
-
-#: templatetags/humanize.py:87
-#, python-format
-msgid "%(value).1f nonillion"
-msgid_plural "%(value).1f nonillion"
-msgstr[0] "%(value).1f 百穰"
-
-#: templatetags/humanize.py:88
-#, python-format
-msgid "%(value)s nonillion"
-msgid_plural "%(value)s nonillion"
-msgstr[0] "%(value)s 百穰"
-
-#: templatetags/humanize.py:91
-#, python-format
-msgid "%(value).1f decillion"
-msgid_plural "%(value).1f decillion"
-msgstr[0] "%(value).1f 十溝"
-
-#: templatetags/humanize.py:92
-#, python-format
-msgid "%(value)s decillion"
-msgid_plural "%(value)s decillion"
-msgstr[0] "%(value)s 十溝"
-
-#: templatetags/humanize.py:95
-#, python-format
-msgid "%(value).1f googol"
-msgid_plural "%(value).1f googol"
-msgstr[0] "%(value).1f 穰大數"
-
-#: templatetags/humanize.py:96
-#, python-format
-msgid "%(value)s googol"
-msgid_plural "%(value)s googol"
-msgstr[0] "%(value)s 穰大數"
-
-#: templatetags/humanize.py:145
-msgid "one"
-msgstr "一"
-
-#: templatetags/humanize.py:145
-msgid "two"
-msgstr "二"
-
-#: templatetags/humanize.py:145
-msgid "three"
-msgstr "三"
-
-#: templatetags/humanize.py:145
-msgid "four"
-msgstr "四"
-
-#: templatetags/humanize.py:145
-msgid "five"
-msgstr "五"
-
-#: templatetags/humanize.py:145
-msgid "six"
-msgstr "六"
-
-#: templatetags/humanize.py:145
-msgid "seven"
-msgstr "七"
-
-#: templatetags/humanize.py:145
-msgid "eight"
-msgstr "八"
-
-#: templatetags/humanize.py:145
-msgid "nine"
-msgstr "九"
-
-#: templatetags/humanize.py:191
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s ago"
-msgstr "%(delta)s 以前"
-
-#: templatetags/humanize.py:194 templatetags/humanize.py:219
-msgid "now"
-msgstr "現在"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:201
-#, python-format
-msgid "a second ago"
-msgid_plural "%(count)s seconds ago"
-msgstr[0] "%(count)s 秒前"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:208
-#, python-format
-msgid "a minute ago"
-msgid_plural "%(count)s minutes ago"
-msgstr[0] "%(count)s 分鐘前"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:215
-#, python-format
-msgid "an hour ago"
-msgid_plural "%(count)s hours ago"
-msgstr[0] "%(count)s 小時前"
-
-#: templatetags/humanize.py:216
-#, python-format
-msgctxt "naturaltime"
-msgid "%(delta)s from now"
-msgstr "%(delta)s 後"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:229
-#, python-format
-msgid "a second from now"
-msgid_plural "%(count)s seconds from now"
-msgstr[0] "%(count)s 秒後"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:236
-#, python-format
-msgid "a minute from now"
-msgid_plural "%(count)s minutes from now"
-msgstr[0] "%(count)s 分鐘後"
-
-#. Translators: please keep a non-breaking space (U+00A0)
-#. between count and time unit.
-#: templatetags/humanize.py:243
-#, python-format
-msgid "an hour from now"
-msgid_plural "%(count)s hours from now"
-msgstr[0] "%(count)s 小時後"
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/models.py b/lib/python2.7/site-packages/django/contrib/humanize/models.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/models.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/templatetags/__init__.py b/lib/python2.7/site-packages/django/contrib/humanize/templatetags/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/templatetags/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/templatetags/humanize.py b/lib/python2.7/site-packages/django/contrib/humanize/templatetags/humanize.py
deleted file mode 100644
index 2e05396..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/templatetags/humanize.py
+++ /dev/null
@@ -1,244 +0,0 @@
-# -*- encoding: utf-8 -*-
-from __future__ import unicode_literals
-
-import re
-from datetime import date, datetime
-from decimal import Decimal
-
-from django import template
-from django.conf import settings
-from django.template import defaultfilters
-from django.utils.encoding import force_text
-from django.utils.formats import number_format
-from django.utils.translation import pgettext, ungettext, ugettext as _
-from django.utils.timezone import is_aware, utc
-
-register = template.Library()
-
-@register.filter(is_safe=True)
-def ordinal(value):
- """
- Converts an integer to its ordinal as a string. 1 is '1st', 2 is '2nd',
- 3 is '3rd', etc. Works for any integer.
- """
- try:
- value = int(value)
- except (TypeError, ValueError):
- return value
- suffixes = (_('th'), _('st'), _('nd'), _('rd'), _('th'), _('th'), _('th'), _('th'), _('th'), _('th'))
- if value % 100 in (11, 12, 13): # special case
- return "%d%s" % (value, suffixes[0])
- return "%d%s" % (value, suffixes[value % 10])
-
-@register.filter(is_safe=True)
-def intcomma(value, use_l10n=True):
- """
- Converts an integer to a string containing commas every three digits.
- For example, 3000 becomes '3,000' and 45000 becomes '45,000'.
- """
- if settings.USE_L10N and use_l10n:
- try:
- if not isinstance(value, (float, Decimal)):
- value = int(value)
- except (TypeError, ValueError):
- return intcomma(value, False)
- else:
- return number_format(value, force_grouping=True)
- orig = force_text(value)
- new = re.sub("^(-?\d+)(\d{3})", '\g<1>,\g<2>', orig)
- if orig == new:
- return new
- else:
- return intcomma(new, use_l10n)
-
-# A tuple of standard large number to their converters
-intword_converters = (
- (6, lambda number: (
- ungettext('%(value).1f million', '%(value).1f million', number),
- ungettext('%(value)s million', '%(value)s million', number),
- )),
- (9, lambda number: (
- ungettext('%(value).1f billion', '%(value).1f billion', number),
- ungettext('%(value)s billion', '%(value)s billion', number),
- )),
- (12, lambda number: (
- ungettext('%(value).1f trillion', '%(value).1f trillion', number),
- ungettext('%(value)s trillion', '%(value)s trillion', number),
- )),
- (15, lambda number: (
- ungettext('%(value).1f quadrillion', '%(value).1f quadrillion', number),
- ungettext('%(value)s quadrillion', '%(value)s quadrillion', number),
- )),
- (18, lambda number: (
- ungettext('%(value).1f quintillion', '%(value).1f quintillion', number),
- ungettext('%(value)s quintillion', '%(value)s quintillion', number),
- )),
- (21, lambda number: (
- ungettext('%(value).1f sextillion', '%(value).1f sextillion', number),
- ungettext('%(value)s sextillion', '%(value)s sextillion', number),
- )),
- (24, lambda number: (
- ungettext('%(value).1f septillion', '%(value).1f septillion', number),
- ungettext('%(value)s septillion', '%(value)s septillion', number),
- )),
- (27, lambda number: (
- ungettext('%(value).1f octillion', '%(value).1f octillion', number),
- ungettext('%(value)s octillion', '%(value)s octillion', number),
- )),
- (30, lambda number: (
- ungettext('%(value).1f nonillion', '%(value).1f nonillion', number),
- ungettext('%(value)s nonillion', '%(value)s nonillion', number),
- )),
- (33, lambda number: (
- ungettext('%(value).1f decillion', '%(value).1f decillion', number),
- ungettext('%(value)s decillion', '%(value)s decillion', number),
- )),
- (100, lambda number: (
- ungettext('%(value).1f googol', '%(value).1f googol', number),
- ungettext('%(value)s googol', '%(value)s googol', number),
- )),
-)
-
-@register.filter(is_safe=False)
-def intword(value):
- """
- Converts a large integer to a friendly text representation. Works best
- for numbers over 1 million. For example, 1000000 becomes '1.0 million',
- 1200000 becomes '1.2 million' and '1200000000' becomes '1.2 billion'.
- """
- try:
- value = int(value)
- except (TypeError, ValueError):
- return value
-
- if value < 1000000:
- return value
-
- def _check_for_i18n(value, float_formatted, string_formatted):
- """
- Use the i18n enabled defaultfilters.floatformat if possible
- """
- if settings.USE_L10N:
- value = defaultfilters.floatformat(value, 1)
- template = string_formatted
- else:
- template = float_formatted
- return template % {'value': value}
-
- for exponent, converters in intword_converters:
- large_number = 10 ** exponent
- if value < large_number * 1000:
- new_value = value / float(large_number)
- return _check_for_i18n(new_value, *converters(new_value))
- return value
-
-@register.filter(is_safe=True)
-def apnumber(value):
- """
- For numbers 1-9, returns the number spelled out. Otherwise, returns the
- number. This follows Associated Press style.
- """
- try:
- value = int(value)
- except (TypeError, ValueError):
- return value
- if not 0 < value < 10:
- return value
- return (_('one'), _('two'), _('three'), _('four'), _('five'), _('six'), _('seven'), _('eight'), _('nine'))[value-1]
-
-# Perform the comparison in the default time zone when USE_TZ = True
-# (unless a specific time zone has been applied with the |timezone filter).
-@register.filter(expects_localtime=True)
-def naturalday(value, arg=None):
- """
- For date values that are tomorrow, today or yesterday compared to
- present day returns representing string. Otherwise, returns a string
- formatted according to settings.DATE_FORMAT.
- """
- try:
- tzinfo = getattr(value, 'tzinfo', None)
- value = date(value.year, value.month, value.day)
- except AttributeError:
- # Passed value wasn't a date object
- return value
- except ValueError:
- # Date arguments out of range
- return value
- today = datetime.now(tzinfo).date()
- delta = value - today
- if delta.days == 0:
- return _('today')
- elif delta.days == 1:
- return _('tomorrow')
- elif delta.days == -1:
- return _('yesterday')
- return defaultfilters.date(value, arg)
-
-# This filter doesn't require expects_localtime=True because it deals properly
-# with both naive and aware datetimes. Therefore avoid the cost of conversion.
-@register.filter
-def naturaltime(value):
- """
- For date and time values shows how many seconds, minutes or hours ago
- compared to current timestamp returns representing string.
- """
- if not isinstance(value, date): # datetime is a subclass of date
- return value
-
- now = datetime.now(utc if is_aware(value) else None)
- if value < now:
- delta = now - value
- if delta.days != 0:
- return pgettext(
- 'naturaltime', '%(delta)s ago'
- ) % {'delta': defaultfilters.timesince(value, now)}
- elif delta.seconds == 0:
- return _('now')
- elif delta.seconds < 60:
- return ungettext(
- # Translators: please keep a non-breaking space (U+00A0)
- # between count and time unit.
- 'a second ago', '%(count)s seconds ago', delta.seconds
- ) % {'count': delta.seconds}
- elif delta.seconds // 60 < 60:
- count = delta.seconds // 60
- return ungettext(
- # Translators: please keep a non-breaking space (U+00A0)
- # between count and time unit.
- 'a minute ago', '%(count)s minutes ago', count
- ) % {'count': count}
- else:
- count = delta.seconds // 60 // 60
- return ungettext(
- # Translators: please keep a non-breaking space (U+00A0)
- # between count and time unit.
- 'an hour ago', '%(count)s hours ago', count
- ) % {'count': count}
- else:
- delta = value - now
- if delta.days != 0:
- return pgettext(
- 'naturaltime', '%(delta)s from now'
- ) % {'delta': defaultfilters.timeuntil(value, now)}
- elif delta.seconds == 0:
- return _('now')
- elif delta.seconds < 60:
- return ungettext(
- # Translators: please keep a non-breaking space (U+00A0)
- # between count and time unit.
- 'a second from now', '%(count)s seconds from now', delta.seconds
- ) % {'count': delta.seconds}
- elif delta.seconds // 60 < 60:
- count = delta.seconds // 60
- return ungettext(
- # Translators: please keep a non-breaking space (U+00A0)
- # between count and time unit.
- 'a minute from now', '%(count)s minutes from now', count
- ) % {'count': count}
- else:
- count = delta.seconds // 60 // 60
- return ungettext(
- # Translators: please keep a non-breaking space (U+00A0)
- # between count and time unit.
- 'an hour from now', '%(count)s hours from now', count
- ) % {'count': count}
diff --git a/lib/python2.7/site-packages/django/contrib/humanize/tests.py b/lib/python2.7/site-packages/django/contrib/humanize/tests.py
deleted file mode 100644
index d35773e..0000000
--- a/lib/python2.7/site-packages/django/contrib/humanize/tests.py
+++ /dev/null
@@ -1,232 +0,0 @@
-from __future__ import unicode_literals
-import datetime
-from decimal import Decimal
-
-try:
- import pytz
-except ImportError:
- pytz = None
-
-from django.conf import settings
-from django.contrib.humanize.templatetags import humanize
-from django.template import Template, Context, defaultfilters
-from django.test import TestCase
-from django.test.utils import override_settings, TransRealMixin
-from django.utils.html import escape
-from django.utils.timezone import utc
-from django.utils import translation
-from django.utils.translation import ugettext as _
-from django.utils import tzinfo
-from django.utils.unittest import skipIf
-
-
-# Mock out datetime in some tests so they don't fail occasionally when they
-# run too slow. Use a fixed datetime for datetime.now(). DST change in
-# America/Chicago (the default time zone) happened on March 11th in 2012.
-
-now = datetime.datetime(2012, 3, 9, 22, 30)
-
-class MockDateTime(datetime.datetime):
- @classmethod
- def now(self, tz=None):
- if tz is None or tz.utcoffset(now) is None:
- return now
- else:
- # equals now.replace(tzinfo=utc)
- return now.replace(tzinfo=tz) + tz.utcoffset(now)
-
-
-class HumanizeTests(TransRealMixin, TestCase):
-
- def humanize_tester(self, test_list, result_list, method):
- for test_content, result in zip(test_list, result_list):
- t = Template('{%% load humanize %%}{{ test_content|%s }}' % method)
- rendered = t.render(Context(locals())).strip()
- self.assertEqual(rendered, escape(result),
- msg="%s test failed, produced '%s', should've produced '%s'" % (method, rendered, result))
-
- def test_ordinal(self):
- test_list = ('1', '2', '3', '4', '11', '12',
- '13', '101', '102', '103', '111',
- 'something else', None)
- result_list = ('1st', '2nd', '3rd', '4th', '11th',
- '12th', '13th', '101st', '102nd', '103rd',
- '111th', 'something else', None)
-
- with translation.override('en'):
- self.humanize_tester(test_list, result_list, 'ordinal')
-
- def test_intcomma(self):
- test_list = (100, 1000, 10123, 10311, 1000000, 1234567.25,
- '100', '1000', '10123', '10311', '1000000', '1234567.1234567', Decimal('1234567.1234567'),
- None)
- result_list = ('100', '1,000', '10,123', '10,311', '1,000,000', '1,234,567.25',
- '100', '1,000', '10,123', '10,311', '1,000,000', '1,234,567.1234567', '1,234,567.1234567',
- None)
-
- with translation.override('en'):
- self.humanize_tester(test_list, result_list, 'intcomma')
-
- def test_l10n_intcomma(self):
- test_list = (100, 1000, 10123, 10311, 1000000, 1234567.25,
- '100', '1000', '10123', '10311', '1000000', '1234567.1234567', Decimal('1234567.1234567'),
- None)
- result_list = ('100', '1,000', '10,123', '10,311', '1,000,000', '1,234,567.25',
- '100', '1,000', '10,123', '10,311', '1,000,000', '1,234,567.1234567', '1,234,567.1234567',
- None)
-
- with self.settings(USE_L10N=True, USE_THOUSAND_SEPARATOR=False):
- with translation.override('en'):
- self.humanize_tester(test_list, result_list, 'intcomma')
-
- def test_intcomma_without_number_grouping(self):
- # Regression for #17414
- with translation.override('ja'):
- with self.settings(USE_L10N=True):
- self.humanize_tester([100], ['100'], 'intcomma')
-
- def test_intword(self):
- test_list = ('100', '1000000', '1200000', '1290000',
- '1000000000', '2000000000', '6000000000000',
- '1300000000000000', '3500000000000000000000',
- '8100000000000000000000000000000000', None)
- result_list = ('100', '1.0 million', '1.2 million', '1.3 million',
- '1.0 billion', '2.0 billion', '6.0 trillion',
- '1.3 quadrillion', '3.5 sextillion',
- '8.1 decillion', None)
- with translation.override('en'):
- self.humanize_tester(test_list, result_list, 'intword')
-
- def test_i18n_intcomma(self):
- test_list = (100, 1000, 10123, 10311, 1000000, 1234567.25,
- '100', '1000', '10123', '10311', '1000000', None)
- result_list = ('100', '1.000', '10.123', '10.311', '1.000.000', '1.234.567,25',
- '100', '1.000', '10.123', '10.311', '1.000.000', None)
- with self.settings(USE_L10N=True, USE_THOUSAND_SEPARATOR=True):
- with translation.override('de'):
- self.humanize_tester(test_list, result_list, 'intcomma')
-
- def test_i18n_intword(self):
- test_list = ('100', '1000000', '1200000', '1290000',
- '1000000000', '2000000000', '6000000000000')
- result_list = ('100', '1,0 Million', '1,2 Millionen', '1,3 Millionen',
- '1,0 Milliarde', '2,0 Milliarden', '6,0 Billionen')
- with self.settings(USE_L10N=True, USE_THOUSAND_SEPARATOR=True):
- with translation.override('de'):
- self.humanize_tester(test_list, result_list, 'intword')
-
- def test_apnumber(self):
- test_list = [str(x) for x in range(1, 11)]
- test_list.append(None)
- result_list = ('one', 'two', 'three', 'four', 'five', 'six',
- 'seven', 'eight', 'nine', '10', None)
- with translation.override('en'):
- self.humanize_tester(test_list, result_list, 'apnumber')
-
- def test_naturalday(self):
- today = datetime.date.today()
- yesterday = today - datetime.timedelta(days=1)
- tomorrow = today + datetime.timedelta(days=1)
- someday = today - datetime.timedelta(days=10)
- notdate = "I'm not a date value"
-
- test_list = (today, yesterday, tomorrow, someday, notdate, None)
- someday_result = defaultfilters.date(someday)
- result_list = (_('today'), _('yesterday'), _('tomorrow'),
- someday_result, "I'm not a date value", None)
- self.humanize_tester(test_list, result_list, 'naturalday')
-
- def test_naturalday_tz(self):
- today = datetime.date.today()
- tz_one = tzinfo.FixedOffset(datetime.timedelta(hours=-12))
- tz_two = tzinfo.FixedOffset(datetime.timedelta(hours=12))
-
- # Can be today or yesterday
- date_one = datetime.datetime(today.year, today.month, today.day, tzinfo=tz_one)
- naturalday_one = humanize.naturalday(date_one)
- # Can be today or tomorrow
- date_two = datetime.datetime(today.year, today.month, today.day, tzinfo=tz_two)
- naturalday_two = humanize.naturalday(date_two)
-
- # As 24h of difference they will never be the same
- self.assertNotEqual(naturalday_one, naturalday_two)
-
- @skipIf(settings.TIME_ZONE != "America/Chicago" and pytz is None,
- "this test requires pytz when a non-default time zone is set")
- def test_naturalday_uses_localtime(self):
- # Regression for #18504
- # This is 2012-03-08HT19:30:00-06:00 in America/Chicago
- dt = datetime.datetime(2012, 3, 9, 1, 30, tzinfo=utc)
-
- orig_humanize_datetime, humanize.datetime = humanize.datetime, MockDateTime
- try:
- with override_settings(TIME_ZONE="America/Chicago", USE_TZ=True):
- with translation.override('en'):
- self.humanize_tester([dt], ['yesterday'], 'naturalday')
- finally:
- humanize.datetime = orig_humanize_datetime
-
- def test_naturaltime(self):
- class naive(datetime.tzinfo):
- def utcoffset(self, dt):
- return None
- test_list = [
- now,
- now - datetime.timedelta(seconds=1),
- now - datetime.timedelta(seconds=30),
- now - datetime.timedelta(minutes=1, seconds=30),
- now - datetime.timedelta(minutes=2),
- now - datetime.timedelta(hours=1, minutes=30, seconds=30),
- now - datetime.timedelta(hours=23, minutes=50, seconds=50),
- now - datetime.timedelta(days=1),
- now - datetime.timedelta(days=500),
- now + datetime.timedelta(seconds=1),
- now + datetime.timedelta(seconds=30),
- now + datetime.timedelta(minutes=1, seconds=30),
- now + datetime.timedelta(minutes=2),
- now + datetime.timedelta(hours=1, minutes=30, seconds=30),
- now + datetime.timedelta(hours=23, minutes=50, seconds=50),
- now + datetime.timedelta(days=1),
- now + datetime.timedelta(days=2, hours=6),
- now + datetime.timedelta(days=500),
- now.replace(tzinfo=naive()),
- now.replace(tzinfo=utc),
- ]
- result_list = [
- 'now',
- 'a second ago',
- '30\xa0seconds ago',
- 'a minute ago',
- '2\xa0minutes ago',
- 'an hour ago',
- '23\xa0hours ago',
- '1\xa0day ago',
- '1\xa0year, 4\xa0months ago',
- 'a second from now',
- '30\xa0seconds from now',
- 'a minute from now',
- '2\xa0minutes from now',
- 'an hour from now',
- '23\xa0hours from now',
- '1\xa0day from now',
- '2\xa0days, 6\xa0hours from now',
- '1\xa0year, 4\xa0months from now',
- 'now',
- 'now',
- ]
- # Because of the DST change, 2 days and 6 hours after the chosen
- # date in naive arithmetic is only 2 days and 5 hours after in
- # aware arithmetic.
- result_list_with_tz_support = result_list[:]
- assert result_list_with_tz_support[-4] == '2\xa0days, 6\xa0hours from now'
- result_list_with_tz_support[-4] == '2\xa0days, 5\xa0hours from now'
-
- orig_humanize_datetime, humanize.datetime = humanize.datetime, MockDateTime
- try:
- with translation.override('en'):
- self.humanize_tester(test_list, result_list, 'naturaltime')
- with override_settings(USE_TZ=True):
- self.humanize_tester(
- test_list, result_list_with_tz_support, 'naturaltime')
- finally:
- humanize.datetime = orig_humanize_datetime
diff --git a/lib/python2.7/site-packages/django/contrib/messages/__init__.py b/lib/python2.7/site-packages/django/contrib/messages/__init__.py
deleted file mode 100644
index 68a53d9..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/__init__.py
+++ /dev/null
@@ -1,4 +0,0 @@
-from __future__ import absolute_import
-
-from django.contrib.messages.api import *
-from django.contrib.messages.constants import *
diff --git a/lib/python2.7/site-packages/django/contrib/messages/api.py b/lib/python2.7/site-packages/django/contrib/messages/api.py
deleted file mode 100644
index 8e08655..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/api.py
+++ /dev/null
@@ -1,102 +0,0 @@
-from django.contrib.messages import constants
-from django.contrib.messages.storage import default_storage
-
-__all__ = (
- 'add_message', 'get_messages',
- 'get_level', 'set_level',
- 'debug', 'info', 'success', 'warning', 'error',
-)
-
-
-class MessageFailure(Exception):
- pass
-
-
-def add_message(request, level, message, extra_tags='', fail_silently=False):
- """
- Attempts to add a message to the request using the 'messages' app.
- """
- if hasattr(request, '_messages'):
- return request._messages.add(level, message, extra_tags)
- if not fail_silently:
- raise MessageFailure('You cannot add messages without installing '
- 'django.contrib.messages.middleware.MessageMiddleware')
-
-
-def get_messages(request):
- """
- Returns the message storage on the request if it exists, otherwise returns
- an empty list.
- """
- if hasattr(request, '_messages'):
- return request._messages
- else:
- return []
-
-
-def get_level(request):
- """
- Returns the minimum level of messages to be recorded.
-
- The default level is the ``MESSAGE_LEVEL`` setting. If this is not found,
- the ``INFO`` level is used.
- """
- if hasattr(request, '_messages'):
- storage = request._messages
- else:
- storage = default_storage(request)
- return storage.level
-
-
-def set_level(request, level):
- """
- Sets the minimum level of messages to be recorded, returning ``True`` if
- the level was recorded successfully.
-
- If set to ``None``, the default level will be used (see the ``get_level``
- method).
- """
- if not hasattr(request, '_messages'):
- return False
- request._messages.level = level
- return True
-
-
-def debug(request, message, extra_tags='', fail_silently=False):
- """
- Adds a message with the ``DEBUG`` level.
- """
- add_message(request, constants.DEBUG, message, extra_tags=extra_tags,
- fail_silently=fail_silently)
-
-
-def info(request, message, extra_tags='', fail_silently=False):
- """
- Adds a message with the ``INFO`` level.
- """
- add_message(request, constants.INFO, message, extra_tags=extra_tags,
- fail_silently=fail_silently)
-
-
-def success(request, message, extra_tags='', fail_silently=False):
- """
- Adds a message with the ``SUCCESS`` level.
- """
- add_message(request, constants.SUCCESS, message, extra_tags=extra_tags,
- fail_silently=fail_silently)
-
-
-def warning(request, message, extra_tags='', fail_silently=False):
- """
- Adds a message with the ``WARNING`` level.
- """
- add_message(request, constants.WARNING, message, extra_tags=extra_tags,
- fail_silently=fail_silently)
-
-
-def error(request, message, extra_tags='', fail_silently=False):
- """
- Adds a message with the ``ERROR`` level.
- """
- add_message(request, constants.ERROR, message, extra_tags=extra_tags,
- fail_silently=fail_silently)
diff --git a/lib/python2.7/site-packages/django/contrib/messages/constants.py b/lib/python2.7/site-packages/django/contrib/messages/constants.py
deleted file mode 100644
index bf83bfa..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/constants.py
+++ /dev/null
@@ -1,13 +0,0 @@
-DEBUG = 10
-INFO = 20
-SUCCESS = 25
-WARNING = 30
-ERROR = 40
-
-DEFAULT_TAGS = {
- DEBUG: 'debug',
- INFO: 'info',
- SUCCESS: 'success',
- WARNING: 'warning',
- ERROR: 'error',
-}
diff --git a/lib/python2.7/site-packages/django/contrib/messages/context_processors.py b/lib/python2.7/site-packages/django/contrib/messages/context_processors.py
deleted file mode 100644
index 26cbcd5..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/context_processors.py
+++ /dev/null
@@ -1,8 +0,0 @@
-from django.contrib.messages.api import get_messages
-
-
-def messages(request):
- """
- Returns a lazy 'messages' context variable.
- """
- return {'messages': get_messages(request)}
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ar/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/ar/LC_MESSAGES/django.mo
deleted file mode 100644
index e9b1193..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ar/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ar/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/ar/LC_MESSAGES/django.po
deleted file mode 100644
index e6d3ffd..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ar/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ossama Khayat <okhayat@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/"
-"ar/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "رسالة فارغة"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/az/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/az/LC_MESSAGES/django.mo
deleted file mode 100644
index 4116c8c..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/az/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/az/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/az/LC_MESSAGES/django.po
deleted file mode 100644
index 1b889d4..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/az/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Ismayilov <ali@ismailov.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/"
-"language/az/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: az\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "tənbəl mesaj"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/be/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/be/LC_MESSAGES/django.mo
deleted file mode 100644
index da58d78..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/be/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/be/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/be/LC_MESSAGES/django.po
deleted file mode 100644
index f01078d..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/be/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/"
-"language/be/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: be\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "паведамленьне з адкладзеным перакладам"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/bg/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/bg/LC_MESSAGES/django.mo
deleted file mode 100644
index 2f66323..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/bg/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/bg/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/bg/LC_MESSAGES/django.po
deleted file mode 100644
index 7e857f6..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/bg/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Todor Lube <tlubenov@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/"
-"language/bg/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bg\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "подсказващо съобщение"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/bn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/bn/LC_MESSAGES/django.mo
deleted file mode 100644
index c368dd9..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/bn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/bn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/bn/LC_MESSAGES/django.po
deleted file mode 100644
index 5087524..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/bn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Tahmid Rafi <rafi.tahmid@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/"
-"bn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "লেজি মেসেজ"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/br/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/br/LC_MESSAGES/django.mo
deleted file mode 100644
index cfcf5de..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/br/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/br/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/br/LC_MESSAGES/django.po
deleted file mode 100644
index d46f6e8..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/br/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Fulup <fulup.jakez@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/"
-"br/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: br\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "kemennadenn \"lazy\""
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/bs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/bs/LC_MESSAGES/django.mo
deleted file mode 100644
index ff0939a..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/bs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/bs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/bs/LC_MESSAGES/django.po
deleted file mode 100644
index 6aff9a9..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/bs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/"
-"bs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bs\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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "lijena poruka"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ca/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/ca/LC_MESSAGES/django.mo
deleted file mode 100644
index c764c3b..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ca/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ca/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/ca/LC_MESSAGES/django.po
deleted file mode 100644
index 2457ea4..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ca/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Catalan (http://www.transifex.com/projects/p/django/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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "missatge gandul"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/cs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/cs/LC_MESSAGES/django.mo
deleted file mode 100644
index 06158db..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/cs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/cs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/cs/LC_MESSAGES/django.po
deleted file mode 100644
index e4128d6..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/cs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Czech (http://www.transifex.com/projects/p/django/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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "opožděně vyhodnocená zpráva"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/cy/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/cy/LC_MESSAGES/django.mo
deleted file mode 100644
index bac4539..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/cy/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/cy/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/cy/LC_MESSAGES/django.po
deleted file mode 100644
index 85f2450..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/cy/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Maredudd ap Gwyndaf <maredudd@maredudd.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-12 20:35+0000\n"
-"Last-Translator: Maredudd ap Gwyndaf <maredudd@maredudd.com>\n"
-"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/"
-"cy/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cy\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
-"11) ? 2 : 3;\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "neges ddiog"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/da/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/da/LC_MESSAGES/django.mo
deleted file mode 100644
index dd4f6d3..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/da/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/da/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/da/LC_MESSAGES/django.po
deleted file mode 100644
index 4163e34..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/da/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/"
-"da/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: da\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "doven meddelelse"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/de/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/de/LC_MESSAGES/django.mo
deleted file mode 100644
index 9752690..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/de/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/de/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/de/LC_MESSAGES/django.po
deleted file mode 100644
index 69cd082..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/de/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011,2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-06-14 14:54+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/django/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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "Lazy-Nachricht"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/el/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/el/LC_MESSAGES/django.mo
deleted file mode 100644
index 4dfcb30..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/el/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/el/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/el/LC_MESSAGES/django.po
deleted file mode 100644
index 6a7613b..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/el/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Dimitris Glezos <glezos@transifex.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/"
-"el/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: el\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "lazy μήνυμα"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/en/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/en/LC_MESSAGES/django.mo
deleted file mode 100644
index 08a7b68..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/en/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/en/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/en/LC_MESSAGES/django.po
deleted file mode 100644
index 7a041aa..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/en/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,18 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2010-05-13 15:35+0200\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/en_GB/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/en_GB/LC_MESSAGES/django.mo
deleted file mode 100644
index 5e6cd8a..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/en_GB/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/en_GB/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/en_GB/LC_MESSAGES/django.po
deleted file mode 100644
index c6668e8..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/en_GB/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# jon_atkinson <jon@jonatkinson.co.uk>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
-"django/language/en_GB/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: en_GB\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "lazy message"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/eo/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/eo/LC_MESSAGES/django.mo
deleted file mode 100644
index 06e1fbf..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/eo/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/eo/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/eo/LC_MESSAGES/django.po
deleted file mode 100644
index 6117eb9..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/eo/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Baptiste <baptiste+transifex@darthenay.fr>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/"
-"language/eo/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "pigra mesaĝo"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/es/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/es/LC_MESSAGES/django.mo
deleted file mode 100644
index 1eb560b..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/es/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/es/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/es/LC_MESSAGES/django.po
deleted file mode 100644
index 282df1b..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/es/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/django/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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "mensaje vago"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/es_AR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/es_AR/LC_MESSAGES/django.mo
deleted file mode 100644
index 95e32d4..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/es_AR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/es_AR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/es_AR/LC_MESSAGES/django.po
deleted file mode 100644
index 0130054..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/es_AR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
-"django/language/es_AR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_AR\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "mensaje lazy"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/es_MX/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/es_MX/LC_MESSAGES/django.mo
deleted file mode 100644
index 8d261d5..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/es_MX/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/es_MX/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/es_MX/LC_MESSAGES/django.po
deleted file mode 100644
index 9b7d77a..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/es_MX/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Abraham Estrada <abraham.estrada@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/"
-"language/es_MX/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_MX\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "mensaje flojo"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/et/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/et/LC_MESSAGES/django.mo
deleted file mode 100644
index ed91a41..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/et/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/et/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/et/LC_MESSAGES/django.po
deleted file mode 100644
index c3bf518..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/et/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# madisvain <madisvain@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/"
-"et/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: et\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "laisk sõnum"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/eu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/eu/LC_MESSAGES/django.mo
deleted file mode 100644
index 403e427..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/eu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/eu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/eu/LC_MESSAGES/django.po
deleted file mode 100644
index edd099d..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/eu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Aitzol Naberan <anaberan@codesyntax.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/"
-"eu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "mezu nagia"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/fa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/fa/LC_MESSAGES/django.mo
deleted file mode 100644
index d6bbfe5..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/fa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/fa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/fa/LC_MESSAGES/django.po
deleted file mode 100644
index 37889c1..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/fa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Nikneshan <ali@nikneshan.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/"
-"fa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "پیغام با تاخیر"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/fi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/fi/LC_MESSAGES/django.mo
deleted file mode 100644
index 877b51a..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/fi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/fi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/fi/LC_MESSAGES/django.po
deleted file mode 100644
index fbb483f..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/fi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Finnish (http://www.transifex.com/projects/p/django/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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "laiska viesti"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/fr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/fr/LC_MESSAGES/django.mo
deleted file mode 100644
index 3507513..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/fr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/fr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/fr/LC_MESSAGES/django.po
deleted file mode 100644
index 5fab641..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/fr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: French (http://www.transifex.com/projects/p/django/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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "message « lazy »"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/fy_NL/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/fy_NL/LC_MESSAGES/django.mo
deleted file mode 100644
index 9bb7836..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/fy_NL/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/fy_NL/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/fy_NL/LC_MESSAGES/django.po
deleted file mode 100644
index f5173dc..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/fy_NL/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,19 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-23 02:43+0100\n"
-"PO-Revision-Date: 2011-03-15 15:35+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: fy_NL\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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ga/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/ga/LC_MESSAGES/django.mo
deleted file mode 100644
index ce5deba..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ga/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ga/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/ga/LC_MESSAGES/django.po
deleted file mode 100644
index 1534bb5..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ga/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/"
-"ga/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ga\n"
-"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
-"4);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "teachtaireacht leisciúil"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/gl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/gl/LC_MESSAGES/django.mo
deleted file mode 100644
index de26211..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/gl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/gl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/gl/LC_MESSAGES/django.po
deleted file mode 100644
index 518b2e0..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/gl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# fasouto <fsoutomoure@gmail.com>, 2011
-# Leandro Regueiro <leandro.regueiro@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-09-07 11:51+0000\n"
-"Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
-"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/"
-"gl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "mensaxe preguiceira"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/he/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/he/LC_MESSAGES/django.mo
deleted file mode 100644
index 638d31a..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/he/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/he/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/he/LC_MESSAGES/django.po
deleted file mode 100644
index aab89bb..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/he/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "הודעה 'עצלה'"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/hi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/hi/LC_MESSAGES/django.mo
deleted file mode 100644
index 47bc79e..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/hi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/hi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/hi/LC_MESSAGES/django.po
deleted file mode 100644
index 6b99eba..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/hi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Sandeep Satavlekar <sandysat@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/"
-"hi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "आलसी संदेश"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/hr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/hr/LC_MESSAGES/django.mo
deleted file mode 100644
index 38b2470..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/hr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/hr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/hr/LC_MESSAGES/django.po
deleted file mode 100644
index 1146a4d..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/hr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/"
-"hr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hr\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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "lijena poruka (\"lazy message\")"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/hu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/hu/LC_MESSAGES/django.mo
deleted file mode 100644
index 0442e1d..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/hu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/hu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/hu/LC_MESSAGES/django.po
deleted file mode 100644
index b14738e..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/hu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Szilveszter Farkas <szilveszter.farkas@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/"
-"language/hu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "lusta üzenet"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ia/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/ia/LC_MESSAGES/django.mo
deleted file mode 100644
index 634d762..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ia/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ia/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/ia/LC_MESSAGES/django.po
deleted file mode 100644
index e3ab546..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ia/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Martijn Dekker <mcdutchie@hotmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Interlingua (http://www.transifex.com/projects/p/django/"
-"language/ia/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ia\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "message pigre"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/id/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/id/LC_MESSAGES/django.mo
deleted file mode 100644
index db41099..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/id/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/id/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/id/LC_MESSAGES/django.po
deleted file mode 100644
index 4e664ba..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/id/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# rodin <romihardiyanto@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "pesan tidak segera"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/is/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/is/LC_MESSAGES/django.mo
deleted file mode 100644
index 968b8a5..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/is/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/is/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/is/LC_MESSAGES/django.po
deleted file mode 100644
index aeaa2ad..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/is/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Hafsteinn Einarsson <haffi67@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/"
-"language/is/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: is\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "letiboð"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/it/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/it/LC_MESSAGES/django.mo
deleted file mode 100644
index a180a42..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/it/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/it/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/it/LC_MESSAGES/django.po
deleted file mode 100644
index 760e419..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/it/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/django/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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "messaggio lazy"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ja/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/ja/LC_MESSAGES/django.mo
deleted file mode 100644
index e918571..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ja/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ja/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/ja/LC_MESSAGES/django.po
deleted file mode 100644
index 34cddd3..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ja/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/"
-"ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "遅延メッセージ"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ka/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/ka/LC_MESSAGES/django.mo
deleted file mode 100644
index ff2d70d..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ka/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ka/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/ka/LC_MESSAGES/django.po
deleted file mode 100644
index 5914207..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ka/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# David Avsajanishvili <avsd05@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/"
-"ka/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ka\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "\"ზარმაცი\" შეტყობინება"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/kk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/kk/LC_MESSAGES/django.mo
deleted file mode 100644
index b5f95c9..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/kk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/kk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/kk/LC_MESSAGES/django.po
deleted file mode 100644
index 18a10a8..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/kk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# yun_man_ger <germanilyin@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/"
-"kk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kk\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "еріншек хабар"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/km/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/km/LC_MESSAGES/django.mo
deleted file mode 100644
index 6f5fe5a..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/km/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/km/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/km/LC_MESSAGES/django.po
deleted file mode 100644
index cc96123..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/km/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,19 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-23 02:43+0100\n"
-"PO-Revision-Date: 2011-03-15 15:34+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: km\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/kn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/kn/LC_MESSAGES/django.mo
deleted file mode 100644
index fd8c365..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/kn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/kn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/kn/LC_MESSAGES/django.po
deleted file mode 100644
index 3bf0f0d..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/kn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,21 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-15 10:57+0200\n"
-"PO-Revision-Date: 2011-01-19 15:38+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/"
-"kn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kn\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests/base.py:101
-msgid "lazy message"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ko/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/ko/LC_MESSAGES/django.mo
deleted file mode 100644
index b179e78..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ko/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ko/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/ko/LC_MESSAGES/django.po
deleted file mode 100644
index 4bae2ae..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ko/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/"
-"ko/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ko\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "늦게 번역되는(lazy) 메시지"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/lb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/lb/LC_MESSAGES/django.mo
deleted file mode 100644
index 466cfb4..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/lb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/lb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/lb/LC_MESSAGES/django.po
deleted file mode 100644
index e339e64..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/lb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# sim0n <sim0n@trypill.org>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-11-03 23:26+0000\n"
-"Last-Translator: sim0n <sim0n@trypill.org>\n"
-"Language-Team: Luxembourgish (http://www.transifex.com/projects/p/django/"
-"language/lb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "lidderche Message"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/lt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/lt/LC_MESSAGES/django.mo
deleted file mode 100644
index 627bad3..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/lt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/lt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/lt/LC_MESSAGES/django.po
deleted file mode 100644
index 5902968..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/lt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# lauris <lauris@runbox.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/"
-"language/lt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lt\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
-"%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "Uždelsta žinutė"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/lv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/lv/LC_MESSAGES/django.mo
deleted file mode 100644
index 69456bc..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/lv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/lv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/lv/LC_MESSAGES/django.po
deleted file mode 100644
index 04c69dc..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/lv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/"
-"lv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lv\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "ziņojums (slinkais)"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/mk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/mk/LC_MESSAGES/django.mo
deleted file mode 100644
index 5100717..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/mk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/mk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/mk/LC_MESSAGES/django.po
deleted file mode 100644
index 92d5b07..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/mk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/"
-"language/mk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mk\n"
-"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "мрзлива порака"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ml/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/ml/LC_MESSAGES/django.mo
deleted file mode 100644
index 4d95c1e..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ml/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ml/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/ml/LC_MESSAGES/django.po
deleted file mode 100644
index c58e5af..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ml/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/"
-"language/ml/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ml\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "അലസ സന്ദേശം"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/mn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/mn/LC_MESSAGES/django.mo
deleted file mode 100644
index 86c2ebb..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/mn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/mn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/mn/LC_MESSAGES/django.po
deleted file mode 100644
index 5fc82da..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/mn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/"
-"language/mn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "Удаан мессеж"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/my/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/my/LC_MESSAGES/django.mo
deleted file mode 100644
index d564069..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/my/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/my/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/my/LC_MESSAGES/django.po
deleted file mode 100644
index a834655..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/my/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Yhal Htet Aung <jumoun@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Burmese (http://www.transifex.com/projects/p/django/language/"
-"my/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: my\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "ပျင်းရိမှာကြားချက်"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/nb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/nb/LC_MESSAGES/django.mo
deleted file mode 100644
index 6ad964e..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/nb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/nb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/nb/LC_MESSAGES/django.po
deleted file mode 100644
index 87ca70f..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/nb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sigurd Gartmann <sigurdga-transifex@sigurdga.no>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/"
-"language/nb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "«lazy»-melding"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ne/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/ne/LC_MESSAGES/django.mo
deleted file mode 100644
index 376656e..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ne/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ne/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/ne/LC_MESSAGES/django.po
deleted file mode 100644
index 84a7e88..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ne/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Sagar Chalise <chalisesagar@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/"
-"ne/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ne\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "सम सन्देश"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/nl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/nl/LC_MESSAGES/django.mo
deleted file mode 100644
index f2f9b9c..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/nl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/nl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/nl/LC_MESSAGES/django.po
deleted file mode 100644
index 94336c6..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/nl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Tino de Bruijn <tinodb@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Dutch (http://www.transifex.com/projects/p/django/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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "later vertaald bericht"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/nn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/nn/LC_MESSAGES/django.mo
deleted file mode 100644
index 647b422..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/nn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/nn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/nn/LC_MESSAGES/django.po
deleted file mode 100644
index 4c6160b..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/nn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/"
-"language/nn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "lat melding"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/os/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/os/LC_MESSAGES/django.mo
deleted file mode 100644
index ccec08d..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/os/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/os/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/os/LC_MESSAGES/django.po
deleted file mode 100644
index 9dacb28..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/os/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Ossetic (http://www.transifex.com/projects/p/django/language/"
-"os/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: os\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "зивӕг фыстӕг"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/pa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/pa/LC_MESSAGES/django.mo
deleted file mode 100644
index 7df54f3..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/pa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/pa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/pa/LC_MESSAGES/django.po
deleted file mode 100644
index 5930d41..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/pa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# A S Alam <apreet.alam@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-06-23 14:06+0000\n"
-"Last-Translator: A S Alam <apreet.alam@gmail.com>\n"
-"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/"
-"language/pa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pa\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "ਸੁਸਤ ਸੁਨੇਹਾ"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/pl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/pl/LC_MESSAGES/django.mo
deleted file mode 100644
index b19a149..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/pl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/pl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/pl/LC_MESSAGES/django.po
deleted file mode 100644
index a522ced..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/pl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/django/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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "testowa wiadomość z opóźnioną ewaluacją"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/pt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/pt/LC_MESSAGES/django.mo
deleted file mode 100644
index 6e6f725..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/pt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/pt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/pt/LC_MESSAGES/django.po
deleted file mode 100644
index b36fab0..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/pt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-31 16:12+0000\n"
-"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
-"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "mensagem lazy"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/pt_BR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/pt_BR/LC_MESSAGES/django.mo
deleted file mode 100644
index c3000d6..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/pt_BR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/pt_BR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/pt_BR/LC_MESSAGES/django.po
deleted file mode 100644
index 149c1dd..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/pt_BR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
-"django/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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "mensagem lazy"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ro/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/ro/LC_MESSAGES/django.mo
deleted file mode 100644
index 3f62e6b..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ro/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ro/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/ro/LC_MESSAGES/django.po
deleted file mode 100644
index d863beb..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ro/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Daniel Ursache-Dogariu <contact@danniel.net>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/"
-"ro/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1));\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "mesaj întârziat"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ru/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/ru/LC_MESSAGES/django.mo
deleted file mode 100644
index 42443c3..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ru/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ru/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/ru/LC_MESSAGES/django.po
deleted file mode 100644
index 1d6f173..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ru/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/"
-"ru/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "сообщение с отложенным переводом"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/sk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/sk/LC_MESSAGES/django.mo
deleted file mode 100644
index 9515288..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/sk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/sk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/sk/LC_MESSAGES/django.po
deleted file mode 100644
index e642ed0..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/sk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-06-16 12:46+0000\n"
-"Last-Translator: Marian Andre <marian@andre.sk>\n"
-"Language-Team: Slovak (http://www.transifex.com/projects/p/django/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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "lenivá správa"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/sl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/sl/LC_MESSAGES/django.mo
deleted file mode 100644
index 2747540..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/sl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/sl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/sl/LC_MESSAGES/django.po
deleted file mode 100644
index 3dfa82d..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/sl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,24 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# mateju <>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/"
-"language/sl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "leno sporočilo"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/sq/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/sq/LC_MESSAGES/django.mo
deleted file mode 100644
index 1f111f7..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/sq/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/sq/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/sq/LC_MESSAGES/django.po
deleted file mode 100644
index 8f48766..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/sq/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Besnik <besnik@programeshqip.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/"
-"sq/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sq\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "mesazh i vagullt"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/sr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/sr/LC_MESSAGES/django.mo
deleted file mode 100644
index fc3db84..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/sr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/sr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/sr/LC_MESSAGES/django.po
deleted file mode 100644
index 59cede6..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/sr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/"
-"sr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr\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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "порука"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/sr_Latn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/sr_Latn/LC_MESSAGES/django.mo
deleted file mode 100644
index dee9256..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/sr_Latn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/sr_Latn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/sr_Latn/LC_MESSAGES/django.po
deleted file mode 100644
index f06be72..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/sr_Latn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/"
-"language/sr@latin/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr@latin\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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "poruka"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/sv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/sv/LC_MESSAGES/django.mo
deleted file mode 100644
index d0b56f5..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/sv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/sv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/sv/LC_MESSAGES/django.po
deleted file mode 100644
index d914b1a..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/sv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Andreas Pelme <andreas@pelme.se>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/"
-"sv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sv\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "\"lazy\"-meddelande"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/sw/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/sw/LC_MESSAGES/django.mo
deleted file mode 100644
index 1e81dd0..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/sw/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/sw/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/sw/LC_MESSAGES/django.po
deleted file mode 100644
index 90f7586..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/sw/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# machaku <bmachaku@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-11-19 16:43+0000\n"
-"Last-Translator: machaku <bmachaku@gmail.com>\n"
-"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/"
-"sw/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sw\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "ujumbe zembe"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ta/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/ta/LC_MESSAGES/django.mo
deleted file mode 100644
index f3ecf43..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ta/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ta/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/ta/LC_MESSAGES/django.po
deleted file mode 100644
index e58d3b5..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ta/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,21 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-15 10:57+0200\n"
-"PO-Revision-Date: 2011-01-19 15:38+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/"
-"ta/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ta\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:101
-msgid "lazy message"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/te/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/te/LC_MESSAGES/django.mo
deleted file mode 100644
index bcf0dc7..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/te/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/te/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/te/LC_MESSAGES/django.po
deleted file mode 100644
index 5e8c0f9..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/te/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# bhaskar teja yerneni <prudhviy@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/"
-"te/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: te\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "మందమైన సందేశం"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/th/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/th/LC_MESSAGES/django.mo
deleted file mode 100644
index ffdaf74..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/th/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/th/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/th/LC_MESSAGES/django.po
deleted file mode 100644
index c5e4fd6..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/th/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Kowit Charoenratchatabhan <kowit.s.c@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/"
-"th/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: th\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "ข้อความเฉื่อย"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/tr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/tr/LC_MESSAGES/django.mo
deleted file mode 100644
index 055e2b9..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/tr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/tr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/tr/LC_MESSAGES/django.po
deleted file mode 100644
index 00d6158..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/tr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/"
-"tr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "tembel mesaj"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/tt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/tt/LC_MESSAGES/django.mo
deleted file mode 100644
index 5a11177..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/tt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/tt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/tt/LC_MESSAGES/django.po
deleted file mode 100644
index 395e1ab..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/tt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Azat Khasanshin <lordofbazuks@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/"
-"tt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tt\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "ялкау хәбәр"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/uk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/uk/LC_MESSAGES/django.mo
deleted file mode 100644
index ee4320b..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/uk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/uk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/uk/LC_MESSAGES/django.po
deleted file mode 100644
index d9a4863..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/uk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Sergey Lysach <sergikoff88@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "повідомлення з відкладеним перекладом"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ur/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/ur/LC_MESSAGES/django.mo
deleted file mode 100644
index f411ff4..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ur/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/ur/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/ur/LC_MESSAGES/django.po
deleted file mode 100644
index c4e7851..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/ur/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/"
-"ur/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ur\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "سست پیغام"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/vi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/vi/LC_MESSAGES/django.mo
deleted file mode 100644
index 59af6c2..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/vi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/vi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/vi/LC_MESSAGES/django.po
deleted file mode 100644
index 4e178b4..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/vi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Vuong Nguyen <autalpha@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/"
-"language/vi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "tin nhắn lười biếng"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/zh_CN/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/zh_CN/LC_MESSAGES/django.mo
deleted file mode 100644
index 36109ee..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/zh_CN/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/zh_CN/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/zh_CN/LC_MESSAGES/django.po
deleted file mode 100644
index 57bd36b..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/zh_CN/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Lele Long <schemacs@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "惰性翻译的消息"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/zh_TW/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/messages/locale/zh_TW/LC_MESSAGES/django.mo
deleted file mode 100644
index a11ce6d..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/zh_TW/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/messages/locale/zh_TW/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/messages/locale/zh_TW/LC_MESSAGES/django.po
deleted file mode 100644
index 0257f17..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/locale/zh_TW/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# ming hsien tzang <tzangms@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:30+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/"
-"language/zh_TW/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_TW\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: tests/base.py:100
-msgid "lazy message"
-msgstr "惰式訊息"
diff --git a/lib/python2.7/site-packages/django/contrib/messages/middleware.py b/lib/python2.7/site-packages/django/contrib/messages/middleware.py
deleted file mode 100644
index a84dc6c..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/middleware.py
+++ /dev/null
@@ -1,26 +0,0 @@
-from django.conf import settings
-from django.contrib.messages.storage import default_storage
-
-
-class MessageMiddleware(object):
- """
- Middleware that handles temporary messages.
- """
-
- def process_request(self, request):
- request._messages = default_storage(request)
-
- def process_response(self, request, response):
- """
- Updates the storage backend (i.e., saves the messages).
-
- If not all messages could not be stored and ``DEBUG`` is ``True``, a
- ``ValueError`` is raised.
- """
- # A higher middleware layer may return a request which does not contain
- # messages storage, so make no assumption that it will be there.
- if hasattr(request, '_messages'):
- unstored_messages = request._messages.update(response)
- if unstored_messages and settings.DEBUG:
- raise ValueError('Not all temporary messages could be stored.')
- return response
diff --git a/lib/python2.7/site-packages/django/contrib/messages/models.py b/lib/python2.7/site-packages/django/contrib/messages/models.py
deleted file mode 100644
index 4f656f5..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/models.py
+++ /dev/null
@@ -1 +0,0 @@
-# Models module required so tests are discovered.
diff --git a/lib/python2.7/site-packages/django/contrib/messages/storage/__init__.py b/lib/python2.7/site-packages/django/contrib/messages/storage/__init__.py
deleted file mode 100644
index 9a09aff..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/storage/__init__.py
+++ /dev/null
@@ -1,8 +0,0 @@
-from django.conf import settings
-from django.utils.module_loading import import_by_path as get_storage
-
-
-# Callable with the same interface as the storage classes i.e. accepts a
-# 'request' object. It is wrapped in a lambda to stop 'settings' being used at
-# the module level
-default_storage = lambda request: get_storage(settings.MESSAGE_STORAGE)(request)
diff --git a/lib/python2.7/site-packages/django/contrib/messages/storage/base.py b/lib/python2.7/site-packages/django/contrib/messages/storage/base.py
deleted file mode 100644
index 7fe8a07..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/storage/base.py
+++ /dev/null
@@ -1,184 +0,0 @@
-from __future__ import unicode_literals
-
-from django.conf import settings
-from django.utils.encoding import force_text, python_2_unicode_compatible
-from django.contrib.messages import constants, utils
-
-
-LEVEL_TAGS = utils.get_level_tags()
-
-
-@python_2_unicode_compatible
-class Message(object):
- """
- Represents an actual message that can be stored in any of the supported
- storage classes (typically session- or cookie-based) and rendered in a view
- or template.
- """
-
- def __init__(self, level, message, extra_tags=None):
- self.level = int(level)
- self.message = message
- self.extra_tags = extra_tags
-
- def _prepare(self):
- """
- Prepares the message for serialization by forcing the ``message``
- and ``extra_tags`` to unicode in case they are lazy translations.
-
- Known "safe" types (None, int, etc.) are not converted (see Django's
- ``force_text`` implementation for details).
- """
- self.message = force_text(self.message, strings_only=True)
- self.extra_tags = force_text(self.extra_tags, strings_only=True)
-
- def __eq__(self, other):
- return isinstance(other, Message) and self.level == other.level and \
- self.message == other.message
-
- def __str__(self):
- return force_text(self.message)
-
- def _get_tags(self):
- label_tag = force_text(LEVEL_TAGS.get(self.level, ''),
- strings_only=True)
- extra_tags = force_text(self.extra_tags, strings_only=True)
- if extra_tags and label_tag:
- return ' '.join([extra_tags, label_tag])
- elif extra_tags:
- return extra_tags
- elif label_tag:
- return label_tag
- return ''
- tags = property(_get_tags)
-
-
-class BaseStorage(object):
- """
- This is the base backend for temporary message storage.
-
- This is not a complete class; to be a usable storage backend, it must be
- subclassed and the two methods ``_get`` and ``_store`` overridden.
- """
-
- def __init__(self, request, *args, **kwargs):
- self.request = request
- self._queued_messages = []
- self.used = False
- self.added_new = False
- super(BaseStorage, self).__init__(*args, **kwargs)
-
- def __len__(self):
- return len(self._loaded_messages) + len(self._queued_messages)
-
- def __iter__(self):
- self.used = True
- if self._queued_messages:
- self._loaded_messages.extend(self._queued_messages)
- self._queued_messages = []
- return iter(self._loaded_messages)
-
- def __contains__(self, item):
- return item in self._loaded_messages or item in self._queued_messages
-
- @property
- def _loaded_messages(self):
- """
- Returns a list of loaded messages, retrieving them first if they have
- not been loaded yet.
- """
- if not hasattr(self, '_loaded_data'):
- messages, all_retrieved = self._get()
- self._loaded_data = messages or []
- return self._loaded_data
-
- def _get(self, *args, **kwargs):
- """
- Retrieves a list of stored messages. Returns a tuple of the messages
- and a flag indicating whether or not all the messages originally
- intended to be stored in this storage were, in fact, stored and
- retrieved; e.g., ``(messages, all_retrieved)``.
-
- **This method must be implemented by a subclass.**
-
- If it is possible to tell if the backend was not used (as opposed to
- just containing no messages) then ``None`` should be returned in
- place of ``messages``.
- """
- raise NotImplementedError()
-
- def _store(self, messages, response, *args, **kwargs):
- """
- Stores a list of messages, returning a list of any messages which could
- not be stored.
-
- One type of object must be able to be stored, ``Message``.
-
- **This method must be implemented by a subclass.**
- """
- raise NotImplementedError()
-
- def _prepare_messages(self, messages):
- """
- Prepares a list of messages for storage.
- """
- for message in messages:
- message._prepare()
-
- def update(self, response):
- """
- Stores all unread messages.
-
- If the backend has yet to be iterated, previously stored messages will
- be stored again. Otherwise, only messages added after the last
- iteration will be stored.
- """
- self._prepare_messages(self._queued_messages)
- if self.used:
- return self._store(self._queued_messages, response)
- elif self.added_new:
- messages = self._loaded_messages + self._queued_messages
- return self._store(messages, response)
-
- def add(self, level, message, extra_tags=''):
- """
- Queues a message to be stored.
-
- The message is only queued if it contained something and its level is
- not less than the recording level (``self.level``).
- """
- if not message:
- return
- # Check that the message level is not less than the recording level.
- level = int(level)
- if level < self.level:
- return
- # Add the message.
- self.added_new = True
- message = Message(level, message, extra_tags=extra_tags)
- self._queued_messages.append(message)
-
- def _get_level(self):
- """
- Returns the minimum recorded level.
-
- The default level is the ``MESSAGE_LEVEL`` setting. If this is
- not found, the ``INFO`` level is used.
- """
- if not hasattr(self, '_level'):
- self._level = getattr(settings, 'MESSAGE_LEVEL', constants.INFO)
- return self._level
-
- def _set_level(self, value=None):
- """
- Sets a custom minimum recorded level.
-
- If set to ``None``, the default level will be used (see the
- ``_get_level`` method).
- """
- if value is None and hasattr(self, '_level'):
- del self._level
- else:
- self._level = int(value)
-
- level = property(_get_level, _set_level, _set_level)
diff --git a/lib/python2.7/site-packages/django/contrib/messages/storage/cookie.py b/lib/python2.7/site-packages/django/contrib/messages/storage/cookie.py
deleted file mode 100644
index 619c692..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/storage/cookie.py
+++ /dev/null
@@ -1,158 +0,0 @@
-import json
-
-from django.conf import settings
-from django.contrib.messages.storage.base import BaseStorage, Message
-from django.http import SimpleCookie
-from django.utils.crypto import salted_hmac, constant_time_compare
-from django.utils.safestring import SafeData, mark_safe
-from django.utils import six
-
-
-class MessageEncoder(json.JSONEncoder):
- """
- Compactly serializes instances of the ``Message`` class as JSON.
- """
- message_key = '__json_message'
-
- def default(self, obj):
- if isinstance(obj, Message):
- # Using 0/1 here instead of False/True to produce more compact json
- is_safedata = 1 if isinstance(obj.message, SafeData) else 0
- message = [self.message_key, is_safedata, obj.level, obj.message]
- if obj.extra_tags:
- message.append(obj.extra_tags)
- return message
- return super(MessageEncoder, self).default(obj)
-
-
-class MessageDecoder(json.JSONDecoder):
- """
- Decodes JSON that includes serialized ``Message`` instances.
- """
-
- def process_messages(self, obj):
- if isinstance(obj, list) and obj:
- if obj[0] == MessageEncoder.message_key:
- if obj[1]:
- obj[3] = mark_safe(obj[3])
- return Message(*obj[2:])
- return [self.process_messages(item) for item in obj]
- if isinstance(obj, dict):
- return dict([(key, self.process_messages(value))
- for key, value in six.iteritems(obj)])
- return obj
-
- def decode(self, s, **kwargs):
- decoded = super(MessageDecoder, self).decode(s, **kwargs)
- return self.process_messages(decoded)
-
-class CookieStorage(BaseStorage):
- """
- Stores messages in a cookie.
- """
- cookie_name = 'messages'
- # uwsgi's default configuration enforces a maximum size of 4kb for all the
- # HTTP headers. In order to leave some room for other cookies and headers,
- # restrict the session cookie to 1/2 of 4kb. See #18781.
- max_cookie_size = 2048
- not_finished = '__messagesnotfinished__'
-
- def _get(self, *args, **kwargs):
- """
- Retrieves a list of messages from the messages cookie. If the
- not_finished sentinel value is found at the end of the message list,
- remove it and return a result indicating that not all messages were
- retrieved by this storage.
- """
- data = self.request.COOKIES.get(self.cookie_name)
- messages = self._decode(data)
- all_retrieved = not (messages and messages[-1] == self.not_finished)
- if messages and not all_retrieved:
- # remove the sentinel value
- messages.pop()
- return messages, all_retrieved
-
- def _update_cookie(self, encoded_data, response):
- """
- Either sets the cookie with the encoded data if there is any data to
- store, or deletes the cookie.
- """
- if encoded_data:
- response.set_cookie(self.cookie_name, encoded_data,
- domain=settings.SESSION_COOKIE_DOMAIN)
- else:
- response.delete_cookie(self.cookie_name,
- domain=settings.SESSION_COOKIE_DOMAIN)
-
- def _store(self, messages, response, remove_oldest=True, *args, **kwargs):
- """
- Stores the messages to a cookie, returning a list of any messages which
- could not be stored.
-
- If the encoded data is larger than ``max_cookie_size``, removes
- messages until the data fits (these are the messages which are
- returned), and add the not_finished sentinel value to indicate as much.
- """
- unstored_messages = []
- encoded_data = self._encode(messages)
- if self.max_cookie_size:
- # data is going to be stored eventually by SimpleCookie, which
- # adds it's own overhead, which we must account for.
- cookie = SimpleCookie() # create outside the loop
- def stored_length(val):
- return len(cookie.value_encode(val)[1])
-
- while encoded_data and stored_length(encoded_data) > self.max_cookie_size:
- if remove_oldest:
- unstored_messages.append(messages.pop(0))
- else:
- unstored_messages.insert(0, messages.pop())
- encoded_data = self._encode(messages + [self.not_finished],
- encode_empty=unstored_messages)
- self._update_cookie(encoded_data, response)
- return unstored_messages
-
- def _hash(self, value):
- """
- Creates an HMAC/SHA1 hash based on the value and the project setting's
- SECRET_KEY, modified to make it unique for the present purpose.
- """
- key_salt = 'django.contrib.messages'
- return salted_hmac(key_salt, value).hexdigest()
-
- def _encode(self, messages, encode_empty=False):
- """
- Returns an encoded version of the messages list which can be stored as
- plain text.
-
- Since the data will be retrieved from the client-side, the encoded data
- also contains a hash to ensure that the data was not tampered with.
- """
- if messages or encode_empty:
- encoder = MessageEncoder(separators=(',', ':'))
- value = encoder.encode(messages)
- return '%s$%s' % (self._hash(value), value)
-
- def _decode(self, data):
- """
- Safely decodes a encoded text stream back into a list of messages.
-
- If the encoded text stream contained an invalid hash or was in an
- invalid format, ``None`` is returned.
- """
- if not data:
- return None
- bits = data.split('$', 1)
- if len(bits) == 2:
- hash, value = bits
- if constant_time_compare(hash, self._hash(value)):
- try:
- # If we get here (and the JSON decode works), everything is
- # good. In any other case, drop back and return None.
- return json.loads(value, cls=MessageDecoder)
- except ValueError:
- pass
- # Mark the data as used (so it gets removed) since something was wrong
- # with the data.
- self.used = True
- return None
diff --git a/lib/python2.7/site-packages/django/contrib/messages/storage/fallback.py b/lib/python2.7/site-packages/django/contrib/messages/storage/fallback.py
deleted file mode 100644
index 6c35343..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/storage/fallback.py
+++ /dev/null
@@ -1,54 +0,0 @@
-from django.contrib.messages.storage.base import BaseStorage
-from django.contrib.messages.storage.cookie import CookieStorage
-from django.contrib.messages.storage.session import SessionStorage
-
-class FallbackStorage(BaseStorage):
- """
- Tries to store all messages in the first backend, storing any unstored
- messages in each subsequent backend backend.
- """
- storage_classes = (CookieStorage, SessionStorage)
-
- def __init__(self, *args, **kwargs):
- super(FallbackStorage, self).__init__(*args, **kwargs)
- self.storages = [storage_class(*args, **kwargs)
- for storage_class in self.storage_classes]
- self._used_storages = set()
-
- def _get(self, *args, **kwargs):
- """
- Gets a single list of messages from all storage backends.
- """
- all_messages = []
- for storage in self.storages:
- messages, all_retrieved = storage._get()
- # If the backend hasn't been used, no more retrieval is necessary.
- if messages is None:
- break
- if messages:
- self._used_storages.add(storage)
- all_messages.extend(messages)
- # If this storage class contained all the messages, no further
- # retrieval is necessary
- if all_retrieved:
- break
- return all_messages, all_retrieved
-
- def _store(self, messages, response, *args, **kwargs):
- """
- Stores the messages, returning any unstored messages after trying all
- backends.
-
- For each storage backend, any messages not stored are passed on to the
- next backend.
- """
- for storage in self.storages:
- if messages:
- messages = storage._store(messages, response,
- remove_oldest=False)
- # Even if there are no more messages, continue iterating to ensure
- # storages which contained messages are flushed.
- elif storage in self._used_storages:
- storage._store([], response)
- self._used_storages.remove(storage)
- return messages
diff --git a/lib/python2.7/site-packages/django/contrib/messages/storage/session.py b/lib/python2.7/site-packages/django/contrib/messages/storage/session.py
deleted file mode 100644
index c3e293c..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/storage/session.py
+++ /dev/null
@@ -1,46 +0,0 @@
-import json
-
-from django.contrib.messages.storage.base import BaseStorage
-from django.contrib.messages.storage.cookie import MessageEncoder, MessageDecoder
-from django.utils import six
-
-
-class SessionStorage(BaseStorage):
- """
- Stores messages in the session (that is, django.contrib.sessions).
- """
- session_key = '_messages'
-
- def __init__(self, request, *args, **kwargs):
- assert hasattr(request, 'session'), "The session-based temporary "\
- "message storage requires session middleware to be installed, "\
- "and come before the message middleware in the "\
- "MIDDLEWARE_CLASSES list."
- super(SessionStorage, self).__init__(request, *args, **kwargs)
-
- def _get(self, *args, **kwargs):
- """
- Retrieves a list of messages from the request's session. This storage
- always stores everything it is given, so return True for the
- all_retrieved flag.
- """
- return self.deserialize_messages(self.request.session.get(self.session_key)), True
-
- def _store(self, messages, response, *args, **kwargs):
- """
- Stores a list of messages to the request's session.
- """
- if messages:
- self.request.session[self.session_key] = self.serialize_messages(messages)
- else:
- self.request.session.pop(self.session_key, None)
- return []
-
- def serialize_messages(self, messages):
- encoder = MessageEncoder(separators=(',', ':'))
- return encoder.encode(messages)
-
- def deserialize_messages(self, data):
- if data and isinstance(data, six.string_types):
- return json.loads(data, cls=MessageDecoder)
- return data
diff --git a/lib/python2.7/site-packages/django/contrib/messages/tests/__init__.py b/lib/python2.7/site-packages/django/contrib/messages/tests/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/tests/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/messages/tests/base.py b/lib/python2.7/site-packages/django/contrib/messages/tests/base.py
deleted file mode 100644
index f8a089c..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/tests/base.py
+++ /dev/null
@@ -1,368 +0,0 @@
-from django import http
-from django.conf import settings, global_settings
-from django.contrib.messages import constants, utils, get_level, set_level
-from django.contrib.messages.api import MessageFailure
-from django.contrib.messages.storage import default_storage, base
-from django.contrib.messages.storage.base import Message
-from django.core.urlresolvers import reverse
-from django.test.utils import override_settings
-from django.utils.translation import ugettext_lazy
-from django.utils.unittest import skipIf
-
-
-def skipUnlessAuthIsInstalled(func):
- return skipIf(
- 'django.contrib.auth' not in settings.INSTALLED_APPS,
- "django.contrib.auth isn't installed")(func)
-
-
-def add_level_messages(storage):
- """
- Adds 6 messages from different levels (including a custom one) to a storage
- instance.
- """
- storage.add(constants.INFO, 'A generic info message')
- storage.add(29, 'Some custom level')
- storage.add(constants.DEBUG, 'A debugging message', extra_tags='extra-tag')
- storage.add(constants.WARNING, 'A warning')
- storage.add(constants.ERROR, 'An error')
- storage.add(constants.SUCCESS, 'This was a triumph.')
-
-
-class override_settings_tags(override_settings):
- def enable(self):
- super(override_settings_tags, self).enable()
- # LEVEL_TAGS is a constant defined in the
- # django.contrib.messages.storage.base module, so after changing
- # settings.MESSAGE_TAGS, we need to update that constant too.
- self.old_level_tags = base.LEVEL_TAGS
- base.LEVEL_TAGS = utils.get_level_tags()
- def disable(self):
- super(override_settings_tags, self).disable()
- base.LEVEL_TAGS = self.old_level_tags
-
-
-class BaseTests(object):
- storage_class = default_storage
- urls = 'django.contrib.messages.tests.urls'
- levels = {
- 'debug': constants.DEBUG,
- 'info': constants.INFO,
- 'success': constants.SUCCESS,
- 'warning': constants.WARNING,
- 'error': constants.ERROR,
- }
-
- def setUp(self):
- self.settings_override = override_settings_tags(
- TEMPLATE_DIRS = (),
- TEMPLATE_CONTEXT_PROCESSORS = global_settings.TEMPLATE_CONTEXT_PROCESSORS,
- MESSAGE_TAGS = '',
- MESSAGE_STORAGE = '%s.%s' % (self.storage_class.__module__,
- self.storage_class.__name__),
- SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer',
- )
- self.settings_override.enable()
-
- def tearDown(self):
- self.settings_override.disable()
-
- def get_request(self):
- return http.HttpRequest()
-
- def get_response(self):
- return http.HttpResponse()
-
- def get_storage(self, data=None):
- """
- Returns the storage backend, setting its loaded data to the ``data``
- argument.
-
- This method avoids the storage ``_get`` method from getting called so
- that other parts of the storage backend can be tested independent of
- the message retrieval logic.
- """
- storage = self.storage_class(self.get_request())
- storage._loaded_data = data or []
- return storage
-
- def test_add(self):
- storage = self.get_storage()
- self.assertFalse(storage.added_new)
- storage.add(constants.INFO, 'Test message 1')
- self.assertTrue(storage.added_new)
- storage.add(constants.INFO, 'Test message 2', extra_tags='tag')
- self.assertEqual(len(storage), 2)
-
- def test_add_lazy_translation(self):
- storage = self.get_storage()
- response = self.get_response()
-
- storage.add(constants.INFO, ugettext_lazy('lazy message'))
- storage.update(response)
-
- storing = self.stored_messages_count(storage, response)
- self.assertEqual(storing, 1)
-
- def test_no_update(self):
- storage = self.get_storage()
- response = self.get_response()
- storage.update(response)
- storing = self.stored_messages_count(storage, response)
- self.assertEqual(storing, 0)
-
- def test_add_update(self):
- storage = self.get_storage()
- response = self.get_response()
-
- storage.add(constants.INFO, 'Test message 1')
- storage.add(constants.INFO, 'Test message 1', extra_tags='tag')
- storage.update(response)
-
- storing = self.stored_messages_count(storage, response)
- self.assertEqual(storing, 2)
-
- def test_existing_add_read_update(self):
- storage = self.get_existing_storage()
- response = self.get_response()
-
- storage.add(constants.INFO, 'Test message 3')
- list(storage) # Simulates a read
- storage.update(response)
-
- storing = self.stored_messages_count(storage, response)
- self.assertEqual(storing, 0)
-
- def test_existing_read_add_update(self):
- storage = self.get_existing_storage()
- response = self.get_response()
-
- list(storage) # Simulates a read
- storage.add(constants.INFO, 'Test message 3')
- storage.update(response)
-
- storing = self.stored_messages_count(storage, response)
- self.assertEqual(storing, 1)
-
- @override_settings(MESSAGE_LEVEL=constants.DEBUG)
- def test_full_request_response_cycle(self):
- """
- With the message middleware enabled, tests that messages are properly
- stored and then retrieved across the full request/redirect/response
- cycle.
- """
- data = {
- 'messages': ['Test message %d' % x for x in range(5)],
- }
- show_url = reverse('django.contrib.messages.tests.urls.show')
- for level in ('debug', 'info', 'success', 'warning', 'error'):
- add_url = reverse('django.contrib.messages.tests.urls.add',
- args=(level,))
- response = self.client.post(add_url, data, follow=True)
- self.assertRedirects(response, show_url)
- self.assertTrue('messages' in response.context)
- messages = [Message(self.levels[level], msg) for msg in
- data['messages']]
- self.assertEqual(list(response.context['messages']), messages)
- for msg in data['messages']:
- self.assertContains(response, msg)
-
- @override_settings(MESSAGE_LEVEL=constants.DEBUG)
- def test_with_template_response(self):
- data = {
- 'messages': ['Test message %d' % x for x in range(5)],
- }
- show_url = reverse('django.contrib.messages.tests.urls.show_template_response')
- for level in self.levels.keys():
- add_url = reverse('django.contrib.messages.tests.urls.add_template_response',
- args=(level,))
- response = self.client.post(add_url, data, follow=True)
- self.assertRedirects(response, show_url)
- self.assertTrue('messages' in response.context)
- for msg in data['messages']:
- self.assertContains(response, msg)
-
- # there shouldn't be any messages on second GET request
- response = self.client.get(show_url)
- for msg in data['messages']:
- self.assertNotContains(response, msg)
-
- @override_settings(MESSAGE_LEVEL=constants.DEBUG)
- def test_multiple_posts(self):
- """
- Tests that messages persist properly when multiple POSTs are made
- before a GET.
- """
- data = {
- 'messages': ['Test message %d' % x for x in range(5)],
- }
- show_url = reverse('django.contrib.messages.tests.urls.show')
- messages = []
- for level in ('debug', 'info', 'success', 'warning', 'error'):
- messages.extend([Message(self.levels[level], msg) for msg in
- data['messages']])
- add_url = reverse('django.contrib.messages.tests.urls.add',
- args=(level,))
- self.client.post(add_url, data)
- response = self.client.get(show_url)
- self.assertTrue('messages' in response.context)
- self.assertEqual(list(response.context['messages']), messages)
- for msg in data['messages']:
- self.assertContains(response, msg)
-
- @override_settings(
- INSTALLED_APPS=filter(
- lambda app:app!='django.contrib.messages', settings.INSTALLED_APPS),
- MIDDLEWARE_CLASSES=filter(
- lambda m:'MessageMiddleware' not in m, settings.MIDDLEWARE_CLASSES),
- TEMPLATE_CONTEXT_PROCESSORS=filter(
- lambda p:'context_processors.messages' not in p,
- settings.TEMPLATE_CONTEXT_PROCESSORS),
- MESSAGE_LEVEL=constants.DEBUG
- )
- def test_middleware_disabled(self):
- """
- Tests that, when the middleware is disabled, an exception is raised
- when one attempts to store a message.
- """
- data = {
- 'messages': ['Test message %d' % x for x in range(5)],
- }
- show_url = reverse('django.contrib.messages.tests.urls.show')
- for level in ('debug', 'info', 'success', 'warning', 'error'):
- add_url = reverse('django.contrib.messages.tests.urls.add',
- args=(level,))
- self.assertRaises(MessageFailure, self.client.post, add_url,
- data, follow=True)
-
- @override_settings(
- INSTALLED_APPS=filter(
- lambda app:app!='django.contrib.messages', settings.INSTALLED_APPS),
- MIDDLEWARE_CLASSES=filter(
- lambda m:'MessageMiddleware' not in m, settings.MIDDLEWARE_CLASSES),
- TEMPLATE_CONTEXT_PROCESSORS=filter(
- lambda p:'context_processors.messages' not in p,
- settings.TEMPLATE_CONTEXT_PROCESSORS),
- MESSAGE_LEVEL=constants.DEBUG
- )
- def test_middleware_disabled_fail_silently(self):
- """
- Tests that, when the middleware is disabled, an exception is not
- raised if 'fail_silently' = True
- """
- data = {
- 'messages': ['Test message %d' % x for x in range(5)],
- 'fail_silently': True,
- }
- show_url = reverse('django.contrib.messages.tests.urls.show')
- for level in ('debug', 'info', 'success', 'warning', 'error'):
- add_url = reverse('django.contrib.messages.tests.urls.add',
- args=(level,))
- response = self.client.post(add_url, data, follow=True)
- self.assertRedirects(response, show_url)
- self.assertFalse('messages' in response.context)
-
- def stored_messages_count(self, storage, response):
- """
- Returns the number of messages being stored after a
- ``storage.update()`` call.
- """
- raise NotImplementedError('This method must be set by a subclass.')
-
- def test_get(self):
- raise NotImplementedError('This method must be set by a subclass.')
-
- def get_existing_storage(self):
- return self.get_storage([Message(constants.INFO, 'Test message 1'),
- Message(constants.INFO, 'Test message 2',
- extra_tags='tag')])
-
- def test_existing_read(self):
- """
- Tests that reading the existing storage doesn't cause the data to be
- lost.
- """
- storage = self.get_existing_storage()
- self.assertFalse(storage.used)
- # After iterating the storage engine directly, the used flag is set.
- data = list(storage)
- self.assertTrue(storage.used)
- # The data does not disappear because it has been iterated.
- self.assertEqual(data, list(storage))
-
- def test_existing_add(self):
- storage = self.get_existing_storage()
- self.assertFalse(storage.added_new)
- storage.add(constants.INFO, 'Test message 3')
- self.assertTrue(storage.added_new)
-
- def test_default_level(self):
- # get_level works even with no storage on the request.
- request = self.get_request()
- self.assertEqual(get_level(request), constants.INFO)
-
- # get_level returns the default level if it hasn't been set.
- storage = self.get_storage()
- request._messages = storage
- self.assertEqual(get_level(request), constants.INFO)
-
- # Only messages of sufficient level get recorded.
- add_level_messages(storage)
- self.assertEqual(len(storage), 5)
-
- def test_low_level(self):
- request = self.get_request()
- storage = self.storage_class(request)
- request._messages = storage
-
- self.assertTrue(set_level(request, 5))
- self.assertEqual(get_level(request), 5)
-
- add_level_messages(storage)
- self.assertEqual(len(storage), 6)
-
- def test_high_level(self):
- request = self.get_request()
- storage = self.storage_class(request)
- request._messages = storage
-
- self.assertTrue(set_level(request, 30))
- self.assertEqual(get_level(request), 30)
-
- add_level_messages(storage)
- self.assertEqual(len(storage), 2)
-
- @override_settings(MESSAGE_LEVEL=29)
- def test_settings_level(self):
- request = self.get_request()
- storage = self.storage_class(request)
-
- self.assertEqual(get_level(request), 29)
-
- add_level_messages(storage)
- self.assertEqual(len(storage), 3)
-
- def test_tags(self):
- storage = self.get_storage()
- storage.level = 0
- add_level_messages(storage)
- tags = [msg.tags for msg in storage]
- self.assertEqual(tags,
- ['info', '', 'extra-tag debug', 'warning', 'error',
- 'success'])
-
- @override_settings_tags(MESSAGE_TAGS={
- constants.INFO: 'info',
- constants.DEBUG: '',
- constants.WARNING: '',
- constants.ERROR: 'bad',
- 29: 'custom',
- }
- )
- def test_custom_tags(self):
- storage = self.get_storage()
- storage.level = 0
- add_level_messages(storage)
- tags = [msg.tags for msg in storage]
- self.assertEqual(tags,
- ['info', 'custom', 'extra-tag', '', 'bad', 'success'])
diff --git a/lib/python2.7/site-packages/django/contrib/messages/tests/test_cookie.py b/lib/python2.7/site-packages/django/contrib/messages/tests/test_cookie.py
deleted file mode 100644
index 5871ecc..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/tests/test_cookie.py
+++ /dev/null
@@ -1,154 +0,0 @@
-import json
-
-from django.contrib.messages import constants
-from django.contrib.messages.tests.base import BaseTests
-from django.contrib.messages.storage.cookie import (CookieStorage,
- MessageEncoder, MessageDecoder)
-from django.contrib.messages.storage.base import Message
-from django.test import TestCase
-from django.test.utils import override_settings
-from django.utils.safestring import SafeData, mark_safe
-
-
-def set_cookie_data(storage, messages, invalid=False, encode_empty=False):
- """
- Sets ``request.COOKIES`` with the encoded data and removes the storage
- backend's loaded data cache.
- """
- encoded_data = storage._encode(messages, encode_empty=encode_empty)
- if invalid:
- # Truncate the first character so that the hash is invalid.
- encoded_data = encoded_data[1:]
- storage.request.COOKIES = {CookieStorage.cookie_name: encoded_data}
- if hasattr(storage, '_loaded_data'):
- del storage._loaded_data
-
-
-def stored_cookie_messages_count(storage, response):
- """
- Returns an integer containing the number of messages stored.
- """
- # Get a list of cookies, excluding ones with a max-age of 0 (because
- # they have been marked for deletion).
- cookie = response.cookies.get(storage.cookie_name)
- if not cookie or cookie['max-age'] == 0:
- return 0
- data = storage._decode(cookie.value)
- if not data:
- return 0
- if data[-1] == CookieStorage.not_finished:
- data.pop()
- return len(data)
-
-
-@override_settings(SESSION_COOKIE_DOMAIN='.example.com')
-class CookieTest(BaseTests, TestCase):
- storage_class = CookieStorage
-
- def stored_messages_count(self, storage, response):
- return stored_cookie_messages_count(storage, response)
-
- def test_get(self):
- storage = self.storage_class(self.get_request())
- # Set initial data.
- example_messages = ['test', 'me']
- set_cookie_data(storage, example_messages)
- # Test that the message actually contains what we expect.
- self.assertEqual(list(storage), example_messages)
-
- def test_domain(self):
- """
- Ensure that CookieStorage honors SESSION_COOKIE_DOMAIN.
- Refs #15618.
- """
- # Test before the messages have been consumed
- storage = self.get_storage()
- response = self.get_response()
- storage.add(constants.INFO, 'test')
- storage.update(response)
- self.assertTrue('test' in response.cookies['messages'].value)
- self.assertEqual(response.cookies['messages']['domain'], '.example.com')
- self.assertEqual(response.cookies['messages']['expires'], '')
-
- # Test after the messages have been consumed
- storage = self.get_storage()
- response = self.get_response()
- storage.add(constants.INFO, 'test')
- for m in storage:
- pass # Iterate through the storage to simulate consumption of messages.
- storage.update(response)
- self.assertEqual(response.cookies['messages'].value, '')
- self.assertEqual(response.cookies['messages']['domain'], '.example.com')
- self.assertEqual(response.cookies['messages']['expires'], 'Thu, 01-Jan-1970 00:00:00 GMT')
-
- def test_get_bad_cookie(self):
- request = self.get_request()
- storage = self.storage_class(request)
- # Set initial (invalid) data.
- example_messages = ['test', 'me']
- set_cookie_data(storage, example_messages, invalid=True)
- # Test that the message actually contains what we expect.
- self.assertEqual(list(storage), [])
-
- def test_max_cookie_length(self):
- """
- Tests that, if the data exceeds what is allowed in a cookie, older
- messages are removed before saving (and returned by the ``update``
- method).
- """
- storage = self.get_storage()
- response = self.get_response()
-
- # When storing as a cookie, the cookie has constant overhead of approx
- # 54 chars, and each message has a constant overhead of about 37 chars
- # and a variable overhead of zero in the best case. We aim for a message
- # size which will fit 4 messages into the cookie, but not 5.
- # See also FallbackTest.test_session_fallback
- msg_size = int((CookieStorage.max_cookie_size - 54) / 4.5 - 37)
- for i in range(5):
- storage.add(constants.INFO, str(i) * msg_size)
- unstored_messages = storage.update(response)
-
- cookie_storing = self.stored_messages_count(storage, response)
- self.assertEqual(cookie_storing, 4)
-
- self.assertEqual(len(unstored_messages), 1)
- self.assertTrue(unstored_messages[0].message == '0' * msg_size)
-
- def test_json_encoder_decoder(self):
- """
- Tests that a complex nested data structure containing Message
- instances is properly encoded/decoded by the custom JSON
- encoder/decoder classes.
- """
- messages = [
- {
- 'message': Message(constants.INFO, 'Test message'),
- 'message_list': [Message(constants.INFO, 'message %s') \
- for x in range(5)] + [{'another-message': \
- Message(constants.ERROR, 'error')}],
- },
- Message(constants.INFO, 'message %s'),
- ]
- encoder = MessageEncoder(separators=(',', ':'))
- value = encoder.encode(messages)
- decoded_messages = json.loads(value, cls=MessageDecoder)
- self.assertEqual(messages, decoded_messages)
-
- def test_safedata(self):
- """
- Tests that a message containing SafeData is keeping its safe status when
- retrieved from the message storage.
- """
- def encode_decode(data):
- message = Message(constants.DEBUG, data)
- encoded = storage._encode(message)
- decoded = storage._decode(encoded)
- return decoded.message
-
- storage = self.get_storage()
-
- self.assertIsInstance(
- encode_decode(mark_safe("<b>Hello Django!</b>")), SafeData)
- self.assertNotIsInstance(
- encode_decode("<b>Hello Django!</b>"), SafeData)
diff --git a/lib/python2.7/site-packages/django/contrib/messages/tests/test_fallback.py b/lib/python2.7/site-packages/django/contrib/messages/tests/test_fallback.py
deleted file mode 100644
index cd0b188..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/tests/test_fallback.py
+++ /dev/null
@@ -1,176 +0,0 @@
-from django.contrib.messages import constants
-from django.contrib.messages.storage.fallback import (FallbackStorage,
- CookieStorage)
-from django.contrib.messages.tests.base import BaseTests
-from django.contrib.messages.tests.test_cookie import (set_cookie_data,
- stored_cookie_messages_count)
-from django.contrib.messages.tests.test_session import (set_session_data,
- stored_session_messages_count)
-from django.test import TestCase
-
-
-class FallbackTest(BaseTests, TestCase):
- storage_class = FallbackStorage
-
- def get_request(self):
- self.session = {}
- request = super(FallbackTest, self).get_request()
- request.session = self.session
- return request
-
- def get_cookie_storage(self, storage):
- return storage.storages[-2]
-
- def get_session_storage(self, storage):
- return storage.storages[-1]
-
- def stored_cookie_messages_count(self, storage, response):
- return stored_cookie_messages_count(self.get_cookie_storage(storage),
- response)
-
- def stored_session_messages_count(self, storage, response):
- return stored_session_messages_count(self.get_session_storage(storage))
-
- def stored_messages_count(self, storage, response):
- """
- Return the storage totals from both cookie and session backends.
- """
- total = (self.stored_cookie_messages_count(storage, response) +
- self.stored_session_messages_count(storage, response))
- return total
-
- def test_get(self):
- request = self.get_request()
- storage = self.storage_class(request)
- cookie_storage = self.get_cookie_storage(storage)
-
- # Set initial cookie data.
- example_messages = [str(i) for i in range(5)]
- set_cookie_data(cookie_storage, example_messages)
-
- # Overwrite the _get method of the fallback storage to prove it is not
- # used (it would cause a TypeError: 'NoneType' object is not callable).
- self.get_session_storage(storage)._get = None
-
- # Test that the message actually contains what we expect.
- self.assertEqual(list(storage), example_messages)
-
- def test_get_empty(self):
- request = self.get_request()
- storage = self.storage_class(request)
-
- # Overwrite the _get method of the fallback storage to prove it is not
- # used (it would cause a TypeError: 'NoneType' object is not callable).
- self.get_session_storage(storage)._get = None
-
- # Test that the message actually contains what we expect.
- self.assertEqual(list(storage), [])
-
- def test_get_fallback(self):
- request = self.get_request()
- storage = self.storage_class(request)
- cookie_storage = self.get_cookie_storage(storage)
- session_storage = self.get_session_storage(storage)
-
- # Set initial cookie and session data.
- example_messages = [str(i) for i in range(5)]
- set_cookie_data(cookie_storage, example_messages[:4] +
- [CookieStorage.not_finished])
- set_session_data(session_storage, example_messages[4:])
-
- # Test that the message actually contains what we expect.
- self.assertEqual(list(storage), example_messages)
-
- def test_get_fallback_only(self):
- request = self.get_request()
- storage = self.storage_class(request)
- cookie_storage = self.get_cookie_storage(storage)
- session_storage = self.get_session_storage(storage)
-
- # Set initial cookie and session data.
- example_messages = [str(i) for i in range(5)]
- set_cookie_data(cookie_storage, [CookieStorage.not_finished],
- encode_empty=True)
- set_session_data(session_storage, example_messages)
-
- # Test that the message actually contains what we expect.
- self.assertEqual(list(storage), example_messages)
-
- def test_flush_used_backends(self):
- request = self.get_request()
- storage = self.storage_class(request)
- cookie_storage = self.get_cookie_storage(storage)
- session_storage = self.get_session_storage(storage)
-
- # Set initial cookie and session data.
- set_cookie_data(cookie_storage, ['cookie', CookieStorage.not_finished])
- set_session_data(session_storage, ['session'])
-
- # When updating, previously used but no longer needed backends are
- # flushed.
- response = self.get_response()
- list(storage)
- storage.update(response)
- session_storing = self.stored_session_messages_count(storage, response)
- self.assertEqual(session_storing, 0)
-
- def test_no_fallback(self):
- """
- Confirms that:
-
- (1) A short number of messages whose data size doesn't exceed what is
- allowed in a cookie will all be stored in the CookieBackend.
-
- (2) If the CookieBackend can store all messages, the SessionBackend
- won't be written to at all.
- """
- storage = self.get_storage()
- response = self.get_response()
-
- # Overwrite the _store method of the fallback storage to prove it isn't
- # used (it would cause a TypeError: 'NoneType' object is not callable).
- self.get_session_storage(storage)._store = None
-
- for i in range(5):
- storage.add(constants.INFO, str(i) * 100)
- storage.update(response)
-
- cookie_storing = self.stored_cookie_messages_count(storage, response)
- self.assertEqual(cookie_storing, 5)
- session_storing = self.stored_session_messages_count(storage, response)
- self.assertEqual(session_storing, 0)
-
- def test_session_fallback(self):
- """
- Confirms that, if the data exceeds what is allowed in a cookie,
- messages which did not fit are stored in the SessionBackend.
- """
- storage = self.get_storage()
- response = self.get_response()
-
- # see comment in CookieText.test_cookie_max_length
- msg_size = int((CookieStorage.max_cookie_size - 54) / 4.5 - 37)
- for i in range(5):
- storage.add(constants.INFO, str(i) * msg_size)
- storage.update(response)
-
- cookie_storing = self.stored_cookie_messages_count(storage, response)
- self.assertEqual(cookie_storing, 4)
- session_storing = self.stored_session_messages_count(storage, response)
- self.assertEqual(session_storing, 1)
-
- def test_session_fallback_only(self):
- """
- Confirms that large messages, none of which fit in a cookie, are stored
- in the SessionBackend (and nothing is stored in the CookieBackend).
- """
- storage = self.get_storage()
- response = self.get_response()
-
- storage.add(constants.INFO, 'x' * 5000)
- storage.update(response)
-
- cookie_storing = self.stored_cookie_messages_count(storage, response)
- self.assertEqual(cookie_storing, 0)
- session_storing = self.stored_session_messages_count(storage, response)
- self.assertEqual(session_storing, 1)
diff --git a/lib/python2.7/site-packages/django/contrib/messages/tests/test_middleware.py b/lib/python2.7/site-packages/django/contrib/messages/tests/test_middleware.py
deleted file mode 100644
index 5618c2d..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/tests/test_middleware.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from django import http
-from django.contrib.messages.middleware import MessageMiddleware
-from django.utils import unittest
-
-
-class MiddlewareTest(unittest.TestCase):
-
- def setUp(self):
- self.middleware = MessageMiddleware()
-
- def test_response_without_messages(self):
- """
- Makes sure that the response middleware is tolerant of messages not
- existing on request.
- """
- request = http.HttpRequest()
- response = http.HttpResponse()
- self.middleware.process_response(request, response)
diff --git a/lib/python2.7/site-packages/django/contrib/messages/tests/test_mixins.py b/lib/python2.7/site-packages/django/contrib/messages/tests/test_mixins.py
deleted file mode 100644
index 8eef4cb..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/tests/test_mixins.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from django.test.testcases import TestCase
-from django.contrib.messages.tests.urls import ContactFormViewWithMsg
-from django.core.urlresolvers import reverse
-
-class SuccessMessageMixinTests(TestCase):
- urls = 'django.contrib.messages.tests.urls'
-
- def test_set_messages_success(self):
- author = {'name': 'John Doe',
- 'slug': 'success-msg'}
- add_url = reverse('add_success_msg')
- req = self.client.post(add_url, author)
- self.assertIn(ContactFormViewWithMsg.success_message % author,
- req.cookies['messages'].value)
diff --git a/lib/python2.7/site-packages/django/contrib/messages/tests/test_session.py b/lib/python2.7/site-packages/django/contrib/messages/tests/test_session.py
deleted file mode 100644
index 940e1c0..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/tests/test_session.py
+++ /dev/null
@@ -1,53 +0,0 @@
-from django.contrib.messages import constants
-from django.contrib.messages.tests.base import BaseTests
-from django.contrib.messages.storage.base import Message
-from django.contrib.messages.storage.session import SessionStorage
-from django.utils.safestring import SafeData, mark_safe
-from django.test import TestCase
-
-
-def set_session_data(storage, messages):
- """
- Sets the messages into the backend request's session and remove the
- backend's loaded data cache.
- """
- storage.request.session[storage.session_key] = storage.serialize_messages(messages)
- if hasattr(storage, '_loaded_data'):
- del storage._loaded_data
-
-
-def stored_session_messages_count(storage):
- data = storage.deserialize_messages(storage.request.session.get(storage.session_key, []))
- return len(data)
-
-
-class SessionTest(BaseTests, TestCase):
- storage_class = SessionStorage
-
- def get_request(self):
- self.session = {}
- request = super(SessionTest, self).get_request()
- request.session = self.session
- return request
-
- def stored_messages_count(self, storage, response):
- return stored_session_messages_count(storage)
-
- def test_get(self):
- storage = self.storage_class(self.get_request())
- # Set initial data.
- example_messages = ['test', 'me']
- set_session_data(storage, example_messages)
- # Test that the message actually contains what we expect.
- self.assertEqual(list(storage), example_messages)
-
- def test_safedata(self):
- """
- Tests that a message containing SafeData is keeping its safe status when
- retrieved from the message storage.
- """
- storage = self.get_storage()
-
- message = Message(constants.DEBUG, mark_safe("<b>Hello Django!</b>"))
- set_session_data(storage, [message])
- self.assertIsInstance(list(storage)[0].message, SafeData)
diff --git a/lib/python2.7/site-packages/django/contrib/messages/tests/urls.py b/lib/python2.7/site-packages/django/contrib/messages/tests/urls.py
deleted file mode 100644
index 0541b5a..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/tests/urls.py
+++ /dev/null
@@ -1,73 +0,0 @@
-from django.conf.urls import patterns, url
-from django.contrib import messages
-from django.core.urlresolvers import reverse
-from django import forms
-from django.http import HttpResponseRedirect, HttpResponse
-from django.template import RequestContext, Template
-from django.template.response import TemplateResponse
-from django.views.decorators.cache import never_cache
-from django.contrib.messages.views import SuccessMessageMixin
-from django.views.generic.edit import FormView
-
-TEMPLATE = """{% if messages %}
-<ul class="messages">
- {% for message in messages %}
- <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>
- {{ message }}
- </li>
- {% endfor %}
-</ul>
-{% endif %}
-"""
-
-@never_cache
-def add(request, message_type):
- # don't default to False here, because we want to test that it defaults
- # to False if unspecified
- fail_silently = request.POST.get('fail_silently', None)
- for msg in request.POST.getlist('messages'):
- if fail_silently is not None:
- getattr(messages, message_type)(request, msg,
- fail_silently=fail_silently)
- else:
- getattr(messages, message_type)(request, msg)
-
- show_url = reverse('django.contrib.messages.tests.urls.show')
- return HttpResponseRedirect(show_url)
-
-@never_cache
-def add_template_response(request, message_type):
- for msg in request.POST.getlist('messages'):
- getattr(messages, message_type)(request, msg)
-
- show_url = reverse('django.contrib.messages.tests.urls.show_template_response')
- return HttpResponseRedirect(show_url)
-
-@never_cache
-def show(request):
- t = Template(TEMPLATE)
- return HttpResponse(t.render(RequestContext(request)))
-
-@never_cache
-def show_template_response(request):
- return TemplateResponse(request, Template(TEMPLATE))
-
-
-class ContactForm(forms.Form):
- name = forms.CharField(required=True)
- slug = forms.SlugField(required=True)
-
-
-class ContactFormViewWithMsg(SuccessMessageMixin, FormView):
- form_class = ContactForm
- success_url = show
- success_message = "%(name)s was created successfully"
-
-
-urlpatterns = patterns('',
- ('^add/(debug|info|success|warning|error)/$', add),
- url('^add/msg/$', ContactFormViewWithMsg.as_view(), name='add_success_msg'),
- ('^show/$', show),
- ('^template_response/add/(debug|info|success|warning|error)/$', add_template_response),
- ('^template_response/show/$', show_template_response),
-)
diff --git a/lib/python2.7/site-packages/django/contrib/messages/utils.py b/lib/python2.7/site-packages/django/contrib/messages/utils.py
deleted file mode 100644
index 838860b..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/utils.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from django.conf import settings
-from django.contrib.messages import constants
-
-
-def get_level_tags():
- """
- Returns the message level tags.
- """
- level_tags = constants.DEFAULT_TAGS.copy()
- level_tags.update(getattr(settings, 'MESSAGE_TAGS', {}))
- return level_tags
diff --git a/lib/python2.7/site-packages/django/contrib/messages/views.py b/lib/python2.7/site-packages/django/contrib/messages/views.py
deleted file mode 100644
index 3c2ca35..0000000
--- a/lib/python2.7/site-packages/django/contrib/messages/views.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from django.contrib import messages
-
-
-class SuccessMessageMixin(object):
- """
- Adds a success message on successful form submission.
- """
- success_message = ''
-
- def form_valid(self, form):
- response = super(SuccessMessageMixin, self).form_valid(form)
- success_message = self.get_success_message(form.cleaned_data)
- if success_message:
- messages.success(self.request, success_message)
- return response
-
- def get_success_message(self, cleaned_data):
- return self.success_message % cleaned_data
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/__init__.py b/lib/python2.7/site-packages/django/contrib/redirects/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/admin.py b/lib/python2.7/site-packages/django/contrib/redirects/admin.py
deleted file mode 100644
index a9b2a32..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/admin.py
+++ /dev/null
@@ -1,11 +0,0 @@
-
-from django.contrib import admin
-from django.contrib.redirects.models import Redirect
-
-class RedirectAdmin(admin.ModelAdmin):
- list_display = ('old_path', 'new_path')
- list_filter = ('site',)
- search_fields = ('old_path', 'new_path')
- radio_fields = {'site': admin.VERTICAL}
-
-admin.site.register(Redirect, RedirectAdmin) \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ar/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/ar/LC_MESSAGES/django.mo
deleted file mode 100644
index 9a5ac61..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ar/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ar/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/ar/LC_MESSAGES/django.po
deleted file mode 100644
index d6b5878..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ar/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,49 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/"
-"ar/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "إعادة التوجيه من"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "يجب أن يكون هذا مساراً مطلقاً وبدون اسم النطاق. مثال: '/events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "إعادة التوجيه إلى"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"يجب أن يكون هذا مسارا مطلقا (كما هو أعلاه) أو عنوانا كاملا يبدأ بالمقطع "
-"'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "إعادة التوجيه"
-
-#: models.py:16
-msgid "redirects"
-msgstr "إعادات التوجيه"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/az/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/az/LC_MESSAGES/django.mo
deleted file mode 100644
index 0819ef5..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/az/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/az/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/az/LC_MESSAGES/django.po
deleted file mode 100644
index 0205c63..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/az/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Ismayilov <ali@ismailov.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/"
-"language/az/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: az\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "buradan yönəlt"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Domen ünvanını çıxmaqla bu, mütləq ünvan kimi göstərilməlidir. Məsələn, \"/"
-"events/search/\"."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "bura yönəlt"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Bu həm mütləq ünvan (yuxarıdakı kimi) ola bilər, həm də \"http://\" ilə "
-"başlayan tam URL ola bilər."
-
-#: models.py:15
-msgid "redirect"
-msgstr "yönəlt"
-
-#: models.py:16
-msgid "redirects"
-msgstr "yönəldir"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/be/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/be/LC_MESSAGES/django.mo
deleted file mode 100644
index 5a82d2c..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/be/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/be/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/be/LC_MESSAGES/django.po
deleted file mode 100644
index 3114285..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/be/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,49 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/"
-"language/be/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: be\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "накіраваць з"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Тут мусіць быць поўны шлях бяз назвы дамэна. Прыклад: «/events/search/»."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "накіраваць да"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Тут, як і ўверсе, мусіць быць поўны шлях, або поўная сеціўная спасылка, якая "
-"пачынаецца з «http://»."
-
-#: models.py:15
-msgid "redirect"
-msgstr "накіраваньне"
-
-#: models.py:16
-msgid "redirects"
-msgstr "накіраваньні"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/bg/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/bg/LC_MESSAGES/django.mo
deleted file mode 100644
index 5b55e30..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/bg/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/bg/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/bg/LC_MESSAGES/django.po
deleted file mode 100644
index a940b41..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/bg/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/"
-"language/bg/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bg\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "препратка от"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Това трябва да бъде абсолютен път, без името на домейна. Пример: '/events/"
-"search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "препратка към"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Това може да бъде или абсолютен път (като горното) или пълен URL, започващ с "
-"'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "препратка"
-
-#: models.py:16
-msgid "redirects"
-msgstr "препратки"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/bn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/bn/LC_MESSAGES/django.mo
deleted file mode 100644
index cf20386..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/bn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/bn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/bn/LC_MESSAGES/django.po
deleted file mode 100644
index 36d0e98..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/bn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,48 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/"
-"bn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "রিডাইরেক্ট করা হবে"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"এর মান অবশ্যই এবসল্যুট পথ, ডোমেইন নাম বাদ দিয়ে, হতে হবে, উদাহরণঃ '/events/"
-"search/'।"
-
-#: models.py:11
-msgid "redirect to"
-msgstr "রিডাইরেক্ট করুন"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "এর মান এবসল্যুট পথ (উপরের মত) অথবা পুরো URL পাথ ('http://' সহ) হতে পারে।"
-
-#: models.py:15
-msgid "redirect"
-msgstr "রিডাইরেক্ট"
-
-#: models.py:16
-msgid "redirects"
-msgstr "রিডাইরেক্ট"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/br/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/br/LC_MESSAGES/django.mo
deleted file mode 100644
index 8b17af7..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/br/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/br/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/br/LC_MESSAGES/django.po
deleted file mode 100644
index 3241af9..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/br/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Fulup <fulup.jakez@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/"
-"br/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: br\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "adkaset eus"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-
-#: models.py:11
-msgid "redirect to"
-msgstr "adkas da"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-
-#: models.py:15
-msgid "redirect"
-msgstr "adkas"
-
-#: models.py:16
-msgid "redirects"
-msgstr "adkasoù"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/bs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/bs/LC_MESSAGES/django.mo
deleted file mode 100644
index 3d6c978..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/bs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/bs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/bs/LC_MESSAGES/django.po
deleted file mode 100644
index ac74166..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/bs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/"
-"bs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bs\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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "preusmjeren sa"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Ovo mora biti apsolutna putanja bez imena domena. Na primjer: '/events/"
-"search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "preusmjeri ka"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Ovo može biti ili apsolutna putanja (kao gore) ili pun URL koji počinje sa "
-"'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "preusmjeravanje"
-
-#: models.py:16
-msgid "redirects"
-msgstr "preusmjeravanja"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ca/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/ca/LC_MESSAGES/django.mo
deleted file mode 100644
index 92752f4..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ca/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ca/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/ca/LC_MESSAGES/django.po
deleted file mode 100644
index 629127f..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ca/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Catalan (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "redirecció des de"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Aquesta ruta hauria de ser un camí absolut, excloent-ne el nom del domini. "
-"Exemple '/events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "redirigir a"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Això pot ser bé una ruta absoluta (com a sobre) o una URL completa que "
-"comenci per 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "redirecció"
-
-#: models.py:16
-msgid "redirects"
-msgstr "redireccions"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/cs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/cs/LC_MESSAGES/django.mo
deleted file mode 100644
index 77ef43c..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/cs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/cs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/cs/LC_MESSAGES/django.po
deleted file mode 100644
index 6eaadc6..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/cs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,49 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Czech (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "přesměrovat z"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Toto by měla být absolutní cesta bez domény. Příklad: \"/udalosti/hledat/\"."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "přesměrovat na"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Toto může být buď absolutní cesta (jako nahoře) nebo plné URL začínající na "
-"\"http://\"."
-
-#: models.py:15
-msgid "redirect"
-msgstr "přesměrování"
-
-#: models.py:16
-msgid "redirects"
-msgstr "přesměrování"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/cy/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/cy/LC_MESSAGES/django.mo
deleted file mode 100644
index 77d1900..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/cy/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/cy/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/cy/LC_MESSAGES/django.po
deleted file mode 100644
index 8e8282f..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/cy/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,52 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Maredudd ap Gwyndaf <maredudd@maredudd.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-12 20:33+0000\n"
-"Last-Translator: Maredudd ap Gwyndaf <maredudd@maredudd.com>\n"
-"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/"
-"cy/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cy\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
-"11) ? 2 : 3;\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "ailgyfeirio o"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Dylai hon fod yn lwybr absoliwt, heb yr enw parth. Er enghraifft: '/"
-"digwyddiadau/chwilio/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "ailgyfeirio i"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Gellir fod naill ai yn lwybr absoliwt (fel uchod) neu URL llawn yn dechrau â "
-"'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "ailgyfeiriad"
-
-#: models.py:16
-msgid "redirects"
-msgstr "ailgyfeiriadau"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/da/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/da/LC_MESSAGES/django.mo
deleted file mode 100644
index 2233de5..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/da/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/da/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/da/LC_MESSAGES/django.po
deleted file mode 100644
index 6f30b32..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/da/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/"
-"da/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: da\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "rediriger fra"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Dette skal være en absolut sti uden domænenavnet. For eksempel: '/nyheder/"
-"soeg/'"
-
-#: models.py:11
-msgid "redirect to"
-msgstr "rediriger til"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Dette kan enten være en absolut sti (som ovenfor), eller en komplet URL "
-"startende med 'http://'"
-
-#: models.py:15
-msgid "redirect"
-msgstr "rediriger"
-
-#: models.py:16
-msgid "redirects"
-msgstr "redirigeringer"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/de/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/de/LC_MESSAGES/django.mo
deleted file mode 100644
index d130ae1..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/de/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/de/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/de/LC_MESSAGES/django.po
deleted file mode 100644
index f878370..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/de/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011,2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-06-14 15:04+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "Umleitung von"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Hier sollte ein absoluter Pfad stehen, ohne den Domainnamen. Beispiel: '/"
-"events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "Umleitung nach"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Hier muss entweder ein absoluter Pfad oder eine komplette URL, mit http:// "
-"am Anfang, stehen."
-
-#: models.py:15
-msgid "redirect"
-msgstr "Umleitung"
-
-#: models.py:16
-msgid "redirects"
-msgstr "Umleitungen"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/el/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/el/LC_MESSAGES/django.mo
deleted file mode 100644
index 2e08179..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/el/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/el/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/el/LC_MESSAGES/django.po
deleted file mode 100644
index 06884e5..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/el/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/"
-"el/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: el\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "ανακατεύθυνση από"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Αυτό πρέπει να είναι ένα απόλυτο μονοπάτι, με εξαίρεση το όνομα χώρου. "
-"Παράδειγμα: '/events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "ανακατεύθυνση προς"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Αυτό πρέπει να είναι ένα απόλυτο μονοπάτι (όπως παραπάνω), ή ένα πλήρες URL "
-"που αρχίζει με 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "ανακατεύθυνση"
-
-#: models.py:16
-msgid "redirects"
-msgstr "ανακατευθύνσεις"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/en/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/en/LC_MESSAGES/django.mo
deleted file mode 100644
index 08a7b68..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/en/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/en/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/en/LC_MESSAGES/django.po
deleted file mode 100644
index 10eb14e..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/en/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,42 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2010-05-13 15:35+0200\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr ""
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-
-#: models.py:11
-msgid "redirect to"
-msgstr ""
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-
-#: models.py:15
-msgid "redirect"
-msgstr ""
-
-#: models.py:16
-msgid "redirects"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.mo
deleted file mode 100644
index 1294ed8..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.po
deleted file mode 100644
index 0be1db9..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/en_GB/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ross Poulton <ross@rossp.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
-"django/language/en_GB/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: en_GB\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "redirect from"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "redirect to"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "redirect"
-
-#: models.py:16
-msgid "redirects"
-msgstr "redirects"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/eo/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/eo/LC_MESSAGES/django.mo
deleted file mode 100644
index 92d4561..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/eo/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/eo/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/eo/LC_MESSAGES/django.po
deleted file mode 100644
index 3568b44..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/eo/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Baptiste <baptiste+transifex@darthenay.fr>, 2011
-# kristjan <kristjan.schmidt@googlemail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/"
-"language/eo/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "alidirekto de"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Tio ĉi devus esti absoluta vojo, escepte de la retregionan nomon. Ekzemplo: "
-"'/eventoj/serĉo/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "alidirekto al"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Tio ĉi povas esti aŭ absoluta vojo (kiel supre), aŭ URL komencante kun "
-"'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "alidirekto"
-
-#: models.py:16
-msgid "redirects"
-msgstr "alidirektoj"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/es/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/es/LC_MESSAGES/django.mo
deleted file mode 100644
index 2c55143..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/es/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/es/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/es/LC_MESSAGES/django.po
deleted file mode 100644
index b67f7aa..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/es/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "redirigir desde"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Esta ruta debería ser absoluta, excluyendo el nombre de dominio. Ejemplo: '/"
-"events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "redirigir a"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Esto puede ser bien una ruta absoluta (como antes) o una URL completa que "
-"empiece con 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "redirección"
-
-#: models.py:16
-msgid "redirects"
-msgstr "redirecciones"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.mo
deleted file mode 100644
index 2427691..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.po
deleted file mode 100644
index 0f5210e..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/es_AR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
-"django/language/es_AR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_AR\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "redirigir desde"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Esta ruta debe ser absoluta, excluyendo el nombre de dominio. Ejemplo: '/"
-"events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "redirigir a"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Esto puede ser bien una ruta absoluta (como arriba) o una URL completa que "
-"empiece con 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "redirección"
-
-#: models.py:16
-msgid "redirects"
-msgstr "redirecciones"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.mo
deleted file mode 100644
index ded4855..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.po
deleted file mode 100644
index bfac1fc..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/es_MX/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Abraham Estrada <abraham.estrada@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/"
-"language/es_MX/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_MX\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "redirigir desde"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Esta ruta debe ser absoluta, excluyendo el nombre del dominio. Ejemplo: '/"
-"events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "redirigir a"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Esto puede ser bien una ruta absoluta (como arriba) o una URL completa que "
-"empiece con 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "redirigir"
-
-#: models.py:16
-msgid "redirects"
-msgstr "redirecciona"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/et/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/et/LC_MESSAGES/django.mo
deleted file mode 100644
index afeabaf..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/et/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/et/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/et/LC_MESSAGES/django.po
deleted file mode 100644
index 707867d..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/et/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/"
-"et/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: et\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "ümbersuunatav asukoht"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"See peaks olema absoluutne asukoht, v.a. domeeninimi. Näide: '/events/"
-"search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "suuna aadressile"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"See võib olla kas absoluutne asukoht (nagu ülemine) või täielik URL algusega "
-"'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "suunamine"
-
-#: models.py:16
-msgid "redirects"
-msgstr "suunamised"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/eu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/eu/LC_MESSAGES/django.mo
deleted file mode 100644
index 5b8e7b6..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/eu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/eu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/eu/LC_MESSAGES/django.po
deleted file mode 100644
index cefd0e1..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/eu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/"
-"eu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "nondik berbidalia"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Honek 'bide' absolutua izan beharko luke, dominio izena kenduta. 'Adibidez: "
-"events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "Nora berbidali"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Hau 'bide' absolutua (goian bezala) edo URL osoa , 'http://'-rekin hasiz, "
-"izan daiteke."
-
-#: models.py:15
-msgid "redirect"
-msgstr "berbidali"
-
-#: models.py:16
-msgid "redirects"
-msgstr "berbidali"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/fa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/fa/LC_MESSAGES/django.mo
deleted file mode 100644
index 6459b4c..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/fa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/fa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/fa/LC_MESSAGES/django.po
deleted file mode 100644
index 3d0c7e8..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/fa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/"
-"fa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "فرم ارسال به نشانی جدید"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "می‌بایست یک مسیر مطلق و بدون نام دامنه باشد. مانند: '/events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "ارسال به نشانی"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"می‌تواند یک مسیر مطلق (همانند بالا) و یا یک آدرس کامل با 'http://‎' باشد."
-
-#: models.py:15
-msgid "redirect"
-msgstr "باز-ارسال"
-
-#: models.py:16
-msgid "redirects"
-msgstr "باز-ارسال‌ها"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/fi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/fi/LC_MESSAGES/django.mo
deleted file mode 100644
index 903541f..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/fi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/fi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/fi/LC_MESSAGES/django.po
deleted file mode 100644
index a3d2154..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/fi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Finnish (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "ohjaa osoitteesta"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Tässä on käytettävä absoluuttista polkua ilman verkkotunnusta. Esimerkki: '/"
-"tapahtumat/haku/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "ohjaa osoitteeseen"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Tässä on käytettävä joko absoluuttista polkua (kuten yllä) tai täydellistä "
-"'http://'-alkuista URL-osoitetta."
-
-#: models.py:15
-msgid "redirect"
-msgstr "edelleenohjaus"
-
-#: models.py:16
-msgid "redirects"
-msgstr "edelleenohjaukset"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/fr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/fr/LC_MESSAGES/django.mo
deleted file mode 100644
index 96d5706..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/fr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/fr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/fr/LC_MESSAGES/django.po
deleted file mode 100644
index 5f16f1b..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/fr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: French (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "redirigé depuis"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Ceci doit être un chemin absolu, sans nom de domaine. Par exemple, « /"
-"evenements/rechercher/ »."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "redirigé vers"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Ceci peut être soit un chemin absolu (voir ci-dessus) soit une URL complète "
-"débutant par « http:// »."
-
-#: models.py:15
-msgid "redirect"
-msgstr "redirige"
-
-#: models.py:16
-msgid "redirects"
-msgstr "redirige"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/fy_NL/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/fy_NL/LC_MESSAGES/django.mo
deleted file mode 100644
index 4119375..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/fy_NL/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/fy_NL/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/fy_NL/LC_MESSAGES/django.po
deleted file mode 100644
index 4ff876f..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/fy_NL/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,43 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-23 02:43+0100\n"
-"PO-Revision-Date: 2011-03-15 15:46+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: fy_NL\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"
-
-#: models.py:7
-msgid "redirect from"
-msgstr ""
-
-#: models.py:8
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-
-#: models.py:9
-msgid "redirect to"
-msgstr ""
-
-#: models.py:10
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-
-#: models.py:13
-msgid "redirect"
-msgstr ""
-
-#: models.py:14
-msgid "redirects"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ga/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/ga/LC_MESSAGES/django.mo
deleted file mode 100644
index ede3676..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ga/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ga/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/ga/LC_MESSAGES/django.po
deleted file mode 100644
index 0663c24..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ga/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/"
-"ga/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ga\n"
-"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
-"4);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "atreoraigh ó"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "Teastaíonn dearbhchosán gan ainm fearainn. Sampla '/events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "atreoraigh go dtí"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "Is féidir dearbhchosán nó URL lán ag tosnú le 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "athsheol"
-
-#: models.py:16
-msgid "redirects"
-msgstr "atreoraithe"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/gl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/gl/LC_MESSAGES/django.mo
deleted file mode 100644
index 6a3ab83..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/gl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/gl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/gl/LC_MESSAGES/django.po
deleted file mode 100644
index 229ff6b..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/gl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/"
-"gl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "orixe da redirección"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Debe ser unha ruta absoluta, sen o nome de dominio. Exemplo: '/events/"
-"search/'"
-
-#: models.py:11
-msgid "redirect to"
-msgstr "destino da redirección"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Pode ser unha ruta absoluta (coma a de enriba) ou un URL completo que empece "
-"por 'http://'"
-
-#: models.py:15
-msgid "redirect"
-msgstr "redirección"
-
-#: models.py:16
-msgid "redirects"
-msgstr "redireccións"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/he/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/he/LC_MESSAGES/django.mo
deleted file mode 100644
index 45b9218..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/he/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/he/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/he/LC_MESSAGES/django.po
deleted file mode 100644
index 45ebbe1..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/he/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "הפניה מ"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "זה אמור להיות נתיב מלא, ללא שם המתחם. לדוגמא: '/‎/events/search'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "הפניה אל"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "יכול להיות נתיב מלא (כנ\"ל) או URL מלא המתחיל ב'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "הפניה"
-
-#: models.py:16
-msgid "redirects"
-msgstr "הפניות"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/hi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/hi/LC_MESSAGES/django.mo
deleted file mode 100644
index 6af7c19..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/hi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/hi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/hi/LC_MESSAGES/django.po
deleted file mode 100644
index 8a9df41..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/hi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sandeep Satavlekar <sandysat@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/"
-"hi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "से अनुप्रेषित"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"डोमेन नाम को छोड़कर बाकि सब संपूर्ण पथ होना चाहिए | उदाहरण: '/events/search'"
-
-#: models.py:11
-msgid "redirect to"
-msgstr "को अनुप्रेषित"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"यह या तो एक संपूर्ण पथ (जैसा ऊपर निर्दिष्ट किया हैं ) हो सकता है या 'http://' के साथ "
-"शुरू होनेवाला पूर्ण URL हो सकता है."
-
-#: models.py:15
-msgid "redirect"
-msgstr "पुनः प्रेषित"
-
-#: models.py:16
-msgid "redirects"
-msgstr "पुनः प्रेषित"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/hr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/hr/LC_MESSAGES/django.mo
deleted file mode 100644
index 328941b..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/hr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/hr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/hr/LC_MESSAGES/django.po
deleted file mode 100644
index c1acabf..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/hr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/"
-"hr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hr\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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "preusmjeri od"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Ovo bi trebala biti apsolutna putanja, bez imena domene. Primjer: '/events/"
-"search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "preusmjeri na"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Ovo može biti ili apsolutna putanja (kao gore) ili potpuni URL koji počinje "
-"sa 'http://'"
-
-#: models.py:15
-msgid "redirect"
-msgstr "preusmjeri"
-
-#: models.py:16
-msgid "redirects"
-msgstr "preusmjeravanja"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/hu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/hu/LC_MESSAGES/django.mo
deleted file mode 100644
index b916851..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/hu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/hu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/hu/LC_MESSAGES/django.po
deleted file mode 100644
index 1c11193..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/hu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/"
-"language/hu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "átirányítva innen"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Ennek abszolút elérési útnak kell lennie, a tartománynév nélkül. Példa: '/"
-"events/search/'"
-
-#: models.py:11
-msgid "redirect to"
-msgstr "átirányítva ide"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Ennek vagy abszolút elérési útnak kell lennie (mint fentebb), vagy teljes "
-"URL-nek 'http://'-vel kezdve."
-
-#: models.py:15
-msgid "redirect"
-msgstr "átirányítás"
-
-#: models.py:16
-msgid "redirects"
-msgstr "átirányít"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/id/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/id/LC_MESSAGES/django.mo
deleted file mode 100644
index e2b3da2..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/id/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/id/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/id/LC_MESSAGES/django.po
deleted file mode 100644
index 30e2b69..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/id/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,49 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# rodin <romihardiyanto@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "pengalihan dari"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Harus berupa lokasi absolut, tanpa nama domain. Contoh: '/events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "pengalihan ke"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Dapat berupa lokasi absolut (seperti di atas) atau URL lengkap yang dimulai "
-"dengan 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "pengalihan"
-
-#: models.py:16
-msgid "redirects"
-msgstr "pengalihan"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/is/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/is/LC_MESSAGES/django.mo
deleted file mode 100644
index cc3bb3c..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/is/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/is/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/is/LC_MESSAGES/django.po
deleted file mode 100644
index 528ccac..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/is/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,48 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/"
-"language/is/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: is\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "vísun frá"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "Þetta þarf að vera full slóð án lénsins. Dæmi: '/events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "vísa á"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Þetta getur verið full slóð (eins og hér að ofan) eða veffang með 'http://' "
-"fremst."
-
-#: models.py:15
-msgid "redirect"
-msgstr "vísun"
-
-#: models.py:16
-msgid "redirects"
-msgstr "vísanir"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/it/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/it/LC_MESSAGES/django.mo
deleted file mode 100644
index f3bf0b8..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/it/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/it/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/it/LC_MESSAGES/django.po
deleted file mode 100644
index f36dd15..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/it/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "redirezione da"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Deve essere un percorso assoluto, senza nome di dominio. Esempio: '/events/"
-"search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "redirezione verso"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Può essere un percorso assoluto (come sopra) o una URL completa che inizia "
-"con 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "redirezione"
-
-#: models.py:16
-msgid "redirects"
-msgstr "redirezioni"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ja/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/ja/LC_MESSAGES/django.mo
deleted file mode 100644
index a6c760d..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ja/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ja/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/ja/LC_MESSAGES/django.po
deleted file mode 100644
index a5418a8..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ja/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/"
-"ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "リダイレクト元"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "'/events/search/' のように、ドメイン名を除いた絶対パスにします。 "
-
-#: models.py:11
-msgid "redirect to"
-msgstr "リダイレクト先"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "上記のような絶対パスか、 'http://' で始まる完全な URL にします。"
-
-#: models.py:15
-msgid "redirect"
-msgstr "リダイレクト"
-
-#: models.py:16
-msgid "redirects"
-msgstr "リダイレクト"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ka/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/ka/LC_MESSAGES/django.mo
deleted file mode 100644
index 0c91a56..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ka/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ka/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/ka/LC_MESSAGES/django.po
deleted file mode 100644
index 14d8ebe..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ka/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,49 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/"
-"ka/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ka\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "გადამისამართება გვერდიდან"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"უნდა იყოს აბსოლუტური გზა დომენის სახელის გარეშე. მაგალითი: '/events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "გადამისამართება გვერდზე"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"უნდა იყოს აბსოლუტური გზა (როგორც ზემოთ) ან სრული URL, რომელიც იწყება "
-"'http://' სტრიქონით."
-
-#: models.py:15
-msgid "redirect"
-msgstr "გადამისამართება"
-
-#: models.py:16
-msgid "redirects"
-msgstr "გადამისამართებები"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/kk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/kk/LC_MESSAGES/django.mo
deleted file mode 100644
index 73caf91..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/kk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/kk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/kk/LC_MESSAGES/django.po
deleted file mode 100644
index 0b32350..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/kk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,48 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# yun_man_ger <germanilyin@gmail.com>, 2011
-# Zhazira <zhazira.mt@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/"
-"kk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kk\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr " бағыттау (қайдан)"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "Бұл домен атаусыз абсолюттік жол болу керек. Мысал: '/events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "бағыттау (қайда)"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Бұл абсолюттік жол немесе 'http://'-мен басталатын толық URL бола алады."
-
-#: models.py:15
-msgid "redirect"
-msgstr "қайта бағыттау"
-
-#: models.py:16
-msgid "redirects"
-msgstr "қайта бағыттаулар"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/km/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/km/LC_MESSAGES/django.mo
deleted file mode 100644
index 4897a3d..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/km/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/km/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/km/LC_MESSAGES/django.po
deleted file mode 100644
index b58e2cf..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/km/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,48 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Khmer (http://www.transifex.com/projects/p/django/language/"
-"km/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: km\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "នាំចេញពី"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"គួរតែជាផ្លូវពេញ (absolute path) ហើយមិនបញ្ជូលឈ្មោះ ដមែន (domain name​)។​ឧទាហរណ៍ '/"
-"events/search/'។"
-
-#: models.py:11
-msgid "redirect to"
-msgstr "នាំចេញទៅ"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "អាចជាផ្លូវពេញ (absolute path) ឬក៏ URL ទាំងមូលដែលចាប់ផ្តើមជាមួយ 'http://'។"
-
-#: models.py:15
-msgid "redirect"
-msgstr "នាំចេញ"
-
-#: models.py:16
-msgid "redirects"
-msgstr "នាំចេញ"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/kn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/kn/LC_MESSAGES/django.mo
deleted file mode 100644
index 4bfcab4..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/kn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/kn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/kn/LC_MESSAGES/django.po
deleted file mode 100644
index 0c9323a..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/kn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,48 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/"
-"kn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kn\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "ಪುನರ್ನಿರ್ದೇಶನ ಇಲ್ಲಿಂದ->"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "ಇದು ಡೊಮೈನ್ ಹೊರತುಪಡಿಸಿದ ಸಂಪೂರ್ಣ ಪಥವಾಗಿರಬೇಕು ಉದಾ.'/events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "ಪುನರ್ನಿರ್ದೇಶನ ಇಲ್ಲಿಗೆ->"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"ಇದು ಮೇಲಿನಂತೆ ಸಂಪೂರ್ಣ ಪಥವಾದರೂ ಆಗಿರಬಹುದು ಅಥವಾ 'http://'ದಿಂದ ಆರಂಭವಾಗುವ ಸಂಪೂರ್ಣ "
-"URL ಆಗಿರಬಹುದು."
-
-#: models.py:15
-msgid "redirect"
-msgstr "ಪುನರ್ನಿರ್ದೇಶನ"
-
-#: models.py:16
-msgid "redirects"
-msgstr "ಪುನರ್ನಿರ್ದೇಶನ(ಗಳು)"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ko/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/ko/LC_MESSAGES/django.mo
deleted file mode 100644
index 42d1dd5..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ko/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ko/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/ko/LC_MESSAGES/django.po
deleted file mode 100644
index 0c21e8c..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ko/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/"
-"ko/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ko\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "에서 재전송"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "도메인명을 제외한 절대경로로 입력하세요. 예: '/events/search/'"
-
-#: models.py:11
-msgid "redirect to"
-msgstr "(으)로 재전송"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "절대경로와 URL('http://' 포함) 모두 가능합니다."
-
-#: models.py:15
-msgid "redirect"
-msgstr "재전송"
-
-#: models.py:16
-msgid "redirects"
-msgstr "재전송"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/lt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/lt/LC_MESSAGES/django.mo
deleted file mode 100644
index 2e5a43a..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/lt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/lt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/lt/LC_MESSAGES/django.po
deleted file mode 100644
index d7b9999..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/lt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/"
-"language/lt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lt\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
-"%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "nukreiptas (redirect) iš"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Turi būti absoliutus adresas neįtraukiant domaino. Pavyzdžiui: '/events/"
-"search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "nukreipti(redirect) į"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Gali būti absoliutus adresas (kaip viršuj) arba pilnas URL pradedant "
-"'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "nukreipti"
-
-#: models.py:16
-msgid "redirects"
-msgstr "nukreipia"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/lv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/lv/LC_MESSAGES/django.mo
deleted file mode 100644
index 5be12d6..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/lv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/lv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/lv/LC_MESSAGES/django.po
deleted file mode 100644
index 789f393..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/lv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/"
-"lv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lv\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "pārvirzīt(redirect) no"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Tam jābūt absolūtajam ceļam, atskaitot domēna vārdu. Piemēram: '/notikumi/"
-"meklet/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "pārvirzīt(redirect) uz"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Šis var būt vai nu absolūtais ceļš (kā augstāk) vai pilnais URL, kas sākas "
-"ar 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "pārvirzīt"
-
-#: models.py:16
-msgid "redirects"
-msgstr "pārvirzījumi"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/mk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/mk/LC_MESSAGES/django.mo
deleted file mode 100644
index 352f758..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/mk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/mk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/mk/LC_MESSAGES/django.po
deleted file mode 100644
index 7a05810..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/mk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/"
-"language/mk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mk\n"
-"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "пренасочи од"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Ова треба да биде апсолутна патека без името на домејнот. На пр. „/nastani/"
-"prebaraj/“."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "пренасочи кон"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Ова може да биде или апсолутна патека (како погоре) или цела адреса "
-"почувајќи со „http://“."
-
-#: models.py:15
-msgid "redirect"
-msgstr "пренасочување"
-
-#: models.py:16
-msgid "redirects"
-msgstr "пренасочувања"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ml/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/ml/LC_MESSAGES/django.mo
deleted file mode 100644
index f78a490..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ml/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ml/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/ml/LC_MESSAGES/django.po
deleted file mode 100644
index 032eb77..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ml/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/"
-"language/ml/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ml\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "പഴയ വിലാസം"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"ഇത് ഡൊമൈന്‍ നാമം ഉള്‍പ്പെടാത്ത ഒരു കേവലമാര്‍ഗം (വിലാസം) ആവണം. ഉദാ: '/events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "പുതിയ വിലാസം"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "ഇതൊരു കേവല മാര്‍ഗമോ 'http://' എന്നു തുടങ്ങുന്ന പൂര്‍ണ്ണ വിലാസമോ (URL) ആവാം"
-
-#: models.py:15
-msgid "redirect"
-msgstr "വിലാസമാറ്റം"
-
-#: models.py:16
-msgid "redirects"
-msgstr "വിലാസമാറ്റങ്ങള്‍"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/mn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/mn/LC_MESSAGES/django.mo
deleted file mode 100644
index cfabf25..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/mn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/mn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/mn/LC_MESSAGES/django.po
deleted file mode 100644
index 9ebf234..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/mn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/"
-"language/mn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "redirect хаанаас"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Энэ нь домэйн нэр агуулаагүй абсолют зам байх ёстой. Жишээ нь: '/events/"
-"search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "redirect хаашаа"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Энэ нь (дээрхийн нэгэн адил) абсолют зам юм уу 'http://' гэж эхэлсэн бүтэн "
-"URL байж болно. "
-
-#: models.py:15
-msgid "redirect"
-msgstr "redirect"
-
-#: models.py:16
-msgid "redirects"
-msgstr "redirect-ууд"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/nb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/nb/LC_MESSAGES/django.mo
deleted file mode 100644
index 6130229..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/nb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/nb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/nb/LC_MESSAGES/django.po
deleted file mode 100644
index 3bf600e..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/nb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sigurd Gartmann <sigurdga-transifex@sigurdga.no>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/"
-"language/nb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "omadresser fra"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Dette bør være en fullstendig sti uten domenenavn. Eksempel: «/hendelser/"
-"finn/»"
-
-#: models.py:11
-msgid "redirect to"
-msgstr "omadresser til"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Dette kan enten være en fullstendig sti (som over), eller en fullstendig "
-"nettadresse som starter med «http://»."
-
-#: models.py:15
-msgid "redirect"
-msgstr "omadressering"
-
-#: models.py:16
-msgid "redirects"
-msgstr "omadresseringer"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ne/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/ne/LC_MESSAGES/django.mo
deleted file mode 100644
index 35642d2..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ne/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ne/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/ne/LC_MESSAGES/django.po
deleted file mode 100644
index d190d24..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ne/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,48 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Paras Nath Chaudhary <opnchaudhary@gmail.com>, 2012
-# Sagar Chalise <chalisesagar@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/"
-"ne/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ne\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "बाटो फेर्ने फरम"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "यो डोमेन नाम छोडेर, पूर्ण बाटो हुनुपर्छ । उदाहरण : '/events/search'"
-
-#: models.py:11
-msgid "redirect to"
-msgstr "बाटो फेर्नेको लागि"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"यो कि (माथीको जस्तै )पूर्ण बाटो हुनुपर्छ वा 'http://' बाट सुरुभएको पुरा हुनुपर्छ । "
-
-#: models.py:15
-msgid "redirect"
-msgstr "बाटो फेर्ने"
-
-#: models.py:16
-msgid "redirects"
-msgstr "बाटो फेर्ने"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/nl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/nl/LC_MESSAGES/django.mo
deleted file mode 100644
index fb96636..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/nl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/nl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/nl/LC_MESSAGES/django.po
deleted file mode 100644
index 94a887d..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/nl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Dutch (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "omgeleid via"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Dit moet een absoluut pad zijn, zonder de domeinnaam. Bijvoorbeeld: '/events/"
-"search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "omleiden naar"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Dit kan een absoluut pad (zoals hierboven) zijn of een volledige URL "
-"beginnend met 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "omleiding"
-
-#: models.py:16
-msgid "redirects"
-msgstr "omleidingen"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/nn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/nn/LC_MESSAGES/django.mo
deleted file mode 100644
index 9f3d666..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/nn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/nn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/nn/LC_MESSAGES/django.po
deleted file mode 100644
index 5daa0af..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/nn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,49 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/"
-"language/nn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "omadresser frå"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Dette bør vere ein fullstendig sti utan domenenavn. Døme: '/hendingar/finn/"
-
-#: models.py:11
-msgid "redirect to"
-msgstr "omadresser til"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Dette kan enten vere ein fullstendig sti (som over), eller ei fullstendig "
-"nettadresse som startar med 'http://'"
-
-#: models.py:15
-msgid "redirect"
-msgstr "omadressering"
-
-#: models.py:16
-msgid "redirects"
-msgstr "omadresseringar"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/os/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/os/LC_MESSAGES/django.mo
deleted file mode 100644
index 08c5fba..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/os/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/os/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/os/LC_MESSAGES/django.po
deleted file mode 100644
index da819a5..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/os/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,49 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-09 05:34+0000\n"
-"Last-Translator: Soslan Khubulov <soslanx@gmail.com>\n"
-"Language-Team: Ossetic (http://www.transifex.com/projects/p/django/language/"
-"os/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: os\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "арвитӕны формӕ"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Ай хъуамӕ уа ӕнӕ домены ном абсолютон фӕт. Цӕвиддон: '/events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "арвитӕн ардӕм"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Ай гӕнӕн ис уа абсолютон фӕт (куыд уӕлийӕ) кӕнӕ 'http://'-йӕ байдайгӕ "
-"ӕнӕхъӕн URL."
-
-#: models.py:15
-msgid "redirect"
-msgstr "арвитӕн"
-
-#: models.py:16
-msgid "redirects"
-msgstr "арвитӕнтӕ"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/pa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/pa/LC_MESSAGES/django.mo
deleted file mode 100644
index 7cdf8aa..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/pa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/pa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/pa/LC_MESSAGES/django.po
deleted file mode 100644
index b36ee5a..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/pa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# A S Alam <apreet.alam@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-06-23 14:13+0000\n"
-"Last-Translator: A S Alam <apreet.alam@gmail.com>\n"
-"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/"
-"language/pa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pa\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "ਇਸ ਤੋਂ ਮੁੜ-ਡਾਇਰੈਕਟ"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-
-#: models.py:11
-msgid "redirect to"
-msgstr "ਇਸ ਵੱਲ ਡਾਇਰੈਕਟ"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-
-#: models.py:15
-msgid "redirect"
-msgstr "ਰੀ-ਡਾਇਰੈਕਟ"
-
-#: models.py:16
-msgid "redirects"
-msgstr "ਮੁੜ-ਡਾਇਰੈਕਟ"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/pl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/pl/LC_MESSAGES/django.mo
deleted file mode 100644
index 64fc9b1..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/pl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/pl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/pl/LC_MESSAGES/django.po
deleted file mode 100644
index ce8b1d1..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/pl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "przekieruj z"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "Podaj pełną ścieżkę bez nazwy domeny. Przykład: '/events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "przekierowanie do"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "Ścieżka jak wyżej lub pełny URL z http://"
-
-#: models.py:15
-msgid "redirect"
-msgstr "przekieruj"
-
-#: models.py:16
-msgid "redirects"
-msgstr "przekierowania"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/pt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/pt/LC_MESSAGES/django.mo
deleted file mode 100644
index 981a4cb..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/pt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/pt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/pt/LC_MESSAGES/django.po
deleted file mode 100644
index b0a662e..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/pt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nuno Mariz <nmariz@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-31 16:26+0000\n"
-"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
-"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "redirecionar de"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Isto deverá ser um caminho absoluto, excluindo o domínio. Exemplo: '/events/"
-"search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "redirecionar para"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Isto poderá ser um caminho absoluto (como acima) ou um URL completo começado "
-"por 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "redirecionar"
-
-#: models.py:16
-msgid "redirects"
-msgstr "redireciona"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.mo
deleted file mode 100644
index 8d66486..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.po
deleted file mode 100644
index ef4e27a..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/pt_BR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Guilherme Gondim <semente@taurinus.org>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-09-23 20:23+0000\n"
-"Last-Translator: Guilherme Gondim <semente@taurinus.org>\n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
-"django/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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "redirecionar de"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Isso deve ser um caminho absoluto, excluindo o nome de domínio. Exemplo: '/"
-"eventos/busca/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "redirecionar para"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Pode ser um caminho absoluto (como acima) ou uma URL completa, começando com "
-"'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "redirecionamento"
-
-#: models.py:16
-msgid "redirects"
-msgstr "redirecionamentos"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ro/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/ro/LC_MESSAGES/django.mo
deleted file mode 100644
index 81b83a6..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ro/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ro/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/ro/LC_MESSAGES/django.po
deleted file mode 100644
index 9afa305..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ro/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,52 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Daniel Ursache-Dogariu <contact@danniel.net>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/"
-"ro/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1));\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "redirecționat de la "
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Aceasta ar trebui să fie o cale absolută, excluzând numele de domeniu. "
-"Exemplu: '/evenimente/cautare/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "redirecționat către"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Aceasta poate fi o cale absolută (ca mai sus) sau un URL complet, începând "
-"cu 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "redirecționare"
-
-#: models.py:16
-msgid "redirects"
-msgstr "redirecționări"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ru/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/ru/LC_MESSAGES/django.mo
deleted file mode 100644
index 6c636a7..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ru/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ru/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/ru/LC_MESSAGES/django.po
deleted file mode 100644
index 31a2d86..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ru/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/"
-"ru/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "перенаправить с"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Это должен быть абсолютный путь без доменного имени. Пример: '/events/"
-"search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "перенаправить на"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Это должен быть либо абсолютный путь (как выше), либо полный URL, "
-"начинающийся с 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "перенаправление"
-
-#: models.py:16
-msgid "redirects"
-msgstr "перенаправления"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/sk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/sk/LC_MESSAGES/django.mo
deleted file mode 100644
index c05e97a..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/sk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/sk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/sk/LC_MESSAGES/django.po
deleted file mode 100644
index 9cafb50..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/sk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-06-16 12:48+0000\n"
-"Last-Translator: Marian Andre <marian@andre.sk>\n"
-"Language-Team: Slovak (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "presmerovať z"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Tu by sa mala použiť absolútna cesta bez názvu domény. Napríklad: '/events/"
-"search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "presmerovať na"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Toto môže byť buď absolútna cesta (ako vyššie) alebo úplné URL začínajúce na "
-"'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "presmerovanie"
-
-#: models.py:16
-msgid "redirects"
-msgstr "presmerovania"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/sl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/sl/LC_MESSAGES/django.mo
deleted file mode 100644
index a4d1d63..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/sl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/sl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/sl/LC_MESSAGES/django.po
deleted file mode 100644
index 2c011f1..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/sl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/"
-"language/sl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "preusmeri iz"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Pot mora biti navedena absolutno in brez imena domene. Primer: '/events/"
-"search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "preusmeri na"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Pot je lahko navedena absolutno (kot zgoraj) ali pa kot popoln naslov URL, "
-"začet z 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "preusmeri"
-
-#: models.py:16
-msgid "redirects"
-msgstr "preusmeritve"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/sq/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/sq/LC_MESSAGES/django.mo
deleted file mode 100644
index e2aa61a..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/sq/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/sq/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/sq/LC_MESSAGES/django.po
deleted file mode 100644
index 0a8c33e..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/sq/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Besnik <besnik@programeshqip.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/"
-"sq/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sq\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "ridrejtim prej"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Ky do të duhej të ishte shteg absolut, pa emrin e përkatësisë. Për shembull: "
-"'/ngjarje/kërkim/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "ridrejtim te"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Ky mund të jerë shteg absolut (si më sipër) ose URL e plotë që fillon me "
-"'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "ridrejtim"
-
-#: models.py:16
-msgid "redirects"
-msgstr "ridrejtime"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/sr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/sr/LC_MESSAGES/django.mo
deleted file mode 100644
index f3cee22..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/sr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/sr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/sr/LC_MESSAGES/django.po
deleted file mode 100644
index c119886..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/sr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/"
-"sr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr\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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "преусмерен са"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Ово мора бити апсолутна путања без имена домена. На пример: '/events/"
-"search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "преусмери ка"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Ово може бити или апсолутна путања (као горе) или пун URL који почиње са "
-"'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "преусмеравање"
-
-#: models.py:16
-msgid "redirects"
-msgstr "преусмеравања"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.mo
deleted file mode 100644
index 9702fb9..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.po
deleted file mode 100644
index d885d41..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/sr_Latn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/"
-"language/sr@latin/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr@latin\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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "preusmeren sa"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Ovo mora biti apsolutna putanja bez imena domena. Na primer: '/events/"
-"search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "preusmeri ka"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Ovo može biti ili apsolutna putanja (kao gore) ili pun URL koji počinje sa "
-"'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "preusmeravanje"
-
-#: models.py:16
-msgid "redirects"
-msgstr "preusmeravanja"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/sv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/sv/LC_MESSAGES/django.mo
deleted file mode 100644
index ecb6d56..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/sv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/sv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/sv/LC_MESSAGES/django.po
deleted file mode 100644
index f0fa0a8..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/sv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/"
-"sv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sv\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "omdirigera från"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Detta bör vara en absolut sökväg utan domännamnet. Exempel: '/handelser/"
-"sok/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "omdirigera till"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Detta kan vara antingen en absolut sökväg (som ovan) eller en fullständig "
-"URL som börjar med 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "omdirigera"
-
-#: models.py:16
-msgid "redirects"
-msgstr "omdirigeringar"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/sw/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/sw/LC_MESSAGES/django.mo
deleted file mode 100644
index f132763..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/sw/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/sw/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/sw/LC_MESSAGES/django.po
deleted file mode 100644
index 91e3f7b..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/sw/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,49 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# machaku <bmachaku@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-11-20 13:23+0000\n"
-"Last-Translator: machaku <bmachaku@gmail.com>\n"
-"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/"
-"sw/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sw\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "Imeelekezwa kutoka"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Hii inatakiwa kuwa kiungo kamili pasipo na jina la kikoa. Mfano:'/matukio/"
-"tafuta/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "elekeza kwenda"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Hii inaweza kuwa kiungo kamili (kama hapo juu) or URL kamili yenye 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "maelekezo upya"
-
-#: models.py:16
-msgid "redirects"
-msgstr "maelekezo upya"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ta/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/ta/LC_MESSAGES/django.mo
deleted file mode 100644
index 36b9ea5..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ta/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ta/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/ta/LC_MESSAGES/django.po
deleted file mode 100644
index e0bcf84..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ta/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/"
-"ta/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ta\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "லிருந்து திசைமாற்று"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"இது ஒரு முழுமையான பாதையாக இருக்கவேண்டும். இணையத்தளப்பெயராக இருக்கக்கூடாது. உதாரணம்:'/"
-"events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "திரும்ப அனுப்பு"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"இது முழுமையான பாதையாக (மேலே உள்ளது போல) அல்லது \"http\"//\" என தொடங்கும் வலை "
-"முகவரியாக இருக்கலாம்."
-
-#: models.py:15
-msgid "redirect"
-msgstr "திரும்ப அனுப்பு"
-
-#: models.py:16
-msgid "redirects"
-msgstr "திரும்ப அனுப்புகிறது. "
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/te/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/te/LC_MESSAGES/django.mo
deleted file mode 100644
index eea4e56..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/te/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/te/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/te/LC_MESSAGES/django.po
deleted file mode 100644
index ce282b0..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/te/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,45 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-10-15 10:57+0200\n"
-"PO-Revision-Date: 2012-02-14 13:40+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/"
-"te/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: te\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr ""
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-
-#: models.py:11
-msgid "redirect to"
-msgstr ""
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-
-#: models.py:15
-msgid "redirect"
-msgstr ""
-
-#: models.py:16
-msgid "redirects"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/th/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/th/LC_MESSAGES/django.mo
deleted file mode 100644
index 7d0bb86..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/th/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/th/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/th/LC_MESSAGES/django.po
deleted file mode 100644
index 026ca52..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/th/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/"
-"th/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: th\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "เปลี่ยนทิศทางจาก"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "พาธไม่รวมโดเมน ตัวอย่าง : '/events/search/'"
-
-#: models.py:11
-msgid "redirect to"
-msgstr "เปลี่ยนทิศทางไปที่"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "มันอาจจะเป็นพาธหรือ URL แบบเต็มที่ขึ้นต้นด้วย 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "เปลี่ยนทิศทาง"
-
-#: models.py:16
-msgid "redirects"
-msgstr "เปลี่ยนทิศทาง"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/tr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/tr/LC_MESSAGES/django.mo
deleted file mode 100644
index 9f4ecfb..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/tr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/tr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/tr/LC_MESSAGES/django.po
deleted file mode 100644
index 671d81a..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/tr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,50 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/"
-"tr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "eski adres"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Buraya tam dosya yolu, alan adı kullanılmadan yazılmalı. Örnek: '/events/"
-"search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "yeni adres"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Buraya tam dosya yolu (yukarıdaki gibi), ya da 'http://' ile başlayan tam "
-"adres yazılmalı."
-
-#: models.py:15
-msgid "redirect"
-msgstr "yönlendirme"
-
-#: models.py:16
-msgid "redirects"
-msgstr "yönlendirmeler"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/tt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/tt/LC_MESSAGES/django.mo
deleted file mode 100644
index 435c83f..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/tt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/tt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/tt/LC_MESSAGES/django.po
deleted file mode 100644
index e6bd532..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/tt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,49 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Azat Khasanshin <lordofbazuks@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/"
-"tt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tt\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "бу сәхифәдән юнәлтергә:"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Бу домен исеменнән тыш абсолүт юл булырга тиеш. Мәсәлән: '/events/search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "бу сәхифәгә юнәлтергә:"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Бу я абсолүт юл (өстәге кебек), я 'http://' белән башланган тулы URL булырга "
-"тиеш."
-
-#: models.py:15
-msgid "redirect"
-msgstr "юнәлтү"
-
-#: models.py:16
-msgid "redirects"
-msgstr "юнәлтүләр"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/uk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/uk/LC_MESSAGES/django.mo
deleted file mode 100644
index 1374c5a..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/uk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/uk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/uk/LC_MESSAGES/django.po
deleted file mode 100644
index 7ef7af4..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/uk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "перенаправлення з"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Це повинен бути абсолютний шлях, виключаючи ім'я домену. Приклад: '/events/"
-"search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "перенаправлення до"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Це може бути або абсолютний шлях (як вище), або повний URL, який починається "
-"з 'http://'."
-
-#: models.py:15
-msgid "redirect"
-msgstr "перенаправлення"
-
-#: models.py:16
-msgid "redirects"
-msgstr "перенаправлення"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ur/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/ur/LC_MESSAGES/django.mo
deleted file mode 100644
index 68cc439..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ur/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/ur/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/ur/LC_MESSAGES/django.po
deleted file mode 100644
index 841651a..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/ur/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,47 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/"
-"ur/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ur\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "سے ری ڈائریکٹ"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "یہ مطلق پاتھ ھونا چاھئے، بغیر ڈومین نام کے۔ مثلاً '/events/search/'"
-
-#: models.py:11
-msgid "redirect to"
-msgstr "ری ڈائریکٹ از طرف"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"یہ مطلق پاتھ ھو سکتا ھے (جیسے اوپر ھے) یا مکمل یو آر ایل (URL) بمع 'http://'۔"
-
-#: models.py:15
-msgid "redirect"
-msgstr "ری ڈائریکٹ"
-
-#: models.py:16
-msgid "redirects"
-msgstr "ری ڈائیکٹس"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/vi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/vi/LC_MESSAGES/django.mo
deleted file mode 100644
index fb56f42..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/vi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/vi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/vi/LC_MESSAGES/django.po
deleted file mode 100644
index bb838df..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/vi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,49 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/"
-"language/vi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "Chuyển hướng từ"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr ""
-"Đây phải là đường dẫn tuyệt đối, không bao gồm tên miền. Ví dụ: '/events/"
-"search/'."
-
-#: models.py:11
-msgid "redirect to"
-msgstr "Chuyển hướng tới"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr ""
-"Đây có thể là đường dẫn tuyệt đối hoặc địa chỉ đầy đủ bắt đầu với 'http://'"
-
-#: models.py:15
-msgid "redirect"
-msgstr "Chuyển hướng"
-
-#: models.py:16
-msgid "redirects"
-msgstr "Chuyển hướng"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/zh_CN/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/zh_CN/LC_MESSAGES/django.mo
deleted file mode 100644
index c6d6183..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/zh_CN/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/zh_CN/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/zh_CN/LC_MESSAGES/django.po
deleted file mode 100644
index 4dbbac9..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/zh_CN/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "重定向自"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "应该是一个绝对路径,不包括域名。例如:'/events/search/'。"
-
-#: models.py:11
-msgid "redirect to"
-msgstr "重定向到"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "可以是绝对路径(同上)或以'http://'起始的全URL。"
-
-#: models.py:15
-msgid "redirect"
-msgstr "重定向"
-
-#: models.py:16
-msgid "redirects"
-msgstr "重定向"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/zh_TW/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/redirects/locale/zh_TW/LC_MESSAGES/django.mo
deleted file mode 100644
index aa92a7d..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/zh_TW/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/locale/zh_TW/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/redirects/locale/zh_TW/LC_MESSAGES/django.po
deleted file mode 100644
index 9ae6be8..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/locale/zh_TW/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,46 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:27+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/"
-"language/zh_TW/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_TW\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:9
-msgid "redirect from"
-msgstr "重導向自"
-
-#: models.py:10
-msgid ""
-"This should be an absolute path, excluding the domain name. Example: '/"
-"events/search/'."
-msgstr "應該是一個絕對路徑,不包括網域。例如:'/events/search/'。"
-
-#: models.py:11
-msgid "redirect to"
-msgstr "重導向到"
-
-#: models.py:12
-msgid ""
-"This can be either an absolute path (as above) or a full URL starting with "
-"'http://'."
-msgstr "此可為一絕對路徑 (如上) 或一個以 'http://' 開頭的完整 URL。"
-
-#: models.py:15
-msgid "redirect"
-msgstr "重導向"
-
-#: models.py:16
-msgid "redirects"
-msgstr "重導向"
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/middleware.py b/lib/python2.7/site-packages/django/contrib/redirects/middleware.py
deleted file mode 100644
index 03c9d97..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/middleware.py
+++ /dev/null
@@ -1,44 +0,0 @@
-from __future__ import unicode_literals
-
-from django.conf import settings
-from django.contrib.redirects.models import Redirect
-from django.contrib.sites.models import get_current_site
-from django.core.exceptions import ImproperlyConfigured
-from django import http
-
-
-class RedirectFallbackMiddleware(object):
- def __init__(self):
- if 'django.contrib.sites' not in settings.INSTALLED_APPS:
- raise ImproperlyConfigured(
- "You cannot use RedirectFallbackMiddleware when "
- "django.contrib.sites is not installed."
- )
-
- def process_response(self, request, response):
- if response.status_code != 404:
- return response # No need to check for a redirect for non-404 responses.
-
- full_path = request.get_full_path()
- current_site = get_current_site(request)
-
- r = None
- try:
- r = Redirect.objects.get(site=current_site, old_path=full_path)
- except Redirect.DoesNotExist:
- pass
- if settings.APPEND_SLASH and not request.path.endswith('/'):
- # Try appending a trailing slash.
- path_len = len(request.path)
- full_path = full_path[:path_len] + '/' + full_path[path_len:]
- try:
- r = Redirect.objects.get(site=current_site, old_path=full_path)
- except Redirect.DoesNotExist:
- pass
- if r is not None:
- if r.new_path == '':
- return http.HttpResponseGone()
- return http.HttpResponsePermanentRedirect(r.new_path)
-
- # No redirect was found. Return the response.
- return response
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/models.py b/lib/python2.7/site-packages/django/contrib/redirects/models.py
deleted file mode 100644
index a0376b5..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/models.py
+++ /dev/null
@@ -1,22 +0,0 @@
-from django.db import models
-from django.contrib.sites.models import Site
-from django.utils.translation import ugettext_lazy as _
-from django.utils.encoding import python_2_unicode_compatible
-
-@python_2_unicode_compatible
-class Redirect(models.Model):
- site = models.ForeignKey(Site)
- old_path = models.CharField(_('redirect from'), max_length=200, db_index=True,
- help_text=_("This should be an absolute path, excluding the domain name. Example: '/events/search/'."))
- new_path = models.CharField(_('redirect to'), max_length=200, blank=True,
- help_text=_("This can be either an absolute path (as above) or a full URL starting with 'http://'."))
-
- class Meta:
- verbose_name = _('redirect')
- verbose_name_plural = _('redirects')
- db_table = 'django_redirect'
- unique_together=(('site', 'old_path'),)
- ordering = ('old_path',)
-
- def __str__(self):
- return "%s ---> %s" % (self.old_path, self.new_path)
diff --git a/lib/python2.7/site-packages/django/contrib/redirects/tests.py b/lib/python2.7/site-packages/django/contrib/redirects/tests.py
deleted file mode 100644
index bdcdf4a..0000000
--- a/lib/python2.7/site-packages/django/contrib/redirects/tests.py
+++ /dev/null
@@ -1,63 +0,0 @@
-from django.conf import settings
-from django.contrib.sites.models import Site
-from django.core.exceptions import ImproperlyConfigured
-from django.test import TestCase
-from django.test.utils import override_settings
-from django.utils import six
-
-from .middleware import RedirectFallbackMiddleware
-from .models import Redirect
-
-
-@override_settings(
- APPEND_SLASH=False,
- MIDDLEWARE_CLASSES=list(settings.MIDDLEWARE_CLASSES) +
- ['django.contrib.redirects.middleware.RedirectFallbackMiddleware'],
- SITE_ID=1,
-)
-class RedirectTests(TestCase):
-
- def setUp(self):
- self.site = Site.objects.get(pk=settings.SITE_ID)
-
- def test_model(self):
- r1 = Redirect.objects.create(
- site=self.site, old_path='/initial', new_path='/new_target')
- self.assertEqual(six.text_type(r1), "/initial ---> /new_target")
-
- def test_redirect(self):
- Redirect.objects.create(
- site=self.site, old_path='/initial', new_path='/new_target')
- response = self.client.get('/initial')
- self.assertRedirects(response,
- '/new_target', status_code=301, target_status_code=404)
-
- @override_settings(APPEND_SLASH=True)
- def test_redirect_with_append_slash(self):
- Redirect.objects.create(
- site=self.site, old_path='/initial/', new_path='/new_target/')
- response = self.client.get('/initial')
- self.assertRedirects(response,
- '/new_target/', status_code=301, target_status_code=404)
-
- @override_settings(APPEND_SLASH=True)
- def test_redirect_with_append_slash_and_query_string(self):
- Redirect.objects.create(
- site=self.site, old_path='/initial/?foo', new_path='/new_target/')
- response = self.client.get('/initial?foo')
- self.assertRedirects(response,
- '/new_target/', status_code=301, target_status_code=404)
-
- def test_response_gone(self):
- """When the redirect target is '', return a 410"""
- Redirect.objects.create(
- site=self.site, old_path='/initial', new_path='')
- response = self.client.get('/initial')
- self.assertEqual(response.status_code, 410)
-
- @override_settings(
- INSTALLED_APPS=[app for app in settings.INSTALLED_APPS
- if app != 'django.contrib.sites'])
- def test_sites_not_installed(self):
- with self.assertRaises(ImproperlyConfigured):
- RedirectFallbackMiddleware()
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/__init__.py b/lib/python2.7/site-packages/django/contrib/sessions/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/backends/__init__.py b/lib/python2.7/site-packages/django/contrib/sessions/backends/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/backends/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/backends/base.py b/lib/python2.7/site-packages/django/contrib/sessions/backends/base.py
deleted file mode 100644
index 7f5e958..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/backends/base.py
+++ /dev/null
@@ -1,327 +0,0 @@
-from __future__ import unicode_literals
-
-import base64
-from datetime import datetime, timedelta
-import logging
-import string
-
-from django.conf import settings
-from django.core.exceptions import SuspiciousOperation
-from django.utils.crypto import constant_time_compare
-from django.utils.crypto import get_random_string
-from django.utils.crypto import salted_hmac
-from django.utils import timezone
-from django.utils.encoding import force_bytes, force_text
-from django.utils.module_loading import import_by_path
-
-from django.contrib.sessions.exceptions import SuspiciousSession
-
-# session_key should not be case sensitive because some backends can store it
-# on case insensitive file systems.
-VALID_KEY_CHARS = string.ascii_lowercase + string.digits
-
-class CreateError(Exception):
- """
- Used internally as a consistent exception type to catch from save (see the
- docstring for SessionBase.save() for details).
- """
- pass
-
-class SessionBase(object):
- """
- Base class for all Session classes.
- """
- TEST_COOKIE_NAME = 'testcookie'
- TEST_COOKIE_VALUE = 'worked'
-
- def __init__(self, session_key=None):
- self._session_key = session_key
- self.accessed = False
- self.modified = False
- self.serializer = import_by_path(settings.SESSION_SERIALIZER)
-
- def __contains__(self, key):
- return key in self._session
-
- def __getitem__(self, key):
- return self._session[key]
-
- def __setitem__(self, key, value):
- self._session[key] = value
- self.modified = True
-
- def __delitem__(self, key):
- del self._session[key]
- self.modified = True
-
- def get(self, key, default=None):
- return self._session.get(key, default)
-
- def pop(self, key, *args):
- self.modified = self.modified or key in self._session
- return self._session.pop(key, *args)
-
- def setdefault(self, key, value):
- if key in self._session:
- return self._session[key]
- else:
- self.modified = True
- self._session[key] = value
- return value
-
- def set_test_cookie(self):
- self[self.TEST_COOKIE_NAME] = self.TEST_COOKIE_VALUE
-
- def test_cookie_worked(self):
- return self.get(self.TEST_COOKIE_NAME) == self.TEST_COOKIE_VALUE
-
- def delete_test_cookie(self):
- del self[self.TEST_COOKIE_NAME]
-
- def _hash(self, value):
- key_salt = "django.contrib.sessions" + self.__class__.__name__
- return salted_hmac(key_salt, value).hexdigest()
-
- def encode(self, session_dict):
- "Returns the given session dictionary serialized and encoded as a string."
- serialized = self.serializer().dumps(session_dict)
- hash = self._hash(serialized)
- return base64.b64encode(hash.encode() + b":" + serialized).decode('ascii')
-
- def decode(self, session_data):
- encoded_data = base64.b64decode(force_bytes(session_data))
- try:
- # could produce ValueError if there is no ':'
- hash, serialized = encoded_data.split(b':', 1)
- expected_hash = self._hash(serialized)
- if not constant_time_compare(hash.decode(), expected_hash):
- raise SuspiciousSession("Session data corrupted")
- else:
- return self.serializer().loads(serialized)
- except Exception as e:
- # ValueError, SuspiciousOperation, unpickling exceptions. If any of
- # these happen, just return an empty dictionary (an empty session).
- if isinstance(e, SuspiciousOperation):
- logger = logging.getLogger('django.security.%s' %
- e.__class__.__name__)
- logger.warning(force_text(e))
- return {}
-
- def update(self, dict_):
- self._session.update(dict_)
- self.modified = True
-
- def has_key(self, key):
- return key in self._session
-
- def keys(self):
- return self._session.keys()
-
- def values(self):
- return self._session.values()
-
- def items(self):
- return self._session.items()
-
- def iterkeys(self):
- return self._session.iterkeys()
-
- def itervalues(self):
- return self._session.itervalues()
-
- def iteritems(self):
- return self._session.iteritems()
-
- def clear(self):
- # To avoid unnecessary persistent storage accesses, we set up the
- # internals directly (loading data wastes time, since we are going to
- # set it to an empty dict anyway).
- self._session_cache = {}
- self.accessed = True
- self.modified = True
-
- def _get_new_session_key(self):
- "Returns session key that isn't being used."
- while True:
- session_key = get_random_string(32, VALID_KEY_CHARS)
- if not self.exists(session_key):
- break
- return session_key
-
- def _get_or_create_session_key(self):
- if self._session_key is None:
- self._session_key = self._get_new_session_key()
- return self._session_key
-
- def _get_session_key(self):
- return self._session_key
-
- session_key = property(_get_session_key)
-
- def _get_session(self, no_load=False):
- """
- Lazily loads session from storage (unless "no_load" is True, when only
- an empty dict is stored) and stores it in the current instance.
- """
- self.accessed = True
- try:
- return self._session_cache
- except AttributeError:
- if self.session_key is None or no_load:
- self._session_cache = {}
- else:
- self._session_cache = self.load()
- return self._session_cache
-
- _session = property(_get_session)
-
- def get_expiry_age(self, **kwargs):
- """Get the number of seconds until the session expires.
-
- Optionally, this function accepts `modification` and `expiry` keyword
- arguments specifying the modification and expiry of the session.
- """
- try:
- modification = kwargs['modification']
- except KeyError:
- modification = timezone.now()
- # Make the difference between "expiry=None passed in kwargs" and
- # "expiry not passed in kwargs", in order to guarantee not to trigger
- # self.load() when expiry is provided.
- try:
- expiry = kwargs['expiry']
- except KeyError:
- expiry = self.get('_session_expiry')
-
- if not expiry: # Checks both None and 0 cases
- return settings.SESSION_COOKIE_AGE
- if not isinstance(expiry, datetime):
- return expiry
- delta = expiry - modification
- return delta.days * 86400 + delta.seconds
-
- def get_expiry_date(self, **kwargs):
- """Get session the expiry date (as a datetime object).
-
- Optionally, this function accepts `modification` and `expiry` keyword
- arguments specifying the modification and expiry of the session.
- """
- try:
- modification = kwargs['modification']
- except KeyError:
- modification = timezone.now()
- # Same comment as in get_expiry_age
- try:
- expiry = kwargs['expiry']
- except KeyError:
- expiry = self.get('_session_expiry')
-
- if isinstance(expiry, datetime):
- return expiry
- if not expiry: # Checks both None and 0 cases
- expiry = settings.SESSION_COOKIE_AGE
- return modification + timedelta(seconds=expiry)
-
- def set_expiry(self, value):
- """
- Sets a custom expiration for the session. ``value`` can be an integer,
- a Python ``datetime`` or ``timedelta`` object or ``None``.
-
- If ``value`` is an integer, the session will expire after that many
- seconds of inactivity. If set to ``0`` then the session will expire on
- browser close.
-
- If ``value`` is a ``datetime`` or ``timedelta`` object, the session
- will expire at that specific future time.
-
- If ``value`` is ``None``, the session uses the global session expiry
- policy.
- """
- if value is None:
- # Remove any custom expiration for this session.
- try:
- del self['_session_expiry']
- except KeyError:
- pass
- return
- if isinstance(value, timedelta):
- value = timezone.now() + value
- self['_session_expiry'] = value
-
- def get_expire_at_browser_close(self):
- """
- Returns ``True`` if the session is set to expire when the browser
- closes, and ``False`` if there's an expiry date. Use
- ``get_expiry_date()`` or ``get_expiry_age()`` to find the actual expiry
- date/age, if there is one.
- """
- if self.get('_session_expiry') is None:
- return settings.SESSION_EXPIRE_AT_BROWSER_CLOSE
- return self.get('_session_expiry') == 0
-
- def flush(self):
- """
- Removes the current session data from the database and regenerates the
- key.
- """
- self.clear()
- self.delete()
- self.create()
-
- def cycle_key(self):
- """
- Creates a new session key, whilst retaining the current session data.
- """
- data = self._session_cache
- key = self.session_key
- self.create()
- self._session_cache = data
- self.delete(key)
-
- # Methods that child classes must implement.
-
- def exists(self, session_key):
- """
- Returns True if the given session_key already exists.
- """
- raise NotImplementedError
-
- def create(self):
- """
- Creates a new session instance. Guaranteed to create a new object with
- a unique key and will have saved the result once (with empty data)
- before the method returns.
- """
- raise NotImplementedError
-
- def save(self, must_create=False):
- """
- Saves the session data. If 'must_create' is True, a new session object
- is created (otherwise a CreateError exception is raised). Otherwise,
- save() can update an existing object with the same key.
- """
- raise NotImplementedError
-
- def delete(self, session_key=None):
- """
- Deletes the session data under this key. If the key is None, the
- current session key value is used.
- """
- raise NotImplementedError
-
- def load(self):
- """
- Loads the session data and returns a dictionary.
- """
- raise NotImplementedError
-
- @classmethod
- def clear_expired(cls):
- """
- Remove expired sessions from the session store.
-
- If this operation isn't possible on a given backend, it should raise
- NotImplementedError. If it isn't necessary, because the backend has
- a built-in expiration mechanism, it should be a no-op.
- """
- raise NotImplementedError
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/backends/cache.py b/lib/python2.7/site-packages/django/contrib/sessions/backends/cache.py
deleted file mode 100644
index 596042f..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/backends/cache.py
+++ /dev/null
@@ -1,74 +0,0 @@
-from django.conf import settings
-from django.contrib.sessions.backends.base import SessionBase, CreateError
-from django.core.cache import get_cache
-from django.utils.six.moves import xrange
-
-KEY_PREFIX = "django.contrib.sessions.cache"
-
-
-class SessionStore(SessionBase):
- """
- A cache-based session store.
- """
- def __init__(self, session_key=None):
- self._cache = get_cache(settings.SESSION_CACHE_ALIAS)
- super(SessionStore, self).__init__(session_key)
-
- @property
- def cache_key(self):
- return KEY_PREFIX + self._get_or_create_session_key()
-
- def load(self):
- try:
- session_data = self._cache.get(self.cache_key, None)
- except Exception:
- # Some backends (e.g. memcache) raise an exception on invalid
- # cache keys. If this happens, reset the session. See #17810.
- session_data = None
- if session_data is not None:
- return session_data
- self.create()
- return {}
-
- def create(self):
- # Because a cache can fail silently (e.g. memcache), we don't know if
- # we are failing to create a new session because of a key collision or
- # because the cache is missing. So we try for a (large) number of times
- # and then raise an exception. That's the risk you shoulder if using
- # cache backing.
- for i in xrange(10000):
- self._session_key = self._get_new_session_key()
- try:
- self.save(must_create=True)
- except CreateError:
- continue
- self.modified = True
- return
- raise RuntimeError(
- "Unable to create a new session key. "
- "It is likely that the cache is unavailable.")
-
- def save(self, must_create=False):
- if must_create:
- func = self._cache.add
- else:
- func = self._cache.set
- result = func(self.cache_key,
- self._get_session(no_load=must_create),
- self.get_expiry_age())
- if must_create and not result:
- raise CreateError
-
- def exists(self, session_key):
- return (KEY_PREFIX + session_key) in self._cache
-
- def delete(self, session_key=None):
- if session_key is None:
- if self.session_key is None:
- return
- session_key = self.session_key
- self._cache.delete(KEY_PREFIX + session_key)
-
- @classmethod
- def clear_expired(cls):
- pass
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/backends/cached_db.py b/lib/python2.7/site-packages/django/contrib/sessions/backends/cached_db.py
deleted file mode 100644
index be22c1f..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/backends/cached_db.py
+++ /dev/null
@@ -1,84 +0,0 @@
-"""
-Cached, database-backed sessions.
-"""
-
-import logging
-
-from django.contrib.sessions.backends.db import SessionStore as DBStore
-from django.core.cache import cache
-from django.core.exceptions import SuspiciousOperation
-from django.utils import timezone
-from django.utils.encoding import force_text
-
-KEY_PREFIX = "django.contrib.sessions.cached_db"
-
-
-class SessionStore(DBStore):
- """
- Implements cached, database backed sessions.
- """
-
- def __init__(self, session_key=None):
- super(SessionStore, self).__init__(session_key)
-
- @property
- def cache_key(self):
- return KEY_PREFIX + self._get_or_create_session_key()
-
- def load(self):
- try:
- data = cache.get(self.cache_key, None)
- except Exception:
- # Some backends (e.g. memcache) raise an exception on invalid
- # cache keys. If this happens, reset the session. See #17810.
- data = None
-
- if data is None:
- # Duplicate DBStore.load, because we need to keep track
- # of the expiry date to set it properly in the cache.
- try:
- s = Session.objects.get(
- session_key=self.session_key,
- expire_date__gt=timezone.now()
- )
- data = self.decode(s.session_data)
- cache.set(self.cache_key, data,
- self.get_expiry_age(expiry=s.expire_date))
- except (Session.DoesNotExist, SuspiciousOperation) as e:
- if isinstance(e, SuspiciousOperation):
- logger = logging.getLogger('django.security.%s' %
- e.__class__.__name__)
- logger.warning(force_text(e))
- self.create()
- data = {}
- return data
-
- def exists(self, session_key):
- if (KEY_PREFIX + session_key) in cache:
- return True
- return super(SessionStore, self).exists(session_key)
-
- def save(self, must_create=False):
- super(SessionStore, self).save(must_create)
- cache.set(self.cache_key, self._session, self.get_expiry_age())
-
- def delete(self, session_key=None):
- super(SessionStore, self).delete(session_key)
- if session_key is None:
- if self.session_key is None:
- return
- session_key = self.session_key
- cache.delete(KEY_PREFIX + session_key)
-
- def flush(self):
- """
- Removes the current session data from the database and regenerates the
- key.
- """
- self.clear()
- self.delete(self.session_key)
- self.create()
-
-
-# At bottom to avoid circular import
-from django.contrib.sessions.models import Session
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/backends/db.py b/lib/python2.7/site-packages/django/contrib/sessions/backends/db.py
deleted file mode 100644
index 7be99c3..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/backends/db.py
+++ /dev/null
@@ -1,85 +0,0 @@
-import logging
-
-from django.contrib.sessions.backends.base import SessionBase, CreateError
-from django.core.exceptions import SuspiciousOperation
-from django.db import IntegrityError, transaction, router
-from django.utils import timezone
-from django.utils.encoding import force_text
-
-class SessionStore(SessionBase):
- """
- Implements database session store.
- """
- def __init__(self, session_key=None):
- super(SessionStore, self).__init__(session_key)
-
- def load(self):
- try:
- s = Session.objects.get(
- session_key=self.session_key,
- expire_date__gt=timezone.now()
- )
- return self.decode(s.session_data)
- except (Session.DoesNotExist, SuspiciousOperation) as e:
- if isinstance(e, SuspiciousOperation):
- logger = logging.getLogger('django.security.%s' %
- e.__class__.__name__)
- logger.warning(force_text(e))
- self.create()
- return {}
-
- def exists(self, session_key):
- return Session.objects.filter(session_key=session_key).exists()
-
- def create(self):
- while True:
- self._session_key = self._get_new_session_key()
- try:
- # Save immediately to ensure we have a unique entry in the
- # database.
- self.save(must_create=True)
- except CreateError:
- # Key wasn't unique. Try again.
- continue
- self.modified = True
- self._session_cache = {}
- return
-
- def save(self, must_create=False):
- """
- Saves the current session data to the database. If 'must_create' is
- True, a database error will be raised if the saving operation doesn't
- create a *new* entry (as opposed to possibly updating an existing
- entry).
- """
- obj = Session(
- session_key=self._get_or_create_session_key(),
- session_data=self.encode(self._get_session(no_load=must_create)),
- expire_date=self.get_expiry_date()
- )
- using = router.db_for_write(Session, instance=obj)
- try:
- with transaction.atomic(using=using):
- obj.save(force_insert=must_create, using=using)
- except IntegrityError:
- if must_create:
- raise CreateError
- raise
-
- def delete(self, session_key=None):
- if session_key is None:
- if self.session_key is None:
- return
- session_key = self.session_key
- try:
- Session.objects.get(session_key=session_key).delete()
- except Session.DoesNotExist:
- pass
-
- @classmethod
- def clear_expired(cls):
- Session.objects.filter(expire_date__lt=timezone.now()).delete()
-
-
-# At bottom to avoid circular import
-from django.contrib.sessions.models import Session
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/backends/file.py b/lib/python2.7/site-packages/django/contrib/sessions/backends/file.py
deleted file mode 100644
index f47aa2d..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/backends/file.py
+++ /dev/null
@@ -1,202 +0,0 @@
-import datetime
-import errno
-import logging
-import os
-import shutil
-import tempfile
-
-from django.conf import settings
-from django.contrib.sessions.backends.base import SessionBase, CreateError, VALID_KEY_CHARS
-from django.core.exceptions import SuspiciousOperation, ImproperlyConfigured
-from django.utils import timezone
-from django.utils.encoding import force_text
-
-from django.contrib.sessions.exceptions import InvalidSessionKey
-
-class SessionStore(SessionBase):
- """
- Implements a file based session store.
- """
- def __init__(self, session_key=None):
- self.storage_path = type(self)._get_storage_path()
- self.file_prefix = settings.SESSION_COOKIE_NAME
- super(SessionStore, self).__init__(session_key)
-
- @classmethod
- def _get_storage_path(cls):
- try:
- return cls._storage_path
- except AttributeError:
- storage_path = getattr(settings, "SESSION_FILE_PATH", None)
- if not storage_path:
- storage_path = tempfile.gettempdir()
-
- # Make sure the storage path is valid.
- if not os.path.isdir(storage_path):
- raise ImproperlyConfigured(
- "The session storage path %r doesn't exist. Please set your"
- " SESSION_FILE_PATH setting to an existing directory in which"
- " Django can store session data." % storage_path)
-
- cls._storage_path = storage_path
- return storage_path
-
- def _key_to_file(self, session_key=None):
- """
- Get the file associated with this session key.
- """
- if session_key is None:
- session_key = self._get_or_create_session_key()
-
- # Make sure we're not vulnerable to directory traversal. Session keys
- # should always be md5s, so they should never contain directory
- # components.
- if not set(session_key).issubset(set(VALID_KEY_CHARS)):
- raise InvalidSessionKey(
- "Invalid characters in session key")
-
- return os.path.join(self.storage_path, self.file_prefix + session_key)
-
- def _last_modification(self):
- """
- Return the modification time of the file storing the session's content.
- """
- modification = os.stat(self._key_to_file()).st_mtime
- if settings.USE_TZ:
- modification = datetime.datetime.utcfromtimestamp(modification)
- modification = modification.replace(tzinfo=timezone.utc)
- else:
- modification = datetime.datetime.fromtimestamp(modification)
- return modification
-
- def load(self):
- session_data = {}
- try:
- with open(self._key_to_file(), "rb") as session_file:
- file_data = session_file.read()
- # Don't fail if there is no data in the session file.
- # We may have opened the empty placeholder file.
- if file_data:
- try:
- session_data = self.decode(file_data)
- except (EOFError, SuspiciousOperation) as e:
- if isinstance(e, SuspiciousOperation):
- logger = logging.getLogger('django.security.%s' %
- e.__class__.__name__)
- logger.warning(force_text(e))
- self.create()
-
- # Remove expired sessions.
- expiry_age = self.get_expiry_age(
- modification=self._last_modification(),
- expiry=session_data.get('_session_expiry'))
- if expiry_age < 0:
- session_data = {}
- self.delete()
- self.create()
- except (IOError, SuspiciousOperation):
- self.create()
- return session_data
-
- def create(self):
- while True:
- self._session_key = self._get_new_session_key()
- try:
- self.save(must_create=True)
- except CreateError:
- continue
- self.modified = True
- self._session_cache = {}
- return
-
- def save(self, must_create=False):
- # Get the session data now, before we start messing
- # with the file it is stored within.
- session_data = self._get_session(no_load=must_create)
-
- session_file_name = self._key_to_file()
-
- try:
- # Make sure the file exists. If it does not already exist, an
- # empty placeholder file is created.
- flags = os.O_WRONLY | os.O_CREAT | getattr(os, 'O_BINARY', 0)
- if must_create:
- flags |= os.O_EXCL
- fd = os.open(session_file_name, flags)
- os.close(fd)
-
- except OSError as e:
- if must_create and e.errno == errno.EEXIST:
- raise CreateError
- raise
-
- # Write the session file without interfering with other threads
- # or processes. By writing to an atomically generated temporary
- # file and then using the atomic os.rename() to make the complete
- # file visible, we avoid having to lock the session file, while
- # still maintaining its integrity.
- #
- # Note: Locking the session file was explored, but rejected in part
- # because in order to be atomic and cross-platform, it required a
- # long-lived lock file for each session, doubling the number of
- # files in the session storage directory at any given time. This
- # rename solution is cleaner and avoids any additional overhead
- # when reading the session data, which is the more common case
- # unless SESSION_SAVE_EVERY_REQUEST = True.
- #
- # See ticket #8616.
- dir, prefix = os.path.split(session_file_name)
-
- try:
- output_file_fd, output_file_name = tempfile.mkstemp(dir=dir,
- prefix=prefix + '_out_')
- renamed = False
- try:
- try:
- os.write(output_file_fd, self.encode(session_data).encode())
- finally:
- os.close(output_file_fd)
-
- # This will atomically rename the file (os.rename) if the OS
- # supports it. Otherwise this will result in a shutil.copy2
- # and os.unlink (for example on Windows). See #9084.
- shutil.move(output_file_name, session_file_name)
- renamed = True
- finally:
- if not renamed:
- os.unlink(output_file_name)
-
- except (OSError, IOError, EOFError):
- pass
-
- def exists(self, session_key):
- return os.path.exists(self._key_to_file(session_key))
-
- def delete(self, session_key=None):
- if session_key is None:
- if self.session_key is None:
- return
- session_key = self.session_key
- try:
- os.unlink(self._key_to_file(session_key))
- except OSError:
- pass
-
- def clean(self):
- pass
-
- @classmethod
- def clear_expired(cls):
- storage_path = cls._get_storage_path()
- file_prefix = settings.SESSION_COOKIE_NAME
-
- for session_file in os.listdir(storage_path):
- if not session_file.startswith(file_prefix):
- continue
- session_key = session_file[len(file_prefix):]
- session = cls(session_key)
- # When an expired session is loaded, its file is removed, and a
- # new file is immediately created. Prevent this by disabling
- # the create() method.
- session.create = lambda: None
- session.load()
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/backends/signed_cookies.py b/lib/python2.7/site-packages/django/contrib/sessions/backends/signed_cookies.py
deleted file mode 100644
index 77a6750..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/backends/signed_cookies.py
+++ /dev/null
@@ -1,81 +0,0 @@
-from django.conf import settings
-from django.core import signing
-
-from django.contrib.sessions.backends.base import SessionBase
-
-
-class SessionStore(SessionBase):
-
- def load(self):
- """
- We load the data from the key itself instead of fetching from
- some external data store. Opposite of _get_session_key(),
- raises BadSignature if signature fails.
- """
- try:
- return signing.loads(self.session_key,
- serializer=self.serializer,
- # This doesn't handle non-default expiry dates, see #19201
- max_age=settings.SESSION_COOKIE_AGE,
- salt='django.contrib.sessions.backends.signed_cookies')
- except (signing.BadSignature, ValueError):
- self.create()
- return {}
-
- def create(self):
- """
- To create a new key, we simply make sure that the modified flag is set
- so that the cookie is set on the client for the current request.
- """
- self.modified = True
-
- def save(self, must_create=False):
- """
- To save, we get the session key as a securely signed string and then
- set the modified flag so that the cookie is set on the client for the
- current request.
- """
- self._session_key = self._get_session_key()
- self.modified = True
-
- def exists(self, session_key=None):
- """
- This method makes sense when you're talking to a shared resource, but
- it doesn't matter when you're storing the information in the client's
- cookie.
- """
- return False
-
- def delete(self, session_key=None):
- """
- To delete, we clear the session key and the underlying data structure
- and set the modified flag so that the cookie is set on the client for
- the current request.
- """
- self._session_key = ''
- self._session_cache = {}
- self.modified = True
-
- def cycle_key(self):
- """
- Keeps the same data but with a new key. To do this, we just have to
- call ``save()`` and it will automatically save a cookie with a new key
- at the end of the request.
- """
- self.save()
-
- def _get_session_key(self):
- """
- Most session backends don't need to override this method, but we do,
- because instead of generating a random string, we want to actually
- generate a secure url-safe Base64-encoded string of data as our
- session key.
- """
- session_cache = getattr(self, '_session_cache', {})
- return signing.dumps(session_cache, compress=True,
- salt='django.contrib.sessions.backends.signed_cookies',
- serializer=self.serializer)
-
- @classmethod
- def clear_expired(cls):
- pass
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/exceptions.py b/lib/python2.7/site-packages/django/contrib/sessions/exceptions.py
deleted file mode 100644
index 4f4dc6b..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/exceptions.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from django.core.exceptions import SuspiciousOperation
-
-
-class InvalidSessionKey(SuspiciousOperation):
- """Invalid characters in session key"""
- pass
-
-
-class SuspiciousSession(SuspiciousOperation):
- """The session may be tampered with"""
- pass
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ar/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ar/LC_MESSAGES/django.mo
deleted file mode 100644
index 7c38bd1..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ar/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ar/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ar/LC_MESSAGES/django.po
deleted file mode 100644
index 3cec536..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ar/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/"
-"ar/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "مفتاح الجلسة"
-
-#: models.py:40
-msgid "session data"
-msgstr "بيانات الجلسة"
-
-#: models.py:41
-msgid "expire date"
-msgstr "تاريخ الانتهاء"
-
-#: models.py:46
-msgid "session"
-msgstr "جلسة"
-
-#: models.py:47
-msgid "sessions"
-msgstr "جلسات"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/az/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/az/LC_MESSAGES/django.mo
deleted file mode 100644
index cf39085..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/az/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/az/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/az/LC_MESSAGES/django.po
deleted file mode 100644
index 708f70a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/az/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Ismayilov <ali@ismailov.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/"
-"language/az/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: az\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "seans açarı"
-
-#: models.py:40
-msgid "session data"
-msgstr "seansın verilənləri"
-
-#: models.py:41
-msgid "expire date"
-msgstr "bitmə tarixi"
-
-#: models.py:46
-msgid "session"
-msgstr "seans"
-
-#: models.py:47
-msgid "sessions"
-msgstr "seanslar"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/be/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/be/LC_MESSAGES/django.mo
deleted file mode 100644
index 509d895..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/be/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/be/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/be/LC_MESSAGES/django.po
deleted file mode 100644
index 10d26ce..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/be/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/"
-"language/be/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: be\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "ключ сэансу"
-
-#: models.py:40
-msgid "session data"
-msgstr "зьвесткі сэансу"
-
-#: models.py:41
-msgid "expire date"
-msgstr "тэрмін"
-
-#: models.py:46
-msgid "session"
-msgstr "сэсія"
-
-#: models.py:47
-msgid "sessions"
-msgstr "сэсіі"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/bg/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/bg/LC_MESSAGES/django.mo
deleted file mode 100644
index 344176c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/bg/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/bg/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/bg/LC_MESSAGES/django.po
deleted file mode 100644
index b813072..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/bg/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/"
-"language/bg/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bg\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "ключ на сесията"
-
-#: models.py:40
-msgid "session data"
-msgstr "данни от сесията"
-
-#: models.py:41
-msgid "expire date"
-msgstr "дата на валидност"
-
-#: models.py:46
-msgid "session"
-msgstr "сесия"
-
-#: models.py:47
-msgid "sessions"
-msgstr "сесии"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/bn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/bn/LC_MESSAGES/django.mo
deleted file mode 100644
index 3c17f51..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/bn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/bn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/bn/LC_MESSAGES/django.po
deleted file mode 100644
index 03760cd..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/bn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/"
-"bn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "সেশন কি"
-
-#: models.py:40
-msgid "session data"
-msgstr "সেশন ডাটা"
-
-#: models.py:41
-msgid "expire date"
-msgstr "মেয়াদ শেষের তারিখ"
-
-#: models.py:46
-msgid "session"
-msgstr "সেশন"
-
-#: models.py:47
-msgid "sessions"
-msgstr "সেশনসমূহ"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/br/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/br/LC_MESSAGES/django.mo
deleted file mode 100644
index ee01384..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/br/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/br/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/br/LC_MESSAGES/django.po
deleted file mode 100644
index dd58d7c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/br/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Fulup <fulup.jakez@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/"
-"br/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: br\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr ""
-
-#: models.py:40
-msgid "session data"
-msgstr ""
-
-#: models.py:41
-msgid "expire date"
-msgstr ""
-
-#: models.py:46
-msgid "session"
-msgstr "dalc'h"
-
-#: models.py:47
-msgid "sessions"
-msgstr "dalc'hoù"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/bs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/bs/LC_MESSAGES/django.mo
deleted file mode 100644
index eb34716..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/bs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/bs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/bs/LC_MESSAGES/django.po
deleted file mode 100644
index 54c1773..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/bs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/"
-"bs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bs\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"
-
-#: models.py:38
-msgid "session key"
-msgstr "ključ sesije"
-
-#: models.py:40
-msgid "session data"
-msgstr "podaci sesije"
-
-#: models.py:41
-msgid "expire date"
-msgstr "datum isteka"
-
-#: models.py:46
-msgid "session"
-msgstr "sesija"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sesije"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ca/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ca/LC_MESSAGES/django.mo
deleted file mode 100644
index a9ac201..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ca/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ca/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ca/LC_MESSAGES/django.po
deleted file mode 100644
index 9d3c074..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ca/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Catalan (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:38
-msgid "session key"
-msgstr "clau de la sessió"
-
-#: models.py:40
-msgid "session data"
-msgstr "dades de la sessió"
-
-#: models.py:41
-msgid "expire date"
-msgstr "data de caducitat"
-
-#: models.py:46
-msgid "session"
-msgstr "sessió"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sessions"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/cs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/cs/LC_MESSAGES/django.mo
deleted file mode 100644
index 63f055b..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/cs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/cs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/cs/LC_MESSAGES/django.po
deleted file mode 100644
index 6f658ba..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/cs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Czech (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:38
-msgid "session key"
-msgstr "klíč sezení"
-
-#: models.py:40
-msgid "session data"
-msgstr "data sezení"
-
-#: models.py:41
-msgid "expire date"
-msgstr "datum expirace"
-
-#: models.py:46
-msgid "session"
-msgstr "sezení"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sezení"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/cy/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/cy/LC_MESSAGES/django.mo
deleted file mode 100644
index 492bea5..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/cy/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/cy/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/cy/LC_MESSAGES/django.po
deleted file mode 100644
index 4c00d20..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/cy/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,40 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Maredudd ap Gwyndaf <maredudd@maredudd.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-12 20:30+0000\n"
-"Last-Translator: Maredudd ap Gwyndaf <maredudd@maredudd.com>\n"
-"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/"
-"cy/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cy\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
-"11) ? 2 : 3;\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "allwedd sesiwn"
-
-#: models.py:40
-msgid "session data"
-msgstr "data sesiwn"
-
-#: models.py:41
-msgid "expire date"
-msgstr "dyddiad terfyn"
-
-#: models.py:46
-msgid "session"
-msgstr "sesiwn"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sesiynau"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/da/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/da/LC_MESSAGES/django.mo
deleted file mode 100644
index c87df41..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/da/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/da/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/da/LC_MESSAGES/django.po
deleted file mode 100644
index d984409..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/da/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/"
-"da/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: da\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "sessionsnøgle"
-
-#: models.py:40
-msgid "session data"
-msgstr "sessionsdata"
-
-#: models.py:41
-msgid "expire date"
-msgstr "udløbsdato"
-
-#: models.py:46
-msgid "session"
-msgstr "session"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sessioner"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/de/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/de/LC_MESSAGES/django.mo
deleted file mode 100644
index 4389286..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/de/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/de/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/de/LC_MESSAGES/django.po
deleted file mode 100644
index 9053f64..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/de/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-06-14 15:04+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:38
-msgid "session key"
-msgstr "Sitzungs-ID"
-
-#: models.py:40
-msgid "session data"
-msgstr "Sitzungsdaten"
-
-#: models.py:41
-msgid "expire date"
-msgstr "Verfallsdatum"
-
-#: models.py:46
-msgid "session"
-msgstr "Sitzung"
-
-#: models.py:47
-msgid "sessions"
-msgstr "Sitzungen"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/el/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/el/LC_MESSAGES/django.mo
deleted file mode 100644
index a208689..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/el/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/el/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/el/LC_MESSAGES/django.po
deleted file mode 100644
index 71e78fc..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/el/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/"
-"el/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: el\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "κλειδί συνεδρίας"
-
-#: models.py:40
-msgid "session data"
-msgstr "δεδομένα συνεδρίας"
-
-#: models.py:41
-msgid "expire date"
-msgstr "ημερομηνία λήξης"
-
-#: models.py:46
-msgid "session"
-msgstr "συνεδρία"
-
-#: models.py:47
-msgid "sessions"
-msgstr "συνεδρίες"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/en/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/en/LC_MESSAGES/django.mo
deleted file mode 100644
index 08a7b68..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/en/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/en/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/en/LC_MESSAGES/django.po
deleted file mode 100644
index 247efec..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/en/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2010-05-13 15:35+0200\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: models.py:38
-msgid "session key"
-msgstr ""
-
-#: models.py:40
-msgid "session data"
-msgstr ""
-
-#: models.py:41
-msgid "expire date"
-msgstr ""
-
-#: models.py:46
-msgid "session"
-msgstr ""
-
-#: models.py:47
-msgid "sessions"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.mo
deleted file mode 100644
index 3d35f06..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.po
deleted file mode 100644
index 9da9b3e..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/en_GB/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ross Poulton <ross@rossp.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
-"django/language/en_GB/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: en_GB\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "session key"
-
-#: models.py:40
-msgid "session data"
-msgstr "session data"
-
-#: models.py:41
-msgid "expire date"
-msgstr "expire date"
-
-#: models.py:46
-msgid "session"
-msgstr "session"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sessions"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/eo/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/eo/LC_MESSAGES/django.mo
deleted file mode 100644
index 18b177f..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/eo/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/eo/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/eo/LC_MESSAGES/django.po
deleted file mode 100644
index 34dbd80..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/eo/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# kristjan <kristjan.schmidt@googlemail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/"
-"language/eo/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "seanco-ŝlosilo"
-
-#: models.py:40
-msgid "session data"
-msgstr "seanco-datumo"
-
-#: models.py:41
-msgid "expire date"
-msgstr "senvalidiĝ-dato"
-
-#: models.py:46
-msgid "session"
-msgstr "seanco"
-
-#: models.py:47
-msgid "sessions"
-msgstr "seancoj"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/es/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/es/LC_MESSAGES/django.mo
deleted file mode 100644
index 91017a2..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/es/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/es/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/es/LC_MESSAGES/django.po
deleted file mode 100644
index 994d688..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/es/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:38
-msgid "session key"
-msgstr "clave de sesión"
-
-#: models.py:40
-msgid "session data"
-msgstr "datos de sesión"
-
-#: models.py:41
-msgid "expire date"
-msgstr "fecha de caducidad"
-
-#: models.py:46
-msgid "session"
-msgstr "sesión"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sesiones"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.mo
deleted file mode 100644
index 50e01d8..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.po
deleted file mode 100644
index de44705..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/es_AR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
-"django/language/es_AR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_AR\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "clave de sesión"
-
-#: models.py:40
-msgid "session data"
-msgstr "datos de la sesión"
-
-#: models.py:41
-msgid "expire date"
-msgstr "fecha de caducidad"
-
-#: models.py:46
-msgid "session"
-msgstr "sesión"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sesiones"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.mo
deleted file mode 100644
index d5b9d14..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.po
deleted file mode 100644
index 573e553..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/es_MX/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Abraham Estrada <abraham.estrada@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/"
-"language/es_MX/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_MX\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "clave de sesión"
-
-#: models.py:40
-msgid "session data"
-msgstr "datos de la sesión"
-
-#: models.py:41
-msgid "expire date"
-msgstr "fecha de caducidad"
-
-#: models.py:46
-msgid "session"
-msgstr "período de sesiones"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sesiones"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/et/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/et/LC_MESSAGES/django.mo
deleted file mode 100644
index de11baf..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/et/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/et/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/et/LC_MESSAGES/django.po
deleted file mode 100644
index 9d86c93..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/et/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/"
-"et/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: et\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "sessioonivõti"
-
-#: models.py:40
-msgid "session data"
-msgstr "sessiooni andmed"
-
-#: models.py:41
-msgid "expire date"
-msgstr "kehtivusaja lõpp"
-
-#: models.py:46
-msgid "session"
-msgstr "sessioon"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sessioonid"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/eu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/eu/LC_MESSAGES/django.mo
deleted file mode 100644
index 0279c14..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/eu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/eu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/eu/LC_MESSAGES/django.po
deleted file mode 100644
index 5b6fdda..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/eu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/"
-"eu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "sesioaren giltza"
-
-#: models.py:40
-msgid "session data"
-msgstr "sesioaren data"
-
-#: models.py:41
-msgid "expire date"
-msgstr "amaiera data"
-
-#: models.py:46
-msgid "session"
-msgstr "sesioa"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sesioak"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/fa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/fa/LC_MESSAGES/django.mo
deleted file mode 100644
index ed81930..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/fa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/fa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/fa/LC_MESSAGES/django.po
deleted file mode 100644
index eedb717..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/fa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/"
-"fa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "کلید نشست"
-
-#: models.py:40
-msgid "session data"
-msgstr "اطلاعات نشست"
-
-#: models.py:41
-msgid "expire date"
-msgstr "تاریخ انقضاء"
-
-#: models.py:46
-msgid "session"
-msgstr "نشست"
-
-#: models.py:47
-msgid "sessions"
-msgstr "نشست‌ها"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/fi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/fi/LC_MESSAGES/django.mo
deleted file mode 100644
index e03f9ab..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/fi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/fi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/fi/LC_MESSAGES/django.po
deleted file mode 100644
index bb77893..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/fi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Finnish (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:38
-msgid "session key"
-msgstr "istunnon avain"
-
-#: models.py:40
-msgid "session data"
-msgstr "istunnon tiedot"
-
-#: models.py:41
-msgid "expire date"
-msgstr "vanhenee"
-
-#: models.py:46
-msgid "session"
-msgstr "istunto"
-
-#: models.py:47
-msgid "sessions"
-msgstr "istunnot"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/fr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/fr/LC_MESSAGES/django.mo
deleted file mode 100644
index 08659b3..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/fr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/fr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/fr/LC_MESSAGES/django.po
deleted file mode 100644
index 9a81404..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/fr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: French (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:38
-msgid "session key"
-msgstr "clé de session"
-
-#: models.py:40
-msgid "session data"
-msgstr "données de session"
-
-#: models.py:41
-msgid "expire date"
-msgstr "date d'expiration"
-
-#: models.py:46
-msgid "session"
-msgstr "session"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sessions"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.mo
deleted file mode 100644
index e65dfaf..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.po
deleted file mode 100644
index bdb9f3a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/fy_NL/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,35 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-23 02:43+0100\n"
-"PO-Revision-Date: 2011-03-15 15:45+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: fy_NL\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"
-
-#: models.py:38
-msgid "session key"
-msgstr ""
-
-#: models.py:40
-msgid "session data"
-msgstr ""
-
-#: models.py:41
-msgid "expire date"
-msgstr ""
-
-#: models.py:46
-msgid "session"
-msgstr ""
-
-#: models.py:47
-msgid "sessions"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ga/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ga/LC_MESSAGES/django.mo
deleted file mode 100644
index 5dc8b10..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ga/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ga/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ga/LC_MESSAGES/django.po
deleted file mode 100644
index 8176ce9..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ga/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/"
-"ga/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ga\n"
-"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
-"4);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "eochair an seisiún"
-
-#: models.py:40
-msgid "session data"
-msgstr "sonraíocht an seisiún"
-
-#: models.py:41
-msgid "expire date"
-msgstr "Data dul as feidhm"
-
-#: models.py:46
-msgid "session"
-msgstr "seisiún"
-
-#: models.py:47
-msgid "sessions"
-msgstr "seisúin"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/gl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/gl/LC_MESSAGES/django.mo
deleted file mode 100644
index 1d5d44a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/gl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/gl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/gl/LC_MESSAGES/django.po
deleted file mode 100644
index 20bcc16..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/gl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Leandro Regueiro <leandro.regueiro@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-09-07 11:26+0000\n"
-"Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
-"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/"
-"gl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "chave da sesión"
-
-#: models.py:40
-msgid "session data"
-msgstr "datos da sesión"
-
-#: models.py:41
-msgid "expire date"
-msgstr "data de caducidade"
-
-#: models.py:46
-msgid "session"
-msgstr "sesión"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sesións"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/he/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/he/LC_MESSAGES/django.mo
deleted file mode 100644
index 08947ae..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/he/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/he/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/he/LC_MESSAGES/django.po
deleted file mode 100644
index 3b90a8e..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/he/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:38
-msgid "session key"
-msgstr "מפתח התחברות (session key)"
-
-#: models.py:40
-msgid "session data"
-msgstr "מידע התחברות (session data)"
-
-#: models.py:41
-msgid "expire date"
-msgstr "תאריך פג תוקף"
-
-#: models.py:46
-msgid "session"
-msgstr "התחברות"
-
-#: models.py:47
-msgid "sessions"
-msgstr "התחברויות"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/hi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/hi/LC_MESSAGES/django.mo
deleted file mode 100644
index b860f5a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/hi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/hi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/hi/LC_MESSAGES/django.po
deleted file mode 100644
index d78c18d..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/hi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Sandeep Satavlekar <sandysat@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/"
-"hi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "सत्र कुंजी"
-
-#: models.py:40
-msgid "session data"
-msgstr "सत्र सामग्री"
-
-#: models.py:41
-msgid "expire date"
-msgstr "समाप्ति तिथी"
-
-#: models.py:46
-msgid "session"
-msgstr "सत्र"
-
-#: models.py:47
-msgid "sessions"
-msgstr "सत्रें"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/hr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/hr/LC_MESSAGES/django.mo
deleted file mode 100644
index 03c432d..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/hr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/hr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/hr/LC_MESSAGES/django.po
deleted file mode 100644
index ed70179..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/hr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/"
-"hr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hr\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"
-
-#: models.py:38
-msgid "session key"
-msgstr "session ključ (key)"
-
-#: models.py:40
-msgid "session data"
-msgstr "session podaci"
-
-#: models.py:41
-msgid "expire date"
-msgstr "ističe na datum"
-
-#: models.py:46
-msgid "session"
-msgstr "session"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sessions"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/hu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/hu/LC_MESSAGES/django.mo
deleted file mode 100644
index e91adad..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/hu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/hu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/hu/LC_MESSAGES/django.po
deleted file mode 100644
index d305166..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/hu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/"
-"language/hu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "munkamenet kulcs"
-
-#: models.py:40
-msgid "session data"
-msgstr "munkamenet adat"
-
-#: models.py:41
-msgid "expire date"
-msgstr "lejárat dátuma"
-
-#: models.py:46
-msgid "session"
-msgstr "munkamenet"
-
-#: models.py:47
-msgid "sessions"
-msgstr "munkamenetek"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/id/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/id/LC_MESSAGES/django.mo
deleted file mode 100644
index 1ab5640..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/id/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/id/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/id/LC_MESSAGES/django.po
deleted file mode 100644
index 5d1415b..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/id/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# rodin <romihardiyanto@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: models.py:38
-msgid "session key"
-msgstr "kunci sesi"
-
-#: models.py:40
-msgid "session data"
-msgstr "data sesi"
-
-#: models.py:41
-msgid "expire date"
-msgstr "tanggal kedaluwarsa"
-
-#: models.py:46
-msgid "session"
-msgstr "sesi"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sesi"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/is/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/is/LC_MESSAGES/django.mo
deleted file mode 100644
index cdfa89c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/is/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/is/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/is/LC_MESSAGES/django.po
deleted file mode 100644
index a1123c6..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/is/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/"
-"language/is/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: is\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "setulykill"
-
-#: models.py:40
-msgid "session data"
-msgstr "setugögn"
-
-#: models.py:41
-msgid "expire date"
-msgstr "fyrningardagsetning"
-
-#: models.py:46
-msgid "session"
-msgstr "seta"
-
-#: models.py:47
-msgid "sessions"
-msgstr "setur"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/it/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/it/LC_MESSAGES/django.mo
deleted file mode 100644
index a2d6aff..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/it/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/it/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/it/LC_MESSAGES/django.po
deleted file mode 100644
index 3e6d92a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/it/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:38
-msgid "session key"
-msgstr "chiave di sessione"
-
-#: models.py:40
-msgid "session data"
-msgstr "dati di sessione"
-
-#: models.py:41
-msgid "expire date"
-msgstr "data di scadenza"
-
-#: models.py:46
-msgid "session"
-msgstr "sessione"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sessioni"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ja/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ja/LC_MESSAGES/django.mo
deleted file mode 100644
index d348b54..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ja/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ja/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ja/LC_MESSAGES/django.po
deleted file mode 100644
index dcd0a59..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ja/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/"
-"ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "セッションキー"
-
-#: models.py:40
-msgid "session data"
-msgstr "セッションデータ"
-
-#: models.py:41
-msgid "expire date"
-msgstr "有効期限"
-
-#: models.py:46
-msgid "session"
-msgstr "セッション"
-
-#: models.py:47
-msgid "sessions"
-msgstr "セッション"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ka/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ka/LC_MESSAGES/django.mo
deleted file mode 100644
index dbe8483..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ka/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ka/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ka/LC_MESSAGES/django.po
deleted file mode 100644
index 2d3ea0d..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ka/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/"
-"ka/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ka\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "სესიის გასაღები"
-
-#: models.py:40
-msgid "session data"
-msgstr "სესიის მონაცემები"
-
-#: models.py:41
-msgid "expire date"
-msgstr "ამოწურვის თარიღი"
-
-#: models.py:46
-msgid "session"
-msgstr "სესია"
-
-#: models.py:47
-msgid "sessions"
-msgstr "სესიები"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/kk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/kk/LC_MESSAGES/django.mo
deleted file mode 100644
index 76fee80..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/kk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/kk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/kk/LC_MESSAGES/django.po
deleted file mode 100644
index b352559..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/kk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# yun_man_ger <germanilyin@gmail.com>, 2011
-# Zhazira <zhazira.mt@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/"
-"kk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kk\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "сессия кілті"
-
-#: models.py:40
-msgid "session data"
-msgstr "сессия деректері"
-
-#: models.py:41
-msgid "expire date"
-msgstr "істен шығу уақыты"
-
-#: models.py:46
-msgid "session"
-msgstr "сессия"
-
-#: models.py:47
-msgid "sessions"
-msgstr "сессиялар"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/km/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/km/LC_MESSAGES/django.mo
deleted file mode 100644
index e84bd60..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/km/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/km/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/km/LC_MESSAGES/django.po
deleted file mode 100644
index ac772ec..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/km/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Khmer (http://www.transifex.com/projects/p/django/language/"
-"km/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: km\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "លេខសំគាល់​រយះពេល​ពិនិត្យ​ចូល"
-
-#: models.py:40
-msgid "session data"
-msgstr "ទិន្នន័យរយះពេល​ពិនិត្យ​ចូល"
-
-#: models.py:41
-msgid "expire date"
-msgstr "ហួសពេលកំណត់"
-
-#: models.py:46
-msgid "session"
-msgstr "រយះពេល​ពិនិត្យ​ចូល"
-
-#: models.py:47
-msgid "sessions"
-msgstr "រយះពេល​ពិនិត្យ​ចូល"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/kn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/kn/LC_MESSAGES/django.mo
deleted file mode 100644
index c63cf3c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/kn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/kn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/kn/LC_MESSAGES/django.po
deleted file mode 100644
index 1ba6ac7..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/kn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/"
-"kn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kn\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "ಅಧಿವೇಶನದ ಕೀಲಿಕೈ"
-
-#: models.py:40
-msgid "session data"
-msgstr "ಅಧಿವೇಶನದ ದತ್ತಾಂಶ"
-
-#: models.py:41
-msgid "expire date"
-msgstr "ಅವಧಿಮೀರುವ ದಿನಾಂಕ"
-
-#: models.py:46
-msgid "session"
-msgstr "ಅಧಿವೇಶನ"
-
-#: models.py:47
-msgid "sessions"
-msgstr "ಅಧಿವೇಶನಗಳು"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ko/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ko/LC_MESSAGES/django.mo
deleted file mode 100644
index ca0a126..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ko/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ko/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ko/LC_MESSAGES/django.po
deleted file mode 100644
index 7f7486d..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ko/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/"
-"ko/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ko\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "세션 키"
-
-#: models.py:40
-msgid "session data"
-msgstr "세션 날짜"
-
-#: models.py:41
-msgid "expire date"
-msgstr "유효날짜"
-
-#: models.py:46
-msgid "session"
-msgstr "세션"
-
-#: models.py:47
-msgid "sessions"
-msgstr "세션"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/lt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/lt/LC_MESSAGES/django.mo
deleted file mode 100644
index 6510350..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/lt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/lt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/lt/LC_MESSAGES/django.po
deleted file mode 100644
index 2be20d7..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/lt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/"
-"language/lt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lt\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
-"%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "sesijos raktas"
-
-#: models.py:40
-msgid "session data"
-msgstr "sesijos data"
-
-#: models.py:41
-msgid "expire date"
-msgstr "galiojima data"
-
-#: models.py:46
-msgid "session"
-msgstr "sesija"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sesijos"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/lv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/lv/LC_MESSAGES/django.mo
deleted file mode 100644
index 94c6def..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/lv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/lv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/lv/LC_MESSAGES/django.po
deleted file mode 100644
index 8769b3f..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/lv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/"
-"lv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lv\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "sesijas atslēga"
-
-#: models.py:40
-msgid "session data"
-msgstr "sesijas dati"
-
-#: models.py:41
-msgid "expire date"
-msgstr "izbeigšanās datums"
-
-#: models.py:46
-msgid "session"
-msgstr "sesija"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sesijas"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/mk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/mk/LC_MESSAGES/django.mo
deleted file mode 100644
index 38a7b64..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/mk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/mk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/mk/LC_MESSAGES/django.po
deleted file mode 100644
index ec0b0ab..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/mk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/"
-"language/mk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mk\n"
-"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "клуч на сесијата"
-
-#: models.py:40
-msgid "session data"
-msgstr "податоци од сесијата"
-
-#: models.py:41
-msgid "expire date"
-msgstr "датум на истекување"
-
-#: models.py:46
-msgid "session"
-msgstr "сесија"
-
-#: models.py:47
-msgid "sessions"
-msgstr "сесии"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ml/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ml/LC_MESSAGES/django.mo
deleted file mode 100644
index f47700d..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ml/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ml/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ml/LC_MESSAGES/django.po
deleted file mode 100644
index c90536f..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ml/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/"
-"language/ml/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ml\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "സെഷന്‍ കീ"
-
-#: models.py:40
-msgid "session data"
-msgstr "സെഷന്‍ വിവരം"
-
-#: models.py:41
-msgid "expire date"
-msgstr "കാലാവധി (തീയതി)"
-
-#: models.py:46
-msgid "session"
-msgstr "സെഷന്‍"
-
-#: models.py:47
-msgid "sessions"
-msgstr "സെഷനുകള്‍"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/mn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/mn/LC_MESSAGES/django.mo
deleted file mode 100644
index f17e05f..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/mn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/mn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/mn/LC_MESSAGES/django.po
deleted file mode 100644
index 2c53c39..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/mn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/"
-"language/mn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "session түлхүүр"
-
-#: models.py:40
-msgid "session data"
-msgstr "session өгөгдөл"
-
-#: models.py:41
-msgid "expire date"
-msgstr "дуусах хугацаа"
-
-#: models.py:46
-msgid "session"
-msgstr "session"
-
-#: models.py:47
-msgid "sessions"
-msgstr "session-ууд"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/my/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/my/LC_MESSAGES/django.mo
deleted file mode 100644
index 00367e7..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/my/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/my/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/my/LC_MESSAGES/django.po
deleted file mode 100644
index e7a0cc5..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/my/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Yhal Htet Aung <jumoun@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-01 13:20+0000\n"
-"Last-Translator: Yhal Htet Aung <jumoun@gmail.com>\n"
-"Language-Team: Burmese (http://www.transifex.com/projects/p/django/language/"
-"my/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: my\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "ကြားကာလသော့"
-
-#: models.py:40
-msgid "session data"
-msgstr "ကြားကာလအချက်အလက်"
-
-#: models.py:41
-msgid "expire date"
-msgstr "သက်တမ်းကုန်နေ့စွဲ"
-
-#: models.py:46
-msgid "session"
-msgstr "ကြားကာလ"
-
-#: models.py:47
-msgid "sessions"
-msgstr "ကြားကာလများ"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/nb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/nb/LC_MESSAGES/django.mo
deleted file mode 100644
index 535f3de..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/nb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/nb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/nb/LC_MESSAGES/django.po
deleted file mode 100644
index 64751ea..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/nb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jonklo <jonklo@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/"
-"language/nb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "øktnøkkel"
-
-#: models.py:40
-msgid "session data"
-msgstr "øktdata"
-
-#: models.py:41
-msgid "expire date"
-msgstr "utløpsdato"
-
-#: models.py:46
-msgid "session"
-msgstr "økt"
-
-#: models.py:47
-msgid "sessions"
-msgstr "økter"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ne/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ne/LC_MESSAGES/django.mo
deleted file mode 100644
index 8170c51..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ne/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ne/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ne/LC_MESSAGES/django.po
deleted file mode 100644
index e6c35f3..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ne/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Paras Nath Chaudhary <opnchaudhary@gmail.com>, 2012
-# Sagar Chalise <chalisesagar@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/"
-"ne/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ne\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "अवधि साँचो"
-
-#: models.py:40
-msgid "session data"
-msgstr "अवधि विवरण"
-
-#: models.py:41
-msgid "expire date"
-msgstr "खारेज मिति"
-
-#: models.py:46
-msgid "session"
-msgstr "अवधि"
-
-#: models.py:47
-msgid "sessions"
-msgstr "अवधिहरु"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/nl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/nl/LC_MESSAGES/django.mo
deleted file mode 100644
index 27c6da2..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/nl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/nl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/nl/LC_MESSAGES/django.po
deleted file mode 100644
index 34f90f5..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/nl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Dutch (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:38
-msgid "session key"
-msgstr "sessiesleutel"
-
-#: models.py:40
-msgid "session data"
-msgstr "sessiegegevens"
-
-#: models.py:41
-msgid "expire date"
-msgstr "verloopdatum"
-
-#: models.py:46
-msgid "session"
-msgstr "sessie"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sessies"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/nn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/nn/LC_MESSAGES/django.mo
deleted file mode 100644
index e96bcf4..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/nn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/nn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/nn/LC_MESSAGES/django.po
deleted file mode 100644
index 0e6edec..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/nn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/"
-"language/nn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "sesjonsnøkkel"
-
-#: models.py:40
-msgid "session data"
-msgstr "sesjonsdata"
-
-#: models.py:41
-msgid "expire date"
-msgstr "utløpsdato"
-
-#: models.py:46
-msgid "session"
-msgstr "sesjon"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sesjonar"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/os/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/os/LC_MESSAGES/django.mo
deleted file mode 100644
index a668d7d..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/os/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/os/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/os/LC_MESSAGES/django.po
deleted file mode 100644
index 9f310fe..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/os/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-09 05:36+0000\n"
-"Last-Translator: Soslan Khubulov <soslanx@gmail.com>\n"
-"Language-Team: Ossetic (http://www.transifex.com/projects/p/django/language/"
-"os/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: os\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "сессийы амонӕн"
-
-#: models.py:40
-msgid "session data"
-msgstr "сессийы рардтӕ"
-
-#: models.py:41
-msgid "expire date"
-msgstr "фӕуды афон"
-
-#: models.py:46
-msgid "session"
-msgstr "сесси"
-
-#: models.py:47
-msgid "sessions"
-msgstr "сесситӕ"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/pa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/pa/LC_MESSAGES/django.mo
deleted file mode 100644
index 0a5a584..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/pa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/pa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/pa/LC_MESSAGES/django.po
deleted file mode 100644
index 15a337a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/pa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/"
-"language/pa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pa\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "ਸ਼ੈਸ਼ਨ ਕੁੰਜੀ"
-
-#: models.py:40
-msgid "session data"
-msgstr "ਸ਼ੈਸ਼ਨ ਡਾਟਾ"
-
-#: models.py:41
-msgid "expire date"
-msgstr "ਮਿਆਦ ਮਿਤੀ"
-
-#: models.py:46
-msgid "session"
-msgstr "ਸ਼ੈਸ਼ਨ"
-
-#: models.py:47
-msgid "sessions"
-msgstr "ਸ਼ੈਸ਼ਨ"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/pl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/pl/LC_MESSAGES/django.mo
deleted file mode 100644
index 4c54db6..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/pl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/pl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/pl/LC_MESSAGES/django.po
deleted file mode 100644
index fd37dc3..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/pl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:38
-msgid "session key"
-msgstr "klucz sesji"
-
-#: models.py:40
-msgid "session data"
-msgstr "data sesji"
-
-#: models.py:41
-msgid "expire date"
-msgstr "data wygaśnięcia sesji"
-
-#: models.py:46
-msgid "session"
-msgstr "sesja"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sesje"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/pt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/pt/LC_MESSAGES/django.mo
deleted file mode 100644
index 5c38b9c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/pt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/pt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/pt/LC_MESSAGES/django.po
deleted file mode 100644
index 14ef30c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/pt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-31 16:10+0000\n"
-"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
-"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: models.py:38
-msgid "session key"
-msgstr "chave da sessão"
-
-#: models.py:40
-msgid "session data"
-msgstr "dados da sessão"
-
-#: models.py:41
-msgid "expire date"
-msgstr "data de expiração"
-
-#: models.py:46
-msgid "session"
-msgstr "sessão"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sessões"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.mo
deleted file mode 100644
index 0ebd533..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.po
deleted file mode 100644
index 1c7a594..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/pt_BR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
-"django/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"
-
-#: models.py:38
-msgid "session key"
-msgstr "chave da sessão"
-
-#: models.py:40
-msgid "session data"
-msgstr "dados da sessão"
-
-#: models.py:41
-msgid "expire date"
-msgstr "data de expiração"
-
-#: models.py:46
-msgid "session"
-msgstr "sessão"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sessões"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ro/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ro/LC_MESSAGES/django.mo
deleted file mode 100644
index d78e553..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ro/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ro/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ro/LC_MESSAGES/django.po
deleted file mode 100644
index 662614d..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ro/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,40 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Daniel Ursache-Dogariu <contact@danniel.net>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/"
-"ro/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1));\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "cheie sesiune"
-
-#: models.py:40
-msgid "session data"
-msgstr "date sesiune"
-
-#: models.py:41
-msgid "expire date"
-msgstr "dată expirare"
-
-#: models.py:46
-msgid "session"
-msgstr "sesiune"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sesiuni"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ru/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ru/LC_MESSAGES/django.mo
deleted file mode 100644
index 56b624a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ru/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ru/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ru/LC_MESSAGES/django.po
deleted file mode 100644
index d58b905..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ru/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/"
-"ru/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\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"
-
-#: models.py:38
-msgid "session key"
-msgstr "ключ сессии"
-
-#: models.py:40
-msgid "session data"
-msgstr "данные сессии"
-
-#: models.py:41
-msgid "expire date"
-msgstr "дата окончания"
-
-#: models.py:46
-msgid "session"
-msgstr "сессия"
-
-#: models.py:47
-msgid "sessions"
-msgstr "сессии"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/sk/LC_MESSAGES/django.mo
deleted file mode 100644
index 761da6a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/sk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/sk/LC_MESSAGES/django.po
deleted file mode 100644
index bc2d0dc..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/sk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Slovak (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:38
-msgid "session key"
-msgstr "kľúč relácie"
-
-#: models.py:40
-msgid "session data"
-msgstr "údaje relácie"
-
-#: models.py:41
-msgid "expire date"
-msgstr "dátum vypršania platnosti"
-
-#: models.py:46
-msgid "session"
-msgstr "relácia"
-
-#: models.py:47
-msgid "sessions"
-msgstr "relácie"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/sl/LC_MESSAGES/django.mo
deleted file mode 100644
index 9047bf6..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/sl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/sl/LC_MESSAGES/django.po
deleted file mode 100644
index 1f9d581..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/sl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/"
-"language/sl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "ključ seje"
-
-#: models.py:40
-msgid "session data"
-msgstr "podatki seje"
-
-#: models.py:41
-msgid "expire date"
-msgstr "čas preteka"
-
-#: models.py:46
-msgid "session"
-msgstr "seja"
-
-#: models.py:47
-msgid "sessions"
-msgstr "seje"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sq/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/sq/LC_MESSAGES/django.mo
deleted file mode 100644
index c6ab86a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/sq/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sq/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/sq/LC_MESSAGES/django.po
deleted file mode 100644
index c84a5c6..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/sq/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Besnik <besnik@programeshqip.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/"
-"sq/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sq\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "kyç sesioni"
-
-#: models.py:40
-msgid "session data"
-msgstr "të dhëna sesioni"
-
-#: models.py:41
-msgid "expire date"
-msgstr "datë skadimi"
-
-#: models.py:46
-msgid "session"
-msgstr "sesion"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sesione"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/sr/LC_MESSAGES/django.mo
deleted file mode 100644
index 55fe225..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/sr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/sr/LC_MESSAGES/django.po
deleted file mode 100644
index 02aad14..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/sr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/"
-"sr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr\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"
-
-#: models.py:38
-msgid "session key"
-msgstr "кључ сесије"
-
-#: models.py:40
-msgid "session data"
-msgstr "подаци сесије"
-
-#: models.py:41
-msgid "expire date"
-msgstr "датум застаревања"
-
-#: models.py:46
-msgid "session"
-msgstr "сесија"
-
-#: models.py:47
-msgid "sessions"
-msgstr "сесије"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.mo
deleted file mode 100644
index 828a5ce..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.po
deleted file mode 100644
index 3ce2724..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/sr_Latn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/"
-"language/sr@latin/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr@latin\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"
-
-#: models.py:38
-msgid "session key"
-msgstr "ključ sesije"
-
-#: models.py:40
-msgid "session data"
-msgstr "podaci sesije"
-
-#: models.py:41
-msgid "expire date"
-msgstr "datum zastarevanja"
-
-#: models.py:46
-msgid "session"
-msgstr "sesija"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sesije"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/sv/LC_MESSAGES/django.mo
deleted file mode 100644
index 509b2e9..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/sv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/sv/LC_MESSAGES/django.po
deleted file mode 100644
index b0c4307..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/sv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/"
-"sv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sv\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "sessionsnyckel"
-
-#: models.py:40
-msgid "session data"
-msgstr "sessionsdata"
-
-#: models.py:41
-msgid "expire date"
-msgstr "utgångsdatum"
-
-#: models.py:46
-msgid "session"
-msgstr "session"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sessioner"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sw/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/sw/LC_MESSAGES/django.mo
deleted file mode 100644
index ccfd860..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/sw/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/sw/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/sw/LC_MESSAGES/django.po
deleted file mode 100644
index 1655a61..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/sw/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,37 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/"
-"sw/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sw\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "ufunguo wa kipindi"
-
-#: models.py:40
-msgid "session data"
-msgstr "data za kipindi"
-
-#: models.py:41
-msgid "expire date"
-msgstr "tarehe ya mwisho ya matumizi"
-
-#: models.py:46
-msgid "session"
-msgstr "kipindi"
-
-#: models.py:47
-msgid "sessions"
-msgstr "vipindi"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ta/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ta/LC_MESSAGES/django.mo
deleted file mode 100644
index 08136cc..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ta/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ta/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ta/LC_MESSAGES/django.po
deleted file mode 100644
index 10d07a7..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ta/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/"
-"ta/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ta\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "அமர்வு குறியீ"
-
-#: models.py:40
-msgid "session data"
-msgstr "அமர்வு தகவல்"
-
-#: models.py:41
-msgid "expire date"
-msgstr "காலாவதியாகும் தேதி"
-
-#: models.py:46
-msgid "session"
-msgstr "அமர்வு"
-
-#: models.py:47
-msgid "sessions"
-msgstr "அமர்வுகள்"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/te/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/te/LC_MESSAGES/django.mo
deleted file mode 100644
index f04984c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/te/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/te/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/te/LC_MESSAGES/django.po
deleted file mode 100644
index 2d2b1d8..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/te/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# bhaskar teja yerneni <prudhviy@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/"
-"te/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: te\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "భాగము తాళంచెవి"
-
-#: models.py:40
-msgid "session data"
-msgstr "భాగము దత్తం"
-
-#: models.py:41
-msgid "expire date"
-msgstr "కాలం చెల్లు తేది."
-
-#: models.py:46
-msgid "session"
-msgstr "భాగము"
-
-#: models.py:47
-msgid "sessions"
-msgstr "భాగములు"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/th/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/th/LC_MESSAGES/django.mo
deleted file mode 100644
index 67b3bd1..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/th/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/th/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/th/LC_MESSAGES/django.po
deleted file mode 100644
index d39f02b..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/th/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/"
-"th/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: th\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "เซสชันคีย์"
-
-#: models.py:40
-msgid "session data"
-msgstr "ข้อมูลเซสชัน"
-
-#: models.py:41
-msgid "expire date"
-msgstr "วันหมดอายุ"
-
-#: models.py:46
-msgid "session"
-msgstr "เซสชัน"
-
-#: models.py:47
-msgid "sessions"
-msgstr "เซสชัน"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/tr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/tr/LC_MESSAGES/django.mo
deleted file mode 100644
index d115d21..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/tr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/tr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/tr/LC_MESSAGES/django.po
deleted file mode 100644
index 688839a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/tr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/"
-"tr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "oturum anahtarı"
-
-#: models.py:40
-msgid "session data"
-msgstr "oturum bilgisi"
-
-#: models.py:41
-msgid "expire date"
-msgstr "bitiş tarihi"
-
-#: models.py:46
-msgid "session"
-msgstr "oturum"
-
-#: models.py:47
-msgid "sessions"
-msgstr "oturumlar"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/tt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/tt/LC_MESSAGES/django.mo
deleted file mode 100644
index a5fe9b5..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/tt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/tt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/tt/LC_MESSAGES/django.po
deleted file mode 100644
index 3fd7931..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/tt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Azat Khasanshin <lordofbazuks@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/"
-"tt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tt\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "эш сеансы ачкычы"
-
-#: models.py:40
-msgid "session data"
-msgstr "эш сеансы бирелмәләре"
-
-#: models.py:41
-msgid "expire date"
-msgstr "искерү көне"
-
-#: models.py:46
-msgid "session"
-msgstr "эш сеансы"
-
-#: models.py:47
-msgid "sessions"
-msgstr "эш сеанслары"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/uk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/uk/LC_MESSAGES/django.mo
deleted file mode 100644
index c686c95..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/uk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/uk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/uk/LC_MESSAGES/django.po
deleted file mode 100644
index 9137ee1..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/uk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: models.py:38
-msgid "session key"
-msgstr "ключ сесії"
-
-#: models.py:40
-msgid "session data"
-msgstr "дані сесії"
-
-#: models.py:41
-msgid "expire date"
-msgstr "термін придатності"
-
-#: models.py:46
-msgid "session"
-msgstr "сесія"
-
-#: models.py:47
-msgid "sessions"
-msgstr "сесії"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ur/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/ur/LC_MESSAGES/django.mo
deleted file mode 100644
index ecbfc8b..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ur/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/ur/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/ur/LC_MESSAGES/django.po
deleted file mode 100644
index 2b2f6b6..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/ur/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/"
-"ur/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ur\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "کلید نشست"
-
-#: models.py:40
-msgid "session data"
-msgstr "نشست کا ڈیٹا"
-
-#: models.py:41
-msgid "expire date"
-msgstr "مدت ختم ھونے کی تاریخ"
-
-#: models.py:46
-msgid "session"
-msgstr "نشست"
-
-#: models.py:47
-msgid "sessions"
-msgstr "نشستیں"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/vi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/vi/LC_MESSAGES/django.mo
deleted file mode 100644
index 39d373c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/vi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/vi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/vi/LC_MESSAGES/django.po
deleted file mode 100644
index daa4d98..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/vi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,40 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Lê Thanh <lethanhx2k@gmail.com>, 2013
-# Tran Van <vantxm@yahoo.co.uk>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-11 02:19+0000\n"
-"Last-Translator: Lê Thanh <lethanhx2k@gmail.com>\n"
-"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/"
-"language/vi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "session key"
-
-#: models.py:40
-msgid "session data"
-msgstr "session data"
-
-#: models.py:41
-msgid "expire date"
-msgstr "Ngày hết hạn"
-
-#: models.py:46
-msgid "session"
-msgstr "Phiên"
-
-#: models.py:47
-msgid "sessions"
-msgstr "session"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.mo
deleted file mode 100644
index 6a8e298..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.po
deleted file mode 100644
index 08ba46c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_CN/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: models.py:38
-msgid "session key"
-msgstr "会话密钥"
-
-#: models.py:40
-msgid "session data"
-msgstr "会话数据"
-
-#: models.py:41
-msgid "expire date"
-msgstr "过期时间"
-
-#: models.py:46
-msgid "session"
-msgstr "会话"
-
-#: models.py:47
-msgid "sessions"
-msgstr "会话"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.mo
deleted file mode 100644
index 3a12b74..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.po
deleted file mode 100644
index 4ba0863..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/locale/zh_TW/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:25+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/"
-"language/zh_TW/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_TW\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:38
-msgid "session key"
-msgstr "session 鍵值"
-
-#: models.py:40
-msgid "session data"
-msgstr "session 資料"
-
-#: models.py:41
-msgid "expire date"
-msgstr "到期日期"
-
-#: models.py:46
-msgid "session"
-msgstr "session"
-
-#: models.py:47
-msgid "sessions"
-msgstr "sessions"
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/management/__init__.py b/lib/python2.7/site-packages/django/contrib/sessions/management/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/management/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/management/commands/__init__.py b/lib/python2.7/site-packages/django/contrib/sessions/management/commands/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/management/commands/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/management/commands/clearsessions.py b/lib/python2.7/site-packages/django/contrib/sessions/management/commands/clearsessions.py
deleted file mode 100644
index 8eb23df..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/management/commands/clearsessions.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from django.conf import settings
-from django.core.management.base import NoArgsCommand
-from django.utils.importlib import import_module
-
-
-class Command(NoArgsCommand):
- help = "Can be run as a cronjob or directly to clean out expired sessions (only with the database backend at the moment)."
-
- def handle_noargs(self, **options):
- engine = import_module(settings.SESSION_ENGINE)
- try:
- engine.SessionStore.clear_expired()
- except NotImplementedError:
- self.stderr.write("Session engine '%s' doesn't support clearing "
- "expired sessions.\n" % settings.SESSION_ENGINE)
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/middleware.py b/lib/python2.7/site-packages/django/contrib/sessions/middleware.py
deleted file mode 100644
index 9f65255..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/middleware.py
+++ /dev/null
@@ -1,45 +0,0 @@
-import time
-
-from django.conf import settings
-from django.utils.cache import patch_vary_headers
-from django.utils.http import cookie_date
-from django.utils.importlib import import_module
-
-class SessionMiddleware(object):
- def process_request(self, request):
- engine = import_module(settings.SESSION_ENGINE)
- session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME, None)
- request.session = engine.SessionStore(session_key)
-
- def process_response(self, request, response):
- """
- If request.session was modified, or if the configuration is to save the
- session every time, save the changes and set a session cookie.
- """
- try:
- accessed = request.session.accessed
- modified = request.session.modified
- except AttributeError:
- pass
- else:
- if accessed:
- patch_vary_headers(response, ('Cookie',))
- if modified or settings.SESSION_SAVE_EVERY_REQUEST:
- if request.session.get_expire_at_browser_close():
- max_age = None
- expires = None
- else:
- max_age = request.session.get_expiry_age()
- expires_time = time.time() + max_age
- expires = cookie_date(expires_time)
- # Save the session data and refresh the client cookie.
- # Skip session save for 500 responses, refs #3881.
- if response.status_code != 500:
- request.session.save()
- response.set_cookie(settings.SESSION_COOKIE_NAME,
- request.session.session_key, max_age=max_age,
- expires=expires, domain=settings.SESSION_COOKIE_DOMAIN,
- path=settings.SESSION_COOKIE_PATH,
- secure=settings.SESSION_COOKIE_SECURE or None,
- httponly=settings.SESSION_COOKIE_HTTPONLY or None)
- return response
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/models.py b/lib/python2.7/site-packages/django/contrib/sessions/models.py
deleted file mode 100644
index 3a6e311..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/models.py
+++ /dev/null
@@ -1,54 +0,0 @@
-from django.db import models
-from django.utils.translation import ugettext_lazy as _
-
-
-class SessionManager(models.Manager):
- def encode(self, session_dict):
- """
- Returns the given session dictionary serialized and encoded as a string.
- """
- return SessionStore().encode(session_dict)
-
- def save(self, session_key, session_dict, expire_date):
- s = self.model(session_key, self.encode(session_dict), expire_date)
- if session_dict:
- s.save()
- else:
- s.delete() # Clear sessions with no data.
- return s
-
-
-class Session(models.Model):
- """
- Django provides full support for anonymous sessions. The session
- framework lets you store and retrieve arbitrary data on a
- per-site-visitor basis. It stores data on the server side and
- abstracts the sending and receiving of cookies. Cookies contain a
- session ID -- not the data itself.
-
- The Django sessions framework is entirely cookie-based. It does
- not fall back to putting session IDs in URLs. This is an intentional
- design decision. Not only does that behavior make URLs ugly, it makes
- your site vulnerable to session-ID theft via the "Referer" header.
-
- For complete documentation on using Sessions in your code, consult
- the sessions documentation that is shipped with Django (also available
- on the Django Web site).
- """
- session_key = models.CharField(_('session key'), max_length=40,
- primary_key=True)
- session_data = models.TextField(_('session data'))
- expire_date = models.DateTimeField(_('expire date'), db_index=True)
- objects = SessionManager()
-
- class Meta:
- db_table = 'django_session'
- verbose_name = _('session')
- verbose_name_plural = _('sessions')
-
- def get_decoded(self):
- return SessionStore().decode(self.session_data)
-
-
-# At bottom to avoid circular import
-from django.contrib.sessions.backends.db import SessionStore
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/serializers.py b/lib/python2.7/site-packages/django/contrib/sessions/serializers.py
deleted file mode 100644
index 92a31c0..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/serializers.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from django.core.signing import JSONSerializer as BaseJSONSerializer
-try:
- from django.utils.six.moves import cPickle as pickle
-except ImportError:
- import pickle
-
-
-class PickleSerializer(object):
- """
- Simple wrapper around pickle to be used in signing.dumps and
- signing.loads.
- """
- def dumps(self, obj):
- return pickle.dumps(obj, pickle.HIGHEST_PROTOCOL)
-
- def loads(self, data):
- return pickle.loads(data)
-
-
-JSONSerializer = BaseJSONSerializer
diff --git a/lib/python2.7/site-packages/django/contrib/sessions/tests.py b/lib/python2.7/site-packages/django/contrib/sessions/tests.py
deleted file mode 100644
index ff0a70c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sessions/tests.py
+++ /dev/null
@@ -1,593 +0,0 @@
-import base64
-from datetime import timedelta
-import os
-import shutil
-import string
-import tempfile
-import warnings
-
-from django.conf import settings
-from django.contrib.sessions.backends.db import SessionStore as DatabaseSession
-from django.contrib.sessions.backends.cache import SessionStore as CacheSession
-from django.contrib.sessions.backends.cached_db import SessionStore as CacheDBSession
-from django.contrib.sessions.backends.file import SessionStore as FileSession
-from django.contrib.sessions.backends.signed_cookies import SessionStore as CookieSession
-from django.contrib.sessions.models import Session
-from django.contrib.sessions.middleware import SessionMiddleware
-from django.core.cache import get_cache
-from django.core import management
-from django.core.exceptions import ImproperlyConfigured
-from django.http import HttpResponse
-from django.test import TestCase, RequestFactory
-from django.test.utils import override_settings, patch_logger
-from django.utils import six
-from django.utils import timezone
-from django.utils import unittest
-
-from django.contrib.sessions.exceptions import InvalidSessionKey
-
-
-class SessionTestsMixin(object):
- # This does not inherit from TestCase to avoid any tests being run with this
- # class, which wouldn't work, and to allow different TestCase subclasses to
- # be used.
-
- backend = None # subclasses must specify
-
- def setUp(self):
- self.session = self.backend()
-
- def tearDown(self):
- # NB: be careful to delete any sessions created; stale sessions fill up
- # the /tmp (with some backends) and eventually overwhelm it after lots
- # of runs (think buildbots)
- self.session.delete()
-
- def test_new_session(self):
- self.assertFalse(self.session.modified)
- self.assertFalse(self.session.accessed)
-
- def test_get_empty(self):
- self.assertEqual(self.session.get('cat'), None)
-
- def test_store(self):
- self.session['cat'] = "dog"
- self.assertTrue(self.session.modified)
- self.assertEqual(self.session.pop('cat'), 'dog')
-
- def test_pop(self):
- self.session['some key'] = 'exists'
- # Need to reset these to pretend we haven't accessed it:
- self.accessed = False
- self.modified = False
-
- self.assertEqual(self.session.pop('some key'), 'exists')
- self.assertTrue(self.session.accessed)
- self.assertTrue(self.session.modified)
- self.assertEqual(self.session.get('some key'), None)
-
- def test_pop_default(self):
- self.assertEqual(self.session.pop('some key', 'does not exist'),
- 'does not exist')
- self.assertTrue(self.session.accessed)
- self.assertFalse(self.session.modified)
-
- def test_setdefault(self):
- self.assertEqual(self.session.setdefault('foo', 'bar'), 'bar')
- self.assertEqual(self.session.setdefault('foo', 'baz'), 'bar')
- self.assertTrue(self.session.accessed)
- self.assertTrue(self.session.modified)
-
- def test_update(self):
- self.session.update({'update key': 1})
- self.assertTrue(self.session.accessed)
- self.assertTrue(self.session.modified)
- self.assertEqual(self.session.get('update key', None), 1)
-
- def test_has_key(self):
- self.session['some key'] = 1
- self.session.modified = False
- self.session.accessed = False
- self.assertIn('some key', self.session)
- self.assertTrue(self.session.accessed)
- self.assertFalse(self.session.modified)
-
- def test_values(self):
- self.assertEqual(list(self.session.values()), [])
- self.assertTrue(self.session.accessed)
- self.session['some key'] = 1
- self.assertEqual(list(self.session.values()), [1])
-
- def test_iterkeys(self):
- self.session['x'] = 1
- self.session.modified = False
- self.session.accessed = False
- i = six.iterkeys(self.session)
- self.assertTrue(hasattr(i, '__iter__'))
- self.assertTrue(self.session.accessed)
- self.assertFalse(self.session.modified)
- self.assertEqual(list(i), ['x'])
-
- def test_itervalues(self):
- self.session['x'] = 1
- self.session.modified = False
- self.session.accessed = False
- i = six.itervalues(self.session)
- self.assertTrue(hasattr(i, '__iter__'))
- self.assertTrue(self.session.accessed)
- self.assertFalse(self.session.modified)
- self.assertEqual(list(i), [1])
-
- def test_iteritems(self):
- self.session['x'] = 1
- self.session.modified = False
- self.session.accessed = False
- i = six.iteritems(self.session)
- self.assertTrue(hasattr(i, '__iter__'))
- self.assertTrue(self.session.accessed)
- self.assertFalse(self.session.modified)
- self.assertEqual(list(i), [('x', 1)])
-
- def test_clear(self):
- self.session['x'] = 1
- self.session.modified = False
- self.session.accessed = False
- self.assertEqual(list(self.session.items()), [('x', 1)])
- self.session.clear()
- self.assertEqual(list(self.session.items()), [])
- self.assertTrue(self.session.accessed)
- self.assertTrue(self.session.modified)
-
- def test_save(self):
- if (hasattr(self.session, '_cache') and'DummyCache' in
- settings.CACHES[settings.SESSION_CACHE_ALIAS]['BACKEND']):
- raise unittest.SkipTest("Session saving tests require a real cache backend")
- self.session.save()
- self.assertTrue(self.session.exists(self.session.session_key))
-
- def test_delete(self):
- self.session.save()
- self.session.delete(self.session.session_key)
- self.assertFalse(self.session.exists(self.session.session_key))
-
- def test_flush(self):
- self.session['foo'] = 'bar'
- self.session.save()
- prev_key = self.session.session_key
- self.session.flush()
- self.assertFalse(self.session.exists(prev_key))
- self.assertNotEqual(self.session.session_key, prev_key)
- self.assertTrue(self.session.modified)
- self.assertTrue(self.session.accessed)
-
- def test_cycle(self):
- self.session['a'], self.session['b'] = 'c', 'd'
- self.session.save()
- prev_key = self.session.session_key
- prev_data = list(self.session.items())
- self.session.cycle_key()
- self.assertNotEqual(self.session.session_key, prev_key)
- self.assertEqual(list(self.session.items()), prev_data)
-
- def test_invalid_key(self):
- # Submitting an invalid session key (either by guessing, or if the db has
- # removed the key) results in a new key being generated.
- try:
- session = self.backend('1')
- try:
- session.save()
- except AttributeError:
- self.fail("The session object did not save properly. Middleware may be saving cache items without namespaces.")
- self.assertNotEqual(session.session_key, '1')
- self.assertEqual(session.get('cat'), None)
- session.delete()
- finally:
- # Some backends leave a stale cache entry for the invalid
- # session key; make sure that entry is manually deleted
- session.delete('1')
-
- def test_session_key_is_read_only(self):
- def set_session_key(session):
- session.session_key = session._get_new_session_key()
- self.assertRaises(AttributeError, set_session_key, self.session)
-
- # Custom session expiry
- def test_default_expiry(self):
- # A normal session has a max age equal to settings
- self.assertEqual(self.session.get_expiry_age(), settings.SESSION_COOKIE_AGE)
-
- # So does a custom session with an idle expiration time of 0 (but it'll
- # expire at browser close)
- self.session.set_expiry(0)
- self.assertEqual(self.session.get_expiry_age(), settings.SESSION_COOKIE_AGE)
-
- def test_custom_expiry_seconds(self):
- modification = timezone.now()
-
- self.session.set_expiry(10)
-
- date = self.session.get_expiry_date(modification=modification)
- self.assertEqual(date, modification + timedelta(seconds=10))
-
- age = self.session.get_expiry_age(modification=modification)
- self.assertEqual(age, 10)
-
- def test_custom_expiry_timedelta(self):
- modification = timezone.now()
-
- # Mock timezone.now, because set_expiry calls it on this code path.
- original_now = timezone.now
- try:
- timezone.now = lambda: modification
- self.session.set_expiry(timedelta(seconds=10))
- finally:
- timezone.now = original_now
-
- date = self.session.get_expiry_date(modification=modification)
- self.assertEqual(date, modification + timedelta(seconds=10))
-
- age = self.session.get_expiry_age(modification=modification)
- self.assertEqual(age, 10)
-
- def test_custom_expiry_datetime(self):
- modification = timezone.now()
-
- self.session.set_expiry(modification + timedelta(seconds=10))
-
- date = self.session.get_expiry_date(modification=modification)
- self.assertEqual(date, modification + timedelta(seconds=10))
-
- age = self.session.get_expiry_age(modification=modification)
- self.assertEqual(age, 10)
-
- def test_custom_expiry_reset(self):
- self.session.set_expiry(None)
- self.session.set_expiry(10)
- self.session.set_expiry(None)
- self.assertEqual(self.session.get_expiry_age(), settings.SESSION_COOKIE_AGE)
-
- def test_get_expire_at_browser_close(self):
- # Tests get_expire_at_browser_close with different settings and different
- # set_expiry calls
- with override_settings(SESSION_EXPIRE_AT_BROWSER_CLOSE=False):
- self.session.set_expiry(10)
- self.assertFalse(self.session.get_expire_at_browser_close())
-
- self.session.set_expiry(0)
- self.assertTrue(self.session.get_expire_at_browser_close())
-
- self.session.set_expiry(None)
- self.assertFalse(self.session.get_expire_at_browser_close())
-
- with override_settings(SESSION_EXPIRE_AT_BROWSER_CLOSE=True):
- self.session.set_expiry(10)
- self.assertFalse(self.session.get_expire_at_browser_close())
-
- self.session.set_expiry(0)
- self.assertTrue(self.session.get_expire_at_browser_close())
-
- self.session.set_expiry(None)
- self.assertTrue(self.session.get_expire_at_browser_close())
-
- def test_decode(self):
- # Ensure we can decode what we encode
- data = {'a test key': 'a test value'}
- encoded = self.session.encode(data)
- self.assertEqual(self.session.decode(encoded), data)
-
- def test_decode_failure_logged_to_security(self):
- bad_encode = base64.b64encode(b'flaskdj:alkdjf')
- with patch_logger('django.security.SuspiciousSession', 'warning') as calls:
- self.assertEqual({}, self.session.decode(bad_encode))
- # check that the failed decode is logged
- self.assertEqual(len(calls), 1)
- self.assertTrue('corrupted' in calls[0])
-
-
- def test_actual_expiry(self):
- # this doesn't work with JSONSerializer (serializing timedelta)
- with override_settings(SESSION_SERIALIZER='django.contrib.sessions.serializers.PickleSerializer'):
- self.session = self.backend() # reinitialize after overriding settings
-
- # Regression test for #19200
- old_session_key = None
- new_session_key = None
- try:
- self.session['foo'] = 'bar'
- self.session.set_expiry(-timedelta(seconds=10))
- self.session.save()
- old_session_key = self.session.session_key
- # With an expiry date in the past, the session expires instantly.
- new_session = self.backend(self.session.session_key)
- new_session_key = new_session.session_key
- self.assertNotIn('foo', new_session)
- finally:
- self.session.delete(old_session_key)
- self.session.delete(new_session_key)
-
-
-class DatabaseSessionTests(SessionTestsMixin, TestCase):
-
- backend = DatabaseSession
-
- def test_session_get_decoded(self):
- """
- Test we can use Session.get_decoded to retrieve data stored
- in normal way
- """
- self.session['x'] = 1
- self.session.save()
-
- s = Session.objects.get(session_key=self.session.session_key)
-
- self.assertEqual(s.get_decoded(), {'x': 1})
-
- def test_sessionmanager_save(self):
- """
- Test SessionManager.save method
- """
- # Create a session
- self.session['y'] = 1
- self.session.save()
-
- s = Session.objects.get(session_key=self.session.session_key)
- # Change it
- Session.objects.save(s.session_key, {'y': 2}, s.expire_date)
- # Clear cache, so that it will be retrieved from DB
- del self.session._session_cache
- self.assertEqual(self.session['y'], 2)
-
- @override_settings(SESSION_ENGINE="django.contrib.sessions.backends.db")
- def test_clearsessions_command(self):
- """
- Test clearsessions command for clearing expired sessions.
- """
- self.assertEqual(0, Session.objects.count())
-
- # One object in the future
- self.session['foo'] = 'bar'
- self.session.set_expiry(3600)
- self.session.save()
-
- # One object in the past
- other_session = self.backend()
- other_session['foo'] = 'bar'
- other_session.set_expiry(-3600)
- other_session.save()
-
- # Two sessions are in the database before clearsessions...
- self.assertEqual(2, Session.objects.count())
- management.call_command('clearsessions')
- # ... and one is deleted.
- self.assertEqual(1, Session.objects.count())
-
-
-@override_settings(USE_TZ=True)
-class DatabaseSessionWithTimeZoneTests(DatabaseSessionTests):
- pass
-
-
-class CacheDBSessionTests(SessionTestsMixin, TestCase):
-
- backend = CacheDBSession
-
- @unittest.skipIf('DummyCache' in
- settings.CACHES[settings.SESSION_CACHE_ALIAS]['BACKEND'],
- "Session saving tests require a real cache backend")
- def test_exists_searches_cache_first(self):
- self.session.save()
- with self.assertNumQueries(0):
- self.assertTrue(self.session.exists(self.session.session_key))
-
- def test_load_overlong_key(self):
- # Some backends might issue a warning
- with warnings.catch_warnings():
- warnings.simplefilter("ignore")
- self.session._session_key = (string.ascii_letters + string.digits) * 20
- self.assertEqual(self.session.load(), {})
-
-
-@override_settings(USE_TZ=True)
-class CacheDBSessionWithTimeZoneTests(CacheDBSessionTests):
- pass
-
-
-# Don't need DB flushing for these tests, so can use unittest.TestCase as base class
-class FileSessionTests(SessionTestsMixin, unittest.TestCase):
-
- backend = FileSession
-
- def setUp(self):
- # Do file session tests in an isolated directory, and kill it after we're done.
- self.original_session_file_path = settings.SESSION_FILE_PATH
- self.temp_session_store = settings.SESSION_FILE_PATH = tempfile.mkdtemp()
- # Reset the file session backend's internal caches
- if hasattr(self.backend, '_storage_path'):
- del self.backend._storage_path
- super(FileSessionTests, self).setUp()
-
- def tearDown(self):
- super(FileSessionTests, self).tearDown()
- settings.SESSION_FILE_PATH = self.original_session_file_path
- shutil.rmtree(self.temp_session_store)
-
- @override_settings(
- SESSION_FILE_PATH="/if/this/directory/exists/you/have/a/weird/computer")
- def test_configuration_check(self):
- del self.backend._storage_path
- # Make sure the file backend checks for a good storage dir
- self.assertRaises(ImproperlyConfigured, self.backend)
-
- def test_invalid_key_backslash(self):
- # This key should be refused and a new session should be created
- self.assertTrue(self.backend("a\\b\\c").load())
-
- def test_invalid_key_backslash(self):
- # Ensure we don't allow directory-traversal.
- # This is tested directly on _key_to_file, as load() will swallow
- # a SuspiciousOperation in the same way as an IOError - by creating
- # a new session, making it unclear whether the slashes were detected.
- self.assertRaises(InvalidSessionKey,
- self.backend()._key_to_file, "a\\b\\c")
-
- def test_invalid_key_forwardslash(self):
- # Ensure we don't allow directory-traversal
- self.assertRaises(InvalidSessionKey,
- self.backend()._key_to_file, "a/b/c")
-
- @override_settings(SESSION_ENGINE="django.contrib.sessions.backends.file")
- def test_clearsessions_command(self):
- """
- Test clearsessions command for clearing expired sessions.
- """
- storage_path = self.backend._get_storage_path()
- file_prefix = settings.SESSION_COOKIE_NAME
-
- def count_sessions():
- return len([session_file for session_file in os.listdir(storage_path)
- if session_file.startswith(file_prefix)])
-
- self.assertEqual(0, count_sessions())
-
- # One object in the future
- self.session['foo'] = 'bar'
- self.session.set_expiry(3600)
- self.session.save()
-
- # One object in the past
- other_session = self.backend()
- other_session['foo'] = 'bar'
- other_session.set_expiry(-3600)
- other_session.save()
-
- # Two sessions are in the filesystem before clearsessions...
- self.assertEqual(2, count_sessions())
- management.call_command('clearsessions')
- # ... and one is deleted.
- self.assertEqual(1, count_sessions())
-
-
-class CacheSessionTests(SessionTestsMixin, unittest.TestCase):
-
- backend = CacheSession
-
- def test_load_overlong_key(self):
- # Some backends might issue a warning
- with warnings.catch_warnings():
- warnings.simplefilter("ignore")
- self.session._session_key = (string.ascii_letters + string.digits) * 20
- self.assertEqual(self.session.load(), {})
-
- def test_default_cache(self):
- self.session.save()
- self.assertNotEqual(get_cache('default').get(self.session.cache_key), None)
-
- @override_settings(CACHES={
- 'default': {
- 'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
- },
- 'sessions': {
- 'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
- },
- }, SESSION_CACHE_ALIAS='sessions')
- def test_non_default_cache(self):
- # Re-initalize the session backend to make use of overridden settings.
- self.session = self.backend()
-
- self.session.save()
- self.assertEqual(get_cache('default').get(self.session.cache_key), None)
- self.assertNotEqual(get_cache('sessions').get(self.session.cache_key), None)
-
-
-class SessionMiddlewareTests(unittest.TestCase):
-
- @override_settings(SESSION_COOKIE_SECURE=True)
- def test_secure_session_cookie(self):
- request = RequestFactory().get('/')
- response = HttpResponse('Session test')
- middleware = SessionMiddleware()
-
- # Simulate a request the modifies the session
- middleware.process_request(request)
- request.session['hello'] = 'world'
-
- # Handle the response through the middleware
- response = middleware.process_response(request, response)
- self.assertTrue(
- response.cookies[settings.SESSION_COOKIE_NAME]['secure'])
-
- @override_settings(SESSION_COOKIE_HTTPONLY=True)
- def test_httponly_session_cookie(self):
- request = RequestFactory().get('/')
- response = HttpResponse('Session test')
- middleware = SessionMiddleware()
-
- # Simulate a request the modifies the session
- middleware.process_request(request)
- request.session['hello'] = 'world'
-
- # Handle the response through the middleware
- response = middleware.process_response(request, response)
- self.assertTrue(
- response.cookies[settings.SESSION_COOKIE_NAME]['httponly'])
- self.assertIn('httponly',
- str(response.cookies[settings.SESSION_COOKIE_NAME]))
-
- @override_settings(SESSION_COOKIE_HTTPONLY=False)
- def test_no_httponly_session_cookie(self):
- request = RequestFactory().get('/')
- response = HttpResponse('Session test')
- middleware = SessionMiddleware()
-
- # Simulate a request the modifies the session
- middleware.process_request(request)
- request.session['hello'] = 'world'
-
- # Handle the response through the middleware
- response = middleware.process_response(request, response)
- self.assertFalse(response.cookies[settings.SESSION_COOKIE_NAME]['httponly'])
-
- self.assertNotIn('httponly',
- str(response.cookies[settings.SESSION_COOKIE_NAME]))
-
- def test_session_save_on_500(self):
- request = RequestFactory().get('/')
- response = HttpResponse('Horrible error')
- response.status_code = 500
- middleware = SessionMiddleware()
-
- # Simulate a request the modifies the session
- middleware.process_request(request)
- request.session['hello'] = 'world'
-
- # Handle the response through the middleware
- response = middleware.process_response(request, response)
-
- # Check that the value wasn't saved above.
- self.assertNotIn('hello', request.session.load())
-
-
-class CookieSessionTests(SessionTestsMixin, TestCase):
-
- backend = CookieSession
-
- def test_save(self):
- """
- This test tested exists() in the other session backends, but that
- doesn't make sense for us.
- """
- pass
-
- def test_cycle(self):
- """
- This test tested cycle_key() which would create a new session
- key for the same session data. But we can't invalidate previously
- signed cookies (other than letting them expire naturally) so
- testing for this behavior is meaningless.
- """
- pass
-
- @unittest.expectedFailure
- def test_actual_expiry(self):
- # The cookie backend doesn't handle non-default expiry dates, see #19201
- super(CookieSessionTests, self).test_actual_expiry()
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/__init__.py b/lib/python2.7/site-packages/django/contrib/sitemaps/__init__.py
deleted file mode 100644
index 72c1932..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/__init__.py
+++ /dev/null
@@ -1,121 +0,0 @@
-from django.contrib.sites.models import Site
-from django.core import urlresolvers, paginator
-from django.core.exceptions import ImproperlyConfigured
-from django.utils.six.moves.urllib.parse import urlencode
-from django.utils.six.moves.urllib.request import urlopen
-
-PING_URL = "http://www.google.com/webmasters/tools/ping"
-
-class SitemapNotFound(Exception):
- pass
-
-def ping_google(sitemap_url=None, ping_url=PING_URL):
- """
- Alerts Google that the sitemap for the current site has been updated.
- If sitemap_url is provided, it should be an absolute path to the sitemap
- for this site -- e.g., '/sitemap.xml'. If sitemap_url is not provided, this
- function will attempt to deduce it by using urlresolvers.reverse().
- """
- if sitemap_url is None:
- try:
- # First, try to get the "index" sitemap URL.
- sitemap_url = urlresolvers.reverse('django.contrib.sitemaps.views.index')
- except urlresolvers.NoReverseMatch:
- try:
- # Next, try for the "global" sitemap URL.
- sitemap_url = urlresolvers.reverse('django.contrib.sitemaps.views.sitemap')
- except urlresolvers.NoReverseMatch:
- pass
-
- if sitemap_url is None:
- raise SitemapNotFound("You didn't provide a sitemap_url, and the sitemap URL couldn't be auto-detected.")
-
- from django.contrib.sites.models import Site
- current_site = Site.objects.get_current()
- url = "http://%s%s" % (current_site.domain, sitemap_url)
- params = urlencode({'sitemap':url})
- urlopen("%s?%s" % (ping_url, params))
-
-class Sitemap(object):
- # This limit is defined by Google. See the index documentation at
- # http://sitemaps.org/protocol.php#index.
- limit = 50000
-
- # If protocol is None, the URLs in the sitemap will use the protocol
- # with which the sitemap was requested.
- protocol = None
-
- def __get(self, name, obj, default=None):
- try:
- attr = getattr(self, name)
- except AttributeError:
- return default
- if callable(attr):
- return attr(obj)
- return attr
-
- def items(self):
- return []
-
- def location(self, obj):
- return obj.get_absolute_url()
-
- def _get_paginator(self):
- return paginator.Paginator(self.items(), self.limit)
- paginator = property(_get_paginator)
-
- def get_urls(self, page=1, site=None, protocol=None):
- # Determine protocol
- if self.protocol is not None:
- protocol = self.protocol
- if protocol is None:
- protocol = 'http'
-
- # Determine domain
- if site is None:
- if Site._meta.installed:
- try:
- site = Site.objects.get_current()
- except Site.DoesNotExist:
- pass
- if site is None:
- raise ImproperlyConfigured("To use sitemaps, either enable the sites framework or pass a Site/RequestSite object in your view.")
- domain = site.domain
-
- urls = []
- for item in self.paginator.page(page).object_list:
- loc = "%s://%s%s" % (protocol, domain, self.__get('location', item))
- priority = self.__get('priority', item, None)
- url_info = {
- 'item': item,
- 'location': loc,
- 'lastmod': self.__get('lastmod', item, None),
- 'changefreq': self.__get('changefreq', item, None),
- 'priority': str(priority if priority is not None else ''),
- }
- urls.append(url_info)
- return urls
-
-class FlatPageSitemap(Sitemap):
- def items(self):
- current_site = Site.objects.get_current()
- return current_site.flatpage_set.filter(registration_required=False)
-
-class GenericSitemap(Sitemap):
- priority = None
- changefreq = None
-
- def __init__(self, info_dict, priority=None, changefreq=None):
- self.queryset = info_dict['queryset']
- self.date_field = info_dict.get('date_field', None)
- self.priority = priority
- self.changefreq = changefreq
-
- def items(self):
- # Make sure to return a clone; we don't want premature evaluation.
- return self.queryset.filter()
-
- def lastmod(self, item):
- if self.date_field is not None:
- return getattr(item, self.date_field)
- return None
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/management/__init__.py b/lib/python2.7/site-packages/django/contrib/sitemaps/management/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/management/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/management/commands/__init__.py b/lib/python2.7/site-packages/django/contrib/sitemaps/management/commands/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/management/commands/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/management/commands/ping_google.py b/lib/python2.7/site-packages/django/contrib/sitemaps/management/commands/ping_google.py
deleted file mode 100644
index 7fa1690..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/management/commands/ping_google.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from django.core.management.base import BaseCommand
-from django.contrib.sitemaps import ping_google
-
-
-class Command(BaseCommand):
- help = "Ping Google with an updated sitemap, pass optional url of sitemap"
-
- def execute(self, *args, **options):
- if len(args) == 1:
- sitemap_url = args[0]
- else:
- sitemap_url = None
- ping_google(sitemap_url=sitemap_url)
-
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/models.py b/lib/python2.7/site-packages/django/contrib/sitemaps/models.py
deleted file mode 100644
index 7ff128f..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/models.py
+++ /dev/null
@@ -1 +0,0 @@
-# This file intentionally left blank \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/templates/sitemap.xml b/lib/python2.7/site-packages/django/contrib/sitemaps/templates/sitemap.xml
deleted file mode 100644
index 30ca3c0..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/templates/sitemap.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-{% spaceless %}
-{% for url in urlset %}
- <url>
- <loc>{{ url.location }}</loc>
- {% if url.lastmod %}<lastmod>{{ url.lastmod|date:"Y-m-d" }}</lastmod>{% endif %}
- {% if url.changefreq %}<changefreq>{{ url.changefreq }}</changefreq>{% endif %}
- {% if url.priority %}<priority>{{ url.priority }}</priority>{% endif %}
- </url>
-{% endfor %}
-{% endspaceless %}
-</urlset>
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/templates/sitemap_index.xml b/lib/python2.7/site-packages/django/contrib/sitemaps/templates/sitemap_index.xml
deleted file mode 100644
index f19e622..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/templates/sitemap_index.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-{% for location in sitemaps %}<sitemap><loc>{{ location }}</loc></sitemap>{% endfor %}
-</sitemapindex>
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/__init__.py b/lib/python2.7/site-packages/django/contrib/sitemaps/tests/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/base.py b/lib/python2.7/site-packages/django/contrib/sitemaps/tests/base.py
deleted file mode 100644
index 8e027d4..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/base.py
+++ /dev/null
@@ -1,34 +0,0 @@
-from django.contrib.sites.models import Site
-from django.core.cache import cache
-from django.db import models
-from django.test import TestCase
-
-
-class TestModel(models.Model):
- "A test model for "
- name = models.CharField(max_length=100)
-
- class Meta:
- app_label = 'sitemaps'
-
- def __unicode__(self):
- return self.name
-
- def get_absolute_url(self):
- return '/testmodel/%s/' % self.id
-
-
-class SitemapTestsBase(TestCase):
- protocol = 'http'
- domain = 'example.com' if Site._meta.installed else 'testserver'
- urls = 'django.contrib.sitemaps.tests.urls.http'
-
- def setUp(self):
- self.base_url = '%s://%s' % (self.protocol, self.domain)
- self.old_Site_meta_installed = Site._meta.installed
- cache.clear()
- # Create an object for sitemap content.
- TestModel.objects.create(name='Test Object')
-
- def tearDown(self):
- Site._meta.installed = self.old_Site_meta_installed
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/templates/custom_sitemap.xml b/lib/python2.7/site-packages/django/contrib/sitemaps/tests/templates/custom_sitemap.xml
deleted file mode 100644
index 594aef1..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/templates/custom_sitemap.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- This is a customised template -->
-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-{% spaceless %}
-{% for url in urlset %}
- <url>
- <loc>{{ url.location }}</loc>
- {% if url.lastmod %}<lastmod>{{ url.lastmod|date:"Y-m-d" }}</lastmod>{% endif %}
- {% if url.changefreq %}<changefreq>{{ url.changefreq }}</changefreq>{% endif %}
- {% if url.priority %}<priority>{{ url.priority }}</priority>{% endif %}
- </url>
-{% endfor %}
-{% endspaceless %}
-</urlset>
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/templates/custom_sitemap_index.xml b/lib/python2.7/site-packages/django/contrib/sitemaps/tests/templates/custom_sitemap_index.xml
deleted file mode 100644
index 406c6b7..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/templates/custom_sitemap_index.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- This is a customised template -->
-<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-{% for location in sitemaps %}<sitemap><loc>{{ location }}</loc></sitemap>{% endfor %}
-</sitemapindex>
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/test_flatpages.py b/lib/python2.7/site-packages/django/contrib/sitemaps/tests/test_flatpages.py
deleted file mode 100644
index 930f24f..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/test_flatpages.py
+++ /dev/null
@@ -1,39 +0,0 @@
-from __future__ import unicode_literals
-
-from django.conf import settings
-from django.utils.unittest import skipUnless
-
-from .base import SitemapTestsBase
-
-class FlatpagesSitemapTests(SitemapTestsBase):
-
- @skipUnless("django.contrib.flatpages" in settings.INSTALLED_APPS,
- "django.contrib.flatpages app not installed.")
- def test_flatpage_sitemap(self):
- "Basic FlatPage sitemap test"
-
- # Import FlatPage inside the test so that when django.contrib.flatpages
- # is not installed we don't get problems trying to delete Site
- # objects (FlatPage has an M2M to Site, Site.delete() tries to
- # delete related objects, but the M2M table doesn't exist.
- from django.contrib.flatpages.models import FlatPage
-
- public = FlatPage.objects.create(
- url='/public/',
- title='Public Page',
- enable_comments=True,
- registration_required=False,
- )
- public.sites.add(settings.SITE_ID)
- private = FlatPage.objects.create(
- url='/private/',
- title='Private Page',
- enable_comments=True,
- registration_required=True
- )
- private.sites.add(settings.SITE_ID)
- response = self.client.get('/flatpages/sitemap.xml')
- # Public flatpage should be in the sitemap
- self.assertContains(response, '<loc>%s%s</loc>' % (self.base_url, public.url))
- # Private flatpage should not be in the sitemap
- self.assertNotContains(response, '<loc>%s%s</loc>' % (self.base_url, private.url))
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/test_generic.py b/lib/python2.7/site-packages/django/contrib/sitemaps/tests/test_generic.py
deleted file mode 100644
index 5b26573..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/test_generic.py
+++ /dev/null
@@ -1,22 +0,0 @@
-from __future__ import unicode_literals
-
-from django.test.utils import override_settings
-
-from .base import TestModel, SitemapTestsBase
-
-
-@override_settings(ABSOLUTE_URL_OVERRIDES={})
-class GenericViewsSitemapTests(SitemapTestsBase):
-
- def test_generic_sitemap(self):
- "A minimal generic sitemap can be rendered"
- response = self.client.get('/generic/sitemap.xml')
- expected = ''
- for pk in TestModel.objects.values_list("id", flat=True):
- expected += "<url><loc>%s/testmodel/%s/</loc></url>" % (self.base_url, pk)
- expected_content = """<?xml version="1.0" encoding="UTF-8"?>
-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-%s
-</urlset>
-""" % expected
- self.assertXMLEqual(response.content.decode('utf-8'), expected_content)
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/test_http.py b/lib/python2.7/site-packages/django/contrib/sitemaps/tests/test_http.py
deleted file mode 100644
index a99025e..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/test_http.py
+++ /dev/null
@@ -1,153 +0,0 @@
-from __future__ import unicode_literals
-
-import os
-from datetime import date
-
-from django.conf import settings
-from django.contrib.sitemaps import Sitemap, GenericSitemap
-from django.contrib.sites.models import Site
-from django.core.exceptions import ImproperlyConfigured
-from django.test.utils import override_settings
-from django.utils.unittest import skipUnless
-from django.utils.formats import localize
-from django.utils._os import upath
-from django.utils.translation import activate, deactivate
-
-from .base import TestModel, SitemapTestsBase
-
-
-class HTTPSitemapTests(SitemapTestsBase):
-
- def test_simple_sitemap_index(self):
- "A simple sitemap index can be rendered"
- response = self.client.get('/simple/index.xml')
- expected_content = """<?xml version="1.0" encoding="UTF-8"?>
-<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-<sitemap><loc>%s/simple/sitemap-simple.xml</loc></sitemap>
-</sitemapindex>
-""" % self.base_url
- self.assertXMLEqual(response.content.decode('utf-8'), expected_content)
-
- @override_settings(
- TEMPLATE_DIRS=(os.path.join(os.path.dirname(upath(__file__)), 'templates'),)
- )
- def test_simple_sitemap_custom_index(self):
- "A simple sitemap index can be rendered with a custom template"
- response = self.client.get('/simple/custom-index.xml')
- expected_content = """<?xml version="1.0" encoding="UTF-8"?>
-<!-- This is a customised template -->
-<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-<sitemap><loc>%s/simple/sitemap-simple.xml</loc></sitemap>
-</sitemapindex>
-""" % self.base_url
- self.assertXMLEqual(response.content.decode('utf-8'), expected_content)
-
-
- def test_simple_sitemap_section(self):
- "A simple sitemap section can be rendered"
- response = self.client.get('/simple/sitemap-simple.xml')
- expected_content = """<?xml version="1.0" encoding="UTF-8"?>
-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-<url><loc>%s/location/</loc><lastmod>%s</lastmod><changefreq>never</changefreq><priority>0.5</priority></url>
-</urlset>
-""" % (self.base_url, date.today())
- self.assertXMLEqual(response.content.decode('utf-8'), expected_content)
-
- def test_simple_sitemap(self):
- "A simple sitemap can be rendered"
- response = self.client.get('/simple/sitemap.xml')
- expected_content = """<?xml version="1.0" encoding="UTF-8"?>
-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-<url><loc>%s/location/</loc><lastmod>%s</lastmod><changefreq>never</changefreq><priority>0.5</priority></url>
-</urlset>
-""" % (self.base_url, date.today())
- self.assertXMLEqual(response.content.decode('utf-8'), expected_content)
-
- @override_settings(
- TEMPLATE_DIRS=(os.path.join(os.path.dirname(upath(__file__)), 'templates'),)
- )
- def test_simple_custom_sitemap(self):
- "A simple sitemap can be rendered with a custom template"
- response = self.client.get('/simple/custom-sitemap.xml')
- expected_content = """<?xml version="1.0" encoding="UTF-8"?>
-<!-- This is a customised template -->
-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-<url><loc>%s/location/</loc><lastmod>%s</lastmod><changefreq>never</changefreq><priority>0.5</priority></url>
-</urlset>
-""" % (self.base_url, date.today())
- self.assertXMLEqual(response.content.decode('utf-8'), expected_content)
-
- @skipUnless(settings.USE_I18N, "Internationalization is not enabled")
- @override_settings(USE_L10N=True)
- def test_localized_priority(self):
- "The priority value should not be localized (Refs #14164)"
- activate('fr')
- self.assertEqual('0,3', localize(0.3))
-
- # Retrieve the sitemap. Check that priorities
- # haven't been rendered in localized format
- response = self.client.get('/simple/sitemap.xml')
- self.assertContains(response, '<priority>0.5</priority>')
- self.assertContains(response, '<lastmod>%s</lastmod>' % date.today())
- deactivate()
-
- def test_requestsite_sitemap(self):
- # Make sure hitting the flatpages sitemap without the sites framework
- # installed doesn't raise an exception
- Site._meta.installed = False
- response = self.client.get('/simple/sitemap.xml')
- expected_content = """<?xml version="1.0" encoding="UTF-8"?>
-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-<url><loc>http://testserver/location/</loc><lastmod>%s</lastmod><changefreq>never</changefreq><priority>0.5</priority></url>
-</urlset>
-""" % date.today()
- self.assertXMLEqual(response.content.decode('utf-8'), expected_content)
-
- @skipUnless("django.contrib.sites" in settings.INSTALLED_APPS,
- "django.contrib.sites app not installed.")
- def test_sitemap_get_urls_no_site_1(self):
- """
- Check we get ImproperlyConfigured if we don't pass a site object to
- Sitemap.get_urls and no Site objects exist
- """
- Site.objects.all().delete()
- self.assertRaises(ImproperlyConfigured, Sitemap().get_urls)
-
- def test_sitemap_get_urls_no_site_2(self):
- """
- Check we get ImproperlyConfigured when we don't pass a site object to
- Sitemap.get_urls if Site objects exists, but the sites framework is not
- actually installed.
- """
- Site._meta.installed = False
- self.assertRaises(ImproperlyConfigured, Sitemap().get_urls)
-
- def test_sitemap_item(self):
- """
- Check to make sure that the raw item is included with each
- Sitemap.get_url() url result.
- """
- test_sitemap = GenericSitemap({'queryset': TestModel.objects.all()})
- def is_testmodel(url):
- return isinstance(url['item'], TestModel)
- item_in_url_info = all(map(is_testmodel, test_sitemap.get_urls()))
- self.assertTrue(item_in_url_info)
-
- def test_cached_sitemap_index(self):
- """
- Check that a cached sitemap index can be rendered (#2713).
- """
- response = self.client.get('/cached/index.xml')
- expected_content = """<?xml version="1.0" encoding="UTF-8"?>
-<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-<sitemap><loc>%s/cached/sitemap-simple.xml</loc></sitemap>
-</sitemapindex>
-""" % self.base_url
- self.assertXMLEqual(response.content.decode('utf-8'), expected_content)
-
- def test_x_robots_sitemap(self):
- response = self.client.get('/simple/index.xml')
- self.assertEqual(response['X-Robots-Tag'], 'noindex, noodp, noarchive')
-
- response = self.client.get('/simple/sitemap.xml')
- self.assertEqual(response['X-Robots-Tag'], 'noindex, noodp, noarchive')
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/test_https.py b/lib/python2.7/site-packages/django/contrib/sitemaps/tests/test_https.py
deleted file mode 100644
index baad02a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/test_https.py
+++ /dev/null
@@ -1,56 +0,0 @@
-from __future__ import unicode_literals
-
-from datetime import date
-
-from django.test.utils import override_settings
-
-from .base import SitemapTestsBase
-
-class HTTPSSitemapTests(SitemapTestsBase):
- protocol = 'https'
- urls = 'django.contrib.sitemaps.tests.urls.https'
-
- def test_secure_sitemap_index(self):
- "A secure sitemap index can be rendered"
- response = self.client.get('/secure/index.xml')
- expected_content = """<?xml version="1.0" encoding="UTF-8"?>
-<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-<sitemap><loc>%s/secure/sitemap-simple.xml</loc></sitemap>
-</sitemapindex>
-""" % self.base_url
- self.assertXMLEqual(response.content.decode('utf-8'), expected_content)
-
- def test_secure_sitemap_section(self):
- "A secure sitemap section can be rendered"
- response = self.client.get('/secure/sitemap-simple.xml')
- expected_content = """<?xml version="1.0" encoding="UTF-8"?>
-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-<url><loc>%s/location/</loc><lastmod>%s</lastmod><changefreq>never</changefreq><priority>0.5</priority></url>
-</urlset>
-""" % (self.base_url, date.today())
- self.assertXMLEqual(response.content.decode('utf-8'), expected_content)
-
-
-@override_settings(SECURE_PROXY_SSL_HEADER=False)
-class HTTPSDetectionSitemapTests(SitemapTestsBase):
- extra = {'wsgi.url_scheme': 'https'}
-
- def test_sitemap_index_with_https_request(self):
- "A sitemap index requested in HTTPS is rendered with HTTPS links"
- response = self.client.get('/simple/index.xml', **self.extra)
- expected_content = """<?xml version="1.0" encoding="UTF-8"?>
-<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-<sitemap><loc>%s/simple/sitemap-simple.xml</loc></sitemap>
-</sitemapindex>
-""" % self.base_url.replace('http://', 'https://')
- self.assertXMLEqual(response.content.decode('utf-8'), expected_content)
-
- def test_sitemap_section_with_https_request(self):
- "A sitemap section requested in HTTPS is rendered with HTTPS links"
- response = self.client.get('/simple/sitemap-simple.xml', **self.extra)
- expected_content = """<?xml version="1.0" encoding="UTF-8"?>
-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-<url><loc>%s/location/</loc><lastmod>%s</lastmod><changefreq>never</changefreq><priority>0.5</priority></url>
-</urlset>
-""" % (self.base_url.replace('http://', 'https://'), date.today())
- self.assertXMLEqual(response.content.decode('utf-8'), expected_content)
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/urls/__init__.py b/lib/python2.7/site-packages/django/contrib/sitemaps/tests/urls/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/urls/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/urls/http.py b/lib/python2.7/site-packages/django/contrib/sitemaps/tests/urls/http.py
deleted file mode 100644
index a8b804f..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/urls/http.py
+++ /dev/null
@@ -1,45 +0,0 @@
-from datetime import datetime
-from django.conf.urls import patterns, url
-from django.contrib.sitemaps import Sitemap, GenericSitemap, FlatPageSitemap, views
-from django.views.decorators.cache import cache_page
-
-from django.contrib.sitemaps.tests.base import TestModel
-
-
-class SimpleSitemap(Sitemap):
- changefreq = "never"
- priority = 0.5
- location = '/location/'
- lastmod = datetime.now()
-
- def items(self):
- return [object()]
-
-simple_sitemaps = {
- 'simple': SimpleSitemap,
-}
-
-generic_sitemaps = {
- 'generic': GenericSitemap({'queryset': TestModel.objects.all()}),
-}
-
-flatpage_sitemaps = {
- 'flatpages': FlatPageSitemap,
-}
-
-urlpatterns = patterns('django.contrib.sitemaps.views',
- (r'^simple/index\.xml$', 'index', {'sitemaps': simple_sitemaps}),
- (r'^simple/custom-index\.xml$', 'index',
- {'sitemaps': simple_sitemaps, 'template_name': 'custom_sitemap_index.xml'}),
- (r'^simple/sitemap-(?P<section>.+)\.xml$', 'sitemap',
- {'sitemaps': simple_sitemaps}),
- (r'^simple/sitemap\.xml$', 'sitemap', {'sitemaps': simple_sitemaps}),
- (r'^simple/custom-sitemap\.xml$', 'sitemap',
- {'sitemaps': simple_sitemaps, 'template_name': 'custom_sitemap.xml'}),
- (r'^generic/sitemap\.xml$', 'sitemap', {'sitemaps': generic_sitemaps}),
- (r'^flatpages/sitemap\.xml$', 'sitemap', {'sitemaps': flatpage_sitemaps}),
- url(r'^cached/index\.xml$', cache_page(1)(views.index),
- {'sitemaps': simple_sitemaps, 'sitemap_url_name': 'cached_sitemap'}),
- url(r'^cached/sitemap-(?P<section>.+)\.xml', cache_page(1)(views.sitemap),
- {'sitemaps': simple_sitemaps}, name='cached_sitemap')
-)
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/urls/https.py b/lib/python2.7/site-packages/django/contrib/sitemaps/tests/urls/https.py
deleted file mode 100644
index a1b4b93..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/tests/urls/https.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from django.conf.urls import patterns
-
-from .http import SimpleSitemap
-
-class HTTPSSitemap(SimpleSitemap):
- protocol = 'https'
-
-secure_sitemaps = {
- 'simple': HTTPSSitemap,
-}
-
-urlpatterns = patterns('django.contrib.sitemaps.views',
- (r'^secure/index\.xml$', 'index', {'sitemaps': secure_sitemaps}),
- (r'^secure/sitemap-(?P<section>.+)\.xml$', 'sitemap',
- {'sitemaps': secure_sitemaps}),
-)
diff --git a/lib/python2.7/site-packages/django/contrib/sitemaps/views.py b/lib/python2.7/site-packages/django/contrib/sitemaps/views.py
deleted file mode 100644
index 95bc7ea..0000000
--- a/lib/python2.7/site-packages/django/contrib/sitemaps/views.py
+++ /dev/null
@@ -1,81 +0,0 @@
-import warnings
-from functools import wraps
-
-from django.contrib.sites.models import get_current_site
-from django.core import urlresolvers
-from django.core.paginator import EmptyPage, PageNotAnInteger
-from django.http import Http404
-from django.template.response import TemplateResponse
-from django.utils import six
-
-def x_robots_tag(func):
- @wraps(func)
- def inner(request, *args, **kwargs):
- response = func(request, *args, **kwargs)
- response['X-Robots-Tag'] = 'noindex, noodp, noarchive'
- return response
- return inner
-
-@x_robots_tag
-def index(request, sitemaps,
- template_name='sitemap_index.xml', content_type='application/xml',
- sitemap_url_name='django.contrib.sitemaps.views.sitemap',
- mimetype=None):
-
- if mimetype:
- warnings.warn("The mimetype keyword argument is deprecated, use "
- "content_type instead", DeprecationWarning, stacklevel=2)
- content_type = mimetype
-
- req_protocol = 'https' if request.is_secure() else 'http'
- req_site = get_current_site(request)
-
- sites = []
- for section, site in sitemaps.items():
- if callable(site):
- site = site()
- protocol = req_protocol if site.protocol is None else site.protocol
- sitemap_url = urlresolvers.reverse(
- sitemap_url_name, kwargs={'section': section})
- absolute_url = '%s://%s%s' % (protocol, req_site.domain, sitemap_url)
- sites.append(absolute_url)
- for page in range(2, site.paginator.num_pages + 1):
- sites.append('%s?p=%s' % (absolute_url, page))
-
- return TemplateResponse(request, template_name, {'sitemaps': sites},
- content_type=content_type)
-
-@x_robots_tag
-def sitemap(request, sitemaps, section=None,
- template_name='sitemap.xml', content_type='application/xml',
- mimetype=None):
-
- if mimetype:
- warnings.warn("The mimetype keyword argument is deprecated, use "
- "content_type instead", DeprecationWarning, stacklevel=2)
- content_type = mimetype
-
- req_protocol = 'https' if request.is_secure() else 'http'
- req_site = get_current_site(request)
-
- if section is not None:
- if section not in sitemaps:
- raise Http404("No sitemap available for section: %r" % section)
- maps = [sitemaps[section]]
- else:
- maps = list(six.itervalues(sitemaps))
- page = request.GET.get("p", 1)
-
- urls = []
- for site in maps:
- try:
- if callable(site):
- site = site()
- urls.extend(site.get_urls(page=page, site=req_site,
- protocol=req_protocol))
- except EmptyPage:
- raise Http404("Page %s empty" % page)
- except PageNotAnInteger:
- raise Http404("No page '%s'" % page)
- return TemplateResponse(request, template_name, {'urlset': urls},
- content_type=content_type)
diff --git a/lib/python2.7/site-packages/django/contrib/sites/__init__.py b/lib/python2.7/site-packages/django/contrib/sites/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/sites/admin.py b/lib/python2.7/site-packages/django/contrib/sites/admin.py
deleted file mode 100644
index 2442c24..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/admin.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from django.contrib import admin
-from django.contrib.sites.models import Site
-
-
-class SiteAdmin(admin.ModelAdmin):
- list_display = ('domain', 'name')
- search_fields = ('domain', 'name')
-
-admin.site.register(Site, SiteAdmin) \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ar/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/ar/LC_MESSAGES/django.mo
deleted file mode 100644
index 8b8dae5..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ar/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ar/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/ar/LC_MESSAGES/django.po
deleted file mode 100644
index 7281f65..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ar/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,40 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# dado_eyad <d.eyad.t@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-28 09:29+0000\n"
-"Last-Translator: dado_eyad <d.eyad.t@gmail.com>\n"
-"Language-Team: Arabic (http://www.transifex.com/projects/p/django/language/"
-"ar/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ar\n"
-"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
-"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "اسم النطاق يجب أن لا يحتوي على فراغات أو فراغات طويلة tabs."
-
-#: models.py:58
-msgid "domain name"
-msgstr "اسم النطاق"
-
-#: models.py:60
-msgid "display name"
-msgstr "اسم العرض"
-
-#: models.py:65
-msgid "site"
-msgstr "موقع"
-
-#: models.py:66
-msgid "sites"
-msgstr "المواقع"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/az/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/az/LC_MESSAGES/django.mo
deleted file mode 100644
index b2323c6..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/az/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/az/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/az/LC_MESSAGES/django.po
deleted file mode 100644
index 0cd36fd..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/az/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ali Ismayilov <ali@ismailov.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Azerbaijani (http://www.transifex.com/projects/p/django/"
-"language/az/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: az\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "domen"
-
-#: models.py:60
-msgid "display name"
-msgstr "adı"
-
-#: models.py:65
-msgid "site"
-msgstr "sayt"
-
-#: models.py:66
-msgid "sites"
-msgstr "saytlar"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/be/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/be/LC_MESSAGES/django.mo
deleted file mode 100644
index 59d1d78..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/be/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/be/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/be/LC_MESSAGES/django.po
deleted file mode 100644
index 941ae8e..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/be/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Belarusian (http://www.transifex.com/projects/p/django/"
-"language/be/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: be\n"
-"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "назва дамэна"
-
-#: models.py:60
-msgid "display name"
-msgstr "бачная назва"
-
-#: models.py:65
-msgid "site"
-msgstr "сайт"
-
-#: models.py:66
-msgid "sites"
-msgstr "сайты"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/bg/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/bg/LC_MESSAGES/django.mo
deleted file mode 100644
index 25e38e1..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/bg/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/bg/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/bg/LC_MESSAGES/django.po
deleted file mode 100644
index 89d279b..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/bg/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bulgarian (http://www.transifex.com/projects/p/django/"
-"language/bg/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bg\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "име на домейна"
-
-#: models.py:60
-msgid "display name"
-msgstr "наименование"
-
-#: models.py:65
-msgid "site"
-msgstr "сайт"
-
-#: models.py:66
-msgid "sites"
-msgstr "сайтове"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/bn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/bn/LC_MESSAGES/django.mo
deleted file mode 100644
index c7ca43a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/bn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/bn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/bn/LC_MESSAGES/django.po
deleted file mode 100644
index 55b47fa..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/bn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bengali (http://www.transifex.com/projects/p/django/language/"
-"bn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "ডোমেইন নাম"
-
-#: models.py:60
-msgid "display name"
-msgstr "ডিসপ্লে নাম"
-
-#: models.py:65
-msgid "site"
-msgstr "সাইট"
-
-#: models.py:66
-msgid "sites"
-msgstr "সাইটসমূহ"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/br/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/br/LC_MESSAGES/django.mo
deleted file mode 100644
index c7bcf13..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/br/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/br/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/br/LC_MESSAGES/django.po
deleted file mode 100644
index 3b2fa9c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/br/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Fulup <fulup.jakez@gmail.com>, 2012
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Breton (http://www.transifex.com/projects/p/django/language/"
-"br/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: br\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "anv domani"
-
-#: models.py:60
-msgid "display name"
-msgstr "anv da ziskouez"
-
-#: models.py:65
-msgid "site"
-msgstr "lec'hienn"
-
-#: models.py:66
-msgid "sites"
-msgstr "lec'hiennoù"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/bs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/bs/LC_MESSAGES/django.mo
deleted file mode 100644
index f0b4be9..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/bs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/bs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/bs/LC_MESSAGES/django.po
deleted file mode 100644
index 2524ae6..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/bs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Bosnian (http://www.transifex.com/projects/p/django/language/"
-"bs/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: bs\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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "ime domena"
-
-#: models.py:60
-msgid "display name"
-msgstr "prikazano ime"
-
-#: models.py:65
-msgid "site"
-msgstr "sajt"
-
-#: models.py:66
-msgid "sites"
-msgstr "sajtovi"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ca/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/ca/LC_MESSAGES/django.mo
deleted file mode 100644
index e6ca00a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ca/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ca/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/ca/LC_MESSAGES/django.po
deleted file mode 100644
index f48d3df..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ca/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antoni Aloy <aaloy@apsl.net>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-11 22:53+0000\n"
-"Last-Translator: Antoni Aloy <aaloy@apsl.net>\n"
-"Language-Team: Catalan (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "El nom de domini no pot contenir cap espai ni tabuladors."
-
-#: models.py:58
-msgid "domain name"
-msgstr "nom del domini"
-
-#: models.py:60
-msgid "display name"
-msgstr "nom per mostrar"
-
-#: models.py:65
-msgid "site"
-msgstr "lloc"
-
-#: models.py:66
-msgid "sites"
-msgstr "llocs"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/cs/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/cs/LC_MESSAGES/django.mo
deleted file mode 100644
index 805004d..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/cs/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/cs/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/cs/LC_MESSAGES/django.po
deleted file mode 100644
index a0083f4..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/cs/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Vlada Macek <macek@sandbox.cz>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 11:52+0000\n"
-"Last-Translator: Vlada Macek <macek@sandbox.cz>\n"
-"Language-Team: Czech (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Název domény nemůže obsahovat mezery ani tabulátory."
-
-#: models.py:58
-msgid "domain name"
-msgstr "název domény"
-
-#: models.py:60
-msgid "display name"
-msgstr "zobrazený název"
-
-#: models.py:65
-msgid "site"
-msgstr "web"
-
-#: models.py:66
-msgid "sites"
-msgstr "weby"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/cy/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/cy/LC_MESSAGES/django.mo
deleted file mode 100644
index 419ed46..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/cy/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/cy/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/cy/LC_MESSAGES/django.po
deleted file mode 100644
index 5159083..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/cy/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,40 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Maredudd ap Gwyndaf <maredudd@maredudd.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-12 20:25+0000\n"
-"Last-Translator: Maredudd ap Gwyndaf <maredudd@maredudd.com>\n"
-"Language-Team: Welsh (http://www.transifex.com/projects/p/django/language/"
-"cy/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cy\n"
-"Plural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != "
-"11) ? 2 : 3;\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Ni all yr enw parth gynnwys bylchau neu dabiau."
-
-#: models.py:58
-msgid "domain name"
-msgstr "enw parth"
-
-#: models.py:60
-msgid "display name"
-msgstr "enw arddangos"
-
-#: models.py:65
-msgid "site"
-msgstr "safle"
-
-#: models.py:66
-msgid "sites"
-msgstr "safleoedd"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/da/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/da/LC_MESSAGES/django.mo
deleted file mode 100644
index 948deae..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/da/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/da/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/da/LC_MESSAGES/django.po
deleted file mode 100644
index 6a49bfa..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/da/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Erik Wognsen <r4mses@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-06-18 15:05+0000\n"
-"Last-Translator: Erik Wognsen <r4mses@gmail.com>\n"
-"Language-Team: Danish (http://www.transifex.com/projects/p/django/language/"
-"da/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: da\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Domænenavnet må ikke indeholde mellemrum eller tabulatorer."
-
-#: models.py:58
-msgid "domain name"
-msgstr "domænenavn"
-
-#: models.py:60
-msgid "display name"
-msgstr "vist navn"
-
-#: models.py:65
-msgid "site"
-msgstr "website"
-
-#: models.py:66
-msgid "sites"
-msgstr "websites"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/de/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/de/LC_MESSAGES/django.mo
deleted file mode 100644
index 287407a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/de/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/de/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/de/LC_MESSAGES/django.po
deleted file mode 100644
index 7f39b08..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/de/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011,2013
-# Markus Holtermann <inyoka@markusholtermann.eu>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-06-14 15:05+0000\n"
-"Last-Translator: Jannis Leidel <jannis@leidel.info>\n"
-"Language-Team: German (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Der Domainname darf keine Leerzeichen oder Tabs enthalten."
-
-#: models.py:58
-msgid "domain name"
-msgstr "Domainname"
-
-#: models.py:60
-msgid "display name"
-msgstr "Anzeigename"
-
-#: models.py:65
-msgid "site"
-msgstr "Seite"
-
-#: models.py:66
-msgid "sites"
-msgstr "Seiten"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/el/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/el/LC_MESSAGES/django.mo
deleted file mode 100644
index b648906..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/el/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/el/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/el/LC_MESSAGES/django.po
deleted file mode 100644
index ed5b489..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/el/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Greek (http://www.transifex.com/projects/p/django/language/"
-"el/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: el\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "όνομα χώρου"
-
-#: models.py:60
-msgid "display name"
-msgstr "εμφανιζόμενο όνομα"
-
-#: models.py:65
-msgid "site"
-msgstr "ιστότοπος"
-
-#: models.py:66
-msgid "sites"
-msgstr "ιστότοποι"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/en/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/en/LC_MESSAGES/django.mo
deleted file mode 100644
index 08a7b68..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/en/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/en/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/en/LC_MESSAGES/django.po
deleted file mode 100644
index c84cad0..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/en/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,34 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2010-05-13 15:35+0200\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: en\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr ""
-
-#: models.py:60
-msgid "display name"
-msgstr ""
-
-#: models.py:65
-msgid "site"
-msgstr ""
-
-#: models.py:66
-msgid "sites"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/en_GB/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/en_GB/LC_MESSAGES/django.mo
deleted file mode 100644
index 2123b08..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/en_GB/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/en_GB/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/en_GB/LC_MESSAGES/django.po
deleted file mode 100644
index d785680..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/en_GB/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ross Poulton <ross@rossp.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/"
-"django/language/en_GB/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: en_GB\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "domain name"
-
-#: models.py:60
-msgid "display name"
-msgstr "display name"
-
-#: models.py:65
-msgid "site"
-msgstr "site"
-
-#: models.py:66
-msgid "sites"
-msgstr "sites"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/eo/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/eo/LC_MESSAGES/django.mo
deleted file mode 100644
index 583793b..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/eo/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/eo/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/eo/LC_MESSAGES/django.po
deleted file mode 100644
index 3aab613..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/eo/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Baptiste <baptiste+transifex@darthenay.fr>, 2013
-# kristjan <kristjan.schmidt@googlemail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-06-05 06:29+0000\n"
-"Last-Translator: Baptiste <baptiste+transifex@darthenay.fr>\n"
-"Language-Team: Esperanto (http://www.transifex.com/projects/p/django/"
-"language/eo/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eo\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Tiu domajna nomo ne povas enteni nek spacojn nek tabojn."
-
-#: models.py:58
-msgid "domain name"
-msgstr "domajna nomo"
-
-#: models.py:60
-msgid "display name"
-msgstr "vidiga nomo"
-
-#: models.py:65
-msgid "site"
-msgstr "retejo"
-
-#: models.py:66
-msgid "sites"
-msgstr "retejoj"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/es/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/es/LC_MESSAGES/django.mo
deleted file mode 100644
index bc2afa0..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/es/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/es/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/es/LC_MESSAGES/django.po
deleted file mode 100644
index 9cce23b..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/es/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Antoni Aloy <aaloy@apsl.net>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-11 22:45+0000\n"
-"Last-Translator: Antoni Aloy <aaloy@apsl.net>\n"
-"Language-Team: Spanish (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "El nombre de dominio no puede contener espacios ni tabuladores"
-
-#: models.py:58
-msgid "domain name"
-msgstr "nombre de dominio"
-
-#: models.py:60
-msgid "display name"
-msgstr "nombre a mostrar"
-
-#: models.py:65
-msgid "site"
-msgstr "sitio"
-
-#: models.py:66
-msgid "sites"
-msgstr "sitios"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/es_AR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/es_AR/LC_MESSAGES/django.mo
deleted file mode 100644
index de12202..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/es_AR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/es_AR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/es_AR/LC_MESSAGES/django.po
deleted file mode 100644
index be397b4..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/es_AR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,40 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Ramiro Morales <cramm0@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-26 20:52+0000\n"
-"Last-Translator: Ramiro Morales <cramm0@gmail.com>\n"
-"Language-Team: Spanish (Argentina) (http://www.transifex.com/projects/p/"
-"django/language/es_AR/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_AR\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-"El nombre de dominio no puede incluir espacios ni marcas de tabulación."
-
-#: models.py:58
-msgid "domain name"
-msgstr "nombre de dominio"
-
-#: models.py:60
-msgid "display name"
-msgstr "nombre para visualizar"
-
-#: models.py:65
-msgid "site"
-msgstr "sitio"
-
-#: models.py:66
-msgid "sites"
-msgstr "sitios"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/es_MX/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/es_MX/LC_MESSAGES/django.mo
deleted file mode 100644
index 4545632..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/es_MX/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/es_MX/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/es_MX/LC_MESSAGES/django.po
deleted file mode 100644
index 7e2c3c5..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/es_MX/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Abraham Estrada <abraham.estrada@gmail.com>, 2011
-# Carlos Castro <carmoicast@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Spanish (Mexico) (http://www.transifex.com/projects/p/django/"
-"language/es_MX/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es_MX\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "nombre del dominio"
-
-#: models.py:60
-msgid "display name"
-msgstr "nombre visible"
-
-#: models.py:65
-msgid "site"
-msgstr "sitio"
-
-#: models.py:66
-msgid "sites"
-msgstr "sitios"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/et/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/et/LC_MESSAGES/django.mo
deleted file mode 100644
index bfb1680..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/et/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/et/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/et/LC_MESSAGES/django.po
deleted file mode 100644
index a3cf6ff..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/et/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# jannolii <jannolii@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-28 15:33+0000\n"
-"Last-Translator: jannolii <jannolii@gmail.com>\n"
-"Language-Team: Estonian (http://www.transifex.com/projects/p/django/language/"
-"et/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: et\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Domeeni nimes ei tohi olla ei tühikuid ega tabeldusmärke."
-
-#: models.py:58
-msgid "domain name"
-msgstr "domeeninimi"
-
-#: models.py:60
-msgid "display name"
-msgstr "hüüdnimi"
-
-#: models.py:65
-msgid "site"
-msgstr "sait"
-
-#: models.py:66
-msgid "sites"
-msgstr "saidid"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/eu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/eu/LC_MESSAGES/django.mo
deleted file mode 100644
index 0a690d8..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/eu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/eu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/eu/LC_MESSAGES/django.po
deleted file mode 100644
index 81c109e..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/eu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Ander Martínez <ander.basaundi@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-06-10 22:10+0000\n"
-"Last-Translator: Ander Martínez <ander.basaundi@gmail.com>\n"
-"Language-Team: Basque (http://www.transifex.com/projects/p/django/language/"
-"eu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: eu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Domeinu izenak ezin du zuriunerik edo tabuladorerik eduki."
-
-#: models.py:58
-msgid "domain name"
-msgstr "dominio izena"
-
-#: models.py:60
-msgid "display name"
-msgstr "erakusteko izena"
-
-#: models.py:65
-msgid "site"
-msgstr "web gunea"
-
-#: models.py:66
-msgid "sites"
-msgstr "web guneak"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/fa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/fa/LC_MESSAGES/django.mo
deleted file mode 100644
index 86d3d97..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/fa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/fa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/fa/LC_MESSAGES/django.po
deleted file mode 100644
index 2b7678f..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/fa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# M.Hossein Mojtahedi <Mhm5000@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-08-30 14:20+0000\n"
-"Last-Translator: M.Hossein Mojtahedi <Mhm5000@gmail.com>\n"
-"Language-Team: Persian (http://www.transifex.com/projects/p/django/language/"
-"fa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fa\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "نام دامنه نمی‌تواند حاوی فاصله یا پرش -tab- باشد."
-
-#: models.py:58
-msgid "domain name"
-msgstr "نام دامنه"
-
-#: models.py:60
-msgid "display name"
-msgstr "نام نمایش داده شده"
-
-#: models.py:65
-msgid "site"
-msgstr "وبگاه"
-
-#: models.py:66
-msgid "sites"
-msgstr "وبگاه‌ها"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/fi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/fi/LC_MESSAGES/django.mo
deleted file mode 100644
index 3e5e8ec..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/fi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/fi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/fi/LC_MESSAGES/django.po
deleted file mode 100644
index 80b3945..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/fi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Finnish (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "verkkotunnus"
-
-#: models.py:60
-msgid "display name"
-msgstr "näyttönimi"
-
-#: models.py:65
-msgid "site"
-msgstr "sivusto"
-
-#: models.py:66
-msgid "sites"
-msgstr "sivustot"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/fr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/fr/LC_MESSAGES/django.mo
deleted file mode 100644
index f458baf..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/fr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/fr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/fr/LC_MESSAGES/django.po
deleted file mode 100644
index 982c7d1..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/fr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# claudep <claude@2xlibre.net>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: French (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Le nom de domaine ne peut pas contenir d'espace ni de tabulation."
-
-#: models.py:58
-msgid "domain name"
-msgstr "nom de domaine"
-
-#: models.py:60
-msgid "display name"
-msgstr "nom à afficher"
-
-#: models.py:65
-msgid "site"
-msgstr "site"
-
-#: models.py:66
-msgid "sites"
-msgstr "sites"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/fy_NL/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/fy_NL/LC_MESSAGES/django.mo
deleted file mode 100644
index 38ee347..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/fy_NL/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/fy_NL/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/fy_NL/LC_MESSAGES/django.po
deleted file mode 100644
index 2148b7a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/fy_NL/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,31 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Django\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-03-23 02:43+0100\n"
-"PO-Revision-Date: 2011-03-15 15:49+0000\n"
-"Last-Translator: Django team\n"
-"Language-Team: English <en@li.org>\n"
-"Language: fy_NL\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"
-
-#: models.py:37
-msgid "domain name"
-msgstr ""
-
-#: models.py:38
-msgid "display name"
-msgstr ""
-
-#: models.py:43
-msgid "site"
-msgstr ""
-
-#: models.py:44
-msgid "sites"
-msgstr ""
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ga/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/ga/LC_MESSAGES/django.mo
deleted file mode 100644
index 5233aac..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ga/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ga/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/ga/LC_MESSAGES/django.po
deleted file mode 100644
index 7fa65eb..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ga/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Irish (http://www.transifex.com/projects/p/django/language/"
-"ga/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ga\n"
-"Plural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : "
-"4);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "ainm fearainn"
-
-#: models.py:60
-msgid "display name"
-msgstr "ainm taispeáinta"
-
-#: models.py:65
-msgid "site"
-msgstr "suíomh"
-
-#: models.py:66
-msgid "sites"
-msgstr "suíomhanna"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/gl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/gl/LC_MESSAGES/django.mo
deleted file mode 100644
index 3f716d7..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/gl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/gl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/gl/LC_MESSAGES/django.po
deleted file mode 100644
index 84f11ba..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/gl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Leandro Regueiro <leandro.regueiro@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-09-07 11:50+0000\n"
-"Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
-"Language-Team: Galician (http://www.transifex.com/projects/p/django/language/"
-"gl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: gl\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "O dominio non pode conter espazos nin tabulacións."
-
-#: models.py:58
-msgid "domain name"
-msgstr "dominio"
-
-#: models.py:60
-msgid "display name"
-msgstr "nome"
-
-#: models.py:65
-msgid "site"
-msgstr "sitio"
-
-#: models.py:66
-msgid "sites"
-msgstr "sitios"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/he/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/he/LC_MESSAGES/django.mo
deleted file mode 100644
index 3dddccb..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/he/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/he/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/he/LC_MESSAGES/django.po
deleted file mode 100644
index 636ef23..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/he/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Meir Kriheli <mkriheli@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-11-02 12:32+0000\n"
-"Last-Translator: Meir Kriheli <mkriheli@gmail.com>\n"
-"Language-Team: Hebrew (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "שם המתחם אינו יכול להכיל רווחים או טאבים."
-
-#: models.py:58
-msgid "domain name"
-msgstr "שם מתחם"
-
-#: models.py:60
-msgid "display name"
-msgstr "שם לתצוגה"
-
-#: models.py:65
-msgid "site"
-msgstr "אתר"
-
-#: models.py:66
-msgid "sites"
-msgstr "אתרים"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/hi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/hi/LC_MESSAGES/django.mo
deleted file mode 100644
index 9cd9968..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/hi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/hi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/hi/LC_MESSAGES/django.po
deleted file mode 100644
index 767b5da..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/hi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hindi (http://www.transifex.com/projects/p/django/language/"
-"hi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hi\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "डोमेन नाम"
-
-#: models.py:60
-msgid "display name"
-msgstr "प्रदर्शन नाम"
-
-#: models.py:65
-msgid "site"
-msgstr "साइट"
-
-#: models.py:66
-msgid "sites"
-msgstr "साइट"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/hr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/hr/LC_MESSAGES/django.mo
deleted file mode 100644
index 5dcce3c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/hr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/hr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/hr/LC_MESSAGES/django.po
deleted file mode 100644
index 5ebd3fb..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/hr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Croatian (http://www.transifex.com/projects/p/django/language/"
-"hr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hr\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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "ime domene"
-
-#: models.py:60
-msgid "display name"
-msgstr "ime za prikaz"
-
-#: models.py:65
-msgid "site"
-msgstr "stranica"
-
-#: models.py:66
-msgid "sites"
-msgstr "stranice"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/hu/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/hu/LC_MESSAGES/django.mo
deleted file mode 100644
index d5bac35..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/hu/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/hu/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/hu/LC_MESSAGES/django.po
deleted file mode 100644
index 69aec1b..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/hu/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Hungarian (http://www.transifex.com/projects/p/django/"
-"language/hu/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: hu\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "tartománynév"
-
-#: models.py:60
-msgid "display name"
-msgstr "megjelenítendő név"
-
-#: models.py:65
-msgid "site"
-msgstr "honlap"
-
-#: models.py:66
-msgid "sites"
-msgstr "honlapok"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/id/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/id/LC_MESSAGES/django.mo
deleted file mode 100644
index 03aad56..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/id/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/id/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/id/LC_MESSAGES/django.po
deleted file mode 100644
index d71635f..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/id/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Indonesian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "nama domain"
-
-#: models.py:60
-msgid "display name"
-msgstr "nama yang ditampilkan"
-
-#: models.py:65
-msgid "site"
-msgstr "situs"
-
-#: models.py:66
-msgid "sites"
-msgstr "situs"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/is/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/is/LC_MESSAGES/django.mo
deleted file mode 100644
index 3efafe1..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/is/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/is/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/is/LC_MESSAGES/django.po
deleted file mode 100644
index 196e19c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/is/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Icelandic (http://www.transifex.com/projects/p/django/"
-"language/is/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: is\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "lén"
-
-#: models.py:60
-msgid "display name"
-msgstr "birtingarnafn"
-
-#: models.py:65
-msgid "site"
-msgstr "vefur"
-
-#: models.py:66
-msgid "sites"
-msgstr "vefir"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/it/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/it/LC_MESSAGES/django.mo
deleted file mode 100644
index c58ec92..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/it/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/it/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/it/LC_MESSAGES/django.po
deleted file mode 100644
index 2cc342a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/it/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nicola Larosa <transifex@teknico.net>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Italian (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Il nome di dominio non può contenere spazi né tab."
-
-#: models.py:58
-msgid "domain name"
-msgstr "nome di dominio"
-
-#: models.py:60
-msgid "display name"
-msgstr "nome visualizzato"
-
-#: models.py:65
-msgid "site"
-msgstr "sito"
-
-#: models.py:66
-msgid "sites"
-msgstr "siti"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ja/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/ja/LC_MESSAGES/django.mo
deleted file mode 100644
index 6583137..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ja/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ja/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/ja/LC_MESSAGES/django.po
deleted file mode 100644
index a6b48f3..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ja/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Shinya Okano <tokibito@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-29 15:58+0000\n"
-"Last-Translator: Shinya Okano <tokibito@gmail.com>\n"
-"Language-Team: Japanese (http://www.transifex.com/projects/p/django/language/"
-"ja/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "ドメイン名にスペース、タブを含めることはできません。"
-
-#: models.py:58
-msgid "domain name"
-msgstr "ドメイン名"
-
-#: models.py:60
-msgid "display name"
-msgstr "表示名"
-
-#: models.py:65
-msgid "site"
-msgstr "サイト"
-
-#: models.py:66
-msgid "sites"
-msgstr "サイト"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ka/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/ka/LC_MESSAGES/django.mo
deleted file mode 100644
index b509d53..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ka/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ka/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/ka/LC_MESSAGES/django.po
deleted file mode 100644
index 81c56be..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ka/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Georgian (http://www.transifex.com/projects/p/django/language/"
-"ka/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ka\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "დომენის სახელი"
-
-#: models.py:60
-msgid "display name"
-msgstr "საჩვენებელი სახელი"
-
-#: models.py:65
-msgid "site"
-msgstr "საიტი"
-
-#: models.py:66
-msgid "sites"
-msgstr "საიტები"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/kk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/kk/LC_MESSAGES/django.mo
deleted file mode 100644
index 68eeb3b..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/kk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/kk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/kk/LC_MESSAGES/django.po
deleted file mode 100644
index ca65e0a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/kk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# yun_man_ger <germanilyin@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Kazakh (http://www.transifex.com/projects/p/django/language/"
-"kk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kk\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "домналық атауы"
-
-#: models.py:60
-msgid "display name"
-msgstr "бейнелеу атауы"
-
-#: models.py:65
-msgid "site"
-msgstr "сайт"
-
-#: models.py:66
-msgid "sites"
-msgstr "сайттар"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/km/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/km/LC_MESSAGES/django.mo
deleted file mode 100644
index 7de279f..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/km/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/km/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/km/LC_MESSAGES/django.po
deleted file mode 100644
index 3264d46..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/km/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Khmer (http://www.transifex.com/projects/p/django/language/"
-"km/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: km\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "ឈ្មោះដមែន"
-
-#: models.py:60
-msgid "display name"
-msgstr "ឈ្មោះសំរាប់បង្ហាញ"
-
-#: models.py:65
-msgid "site"
-msgstr "គេហទំព័រ"
-
-#: models.py:66
-msgid "sites"
-msgstr "គេហទំព័រ"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/kn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/kn/LC_MESSAGES/django.mo
deleted file mode 100644
index a72ba84..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/kn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/kn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/kn/LC_MESSAGES/django.po
deleted file mode 100644
index 406c291..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/kn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Kannada (http://www.transifex.com/projects/p/django/language/"
-"kn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: kn\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "ಡೊಮೈನ್ ಹೆಸರು"
-
-#: models.py:60
-msgid "display name"
-msgstr "ತೋರಿಸುವ ಹೆಸರು"
-
-#: models.py:65
-msgid "site"
-msgstr "ತಾಣ"
-
-#: models.py:66
-msgid "sites"
-msgstr "ತಾಣಗಳು"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ko/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/ko/LC_MESSAGES/django.mo
deleted file mode 100644
index 58965f3..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ko/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ko/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/ko/LC_MESSAGES/django.po
deleted file mode 100644
index bdd1717..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ko/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Korean (http://www.transifex.com/projects/p/django/language/"
-"ko/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ko\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "도메인 명"
-
-#: models.py:60
-msgid "display name"
-msgstr "표시명"
-
-#: models.py:65
-msgid "site"
-msgstr "사이트"
-
-#: models.py:66
-msgid "sites"
-msgstr "사이트(들)"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/lt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/lt/LC_MESSAGES/django.mo
deleted file mode 100644
index eb3826e..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/lt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/lt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/lt/LC_MESSAGES/django.po
deleted file mode 100644
index 69007ef..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/lt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,41 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kostas <tamosiunas@gmail.com>, 2011
-# Simonas Kazlauskas <simonas@kazlauskas.me>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-08-06 12:35+0000\n"
-"Last-Translator: Simonas Kazlauskas <simonas@kazlauskas.me>\n"
-"Language-Team: Lithuanian (http://www.transifex.com/projects/p/django/"
-"language/lt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lt\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
-"%100<10 || n%100>=20) ? 1 : 2);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Domene negali būti tarpų ar tabuliavimo ženklų."
-
-#: models.py:58
-msgid "domain name"
-msgstr "domeno vardas"
-
-#: models.py:60
-msgid "display name"
-msgstr "rodomas vardas"
-
-#: models.py:65
-msgid "site"
-msgstr "svetainė"
-
-#: models.py:66
-msgid "sites"
-msgstr "svetainės"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/lv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/lv/LC_MESSAGES/django.mo
deleted file mode 100644
index 042de2a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/lv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/lv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/lv/LC_MESSAGES/django.po
deleted file mode 100644
index 7144967..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/lv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,40 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# edgars <edgars.jekabsons@gmail.com>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Latvian (http://www.transifex.com/projects/p/django/language/"
-"lv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: lv\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
-"2);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "domēna vārds"
-
-#: models.py:60
-msgid "display name"
-msgstr "attēlojamais vārds"
-
-#: models.py:65
-msgid "site"
-msgstr "vietne"
-
-#: models.py:66
-msgid "sites"
-msgstr "vietnes"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/mk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/mk/LC_MESSAGES/django.mo
deleted file mode 100644
index 8206a39..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/mk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/mk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/mk/LC_MESSAGES/django.po
deleted file mode 100644
index 4b8d96c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/mk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# vvangelovski <vvangelovski@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-07-26 11:38+0000\n"
-"Last-Translator: vvangelovski <vvangelovski@gmail.com>\n"
-"Language-Team: Macedonian (http://www.transifex.com/projects/p/django/"
-"language/mk/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mk\n"
-"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Домејнот не може да содржи празни места и табови."
-
-#: models.py:58
-msgid "domain name"
-msgstr "домејн"
-
-#: models.py:60
-msgid "display name"
-msgstr "име кое се прикажува"
-
-#: models.py:65
-msgid "site"
-msgstr "сајт"
-
-#: models.py:66
-msgid "sites"
-msgstr "сајтови"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ml/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/ml/LC_MESSAGES/django.mo
deleted file mode 100644
index 5f59307..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ml/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ml/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/ml/LC_MESSAGES/django.po
deleted file mode 100644
index 1001809..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ml/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Malayalam (http://www.transifex.com/projects/p/django/"
-"language/ml/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ml\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "ഡൊമൈന്‍ നാമം"
-
-#: models.py:60
-msgid "display name"
-msgstr "പ്രദര്‍ശന നാമം"
-
-#: models.py:65
-msgid "site"
-msgstr "സൈറ്റ്"
-
-#: models.py:66
-msgid "sites"
-msgstr "സൈറ്റുകള്‍"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/mn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/mn/LC_MESSAGES/django.mo
deleted file mode 100644
index d4add15..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/mn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/mn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/mn/LC_MESSAGES/django.po
deleted file mode 100644
index 7c18b66..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/mn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Анхбаяр Анхаа <l.ankhbayar@gmail.com>, 2011,2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-30 07:08+0000\n"
-"Last-Translator: Анхбаяр Анхаа <l.ankhbayar@gmail.com>\n"
-"Language-Team: Mongolian (http://www.transifex.com/projects/p/django/"
-"language/mn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: mn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "домэйн нэр дотор таб болон хоосон зай агуулаж болохгүй."
-
-#: models.py:58
-msgid "domain name"
-msgstr "домэйн нэр"
-
-#: models.py:60
-msgid "display name"
-msgstr "Харагдах нэр "
-
-#: models.py:65
-msgid "site"
-msgstr "сайт"
-
-#: models.py:66
-msgid "sites"
-msgstr "сайтууд"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/my/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/my/LC_MESSAGES/django.mo
deleted file mode 100644
index c1c2f30..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/my/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/my/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/my/LC_MESSAGES/django.po
deleted file mode 100644
index 5eca645..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/my/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Yhal Htet Aung <jumoun@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-01 13:17+0000\n"
-"Last-Translator: Yhal Htet Aung <jumoun@gmail.com>\n"
-"Language-Team: Burmese (http://www.transifex.com/projects/p/django/language/"
-"my/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: my\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "ဒိုမိန်းနာမည်တွင်ကွက်လပ်(သို့)အမည်များမပါဝင်နိုင်။"
-
-#: models.py:58
-msgid "domain name"
-msgstr "ဒိုမိန်းနာမည်"
-
-#: models.py:60
-msgid "display name"
-msgstr "ပြသနာမည်"
-
-#: models.py:65
-msgid "site"
-msgstr "ဆိုက်"
-
-#: models.py:66
-msgid "sites"
-msgstr "ဆိုက်များ"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/nb/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/nb/LC_MESSAGES/django.mo
deleted file mode 100644
index a5bc246..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/nb/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/nb/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/nb/LC_MESSAGES/django.po
deleted file mode 100644
index 1897a08..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/nb/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# wckd <alexander.l.hansen@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-21 10:15+0000\n"
-"Last-Translator: wckd <alexander.l.hansen@gmail.com>\n"
-"Language-Team: Norwegian Bokmål (http://www.transifex.com/projects/p/django/"
-"language/nb/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nb\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Domenenavnet kan ikke inneholde mellomrom."
-
-#: models.py:58
-msgid "domain name"
-msgstr "domenenavn"
-
-#: models.py:60
-msgid "display name"
-msgstr "visningsnavn"
-
-#: models.py:65
-msgid "site"
-msgstr "nettsted"
-
-#: models.py:66
-msgid "sites"
-msgstr "nettsteder"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ne/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/ne/LC_MESSAGES/django.mo
deleted file mode 100644
index 970700c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ne/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ne/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/ne/LC_MESSAGES/django.po
deleted file mode 100644
index f7b3f13..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ne/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Sagar Chalise <chalisesagar@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-06-01 04:43+0000\n"
-"Last-Translator: Sagar Chalise <chalisesagar@gmail.com>\n"
-"Language-Team: Nepali (http://www.transifex.com/projects/p/django/language/"
-"ne/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ne\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "डोमेनमा खाली ठाउँहरु हुनु हुँदैन ।"
-
-#: models.py:58
-msgid "domain name"
-msgstr "डोमेनको नाम"
-
-#: models.py:60
-msgid "display name"
-msgstr "देखिने नाम"
-
-#: models.py:65
-msgid "site"
-msgstr "साइट"
-
-#: models.py:66
-msgid "sites"
-msgstr "साइटहरु"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/nl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/nl/LC_MESSAGES/django.mo
deleted file mode 100644
index a757c9e..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/nl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/nl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/nl/LC_MESSAGES/django.po
deleted file mode 100644
index 499a724..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/nl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Bouke Haarsma <bouke@webatoom.nl>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-30 08:12+0000\n"
-"Last-Translator: Bouke Haarsma <bouke@webatoom.nl>\n"
-"Language-Team: Dutch (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "De domeinnaam mag geen spaties of tabs bevatten."
-
-#: models.py:58
-msgid "domain name"
-msgstr "domeinnaam"
-
-#: models.py:60
-msgid "display name"
-msgstr "weergavenaam"
-
-#: models.py:65
-msgid "site"
-msgstr "site"
-
-#: models.py:66
-msgid "sites"
-msgstr "sites"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/nn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/nn/LC_MESSAGES/django.mo
deleted file mode 100644
index 54168a1..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/nn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/nn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/nn/LC_MESSAGES/django.po
deleted file mode 100644
index 164d62b..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/nn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Norwegian Nynorsk (http://www.transifex.com/projects/p/django/"
-"language/nn/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: nn\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "domenenamn"
-
-#: models.py:60
-msgid "display name"
-msgstr "visingsnamn"
-
-#: models.py:65
-msgid "site"
-msgstr "nettstad"
-
-#: models.py:66
-msgid "sites"
-msgstr "nettstader"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/os/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/os/LC_MESSAGES/django.mo
deleted file mode 100644
index 0a224c6..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/os/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/os/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/os/LC_MESSAGES/django.po
deleted file mode 100644
index be74d22..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/os/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Soslan Khubulov <soslanx@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-09 05:38+0000\n"
-"Last-Translator: Soslan Khubulov <soslanx@gmail.com>\n"
-"Language-Team: Ossetic (http://www.transifex.com/projects/p/django/language/"
-"os/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: os\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Домены номы ма хъуамӕ уой табтӕ ӕмӕ хъӕнтӕ."
-
-#: models.py:58
-msgid "domain name"
-msgstr "домены ном"
-
-#: models.py:60
-msgid "display name"
-msgstr "ӕвдисгӕ ном"
-
-#: models.py:65
-msgid "site"
-msgstr "сайт"
-
-#: models.py:66
-msgid "sites"
-msgstr "сайттӕ"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/pa/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/pa/LC_MESSAGES/django.mo
deleted file mode 100644
index 73cbc55..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/pa/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/pa/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/pa/LC_MESSAGES/django.po
deleted file mode 100644
index a7444ea..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/pa/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Panjabi (Punjabi) (http://www.transifex.com/projects/p/django/"
-"language/pa/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pa\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "ਡੋਮੇਨ ਨਾਂ"
-
-#: models.py:60
-msgid "display name"
-msgstr "ਵੇਖਾਉਣ ਲਈ ਨਾਂ"
-
-#: models.py:65
-msgid "site"
-msgstr "ਸਾਈਟ"
-
-#: models.py:66
-msgid "sites"
-msgstr "ਸਾਈਟਾਂ"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/pl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/pl/LC_MESSAGES/django.mo
deleted file mode 100644
index de1c84f..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/pl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/pl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/pl/LC_MESSAGES/django.po
deleted file mode 100644
index 39aa4a5..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/pl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,40 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# angularcircle, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Polish (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Nazwa domeny nie może zawierać spacji, bądź znaków tabulatora."
-
-#: models.py:58
-msgid "domain name"
-msgstr "nazwa domeny"
-
-#: models.py:60
-msgid "display name"
-msgstr "wyświetlana nazwa"
-
-#: models.py:65
-msgid "site"
-msgstr "strona"
-
-#: models.py:66
-msgid "sites"
-msgstr "strony"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/pt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/pt/LC_MESSAGES/django.mo
deleted file mode 100644
index cad0326..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/pt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/pt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/pt/LC_MESSAGES/django.po
deleted file mode 100644
index 333e395..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/pt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Nuno Mariz <nmariz@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-06-03 15:07+0000\n"
-"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
-"Language-Team: Portuguese (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "O nome do domínio não pode conter espaços ou tabulações."
-
-#: models.py:58
-msgid "domain name"
-msgstr "nome do domínio"
-
-#: models.py:60
-msgid "display name"
-msgstr "mostrar nome"
-
-#: models.py:65
-msgid "site"
-msgstr "site"
-
-#: models.py:66
-msgid "sites"
-msgstr "sites"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.mo
deleted file mode 100644
index 1fb3962..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.po
deleted file mode 100644
index d006608..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/pt_BR/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Eduardo Carvalho <eduardocereto@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Portuguese (Brazil) (http://www.transifex.com/projects/p/"
-"django/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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "O nome do domínio não pode conter espaços ou tabulações."
-
-#: models.py:58
-msgid "domain name"
-msgstr "nome do domínio"
-
-#: models.py:60
-msgid "display name"
-msgstr "nome para exibição"
-
-#: models.py:65
-msgid "site"
-msgstr "site"
-
-#: models.py:66
-msgid "sites"
-msgstr "sites"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ro/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/ro/LC_MESSAGES/django.mo
deleted file mode 100644
index e25b39d..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ro/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ro/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/ro/LC_MESSAGES/django.po
deleted file mode 100644
index 95aeadb..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ro/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,40 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Daniel Ursache-Dogariu <contact@danniel.net>, 2011
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Romanian (http://www.transifex.com/projects/p/django/language/"
-"ro/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\n"
-"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
-"2:1));\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "nume domeniu"
-
-#: models.py:60
-msgid "display name"
-msgstr "nume afișat"
-
-#: models.py:65
-msgid "site"
-msgstr "sit"
-
-#: models.py:66
-msgid "sites"
-msgstr "situri"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ru/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/ru/LC_MESSAGES/django.mo
deleted file mode 100644
index 218cabb..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ru/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ru/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/ru/LC_MESSAGES/django.po
deleted file mode 100644
index e85cdb3..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ru/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,40 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Eugene MechanisM <contact@mechanism.name>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Russian (http://www.transifex.com/projects/p/django/language/"
-"ru/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Доменное имя не может содержать пробелы или табуляцию."
-
-#: models.py:58
-msgid "domain name"
-msgstr "доменное имя"
-
-#: models.py:60
-msgid "display name"
-msgstr "выводимое имя"
-
-#: models.py:65
-msgid "site"
-msgstr "сайт"
-
-#: models.py:66
-msgid "sites"
-msgstr "сайты"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/sk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/sk/LC_MESSAGES/django.mo
deleted file mode 100644
index 5e8464c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/sk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/sk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/sk/LC_MESSAGES/django.po
deleted file mode 100644
index 0067a07..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/sk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Marian Andre <marian@andre.sk>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-11-20 09:15+0000\n"
-"Last-Translator: Marian Andre <marian@andre.sk>\n"
-"Language-Team: Slovak (http://www.transifex.com/projects/p/django/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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Názov domény nemôže obsahovať medzery alebo tabulátory."
-
-#: models.py:58
-msgid "domain name"
-msgstr "názov domény"
-
-#: models.py:60
-msgid "display name"
-msgstr "zobrazené meno"
-
-#: models.py:65
-msgid "site"
-msgstr "sídlo"
-
-#: models.py:66
-msgid "sites"
-msgstr "sídla"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/sl/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/sl/LC_MESSAGES/django.mo
deleted file mode 100644
index 94db319..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/sl/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/sl/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/sl/LC_MESSAGES/django.po
deleted file mode 100644
index f4a416c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/sl/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,40 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# zejn <zejn@kiberpipa.org>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-07-12 10:23+0000\n"
-"Last-Translator: zejn <zejn@kiberpipa.org>\n"
-"Language-Team: Slovenian (http://www.transifex.com/projects/p/django/"
-"language/sl/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sl\n"
-"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
-"%100==4 ? 2 : 3);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Domena ne more vsebovati presledkov ali tabulatorjev."
-
-#: models.py:58
-msgid "domain name"
-msgstr "ime domene"
-
-#: models.py:60
-msgid "display name"
-msgstr "prikazano ime"
-
-#: models.py:65
-msgid "site"
-msgstr "stran"
-
-#: models.py:66
-msgid "sites"
-msgstr "strani"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/sq/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/sq/LC_MESSAGES/django.mo
deleted file mode 100644
index 07fd3c7..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/sq/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/sq/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/sq/LC_MESSAGES/django.po
deleted file mode 100644
index 1e2eaae..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/sq/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Besnik <besnik@programeshqip.org>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Albanian (http://www.transifex.com/projects/p/django/language/"
-"sq/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sq\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Emri i përkatësisë nuk mund të përmbajë hapësira ose tabulacione."
-
-#: models.py:58
-msgid "domain name"
-msgstr "emër përkatësie"
-
-#: models.py:60
-msgid "display name"
-msgstr "emër shfaqjeje"
-
-#: models.py:65
-msgid "site"
-msgstr "site"
-
-#: models.py:66
-msgid "sites"
-msgstr "site-e"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/sr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/sr/LC_MESSAGES/django.mo
deleted file mode 100644
index 960008c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/sr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/sr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/sr/LC_MESSAGES/django.po
deleted file mode 100644
index 7008885..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/sr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (http://www.transifex.com/projects/p/django/language/"
-"sr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr\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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "име домена"
-
-#: models.py:60
-msgid "display name"
-msgstr "приказано име"
-
-#: models.py:65
-msgid "site"
-msgstr "сајт"
-
-#: models.py:66
-msgid "sites"
-msgstr "сајтови"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.mo
deleted file mode 100644
index f93797e..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.po
deleted file mode 100644
index 6edfa5a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/sr_Latn/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Serbian (Latin) (http://www.transifex.com/projects/p/django/"
-"language/sr@latin/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sr@latin\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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "ime domena"
-
-#: models.py:60
-msgid "display name"
-msgstr "prikazano ime"
-
-#: models.py:65
-msgid "site"
-msgstr "sajt"
-
-#: models.py:66
-msgid "sites"
-msgstr "sajtovi"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/sv/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/sv/LC_MESSAGES/django.mo
deleted file mode 100644
index c33407e..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/sv/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/sv/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/sv/LC_MESSAGES/django.po
deleted file mode 100644
index 8ad6918..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/sv/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# biljettshop <thomas@biljettshop.se>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-10-28 10:07+0000\n"
-"Last-Translator: biljettshop <thomas@biljettshop.se>\n"
-"Language-Team: Swedish (http://www.transifex.com/projects/p/django/language/"
-"sv/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sv\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Domännamnet kan inte innehålla mellanslag eller tabulatortecken."
-
-#: models.py:58
-msgid "domain name"
-msgstr "domännamn"
-
-#: models.py:60
-msgid "display name"
-msgstr "visningsnamn"
-
-#: models.py:65
-msgid "site"
-msgstr "webbplats"
-
-#: models.py:66
-msgid "sites"
-msgstr "webbplatser"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/sw/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/sw/LC_MESSAGES/django.mo
deleted file mode 100644
index 1f6c6a5..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/sw/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/sw/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/sw/LC_MESSAGES/django.po
deleted file mode 100644
index 8d4fd3c..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/sw/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# machaku <bmachaku@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-11-20 09:15+0000\n"
-"Last-Translator: machaku <bmachaku@gmail.com>\n"
-"Language-Team: Swahili (http://www.transifex.com/projects/p/django/language/"
-"sw/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: sw\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Jina la kikoa haliwezi kuwa na nafasi yeyote kati yake."
-
-#: models.py:58
-msgid "domain name"
-msgstr "jina la kikoa"
-
-#: models.py:60
-msgid "display name"
-msgstr "jina"
-
-#: models.py:65
-msgid "site"
-msgstr "tovuti"
-
-#: models.py:66
-msgid "sites"
-msgstr "tovuti"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ta/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/ta/LC_MESSAGES/django.mo
deleted file mode 100644
index 0fc1590..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ta/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ta/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/ta/LC_MESSAGES/django.po
deleted file mode 100644
index 7fb087e..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ta/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Tamil (http://www.transifex.com/projects/p/django/language/"
-"ta/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ta\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "களப் பெயர்"
-
-#: models.py:60
-msgid "display name"
-msgstr "காட்டும் பெயர்"
-
-#: models.py:65
-msgid "site"
-msgstr "வலைத்தளம்"
-
-#: models.py:66
-msgid "sites"
-msgstr "வலைத்தளங்கள்"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/te/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/te/LC_MESSAGES/django.mo
deleted file mode 100644
index 618dc0e..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/te/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/te/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/te/LC_MESSAGES/django.po
deleted file mode 100644
index 15b7232..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/te/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Telugu (http://www.transifex.com/projects/p/django/language/"
-"te/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: te\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "డొమైన్ నామము"
-
-#: models.py:60
-msgid "display name"
-msgstr "కనిపిచ్చే పేరు"
-
-#: models.py:65
-msgid "site"
-msgstr "సైట్"
-
-#: models.py:66
-msgid "sites"
-msgstr "సైట్లు"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/th/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/th/LC_MESSAGES/django.mo
deleted file mode 100644
index 22b64e9..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/th/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/th/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/th/LC_MESSAGES/django.po
deleted file mode 100644
index 2a0bd73..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/th/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Kowit Charoenratchatabhan <kowit.s.c@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Thai (http://www.transifex.com/projects/p/django/language/"
-"th/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: th\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "ชื่อโดนเมนต้องไม่ไม่ช่องว่างหรือแท็บ"
-
-#: models.py:58
-msgid "domain name"
-msgstr "ชื่อโดเมน"
-
-#: models.py:60
-msgid "display name"
-msgstr "ชื่อที่แสดง"
-
-#: models.py:65
-msgid "site"
-msgstr "ไซต์"
-
-#: models.py:66
-msgid "sites"
-msgstr "ไซต์"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/tr/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/tr/LC_MESSAGES/django.mo
deleted file mode 100644
index 3c9804d..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/tr/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/tr/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/tr/LC_MESSAGES/django.po
deleted file mode 100644
index 387a4cf..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/tr/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Caner BAŞARAN <basaran.caner@gmail.com>, 2013
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Turkish (http://www.transifex.com/projects/p/django/language/"
-"tr/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tr\n"
-"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Alan adı, boşluk ya da sekmeler içeremez."
-
-#: models.py:58
-msgid "domain name"
-msgstr "alan adı"
-
-#: models.py:60
-msgid "display name"
-msgstr "görünen isim"
-
-#: models.py:65
-msgid "site"
-msgstr "site"
-
-#: models.py:66
-msgid "sites"
-msgstr "siteler"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/tt/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/tt/LC_MESSAGES/django.mo
deleted file mode 100644
index e6937af..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/tt/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/tt/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/tt/LC_MESSAGES/django.po
deleted file mode 100644
index 9bc6e3a..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/tt/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Azat Khasanshin <lordofbazuks@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Tatar (http://www.transifex.com/projects/p/django/language/"
-"tt/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: tt\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "домен исеме"
-
-#: models.py:60
-msgid "display name"
-msgstr "чагылдырылган исем"
-
-#: models.py:65
-msgid "site"
-msgstr "сайт"
-
-#: models.py:66
-msgid "sites"
-msgstr "сайтлар"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/uk/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/uk/LC_MESSAGES/django.mo
deleted file mode 100644
index 31c8fae..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/uk/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/uk/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/uk/LC_MESSAGES/django.po
deleted file mode 100644
index f6d9efc..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/uk/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,40 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Alex Bolotov <oleksandr.bolotov@gmail.com>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-11-20 13:57+0000\n"
-"Last-Translator: Alex Bolotov <oleksandr.bolotov@gmail.com>\n"
-"Language-Team: Ukrainian (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Доменне ім'я не може містити пробіли або символи табуляції."
-
-#: models.py:58
-msgid "domain name"
-msgstr "доменне ім'я"
-
-#: models.py:60
-msgid "display name"
-msgstr "відображуване ім'я"
-
-#: models.py:65
-msgid "site"
-msgstr "сайт"
-
-#: models.py:66
-msgid "sites"
-msgstr "сайти"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ur/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/ur/LC_MESSAGES/django.mo
deleted file mode 100644
index 7638fb1..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ur/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/ur/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/ur/LC_MESSAGES/django.po
deleted file mode 100644
index 62f0e75..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/ur/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Mansoorulhaq Mansoor <mansoorulhaq1986@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Urdu (http://www.transifex.com/projects/p/django/language/"
-"ur/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: ur\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "ڈومین کا نام"
-
-#: models.py:60
-msgid "display name"
-msgstr "ظاھر ھونے والا نام"
-
-#: models.py:65
-msgid "site"
-msgstr "سائٹ"
-
-#: models.py:66
-msgid "sites"
-msgstr "سائٹس"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/vi/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/vi/LC_MESSAGES/django.mo
deleted file mode 100644
index 04faa73..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/vi/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/vi/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/vi/LC_MESSAGES/django.po
deleted file mode 100644
index ae31490..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/vi/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,40 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# Lê Thanh <lethanhx2k@gmail.com>, 2013
-# Tran <hongdiepkien@gmail.com>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-05-11 02:20+0000\n"
-"Last-Translator: Lê Thanh <lethanhx2k@gmail.com>\n"
-"Language-Team: Vietnamese (http://www.transifex.com/projects/p/django/"
-"language/vi/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: vi\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "Tên miền không gồm kí tự trống hoặc tab"
-
-#: models.py:58
-msgid "domain name"
-msgstr "Tên miền"
-
-#: models.py:60
-msgid "display name"
-msgstr "Tên hiển thị"
-
-#: models.py:65
-msgid "site"
-msgstr "trang web"
-
-#: models.py:66
-msgid "sites"
-msgstr "các trang web"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/zh_CN/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/zh_CN/LC_MESSAGES/django.mo
deleted file mode 100644
index c329eb6..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/zh_CN/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/zh_CN/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/zh_CN/LC_MESSAGES/django.po
deleted file mode 100644
index 6ddf65b..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/zh_CN/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django/"
-"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"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr ""
-
-#: models.py:58
-msgid "domain name"
-msgstr "域名"
-
-#: models.py:60
-msgid "display name"
-msgstr "显示名称"
-
-#: models.py:65
-msgid "site"
-msgstr "站点"
-
-#: models.py:66
-msgid "sites"
-msgstr "站点"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/zh_TW/LC_MESSAGES/django.mo b/lib/python2.7/site-packages/django/contrib/sites/locale/zh_TW/LC_MESSAGES/django.mo
deleted file mode 100644
index ef8fdec..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/zh_TW/LC_MESSAGES/django.mo
+++ /dev/null
Binary files differ
diff --git a/lib/python2.7/site-packages/django/contrib/sites/locale/zh_TW/LC_MESSAGES/django.po b/lib/python2.7/site-packages/django/contrib/sites/locale/zh_TW/LC_MESSAGES/django.po
deleted file mode 100644
index b1a6fa7..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/locale/zh_TW/LC_MESSAGES/django.po
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is distributed under the same license as the Django package.
-#
-# Translators:
-# Jannis Leidel <jannis@leidel.info>, 2011
-# mail6543210 <mail6543210@yahoo.com.tw>, 2013
-msgid ""
-msgstr ""
-"Project-Id-Version: django-core\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2013-05-02 16:18+0200\n"
-"PO-Revision-Date: 2013-04-29 08:23+0000\n"
-"Last-Translator: claudep <claude@2xlibre.net>\n"
-"Language-Team: Chinese (Taiwan) (http://www.transifex.com/projects/p/django/"
-"language/zh_TW/)\n"
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_TW\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-
-#: models.py:25
-msgid "The domain name cannot contain any spaces or tabs."
-msgstr "網域名稱不能包含空格或定位字元。"
-
-#: models.py:58
-msgid "domain name"
-msgstr "網域名稱"
-
-#: models.py:60
-msgid "display name"
-msgstr "顯示名稱"
-
-#: models.py:65
-msgid "site"
-msgstr "網站"
-
-#: models.py:66
-msgid "sites"
-msgstr "網站"
diff --git a/lib/python2.7/site-packages/django/contrib/sites/management.py b/lib/python2.7/site-packages/django/contrib/sites/management.py
deleted file mode 100644
index 7a29e82..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/management.py
+++ /dev/null
@@ -1,36 +0,0 @@
-"""
-Creates the default Site object.
-"""
-
-from django.db.models import signals
-from django.db import connections
-from django.db import router
-from django.contrib.sites.models import Site
-from django.contrib.sites import models as site_app
-from django.core.management.color import no_style
-
-def create_default_site(app, created_models, verbosity, db, **kwargs):
- # Only create the default sites in databases where Django created the table
- if Site in created_models and router.allow_syncdb(db, Site) :
- # The default settings set SITE_ID = 1, and some tests in Django's test
- # suite rely on this value. However, if database sequences are reused
- # (e.g. in the test suite after flush/syncdb), it isn't guaranteed that
- # the next id will be 1, so we coerce it. See #15573 and #16353. This
- # can also crop up outside of tests - see #15346.
- if verbosity >= 2:
- print("Creating example.com Site object")
- Site(pk=1, domain="example.com", name="example.com").save(using=db)
-
- # We set an explicit pk instead of relying on auto-incrementation,
- # so we need to reset the database sequence. See #17415.
- sequence_sql = connections[db].ops.sequence_reset_sql(no_style(), [Site])
- if sequence_sql:
- if verbosity >= 2:
- print("Resetting sequence")
- cursor = connections[db].cursor()
- for command in sequence_sql:
- cursor.execute(command)
-
- Site.objects.clear_cache()
-
-signals.post_syncdb.connect(create_default_site, sender=site_app)
diff --git a/lib/python2.7/site-packages/django/contrib/sites/managers.py b/lib/python2.7/site-packages/django/contrib/sites/managers.py
deleted file mode 100644
index becb35b..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/managers.py
+++ /dev/null
@@ -1,41 +0,0 @@
-from django.conf import settings
-from django.db import models
-from django.db.models.fields import FieldDoesNotExist
-
-class CurrentSiteManager(models.Manager):
- "Use this to limit objects to those associated with the current site."
- def __init__(self, field_name=None):
- super(CurrentSiteManager, self).__init__()
- self.__field_name = field_name
- self.__is_validated = False
-
- def _validate_field_name(self):
- field_names = self.model._meta.get_all_field_names()
-
- # If a custom name is provided, make sure the field exists on the model
- if self.__field_name is not None and self.__field_name not in field_names:
- raise ValueError("%s couldn't find a field named %s in %s." % \
- (self.__class__.__name__, self.__field_name, self.model._meta.object_name))
-
- # Otherwise, see if there is a field called either 'site' or 'sites'
- else:
- for potential_name in ['site', 'sites']:
- if potential_name in field_names:
- self.__field_name = potential_name
- self.__is_validated = True
- break
-
- # Now do a type check on the field (FK or M2M only)
- try:
- field = self.model._meta.get_field(self.__field_name)
- if not isinstance(field, (models.ForeignKey, models.ManyToManyField)):
- raise TypeError("%s must be a ForeignKey or ManyToManyField." %self.__field_name)
- except FieldDoesNotExist:
- raise ValueError("%s couldn't find a field named %s in %s." % \
- (self.__class__.__name__, self.__field_name, self.model._meta.object_name))
- self.__is_validated = True
-
- def get_queryset(self):
- if not self.__is_validated:
- self._validate_field_name()
- return super(CurrentSiteManager, self).get_queryset().filter(**{self.__field_name + '__id__exact': settings.SITE_ID})
diff --git a/lib/python2.7/site-packages/django/contrib/sites/models.py b/lib/python2.7/site-packages/django/contrib/sites/models.py
deleted file mode 100644
index bbd85ed..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/models.py
+++ /dev/null
@@ -1,119 +0,0 @@
-from __future__ import unicode_literals
-
-import string
-
-from django.db import models
-from django.db.models.signals import pre_save, pre_delete
-from django.utils.translation import ugettext_lazy as _
-from django.utils.encoding import python_2_unicode_compatible
-from django.core.exceptions import ValidationError
-
-
-SITE_CACHE = {}
-
-
-def _simple_domain_name_validator(value):
- """
- Validates that the given value contains no whitespaces to prevent common
- typos.
- """
- if not value:
- return
- checks = ((s in value) for s in string.whitespace)
- if any(checks):
- raise ValidationError(
- _("The domain name cannot contain any spaces or tabs."),
- code='invalid',
- )
-
-
-class SiteManager(models.Manager):
-
- def get_current(self):
- """
- Returns the current ``Site`` based on the SITE_ID in the
- project's settings. The ``Site`` object is cached the first
- time it's retrieved from the database.
- """
- from django.conf import settings
- try:
- sid = settings.SITE_ID
- except AttributeError:
- from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured("You're using the Django \"sites framework\" without having set the SITE_ID setting. Create a site in your database and set the SITE_ID setting to fix this error.")
- try:
- current_site = SITE_CACHE[sid]
- except KeyError:
- current_site = self.get(pk=sid)
- SITE_CACHE[sid] = current_site
- return current_site
-
- def clear_cache(self):
- """Clears the ``Site`` object cache."""
- global SITE_CACHE
- SITE_CACHE = {}
-
-
-@python_2_unicode_compatible
-class Site(models.Model):
-
- domain = models.CharField(_('domain name'), max_length=100,
- validators=[_simple_domain_name_validator])
- name = models.CharField(_('display name'), max_length=50)
- objects = SiteManager()
-
- class Meta:
- db_table = 'django_site'
- verbose_name = _('site')
- verbose_name_plural = _('sites')
- ordering = ('domain',)
-
- def __str__(self):
- return self.domain
-
-
-@python_2_unicode_compatible
-class RequestSite(object):
- """
- A class that shares the primary interface of Site (i.e., it has
- ``domain`` and ``name`` attributes) but gets its data from a Django
- HttpRequest object rather than from a database.
-
- The save() and delete() methods raise NotImplementedError.
- """
- def __init__(self, request):
- self.domain = self.name = request.get_host()
-
- def __str__(self):
- return self.domain
-
- def save(self, force_insert=False, force_update=False):
- raise NotImplementedError('RequestSite cannot be saved.')
-
- def delete(self):
- raise NotImplementedError('RequestSite cannot be deleted.')
-
-
-def get_current_site(request):
- """
- Checks if contrib.sites is installed and returns either the current
- ``Site`` object or a ``RequestSite`` object based on the request.
- """
- if Site._meta.installed:
- current_site = Site.objects.get_current()
- else:
- current_site = RequestSite(request)
- return current_site
-
-
-def clear_site_cache(sender, **kwargs):
- """
- Clears the cache (if primed) each time a site is saved or deleted
- """
- instance = kwargs['instance']
- try:
- del SITE_CACHE[instance.pk]
- except KeyError:
- pass
-pre_save.connect(clear_site_cache, sender=Site)
-pre_delete.connect(clear_site_cache, sender=Site)
diff --git a/lib/python2.7/site-packages/django/contrib/sites/tests.py b/lib/python2.7/site-packages/django/contrib/sites/tests.py
deleted file mode 100644
index 6bfbfd7..0000000
--- a/lib/python2.7/site-packages/django/contrib/sites/tests.py
+++ /dev/null
@@ -1,83 +0,0 @@
-from __future__ import unicode_literals
-
-from django.conf import settings
-from django.contrib.sites.models import Site, RequestSite, get_current_site
-from django.core.exceptions import ObjectDoesNotExist, ValidationError
-from django.http import HttpRequest
-from django.test import TestCase
-from django.test.utils import override_settings
-
-
-class SitesFrameworkTests(TestCase):
-
- def setUp(self):
- Site(id=settings.SITE_ID, domain="example.com", name="example.com").save()
- self.old_Site_meta_installed = Site._meta.installed
- Site._meta.installed = True
-
- def tearDown(self):
- Site._meta.installed = self.old_Site_meta_installed
-
- def test_save_another(self):
- # Regression for #17415
- # On some backends the sequence needs reset after save with explicit ID.
- # Test that there is no sequence collisions by saving another site.
- Site(domain="example2.com", name="example2.com").save()
-
- def test_site_manager(self):
- # Make sure that get_current() does not return a deleted Site object.
- s = Site.objects.get_current()
- self.assertTrue(isinstance(s, Site))
- s.delete()
- self.assertRaises(ObjectDoesNotExist, Site.objects.get_current)
-
- def test_site_cache(self):
- # After updating a Site object (e.g. via the admin), we shouldn't return a
- # bogus value from the SITE_CACHE.
- site = Site.objects.get_current()
- self.assertEqual("example.com", site.name)
- s2 = Site.objects.get(id=settings.SITE_ID)
- s2.name = "Example site"
- s2.save()
- site = Site.objects.get_current()
- self.assertEqual("Example site", site.name)
-
- def test_delete_all_sites_clears_cache(self):
- # When all site objects are deleted the cache should also
- # be cleared and get_current() should raise a DoesNotExist.
- self.assertIsInstance(Site.objects.get_current(), Site)
- Site.objects.all().delete()
- self.assertRaises(Site.DoesNotExist, Site.objects.get_current)
-
- @override_settings(ALLOWED_HOSTS=['example.com'])
- def test_get_current_site(self):
- # Test that the correct Site object is returned
- request = HttpRequest()
- request.META = {
- "SERVER_NAME": "example.com",
- "SERVER_PORT": "80",
- }
- site = get_current_site(request)
- self.assertTrue(isinstance(site, Site))
- self.assertEqual(site.id, settings.SITE_ID)
-
- # Test that an exception is raised if the sites framework is installed
- # but there is no matching Site
- site.delete()
- self.assertRaises(ObjectDoesNotExist, get_current_site, request)
-
- # A RequestSite is returned if the sites framework is not installed
- Site._meta.installed = False
- site = get_current_site(request)
- self.assertTrue(isinstance(site, RequestSite))
- self.assertEqual(site.name, "example.com")
-
- def test_domain_name_with_whitespaces(self):
- # Regression for #17320
- # Domain names are not allowed contain whitespace characters
- site = Site(name="test name", domain="test test")
- self.assertRaises(ValidationError, site.full_clean)
- site.domain = "test\ttest"
- self.assertRaises(ValidationError, site.full_clean)
- site.domain = "test\ntest"
- self.assertRaises(ValidationError, site.full_clean)
diff --git a/lib/python2.7/site-packages/django/contrib/staticfiles/__init__.py b/lib/python2.7/site-packages/django/contrib/staticfiles/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/staticfiles/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/staticfiles/finders.py b/lib/python2.7/site-packages/django/contrib/staticfiles/finders.py
deleted file mode 100644
index 6dfa31b..0000000
--- a/lib/python2.7/site-packages/django/contrib/staticfiles/finders.py
+++ /dev/null
@@ -1,266 +0,0 @@
-import os
-from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured
-from django.core.files.storage import default_storage, Storage, FileSystemStorage
-from django.utils.datastructures import SortedDict
-from django.utils.functional import empty, memoize, LazyObject
-from django.utils.module_loading import import_by_path
-from django.utils._os import safe_join
-from django.utils import six
-
-from django.contrib.staticfiles import utils
-from django.contrib.staticfiles.storage import AppStaticStorage
-
-_finders = SortedDict()
-
-
-class BaseFinder(object):
- """
- A base file finder to be used for custom staticfiles finder classes.
- """
- def find(self, path, all=False):
- """
- Given a relative file path this ought to find an
- absolute file path.
-
- If the ``all`` parameter is ``False`` (default) only
- the first found file path will be returned; if set
- to ``True`` a list of all found files paths is returned.
- """
- raise NotImplementedError()
-
- def list(self, ignore_patterns):
- """
- Given an optional list of paths to ignore, this should return
- a two item iterable consisting of the relative path and storage
- instance.
- """
- raise NotImplementedError()
-
-
-class FileSystemFinder(BaseFinder):
- """
- A static files finder that uses the ``STATICFILES_DIRS`` setting
- to locate files.
- """
- def __init__(self, apps=None, *args, **kwargs):
- # List of locations with static files
- self.locations = []
- # Maps dir paths to an appropriate storage instance
- self.storages = SortedDict()
- if not isinstance(settings.STATICFILES_DIRS, (list, tuple)):
- raise ImproperlyConfigured(
- "Your STATICFILES_DIRS setting is not a tuple or list; "
- "perhaps you forgot a trailing comma?")
- for root in settings.STATICFILES_DIRS:
- if isinstance(root, (list, tuple)):
- prefix, root = root
- else:
- prefix = ''
- if settings.STATIC_ROOT and os.path.abspath(settings.STATIC_ROOT) == os.path.abspath(root):
- raise ImproperlyConfigured(
- "The STATICFILES_DIRS setting should "
- "not contain the STATIC_ROOT setting")
- if (prefix, root) not in self.locations:
- self.locations.append((prefix, root))
- for prefix, root in self.locations:
- filesystem_storage = FileSystemStorage(location=root)
- filesystem_storage.prefix = prefix
- self.storages[root] = filesystem_storage
- super(FileSystemFinder, self).__init__(*args, **kwargs)
-
- def find(self, path, all=False):
- """
- Looks for files in the extra locations
- as defined in ``STATICFILES_DIRS``.
- """
- matches = []
- for prefix, root in self.locations:
- matched_path = self.find_location(root, path, prefix)
- if matched_path:
- if not all:
- return matched_path
- matches.append(matched_path)
- return matches
-
- def find_location(self, root, path, prefix=None):
- """
- Finds a requested static file in a location, returning the found
- absolute path (or ``None`` if no match).
- """
- if prefix:
- prefix = '%s%s' % (prefix, os.sep)
- if not path.startswith(prefix):
- return None
- path = path[len(prefix):]
- path = safe_join(root, path)
- if os.path.exists(path):
- return path
-
- def list(self, ignore_patterns):
- """
- List all files in all locations.
- """
- for prefix, root in self.locations:
- storage = self.storages[root]
- for path in utils.get_files(storage, ignore_patterns):
- yield path, storage
-
-
-class AppDirectoriesFinder(BaseFinder):
- """
- A static files finder that looks in the directory of each app as
- specified in the source_dir attribute of the given storage class.
- """
- storage_class = AppStaticStorage
-
- def __init__(self, apps=None, *args, **kwargs):
- # The list of apps that are handled
- self.apps = []
- # Mapping of app module paths to storage instances
- self.storages = SortedDict()
- if apps is None:
- apps = settings.INSTALLED_APPS
- for app in apps:
- app_storage = self.storage_class(app)
- if os.path.isdir(app_storage.location):
- self.storages[app] = app_storage
- if app not in self.apps:
- self.apps.append(app)
- super(AppDirectoriesFinder, self).__init__(*args, **kwargs)
-
- def list(self, ignore_patterns):
- """
- List all files in all app storages.
- """
- for storage in six.itervalues(self.storages):
- if storage.exists(''): # check if storage location exists
- for path in utils.get_files(storage, ignore_patterns):
- yield path, storage
-
- def find(self, path, all=False):
- """
- Looks for files in the app directories.
- """
- matches = []
- for app in self.apps:
- match = self.find_in_app(app, path)
- if match:
- if not all:
- return match
- matches.append(match)
- return matches
-
- def find_in_app(self, app, path):
- """
- Find a requested static file in an app's static locations.
- """
- storage = self.storages.get(app, None)
- if storage:
- if storage.prefix:
- prefix = '%s%s' % (storage.prefix, os.sep)
- if not path.startswith(prefix):
- return None
- path = path[len(prefix):]
- # only try to find a file if the source dir actually exists
- if storage.exists(path):
- matched_path = storage.path(path)
- if matched_path:
- return matched_path
-
-
-class BaseStorageFinder(BaseFinder):
- """
- A base static files finder to be used to extended
- with an own storage class.
- """
- storage = None
-
- def __init__(self, storage=None, *args, **kwargs):
- if storage is not None:
- self.storage = storage
- if self.storage is None:
- raise ImproperlyConfigured("The staticfiles storage finder %r "
- "doesn't have a storage class "
- "assigned." % self.__class__)
- # Make sure we have an storage instance here.
- if not isinstance(self.storage, (Storage, LazyObject)):
- self.storage = self.storage()
- super(BaseStorageFinder, self).__init__(*args, **kwargs)
-
- def find(self, path, all=False):
- """
- Looks for files in the default file storage, if it's local.
- """
- try:
- self.storage.path('')
- except NotImplementedError:
- pass
- else:
- if self.storage.exists(path):
- match = self.storage.path(path)
- if all:
- match = [match]
- return match
- return []
-
- def list(self, ignore_patterns):
- """
- List all files of the storage.
- """
- for path in utils.get_files(self.storage, ignore_patterns):
- yield path, self.storage
-
-
-class DefaultStorageFinder(BaseStorageFinder):
- """
- A static files finder that uses the default storage backend.
- """
- storage = default_storage
-
- def __init__(self, *args, **kwargs):
- super(DefaultStorageFinder, self).__init__(*args, **kwargs)
- base_location = getattr(self.storage, 'base_location', empty)
- if not base_location:
- raise ImproperlyConfigured("The storage backend of the "
- "staticfiles finder %r doesn't have "
- "a valid location." % self.__class__)
-
-
-def find(path, all=False):
- """
- Find a static file with the given path using all enabled finders.
-
- If ``all`` is ``False`` (default), return the first matching
- absolute path (or ``None`` if no match). Otherwise return a list.
- """
- matches = []
- for finder in get_finders():
- result = finder.find(path, all=all)
- if not all and result:
- return result
- if not isinstance(result, (list, tuple)):
- result = [result]
- matches.extend(result)
- if matches:
- return matches
- # No match.
- return [] if all else None
-
-
-def get_finders():
- for finder_path in settings.STATICFILES_FINDERS:
- yield get_finder(finder_path)
-
-
-def _get_finder(import_path):
- """
- Imports the staticfiles finder class described by import_path, where
- import_path is the full Python path to the class.
- """
- Finder = import_by_path(import_path)
- if not issubclass(Finder, BaseFinder):
- raise ImproperlyConfigured('Finder "%s" is not a subclass of "%s"' %
- (Finder, BaseFinder))
- return Finder()
-get_finder = memoize(_get_finder, _finders, 1)
diff --git a/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py b/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py
deleted file mode 100644
index e6db3dc..0000000
--- a/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py
+++ /dev/null
@@ -1,68 +0,0 @@
-from django.conf import settings
-from django.core.handlers.base import get_path_info
-from django.core.handlers.wsgi import WSGIHandler
-from django.utils.six.moves.urllib.parse import urlparse
-from django.utils.six.moves.urllib.request import url2pathname
-
-from django.contrib.staticfiles import utils
-from django.contrib.staticfiles.views import serve
-
-class StaticFilesHandler(WSGIHandler):
- """
- WSGI middleware that intercepts calls to the static files directory, as
- defined by the STATIC_URL setting, and serves those files.
- """
- def __init__(self, application, base_dir=None):
- self.application = application
- if base_dir:
- self.base_dir = base_dir
- else:
- self.base_dir = self.get_base_dir()
- self.base_url = urlparse(self.get_base_url())
- super(StaticFilesHandler, self).__init__()
-
- def get_base_dir(self):
- return settings.STATIC_ROOT
-
- def get_base_url(self):
- utils.check_settings()
- return settings.STATIC_URL
-
- def _should_handle(self, path):
- """
- Checks if the path should be handled. Ignores the path if:
-
- * the host is provided as part of the base_url
- * the request's path isn't under the media path (or equal)
- """
- return path.startswith(self.base_url[2]) and not self.base_url[1]
-
- def file_path(self, url):
- """
- Returns the relative path to the media file on disk for the given URL.
- """
- relative_url = url[len(self.base_url[2]):]
- return url2pathname(relative_url)
-
- def serve(self, request):
- """
- Actually serves the request path.
- """
- return serve(request, self.file_path(request.path), insecure=True)
-
- def get_response(self, request):
- from django.http import Http404
-
- if self._should_handle(request.path):
- try:
- return self.serve(request)
- except Http404 as e:
- if settings.DEBUG:
- from django.views import debug
- return debug.technical_404_response(request, e)
- return super(StaticFilesHandler, self).get_response(request)
-
- def __call__(self, environ, start_response):
- if not self._should_handle(get_path_info(environ)):
- return self.application(environ, start_response)
- return super(StaticFilesHandler, self).__call__(environ, start_response)
diff --git a/lib/python2.7/site-packages/django/contrib/staticfiles/management/__init__.py b/lib/python2.7/site-packages/django/contrib/staticfiles/management/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/staticfiles/management/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/__init__.py b/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py b/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py
deleted file mode 100644
index 90552b1..0000000
--- a/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py
+++ /dev/null
@@ -1,319 +0,0 @@
-from __future__ import unicode_literals
-
-import os
-import sys
-from optparse import make_option
-
-from django.core.files.storage import FileSystemStorage
-from django.core.management.base import CommandError, NoArgsCommand
-from django.utils.encoding import smart_text
-from django.utils.datastructures import SortedDict
-from django.utils.functional import LazyObject
-from django.utils.six.moves import input
-
-from django.contrib.staticfiles import finders, storage
-
-
-class Command(NoArgsCommand):
- """
- Command that allows to copy or symlink static files from different
- locations to the settings.STATIC_ROOT.
- """
- option_list = NoArgsCommand.option_list + (
- make_option('--noinput',
- action='store_false', dest='interactive', default=True,
- help="Do NOT prompt the user for input of any kind."),
- make_option('--no-post-process',
- action='store_false', dest='post_process', default=True,
- help="Do NOT post process collected files."),
- make_option('-i', '--ignore', action='append', default=[],
- dest='ignore_patterns', metavar='PATTERN',
- help="Ignore files or directories matching this glob-style "
- "pattern. Use multiple times to ignore more."),
- make_option('-n', '--dry-run',
- action='store_true', dest='dry_run', default=False,
- help="Do everything except modify the filesystem."),
- make_option('-c', '--clear',
- action='store_true', dest='clear', default=False,
- help="Clear the existing files using the storage "
- "before trying to copy or link the original file."),
- make_option('-l', '--link',
- action='store_true', dest='link', default=False,
- help="Create a symbolic link to each file instead of copying."),
- make_option('--no-default-ignore', action='store_false',
- dest='use_default_ignore_patterns', default=True,
- help="Don't ignore the common private glob-style patterns 'CVS', "
- "'.*' and '*~'."),
- )
- help = "Collect static files in a single location."
- requires_model_validation = False
-
- def __init__(self, *args, **kwargs):
- super(NoArgsCommand, self).__init__(*args, **kwargs)
- self.copied_files = []
- self.symlinked_files = []
- self.unmodified_files = []
- self.post_processed_files = []
- self.storage = storage.staticfiles_storage
- try:
- self.storage.path('')
- except NotImplementedError:
- self.local = False
- else:
- self.local = True
-
- def set_options(self, **options):
- """
- Set instance variables based on an options dict
- """
- self.interactive = options['interactive']
- self.verbosity = int(options.get('verbosity', 1))
- self.symlink = options['link']
- self.clear = options['clear']
- self.dry_run = options['dry_run']
- ignore_patterns = options['ignore_patterns']
- if options['use_default_ignore_patterns']:
- ignore_patterns += ['CVS', '.*', '*~']
- self.ignore_patterns = list(set(ignore_patterns))
- self.post_process = options['post_process']
-
- def collect(self):
- """
- Perform the bulk of the work of collectstatic.
-
- Split off from handle_noargs() to facilitate testing.
- """
- if self.symlink:
- if sys.platform == 'win32':
- raise CommandError("Symlinking is not supported by this "
- "platform (%s)." % sys.platform)
- if not self.local:
- raise CommandError("Can't symlink to a remote destination.")
-
- if self.clear:
- self.clear_dir('')
-
- if self.symlink:
- handler = self.link_file
- else:
- handler = self.copy_file
-
- found_files = SortedDict()
- for finder in finders.get_finders():
- for path, storage in finder.list(self.ignore_patterns):
- # Prefix the relative path if the source storage contains it
- if getattr(storage, 'prefix', None):
- prefixed_path = os.path.join(storage.prefix, path)
- else:
- prefixed_path = path
-
- if prefixed_path not in found_files:
- found_files[prefixed_path] = (storage, path)
- handler(path, prefixed_path, storage)
-
- # Here we check if the storage backend has a post_process
- # method and pass it the list of modified files.
- if self.post_process and hasattr(self.storage, 'post_process'):
- processor = self.storage.post_process(found_files,
- dry_run=self.dry_run)
- for original_path, processed_path, processed in processor:
- if isinstance(processed, Exception):
- self.stderr.write("Post-processing '%s' failed!" % original_path)
- # Add a blank line before the traceback, otherwise it's
- # too easy to miss the relevant part of the error message.
- self.stderr.write("")
- raise processed
- if processed:
- self.log("Post-processed '%s' as '%s'" %
- (original_path, processed_path), level=1)
- self.post_processed_files.append(original_path)
- else:
- self.log("Skipped post-processing '%s'" % original_path)
-
- return {
- 'modified': self.copied_files + self.symlinked_files,
- 'unmodified': self.unmodified_files,
- 'post_processed': self.post_processed_files,
- }
-
- def handle_noargs(self, **options):
- self.set_options(**options)
-
- message = ['\n']
- if self.dry_run:
- message.append(
- 'You have activated the --dry-run option so no files will be modified.\n\n'
- )
-
- message.append(
- 'You have requested to collect static files at the destination\n'
- 'location as specified in your settings'
- )
-
- if self.is_local_storage() and self.storage.location:
- destination_path = self.storage.location
- message.append(':\n\n %s\n\n' % destination_path)
- else:
- destination_path = None
- message.append('.\n\n')
-
- if self.clear:
- message.append('This will DELETE EXISTING FILES!\n')
- else:
- message.append('This will overwrite existing files!\n')
-
- message.append(
- 'Are you sure you want to do this?\n\n'
- "Type 'yes' to continue, or 'no' to cancel: "
- )
-
- if self.interactive and input(''.join(message)) != 'yes':
- raise CommandError("Collecting static files cancelled.")
-
- collected = self.collect()
- modified_count = len(collected['modified'])
- unmodified_count = len(collected['unmodified'])
- post_processed_count = len(collected['post_processed'])
-
- if self.verbosity >= 1:
- template = ("\n%(modified_count)s %(identifier)s %(action)s"
- "%(destination)s%(unmodified)s%(post_processed)s.\n")
- summary = template % {
- 'modified_count': modified_count,
- 'identifier': 'static file' + ('' if modified_count == 1 else 's'),
- 'action': 'symlinked' if self.symlink else 'copied',
- 'destination': (" to '%s'" % destination_path if destination_path else ''),
- 'unmodified': (', %s unmodified' % unmodified_count if collected['unmodified'] else ''),
- 'post_processed': (collected['post_processed'] and
- ', %s post-processed'
- % post_processed_count or ''),
- }
- self.stdout.write(summary)
-
- def log(self, msg, level=2):
- """
- Small log helper
- """
- if self.verbosity >= level:
- self.stdout.write(msg)
-
- def is_local_storage(self):
- if issubclass(self.storage.__class__, LazyObject):
- storage = self.storage._wrapped
- else:
- storage = self.storage
- return isinstance(storage, FileSystemStorage)
-
- def clear_dir(self, path):
- """
- Deletes the given relative path using the destination storage backend.
- """
- dirs, files = self.storage.listdir(path)
- for f in files:
- fpath = os.path.join(path, f)
- if self.dry_run:
- self.log("Pretending to delete '%s'" %
- smart_text(fpath), level=1)
- else:
- self.log("Deleting '%s'" % smart_text(fpath), level=1)
- self.storage.delete(fpath)
- for d in dirs:
- self.clear_dir(os.path.join(path, d))
-
- def delete_file(self, path, prefixed_path, source_storage):
- """
- Checks if the target file should be deleted if it already exists
- """
- if self.storage.exists(prefixed_path):
- try:
- # When was the target file modified last time?
- target_last_modified = \
- self.storage.modified_time(prefixed_path)
- except (OSError, NotImplementedError, AttributeError):
- # The storage doesn't support ``modified_time`` or failed
- pass
- else:
- try:
- # When was the source file modified last time?
- source_last_modified = source_storage.modified_time(path)
- except (OSError, NotImplementedError, AttributeError):
- pass
- else:
- # The full path of the target file
- if self.local:
- full_path = self.storage.path(prefixed_path)
- else:
- full_path = None
- # Skip the file if the source file is younger
- # Avoid sub-second precision (see #14665, #19540)
- if (target_last_modified.replace(microsecond=0)
- >= source_last_modified.replace(microsecond=0)):
- if not ((self.symlink and full_path
- and not os.path.islink(full_path)) or
- (not self.symlink and full_path
- and os.path.islink(full_path))):
- if prefixed_path not in self.unmodified_files:
- self.unmodified_files.append(prefixed_path)
- self.log("Skipping '%s' (not modified)" % path)
- return False
- # Then delete the existing file if really needed
- if self.dry_run:
- self.log("Pretending to delete '%s'" % path)
- else:
- self.log("Deleting '%s'" % path)
- self.storage.delete(prefixed_path)
- return True
-
- def link_file(self, path, prefixed_path, source_storage):
- """
- Attempt to link ``path``
- """
- # Skip this file if it was already copied earlier
- if prefixed_path in self.symlinked_files:
- return self.log("Skipping '%s' (already linked earlier)" % path)
- # Delete the target file if needed or break
- if not self.delete_file(path, prefixed_path, source_storage):
- return
- # The full path of the source file
- source_path = source_storage.path(path)
- # Finally link the file
- if self.dry_run:
- self.log("Pretending to link '%s'" % source_path, level=1)
- else:
- self.log("Linking '%s'" % source_path, level=1)
- full_path = self.storage.path(prefixed_path)
- try:
- os.makedirs(os.path.dirname(full_path))
- except OSError:
- pass
- os.symlink(source_path, full_path)
- if prefixed_path not in self.symlinked_files:
- self.symlinked_files.append(prefixed_path)
-
- def copy_file(self, path, prefixed_path, source_storage):
- """
- Attempt to copy ``path`` with storage
- """
- # Skip this file if it was already copied earlier
- if prefixed_path in self.copied_files:
- return self.log("Skipping '%s' (already copied earlier)" % path)
- # Delete the target file if needed or break
- if not self.delete_file(path, prefixed_path, source_storage):
- return
- # The full path of the source file
- source_path = source_storage.path(path)
- # Finally start copying
- if self.dry_run:
- self.log("Pretending to copy '%s'" % source_path, level=1)
- else:
- self.log("Copying '%s'" % source_path, level=1)
- if self.local:
- full_path = self.storage.path(prefixed_path)
- try:
- os.makedirs(os.path.dirname(full_path))
- except OSError:
- pass
- with source_storage.open(path) as source_file:
- self.storage.save(prefixed_path, source_file)
- if not prefixed_path in self.copied_files:
- self.copied_files.append(prefixed_path)
diff --git a/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/findstatic.py b/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/findstatic.py
deleted file mode 100644
index eaf63f7..0000000
--- a/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/findstatic.py
+++ /dev/null
@@ -1,34 +0,0 @@
-from __future__ import unicode_literals
-
-import os
-from optparse import make_option
-from django.core.management.base import LabelCommand
-from django.utils.encoding import force_text
-
-from django.contrib.staticfiles import finders
-
-class Command(LabelCommand):
- help = "Finds the absolute paths for the given static file(s)."
- args = "[file ...]"
- label = 'static file'
- option_list = LabelCommand.option_list + (
- make_option('--first', action='store_false', dest='all', default=True,
- help="Only return the first match for each static file."),
- )
-
- def handle_label(self, path, **options):
- verbosity = int(options.get('verbosity', 1))
- result = finders.find(path, all=options['all'])
- path = force_text(path)
- if result:
- if not isinstance(result, (list, tuple)):
- result = [result]
- result = (force_text(os.path.realpath(path)) for path in result)
- if verbosity >= 1:
- output = '\n '.join(result)
- return "Found '%s' here:\n %s" % (path, output)
- else:
- return '\n'.join(result)
- else:
- if verbosity >= 1:
- self.stderr.write("No matching file found for '%s'." % path)
diff --git a/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/runserver.py b/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/runserver.py
deleted file mode 100644
index 0f9e39f..0000000
--- a/lib/python2.7/site-packages/django/contrib/staticfiles/management/commands/runserver.py
+++ /dev/null
@@ -1,29 +0,0 @@
-from optparse import make_option
-
-from django.conf import settings
-from django.core.management.commands.runserver import Command as RunserverCommand
-
-from django.contrib.staticfiles.handlers import StaticFilesHandler
-
-class Command(RunserverCommand):
- option_list = RunserverCommand.option_list + (
- make_option('--nostatic', action="store_false", dest='use_static_handler', default=True,
- help='Tells Django to NOT automatically serve static files at STATIC_URL.'),
- make_option('--insecure', action="store_true", dest='insecure_serving', default=False,
- help='Allows serving static files even if DEBUG is False.'),
- )
- help = "Starts a lightweight Web server for development and also serves static files."
-
- def get_handler(self, *args, **options):
- """
- Returns the static files serving handler wrapping the default handler,
- if static files should be served. Otherwise just returns the default
- handler.
-
- """
- handler = super(Command, self).get_handler(*args, **options)
- use_static_handler = options.get('use_static_handler', True)
- insecure_serving = options.get('insecure_serving', False)
- if use_static_handler and (settings.DEBUG or insecure_serving):
- return StaticFilesHandler(handler)
- return handler
diff --git a/lib/python2.7/site-packages/django/contrib/staticfiles/models.py b/lib/python2.7/site-packages/django/contrib/staticfiles/models.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/staticfiles/models.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/staticfiles/storage.py b/lib/python2.7/site-packages/django/contrib/staticfiles/storage.py
deleted file mode 100644
index 7e0b8f0..0000000
--- a/lib/python2.7/site-packages/django/contrib/staticfiles/storage.py
+++ /dev/null
@@ -1,313 +0,0 @@
-from __future__ import unicode_literals
-import hashlib
-import os
-import posixpath
-import re
-
-from django.conf import settings
-from django.core.cache import (get_cache, InvalidCacheBackendError,
- cache as default_cache)
-from django.core.exceptions import ImproperlyConfigured
-from django.core.files.base import ContentFile
-from django.core.files.storage import FileSystemStorage, get_storage_class
-from django.utils.datastructures import SortedDict
-from django.utils.encoding import force_bytes, force_text
-from django.utils.functional import LazyObject
-from django.utils.importlib import import_module
-from django.utils.six.moves.urllib.parse import unquote, urlsplit, urlunsplit, urldefrag
-from django.utils._os import upath
-
-from django.contrib.staticfiles.utils import check_settings, matches_patterns
-
-
-class StaticFilesStorage(FileSystemStorage):
- """
- Standard file system storage for static files.
-
- The defaults for ``location`` and ``base_url`` are
- ``STATIC_ROOT`` and ``STATIC_URL``.
- """
- def __init__(self, location=None, base_url=None, *args, **kwargs):
- if location is None:
- location = settings.STATIC_ROOT
- if base_url is None:
- base_url = settings.STATIC_URL
- check_settings(base_url)
- super(StaticFilesStorage, self).__init__(location, base_url,
- *args, **kwargs)
- # FileSystemStorage fallbacks to MEDIA_ROOT when location
- # is empty, so we restore the empty value.
- if not location:
- self.base_location = None
- self.location = None
-
- def path(self, name):
- if not self.location:
- raise ImproperlyConfigured("You're using the staticfiles app "
- "without having set the STATIC_ROOT "
- "setting to a filesystem path.")
- return super(StaticFilesStorage, self).path(name)
-
-
-class CachedFilesMixin(object):
- default_template = """url("%s")"""
- patterns = (
- ("*.css", (
- r"""(url\(['"]{0,1}\s*(.*?)["']{0,1}\))""",
- (r"""(@import\s*["']\s*(.*?)["'])""", """@import url("%s")"""),
- )),
- )
-
- def __init__(self, *args, **kwargs):
- super(CachedFilesMixin, self).__init__(*args, **kwargs)
- try:
- self.cache = get_cache('staticfiles')
- except InvalidCacheBackendError:
- # Use the default backend
- self.cache = default_cache
- self._patterns = SortedDict()
- for extension, patterns in self.patterns:
- for pattern in patterns:
- if isinstance(pattern, (tuple, list)):
- pattern, template = pattern
- else:
- template = self.default_template
- compiled = re.compile(pattern, re.IGNORECASE)
- self._patterns.setdefault(extension, []).append((compiled, template))
-
- def file_hash(self, name, content=None):
- """
- Retuns a hash of the file with the given name and optional content.
- """
- if content is None:
- return None
- md5 = hashlib.md5()
- for chunk in content.chunks():
- md5.update(chunk)
- return md5.hexdigest()[:12]
-
- def hashed_name(self, name, content=None):
- parsed_name = urlsplit(unquote(name))
- clean_name = parsed_name.path.strip()
- opened = False
- if content is None:
- if not self.exists(clean_name):
- raise ValueError("The file '%s' could not be found with %r." %
- (clean_name, self))
- try:
- content = self.open(clean_name)
- except IOError:
- # Handle directory paths and fragments
- return name
- opened = True
- try:
- file_hash = self.file_hash(clean_name, content)
- finally:
- if opened:
- content.close()
- path, filename = os.path.split(clean_name)
- root, ext = os.path.splitext(filename)
- if file_hash is not None:
- file_hash = ".%s" % file_hash
- hashed_name = os.path.join(path, "%s%s%s" %
- (root, file_hash, ext))
- unparsed_name = list(parsed_name)
- unparsed_name[2] = hashed_name
- # Special casing for a @font-face hack, like url(myfont.eot?#iefix")
- # http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax
- if '?#' in name and not unparsed_name[3]:
- unparsed_name[2] += '?'
- return urlunsplit(unparsed_name)
-
- def cache_key(self, name):
- return 'staticfiles:%s' % hashlib.md5(force_bytes(name)).hexdigest()
-
- def url(self, name, force=False):
- """
- Returns the real URL in DEBUG mode.
- """
- if settings.DEBUG and not force:
- hashed_name, fragment = name, ''
- else:
- clean_name, fragment = urldefrag(name)
- if urlsplit(clean_name).path.endswith('/'): # don't hash paths
- hashed_name = name
- else:
- cache_key = self.cache_key(name)
- hashed_name = self.cache.get(cache_key)
- if hashed_name is None:
- hashed_name = self.hashed_name(clean_name).replace('\\', '/')
- # set the cache if there was a miss
- # (e.g. if cache server goes down)
- self.cache.set(cache_key, hashed_name)
-
- final_url = super(CachedFilesMixin, self).url(hashed_name)
-
- # Special casing for a @font-face hack, like url(myfont.eot?#iefix")
- # http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax
- query_fragment = '?#' in name # [sic!]
- if fragment or query_fragment:
- urlparts = list(urlsplit(final_url))
- if fragment and not urlparts[4]:
- urlparts[4] = fragment
- if query_fragment and not urlparts[3]:
- urlparts[2] += '?'
- final_url = urlunsplit(urlparts)
-
- return unquote(final_url)
-
- def url_converter(self, name, template=None):
- """
- Returns the custom URL converter for the given file name.
- """
- if template is None:
- template = self.default_template
-
- def converter(matchobj):
- """
- Converts the matched URL depending on the parent level (`..`)
- and returns the normalized and hashed URL using the url method
- of the storage.
- """
- matched, url = matchobj.groups()
- # Completely ignore http(s) prefixed URLs,
- # fragments and data-uri URLs
- if url.startswith(('#', 'http:', 'https:', 'data:', '//')):
- return matched
- name_parts = name.split(os.sep)
- # Using posix normpath here to remove duplicates
- url = posixpath.normpath(url)
- url_parts = url.split('/')
- parent_level, sub_level = url.count('..'), url.count('/')
- if url.startswith('/'):
- sub_level -= 1
- url_parts = url_parts[1:]
- if parent_level or not url.startswith('/'):
- start, end = parent_level + 1, parent_level
- else:
- if sub_level:
- if sub_level == 1:
- parent_level -= 1
- start, end = parent_level, 1
- else:
- start, end = 1, sub_level - 1
- joined_result = '/'.join(name_parts[:-start] + url_parts[end:])
- hashed_url = self.url(unquote(joined_result), force=True)
- file_name = hashed_url.split('/')[-1:]
- relative_url = '/'.join(url.split('/')[:-1] + file_name)
-
- # Return the hashed version to the file
- return template % unquote(relative_url)
-
- return converter
-
- def post_process(self, paths, dry_run=False, **options):
- """
- Post process the given SortedDict of files (called from collectstatic).
-
- Processing is actually two separate operations:
-
- 1. renaming files to include a hash of their content for cache-busting,
- and copying those files to the target storage.
- 2. adjusting files which contain references to other files so they
- refer to the cache-busting filenames.
-
- If either of these are performed on a file, then that file is considered
- post-processed.
- """
- # don't even dare to process the files if we're in dry run mode
- if dry_run:
- return
-
- # where to store the new paths
- hashed_paths = {}
-
- # build a list of adjustable files
- matches = lambda path: matches_patterns(path, self._patterns.keys())
- adjustable_paths = [path for path in paths if matches(path)]
-
- # then sort the files by the directory level
- path_level = lambda name: len(name.split(os.sep))
- for name in sorted(paths.keys(), key=path_level, reverse=True):
-
- # use the original, local file, not the copied-but-unprocessed
- # file, which might be somewhere far away, like S3
- storage, path = paths[name]
- with storage.open(path) as original_file:
-
- # generate the hash with the original content, even for
- # adjustable files.
- hashed_name = self.hashed_name(name, original_file)
-
- # then get the original's file content..
- if hasattr(original_file, 'seek'):
- original_file.seek(0)
-
- hashed_file_exists = self.exists(hashed_name)
- processed = False
-
- # ..to apply each replacement pattern to the content
- if name in adjustable_paths:
- content = original_file.read().decode(settings.FILE_CHARSET)
- for patterns in self._patterns.values():
- for pattern, template in patterns:
- converter = self.url_converter(name, template)
- try:
- content = pattern.sub(converter, content)
- except ValueError as exc:
- yield name, None, exc
- if hashed_file_exists:
- self.delete(hashed_name)
- # then save the processed result
- content_file = ContentFile(force_bytes(content))
- saved_name = self._save(hashed_name, content_file)
- hashed_name = force_text(saved_name.replace('\\', '/'))
- processed = True
- else:
- # or handle the case in which neither processing nor
- # a change to the original file happened
- if not hashed_file_exists:
- processed = True
- saved_name = self._save(hashed_name, original_file)
- hashed_name = force_text(saved_name.replace('\\', '/'))
-
- # and then set the cache accordingly
- hashed_paths[self.cache_key(name.replace('\\', '/'))] = hashed_name
- yield name, hashed_name, processed
-
- # Finally set the cache
- self.cache.set_many(hashed_paths)
-
-
-class CachedStaticFilesStorage(CachedFilesMixin, StaticFilesStorage):
- """
- A static file system storage backend which also saves
- hashed copies of the files it saves.
- """
- pass
-
-
-class AppStaticStorage(FileSystemStorage):
- """
- A file system storage backend that takes an app module and works
- for the ``static`` directory of it.
- """
- prefix = None
- source_dir = 'static'
-
- def __init__(self, app, *args, **kwargs):
- """
- Returns a static file storage if available in the given app.
- """
- # app is the actual app module
- mod = import_module(app)
- mod_path = os.path.dirname(upath(mod.__file__))
- location = os.path.join(mod_path, self.source_dir)
- super(AppStaticStorage, self).__init__(location, *args, **kwargs)
-
-
-class ConfiguredStorage(LazyObject):
- def _setup(self):
- self._wrapped = get_storage_class(settings.STATICFILES_STORAGE)()
-
-staticfiles_storage = ConfiguredStorage()
diff --git a/lib/python2.7/site-packages/django/contrib/staticfiles/templatetags/__init__.py b/lib/python2.7/site-packages/django/contrib/staticfiles/templatetags/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/staticfiles/templatetags/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/staticfiles/templatetags/staticfiles.py b/lib/python2.7/site-packages/django/contrib/staticfiles/templatetags/staticfiles.py
deleted file mode 100644
index ab92275..0000000
--- a/lib/python2.7/site-packages/django/contrib/staticfiles/templatetags/staticfiles.py
+++ /dev/null
@@ -1,37 +0,0 @@
-from django import template
-from django.templatetags.static import StaticNode
-from django.contrib.staticfiles.storage import staticfiles_storage
-
-register = template.Library()
-
-
-class StaticFilesNode(StaticNode):
-
- def url(self, context):
- path = self.path.resolve(context)
- return staticfiles_storage.url(path)
-
-
-@register.tag('static')
-def do_static(parser, token):
- """
- A template tag that returns the URL to a file
- using staticfiles' storage backend
-
- Usage::
-
- {% static path [as varname] %}
-
- Examples::
-
- {% static "myapp/css/base.css" %}
- {% static variable_with_path %}
- {% static "myapp/css/base.css" as admin_base_css %}
- {% static variable_with_path as varname %}
-
- """
- return StaticFilesNode.handle_token(parser, token)
-
-
-def static(path):
- return staticfiles_storage.url(path)
diff --git a/lib/python2.7/site-packages/django/contrib/staticfiles/urls.py b/lib/python2.7/site-packages/django/contrib/staticfiles/urls.py
deleted file mode 100644
index 04062c1..0000000
--- a/lib/python2.7/site-packages/django/contrib/staticfiles/urls.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from django.conf import settings
-from django.conf.urls.static import static
-
-urlpatterns = []
-
-def staticfiles_urlpatterns(prefix=None):
- """
- Helper function to return a URL pattern for serving static files.
- """
- if prefix is None:
- prefix = settings.STATIC_URL
- return static(prefix, view='django.contrib.staticfiles.views.serve')
-
-# Only append if urlpatterns are empty
-if settings.DEBUG and not urlpatterns:
- urlpatterns += staticfiles_urlpatterns()
diff --git a/lib/python2.7/site-packages/django/contrib/staticfiles/utils.py b/lib/python2.7/site-packages/django/contrib/staticfiles/utils.py
deleted file mode 100644
index f500ed6..0000000
--- a/lib/python2.7/site-packages/django/contrib/staticfiles/utils.py
+++ /dev/null
@@ -1,57 +0,0 @@
-import os
-import fnmatch
-from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured
-
-def matches_patterns(path, patterns=None):
- """
- Return True or False depending on whether the ``path`` should be
- ignored (if it matches any pattern in ``ignore_patterns``).
- """
- if patterns is None:
- patterns = []
- for pattern in patterns:
- if fnmatch.fnmatchcase(path, pattern):
- return True
- return False
-
-def get_files(storage, ignore_patterns=None, location=''):
- """
- Recursively walk the storage directories yielding the paths
- of all files that should be copied.
- """
- if ignore_patterns is None:
- ignore_patterns = []
- directories, files = storage.listdir(location)
- for fn in files:
- if matches_patterns(fn, ignore_patterns):
- continue
- if location:
- fn = os.path.join(location, fn)
- yield fn
- for dir in directories:
- if matches_patterns(dir, ignore_patterns):
- continue
- if location:
- dir = os.path.join(location, dir)
- for fn in get_files(storage, ignore_patterns, dir):
- yield fn
-
-def check_settings(base_url=None):
- """
- Checks if the staticfiles settings have sane values.
-
- """
- if base_url is None:
- base_url = settings.STATIC_URL
- if not base_url:
- raise ImproperlyConfigured(
- "You're using the staticfiles app "
- "without having set the required STATIC_URL setting.")
- if settings.MEDIA_URL == base_url:
- raise ImproperlyConfigured("The MEDIA_URL and STATIC_URL "
- "settings must have different values")
- if ((settings.MEDIA_ROOT and settings.STATIC_ROOT) and
- (settings.MEDIA_ROOT == settings.STATIC_ROOT)):
- raise ImproperlyConfigured("The MEDIA_ROOT and STATIC_ROOT "
- "settings must have different values")
diff --git a/lib/python2.7/site-packages/django/contrib/staticfiles/views.py b/lib/python2.7/site-packages/django/contrib/staticfiles/views.py
deleted file mode 100644
index a7f9b0d..0000000
--- a/lib/python2.7/site-packages/django/contrib/staticfiles/views.py
+++ /dev/null
@@ -1,41 +0,0 @@
-"""
-Views and functions for serving static files. These are only to be used during
-development, and SHOULD NOT be used in a production setting.
-
-"""
-import os
-import posixpath
-
-from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured
-from django.http import Http404
-from django.utils.six.moves.urllib.parse import unquote
-from django.views import static
-
-from django.contrib.staticfiles import finders
-
-def serve(request, path, insecure=False, **kwargs):
- """
- Serve static files below a given point in the directory structure or
- from locations inferred from the staticfiles finders.
-
- To use, put a URL pattern such as::
-
- (r'^(?P<path>.*)$', 'django.contrib.staticfiles.views.serve')
-
- in your URLconf.
-
- It uses the django.views.static view to serve the found files.
- """
- if not settings.DEBUG and not insecure:
- raise ImproperlyConfigured("The staticfiles view can only be used in "
- "debug mode or if the --insecure "
- "option of 'runserver' is used")
- normalized_path = posixpath.normpath(unquote(path)).lstrip('/')
- absolute_path = finders.find(normalized_path)
- if not absolute_path:
- if path.endswith('/') or path == '':
- raise Http404("Directory indexes are not allowed here.")
- raise Http404("'%s' could not be found" % path)
- document_root, path = os.path.split(absolute_path)
- return static.serve(request, path, document_root=document_root, **kwargs)
diff --git a/lib/python2.7/site-packages/django/contrib/syndication/__init__.py b/lib/python2.7/site-packages/django/contrib/syndication/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/syndication/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/syndication/views.py b/lib/python2.7/site-packages/django/contrib/syndication/views.py
deleted file mode 100644
index 3bfba3b..0000000
--- a/lib/python2.7/site-packages/django/contrib/syndication/views.py
+++ /dev/null
@@ -1,210 +0,0 @@
-from __future__ import unicode_literals
-
-from calendar import timegm
-
-from django.conf import settings
-from django.contrib.sites.models import get_current_site
-from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist
-from django.http import HttpResponse, Http404
-from django.template import loader, TemplateDoesNotExist, RequestContext
-from django.utils import feedgenerator, tzinfo
-from django.utils.encoding import force_text, iri_to_uri, smart_text
-from django.utils.html import escape
-from django.utils.http import http_date
-from django.utils import six
-from django.utils.timezone import is_naive
-
-
-def add_domain(domain, url, secure=False):
- protocol = 'https' if secure else 'http'
- if url.startswith('//'):
- # Support network-path reference (see #16753) - RSS requires a protocol
- url = '%s:%s' % (protocol, url)
- elif not (url.startswith('http://')
- or url.startswith('https://')
- or url.startswith('mailto:')):
- url = iri_to_uri('%s://%s%s' % (protocol, domain, url))
- return url
-
-
-class FeedDoesNotExist(ObjectDoesNotExist):
- pass
-
-
-class Feed(object):
- feed_type = feedgenerator.DefaultFeed
- title_template = None
- description_template = None
-
- def __call__(self, request, *args, **kwargs):
- try:
- obj = self.get_object(request, *args, **kwargs)
- except ObjectDoesNotExist:
- raise Http404('Feed object does not exist.')
- feedgen = self.get_feed(obj, request)
- response = HttpResponse(content_type=feedgen.mime_type)
- if hasattr(self, 'item_pubdate'):
- # if item_pubdate is defined for the feed, set header so as
- # ConditionalGetMiddleware is able to send 304 NOT MODIFIED
- response['Last-Modified'] = http_date(
- timegm(feedgen.latest_post_date().utctimetuple()))
- feedgen.write(response, 'utf-8')
- return response
-
- def item_title(self, item):
- # Titles should be double escaped by default (see #6533)
- return escape(force_text(item))
-
- def item_description(self, item):
- return force_text(item)
-
- def item_link(self, item):
- try:
- return item.get_absolute_url()
- except AttributeError:
- raise ImproperlyConfigured('Give your %s class a get_absolute_url() method, or define an item_link() method in your Feed class.' % item.__class__.__name__)
-
- def __get_dynamic_attr(self, attname, obj, default=None):
- try:
- attr = getattr(self, attname)
- except AttributeError:
- return default
- if callable(attr):
- # Check co_argcount rather than try/excepting the function and
- # catching the TypeError, because something inside the function
- # may raise the TypeError. This technique is more accurate.
- try:
- code = six.get_function_code(attr)
- except AttributeError:
- code = six.get_function_code(attr.__call__)
- if code.co_argcount == 2: # one argument is 'self'
- return attr(obj)
- else:
- return attr()
- return attr
-
- def feed_extra_kwargs(self, obj):
- """
- Returns an extra keyword arguments dictionary that is used when
- initializing the feed generator.
- """
- return {}
-
- def item_extra_kwargs(self, item):
- """
- Returns an extra keyword arguments dictionary that is used with
- the `add_item` call of the feed generator.
- """
- return {}
-
- def get_object(self, request, *args, **kwargs):
- return None
-
- def get_context_data(self, **kwargs):
- """
- Returns a dictionary to use as extra context if either
- ``self.description_template`` or ``self.item_template`` are used.
-
- Default implementation preserves the old behavior
- of using {'obj': item, 'site': current_site} as the context.
- """
- return {'obj': kwargs.get('item'), 'site': kwargs.get('site')}
-
- def get_feed(self, obj, request):
- """
- Returns a feedgenerator.DefaultFeed object, fully populated, for
- this feed. Raises FeedDoesNotExist for invalid parameters.
- """
- current_site = get_current_site(request)
-
- link = self.__get_dynamic_attr('link', obj)
- link = add_domain(current_site.domain, link, request.is_secure())
-
- feed = self.feed_type(
- title = self.__get_dynamic_attr('title', obj),
- subtitle = self.__get_dynamic_attr('subtitle', obj),
- link = link,
- description = self.__get_dynamic_attr('description', obj),
- language = settings.LANGUAGE_CODE,
- feed_url = add_domain(
- current_site.domain,
- self.__get_dynamic_attr('feed_url', obj) or request.path,
- request.is_secure(),
- ),
- author_name = self.__get_dynamic_attr('author_name', obj),
- author_link = self.__get_dynamic_attr('author_link', obj),
- author_email = self.__get_dynamic_attr('author_email', obj),
- categories = self.__get_dynamic_attr('categories', obj),
- feed_copyright = self.__get_dynamic_attr('feed_copyright', obj),
- feed_guid = self.__get_dynamic_attr('feed_guid', obj),
- ttl = self.__get_dynamic_attr('ttl', obj),
- **self.feed_extra_kwargs(obj)
- )
-
- title_tmp = None
- if self.title_template is not None:
- try:
- title_tmp = loader.get_template(self.title_template)
- except TemplateDoesNotExist:
- pass
-
- description_tmp = None
- if self.description_template is not None:
- try:
- description_tmp = loader.get_template(self.description_template)
- except TemplateDoesNotExist:
- pass
-
- for item in self.__get_dynamic_attr('items', obj):
- context = self.get_context_data(item=item, site=current_site,
- obj=obj, request=request)
- if title_tmp is not None:
- title = title_tmp.render(RequestContext(request, context))
- else:
- title = self.__get_dynamic_attr('item_title', item)
- if description_tmp is not None:
- description = description_tmp.render(RequestContext(request, context))
- else:
- description = self.__get_dynamic_attr('item_description', item)
- link = add_domain(
- current_site.domain,
- self.__get_dynamic_attr('item_link', item),
- request.is_secure(),
- )
- enc = None
- enc_url = self.__get_dynamic_attr('item_enclosure_url', item)
- if enc_url:
- enc = feedgenerator.Enclosure(
- url = smart_text(enc_url),
- length = smart_text(self.__get_dynamic_attr('item_enclosure_length', item)),
- mime_type = smart_text(self.__get_dynamic_attr('item_enclosure_mime_type', item))
- )
- author_name = self.__get_dynamic_attr('item_author_name', item)
- if author_name is not None:
- author_email = self.__get_dynamic_attr('item_author_email', item)
- author_link = self.__get_dynamic_attr('item_author_link', item)
- else:
- author_email = author_link = None
-
- pubdate = self.__get_dynamic_attr('item_pubdate', item)
- if pubdate and is_naive(pubdate):
- ltz = tzinfo.LocalTimezone(pubdate)
- pubdate = pubdate.replace(tzinfo=ltz)
-
- feed.add_item(
- title = title,
- link = link,
- description = description,
- unique_id = self.__get_dynamic_attr('item_guid', item, link),
- unique_id_is_permalink = self.__get_dynamic_attr(
- 'item_guid_is_permalink', item),
- enclosure = enc,
- pubdate = pubdate,
- author_name = author_name,
- author_email = author_email,
- author_link = author_link,
- categories = self.__get_dynamic_attr('item_categories', item),
- item_copyright = self.__get_dynamic_attr('item_copyright', item),
- **self.item_extra_kwargs(item)
- )
- return feed
diff --git a/lib/python2.7/site-packages/django/contrib/webdesign/__init__.py b/lib/python2.7/site-packages/django/contrib/webdesign/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/webdesign/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/webdesign/lorem_ipsum.py b/lib/python2.7/site-packages/django/contrib/webdesign/lorem_ipsum.py
deleted file mode 100644
index 01d8f22..0000000
--- a/lib/python2.7/site-packages/django/contrib/webdesign/lorem_ipsum.py
+++ /dev/null
@@ -1,103 +0,0 @@
-"""
-Utility functions for generating "lorem ipsum" Latin text.
-"""
-
-from __future__ import unicode_literals
-
-import random
-
-COMMON_P = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
-
-WORDS = ('exercitationem', 'perferendis', 'perspiciatis', 'laborum', 'eveniet',
- 'sunt', 'iure', 'nam', 'nobis', 'eum', 'cum', 'officiis', 'excepturi',
- 'odio', 'consectetur', 'quasi', 'aut', 'quisquam', 'vel', 'eligendi',
- 'itaque', 'non', 'odit', 'tempore', 'quaerat', 'dignissimos',
- 'facilis', 'neque', 'nihil', 'expedita', 'vitae', 'vero', 'ipsum',
- 'nisi', 'animi', 'cumque', 'pariatur', 'velit', 'modi', 'natus',
- 'iusto', 'eaque', 'sequi', 'illo', 'sed', 'ex', 'et', 'voluptatibus',
- 'tempora', 'veritatis', 'ratione', 'assumenda', 'incidunt', 'nostrum',
- 'placeat', 'aliquid', 'fuga', 'provident', 'praesentium', 'rem',
- 'necessitatibus', 'suscipit', 'adipisci', 'quidem', 'possimus',
- 'voluptas', 'debitis', 'sint', 'accusantium', 'unde', 'sapiente',
- 'voluptate', 'qui', 'aspernatur', 'laudantium', 'soluta', 'amet',
- 'quo', 'aliquam', 'saepe', 'culpa', 'libero', 'ipsa', 'dicta',
- 'reiciendis', 'nesciunt', 'doloribus', 'autem', 'impedit', 'minima',
- 'maiores', 'repudiandae', 'ipsam', 'obcaecati', 'ullam', 'enim',
- 'totam', 'delectus', 'ducimus', 'quis', 'voluptates', 'dolores',
- 'molestiae', 'harum', 'dolorem', 'quia', 'voluptatem', 'molestias',
- 'magni', 'distinctio', 'omnis', 'illum', 'dolorum', 'voluptatum', 'ea',
- 'quas', 'quam', 'corporis', 'quae', 'blanditiis', 'atque', 'deserunt',
- 'laboriosam', 'earum', 'consequuntur', 'hic', 'cupiditate',
- 'quibusdam', 'accusamus', 'ut', 'rerum', 'error', 'minus', 'eius',
- 'ab', 'ad', 'nemo', 'fugit', 'officia', 'at', 'in', 'id', 'quos',
- 'reprehenderit', 'numquam', 'iste', 'fugiat', 'sit', 'inventore',
- 'beatae', 'repellendus', 'magnam', 'recusandae', 'quod', 'explicabo',
- 'doloremque', 'aperiam', 'consequatur', 'asperiores', 'commodi',
- 'optio', 'dolor', 'labore', 'temporibus', 'repellat', 'veniam',
- 'architecto', 'est', 'esse', 'mollitia', 'nulla', 'a', 'similique',
- 'eos', 'alias', 'dolore', 'tenetur', 'deleniti', 'porro', 'facere',
- 'maxime', 'corrupti')
-
-COMMON_WORDS = ('lorem', 'ipsum', 'dolor', 'sit', 'amet', 'consectetur',
- 'adipisicing', 'elit', 'sed', 'do', 'eiusmod', 'tempor', 'incididunt',
- 'ut', 'labore', 'et', 'dolore', 'magna', 'aliqua')
-
-def sentence():
- """
- Returns a randomly generated sentence of lorem ipsum text.
-
- The first word is capitalized, and the sentence ends in either a period or
- question mark. Commas are added at random.
- """
- # Determine the number of comma-separated sections and number of words in
- # each section for this sentence.
- sections = [' '.join(random.sample(WORDS, random.randint(3, 12))) for i in range(random.randint(1, 5))]
- s = ', '.join(sections)
- # Convert to sentence case and add end punctuation.
- return '%s%s%s' % (s[0].upper(), s[1:], random.choice('?.'))
-
-def paragraph():
- """
- Returns a randomly generated paragraph of lorem ipsum text.
-
- The paragraph consists of between 1 and 4 sentences, inclusive.
- """
- return ' '.join([sentence() for i in range(random.randint(1, 4))])
-
-def paragraphs(count, common=True):
- """
- Returns a list of paragraphs as returned by paragraph().
-
- If `common` is True, then the first paragraph will be the standard
- 'lorem ipsum' paragraph. Otherwise, the first paragraph will be random
- Latin text. Either way, subsequent paragraphs will be random Latin text.
- """
- paras = []
- for i in range(count):
- if common and i == 0:
- paras.append(COMMON_P)
- else:
- paras.append(paragraph())
- return paras
-
-def words(count, common=True):
- """
- Returns a string of `count` lorem ipsum words separated by a single space.
-
- If `common` is True, then the first 19 words will be the standard
- 'lorem ipsum' words. Otherwise, all words will be selected randomly.
- """
- if common:
- word_list = list(COMMON_WORDS)
- else:
- word_list = []
- c = len(word_list)
- if count > c:
- count -= c
- while count > 0:
- c = min(count, len(WORDS))
- count -= c
- word_list += random.sample(WORDS, c)
- else:
- word_list = word_list[:count]
- return ' '.join(word_list)
diff --git a/lib/python2.7/site-packages/django/contrib/webdesign/models.py b/lib/python2.7/site-packages/django/contrib/webdesign/models.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/webdesign/models.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/webdesign/templatetags/__init__.py b/lib/python2.7/site-packages/django/contrib/webdesign/templatetags/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/contrib/webdesign/templatetags/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/contrib/webdesign/templatetags/webdesign.py b/lib/python2.7/site-packages/django/contrib/webdesign/templatetags/webdesign.py
deleted file mode 100644
index b870299..0000000
--- a/lib/python2.7/site-packages/django/contrib/webdesign/templatetags/webdesign.py
+++ /dev/null
@@ -1,68 +0,0 @@
-from __future__ import unicode_literals
-
-from django.contrib.webdesign.lorem_ipsum import words, paragraphs
-from django import template
-
-register = template.Library()
-
-class LoremNode(template.Node):
- def __init__(self, count, method, common):
- self.count, self.method, self.common = count, method, common
-
- def render(self, context):
- try:
- count = int(self.count.resolve(context))
- except (ValueError, TypeError):
- count = 1
- if self.method == 'w':
- return words(count, common=self.common)
- else:
- paras = paragraphs(count, common=self.common)
- if self.method == 'p':
- paras = ['<p>%s</p>' % p for p in paras]
- return '\n\n'.join(paras)
-
-@register.tag
-def lorem(parser, token):
- """
- Creates random Latin text useful for providing test data in templates.
-
- Usage format::
-
- {% lorem [count] [method] [random] %}
-
- ``count`` is a number (or variable) containing the number of paragraphs or
- words to generate (default is 1).
-
- ``method`` is either ``w`` for words, ``p`` for HTML paragraphs, ``b`` for
- plain-text paragraph blocks (default is ``b``).
-
- ``random`` is the word ``random``, which if given, does not use the common
- paragraph (starting "Lorem ipsum dolor sit amet, consectetuer...").
-
- Examples:
- * ``{% lorem %}`` will output the common "lorem ipsum" paragraph
- * ``{% lorem 3 p %}`` will output the common "lorem ipsum" paragraph
- and two random paragraphs each wrapped in HTML ``<p>`` tags
- * ``{% lorem 2 w random %}`` will output two random latin words
- """
- bits = list(token.split_contents())
- tagname = bits[0]
- # Random bit
- common = bits[-1] != 'random'
- if not common:
- bits.pop()
- # Method bit
- if bits[-1] in ('w', 'p', 'b'):
- method = bits.pop()
- else:
- method = 'b'
- # Count bit
- if len(bits) > 1:
- count = bits.pop()
- else:
- count = '1'
- count = parser.compile_filter(count)
- if len(bits) != 1:
- raise template.TemplateSyntaxError("Incorrect format for %r tag" % tagname)
- return LoremNode(count, method, common)
diff --git a/lib/python2.7/site-packages/django/contrib/webdesign/tests.py b/lib/python2.7/site-packages/django/contrib/webdesign/tests.py
deleted file mode 100644
index 16ec501..0000000
--- a/lib/python2.7/site-packages/django/contrib/webdesign/tests.py
+++ /dev/null
@@ -1,22 +0,0 @@
-# -*- coding: utf-8 -*-
-from __future__ import unicode_literals
-
-import unittest
-
-from django.contrib.webdesign.lorem_ipsum import *
-from django.template import loader, Context
-
-
-class WebdesignTest(unittest.TestCase):
-
- def test_words(self):
- self.assertEqual(words(7), 'lorem ipsum dolor sit amet consectetur adipisicing')
-
- def test_paragraphs(self):
- self.assertEqual(paragraphs(1),
- ['Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'])
-
- def test_lorem_tag(self):
- t = loader.get_template_from_string("{% load webdesign %}{% lorem 3 w %}")
- self.assertEqual(t.render(Context({})),
- 'lorem ipsum dolor')
diff --git a/lib/python2.7/site-packages/django/core/__init__.py b/lib/python2.7/site-packages/django/core/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/core/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/core/cache/__init__.py b/lib/python2.7/site-packages/django/core/cache/__init__.py
deleted file mode 100644
index ea3a68f..0000000
--- a/lib/python2.7/site-packages/django/core/cache/__init__.py
+++ /dev/null
@@ -1,138 +0,0 @@
-"""
-Caching framework.
-
-This package defines set of cache backends that all conform to a simple API.
-In a nutshell, a cache is a set of values -- which can be any object that
-may be pickled -- identified by string keys. For the complete API, see
-the abstract BaseCache class in django.core.cache.backends.base.
-
-Client code should not access a cache backend directly; instead it should
-either use the "cache" variable made available here, or it should use the
-get_cache() function made available here. get_cache() takes a backend URI
-(e.g. "memcached://127.0.0.1:11211/") and returns an instance of a backend
-cache class.
-
-See docs/topics/cache.txt for information on the public API.
-"""
-
-from django.conf import settings
-from django.core import signals
-from django.core.cache.backends.base import (
- InvalidCacheBackendError, CacheKeyWarning, BaseCache)
-from django.core.exceptions import ImproperlyConfigured
-from django.utils import importlib
-from django.utils.module_loading import import_by_path
-from django.utils.six.moves.urllib.parse import parse_qsl
-
-
-__all__ = [
- 'get_cache', 'cache', 'DEFAULT_CACHE_ALIAS'
-]
-
-# Name for use in settings file --> name of module in "backends" directory.
-# Any backend scheme that is not in this dictionary is treated as a Python
-# import path to a custom backend.
-BACKENDS = {
- 'memcached': 'memcached',
- 'locmem': 'locmem',
- 'file': 'filebased',
- 'db': 'db',
- 'dummy': 'dummy',
-}
-
-DEFAULT_CACHE_ALIAS = 'default'
-
-def parse_backend_uri(backend_uri):
- """
- Converts the "backend_uri" into a cache scheme ('db', 'memcached', etc), a
- host and any extra params that are required for the backend. Returns a
- (scheme, host, params) tuple.
- """
- if backend_uri.find(':') == -1:
- raise InvalidCacheBackendError("Backend URI must start with scheme://")
- scheme, rest = backend_uri.split(':', 1)
- if not rest.startswith('//'):
- raise InvalidCacheBackendError("Backend URI must start with scheme://")
-
- host = rest[2:]
- qpos = rest.find('?')
- if qpos != -1:
- params = dict(parse_qsl(rest[qpos+1:]))
- host = rest[2:qpos]
- else:
- params = {}
- if host.endswith('/'):
- host = host[:-1]
-
- return scheme, host, params
-
-if DEFAULT_CACHE_ALIAS not in settings.CACHES:
- raise ImproperlyConfigured("You must define a '%s' cache" % DEFAULT_CACHE_ALIAS)
-
-def parse_backend_conf(backend, **kwargs):
- """
- Helper function to parse the backend configuration
- that doesn't use the URI notation.
- """
- # Try to get the CACHES entry for the given backend name first
- conf = settings.CACHES.get(backend, None)
- if conf is not None:
- args = conf.copy()
- args.update(kwargs)
- backend = args.pop('BACKEND')
- location = args.pop('LOCATION', '')
- return backend, location, args
- else:
- try:
- # Trying to import the given backend, in case it's a dotted path
- backend_cls = import_by_path(backend)
- except ImproperlyConfigured as e:
- raise InvalidCacheBackendError("Could not find backend '%s': %s" % (
- backend, e))
- location = kwargs.pop('LOCATION', '')
- return backend, location, kwargs
-
-def get_cache(backend, **kwargs):
- """
- Function to load a cache backend dynamically. This is flexible by design
- to allow different use cases:
-
- To load a backend with the old URI-based notation::
-
- cache = get_cache('locmem://')
-
- To load a backend that is pre-defined in the settings::
-
- cache = get_cache('default')
-
- To load a backend with its dotted import path,
- including arbitrary options::
-
- cache = get_cache('django.core.cache.backends.memcached.MemcachedCache', **{
- 'LOCATION': '127.0.0.1:11211', 'TIMEOUT': 30,
- })
-
- """
- try:
- if '://' in backend:
- # for backwards compatibility
- backend, location, params = parse_backend_uri(backend)
- if backend in BACKENDS:
- backend = 'django.core.cache.backends.%s' % BACKENDS[backend]
- params.update(kwargs)
- mod = importlib.import_module(backend)
- backend_cls = mod.CacheClass
- else:
- backend, location, params = parse_backend_conf(backend, **kwargs)
- backend_cls = import_by_path(backend)
- except (AttributeError, ImportError, ImproperlyConfigured) as e:
- raise InvalidCacheBackendError(
- "Could not find backend '%s': %s" % (backend, e))
- cache = backend_cls(location, params)
- # Some caches -- python-memcached in particular -- need to do a cleanup at the
- # end of a request cycle. If not implemented in a particular backend
- # cache.close is a no-op
- signals.request_finished.connect(cache.close)
- return cache
-
-cache = get_cache(DEFAULT_CACHE_ALIAS)
diff --git a/lib/python2.7/site-packages/django/core/cache/backends/__init__.py b/lib/python2.7/site-packages/django/core/cache/backends/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/core/cache/backends/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/core/cache/backends/base.py b/lib/python2.7/site-packages/django/core/cache/backends/base.py
deleted file mode 100644
index deb98e7..0000000
--- a/lib/python2.7/site-packages/django/core/cache/backends/base.py
+++ /dev/null
@@ -1,235 +0,0 @@
-"Base Cache class."
-from __future__ import unicode_literals
-
-import warnings
-
-from django.core.exceptions import ImproperlyConfigured, DjangoRuntimeWarning
-from django.utils.module_loading import import_by_path
-
-
-class InvalidCacheBackendError(ImproperlyConfigured):
- pass
-
-
-class CacheKeyWarning(DjangoRuntimeWarning):
- pass
-
-
-# Stub class to ensure not passing in a `timeout` argument results in
-# the default timeout
-DEFAULT_TIMEOUT = object()
-
-# Memcached does not accept keys longer than this.
-MEMCACHE_MAX_KEY_LENGTH = 250
-
-
-def default_key_func(key, key_prefix, version):
- """
- Default function to generate keys.
-
- Constructs the key used by all other methods. By default it prepends
- the `key_prefix'. KEY_FUNCTION can be used to specify an alternate
- function with custom key making behavior.
- """
- return '%s:%s:%s' % (key_prefix, version, key)
-
-
-def get_key_func(key_func):
- """
- Function to decide which key function to use.
-
- Defaults to ``default_key_func``.
- """
- if key_func is not None:
- if callable(key_func):
- return key_func
- else:
- return import_by_path(key_func)
- return default_key_func
-
-
-class BaseCache(object):
- def __init__(self, params):
- timeout = params.get('timeout', params.get('TIMEOUT', 300))
- try:
- timeout = int(timeout)
- except (ValueError, TypeError):
- timeout = 300
- self.default_timeout = timeout
-
- options = params.get('OPTIONS', {})
- max_entries = params.get('max_entries', options.get('MAX_ENTRIES', 300))
- try:
- self._max_entries = int(max_entries)
- except (ValueError, TypeError):
- self._max_entries = 300
-
- cull_frequency = params.get('cull_frequency', options.get('CULL_FREQUENCY', 3))
- try:
- self._cull_frequency = int(cull_frequency)
- except (ValueError, TypeError):
- self._cull_frequency = 3
-
- self.key_prefix = params.get('KEY_PREFIX', '')
- self.version = params.get('VERSION', 1)
- self.key_func = get_key_func(params.get('KEY_FUNCTION', None))
-
- def make_key(self, key, version=None):
- """Constructs the key used by all other methods. By default it
- uses the key_func to generate a key (which, by default,
- prepends the `key_prefix' and 'version'). An different key
- function can be provided at the time of cache construction;
- alternatively, you can subclass the cache backend to provide
- custom key making behavior.
- """
- if version is None:
- version = self.version
-
- new_key = self.key_func(key, self.key_prefix, version)
- return new_key
-
- def add(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
- """
- Set a value in the cache if the key does not already exist. If
- timeout is given, that timeout will be used for the key; otherwise
- the default cache timeout will be used.
-
- Returns True if the value was stored, False otherwise.
- """
- raise NotImplementedError
-
- def get(self, key, default=None, version=None):
- """
- Fetch a given key from the cache. If the key does not exist, return
- default, which itself defaults to None.
- """
- raise NotImplementedError
-
- def set(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
- """
- Set a value in the cache. If timeout is given, that timeout will be
- used for the key; otherwise the default cache timeout will be used.
- """
- raise NotImplementedError
-
- def delete(self, key, version=None):
- """
- Delete a key from the cache, failing silently.
- """
- raise NotImplementedError
-
- def get_many(self, keys, version=None):
- """
- Fetch a bunch of keys from the cache. For certain backends (memcached,
- pgsql) this can be *much* faster when fetching multiple values.
-
- Returns a dict mapping each key in keys to its value. If the given
- key is missing, it will be missing from the response dict.
- """
- d = {}
- for k in keys:
- val = self.get(k, version=version)
- if val is not None:
- d[k] = val
- return d
-
- def has_key(self, key, version=None):
- """
- Returns True if the key is in the cache and has not expired.
- """
- return self.get(key, version=version) is not None
-
- def incr(self, key, delta=1, version=None):
- """
- Add delta to value in the cache. If the key does not exist, raise a
- ValueError exception.
- """
- value = self.get(key, version=version)
- if value is None:
- raise ValueError("Key '%s' not found" % key)
- new_value = value + delta
- self.set(key, new_value, version=version)
- return new_value
-
- def decr(self, key, delta=1, version=None):
- """
- Subtract delta from value in the cache. If the key does not exist, raise
- a ValueError exception.
- """
- return self.incr(key, -delta, version=version)
-
- def __contains__(self, key):
- """
- Returns True if the key is in the cache and has not expired.
- """
- # This is a separate method, rather than just a copy of has_key(),
- # so that it always has the same functionality as has_key(), even
- # if a subclass overrides it.
- return self.has_key(key)
-
- def set_many(self, data, timeout=DEFAULT_TIMEOUT, version=None):
- """
- Set a bunch of values in the cache at once from a dict of key/value
- pairs. For certain backends (memcached), this is much more efficient
- than calling set() multiple times.
-
- If timeout is given, that timeout will be used for the key; otherwise
- the default cache timeout will be used.
- """
- for key, value in data.items():
- self.set(key, value, timeout=timeout, version=version)
-
- def delete_many(self, keys, version=None):
- """
- Set a bunch of values in the cache at once. For certain backends
- (memcached), this is much more efficient than calling delete() multiple
- times.
- """
- for key in keys:
- self.delete(key, version=version)
-
- def clear(self):
- """Remove *all* values from the cache at once."""
- raise NotImplementedError
-
- def validate_key(self, key):
- """
- Warn about keys that would not be portable to the memcached
- backend. This encourages (but does not force) writing backend-portable
- cache code.
-
- """
- if len(key) > MEMCACHE_MAX_KEY_LENGTH:
- warnings.warn('Cache key will cause errors if used with memcached: '
- '%s (longer than %s)' % (key, MEMCACHE_MAX_KEY_LENGTH),
- CacheKeyWarning)
- for char in key:
- if ord(char) < 33 or ord(char) == 127:
- warnings.warn('Cache key contains characters that will cause '
- 'errors if used with memcached: %r' % key,
- CacheKeyWarning)
-
- def incr_version(self, key, delta=1, version=None):
- """Adds delta to the cache version for the supplied key. Returns the
- new version.
- """
- if version is None:
- version = self.version
-
- value = self.get(key, version=version)
- if value is None:
- raise ValueError("Key '%s' not found" % key)
-
- self.set(key, value, version=version+delta)
- self.delete(key, version=version)
- return version+delta
-
- def decr_version(self, key, delta=1, version=None):
- """Substracts delta from the cache version for the supplied key. Returns
- the new version.
- """
- return self.incr_version(key, -delta, version)
-
- def close(self, **kwargs):
- """Close the cache connection"""
- pass
diff --git a/lib/python2.7/site-packages/django/core/cache/backends/db.py b/lib/python2.7/site-packages/django/core/cache/backends/db.py
deleted file mode 100644
index 5c9d37b..0000000
--- a/lib/python2.7/site-packages/django/core/cache/backends/db.py
+++ /dev/null
@@ -1,205 +0,0 @@
-"Database cache backend."
-import base64
-import time
-from datetime import datetime
-
-try:
- from django.utils.six.moves import cPickle as pickle
-except ImportError:
- import pickle
-
-from django.conf import settings
-from django.core.cache.backends.base import BaseCache, DEFAULT_TIMEOUT
-from django.db import connections, transaction, router, DatabaseError
-from django.db.backends.util import typecast_timestamp
-from django.utils import timezone, six
-from django.utils.encoding import force_bytes
-
-
-class Options(object):
- """A class that will quack like a Django model _meta class.
-
- This allows cache operations to be controlled by the router
- """
- def __init__(self, table):
- self.db_table = table
- self.app_label = 'django_cache'
- self.model_name = 'cacheentry'
- self.verbose_name = 'cache entry'
- self.verbose_name_plural = 'cache entries'
- self.object_name = 'CacheEntry'
- self.abstract = False
- self.managed = True
- self.proxy = False
-
-class BaseDatabaseCache(BaseCache):
- def __init__(self, table, params):
- BaseCache.__init__(self, params)
- self._table = table
-
- class CacheEntry(object):
- _meta = Options(table)
- self.cache_model_class = CacheEntry
-
-class DatabaseCache(BaseDatabaseCache):
-
- # This class uses cursors provided by the database connection. This means
- # it reads expiration values as aware or naive datetimes depending on the
- # value of USE_TZ. They must be compared to aware or naive representations
- # of "now" respectively.
-
- # But it bypasses the ORM for write operations. As a consequence, aware
- # datetimes aren't made naive for databases that don't support time zones.
- # We work around this problem by always using naive datetimes when writing
- # expiration values, in UTC when USE_TZ = True and in local time otherwise.
-
- def get(self, key, default=None, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
- db = router.db_for_read(self.cache_model_class)
- table = connections[db].ops.quote_name(self._table)
- cursor = connections[db].cursor()
-
- cursor.execute("SELECT cache_key, value, expires FROM %s "
- "WHERE cache_key = %%s" % table, [key])
- row = cursor.fetchone()
- if row is None:
- return default
- now = timezone.now()
- expires = row[2]
- if connections[db].features.needs_datetime_string_cast and not isinstance(expires, datetime):
- # Note: typecasting is needed by some 3rd party database backends.
- # All core backends work without typecasting, so be careful about
- # changes here - test suite will NOT pick regressions here.
- expires = typecast_timestamp(str(expires))
- if expires < now:
- db = router.db_for_write(self.cache_model_class)
- cursor = connections[db].cursor()
- cursor.execute("DELETE FROM %s "
- "WHERE cache_key = %%s" % table, [key])
- return default
- value = connections[db].ops.process_clob(row[1])
- return pickle.loads(base64.b64decode(force_bytes(value)))
-
- def set(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
- self._base_set('set', key, value, timeout)
-
- def add(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
- return self._base_set('add', key, value, timeout)
-
- def _base_set(self, mode, key, value, timeout=DEFAULT_TIMEOUT):
- if timeout == DEFAULT_TIMEOUT:
- timeout = self.default_timeout
- db = router.db_for_write(self.cache_model_class)
- table = connections[db].ops.quote_name(self._table)
- cursor = connections[db].cursor()
-
- cursor.execute("SELECT COUNT(*) FROM %s" % table)
- num = cursor.fetchone()[0]
- now = timezone.now()
- now = now.replace(microsecond=0)
- if timeout is None:
- exp = datetime.max
- elif settings.USE_TZ:
- exp = datetime.utcfromtimestamp(time.time() + timeout)
- else:
- exp = datetime.fromtimestamp(time.time() + timeout)
- exp = exp.replace(microsecond=0)
- if num > self._max_entries:
- self._cull(db, cursor, now)
- pickled = pickle.dumps(value, pickle.HIGHEST_PROTOCOL)
- b64encoded = base64.b64encode(pickled)
- # The DB column is expecting a string, so make sure the value is a
- # string, not bytes. Refs #19274.
- if six.PY3:
- b64encoded = b64encoded.decode('latin1')
- try:
- # Note: typecasting for datetimes is needed by some 3rd party
- # database backends. All core backends work without typecasting,
- # so be careful about changes here - test suite will NOT pick
- # regressions.
- with transaction.atomic(using=db):
- cursor.execute("SELECT cache_key, expires FROM %s "
- "WHERE cache_key = %%s" % table, [key])
- result = cursor.fetchone()
- if result:
- current_expires = result[1]
- if (connections[db].features.needs_datetime_string_cast and not
- isinstance(current_expires, datetime)):
- current_expires = typecast_timestamp(str(current_expires))
- exp = connections[db].ops.value_to_db_datetime(exp)
- if result and (mode == 'set' or (mode == 'add' and current_expires < now)):
- cursor.execute("UPDATE %s SET value = %%s, expires = %%s "
- "WHERE cache_key = %%s" % table,
- [b64encoded, exp, key])
- else:
- cursor.execute("INSERT INTO %s (cache_key, value, expires) "
- "VALUES (%%s, %%s, %%s)" % table,
- [key, b64encoded, exp])
- except DatabaseError:
- # To be threadsafe, updates/inserts are allowed to fail silently
- return False
- else:
- return True
-
- def delete(self, key, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
-
- db = router.db_for_write(self.cache_model_class)
- table = connections[db].ops.quote_name(self._table)
- cursor = connections[db].cursor()
-
- cursor.execute("DELETE FROM %s WHERE cache_key = %%s" % table, [key])
-
- def has_key(self, key, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
-
- db = router.db_for_read(self.cache_model_class)
- table = connections[db].ops.quote_name(self._table)
- cursor = connections[db].cursor()
-
- if settings.USE_TZ:
- now = datetime.utcnow()
- else:
- now = datetime.now()
- now = now.replace(microsecond=0)
- cursor.execute("SELECT cache_key FROM %s "
- "WHERE cache_key = %%s and expires > %%s" % table,
- [key, connections[db].ops.value_to_db_datetime(now)])
- return cursor.fetchone() is not None
-
- def _cull(self, db, cursor, now):
- if self._cull_frequency == 0:
- self.clear()
- else:
- # When USE_TZ is True, 'now' will be an aware datetime in UTC.
- now = now.replace(tzinfo=None)
- table = connections[db].ops.quote_name(self._table)
- cursor.execute("DELETE FROM %s WHERE expires < %%s" % table,
- [connections[db].ops.value_to_db_datetime(now)])
- cursor.execute("SELECT COUNT(*) FROM %s" % table)
- num = cursor.fetchone()[0]
- if num > self._max_entries:
- cull_num = num // self._cull_frequency
- cursor.execute(
- connections[db].ops.cache_key_culling_sql() % table,
- [cull_num])
- cursor.execute("DELETE FROM %s "
- "WHERE cache_key < %%s" % table,
- [cursor.fetchone()[0]])
-
- def clear(self):
- db = router.db_for_write(self.cache_model_class)
- table = connections[db].ops.quote_name(self._table)
- cursor = connections[db].cursor()
- cursor.execute('DELETE FROM %s' % table)
-
-# For backwards compatibility
-class CacheClass(DatabaseCache):
- pass
diff --git a/lib/python2.7/site-packages/django/core/cache/backends/dummy.py b/lib/python2.7/site-packages/django/core/cache/backends/dummy.py
deleted file mode 100644
index 7ca6114..0000000
--- a/lib/python2.7/site-packages/django/core/cache/backends/dummy.py
+++ /dev/null
@@ -1,46 +0,0 @@
-"Dummy cache backend"
-
-from django.core.cache.backends.base import BaseCache, DEFAULT_TIMEOUT
-
-class DummyCache(BaseCache):
- def __init__(self, host, *args, **kwargs):
- BaseCache.__init__(self, *args, **kwargs)
-
- def add(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
- return True
-
- def get(self, key, default=None, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
- return default
-
- def set(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
-
- def delete(self, key, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
-
- def get_many(self, keys, version=None):
- return {}
-
- def has_key(self, key, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
- return False
-
- def set_many(self, data, timeout=DEFAULT_TIMEOUT, version=None):
- pass
-
- def delete_many(self, keys, version=None):
- pass
-
- def clear(self):
- pass
-
-# For backwards compatibility
-class CacheClass(DummyCache):
- pass
diff --git a/lib/python2.7/site-packages/django/core/cache/backends/filebased.py b/lib/python2.7/site-packages/django/core/cache/backends/filebased.py
deleted file mode 100644
index d19eed4..0000000
--- a/lib/python2.7/site-packages/django/core/cache/backends/filebased.py
+++ /dev/null
@@ -1,160 +0,0 @@
-"File-based cache backend"
-
-import hashlib
-import os
-import shutil
-import time
-try:
- from django.utils.six.moves import cPickle as pickle
-except ImportError:
- import pickle
-
-from django.core.cache.backends.base import BaseCache, DEFAULT_TIMEOUT
-from django.utils.encoding import force_bytes
-
-
-class FileBasedCache(BaseCache):
- def __init__(self, dir, params):
- BaseCache.__init__(self, params)
- self._dir = dir
- if not os.path.exists(self._dir):
- self._createdir()
-
- def add(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
- if self.has_key(key, version=version):
- return False
-
- self.set(key, value, timeout, version=version)
- return True
-
- def get(self, key, default=None, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
-
- fname = self._key_to_file(key)
- try:
- with open(fname, 'rb') as f:
- exp = pickle.load(f)
- now = time.time()
- if exp is not None and exp < now:
- self._delete(fname)
- else:
- return pickle.load(f)
- except (IOError, OSError, EOFError, pickle.PickleError):
- pass
- return default
-
- def set(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
-
- fname = self._key_to_file(key)
- dirname = os.path.dirname(fname)
-
- if timeout == DEFAULT_TIMEOUT:
- timeout = self.default_timeout
-
- self._cull()
-
- try:
- if not os.path.exists(dirname):
- os.makedirs(dirname)
-
- with open(fname, 'wb') as f:
- expiry = None if timeout is None else time.time() + timeout
- pickle.dump(expiry, f, pickle.HIGHEST_PROTOCOL)
- pickle.dump(value, f, pickle.HIGHEST_PROTOCOL)
- except (IOError, OSError):
- pass
-
- def delete(self, key, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
- try:
- self._delete(self._key_to_file(key))
- except (IOError, OSError):
- pass
-
- def _delete(self, fname):
- os.remove(fname)
- try:
- # Remove the 2 subdirs if they're empty
- dirname = os.path.dirname(fname)
- os.rmdir(dirname)
- os.rmdir(os.path.dirname(dirname))
- except (IOError, OSError):
- pass
-
- def has_key(self, key, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
- fname = self._key_to_file(key)
- try:
- with open(fname, 'rb') as f:
- exp = pickle.load(f)
- now = time.time()
- if exp < now:
- self._delete(fname)
- return False
- else:
- return True
- except (IOError, OSError, EOFError, pickle.PickleError):
- return False
-
- def _cull(self):
- if int(self._num_entries) < self._max_entries:
- return
-
- try:
- filelist = sorted(os.listdir(self._dir))
- except (IOError, OSError):
- return
-
- if self._cull_frequency == 0:
- doomed = filelist
- else:
- doomed = [os.path.join(self._dir, k) for (i, k) in enumerate(filelist) if i % self._cull_frequency == 0]
-
- for topdir in doomed:
- try:
- for root, _, files in os.walk(topdir):
- for f in files:
- self._delete(os.path.join(root, f))
- except (IOError, OSError):
- pass
-
- def _createdir(self):
- try:
- os.makedirs(self._dir)
- except OSError:
- raise EnvironmentError("Cache directory '%s' does not exist and could not be created'" % self._dir)
-
- def _key_to_file(self, key):
- """
- Convert the filename into an md5 string. We'll turn the first couple
- bits of the path into directory prefixes to be nice to filesystems
- that have problems with large numbers of files in a directory.
-
- Thus, a cache key of "foo" gets turnned into a file named
- ``{cache-dir}ac/bd/18db4cc2f85cedef654fccc4a4d8``.
- """
- path = hashlib.md5(force_bytes(key)).hexdigest()
- path = os.path.join(path[:2], path[2:4], path[4:])
- return os.path.join(self._dir, path)
-
- def _get_num_entries(self):
- count = 0
- for _,_,files in os.walk(self._dir):
- count += len(files)
- return count
- _num_entries = property(_get_num_entries)
-
- def clear(self):
- try:
- shutil.rmtree(self._dir)
- except (IOError, OSError):
- pass
-
-# For backwards compatibility
-class CacheClass(FileBasedCache):
- pass
diff --git a/lib/python2.7/site-packages/django/core/cache/backends/locmem.py b/lib/python2.7/site-packages/django/core/cache/backends/locmem.py
deleted file mode 100644
index 1fa1705..0000000
--- a/lib/python2.7/site-packages/django/core/cache/backends/locmem.py
+++ /dev/null
@@ -1,140 +0,0 @@
-"Thread-safe in-memory cache backend."
-
-import time
-try:
- from django.utils.six.moves import cPickle as pickle
-except ImportError:
- import pickle
-
-from django.core.cache.backends.base import BaseCache, DEFAULT_TIMEOUT
-from django.utils.synch import RWLock
-
-# Global in-memory store of cache data. Keyed by name, to provide
-# multiple named local memory caches.
-_caches = {}
-_expire_info = {}
-_locks = {}
-
-class LocMemCache(BaseCache):
- def __init__(self, name, params):
- BaseCache.__init__(self, params)
- global _caches, _expire_info, _locks
- self._cache = _caches.setdefault(name, {})
- self._expire_info = _expire_info.setdefault(name, {})
- self._lock = _locks.setdefault(name, RWLock())
-
- def add(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
- with self._lock.writer():
- exp = self._expire_info.get(key)
- if exp is None or exp <= time.time():
- try:
- pickled = pickle.dumps(value, pickle.HIGHEST_PROTOCOL)
- self._set(key, pickled, timeout)
- return True
- except pickle.PickleError:
- pass
- return False
-
- def get(self, key, default=None, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
- with self._lock.reader():
- exp = self._expire_info.get(key, 0)
- if exp is None or exp > time.time():
- try:
- pickled = self._cache[key]
- return pickle.loads(pickled)
- except pickle.PickleError:
- return default
- with self._lock.writer():
- try:
- del self._cache[key]
- del self._expire_info[key]
- except KeyError:
- pass
- return default
-
- def _set(self, key, value, timeout=DEFAULT_TIMEOUT):
- if len(self._cache) >= self._max_entries:
- self._cull()
- if timeout == DEFAULT_TIMEOUT:
- timeout = self.default_timeout
- expiry = None if timeout is None else time.time() + timeout
- self._cache[key] = value
- self._expire_info[key] = expiry
-
- def set(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
- with self._lock.writer():
- try:
- pickled = pickle.dumps(value, pickle.HIGHEST_PROTOCOL)
- self._set(key, pickled, timeout)
- except pickle.PickleError:
- pass
-
- def incr(self, key, delta=1, version=None):
- value = self.get(key, version=version)
- if value is None:
- raise ValueError("Key '%s' not found" % key)
- new_value = value + delta
- key = self.make_key(key, version=version)
- with self._lock.writer():
- try:
- pickled = pickle.dumps(new_value, pickle.HIGHEST_PROTOCOL)
- self._cache[key] = pickled
- except pickle.PickleError:
- pass
- return new_value
-
- def has_key(self, key, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
- with self._lock.reader():
- exp = self._expire_info.get(key)
- if exp is None:
- return False
- elif exp > time.time():
- return True
-
- with self._lock.writer():
- try:
- del self._cache[key]
- del self._expire_info[key]
- except KeyError:
- pass
- return False
-
- def _cull(self):
- if self._cull_frequency == 0:
- self.clear()
- else:
- doomed = [k for (i, k) in enumerate(self._cache) if i % self._cull_frequency == 0]
- for k in doomed:
- self._delete(k)
-
- def _delete(self, key):
- try:
- del self._cache[key]
- except KeyError:
- pass
- try:
- del self._expire_info[key]
- except KeyError:
- pass
-
- def delete(self, key, version=None):
- key = self.make_key(key, version=version)
- self.validate_key(key)
- with self._lock.writer():
- self._delete(key)
-
- def clear(self):
- self._cache.clear()
- self._expire_info.clear()
-
-# For backwards compatibility
-class CacheClass(LocMemCache):
- pass
diff --git a/lib/python2.7/site-packages/django/core/cache/backends/memcached.py b/lib/python2.7/site-packages/django/core/cache/backends/memcached.py
deleted file mode 100644
index 19e8b02..0000000
--- a/lib/python2.7/site-packages/django/core/cache/backends/memcached.py
+++ /dev/null
@@ -1,190 +0,0 @@
-"Memcached cache backend"
-
-import time
-import pickle
-from threading import local
-
-from django.core.cache.backends.base import BaseCache, DEFAULT_TIMEOUT
-
-from django.utils import six
-from django.utils.encoding import force_str
-
-class BaseMemcachedCache(BaseCache):
- def __init__(self, server, params, library, value_not_found_exception):
- super(BaseMemcachedCache, self).__init__(params)
- if isinstance(server, six.string_types):
- self._servers = server.split(';')
- else:
- self._servers = server
-
- # The exception type to catch from the underlying library for a key
- # that was not found. This is a ValueError for python-memcache,
- # pylibmc.NotFound for pylibmc, and cmemcache will return None without
- # raising an exception.
- self.LibraryValueNotFoundException = value_not_found_exception
-
- self._lib = library
- self._options = params.get('OPTIONS', None)
-
- @property
- def _cache(self):
- """
- Implements transparent thread-safe access to a memcached client.
- """
- if getattr(self, '_client', None) is None:
- self._client = self._lib.Client(self._servers)
-
- return self._client
-
- def _get_memcache_timeout(self, timeout=DEFAULT_TIMEOUT):
- """
- Memcached deals with long (> 30 days) timeouts in a special
- way. Call this function to obtain a safe value for your timeout.
- """
- if timeout == DEFAULT_TIMEOUT:
- return self.default_timeout
-
- if timeout is None:
- # Using 0 in memcache sets a non-expiring timeout.
- return 0
- elif int(timeout) == 0:
- # Other cache backends treat 0 as set-and-expire. To achieve this
- # in memcache backends, a negative timeout must be passed.
- timeout = -1
-
- if timeout > 2592000: # 60*60*24*30, 30 days
- # See http://code.google.com/p/memcached/wiki/FAQ
- # "You can set expire times up to 30 days in the future. After that
- # memcached interprets it as a date, and will expire the item after
- # said date. This is a simple (but obscure) mechanic."
- #
- # This means that we have to switch to absolute timestamps.
- timeout += int(time.time())
- return int(timeout)
-
- def make_key(self, key, version=None):
- # Python 2 memcache requires the key to be a byte string.
- return force_str(super(BaseMemcachedCache, self).make_key(key, version))
-
- def add(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
- key = self.make_key(key, version=version)
- return self._cache.add(key, value, self._get_memcache_timeout(timeout))
-
- def get(self, key, default=None, version=None):
- key = self.make_key(key, version=version)
- val = self._cache.get(key)
- if val is None:
- return default
- return val
-
- def set(self, key, value, timeout=DEFAULT_TIMEOUT, version=None):
- key = self.make_key(key, version=version)
- self._cache.set(key, value, self._get_memcache_timeout(timeout))
-
- def delete(self, key, version=None):
- key = self.make_key(key, version=version)
- self._cache.delete(key)
-
- def get_many(self, keys, version=None):
- new_keys = [self.make_key(x, version=version) for x in keys]
- ret = self._cache.get_multi(new_keys)
- if ret:
- _ = {}
- m = dict(zip(new_keys, keys))
- for k, v in ret.items():
- _[m[k]] = v
- ret = _
- return ret
-
- def close(self, **kwargs):
- self._cache.disconnect_all()
-
- def incr(self, key, delta=1, version=None):
- key = self.make_key(key, version=version)
- # memcached doesn't support a negative delta
- if delta < 0:
- return self._cache.decr(key, -delta)
- try:
- val = self._cache.incr(key, delta)
-
- # python-memcache responds to incr on non-existent keys by
- # raising a ValueError, pylibmc by raising a pylibmc.NotFound
- # and Cmemcache returns None. In all cases,
- # we should raise a ValueError though.
- except self.LibraryValueNotFoundException:
- val = None
- if val is None:
- raise ValueError("Key '%s' not found" % key)
- return val
-
- def decr(self, key, delta=1, version=None):
- key = self.make_key(key, version=version)
- # memcached doesn't support a negative delta
- if delta < 0:
- return self._cache.incr(key, -delta)
- try:
- val = self._cache.decr(key, delta)
-
- # python-memcache responds to incr on non-existent keys by
- # raising a ValueError, pylibmc by raising a pylibmc.NotFound
- # and Cmemcache returns None. In all cases,
- # we should raise a ValueError though.
- except self.LibraryValueNotFoundException:
- val = None
- if val is None:
- raise ValueError("Key '%s' not found" % key)
- return val
-
- def set_many(self, data, timeout=DEFAULT_TIMEOUT, version=None):
- safe_data = {}
- for key, value in data.items():
- key = self.make_key(key, version=version)
- safe_data[key] = value
- self._cache.set_multi(safe_data, self._get_memcache_timeout(timeout))
-
- def delete_many(self, keys, version=None):
- l = lambda x: self.make_key(x, version=version)
- self._cache.delete_multi(map(l, keys))
-
- def clear(self):
- self._cache.flush_all()
-
-class MemcachedCache(BaseMemcachedCache):
- "An implementation of a cache binding using python-memcached"
- def __init__(self, server, params):
- import memcache
- super(MemcachedCache, self).__init__(server, params,
- library=memcache,
- value_not_found_exception=ValueError)
-
- @property
- def _cache(self):
- if getattr(self, '_client', None) is None:
- self._client = self._lib.Client(self._servers, pickleProtocol=pickle.HIGHEST_PROTOCOL)
- return self._client
-
-class PyLibMCCache(BaseMemcachedCache):
- "An implementation of a cache binding using pylibmc"
- def __init__(self, server, params):
- import pylibmc
- self._local = local()
- super(PyLibMCCache, self).__init__(server, params,
- library=pylibmc,
- value_not_found_exception=pylibmc.NotFound)
-
- @property
- def _cache(self):
- # PylibMC uses cache options as the 'behaviors' attribute.
- # It also needs to use threadlocals, because some versions of
- # PylibMC don't play well with the GIL.
- client = getattr(self._local, 'client', None)
- if client:
- return client
-
- client = self._lib.Client(self._servers)
- if self._options:
- client.behaviors = self._options
-
- self._local.client = client
-
- return client
diff --git a/lib/python2.7/site-packages/django/core/cache/utils.py b/lib/python2.7/site-packages/django/core/cache/utils.py
deleted file mode 100644
index 4310825..0000000
--- a/lib/python2.7/site-packages/django/core/cache/utils.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from __future__ import absolute_import, unicode_literals
-
-import hashlib
-from django.utils.encoding import force_bytes
-from django.utils.http import urlquote
-
-TEMPLATE_FRAGMENT_KEY_TEMPLATE = 'template.cache.%s.%s'
-
-
-def make_template_fragment_key(fragment_name, vary_on=None):
- if vary_on is None:
- vary_on = ()
- key = ':'.join([urlquote(var) for var in vary_on])
- args = hashlib.md5(force_bytes(key))
- return TEMPLATE_FRAGMENT_KEY_TEMPLATE % (fragment_name, args.hexdigest())
diff --git a/lib/python2.7/site-packages/django/core/checks/__init__.py b/lib/python2.7/site-packages/django/core/checks/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/core/checks/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/core/checks/compatibility/__init__.py b/lib/python2.7/site-packages/django/core/checks/compatibility/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/core/checks/compatibility/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/core/checks/compatibility/base.py b/lib/python2.7/site-packages/django/core/checks/compatibility/base.py
deleted file mode 100644
index 7fe52d2..0000000
--- a/lib/python2.7/site-packages/django/core/checks/compatibility/base.py
+++ /dev/null
@@ -1,39 +0,0 @@
-from __future__ import unicode_literals
-import warnings
-
-from django.core.checks.compatibility import django_1_6_0
-
-
-COMPAT_CHECKS = [
- # Add new modules at the top, so we keep things in descending order.
- # After two-three minor releases, old versions should get dropped.
- django_1_6_0,
-]
-
-
-def check_compatibility():
- """
- Runs through compatibility checks to warn the user with an existing install
- about changes in an up-to-date Django.
-
- Modules should be located in ``django.core.compat_checks`` (typically one
- per release of Django) & must have a ``run_checks`` function that runs
- all the checks.
-
- Returns a list of informational messages about incompatibilities.
- """
- messages = []
-
- for check_module in COMPAT_CHECKS:
- check = getattr(check_module, 'run_checks', None)
-
- if check is None:
- warnings.warn(
- "The '%s' module lacks a " % check_module.__name__ +
- "'run_checks' method, which is needed to verify compatibility."
- )
- continue
-
- messages.extend(check())
-
- return messages
diff --git a/lib/python2.7/site-packages/django/core/checks/compatibility/django_1_6_0.py b/lib/python2.7/site-packages/django/core/checks/compatibility/django_1_6_0.py
deleted file mode 100644
index ef182bf..0000000
--- a/lib/python2.7/site-packages/django/core/checks/compatibility/django_1_6_0.py
+++ /dev/null
@@ -1,62 +0,0 @@
-from __future__ import unicode_literals
-
-from django.db import models
-
-def check_test_runner():
- """
- Checks if the user has *not* overridden the ``TEST_RUNNER`` setting &
- warns them about the default behavior changes.
-
- If the user has overridden that setting, we presume they know what they're
- doing & avoid generating a message.
- """
- from django.conf import settings
- new_default = 'django.test.runner.DiscoverRunner'
- test_runner_setting = getattr(settings, 'TEST_RUNNER', new_default)
-
- if test_runner_setting == new_default:
- message = [
- "Django 1.6 introduced a new default test runner ('%s')" % new_default,
- "You should ensure your tests are all running & behaving as expected. See",
- "https://docs.djangoproject.com/en/dev/releases/1.6/#new-test-runner",
- "for more information.",
- ]
- return ' '.join(message)
-
-def check_boolean_field_default_value():
- """
- Checks if there are any BooleanFields without a default value, &
- warns the user that the default has changed from False to Null.
- """
- fields = []
- for cls in models.get_models():
- opts = cls._meta
- for f in opts.local_fields:
- if isinstance(f, models.BooleanField) and not f.has_default():
- fields.append(
- '%s.%s: "%s"' % (opts.app_label, opts.object_name, f.name)
- )
- if fields:
- fieldnames = ", ".join(fields)
- message = [
- "You have not set a default value for one or more BooleanFields:",
- "%s." % fieldnames,
- "In Django 1.6 the default value of BooleanField was changed from",
- "False to Null when Field.default isn't defined. See",
- "https://docs.djangoproject.com/en/1.6/ref/models/fields/#booleanfield"
- "for more information."
- ]
- return ' '.join(message)
-
-
-def run_checks():
- """
- Required by the ``check`` management command, this returns a list of
- messages from all the relevant check functions for this version of Django.
- """
- checks = [
- check_test_runner(),
- check_boolean_field_default_value(),
- ]
- # Filter out the ``None`` or empty strings.
- return [output for output in checks if output]
diff --git a/lib/python2.7/site-packages/django/core/context_processors.py b/lib/python2.7/site-packages/django/core/context_processors.py
deleted file mode 100644
index ca1ac68..0000000
--- a/lib/python2.7/site-packages/django/core/context_processors.py
+++ /dev/null
@@ -1,75 +0,0 @@
-"""
-A set of request processors that return dictionaries to be merged into a
-template context. Each function takes the request object as its only parameter
-and returns a dictionary to add to the context.
-
-These are referenced from the setting TEMPLATE_CONTEXT_PROCESSORS and used by
-RequestContext.
-"""
-from __future__ import unicode_literals
-
-from django.conf import settings
-from django.middleware.csrf import get_token
-from django.utils import six
-from django.utils.encoding import smart_text
-from django.utils.functional import lazy
-
-
-def csrf(request):
- """
- Context processor that provides a CSRF token, or the string 'NOTPROVIDED' if
- it has not been provided by either a view decorator or the middleware
- """
- def _get_val():
- token = get_token(request)
- if token is None:
- # In order to be able to provide debugging info in the
- # case of misconfiguration, we use a sentinel value
- # instead of returning an empty dict.
- return 'NOTPROVIDED'
- else:
- return smart_text(token)
- _get_val = lazy(_get_val, six.text_type)
-
- return {'csrf_token': _get_val() }
-
-def debug(request):
- "Returns context variables helpful for debugging."
- context_extras = {}
- if settings.DEBUG and request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS:
- context_extras['debug'] = True
- from django.db import connection
- context_extras['sql_queries'] = connection.queries
- return context_extras
-
-def i18n(request):
- from django.utils import translation
-
- context_extras = {}
- context_extras['LANGUAGES'] = settings.LANGUAGES
- context_extras['LANGUAGE_CODE'] = translation.get_language()
- context_extras['LANGUAGE_BIDI'] = translation.get_language_bidi()
-
- return context_extras
-
-def tz(request):
- from django.utils import timezone
-
- return {'TIME_ZONE': timezone.get_current_timezone_name()}
-
-def static(request):
- """
- Adds static-related context variables to the context.
-
- """
- return {'STATIC_URL': settings.STATIC_URL}
-
-def media(request):
- """
- Adds media-related context variables to the context.
-
- """
- return {'MEDIA_URL': settings.MEDIA_URL}
-
-def request(request):
- return {'request': request}
diff --git a/lib/python2.7/site-packages/django/core/exceptions.py b/lib/python2.7/site-packages/django/core/exceptions.py
deleted file mode 100644
index efec228..0000000
--- a/lib/python2.7/site-packages/django/core/exceptions.py
+++ /dev/null
@@ -1,140 +0,0 @@
-"""
-Global Django exception and warning classes.
-"""
-from functools import reduce
-import operator
-
-from django.utils.encoding import force_text
-
-
-class DjangoRuntimeWarning(RuntimeWarning):
- pass
-
-
-class ObjectDoesNotExist(Exception):
- """The requested object does not exist"""
- silent_variable_failure = True
-
-
-class MultipleObjectsReturned(Exception):
- """The query returned multiple objects when only one was expected."""
- pass
-
-
-class SuspiciousOperation(Exception):
- """The user did something suspicious"""
-
-
-class SuspiciousMultipartForm(SuspiciousOperation):
- """Suspect MIME request in multipart form data"""
- pass
-
-
-class SuspiciousFileOperation(SuspiciousOperation):
- """A Suspicious filesystem operation was attempted"""
- pass
-
-
-class DisallowedHost(SuspiciousOperation):
- """HTTP_HOST header contains invalid value"""
- pass
-
-
-class DisallowedRedirect(SuspiciousOperation):
- """Redirect to scheme not in allowed list"""
- pass
-
-
-class PermissionDenied(Exception):
- """The user did not have permission to do that"""
- pass
-
-
-class ViewDoesNotExist(Exception):
- """The requested view does not exist"""
- pass
-
-
-class MiddlewareNotUsed(Exception):
- """This middleware is not used in this server configuration"""
- pass
-
-
-class ImproperlyConfigured(Exception):
- """Django is somehow improperly configured"""
- pass
-
-
-class FieldError(Exception):
- """Some kind of problem with a model field."""
- pass
-
-
-NON_FIELD_ERRORS = '__all__'
-
-
-class ValidationError(Exception):
- """An error while validating data."""
- def __init__(self, message, code=None, params=None):
- """
- ValidationError can be passed any object that can be printed (usually
- a string), a list of objects or a dictionary.
- """
- if isinstance(message, dict):
- self.error_dict = message
- elif isinstance(message, list):
- self.error_list = message
- else:
- self.code = code
- self.params = params
- self.message = message
- self.error_list = [self]
-
- @property
- def message_dict(self):
- message_dict = {}
- for field, messages in self.error_dict.items():
- message_dict[field] = []
- for message in messages:
- if isinstance(message, ValidationError):
- message_dict[field].extend(message.messages)
- else:
- message_dict[field].append(force_text(message))
- return message_dict
-
- @property
- def messages(self):
- if hasattr(self, 'error_dict'):
- message_list = reduce(operator.add, self.error_dict.values())
- else:
- message_list = self.error_list
-
- messages = []
- for message in message_list:
- if isinstance(message, ValidationError):
- params = message.params
- message = message.message
- if params:
- message %= params
- message = force_text(message)
- messages.append(message)
- return messages
-
- def __str__(self):
- if hasattr(self, 'error_dict'):
- return repr(self.message_dict)
- return repr(self.messages)
-
- def __repr__(self):
- return 'ValidationError(%s)' % self
-
- def update_error_dict(self, error_dict):
- if hasattr(self, 'error_dict'):
- if error_dict:
- for k, v in self.error_dict.items():
- error_dict.setdefault(k, []).extend(v)
- else:
- error_dict = self.error_dict
- else:
- error_dict[NON_FIELD_ERRORS] = self.error_list
- return error_dict
diff --git a/lib/python2.7/site-packages/django/core/files/__init__.py b/lib/python2.7/site-packages/django/core/files/__init__.py
deleted file mode 100644
index 0c3ef57..0000000
--- a/lib/python2.7/site-packages/django/core/files/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-from django.core.files.base import File
diff --git a/lib/python2.7/site-packages/django/core/files/base.py b/lib/python2.7/site-packages/django/core/files/base.py
deleted file mode 100644
index f07b2b4..0000000
--- a/lib/python2.7/site-packages/django/core/files/base.py
+++ /dev/null
@@ -1,158 +0,0 @@
-from __future__ import unicode_literals
-
-import os
-from io import BytesIO, StringIO, UnsupportedOperation
-
-from django.utils.encoding import smart_text
-from django.core.files.utils import FileProxyMixin
-from django.utils import six
-from django.utils.encoding import force_bytes, python_2_unicode_compatible
-
-@python_2_unicode_compatible
-class File(FileProxyMixin):
- DEFAULT_CHUNK_SIZE = 64 * 2**10
-
- def __init__(self, file, name=None):
- self.file = file
- if name is None:
- name = getattr(file, 'name', None)
- self.name = name
- if hasattr(file, 'mode'):
- self.mode = file.mode
-
- def __str__(self):
- return smart_text(self.name or '')
-
- def __repr__(self):
- return "<%s: %s>" % (self.__class__.__name__, self or "None")
-
- def __bool__(self):
- return bool(self.name)
-
- def __nonzero__(self): # Python 2 compatibility
- return type(self).__bool__(self)
-
- def __len__(self):
- return self.size
-
- def _get_size(self):
- if not hasattr(self, '_size'):
- if hasattr(self.file, 'size'):
- self._size = self.file.size
- elif hasattr(self.file, 'name') and os.path.exists(self.file.name):
- self._size = os.path.getsize(self.file.name)
- elif hasattr(self.file, 'tell') and hasattr(self.file, 'seek'):
- pos = self.file.tell()
- self.file.seek(0, os.SEEK_END)
- self._size = self.file.tell()
- self.file.seek(pos)
- else:
- raise AttributeError("Unable to determine the file's size.")
- return self._size
-
- def _set_size(self, size):
- self._size = size
-
- size = property(_get_size, _set_size)
-
- def _get_closed(self):
- return not self.file or self.file.closed
- closed = property(_get_closed)
-
- def chunks(self, chunk_size=None):
- """
- Read the file and yield chucks of ``chunk_size`` bytes (defaults to
- ``UploadedFile.DEFAULT_CHUNK_SIZE``).
- """
- if not chunk_size:
- chunk_size = self.DEFAULT_CHUNK_SIZE
-
- try:
- self.seek(0)
- except (AttributeError, UnsupportedOperation):
- pass
-
- while True:
- data = self.read(chunk_size)
- if not data:
- break
- yield data
-
- def multiple_chunks(self, chunk_size=None):
- """
- Returns ``True`` if you can expect multiple chunks.
-
- NB: If a particular file representation is in memory, subclasses should
- always return ``False`` -- there's no good reason to read from memory in
- chunks.
- """
- if not chunk_size:
- chunk_size = self.DEFAULT_CHUNK_SIZE
- return self.size > chunk_size
-
- def __iter__(self):
- # Iterate over this file-like object by newlines
- buffer_ = None
- for chunk in self.chunks():
- chunk_buffer = BytesIO(chunk)
-
- for line in chunk_buffer:
- if buffer_:
- line = buffer_ + line
- buffer_ = None
-
- # If this is the end of a line, yield
- # otherwise, wait for the next round
- if line[-1:] in (b'\n', b'\r'):
- yield line
- else:
- buffer_ = line
-
- if buffer_ is not None:
- yield buffer_
-
- def __enter__(self):
- return self
-
- def __exit__(self, exc_type, exc_value, tb):
- self.close()
-
- def open(self, mode=None):
- if not self.closed:
- self.seek(0)
- elif self.name and os.path.exists(self.name):
- self.file = open(self.name, mode or self.mode)
- else:
- raise ValueError("The file cannot be reopened.")
-
- def close(self):
- self.file.close()
-
-@python_2_unicode_compatible
-class ContentFile(File):
- """
- A File-like object that takes just raw content, rather than an actual file.
- """
- def __init__(self, content, name=None):
- if six.PY3:
- stream_class = StringIO if isinstance(content, six.text_type) else BytesIO
- else:
- stream_class = BytesIO
- content = force_bytes(content)
- super(ContentFile, self).__init__(stream_class(content), name=name)
- self.size = len(content)
-
- def __str__(self):
- return 'Raw content'
-
- def __bool__(self):
- return True
-
- def __nonzero__(self): # Python 2 compatibility
- return type(self).__bool__(self)
-
- def open(self, mode=None):
- self.seek(0)
-
- def close(self):
- pass
diff --git a/lib/python2.7/site-packages/django/core/files/images.py b/lib/python2.7/site-packages/django/core/files/images.py
deleted file mode 100644
index e1d6091..0000000
--- a/lib/python2.7/site-packages/django/core/files/images.py
+++ /dev/null
@@ -1,74 +0,0 @@
-"""
-Utility functions for handling images.
-
-Requires Pillow (or PIL), as you might imagine.
-"""
-import zlib
-
-from django.core.files import File
-
-
-class ImageFile(File):
- """
- A mixin for use alongside django.core.files.base.File, which provides
- additional features for dealing with images.
- """
- def _get_width(self):
- return self._get_image_dimensions()[0]
- width = property(_get_width)
-
- def _get_height(self):
- return self._get_image_dimensions()[1]
- height = property(_get_height)
-
- def _get_image_dimensions(self):
- if not hasattr(self, '_dimensions_cache'):
- close = self.closed
- self.open()
- self._dimensions_cache = get_image_dimensions(self, close=close)
- return self._dimensions_cache
-
-
-def get_image_dimensions(file_or_path, close=False):
- """
- Returns the (width, height) of an image, given an open file or a path. Set
- 'close' to True to close the file at the end if it is initially in an open
- state.
- """
- from django.utils.image import ImageFile as PILImageFile
-
- p = PILImageFile.Parser()
- if hasattr(file_or_path, 'read'):
- file = file_or_path
- file_pos = file.tell()
- file.seek(0)
- else:
- file = open(file_or_path, 'rb')
- close = True
- try:
- # Most of the time PIL only needs a small chunk to parse the image and
- # get the dimensions, but with some TIFF files PIL needs to parse the
- # whole file.
- chunk_size = 1024
- while 1:
- data = file.read(chunk_size)
- if not data:
- break
- try:
- p.feed(data)
- except zlib.error as e:
- # ignore zlib complaining on truncated stream, just feed more
- # data to parser (ticket #19457).
- if e.args[0].startswith("Error -5"):
- pass
- else:
- raise
- if p.image:
- return p.image.size
- chunk_size = chunk_size*2
- return None
- finally:
- if close:
- file.close()
- else:
- file.seek(file_pos)
diff --git a/lib/python2.7/site-packages/django/core/files/locks.py b/lib/python2.7/site-packages/django/core/files/locks.py
deleted file mode 100644
index 6f0e4b9..0000000
--- a/lib/python2.7/site-packages/django/core/files/locks.py
+++ /dev/null
@@ -1,69 +0,0 @@
-"""
-Portable file locking utilities.
-
-Based partially on example by Jonathan Feignberg <jdf@pobox.com> in the Python
-Cookbook, licensed under the Python Software License.
-
- http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65203
-
-Example Usage::
-
- >>> from django.core.files import locks
- >>> with open('./file', 'wb') as f:
- ... locks.lock(f, locks.LOCK_EX)
- ... f.write('Django')
-"""
-
-__all__ = ('LOCK_EX','LOCK_SH','LOCK_NB','lock','unlock')
-
-system_type = None
-
-try:
- import win32con
- import win32file
- import pywintypes
- LOCK_EX = win32con.LOCKFILE_EXCLUSIVE_LOCK
- LOCK_SH = 0
- LOCK_NB = win32con.LOCKFILE_FAIL_IMMEDIATELY
- __overlapped = pywintypes.OVERLAPPED()
- system_type = 'nt'
-except (ImportError, AttributeError):
- pass
-
-try:
- import fcntl
- LOCK_EX = fcntl.LOCK_EX
- LOCK_SH = fcntl.LOCK_SH
- LOCK_NB = fcntl.LOCK_NB
- system_type = 'posix'
-except (ImportError, AttributeError):
- pass
-
-def fd(f):
- """Get a filedescriptor from something which could be a file or an fd."""
- return f.fileno() if hasattr(f, 'fileno') else f
-
-if system_type == 'nt':
- def lock(file, flags):
- hfile = win32file._get_osfhandle(fd(file))
- win32file.LockFileEx(hfile, flags, 0, -0x10000, __overlapped)
-
- def unlock(file):
- hfile = win32file._get_osfhandle(fd(file))
- win32file.UnlockFileEx(hfile, 0, -0x10000, __overlapped)
-elif system_type == 'posix':
- def lock(file, flags):
- fcntl.lockf(fd(file), flags)
-
- def unlock(file):
- fcntl.lockf(fd(file), fcntl.LOCK_UN)
-else:
- # File locking is not supported.
- LOCK_EX = LOCK_SH = LOCK_NB = None
-
- # Dummy functions that don't do anything.
- def lock(file, flags):
- pass
-
- def unlock(file):
- pass
diff --git a/lib/python2.7/site-packages/django/core/files/move.py b/lib/python2.7/site-packages/django/core/files/move.py
deleted file mode 100644
index 4bd739b..0000000
--- a/lib/python2.7/site-packages/django/core/files/move.py
+++ /dev/null
@@ -1,89 +0,0 @@
-"""
-Move a file in the safest way possible::
-
- >>> from django.core.files.move import file_move_safe
- >>> file_move_safe("/tmp/old_file", "/tmp/new_file")
-"""
-
-import os
-from django.core.files import locks
-
-try:
- from shutil import copystat
-except ImportError:
- import stat
- def copystat(src, dst):
- """Copy all stat info (mode bits, atime and mtime) from src to dst"""
- st = os.stat(src)
- mode = stat.S_IMODE(st.st_mode)
- if hasattr(os, 'utime'):
- os.utime(dst, (st.st_atime, st.st_mtime))
- if hasattr(os, 'chmod'):
- os.chmod(dst, mode)
-
-__all__ = ['file_move_safe']
-
-def _samefile(src, dst):
- # Macintosh, Unix.
- if hasattr(os.path,'samefile'):
- try:
- return os.path.samefile(src, dst)
- except OSError:
- return False
-
- # All other platforms: check for same pathname.
- return (os.path.normcase(os.path.abspath(src)) ==
- os.path.normcase(os.path.abspath(dst)))
-
-def file_move_safe(old_file_name, new_file_name, chunk_size = 1024*64, allow_overwrite=False):
- """
- Moves a file from one location to another in the safest way possible.
-
- First, tries ``os.rename``, which is simple but will break across filesystems.
- If that fails, streams manually from one file to another in pure Python.
-
- If the destination file exists and ``allow_overwrite`` is ``False``, this
- function will throw an ``IOError``.
- """
-
- # There's no reason to move if we don't have to.
- if _samefile(old_file_name, new_file_name):
- return
-
- try:
- # If the destination file exists and allow_overwrite is False then raise an IOError
- if not allow_overwrite and os.access(new_file_name, os.F_OK):
- raise IOError("Destination file %s exists and allow_overwrite is False" % new_file_name)
-
- os.rename(old_file_name, new_file_name)
- return
- except OSError:
- # This will happen with os.rename if moving to another filesystem
- # or when moving opened files on certain operating systems
- pass
-
- # first open the old file, so that it won't go away
- with open(old_file_name, 'rb') as old_file:
- # now open the new file, not forgetting allow_overwrite
- fd = os.open(new_file_name, os.O_WRONLY | os.O_CREAT | getattr(os, 'O_BINARY', 0) |
- (os.O_EXCL if not allow_overwrite else 0))
- try:
- locks.lock(fd, locks.LOCK_EX)
- current_chunk = None
- while current_chunk != b'':
- current_chunk = old_file.read(chunk_size)
- os.write(fd, current_chunk)
- finally:
- locks.unlock(fd)
- os.close(fd)
- copystat(old_file_name, new_file_name)
-
- try:
- os.remove(old_file_name)
- except OSError as e:
- # Certain operating systems (Cygwin and Windows)
- # fail when deleting opened files, ignore it. (For the
- # systems where this happens, temporary files will be auto-deleted
- # on close anyway.)
- if getattr(e, 'winerror', 0) != 32 and getattr(e, 'errno', 0) != 13:
- raise
diff --git a/lib/python2.7/site-packages/django/core/files/storage.py b/lib/python2.7/site-packages/django/core/files/storage.py
deleted file mode 100644
index 8012378..0000000
--- a/lib/python2.7/site-packages/django/core/files/storage.py
+++ /dev/null
@@ -1,288 +0,0 @@
-import os
-import errno
-import itertools
-from datetime import datetime
-
-from django.conf import settings
-from django.core.exceptions import SuspiciousFileOperation
-from django.core.files import locks, File
-from django.core.files.move import file_move_safe
-from django.utils.encoding import force_text, filepath_to_uri
-from django.utils.functional import LazyObject
-from django.utils.module_loading import import_by_path
-from django.utils.six.moves.urllib.parse import urljoin
-from django.utils.text import get_valid_filename
-from django.utils._os import safe_join, abspathu
-
-
-__all__ = ('Storage', 'FileSystemStorage', 'DefaultStorage', 'default_storage')
-
-class Storage(object):
- """
- A base storage class, providing some default behaviors that all other
- storage systems can inherit or override, as necessary.
- """
-
- # The following methods represent a public interface to private methods.
- # These shouldn't be overridden by subclasses unless absolutely necessary.
-
- def open(self, name, mode='rb'):
- """
- Retrieves the specified file from storage.
- """
- return self._open(name, mode)
-
- def save(self, name, content):
- """
- Saves new content to the file specified by name. The content should be
- a proper File object or any python file-like object, ready to be read
- from the beginning.
- """
- # Get the proper name for the file, as it will actually be saved.
- if name is None:
- name = content.name
-
- if not hasattr(content, 'chunks'):
- content = File(content)
-
- name = self.get_available_name(name)
- name = self._save(name, content)
-
- # Store filenames with forward slashes, even on Windows
- return force_text(name.replace('\\', '/'))
-
- # These methods are part of the public API, with default implementations.
-
- def get_valid_name(self, name):
- """
- Returns a filename, based on the provided filename, that's suitable for
- use in the target storage system.
- """
- return get_valid_filename(name)
-
- def get_available_name(self, name):
- """
- Returns a filename that's free on the target storage system, and
- available for new content to be written to.
- """
- dir_name, file_name = os.path.split(name)
- file_root, file_ext = os.path.splitext(file_name)
- # If the filename already exists, add an underscore and a number (before
- # the file extension, if one exists) to the filename until the generated
- # filename doesn't exist.
- count = itertools.count(1)
- while self.exists(name):
- # file_ext includes the dot.
- name = os.path.join(dir_name, "%s_%s%s" % (file_root, next(count), file_ext))
-
- return name
-
- def path(self, name):
- """
- Returns a local filesystem path where the file can be retrieved using
- Python's built-in open() function. Storage systems that can't be
- accessed using open() should *not* implement this method.
- """
- raise NotImplementedError("This backend doesn't support absolute paths.")
-
- # The following methods form the public API for storage systems, but with
- # no default implementations. Subclasses must implement *all* of these.
-
- def delete(self, name):
- """
- Deletes the specified file from the storage system.
- """
- raise NotImplementedError()
-
- def exists(self, name):
- """
- Returns True if a file referened by the given name already exists in the
- storage system, or False if the name is available for a new file.
- """
- raise NotImplementedError()
-
- def listdir(self, path):
- """
- Lists the contents of the specified path, returning a 2-tuple of lists;
- the first item being directories, the second item being files.
- """
- raise NotImplementedError()
-
- def size(self, name):
- """
- Returns the total size, in bytes, of the file specified by name.
- """
- raise NotImplementedError()
-
- def url(self, name):
- """
- Returns an absolute URL where the file's contents can be accessed
- directly by a Web browser.
- """
- raise NotImplementedError()
-
- def accessed_time(self, name):
- """
- Returns the last accessed time (as datetime object) of the file
- specified by name.
- """
- raise NotImplementedError()
-
- def created_time(self, name):
- """
- Returns the creation time (as datetime object) of the file
- specified by name.
- """
- raise NotImplementedError()
-
- def modified_time(self, name):
- """
- Returns the last modified time (as datetime object) of the file
- specified by name.
- """
- raise NotImplementedError()
-
-class FileSystemStorage(Storage):
- """
- Standard filesystem storage
- """
-
- def __init__(self, location=None, base_url=None):
- if location is None:
- location = settings.MEDIA_ROOT
- self.base_location = location
- self.location = abspathu(self.base_location)
- if base_url is None:
- base_url = settings.MEDIA_URL
- self.base_url = base_url
-
- def _open(self, name, mode='rb'):
- return File(open(self.path(name), mode))
-
- def _save(self, name, content):
- full_path = self.path(name)
-
- # Create any intermediate directories that do not exist.
- # Note that there is a race between os.path.exists and os.makedirs:
- # if os.makedirs fails with EEXIST, the directory was created
- # concurrently, and we can continue normally. Refs #16082.
- directory = os.path.dirname(full_path)
- if not os.path.exists(directory):
- try:
- os.makedirs(directory)
- except OSError as e:
- if e.errno != errno.EEXIST:
- raise
- if not os.path.isdir(directory):
- raise IOError("%s exists and is not a directory." % directory)
-
- # There's a potential race condition between get_available_name and
- # saving the file; it's possible that two threads might return the
- # same name, at which point all sorts of fun happens. So we need to
- # try to create the file, but if it already exists we have to go back
- # to get_available_name() and try again.
-
- while True:
- try:
- # This file has a file path that we can move.
- if hasattr(content, 'temporary_file_path'):
- file_move_safe(content.temporary_file_path(), full_path)
- content.close()
-
- # This is a normal uploadedfile that we can stream.
- else:
- # This fun binary flag incantation makes os.open throw an
- # OSError if the file already exists before we open it.
- flags = (os.O_WRONLY | os.O_CREAT | os.O_EXCL |
- getattr(os, 'O_BINARY', 0))
- # The current umask value is masked out by os.open!
- fd = os.open(full_path, flags, 0o666)
- _file = None
- try:
- locks.lock(fd, locks.LOCK_EX)
- for chunk in content.chunks():
- if _file is None:
- mode = 'wb' if isinstance(chunk, bytes) else 'wt'
- _file = os.fdopen(fd, mode)
- _file.write(chunk)
- finally:
- locks.unlock(fd)
- if _file is not None:
- _file.close()
- else:
- os.close(fd)
- except OSError as e:
- if e.errno == errno.EEXIST:
- # Ooops, the file exists. We need a new file name.
- name = self.get_available_name(name)
- full_path = self.path(name)
- else:
- raise
- else:
- # OK, the file save worked. Break out of the loop.
- break
-
- if settings.FILE_UPLOAD_PERMISSIONS is not None:
- os.chmod(full_path, settings.FILE_UPLOAD_PERMISSIONS)
-
- return name
-
- def delete(self, name):
- assert name, "The name argument is not allowed to be empty."
- name = self.path(name)
- # If the file exists, delete it from the filesystem.
- # Note that there is a race between os.path.exists and os.remove:
- # if os.remove fails with ENOENT, the file was removed
- # concurrently, and we can continue normally.
- if os.path.exists(name):
- try:
- os.remove(name)
- except OSError as e:
- if e.errno != errno.ENOENT:
- raise
-
- def exists(self, name):
- return os.path.exists(self.path(name))
-
- def listdir(self, path):
- path = self.path(path)
- directories, files = [], []
- for entry in os.listdir(path):
- if os.path.isdir(os.path.join(path, entry)):
- directories.append(entry)
- else:
- files.append(entry)
- return directories, files
-
- def path(self, name):
- try:
- path = safe_join(self.location, name)
- except ValueError:
- raise SuspiciousFileOperation("Attempted access to '%s' denied." % name)
- return os.path.normpath(path)
-
- def size(self, name):
- return os.path.getsize(self.path(name))
-
- def url(self, name):
- if self.base_url is None:
- raise ValueError("This file is not accessible via a URL.")
- return urljoin(self.base_url, filepath_to_uri(name))
-
- def accessed_time(self, name):
- return datetime.fromtimestamp(os.path.getatime(self.path(name)))
-
- def created_time(self, name):
- return datetime.fromtimestamp(os.path.getctime(self.path(name)))
-
- def modified_time(self, name):
- return datetime.fromtimestamp(os.path.getmtime(self.path(name)))
-
-def get_storage_class(import_path=None):
- return import_by_path(import_path or settings.DEFAULT_FILE_STORAGE)
-
-class DefaultStorage(LazyObject):
- def _setup(self):
- self._wrapped = get_storage_class()()
-
-default_storage = DefaultStorage()
diff --git a/lib/python2.7/site-packages/django/core/files/temp.py b/lib/python2.7/site-packages/django/core/files/temp.py
deleted file mode 100644
index 3dcda17..0000000
--- a/lib/python2.7/site-packages/django/core/files/temp.py
+++ /dev/null
@@ -1,65 +0,0 @@
-"""
-The temp module provides a NamedTemporaryFile that can be re-opened on any
-platform. Most platforms use the standard Python tempfile.TemporaryFile class,
-but MS Windows users are given a custom class.
-
-This is needed because in Windows NT, the default implementation of
-NamedTemporaryFile uses the O_TEMPORARY flag, and thus cannot be reopened [1].
-
-1: http://mail.python.org/pipermail/python-list/2005-December/359474.html
-"""
-
-import os
-import tempfile
-from django.core.files.utils import FileProxyMixin
-
-__all__ = ('NamedTemporaryFile', 'gettempdir',)
-
-if os.name == 'nt':
- class TemporaryFile(FileProxyMixin):
- """
- Temporary file object constructor that works in Windows and supports
- reopening of the temporary file in windows.
- """
- def __init__(self, mode='w+b', bufsize=-1, suffix='', prefix='',
- dir=None):
- fd, name = tempfile.mkstemp(suffix=suffix, prefix=prefix,
- dir=dir)
- self.name = name
- self.file = os.fdopen(fd, mode, bufsize)
- self.close_called = False
-
- # Because close can be called during shutdown
- # we need to cache os.unlink and access it
- # as self.unlink only
- unlink = os.unlink
-
- def close(self):
- if not self.close_called:
- self.close_called = True
- try:
- self.file.close()
- except (OSError, IOError):
- pass
- try:
- self.unlink(self.name)
- except (OSError):
- pass
-
- @property
- def closed(self):
- """
- This attribute needs to be accessible in certain situations,
- because this class is supposed to mock the API of the class
- tempfile.NamedTemporaryFile in the Python standard library.
- """
- return self.file.closed
-
- def __del__(self):
- self.close()
-
- NamedTemporaryFile = TemporaryFile
-else:
- NamedTemporaryFile = tempfile.NamedTemporaryFile
-
-gettempdir = tempfile.gettempdir
diff --git a/lib/python2.7/site-packages/django/core/files/uploadedfile.py b/lib/python2.7/site-packages/django/core/files/uploadedfile.py
deleted file mode 100644
index 39b99ff..0000000
--- a/lib/python2.7/site-packages/django/core/files/uploadedfile.py
+++ /dev/null
@@ -1,125 +0,0 @@
-"""
-Classes representing uploaded files.
-"""
-
-import os
-from io import BytesIO
-
-from django.conf import settings
-from django.core.files.base import File
-from django.core.files import temp as tempfile
-from django.utils.encoding import force_str
-
-__all__ = ('UploadedFile', 'TemporaryUploadedFile', 'InMemoryUploadedFile',
- 'SimpleUploadedFile')
-
-class UploadedFile(File):
- """
- A abstract uploaded file (``TemporaryUploadedFile`` and
- ``InMemoryUploadedFile`` are the built-in concrete subclasses).
-
- An ``UploadedFile`` object behaves somewhat like a file object and
- represents some file data that the user submitted with a form.
- """
- DEFAULT_CHUNK_SIZE = 64 * 2**10
-
- def __init__(self, file=None, name=None, content_type=None, size=None, charset=None):
- super(UploadedFile, self).__init__(file, name)
- self.size = size
- self.content_type = content_type
- self.charset = charset
-
- def __repr__(self):
- return force_str("<%s: %s (%s)>" % (
- self.__class__.__name__, self.name, self.content_type))
-
- def _get_name(self):
- return self._name
-
- def _set_name(self, name):
- # Sanitize the file name so that it can't be dangerous.
- if name is not None:
- # Just use the basename of the file -- anything else is dangerous.
- name = os.path.basename(name)
-
- # File names longer than 255 characters can cause problems on older OSes.
- if len(name) > 255:
- name, ext = os.path.splitext(name)
- name = name[:255 - len(ext)] + ext
-
- self._name = name
-
- name = property(_get_name, _set_name)
-
-class TemporaryUploadedFile(UploadedFile):
- """
- A file uploaded to a temporary location (i.e. stream-to-disk).
- """
- def __init__(self, name, content_type, size, charset):
- if settings.FILE_UPLOAD_TEMP_DIR:
- file = tempfile.NamedTemporaryFile(suffix='.upload',
- dir=settings.FILE_UPLOAD_TEMP_DIR)
- else:
- file = tempfile.NamedTemporaryFile(suffix='.upload')
- super(TemporaryUploadedFile, self).__init__(file, name, content_type, size, charset)
-
- def temporary_file_path(self):
- """
- Returns the full path of this file.
- """
- return self.file.name
-
- def close(self):
- try:
- return self.file.close()
- except OSError as e:
- if e.errno != 2:
- # Means the file was moved or deleted before the tempfile
- # could unlink it. Still sets self.file.close_called and
- # calls self.file.file.close() before the exception
- raise
-
-class InMemoryUploadedFile(UploadedFile):
- """
- A file uploaded into memory (i.e. stream-to-memory).
- """
- def __init__(self, file, field_name, name, content_type, size, charset):
- super(InMemoryUploadedFile, self).__init__(file, name, content_type, size, charset)
- self.field_name = field_name
-
- def open(self, mode=None):
- self.file.seek(0)
-
- def close(self):
- pass
-
- def chunks(self, chunk_size=None):
- self.file.seek(0)
- yield self.read()
-
- def multiple_chunks(self, chunk_size=None):
- # Since it's in memory, we'll never have multiple chunks.
- return False
-
-
-class SimpleUploadedFile(InMemoryUploadedFile):
- """
- A simple representation of a file, which just has content, size, and a name.
- """
- def __init__(self, name, content, content_type='text/plain'):
- content = content or b''
- super(SimpleUploadedFile, self).__init__(BytesIO(content), None, name,
- content_type, len(content), None)
-
- def from_dict(cls, file_dict):
- """
- Creates a SimpleUploadedFile object from
- a dictionary object with the following keys:
- - filename
- - content-type
- - content
- """
- return cls(file_dict['filename'],
- file_dict['content'],
- file_dict.get('content-type', 'text/plain'))
- from_dict = classmethod(from_dict)
diff --git a/lib/python2.7/site-packages/django/core/files/uploadhandler.py b/lib/python2.7/site-packages/django/core/files/uploadhandler.py
deleted file mode 100644
index f5e95cf..0000000
--- a/lib/python2.7/site-packages/django/core/files/uploadhandler.py
+++ /dev/null
@@ -1,203 +0,0 @@
-"""
-Base file upload handler classes, and the built-in concrete subclasses
-"""
-
-from __future__ import unicode_literals
-
-from io import BytesIO
-
-from django.conf import settings
-from django.core.files.uploadedfile import TemporaryUploadedFile, InMemoryUploadedFile
-from django.utils.encoding import python_2_unicode_compatible
-from django.utils.module_loading import import_by_path
-
-__all__ = ['UploadFileException','StopUpload', 'SkipFile', 'FileUploadHandler',
- 'TemporaryFileUploadHandler', 'MemoryFileUploadHandler',
- 'load_handler', 'StopFutureHandlers']
-
-class UploadFileException(Exception):
- """
- Any error having to do with uploading files.
- """
- pass
-
-@python_2_unicode_compatible
-class StopUpload(UploadFileException):
- """
- This exception is raised when an upload must abort.
- """
- def __init__(self, connection_reset=False):
- """
- If ``connection_reset`` is ``True``, Django knows will halt the upload
- without consuming the rest of the upload. This will cause the browser to
- show a "connection reset" error.
- """
- self.connection_reset = connection_reset
-
- def __str__(self):
- if self.connection_reset:
- return 'StopUpload: Halt current upload.'
- else:
- return 'StopUpload: Consume request data, then halt.'
-
-class SkipFile(UploadFileException):
- """
- This exception is raised by an upload handler that wants to skip a given file.
- """
- pass
-
-class StopFutureHandlers(UploadFileException):
- """
- Upload handers that have handled a file and do not want future handlers to
- run should raise this exception instead of returning None.
- """
- pass
-
-class FileUploadHandler(object):
- """
- Base class for streaming upload handlers.
- """
- chunk_size = 64 * 2 ** 10 #: The default chunk size is 64 KB.
-
- def __init__(self, request=None):
- self.file_name = None
- self.content_type = None
- self.content_length = None
- self.charset = None
- self.request = request
-
- def handle_raw_input(self, input_data, META, content_length, boundary, encoding=None):
- """
- Handle the raw input from the client.
-
- Parameters:
-
- :input_data:
- An object that supports reading via .read().
- :META:
- ``request.META``.
- :content_length:
- The (integer) value of the Content-Length header from the
- client.
- :boundary: The boundary from the Content-Type header. Be sure to
- prepend two '--'.
- """
- pass
-
- def new_file(self, field_name, file_name, content_type, content_length, charset=None):
- """
- Signal that a new file has been started.
-
- Warning: As with any data from the client, you should not trust
- content_length (and sometimes won't even get it).
- """
- self.field_name = field_name
- self.file_name = file_name
- self.content_type = content_type
- self.content_length = content_length
- self.charset = charset
-
- def receive_data_chunk(self, raw_data, start):
- """
- Receive data from the streamed upload parser. ``start`` is the position
- in the file of the chunk.
- """
- raise NotImplementedError()
-
- def file_complete(self, file_size):
- """
- Signal that a file has completed. File size corresponds to the actual
- size accumulated by all the chunks.
-
- Subclasses should return a valid ``UploadedFile`` object.
- """
- raise NotImplementedError()
-
- def upload_complete(self):
- """
- Signal that the upload is complete. Subclasses should perform cleanup
- that is necessary for this handler.
- """
- pass
-
-class TemporaryFileUploadHandler(FileUploadHandler):
- """
- Upload handler that streams data into a temporary file.
- """
- def __init__(self, *args, **kwargs):
- super(TemporaryFileUploadHandler, self).__init__(*args, **kwargs)
-
- def new_file(self, file_name, *args, **kwargs):
- """
- Create the file object to append to as data is coming in.
- """
- super(TemporaryFileUploadHandler, self).new_file(file_name, *args, **kwargs)
- self.file = TemporaryUploadedFile(self.file_name, self.content_type, 0, self.charset)
-
- def receive_data_chunk(self, raw_data, start):
- self.file.write(raw_data)
-
- def file_complete(self, file_size):
- self.file.seek(0)
- self.file.size = file_size
- return self.file
-
-class MemoryFileUploadHandler(FileUploadHandler):
- """
- File upload handler to stream uploads into memory (used for small files).
- """
-
- def handle_raw_input(self, input_data, META, content_length, boundary, encoding=None):
- """
- Use the content_length to signal whether or not this handler should be in use.
- """
- # Check the content-length header to see if we should
- # If the post is too large, we cannot use the Memory handler.
- if content_length > settings.FILE_UPLOAD_MAX_MEMORY_SIZE:
- self.activated = False
- else:
- self.activated = True
-
- def new_file(self, *args, **kwargs):
- super(MemoryFileUploadHandler, self).new_file(*args, **kwargs)
- if self.activated:
- self.file = BytesIO()
- raise StopFutureHandlers()
-
- def receive_data_chunk(self, raw_data, start):
- """
- Add the data to the BytesIO file.
- """
- if self.activated:
- self.file.write(raw_data)
- else:
- return raw_data
-
- def file_complete(self, file_size):
- """
- Return a file object if we're activated.
- """
- if not self.activated:
- return
-
- self.file.seek(0)
- return InMemoryUploadedFile(
- file = self.file,
- field_name = self.field_name,
- name = self.file_name,
- content_type = self.content_type,
- size = file_size,
- charset = self.charset
- )
-
-
-def load_handler(path, *args, **kwargs):
- """
- Given a path to a handler, return an instance of that handler.
-
- E.g.::
- >>> load_handler('django.core.files.uploadhandler.TemporaryFileUploadHandler', request)
- <TemporaryFileUploadHandler object at 0x...>
-
- """
- return import_by_path(path)(*args, **kwargs)
diff --git a/lib/python2.7/site-packages/django/core/files/utils.py b/lib/python2.7/site-packages/django/core/files/utils.py
deleted file mode 100644
index 8cc212f..0000000
--- a/lib/python2.7/site-packages/django/core/files/utils.py
+++ /dev/null
@@ -1,29 +0,0 @@
-class FileProxyMixin(object):
- """
- A mixin class used to forward file methods to an underlaying file
- object. The internal file object has to be called "file"::
-
- class FileProxy(FileProxyMixin):
- def __init__(self, file):
- self.file = file
- """
-
- encoding = property(lambda self: self.file.encoding)
- fileno = property(lambda self: self.file.fileno)
- flush = property(lambda self: self.file.flush)
- isatty = property(lambda self: self.file.isatty)
- newlines = property(lambda self: self.file.newlines)
- read = property(lambda self: self.file.read)
- readinto = property(lambda self: self.file.readinto)
- readline = property(lambda self: self.file.readline)
- readlines = property(lambda self: self.file.readlines)
- seek = property(lambda self: self.file.seek)
- softspace = property(lambda self: self.file.softspace)
- tell = property(lambda self: self.file.tell)
- truncate = property(lambda self: self.file.truncate)
- write = property(lambda self: self.file.write)
- writelines = property(lambda self: self.file.writelines)
- xreadlines = property(lambda self: self.file.xreadlines)
-
- def __iter__(self):
- return iter(self.file)
diff --git a/lib/python2.7/site-packages/django/core/handlers/__init__.py b/lib/python2.7/site-packages/django/core/handlers/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/core/handlers/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/core/handlers/base.py b/lib/python2.7/site-packages/django/core/handlers/base.py
deleted file mode 100644
index 5911865..0000000
--- a/lib/python2.7/site-packages/django/core/handlers/base.py
+++ /dev/null
@@ -1,290 +0,0 @@
-from __future__ import unicode_literals
-
-import logging
-import sys
-import types
-
-from django import http
-from django.conf import settings
-from django.core import urlresolvers
-from django.core import signals
-from django.core.exceptions import MiddlewareNotUsed, PermissionDenied, SuspiciousOperation
-from django.db import connections, transaction
-from django.utils.encoding import force_text
-from django.utils.module_loading import import_by_path
-from django.utils import six
-from django.views import debug
-
-logger = logging.getLogger('django.request')
-
-
-class BaseHandler(object):
- # Changes that are always applied to a response (in this order).
- response_fixes = [
- http.fix_location_header,
- http.conditional_content_removal,
- http.fix_IE_for_attach,
- http.fix_IE_for_vary,
- ]
-
- def __init__(self):
- self._request_middleware = self._view_middleware = self._template_response_middleware = self._response_middleware = self._exception_middleware = None
-
-
- def load_middleware(self):
- """
- Populate middleware lists from settings.MIDDLEWARE_CLASSES.
-
- Must be called after the environment is fixed (see __call__ in subclasses).
- """
- self._view_middleware = []
- self._template_response_middleware = []
- self._response_middleware = []
- self._exception_middleware = []
-
- request_middleware = []
- for middleware_path in settings.MIDDLEWARE_CLASSES:
- mw_class = import_by_path(middleware_path)
- try:
- mw_instance = mw_class()
- except MiddlewareNotUsed:
- continue
-
- if hasattr(mw_instance, 'process_request'):
- request_middleware.append(mw_instance.process_request)
- if hasattr(mw_instance, 'process_view'):
- self._view_middleware.append(mw_instance.process_view)
- if hasattr(mw_instance, 'process_template_response'):
- self._template_response_middleware.insert(0, mw_instance.process_template_response)
- if hasattr(mw_instance, 'process_response'):
- self._response_middleware.insert(0, mw_instance.process_response)
- if hasattr(mw_instance, 'process_exception'):
- self._exception_middleware.insert(0, mw_instance.process_exception)
-
- # We only assign to this when initialization is complete as it is used
- # as a flag for initialization being complete.
- self._request_middleware = request_middleware
-
- def make_view_atomic(self, view):
- non_atomic_requests = getattr(view, '_non_atomic_requests', set())
- for db in connections.all():
- if (db.settings_dict['ATOMIC_REQUESTS']
- and db.alias not in non_atomic_requests):
- view = transaction.atomic(using=db.alias)(view)
- return view
-
- def get_response(self, request):
- "Returns an HttpResponse object for the given HttpRequest"
-
- # Setup default url resolver for this thread, this code is outside
- # the try/except so we don't get a spurious "unbound local
- # variable" exception in the event an exception is raised before
- # resolver is set
- urlconf = settings.ROOT_URLCONF
- urlresolvers.set_urlconf(urlconf)
- resolver = urlresolvers.RegexURLResolver(r'^/', urlconf)
- try:
- response = None
- # Apply request middleware
- for middleware_method in self._request_middleware:
- response = middleware_method(request)
- if response:
- break
-
- if response is None:
- if hasattr(request, 'urlconf'):
- # Reset url resolver with a custom urlconf.
- urlconf = request.urlconf
- urlresolvers.set_urlconf(urlconf)
- resolver = urlresolvers.RegexURLResolver(r'^/', urlconf)
-
- resolver_match = resolver.resolve(request.path_info)
- callback, callback_args, callback_kwargs = resolver_match
- request.resolver_match = resolver_match
-
- # Apply view middleware
- for middleware_method in self._view_middleware:
- response = middleware_method(request, callback, callback_args, callback_kwargs)
- if response:
- break
-
- if response is None:
- wrapped_callback = self.make_view_atomic(callback)
- try:
- response = wrapped_callback(request, *callback_args, **callback_kwargs)
- except Exception as e:
- # If the view raised an exception, run it through exception
- # middleware, and if the exception middleware returns a
- # response, use that. Otherwise, reraise the exception.
- for middleware_method in self._exception_middleware:
- response = middleware_method(request, e)
- if response:
- break
- if response is None:
- raise
-
- # Complain if the view returned None (a common error).
- if response is None:
- if isinstance(callback, types.FunctionType): # FBV
- view_name = callback.__name__
- else: # CBV
- view_name = callback.__class__.__name__ + '.__call__'
- raise ValueError("The view %s.%s didn't return an HttpResponse object." % (callback.__module__, view_name))
-
- # If the response supports deferred rendering, apply template
- # response middleware and then render the response
- if hasattr(response, 'render') and callable(response.render):
- for middleware_method in self._template_response_middleware:
- response = middleware_method(request, response)
- response = response.render()
-
- except http.Http404 as e:
- logger.warning('Not Found: %s', request.path,
- extra={
- 'status_code': 404,
- 'request': request
- })
- if settings.DEBUG:
- response = debug.technical_404_response(request, e)
- else:
- try:
- callback, param_dict = resolver.resolve404()
- response = callback(request, **param_dict)
- except:
- signals.got_request_exception.send(sender=self.__class__, request=request)
- response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
-
- except PermissionDenied:
- logger.warning(
- 'Forbidden (Permission denied): %s', request.path,
- extra={
- 'status_code': 403,
- 'request': request
- })
- try:
- callback, param_dict = resolver.resolve403()
- response = callback(request, **param_dict)
- except:
- signals.got_request_exception.send(
- sender=self.__class__, request=request)
- response = self.handle_uncaught_exception(request,
- resolver, sys.exc_info())
-
- except SuspiciousOperation as e:
- # The request logger receives events for any problematic request
- # The security logger receives events for all SuspiciousOperations
- security_logger = logging.getLogger('django.security.%s' %
- e.__class__.__name__)
- security_logger.error(force_text(e))
-
- try:
- callback, param_dict = resolver.resolve400()
- response = callback(request, **param_dict)
- except:
- signals.got_request_exception.send(
- sender=self.__class__, request=request)
- response = self.handle_uncaught_exception(request,
- resolver, sys.exc_info())
-
- except SystemExit:
- # Allow sys.exit() to actually exit. See tickets #1023 and #4701
- raise
-
- except: # Handle everything else.
- # Get the exception info now, in case another exception is thrown later.
- signals.got_request_exception.send(sender=self.__class__, request=request)
- response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
-
- try:
- # Apply response middleware, regardless of the response
- for middleware_method in self._response_middleware:
- response = middleware_method(request, response)
- response = self.apply_response_fixes(request, response)
- except: # Any exception should be gathered and handled
- signals.got_request_exception.send(sender=self.__class__, request=request)
- response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
-
- return response
-
- def handle_uncaught_exception(self, request, resolver, exc_info):
- """
- Processing for any otherwise uncaught exceptions (those that will
- generate HTTP 500 responses). Can be overridden by subclasses who want
- customised 500 handling.
-
- Be *very* careful when overriding this because the error could be
- caused by anything, so assuming something like the database is always
- available would be an error.
- """
- if settings.DEBUG_PROPAGATE_EXCEPTIONS:
- raise
-
- logger.error('Internal Server Error: %s', request.path,
- exc_info=exc_info,
- extra={
- 'status_code': 500,
- 'request': request
- }
- )
-
- if settings.DEBUG:
- return debug.technical_500_response(request, *exc_info)
-
- # If Http500 handler is not installed, re-raise last exception
- if resolver.urlconf_module is None:
- six.reraise(*exc_info)
- # Return an HttpResponse that displays a friendly error message.
- callback, param_dict = resolver.resolve500()
- return callback(request, **param_dict)
-
- def apply_response_fixes(self, request, response):
- """
- Applies each of the functions in self.response_fixes to the request and
- response, modifying the response in the process. Returns the new
- response.
- """
- for func in self.response_fixes:
- response = func(request, response)
- return response
-
-
-def get_path_info(environ):
- """
- Returns the HTTP request's PATH_INFO as a unicode string.
- """
- path_info = environ.get('PATH_INFO', str('/'))
- # Under Python 3, strings in environ are decoded with ISO-8859-1;
- # re-encode to recover the original bytestring provided by the web server.
- if six.PY3:
- path_info = path_info.encode('iso-8859-1')
- # It'd be better to implement URI-to-IRI decoding, see #19508.
- return path_info.decode('utf-8')
-
-
-def get_script_name(environ):
- """
- Returns the equivalent of the HTTP request's SCRIPT_NAME environment
- variable. If Apache mod_rewrite has been used, returns what would have been
- the script name prior to any rewriting (so it's the script name as seen
- from the client's perspective), unless the FORCE_SCRIPT_NAME setting is
- set (to anything).
- """
- if settings.FORCE_SCRIPT_NAME is not None:
- return force_text(settings.FORCE_SCRIPT_NAME)
-
- # If Apache's mod_rewrite had a whack at the URL, Apache set either
- # SCRIPT_URL or REDIRECT_URL to the full resource URL before applying any
- # rewrites. Unfortunately not every Web server (lighttpd!) passes this
- # information through all the time, so FORCE_SCRIPT_NAME, above, is still
- # needed.
- script_url = environ.get('SCRIPT_URL', environ.get('REDIRECT_URL', str('')))
- if script_url:
- script_name = script_url[:-len(environ.get('PATH_INFO', str('')))]
- else:
- script_name = environ.get('SCRIPT_NAME', str(''))
- # Under Python 3, strings in environ are decoded with ISO-8859-1;
- # re-encode to recover the original bytestring provided by the web server.
- if six.PY3:
- script_name = script_name.encode('iso-8859-1')
- # It'd be better to implement URI-to-IRI decoding, see #19508.
- return script_name.decode('utf-8')
diff --git a/lib/python2.7/site-packages/django/core/handlers/wsgi.py b/lib/python2.7/site-packages/django/core/handlers/wsgi.py
deleted file mode 100644
index adc8804..0000000
--- a/lib/python2.7/site-packages/django/core/handlers/wsgi.py
+++ /dev/null
@@ -1,215 +0,0 @@
-from __future__ import unicode_literals
-
-import codecs
-import logging
-import sys
-from io import BytesIO
-from threading import Lock
-
-from django import http
-from django.core import signals
-from django.core.handlers import base
-from django.core.urlresolvers import set_script_prefix
-from django.utils import datastructures
-from django.utils.encoding import force_str, force_text, iri_to_uri
-from django.utils import six
-
-# For backwards compatibility -- lots of code uses this in the wild!
-from django.http.response import REASON_PHRASES as STATUS_CODE_TEXT
-
-logger = logging.getLogger('django.request')
-
-
-class LimitedStream(object):
- '''
- LimitedStream wraps another stream in order to not allow reading from it
- past specified amount of bytes.
- '''
- def __init__(self, stream, limit, buf_size=64 * 1024 * 1024):
- self.stream = stream
- self.remaining = limit
- self.buffer = b''
- self.buf_size = buf_size
-
- def _read_limited(self, size=None):
- if size is None or size > self.remaining:
- size = self.remaining
- if size == 0:
- return b''
- result = self.stream.read(size)
- self.remaining -= len(result)
- return result
-
- def read(self, size=None):
- if size is None:
- result = self.buffer + self._read_limited()
- self.buffer = b''
- elif size < len(self.buffer):
- result = self.buffer[:size]
- self.buffer = self.buffer[size:]
- else: # size >= len(self.buffer)
- result = self.buffer + self._read_limited(size - len(self.buffer))
- self.buffer = b''
- return result
-
- def readline(self, size=None):
- while b'\n' not in self.buffer and \
- (size is None or len(self.buffer) < size):
- if size:
- # since size is not None here, len(self.buffer) < size
- chunk = self._read_limited(size - len(self.buffer))
- else:
- chunk = self._read_limited()
- if not chunk:
- break
- self.buffer += chunk
- sio = BytesIO(self.buffer)
- if size:
- line = sio.readline(size)
- else:
- line = sio.readline()
- self.buffer = sio.read()
- return line
-
-
-class WSGIRequest(http.HttpRequest):
- def __init__(self, environ):
- script_name = base.get_script_name(environ)
- path_info = base.get_path_info(environ)
- if not path_info:
- # Sometimes PATH_INFO exists, but is empty (e.g. accessing
- # the SCRIPT_NAME URL without a trailing slash). We really need to
- # operate as if they'd requested '/'. Not amazingly nice to force
- # the path like this, but should be harmless.
- path_info = '/'
- self.environ = environ
- self.path_info = path_info
- self.path = '%s/%s' % (script_name.rstrip('/'), path_info.lstrip('/'))
- self.META = environ
- self.META['PATH_INFO'] = path_info
- self.META['SCRIPT_NAME'] = script_name
- self.method = environ['REQUEST_METHOD'].upper()
- _, content_params = self._parse_content_type(self.META.get('CONTENT_TYPE', ''))
- if 'charset' in content_params:
- try:
- codecs.lookup(content_params['charset'])
- except LookupError:
- pass
- else:
- self.encoding = content_params['charset']
- self._post_parse_error = False
- try:
- content_length = int(self.environ.get('CONTENT_LENGTH'))
- except (ValueError, TypeError):
- content_length = 0
- self._stream = LimitedStream(self.environ['wsgi.input'], content_length)
- self._read_started = False
- self.resolver_match = None
-
- def _is_secure(self):
- return 'wsgi.url_scheme' in self.environ and self.environ['wsgi.url_scheme'] == 'https'
-
- def _parse_content_type(self, ctype):
- """
- Media Types parsing according to RFC 2616, section 3.7.
-
- Returns the data type and parameters. For example:
- Input: "text/plain; charset=iso-8859-1"
- Output: ('text/plain', {'charset': 'iso-8859-1'})
- """
- content_type, _, params = ctype.partition(';')
- content_params = {}
- for parameter in params.split(';'):
- k, _, v = parameter.strip().partition('=')
- content_params[k] = v
- return content_type, content_params
-
- def _get_request(self):
- if not hasattr(self, '_request'):
- self._request = datastructures.MergeDict(self.POST, self.GET)
- return self._request
-
- def _get_get(self):
- if not hasattr(self, '_get'):
- # The WSGI spec says 'QUERY_STRING' may be absent.
- raw_query_string = self.environ.get('QUERY_STRING', str(''))
- if six.PY3:
- raw_query_string = raw_query_string.encode('iso-8859-1').decode('utf-8')
- self._get = http.QueryDict(raw_query_string, encoding=self._encoding)
- return self._get
-
- def _set_get(self, get):
- self._get = get
-
- def _get_post(self):
- if not hasattr(self, '_post'):
- self._load_post_and_files()
- return self._post
-
- def _set_post(self, post):
- self._post = post
-
- def _get_cookies(self):
- if not hasattr(self, '_cookies'):
- raw_cookie = self.environ.get('HTTP_COOKIE', str(''))
- if six.PY3:
- raw_cookie = raw_cookie.encode('iso-8859-1').decode('utf-8')
- self._cookies = http.parse_cookie(raw_cookie)
- return self._cookies
-
- def _set_cookies(self, cookies):
- self._cookies = cookies
-
- def _get_files(self):
- if not hasattr(self, '_files'):
- self._load_post_and_files()
- return self._files
-
- GET = property(_get_get, _set_get)
- POST = property(_get_post, _set_post)
- COOKIES = property(_get_cookies, _set_cookies)
- FILES = property(_get_files)
- REQUEST = property(_get_request)
-
-
-class WSGIHandler(base.BaseHandler):
- initLock = Lock()
- request_class = WSGIRequest
-
- def __call__(self, environ, start_response):
- # Set up middleware if needed. We couldn't do this earlier, because
- # settings weren't available.
- if self._request_middleware is None:
- with self.initLock:
- try:
- # Check that middleware is still uninitialised.
- if self._request_middleware is None:
- self.load_middleware()
- except:
- # Unload whatever middleware we got
- self._request_middleware = None
- raise
-
- set_script_prefix(base.get_script_name(environ))
- signals.request_started.send(sender=self.__class__)
- try:
- request = self.request_class(environ)
- except UnicodeDecodeError:
- logger.warning('Bad Request (UnicodeDecodeError)',
- exc_info=sys.exc_info(),
- extra={
- 'status_code': 400,
- }
- )
- response = http.HttpResponseBadRequest()
- else:
- response = self.get_response(request)
-
- response._handler_class = self.__class__
-
- status = '%s %s' % (response.status_code, response.reason_phrase)
- response_headers = [(str(k), str(v)) for k, v in response.items()]
- for c in response.cookies.values():
- response_headers.append((str('Set-Cookie'), str(c.output(header=''))))
- start_response(force_str(status), response_headers)
- return response
diff --git a/lib/python2.7/site-packages/django/core/mail/__init__.py b/lib/python2.7/site-packages/django/core/mail/__init__.py
deleted file mode 100644
index fcff803..0000000
--- a/lib/python2.7/site-packages/django/core/mail/__init__.py
+++ /dev/null
@@ -1,99 +0,0 @@
-"""
-Tools for sending email.
-"""
-from __future__ import unicode_literals
-
-from django.conf import settings
-from django.utils.module_loading import import_by_path
-
-# Imported for backwards compatibility, and for the sake
-# of a cleaner namespace. These symbols used to be in
-# django/core/mail.py before the introduction of email
-# backends and the subsequent reorganization (See #10355)
-from django.core.mail.utils import CachedDnsName, DNS_NAME
-from django.core.mail.message import (
- EmailMessage, EmailMultiAlternatives,
- SafeMIMEText, SafeMIMEMultipart,
- DEFAULT_ATTACHMENT_MIME_TYPE, make_msgid,
- BadHeaderError, forbid_multi_line_headers)
-
-
-def get_connection(backend=None, fail_silently=False, **kwds):
- """Load an email backend and return an instance of it.
-
- If backend is None (default) settings.EMAIL_BACKEND is used.
-
- Both fail_silently and other keyword arguments are used in the
- constructor of the backend.
- """
- klass = import_by_path(backend or settings.EMAIL_BACKEND)
- return klass(fail_silently=fail_silently, **kwds)
-
-
-def send_mail(subject, message, from_email, recipient_list,
- fail_silently=False, auth_user=None, auth_password=None,
- connection=None):
- """
- Easy wrapper for sending a single message to a recipient list. All members
- of the recipient list will see the other recipients in the 'To' field.
-
- If auth_user is None, the EMAIL_HOST_USER setting is used.
- If auth_password is None, the EMAIL_HOST_PASSWORD setting is used.
-
- Note: The API for this method is frozen. New code wanting to extend the
- functionality should use the EmailMessage class directly.
- """
- connection = connection or get_connection(username=auth_user,
- password=auth_password,
- fail_silently=fail_silently)
- return EmailMessage(subject, message, from_email, recipient_list,
- connection=connection).send()
-
-
-def send_mass_mail(datatuple, fail_silently=False, auth_user=None,
- auth_password=None, connection=None):
- """
- Given a datatuple of (subject, message, from_email, recipient_list), sends
- each message to each recipient list. Returns the number of emails sent.
-
- If from_email is None, the DEFAULT_FROM_EMAIL setting is used.
- If auth_user and auth_password are set, they're used to log in.
- If auth_user is None, the EMAIL_HOST_USER setting is used.
- If auth_password is None, the EMAIL_HOST_PASSWORD setting is used.
-
- Note: The API for this method is frozen. New code wanting to extend the
- functionality should use the EmailMessage class directly.
- """
- connection = connection or get_connection(username=auth_user,
- password=auth_password,
- fail_silently=fail_silently)
- messages = [EmailMessage(subject, message, sender, recipient,
- connection=connection)
- for subject, message, sender, recipient in datatuple]
- return connection.send_messages(messages)
-
-
-def mail_admins(subject, message, fail_silently=False, connection=None,
- html_message=None):
- """Sends a message to the admins, as defined by the ADMINS setting."""
- if not settings.ADMINS:
- return
- mail = EmailMultiAlternatives('%s%s' % (settings.EMAIL_SUBJECT_PREFIX, subject),
- message, settings.SERVER_EMAIL, [a[1] for a in settings.ADMINS],
- connection=connection)
- if html_message:
- mail.attach_alternative(html_message, 'text/html')
- mail.send(fail_silently=fail_silently)
-
-
-def mail_managers(subject, message, fail_silently=False, connection=None,
- html_message=None):
- """Sends a message to the managers, as defined by the MANAGERS setting."""
- if not settings.MANAGERS:
- return
- mail = EmailMultiAlternatives('%s%s' % (settings.EMAIL_SUBJECT_PREFIX, subject),
- message, settings.SERVER_EMAIL, [a[1] for a in settings.MANAGERS],
- connection=connection)
- if html_message:
- mail.attach_alternative(html_message, 'text/html')
- mail.send(fail_silently=fail_silently)
diff --git a/lib/python2.7/site-packages/django/core/mail/backends/__init__.py b/lib/python2.7/site-packages/django/core/mail/backends/__init__.py
deleted file mode 100644
index 5973b49..0000000
--- a/lib/python2.7/site-packages/django/core/mail/backends/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Mail backends shipped with Django.
diff --git a/lib/python2.7/site-packages/django/core/mail/backends/base.py b/lib/python2.7/site-packages/django/core/mail/backends/base.py
deleted file mode 100644
index 9a30928..0000000
--- a/lib/python2.7/site-packages/django/core/mail/backends/base.py
+++ /dev/null
@@ -1,39 +0,0 @@
-"""Base email backend class."""
-
-class BaseEmailBackend(object):
- """
- Base class for email backend implementations.
-
- Subclasses must at least overwrite send_messages().
- """
- def __init__(self, fail_silently=False, **kwargs):
- self.fail_silently = fail_silently
-
- def open(self):
- """Open a network connection.
-
- This method can be overwritten by backend implementations to
- open a network connection.
-
- It's up to the backend implementation to track the status of
- a network connection if it's needed by the backend.
-
- This method can be called by applications to force a single
- network connection to be used when sending mails. See the
- send_messages() method of the SMTP backend for a reference
- implementation.
-
- The default implementation does nothing.
- """
- pass
-
- def close(self):
- """Close a network connection."""
- pass
-
- def send_messages(self, email_messages):
- """
- Sends one or more EmailMessage objects and returns the number of email
- messages sent.
- """
- raise NotImplementedError
diff --git a/lib/python2.7/site-packages/django/core/mail/backends/console.py b/lib/python2.7/site-packages/django/core/mail/backends/console.py
deleted file mode 100644
index 1175ed1..0000000
--- a/lib/python2.7/site-packages/django/core/mail/backends/console.py
+++ /dev/null
@@ -1,41 +0,0 @@
-"""
-Email backend that writes messages to console instead of sending them.
-"""
-import sys
-import threading
-
-from django.core.mail.backends.base import BaseEmailBackend
-from django.utils import six
-
-class EmailBackend(BaseEmailBackend):
- def __init__(self, *args, **kwargs):
- self.stream = kwargs.pop('stream', sys.stdout)
- self._lock = threading.RLock()
- super(EmailBackend, self).__init__(*args, **kwargs)
-
- def write_message(self, message):
- msg = message.message()
- msg_data = msg.as_bytes()
- if six.PY3:
- charset = msg.get_charset().get_output_charset() if msg.get_charset() else 'utf-8'
- msg_data = msg_data.decode(charset)
- self.stream.write('%s\n' % msg_data)
- self.stream.write('-' * 79)
- self.stream.write('\n')
-
- def send_messages(self, email_messages):
- """Write all messages to the stream in a thread-safe way."""
- if not email_messages:
- return
- with self._lock:
- try:
- stream_created = self.open()
- for message in email_messages:
- self.write_message(message)
- self.stream.flush() # flush after each message
- if stream_created:
- self.close()
- except:
- if not self.fail_silently:
- raise
- return len(email_messages)
diff --git a/lib/python2.7/site-packages/django/core/mail/backends/dummy.py b/lib/python2.7/site-packages/django/core/mail/backends/dummy.py
deleted file mode 100644
index 273aa0d..0000000
--- a/lib/python2.7/site-packages/django/core/mail/backends/dummy.py
+++ /dev/null
@@ -1,9 +0,0 @@
-"""
-Dummy email backend that does nothing.
-"""
-
-from django.core.mail.backends.base import BaseEmailBackend
-
-class EmailBackend(BaseEmailBackend):
- def send_messages(self, email_messages):
- return len(email_messages)
diff --git a/lib/python2.7/site-packages/django/core/mail/backends/filebased.py b/lib/python2.7/site-packages/django/core/mail/backends/filebased.py
deleted file mode 100644
index d72a547..0000000
--- a/lib/python2.7/site-packages/django/core/mail/backends/filebased.py
+++ /dev/null
@@ -1,65 +0,0 @@
-"""Email backend that writes messages to a file."""
-
-import datetime
-import os
-
-from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured
-from django.core.mail.backends.console import EmailBackend as ConsoleEmailBackend
-from django.utils import six
-
-class EmailBackend(ConsoleEmailBackend):
- def __init__(self, *args, **kwargs):
- self._fname = None
- if 'file_path' in kwargs:
- self.file_path = kwargs.pop('file_path')
- else:
- self.file_path = getattr(settings, 'EMAIL_FILE_PATH',None)
- # Make sure self.file_path is a string.
- if not isinstance(self.file_path, six.string_types):
- raise ImproperlyConfigured('Path for saving emails is invalid: %r' % self.file_path)
- self.file_path = os.path.abspath(self.file_path)
- # Make sure that self.file_path is an directory if it exists.
- if os.path.exists(self.file_path) and not os.path.isdir(self.file_path):
- raise ImproperlyConfigured('Path for saving email messages exists, but is not a directory: %s' % self.file_path)
- # Try to create it, if it not exists.
- elif not os.path.exists(self.file_path):
- try:
- os.makedirs(self.file_path)
- except OSError as err:
- raise ImproperlyConfigured('Could not create directory for saving email messages: %s (%s)' % (self.file_path, err))
- # Make sure that self.file_path is writable.
- if not os.access(self.file_path, os.W_OK):
- raise ImproperlyConfigured('Could not write to directory: %s' % self.file_path)
- # Finally, call super().
- # Since we're using the console-based backend as a base,
- # force the stream to be None, so we don't default to stdout
- kwargs['stream'] = None
- super(EmailBackend, self).__init__(*args, **kwargs)
-
- def write_message(self, message):
- self.stream.write(message.message().as_bytes() + b'\n')
- self.stream.write(b'-' * 79)
- self.stream.write(b'\n')
-
- def _get_filename(self):
- """Return a unique file name."""
- if self._fname is None:
- timestamp = datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
- fname = "%s-%s.log" % (timestamp, abs(id(self)))
- self._fname = os.path.join(self.file_path, fname)
- return self._fname
-
- def open(self):
- if self.stream is None:
- self.stream = open(self._get_filename(), 'ab')
- return True
- return False
-
- def close(self):
- try:
- if self.stream is not None:
- self.stream.close()
- finally:
- self.stream = None
-
diff --git a/lib/python2.7/site-packages/django/core/mail/backends/locmem.py b/lib/python2.7/site-packages/django/core/mail/backends/locmem.py
deleted file mode 100644
index 6826d09..0000000
--- a/lib/python2.7/site-packages/django/core/mail/backends/locmem.py
+++ /dev/null
@@ -1,26 +0,0 @@
-"""
-Backend for test environment.
-"""
-
-from django.core import mail
-from django.core.mail.backends.base import BaseEmailBackend
-
-class EmailBackend(BaseEmailBackend):
- """A email backend for use during test sessions.
-
- The test connection stores email messages in a dummy outbox,
- rather than sending them out on the wire.
-
- The dummy outbox is accessible through the outbox instance attribute.
- """
- def __init__(self, *args, **kwargs):
- super(EmailBackend, self).__init__(*args, **kwargs)
- if not hasattr(mail, 'outbox'):
- mail.outbox = []
-
- def send_messages(self, messages):
- """Redirect messages to the dummy outbox"""
- for message in messages: # .message() triggers header validation
- message.message()
- mail.outbox.extend(messages)
- return len(messages)
diff --git a/lib/python2.7/site-packages/django/core/mail/backends/smtp.py b/lib/python2.7/site-packages/django/core/mail/backends/smtp.py
deleted file mode 100644
index 57ee967..0000000
--- a/lib/python2.7/site-packages/django/core/mail/backends/smtp.py
+++ /dev/null
@@ -1,115 +0,0 @@
-"""SMTP email backend class."""
-import smtplib
-import ssl
-import threading
-
-from django.conf import settings
-from django.core.mail.backends.base import BaseEmailBackend
-from django.core.mail.utils import DNS_NAME
-from django.core.mail.message import sanitize_address
-
-
-class EmailBackend(BaseEmailBackend):
- """
- A wrapper that manages the SMTP network connection.
- """
- def __init__(self, host=None, port=None, username=None, password=None,
- use_tls=None, fail_silently=False, **kwargs):
- super(EmailBackend, self).__init__(fail_silently=fail_silently)
- self.host = host or settings.EMAIL_HOST
- self.port = port or settings.EMAIL_PORT
- if username is None:
- self.username = settings.EMAIL_HOST_USER
- else:
- self.username = username
- if password is None:
- self.password = settings.EMAIL_HOST_PASSWORD
- else:
- self.password = password
- if use_tls is None:
- self.use_tls = settings.EMAIL_USE_TLS
- else:
- self.use_tls = use_tls
- self.connection = None
- self._lock = threading.RLock()
-
- def open(self):
- """
- Ensures we have a connection to the email server. Returns whether or
- not a new connection was required (True or False).
- """
- if self.connection:
- # Nothing to do if the connection is already open.
- return False
- try:
- # If local_hostname is not specified, socket.getfqdn() gets used.
- # For performance, we use the cached FQDN for local_hostname.
- self.connection = smtplib.SMTP(self.host, self.port,
- local_hostname=DNS_NAME.get_fqdn())
- if self.use_tls:
- self.connection.ehlo()
- self.connection.starttls()
- self.connection.ehlo()
- if self.username and self.password:
- self.connection.login(self.username, self.password)
- return True
- except:
- if not self.fail_silently:
- raise
-
- def close(self):
- """Closes the connection to the email server."""
- if self.connection is None:
- return
- try:
- try:
- self.connection.quit()
- except (ssl.SSLError, smtplib.SMTPServerDisconnected):
- # This happens when calling quit() on a TLS connection
- # sometimes, or when the connection was already disconnected
- # by the server.
- self.connection.close()
- except:
- if self.fail_silently:
- return
- raise
- finally:
- self.connection = None
-
- def send_messages(self, email_messages):
- """
- Sends one or more EmailMessage objects and returns the number of email
- messages sent.
- """
- if not email_messages:
- return
- with self._lock:
- new_conn_created = self.open()
- if not self.connection:
- # We failed silently on open().
- # Trying to send would be pointless.
- return
- num_sent = 0
- for message in email_messages:
- sent = self._send(message)
- if sent:
- num_sent += 1
- if new_conn_created:
- self.close()
- return num_sent
-
- def _send(self, email_message):
- """A helper method that does the actual sending."""
- if not email_message.recipients():
- return False
- from_email = sanitize_address(email_message.from_email, email_message.encoding)
- recipients = [sanitize_address(addr, email_message.encoding)
- for addr in email_message.recipients()]
- message = email_message.message()
- try:
- self.connection.sendmail(from_email, recipients, message.as_bytes())
- except smtplib.SMTPException:
- if not self.fail_silently:
- raise
- return False
- return True
diff --git a/lib/python2.7/site-packages/django/core/mail/message.py b/lib/python2.7/site-packages/django/core/mail/message.py
deleted file mode 100644
index 95762ff..0000000
--- a/lib/python2.7/site-packages/django/core/mail/message.py
+++ /dev/null
@@ -1,392 +0,0 @@
-from __future__ import unicode_literals
-
-import mimetypes
-import os
-import random
-import sys
-import time
-from email import generator
-from email import charset as Charset, encoders as Encoders
-from email.mime.text import MIMEText
-from email.mime.multipart import MIMEMultipart
-from email.mime.base import MIMEBase
-from email.header import Header
-from email.utils import formatdate, getaddresses, formataddr, parseaddr
-
-from django.conf import settings
-from django.core.mail.utils import DNS_NAME
-from django.utils.encoding import force_text
-from django.utils import six
-
-
-# Don't BASE64-encode UTF-8 messages so that we avoid unwanted attention from
-# some spam filters.
-utf8_charset = Charset.Charset('utf-8')
-utf8_charset.body_encoding = None # Python defaults to BASE64
-
-
-# Default MIME type to use on attachments (if it is not explicitly given
-# and cannot be guessed).
-DEFAULT_ATTACHMENT_MIME_TYPE = 'application/octet-stream'
-
-
-class BadHeaderError(ValueError):
- pass
-
-
-# Copied from Python standard library, with the following modifications:
-# * Used cached hostname for performance.
-# * Added try/except to support lack of getpid() in Jython (#5496).
-def make_msgid(idstring=None):
- """Returns a string suitable for RFC 2822 compliant Message-ID, e.g:
-
- <20020201195627.33539.96671@nightshade.la.mastaler.com>
-
- Optional idstring if given is a string used to strengthen the
- uniqueness of the message id.
- """
- timeval = time.time()
- utcdate = time.strftime('%Y%m%d%H%M%S', time.gmtime(timeval))
- try:
- pid = os.getpid()
- except AttributeError:
- # No getpid() in Jython, for example.
- pid = 1
- randint = random.randrange(100000)
- if idstring is None:
- idstring = ''
- else:
- idstring = '.' + idstring
- idhost = DNS_NAME
- msgid = '<%s.%s.%s%s@%s>' % (utcdate, pid, randint, idstring, idhost)
- return msgid
-
-
-# Header names that contain structured address data (RFC #5322)
-ADDRESS_HEADERS = set([
- 'from',
- 'sender',
- 'reply-to',
- 'to',
- 'cc',
- 'bcc',
- 'resent-from',
- 'resent-sender',
- 'resent-to',
- 'resent-cc',
- 'resent-bcc',
-])
-
-
-def forbid_multi_line_headers(name, val, encoding):
- """Forbids multi-line headers, to prevent header injection."""
- encoding = encoding or settings.DEFAULT_CHARSET
- val = force_text(val)
- if '\n' in val or '\r' in val:
- raise BadHeaderError("Header values can't contain newlines (got %r for header %r)" % (val, name))
- try:
- val.encode('ascii')
- except UnicodeEncodeError:
- if name.lower() in ADDRESS_HEADERS:
- val = ', '.join(sanitize_address(addr, encoding)
- for addr in getaddresses((val,)))
- else:
- val = Header(val, encoding).encode()
- else:
- if name.lower() == 'subject':
- val = Header(val).encode()
- return str(name), val
-
-
-def sanitize_address(addr, encoding):
- if isinstance(addr, six.string_types):
- addr = parseaddr(force_text(addr))
- nm, addr = addr
- # This try-except clause is needed on Python 3 < 3.2.4
- # http://bugs.python.org/issue14291
- try:
- nm = Header(nm, encoding).encode()
- except UnicodeEncodeError:
- nm = Header(nm, 'utf-8').encode()
- try:
- addr.encode('ascii')
- except UnicodeEncodeError: # IDN
- if '@' in addr:
- localpart, domain = addr.split('@', 1)
- localpart = str(Header(localpart, encoding))
- domain = domain.encode('idna').decode('ascii')
- addr = '@'.join([localpart, domain])
- else:
- addr = Header(addr, encoding).encode()
- return formataddr((nm, addr))
-
-
-class MIMEMixin():
- def as_string(self, unixfrom=False):
- """Return the entire formatted message as a string.
- Optional `unixfrom' when True, means include the Unix From_ envelope
- header.
-
- This overrides the default as_string() implementation to not mangle
- lines that begin with 'From '. See bug #13433 for details.
- """
- fp = six.StringIO()
- g = generator.Generator(fp, mangle_from_=False)
- g.flatten(self, unixfrom=unixfrom)
- return fp.getvalue()
-
- if six.PY2:
- as_bytes = as_string
- else:
- def as_bytes(self, unixfrom=False):
- """Return the entire formatted message as bytes.
- Optional `unixfrom' when True, means include the Unix From_ envelope
- header.
-
- This overrides the default as_bytes() implementation to not mangle
- lines that begin with 'From '. See bug #13433 for details.
- """
- fp = six.BytesIO()
- g = generator.BytesGenerator(fp, mangle_from_=False)
- g.flatten(self, unixfrom=unixfrom)
- return fp.getvalue()
-
-
-class SafeMIMEText(MIMEMixin, MIMEText):
-
- def __init__(self, text, subtype, charset):
- self.encoding = charset
- if charset == 'utf-8':
- # Unfortunately, Python doesn't support setting a Charset instance
- # as MIMEText init parameter (http://bugs.python.org/issue16324).
- # We do it manually and trigger re-encoding of the payload.
- MIMEText.__init__(self, text, subtype, None)
- del self['Content-Transfer-Encoding']
- # Workaround for versions without http://bugs.python.org/issue19063
- if (3, 2) < sys.version_info < (3, 3, 4):
- payload = text.encode(utf8_charset.output_charset)
- self._payload = payload.decode('ascii', 'surrogateescape')
- self.set_charset(utf8_charset)
- else:
- self.set_payload(text, utf8_charset)
- self.replace_header('Content-Type', 'text/%s; charset="%s"' % (subtype, charset))
- else:
- MIMEText.__init__(self, text, subtype, charset)
-
- def __setitem__(self, name, val):
- name, val = forbid_multi_line_headers(name, val, self.encoding)
- MIMEText.__setitem__(self, name, val)
-
-
-class SafeMIMEMultipart(MIMEMixin, MIMEMultipart):
-
- def __init__(self, _subtype='mixed', boundary=None, _subparts=None, encoding=None, **_params):
- self.encoding = encoding
- MIMEMultipart.__init__(self, _subtype, boundary, _subparts, **_params)
-
- def __setitem__(self, name, val):
- name, val = forbid_multi_line_headers(name, val, self.encoding)
- MIMEMultipart.__setitem__(self, name, val)
-
-
-class EmailMessage(object):
- """
- A container for email information.
- """
- content_subtype = 'plain'
- mixed_subtype = 'mixed'
- encoding = None # None => use settings default
-
- def __init__(self, subject='', body='', from_email=None, to=None, bcc=None,
- connection=None, attachments=None, headers=None, cc=None):
- """
- Initialize a single email message (which can be sent to multiple
- recipients).
-
- All strings used to create the message can be unicode strings
- (or UTF-8 bytestrings). The SafeMIMEText class will handle any
- necessary encoding conversions.
- """
- if to:
- assert not isinstance(to, six.string_types), '"to" argument must be a list or tuple'
- self.to = list(to)
- else:
- self.to = []
- if cc:
- assert not isinstance(cc, six.string_types), '"cc" argument must be a list or tuple'
- self.cc = list(cc)
- else:
- self.cc = []
- if bcc:
- assert not isinstance(bcc, six.string_types), '"bcc" argument must be a list or tuple'
- self.bcc = list(bcc)
- else:
- self.bcc = []
- self.from_email = from_email or settings.DEFAULT_FROM_EMAIL
- self.subject = subject
- self.body = body
- self.attachments = attachments or []
- self.extra_headers = headers or {}
- self.connection = connection
-
- def get_connection(self, fail_silently=False):
- from django.core.mail import get_connection
- if not self.connection:
- self.connection = get_connection(fail_silently=fail_silently)
- return self.connection
-
- def message(self):
- encoding = self.encoding or settings.DEFAULT_CHARSET
- msg = SafeMIMEText(self.body, self.content_subtype, encoding)
- msg = self._create_message(msg)
- msg['Subject'] = self.subject
- msg['From'] = self.extra_headers.get('From', self.from_email)
- msg['To'] = self.extra_headers.get('To', ', '.join(self.to))
- if self.cc:
- msg['Cc'] = ', '.join(self.cc)
-
- # Email header names are case-insensitive (RFC 2045), so we have to
- # accommodate that when doing comparisons.
- header_names = [key.lower() for key in self.extra_headers]
- if 'date' not in header_names:
- msg['Date'] = formatdate()
- if 'message-id' not in header_names:
- msg['Message-ID'] = make_msgid()
- for name, value in self.extra_headers.items():
- if name.lower() in ('from', 'to'): # From and To are already handled
- continue
- msg[name] = value
- return msg
-
- def recipients(self):
- """
- Returns a list of all recipients of the email (includes direct
- addressees as well as Cc and Bcc entries).
- """
- return self.to + self.cc + self.bcc
-
- def send(self, fail_silently=False):
- """Sends the email message."""
- if not self.recipients():
- # Don't bother creating the network connection if there's nobody to
- # send to.
- return 0
- return self.get_connection(fail_silently).send_messages([self])
-
- def attach(self, filename=None, content=None, mimetype=None):
- """
- Attaches a file with the given filename and content. The filename can
- be omitted and the mimetype is guessed, if not provided.
-
- If the first parameter is a MIMEBase subclass it is inserted directly
- into the resulting message attachments.
- """
- if isinstance(filename, MIMEBase):
- assert content == mimetype == None
- self.attachments.append(filename)
- else:
- assert content is not None
- self.attachments.append((filename, content, mimetype))
-
- def attach_file(self, path, mimetype=None):
- """Attaches a file from the filesystem."""
- filename = os.path.basename(path)
- with open(path, 'rb') as f:
- content = f.read()
- self.attach(filename, content, mimetype)
-
- def _create_message(self, msg):
- return self._create_attachments(msg)
-
- def _create_attachments(self, msg):
- if self.attachments:
- encoding = self.encoding or settings.DEFAULT_CHARSET
- body_msg = msg
- msg = SafeMIMEMultipart(_subtype=self.mixed_subtype, encoding=encoding)
- if self.body:
- msg.attach(body_msg)
- for attachment in self.attachments:
- if isinstance(attachment, MIMEBase):
- msg.attach(attachment)
- else:
- msg.attach(self._create_attachment(*attachment))
- return msg
-
- def _create_mime_attachment(self, content, mimetype):
- """
- Converts the content, mimetype pair into a MIME attachment object.
- """
- basetype, subtype = mimetype.split('/', 1)
- if basetype == 'text':
- encoding = self.encoding or settings.DEFAULT_CHARSET
- attachment = SafeMIMEText(content, subtype, encoding)
- else:
- # Encode non-text attachments with base64.
- attachment = MIMEBase(basetype, subtype)
- attachment.set_payload(content)
- Encoders.encode_base64(attachment)
- return attachment
-
- def _create_attachment(self, filename, content, mimetype=None):
- """
- Converts the filename, content, mimetype triple into a MIME attachment
- object.
- """
- if mimetype is None:
- mimetype, _ = mimetypes.guess_type(filename)
- if mimetype is None:
- mimetype = DEFAULT_ATTACHMENT_MIME_TYPE
- attachment = self._create_mime_attachment(content, mimetype)
- if filename:
- try:
- filename.encode('ascii')
- except UnicodeEncodeError:
- if six.PY2:
- filename = filename.encode('utf-8')
- filename = ('utf-8', '', filename)
- attachment.add_header('Content-Disposition', 'attachment',
- filename=filename)
- return attachment
-
-
-class EmailMultiAlternatives(EmailMessage):
- """
- A version of EmailMessage that makes it easy to send multipart/alternative
- messages. For example, including text and HTML versions of the text is
- made easier.
- """
- alternative_subtype = 'alternative'
-
- def __init__(self, subject='', body='', from_email=None, to=None, bcc=None,
- connection=None, attachments=None, headers=None, alternatives=None,
- cc=None):
- """
- Initialize a single email message (which can be sent to multiple
- recipients).
-
- All strings used to create the message can be unicode strings (or UTF-8
- bytestrings). The SafeMIMEText class will handle any necessary encoding
- conversions.
- """
- super(EmailMultiAlternatives, self).__init__(subject, body, from_email, to, bcc, connection, attachments, headers, cc)
- self.alternatives = alternatives or []
-
- def attach_alternative(self, content, mimetype):
- """Attach an alternative content representation."""
- assert content is not None
- assert mimetype is not None
- self.alternatives.append((content, mimetype))
-
- def _create_message(self, msg):
- return self._create_attachments(self._create_alternatives(msg))
-
- def _create_alternatives(self, msg):
- encoding = self.encoding or settings.DEFAULT_CHARSET
- if self.alternatives:
- body_msg = msg
- msg = SafeMIMEMultipart(_subtype=self.alternative_subtype, encoding=encoding)
- if self.body:
- msg.attach(body_msg)
- for alternative in self.alternatives:
- msg.attach(self._create_mime_attachment(*alternative))
- return msg
diff --git a/lib/python2.7/site-packages/django/core/mail/utils.py b/lib/python2.7/site-packages/django/core/mail/utils.py
deleted file mode 100644
index 322a3a1..0000000
--- a/lib/python2.7/site-packages/django/core/mail/utils.py
+++ /dev/null
@@ -1,19 +0,0 @@
-"""
-Email message and email sending related helper functions.
-"""
-
-import socket
-
-
-# Cache the hostname, but do it lazily: socket.getfqdn() can take a couple of
-# seconds, which slows down the restart of the server.
-class CachedDnsName(object):
- def __str__(self):
- return self.get_fqdn()
-
- def get_fqdn(self):
- if not hasattr(self, '_fqdn'):
- self._fqdn = socket.getfqdn()
- return self._fqdn
-
-DNS_NAME = CachedDnsName()
diff --git a/lib/python2.7/site-packages/django/core/management/__init__.py b/lib/python2.7/site-packages/django/core/management/__init__.py
deleted file mode 100644
index 5b0ad6c..0000000
--- a/lib/python2.7/site-packages/django/core/management/__init__.py
+++ /dev/null
@@ -1,399 +0,0 @@
-import collections
-import os
-import sys
-from optparse import OptionParser, NO_DEFAULT
-import imp
-
-from django.core.exceptions import ImproperlyConfigured
-from django.core.management.base import BaseCommand, CommandError, handle_default_options
-from django.core.management.color import color_style
-from django.utils.importlib import import_module
-from django.utils import six
-
-# For backwards compatibility: get_version() used to be in this module.
-from django import get_version
-
-# A cache of loaded commands, so that call_command
-# doesn't have to reload every time it's called.
-_commands = None
-
-def find_commands(management_dir):
- """
- Given a path to a management directory, returns a list of all the command
- names that are available.
-
- Returns an empty list if no commands are defined.
- """
- command_dir = os.path.join(management_dir, 'commands')
- try:
- return [f[:-3] for f in os.listdir(command_dir)
- if not f.startswith('_') and f.endswith('.py')]
- except OSError:
- return []
-
-def find_management_module(app_name):
- """
- Determines the path to the management module for the given app_name,
- without actually importing the application or the management module.
-
- Raises ImportError if the management module cannot be found for any reason.
- """
- parts = app_name.split('.')
- parts.append('management')
- parts.reverse()
- part = parts.pop()
- path = None
-
- # When using manage.py, the project module is added to the path,
- # loaded, then removed from the path. This means that
- # testproject.testapp.models can be loaded in future, even if
- # testproject isn't in the path. When looking for the management
- # module, we need look for the case where the project name is part
- # of the app_name but the project directory itself isn't on the path.
- try:
- f, path, descr = imp.find_module(part, path)
- except ImportError as e:
- if os.path.basename(os.getcwd()) != part:
- raise e
- else:
- if f:
- f.close()
-
- while parts:
- part = parts.pop()
- f, path, descr = imp.find_module(part, [path] if path else None)
- if f:
- f.close()
- return path
-
-def load_command_class(app_name, name):
- """
- Given a command name and an application name, returns the Command
- class instance. All errors raised by the import process
- (ImportError, AttributeError) are allowed to propagate.
- """
- module = import_module('%s.management.commands.%s' % (app_name, name))
- return module.Command()
-
-def get_commands():
- """
- Returns a dictionary mapping command names to their callback applications.
-
- This works by looking for a management.commands package in django.core, and
- in each installed application -- if a commands package exists, all commands
- in that package are registered.
-
- Core commands are always included. If a settings module has been
- specified, user-defined commands will also be included.
-
- The dictionary is in the format {command_name: app_name}. Key-value
- pairs from this dictionary can then be used in calls to
- load_command_class(app_name, command_name)
-
- If a specific version of a command must be loaded (e.g., with the
- startapp command), the instantiated module can be placed in the
- dictionary in place of the application name.
-
- The dictionary is cached on the first call and reused on subsequent
- calls.
- """
- global _commands
- if _commands is None:
- _commands = dict([(name, 'django.core') for name in find_commands(__path__[0])])
-
- # Find the installed apps
- from django.conf import settings
- try:
- apps = settings.INSTALLED_APPS
- except ImproperlyConfigured:
- # Still useful for commands that do not require functional settings,
- # like startproject or help
- apps = []
-
- # Find and load the management module for each installed app.
- for app_name in apps:
- try:
- path = find_management_module(app_name)
- _commands.update(dict([(name, app_name)
- for name in find_commands(path)]))
- except ImportError:
- pass # No management module - ignore this app
-
- return _commands
-
-def call_command(name, *args, **options):
- """
- Calls the given command, with the given options and args/kwargs.
-
- This is the primary API you should use for calling specific commands.
-
- Some examples:
- call_command('syncdb')
- call_command('shell', plain=True)
- call_command('sqlall', 'myapp')
- """
- # Load the command object.
- try:
- app_name = get_commands()[name]
- except KeyError:
- raise CommandError("Unknown command: %r" % name)
-
- if isinstance(app_name, BaseCommand):
- # If the command is already loaded, use it directly.
- klass = app_name
- else:
- klass = load_command_class(app_name, name)
-
- # Grab out a list of defaults from the options. optparse does this for us
- # when the script runs from the command line, but since call_command can
- # be called programatically, we need to simulate the loading and handling
- # of defaults (see #10080 for details).
- defaults = {}
- for opt in klass.option_list:
- if opt.default is NO_DEFAULT:
- defaults[opt.dest] = None
- else:
- defaults[opt.dest] = opt.default
- defaults.update(options)
-
- return klass.execute(*args, **defaults)
-
-class LaxOptionParser(OptionParser):
- """
- An option parser that doesn't raise any errors on unknown options.
-
- This is needed because the --settings and --pythonpath options affect
- the commands (and thus the options) that are available to the user.
- """
- def error(self, msg):
- pass
-
- def print_help(self):
- """Output nothing.
-
- The lax options are included in the normal option parser, so under
- normal usage, we don't need to print the lax options.
- """
- pass
-
- def print_lax_help(self):
- """Output the basic options available to every command.
-
- This just redirects to the default print_help() behavior.
- """
- OptionParser.print_help(self)
-
- def _process_args(self, largs, rargs, values):
- """
- Overrides OptionParser._process_args to exclusively handle default
- options and ignore args and other options.
-
- This overrides the behavior of the super class, which stop parsing
- at the first unrecognized option.
- """
- while rargs:
- arg = rargs[0]
- try:
- if arg[0:2] == "--" and len(arg) > 2:
- # process a single long option (possibly with value(s))
- # the superclass code pops the arg off rargs
- self._process_long_opt(rargs, values)
- elif arg[:1] == "-" and len(arg) > 1:
- # process a cluster of short options (possibly with
- # value(s) for the last one only)
- # the superclass code pops the arg off rargs
- self._process_short_opts(rargs, values)
- else:
- # it's either a non-default option or an arg
- # either way, add it to the args list so we can keep
- # dealing with options
- del rargs[0]
- raise Exception
- except:
- largs.append(arg)
-
-class ManagementUtility(object):
- """
- Encapsulates the logic of the django-admin.py and manage.py utilities.
-
- A ManagementUtility has a number of commands, which can be manipulated
- by editing the self.commands dictionary.
- """
- def __init__(self, argv=None):
- self.argv = argv or sys.argv[:]
- self.prog_name = os.path.basename(self.argv[0])
-
- def main_help_text(self, commands_only=False):
- """
- Returns the script's main help text, as a string.
- """
- if commands_only:
- usage = sorted(get_commands().keys())
- else:
- usage = [
- "",
- "Type '%s help <subcommand>' for help on a specific subcommand." % self.prog_name,
- "",
- "Available subcommands:",
- ]
- commands_dict = collections.defaultdict(lambda: [])
- for name, app in six.iteritems(get_commands()):
- if app == 'django.core':
- app = 'django'
- else:
- app = app.rpartition('.')[-1]
- commands_dict[app].append(name)
- style = color_style()
- for app in sorted(commands_dict.keys()):
- usage.append("")
- usage.append(style.NOTICE("[%s]" % app))
- for name in sorted(commands_dict[app]):
- usage.append(" %s" % name)
- return '\n'.join(usage)
-
- def fetch_command(self, subcommand):
- """
- Tries to fetch the given subcommand, printing a message with the
- appropriate command called from the command line (usually
- "django-admin.py" or "manage.py") if it can't be found.
- """
- # Get commands outside of try block to prevent swallowing exceptions
- commands = get_commands()
- try:
- app_name = commands[subcommand]
- except KeyError:
- sys.stderr.write("Unknown command: %r\nType '%s help' for usage.\n" % \
- (subcommand, self.prog_name))
- sys.exit(1)
- if isinstance(app_name, BaseCommand):
- # If the command is already loaded, use it directly.
- klass = app_name
- else:
- klass = load_command_class(app_name, subcommand)
- return klass
-
- def autocomplete(self):
- """
- Output completion suggestions for BASH.
-
- The output of this function is passed to BASH's `COMREPLY` variable and
- treated as completion suggestions. `COMREPLY` expects a space
- separated string as the result.
-
- The `COMP_WORDS` and `COMP_CWORD` BASH environment variables are used
- to get information about the cli input. Please refer to the BASH
- man-page for more information about this variables.
-
- Subcommand options are saved as pairs. A pair consists of
- the long option string (e.g. '--exclude') and a boolean
- value indicating if the option requires arguments. When printing to
- stdout, a equal sign is appended to options which require arguments.
-
- Note: If debugging this function, it is recommended to write the debug
- output in a separate file. Otherwise the debug output will be treated
- and formatted as potential completion suggestions.
- """
- # Don't complete if user hasn't sourced bash_completion file.
- if 'DJANGO_AUTO_COMPLETE' not in os.environ:
- return
-
- cwords = os.environ['COMP_WORDS'].split()[1:]
- cword = int(os.environ['COMP_CWORD'])
-
- try:
- curr = cwords[cword-1]
- except IndexError:
- curr = ''
-
- subcommands = list(get_commands()) + ['help']
- options = [('--help', None)]
-
- # subcommand
- if cword == 1:
- print(' '.join(sorted(filter(lambda x: x.startswith(curr), subcommands))))
- # subcommand options
- # special case: the 'help' subcommand has no options
- elif cwords[0] in subcommands and cwords[0] != 'help':
- subcommand_cls = self.fetch_command(cwords[0])
- # special case: 'runfcgi' stores additional options as
- # 'key=value' pairs
- if cwords[0] == 'runfcgi':
- from django.core.servers.fastcgi import FASTCGI_OPTIONS
- options += [(k, 1) for k in FASTCGI_OPTIONS]
- # special case: add the names of installed apps to options
- elif cwords[0] in ('dumpdata', 'sql', 'sqlall', 'sqlclear',
- 'sqlcustom', 'sqlindexes', 'sqlsequencereset', 'test'):
- try:
- from django.conf import settings
- # Get the last part of the dotted path as the app name.
- options += [(a.split('.')[-1], 0) for a in settings.INSTALLED_APPS]
- except ImportError:
- # Fail silently if DJANGO_SETTINGS_MODULE isn't set. The
- # user will find out once they execute the command.
- pass
- options += [(s_opt.get_opt_string(), s_opt.nargs) for s_opt in
- subcommand_cls.option_list]
- # filter out previously specified options from available options
- prev_opts = [x.split('=')[0] for x in cwords[1:cword-1]]
- options = [opt for opt in options if opt[0] not in prev_opts]
-
- # filter options by current input
- options = sorted([(k, v) for k, v in options if k.startswith(curr)])
- for option in options:
- opt_label = option[0]
- # append '=' to options which require args
- if option[1]:
- opt_label += '='
- print(opt_label)
- sys.exit(1)
-
- def execute(self):
- """
- Given the command-line arguments, this figures out which subcommand is
- being run, creates a parser appropriate to that command, and runs it.
- """
- # Preprocess options to extract --settings and --pythonpath.
- # These options could affect the commands that are available, so they
- # must be processed early.
- parser = LaxOptionParser(usage="%prog subcommand [options] [args]",
- version=get_version(),
- option_list=BaseCommand.option_list)
- self.autocomplete()
- try:
- options, args = parser.parse_args(self.argv)
- handle_default_options(options)
- except:
- pass # Ignore any option errors at this point.
-
- try:
- subcommand = self.argv[1]
- except IndexError:
- subcommand = 'help' # Display help if no arguments were given.
-
- if subcommand == 'help':
- if len(args) <= 2:
- parser.print_lax_help()
- sys.stdout.write(self.main_help_text() + '\n')
- elif args[2] == '--commands':
- sys.stdout.write(self.main_help_text(commands_only=True) + '\n')
- else:
- self.fetch_command(args[2]).print_help(self.prog_name, args[2])
- elif subcommand == 'version':
- sys.stdout.write(parser.get_version() + '\n')
- # Special-cases: We want 'django-admin.py --version' and
- # 'django-admin.py --help' to work, for backwards compatibility.
- elif self.argv[1:] == ['--version']:
- # LaxOptionParser already takes care of printing the version.
- pass
- elif self.argv[1:] in (['--help'], ['-h']):
- parser.print_lax_help()
- sys.stdout.write(self.main_help_text() + '\n')
- else:
- self.fetch_command(subcommand).run_from_argv(self.argv)
-
-def execute_from_command_line(argv=None):
- """
- A simple method that runs a ManagementUtility.
- """
- utility = ManagementUtility(argv)
- utility.execute()
diff --git a/lib/python2.7/site-packages/django/core/management/base.py b/lib/python2.7/site-packages/django/core/management/base.py
deleted file mode 100644
index 74f3913..0000000
--- a/lib/python2.7/site-packages/django/core/management/base.py
+++ /dev/null
@@ -1,422 +0,0 @@
-"""
-Base classes for writing management commands (named commands which can
-be executed through ``django-admin.py`` or ``manage.py``).
-
-"""
-from __future__ import unicode_literals
-
-import os
-import sys
-
-from optparse import make_option, OptionParser
-
-import django
-from django.core.exceptions import ImproperlyConfigured
-from django.core.management.color import color_style
-from django.utils.encoding import force_str
-from django.utils.six import StringIO
-
-
-class CommandError(Exception):
- """
- Exception class indicating a problem while executing a management
- command.
-
- If this exception is raised during the execution of a management
- command, it will be caught and turned into a nicely-printed error
- message to the appropriate output stream (i.e., stderr); as a
- result, raising this exception (with a sensible description of the
- error) is the preferred way to indicate that something has gone
- wrong in the execution of a command.
-
- """
- pass
-
-
-def handle_default_options(options):
- """
- Include any default options that all commands should accept here
- so that ManagementUtility can handle them before searching for
- user commands.
-
- """
- if options.settings:
- os.environ['DJANGO_SETTINGS_MODULE'] = options.settings
- if options.pythonpath:
- sys.path.insert(0, options.pythonpath)
-
-
-class OutputWrapper(object):
- """
- Wrapper around stdout/stderr
- """
- def __init__(self, out, style_func=None, ending='\n'):
- self._out = out
- self.style_func = None
- if hasattr(out, 'isatty') and out.isatty():
- self.style_func = style_func
- self.ending = ending
-
- def __getattr__(self, name):
- return getattr(self._out, name)
-
- def write(self, msg, style_func=None, ending=None):
- ending = self.ending if ending is None else ending
- if ending and not msg.endswith(ending):
- msg += ending
- style_func = [f for f in (style_func, self.style_func, lambda x:x)
- if f is not None][0]
- self._out.write(force_str(style_func(msg)))
-
-
-class BaseCommand(object):
- """
- The base class from which all management commands ultimately
- derive.
-
- Use this class if you want access to all of the mechanisms which
- parse the command-line arguments and work out what code to call in
- response; if you don't need to change any of that behavior,
- consider using one of the subclasses defined in this file.
-
- If you are interested in overriding/customizing various aspects of
- the command-parsing and -execution behavior, the normal flow works
- as follows:
-
- 1. ``django-admin.py`` or ``manage.py`` loads the command class
- and calls its ``run_from_argv()`` method.
-
- 2. The ``run_from_argv()`` method calls ``create_parser()`` to get
- an ``OptionParser`` for the arguments, parses them, performs
- any environment changes requested by options like
- ``pythonpath``, and then calls the ``execute()`` method,
- passing the parsed arguments.
-
- 3. The ``execute()`` method attempts to carry out the command by
- calling the ``handle()`` method with the parsed arguments; any
- output produced by ``handle()`` will be printed to standard
- output and, if the command is intended to produce a block of
- SQL statements, will be wrapped in ``BEGIN`` and ``COMMIT``.
-
- 4. If ``handle()`` or ``execute()`` raised any exception (e.g.
- ``CommandError``), ``run_from_argv()`` will instead print an error
- message to ``stderr``.
-
- Thus, the ``handle()`` method is typically the starting point for
- subclasses; many built-in commands and command types either place
- all of their logic in ``handle()``, or perform some additional
- parsing work in ``handle()`` and then delegate from it to more
- specialized methods as needed.
-
- Several attributes affect behavior at various steps along the way:
-
- ``args``
- A string listing the arguments accepted by the command,
- suitable for use in help messages; e.g., a command which takes
- a list of application names might set this to '<appname
- appname ...>'.
-
- ``can_import_settings``
- A boolean indicating whether the command needs to be able to
- import Django settings; if ``True``, ``execute()`` will verify
- that this is possible before proceeding. Default value is
- ``True``.
-
- ``help``
- A short description of the command, which will be printed in
- help messages.
-
- ``option_list``
- This is the list of ``optparse`` options which will be fed
- into the command's ``OptionParser`` for parsing arguments.
-
- ``output_transaction``
- A boolean indicating whether the command outputs SQL
- statements; if ``True``, the output will automatically be
- wrapped with ``BEGIN;`` and ``COMMIT;``. Default value is
- ``False``.
-
- ``requires_model_validation``
- A boolean; if ``True``, validation of installed models will be
- performed prior to executing the command. Default value is
- ``True``. To validate an individual application's models
- rather than all applications' models, call
- ``self.validate(app)`` from ``handle()``, where ``app`` is the
- application's Python module.
-
- ``leave_locale_alone``
- A boolean indicating whether the locale set in settings should be
- preserved during the execution of the command instead of being
- forcibly set to 'en-us'.
-
- Default value is ``False``.
-
- Make sure you know what you are doing if you decide to change the value
- of this option in your custom command if it creates database content
- that is locale-sensitive and such content shouldn't contain any
- translations (like it happens e.g. with django.contrim.auth
- permissions) as making the locale differ from the de facto default
- 'en-us' might cause unintended effects.
-
- This option can't be False when the can_import_settings option is set
- to False too because attempting to set the locale needs access to
- settings. This condition will generate a CommandError.
- """
- # Metadata about this command.
- option_list = (
- make_option('-v', '--verbosity', action='store', dest='verbosity', default='1',
- type='choice', choices=['0', '1', '2', '3'],
- help='Verbosity level; 0=minimal output, 1=normal output, 2=verbose output, 3=very verbose output'),
- make_option('--settings',
- help='The Python path to a settings module, e.g. "myproject.settings.main". If this isn\'t provided, the DJANGO_SETTINGS_MODULE environment variable will be used.'),
- make_option('--pythonpath',
- help='A directory to add to the Python path, e.g. "/home/djangoprojects/myproject".'),
- make_option('--traceback', action='store_true',
- help='Raise on exception'),
- )
- help = ''
- args = ''
-
- # Configuration shortcuts that alter various logic.
- can_import_settings = True
- requires_model_validation = True
- output_transaction = False # Whether to wrap the output in a "BEGIN; COMMIT;"
- leave_locale_alone = False
-
- def __init__(self):
- self.style = color_style()
-
- def get_version(self):
- """
- Return the Django version, which should be correct for all
- built-in Django commands. User-supplied commands should
- override this method.
-
- """
- return django.get_version()
-
- def usage(self, subcommand):
- """
- Return a brief description of how to use this command, by
- default from the attribute ``self.help``.
-
- """
- usage = '%%prog %s [options] %s' % (subcommand, self.args)
- if self.help:
- return '%s\n\n%s' % (usage, self.help)
- else:
- return usage
-
- def create_parser(self, prog_name, subcommand):
- """
- Create and return the ``OptionParser`` which will be used to
- parse the arguments to this command.
-
- """
- return OptionParser(prog=prog_name,
- usage=self.usage(subcommand),
- version=self.get_version(),
- option_list=self.option_list)
-
- def print_help(self, prog_name, subcommand):
- """
- Print the help message for this command, derived from
- ``self.usage()``.
-
- """
- parser = self.create_parser(prog_name, subcommand)
- parser.print_help()
-
- def run_from_argv(self, argv):
- """
- Set up any environment changes requested (e.g., Python path
- and Django settings), then run this command. If the
- command raises a ``CommandError``, intercept it and print it sensibly
- to stderr. If the ``--traceback`` option is present or the raised
- ``Exception`` is not ``CommandError``, raise it.
- """
- parser = self.create_parser(argv[0], argv[1])
- options, args = parser.parse_args(argv[2:])
- handle_default_options(options)
- try:
- self.execute(*args, **options.__dict__)
- except Exception as e:
- if options.traceback or not isinstance(e, CommandError):
- raise
-
- # self.stderr is not guaranteed to be set here
- stderr = getattr(self, 'stderr', OutputWrapper(sys.stderr, self.style.ERROR))
- stderr.write('%s: %s' % (e.__class__.__name__, e))
- sys.exit(1)
-
- def execute(self, *args, **options):
- """
- Try to execute this command, performing model validation if
- needed (as controlled by the attribute
- ``self.requires_model_validation``, except if force-skipped).
- """
- self.stdout = OutputWrapper(options.get('stdout', sys.stdout))
- self.stderr = OutputWrapper(options.get('stderr', sys.stderr), self.style.ERROR)
-
- if self.can_import_settings:
- from django.conf import settings
-
- saved_locale = None
- if not self.leave_locale_alone:
- # Only mess with locales if we can assume we have a working
- # settings file, because django.utils.translation requires settings
- # (The final saying about whether the i18n machinery is active will be
- # found in the value of the USE_I18N setting)
- if not self.can_import_settings:
- raise CommandError("Incompatible values of 'leave_locale_alone' "
- "(%s) and 'can_import_settings' (%s) command "
- "options." % (self.leave_locale_alone,
- self.can_import_settings))
- # Switch to US English, because django-admin.py creates database
- # content like permissions, and those shouldn't contain any
- # translations.
- from django.utils import translation
- saved_locale = translation.get_language()
- translation.activate('en-us')
-
- try:
- if self.requires_model_validation and not options.get('skip_validation'):
- self.validate()
- output = self.handle(*args, **options)
- if output:
- if self.output_transaction:
- # This needs to be imported here, because it relies on
- # settings.
- from django.db import connections, DEFAULT_DB_ALIAS
- connection = connections[options.get('database', DEFAULT_DB_ALIAS)]
- if connection.ops.start_transaction_sql():
- self.stdout.write(self.style.SQL_KEYWORD(connection.ops.start_transaction_sql()))
- self.stdout.write(output)
- if self.output_transaction:
- self.stdout.write('\n' + self.style.SQL_KEYWORD("COMMIT;"))
- finally:
- if saved_locale is not None:
- translation.activate(saved_locale)
-
- def validate(self, app=None, display_num_errors=False):
- """
- Validates the given app, raising CommandError for any errors.
-
- If app is None, then this will validate all installed apps.
-
- """
- from django.core.management.validation import get_validation_errors
- s = StringIO()
- num_errors = get_validation_errors(s, app)
- if num_errors:
- s.seek(0)
- error_text = s.read()
- raise CommandError("One or more models did not validate:\n%s" % error_text)
- if display_num_errors:
- self.stdout.write("%s error%s found" % (num_errors, '' if num_errors == 1 else 's'))
-
- def handle(self, *args, **options):
- """
- The actual logic of the command. Subclasses must implement
- this method.
-
- """
- raise NotImplementedError()
-
-
-class AppCommand(BaseCommand):
- """
- A management command which takes one or more installed application
- names as arguments, and does something with each of them.
-
- Rather than implementing ``handle()``, subclasses must implement
- ``handle_app()``, which will be called once for each application.
-
- """
- args = '<appname appname ...>'
-
- def handle(self, *app_labels, **options):
- from django.db import models
- if not app_labels:
- raise CommandError('Enter at least one appname.')
- try:
- app_list = [models.get_app(app_label) for app_label in app_labels]
- except (ImproperlyConfigured, ImportError) as e:
- raise CommandError("%s. Are you sure your INSTALLED_APPS setting is correct?" % e)
- output = []
- for app in app_list:
- app_output = self.handle_app(app, **options)
- if app_output:
- output.append(app_output)
- return '\n'.join(output)
-
- def handle_app(self, app, **options):
- """
- Perform the command's actions for ``app``, which will be the
- Python module corresponding to an application name given on
- the command line.
-
- """
- raise NotImplementedError()
-
-
-class LabelCommand(BaseCommand):
- """
- A management command which takes one or more arbitrary arguments
- (labels) on the command line, and does something with each of
- them.
-
- Rather than implementing ``handle()``, subclasses must implement
- ``handle_label()``, which will be called once for each label.
-
- If the arguments should be names of installed applications, use
- ``AppCommand`` instead.
-
- """
- args = '<label label ...>'
- label = 'label'
-
- def handle(self, *labels, **options):
- if not labels:
- raise CommandError('Enter at least one %s.' % self.label)
-
- output = []
- for label in labels:
- label_output = self.handle_label(label, **options)
- if label_output:
- output.append(label_output)
- return '\n'.join(output)
-
- def handle_label(self, label, **options):
- """
- Perform the command's actions for ``label``, which will be the
- string as given on the command line.
-
- """
- raise NotImplementedError()
-
-
-class NoArgsCommand(BaseCommand):
- """
- A command which takes no arguments on the command line.
-
- Rather than implementing ``handle()``, subclasses must implement
- ``handle_noargs()``; ``handle()`` itself is overridden to ensure
- no arguments are passed to the command.
-
- Attempting to pass arguments will raise ``CommandError``.
-
- """
- args = ''
-
- def handle(self, *args, **options):
- if args:
- raise CommandError("Command doesn't accept any arguments")
- return self.handle_noargs(**options)
-
- def handle_noargs(self, **options):
- """
- Perform this command's actions.
-
- """
- raise NotImplementedError()
diff --git a/lib/python2.7/site-packages/django/core/management/color.py b/lib/python2.7/site-packages/django/core/management/color.py
deleted file mode 100644
index 8c7a87f..0000000
--- a/lib/python2.7/site-packages/django/core/management/color.py
+++ /dev/null
@@ -1,50 +0,0 @@
-"""
-Sets up the terminal color scheme.
-"""
-
-import os
-import sys
-
-from django.utils import termcolors
-
-def supports_color():
- """
- Returns True if the running system's terminal supports color, and False
- otherwise.
- """
- unsupported_platform = (sys.platform in ('win32', 'Pocket PC'))
- # isatty is not always implemented, #6223.
- is_a_tty = hasattr(sys.stdout, 'isatty') and sys.stdout.isatty()
- if unsupported_platform or not is_a_tty:
- return False
- return True
-
-def color_style():
- """Returns a Style object with the Django color scheme."""
- if not supports_color():
- style = no_style()
- else:
- DJANGO_COLORS = os.environ.get('DJANGO_COLORS', '')
- color_settings = termcolors.parse_color_setting(DJANGO_COLORS)
- if color_settings:
- class dummy: pass
- style = dummy()
- # The nocolor palette has all available roles.
- # Use that pallete as the basis for populating
- # the palette as defined in the environment.
- for role in termcolors.PALETTES[termcolors.NOCOLOR_PALETTE]:
- format = color_settings.get(role,{})
- setattr(style, role, termcolors.make_style(**format))
- # For backwards compatibility,
- # set style for ERROR_OUTPUT == ERROR
- style.ERROR_OUTPUT = style.ERROR
- else:
- style = no_style()
- return style
-
-def no_style():
- """Returns a Style object that has no colors."""
- class dummy:
- def __getattr__(self, attr):
- return lambda x: x
- return dummy()
diff --git a/lib/python2.7/site-packages/django/core/management/commands/__init__.py b/lib/python2.7/site-packages/django/core/management/commands/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/core/management/commands/check.py b/lib/python2.7/site-packages/django/core/management/commands/check.py
deleted file mode 100644
index 05f48c8..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/check.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from __future__ import unicode_literals
-import warnings
-
-from django.core.checks.compatibility.base import check_compatibility
-from django.core.management.base import NoArgsCommand
-
-
-class Command(NoArgsCommand):
- help = "Checks your configuration's compatibility with this version " + \
- "of Django."
-
- def handle_noargs(self, **options):
- for message in check_compatibility():
- warnings.warn(message)
diff --git a/lib/python2.7/site-packages/django/core/management/commands/cleanup.py b/lib/python2.7/site-packages/django/core/management/commands/cleanup.py
deleted file mode 100644
index e158ebb..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/cleanup.py
+++ /dev/null
@@ -1,11 +0,0 @@
-import warnings
-
-from django.contrib.sessions.management.commands import clearsessions
-
-
-class Command(clearsessions.Command):
- def handle_noargs(self, **options):
- warnings.warn(
- "The `cleanup` command has been deprecated in favor of `clearsessions`.",
- DeprecationWarning)
- super(Command, self).handle_noargs(**options)
diff --git a/lib/python2.7/site-packages/django/core/management/commands/compilemessages.py b/lib/python2.7/site-packages/django/core/management/commands/compilemessages.py
deleted file mode 100644
index 9e9df26..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/compilemessages.py
+++ /dev/null
@@ -1,71 +0,0 @@
-from __future__ import unicode_literals
-
-import codecs
-import os
-from optparse import make_option
-
-from django.core.management.base import BaseCommand, CommandError
-from django.core.management.utils import find_command, popen_wrapper
-from django.utils._os import npath
-
-def has_bom(fn):
- with open(fn, 'rb') as f:
- sample = f.read(4)
- return sample[:3] == b'\xef\xbb\xbf' or \
- sample.startswith(codecs.BOM_UTF16_LE) or \
- sample.startswith(codecs.BOM_UTF16_BE)
-
-def compile_messages(stdout, locale=None):
- program = 'msgfmt'
- if find_command(program) is None:
- raise CommandError("Can't find %s. Make sure you have GNU gettext tools 0.15 or newer installed." % program)
-
- basedirs = [os.path.join('conf', 'locale'), 'locale']
- if os.environ.get('DJANGO_SETTINGS_MODULE'):
- from django.conf import settings
- basedirs.extend(settings.LOCALE_PATHS)
-
- # Gather existing directories.
- basedirs = set(map(os.path.abspath, filter(os.path.isdir, basedirs)))
-
- if not basedirs:
- raise CommandError("This script should be run from the Django Git checkout or your project or app tree, or with the settings module specified.")
-
- for basedir in basedirs:
- if locale:
- dirs = [os.path.join(basedir, l, 'LC_MESSAGES') for l in locale]
- else:
- dirs = [basedir]
- for ldir in dirs:
- for dirpath, dirnames, filenames in os.walk(ldir):
- for f in filenames:
- if not f.endswith('.po'):
- continue
- stdout.write('processing file %s in %s\n' % (f, dirpath))
- fn = os.path.join(dirpath, f)
- if has_bom(fn):
- raise CommandError("The %s file has a BOM (Byte Order Mark). Django only supports .po files encoded in UTF-8 and without any BOM." % fn)
- pf = os.path.splitext(fn)[0]
- args = [program, '--check-format', '-o', npath(pf + '.mo'), npath(pf + '.po')]
- output, errors, status = popen_wrapper(args)
- if status:
- if errors:
- msg = "Execution of %s failed: %s" % (program, errors)
- else:
- msg = "Execution of %s failed" % program
- raise CommandError(msg)
-
-
-class Command(BaseCommand):
- option_list = BaseCommand.option_list + (
- make_option('--locale', '-l', dest='locale', action='append',
- help='locale(s) to process (e.g. de_AT). Default is to process all. Can be used multiple times.'),
- )
- help = 'Compiles .po files to .mo files for use with builtin gettext support.'
-
- requires_model_validation = False
- leave_locale_alone = True
-
- def handle(self, **options):
- locale = options.get('locale')
- compile_messages(self.stdout, locale=locale)
diff --git a/lib/python2.7/site-packages/django/core/management/commands/createcachetable.py b/lib/python2.7/site-packages/django/core/management/commands/createcachetable.py
deleted file mode 100644
index d7ce3e9..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/createcachetable.py
+++ /dev/null
@@ -1,65 +0,0 @@
-from optparse import make_option
-
-from django.core.cache.backends.db import BaseDatabaseCache
-from django.core.management.base import LabelCommand, CommandError
-from django.db import connections, router, transaction, models, DEFAULT_DB_ALIAS
-from django.db.utils import DatabaseError
-from django.utils.encoding import force_text
-
-
-class Command(LabelCommand):
- help = "Creates the table needed to use the SQL cache backend."
- args = "<tablename>"
- label = 'tablename'
-
- option_list = LabelCommand.option_list + (
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Nominates a database onto '
- 'which the cache table will be installed. '
- 'Defaults to the "default" database.'),
- )
-
- requires_model_validation = False
-
- def handle_label(self, tablename, **options):
- db = options.get('database')
- cache = BaseDatabaseCache(tablename, {})
- if not router.allow_syncdb(db, cache.cache_model_class):
- return
- connection = connections[db]
- fields = (
- # "key" is a reserved word in MySQL, so use "cache_key" instead.
- models.CharField(name='cache_key', max_length=255, unique=True, primary_key=True),
- models.TextField(name='value'),
- models.DateTimeField(name='expires', db_index=True),
- )
- table_output = []
- index_output = []
- qn = connection.ops.quote_name
- for f in fields:
- field_output = [qn(f.name), f.db_type(connection=connection)]
- field_output.append("%sNULL" % ("NOT " if not f.null else ""))
- if f.primary_key:
- field_output.append("PRIMARY KEY")
- elif f.unique:
- field_output.append("UNIQUE")
- if f.db_index:
- unique = "UNIQUE " if f.unique else ""
- index_output.append("CREATE %sINDEX %s ON %s (%s);" % \
- (unique, qn('%s_%s' % (tablename, f.name)), qn(tablename),
- qn(f.name)))
- table_output.append(" ".join(field_output))
- full_statement = ["CREATE TABLE %s (" % qn(tablename)]
- for i, line in enumerate(table_output):
- full_statement.append(' %s%s' % (line, ',' if i < len(table_output)-1 else ''))
- full_statement.append(');')
- with transaction.commit_on_success_unless_managed():
- curs = connection.cursor()
- try:
- curs.execute("\n".join(full_statement))
- except DatabaseError as e:
- raise CommandError(
- "Cache table '%s' could not be created.\nThe error was: %s." %
- (tablename, force_text(e)))
- for statement in index_output:
- curs.execute(statement)
diff --git a/lib/python2.7/site-packages/django/core/management/commands/dbshell.py b/lib/python2.7/site-packages/django/core/management/commands/dbshell.py
deleted file mode 100644
index 7465920..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/dbshell.py
+++ /dev/null
@@ -1,28 +0,0 @@
-from optparse import make_option
-
-from django.core.management.base import BaseCommand, CommandError
-from django.db import connections, DEFAULT_DB_ALIAS
-
-class Command(BaseCommand):
- help = ("Runs the command-line client for specified database, or the "
- "default database if none is provided.")
-
- option_list = BaseCommand.option_list + (
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Nominates a database onto which to '
- 'open a shell. Defaults to the "default" database.'),
- )
-
- requires_model_validation = False
-
- def handle(self, **options):
- connection = connections[options.get('database')]
- try:
- connection.client.runshell()
- except OSError:
- # Note that we're assuming OSError means that the client program
- # isn't installed. There's a possibility OSError would be raised
- # for some other reason, in which case this error message would be
- # inaccurate. Still, this message catches the common case.
- raise CommandError('You appear not to have the %r program installed or on your path.' % \
- connection.client.executable_name)
diff --git a/lib/python2.7/site-packages/django/core/management/commands/diffsettings.py b/lib/python2.7/site-packages/django/core/management/commands/diffsettings.py
deleted file mode 100644
index 9e70e9a..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/diffsettings.py
+++ /dev/null
@@ -1,40 +0,0 @@
-from optparse import make_option
-
-from django.core.management.base import NoArgsCommand
-
-def module_to_dict(module, omittable=lambda k: k.startswith('_')):
- """Converts a module namespace to a Python dictionary."""
- return dict((k, repr(v)) for k, v in module.__dict__.items() if not omittable(k))
-
-class Command(NoArgsCommand):
- help = """Displays differences between the current settings.py and Django's
- default settings. Settings that don't appear in the defaults are
- followed by "###"."""
-
- option_list = NoArgsCommand.option_list + (
- make_option('--all', action='store_true', dest='all', default=False,
- help='Display all settings, regardless of their value. '
- 'Default values are prefixed by "###".'),
- )
-
- requires_model_validation = False
-
- def handle_noargs(self, **options):
- # Inspired by Postfix's "postconf -n".
- from django.conf import settings, global_settings
-
- # Because settings are imported lazily, we need to explicitly load them.
- settings._setup()
-
- user_settings = module_to_dict(settings._wrapped)
- default_settings = module_to_dict(global_settings)
-
- output = []
- for key in sorted(user_settings):
- if key not in default_settings:
- output.append("%s = %s ###" % (key, user_settings[key]))
- elif user_settings[key] != default_settings[key]:
- output.append("%s = %s" % (key, user_settings[key]))
- elif options['all']:
- output.append("### %s = %s" % (key, user_settings[key]))
- return '\n'.join(output)
diff --git a/lib/python2.7/site-packages/django/core/management/commands/dumpdata.py b/lib/python2.7/site-packages/django/core/management/commands/dumpdata.py
deleted file mode 100644
index e2a2f24..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/dumpdata.py
+++ /dev/null
@@ -1,214 +0,0 @@
-from django.core.exceptions import ImproperlyConfigured
-from django.core.management.base import BaseCommand, CommandError
-from django.core import serializers
-from django.db import router, DEFAULT_DB_ALIAS
-from django.utils.datastructures import SortedDict
-
-from optparse import make_option
-
-class Command(BaseCommand):
- option_list = BaseCommand.option_list + (
- make_option('--format', default='json', dest='format',
- help='Specifies the output serialization format for fixtures.'),
- make_option('--indent', default=None, dest='indent', type='int',
- help='Specifies the indent level to use when pretty-printing output'),
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Nominates a specific database to dump '
- 'fixtures from. Defaults to the "default" database.'),
- make_option('-e', '--exclude', dest='exclude',action='append', default=[],
- help='An appname or appname.ModelName to exclude (use multiple --exclude to exclude multiple apps/models).'),
- make_option('-n', '--natural', action='store_true', dest='use_natural_keys', default=False,
- help='Use natural keys if they are available.'),
- make_option('-a', '--all', action='store_true', dest='use_base_manager', default=False,
- help="Use Django's base manager to dump all models stored in the database, including those that would otherwise be filtered or modified by a custom manager."),
- make_option('--pks', dest='primary_keys', help="Only dump objects with "
- "given primary keys. Accepts a comma seperated list of keys. "
- "This option will only work when you specify one model."),
- )
- help = ("Output the contents of the database as a fixture of the given "
- "format (using each model's default manager unless --all is "
- "specified).")
- args = '[appname appname.ModelName ...]'
-
- def handle(self, *app_labels, **options):
- from django.db.models import get_app, get_apps, get_model
-
- format = options.get('format')
- indent = options.get('indent')
- using = options.get('database')
- excludes = options.get('exclude')
- show_traceback = options.get('traceback')
- use_natural_keys = options.get('use_natural_keys')
- use_base_manager = options.get('use_base_manager')
- pks = options.get('primary_keys')
-
- if pks:
- primary_keys = pks.split(',')
- else:
- primary_keys = []
-
- excluded_apps = set()
- excluded_models = set()
- for exclude in excludes:
- if '.' in exclude:
- app_label, model_name = exclude.split('.', 1)
- model_obj = get_model(app_label, model_name)
- if not model_obj:
- raise CommandError('Unknown model in excludes: %s' % exclude)
- excluded_models.add(model_obj)
- else:
- try:
- app_obj = get_app(exclude)
- excluded_apps.add(app_obj)
- except ImproperlyConfigured:
- raise CommandError('Unknown app in excludes: %s' % exclude)
-
- if len(app_labels) == 0:
- if primary_keys:
- raise CommandError("You can only use --pks option with one model")
- app_list = SortedDict((app, None) for app in get_apps() if app not in excluded_apps)
- else:
- if len(app_labels) > 1 and primary_keys:
- raise CommandError("You can only use --pks option with one model")
- app_list = SortedDict()
- for label in app_labels:
- try:
- app_label, model_label = label.split('.')
- try:
- app = get_app(app_label)
- except ImproperlyConfigured:
- raise CommandError("Unknown application: %s" % app_label)
- if app in excluded_apps:
- continue
- model = get_model(app_label, model_label)
- if model is None:
- raise CommandError("Unknown model: %s.%s" % (app_label, model_label))
-
- if app in app_list.keys():
- if app_list[app] and model not in app_list[app]:
- app_list[app].append(model)
- else:
- app_list[app] = [model]
- except ValueError:
- if primary_keys:
- raise CommandError("You can only use --pks option with one model")
- # This is just an app - no model qualifier
- app_label = label
- try:
- app = get_app(app_label)
- except ImproperlyConfigured:
- raise CommandError("Unknown application: %s" % app_label)
- if app in excluded_apps:
- continue
- app_list[app] = None
-
- # Check that the serialization format exists; this is a shortcut to
- # avoid collating all the objects and _then_ failing.
- if format not in serializers.get_public_serializer_formats():
- try:
- serializers.get_serializer(format)
- except serializers.SerializerDoesNotExist:
- pass
-
- raise CommandError("Unknown serialization format: %s" % format)
-
- def get_objects():
- # Collate the objects to be serialized.
- for model in sort_dependencies(app_list.items()):
- if model in excluded_models:
- continue
- if not model._meta.proxy and router.allow_syncdb(using, model):
- if use_base_manager:
- objects = model._base_manager
- else:
- objects = model._default_manager
-
- queryset = objects.using(using).order_by(model._meta.pk.name)
- if primary_keys:
- queryset = queryset.filter(pk__in=primary_keys)
- for obj in queryset.iterator():
- yield obj
-
- try:
- self.stdout.ending = None
- serializers.serialize(format, get_objects(), indent=indent,
- use_natural_keys=use_natural_keys, stream=self.stdout)
- except Exception as e:
- if show_traceback:
- raise
- raise CommandError("Unable to serialize database: %s" % e)
-
-def sort_dependencies(app_list):
- """Sort a list of app,modellist pairs into a single list of models.
-
- The single list of models is sorted so that any model with a natural key
- is serialized before a normal model, and any model with a natural key
- dependency has it's dependencies serialized first.
- """
- from django.db.models import get_model, get_models
- # Process the list of models, and get the list of dependencies
- model_dependencies = []
- models = set()
- for app, model_list in app_list:
- if model_list is None:
- model_list = get_models(app)
-
- for model in model_list:
- models.add(model)
- # Add any explicitly defined dependencies
- if hasattr(model, 'natural_key'):
- deps = getattr(model.natural_key, 'dependencies', [])
- if deps:
- deps = [get_model(*d.split('.')) for d in deps]
- else:
- deps = []
-
- # Now add a dependency for any FK or M2M relation with
- # a model that defines a natural key
- for field in model._meta.fields:
- if hasattr(field.rel, 'to'):
- rel_model = field.rel.to
- if hasattr(rel_model, 'natural_key') and rel_model != model:
- deps.append(rel_model)
- for field in model._meta.many_to_many:
- rel_model = field.rel.to
- if hasattr(rel_model, 'natural_key') and rel_model != model:
- deps.append(rel_model)
- model_dependencies.append((model, deps))
-
- model_dependencies.reverse()
- # Now sort the models to ensure that dependencies are met. This
- # is done by repeatedly iterating over the input list of models.
- # If all the dependencies of a given model are in the final list,
- # that model is promoted to the end of the final list. This process
- # continues until the input list is empty, or we do a full iteration
- # over the input models without promoting a model to the final list.
- # If we do a full iteration without a promotion, that means there are
- # circular dependencies in the list.
- model_list = []
- while model_dependencies:
- skipped = []
- changed = False
- while model_dependencies:
- model, deps = model_dependencies.pop()
-
- # If all of the models in the dependency list are either already
- # on the final model list, or not on the original serialization list,
- # then we've found another model with all it's dependencies satisfied.
- found = True
- for candidate in ((d not in models or d in model_list) for d in deps):
- if not candidate:
- found = False
- if found:
- model_list.append(model)
- changed = True
- else:
- skipped.append((model, deps))
- if not changed:
- raise CommandError("Can't resolve dependencies for %s in serialized app list." %
- ', '.join('%s.%s' % (model._meta.app_label, model._meta.object_name)
- for model, deps in sorted(skipped, key=lambda obj: obj[0].__name__))
- )
- model_dependencies = skipped
-
- return model_list
diff --git a/lib/python2.7/site-packages/django/core/management/commands/flush.py b/lib/python2.7/site-packages/django/core/management/commands/flush.py
deleted file mode 100644
index 95dd634..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/flush.py
+++ /dev/null
@@ -1,101 +0,0 @@
-import sys
-from optparse import make_option
-
-from django.conf import settings
-from django.db import connections, router, transaction, models, DEFAULT_DB_ALIAS
-from django.core.management import call_command
-from django.core.management.base import NoArgsCommand, CommandError
-from django.core.management.color import no_style
-from django.core.management.sql import sql_flush, emit_post_sync_signal
-from django.utils.importlib import import_module
-from django.utils.six.moves import input
-from django.utils import six
-
-
-class Command(NoArgsCommand):
- option_list = NoArgsCommand.option_list + (
- make_option('--noinput', action='store_false', dest='interactive', default=True,
- help='Tells Django to NOT prompt the user for input of any kind.'),
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Nominates a database to flush. '
- 'Defaults to the "default" database.'),
- make_option('--no-initial-data', action='store_false', dest='load_initial_data', default=True,
- help='Tells Django not to load any initial data after database synchronization.'),
- )
- help = ('Returns the database to the state it was in immediately after '
- 'syncdb was executed. This means that all data will be removed '
- 'from the database, any post-synchronization handlers will be '
- 're-executed, and the initial_data fixture will be re-installed.')
-
- def handle_noargs(self, **options):
- db = options.get('database')
- connection = connections[db]
- verbosity = int(options.get('verbosity'))
- interactive = options.get('interactive')
- # The following are stealth options used by Django's internals.
- reset_sequences = options.get('reset_sequences', True)
- allow_cascade = options.get('allow_cascade', False)
- inhibit_post_syncdb = options.get('inhibit_post_syncdb', False)
-
- self.style = no_style()
-
- # Import the 'management' module within each installed app, to register
- # dispatcher events.
- for app_name in settings.INSTALLED_APPS:
- try:
- import_module('.management', app_name)
- except ImportError:
- pass
-
- sql_list = sql_flush(self.style, connection, only_django=True,
- reset_sequences=reset_sequences,
- allow_cascade=allow_cascade)
-
- if interactive:
- confirm = input("""You have requested a flush of the database.
-This will IRREVERSIBLY DESTROY all data currently in the %r database,
-and return each table to the state it was in after syncdb.
-Are you sure you want to do this?
-
- Type 'yes' to continue, or 'no' to cancel: """ % connection.settings_dict['NAME'])
- else:
- confirm = 'yes'
-
- if confirm == 'yes':
- try:
- with transaction.commit_on_success_unless_managed():
- cursor = connection.cursor()
- for sql in sql_list:
- cursor.execute(sql)
- except Exception as e:
- new_msg = (
- "Database %s couldn't be flushed. Possible reasons:\n"
- " * The database isn't running or isn't configured correctly.\n"
- " * At least one of the expected database tables doesn't exist.\n"
- " * The SQL was invalid.\n"
- "Hint: Look at the output of 'django-admin.py sqlflush'. That's the SQL this command wasn't able to run.\n"
- "The full error: %s") % (connection.settings_dict['NAME'], e)
- six.reraise(CommandError, CommandError(new_msg), sys.exc_info()[2])
-
- if not inhibit_post_syncdb:
- self.emit_post_syncdb(verbosity, interactive, db)
-
- # Reinstall the initial_data fixture.
- if options.get('load_initial_data'):
- # Reinstall the initial_data fixture.
- call_command('loaddata', 'initial_data', **options)
-
- else:
- self.stdout.write("Flush cancelled.\n")
-
- @staticmethod
- def emit_post_syncdb(verbosity, interactive, database):
- # Emit the post sync signal. This allows individual applications to
- # respond as if the database had been sync'd from scratch.
- all_models = []
- for app in models.get_apps():
- all_models.extend([
- m for m in models.get_models(app, include_auto_created=True)
- if router.allow_syncdb(database, m)
- ])
- emit_post_sync_signal(set(all_models), verbosity, interactive, database)
diff --git a/lib/python2.7/site-packages/django/core/management/commands/inspectdb.py b/lib/python2.7/site-packages/django/core/management/commands/inspectdb.py
deleted file mode 100644
index 48f7fd9..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/inspectdb.py
+++ /dev/null
@@ -1,237 +0,0 @@
-from __future__ import unicode_literals
-
-import keyword
-import re
-from optparse import make_option
-
-from django.core.management.base import NoArgsCommand, CommandError
-from django.db import connections, DEFAULT_DB_ALIAS
-from django.utils.datastructures import SortedDict
-
-
-class Command(NoArgsCommand):
- help = "Introspects the database tables in the given database and outputs a Django model module."
-
- option_list = NoArgsCommand.option_list + (
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Nominates a database to '
- 'introspect. Defaults to using the "default" database.'),
- )
-
- requires_model_validation = False
-
- db_module = 'django.db'
-
- def handle_noargs(self, **options):
- try:
- for line in self.handle_inspection(options):
- self.stdout.write("%s\n" % line)
- except NotImplementedError:
- raise CommandError("Database inspection isn't supported for the currently selected database backend.")
-
- def handle_inspection(self, options):
- connection = connections[options.get('database')]
- # 'table_name_filter' is a stealth option
- table_name_filter = options.get('table_name_filter')
-
- table2model = lambda table_name: table_name.title().replace('_', '').replace(' ', '').replace('-', '')
- strip_prefix = lambda s: s[1:] if s.startswith("u'") else s
-
- cursor = connection.cursor()
- yield "# This is an auto-generated Django model module."
- yield "# You'll have to do the following manually to clean this up:"
- yield "# * Rearrange models' order"
- yield "# * Make sure each model has one field with primary_key=True"
- yield "# * Remove `managed = False` lines if you wish to allow Django to create and delete the table"
- yield "# Feel free to rename the models, but don't rename db_table values or field names."
- yield "#"
- yield "# Also note: You'll have to insert the output of 'django-admin.py sqlcustom [appname]'"
- yield "# into your database."
- yield "from __future__ import unicode_literals"
- yield ''
- yield 'from %s import models' % self.db_module
- yield ''
- known_models = []
- for table_name in connection.introspection.table_names(cursor):
- if table_name_filter is not None and callable(table_name_filter):
- if not table_name_filter(table_name):
- continue
- yield 'class %s(models.Model):' % table2model(table_name)
- known_models.append(table2model(table_name))
- try:
- relations = connection.introspection.get_relations(cursor, table_name)
- except NotImplementedError:
- relations = {}
- try:
- indexes = connection.introspection.get_indexes(cursor, table_name)
- except NotImplementedError:
- indexes = {}
- used_column_names = [] # Holds column names used in the table so far
- for i, row in enumerate(connection.introspection.get_table_description(cursor, table_name)):
- comment_notes = [] # Holds Field notes, to be displayed in a Python comment.
- extra_params = SortedDict() # Holds Field parameters such as 'db_column'.
- column_name = row[0]
- is_relation = i in relations
-
- att_name, params, notes = self.normalize_col_name(
- column_name, used_column_names, is_relation)
- extra_params.update(params)
- comment_notes.extend(notes)
-
- used_column_names.append(att_name)
-
- # Add primary_key and unique, if necessary.
- if column_name in indexes:
- if indexes[column_name]['primary_key']:
- extra_params['primary_key'] = True
- elif indexes[column_name]['unique']:
- extra_params['unique'] = True
-
- if is_relation:
- rel_to = "self" if relations[i][1] == table_name else table2model(relations[i][1])
- if rel_to in known_models:
- field_type = 'ForeignKey(%s' % rel_to
- else:
- field_type = "ForeignKey('%s'" % rel_to
- else:
- # Calling `get_field_type` to get the field type string and any
- # additional paramters and notes.
- field_type, field_params, field_notes = self.get_field_type(connection, table_name, row)
- extra_params.update(field_params)
- comment_notes.extend(field_notes)
-
- field_type += '('
-
- # Don't output 'id = meta.AutoField(primary_key=True)', because
- # that's assumed if it doesn't exist.
- if att_name == 'id' and field_type == 'AutoField(' and extra_params == {'primary_key': True}:
- continue
-
- # Add 'null' and 'blank', if the 'null_ok' flag was present in the
- # table description.
- if row[6]: # If it's NULL...
- if field_type == 'BooleanField(':
- field_type = 'NullBooleanField('
- else:
- extra_params['blank'] = True
- if not field_type in ('TextField(', 'CharField('):
- extra_params['null'] = True
-
- field_desc = '%s = models.%s' % (att_name, field_type)
- if extra_params:
- if not field_desc.endswith('('):
- field_desc += ', '
- field_desc += ', '.join([
- '%s=%s' % (k, strip_prefix(repr(v)))
- for k, v in extra_params.items()])
- field_desc += ')'
- if comment_notes:
- field_desc += ' # ' + ' '.join(comment_notes)
- yield ' %s' % field_desc
- for meta_line in self.get_meta(table_name):
- yield meta_line
-
- def normalize_col_name(self, col_name, used_column_names, is_relation):
- """
- Modify the column name to make it Python-compatible as a field name
- """
- field_params = {}
- field_notes = []
-
- new_name = col_name.lower()
- if new_name != col_name:
- field_notes.append('Field name made lowercase.')
-
- if is_relation:
- if new_name.endswith('_id'):
- new_name = new_name[:-3]
- else:
- field_params['db_column'] = col_name
-
- new_name, num_repl = re.subn(r'\W', '_', new_name)
- if num_repl > 0:
- field_notes.append('Field renamed to remove unsuitable characters.')
-
- if new_name.find('__') >= 0:
- while new_name.find('__') >= 0:
- new_name = new_name.replace('__', '_')
- if col_name.lower().find('__') >= 0:
- # Only add the comment if the double underscore was in the original name
- field_notes.append("Field renamed because it contained more than one '_' in a row.")
-
- if new_name.startswith('_'):
- new_name = 'field%s' % new_name
- field_notes.append("Field renamed because it started with '_'.")
-
- if new_name.endswith('_'):
- new_name = '%sfield' % new_name
- field_notes.append("Field renamed because it ended with '_'.")
-
- if keyword.iskeyword(new_name):
- new_name += '_field'
- field_notes.append('Field renamed because it was a Python reserved word.')
-
- if new_name[0].isdigit():
- new_name = 'number_%s' % new_name
- field_notes.append("Field renamed because it wasn't a valid Python identifier.")
-
- if new_name in used_column_names:
- num = 0
- while '%s_%d' % (new_name, num) in used_column_names:
- num += 1
- new_name = '%s_%d' % (new_name, num)
- field_notes.append('Field renamed because of name conflict.')
-
- if col_name != new_name and field_notes:
- field_params['db_column'] = col_name
-
- return new_name, field_params, field_notes
-
- def get_field_type(self, connection, table_name, row):
- """
- Given the database connection, the table name, and the cursor row
- description, this routine will return the given field type name, as
- well as any additional keyword parameters and notes for the field.
- """
- field_params = SortedDict()
- field_notes = []
-
- try:
- field_type = connection.introspection.get_field_type(row[1], row)
- except KeyError:
- field_type = 'TextField'
- field_notes.append('This field type is a guess.')
-
- # This is a hook for DATA_TYPES_REVERSE to return a tuple of
- # (field_type, field_params_dict).
- if type(field_type) is tuple:
- field_type, new_params = field_type
- field_params.update(new_params)
-
- # Add max_length for all CharFields.
- if field_type == 'CharField' and row[3]:
- field_params['max_length'] = int(row[3])
-
- if field_type == 'DecimalField':
- if row[4] is None or row[5] is None:
- field_notes.append(
- 'max_digits and decimal_places have been guessed, as this '
- 'database handles decimal fields as float')
- field_params['max_digits'] = row[4] if row[4] is not None else 10
- field_params['decimal_places'] = row[5] if row[5] is not None else 5
- else:
- field_params['max_digits'] = row[4]
- field_params['decimal_places'] = row[5]
-
- return field_type, field_params, field_notes
-
- def get_meta(self, table_name):
- """
- Return a sequence comprising the lines of code necessary
- to construct the inner Meta class for the model corresponding
- to the given database table name.
- """
- return [" class Meta:",
- " managed = False",
- " db_table = '%s'" % table_name,
- ""]
diff --git a/lib/python2.7/site-packages/django/core/management/commands/loaddata.py b/lib/python2.7/site-packages/django/core/management/commands/loaddata.py
deleted file mode 100644
index cbadfa9..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/loaddata.py
+++ /dev/null
@@ -1,282 +0,0 @@
-from __future__ import unicode_literals
-
-import glob
-import gzip
-import os
-import zipfile
-from optparse import make_option
-import warnings
-
-from django.conf import settings
-from django.core import serializers
-from django.core.management.base import BaseCommand, CommandError
-from django.core.management.color import no_style
-from django.db import (connections, router, transaction, DEFAULT_DB_ALIAS,
- IntegrityError, DatabaseError)
-from django.db.models import get_app_paths
-from django.utils.encoding import force_text
-from django.utils.functional import cached_property, memoize
-from django.utils._os import upath
-from itertools import product
-
-try:
- import bz2
- has_bz2 = True
-except ImportError:
- has_bz2 = False
-
-
-class Command(BaseCommand):
- help = 'Installs the named fixture(s) in the database.'
- args = "fixture [fixture ...]"
-
- option_list = BaseCommand.option_list + (
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Nominates a specific database to load '
- 'fixtures into. Defaults to the "default" database.'),
- make_option('--ignorenonexistent', '-i', action='store_true', dest='ignore',
- default=False, help='Ignores entries in the serialized data for fields'
- ' that do not currently exist on the model.'),
- )
-
- def handle(self, *fixture_labels, **options):
-
- self.ignore = options.get('ignore')
- self.using = options.get('database')
-
- if not len(fixture_labels):
- raise CommandError(
- "No database fixture specified. Please provide the path "
- "of at least one fixture in the command line.")
-
- self.verbosity = int(options.get('verbosity'))
-
- with transaction.commit_on_success_unless_managed(using=self.using):
- self.loaddata(fixture_labels)
-
- # Close the DB connection -- unless we're still in a transaction. This
- # is required as a workaround for an edge case in MySQL: if the same
- # connection is used to create tables, load data, and query, the query
- # can return incorrect results. See Django #7572, MySQL #37735.
- if transaction.get_autocommit(self.using):
- connections[self.using].close()
-
- def loaddata(self, fixture_labels):
- connection = connections[self.using]
-
- # Keep a count of the installed objects and fixtures
- self.fixture_count = 0
- self.loaded_object_count = 0
- self.fixture_object_count = 0
- self.models = set()
-
- self.serialization_formats = serializers.get_public_serializer_formats()
- self.compression_formats = {
- None: open,
- 'gz': gzip.GzipFile,
- 'zip': SingleZipReader
- }
- if has_bz2:
- self.compression_formats['bz2'] = bz2.BZ2File
-
- with connection.constraint_checks_disabled():
- for fixture_label in fixture_labels:
- self.load_label(fixture_label)
-
- # Since we disabled constraint checks, we must manually check for
- # any invalid keys that might have been added
- table_names = [model._meta.db_table for model in self.models]
- try:
- connection.check_constraints(table_names=table_names)
- except Exception as e:
- e.args = ("Problem installing fixtures: %s" % e,)
- raise
-
- # If we found even one object in a fixture, we need to reset the
- # database sequences.
- if self.loaded_object_count > 0:
- sequence_sql = connection.ops.sequence_reset_sql(no_style(), self.models)
- if sequence_sql:
- if self.verbosity >= 2:
- self.stdout.write("Resetting sequences\n")
- cursor = connection.cursor()
- for line in sequence_sql:
- cursor.execute(line)
- cursor.close()
-
- if self.verbosity >= 1:
- if self.fixture_object_count == self.loaded_object_count:
- self.stdout.write("Installed %d object(s) from %d fixture(s)" %
- (self.loaded_object_count, self.fixture_count))
- else:
- self.stdout.write("Installed %d object(s) (of %d) from %d fixture(s)" %
- (self.loaded_object_count, self.fixture_object_count, self.fixture_count))
-
- def load_label(self, fixture_label):
- """
- Loads fixtures files for a given label.
- """
- for fixture_file, fixture_dir, fixture_name in self.find_fixtures(fixture_label):
- _, ser_fmt, cmp_fmt = self.parse_name(os.path.basename(fixture_file))
- open_method = self.compression_formats[cmp_fmt]
- fixture = open_method(fixture_file, 'r')
- try:
- self.fixture_count += 1
- objects_in_fixture = 0
- loaded_objects_in_fixture = 0
- if self.verbosity >= 2:
- self.stdout.write("Installing %s fixture '%s' from %s." %
- (ser_fmt, fixture_name, humanize(fixture_dir)))
-
- objects = serializers.deserialize(ser_fmt, fixture,
- using=self.using, ignorenonexistent=self.ignore)
-
- for obj in objects:
- objects_in_fixture += 1
- if router.allow_syncdb(self.using, obj.object.__class__):
- loaded_objects_in_fixture += 1
- self.models.add(obj.object.__class__)
- try:
- obj.save(using=self.using)
- except (DatabaseError, IntegrityError) as e:
- e.args = ("Could not load %(app_label)s.%(object_name)s(pk=%(pk)s): %(error_msg)s" % {
- 'app_label': obj.object._meta.app_label,
- 'object_name': obj.object._meta.object_name,
- 'pk': obj.object.pk,
- 'error_msg': force_text(e)
- },)
- raise
-
- self.loaded_object_count += loaded_objects_in_fixture
- self.fixture_object_count += objects_in_fixture
- except Exception as e:
- if not isinstance(e, CommandError):
- e.args = ("Problem installing fixture '%s': %s" % (fixture_file, e),)
- raise
- finally:
- fixture.close()
-
- # If the fixture we loaded contains 0 objects, assume that an
- # error was encountered during fixture loading.
- if objects_in_fixture == 0:
- raise CommandError(
- "No fixture data found for '%s'. "
- "(File format may be invalid.)" % fixture_name)
-
- def _find_fixtures(self, fixture_label):
- """
- Finds fixture files for a given label.
- """
- fixture_name, ser_fmt, cmp_fmt = self.parse_name(fixture_label)
- databases = [self.using, None]
- cmp_fmts = list(self.compression_formats.keys()) if cmp_fmt is None else [cmp_fmt]
- ser_fmts = serializers.get_public_serializer_formats() if ser_fmt is None else [ser_fmt]
-
- if self.verbosity >= 2:
- self.stdout.write("Loading '%s' fixtures..." % fixture_name)
-
- if os.path.isabs(fixture_name):
- fixture_dirs = [os.path.dirname(fixture_name)]
- fixture_name = os.path.basename(fixture_name)
- else:
- fixture_dirs = self.fixture_dirs
- if os.path.sep in fixture_name:
- fixture_dirs = [os.path.join(dir_, os.path.dirname(fixture_name))
- for dir_ in fixture_dirs]
- fixture_name = os.path.basename(fixture_name)
-
- suffixes = ('.'.join(ext for ext in combo if ext)
- for combo in product(databases, ser_fmts, cmp_fmts))
- targets = set('.'.join((fixture_name, suffix)) for suffix in suffixes)
-
- fixture_files = []
- for fixture_dir in fixture_dirs:
- if self.verbosity >= 2:
- self.stdout.write("Checking %s for fixtures..." % humanize(fixture_dir))
- fixture_files_in_dir = []
- for candidate in glob.iglob(os.path.join(fixture_dir, fixture_name + '*')):
- if os.path.basename(candidate) in targets:
- # Save the fixture_dir and fixture_name for future error messages.
- fixture_files_in_dir.append((candidate, fixture_dir, fixture_name))
-
- if self.verbosity >= 2 and not fixture_files_in_dir:
- self.stdout.write("No fixture '%s' in %s." %
- (fixture_name, humanize(fixture_dir)))
-
- # Check kept for backwards-compatibility; it isn't clear why
- # duplicates are only allowed in different directories.
- if len(fixture_files_in_dir) > 1:
- raise CommandError(
- "Multiple fixtures named '%s' in %s. Aborting." %
- (fixture_name, humanize(fixture_dir)))
- fixture_files.extend(fixture_files_in_dir)
-
- if fixture_name != 'initial_data' and not fixture_files:
- # Warning kept for backwards-compatibility; why not an exception?
- warnings.warn("No fixture named '%s' found." % fixture_name)
-
- return fixture_files
-
- _label_to_fixtures_cache = {}
- find_fixtures = memoize(_find_fixtures, _label_to_fixtures_cache, 2)
-
- @cached_property
- def fixture_dirs(self):
- """
- Return a list of fixture directories.
-
- The list contains the 'fixtures' subdirectory of each installed
- application, if it exists, the directories in FIXTURE_DIRS, and the
- current directory.
- """
- dirs = []
- for path in get_app_paths():
- d = os.path.join(os.path.dirname(path), 'fixtures')
- if os.path.isdir(d):
- dirs.append(d)
- dirs.extend(list(settings.FIXTURE_DIRS))
- dirs.append('')
- dirs = [upath(os.path.abspath(os.path.realpath(d))) for d in dirs]
- return dirs
-
- def parse_name(self, fixture_name):
- """
- Splits fixture name in name, serialization format, compression format.
- """
- parts = fixture_name.rsplit('.', 2)
-
- if len(parts) > 1 and parts[-1] in self.compression_formats:
- cmp_fmt = parts[-1]
- parts = parts[:-1]
- else:
- cmp_fmt = None
-
- if len(parts) > 1:
- if parts[-1] in self.serialization_formats:
- ser_fmt = parts[-1]
- parts = parts[:-1]
- else:
- raise CommandError(
- "Problem installing fixture '%s': %s is not a known "
- "serialization format." % (''.join(parts[:-1]), parts[-1]))
- else:
- ser_fmt = None
-
- name = '.'.join(parts)
-
- return name, ser_fmt, cmp_fmt
-
-
-class SingleZipReader(zipfile.ZipFile):
-
- def __init__(self, *args, **kwargs):
- zipfile.ZipFile.__init__(self, *args, **kwargs)
- if len(self.namelist()) != 1:
- raise ValueError("Zip-compressed fixtures must contain one file.")
-
- def read(self):
- return zipfile.ZipFile.read(self, self.namelist()[0])
-
-
-def humanize(dirname):
- return "'%s'" % dirname if dirname else 'absolute path'
diff --git a/lib/python2.7/site-packages/django/core/management/commands/makemessages.py b/lib/python2.7/site-packages/django/core/management/commands/makemessages.py
deleted file mode 100644
index 5b09661..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/makemessages.py
+++ /dev/null
@@ -1,422 +0,0 @@
-import fnmatch
-import glob
-import io
-import os
-import re
-import sys
-from itertools import dropwhile
-from optparse import make_option
-
-import django
-from django.core.management.base import CommandError, NoArgsCommand
-from django.core.management.utils import (handle_extensions, find_command,
- popen_wrapper)
-from django.utils.encoding import force_str
-from django.utils.functional import total_ordering
-from django.utils.text import get_text_list
-from django.utils.jslex import prepare_js_for_gettext
-
-plural_forms_re = re.compile(r'^(?P<value>"Plural-Forms.+?\\n")\s*$', re.MULTILINE | re.DOTALL)
-STATUS_OK = 0
-
-
-def check_programs(*programs):
- for program in programs:
- if find_command(program) is None:
- raise CommandError("Can't find %s. Make sure you have GNU "
- "gettext tools 0.15 or newer installed." % program)
-
-
-@total_ordering
-class TranslatableFile(object):
- def __init__(self, dirpath, file_name):
- self.file = file_name
- self.dirpath = dirpath
-
- def __repr__(self):
- return "<TranslatableFile: %s>" % os.sep.join([self.dirpath, self.file])
-
- def __eq__(self, other):
- return self.dirpath == other.dirpath and self.file == other.file
-
- def __lt__(self, other):
- if self.dirpath == other.dirpath:
- return self.file < other.file
- return self.dirpath < other.dirpath
-
- def process(self, command, potfile, domain, keep_pot=False):
- """
- Extract translatable literals from self.file for :param domain:
- creating or updating the :param potfile: POT file.
-
- Uses the xgettext GNU gettext utility.
- """
-
- from django.utils.translation import templatize
-
- if command.verbosity > 1:
- command.stdout.write('processing file %s in %s\n' % (self.file, self.dirpath))
- _, file_ext = os.path.splitext(self.file)
- if domain == 'djangojs' and file_ext in command.extensions:
- is_templatized = True
- orig_file = os.path.join(self.dirpath, self.file)
- with open(orig_file) as fp:
- src_data = fp.read()
- src_data = prepare_js_for_gettext(src_data)
- thefile = '%s.c' % self.file
- work_file = os.path.join(self.dirpath, thefile)
- with open(work_file, "w") as fp:
- fp.write(src_data)
- args = [
- 'xgettext',
- '-d', domain,
- '--language=C',
- '--keyword=gettext_noop',
- '--keyword=gettext_lazy',
- '--keyword=ngettext_lazy:1,2',
- '--keyword=pgettext:1c,2',
- '--keyword=npgettext:1c,2,3',
- '--from-code=UTF-8',
- '--add-comments=Translators',
- '--output=-'
- ]
- if command.wrap:
- args.append(command.wrap)
- if command.location:
- args.append(command.location)
- args.append(work_file)
- elif domain == 'django' and (file_ext == '.py' or file_ext in command.extensions):
- thefile = self.file
- orig_file = os.path.join(self.dirpath, self.file)
- is_templatized = file_ext in command.extensions
- if is_templatized:
- with open(orig_file, "rU") as fp:
- src_data = fp.read()
- thefile = '%s.py' % self.file
- content = templatize(src_data, orig_file[2:])
- with open(os.path.join(self.dirpath, thefile), "w") as fp:
- fp.write(content)
- work_file = os.path.join(self.dirpath, thefile)
- args = [
- 'xgettext',
- '-d', domain,
- '--language=Python',
- '--keyword=gettext_noop',
- '--keyword=gettext_lazy',
- '--keyword=ngettext_lazy:1,2',
- '--keyword=ugettext_noop',
- '--keyword=ugettext_lazy',
- '--keyword=ungettext_lazy:1,2',
- '--keyword=pgettext:1c,2',
- '--keyword=npgettext:1c,2,3',
- '--keyword=pgettext_lazy:1c,2',
- '--keyword=npgettext_lazy:1c,2,3',
- '--from-code=UTF-8',
- '--add-comments=Translators',
- '--output=-'
- ]
- if command.wrap:
- args.append(command.wrap)
- if command.location:
- args.append(command.location)
- args.append(work_file)
- else:
- return
- msgs, errors, status = popen_wrapper(args)
- if errors:
- if status != STATUS_OK:
- if is_templatized:
- os.unlink(work_file)
- if not keep_pot and os.path.exists(potfile):
- os.unlink(potfile)
- raise CommandError(
- "errors happened while running xgettext on %s\n%s" %
- (self.file, errors))
- elif command.verbosity > 0:
- # Print warnings
- command.stdout.write(errors)
- if msgs:
- if is_templatized:
- # Remove '.py' suffix
- if os.name =='nt':
- # Preserve '.\' prefix on Windows to respect gettext behavior
- old = '#: ' + work_file
- new = '#: ' + orig_file
- else:
- old = '#: ' + work_file[2:]
- new = '#: ' + orig_file[2:]
- msgs = msgs.replace(old, new)
- write_pot_file(potfile, msgs)
- if is_templatized:
- os.unlink(work_file)
-
-def write_pot_file(potfile, msgs):
- """
- Write the :param potfile: POT file with the :param msgs: contents,
- previously making sure its format is valid.
- """
- if os.path.exists(potfile):
- # Strip the header
- msgs = '\n'.join(dropwhile(len, msgs.split('\n')))
- else:
- msgs = msgs.replace('charset=CHARSET', 'charset=UTF-8')
- with open(potfile, 'a') as fp:
- fp.write(msgs)
-
-
-class Command(NoArgsCommand):
- option_list = NoArgsCommand.option_list + (
- make_option('--locale', '-l', default=None, dest='locale', action='append',
- help='Creates or updates the message files for the given locale(s) (e.g. pt_BR). '
- 'Can be used multiple times.'),
- make_option('--domain', '-d', default='django', dest='domain',
- help='The domain of the message files (default: "django").'),
- make_option('--all', '-a', action='store_true', dest='all',
- default=False, help='Updates the message files for all existing locales.'),
- make_option('--extension', '-e', dest='extensions',
- help='The file extension(s) to examine (default: "html,txt", or "js" if the domain is "djangojs"). Separate multiple extensions with commas, or use -e multiple times.',
- action='append'),
- make_option('--symlinks', '-s', action='store_true', dest='symlinks',
- default=False, help='Follows symlinks to directories when examining source code and templates for translation strings.'),
- make_option('--ignore', '-i', action='append', dest='ignore_patterns',
- default=[], metavar='PATTERN', help='Ignore files or directories matching this glob-style pattern. Use multiple times to ignore more.'),
- make_option('--no-default-ignore', action='store_false', dest='use_default_ignore_patterns',
- default=True, help="Don't ignore the common glob-style patterns 'CVS', '.*', '*~' and '*.pyc'."),
- make_option('--no-wrap', action='store_true', dest='no_wrap',
- default=False, help="Don't break long message lines into several lines."),
- make_option('--no-location', action='store_true', dest='no_location',
- default=False, help="Don't write '#: filename:line' lines."),
- make_option('--no-obsolete', action='store_true', dest='no_obsolete',
- default=False, help="Remove obsolete message strings."),
- make_option('--keep-pot', action='store_true', dest='keep_pot',
- default=False, help="Keep .pot file after making messages. Useful when debugging."),
- )
- help = ("Runs over the entire source tree of the current directory and "
-"pulls out all strings marked for translation. It creates (or updates) a message "
-"file in the conf/locale (in the django tree) or locale (for projects and "
-"applications) directory.\n\nYou must run this command with one of either the "
-"--locale or --all options.")
-
- requires_model_validation = False
- leave_locale_alone = True
-
- def handle_noargs(self, *args, **options):
- locale = options.get('locale')
- self.domain = options.get('domain')
- self.verbosity = int(options.get('verbosity'))
- process_all = options.get('all')
- extensions = options.get('extensions')
- self.symlinks = options.get('symlinks')
- ignore_patterns = options.get('ignore_patterns')
- if options.get('use_default_ignore_patterns'):
- ignore_patterns += ['CVS', '.*', '*~', '*.pyc']
- self.ignore_patterns = list(set(ignore_patterns))
- self.wrap = '--no-wrap' if options.get('no_wrap') else ''
- self.location = '--no-location' if options.get('no_location') else ''
- self.no_obsolete = options.get('no_obsolete')
- self.keep_pot = options.get('keep_pot')
-
- if self.domain not in ('django', 'djangojs'):
- raise CommandError("currently makemessages only supports domains "
- "'django' and 'djangojs'")
- if self.domain == 'djangojs':
- exts = extensions if extensions else ['js']
- else:
- exts = extensions if extensions else ['html', 'txt']
- self.extensions = handle_extensions(exts)
-
- if (locale is None and not process_all) or self.domain is None:
- raise CommandError("Type '%s help %s' for usage information." % (
- os.path.basename(sys.argv[0]), sys.argv[1]))
-
- if self.verbosity > 1:
- self.stdout.write('examining files with the extensions: %s\n'
- % get_text_list(list(self.extensions), 'and'))
-
- # Need to ensure that the i18n framework is enabled
- from django.conf import settings
- if settings.configured:
- settings.USE_I18N = True
- else:
- settings.configure(USE_I18N = True)
-
- self.invoked_for_django = False
- if os.path.isdir(os.path.join('conf', 'locale')):
- localedir = os.path.abspath(os.path.join('conf', 'locale'))
- self.invoked_for_django = True
- # Ignoring all contrib apps
- self.ignore_patterns += ['contrib/*']
- elif os.path.isdir('locale'):
- localedir = os.path.abspath('locale')
- else:
- raise CommandError("This script should be run from the Django Git "
- "tree or your project or app tree. If you did indeed run it "
- "from the Git checkout or your project or application, "
- "maybe you are just missing the conf/locale (in the django "
- "tree) or locale (for project and application) directory? It "
- "is not created automatically, you have to create it by hand "
- "if you want to enable i18n for your project or application.")
-
- check_programs('xgettext')
-
- potfile = self.build_pot_file(localedir)
-
- # Build po files for each selected locale
- locales = []
- if locale is not None:
- locales = locale
- elif process_all:
- locale_dirs = filter(os.path.isdir, glob.glob('%s/*' % localedir))
- locales = [os.path.basename(l) for l in locale_dirs]
-
- if locales:
- check_programs('msguniq', 'msgmerge', 'msgattrib')
-
- try:
- for locale in locales:
- if self.verbosity > 0:
- self.stdout.write("processing locale %s\n" % locale)
- self.write_po_file(potfile, locale)
- finally:
- if not self.keep_pot and os.path.exists(potfile):
- os.unlink(potfile)
-
- def build_pot_file(self, localedir):
- file_list = self.find_files(".")
-
- potfile = os.path.join(localedir, '%s.pot' % str(self.domain))
- if os.path.exists(potfile):
- # Remove a previous undeleted potfile, if any
- os.unlink(potfile)
-
- for f in file_list:
- try:
- f.process(self, potfile, self.domain, self.keep_pot)
- except UnicodeDecodeError:
- self.stdout.write("UnicodeDecodeError: skipped file %s in %s" % (f.file, f.dirpath))
- return potfile
-
- def find_files(self, root):
- """
- Helper method to get all files in the given root.
- """
-
- def is_ignored(path, ignore_patterns):
- """
- Check if the given path should be ignored or not.
- """
- filename = os.path.basename(path)
- ignore = lambda pattern: fnmatch.fnmatchcase(filename, pattern)
- return any(ignore(pattern) for pattern in ignore_patterns)
-
- dir_suffix = '%s*' % os.sep
- norm_patterns = [p[:-len(dir_suffix)] if p.endswith(dir_suffix) else p for p in self.ignore_patterns]
- all_files = []
- for dirpath, dirnames, filenames in os.walk(root, topdown=True, followlinks=self.symlinks):
- for dirname in dirnames[:]:
- if is_ignored(os.path.normpath(os.path.join(dirpath, dirname)), norm_patterns):
- dirnames.remove(dirname)
- if self.verbosity > 1:
- self.stdout.write('ignoring directory %s\n' % dirname)
- for filename in filenames:
- if is_ignored(os.path.normpath(os.path.join(dirpath, filename)), self.ignore_patterns):
- if self.verbosity > 1:
- self.stdout.write('ignoring file %s in %s\n' % (filename, dirpath))
- else:
- all_files.append(TranslatableFile(dirpath, filename))
- return sorted(all_files)
-
- def write_po_file(self, potfile, locale):
- """
- Creates or updates the PO file for self.domain and :param locale:.
- Uses contents of the existing :param potfile:.
-
- Uses mguniq, msgmerge, and msgattrib GNU gettext utilities.
- """
- args = ['msguniq', '--to-code=utf-8']
- if self.wrap:
- args.append(self.wrap)
- if self.location:
- args.append(self.location)
- args.append(potfile)
- msgs, errors, status = popen_wrapper(args)
- if errors:
- if status != STATUS_OK:
- raise CommandError(
- "errors happened while running msguniq\n%s" % errors)
- elif self.verbosity > 0:
- self.stdout.write(errors)
-
- basedir = os.path.join(os.path.dirname(potfile), locale, 'LC_MESSAGES')
- if not os.path.isdir(basedir):
- os.makedirs(basedir)
- pofile = os.path.join(basedir, '%s.po' % str(self.domain))
-
- if os.path.exists(pofile):
- with open(potfile, 'w') as fp:
- fp.write(msgs)
- args = ['msgmerge', '-q']
- if self.wrap:
- args.append(self.wrap)
- if self.location:
- args.append(self.location)
- args.extend([pofile, potfile])
- msgs, errors, status = popen_wrapper(args)
- if errors:
- if status != STATUS_OK:
- raise CommandError(
- "errors happened while running msgmerge\n%s" % errors)
- elif self.verbosity > 0:
- self.stdout.write(errors)
- elif not self.invoked_for_django:
- msgs = self.copy_plural_forms(msgs, locale)
- msgs = msgs.replace(
- "#. #-#-#-#-# %s.pot (PACKAGE VERSION) #-#-#-#-#\n" % self.domain, "")
- with open(pofile, 'w') as fp:
- fp.write(msgs)
-
- if self.no_obsolete:
- args = ['msgattrib', '-o', pofile, '--no-obsolete']
- if self.wrap:
- args.append(self.wrap)
- if self.location:
- args.append(self.location)
- args.append(pofile)
- msgs, errors, status = popen_wrapper(args)
- if errors:
- if status != STATUS_OK:
- raise CommandError(
- "errors happened while running msgattrib\n%s" % errors)
- elif self.verbosity > 0:
- self.stdout.write(errors)
-
- def copy_plural_forms(self, msgs, locale):
- """
- Copies plural forms header contents from a Django catalog of locale to
- the msgs string, inserting it at the right place. msgs should be the
- contents of a newly created .po file.
- """
- django_dir = os.path.normpath(os.path.join(os.path.dirname(django.__file__)))
- if self.domain == 'djangojs':
- domains = ('djangojs', 'django')
- else:
- domains = ('django',)
- for domain in domains:
- django_po = os.path.join(django_dir, 'conf', 'locale', locale, 'LC_MESSAGES', '%s.po' % domain)
- if os.path.exists(django_po):
- with io.open(django_po, 'rU', encoding='utf-8') as fp:
- m = plural_forms_re.search(fp.read())
- if m:
- plural_form_line = force_str(m.group('value'))
- if self.verbosity > 1:
- self.stdout.write("copying plural forms: %s\n" % plural_form_line)
- lines = []
- found = False
- for line in msgs.split('\n'):
- if not found and (not line or plural_forms_re.search(line)):
- line = '%s\n' % plural_form_line
- found = True
- lines.append(line)
- msgs = '\n'.join(lines)
- break
- return msgs
diff --git a/lib/python2.7/site-packages/django/core/management/commands/runfcgi.py b/lib/python2.7/site-packages/django/core/management/commands/runfcgi.py
deleted file mode 100644
index a60d4eb..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/runfcgi.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from django.core.management.base import BaseCommand
-
-class Command(BaseCommand):
- help = "Runs this project as a FastCGI application. Requires flup."
- args = '[various KEY=val options, use `runfcgi help` for help]'
-
- def handle(self, *args, **options):
- from django.conf import settings
- from django.utils import translation
- # Activate the current language, because it won't get activated later.
- try:
- translation.activate(settings.LANGUAGE_CODE)
- except AttributeError:
- pass
- from django.core.servers.fastcgi import runfastcgi
- runfastcgi(args)
-
- def usage(self, subcommand):
- from django.core.servers.fastcgi import FASTCGI_HELP
- return FASTCGI_HELP
diff --git a/lib/python2.7/site-packages/django/core/management/commands/runserver.py b/lib/python2.7/site-packages/django/core/management/commands/runserver.py
deleted file mode 100644
index 503cff2..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/runserver.py
+++ /dev/null
@@ -1,149 +0,0 @@
-from __future__ import unicode_literals
-
-from optparse import make_option
-from datetime import datetime
-import errno
-import os
-import re
-import sys
-import socket
-
-from django.core.management.base import BaseCommand, CommandError
-from django.core.servers.basehttp import run, get_internal_wsgi_application
-from django.utils import autoreload
-from django.utils import six
-
-naiveip_re = re.compile(r"""^(?:
-(?P<addr>
- (?P<ipv4>\d{1,3}(?:\.\d{1,3}){3}) | # IPv4 address
- (?P<ipv6>\[[a-fA-F0-9:]+\]) | # IPv6 address
- (?P<fqdn>[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*) # FQDN
-):)?(?P<port>\d+)$""", re.X)
-DEFAULT_PORT = "8000"
-
-
-class Command(BaseCommand):
- option_list = BaseCommand.option_list + (
- make_option('--ipv6', '-6', action='store_true', dest='use_ipv6', default=False,
- help='Tells Django to use a IPv6 address.'),
- make_option('--nothreading', action='store_false', dest='use_threading', default=True,
- help='Tells Django to NOT use threading.'),
- make_option('--noreload', action='store_false', dest='use_reloader', default=True,
- help='Tells Django to NOT use the auto-reloader.'),
- )
- help = "Starts a lightweight Web server for development."
- args = '[optional port number, or ipaddr:port]'
-
- # Validation is called explicitly each time the server is reloaded.
- requires_model_validation = False
-
- def get_handler(self, *args, **options):
- """
- Returns the default WSGI handler for the runner.
- """
- return get_internal_wsgi_application()
-
- def handle(self, addrport='', *args, **options):
- from django.conf import settings
-
- if not settings.DEBUG and not settings.ALLOWED_HOSTS:
- raise CommandError('You must set settings.ALLOWED_HOSTS if DEBUG is False.')
-
- self.use_ipv6 = options.get('use_ipv6')
- if self.use_ipv6 and not socket.has_ipv6:
- raise CommandError('Your Python does not support IPv6.')
- if args:
- raise CommandError('Usage is runserver %s' % self.args)
- self._raw_ipv6 = False
- if not addrport:
- self.addr = ''
- self.port = DEFAULT_PORT
- else:
- m = re.match(naiveip_re, addrport)
- if m is None:
- raise CommandError('"%s" is not a valid port number '
- 'or address:port pair.' % addrport)
- self.addr, _ipv4, _ipv6, _fqdn, self.port = m.groups()
- if not self.port.isdigit():
- raise CommandError("%r is not a valid port number." % self.port)
- if self.addr:
- if _ipv6:
- self.addr = self.addr[1:-1]
- self.use_ipv6 = True
- self._raw_ipv6 = True
- elif self.use_ipv6 and not _fqdn:
- raise CommandError('"%s" is not a valid IPv6 address.' % self.addr)
- if not self.addr:
- self.addr = '::1' if self.use_ipv6 else '127.0.0.1'
- self._raw_ipv6 = bool(self.use_ipv6)
- self.run(*args, **options)
-
- def run(self, *args, **options):
- """
- Runs the server, using the autoreloader if needed
- """
- use_reloader = options.get('use_reloader')
-
- if use_reloader:
- autoreload.main(self.inner_run, args, options)
- else:
- self.inner_run(*args, **options)
-
- def inner_run(self, *args, **options):
- from django.conf import settings
- from django.utils import translation
-
- threading = options.get('use_threading')
- shutdown_message = options.get('shutdown_message', '')
- quit_command = 'CTRL-BREAK' if sys.platform == 'win32' else 'CONTROL-C'
-
- self.stdout.write("Validating models...\n\n")
- self.validate(display_num_errors=True)
- now = datetime.now().strftime('%B %d, %Y - %X')
- if six.PY2:
- now = now.decode('utf-8')
-
- self.stdout.write((
- "%(started_at)s\n"
- "Django version %(version)s, using settings %(settings)r\n"
- "Starting development server at http://%(addr)s:%(port)s/\n"
- "Quit the server with %(quit_command)s.\n"
- ) % {
- "started_at": now,
- "version": self.get_version(),
- "settings": settings.SETTINGS_MODULE,
- "addr": '[%s]' % self.addr if self._raw_ipv6 else self.addr,
- "port": self.port,
- "quit_command": quit_command,
- })
- # django.core.management.base forces the locale to en-us. We should
- # set it up correctly for the first request (particularly important
- # in the "--noreload" case).
- translation.activate(settings.LANGUAGE_CODE)
-
- try:
- handler = self.get_handler(*args, **options)
- run(self.addr, int(self.port), handler,
- ipv6=self.use_ipv6, threading=threading)
- except socket.error as e:
- # Use helpful error messages instead of ugly tracebacks.
- ERRORS = {
- errno.EACCES: "You don't have permission to access that port.",
- errno.EADDRINUSE: "That port is already in use.",
- errno.EADDRNOTAVAIL: "That IP address can't be assigned-to.",
- }
- try:
- error_text = ERRORS[e.errno]
- except KeyError:
- error_text = str(e)
- self.stderr.write("Error: %s" % error_text)
- # Need to use an OS exit because sys.exit doesn't work in a thread
- os._exit(1)
- except KeyboardInterrupt:
- if shutdown_message:
- self.stdout.write(shutdown_message)
- sys.exit(0)
-
-
-# Kept for backward compatibility
-BaseRunserverCommand = Command
diff --git a/lib/python2.7/site-packages/django/core/management/commands/shell.py b/lib/python2.7/site-packages/django/core/management/commands/shell.py
deleted file mode 100644
index 00a6602..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/shell.py
+++ /dev/null
@@ -1,113 +0,0 @@
-import os
-from django.core.management.base import NoArgsCommand
-from optparse import make_option
-
-
-class Command(NoArgsCommand):
- shells = ['ipython', 'bpython']
-
- option_list = NoArgsCommand.option_list + (
- make_option('--plain', action='store_true', dest='plain',
- help='Tells Django to use plain Python, not IPython or bpython.'),
- make_option('--no-startup', action='store_true', dest='no_startup',
- help='When using plain Python, ignore the PYTHONSTARTUP environment variable and ~/.pythonrc.py script.'),
- make_option('-i', '--interface', action='store', type='choice', choices=shells,
- dest='interface',
- help='Specify an interactive interpreter interface. Available options: "ipython" and "bpython"'),
-
- )
- help = "Runs a Python interactive interpreter. Tries to use IPython or bpython, if one of them is available."
- requires_model_validation = False
-
- def _ipython_pre_011(self):
- """Start IPython pre-0.11"""
- from IPython.Shell import IPShell
- shell = IPShell(argv=[])
- shell.mainloop()
-
- def _ipython_pre_100(self):
- """Start IPython pre-1.0.0"""
- from IPython.frontend.terminal.ipapp import TerminalIPythonApp
- app = TerminalIPythonApp.instance()
- app.initialize(argv=[])
- app.start()
-
- def _ipython(self):
- """Start IPython >= 1.0"""
- from IPython import start_ipython
- start_ipython(argv=[])
-
- def ipython(self):
- """Start any version of IPython"""
- for ip in (self._ipython, self._ipython_pre_100, self._ipython_pre_011):
- try:
- ip()
- except ImportError:
- pass
- else:
- return
- # no IPython, raise ImportError
- raise ImportError("No IPython")
-
- def bpython(self):
- import bpython
- bpython.embed()
-
- def run_shell(self, shell=None):
- available_shells = [shell] if shell else self.shells
-
- for shell in available_shells:
- try:
- return getattr(self, shell)()
- except ImportError:
- pass
- raise ImportError
-
- def handle_noargs(self, **options):
- # XXX: (Temporary) workaround for ticket #1796: force early loading of all
- # models from installed apps.
- from django.db.models.loading import get_models
- get_models()
-
- use_plain = options.get('plain', False)
- no_startup = options.get('no_startup', False)
- interface = options.get('interface', None)
-
- try:
- if use_plain:
- # Don't bother loading IPython, because the user wants plain Python.
- raise ImportError
-
- self.run_shell(shell=interface)
- except ImportError:
- import code
- # Set up a dictionary to serve as the environment for the shell, so
- # that tab completion works on objects that are imported at runtime.
- # See ticket 5082.
- imported_objects = {}
- try: # Try activating rlcompleter, because it's handy.
- import readline
- except ImportError:
- pass
- else:
- # We don't have to wrap the following import in a 'try', because
- # we already know 'readline' was imported successfully.
- import rlcompleter
- readline.set_completer(rlcompleter.Completer(imported_objects).complete)
- readline.parse_and_bind("tab:complete")
-
- # We want to honor both $PYTHONSTARTUP and .pythonrc.py, so follow system
- # conventions and get $PYTHONSTARTUP first then .pythonrc.py.
- if not no_startup:
- for pythonrc in (os.environ.get("PYTHONSTARTUP"), '~/.pythonrc.py'):
- if not pythonrc:
- continue
- pythonrc = os.path.expanduser(pythonrc)
- if not os.path.isfile(pythonrc):
- continue
- try:
- with open(pythonrc) as handle:
- exec(compile(handle.read(), pythonrc, 'exec'), imported_objects)
- except NameError:
- pass
- code.interact(local=imported_objects)
diff --git a/lib/python2.7/site-packages/django/core/management/commands/sql.py b/lib/python2.7/site-packages/django/core/management/commands/sql.py
deleted file mode 100644
index 52b2058..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/sql.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from __future__ import unicode_literals
-
-from optparse import make_option
-
-from django.core.management.base import AppCommand
-from django.core.management.sql import sql_create
-from django.db import connections, DEFAULT_DB_ALIAS
-
-class Command(AppCommand):
- help = "Prints the CREATE TABLE SQL statements for the given app name(s)."
-
- option_list = AppCommand.option_list + (
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Nominates a database to print the '
- 'SQL for. Defaults to the "default" database.'),
- )
-
- output_transaction = True
-
- def handle_app(self, app, **options):
- return '\n'.join(sql_create(app, self.style, connections[options.get('database')]))
diff --git a/lib/python2.7/site-packages/django/core/management/commands/sqlall.py b/lib/python2.7/site-packages/django/core/management/commands/sqlall.py
deleted file mode 100644
index 0e2c05b..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/sqlall.py
+++ /dev/null
@@ -1,22 +0,0 @@
-from __future__ import unicode_literals
-
-from optparse import make_option
-
-from django.core.management.base import AppCommand
-from django.core.management.sql import sql_all
-from django.db import connections, DEFAULT_DB_ALIAS
-
-
-class Command(AppCommand):
- help = "Prints the CREATE TABLE, custom SQL and CREATE INDEX SQL statements for the given model module name(s)."
-
- option_list = AppCommand.option_list + (
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Nominates a database to print the '
- 'SQL for. Defaults to the "default" database.'),
- )
-
- output_transaction = True
-
- def handle_app(self, app, **options):
- return '\n'.join(sql_all(app, self.style, connections[options.get('database')]))
diff --git a/lib/python2.7/site-packages/django/core/management/commands/sqlclear.py b/lib/python2.7/site-packages/django/core/management/commands/sqlclear.py
deleted file mode 100644
index ec2602d..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/sqlclear.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from __future__ import unicode_literals
-
-from optparse import make_option
-
-from django.core.management.base import AppCommand
-from django.core.management.sql import sql_delete
-from django.db import connections, DEFAULT_DB_ALIAS
-
-class Command(AppCommand):
- help = "Prints the DROP TABLE SQL statements for the given app name(s)."
-
- option_list = AppCommand.option_list + (
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Nominates a database to print the '
- 'SQL for. Defaults to the "default" database.'),
- )
-
- output_transaction = True
-
- def handle_app(self, app, **options):
- return '\n'.join(sql_delete(app, self.style, connections[options.get('database')]))
diff --git a/lib/python2.7/site-packages/django/core/management/commands/sqlcustom.py b/lib/python2.7/site-packages/django/core/management/commands/sqlcustom.py
deleted file mode 100644
index 0d46c4e..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/sqlcustom.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from __future__ import unicode_literals
-
-from optparse import make_option
-
-from django.core.management.base import AppCommand
-from django.core.management.sql import sql_custom
-from django.db import connections, DEFAULT_DB_ALIAS
-
-class Command(AppCommand):
- help = "Prints the custom table modifying SQL statements for the given app name(s)."
-
- option_list = AppCommand.option_list + (
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Nominates a database to print the '
- 'SQL for. Defaults to the "default" database.'),
- )
-
- output_transaction = True
-
- def handle_app(self, app, **options):
- return '\n'.join(sql_custom(app, self.style, connections[options.get('database')]))
diff --git a/lib/python2.7/site-packages/django/core/management/commands/sqldropindexes.py b/lib/python2.7/site-packages/django/core/management/commands/sqldropindexes.py
deleted file mode 100644
index fce7721..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/sqldropindexes.py
+++ /dev/null
@@ -1,23 +0,0 @@
-from __future__ import unicode_literals
-
-from optparse import make_option
-
-from django.core.management.base import AppCommand
-from django.core.management.sql import sql_destroy_indexes
-from django.db import connections, DEFAULT_DB_ALIAS
-
-class Command(AppCommand):
- help = "Prints the DROP INDEX SQL statements for the given model module name(s)."
-
- option_list = AppCommand.option_list + (
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Nominates a database to print the '
- 'SQL for. Defaults to the "default" database.'),
-
- )
-
- output_transaction = True
-
- def handle_app(self, app, **options):
- return '\n'.join(sql_destroy_indexes(app, self.style, connections[options.get('database')]))
-
diff --git a/lib/python2.7/site-packages/django/core/management/commands/sqlflush.py b/lib/python2.7/site-packages/django/core/management/commands/sqlflush.py
deleted file mode 100644
index b98ecfd..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/sqlflush.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from __future__ import unicode_literals
-
-from optparse import make_option
-
-from django.core.management.base import NoArgsCommand
-from django.core.management.sql import sql_flush
-from django.db import connections, DEFAULT_DB_ALIAS
-
-class Command(NoArgsCommand):
- help = "Returns a list of the SQL statements required to return all tables in the database to the state they were in just after they were installed."
-
- option_list = NoArgsCommand.option_list + (
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Nominates a database to print the '
- 'SQL for. Defaults to the "default" database.'),
- )
-
- output_transaction = True
-
- def handle_noargs(self, **options):
- return '\n'.join(sql_flush(self.style, connections[options.get('database')], only_django=True))
diff --git a/lib/python2.7/site-packages/django/core/management/commands/sqlindexes.py b/lib/python2.7/site-packages/django/core/management/commands/sqlindexes.py
deleted file mode 100644
index f95d4f1..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/sqlindexes.py
+++ /dev/null
@@ -1,22 +0,0 @@
-from __future__ import unicode_literals
-
-from optparse import make_option
-
-from django.core.management.base import AppCommand
-from django.core.management.sql import sql_indexes
-from django.db import connections, DEFAULT_DB_ALIAS
-
-class Command(AppCommand):
- help = "Prints the CREATE INDEX SQL statements for the given model module name(s)."
-
- option_list = AppCommand.option_list + (
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Nominates a database to print the '
- 'SQL for. Defaults to the "default" database.'),
-
- )
-
- output_transaction = True
-
- def handle_app(self, app, **options):
- return '\n'.join(sql_indexes(app, self.style, connections[options.get('database')]))
diff --git a/lib/python2.7/site-packages/django/core/management/commands/sqlinitialdata.py b/lib/python2.7/site-packages/django/core/management/commands/sqlinitialdata.py
deleted file mode 100644
index b9e2249..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/sqlinitialdata.py
+++ /dev/null
@@ -1,7 +0,0 @@
-from django.core.management.base import AppCommand, CommandError
-
-class Command(AppCommand):
- help = "RENAMED: see 'sqlcustom'"
-
- def handle(self, *apps, **options):
- raise CommandError("This command has been renamed. Use the 'sqlcustom' command instead.")
diff --git a/lib/python2.7/site-packages/django/core/management/commands/sqlsequencereset.py b/lib/python2.7/site-packages/django/core/management/commands/sqlsequencereset.py
deleted file mode 100644
index 7b9e85a..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/sqlsequencereset.py
+++ /dev/null
@@ -1,22 +0,0 @@
-from __future__ import unicode_literals
-
-from optparse import make_option
-
-from django.core.management.base import AppCommand
-from django.db import connections, models, DEFAULT_DB_ALIAS
-
-class Command(AppCommand):
- help = 'Prints the SQL statements for resetting sequences for the given app name(s).'
-
- option_list = AppCommand.option_list + (
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Nominates a database to print the '
- 'SQL for. Defaults to the "default" database.'),
-
- )
-
- output_transaction = True
-
- def handle_app(self, app, **options):
- connection = connections[options.get('database')]
- return '\n'.join(connection.ops.sequence_reset_sql(self.style, models.get_models(app, include_auto_created=True)))
diff --git a/lib/python2.7/site-packages/django/core/management/commands/startapp.py b/lib/python2.7/site-packages/django/core/management/commands/startapp.py
deleted file mode 100644
index 692ad09..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/startapp.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from django.core.management.base import CommandError
-from django.core.management.templates import TemplateCommand
-from django.utils.importlib import import_module
-
-
-class Command(TemplateCommand):
- help = ("Creates a Django app directory structure for the given app "
- "name in the current directory or optionally in the given "
- "directory.")
-
- def handle(self, app_name=None, target=None, **options):
- self.validate_name(app_name, "app")
-
- # Check that the app_name cannot be imported.
- try:
- import_module(app_name)
- except ImportError:
- pass
- else:
- raise CommandError("%r conflicts with the name of an existing "
- "Python module and cannot be used as an app "
- "name. Please try another name." % app_name)
-
- super(Command, self).handle('app', app_name, target, **options)
diff --git a/lib/python2.7/site-packages/django/core/management/commands/startproject.py b/lib/python2.7/site-packages/django/core/management/commands/startproject.py
deleted file mode 100644
index b143e6c..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/startproject.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from django.core.management.base import CommandError
-from django.core.management.templates import TemplateCommand
-from django.utils.crypto import get_random_string
-from django.utils.importlib import import_module
-
-
-class Command(TemplateCommand):
- help = ("Creates a Django project directory structure for the given "
- "project name in the current directory or optionally in the "
- "given directory.")
-
- def handle(self, project_name=None, target=None, *args, **options):
- self.validate_name(project_name, "project")
-
- # Check that the project_name cannot be imported.
- try:
- import_module(project_name)
- except ImportError:
- pass
- else:
- raise CommandError("%r conflicts with the name of an existing "
- "Python module and cannot be used as a "
- "project name. Please try another name." %
- project_name)
-
- # Create a random SECRET_KEY hash to put it in the main settings.
- chars = 'abcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*(-_=+)'
- options['secret_key'] = get_random_string(50, chars)
-
- super(Command, self).handle('project', project_name, target, **options)
diff --git a/lib/python2.7/site-packages/django/core/management/commands/syncdb.py b/lib/python2.7/site-packages/django/core/management/commands/syncdb.py
deleted file mode 100644
index 3e73d24..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/syncdb.py
+++ /dev/null
@@ -1,162 +0,0 @@
-from optparse import make_option
-import itertools
-import traceback
-
-from django.conf import settings
-from django.core.management import call_command
-from django.core.management.base import NoArgsCommand
-from django.core.management.color import no_style
-from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal, emit_pre_sync_signal
-from django.db import connections, router, transaction, models, DEFAULT_DB_ALIAS
-from django.utils.datastructures import SortedDict
-from django.utils.importlib import import_module
-
-
-class Command(NoArgsCommand):
- option_list = NoArgsCommand.option_list + (
- make_option('--noinput', action='store_false', dest='interactive', default=True,
- help='Tells Django to NOT prompt the user for input of any kind.'),
- make_option('--no-initial-data', action='store_false', dest='load_initial_data', default=True,
- help='Tells Django not to load any initial data after database synchronization.'),
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Nominates a database to synchronize. '
- 'Defaults to the "default" database.'),
- )
- help = "Create the database tables for all apps in INSTALLED_APPS whose tables haven't already been created."
-
- def handle_noargs(self, **options):
-
- verbosity = int(options.get('verbosity'))
- interactive = options.get('interactive')
- show_traceback = options.get('traceback')
- load_initial_data = options.get('load_initial_data')
-
- self.style = no_style()
-
- # Import the 'management' module within each installed app, to register
- # dispatcher events.
- for app_name in settings.INSTALLED_APPS:
- try:
- import_module('.management', app_name)
- except ImportError as exc:
- # This is slightly hackish. We want to ignore ImportErrors
- # if the "management" module itself is missing -- but we don't
- # want to ignore the exception if the management module exists
- # but raises an ImportError for some reason. The only way we
- # can do this is to check the text of the exception. Note that
- # we're a bit broad in how we check the text, because different
- # Python implementations may not use the same text.
- # CPython uses the text "No module named management"
- # PyPy uses "No module named myproject.myapp.management"
- msg = exc.args[0]
- if not msg.startswith('No module named') or 'management' not in msg:
- raise
-
- db = options.get('database')
- connection = connections[db]
- cursor = connection.cursor()
-
- # Get a list of already installed *models* so that references work right.
- tables = connection.introspection.table_names()
- seen_models = connection.introspection.installed_models(tables)
- created_models = set()
- pending_references = {}
-
- # Build the manifest of apps and models that are to be synchronized
- all_models = [
- (app.__name__.split('.')[-2],
- [m for m in models.get_models(app, include_auto_created=True)
- if router.allow_syncdb(db, m)])
- for app in models.get_apps()
- ]
-
- def model_installed(model):
- opts = model._meta
- converter = connection.introspection.table_name_converter
- return not ((converter(opts.db_table) in tables) or
- (opts.auto_created and converter(opts.auto_created._meta.db_table) in tables))
-
- manifest = SortedDict(
- (app_name, list(filter(model_installed, model_list)))
- for app_name, model_list in all_models
- )
-
- create_models = set([x for x in itertools.chain(*manifest.values())])
- emit_pre_sync_signal(create_models, verbosity, interactive, db)
-
- # Create the tables for each model
- if verbosity >= 1:
- self.stdout.write("Creating tables ...\n")
- with transaction.commit_on_success_unless_managed(using=db):
- for app_name, model_list in manifest.items():
- for model in model_list:
- # Create the model's database table, if it doesn't already exist.
- if verbosity >= 3:
- self.stdout.write("Processing %s.%s model\n" % (app_name, model._meta.object_name))
- sql, references = connection.creation.sql_create_model(model, self.style, seen_models)
- seen_models.add(model)
- created_models.add(model)
- for refto, refs in references.items():
- pending_references.setdefault(refto, []).extend(refs)
- if refto in seen_models:
- sql.extend(connection.creation.sql_for_pending_references(refto, self.style, pending_references))
- sql.extend(connection.creation.sql_for_pending_references(model, self.style, pending_references))
- if verbosity >= 1 and sql:
- self.stdout.write("Creating table %s\n" % model._meta.db_table)
- for statement in sql:
- cursor.execute(statement)
- tables.append(connection.introspection.table_name_converter(model._meta.db_table))
-
- # Send the post_syncdb signal, so individual apps can do whatever they need
- # to do at this point.
- emit_post_sync_signal(created_models, verbosity, interactive, db)
-
- # The connection may have been closed by a syncdb handler.
- cursor = connection.cursor()
-
- # Install custom SQL for the app (but only if this
- # is a model we've just created)
- if verbosity >= 1:
- self.stdout.write("Installing custom SQL ...\n")
- for app_name, model_list in manifest.items():
- for model in model_list:
- if model in created_models:
- custom_sql = custom_sql_for_model(model, self.style, connection)
- if custom_sql:
- if verbosity >= 2:
- self.stdout.write("Installing custom SQL for %s.%s model\n" % (app_name, model._meta.object_name))
- try:
- with transaction.commit_on_success_unless_managed(using=db):
- for sql in custom_sql:
- cursor.execute(sql)
- except Exception as e:
- self.stderr.write("Failed to install custom SQL for %s.%s model: %s\n" % \
- (app_name, model._meta.object_name, e))
- if show_traceback:
- traceback.print_exc()
- else:
- if verbosity >= 3:
- self.stdout.write("No custom SQL for %s.%s model\n" % (app_name, model._meta.object_name))
-
- if verbosity >= 1:
- self.stdout.write("Installing indexes ...\n")
- # Install SQL indices for all newly created models
- for app_name, model_list in manifest.items():
- for model in model_list:
- if model in created_models:
- index_sql = connection.creation.sql_indexes_for_model(model, self.style)
- if index_sql:
- if verbosity >= 2:
- self.stdout.write("Installing index for %s.%s model\n" % (app_name, model._meta.object_name))
- try:
- with transaction.commit_on_success_unless_managed(using=db):
- for sql in index_sql:
- cursor.execute(sql)
- except Exception as e:
- self.stderr.write("Failed to install index for %s.%s model: %s\n" % \
- (app_name, model._meta.object_name, e))
-
- # Load initial_data fixtures (unless that has been disabled)
- if load_initial_data:
- call_command('loaddata', 'initial_data', verbosity=verbosity,
- database=db, skip_validation=True)
diff --git a/lib/python2.7/site-packages/django/core/management/commands/test.py b/lib/python2.7/site-packages/django/core/management/commands/test.py
deleted file mode 100644
index 5232c37..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/test.py
+++ /dev/null
@@ -1,91 +0,0 @@
-import logging
-import sys
-import os
-from optparse import make_option, OptionParser
-
-from django.conf import settings
-from django.core.management.base import BaseCommand
-from django.test.utils import get_runner
-
-
-class Command(BaseCommand):
- option_list = BaseCommand.option_list + (
- make_option('--noinput',
- action='store_false', dest='interactive', default=True,
- help='Tells Django to NOT prompt the user for input of any kind.'),
- make_option('--failfast',
- action='store_true', dest='failfast', default=False,
- help='Tells Django to stop running the test suite after first '
- 'failed test.'),
- make_option('--testrunner',
- action='store', dest='testrunner',
- help='Tells Django to use specified test runner class instead of '
- 'the one specified by the TEST_RUNNER setting.'),
- make_option('--liveserver',
- action='store', dest='liveserver', default=None,
- help='Overrides the default address where the live server (used '
- 'with LiveServerTestCase) is expected to run from. The '
- 'default value is localhost:8081.'),
- )
- help = ('Discover and run tests in the specified modules or the current directory.')
- args = '[path.to.modulename|path.to.modulename.TestCase|path.to.modulename.TestCase.test_method]...'
-
- requires_model_validation = False
-
- def __init__(self):
- self.test_runner = None
- super(Command, self).__init__()
-
- def run_from_argv(self, argv):
- """
- Pre-parse the command line to extract the value of the --testrunner
- option. This allows a test runner to define additional command line
- arguments.
- """
- option = '--testrunner='
- for arg in argv[2:]:
- if arg.startswith(option):
- self.test_runner = arg[len(option):]
- break
- super(Command, self).run_from_argv(argv)
-
- def create_parser(self, prog_name, subcommand):
- test_runner_class = get_runner(settings, self.test_runner)
- options = self.option_list + getattr(
- test_runner_class, 'option_list', ())
- return OptionParser(prog=prog_name,
- usage=self.usage(subcommand),
- version=self.get_version(),
- option_list=options)
-
- def execute(self, *args, **options):
- if int(options['verbosity']) > 0:
- # ensure that deprecation warnings are displayed during testing
- # the following state is assumed:
- # logging.capturewarnings is true
- # a "default" level warnings filter has been added for
- # DeprecationWarning. See django.conf.LazySettings._configure_logging
- logger = logging.getLogger('py.warnings')
- handler = logging.StreamHandler()
- logger.addHandler(handler)
- super(Command, self).execute(*args, **options)
- if int(options['verbosity']) > 0:
- # remove the testing-specific handler
- logger.removeHandler(handler)
-
- def handle(self, *test_labels, **options):
- from django.conf import settings
- from django.test.utils import get_runner
-
- TestRunner = get_runner(settings, options.get('testrunner'))
- options['verbosity'] = int(options.get('verbosity'))
-
- if options.get('liveserver') is not None:
- os.environ['DJANGO_LIVE_TEST_SERVER_ADDRESS'] = options['liveserver']
- del options['liveserver']
-
- test_runner = TestRunner(**options)
- failures = test_runner.run_tests(test_labels)
-
- if failures:
- sys.exit(bool(failures))
diff --git a/lib/python2.7/site-packages/django/core/management/commands/testserver.py b/lib/python2.7/site-packages/django/core/management/commands/testserver.py
deleted file mode 100644
index 97fc8ea..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/testserver.py
+++ /dev/null
@@ -1,45 +0,0 @@
-from django.core.management.base import BaseCommand
-
-from optparse import make_option
-
-class Command(BaseCommand):
- option_list = BaseCommand.option_list + (
- make_option('--noinput', action='store_false', dest='interactive', default=True,
- help='Tells Django to NOT prompt the user for input of any kind.'),
- make_option('--addrport', action='store', dest='addrport',
- type='string', default='',
- help='port number or ipaddr:port to run the server on'),
- make_option('--ipv6', '-6', action='store_true', dest='use_ipv6', default=False,
- help='Tells Django to use a IPv6 address.'),
- )
- help = 'Runs a development server with data from the given fixture(s).'
- args = '[fixture ...]'
-
- requires_model_validation = False
-
- def handle(self, *fixture_labels, **options):
- from django.core.management import call_command
- from django.db import connection
-
- verbosity = int(options.get('verbosity'))
- interactive = options.get('interactive')
- addrport = options.get('addrport')
-
- # Create a test database.
- db_name = connection.creation.create_test_db(verbosity=verbosity, autoclobber=not interactive)
-
- # Import the fixture data into the test database.
- call_command('loaddata', *fixture_labels, **{'verbosity': verbosity})
-
- # Run the development server. Turn off auto-reloading because it causes
- # a strange error -- it causes this handle() method to be called
- # multiple times.
- shutdown_message = '\nServer stopped.\nNote that the test database, %r, has not been deleted. You can explore it on your own.' % db_name
- use_threading = connection.features.test_db_allows_multiple_connections
- call_command('runserver',
- addrport=addrport,
- shutdown_message=shutdown_message,
- use_reloader=False,
- use_ipv6=options['use_ipv6'],
- use_threading=use_threading
- )
diff --git a/lib/python2.7/site-packages/django/core/management/commands/validate.py b/lib/python2.7/site-packages/django/core/management/commands/validate.py
deleted file mode 100644
index 0dec3ea..0000000
--- a/lib/python2.7/site-packages/django/core/management/commands/validate.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from django.core.management.base import NoArgsCommand
-
-
-class Command(NoArgsCommand):
- help = "Validates all installed models."
-
- requires_model_validation = False
-
- def handle_noargs(self, **options):
- self.validate(display_num_errors=True)
diff --git a/lib/python2.7/site-packages/django/core/management/sql.py b/lib/python2.7/site-packages/django/core/management/sql.py
deleted file mode 100644
index b58d89f..0000000
--- a/lib/python2.7/site-packages/django/core/management/sql.py
+++ /dev/null
@@ -1,216 +0,0 @@
-from __future__ import unicode_literals
-
-import codecs
-import os
-import re
-
-from django.conf import settings
-from django.core.management.base import CommandError
-from django.db import models
-from django.db.models import get_models
-from django.utils._os import upath
-
-
-def sql_create(app, style, connection):
- "Returns a list of the CREATE TABLE SQL statements for the given app."
-
- if connection.settings_dict['ENGINE'] == 'django.db.backends.dummy':
- # This must be the "dummy" database backend, which means the user
- # hasn't set ENGINE for the database.
- raise CommandError("Django doesn't know which syntax to use for your SQL statements,\n" +
- "because you haven't properly specified the ENGINE setting for the database.\n" +
- "see: https://docs.djangoproject.com/en/dev/ref/settings/#databases")
-
- # Get installed models, so we generate REFERENCES right.
- # We trim models from the current app so that the sqlreset command does not
- # generate invalid SQL (leaving models out of known_models is harmless, so
- # we can be conservative).
- app_models = models.get_models(app, include_auto_created=True)
- final_output = []
- tables = connection.introspection.table_names()
- known_models = set([model for model in connection.introspection.installed_models(tables) if model not in app_models])
- pending_references = {}
-
- for model in app_models:
- output, references = connection.creation.sql_create_model(model, style, known_models)
- final_output.extend(output)
- for refto, refs in references.items():
- pending_references.setdefault(refto, []).extend(refs)
- if refto in known_models:
- final_output.extend(connection.creation.sql_for_pending_references(refto, style, pending_references))
- final_output.extend(connection.creation.sql_for_pending_references(model, style, pending_references))
- # Keep track of the fact that we've created the table for this model.
- known_models.add(model)
-
- # Handle references to tables that are from other apps
- # but don't exist physically.
- not_installed_models = set(pending_references.keys())
- if not_installed_models:
- alter_sql = []
- for model in not_installed_models:
- alter_sql.extend(['-- ' + sql for sql in
- connection.creation.sql_for_pending_references(model, style, pending_references)])
- if alter_sql:
- final_output.append('-- The following references should be added but depend on non-existent tables:')
- final_output.extend(alter_sql)
-
- return final_output
-
-
-def sql_delete(app, style, connection):
- "Returns a list of the DROP TABLE SQL statements for the given app."
-
- # This should work even if a connection isn't available
- try:
- cursor = connection.cursor()
- except:
- cursor = None
-
- # Figure out which tables already exist
- if cursor:
- table_names = connection.introspection.table_names(cursor)
- else:
- table_names = []
-
- output = []
-
- # Output DROP TABLE statements for standard application tables.
- to_delete = set()
-
- references_to_delete = {}
- app_models = models.get_models(app, include_auto_created=True)
- for model in app_models:
- if cursor and connection.introspection.table_name_converter(model._meta.db_table) in table_names:
- # The table exists, so it needs to be dropped
- opts = model._meta
- for f in opts.local_fields:
- if f.rel and f.rel.to not in to_delete:
- references_to_delete.setdefault(f.rel.to, []).append((model, f))
-
- to_delete.add(model)
-
- for model in app_models:
- if connection.introspection.table_name_converter(model._meta.db_table) in table_names:
- output.extend(connection.creation.sql_destroy_model(model, references_to_delete, style))
-
- # Close database connection explicitly, in case this output is being piped
- # directly into a database client, to avoid locking issues.
- if cursor:
- cursor.close()
- connection.close()
-
- return output[::-1] # Reverse it, to deal with table dependencies.
-
-
-def sql_flush(style, connection, only_django=False, reset_sequences=True, allow_cascade=False):
- """
- Returns a list of the SQL statements used to flush the database.
-
- If only_django is True, then only table names that have associated Django
- models and are in INSTALLED_APPS will be included.
- """
- if only_django:
- tables = connection.introspection.django_table_names(only_existing=True)
- else:
- tables = connection.introspection.table_names()
- seqs = connection.introspection.sequence_list() if reset_sequences else ()
- statements = connection.ops.sql_flush(style, tables, seqs, allow_cascade)
- return statements
-
-
-def sql_custom(app, style, connection):
- "Returns a list of the custom table modifying SQL statements for the given app."
- output = []
-
- app_models = get_models(app)
-
- for model in app_models:
- output.extend(custom_sql_for_model(model, style, connection))
-
- return output
-
-
-def sql_indexes(app, style, connection):
- "Returns a list of the CREATE INDEX SQL statements for all models in the given app."
- output = []
- for model in models.get_models(app, include_auto_created=True):
- output.extend(connection.creation.sql_indexes_for_model(model, style))
- return output
-
-
-def sql_destroy_indexes(app, style, connection):
- "Returns a list of the DROP INDEX SQL statements for all models in the given app."
- output = []
- for model in models.get_models(app, include_auto_created=True):
- output.extend(connection.creation.sql_destroy_indexes_for_model(model, style))
- return output
-
-
-def sql_all(app, style, connection):
- "Returns a list of CREATE TABLE SQL, initial-data inserts, and CREATE INDEX SQL for the given module."
- return sql_create(app, style, connection) + sql_custom(app, style, connection) + sql_indexes(app, style, connection)
-
-
-def _split_statements(content):
- comment_re = re.compile(r"^((?:'[^']*'|[^'])*?)--.*$")
- statements = []
- statement = []
- for line in content.split("\n"):
- cleaned_line = comment_re.sub(r"\1", line).strip()
- if not cleaned_line:
- continue
- statement.append(cleaned_line)
- if cleaned_line.endswith(";"):
- statements.append(" ".join(statement))
- statement = []
- return statements
-
-
-def custom_sql_for_model(model, style, connection):
- opts = model._meta
- app_dir = os.path.normpath(os.path.join(os.path.dirname(upath(models.get_app(model._meta.app_label).__file__)), 'sql'))
- output = []
-
- # Post-creation SQL should come before any initial SQL data is loaded.
- # However, this should not be done for models that are unmanaged or
- # for fields that are part of a parent model (via model inheritance).
- if opts.managed:
- post_sql_fields = [f for f in opts.local_fields if hasattr(f, 'post_create_sql')]
- for f in post_sql_fields:
- output.extend(f.post_create_sql(style, model._meta.db_table))
-
- # Find custom SQL, if it's available.
- backend_name = connection.settings_dict['ENGINE'].split('.')[-1]
- sql_files = [os.path.join(app_dir, "%s.%s.sql" % (opts.model_name, backend_name)),
- os.path.join(app_dir, "%s.sql" % opts.model_name)]
- for sql_file in sql_files:
- if os.path.exists(sql_file):
- with codecs.open(sql_file, 'U', encoding=settings.FILE_CHARSET) as fp:
- # Some backends can't execute more than one SQL statement at a time,
- # so split into separate statements.
- output.extend(_split_statements(fp.read()))
- return output
-
-
-def emit_pre_sync_signal(create_models, verbosity, interactive, db):
- # Emit the pre_sync signal for every application.
- for app in models.get_apps():
- app_name = app.__name__.split('.')[-2]
- if verbosity >= 2:
- print("Running pre-sync handlers for application %s" % app_name)
- models.signals.pre_syncdb.send(sender=app, app=app,
- create_models=create_models,
- verbosity=verbosity,
- interactive=interactive,
- db=db)
-
-
-def emit_post_sync_signal(created_models, verbosity, interactive, db):
- # Emit the post_sync signal for every application.
- for app in models.get_apps():
- app_name = app.__name__.split('.')[-2]
- if verbosity >= 2:
- print("Running post-sync handlers for application %s" % app_name)
- models.signals.post_syncdb.send(sender=app, app=app,
- created_models=created_models, verbosity=verbosity,
- interactive=interactive, db=db)
diff --git a/lib/python2.7/site-packages/django/core/management/templates.py b/lib/python2.7/site-packages/django/core/management/templates.py
deleted file mode 100644
index 164fd07..0000000
--- a/lib/python2.7/site-packages/django/core/management/templates.py
+++ /dev/null
@@ -1,325 +0,0 @@
-import cgi
-import errno
-import mimetypes
-import os
-import posixpath
-import re
-import shutil
-import stat
-import sys
-import tempfile
-
-from optparse import make_option
-from os import path
-
-import django
-from django.template import Template, Context
-from django.utils import archive
-from django.utils.six.moves.urllib.request import urlretrieve
-from django.utils._os import rmtree_errorhandler
-from django.core.management.base import BaseCommand, CommandError
-from django.core.management.utils import handle_extensions
-
-
-_drive_re = re.compile('^([a-z]):', re.I)
-_url_drive_re = re.compile('^([a-z])[:|]', re.I)
-
-
-class TemplateCommand(BaseCommand):
- """
- Copies either a Django application layout template or a Django project
- layout template into the specified directory.
-
- :param style: A color style object (see django.core.management.color).
- :param app_or_project: The string 'app' or 'project'.
- :param name: The name of the application or project.
- :param directory: The directory to which the template should be copied.
- :param options: The additional variables passed to project or app templates
- """
- args = "[name] [optional destination directory]"
- option_list = BaseCommand.option_list + (
- make_option('--template',
- action='store', dest='template',
- help='The path or URL to load the template from.'),
- make_option('--extension', '-e', dest='extensions',
- action='append', default=['py'],
- help='The file extension(s) to render (default: "py"). '
- 'Separate multiple extensions with commas, or use '
- '-e multiple times.'),
- make_option('--name', '-n', dest='files',
- action='append', default=[],
- help='The file name(s) to render. '
- 'Separate multiple extensions with commas, or use '
- '-n multiple times.')
- )
- requires_model_validation = False
- # Can't import settings during this command, because they haven't
- # necessarily been created.
- can_import_settings = False
- # The supported URL schemes
- url_schemes = ['http', 'https', 'ftp']
- # Can't perform any active locale changes during this command, because
- # setting might not be available at all.
- leave_locale_alone = True
-
- def handle(self, app_or_project, name, target=None, **options):
- self.app_or_project = app_or_project
- self.paths_to_remove = []
- self.verbosity = int(options.get('verbosity'))
-
- self.validate_name(name, app_or_project)
-
- # if some directory is given, make sure it's nicely expanded
- if target is None:
- top_dir = path.join(os.getcwd(), name)
- try:
- os.makedirs(top_dir)
- except OSError as e:
- if e.errno == errno.EEXIST:
- message = "'%s' already exists" % top_dir
- else:
- message = e
- raise CommandError(message)
- else:
- top_dir = os.path.abspath(path.expanduser(target))
- if not os.path.exists(top_dir):
- raise CommandError("Destination directory '%s' does not "
- "exist, please create it first." % top_dir)
-
- extensions = tuple(
- handle_extensions(options.get('extensions'), ignored=()))
- extra_files = []
- for file in options.get('files'):
- extra_files.extend(map(lambda x: x.strip(), file.split(',')))
- if self.verbosity >= 2:
- self.stdout.write("Rendering %s template files with "
- "extensions: %s\n" %
- (app_or_project, ', '.join(extensions)))
- self.stdout.write("Rendering %s template files with "
- "filenames: %s\n" %
- (app_or_project, ', '.join(extra_files)))
-
- base_name = '%s_name' % app_or_project
- base_subdir = '%s_template' % app_or_project
- base_directory = '%s_directory' % app_or_project
- if django.VERSION[-2] != 'final':
- docs_version = 'dev'
- else:
- docs_version = '%d.%d' % django.VERSION[:2]
-
- context = Context(dict(options, **{
- base_name: name,
- base_directory: top_dir,
- 'docs_version': docs_version,
- }), autoescape=False)
-
- # Setup a stub settings environment for template rendering
- from django.conf import settings
- if not settings.configured:
- settings.configure()
-
- template_dir = self.handle_template(options.get('template'),
- base_subdir)
- prefix_length = len(template_dir) + 1
-
- for root, dirs, files in os.walk(template_dir):
-
- path_rest = root[prefix_length:]
- relative_dir = path_rest.replace(base_name, name)
- if relative_dir:
- target_dir = path.join(top_dir, relative_dir)
- if not path.exists(target_dir):
- os.mkdir(target_dir)
-
- for dirname in dirs[:]:
- if dirname.startswith('.') or dirname == '__pycache__':
- dirs.remove(dirname)
-
- for filename in files:
- if filename.endswith(('.pyo', '.pyc', '.py.class')):
- # Ignore some files as they cause various breakages.
- continue
- old_path = path.join(root, filename)
- new_path = path.join(top_dir, relative_dir,
- filename.replace(base_name, name))
- if path.exists(new_path):
- raise CommandError("%s already exists, overlaying a "
- "project or app into an existing "
- "directory won't replace conflicting "
- "files" % new_path)
-
- # Only render the Python files, as we don't want to
- # accidentally render Django templates files
- with open(old_path, 'rb') as template_file:
- content = template_file.read()
- if filename.endswith(extensions) or filename in extra_files:
- content = content.decode('utf-8')
- template = Template(content)
- content = template.render(context)
- content = content.encode('utf-8')
- with open(new_path, 'wb') as new_file:
- new_file.write(content)
-
- if self.verbosity >= 2:
- self.stdout.write("Creating %s\n" % new_path)
- try:
- shutil.copymode(old_path, new_path)
- self.make_writeable(new_path)
- except OSError:
- self.stderr.write(
- "Notice: Couldn't set permission bits on %s. You're "
- "probably using an uncommon filesystem setup. No "
- "problem." % new_path, self.style.NOTICE)
-
- if self.paths_to_remove:
- if self.verbosity >= 2:
- self.stdout.write("Cleaning up temporary files.\n")
- for path_to_remove in self.paths_to_remove:
- if path.isfile(path_to_remove):
- os.remove(path_to_remove)
- else:
- shutil.rmtree(path_to_remove,
- onerror=rmtree_errorhandler)
-
- def handle_template(self, template, subdir):
- """
- Determines where the app or project templates are.
- Use django.__path__[0] as the default because we don't
- know into which directory Django has been installed.
- """
- if template is None:
- return path.join(django.__path__[0], 'conf', subdir)
- else:
- if template.startswith('file://'):
- template = template[7:]
- expanded_template = path.expanduser(template)
- expanded_template = path.normpath(expanded_template)
- if path.isdir(expanded_template):
- return expanded_template
- if self.is_url(template):
- # downloads the file and returns the path
- absolute_path = self.download(template)
- else:
- absolute_path = path.abspath(expanded_template)
- if path.exists(absolute_path):
- return self.extract(absolute_path)
-
- raise CommandError("couldn't handle %s template %s." %
- (self.app_or_project, template))
-
- def validate_name(self, name, app_or_project):
- if name is None:
- raise CommandError("you must provide %s %s name" % (
- "an" if app_or_project == "app" else "a", app_or_project))
- # If it's not a valid directory name.
- if not re.search(r'^[_a-zA-Z]\w*$', name):
- # Provide a smart error message, depending on the error.
- if not re.search(r'^[_a-zA-Z]', name):
- message = 'make sure the name begins with a letter or underscore'
- else:
- message = 'use only numbers, letters and underscores'
- raise CommandError("%r is not a valid %s name. Please %s." %
- (name, app_or_project, message))
-
- def download(self, url):
- """
- Downloads the given URL and returns the file name.
- """
- def cleanup_url(url):
- tmp = url.rstrip('/')
- filename = tmp.split('/')[-1]
- if url.endswith('/'):
- display_url = tmp + '/'
- else:
- display_url = url
- return filename, display_url
-
- prefix = 'django_%s_template_' % self.app_or_project
- tempdir = tempfile.mkdtemp(prefix=prefix, suffix='_download')
- self.paths_to_remove.append(tempdir)
- filename, display_url = cleanup_url(url)
-
- if self.verbosity >= 2:
- self.stdout.write("Downloading %s\n" % display_url)
- try:
- the_path, info = urlretrieve(url, path.join(tempdir, filename))
- except IOError as e:
- raise CommandError("couldn't download URL %s to %s: %s" %
- (url, filename, e))
-
- used_name = the_path.split('/')[-1]
-
- # Trying to get better name from response headers
- content_disposition = info.get('content-disposition')
- if content_disposition:
- _, params = cgi.parse_header(content_disposition)
- guessed_filename = params.get('filename') or used_name
- else:
- guessed_filename = used_name
-
- # Falling back to content type guessing
- ext = self.splitext(guessed_filename)[1]
- content_type = info.get('content-type')
- if not ext and content_type:
- ext = mimetypes.guess_extension(content_type)
- if ext:
- guessed_filename += ext
-
- # Move the temporary file to a filename that has better
- # chances of being recognnized by the archive utils
- if used_name != guessed_filename:
- guessed_path = path.join(tempdir, guessed_filename)
- shutil.move(the_path, guessed_path)
- return guessed_path
-
- # Giving up
- return the_path
-
- def splitext(self, the_path):
- """
- Like os.path.splitext, but takes off .tar, too
- """
- base, ext = posixpath.splitext(the_path)
- if base.lower().endswith('.tar'):
- ext = base[-4:] + ext
- base = base[:-4]
- return base, ext
-
- def extract(self, filename):
- """
- Extracts the given file to a temporarily and returns
- the path of the directory with the extracted content.
- """
- prefix = 'django_%s_template_' % self.app_or_project
- tempdir = tempfile.mkdtemp(prefix=prefix, suffix='_extract')
- self.paths_to_remove.append(tempdir)
- if self.verbosity >= 2:
- self.stdout.write("Extracting %s\n" % filename)
- try:
- archive.extract(filename, tempdir)
- return tempdir
- except (archive.ArchiveException, IOError) as e:
- raise CommandError("couldn't extract file %s to %s: %s" %
- (filename, tempdir, e))
-
- def is_url(self, template):
- """
- Returns True if the name looks like a URL
- """
- if ':' not in template:
- return False
- scheme = template.split(':', 1)[0].lower()
- return scheme in self.url_schemes
-
- def make_writeable(self, filename):
- """
- Make sure that the file is writeable.
- Useful if our source is read-only.
- """
- if sys.platform.startswith('java'):
- # On Jython there is no os.access()
- return
- if not os.access(filename, os.W_OK):
- st = os.stat(filename)
- new_permissions = stat.S_IMODE(st.st_mode) | stat.S_IWUSR
- os.chmod(filename, new_permissions)
diff --git a/lib/python2.7/site-packages/django/core/management/utils.py b/lib/python2.7/site-packages/django/core/management/utils.py
deleted file mode 100644
index a8959e8..0000000
--- a/lib/python2.7/site-packages/django/core/management/utils.py
+++ /dev/null
@@ -1,79 +0,0 @@
-from __future__ import absolute_import
-
-import os
-from subprocess import PIPE, Popen
-import sys
-
-from django.utils.encoding import force_text, DEFAULT_LOCALE_ENCODING
-from django.utils import six
-
-from .base import CommandError
-
-
-def popen_wrapper(args, os_err_exc_type=CommandError):
- """
- Friendly wrapper around Popen.
-
- Returns stdout output, stderr output and OS status code.
- """
- try:
- p = Popen(args, shell=False, stdout=PIPE, stderr=PIPE,
- close_fds=os.name != 'nt', universal_newlines=True)
- except OSError as e:
- six.reraise(os_err_exc_type, os_err_exc_type('Error executing %s: %s' %
- (args[0], e.strerror)), sys.exc_info()[2])
- output, errors = p.communicate()
- return (
- output,
- force_text(errors, DEFAULT_LOCALE_ENCODING, strings_only=True),
- p.returncode
- )
-
-
-def handle_extensions(extensions=('html',), ignored=('py',)):
- """
- Organizes multiple extensions that are separated with commas or passed by
- using --extension/-e multiple times. Note that the .py extension is ignored
- here because of the way non-*.py files are handled in make_messages() (they
- are copied to file.ext.py files to trick xgettext to parse them as Python
- files).
-
- For example: running 'django-admin makemessages -e js,txt -e xhtml -a'
- would result in an extension list: ['.js', '.txt', '.xhtml']
-
- >>> handle_extensions(['.html', 'html,js,py,py,py,.py', 'py,.py'])
- set(['.html', '.js'])
- >>> handle_extensions(['.html, txt,.tpl'])
- set(['.html', '.tpl', '.txt'])
- """
- ext_list = []
- for ext in extensions:
- ext_list.extend(ext.replace(' ', '').split(','))
- for i, ext in enumerate(ext_list):
- if not ext.startswith('.'):
- ext_list[i] = '.%s' % ext_list[i]
- return set([x for x in ext_list if x.strip('.') not in ignored])
-
-def find_command(cmd, path=None, pathext=None):
- if path is None:
- path = os.environ.get('PATH', '').split(os.pathsep)
- if isinstance(path, six.string_types):
- path = [path]
- # check if there are funny path extensions for executables, e.g. Windows
- if pathext is None:
- pathext = os.environ.get('PATHEXT', '.COM;.EXE;.BAT;.CMD').split(os.pathsep)
- # don't use extensions if the command ends with one of them
- for ext in pathext:
- if cmd.endswith(ext):
- pathext = ['']
- break
- # check if we find the command on PATH
- for p in path:
- f = os.path.join(p, cmd)
- if os.path.isfile(f):
- return f
- for ext in pathext:
- fext = f + ext
- if os.path.isfile(fext):
- return fext
- return None
diff --git a/lib/python2.7/site-packages/django/core/management/validation.py b/lib/python2.7/site-packages/django/core/management/validation.py
deleted file mode 100644
index a64c6e8..0000000
--- a/lib/python2.7/site-packages/django/core/management/validation.py
+++ /dev/null
@@ -1,372 +0,0 @@
-import collections
-import sys
-
-from django.conf import settings
-from django.core.management.color import color_style
-from django.utils.encoding import force_str
-from django.utils.itercompat import is_iterable
-from django.utils import six
-
-
-class ModelErrorCollection:
- def __init__(self, outfile=sys.stdout):
- self.errors = []
- self.outfile = outfile
- self.style = color_style()
-
- def add(self, context, error):
- self.errors.append((context, error))
- self.outfile.write(self.style.ERROR(force_str("%s: %s\n" % (context, error))))
-
-
-def get_validation_errors(outfile, app=None):
- """
- Validates all models that are part of the specified app. If no app name is provided,
- validates all models of all installed apps. Writes errors, if any, to outfile.
- Returns number of errors.
- """
- from django.db import models, connection
- from django.db.models.loading import get_app_errors
- from django.db.models.deletion import SET_NULL, SET_DEFAULT
-
- e = ModelErrorCollection(outfile)
-
- for (app_name, error) in get_app_errors().items():
- e.add(app_name, error)
-
- for cls in models.get_models(app, include_swapped=True):
- opts = cls._meta
-
- # Check swappable attribute.
- if opts.swapped:
- try:
- app_label, model_name = opts.swapped.split('.')
- except ValueError:
- e.add(opts, "%s is not of the form 'app_label.app_name'." % opts.swappable)
- continue
- if not models.get_model(app_label, model_name):
- e.add(opts, "Model has been swapped out for '%s' which has not been installed or is abstract." % opts.swapped)
- # No need to perform any other validation checks on a swapped model.
- continue
-
- # If this is the current User model, check known validation problems with User models
- if settings.AUTH_USER_MODEL == '%s.%s' % (opts.app_label, opts.object_name):
- # Check that REQUIRED_FIELDS is a list
- if not isinstance(cls.REQUIRED_FIELDS, (list, tuple)):
- e.add(opts, 'The REQUIRED_FIELDS must be a list or tuple.')
-
- # Check that the USERNAME FIELD isn't included in REQUIRED_FIELDS.
- if cls.USERNAME_FIELD in cls.REQUIRED_FIELDS:
- e.add(opts, 'The field named as the USERNAME_FIELD should not be included in REQUIRED_FIELDS on a swappable User model.')
-
- # Check that the username field is unique
- if not opts.get_field(cls.USERNAME_FIELD).unique:
- e.add(opts, 'The USERNAME_FIELD must be unique. Add unique=True to the field parameters.')
-
- # Model isn't swapped; do field-specific validation.
- for f in opts.local_fields:
- if f.name == 'id' and not f.primary_key and opts.pk.name == 'id':
- e.add(opts, '"%s": You can\'t use "id" as a field name, because each model automatically gets an "id" field if none of the fields have primary_key=True. You need to either remove/rename your "id" field or add primary_key=True to a field.' % f.name)
- if f.name.endswith('_'):
- e.add(opts, '"%s": Field names cannot end with underscores, because this would lead to ambiguous queryset filters.' % f.name)
- if (f.primary_key and f.null and
- not connection.features.interprets_empty_strings_as_nulls):
- # We cannot reliably check this for backends like Oracle which
- # consider NULL and '' to be equal (and thus set up
- # character-based fields a little differently).
- e.add(opts, '"%s": Primary key fields cannot have null=True.' % f.name)
- if isinstance(f, models.CharField):
- try:
- max_length = int(f.max_length)
- if max_length <= 0:
- e.add(opts, '"%s": CharFields require a "max_length" attribute that is a positive integer.' % f.name)
- except (ValueError, TypeError):
- e.add(opts, '"%s": CharFields require a "max_length" attribute that is a positive integer.' % f.name)
- if isinstance(f, models.DecimalField):
- decimalp_ok, mdigits_ok = False, False
- decimalp_msg = '"%s": DecimalFields require a "decimal_places" attribute that is a non-negative integer.'
- try:
- decimal_places = int(f.decimal_places)
- if decimal_places < 0:
- e.add(opts, decimalp_msg % f.name)
- else:
- decimalp_ok = True
- except (ValueError, TypeError):
- e.add(opts, decimalp_msg % f.name)
- mdigits_msg = '"%s": DecimalFields require a "max_digits" attribute that is a positive integer.'
- try:
- max_digits = int(f.max_digits)
- if max_digits <= 0:
- e.add(opts, mdigits_msg % f.name)
- else:
- mdigits_ok = True
- except (ValueError, TypeError):
- e.add(opts, mdigits_msg % f.name)
- invalid_values_msg = '"%s": DecimalFields require a "max_digits" attribute value that is greater than or equal to the value of the "decimal_places" attribute.'
- if decimalp_ok and mdigits_ok:
- if decimal_places > max_digits:
- e.add(opts, invalid_values_msg % f.name)
- if isinstance(f, models.FileField) and not f.upload_to:
- e.add(opts, '"%s": FileFields require an "upload_to" attribute.' % f.name)
- if isinstance(f, models.ImageField):
- try:
- from django.utils.image import Image
- except ImportError:
- e.add(opts, '"%s": To use ImageFields, you need to install Pillow. Get it at https://pypi.python.org/pypi/Pillow.' % f.name)
- if isinstance(f, models.BooleanField) and getattr(f, 'null', False):
- e.add(opts, '"%s": BooleanFields do not accept null values. Use a NullBooleanField instead.' % f.name)
- if isinstance(f, models.FilePathField) and not (f.allow_files or f.allow_folders):
- e.add(opts, '"%s": FilePathFields must have either allow_files or allow_folders set to True.' % f.name)
- if isinstance(f, models.GenericIPAddressField) and not getattr(f, 'null', False) and getattr(f, 'blank', False):
- e.add(opts, '"%s": GenericIPAddressField can not accept blank values if null values are not allowed, as blank values are stored as null.' % f.name)
- if f.choices:
- if isinstance(f.choices, six.string_types) or not is_iterable(f.choices):
- e.add(opts, '"%s": "choices" should be iterable (e.g., a tuple or list).' % f.name)
- else:
- for c in f.choices:
- if isinstance(c, six.string_types) or not is_iterable(c) or len(c) != 2:
- e.add(opts, '"%s": "choices" should be a sequence of two-item iterables (e.g. list of 2 item tuples).' % f.name)
- if f.db_index not in (None, True, False):
- e.add(opts, '"%s": "db_index" should be either None, True or False.' % f.name)
-
- # Perform any backend-specific field validation.
- connection.validation.validate_field(e, opts, f)
-
- # Check if the on_delete behavior is sane
- if f.rel and hasattr(f.rel, 'on_delete'):
- if f.rel.on_delete == SET_NULL and not f.null:
- e.add(opts, "'%s' specifies on_delete=SET_NULL, but cannot be null." % f.name)
- elif f.rel.on_delete == SET_DEFAULT and not f.has_default():
- e.add(opts, "'%s' specifies on_delete=SET_DEFAULT, but has no default value." % f.name)
-
- # Check to see if the related field will clash with any existing
- # fields, m2m fields, m2m related objects or related objects
- if f.rel:
- if f.rel.to not in models.get_models():
- # If the related model is swapped, provide a hint;
- # otherwise, the model just hasn't been installed.
- if not isinstance(f.rel.to, six.string_types) and f.rel.to._meta.swapped:
- e.add(opts, "'%s' defines a relation with the model '%s.%s', which has been swapped out. Update the relation to point at settings.%s." % (f.name, f.rel.to._meta.app_label, f.rel.to._meta.object_name, f.rel.to._meta.swappable))
- else:
- e.add(opts, "'%s' has a relation with model %s, which has either not been installed or is abstract." % (f.name, f.rel.to))
- # it is a string and we could not find the model it refers to
- # so skip the next section
- if isinstance(f.rel.to, six.string_types):
- continue
-
- # Make sure the related field specified by a ForeignKey is unique
- if f.requires_unique_target:
- if len(f.foreign_related_fields) > 1:
- has_unique_field = False
- for rel_field in f.foreign_related_fields:
- has_unique_field = has_unique_field or rel_field.unique
- if not has_unique_field:
- e.add(opts, "Field combination '%s' under model '%s' must have a unique=True constraint" % (','.join([rel_field.name for rel_field in f.foreign_related_fields]), f.rel.to.__name__))
- else:
- if not f.foreign_related_fields[0].unique:
- e.add(opts, "Field '%s' under model '%s' must have a unique=True constraint." % (f.foreign_related_fields[0].name, f.rel.to.__name__))
-
- rel_opts = f.rel.to._meta
- rel_name = f.related.get_accessor_name()
- rel_query_name = f.related_query_name()
- if not f.rel.is_hidden():
- for r in rel_opts.fields:
- if r.name == rel_name:
- e.add(opts, "Accessor for field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
- if r.name == rel_query_name:
- e.add(opts, "Reverse query name for field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
- for r in rel_opts.local_many_to_many:
- if r.name == rel_name:
- e.add(opts, "Accessor for field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
- if r.name == rel_query_name:
- e.add(opts, "Reverse query name for field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
- for r in rel_opts.get_all_related_many_to_many_objects():
- if r.get_accessor_name() == rel_name:
- e.add(opts, "Accessor for field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
- if r.get_accessor_name() == rel_query_name:
- e.add(opts, "Reverse query name for field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
- for r in rel_opts.get_all_related_objects():
- if r.field is not f:
- if r.get_accessor_name() == rel_name:
- e.add(opts, "Accessor for field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
- if r.get_accessor_name() == rel_query_name:
- e.add(opts, "Reverse query name for field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
-
- seen_intermediary_signatures = []
- for i, f in enumerate(opts.local_many_to_many):
- # Check to see if the related m2m field will clash with any
- # existing fields, m2m fields, m2m related objects or related
- # objects
- if f.rel.to not in models.get_models():
- # If the related model is swapped, provide a hint;
- # otherwise, the model just hasn't been installed.
- if not isinstance(f.rel.to, six.string_types) and f.rel.to._meta.swapped:
- e.add(opts, "'%s' defines a relation with the model '%s.%s', which has been swapped out. Update the relation to point at settings.%s." % (f.name, f.rel.to._meta.app_label, f.rel.to._meta.object_name, f.rel.to._meta.swappable))
- else:
- e.add(opts, "'%s' has an m2m relation with model %s, which has either not been installed or is abstract." % (f.name, f.rel.to))
-
- # it is a string and we could not find the model it refers to
- # so skip the next section
- if isinstance(f.rel.to, six.string_types):
- continue
-
- # Check that the field is not set to unique. ManyToManyFields do not support unique.
- if f.unique:
- e.add(opts, "ManyToManyFields cannot be unique. Remove the unique argument on '%s'." % f.name)
-
- if f.rel.through is not None and not isinstance(f.rel.through, six.string_types):
- from_model, to_model = cls, f.rel.to
- if from_model == to_model and f.rel.symmetrical and not f.rel.through._meta.auto_created:
- e.add(opts, "Many-to-many fields with intermediate tables cannot be symmetrical.")
- seen_from, seen_to, seen_self = False, False, 0
- for inter_field in f.rel.through._meta.fields:
- rel_to = getattr(inter_field.rel, 'to', None)
- if from_model == to_model: # relation to self
- if rel_to == from_model:
- seen_self += 1
- if seen_self > 2:
- e.add(opts, "Intermediary model %s has more than "
- "two foreign keys to %s, which is ambiguous "
- "and is not permitted." % (
- f.rel.through._meta.object_name,
- from_model._meta.object_name
- )
- )
- else:
- if rel_to == from_model:
- if seen_from:
- e.add(opts, "Intermediary model %s has more "
- "than one foreign key to %s, which is "
- "ambiguous and is not permitted." % (
- f.rel.through._meta.object_name,
- from_model._meta.object_name
- )
- )
- else:
- seen_from = True
- elif rel_to == to_model:
- if seen_to:
- e.add(opts, "Intermediary model %s has more "
- "than one foreign key to %s, which is "
- "ambiguous and is not permitted." % (
- f.rel.through._meta.object_name,
- rel_to._meta.object_name
- )
- )
- else:
- seen_to = True
- if f.rel.through not in models.get_models(include_auto_created=True):
- e.add(opts, "'%s' specifies an m2m relation through model "
- "%s, which has not been installed." % (f.name, f.rel.through)
- )
- signature = (f.rel.to, cls, f.rel.through)
- if signature in seen_intermediary_signatures:
- e.add(opts, "The model %s has two manually-defined m2m "
- "relations through the model %s, which is not "
- "permitted. Please consider using an extra field on "
- "your intermediary model instead." % (
- cls._meta.object_name,
- f.rel.through._meta.object_name
- )
- )
- else:
- seen_intermediary_signatures.append(signature)
- if not f.rel.through._meta.auto_created:
- seen_related_fk, seen_this_fk = False, False
- for field in f.rel.through._meta.fields:
- if field.rel:
- if not seen_related_fk and field.rel.to == f.rel.to:
- seen_related_fk = True
- elif field.rel.to == cls:
- seen_this_fk = True
- if not seen_related_fk or not seen_this_fk:
- e.add(opts, "'%s' is a manually-defined m2m relation "
- "through model %s, which does not have foreign keys "
- "to %s and %s" % (f.name, f.rel.through._meta.object_name,
- f.rel.to._meta.object_name, cls._meta.object_name)
- )
- elif isinstance(f.rel.through, six.string_types):
- e.add(opts, "'%s' specifies an m2m relation through model %s, "
- "which has not been installed" % (f.name, f.rel.through)
- )
-
- rel_opts = f.rel.to._meta
- rel_name = f.related.get_accessor_name()
- rel_query_name = f.related_query_name()
- # If rel_name is none, there is no reverse accessor (this only
- # occurs for symmetrical m2m relations to self). If this is the
- # case, there are no clashes to check for this field, as there are
- # no reverse descriptors for this field.
- if rel_name is not None:
- for r in rel_opts.fields:
- if r.name == rel_name:
- e.add(opts, "Accessor for m2m field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
- if r.name == rel_query_name:
- e.add(opts, "Reverse query name for m2m field '%s' clashes with field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
- for r in rel_opts.local_many_to_many:
- if r.name == rel_name:
- e.add(opts, "Accessor for m2m field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
- if r.name == rel_query_name:
- e.add(opts, "Reverse query name for m2m field '%s' clashes with m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.name, f.name))
- for r in rel_opts.get_all_related_many_to_many_objects():
- if r.field is not f:
- if r.get_accessor_name() == rel_name:
- e.add(opts, "Accessor for m2m field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
- if r.get_accessor_name() == rel_query_name:
- e.add(opts, "Reverse query name for m2m field '%s' clashes with related m2m field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
- for r in rel_opts.get_all_related_objects():
- if r.get_accessor_name() == rel_name:
- e.add(opts, "Accessor for m2m field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
- if r.get_accessor_name() == rel_query_name:
- e.add(opts, "Reverse query name for m2m field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
-
- # Check ordering attribute.
- if opts.ordering:
- for field_name in opts.ordering:
- if field_name == '?':
- continue
- if field_name.startswith('-'):
- field_name = field_name[1:]
- if opts.order_with_respect_to and field_name == '_order':
- continue
- # Skip ordering in the format field1__field2 (FIXME: checking
- # this format would be nice, but it's a little fiddly).
- if '__' in field_name:
- continue
- # Skip ordering on pk. This is always a valid order_by field
- # but is an alias and therefore won't be found by opts.get_field.
- if field_name == 'pk':
- continue
- try:
- opts.get_field(field_name, many_to_many=False)
- except models.FieldDoesNotExist:
- e.add(opts, '"ordering" refers to "%s", a field that doesn\'t exist.' % field_name)
-
- # Check unique_together.
- for ut in opts.unique_together:
- validate_local_fields(e, opts, "unique_together", ut)
- if not isinstance(opts.index_together, collections.Sequence):
- e.add(opts, '"index_together" must a sequence')
- else:
- for it in opts.index_together:
- validate_local_fields(e, opts, "index_together", it)
-
- return len(e.errors)
-
-
-def validate_local_fields(e, opts, field_name, fields):
- from django.db import models
-
- if not isinstance(fields, collections.Sequence):
- e.add(opts, 'all %s elements must be sequences' % field_name)
- else:
- for field in fields:
- try:
- f = opts.get_field(field, many_to_many=True)
- except models.FieldDoesNotExist:
- e.add(opts, '"%s" refers to %s, a field that doesn\'t exist.' % (field_name, field))
- else:
- if isinstance(f.rel, models.ManyToManyRel):
- e.add(opts, '"%s" refers to %s. ManyToManyFields are not supported in %s.' % (field_name, f.name, field_name))
- if f not in opts.local_fields:
- e.add(opts, '"%s" refers to %s. This is not in the same model as the %s statement.' % (field_name, f.name, field_name))
diff --git a/lib/python2.7/site-packages/django/core/paginator.py b/lib/python2.7/site-packages/django/core/paginator.py
deleted file mode 100644
index c8b9377..0000000
--- a/lib/python2.7/site-packages/django/core/paginator.py
+++ /dev/null
@@ -1,161 +0,0 @@
-import collections
-from math import ceil
-
-from django.utils import six
-
-
-class InvalidPage(Exception):
- pass
-
-
-class PageNotAnInteger(InvalidPage):
- pass
-
-
-class EmptyPage(InvalidPage):
- pass
-
-
-class Paginator(object):
-
- def __init__(self, object_list, per_page, orphans=0,
- allow_empty_first_page=True):
- self.object_list = object_list
- self.per_page = int(per_page)
- self.orphans = int(orphans)
- self.allow_empty_first_page = allow_empty_first_page
- self._num_pages = self._count = None
-
- def validate_number(self, number):
- """
- Validates the given 1-based page number.
- """
- try:
- number = int(number)
- except (TypeError, ValueError):
- raise PageNotAnInteger('That page number is not an integer')
- if number < 1:
- raise EmptyPage('That page number is less than 1')
- if number > self.num_pages:
- if number == 1 and self.allow_empty_first_page:
- pass
- else:
- raise EmptyPage('That page contains no results')
- return number
-
- def page(self, number):
- """
- Returns a Page object for the given 1-based page number.
- """
- number = self.validate_number(number)
- bottom = (number - 1) * self.per_page
- top = bottom + self.per_page
- if top + self.orphans >= self.count:
- top = self.count
- return self._get_page(self.object_list[bottom:top], number, self)
-
- def _get_page(self, *args, **kwargs):
- """
- Returns an instance of a single page.
-
- This hook can be used by subclasses to use an alternative to the
- standard :cls:`Page` object.
- """
- return Page(*args, **kwargs)
-
- def _get_count(self):
- """
- Returns the total number of objects, across all pages.
- """
- if self._count is None:
- try:
- self._count = self.object_list.count()
- except (AttributeError, TypeError):
- # AttributeError if object_list has no count() method.
- # TypeError if object_list.count() requires arguments
- # (i.e. is of type list).
- self._count = len(self.object_list)
- return self._count
- count = property(_get_count)
-
- def _get_num_pages(self):
- """
- Returns the total number of pages.
- """
- if self._num_pages is None:
- if self.count == 0 and not self.allow_empty_first_page:
- self._num_pages = 0
- else:
- hits = max(1, self.count - self.orphans)
- self._num_pages = int(ceil(hits / float(self.per_page)))
- return self._num_pages
- num_pages = property(_get_num_pages)
-
- def _get_page_range(self):
- """
- Returns a 1-based range of pages for iterating through within
- a template for loop.
- """
- return range(1, self.num_pages + 1)
- page_range = property(_get_page_range)
-
-
-QuerySetPaginator = Paginator # For backwards-compatibility.
-
-
-class Page(collections.Sequence):
-
- def __init__(self, object_list, number, paginator):
- self.object_list = object_list
- self.number = number
- self.paginator = paginator
-
- def __repr__(self):
- return '<Page %s of %s>' % (self.number, self.paginator.num_pages)
-
- def __len__(self):
- return len(self.object_list)
-
- def __getitem__(self, index):
- if not isinstance(index, (slice,) + six.integer_types):
- raise TypeError
- # The object_list is converted to a list so that if it was a QuerySet
- # it won't be a database hit per __getitem__.
- if not isinstance(self.object_list, list):
- self.object_list = list(self.object_list)
- return self.object_list[index]
-
- def has_next(self):
- return self.number < self.paginator.num_pages
-
- def has_previous(self):
- return self.number > 1
-
- def has_other_pages(self):
- return self.has_previous() or self.has_next()
-
- def next_page_number(self):
- return self.paginator.validate_number(self.number + 1)
-
- def previous_page_number(self):
- return self.paginator.validate_number(self.number - 1)
-
- def start_index(self):
- """
- Returns the 1-based index of the first object on this page,
- relative to total objects in the paginator.
- """
- # Special case, return zero if no items.
- if self.paginator.count == 0:
- return 0
- return (self.paginator.per_page * (self.number - 1)) + 1
-
- def end_index(self):
- """
- Returns the 1-based index of the last object on this page,
- relative to total objects found (hits).
- """
- # Special case for the last page because there can be orphans.
- if self.number == self.paginator.num_pages:
- return self.paginator.count
- return self.number * self.paginator.per_page
diff --git a/lib/python2.7/site-packages/django/core/serializers/__init__.py b/lib/python2.7/site-packages/django/core/serializers/__init__.py
deleted file mode 100644
index 005f92b..0000000
--- a/lib/python2.7/site-packages/django/core/serializers/__init__.py
+++ /dev/null
@@ -1,148 +0,0 @@
-"""
-Interfaces for serializing Django objects.
-
-Usage::
-
- from django.core import serializers
- json = serializers.serialize("json", some_queryset)
- objects = list(serializers.deserialize("json", json))
-
-To add your own serializers, use the SERIALIZATION_MODULES setting::
-
- SERIALIZATION_MODULES = {
- "csv" : "path.to.csv.serializer",
- "txt" : "path.to.txt.serializer",
- }
-
-"""
-
-from django.conf import settings
-from django.utils import importlib
-from django.utils import six
-from django.core.serializers.base import SerializerDoesNotExist
-
-# Built-in serializers
-BUILTIN_SERIALIZERS = {
- "xml" : "django.core.serializers.xml_serializer",
- "python" : "django.core.serializers.python",
- "json" : "django.core.serializers.json",
- "yaml" : "django.core.serializers.pyyaml",
-}
-
-_serializers = {}
-
-
-class BadSerializer(object):
- """
- Stub serializer to hold exception raised during registration
-
- This allows the serializer registration to cache serializers and if there
- is an error raised in the process of creating a serializer it will be
- raised and passed along to the caller when the serializer is used.
- """
- internal_use_only = False
-
- def __init__(self, exception):
- self.exception = exception
-
- def __call__(self, *args, **kwargs):
- raise self.exception
-
-
-def register_serializer(format, serializer_module, serializers=None):
- """Register a new serializer.
-
- ``serializer_module`` should be the fully qualified module name
- for the serializer.
-
- If ``serializers`` is provided, the registration will be added
- to the provided dictionary.
-
- If ``serializers`` is not provided, the registration will be made
- directly into the global register of serializers. Adding serializers
- directly is not a thread-safe operation.
- """
- if serializers is None and not _serializers:
- _load_serializers()
-
- try:
- module = importlib.import_module(serializer_module)
- except ImportError as exc:
- bad_serializer = BadSerializer(exc)
-
- module = type('BadSerializerModule', (object,), {
- 'Deserializer': bad_serializer,
- 'Serializer': bad_serializer,
- })
-
- if serializers is None:
- _serializers[format] = module
- else:
- serializers[format] = module
-
-
-def unregister_serializer(format):
- "Unregister a given serializer. This is not a thread-safe operation."
- if not _serializers:
- _load_serializers()
- if format not in _serializers:
- raise SerializerDoesNotExist(format)
- del _serializers[format]
-
-def get_serializer(format):
- if not _serializers:
- _load_serializers()
- if format not in _serializers:
- raise SerializerDoesNotExist(format)
- return _serializers[format].Serializer
-
-def get_serializer_formats():
- if not _serializers:
- _load_serializers()
- return list(_serializers)
-
-def get_public_serializer_formats():
- if not _serializers:
- _load_serializers()
- return [k for k, v in six.iteritems(_serializers) if not v.Serializer.internal_use_only]
-
-def get_deserializer(format):
- if not _serializers:
- _load_serializers()
- if format not in _serializers:
- raise SerializerDoesNotExist(format)
- return _serializers[format].Deserializer
-
-def serialize(format, queryset, **options):
- """
- Serialize a queryset (or any iterator that returns database objects) using
- a certain serializer.
- """
- s = get_serializer(format)()
- s.serialize(queryset, **options)
- return s.getvalue()
-
-def deserialize(format, stream_or_string, **options):
- """
- Deserialize a stream or a string. Returns an iterator that yields ``(obj,
- m2m_relation_dict)``, where ``obj`` is a instantiated -- but *unsaved* --
- object, and ``m2m_relation_dict`` is a dictionary of ``{m2m_field_name :
- list_of_related_objects}``.
- """
- d = get_deserializer(format)
- return d(stream_or_string, **options)
-
-def _load_serializers():
- """
- Register built-in and settings-defined serializers. This is done lazily so
- that user code has a chance to (e.g.) set up custom settings without
- needing to be careful of import order.
- """
- global _serializers
- serializers = {}
- for format in BUILTIN_SERIALIZERS:
- register_serializer(format, BUILTIN_SERIALIZERS[format], serializers)
- if hasattr(settings, "SERIALIZATION_MODULES"):
- for format in settings.SERIALIZATION_MODULES:
- register_serializer(format, settings.SERIALIZATION_MODULES[format], serializers)
- _serializers = serializers
diff --git a/lib/python2.7/site-packages/django/core/serializers/base.py b/lib/python2.7/site-packages/django/core/serializers/base.py
deleted file mode 100644
index cd4f7ff..0000000
--- a/lib/python2.7/site-packages/django/core/serializers/base.py
+++ /dev/null
@@ -1,171 +0,0 @@
-"""
-Module for abstract serializer/unserializer base classes.
-"""
-
-from django.db import models
-from django.utils import six
-
-class SerializerDoesNotExist(KeyError):
- """The requested serializer was not found."""
- pass
-
-class SerializationError(Exception):
- """Something bad happened during serialization."""
- pass
-
-class DeserializationError(Exception):
- """Something bad happened during deserialization."""
- pass
-
-class Serializer(object):
- """
- Abstract serializer base class.
- """
-
- # Indicates if the implemented serializer is only available for
- # internal Django use.
- internal_use_only = False
-
- def serialize(self, queryset, **options):
- """
- Serialize a queryset.
- """
- self.options = options
-
- self.stream = options.pop("stream", six.StringIO())
- self.selected_fields = options.pop("fields", None)
- self.use_natural_keys = options.pop("use_natural_keys", False)
-
- self.start_serialization()
- self.first = True
- for obj in queryset:
- self.start_object(obj)
- # Use the concrete parent class' _meta instead of the object's _meta
- # This is to avoid local_fields problems for proxy models. Refs #17717.
- concrete_model = obj._meta.concrete_model
- for field in concrete_model._meta.local_fields:
- if field.serialize:
- if field.rel is None:
- if self.selected_fields is None or field.attname in self.selected_fields:
- self.handle_field(obj, field)
- else:
- if self.selected_fields is None or field.attname[:-3] in self.selected_fields:
- self.handle_fk_field(obj, field)
- for field in concrete_model._meta.many_to_many:
- if field.serialize:
- if self.selected_fields is None or field.attname in self.selected_fields:
- self.handle_m2m_field(obj, field)
- self.end_object(obj)
- if self.first:
- self.first = False
- self.end_serialization()
- return self.getvalue()
-
- def start_serialization(self):
- """
- Called when serializing of the queryset starts.
- """
- raise NotImplementedError
-
- def end_serialization(self):
- """
- Called when serializing of the queryset ends.
- """
- pass
-
- def start_object(self, obj):
- """
- Called when serializing of an object starts.
- """
- raise NotImplementedError
-
- def end_object(self, obj):
- """
- Called when serializing of an object ends.
- """
- pass
-
- def handle_field(self, obj, field):
- """
- Called to handle each individual (non-relational) field on an object.
- """
- raise NotImplementedError
-
- def handle_fk_field(self, obj, field):
- """
- Called to handle a ForeignKey field.
- """
- raise NotImplementedError
-
- def handle_m2m_field(self, obj, field):
- """
- Called to handle a ManyToManyField.
- """
- raise NotImplementedError
-
- def getvalue(self):
- """
- Return the fully serialized queryset (or None if the output stream is
- not seekable).
- """
- if callable(getattr(self.stream, 'getvalue', None)):
- return self.stream.getvalue()
-
-class Deserializer(six.Iterator):
- """
- Abstract base deserializer class.
- """
-
- def __init__(self, stream_or_string, **options):
- """
- Init this serializer given a stream or a string
- """
- self.options = options
- if isinstance(stream_or_string, six.string_types):
- self.stream = six.StringIO(stream_or_string)
- else:
- self.stream = stream_or_string
- # hack to make sure that the models have all been loaded before
- # deserialization starts (otherwise subclass calls to get_model()
- # and friends might fail...)
- models.get_apps()
-
- def __iter__(self):
- return self
-
- def __next__(self):
- """Iteration iterface -- return the next item in the stream"""
- raise NotImplementedError
-
-class DeserializedObject(object):
- """
- A deserialized model.
-
- Basically a container for holding the pre-saved deserialized data along
- with the many-to-many data saved with the object.
-
- Call ``save()`` to save the object (with the many-to-many data) to the
- database; call ``save(save_m2m=False)`` to save just the object fields
- (and not touch the many-to-many stuff.)
- """
-
- def __init__(self, obj, m2m_data=None):
- self.object = obj
- self.m2m_data = m2m_data
-
- def __repr__(self):
- return "<DeserializedObject: %s.%s(pk=%s)>" % (
- self.object._meta.app_label, self.object._meta.object_name, self.object.pk)
-
- def save(self, save_m2m=True, using=None):
- # Call save on the Model baseclass directly. This bypasses any
- # model-defined save. The save is also forced to be raw.
- # raw=True is passed to any pre/post_save signals.
- models.Model.save_base(self.object, using=using, raw=True)
- if self.m2m_data and save_m2m:
- for accessor_name, object_list in self.m2m_data.items():
- setattr(self.object, accessor_name, object_list)
-
- # prevent a second (possibly accidental) call to save() from saving
- # the m2m data twice.
- self.m2m_data = None
diff --git a/lib/python2.7/site-packages/django/core/serializers/json.py b/lib/python2.7/site-packages/django/core/serializers/json.py
deleted file mode 100644
index 64357bf..0000000
--- a/lib/python2.7/site-packages/django/core/serializers/json.py
+++ /dev/null
@@ -1,108 +0,0 @@
-"""
-Serialize data to/from JSON
-"""
-
-# Avoid shadowing the standard library json module
-from __future__ import absolute_import
-
-import datetime
-import decimal
-import json
-import sys
-
-from django.core.serializers.base import DeserializationError
-from django.core.serializers.python import Serializer as PythonSerializer
-from django.core.serializers.python import Deserializer as PythonDeserializer
-from django.utils import six
-from django.utils.timezone import is_aware
-
-class Serializer(PythonSerializer):
- """
- Convert a queryset to JSON.
- """
- internal_use_only = False
-
- def start_serialization(self):
- if json.__version__.split('.') >= ['2', '1', '3']:
- # Use JS strings to represent Python Decimal instances (ticket #16850)
- self.options.update({'use_decimal': False})
- self._current = None
- self.json_kwargs = self.options.copy()
- self.json_kwargs.pop('stream', None)
- self.json_kwargs.pop('fields', None)
- self.stream.write("[")
-
- def end_serialization(self):
- if self.options.get("indent"):
- self.stream.write("\n")
- self.stream.write("]")
- if self.options.get("indent"):
- self.stream.write("\n")
-
- def end_object(self, obj):
- # self._current has the field data
- indent = self.options.get("indent")
- if not self.first:
- self.stream.write(",")
- if not indent:
- self.stream.write(" ")
- if indent:
- self.stream.write("\n")
- json.dump(self.get_dump_object(obj), self.stream,
- cls=DjangoJSONEncoder, **self.json_kwargs)
- self._current = None
-
- def getvalue(self):
- # Grand-parent super
- return super(PythonSerializer, self).getvalue()
-
-
-def Deserializer(stream_or_string, **options):
- """
- Deserialize a stream or string of JSON data.
- """
- if not isinstance(stream_or_string, (bytes, six.string_types)):
- stream_or_string = stream_or_string.read()
- if isinstance(stream_or_string, bytes):
- stream_or_string = stream_or_string.decode('utf-8')
- try:
- objects = json.loads(stream_or_string)
- for obj in PythonDeserializer(objects, **options):
- yield obj
- except GeneratorExit:
- raise
- except Exception as e:
- # Map to deserializer error
- six.reraise(DeserializationError, DeserializationError(e), sys.exc_info()[2])
-
-
-class DjangoJSONEncoder(json.JSONEncoder):
- """
- JSONEncoder subclass that knows how to encode date/time and decimal types.
- """
- def default(self, o):
- # See "Date Time String Format" in the ECMA-262 specification.
- if isinstance(o, datetime.datetime):
- r = o.isoformat()
- if o.microsecond:
- r = r[:23] + r[26:]
- if r.endswith('+00:00'):
- r = r[:-6] + 'Z'
- return r
- elif isinstance(o, datetime.date):
- return o.isoformat()
- elif isinstance(o, datetime.time):
- if is_aware(o):
- raise ValueError("JSON can't represent timezone-aware times.")
- r = o.isoformat()
- if o.microsecond:
- r = r[:12]
- return r
- elif isinstance(o, decimal.Decimal):
- return str(o)
- else:
- return super(DjangoJSONEncoder, self).default(o)
-
-# Older, deprecated class name (for backwards compatibility purposes).
-DateTimeAwareJSONEncoder = DjangoJSONEncoder
-
diff --git a/lib/python2.7/site-packages/django/core/serializers/python.py b/lib/python2.7/site-packages/django/core/serializers/python.py
deleted file mode 100644
index cdfac50..0000000
--- a/lib/python2.7/site-packages/django/core/serializers/python.py
+++ /dev/null
@@ -1,154 +0,0 @@
-"""
-A Python "serializer". Doesn't do much serializing per se -- just converts to
-and from basic Python data types (lists, dicts, strings, etc.). Useful as a basis for
-other serializers.
-"""
-from __future__ import unicode_literals
-
-from django.conf import settings
-from django.core.serializers import base
-from django.db import models, DEFAULT_DB_ALIAS
-from django.utils.encoding import smart_text, is_protected_type
-from django.utils import six
-
-
-class Serializer(base.Serializer):
- """
- Serializes a QuerySet to basic Python objects.
- """
-
- internal_use_only = True
-
- def start_serialization(self):
- self._current = None
- self.objects = []
-
- def end_serialization(self):
- pass
-
- def start_object(self, obj):
- self._current = {}
-
- def end_object(self, obj):
- self.objects.append(self.get_dump_object(obj))
- self._current = None
-
- def get_dump_object(self, obj):
- return {
- "pk": smart_text(obj._get_pk_val(), strings_only=True),
- "model": smart_text(obj._meta),
- "fields": self._current
- }
-
- def handle_field(self, obj, field):
- value = field._get_val_from_obj(obj)
- # Protected types (i.e., primitives like None, numbers, dates,
- # and Decimals) are passed through as is. All other values are
- # converted to string first.
- if is_protected_type(value):
- self._current[field.name] = value
- else:
- self._current[field.name] = field.value_to_string(obj)
-
- def handle_fk_field(self, obj, field):
- if self.use_natural_keys and hasattr(field.rel.to, 'natural_key'):
- related = getattr(obj, field.name)
- if related:
- value = related.natural_key()
- else:
- value = None
- else:
- value = getattr(obj, field.get_attname())
- self._current[field.name] = value
-
- def handle_m2m_field(self, obj, field):
- if field.rel.through._meta.auto_created:
- if self.use_natural_keys and hasattr(field.rel.to, 'natural_key'):
- m2m_value = lambda value: value.natural_key()
- else:
- m2m_value = lambda value: smart_text(value._get_pk_val(), strings_only=True)
- self._current[field.name] = [m2m_value(related)
- for related in getattr(obj, field.name).iterator()]
-
- def getvalue(self):
- return self.objects
-
-
-def Deserializer(object_list, **options):
- """
- Deserialize simple Python objects back into Django ORM instances.
-
- It's expected that you pass the Python objects themselves (instead of a
- stream or a string) to the constructor
- """
- db = options.pop('using', DEFAULT_DB_ALIAS)
- ignore = options.pop('ignorenonexistent', False)
-
- models.get_apps()
- for d in object_list:
- # Look up the model and starting build a dict of data for it.
- Model = _get_model(d["model"])
- data = {Model._meta.pk.attname: Model._meta.pk.to_python(d.get("pk", None))}
- m2m_data = {}
- model_fields = Model._meta.get_all_field_names()
-
- # Handle each field
- for (field_name, field_value) in six.iteritems(d["fields"]):
-
- if ignore and field_name not in model_fields:
- # skip fields no longer on model
- continue
-
- if isinstance(field_value, str):
- field_value = smart_text(field_value, options.get("encoding", settings.DEFAULT_CHARSET), strings_only=True)
-
- field = Model._meta.get_field(field_name)
-
- # Handle M2M relations
- if field.rel and isinstance(field.rel, models.ManyToManyRel):
- if hasattr(field.rel.to._default_manager, 'get_by_natural_key'):
- def m2m_convert(value):
- if hasattr(value, '__iter__') and not isinstance(value, six.text_type):
- return field.rel.to._default_manager.db_manager(db).get_by_natural_key(*value).pk
- else:
- return smart_text(field.rel.to._meta.pk.to_python(value))
- else:
- m2m_convert = lambda v: smart_text(field.rel.to._meta.pk.to_python(v))
- m2m_data[field.name] = [m2m_convert(pk) for pk in field_value]
-
- # Handle FK fields
- elif field.rel and isinstance(field.rel, models.ManyToOneRel):
- if field_value is not None:
- if hasattr(field.rel.to._default_manager, 'get_by_natural_key'):
- if hasattr(field_value, '__iter__') and not isinstance(field_value, six.text_type):
- obj = field.rel.to._default_manager.db_manager(db).get_by_natural_key(*field_value)
- value = getattr(obj, field.rel.field_name)
- # If this is a natural foreign key to an object that
- # has a FK/O2O as the foreign key, use the FK value
- if field.rel.to._meta.pk.rel:
- value = value.pk
- else:
- value = field.rel.to._meta.get_field(field.rel.field_name).to_python(field_value)
- data[field.attname] = value
- else:
- data[field.attname] = field.rel.to._meta.get_field(field.rel.field_name).to_python(field_value)
- else:
- data[field.attname] = None
-
- # Handle all other fields
- else:
- data[field.name] = field.to_python(field_value)
-
- yield base.DeserializedObject(Model(**data), m2m_data)
-
-def _get_model(model_identifier):
- """
- Helper to look up a model from an "app_label.model_name" string.
- """
- try:
- Model = models.get_model(*model_identifier.split("."))
- except TypeError:
- Model = None
- if Model is None:
- raise base.DeserializationError("Invalid model identifier: '%s'" % model_identifier)
- return Model
diff --git a/lib/python2.7/site-packages/django/core/serializers/pyyaml.py b/lib/python2.7/site-packages/django/core/serializers/pyyaml.py
deleted file mode 100644
index 478f14b..0000000
--- a/lib/python2.7/site-packages/django/core/serializers/pyyaml.py
+++ /dev/null
@@ -1,75 +0,0 @@
-"""
-YAML serializer.
-
-Requires PyYaml (http://pyyaml.org/), but that's checked for in __init__.
-"""
-
-import decimal
-import yaml
-import sys
-from io import StringIO
-
-from django.db import models
-from django.core.serializers.base import DeserializationError
-from django.core.serializers.python import Serializer as PythonSerializer
-from django.core.serializers.python import Deserializer as PythonDeserializer
-from django.utils import six
-
-# Use the C (faster) implementation if possible
-try:
- from yaml import CSafeLoader as SafeLoader
- from yaml import CSafeDumper as SafeDumper
-except ImportError:
- from yaml import SafeLoader, SafeDumper
-
-
-class DjangoSafeDumper(SafeDumper):
- def represent_decimal(self, data):
- return self.represent_scalar('tag:yaml.org,2002:str', str(data))
-
-DjangoSafeDumper.add_representer(decimal.Decimal, DjangoSafeDumper.represent_decimal)
-
-class Serializer(PythonSerializer):
- """
- Convert a queryset to YAML.
- """
-
- internal_use_only = False
-
- def handle_field(self, obj, field):
- # A nasty special case: base YAML doesn't support serialization of time
- # types (as opposed to dates or datetimes, which it does support). Since
- # we want to use the "safe" serializer for better interoperability, we
- # need to do something with those pesky times. Converting 'em to strings
- # isn't perfect, but it's better than a "!!python/time" type which would
- # halt deserialization under any other language.
- if isinstance(field, models.TimeField) and getattr(obj, field.name) is not None:
- self._current[field.name] = str(getattr(obj, field.name))
- else:
- super(Serializer, self).handle_field(obj, field)
-
- def end_serialization(self):
- yaml.dump(self.objects, self.stream, Dumper=DjangoSafeDumper, **self.options)
-
- def getvalue(self):
- # Grand-parent super
- return super(PythonSerializer, self).getvalue()
-
-def Deserializer(stream_or_string, **options):
- """
- Deserialize a stream or string of YAML data.
- """
- if isinstance(stream_or_string, bytes):
- stream_or_string = stream_or_string.decode('utf-8')
- if isinstance(stream_or_string, six.string_types):
- stream = StringIO(stream_or_string)
- else:
- stream = stream_or_string
- try:
- for obj in PythonDeserializer(yaml.load(stream, Loader=SafeLoader), **options):
- yield obj
- except GeneratorExit:
- raise
- except Exception as e:
- # Map to deserializer error
- six.reraise(DeserializationError, DeserializationError(e), sys.exc_info()[2])
diff --git a/lib/python2.7/site-packages/django/core/serializers/xml_serializer.py b/lib/python2.7/site-packages/django/core/serializers/xml_serializer.py
deleted file mode 100644
index 988c336..0000000
--- a/lib/python2.7/site-packages/django/core/serializers/xml_serializer.py
+++ /dev/null
@@ -1,391 +0,0 @@
-"""
-XML serializer.
-"""
-
-from __future__ import unicode_literals
-
-from django.conf import settings
-from django.core.serializers import base
-from django.db import models, DEFAULT_DB_ALIAS
-from django.utils.xmlutils import SimplerXMLGenerator
-from django.utils.encoding import smart_text
-from xml.dom import pulldom
-from xml.sax import handler
-from xml.sax.expatreader import ExpatParser as _ExpatParser
-
-class Serializer(base.Serializer):
- """
- Serializes a QuerySet to XML.
- """
-
- def indent(self, level):
- if self.options.get('indent', None) is not None:
- self.xml.ignorableWhitespace('\n' + ' ' * self.options.get('indent', None) * level)
-
- def start_serialization(self):
- """
- Start serialization -- open the XML document and the root element.
- """
- self.xml = SimplerXMLGenerator(self.stream, self.options.get("encoding", settings.DEFAULT_CHARSET))
- self.xml.startDocument()
- self.xml.startElement("django-objects", {"version" : "1.0"})
-
- def end_serialization(self):
- """
- End serialization -- end the document.
- """
- self.indent(0)
- self.xml.endElement("django-objects")
- self.xml.endDocument()
-
- def start_object(self, obj):
- """
- Called as each object is handled.
- """
- if not hasattr(obj, "_meta"):
- raise base.SerializationError("Non-model object (%s) encountered during serialization" % type(obj))
-
- self.indent(1)
- obj_pk = obj._get_pk_val()
- if obj_pk is None:
- attrs = {"model": smart_text(obj._meta),}
- else:
- attrs = {
- "pk": smart_text(obj._get_pk_val()),
- "model": smart_text(obj._meta),
- }
-
- self.xml.startElement("object", attrs)
-
- def end_object(self, obj):
- """
- Called after handling all fields for an object.
- """
- self.indent(1)
- self.xml.endElement("object")
-
- def handle_field(self, obj, field):
- """
- Called to handle each field on an object (except for ForeignKeys and
- ManyToManyFields)
- """
- self.indent(2)
- self.xml.startElement("field", {
- "name" : field.name,
- "type" : field.get_internal_type()
- })
-
- # Get a "string version" of the object's data.
- if getattr(obj, field.name) is not None:
- self.xml.characters(field.value_to_string(obj))
- else:
- self.xml.addQuickElement("None")
-
- self.xml.endElement("field")
-
- def handle_fk_field(self, obj, field):
- """
- Called to handle a ForeignKey (we need to treat them slightly
- differently from regular fields).
- """
- self._start_relational_field(field)
- related_att = getattr(obj, field.get_attname())
- if related_att is not None:
- if self.use_natural_keys and hasattr(field.rel.to, 'natural_key'):
- related = getattr(obj, field.name)
- # If related object has a natural key, use it
- related = related.natural_key()
- # Iterable natural keys are rolled out as subelements
- for key_value in related:
- self.xml.startElement("natural", {})
- self.xml.characters(smart_text(key_value))
- self.xml.endElement("natural")
- else:
- self.xml.characters(smart_text(related_att))
- else:
- self.xml.addQuickElement("None")
- self.xml.endElement("field")
-
- def handle_m2m_field(self, obj, field):
- """
- Called to handle a ManyToManyField. Related objects are only
- serialized as references to the object's PK (i.e. the related *data*
- is not dumped, just the relation).
- """
- if field.rel.through._meta.auto_created:
- self._start_relational_field(field)
- if self.use_natural_keys and hasattr(field.rel.to, 'natural_key'):
- # If the objects in the m2m have a natural key, use it
- def handle_m2m(value):
- natural = value.natural_key()
- # Iterable natural keys are rolled out as subelements
- self.xml.startElement("object", {})
- for key_value in natural:
- self.xml.startElement("natural", {})
- self.xml.characters(smart_text(key_value))
- self.xml.endElement("natural")
- self.xml.endElement("object")
- else:
- def handle_m2m(value):
- self.xml.addQuickElement("object", attrs={
- 'pk' : smart_text(value._get_pk_val())
- })
- for relobj in getattr(obj, field.name).iterator():
- handle_m2m(relobj)
-
- self.xml.endElement("field")
-
- def _start_relational_field(self, field):
- """
- Helper to output the <field> element for relational fields
- """
- self.indent(2)
- self.xml.startElement("field", {
- "name" : field.name,
- "rel" : field.rel.__class__.__name__,
- "to" : smart_text(field.rel.to._meta),
- })
-
-class Deserializer(base.Deserializer):
- """
- Deserialize XML.
- """
-
- def __init__(self, stream_or_string, **options):
- super(Deserializer, self).__init__(stream_or_string, **options)
- self.event_stream = pulldom.parse(self.stream, self._make_parser())
- self.db = options.pop('using', DEFAULT_DB_ALIAS)
- self.ignore = options.pop('ignorenonexistent', False)
-
- def _make_parser(self):
- """Create a hardened XML parser (no custom/external entities)."""
- return DefusedExpatParser()
-
- def __next__(self):
- for event, node in self.event_stream:
- if event == "START_ELEMENT" and node.nodeName == "object":
- self.event_stream.expandNode(node)
- return self._handle_object(node)
- raise StopIteration
-
- def _handle_object(self, node):
- """
- Convert an <object> node to a DeserializedObject.
- """
- # Look up the model using the model loading mechanism. If this fails,
- # bail.
- Model = self._get_model_from_node(node, "model")
-
- # Start building a data dictionary from the object.
- # If the node is missing the pk set it to None
- if node.hasAttribute("pk"):
- pk = node.getAttribute("pk")
- else:
- pk = None
-
- data = {Model._meta.pk.attname : Model._meta.pk.to_python(pk)}
-
- # Also start building a dict of m2m data (this is saved as
- # {m2m_accessor_attribute : [list_of_related_objects]})
- m2m_data = {}
-
- model_fields = Model._meta.get_all_field_names()
- # Deseralize each field.
- for field_node in node.getElementsByTagName("field"):
- # If the field is missing the name attribute, bail (are you
- # sensing a pattern here?)
- field_name = field_node.getAttribute("name")
- if not field_name:
- raise base.DeserializationError("<field> node is missing the 'name' attribute")
-
- # Get the field from the Model. This will raise a
- # FieldDoesNotExist if, well, the field doesn't exist, which will
- # be propagated correctly unless ignorenonexistent=True is used.
- if self.ignore and field_name not in model_fields:
- continue
- field = Model._meta.get_field(field_name)
-
- # As is usually the case, relation fields get the special treatment.
- if field.rel and isinstance(field.rel, models.ManyToManyRel):
- m2m_data[field.name] = self._handle_m2m_field_node(field_node, field)
- elif field.rel and isinstance(field.rel, models.ManyToOneRel):
- data[field.attname] = self._handle_fk_field_node(field_node, field)
- else:
- if field_node.getElementsByTagName('None'):
- value = None
- else:
- value = field.to_python(getInnerText(field_node).strip())
- data[field.name] = value
-
- # Return a DeserializedObject so that the m2m data has a place to live.
- return base.DeserializedObject(Model(**data), m2m_data)
-
- def _handle_fk_field_node(self, node, field):
- """
- Handle a <field> node for a ForeignKey
- """
- # Check if there is a child node named 'None', returning None if so.
- if node.getElementsByTagName('None'):
- return None
- else:
- if hasattr(field.rel.to._default_manager, 'get_by_natural_key'):
- keys = node.getElementsByTagName('natural')
- if keys:
- # If there are 'natural' subelements, it must be a natural key
- field_value = [getInnerText(k).strip() for k in keys]
- obj = field.rel.to._default_manager.db_manager(self.db).get_by_natural_key(*field_value)
- obj_pk = getattr(obj, field.rel.field_name)
- # If this is a natural foreign key to an object that
- # has a FK/O2O as the foreign key, use the FK value
- if field.rel.to._meta.pk.rel:
- obj_pk = obj_pk.pk
- else:
- # Otherwise, treat like a normal PK
- field_value = getInnerText(node).strip()
- obj_pk = field.rel.to._meta.get_field(field.rel.field_name).to_python(field_value)
- return obj_pk
- else:
- field_value = getInnerText(node).strip()
- return field.rel.to._meta.get_field(field.rel.field_name).to_python(field_value)
-
- def _handle_m2m_field_node(self, node, field):
- """
- Handle a <field> node for a ManyToManyField.
- """
- if hasattr(field.rel.to._default_manager, 'get_by_natural_key'):
- def m2m_convert(n):
- keys = n.getElementsByTagName('natural')
- if keys:
- # If there are 'natural' subelements, it must be a natural key
- field_value = [getInnerText(k).strip() for k in keys]
- obj_pk = field.rel.to._default_manager.db_manager(self.db).get_by_natural_key(*field_value).pk
- else:
- # Otherwise, treat like a normal PK value.
- obj_pk = field.rel.to._meta.pk.to_python(n.getAttribute('pk'))
- return obj_pk
- else:
- m2m_convert = lambda n: field.rel.to._meta.pk.to_python(n.getAttribute('pk'))
- return [m2m_convert(c) for c in node.getElementsByTagName("object")]
-
- def _get_model_from_node(self, node, attr):
- """
- Helper to look up a model from a <object model=...> or a <field
- rel=... to=...> node.
- """
- model_identifier = node.getAttribute(attr)
- if not model_identifier:
- raise base.DeserializationError(
- "<%s> node is missing the required '%s' attribute" \
- % (node.nodeName, attr))
- try:
- Model = models.get_model(*model_identifier.split("."))
- except TypeError:
- Model = None
- if Model is None:
- raise base.DeserializationError(
- "<%s> node has invalid model identifier: '%s'" % \
- (node.nodeName, model_identifier))
- return Model
-
-
-def getInnerText(node):
- """
- Get all the inner text of a DOM node (recursively).
- """
- # inspired by http://mail.python.org/pipermail/xml-sig/2005-March/011022.html
- inner_text = []
- for child in node.childNodes:
- if child.nodeType == child.TEXT_NODE or child.nodeType == child.CDATA_SECTION_NODE:
- inner_text.append(child.data)
- elif child.nodeType == child.ELEMENT_NODE:
- inner_text.extend(getInnerText(child))
- else:
- pass
- return "".join(inner_text)
-
-
-# Below code based on Christian Heimes' defusedxml
-
-
-class DefusedExpatParser(_ExpatParser):
- """
- An expat parser hardened against XML bomb attacks.
-
- Forbids DTDs, external entity references
-
- """
- def __init__(self, *args, **kwargs):
- _ExpatParser.__init__(self, *args, **kwargs)
- self.setFeature(handler.feature_external_ges, False)
- self.setFeature(handler.feature_external_pes, False)
-
- def start_doctype_decl(self, name, sysid, pubid, has_internal_subset):
- raise DTDForbidden(name, sysid, pubid)
-
- def entity_decl(self, name, is_parameter_entity, value, base,
- sysid, pubid, notation_name):
- raise EntitiesForbidden(name, value, base, sysid, pubid, notation_name)
-
- def unparsed_entity_decl(self, name, base, sysid, pubid, notation_name):
- # expat 1.2
- raise EntitiesForbidden(name, None, base, sysid, pubid, notation_name)
-
- def external_entity_ref_handler(self, context, base, sysid, pubid):
- raise ExternalReferenceForbidden(context, base, sysid, pubid)
-
- def reset(self):
- _ExpatParser.reset(self)
- parser = self._parser
- parser.StartDoctypeDeclHandler = self.start_doctype_decl
- parser.EntityDeclHandler = self.entity_decl
- parser.UnparsedEntityDeclHandler = self.unparsed_entity_decl
- parser.ExternalEntityRefHandler = self.external_entity_ref_handler
-
-
-class DefusedXmlException(ValueError):
- """Base exception."""
- def __repr__(self):
- return str(self)
-
-
-class DTDForbidden(DefusedXmlException):
- """Document type definition is forbidden."""
- def __init__(self, name, sysid, pubid):
- super(DTDForbidden, self).__init__()
- self.name = name
- self.sysid = sysid
- self.pubid = pubid
-
- def __str__(self):
- tpl = "DTDForbidden(name='{}', system_id={!r}, public_id={!r})"
- return tpl.format(self.name, self.sysid, self.pubid)
-
-
-class EntitiesForbidden(DefusedXmlException):
- """Entity definition is forbidden."""
- def __init__(self, name, value, base, sysid, pubid, notation_name):
- super(EntitiesForbidden, self).__init__()
- self.name = name
- self.value = value
- self.base = base
- self.sysid = sysid
- self.pubid = pubid
- self.notation_name = notation_name
-
- def __str__(self):
- tpl = "EntitiesForbidden(name='{}', system_id={!r}, public_id={!r})"
- return tpl.format(self.name, self.sysid, self.pubid)
-
-
-class ExternalReferenceForbidden(DefusedXmlException):
- """Resolving an external reference is forbidden."""
- def __init__(self, context, base, sysid, pubid):
- super(ExternalReferenceForbidden, self).__init__()
- self.context = context
- self.base = base
- self.sysid = sysid
- self.pubid = pubid
-
- def __str__(self):
- tpl = "ExternalReferenceForbidden(system_id='{}', public_id={})"
- return tpl.format(self.sysid, self.pubid)
diff --git a/lib/python2.7/site-packages/django/core/servers/__init__.py b/lib/python2.7/site-packages/django/core/servers/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/core/servers/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/core/servers/basehttp.py b/lib/python2.7/site-packages/django/core/servers/basehttp.py
deleted file mode 100644
index 010b5e0..0000000
--- a/lib/python2.7/site-packages/django/core/servers/basehttp.py
+++ /dev/null
@@ -1,169 +0,0 @@
-"""
-HTTP server that implements the Python WSGI protocol (PEP 333, rev 1.21).
-
-Based on wsgiref.simple_server which is part of the standard library since 2.5.
-
-This is a simple server for use in testing or debugging Django apps. It hasn't
-been reviewed for security issues. DON'T USE IT FOR PRODUCTION USE!
-"""
-
-from __future__ import unicode_literals
-
-from io import BytesIO
-import socket
-import sys
-import traceback
-from wsgiref import simple_server
-from wsgiref.util import FileWrapper # for backwards compatibility
-
-from django.core.management.color import color_style
-from django.core.wsgi import get_wsgi_application
-from django.utils.module_loading import import_by_path
-from django.utils import six
-from django.utils.six.moves.urllib.parse import urljoin
-from django.utils.six.moves import socketserver
-
-__all__ = ('WSGIServer', 'WSGIRequestHandler', 'MAX_SOCKET_CHUNK_SIZE')
-
-
-# If data is too large, socket will choke, so write chunks no larger than 32MB
-# at a time. The rationale behind the 32MB can be found on Django's Trac:
-# https://code.djangoproject.com/ticket/5596#comment:4
-MAX_SOCKET_CHUNK_SIZE = 32 * 1024 * 1024 # 32 MB
-
-
-def get_internal_wsgi_application():
- """
- Loads and returns the WSGI application as configured by the user in
- ``settings.WSGI_APPLICATION``. With the default ``startproject`` layout,
- this will be the ``application`` object in ``projectname/wsgi.py``.
-
- This function, and the ``WSGI_APPLICATION`` setting itself, are only useful
- for Django's internal servers (runserver, runfcgi); external WSGI servers
- should just be configured to point to the correct application object
- directly.
-
- If settings.WSGI_APPLICATION is not set (is ``None``), we just return
- whatever ``django.core.wsgi.get_wsgi_application`` returns.
-
- """
- from django.conf import settings
- app_path = getattr(settings, 'WSGI_APPLICATION')
- if app_path is None:
- return get_wsgi_application()
-
- return import_by_path(
- app_path,
- error_prefix="WSGI application '%s' could not be loaded; " % app_path
- )
-
-
-class ServerHandler(simple_server.ServerHandler, object):
- error_status = str("500 INTERNAL SERVER ERROR")
-
- def write(self, data):
- """'write()' callable as specified by PEP 3333"""
-
- assert isinstance(data, bytes), "write() argument must be bytestring"
-
- if not self.status:
- raise AssertionError("write() before start_response()")
-
- elif not self.headers_sent:
- # Before the first output, send the stored headers
- self.bytes_sent = len(data) # make sure we know content-length
- self.send_headers()
- else:
- self.bytes_sent += len(data)
-
- # XXX check Content-Length and truncate if too many bytes written?
- data = BytesIO(data)
- for chunk in iter(lambda: data.read(MAX_SOCKET_CHUNK_SIZE), b''):
- self._write(chunk)
- self._flush()
-
- def error_output(self, environ, start_response):
- super(ServerHandler, self).error_output(environ, start_response)
- return ['\n'.join(traceback.format_exception(*sys.exc_info()))]
-
- # Backport of http://hg.python.org/cpython/rev/d5af1b235dab. See #16241.
- # This can be removed when support for Python <= 2.7.3 is deprecated.
- def finish_response(self):
- try:
- if not self.result_is_file() or not self.sendfile():
- for data in self.result:
- self.write(data)
- self.finish_content()
- finally:
- self.close()
-
-
-class WSGIServer(simple_server.WSGIServer, object):
- """BaseHTTPServer that implements the Python WSGI protocol"""
-
- request_queue_size = 10
-
- def __init__(self, *args, **kwargs):
- if kwargs.pop('ipv6', False):
- self.address_family = socket.AF_INET6
- super(WSGIServer, self).__init__(*args, **kwargs)
-
- def server_bind(self):
- """Override server_bind to store the server name."""
- super(WSGIServer, self).server_bind()
- self.setup_environ()
-
-
-class WSGIRequestHandler(simple_server.WSGIRequestHandler, object):
-
- def __init__(self, *args, **kwargs):
- from django.conf import settings
- self.admin_static_prefix = urljoin(settings.STATIC_URL, 'admin/')
- # We set self.path to avoid crashes in log_message() on unsupported
- # requests (like "OPTIONS").
- self.path = ''
- self.style = color_style()
- super(WSGIRequestHandler, self).__init__(*args, **kwargs)
-
- def address_string(self):
- # Short-circuit parent method to not call socket.getfqdn
- return self.client_address[0]
-
- def log_message(self, format, *args):
- # Don't bother logging requests for admin images or the favicon.
- if (self.path.startswith(self.admin_static_prefix)
- or self.path == '/favicon.ico'):
- return
-
- msg = "[%s] %s\n" % (self.log_date_time_string(), format % args)
-
- # Utilize terminal colors, if available
- if args[1][0] == '2':
- # Put 2XX first, since it should be the common case
- msg = self.style.HTTP_SUCCESS(msg)
- elif args[1][0] == '1':
- msg = self.style.HTTP_INFO(msg)
- elif args[1] == '304':
- msg = self.style.HTTP_NOT_MODIFIED(msg)
- elif args[1][0] == '3':
- msg = self.style.HTTP_REDIRECT(msg)
- elif args[1] == '404':
- msg = self.style.HTTP_NOT_FOUND(msg)
- elif args[1][0] == '4':
- msg = self.style.HTTP_BAD_REQUEST(msg)
- else:
- # Any 5XX, or any other response
- msg = self.style.HTTP_SERVER_ERROR(msg)
-
- sys.stderr.write(msg)
-
-
-def run(addr, port, wsgi_handler, ipv6=False, threading=False):
- server_address = (addr, port)
- if threading:
- httpd_cls = type(str('WSGIServer'), (socketserver.ThreadingMixIn, WSGIServer), {})
- else:
- httpd_cls = WSGIServer
- httpd = httpd_cls(server_address, WSGIRequestHandler, ipv6=ipv6)
- httpd.set_app(wsgi_handler)
- httpd.serve_forever()
diff --git a/lib/python2.7/site-packages/django/core/servers/fastcgi.py b/lib/python2.7/site-packages/django/core/servers/fastcgi.py
deleted file mode 100644
index 2ae1fa5..0000000
--- a/lib/python2.7/site-packages/django/core/servers/fastcgi.py
+++ /dev/null
@@ -1,185 +0,0 @@
-"""
-FastCGI (or SCGI, or AJP1.3 ...) server that implements the WSGI protocol.
-
-Uses the flup python package: http://www.saddi.com/software/flup/
-
-This is a adaptation of the flup package to add FastCGI server support
-to run Django apps from Web servers that support the FastCGI protocol.
-This module can be run standalone or from the django-admin / manage.py
-scripts using the "runfcgi" directive.
-
-Run with the extra option "help" for a list of additional options you can
-pass to this server.
-"""
-
-import os
-import sys
-from django.utils import importlib
-
-__version__ = "0.1"
-__all__ = ["runfastcgi"]
-
-FASTCGI_OPTIONS = {
- 'protocol': 'fcgi',
- 'host': None,
- 'port': None,
- 'socket': None,
- 'method': 'fork',
- 'daemonize': None,
- 'workdir': '/',
- 'pidfile': None,
- 'maxspare': 5,
- 'minspare': 2,
- 'maxchildren': 50,
- 'maxrequests': 0,
- 'debug': None,
- 'outlog': None,
- 'errlog': None,
- 'umask': None,
-}
-
-FASTCGI_HELP = r"""
- Run this project as a fastcgi (or some other protocol supported
- by flup) application. To do this, the flup package from
- http://www.saddi.com/software/flup/ is required.
-
- runfcgi [options] [fcgi settings]
-
-Optional Fcgi settings: (setting=value)
- protocol=PROTOCOL fcgi, scgi, ajp, ... (default %(protocol)s)
- host=HOSTNAME hostname to listen on.
- port=PORTNUM port to listen on.
- socket=FILE UNIX socket to listen on.
- method=IMPL prefork or threaded (default %(method)s).
- maxrequests=NUMBER number of requests a child handles before it is
- killed and a new child is forked (0 = no limit).
- maxspare=NUMBER max number of spare processes / threads (default %(maxspare)s).
- minspare=NUMBER min number of spare processes / threads (default %(minspare)s).
- maxchildren=NUMBER hard limit number of processes / threads (default %(maxchildren)s).
- daemonize=BOOL whether to detach from terminal.
- pidfile=FILE write the spawned process-id to this file.
- workdir=DIRECTORY change to this directory when daemonizing (default %(workdir)s).
- debug=BOOL set to true to enable flup tracebacks.
- outlog=FILE write stdout to this file.
- errlog=FILE write stderr to this file.
- umask=UMASK umask to use when daemonizing, in octal notation (default 022).
-
-Examples:
- Run a "standard" fastcgi process on a file-descriptor
- (for Web servers which spawn your processes for you)
- $ manage.py runfcgi method=threaded
-
- Run a scgi server on a TCP host/port
- $ manage.py runfcgi protocol=scgi method=prefork host=127.0.0.1 port=8025
-
- Run a fastcgi server on a UNIX domain socket (posix platforms only)
- $ manage.py runfcgi method=prefork socket=/tmp/fcgi.sock
-
- Run a fastCGI as a daemon and write the spawned PID in a file
- $ manage.py runfcgi socket=/tmp/fcgi.sock method=prefork \
- daemonize=true pidfile=/var/run/django-fcgi.pid
-
-""" % FASTCGI_OPTIONS
-
-def fastcgi_help(message=None):
- print(FASTCGI_HELP)
- if message:
- print(message)
- return False
-
-def runfastcgi(argset=[], **kwargs):
- options = FASTCGI_OPTIONS.copy()
- options.update(kwargs)
- for x in argset:
- if "=" in x:
- k, v = x.split('=', 1)
- else:
- k, v = x, True
- options[k.lower()] = v
-
- if "help" in options:
- return fastcgi_help()
-
- try:
- import flup
- except ImportError as e:
- sys.stderr.write("ERROR: %s\n" % e)
- sys.stderr.write(" Unable to load the flup package. In order to run django\n")
- sys.stderr.write(" as a FastCGI application, you will need to get flup from\n")
- sys.stderr.write(" http://www.saddi.com/software/flup/ If you've already\n")
- sys.stderr.write(" installed flup, then make sure you have it in your PYTHONPATH.\n")
- return False
-
- flup_module = 'server.' + options['protocol']
-
- if options['method'] in ('prefork', 'fork'):
- wsgi_opts = {
- 'maxSpare': int(options["maxspare"]),
- 'minSpare': int(options["minspare"]),
- 'maxChildren': int(options["maxchildren"]),
- 'maxRequests': int(options["maxrequests"]),
- }
- flup_module += '_fork'
- elif options['method'] in ('thread', 'threaded'):
- wsgi_opts = {
- 'maxSpare': int(options["maxspare"]),
- 'minSpare': int(options["minspare"]),
- 'maxThreads': int(options["maxchildren"]),
- }
- else:
- return fastcgi_help("ERROR: Implementation must be one of prefork or "
- "thread.")
-
- wsgi_opts['debug'] = options['debug'] is not None
-
- try:
- module = importlib.import_module('.%s' % flup_module, 'flup')
- WSGIServer = module.WSGIServer
- except Exception:
- print("Can't import flup." + flup_module)
- return False
-
- # Prep up and go
- from django.core.servers.basehttp import get_internal_wsgi_application
-
- if options["host"] and options["port"] and not options["socket"]:
- wsgi_opts['bindAddress'] = (options["host"], int(options["port"]))
- elif options["socket"] and not options["host"] and not options["port"]:
- wsgi_opts['bindAddress'] = options["socket"]
- elif not options["socket"] and not options["host"] and not options["port"]:
- wsgi_opts['bindAddress'] = None
- else:
- return fastcgi_help("Invalid combination of host, port, socket.")
-
- if options["daemonize"] is None:
- # Default to daemonizing if we're running on a socket/named pipe.
- daemonize = (wsgi_opts['bindAddress'] is not None)
- else:
- if options["daemonize"].lower() in ('true', 'yes', 't'):
- daemonize = True
- elif options["daemonize"].lower() in ('false', 'no', 'f'):
- daemonize = False
- else:
- return fastcgi_help("ERROR: Invalid option for daemonize "
- "parameter.")
-
- daemon_kwargs = {}
- if options['outlog']:
- daemon_kwargs['out_log'] = options['outlog']
- if options['errlog']:
- daemon_kwargs['err_log'] = options['errlog']
- if options['umask']:
- daemon_kwargs['umask'] = int(options['umask'], 8)
-
- if daemonize:
- from django.utils.daemonize import become_daemon
- become_daemon(our_home_dir=options["workdir"], **daemon_kwargs)
-
- if options["pidfile"]:
- with open(options["pidfile"], "w") as fp:
- fp.write("%d\n" % os.getpid())
-
- WSGIServer(get_internal_wsgi_application(), **wsgi_opts).run()
-
-if __name__ == '__main__':
- runfastcgi(sys.argv[1:])
diff --git a/lib/python2.7/site-packages/django/core/signals.py b/lib/python2.7/site-packages/django/core/signals.py
deleted file mode 100644
index a14af00..0000000
--- a/lib/python2.7/site-packages/django/core/signals.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from django.dispatch import Signal
-
-request_started = Signal()
-request_finished = Signal()
-got_request_exception = Signal(providing_args=["request"])
diff --git a/lib/python2.7/site-packages/django/core/signing.py b/lib/python2.7/site-packages/django/core/signing.py
deleted file mode 100644
index c3b2c3e..0000000
--- a/lib/python2.7/site-packages/django/core/signing.py
+++ /dev/null
@@ -1,199 +0,0 @@
-"""
-Functions for creating and restoring url-safe signed JSON objects.
-
-The format used looks like this:
-
->>> signing.dumps("hello")
-'ImhlbGxvIg:1QaUZC:YIye-ze3TTx7gtSv422nZA4sgmk'
-
-There are two components here, separated by a ':'. The first component is a
-URLsafe base64 encoded JSON of the object passed to dumps(). The second
-component is a base64 encoded hmac/SHA1 hash of "$first_component:$secret"
-
-signing.loads(s) checks the signature and returns the deserialised object.
-If the signature fails, a BadSignature exception is raised.
-
->>> signing.loads("ImhlbGxvIg:1QaUZC:YIye-ze3TTx7gtSv422nZA4sgmk")
-u'hello'
->>> signing.loads("ImhlbGxvIg:1QaUZC:YIye-ze3TTx7gtSv422nZA4sgmk-modified")
-...
-BadSignature: Signature failed: ImhlbGxvIg:1QaUZC:YIye-ze3TTx7gtSv422nZA4sgmk-modified
-
-You can optionally compress the JSON prior to base64 encoding it to save
-space, using the compress=True argument. This checks if compression actually
-helps and only applies compression if the result is a shorter string:
-
->>> signing.dumps(range(1, 20), compress=True)
-'.eJwFwcERACAIwLCF-rCiILN47r-GyZVJsNgkxaFxoDgxcOHGxMKD_T7vhAml:1QaUaL:BA0thEZrp4FQVXIXuOvYJtLJSrQ'
-
-The fact that the string is compressed is signalled by the prefixed '.' at the
-start of the base64 JSON.
-
-There are 65 url-safe characters: the 64 used by url-safe base64 and the ':'.
-These functions make use of all of them.
-"""
-
-from __future__ import unicode_literals
-
-import base64
-import json
-import time
-import zlib
-
-from django.conf import settings
-from django.utils import baseconv
-from django.utils.crypto import constant_time_compare, salted_hmac
-from django.utils.encoding import force_bytes, force_str, force_text
-from django.utils.module_loading import import_by_path
-
-
-class BadSignature(Exception):
- """
- Signature does not match
- """
- pass
-
-
-class SignatureExpired(BadSignature):
- """
- Signature timestamp is older than required max_age
- """
- pass
-
-
-def b64_encode(s):
- return base64.urlsafe_b64encode(s).strip(b'=')
-
-
-def b64_decode(s):
- pad = b'=' * (-len(s) % 4)
- return base64.urlsafe_b64decode(s + pad)
-
-
-def base64_hmac(salt, value, key):
- return b64_encode(salted_hmac(salt, value, key).digest())
-
-
-def get_cookie_signer(salt='django.core.signing.get_cookie_signer'):
- Signer = import_by_path(settings.SIGNING_BACKEND)
- return Signer('django.http.cookies' + settings.SECRET_KEY, salt=salt)
-
-
-class JSONSerializer(object):
- """
- Simple wrapper around json to be used in signing.dumps and
- signing.loads.
- """
- def dumps(self, obj):
- return json.dumps(obj, separators=(',', ':')).encode('latin-1')
-
- def loads(self, data):
- return json.loads(data.decode('latin-1'))
-
-
-def dumps(obj, key=None, salt='django.core.signing', serializer=JSONSerializer, compress=False):
- """
- Returns URL-safe, sha1 signed base64 compressed JSON string. If key is
- None, settings.SECRET_KEY is used instead.
-
- If compress is True (not the default) checks if compressing using zlib can
- save some space. Prepends a '.' to signify compression. This is included
- in the signature, to protect against zip bombs.
-
- Salt can be used to namespace the hash, so that a signed string is
- only valid for a given namespace. Leaving this at the default
- value or re-using a salt value across different parts of your
- application without good cause is a security risk.
-
- The serializer is expected to return a bytestring.
- """
- data = serializer().dumps(obj)
-
- # Flag for if it's been compressed or not
- is_compressed = False
-
- if compress:
- # Avoid zlib dependency unless compress is being used
- compressed = zlib.compress(data)
- if len(compressed) < (len(data) - 1):
- data = compressed
- is_compressed = True
- base64d = b64_encode(data)
- if is_compressed:
- base64d = b'.' + base64d
- return TimestampSigner(key, salt=salt).sign(base64d)
-
-
-def loads(s, key=None, salt='django.core.signing', serializer=JSONSerializer, max_age=None):
- """
- Reverse of dumps(), raises BadSignature if signature fails.
-
- The serializer is expected to accept a bytestring.
- """
- # TimestampSigner.unsign always returns unicode but base64 and zlib
- # compression operate on bytes.
- base64d = force_bytes(TimestampSigner(key, salt=salt).unsign(s, max_age=max_age))
- decompress = False
- if base64d[:1] == b'.':
- # It's compressed; uncompress it first
- base64d = base64d[1:]
- decompress = True
- data = b64_decode(base64d)
- if decompress:
- data = zlib.decompress(data)
- return serializer().loads(data)
-
-
-class Signer(object):
-
- def __init__(self, key=None, sep=':', salt=None):
- # Use of native strings in all versions of Python
- self.sep = str(sep)
- self.key = str(key or settings.SECRET_KEY)
- self.salt = str(salt or
- '%s.%s' % (self.__class__.__module__, self.__class__.__name__))
-
- def signature(self, value):
- signature = base64_hmac(self.salt + 'signer', value, self.key)
- # Convert the signature from bytes to str only on Python 3
- return force_str(signature)
-
- def sign(self, value):
- value = force_str(value)
- return str('%s%s%s') % (value, self.sep, self.signature(value))
-
- def unsign(self, signed_value):
- signed_value = force_str(signed_value)
- if not self.sep in signed_value:
- raise BadSignature('No "%s" found in value' % self.sep)
- value, sig = signed_value.rsplit(self.sep, 1)
- if constant_time_compare(sig, self.signature(value)):
- return force_text(value)
- raise BadSignature('Signature "%s" does not match' % sig)
-
-
-class TimestampSigner(Signer):
-
- def timestamp(self):
- return baseconv.base62.encode(int(time.time()))
-
- def sign(self, value):
- value = force_str(value)
- value = str('%s%s%s') % (value, self.sep, self.timestamp())
- return super(TimestampSigner, self).sign(value)
-
- def unsign(self, value, max_age=None):
- """
- Retrieve original value and check it wasn't signed more
- than max_age seconds ago.
- """
- result = super(TimestampSigner, self).unsign(value)
- value, timestamp = result.rsplit(self.sep, 1)
- timestamp = baseconv.base62.decode(timestamp)
- if max_age is not None:
- # Check timestamp is not older than max_age
- age = time.time() - timestamp
- if age > max_age:
- raise SignatureExpired(
- 'Signature age %s > %s seconds' % (age, max_age))
- return value
diff --git a/lib/python2.7/site-packages/django/core/urlresolvers.py b/lib/python2.7/site-packages/django/core/urlresolvers.py
deleted file mode 100644
index 2aba375..0000000
--- a/lib/python2.7/site-packages/django/core/urlresolvers.py
+++ /dev/null
@@ -1,595 +0,0 @@
-"""
-This module converts requested URLs to callback view functions.
-
-RegexURLResolver is the main class here. Its resolve() method takes a URL (as
-a string) and returns a tuple in this format:
-
- (view_function, function_args, function_kwargs)
-"""
-from __future__ import unicode_literals
-
-import re
-from threading import local
-
-from django.http import Http404
-from django.core.exceptions import ImproperlyConfigured, ViewDoesNotExist
-from django.utils.datastructures import MultiValueDict
-from django.utils.encoding import force_str, force_text, iri_to_uri
-from django.utils.functional import memoize, lazy
-from django.utils.http import urlquote
-from django.utils.importlib import import_module
-from django.utils.module_loading import module_has_submodule
-from django.utils.regex_helper import normalize
-from django.utils import six
-from django.utils.translation import get_language
-
-
-_resolver_cache = {} # Maps URLconf modules to RegexURLResolver instances.
-_ns_resolver_cache = {} # Maps namespaces to RegexURLResolver instances.
-_callable_cache = {} # Maps view and url pattern names to their view functions.
-
-# SCRIPT_NAME prefixes for each thread are stored here. If there's no entry for
-# the current thread (which is the only one we ever access), it is assumed to
-# be empty.
-_prefixes = local()
-
-# Overridden URLconfs for each thread are stored here.
-_urlconfs = local()
-
-
-class ResolverMatch(object):
- def __init__(self, func, args, kwargs, url_name=None, app_name=None, namespaces=None):
- self.func = func
- self.args = args
- self.kwargs = kwargs
- self.app_name = app_name
- if namespaces:
- self.namespaces = [x for x in namespaces if x]
- else:
- self.namespaces = []
- if not url_name:
- if not hasattr(func, '__name__'):
- # An instance of a callable class
- url_name = '.'.join([func.__class__.__module__, func.__class__.__name__])
- else:
- # A function
- url_name = '.'.join([func.__module__, func.__name__])
- self.url_name = url_name
-
- @property
- def namespace(self):
- return ':'.join(self.namespaces)
-
- @property
- def view_name(self):
- return ':'.join([ x for x in [ self.namespace, self.url_name ] if x ])
-
- def __getitem__(self, index):
- return (self.func, self.args, self.kwargs)[index]
-
- def __repr__(self):
- return "ResolverMatch(func=%s, args=%s, kwargs=%s, url_name='%s', app_name='%s', namespace='%s')" % (
- self.func, self.args, self.kwargs, self.url_name, self.app_name, self.namespace)
-
-class Resolver404(Http404):
- pass
-
-class NoReverseMatch(Exception):
- pass
-
-def get_callable(lookup_view, can_fail=False):
- """
- Convert a string version of a function name to the callable object.
-
- If the lookup_view is not an import path, it is assumed to be a URL pattern
- label and the original string is returned.
-
- If can_fail is True, lookup_view might be a URL pattern label, so errors
- during the import fail and the string is returned.
- """
- if not callable(lookup_view):
- mod_name, func_name = get_mod_func(lookup_view)
- if func_name == '':
- return lookup_view
-
- try:
- mod = import_module(mod_name)
- except ImportError:
- parentmod, submod = get_mod_func(mod_name)
- if (not can_fail and submod != '' and
- not module_has_submodule(import_module(parentmod), submod)):
- raise ViewDoesNotExist(
- "Could not import %s. Parent module %s does not exist." %
- (lookup_view, mod_name))
- if not can_fail:
- raise
- else:
- try:
- lookup_view = getattr(mod, func_name)
- if not callable(lookup_view):
- raise ViewDoesNotExist(
- "Could not import %s.%s. View is not callable." %
- (mod_name, func_name))
- except AttributeError:
- if not can_fail:
- raise ViewDoesNotExist(
- "Could not import %s. View does not exist in module %s." %
- (lookup_view, mod_name))
- return lookup_view
-get_callable = memoize(get_callable, _callable_cache, 1)
-
-def get_resolver(urlconf):
- if urlconf is None:
- from django.conf import settings
- urlconf = settings.ROOT_URLCONF
- return RegexURLResolver(r'^/', urlconf)
-get_resolver = memoize(get_resolver, _resolver_cache, 1)
-
-def get_ns_resolver(ns_pattern, resolver):
- # Build a namespaced resolver for the given parent urlconf pattern.
- # This makes it possible to have captured parameters in the parent
- # urlconf pattern.
- ns_resolver = RegexURLResolver(ns_pattern,
- resolver.url_patterns)
- return RegexURLResolver(r'^/', [ns_resolver])
-get_ns_resolver = memoize(get_ns_resolver, _ns_resolver_cache, 2)
-
-def get_mod_func(callback):
- # Converts 'django.views.news.stories.story_detail' to
- # ['django.views.news.stories', 'story_detail']
- try:
- dot = callback.rindex('.')
- except ValueError:
- return callback, ''
- return callback[:dot], callback[dot+1:]
-
-class LocaleRegexProvider(object):
- """
- A mixin to provide a default regex property which can vary by active
- language.
-
- """
- def __init__(self, regex):
- # regex is either a string representing a regular expression, or a
- # translatable string (using ugettext_lazy) representing a regular
- # expression.
- self._regex = regex
- self._regex_dict = {}
-
-
- @property
- def regex(self):
- """
- Returns a compiled regular expression, depending upon the activated
- language-code.
- """
- language_code = get_language()
- if language_code not in self._regex_dict:
- if isinstance(self._regex, six.string_types):
- regex = self._regex
- else:
- regex = force_text(self._regex)
- try:
- compiled_regex = re.compile(regex, re.UNICODE)
- except re.error as e:
- raise ImproperlyConfigured(
- '"%s" is not a valid regular expression: %s' %
- (regex, six.text_type(e)))
-
- self._regex_dict[language_code] = compiled_regex
- return self._regex_dict[language_code]
-
-
-class RegexURLPattern(LocaleRegexProvider):
- def __init__(self, regex, callback, default_args=None, name=None):
- LocaleRegexProvider.__init__(self, regex)
- # callback is either a string like 'foo.views.news.stories.story_detail'
- # which represents the path to a module and a view function name, or a
- # callable object (view).
- if callable(callback):
- self._callback = callback
- else:
- self._callback = None
- self._callback_str = callback
- self.default_args = default_args or {}
- self.name = name
-
- def __repr__(self):
- return force_str('<%s %s %s>' % (self.__class__.__name__, self.name, self.regex.pattern))
-
- def add_prefix(self, prefix):
- """
- Adds the prefix string to a string-based callback.
- """
- if not prefix or not hasattr(self, '_callback_str'):
- return
- self._callback_str = prefix + '.' + self._callback_str
-
- def resolve(self, path):
- match = self.regex.search(path)
- if match:
- # If there are any named groups, use those as kwargs, ignoring
- # non-named groups. Otherwise, pass all non-named arguments as
- # positional arguments.
- kwargs = match.groupdict()
- if kwargs:
- args = ()
- else:
- args = match.groups()
- # In both cases, pass any extra_kwargs as **kwargs.
- kwargs.update(self.default_args)
-
- return ResolverMatch(self.callback, args, kwargs, self.name)
-
- @property
- def callback(self):
- if self._callback is not None:
- return self._callback
-
- self._callback = get_callable(self._callback_str)
- return self._callback
-
-class RegexURLResolver(LocaleRegexProvider):
- def __init__(self, regex, urlconf_name, default_kwargs=None, app_name=None, namespace=None):
- LocaleRegexProvider.__init__(self, regex)
- # urlconf_name is a string representing the module containing URLconfs.
- self.urlconf_name = urlconf_name
- if not isinstance(urlconf_name, six.string_types):
- self._urlconf_module = self.urlconf_name
- self.callback = None
- self.default_kwargs = default_kwargs or {}
- self.namespace = namespace
- self.app_name = app_name
- self._reverse_dict = {}
- self._namespace_dict = {}
- self._app_dict = {}
- # set of dotted paths to all functions and classes that are used in
- # urlpatterns
- self._callback_strs = set()
- self._populated = False
-
- def __repr__(self):
- if isinstance(self.urlconf_name, list) and len(self.urlconf_name):
- # Don't bother to output the whole list, it can be huge
- urlconf_repr = '<%s list>' % self.urlconf_name[0].__class__.__name__
- else:
- urlconf_repr = repr(self.urlconf_name)
- return str('<%s %s (%s:%s) %s>') % (
- self.__class__.__name__, urlconf_repr, self.app_name,
- self.namespace, self.regex.pattern)
-
- def _populate(self):
- lookups = MultiValueDict()
- namespaces = {}
- apps = {}
- language_code = get_language()
- for pattern in reversed(self.url_patterns):
- if hasattr(pattern, '_callback_str'):
- self._callback_strs.add(pattern._callback_str)
- elif hasattr(pattern, '_callback'):
- callback = pattern._callback
- if not hasattr(callback, '__name__'):
- lookup_str = callback.__module__ + "." + callback.__class__.__name__
- else:
- lookup_str = callback.__module__ + "." + callback.__name__
- self._callback_strs.add(lookup_str)
- p_pattern = pattern.regex.pattern
- if p_pattern.startswith('^'):
- p_pattern = p_pattern[1:]
- if isinstance(pattern, RegexURLResolver):
- if pattern.namespace:
- namespaces[pattern.namespace] = (p_pattern, pattern)
- if pattern.app_name:
- apps.setdefault(pattern.app_name, []).append(pattern.namespace)
- else:
- parent = normalize(pattern.regex.pattern)
- for name in pattern.reverse_dict:
- for matches, pat, defaults in pattern.reverse_dict.getlist(name):
- new_matches = []
- for piece, p_args in parent:
- new_matches.extend([(piece + suffix, p_args + args) for (suffix, args) in matches])
- lookups.appendlist(name, (new_matches, p_pattern + pat, dict(defaults, **pattern.default_kwargs)))
- for namespace, (prefix, sub_pattern) in pattern.namespace_dict.items():
- namespaces[namespace] = (p_pattern + prefix, sub_pattern)
- for app_name, namespace_list in pattern.app_dict.items():
- apps.setdefault(app_name, []).extend(namespace_list)
- self._callback_strs.update(pattern._callback_strs)
- else:
- bits = normalize(p_pattern)
- lookups.appendlist(pattern.callback, (bits, p_pattern, pattern.default_args))
- if pattern.name is not None:
- lookups.appendlist(pattern.name, (bits, p_pattern, pattern.default_args))
- self._reverse_dict[language_code] = lookups
- self._namespace_dict[language_code] = namespaces
- self._app_dict[language_code] = apps
- self._populated = True
-
- @property
- def reverse_dict(self):
- language_code = get_language()
- if language_code not in self._reverse_dict:
- self._populate()
- return self._reverse_dict[language_code]
-
- @property
- def namespace_dict(self):
- language_code = get_language()
- if language_code not in self._namespace_dict:
- self._populate()
- return self._namespace_dict[language_code]
-
- @property
- def app_dict(self):
- language_code = get_language()
- if language_code not in self._app_dict:
- self._populate()
- return self._app_dict[language_code]
-
- def resolve(self, path):
- tried = []
- match = self.regex.search(path)
- if match:
- new_path = path[match.end():]
- for pattern in self.url_patterns:
- try:
- sub_match = pattern.resolve(new_path)
- except Resolver404 as e:
- sub_tried = e.args[0].get('tried')
- if sub_tried is not None:
- tried.extend([[pattern] + t for t in sub_tried])
- else:
- tried.append([pattern])
- else:
- if sub_match:
- sub_match_dict = dict(match.groupdict(), **self.default_kwargs)
- sub_match_dict.update(sub_match.kwargs)
- return ResolverMatch(sub_match.func, sub_match.args, sub_match_dict, sub_match.url_name, self.app_name or sub_match.app_name, [self.namespace] + sub_match.namespaces)
- tried.append([pattern])
- raise Resolver404({'tried': tried, 'path': new_path})
- raise Resolver404({'path' : path})
-
- @property
- def urlconf_module(self):
- try:
- return self._urlconf_module
- except AttributeError:
- self._urlconf_module = import_module(self.urlconf_name)
- return self._urlconf_module
-
- @property
- def url_patterns(self):
- patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
- try:
- iter(patterns)
- except TypeError:
- raise ImproperlyConfigured("The included urlconf %s doesn't have any patterns in it" % self.urlconf_name)
- return patterns
-
- def _resolve_special(self, view_type):
- callback = getattr(self.urlconf_module, 'handler%s' % view_type, None)
- if not callback:
- # No handler specified in file; use default
- # Lazy import, since django.urls imports this file
- from django.conf import urls
- callback = getattr(urls, 'handler%s' % view_type)
- return get_callable(callback), {}
-
- def resolve400(self):
- return self._resolve_special('400')
-
- def resolve403(self):
- return self._resolve_special('403')
-
- def resolve404(self):
- return self._resolve_special('404')
-
- def resolve500(self):
- return self._resolve_special('500')
-
- def reverse(self, lookup_view, *args, **kwargs):
- return self._reverse_with_prefix(lookup_view, '', *args, **kwargs)
-
- def _reverse_with_prefix(self, lookup_view, _prefix, *args, **kwargs):
- if args and kwargs:
- raise ValueError("Don't mix *args and **kwargs in call to reverse()!")
- text_args = [force_text(v) for v in args]
- text_kwargs = dict((k, force_text(v)) for (k, v) in kwargs.items())
-
- if not self._populated:
- self._populate()
-
- try:
- if lookup_view in self._callback_strs:
- lookup_view = get_callable(lookup_view, True)
- except (ImportError, AttributeError) as e:
- raise NoReverseMatch("Error importing '%s': %s." % (lookup_view, e))
- possibilities = self.reverse_dict.getlist(lookup_view)
-
- prefix_norm, prefix_args = normalize(urlquote(_prefix))[0]
- for possibility, pattern, defaults in possibilities:
- for result, params in possibility:
- if args:
- if len(args) != len(params) + len(prefix_args):
- continue
- candidate_subs = dict(zip(prefix_args + params, text_args))
- else:
- if set(kwargs.keys()) | set(defaults.keys()) != set(params) | set(defaults.keys()) | set(prefix_args):
- continue
- matches = True
- for k, v in defaults.items():
- if kwargs.get(k, v) != v:
- matches = False
- break
- if not matches:
- continue
- candidate_subs = text_kwargs
- # WSGI provides decoded URLs, without %xx escapes, and the URL
- # resolver operates on such URLs. First substitute arguments
- # without quoting to build a decoded URL and look for a match.
- # Then, if we have a match, redo the substitution with quoted
- # arguments in order to return a properly encoded URL.
- candidate_pat = prefix_norm.replace('%', '%%') + result
- if re.search('^%s%s' % (prefix_norm, pattern), candidate_pat % candidate_subs, re.UNICODE):
- candidate_subs = dict((k, urlquote(v)) for (k, v) in candidate_subs.items())
- return candidate_pat % candidate_subs
- # lookup_view can be URL label, or dotted path, or callable, Any of
- # these can be passed in at the top, but callables are not friendly in
- # error messages.
- m = getattr(lookup_view, '__module__', None)
- n = getattr(lookup_view, '__name__', None)
- if m is not None and n is not None:
- lookup_view_s = "%s.%s" % (m, n)
- else:
- lookup_view_s = lookup_view
-
- patterns = [pattern for (possibility, pattern, defaults) in possibilities]
- raise NoReverseMatch("Reverse for '%s' with arguments '%s' and keyword "
- "arguments '%s' not found. %d pattern(s) tried: %s" %
- (lookup_view_s, args, kwargs, len(patterns), patterns))
-
-class LocaleRegexURLResolver(RegexURLResolver):
- """
- A URL resolver that always matches the active language code as URL prefix.
-
- Rather than taking a regex argument, we just override the ``regex``
- function to always return the active language-code as regex.
- """
- def __init__(self, urlconf_name, default_kwargs=None, app_name=None, namespace=None):
- super(LocaleRegexURLResolver, self).__init__(
- None, urlconf_name, default_kwargs, app_name, namespace)
-
- @property
- def regex(self):
- language_code = get_language()
- if language_code not in self._regex_dict:
- regex_compiled = re.compile('^%s/' % language_code, re.UNICODE)
- self._regex_dict[language_code] = regex_compiled
- return self._regex_dict[language_code]
-
-def resolve(path, urlconf=None):
- if urlconf is None:
- urlconf = get_urlconf()
- return get_resolver(urlconf).resolve(path)
-
-def reverse(viewname, urlconf=None, args=None, kwargs=None, prefix=None, current_app=None):
- if urlconf is None:
- urlconf = get_urlconf()
- resolver = get_resolver(urlconf)
- args = args or []
- kwargs = kwargs or {}
-
- if prefix is None:
- prefix = get_script_prefix()
-
- if not isinstance(viewname, six.string_types):
- view = viewname
- else:
- parts = viewname.split(':')
- parts.reverse()
- view = parts[0]
- path = parts[1:]
-
- resolved_path = []
- ns_pattern = ''
- while path:
- ns = path.pop()
-
- # Lookup the name to see if it could be an app identifier
- try:
- app_list = resolver.app_dict[ns]
- # Yes! Path part matches an app in the current Resolver
- if current_app and current_app in app_list:
- # If we are reversing for a particular app,
- # use that namespace
- ns = current_app
- elif ns not in app_list:
- # The name isn't shared by one of the instances
- # (i.e., the default) so just pick the first instance
- # as the default.
- ns = app_list[0]
- except KeyError:
- pass
-
- try:
- extra, resolver = resolver.namespace_dict[ns]
- resolved_path.append(ns)
- ns_pattern = ns_pattern + extra
- except KeyError as key:
- if resolved_path:
- raise NoReverseMatch(
- "%s is not a registered namespace inside '%s'" %
- (key, ':'.join(resolved_path)))
- else:
- raise NoReverseMatch("%s is not a registered namespace" %
- key)
- if ns_pattern:
- resolver = get_ns_resolver(ns_pattern, resolver)
-
- return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
-
-reverse_lazy = lazy(reverse, str)
-
-def clear_url_caches():
- global _resolver_cache
- global _ns_resolver_cache
- global _callable_cache
- _resolver_cache.clear()
- _ns_resolver_cache.clear()
- _callable_cache.clear()
-
-def set_script_prefix(prefix):
- """
- Sets the script prefix for the current thread.
- """
- if not prefix.endswith('/'):
- prefix += '/'
- _prefixes.value = prefix
-
-def get_script_prefix():
- """
- Returns the currently active script prefix. Useful for client code that
- wishes to construct their own URLs manually (although accessing the request
- instance is normally going to be a lot cleaner).
- """
- return getattr(_prefixes, "value", '/')
-
-def clear_script_prefix():
- """
- Unsets the script prefix for the current thread.
- """
- try:
- del _prefixes.value
- except AttributeError:
- pass
-
-def set_urlconf(urlconf_name):
- """
- Sets the URLconf for the current thread (overriding the default one in
- settings). Set to None to revert back to the default.
- """
- if urlconf_name:
- _urlconfs.value = urlconf_name
- else:
- if hasattr(_urlconfs, "value"):
- del _urlconfs.value
-
-def get_urlconf(default=None):
- """
- Returns the root URLconf to use for the current thread if it has been
- changed from the default one.
- """
- return getattr(_urlconfs, "value", default)
-
-def is_valid_path(path, urlconf=None):
- """
- Returns True if the given path resolves against the default URL resolver,
- False otherwise.
-
- This is a convenience method to make working with "is this a match?" cases
- easier, avoiding unnecessarily indented try...except blocks.
- """
- try:
- resolve(path, urlconf)
- return True
- except Resolver404:
- return False
diff --git a/lib/python2.7/site-packages/django/core/validators.py b/lib/python2.7/site-packages/django/core/validators.py
deleted file mode 100644
index 78716cc..0000000
--- a/lib/python2.7/site-packages/django/core/validators.py
+++ /dev/null
@@ -1,221 +0,0 @@
-from __future__ import unicode_literals
-
-import re
-
-from django.core.exceptions import ValidationError
-from django.utils.translation import ugettext_lazy as _, ungettext_lazy
-from django.utils.encoding import force_text
-from django.utils.ipv6 import is_valid_ipv6_address
-from django.utils import six
-from django.utils.six.moves.urllib.parse import urlsplit, urlunsplit
-
-
-# These values, if given to validate(), will trigger the self.required check.
-EMPTY_VALUES = (None, '', [], (), {})
-
-
-class RegexValidator(object):
- regex = ''
- message = _('Enter a valid value.')
- code = 'invalid'
-
- def __init__(self, regex=None, message=None, code=None):
- if regex is not None:
- self.regex = regex
- if message is not None:
- self.message = message
- if code is not None:
- self.code = code
-
- # Compile the regex if it was not passed pre-compiled.
- if isinstance(self.regex, six.string_types):
- self.regex = re.compile(self.regex)
-
- def __call__(self, value):
- """
- Validates that the input matches the regular expression.
- """
- if not self.regex.search(force_text(value)):
- raise ValidationError(self.message, code=self.code)
-
-
-class URLValidator(RegexValidator):
- regex = re.compile(
- r'^(?:http|ftp)s?://' # http:// or https://
- r'(?:(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}\.?|[A-Z0-9-]{2,}\.?)|' # domain...
- r'localhost|' # localhost...
- r'\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}|' # ...or ipv4
- r'\[?[A-F0-9]*:[A-F0-9:]+\]?)' # ...or ipv6
- r'(?::\d+)?' # optional port
- r'(?:/?|[/?]\S+)$', re.IGNORECASE)
- message = _('Enter a valid URL.')
-
- def __call__(self, value):
- try:
- super(URLValidator, self).__call__(value)
- except ValidationError as e:
- # Trivial case failed. Try for possible IDN domain
- if value:
- value = force_text(value)
- scheme, netloc, path, query, fragment = urlsplit(value)
- try:
- netloc = netloc.encode('idna').decode('ascii') # IDN -> ACE
- except UnicodeError: # invalid domain part
- raise e
- url = urlunsplit((scheme, netloc, path, query, fragment))
- super(URLValidator, self).__call__(url)
- else:
- raise
- else:
- url = value
-
-
-def validate_integer(value):
- try:
- int(value)
- except (ValueError, TypeError):
- raise ValidationError(_('Enter a valid integer.'), code='invalid')
-
-
-class EmailValidator(object):
- message = _('Enter a valid email address.')
- code = 'invalid'
- user_regex = re.compile(
- r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*$" # dot-atom
- r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*"$)', # quoted-string
- re.IGNORECASE)
- domain_regex = re.compile(
- r'(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}|[A-Z0-9-]{2,})\.?$' # domain
- # literal form, ipv4 address (SMTP 4.1.3)
- r'|^\[(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\]$',
- re.IGNORECASE)
- domain_whitelist = ['localhost']
-
- def __init__(self, message=None, code=None, whitelist=None):
- if message is not None:
- self.message = message
- if code is not None:
- self.code = code
- if whitelist is not None:
- self.domain_whitelist = whitelist
-
- def __call__(self, value):
- value = force_text(value)
-
- if not value or '@' not in value:
- raise ValidationError(self.message, code=self.code)
-
- user_part, domain_part = value.rsplit('@', 1)
-
- if not self.user_regex.match(user_part):
- raise ValidationError(self.message, code=self.code)
-
- if (not domain_part in self.domain_whitelist and
- not self.domain_regex.match(domain_part)):
- # Try for possible IDN domain-part
- try:
- domain_part = domain_part.encode('idna').decode('ascii')
- if not self.domain_regex.match(domain_part):
- raise ValidationError(self.message, code=self.code)
- else:
- return
- except UnicodeError:
- pass
- raise ValidationError(self.message, code=self.code)
-
-validate_email = EmailValidator()
-
-slug_re = re.compile(r'^[-a-zA-Z0-9_]+$')
-validate_slug = RegexValidator(slug_re, _("Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens."), 'invalid')
-
-ipv4_re = re.compile(r'^(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}$')
-validate_ipv4_address = RegexValidator(ipv4_re, _('Enter a valid IPv4 address.'), 'invalid')
-
-
-def validate_ipv6_address(value):
- if not is_valid_ipv6_address(value):
- raise ValidationError(_('Enter a valid IPv6 address.'), code='invalid')
-
-
-def validate_ipv46_address(value):
- try:
- validate_ipv4_address(value)
- except ValidationError:
- try:
- validate_ipv6_address(value)
- except ValidationError:
- raise ValidationError(_('Enter a valid IPv4 or IPv6 address.'), code='invalid')
-
-ip_address_validator_map = {
- 'both': ([validate_ipv46_address], _('Enter a valid IPv4 or IPv6 address.')),
- 'ipv4': ([validate_ipv4_address], _('Enter a valid IPv4 address.')),
- 'ipv6': ([validate_ipv6_address], _('Enter a valid IPv6 address.')),
-}
-
-
-def ip_address_validators(protocol, unpack_ipv4):
- """
- Depending on the given parameters returns the appropriate validators for
- the GenericIPAddressField.
-
- This code is here, because it is exactly the same for the model and the form field.
- """
- if protocol != 'both' and unpack_ipv4:
- raise ValueError(
- "You can only use `unpack_ipv4` if `protocol` is set to 'both'")
- try:
- return ip_address_validator_map[protocol.lower()]
- except KeyError:
- raise ValueError("The protocol '%s' is unknown. Supported: %s"
- % (protocol, list(ip_address_validator_map)))
-
-comma_separated_int_list_re = re.compile('^[\d,]+$')
-validate_comma_separated_integer_list = RegexValidator(comma_separated_int_list_re, _('Enter only digits separated by commas.'), 'invalid')
-
-
-class BaseValidator(object):
- compare = lambda self, a, b: a is not b
- clean = lambda self, x: x
- message = _('Ensure this value is %(limit_value)s (it is %(show_value)s).')
- code = 'limit_value'
-
- def __init__(self, limit_value):
- self.limit_value = limit_value
-
- def __call__(self, value):
- cleaned = self.clean(value)
- params = {'limit_value': self.limit_value, 'show_value': cleaned}
- if self.compare(cleaned, self.limit_value):
- raise ValidationError(self.message, code=self.code, params=params)
-
-
-class MaxValueValidator(BaseValidator):
- compare = lambda self, a, b: a > b
- message = _('Ensure this value is less than or equal to %(limit_value)s.')
- code = 'max_value'
-
-
-class MinValueValidator(BaseValidator):
- compare = lambda self, a, b: a < b
- message = _('Ensure this value is greater than or equal to %(limit_value)s.')
- code = 'min_value'
-
-
-class MinLengthValidator(BaseValidator):
- compare = lambda self, a, b: a < b
- clean = lambda self, x: len(x)
- message = ungettext_lazy(
- 'Ensure this value has at least %(limit_value)d character (it has %(show_value)d).',
- 'Ensure this value has at least %(limit_value)d characters (it has %(show_value)d).',
- 'limit_value')
- code = 'min_length'
-
-
-class MaxLengthValidator(BaseValidator):
- compare = lambda self, a, b: a > b
- clean = lambda self, x: len(x)
- message = ungettext_lazy(
- 'Ensure this value has at most %(limit_value)d character (it has %(show_value)d).',
- 'Ensure this value has at most %(limit_value)d characters (it has %(show_value)d).',
- 'limit_value')
- code = 'max_length'
diff --git a/lib/python2.7/site-packages/django/core/wsgi.py b/lib/python2.7/site-packages/django/core/wsgi.py
deleted file mode 100644
index edea333..0000000
--- a/lib/python2.7/site-packages/django/core/wsgi.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from django.core.handlers.wsgi import WSGIHandler
-
-
-def get_wsgi_application():
- """
- The public interface to Django's WSGI support. Should return a WSGI
- callable.
-
- Allows us to avoid making django.core.handlers.WSGIHandler public API, in
- case the internal WSGI implementation changes or moves in the future.
-
- """
- return WSGIHandler()
diff --git a/lib/python2.7/site-packages/django/db/__init__.py b/lib/python2.7/site-packages/django/db/__init__.py
deleted file mode 100644
index 2421dde..0000000
--- a/lib/python2.7/site-packages/django/db/__init__.py
+++ /dev/null
@@ -1,96 +0,0 @@
-import warnings
-
-from django.core import signals
-from django.db.utils import (DEFAULT_DB_ALIAS,
- DataError, OperationalError, IntegrityError, InternalError,
- ProgrammingError, NotSupportedError, DatabaseError,
- InterfaceError, Error,
- load_backend, ConnectionHandler, ConnectionRouter)
-from django.utils.functional import cached_property
-
-__all__ = ('backend', 'connection', 'connections', 'router', 'DatabaseError',
- 'IntegrityError', 'DEFAULT_DB_ALIAS')
-
-connections = ConnectionHandler()
-
-router = ConnectionRouter()
-
-# `connection`, `DatabaseError` and `IntegrityError` are convenient aliases
-# for backend bits.
-
-# DatabaseWrapper.__init__() takes a dictionary, not a settings module, so
-# we manually create the dictionary from the settings, passing only the
-# settings that the database backends care about. Note that TIME_ZONE is used
-# by the PostgreSQL backends.
-# We load all these up for backwards compatibility, you should use
-# connections['default'] instead.
-class DefaultConnectionProxy(object):
- """
- Proxy for accessing the default DatabaseWrapper object's attributes. If you
- need to access the DatabaseWrapper object itself, use
- connections[DEFAULT_DB_ALIAS] instead.
- """
- def __getattr__(self, item):
- return getattr(connections[DEFAULT_DB_ALIAS], item)
-
- def __setattr__(self, name, value):
- return setattr(connections[DEFAULT_DB_ALIAS], name, value)
-
- def __delattr__(self, name):
- return delattr(connections[DEFAULT_DB_ALIAS], name)
-
-connection = DefaultConnectionProxy()
-
-class DefaultBackendProxy(object):
- """
- Temporary proxy class used during deprecation period of the `backend` module
- variable.
- """
- @cached_property
- def _backend(self):
- warnings.warn("Accessing django.db.backend is deprecated.",
- PendingDeprecationWarning, stacklevel=2)
- return load_backend(connections[DEFAULT_DB_ALIAS].settings_dict['ENGINE'])
-
- def __getattr__(self, item):
- return getattr(self._backend, item)
-
- def __setattr__(self, name, value):
- return setattr(self._backend, name, value)
-
- def __delattr__(self, name):
- return delattr(self._backend, name)
-
-backend = DefaultBackendProxy()
-
-def close_connection(**kwargs):
- warnings.warn(
- "close_connection is superseded by close_old_connections.",
- PendingDeprecationWarning, stacklevel=2)
- # Avoid circular imports
- from django.db import transaction
- for conn in connections:
- # If an error happens here the connection will be left in broken
- # state. Once a good db connection is again available, the
- # connection state will be cleaned up.
- transaction.abort(conn)
- connections[conn].close()
-
-# Register an event to reset saved queries when a Django request is started.
-def reset_queries(**kwargs):
- for conn in connections.all():
- conn.queries = []
-signals.request_started.connect(reset_queries)
-
-# Register an event to reset transaction state and close connections past
-# their lifetime. NB: abort() doesn't do anything outside of a transaction.
-def close_old_connections(**kwargs):
- for conn in connections.all():
- # Remove this when the legacy transaction management goes away.
- try:
- conn.abort()
- except DatabaseError:
- pass
- conn.close_if_unusable_or_obsolete()
-signals.request_started.connect(close_old_connections)
-signals.request_finished.connect(close_old_connections)
diff --git a/lib/python2.7/site-packages/django/db/backends/__init__.py b/lib/python2.7/site-packages/django/db/backends/__init__.py
deleted file mode 100644
index 12f08a2..0000000
--- a/lib/python2.7/site-packages/django/db/backends/__init__.py
+++ /dev/null
@@ -1,1356 +0,0 @@
-import datetime
-import time
-
-from django.db.utils import DatabaseError
-
-try:
- from django.utils.six.moves import _thread as thread
-except ImportError:
- from django.utils.six.moves import _dummy_thread as thread
-from collections import namedtuple
-from contextlib import contextmanager
-
-from django.conf import settings
-from django.db import DEFAULT_DB_ALIAS
-from django.db.backends.signals import connection_created
-from django.db.backends import util
-from django.db.transaction import TransactionManagementError
-from django.db.utils import DatabaseErrorWrapper
-from django.utils.functional import cached_property
-from django.utils.importlib import import_module
-from django.utils import six
-from django.utils import timezone
-
-
-class BaseDatabaseWrapper(object):
- """
- Represents a database connection.
- """
- ops = None
- vendor = 'unknown'
-
- def __init__(self, settings_dict, alias=DEFAULT_DB_ALIAS,
- allow_thread_sharing=False):
- # `settings_dict` should be a dictionary containing keys such as
- # NAME, USER, etc. It's called `settings_dict` instead of `settings`
- # to disambiguate it from Django settings modules.
- self.connection = None
- self.queries = []
- self.settings_dict = settings_dict
- self.alias = alias
- self.use_debug_cursor = None
-
- # Savepoint management related attributes
- self.savepoint_state = 0
-
- # Transaction management related attributes
- self.autocommit = False
- self.transaction_state = []
- # Tracks if the connection is believed to be in transaction. This is
- # set somewhat aggressively, as the DBAPI doesn't make it easy to
- # deduce if the connection is in transaction or not.
- self._dirty = False
- # Tracks if the connection is in a transaction managed by 'atomic'.
- self.in_atomic_block = False
- # List of savepoints created by 'atomic'
- self.savepoint_ids = []
- # Tracks if the outermost 'atomic' block should commit on exit,
- # ie. if autocommit was active on entry.
- self.commit_on_exit = True
- # Tracks if the transaction should be rolled back to the next
- # available savepoint because of an exception in an inner block.
- self.needs_rollback = False
-
- # Connection termination related attributes
- self.close_at = None
- self.closed_in_transaction = False
- self.errors_occurred = False
-
- # Thread-safety related attributes
- self.allow_thread_sharing = allow_thread_sharing
- self._thread_ident = thread.get_ident()
-
- def __eq__(self, other):
- return self.alias == other.alias
-
- def __ne__(self, other):
- return not self == other
-
- def __hash__(self):
- return hash(self.alias)
-
- ##### Backend-specific methods for creating connections and cursors #####
-
- def get_connection_params(self):
- """Returns a dict of parameters suitable for get_new_connection."""
- raise NotImplementedError
-
- def get_new_connection(self, conn_params):
- """Opens a connection to the database."""
- raise NotImplementedError
-
- def init_connection_state(self):
- """Initializes the database connection settings."""
- raise NotImplementedError
-
- def create_cursor(self):
- """Creates a cursor. Assumes that a connection is established."""
- raise NotImplementedError
-
- ##### Backend-specific methods for creating connections #####
-
- def connect(self):
- """Connects to the database. Assumes that the connection is closed."""
- # In case the previous connection was closed while in an atomic block
- self.in_atomic_block = False
- self.savepoint_ids = []
- self.needs_rollback = False
- # Reset parameters defining when to close the connection
- max_age = self.settings_dict['CONN_MAX_AGE']
- self.close_at = None if max_age is None else time.time() + max_age
- self.closed_in_transaction = False
- self.errors_occurred = False
- # Establish the connection
- conn_params = self.get_connection_params()
- self.connection = self.get_new_connection(conn_params)
- self.init_connection_state()
- if self.settings_dict['AUTOCOMMIT']:
- self.set_autocommit(True)
- connection_created.send(sender=self.__class__, connection=self)
-
- def ensure_connection(self):
- """
- Guarantees that a connection to the database is established.
- """
- if self.connection is None:
- with self.wrap_database_errors:
- self.connect()
-
- ##### Backend-specific wrappers for PEP-249 connection methods #####
-
- def _cursor(self):
- self.ensure_connection()
- with self.wrap_database_errors:
- return self.create_cursor()
-
- def _commit(self):
- if self.connection is not None:
- with self.wrap_database_errors:
- return self.connection.commit()
-
- def _rollback(self):
- if self.connection is not None:
- with self.wrap_database_errors:
- return self.connection.rollback()
-
- def _close(self):
- if self.connection is not None:
- with self.wrap_database_errors:
- return self.connection.close()
-
- ##### Generic wrappers for PEP-249 connection methods #####
-
- def cursor(self):
- """
- Creates a cursor, opening a connection if necessary.
- """
- self.validate_thread_sharing()
- if (self.use_debug_cursor or
- (self.use_debug_cursor is None and settings.DEBUG)):
- cursor = self.make_debug_cursor(self._cursor())
- else:
- cursor = util.CursorWrapper(self._cursor(), self)
- return cursor
-
- def commit(self):
- """
- Commits a transaction and resets the dirty flag.
- """
- self.validate_thread_sharing()
- self.validate_no_atomic_block()
- self._commit()
- self.set_clean()
-
- def rollback(self):
- """
- Rolls back a transaction and resets the dirty flag.
- """
- self.validate_thread_sharing()
- self.validate_no_atomic_block()
- self._rollback()
- self.set_clean()
-
- def close(self):
- """
- Closes the connection to the database.
- """
- self.validate_thread_sharing()
- # Don't call validate_no_atomic_block() to avoid making it difficult
- # to get rid of a connection in an invalid state. The next connect()
- # will reset the transaction state anyway.
- try:
- self._close()
- finally:
- if self.in_atomic_block:
- self.closed_in_transaction = True
- self.needs_rollback = True
- else:
- self.connection = None
- self.set_clean()
-
- ##### Backend-specific savepoint management methods #####
-
- def _savepoint(self, sid):
- self.cursor().execute(self.ops.savepoint_create_sql(sid))
-
- def _savepoint_rollback(self, sid):
- self.cursor().execute(self.ops.savepoint_rollback_sql(sid))
-
- def _savepoint_commit(self, sid):
- self.cursor().execute(self.ops.savepoint_commit_sql(sid))
-
- def _savepoint_allowed(self):
- # Savepoints cannot be created outside a transaction
- return self.features.uses_savepoints and not self.get_autocommit()
-
- ##### Generic savepoint management methods #####
-
- def savepoint(self):
- """
- Creates a savepoint inside the current transaction. Returns an
- identifier for the savepoint that will be used for the subsequent
- rollback or commit. Does nothing if savepoints are not supported.
- """
- if not self._savepoint_allowed():
- return
-
- thread_ident = thread.get_ident()
- tid = str(thread_ident).replace('-', '')
-
- self.savepoint_state += 1
- sid = "s%s_x%d" % (tid, self.savepoint_state)
-
- self.validate_thread_sharing()
- self._savepoint(sid)
-
- return sid
-
- def savepoint_rollback(self, sid):
- """
- Rolls back to a savepoint. Does nothing if savepoints are not supported.
- """
- if not self._savepoint_allowed():
- return
-
- self.validate_thread_sharing()
- self._savepoint_rollback(sid)
-
- def savepoint_commit(self, sid):
- """
- Releases a savepoint. Does nothing if savepoints are not supported.
- """
- if not self._savepoint_allowed():
- return
-
- self.validate_thread_sharing()
- self._savepoint_commit(sid)
-
- def clean_savepoints(self):
- """
- Resets the counter used to generate unique savepoint ids in this thread.
- """
- self.savepoint_state = 0
-
- ##### Backend-specific transaction management methods #####
-
- def _set_autocommit(self, autocommit):
- """
- Backend-specific implementation to enable or disable autocommit.
- """
- raise NotImplementedError
-
- ##### Generic transaction management methods #####
-
- def enter_transaction_management(self, managed=True, forced=False):
- """
- Enters transaction management for a running thread. It must be balanced with
- the appropriate leave_transaction_management call, since the actual state is
- managed as a stack.
-
- The state and dirty flag are carried over from the surrounding block or
- from the settings, if there is no surrounding block (dirty is always false
- when no current block is running).
-
- If you switch off transaction management and there is a pending
- commit/rollback, the data will be commited, unless "forced" is True.
- """
- self.validate_no_atomic_block()
-
- self.transaction_state.append(managed)
-
- if not managed and self.is_dirty() and not forced:
- self.commit()
- self.set_clean()
-
- if managed == self.get_autocommit():
- self.set_autocommit(not managed)
-
- def leave_transaction_management(self):
- """
- Leaves transaction management for a running thread. A dirty flag is carried
- over to the surrounding block, as a commit will commit all changes, even
- those from outside. (Commits are on connection level.)
- """
- self.validate_no_atomic_block()
-
- if self.transaction_state:
- del self.transaction_state[-1]
- else:
- raise TransactionManagementError(
- "This code isn't under transaction management")
-
- if self.transaction_state:
- managed = self.transaction_state[-1]
- else:
- managed = not self.settings_dict['AUTOCOMMIT']
-
- if self._dirty:
- self.rollback()
- if managed == self.get_autocommit():
- self.set_autocommit(not managed)
- raise TransactionManagementError(
- "Transaction managed block ended with pending COMMIT/ROLLBACK")
-
- if managed == self.get_autocommit():
- self.set_autocommit(not managed)
-
- def get_autocommit(self):
- """
- Check the autocommit state.
- """
- self.ensure_connection()
- return self.autocommit
-
- def set_autocommit(self, autocommit):
- """
- Enable or disable autocommit.
- """
- self.validate_no_atomic_block()
- self.ensure_connection()
- self._set_autocommit(autocommit)
- self.autocommit = autocommit
-
- def get_rollback(self):
- """
- Get the "needs rollback" flag -- for *advanced use* only.
- """
- if not self.in_atomic_block:
- raise TransactionManagementError(
- "The rollback flag doesn't work outside of an 'atomic' block.")
- return self.needs_rollback
-
- def set_rollback(self, rollback):
- """
- Set or unset the "needs rollback" flag -- for *advanced use* only.
- """
- if not self.in_atomic_block:
- raise TransactionManagementError(
- "The rollback flag doesn't work outside of an 'atomic' block.")
- self.needs_rollback = rollback
-
- def validate_no_atomic_block(self):
- """
- Raise an error if an atomic block is active.
- """
- if self.in_atomic_block:
- raise TransactionManagementError(
- "This is forbidden when an 'atomic' block is active.")
-
- def validate_no_broken_transaction(self):
- if self.needs_rollback:
- raise TransactionManagementError(
- "An error occurred in the current transaction. You can't "
- "execute queries until the end of the 'atomic' block.")
-
- def abort(self):
- """
- Roll back any ongoing transaction and clean the transaction state
- stack.
- """
- if self._dirty:
- self.rollback()
- while self.transaction_state:
- self.leave_transaction_management()
-
- def is_dirty(self):
- """
- Returns True if the current transaction requires a commit for changes to
- happen.
- """
- return self._dirty
-
- def set_dirty(self):
- """
- Sets a dirty flag for the current thread and code streak. This can be used
- to decide in a managed block of code to decide whether there are open
- changes waiting for commit.
- """
- if not self.get_autocommit():
- self._dirty = True
-
- def set_clean(self):
- """
- Resets a dirty flag for the current thread and code streak. This can be used
- to decide in a managed block of code to decide whether a commit or rollback
- should happen.
- """
- self._dirty = False
- self.clean_savepoints()
-
- ##### Foreign key constraints checks handling #####
-
- @contextmanager
- def constraint_checks_disabled(self):
- """
- Context manager that disables foreign key constraint checking.
- """
- disabled = self.disable_constraint_checking()
- try:
- yield
- finally:
- if disabled:
- self.enable_constraint_checking()
-
- def disable_constraint_checking(self):
- """
- Backends can implement as needed to temporarily disable foreign key
- constraint checking. Should return True if the constraints were
- disabled and will need to be reenabled.
- """
- return False
-
- def enable_constraint_checking(self):
- """
- Backends can implement as needed to re-enable foreign key constraint
- checking.
- """
- pass
-
- def check_constraints(self, table_names=None):
- """
- Backends can override this method if they can apply constraint
- checking (e.g. via "SET CONSTRAINTS ALL IMMEDIATE"). Should raise an
- IntegrityError if any invalid foreign key references are encountered.
- """
- pass
-
- ##### Connection termination handling #####
-
- def is_usable(self):
- """
- Tests if the database connection is usable.
-
- This function may assume that self.connection is not None.
-
- Actual implementations should take care not to raise exceptions
- as that may prevent Django from recycling unusable connections.
- """
- raise NotImplementedError(
- "subclasses of BaseDatabaseWrapper may require an is_usable() method")
-
- def close_if_unusable_or_obsolete(self):
- """
- Closes the current connection if unrecoverable errors have occurred,
- or if it outlived its maximum age.
- """
- if self.connection is not None:
- # If the application didn't restore the original autocommit setting,
- # don't take chances, drop the connection.
- if self.get_autocommit() != self.settings_dict['AUTOCOMMIT']:
- self.close()
- return
-
- if self.errors_occurred:
- if self.is_usable():
- self.errors_occurred = False
- else:
- self.close()
- return
-
- if self.close_at is not None and time.time() >= self.close_at:
- self.close()
- return
-
- ##### Thread safety handling #####
-
- def validate_thread_sharing(self):
- """
- Validates that the connection isn't accessed by another thread than the
- one which originally created it, unless the connection was explicitly
- authorized to be shared between threads (via the `allow_thread_sharing`
- property). Raises an exception if the validation fails.
- """
- if not (self.allow_thread_sharing
- or self._thread_ident == thread.get_ident()):
- raise DatabaseError("DatabaseWrapper objects created in a "
- "thread can only be used in that same thread. The object "
- "with alias '%s' was created in thread id %s and this is "
- "thread id %s."
- % (self.alias, self._thread_ident, thread.get_ident()))
-
- ##### Miscellaneous #####
-
- @cached_property
- def wrap_database_errors(self):
- """
- Context manager and decorator that re-throws backend-specific database
- exceptions using Django's common wrappers.
- """
- return DatabaseErrorWrapper(self)
-
- def make_debug_cursor(self, cursor):
- """
- Creates a cursor that logs all queries in self.queries.
- """
- return util.CursorDebugWrapper(cursor, self)
-
- @contextmanager
- def temporary_connection(self):
- """
- Context manager that ensures that a connection is established, and
- if it opened one, closes it to avoid leaving a dangling connection.
- This is useful for operations outside of the request-response cycle.
-
- Provides a cursor: with self.temporary_connection() as cursor: ...
- """
- must_close = self.connection is None
- cursor = self.cursor()
- try:
- yield cursor
- finally:
- cursor.close()
- if must_close:
- self.close()
-
- def _start_transaction_under_autocommit(self):
- """
- Only required when autocommits_when_autocommit_is_off = True.
- """
- raise NotImplementedError
-
-
-class BaseDatabaseFeatures(object):
- allows_group_by_pk = False
- # True if django.db.backend.utils.typecast_timestamp is used on values
- # returned from dates() calls.
- needs_datetime_string_cast = True
- empty_fetchmany_value = []
- update_can_self_select = True
-
- # Does the backend distinguish between '' and None?
- interprets_empty_strings_as_nulls = False
-
- # Does the backend allow inserting duplicate rows when a unique_together
- # constraint exists, but one of the unique_together columns is NULL?
- ignores_nulls_in_unique_constraints = True
-
- can_use_chunked_reads = True
- can_return_id_from_insert = False
- has_bulk_insert = False
- uses_savepoints = False
- can_combine_inserts_with_and_without_auto_increment_pk = False
-
- # If True, don't use integer foreign keys referring to, e.g., positive
- # integer primary keys.
- related_fields_match_type = False
- allow_sliced_subqueries = True
- has_select_for_update = False
- has_select_for_update_nowait = False
-
- supports_select_related = True
-
- # Does the default test database allow multiple connections?
- # Usually an indication that the test database is in-memory
- test_db_allows_multiple_connections = True
-
- # Can an object be saved without an explicit primary key?
- supports_unspecified_pk = False
-
- # Can a fixture contain forward references? i.e., are
- # FK constraints checked at the end of transaction, or
- # at the end of each save operation?
- supports_forward_references = True
-
- # Does a dirty transaction need to be rolled back
- # before the cursor can be used again?
- requires_rollback_on_dirty_transaction = False
-
- # Does the backend allow very long model names without error?
- supports_long_model_names = True
-
- # Is there a REAL datatype in addition to floats/doubles?
- has_real_datatype = False
- supports_subqueries_in_group_by = True
- supports_bitwise_or = True
-
- # Do time/datetime fields have microsecond precision?
- supports_microsecond_precision = True
-
- # Does the __regex lookup support backreferencing and grouping?
- supports_regex_backreferencing = True
-
- # Can date/datetime lookups be performed using a string?
- supports_date_lookup_using_string = True
-
- # Can datetimes with timezones be used?
- supports_timezones = True
-
- # Does the database have a copy of the zoneinfo database?
- has_zoneinfo_database = True
-
- # When performing a GROUP BY, is an ORDER BY NULL required
- # to remove any ordering?
- requires_explicit_null_ordering_when_grouping = False
-
- # Is there a 1000 item limit on query parameters?
- supports_1000_query_parameters = True
-
- # Can an object have a primary key of 0? MySQL says No.
- allows_primary_key_0 = True
-
- # Do we need to NULL a ForeignKey out, or can the constraint check be
- # deferred
- can_defer_constraint_checks = False
-
- # date_interval_sql can properly handle mixed Date/DateTime fields and timedeltas
- supports_mixed_date_datetime_comparisons = True
-
- # Does the backend support tablespaces? Default to False because it isn't
- # in the SQL standard.
- supports_tablespaces = False
-
- # Does the backend reset sequences between tests?
- supports_sequence_reset = True
-
- # Confirm support for introspected foreign keys
- # Every database can do this reliably, except MySQL,
- # which can't do it for MyISAM tables
- can_introspect_foreign_keys = True
-
- # Support for the DISTINCT ON clause
- can_distinct_on_fields = False
-
- # Does the backend decide to commit before SAVEPOINT statements
- # when autocommit is disabled? http://bugs.python.org/issue8145#msg109965
- autocommits_when_autocommit_is_off = False
-
- # Does the backend prevent running SQL queries in broken transactions?
- atomic_transactions = True
-
- # Does the backend support 'pyformat' style ("... %(name)s ...", {'name': value})
- # parameter passing? Note this can be provided by the backend even if not
- # supported by the Python driver
- supports_paramstyle_pyformat = True
-
- def __init__(self, connection):
- self.connection = connection
-
- @cached_property
- def supports_transactions(self):
- "Confirm support for transactions"
- try:
- # Make sure to run inside a managed transaction block,
- # otherwise autocommit will cause the confimation to
- # fail.
- self.connection.enter_transaction_management()
- cursor = self.connection.cursor()
- cursor.execute('CREATE TABLE ROLLBACK_TEST (X INT)')
- self.connection.commit()
- cursor.execute('INSERT INTO ROLLBACK_TEST (X) VALUES (8)')
- self.connection.rollback()
- cursor.execute('SELECT COUNT(X) FROM ROLLBACK_TEST')
- count, = cursor.fetchone()
- cursor.execute('DROP TABLE ROLLBACK_TEST')
- self.connection.commit()
- finally:
- self.connection.leave_transaction_management()
- return count == 0
-
- @cached_property
- def supports_stddev(self):
- "Confirm support for STDDEV and related stats functions"
- class StdDevPop(object):
- sql_function = 'STDDEV_POP'
-
- try:
- self.connection.ops.check_aggregate_support(StdDevPop())
- return True
- except NotImplementedError:
- return False
-
-
-class BaseDatabaseOperations(object):
- """
- This class encapsulates all backend-specific differences, such as the way
- a backend performs ordering or calculates the ID of a recently-inserted
- row.
- """
- compiler_module = "django.db.models.sql.compiler"
-
- def __init__(self, connection):
- self.connection = connection
- self._cache = None
-
- def autoinc_sql(self, table, column):
- """
- Returns any SQL needed to support auto-incrementing primary keys, or
- None if no SQL is necessary.
-
- This SQL is executed when a table is created.
- """
- return None
-
- def bulk_batch_size(self, fields, objs):
- """
- Returns the maximum allowed batch size for the backend. The fields
- are the fields going to be inserted in the batch, the objs contains
- all the objects to be inserted.
- """
- return len(objs)
-
- def cache_key_culling_sql(self):
- """
- Returns an SQL query that retrieves the first cache key greater than the
- n smallest.
-
- This is used by the 'db' cache backend to determine where to start
- culling.
- """
- return "SELECT cache_key FROM %s ORDER BY cache_key LIMIT 1 OFFSET %%s"
-
- def date_extract_sql(self, lookup_type, field_name):
- """
- Given a lookup_type of 'year', 'month' or 'day', returns the SQL that
- extracts a value from the given date field field_name.
- """
- raise NotImplementedError()
-
- def date_interval_sql(self, sql, connector, timedelta):
- """
- Implements the date interval functionality for expressions
- """
- raise NotImplementedError()
-
- def date_trunc_sql(self, lookup_type, field_name):
- """
- Given a lookup_type of 'year', 'month' or 'day', returns the SQL that
- truncates the given date field field_name to a date object with only
- the given specificity.
- """
- raise NotImplementedError()
-
- def datetime_cast_sql(self):
- """
- Returns the SQL necessary to cast a datetime value so that it will be
- retrieved as a Python datetime object instead of a string.
-
- This SQL should include a '%s' in place of the field's name.
- """
- return "%s"
-
- def datetime_extract_sql(self, lookup_type, field_name, tzname):
- """
- Given a lookup_type of 'year', 'month', 'day', 'hour', 'minute' or
- 'second', returns the SQL that extracts a value from the given
- datetime field field_name, and a tuple of parameters.
- """
- raise NotImplementedError()
-
- def datetime_trunc_sql(self, lookup_type, field_name, tzname):
- """
- Given a lookup_type of 'year', 'month', 'day', 'hour', 'minute' or
- 'second', returns the SQL that truncates the given datetime field
- field_name to a datetime object with only the given specificity, and
- a tuple of parameters.
- """
- raise NotImplementedError()
-
- def deferrable_sql(self):
- """
- Returns the SQL necessary to make a constraint "initially deferred"
- during a CREATE TABLE statement.
- """
- return ''
-
- def distinct_sql(self, fields):
- """
- Returns an SQL DISTINCT clause which removes duplicate rows from the
- result set. If any fields are given, only the given fields are being
- checked for duplicates.
- """
- if fields:
- raise NotImplementedError('DISTINCT ON fields is not supported by this database backend')
- else:
- return 'DISTINCT'
-
- def drop_foreignkey_sql(self):
- """
- Returns the SQL command that drops a foreign key.
- """
- return "DROP CONSTRAINT"
-
- def drop_sequence_sql(self, table):
- """
- Returns any SQL necessary to drop the sequence for the given table.
- Returns None if no SQL is necessary.
- """
- return None
-
- def fetch_returned_insert_id(self, cursor):
- """
- Given a cursor object that has just performed an INSERT...RETURNING
- statement into a table that has an auto-incrementing ID, returns the
- newly created ID.
- """
- return cursor.fetchone()[0]
-
- def field_cast_sql(self, db_type, internal_type):
- """
- Given a column type (e.g. 'BLOB', 'VARCHAR'), and an internal type
- (e.g. 'GenericIPAddressField'), returns the SQL necessary to cast it
- before using it in a WHERE statement. Note that the resulting string
- should contain a '%s' placeholder for the column being searched against.
- """
- return '%s'
-
- def force_no_ordering(self):
- """
- Returns a list used in the "ORDER BY" clause to force no ordering at
- all. Returning an empty list means that nothing will be included in the
- ordering.
- """
- return []
-
- def for_update_sql(self, nowait=False):
- """
- Returns the FOR UPDATE SQL clause to lock rows for an update operation.
- """
- if nowait:
- return 'FOR UPDATE NOWAIT'
- else:
- return 'FOR UPDATE'
-
- def fulltext_search_sql(self, field_name):
- """
- Returns the SQL WHERE clause to use in order to perform a full-text
- search of the given field_name. Note that the resulting string should
- contain a '%s' placeholder for the value being searched against.
- """
- raise NotImplementedError('Full-text search is not implemented for this database backend')
-
- def last_executed_query(self, cursor, sql, params):
- """
- Returns a string of the query last executed by the given cursor, with
- placeholders replaced with actual values.
-
- `sql` is the raw query containing placeholders, and `params` is the
- sequence of parameters. These are used by default, but this method
- exists for database backends to provide a better implementation
- according to their own quoting schemes.
- """
- from django.utils.encoding import force_text
-
- # Convert params to contain Unicode values.
- to_unicode = lambda s: force_text(s, strings_only=True, errors='replace')
- if isinstance(params, (list, tuple)):
- u_params = tuple(to_unicode(val) for val in params)
- elif params is None:
- u_params = ()
- else:
- u_params = dict((to_unicode(k), to_unicode(v)) for k, v in params.items())
-
- return six.text_type("QUERY = %r - PARAMS = %r") % (sql, u_params)
-
- def last_insert_id(self, cursor, table_name, pk_name):
- """
- Given a cursor object that has just performed an INSERT statement into
- a table that has an auto-incrementing ID, returns the newly created ID.
-
- This method also receives the table name and the name of the primary-key
- column.
- """
- return cursor.lastrowid
-
- def lookup_cast(self, lookup_type):
- """
- Returns the string to use in a query when performing lookups
- ("contains", "like", etc). The resulting string should contain a '%s'
- placeholder for the column being searched against.
- """
- return "%s"
-
- def max_in_list_size(self):
- """
- Returns the maximum number of items that can be passed in a single 'IN'
- list condition, or None if the backend does not impose a limit.
- """
- return None
-
- def max_name_length(self):
- """
- Returns the maximum length of table and column names, or None if there
- is no limit.
- """
- return None
-
- def no_limit_value(self):
- """
- Returns the value to use for the LIMIT when we are wanting "LIMIT
- infinity". Returns None if the limit clause can be omitted in this case.
- """
- raise NotImplementedError
-
- def pk_default_value(self):
- """
- Returns the value to use during an INSERT statement to specify that
- the field should use its default value.
- """
- return 'DEFAULT'
-
- def process_clob(self, value):
- """
- Returns the value of a CLOB column, for backends that return a locator
- object that requires additional processing.
- """
- return value
-
- def return_insert_id(self):
- """
- For backends that support returning the last insert ID as part
- of an insert query, this method returns the SQL and params to
- append to the INSERT query. The returned fragment should
- contain a format string to hold the appropriate column.
- """
- pass
-
- def compiler(self, compiler_name):
- """
- Returns the SQLCompiler class corresponding to the given name,
- in the namespace corresponding to the `compiler_module` attribute
- on this backend.
- """
- if self._cache is None:
- self._cache = import_module(self.compiler_module)
- return getattr(self._cache, compiler_name)
-
- def quote_name(self, name):
- """
- Returns a quoted version of the given table, index or column name. Does
- not quote the given name if it's already been quoted.
- """
- raise NotImplementedError()
-
- def random_function_sql(self):
- """
- Returns an SQL expression that returns a random value.
- """
- return 'RANDOM()'
-
- def regex_lookup(self, lookup_type):
- """
- Returns the string to use in a query when performing regular expression
- lookups (using "regex" or "iregex"). The resulting string should
- contain a '%s' placeholder for the column being searched against.
-
- If the feature is not supported (or part of it is not supported), a
- NotImplementedError exception can be raised.
- """
- raise NotImplementedError
-
- def savepoint_create_sql(self, sid):
- """
- Returns the SQL for starting a new savepoint. Only required if the
- "uses_savepoints" feature is True. The "sid" parameter is a string
- for the savepoint id.
- """
- return "SAVEPOINT %s" % self.quote_name(sid)
-
- def savepoint_commit_sql(self, sid):
- """
- Returns the SQL for committing the given savepoint.
- """
- return "RELEASE SAVEPOINT %s" % self.quote_name(sid)
-
- def savepoint_rollback_sql(self, sid):
- """
- Returns the SQL for rolling back the given savepoint.
- """
- return "ROLLBACK TO SAVEPOINT %s" % self.quote_name(sid)
-
- def set_time_zone_sql(self):
- """
- Returns the SQL that will set the connection's time zone.
-
- Returns '' if the backend doesn't support time zones.
- """
- return ''
-
- def sql_flush(self, style, tables, sequences, allow_cascade=False):
- """
- Returns a list of SQL statements required to remove all data from
- the given database tables (without actually removing the tables
- themselves).
-
- The returned value also includes SQL statements required to reset DB
- sequences passed in :param sequences:.
-
- The `style` argument is a Style object as returned by either
- color_style() or no_style() in django.core.management.color.
-
- The `allow_cascade` argument determines whether truncation may cascade
- to tables with foreign keys pointing the tables being truncated.
- PostgreSQL requires a cascade even if these tables are empty.
- """
- raise NotImplementedError()
-
- def sequence_reset_by_name_sql(self, style, sequences):
- """
- Returns a list of the SQL statements required to reset sequences
- passed in :param sequences:.
-
- The `style` argument is a Style object as returned by either
- color_style() or no_style() in django.core.management.color.
- """
- return []
-
- def sequence_reset_sql(self, style, model_list):
- """
- Returns a list of the SQL statements required to reset sequences for
- the given models.
-
- The `style` argument is a Style object as returned by either
- color_style() or no_style() in django.core.management.color.
- """
- return [] # No sequence reset required by default.
-
- def start_transaction_sql(self):
- """
- Returns the SQL statement required to start a transaction.
- """
- return "BEGIN;"
-
- def end_transaction_sql(self, success=True):
- """
- Returns the SQL statement required to end a transaction.
- """
- if not success:
- return "ROLLBACK;"
- return "COMMIT;"
-
- def tablespace_sql(self, tablespace, inline=False):
- """
- Returns the SQL that will be used in a query to define the tablespace.
-
- Returns '' if the backend doesn't support tablespaces.
-
- If inline is True, the SQL is appended to a row; otherwise it's appended
- to the entire CREATE TABLE or CREATE INDEX statement.
- """
- return ''
-
- def prep_for_like_query(self, x):
- """Prepares a value for use in a LIKE query."""
- from django.utils.encoding import force_text
- return force_text(x).replace("\\", "\\\\").replace("%", "\%").replace("_", "\_")
-
- # Same as prep_for_like_query(), but called for "iexact" matches, which
- # need not necessarily be implemented using "LIKE" in the backend.
- prep_for_iexact_query = prep_for_like_query
-
- def validate_autopk_value(self, value):
- """
- Certain backends do not accept some values for "serial" fields
- (for example zero in MySQL). This method will raise a ValueError
- if the value is invalid, otherwise returns validated value.
- """
- return value
-
- def value_to_db_date(self, value):
- """
- Transform a date value to an object compatible with what is expected
- by the backend driver for date columns.
- """
- if value is None:
- return None
- return six.text_type(value)
-
- def value_to_db_datetime(self, value):
- """
- Transform a datetime value to an object compatible with what is expected
- by the backend driver for datetime columns.
- """
- if value is None:
- return None
- return six.text_type(value)
-
- def value_to_db_time(self, value):
- """
- Transform a time value to an object compatible with what is expected
- by the backend driver for time columns.
- """
- if value is None:
- return None
- if timezone.is_aware(value):
- raise ValueError("Django does not support timezone-aware times.")
- return six.text_type(value)
-
- def value_to_db_decimal(self, value, max_digits, decimal_places):
- """
- Transform a decimal.Decimal value to an object compatible with what is
- expected by the backend driver for decimal (numeric) columns.
- """
- if value is None:
- return None
- return util.format_number(value, max_digits, decimal_places)
-
- def year_lookup_bounds_for_date_field(self, value):
- """
- Returns a two-elements list with the lower and upper bound to be used
- with a BETWEEN operator to query a DateField value using a year
- lookup.
-
- `value` is an int, containing the looked-up year.
- """
- first = datetime.date(value, 1, 1)
- second = datetime.date(value, 12, 31)
- return [first, second]
-
- def year_lookup_bounds_for_datetime_field(self, value):
- """
- Returns a two-elements list with the lower and upper bound to be used
- with a BETWEEN operator to query a DateTimeField value using a year
- lookup.
-
- `value` is an int, containing the looked-up year.
- """
- first = datetime.datetime(value, 1, 1)
- second = datetime.datetime(value, 12, 31, 23, 59, 59, 999999)
- if settings.USE_TZ:
- tz = timezone.get_current_timezone()
- first = timezone.make_aware(first, tz)
- second = timezone.make_aware(second, tz)
- return [first, second]
-
- def convert_values(self, value, field):
- """
- Coerce the value returned by the database backend into a consistent type
- that is compatible with the field type.
- """
- if value is None or field is None:
- return value
- internal_type = field.get_internal_type()
- if internal_type == 'FloatField':
- return float(value)
- elif (internal_type and (internal_type.endswith('IntegerField')
- or internal_type == 'AutoField')):
- return int(value)
- return value
-
- def check_aggregate_support(self, aggregate_func):
- """Check that the backend supports the provided aggregate
-
- This is used on specific backends to rule out known aggregates
- that are known to have faulty implementations. If the named
- aggregate function has a known problem, the backend should
- raise NotImplementedError.
- """
- pass
-
- def combine_expression(self, connector, sub_expressions):
- """Combine a list of subexpressions into a single expression, using
- the provided connecting operator. This is required because operators
- can vary between backends (e.g., Oracle with %% and &) and between
- subexpression types (e.g., date expressions)
- """
- conn = ' %s ' % connector
- return conn.join(sub_expressions)
-
- def modify_insert_params(self, placeholders, params):
- """Allow modification of insert parameters. Needed for Oracle Spatial
- backend due to #10888.
- """
- return params
-
-
-# Structure returned by the DB-API cursor.description interface (PEP 249)
-FieldInfo = namedtuple('FieldInfo',
- 'name type_code display_size internal_size precision scale null_ok'
-)
-
-class BaseDatabaseIntrospection(object):
- """
- This class encapsulates all backend-specific introspection utilities
- """
- data_types_reverse = {}
-
- def __init__(self, connection):
- self.connection = connection
-
- def get_field_type(self, data_type, description):
- """Hook for a database backend to use the cursor description to
- match a Django field type to a database column.
-
- For Oracle, the column data_type on its own is insufficient to
- distinguish between a FloatField and IntegerField, for example."""
- return self.data_types_reverse[data_type]
-
- def table_name_converter(self, name):
- """Apply a conversion to the name for the purposes of comparison.
-
- The default table name converter is for case sensitive comparison.
- """
- return name
-
- def table_names(self, cursor=None):
- """
- Returns a list of names of all tables that exist in the database.
- The returned table list is sorted by Python's default sorting. We
- do NOT use database's ORDER BY here to avoid subtle differences
- in sorting order between databases.
- """
- if cursor is None:
- cursor = self.connection.cursor()
- return sorted(self.get_table_list(cursor))
-
- def get_table_list(self, cursor):
- """
- Returns an unsorted list of names of all tables that exist in the
- database.
- """
- raise NotImplementedError
-
- def django_table_names(self, only_existing=False):
- """
- Returns a list of all table names that have associated Django models and
- are in INSTALLED_APPS.
-
- If only_existing is True, the resulting list will only include the tables
- that actually exist in the database.
- """
- from django.db import models, router
- tables = set()
- for app in models.get_apps():
- for model in models.get_models(app):
- if not model._meta.managed:
- continue
- if not router.allow_syncdb(self.connection.alias, model):
- continue
- tables.add(model._meta.db_table)
- tables.update([f.m2m_db_table() for f in model._meta.local_many_to_many])
- tables = list(tables)
- if only_existing:
- existing_tables = self.table_names()
- tables = [
- t
- for t in tables
- if self.table_name_converter(t) in existing_tables
- ]
- return tables
-
- def installed_models(self, tables):
- "Returns a set of all models represented by the provided list of table names."
- from django.db import models, router
- all_models = []
- for app in models.get_apps():
- for model in models.get_models(app):
- if router.allow_syncdb(self.connection.alias, model):
- all_models.append(model)
- tables = list(map(self.table_name_converter, tables))
- return set([
- m for m in all_models
- if self.table_name_converter(m._meta.db_table) in tables
- ])
-
- def sequence_list(self):
- "Returns a list of information about all DB sequences for all models in all apps."
- from django.db import models, router
-
- apps = models.get_apps()
- sequence_list = []
-
- for app in apps:
- for model in models.get_models(app):
- if not model._meta.managed:
- continue
- if model._meta.swapped:
- continue
- if not router.allow_syncdb(self.connection.alias, model):
- continue
- for f in model._meta.local_fields:
- if isinstance(f, models.AutoField):
- sequence_list.append({'table': model._meta.db_table, 'column': f.column})
- break # Only one AutoField is allowed per model, so don't bother continuing.
-
- for f in model._meta.local_many_to_many:
- # If this is an m2m using an intermediate table,
- # we don't need to reset the sequence.
- if f.rel.through is None:
- sequence_list.append({'table': f.m2m_db_table(), 'column': None})
-
- return sequence_list
-
- def get_key_columns(self, cursor, table_name):
- """
- Backends can override this to return a list of (column_name, referenced_table_name,
- referenced_column_name) for all key columns in given table.
- """
- raise NotImplementedError
-
- def get_primary_key_column(self, cursor, table_name):
- """
- Returns the name of the primary key column for the given table.
- """
- for column in six.iteritems(self.get_indexes(cursor, table_name)):
- if column[1]['primary_key']:
- return column[0]
- return None
-
- def get_indexes(self, cursor, table_name):
- """
- Returns a dictionary of indexed fieldname -> infodict for the given
- table, where each infodict is in the format:
- {'primary_key': boolean representing whether it's the primary key,
- 'unique': boolean representing whether it's a unique index}
-
- Only single-column indexes are introspected.
- """
- raise NotImplementedError
-
-
-class BaseDatabaseClient(object):
- """
- This class encapsulates all backend-specific methods for opening a
- client shell.
- """
- # This should be a string representing the name of the executable
- # (e.g., "psql"). Subclasses must override this.
- executable_name = None
-
- def __init__(self, connection):
- # connection is an instance of BaseDatabaseWrapper.
- self.connection = connection
-
- def runshell(self):
- raise NotImplementedError()
-
-
-class BaseDatabaseValidation(object):
- """
- This class encapsualtes all backend-specific model validation.
- """
- def __init__(self, connection):
- self.connection = connection
-
- def validate_field(self, errors, opts, f):
- "By default, there is no backend-specific validation"
- pass
diff --git a/lib/python2.7/site-packages/django/db/backends/creation.py b/lib/python2.7/site-packages/django/db/backends/creation.py
deleted file mode 100644
index bae439b..0000000
--- a/lib/python2.7/site-packages/django/db/backends/creation.py
+++ /dev/null
@@ -1,489 +0,0 @@
-import hashlib
-import sys
-import time
-import warnings
-
-from django.conf import settings
-from django.db.utils import load_backend
-from django.utils.encoding import force_bytes
-from django.utils.six.moves import input
-
-from .util import truncate_name
-
-# The prefix to put on the default database name when creating
-# the test database.
-TEST_DATABASE_PREFIX = 'test_'
-
-
-class BaseDatabaseCreation(object):
- """
- This class encapsulates all backend-specific differences that pertain to
- database *creation*, such as the column types to use for particular Django
- Fields, the SQL used to create and destroy tables, and the creation and
- destruction of test databases.
- """
- data_types = {}
-
- def __init__(self, connection):
- self.connection = connection
-
- def _digest(self, *args):
- """
- Generates a 32-bit digest of a set of arguments that can be used to
- shorten identifying names.
- """
- h = hashlib.md5()
- for arg in args:
- h.update(force_bytes(arg))
- return h.hexdigest()[:8]
-
- def sql_create_model(self, model, style, known_models=set()):
- """
- Returns the SQL required to create a single model, as a tuple of:
- (list_of_sql, pending_references_dict)
- """
- opts = model._meta
- if not opts.managed or opts.proxy or opts.swapped:
- return [], {}
- final_output = []
- table_output = []
- pending_references = {}
- qn = self.connection.ops.quote_name
- for f in opts.local_fields:
- col_type = f.db_type(connection=self.connection)
- tablespace = f.db_tablespace or opts.db_tablespace
- if col_type is None:
- # Skip ManyToManyFields, because they're not represented as
- # database columns in this table.
- continue
- # Make the definition (e.g. 'foo VARCHAR(30)') for this field.
- field_output = [style.SQL_FIELD(qn(f.column)),
- style.SQL_COLTYPE(col_type)]
- # Oracle treats the empty string ('') as null, so coerce the null
- # option whenever '' is a possible value.
- null = f.null
- if (f.empty_strings_allowed and not f.primary_key and
- self.connection.features.interprets_empty_strings_as_nulls):
- null = True
- if not null:
- field_output.append(style.SQL_KEYWORD('NOT NULL'))
- if f.primary_key:
- field_output.append(style.SQL_KEYWORD('PRIMARY KEY'))
- elif f.unique:
- field_output.append(style.SQL_KEYWORD('UNIQUE'))
- if tablespace and f.unique:
- # We must specify the index tablespace inline, because we
- # won't be generating a CREATE INDEX statement for this field.
- tablespace_sql = self.connection.ops.tablespace_sql(
- tablespace, inline=True)
- if tablespace_sql:
- field_output.append(tablespace_sql)
- if f.rel and f.db_constraint:
- ref_output, pending = self.sql_for_inline_foreign_key_references(
- model, f, known_models, style)
- if pending:
- pending_references.setdefault(f.rel.to, []).append(
- (model, f))
- else:
- field_output.extend(ref_output)
- table_output.append(' '.join(field_output))
- for field_constraints in opts.unique_together:
- table_output.append(style.SQL_KEYWORD('UNIQUE') + ' (%s)' %
- ", ".join(
- [style.SQL_FIELD(qn(opts.get_field(f).column))
- for f in field_constraints]))
-
- full_statement = [style.SQL_KEYWORD('CREATE TABLE') + ' ' +
- style.SQL_TABLE(qn(opts.db_table)) + ' (']
- for i, line in enumerate(table_output): # Combine and add commas.
- full_statement.append(
- ' %s%s' % (line, ',' if i < len(table_output) - 1 else ''))
- full_statement.append(')')
- if opts.db_tablespace:
- tablespace_sql = self.connection.ops.tablespace_sql(
- opts.db_tablespace)
- if tablespace_sql:
- full_statement.append(tablespace_sql)
- full_statement.append(';')
- final_output.append('\n'.join(full_statement))
-
- if opts.has_auto_field:
- # Add any extra SQL needed to support auto-incrementing primary
- # keys.
- auto_column = opts.auto_field.db_column or opts.auto_field.name
- autoinc_sql = self.connection.ops.autoinc_sql(opts.db_table,
- auto_column)
- if autoinc_sql:
- for stmt in autoinc_sql:
- final_output.append(stmt)
-
- return final_output, pending_references
-
- def sql_for_inline_foreign_key_references(self, model, field, known_models, style):
- """
- Return the SQL snippet defining the foreign key reference for a field.
- """
- qn = self.connection.ops.quote_name
- rel_to = field.rel.to
- if rel_to in known_models or rel_to == model:
- output = [style.SQL_KEYWORD('REFERENCES') + ' ' +
- style.SQL_TABLE(qn(rel_to._meta.db_table)) + ' (' +
- style.SQL_FIELD(qn(rel_to._meta.get_field(
- field.rel.field_name).column)) + ')' +
- self.connection.ops.deferrable_sql()
- ]
- pending = False
- else:
- # We haven't yet created the table to which this field
- # is related, so save it for later.
- output = []
- pending = True
-
- return output, pending
-
- def sql_for_pending_references(self, model, style, pending_references):
- """
- Returns any ALTER TABLE statements to add constraints after the fact.
- """
- opts = model._meta
- if not opts.managed or opts.swapped:
- return []
- qn = self.connection.ops.quote_name
- final_output = []
- if model in pending_references:
- for rel_class, f in pending_references[model]:
- rel_opts = rel_class._meta
- r_table = rel_opts.db_table
- r_col = f.column
- table = opts.db_table
- col = opts.get_field(f.rel.field_name).column
- # For MySQL, r_name must be unique in the first 64 characters.
- # So we are careful with character usage here.
- r_name = '%s_refs_%s_%s' % (
- r_col, col, self._digest(r_table, table))
- final_output.append(style.SQL_KEYWORD('ALTER TABLE') +
- ' %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s)%s;' %
- (qn(r_table), qn(truncate_name(
- r_name, self.connection.ops.max_name_length())),
- qn(r_col), qn(table), qn(col),
- self.connection.ops.deferrable_sql()))
- del pending_references[model]
- return final_output
-
- def sql_indexes_for_model(self, model, style):
- """
- Returns the CREATE INDEX SQL statements for a single model.
- """
- if not model._meta.managed or model._meta.proxy or model._meta.swapped:
- return []
- output = []
- for f in model._meta.local_fields:
- output.extend(self.sql_indexes_for_field(model, f, style))
- for fs in model._meta.index_together:
- fields = [model._meta.get_field_by_name(f)[0] for f in fs]
- output.extend(self.sql_indexes_for_fields(model, fields, style))
- return output
-
- def sql_indexes_for_field(self, model, f, style):
- """
- Return the CREATE INDEX SQL statements for a single model field.
- """
- if f.db_index and not f.unique:
- return self.sql_indexes_for_fields(model, [f], style)
- else:
- return []
-
- def sql_indexes_for_fields(self, model, fields, style):
- if len(fields) == 1 and fields[0].db_tablespace:
- tablespace_sql = self.connection.ops.tablespace_sql(fields[0].db_tablespace)
- elif model._meta.db_tablespace:
- tablespace_sql = self.connection.ops.tablespace_sql(model._meta.db_tablespace)
- else:
- tablespace_sql = ""
- if tablespace_sql:
- tablespace_sql = " " + tablespace_sql
-
- field_names = []
- qn = self.connection.ops.quote_name
- for f in fields:
- field_names.append(style.SQL_FIELD(qn(f.column)))
-
- index_name = "%s_%s" % (model._meta.db_table, self._digest([f.name for f in fields]))
-
- return [
- style.SQL_KEYWORD("CREATE INDEX") + " " +
- style.SQL_TABLE(qn(truncate_name(index_name, self.connection.ops.max_name_length()))) + " " +
- style.SQL_KEYWORD("ON") + " " +
- style.SQL_TABLE(qn(model._meta.db_table)) + " " +
- "(%s)" % style.SQL_FIELD(", ".join(field_names)) +
- "%s;" % tablespace_sql,
- ]
-
- def sql_destroy_model(self, model, references_to_delete, style):
- """
- Return the DROP TABLE and restraint dropping statements for a single
- model.
- """
- if not model._meta.managed or model._meta.proxy or model._meta.swapped:
- return []
- # Drop the table now
- qn = self.connection.ops.quote_name
- output = ['%s %s;' % (style.SQL_KEYWORD('DROP TABLE'),
- style.SQL_TABLE(qn(model._meta.db_table)))]
- if model in references_to_delete:
- output.extend(self.sql_remove_table_constraints(
- model, references_to_delete, style))
- if model._meta.has_auto_field:
- ds = self.connection.ops.drop_sequence_sql(model._meta.db_table)
- if ds:
- output.append(ds)
- return output
-
- def sql_remove_table_constraints(self, model, references_to_delete, style):
- if not model._meta.managed or model._meta.proxy or model._meta.swapped:
- return []
- output = []
- qn = self.connection.ops.quote_name
- for rel_class, f in references_to_delete[model]:
- table = rel_class._meta.db_table
- col = f.column
- r_table = model._meta.db_table
- r_col = model._meta.get_field(f.rel.field_name).column
- r_name = '%s_refs_%s_%s' % (
- col, r_col, self._digest(table, r_table))
- output.append('%s %s %s %s;' % \
- (style.SQL_KEYWORD('ALTER TABLE'),
- style.SQL_TABLE(qn(table)),
- style.SQL_KEYWORD(self.connection.ops.drop_foreignkey_sql()),
- style.SQL_FIELD(qn(truncate_name(
- r_name, self.connection.ops.max_name_length())))))
- del references_to_delete[model]
- return output
-
- def sql_destroy_indexes_for_model(self, model, style):
- """
- Returns the DROP INDEX SQL statements for a single model.
- """
- if not model._meta.managed or model._meta.proxy or model._meta.swapped:
- return []
- output = []
- for f in model._meta.local_fields:
- output.extend(self.sql_destroy_indexes_for_field(model, f, style))
- for fs in model._meta.index_together:
- fields = [model._meta.get_field_by_name(f)[0] for f in fs]
- output.extend(self.sql_destroy_indexes_for_fields(model, fields, style))
- return output
-
- def sql_destroy_indexes_for_field(self, model, f, style):
- """
- Return the DROP INDEX SQL statements for a single model field.
- """
- if f.db_index and not f.unique:
- return self.sql_destroy_indexes_for_fields(model, [f], style)
- else:
- return []
-
- def sql_destroy_indexes_for_fields(self, model, fields, style):
- if len(fields) == 1 and fields[0].db_tablespace:
- tablespace_sql = self.connection.ops.tablespace_sql(fields[0].db_tablespace)
- elif model._meta.db_tablespace:
- tablespace_sql = self.connection.ops.tablespace_sql(model._meta.db_tablespace)
- else:
- tablespace_sql = ""
- if tablespace_sql:
- tablespace_sql = " " + tablespace_sql
-
- field_names = []
- qn = self.connection.ops.quote_name
- for f in fields:
- field_names.append(style.SQL_FIELD(qn(f.column)))
-
- index_name = "%s_%s" % (model._meta.db_table, self._digest([f.name for f in fields]))
-
- return [
- style.SQL_KEYWORD("DROP INDEX") + " " +
- style.SQL_TABLE(qn(truncate_name(index_name, self.connection.ops.max_name_length()))) + " " +
- ";",
- ]
-
- def create_test_db(self, verbosity=1, autoclobber=False):
- """
- Creates a test database, prompting the user for confirmation if the
- database already exists. Returns the name of the test database created.
- """
- # Don't import django.core.management if it isn't needed.
- from django.core.management import call_command
-
- test_database_name = self._get_test_db_name()
-
- if verbosity >= 1:
- test_db_repr = ''
- if verbosity >= 2:
- test_db_repr = " ('%s')" % test_database_name
- print("Creating test database for alias '%s'%s..." % (
- self.connection.alias, test_db_repr))
-
- self._create_test_db(verbosity, autoclobber)
-
- self.connection.close()
- settings.DATABASES[self.connection.alias]["NAME"] = test_database_name
- self.connection.settings_dict["NAME"] = test_database_name
-
- # Report syncdb messages at one level lower than that requested.
- # This ensures we don't get flooded with messages during testing
- # (unless you really ask to be flooded)
- call_command('syncdb',
- verbosity=max(verbosity - 1, 0),
- interactive=False,
- database=self.connection.alias,
- load_initial_data=False)
-
- # We need to then do a flush to ensure that any data installed by
- # custom SQL has been removed. The only test data should come from
- # test fixtures, or autogenerated from post_syncdb triggers.
- # This has the side effect of loading initial data (which was
- # intentionally skipped in the syncdb).
- call_command('flush',
- verbosity=max(verbosity - 1, 0),
- interactive=False,
- database=self.connection.alias)
-
- from django.core.cache import get_cache
- from django.core.cache.backends.db import BaseDatabaseCache
- for cache_alias in settings.CACHES:
- cache = get_cache(cache_alias)
- if isinstance(cache, BaseDatabaseCache):
- call_command('createcachetable', cache._table,
- database=self.connection.alias)
-
- # Get a cursor (even though we don't need one yet). This has
- # the side effect of initializing the test database.
- self.connection.cursor()
-
- return test_database_name
-
- def _get_test_db_name(self):
- """
- Internal implementation - returns the name of the test DB that will be
- created. Only useful when called from create_test_db() and
- _create_test_db() and when no external munging is done with the 'NAME'
- or 'TEST_NAME' settings.
- """
- if self.connection.settings_dict['TEST_NAME']:
- return self.connection.settings_dict['TEST_NAME']
- return TEST_DATABASE_PREFIX + self.connection.settings_dict['NAME']
-
- def _create_test_db(self, verbosity, autoclobber):
- """
- Internal implementation - creates the test db tables.
- """
- suffix = self.sql_table_creation_suffix()
-
- test_database_name = self._get_test_db_name()
-
- qn = self.connection.ops.quote_name
-
- # Create the test database and connect to it.
- cursor = self.connection.cursor()
- try:
- cursor.execute(
- "CREATE DATABASE %s %s" % (qn(test_database_name), suffix))
- except Exception as e:
- sys.stderr.write(
- "Got an error creating the test database: %s\n" % e)
- if not autoclobber:
- confirm = input(
- "Type 'yes' if you would like to try deleting the test "
- "database '%s', or 'no' to cancel: " % test_database_name)
- if autoclobber or confirm == 'yes':
- try:
- if verbosity >= 1:
- print("Destroying old test database '%s'..."
- % self.connection.alias)
- cursor.execute(
- "DROP DATABASE %s" % qn(test_database_name))
- cursor.execute(
- "CREATE DATABASE %s %s" % (qn(test_database_name),
- suffix))
- except Exception as e:
- sys.stderr.write(
- "Got an error recreating the test database: %s\n" % e)
- sys.exit(2)
- else:
- print("Tests cancelled.")
- sys.exit(1)
-
- return test_database_name
-
- def destroy_test_db(self, old_database_name, verbosity=1):
- """
- Destroy a test database, prompting the user for confirmation if the
- database already exists.
- """
- self.connection.close()
- test_database_name = self.connection.settings_dict['NAME']
- if verbosity >= 1:
- test_db_repr = ''
- if verbosity >= 2:
- test_db_repr = " ('%s')" % test_database_name
- print("Destroying test database for alias '%s'%s..." % (
- self.connection.alias, test_db_repr))
-
- # Temporarily use a new connection and a copy of the settings dict.
- # This prevents the production database from being exposed to potential
- # child threads while (or after) the test database is destroyed.
- # Refs #10868 and #17786.
- settings_dict = self.connection.settings_dict.copy()
- settings_dict['NAME'] = old_database_name
- backend = load_backend(settings_dict['ENGINE'])
- new_connection = backend.DatabaseWrapper(
- settings_dict,
- alias='__destroy_test_db__',
- allow_thread_sharing=False)
- new_connection.creation._destroy_test_db(test_database_name, verbosity)
-
- def _destroy_test_db(self, test_database_name, verbosity):
- """
- Internal implementation - remove the test db tables.
- """
- # Remove the test database to clean up after
- # ourselves. Connect to the previous database (not the test database)
- # to do so, because it's not allowed to delete a database while being
- # connected to it.
- cursor = self.connection.cursor()
- # Wait to avoid "database is being accessed by other users" errors.
- time.sleep(1)
- cursor.execute("DROP DATABASE %s"
- % self.connection.ops.quote_name(test_database_name))
- self.connection.close()
-
- def set_autocommit(self):
- """
- Make sure a connection is in autocommit mode. - Deprecated, not used
- anymore by Django code. Kept for compatibility with user code that
- might use it.
- """
- warnings.warn(
- "set_autocommit was moved from BaseDatabaseCreation to "
- "BaseDatabaseWrapper.", PendingDeprecationWarning, stacklevel=2)
- return self.connection.set_autocommit(True)
-
- def sql_table_creation_suffix(self):
- """
- SQL to append to the end of the test table creation statements.
- """
- return ''
-
- def test_db_signature(self):
- """
- Returns a tuple with elements of self.connection.settings_dict (a
- DATABASES setting value) that uniquely identify a database
- accordingly to the RDBMS particularities.
- """
- settings_dict = self.connection.settings_dict
- return (
- settings_dict['HOST'],
- settings_dict['PORT'],
- settings_dict['ENGINE'],
- settings_dict['NAME']
- )
diff --git a/lib/python2.7/site-packages/django/db/backends/dummy/__init__.py b/lib/python2.7/site-packages/django/db/backends/dummy/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/db/backends/dummy/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/db/backends/dummy/base.py b/lib/python2.7/site-packages/django/db/backends/dummy/base.py
deleted file mode 100644
index 9a220ff..0000000
--- a/lib/python2.7/site-packages/django/db/backends/dummy/base.py
+++ /dev/null
@@ -1,73 +0,0 @@
-"""
-Dummy database backend for Django.
-
-Django uses this if the database ENGINE setting is empty (None or empty string).
-
-Each of these API functions, except connection.close(), raises
-ImproperlyConfigured.
-"""
-
-from django.core.exceptions import ImproperlyConfigured
-from django.db.backends import *
-from django.db.backends.creation import BaseDatabaseCreation
-
-def complain(*args, **kwargs):
- raise ImproperlyConfigured("settings.DATABASES is improperly configured. "
- "Please supply the ENGINE value. Check "
- "settings documentation for more details.")
-
-def ignore(*args, **kwargs):
- pass
-
-class DatabaseError(Exception):
- pass
-
-class IntegrityError(DatabaseError):
- pass
-
-class DatabaseOperations(BaseDatabaseOperations):
- quote_name = complain
-
-class DatabaseClient(BaseDatabaseClient):
- runshell = complain
-
-class DatabaseCreation(BaseDatabaseCreation):
- create_test_db = ignore
- destroy_test_db = ignore
-
-class DatabaseIntrospection(BaseDatabaseIntrospection):
- get_table_list = complain
- get_table_description = complain
- get_relations = complain
- get_indexes = complain
- get_key_columns = complain
-
-class DatabaseWrapper(BaseDatabaseWrapper):
- operators = {}
- # Override the base class implementations with null
- # implementations. Anything that tries to actually
- # do something raises complain; anything that tries
- # to rollback or undo something raises ignore.
- _cursor = complain
- _commit = complain
- _rollback = ignore
- _close = ignore
- _savepoint = ignore
- _savepoint_commit = complain
- _savepoint_rollback = ignore
- _set_autocommit = complain
- set_dirty = complain
- set_clean = complain
-
- def __init__(self, *args, **kwargs):
- super(DatabaseWrapper, self).__init__(*args, **kwargs)
-
- self.features = BaseDatabaseFeatures(self)
- self.ops = DatabaseOperations(self)
- self.client = DatabaseClient(self)
- self.creation = DatabaseCreation(self)
- self.introspection = DatabaseIntrospection(self)
- self.validation = BaseDatabaseValidation(self)
-
- def is_usable(self):
- return True
diff --git a/lib/python2.7/site-packages/django/db/backends/mysql/__init__.py b/lib/python2.7/site-packages/django/db/backends/mysql/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/db/backends/mysql/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/db/backends/mysql/base.py b/lib/python2.7/site-packages/django/db/backends/mysql/base.py
deleted file mode 100644
index ea04a5e..0000000
--- a/lib/python2.7/site-packages/django/db/backends/mysql/base.py
+++ /dev/null
@@ -1,533 +0,0 @@
-"""
-MySQL database backend for Django.
-
-Requires MySQLdb: http://sourceforge.net/projects/mysql-python
-"""
-from __future__ import unicode_literals
-
-import datetime
-import re
-import sys
-import warnings
-
-try:
- import MySQLdb as Database
-except ImportError as e:
- from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
-
-from django.utils.functional import cached_property
-
-# We want version (1, 2, 1, 'final', 2) or later. We can't just use
-# lexicographic ordering in this check because then (1, 2, 1, 'gamma')
-# inadvertently passes the version test.
-version = Database.version_info
-if (version < (1, 2, 1) or (version[:3] == (1, 2, 1) and
- (len(version) < 5 or version[3] != 'final' or version[4] < 2))):
- from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured("MySQLdb-1.2.1p2 or newer is required; you have %s" % Database.__version__)
-
-from MySQLdb.converters import conversions, Thing2Literal
-from MySQLdb.constants import FIELD_TYPE, CLIENT
-
-try:
- import pytz
-except ImportError:
- pytz = None
-
-from django.conf import settings
-from django.db import utils
-from django.db.backends import *
-from django.db.backends.mysql.client import DatabaseClient
-from django.db.backends.mysql.creation import DatabaseCreation
-from django.db.backends.mysql.introspection import DatabaseIntrospection
-from django.db.backends.mysql.validation import DatabaseValidation
-from django.utils.encoding import force_str, force_text
-from django.utils.safestring import SafeBytes, SafeText
-from django.utils import six
-from django.utils import timezone
-
-# Raise exceptions for database warnings if DEBUG is on
-if settings.DEBUG:
- warnings.filterwarnings("error", category=Database.Warning)
-
-DatabaseError = Database.DatabaseError
-IntegrityError = Database.IntegrityError
-
-# It's impossible to import datetime_or_None directly from MySQLdb.times
-parse_datetime = conversions[FIELD_TYPE.DATETIME]
-
-def parse_datetime_with_timezone_support(value):
- dt = parse_datetime(value)
- # Confirm that dt is naive before overwriting its tzinfo.
- if dt is not None and settings.USE_TZ and timezone.is_naive(dt):
- dt = dt.replace(tzinfo=timezone.utc)
- return dt
-
-def adapt_datetime_with_timezone_support(value, conv):
- # Equivalent to DateTimeField.get_db_prep_value. Used only by raw SQL.
- if settings.USE_TZ:
- if timezone.is_naive(value):
- warnings.warn("MySQL received a naive datetime (%s)"
- " while time zone support is active." % value,
- RuntimeWarning)
- default_timezone = timezone.get_default_timezone()
- value = timezone.make_aware(value, default_timezone)
- value = value.astimezone(timezone.utc).replace(tzinfo=None)
- return Thing2Literal(value.strftime("%Y-%m-%d %H:%M:%S"), conv)
-
-# MySQLdb-1.2.1 returns TIME columns as timedelta -- they are more like
-# timedelta in terms of actual behavior as they are signed and include days --
-# and Django expects time, so we still need to override that. We also need to
-# add special handling for SafeText and SafeBytes as MySQLdb's type
-# checking is too tight to catch those (see Django ticket #6052).
-# Finally, MySQLdb always returns naive datetime objects. However, when
-# timezone support is active, Django expects timezone-aware datetime objects.
-django_conversions = conversions.copy()
-django_conversions.update({
- FIELD_TYPE.TIME: util.typecast_time,
- FIELD_TYPE.DECIMAL: util.typecast_decimal,
- FIELD_TYPE.NEWDECIMAL: util.typecast_decimal,
- FIELD_TYPE.DATETIME: parse_datetime_with_timezone_support,
- datetime.datetime: adapt_datetime_with_timezone_support,
-})
-
-# This should match the numerical portion of the version numbers (we can treat
-# versions like 5.0.24 and 5.0.24a as the same). Based on the list of version
-# at http://dev.mysql.com/doc/refman/4.1/en/news.html and
-# http://dev.mysql.com/doc/refman/5.0/en/news.html .
-server_version_re = re.compile(r'(\d{1,2})\.(\d{1,2})\.(\d{1,2})')
-
-# MySQLdb-1.2.1 and newer automatically makes use of SHOW WARNINGS on
-# MySQL-4.1 and newer, so the MysqlDebugWrapper is unnecessary. Since the
-# point is to raise Warnings as exceptions, this can be done with the Python
-# warning module, and this is setup when the connection is created, and the
-# standard util.CursorDebugWrapper can be used. Also, using sql_mode
-# TRADITIONAL will automatically cause most warnings to be treated as errors.
-
-class CursorWrapper(object):
- """
- A thin wrapper around MySQLdb's normal cursor class so that we can catch
- particular exception instances and reraise them with the right types.
-
- Implemented as a wrapper, rather than a subclass, so that we aren't stuck
- to the particular underlying representation returned by Connection.cursor().
- """
- codes_for_integrityerror = (1048,)
-
- def __init__(self, cursor):
- self.cursor = cursor
-
- def execute(self, query, args=None):
- try:
- # args is None means no string interpolation
- return self.cursor.execute(query, args)
- except Database.OperationalError as e:
- # Map some error codes to IntegrityError, since they seem to be
- # misclassified and Django would prefer the more logical place.
- if e.args[0] in self.codes_for_integrityerror:
- six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])
- raise
-
- def executemany(self, query, args):
- try:
- return self.cursor.executemany(query, args)
- except Database.OperationalError as e:
- # Map some error codes to IntegrityError, since they seem to be
- # misclassified and Django would prefer the more logical place.
- if e.args[0] in self.codes_for_integrityerror:
- six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])
- raise
-
- def __getattr__(self, attr):
- if attr in self.__dict__:
- return self.__dict__[attr]
- else:
- return getattr(self.cursor, attr)
-
- def __iter__(self):
- return iter(self.cursor)
-
-class DatabaseFeatures(BaseDatabaseFeatures):
- empty_fetchmany_value = ()
- update_can_self_select = False
- allows_group_by_pk = True
- related_fields_match_type = True
- allow_sliced_subqueries = False
- has_bulk_insert = True
- has_select_for_update = True
- has_select_for_update_nowait = False
- supports_forward_references = False
- supports_long_model_names = False
- supports_microsecond_precision = False
- supports_regex_backreferencing = False
- supports_date_lookup_using_string = False
- supports_timezones = False
- requires_explicit_null_ordering_when_grouping = True
- allows_primary_key_0 = False
- uses_savepoints = True
- atomic_transactions = False
-
- def __init__(self, connection):
- super(DatabaseFeatures, self).__init__(connection)
-
- @cached_property
- def _mysql_storage_engine(self):
- "Internal method used in Django tests. Don't rely on this from your code"
- cursor = self.connection.cursor()
- cursor.execute('CREATE TABLE INTROSPECT_TEST (X INT)')
- # This command is MySQL specific; the second column
- # will tell you the default table type of the created
- # table. Since all Django's test tables will have the same
- # table type, that's enough to evaluate the feature.
- cursor.execute("SHOW TABLE STATUS WHERE Name='INTROSPECT_TEST'")
- result = cursor.fetchone()
- cursor.execute('DROP TABLE INTROSPECT_TEST')
- return result[1]
-
- @cached_property
- def can_introspect_foreign_keys(self):
- "Confirm support for introspected foreign keys"
- return self._mysql_storage_engine != 'MyISAM'
-
- @cached_property
- def has_zoneinfo_database(self):
- # MySQL accepts full time zones names (eg. Africa/Nairobi) but rejects
- # abbreviations (eg. EAT). When pytz isn't installed and the current
- # time zone is LocalTimezone (the only sensible value in this
- # context), the current time zone name will be an abbreviation. As a
- # consequence, MySQL cannot perform time zone conversions reliably.
- if pytz is None:
- return False
-
- # Test if the time zone definitions are installed.
- cursor = self.connection.cursor()
- cursor.execute("SELECT 1 FROM mysql.time_zone LIMIT 1")
- return cursor.fetchone() is not None
-
-class DatabaseOperations(BaseDatabaseOperations):
- compiler_module = "django.db.backends.mysql.compiler"
-
- def date_extract_sql(self, lookup_type, field_name):
- # http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html
- if lookup_type == 'week_day':
- # DAYOFWEEK() returns an integer, 1-7, Sunday=1.
- # Note: WEEKDAY() returns 0-6, Monday=0.
- return "DAYOFWEEK(%s)" % field_name
- else:
- return "EXTRACT(%s FROM %s)" % (lookup_type.upper(), field_name)
-
- def date_trunc_sql(self, lookup_type, field_name):
- fields = ['year', 'month', 'day', 'hour', 'minute', 'second']
- format = ('%%Y-', '%%m', '-%%d', ' %%H:', '%%i', ':%%s') # Use double percents to escape.
- format_def = ('0000-', '01', '-01', ' 00:', '00', ':00')
- try:
- i = fields.index(lookup_type) + 1
- except ValueError:
- sql = field_name
- else:
- format_str = ''.join([f for f in format[:i]] + [f for f in format_def[i:]])
- sql = "CAST(DATE_FORMAT(%s, '%s') AS DATETIME)" % (field_name, format_str)
- return sql
-
- def datetime_extract_sql(self, lookup_type, field_name, tzname):
- if settings.USE_TZ:
- field_name = "CONVERT_TZ(%s, 'UTC', %%s)" % field_name
- params = [tzname]
- else:
- params = []
- # http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html
- if lookup_type == 'week_day':
- # DAYOFWEEK() returns an integer, 1-7, Sunday=1.
- # Note: WEEKDAY() returns 0-6, Monday=0.
- sql = "DAYOFWEEK(%s)" % field_name
- else:
- sql = "EXTRACT(%s FROM %s)" % (lookup_type.upper(), field_name)
- return sql, params
-
- def datetime_trunc_sql(self, lookup_type, field_name, tzname):
- if settings.USE_TZ:
- field_name = "CONVERT_TZ(%s, 'UTC', %%s)" % field_name
- params = [tzname]
- else:
- params = []
- fields = ['year', 'month', 'day', 'hour', 'minute', 'second']
- format = ('%%Y-', '%%m', '-%%d', ' %%H:', '%%i', ':%%s') # Use double percents to escape.
- format_def = ('0000-', '01', '-01', ' 00:', '00', ':00')
- try:
- i = fields.index(lookup_type) + 1
- except ValueError:
- sql = field_name
- else:
- format_str = ''.join([f for f in format[:i]] + [f for f in format_def[i:]])
- sql = "CAST(DATE_FORMAT(%s, '%s') AS DATETIME)" % (field_name, format_str)
- return sql, params
-
- def date_interval_sql(self, sql, connector, timedelta):
- return "(%s %s INTERVAL '%d 0:0:%d:%d' DAY_MICROSECOND)" % (sql, connector,
- timedelta.days, timedelta.seconds, timedelta.microseconds)
-
- def drop_foreignkey_sql(self):
- return "DROP FOREIGN KEY"
-
- def force_no_ordering(self):
- """
- "ORDER BY NULL" prevents MySQL from implicitly ordering by grouped
- columns. If no ordering would otherwise be applied, we don't want any
- implicit sorting going on.
- """
- return ["NULL"]
-
- def fulltext_search_sql(self, field_name):
- return 'MATCH (%s) AGAINST (%%s IN BOOLEAN MODE)' % field_name
-
- def last_executed_query(self, cursor, sql, params):
- # With MySQLdb, cursor objects have an (undocumented) "_last_executed"
- # attribute where the exact query sent to the database is saved.
- # See MySQLdb/cursors.py in the source distribution.
- return force_text(getattr(cursor, '_last_executed', None), errors='replace')
-
- def no_limit_value(self):
- # 2**64 - 1, as recommended by the MySQL documentation
- return 18446744073709551615
-
- def quote_name(self, name):
- if name.startswith("`") and name.endswith("`"):
- return name # Quoting once is enough.
- return "`%s`" % name
-
- def random_function_sql(self):
- return 'RAND()'
-
- def sql_flush(self, style, tables, sequences, allow_cascade=False):
- # NB: The generated SQL below is specific to MySQL
- # 'TRUNCATE x;', 'TRUNCATE y;', 'TRUNCATE z;'... style SQL statements
- # to clear all tables of all data
- if tables:
- sql = ['SET FOREIGN_KEY_CHECKS = 0;']
- for table in tables:
- sql.append('%s %s;' % (
- style.SQL_KEYWORD('TRUNCATE'),
- style.SQL_FIELD(self.quote_name(table)),
- ))
- sql.append('SET FOREIGN_KEY_CHECKS = 1;')
- sql.extend(self.sequence_reset_by_name_sql(style, sequences))
- return sql
- else:
- return []
-
- def sequence_reset_by_name_sql(self, style, sequences):
- # Truncate already resets the AUTO_INCREMENT field from
- # MySQL version 5.0.13 onwards. Refs #16961.
- if self.connection.mysql_version < (5, 0, 13):
- return ["%s %s %s %s %s;" % \
- (style.SQL_KEYWORD('ALTER'),
- style.SQL_KEYWORD('TABLE'),
- style.SQL_TABLE(self.quote_name(sequence['table'])),
- style.SQL_KEYWORD('AUTO_INCREMENT'),
- style.SQL_FIELD('= 1'),
- ) for sequence in sequences]
- else:
- return []
-
- def validate_autopk_value(self, value):
- # MySQLism: zero in AUTO_INCREMENT field does not work. Refs #17653.
- if value == 0:
- raise ValueError('The database backend does not accept 0 as a '
- 'value for AutoField.')
- return value
-
- def value_to_db_datetime(self, value):
- if value is None:
- return None
-
- # MySQL doesn't support tz-aware datetimes
- if timezone.is_aware(value):
- if settings.USE_TZ:
- value = value.astimezone(timezone.utc).replace(tzinfo=None)
- else:
- raise ValueError("MySQL backend does not support timezone-aware datetimes when USE_TZ is False.")
-
- # MySQL doesn't support microseconds
- return six.text_type(value.replace(microsecond=0))
-
- def value_to_db_time(self, value):
- if value is None:
- return None
-
- # MySQL doesn't support tz-aware times
- if timezone.is_aware(value):
- raise ValueError("MySQL backend does not support timezone-aware times.")
-
- # MySQL doesn't support microseconds
- return six.text_type(value.replace(microsecond=0))
-
- def year_lookup_bounds_for_datetime_field(self, value):
- # Again, no microseconds
- first, second = super(DatabaseOperations, self).year_lookup_bounds_for_datetime_field(value)
- return [first.replace(microsecond=0), second.replace(microsecond=0)]
-
- def max_name_length(self):
- return 64
-
- def bulk_insert_sql(self, fields, num_values):
- items_sql = "(%s)" % ", ".join(["%s"] * len(fields))
- return "VALUES " + ", ".join([items_sql] * num_values)
-
-class DatabaseWrapper(BaseDatabaseWrapper):
- vendor = 'mysql'
- operators = {
- 'exact': '= %s',
- 'iexact': 'LIKE %s',
- 'contains': 'LIKE BINARY %s',
- 'icontains': 'LIKE %s',
- 'regex': 'REGEXP BINARY %s',
- 'iregex': 'REGEXP %s',
- 'gt': '> %s',
- 'gte': '>= %s',
- 'lt': '< %s',
- 'lte': '<= %s',
- 'startswith': 'LIKE BINARY %s',
- 'endswith': 'LIKE BINARY %s',
- 'istartswith': 'LIKE %s',
- 'iendswith': 'LIKE %s',
- }
-
- Database = Database
-
- def __init__(self, *args, **kwargs):
- super(DatabaseWrapper, self).__init__(*args, **kwargs)
-
- self.features = DatabaseFeatures(self)
- self.ops = DatabaseOperations(self)
- self.client = DatabaseClient(self)
- self.creation = DatabaseCreation(self)
- self.introspection = DatabaseIntrospection(self)
- self.validation = DatabaseValidation(self)
-
- def get_connection_params(self):
- kwargs = {
- 'conv': django_conversions,
- 'charset': 'utf8',
- }
- if six.PY2:
- kwargs['use_unicode'] = True
- settings_dict = self.settings_dict
- if settings_dict['USER']:
- kwargs['user'] = settings_dict['USER']
- if settings_dict['NAME']:
- kwargs['db'] = settings_dict['NAME']
- if settings_dict['PASSWORD']:
- kwargs['passwd'] = force_str(settings_dict['PASSWORD'])
- if settings_dict['HOST'].startswith('/'):
- kwargs['unix_socket'] = settings_dict['HOST']
- elif settings_dict['HOST']:
- kwargs['host'] = settings_dict['HOST']
- if settings_dict['PORT']:
- kwargs['port'] = int(settings_dict['PORT'])
- # We need the number of potentially affected rows after an
- # "UPDATE", not the number of changed rows.
- kwargs['client_flag'] = CLIENT.FOUND_ROWS
- kwargs.update(settings_dict['OPTIONS'])
- return kwargs
-
- def get_new_connection(self, conn_params):
- conn = Database.connect(**conn_params)
- conn.encoders[SafeText] = conn.encoders[six.text_type]
- conn.encoders[SafeBytes] = conn.encoders[bytes]
- return conn
-
- def init_connection_state(self):
- cursor = self.connection.cursor()
- # SQL_AUTO_IS_NULL in MySQL controls whether an AUTO_INCREMENT column
- # on a recently-inserted row will return when the field is tested for
- # NULL. Disabling this value brings this aspect of MySQL in line with
- # SQL standards.
- cursor.execute('SET SQL_AUTO_IS_NULL = 0')
- cursor.close()
-
- def create_cursor(self):
- cursor = self.connection.cursor()
- return CursorWrapper(cursor)
-
- def _rollback(self):
- try:
- BaseDatabaseWrapper._rollback(self)
- except Database.NotSupportedError:
- pass
-
- def _set_autocommit(self, autocommit):
- with self.wrap_database_errors:
- self.connection.autocommit(autocommit)
-
- def disable_constraint_checking(self):
- """
- Disables foreign key checks, primarily for use in adding rows with forward references. Always returns True,
- to indicate constraint checks need to be re-enabled.
- """
- self.cursor().execute('SET foreign_key_checks=0')
- return True
-
- def enable_constraint_checking(self):
- """
- Re-enable foreign key checks after they have been disabled.
- """
- # Override needs_rollback in case constraint_checks_disabled is
- # nested inside transaction.atomic.
- self.needs_rollback, needs_rollback = False, self.needs_rollback
- try:
- self.cursor().execute('SET foreign_key_checks=1')
- finally:
- self.needs_rollback = needs_rollback
-
- def check_constraints(self, table_names=None):
- """
- Checks each table name in `table_names` for rows with invalid foreign key references. This method is
- intended to be used in conjunction with `disable_constraint_checking()` and `enable_constraint_checking()`, to
- determine if rows with invalid references were entered while constraint checks were off.
-
- Raises an IntegrityError on the first invalid foreign key reference encountered (if any) and provides
- detailed information about the invalid reference in the error message.
-
- Backends can override this method if they can more directly apply constraint checking (e.g. via "SET CONSTRAINTS
- ALL IMMEDIATE")
- """
- cursor = self.cursor()
- if table_names is None:
- table_names = self.introspection.table_names(cursor)
- for table_name in table_names:
- primary_key_column_name = self.introspection.get_primary_key_column(cursor, table_name)
- if not primary_key_column_name:
- continue
- key_columns = self.introspection.get_key_columns(cursor, table_name)
- for column_name, referenced_table_name, referenced_column_name in key_columns:
- cursor.execute("""
- SELECT REFERRING.`%s`, REFERRING.`%s` FROM `%s` as REFERRING
- LEFT JOIN `%s` as REFERRED
- ON (REFERRING.`%s` = REFERRED.`%s`)
- WHERE REFERRING.`%s` IS NOT NULL AND REFERRED.`%s` IS NULL"""
- % (primary_key_column_name, column_name, table_name, referenced_table_name,
- column_name, referenced_column_name, column_name, referenced_column_name))
- for bad_row in cursor.fetchall():
- raise utils.IntegrityError("The row in table '%s' with primary key '%s' has an invalid "
- "foreign key: %s.%s contains a value '%s' that does not have a corresponding value in %s.%s."
- % (table_name, bad_row[0],
- table_name, column_name, bad_row[1],
- referenced_table_name, referenced_column_name))
-
- def is_usable(self):
- try:
- self.connection.ping()
- except Database.Error:
- return False
- else:
- return True
-
- @cached_property
- def mysql_version(self):
- with self.temporary_connection():
- server_info = self.connection.get_server_info()
- match = server_version_re.match(server_info)
- if not match:
- raise Exception('Unable to determine MySQL version from version string %r' % server_info)
- return tuple([int(x) for x in match.groups()])
diff --git a/lib/python2.7/site-packages/django/db/backends/mysql/client.py b/lib/python2.7/site-packages/django/db/backends/mysql/client.py
deleted file mode 100644
index 1cf8cee..0000000
--- a/lib/python2.7/site-packages/django/db/backends/mysql/client.py
+++ /dev/null
@@ -1,40 +0,0 @@
-import os
-import sys
-
-from django.db.backends import BaseDatabaseClient
-
-class DatabaseClient(BaseDatabaseClient):
- executable_name = 'mysql'
-
- def runshell(self):
- settings_dict = self.connection.settings_dict
- args = [self.executable_name]
- db = settings_dict['OPTIONS'].get('db', settings_dict['NAME'])
- user = settings_dict['OPTIONS'].get('user', settings_dict['USER'])
- passwd = settings_dict['OPTIONS'].get('passwd', settings_dict['PASSWORD'])
- host = settings_dict['OPTIONS'].get('host', settings_dict['HOST'])
- port = settings_dict['OPTIONS'].get('port', settings_dict['PORT'])
- defaults_file = settings_dict['OPTIONS'].get('read_default_file')
- # Seems to be no good way to set sql_mode with CLI.
-
- if defaults_file:
- args += ["--defaults-file=%s" % defaults_file]
- if user:
- args += ["--user=%s" % user]
- if passwd:
- args += ["--password=%s" % passwd]
- if host:
- if '/' in host:
- args += ["--socket=%s" % host]
- else:
- args += ["--host=%s" % host]
- if port:
- args += ["--port=%s" % port]
- if db:
- args += [db]
-
- if os.name == 'nt':
- sys.exit(os.system(" ".join(args)))
- else:
- os.execvp(self.executable_name, args)
-
diff --git a/lib/python2.7/site-packages/django/db/backends/mysql/compiler.py b/lib/python2.7/site-packages/django/db/backends/mysql/compiler.py
deleted file mode 100644
index d3439bf..0000000
--- a/lib/python2.7/site-packages/django/db/backends/mysql/compiler.py
+++ /dev/null
@@ -1,37 +0,0 @@
-from django.db.models.sql import compiler
-from django.utils.six.moves import zip_longest
-
-
-class SQLCompiler(compiler.SQLCompiler):
- def resolve_columns(self, row, fields=()):
- values = []
- index_extra_select = len(self.query.extra_select)
- for value, field in zip_longest(row[index_extra_select:], fields):
- if (field and field.get_internal_type() in ("BooleanField", "NullBooleanField") and
- value in (0, 1)):
- value = bool(value)
- values.append(value)
- return row[:index_extra_select] + tuple(values)
-
- def as_subquery_condition(self, alias, columns, qn):
- qn2 = self.connection.ops.quote_name
- sql, params = self.as_sql()
- return '(%s) IN (%s)' % (', '.join(['%s.%s' % (qn(alias), qn2(column)) for column in columns]), sql), params
-
-class SQLInsertCompiler(compiler.SQLInsertCompiler, SQLCompiler):
- pass
-
-class SQLDeleteCompiler(compiler.SQLDeleteCompiler, SQLCompiler):
- pass
-
-class SQLUpdateCompiler(compiler.SQLUpdateCompiler, SQLCompiler):
- pass
-
-class SQLAggregateCompiler(compiler.SQLAggregateCompiler, SQLCompiler):
- pass
-
-class SQLDateCompiler(compiler.SQLDateCompiler, SQLCompiler):
- pass
-
-class SQLDateTimeCompiler(compiler.SQLDateTimeCompiler, SQLCompiler):
- pass
diff --git a/lib/python2.7/site-packages/django/db/backends/mysql/creation.py b/lib/python2.7/site-packages/django/db/backends/mysql/creation.py
deleted file mode 100644
index 3a57c29..0000000
--- a/lib/python2.7/site-packages/django/db/backends/mysql/creation.py
+++ /dev/null
@@ -1,70 +0,0 @@
-from django.db.backends.creation import BaseDatabaseCreation
-
-class DatabaseCreation(BaseDatabaseCreation):
- # This dictionary maps Field objects to their associated MySQL column
- # types, as strings. Column-type strings can contain format strings; they'll
- # be interpolated against the values of Field.__dict__ before being output.
- # If a column type is set to None, it won't be included in the output.
- data_types = {
- 'AutoField': 'integer AUTO_INCREMENT',
- 'BinaryField': 'longblob',
- 'BooleanField': 'bool',
- 'CharField': 'varchar(%(max_length)s)',
- 'CommaSeparatedIntegerField': 'varchar(%(max_length)s)',
- 'DateField': 'date',
- 'DateTimeField': 'datetime',
- 'DecimalField': 'numeric(%(max_digits)s, %(decimal_places)s)',
- 'FileField': 'varchar(%(max_length)s)',
- 'FilePathField': 'varchar(%(max_length)s)',
- 'FloatField': 'double precision',
- 'IntegerField': 'integer',
- 'BigIntegerField': 'bigint',
- 'IPAddressField': 'char(15)',
- 'GenericIPAddressField': 'char(39)',
- 'NullBooleanField': 'bool',
- 'OneToOneField': 'integer',
- 'PositiveIntegerField': 'integer UNSIGNED',
- 'PositiveSmallIntegerField': 'smallint UNSIGNED',
- 'SlugField': 'varchar(%(max_length)s)',
- 'SmallIntegerField': 'smallint',
- 'TextField': 'longtext',
- 'TimeField': 'time',
- }
-
- def sql_table_creation_suffix(self):
- suffix = []
- if self.connection.settings_dict['TEST_CHARSET']:
- suffix.append('CHARACTER SET %s' % self.connection.settings_dict['TEST_CHARSET'])
- if self.connection.settings_dict['TEST_COLLATION']:
- suffix.append('COLLATE %s' % self.connection.settings_dict['TEST_COLLATION'])
- return ' '.join(suffix)
-
- def sql_for_inline_foreign_key_references(self, model, field, known_models, style):
- "All inline references are pending under MySQL"
- return [], True
-
- def sql_destroy_indexes_for_fields(self, model, fields, style):
- if len(fields) == 1 and fields[0].db_tablespace:
- tablespace_sql = self.connection.ops.tablespace_sql(fields[0].db_tablespace)
- elif model._meta.db_tablespace:
- tablespace_sql = self.connection.ops.tablespace_sql(model._meta.db_tablespace)
- else:
- tablespace_sql = ""
- if tablespace_sql:
- tablespace_sql = " " + tablespace_sql
-
- field_names = []
- qn = self.connection.ops.quote_name
- for f in fields:
- field_names.append(style.SQL_FIELD(qn(f.column)))
-
- index_name = "%s_%s" % (model._meta.db_table, self._digest([f.name for f in fields]))
-
- from ..util import truncate_name
-
- return [
- style.SQL_KEYWORD("DROP INDEX") + " " +
- style.SQL_TABLE(qn(truncate_name(index_name, self.connection.ops.max_name_length()))) + " " +
- style.SQL_KEYWORD("ON") + " " +
- style.SQL_TABLE(qn(model._meta.db_table)) + ";",
- ]
diff --git a/lib/python2.7/site-packages/django/db/backends/mysql/introspection.py b/lib/python2.7/site-packages/django/db/backends/mysql/introspection.py
deleted file mode 100644
index 548877e..0000000
--- a/lib/python2.7/site-packages/django/db/backends/mysql/introspection.py
+++ /dev/null
@@ -1,119 +0,0 @@
-import re
-from .base import FIELD_TYPE
-
-from django.db.backends import BaseDatabaseIntrospection, FieldInfo
-from django.utils.encoding import force_text
-
-
-foreign_key_re = re.compile(r"\sCONSTRAINT `[^`]*` FOREIGN KEY \(`([^`]*)`\) REFERENCES `([^`]*)` \(`([^`]*)`\)")
-
-class DatabaseIntrospection(BaseDatabaseIntrospection):
- data_types_reverse = {
- FIELD_TYPE.BLOB: 'TextField',
- FIELD_TYPE.CHAR: 'CharField',
- FIELD_TYPE.DECIMAL: 'DecimalField',
- FIELD_TYPE.NEWDECIMAL: 'DecimalField',
- FIELD_TYPE.DATE: 'DateField',
- FIELD_TYPE.DATETIME: 'DateTimeField',
- FIELD_TYPE.DOUBLE: 'FloatField',
- FIELD_TYPE.FLOAT: 'FloatField',
- FIELD_TYPE.INT24: 'IntegerField',
- FIELD_TYPE.LONG: 'IntegerField',
- FIELD_TYPE.LONGLONG: 'BigIntegerField',
- FIELD_TYPE.SHORT: 'IntegerField',
- FIELD_TYPE.STRING: 'CharField',
- FIELD_TYPE.TIME: 'TimeField',
- FIELD_TYPE.TIMESTAMP: 'DateTimeField',
- FIELD_TYPE.TINY: 'IntegerField',
- FIELD_TYPE.TINY_BLOB: 'TextField',
- FIELD_TYPE.MEDIUM_BLOB: 'TextField',
- FIELD_TYPE.LONG_BLOB: 'TextField',
- FIELD_TYPE.VAR_STRING: 'CharField',
- }
-
- def get_table_list(self, cursor):
- "Returns a list of table names in the current database."
- cursor.execute("SHOW TABLES")
- return [row[0] for row in cursor.fetchall()]
-
- def get_table_description(self, cursor, table_name):
- """
- Returns a description of the table, with the DB-API cursor.description interface."
- """
- # varchar length returned by cursor.description is an internal length,
- # not visible length (#5725), use information_schema database to fix this
- cursor.execute("""
- SELECT column_name, character_maximum_length FROM information_schema.columns
- WHERE table_name = %s AND table_schema = DATABASE()
- AND character_maximum_length IS NOT NULL""", [table_name])
- length_map = dict(cursor.fetchall())
-
- # Also getting precision and scale from information_schema (see #5014)
- cursor.execute("""
- SELECT column_name, numeric_precision, numeric_scale FROM information_schema.columns
- WHERE table_name = %s AND table_schema = DATABASE()
- AND data_type='decimal'""", [table_name])
- numeric_map = dict([(line[0], tuple([int(n) for n in line[1:]])) for line in cursor.fetchall()])
-
- cursor.execute("SELECT * FROM %s LIMIT 1" % self.connection.ops.quote_name(table_name))
- return [FieldInfo(*((force_text(line[0]),)
- + line[1:3]
- + (length_map.get(line[0], line[3]),)
- + numeric_map.get(line[0], line[4:6])
- + (line[6],)))
- for line in cursor.description]
-
- def _name_to_index(self, cursor, table_name):
- """
- Returns a dictionary of {field_name: field_index} for the given table.
- Indexes are 0-based.
- """
- return dict([(d[0], i) for i, d in enumerate(self.get_table_description(cursor, table_name))])
-
- def get_relations(self, cursor, table_name):
- """
- Returns a dictionary of {field_index: (field_index_other_table, other_table)}
- representing all relationships to the given table. Indexes are 0-based.
- """
- my_field_dict = self._name_to_index(cursor, table_name)
- constraints = self.get_key_columns(cursor, table_name)
- relations = {}
- for my_fieldname, other_table, other_field in constraints:
- other_field_index = self._name_to_index(cursor, other_table)[other_field]
- my_field_index = my_field_dict[my_fieldname]
- relations[my_field_index] = (other_field_index, other_table)
- return relations
-
- def get_key_columns(self, cursor, table_name):
- """
- Returns a list of (column_name, referenced_table_name, referenced_column_name) for all
- key columns in given table.
- """
- key_columns = []
- cursor.execute("""
- SELECT column_name, referenced_table_name, referenced_column_name
- FROM information_schema.key_column_usage
- WHERE table_name = %s
- AND table_schema = DATABASE()
- AND referenced_table_name IS NOT NULL
- AND referenced_column_name IS NOT NULL""", [table_name])
- key_columns.extend(cursor.fetchall())
- return key_columns
-
- def get_indexes(self, cursor, table_name):
- cursor.execute("SHOW INDEX FROM %s" % self.connection.ops.quote_name(table_name))
- # Do a two-pass search for indexes: on first pass check which indexes
- # are multicolumn, on second pass check which single-column indexes
- # are present.
- rows = list(cursor.fetchall())
- multicol_indexes = set()
- for row in rows:
- if row[3] > 1:
- multicol_indexes.add(row[2])
- indexes = {}
- for row in rows:
- if row[2] in multicol_indexes:
- continue
- indexes[row[4]] = {'primary_key': (row[2] == 'PRIMARY'), 'unique': not bool(row[1])}
- return indexes
-
diff --git a/lib/python2.7/site-packages/django/db/backends/mysql/validation.py b/lib/python2.7/site-packages/django/db/backends/mysql/validation.py
deleted file mode 100644
index 2ce957c..0000000
--- a/lib/python2.7/site-packages/django/db/backends/mysql/validation.py
+++ /dev/null
@@ -1,16 +0,0 @@
-from django.db.backends import BaseDatabaseValidation
-
-class DatabaseValidation(BaseDatabaseValidation):
- def validate_field(self, errors, opts, f):
- """
- MySQL has the following field length restriction:
- No character (varchar) fields can have a length exceeding 255
- characters if they have a unique index on them.
- """
- from django.db import models
- varchar_fields = (models.CharField, models.CommaSeparatedIntegerField,
- models.SlugField)
- if (isinstance(f, varchar_fields) and f.unique
- and (f.max_length is None or int(f.max_length) > 255)):
- msg = '"%(name)s": %(cls)s cannot have a "max_length" greater than 255 when using "unique=True".'
- errors.add(opts, msg % {'name': f.name, 'cls': f.__class__.__name__})
diff --git a/lib/python2.7/site-packages/django/db/backends/oracle/__init__.py b/lib/python2.7/site-packages/django/db/backends/oracle/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/db/backends/oracle/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/db/backends/oracle/base.py b/lib/python2.7/site-packages/django/db/backends/oracle/base.py
deleted file mode 100644
index 11ab574..0000000
--- a/lib/python2.7/site-packages/django/db/backends/oracle/base.py
+++ /dev/null
@@ -1,961 +0,0 @@
-"""
-Oracle database backend for Django.
-
-Requires cx_Oracle: http://cx-oracle.sourceforge.net/
-"""
-from __future__ import unicode_literals
-
-import decimal
-import re
-import sys
-import warnings
-
-def _setup_environment(environ):
- import platform
- # Cygwin requires some special voodoo to set the environment variables
- # properly so that Oracle will see them.
- if platform.system().upper().startswith('CYGWIN'):
- try:
- import ctypes
- except ImportError as e:
- from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured("Error loading ctypes: %s; "
- "the Oracle backend requires ctypes to "
- "operate correctly under Cygwin." % e)
- kernel32 = ctypes.CDLL('kernel32')
- for name, value in environ:
- kernel32.SetEnvironmentVariableA(name, value)
- else:
- import os
- os.environ.update(environ)
-
-_setup_environment([
- # Oracle takes client-side character set encoding from the environment.
- ('NLS_LANG', '.UTF8'),
- # This prevents unicode from getting mangled by getting encoded into the
- # potentially non-unicode database character set.
- ('ORA_NCHAR_LITERAL_REPLACE', 'TRUE'),
-])
-
-
-try:
- import cx_Oracle as Database
-except ImportError as e:
- from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured("Error loading cx_Oracle module: %s" % e)
-
-try:
- import pytz
-except ImportError:
- pytz = None
-
-from django.db import utils
-from django.db.backends import *
-from django.db.backends.oracle.client import DatabaseClient
-from django.db.backends.oracle.creation import DatabaseCreation
-from django.db.backends.oracle.introspection import DatabaseIntrospection
-from django.utils.encoding import force_bytes, force_text
-
-
-DatabaseError = Database.DatabaseError
-IntegrityError = Database.IntegrityError
-
-# Check whether cx_Oracle was compiled with the WITH_UNICODE option if cx_Oracle is pre-5.1. This will
-# also be True for cx_Oracle 5.1 and in Python 3.0. See #19606
-if int(Database.version.split('.', 1)[0]) >= 5 and \
- (int(Database.version.split('.', 2)[1]) >= 1 or
- not hasattr(Database, 'UNICODE')):
- convert_unicode = force_text
-else:
- convert_unicode = force_bytes
-
-
-class DatabaseFeatures(BaseDatabaseFeatures):
- empty_fetchmany_value = ()
- needs_datetime_string_cast = False
- interprets_empty_strings_as_nulls = True
- uses_savepoints = True
- has_select_for_update = True
- has_select_for_update_nowait = True
- can_return_id_from_insert = True
- allow_sliced_subqueries = False
- supports_subqueries_in_group_by = False
- supports_transactions = True
- supports_timezones = False
- has_zoneinfo_database = pytz is not None
- supports_bitwise_or = False
- can_defer_constraint_checks = True
- ignores_nulls_in_unique_constraints = False
- has_bulk_insert = True
- supports_tablespaces = True
- supports_sequence_reset = False
- atomic_transactions = False
-
-class DatabaseOperations(BaseDatabaseOperations):
- compiler_module = "django.db.backends.oracle.compiler"
-
- def autoinc_sql(self, table, column):
- # To simulate auto-incrementing primary keys in Oracle, we have to
- # create a sequence and a trigger.
- sq_name = self._get_sequence_name(table)
- tr_name = self._get_trigger_name(table)
- tbl_name = self.quote_name(table)
- col_name = self.quote_name(column)
- sequence_sql = """
-DECLARE
- i INTEGER;
-BEGIN
- SELECT COUNT(*) INTO i FROM USER_CATALOG
- WHERE TABLE_NAME = '%(sq_name)s' AND TABLE_TYPE = 'SEQUENCE';
- IF i = 0 THEN
- EXECUTE IMMEDIATE 'CREATE SEQUENCE "%(sq_name)s"';
- END IF;
-END;
-/""" % locals()
- trigger_sql = """
-CREATE OR REPLACE TRIGGER "%(tr_name)s"
-BEFORE INSERT ON %(tbl_name)s
-FOR EACH ROW
-WHEN (new.%(col_name)s IS NULL)
- BEGIN
- SELECT "%(sq_name)s".nextval
- INTO :new.%(col_name)s FROM dual;
- END;
-/""" % locals()
- return sequence_sql, trigger_sql
-
- def cache_key_culling_sql(self):
- return """
- SELECT cache_key
- FROM (SELECT cache_key, rank() OVER (ORDER BY cache_key) AS rank FROM %s)
- WHERE rank = %%s + 1
- """
-
- def date_extract_sql(self, lookup_type, field_name):
- if lookup_type == 'week_day':
- # TO_CHAR(field, 'D') returns an integer from 1-7, where 1=Sunday.
- return "TO_CHAR(%s, 'D')" % field_name
- else:
- # http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions050.htm
- return "EXTRACT(%s FROM %s)" % (lookup_type.upper(), field_name)
-
- def date_interval_sql(self, sql, connector, timedelta):
- """
- Implements the interval functionality for expressions
- format for Oracle:
- (datefield + INTERVAL '3 00:03:20.000000' DAY(1) TO SECOND(6))
- """
- minutes, seconds = divmod(timedelta.seconds, 60)
- hours, minutes = divmod(minutes, 60)
- days = str(timedelta.days)
- day_precision = len(days)
- fmt = "(%s %s INTERVAL '%s %02d:%02d:%02d.%06d' DAY(%d) TO SECOND(6))"
- return fmt % (sql, connector, days, hours, minutes, seconds,
- timedelta.microseconds, day_precision)
-
- def date_trunc_sql(self, lookup_type, field_name):
- # http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions230.htm#i1002084
- if lookup_type in ('year', 'month'):
- return "TRUNC(%s, '%s')" % (field_name, lookup_type.upper())
- else:
- return "TRUNC(%s)" % field_name
-
- # Oracle crashes with "ORA-03113: end-of-file on communication channel"
- # if the time zone name is passed in parameter. Use interpolation instead.
- # https://groups.google.com/forum/#!msg/django-developers/zwQju7hbG78/9l934yelwfsJ
- # This regexp matches all time zone names from the zoneinfo database.
- _tzname_re = re.compile(r'^[\w/:+-]+$')
-
- def _convert_field_to_tz(self, field_name, tzname):
- if not self._tzname_re.match(tzname):
- raise ValueError("Invalid time zone name: %s" % tzname)
- # Convert from UTC to local time, returning TIMESTAMP WITH TIME ZONE.
- result = "(FROM_TZ(%s, '0:00') AT TIME ZONE '%s')" % (field_name, tzname)
- # Extracting from a TIMESTAMP WITH TIME ZONE ignore the time zone.
- # Convert to a DATETIME, which is called DATE by Oracle. There's no
- # built-in function to do that; the easiest is to go through a string.
- result = "TO_CHAR(%s, 'YYYY-MM-DD HH24:MI:SS')" % result
- result = "TO_DATE(%s, 'YYYY-MM-DD HH24:MI:SS')" % result
- # Re-convert to a TIMESTAMP because EXTRACT only handles the date part
- # on DATE values, even though they actually store the time part.
- return "CAST(%s AS TIMESTAMP)" % result
-
- def datetime_extract_sql(self, lookup_type, field_name, tzname):
- if settings.USE_TZ:
- field_name = self._convert_field_to_tz(field_name, tzname)
- if lookup_type == 'week_day':
- # TO_CHAR(field, 'D') returns an integer from 1-7, where 1=Sunday.
- sql = "TO_CHAR(%s, 'D')" % field_name
- else:
- # http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions050.htm
- sql = "EXTRACT(%s FROM %s)" % (lookup_type.upper(), field_name)
- return sql, []
-
- def datetime_trunc_sql(self, lookup_type, field_name, tzname):
- if settings.USE_TZ:
- field_name = self._convert_field_to_tz(field_name, tzname)
- # http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions230.htm#i1002084
- if lookup_type in ('year', 'month'):
- sql = "TRUNC(%s, '%s')" % (field_name, lookup_type.upper())
- elif lookup_type == 'day':
- sql = "TRUNC(%s)" % field_name
- elif lookup_type == 'hour':
- sql = "TRUNC(%s, 'HH24')" % field_name
- elif lookup_type == 'minute':
- sql = "TRUNC(%s, 'MI')" % field_name
- else:
- sql = field_name # Cast to DATE removes sub-second precision.
- return sql, []
-
- def convert_values(self, value, field):
- if isinstance(value, Database.LOB):
- value = value.read()
- if field and field.get_internal_type() == 'TextField':
- value = force_text(value)
-
- # Oracle stores empty strings as null. We need to undo this in
- # order to adhere to the Django convention of using the empty
- # string instead of null, but only if the field accepts the
- # empty string.
- if value is None and field and field.empty_strings_allowed:
- value = ''
- # Convert 1 or 0 to True or False
- elif value in (1, 0) and field and field.get_internal_type() in ('BooleanField', 'NullBooleanField'):
- value = bool(value)
- # Force floats to the correct type
- elif value is not None and field and field.get_internal_type() == 'FloatField':
- value = float(value)
- # Convert floats to decimals
- elif value is not None and field and field.get_internal_type() == 'DecimalField':
- value = util.typecast_decimal(field.format_number(value))
- # cx_Oracle always returns datetime.datetime objects for
- # DATE and TIMESTAMP columns, but Django wants to see a
- # python datetime.date, .time, or .datetime. We use the type
- # of the Field to determine which to cast to, but it's not
- # always available.
- # As a workaround, we cast to date if all the time-related
- # values are 0, or to time if the date is 1/1/1900.
- # This could be cleaned a bit by adding a method to the Field
- # classes to normalize values from the database (the to_python
- # method is used for validation and isn't what we want here).
- elif isinstance(value, Database.Timestamp):
- if field and field.get_internal_type() == 'DateTimeField':
- pass
- elif field and field.get_internal_type() == 'DateField':
- value = value.date()
- elif field and field.get_internal_type() == 'TimeField' or (value.year == 1900 and value.month == value.day == 1):
- value = value.time()
- elif value.hour == value.minute == value.second == value.microsecond == 0:
- value = value.date()
- return value
-
- def deferrable_sql(self):
- return " DEFERRABLE INITIALLY DEFERRED"
-
- def drop_sequence_sql(self, table):
- return "DROP SEQUENCE %s;" % self.quote_name(self._get_sequence_name(table))
-
- def fetch_returned_insert_id(self, cursor):
- return int(cursor._insert_id_var.getvalue())
-
- def field_cast_sql(self, db_type, internal_type):
- if db_type and db_type.endswith('LOB'):
- return "DBMS_LOB.SUBSTR(%s)"
- else:
- return "%s"
-
- def last_executed_query(self, cursor, sql, params):
- # http://cx-oracle.sourceforge.net/html/cursor.html#Cursor.statement
- # The DB API definition does not define this attribute.
- statement = cursor.statement
- if statement and six.PY2 and not isinstance(statement, unicode):
- statement = statement.decode('utf-8')
- # Unlike Psycopg's `query` and MySQLdb`'s `_last_executed`, CxOracle's
- # `statement` doesn't contain the query parameters. refs #20010.
- return super(DatabaseOperations, self).last_executed_query(cursor, statement, params)
-
- def last_insert_id(self, cursor, table_name, pk_name):
- sq_name = self._get_sequence_name(table_name)
- cursor.execute('SELECT "%s".currval FROM dual' % sq_name)
- return cursor.fetchone()[0]
-
- def lookup_cast(self, lookup_type):
- if lookup_type in ('iexact', 'icontains', 'istartswith', 'iendswith'):
- return "UPPER(%s)"
- return "%s"
-
- def max_in_list_size(self):
- return 1000
-
- def max_name_length(self):
- return 30
-
- def prep_for_iexact_query(self, x):
- return x
-
- def process_clob(self, value):
- if value is None:
- return ''
- return force_text(value.read())
-
- def quote_name(self, name):
- # SQL92 requires delimited (quoted) names to be case-sensitive. When
- # not quoted, Oracle has case-insensitive behavior for identifiers, but
- # always defaults to uppercase.
- # We simplify things by making Oracle identifiers always uppercase.
- if not name.startswith('"') and not name.endswith('"'):
- name = '"%s"' % util.truncate_name(name.upper(),
- self.max_name_length())
- # Oracle puts the query text into a (query % args) construct, so % signs
- # in names need to be escaped. The '%%' will be collapsed back to '%' at
- # that stage so we aren't really making the name longer here.
- name = name.replace('%','%%')
- return name.upper()
-
- def random_function_sql(self):
- return "DBMS_RANDOM.RANDOM"
-
- def regex_lookup_9(self, lookup_type):
- raise NotImplementedError("Regexes are not supported in Oracle before version 10g.")
-
- def regex_lookup_10(self, lookup_type):
- if lookup_type == 'regex':
- match_option = "'c'"
- else:
- match_option = "'i'"
- return 'REGEXP_LIKE(%%s, %%s, %s)' % match_option
-
- def regex_lookup(self, lookup_type):
- # If regex_lookup is called before it's been initialized, then create
- # a cursor to initialize it and recur.
- self.connection.cursor()
- return self.connection.ops.regex_lookup(lookup_type)
-
- def return_insert_id(self):
- return "RETURNING %s INTO %%s", (InsertIdVar(),)
-
- def savepoint_create_sql(self, sid):
- return convert_unicode("SAVEPOINT " + self.quote_name(sid))
-
- def savepoint_rollback_sql(self, sid):
- return convert_unicode("ROLLBACK TO SAVEPOINT " + self.quote_name(sid))
-
- def sql_flush(self, style, tables, sequences, allow_cascade=False):
- # Return a list of 'TRUNCATE x;', 'TRUNCATE y;',
- # 'TRUNCATE z;'... style SQL statements
- if tables:
- # Oracle does support TRUNCATE, but it seems to get us into
- # FK referential trouble, whereas DELETE FROM table works.
- sql = ['%s %s %s;' % (
- style.SQL_KEYWORD('DELETE'),
- style.SQL_KEYWORD('FROM'),
- style.SQL_FIELD(self.quote_name(table))
- ) for table in tables]
- # Since we've just deleted all the rows, running our sequence
- # ALTER code will reset the sequence to 0.
- sql.extend(self.sequence_reset_by_name_sql(style, sequences))
- return sql
- else:
- return []
-
- def sequence_reset_by_name_sql(self, style, sequences):
- sql = []
- for sequence_info in sequences:
- sequence_name = self._get_sequence_name(sequence_info['table'])
- table_name = self.quote_name(sequence_info['table'])
- column_name = self.quote_name(sequence_info['column'] or 'id')
- query = _get_sequence_reset_sql() % {'sequence': sequence_name,
- 'table': table_name,
- 'column': column_name}
- sql.append(query)
- return sql
-
- def sequence_reset_sql(self, style, model_list):
- from django.db import models
- output = []
- query = _get_sequence_reset_sql()
- for model in model_list:
- for f in model._meta.local_fields:
- if isinstance(f, models.AutoField):
- table_name = self.quote_name(model._meta.db_table)
- sequence_name = self._get_sequence_name(model._meta.db_table)
- column_name = self.quote_name(f.column)
- output.append(query % {'sequence': sequence_name,
- 'table': table_name,
- 'column': column_name})
- # Only one AutoField is allowed per model, so don't
- # continue to loop
- break
- for f in model._meta.many_to_many:
- if not f.rel.through:
- table_name = self.quote_name(f.m2m_db_table())
- sequence_name = self._get_sequence_name(f.m2m_db_table())
- column_name = self.quote_name('id')
- output.append(query % {'sequence': sequence_name,
- 'table': table_name,
- 'column': column_name})
- return output
-
- def start_transaction_sql(self):
- return ''
-
- def tablespace_sql(self, tablespace, inline=False):
- if inline:
- return "USING INDEX TABLESPACE %s" % self.quote_name(tablespace)
- else:
- return "TABLESPACE %s" % self.quote_name(tablespace)
-
- def value_to_db_datetime(self, value):
- if value is None:
- return None
-
- # Oracle doesn't support tz-aware datetimes
- if timezone.is_aware(value):
- if settings.USE_TZ:
- value = value.astimezone(timezone.utc).replace(tzinfo=None)
- else:
- raise ValueError("Oracle backend does not support timezone-aware datetimes when USE_TZ is False.")
-
- return six.text_type(value)
-
- def value_to_db_time(self, value):
- if value is None:
- return None
-
- if isinstance(value, six.string_types):
- return datetime.datetime.strptime(value, '%H:%M:%S')
-
- # Oracle doesn't support tz-aware times
- if timezone.is_aware(value):
- raise ValueError("Oracle backend does not support timezone-aware times.")
-
- return datetime.datetime(1900, 1, 1, value.hour, value.minute,
- value.second, value.microsecond)
-
- def year_lookup_bounds_for_date_field(self, value):
- first = '%s-01-01'
- second = '%s-12-31'
- return [first % value, second % value]
-
- def year_lookup_bounds_for_datetime_field(self, value):
- # The default implementation uses datetime objects for the bounds.
- # This must be overridden here, to use a formatted date (string) as
- # 'second' instead -- cx_Oracle chops the fraction-of-second part
- # off of datetime objects, leaving almost an entire second out of
- # the year under the default implementation.
- bounds = super(DatabaseOperations, self).year_lookup_bounds_for_datetime_field(value)
- if settings.USE_TZ:
- bounds = [b.astimezone(timezone.utc).replace(tzinfo=None) for b in bounds]
- return [b.isoformat(b' ') for b in bounds]
-
- def combine_expression(self, connector, sub_expressions):
- "Oracle requires special cases for %% and & operators in query expressions"
- if connector == '%%':
- return 'MOD(%s)' % ','.join(sub_expressions)
- elif connector == '&':
- return 'BITAND(%s)' % ','.join(sub_expressions)
- elif connector == '|':
- raise NotImplementedError("Bit-wise or is not supported in Oracle.")
- return super(DatabaseOperations, self).combine_expression(connector, sub_expressions)
-
- def _get_sequence_name(self, table):
- name_length = self.max_name_length() - 3
- return '%s_SQ' % util.truncate_name(table, name_length).upper()
-
- def _get_trigger_name(self, table):
- name_length = self.max_name_length() - 3
- return '%s_TR' % util.truncate_name(table, name_length).upper()
-
- def bulk_insert_sql(self, fields, num_values):
- items_sql = "SELECT %s FROM DUAL" % ", ".join(["%s"] * len(fields))
- return " UNION ALL ".join([items_sql] * num_values)
-
-
-class _UninitializedOperatorsDescriptor(object):
-
- def __get__(self, instance, owner):
- # If connection.operators is looked up before a connection has been
- # created, transparently initialize connection.operators to avert an
- # AttributeError.
- if instance is None:
- raise AttributeError("operators not available as class attribute")
- # Creating a cursor will initialize the operators.
- instance.cursor().close()
- return instance.__dict__['operators']
-
-
-class DatabaseWrapper(BaseDatabaseWrapper):
- vendor = 'oracle'
- operators = _UninitializedOperatorsDescriptor()
-
- _standard_operators = {
- 'exact': '= %s',
- 'iexact': '= UPPER(%s)',
- 'contains': "LIKE TRANSLATE(%s USING NCHAR_CS) ESCAPE TRANSLATE('\\' USING NCHAR_CS)",
- 'icontains': "LIKE UPPER(TRANSLATE(%s USING NCHAR_CS)) ESCAPE TRANSLATE('\\' USING NCHAR_CS)",
- 'gt': '> %s',
- 'gte': '>= %s',
- 'lt': '< %s',
- 'lte': '<= %s',
- 'startswith': "LIKE TRANSLATE(%s USING NCHAR_CS) ESCAPE TRANSLATE('\\' USING NCHAR_CS)",
- 'endswith': "LIKE TRANSLATE(%s USING NCHAR_CS) ESCAPE TRANSLATE('\\' USING NCHAR_CS)",
- 'istartswith': "LIKE UPPER(TRANSLATE(%s USING NCHAR_CS)) ESCAPE TRANSLATE('\\' USING NCHAR_CS)",
- 'iendswith': "LIKE UPPER(TRANSLATE(%s USING NCHAR_CS)) ESCAPE TRANSLATE('\\' USING NCHAR_CS)",
- }
-
- _likec_operators = _standard_operators.copy()
- _likec_operators.update({
- 'contains': "LIKEC %s ESCAPE '\\'",
- 'icontains': "LIKEC UPPER(%s) ESCAPE '\\'",
- 'startswith': "LIKEC %s ESCAPE '\\'",
- 'endswith': "LIKEC %s ESCAPE '\\'",
- 'istartswith': "LIKEC UPPER(%s) ESCAPE '\\'",
- 'iendswith': "LIKEC UPPER(%s) ESCAPE '\\'",
- })
-
- Database = Database
-
- def __init__(self, *args, **kwargs):
- super(DatabaseWrapper, self).__init__(*args, **kwargs)
-
- self.features = DatabaseFeatures(self)
- use_returning_into = self.settings_dict["OPTIONS"].get('use_returning_into', True)
- self.features.can_return_id_from_insert = use_returning_into
- self.ops = DatabaseOperations(self)
- self.client = DatabaseClient(self)
- self.creation = DatabaseCreation(self)
- self.introspection = DatabaseIntrospection(self)
- self.validation = BaseDatabaseValidation(self)
-
- def _connect_string(self):
- settings_dict = self.settings_dict
- if not settings_dict['HOST'].strip():
- settings_dict['HOST'] = 'localhost'
- if settings_dict['PORT'].strip():
- dsn = Database.makedsn(settings_dict['HOST'],
- int(settings_dict['PORT']),
- settings_dict['NAME'])
- else:
- dsn = settings_dict['NAME']
- return "%s/%s@%s" % (settings_dict['USER'],
- settings_dict['PASSWORD'], dsn)
-
- def get_connection_params(self):
- conn_params = self.settings_dict['OPTIONS'].copy()
- if 'use_returning_into' in conn_params:
- del conn_params['use_returning_into']
- return conn_params
-
- def get_new_connection(self, conn_params):
- conn_string = convert_unicode(self._connect_string())
- return Database.connect(conn_string, **conn_params)
-
- def init_connection_state(self):
- cursor = self.create_cursor()
- # Set the territory first. The territory overrides NLS_DATE_FORMAT
- # and NLS_TIMESTAMP_FORMAT to the territory default. When all of
- # these are set in single statement it isn't clear what is supposed
- # to happen.
- cursor.execute("ALTER SESSION SET NLS_TERRITORY = 'AMERICA'")
- # Set oracle date to ansi date format. This only needs to execute
- # once when we create a new connection. We also set the Territory
- # to 'AMERICA' which forces Sunday to evaluate to a '1' in
- # TO_CHAR().
- cursor.execute(
- "ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'"
- " NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF'"
- + (" TIME_ZONE = 'UTC'" if settings.USE_TZ else ''))
- cursor.close()
- if 'operators' not in self.__dict__:
- # Ticket #14149: Check whether our LIKE implementation will
- # work for this connection or we need to fall back on LIKEC.
- # This check is performed only once per DatabaseWrapper
- # instance per thread, since subsequent connections will use
- # the same settings.
- cursor = self.create_cursor()
- try:
- cursor.execute("SELECT 1 FROM DUAL WHERE DUMMY %s"
- % self._standard_operators['contains'],
- ['X'])
- except DatabaseError:
- self.operators = self._likec_operators
- else:
- self.operators = self._standard_operators
- cursor.close()
-
- # There's no way for the DatabaseOperations class to know the
- # currently active Oracle version, so we do some setups here.
- # TODO: Multi-db support will need a better solution (a way to
- # communicate the current version).
- if self.oracle_version is not None and self.oracle_version <= 9:
- self.ops.regex_lookup = self.ops.regex_lookup_9
- else:
- self.ops.regex_lookup = self.ops.regex_lookup_10
-
- try:
- self.connection.stmtcachesize = 20
- except:
- # Django docs specify cx_Oracle version 4.3.1 or higher, but
- # stmtcachesize is available only in 4.3.2 and up.
- pass
-
- def create_cursor(self):
- return FormatStylePlaceholderCursor(self.connection)
-
- def _commit(self):
- if self.connection is not None:
- try:
- return self.connection.commit()
- except Database.DatabaseError as e:
- # cx_Oracle 5.0.4 raises a cx_Oracle.DatabaseError exception
- # with the following attributes and values:
- # code = 2091
- # message = 'ORA-02091: transaction rolled back
- # 'ORA-02291: integrity constraint (TEST_DJANGOTEST.SYS
- # _C00102056) violated - parent key not found'
- # We convert that particular case to our IntegrityError exception
- x = e.args[0]
- if hasattr(x, 'code') and hasattr(x, 'message') \
- and x.code == 2091 and 'ORA-02291' in x.message:
- six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])
- raise
-
- # Oracle doesn't support savepoint commits. Ignore them.
- def _savepoint_commit(self, sid):
- pass
-
- def _set_autocommit(self, autocommit):
- with self.wrap_database_errors:
- self.connection.autocommit = autocommit
-
- def check_constraints(self, table_names=None):
- """
- To check constraints, we set constraints to immediate. Then, when, we're done we must ensure they
- are returned to deferred.
- """
- self.cursor().execute('SET CONSTRAINTS ALL IMMEDIATE')
- self.cursor().execute('SET CONSTRAINTS ALL DEFERRED')
-
- def is_usable(self):
- try:
- if hasattr(self.connection, 'ping'): # Oracle 10g R2 and higher
- self.connection.ping()
- else:
- # Use a cx_Oracle cursor directly, bypassing Django's utilities.
- self.connection.cursor().execute("SELECT 1 FROM DUAL")
- except Database.Error:
- return False
- else:
- return True
-
- @cached_property
- def oracle_version(self):
- with self.temporary_connection():
- version = self.connection.version
- try:
- return int(version.split('.')[0])
- except ValueError:
- return None
-
-
-class OracleParam(object):
- """
- Wrapper object for formatting parameters for Oracle. If the string
- representation of the value is large enough (greater than 4000 characters)
- the input size needs to be set as CLOB. Alternatively, if the parameter
- has an `input_size` attribute, then the value of the `input_size` attribute
- will be used instead. Otherwise, no input size will be set for the
- parameter when executing the query.
- """
-
- def __init__(self, param, cursor, strings_only=False):
- # With raw SQL queries, datetimes can reach this function
- # without being converted by DateTimeField.get_db_prep_value.
- if settings.USE_TZ and isinstance(param, datetime.datetime):
- if timezone.is_naive(param):
- warnings.warn("Oracle received a naive datetime (%s)"
- " while time zone support is active." % param,
- RuntimeWarning)
- default_timezone = timezone.get_default_timezone()
- param = timezone.make_aware(param, default_timezone)
- param = param.astimezone(timezone.utc).replace(tzinfo=None)
-
- # Oracle doesn't recognize True and False correctly in Python 3.
- # The conversion done below works both in 2 and 3.
- if param is True:
- param = "1"
- elif param is False:
- param = "0"
- if hasattr(param, 'bind_parameter'):
- self.force_bytes = param.bind_parameter(cursor)
- elif isinstance(param, six.memoryview):
- self.force_bytes = param
- else:
- self.force_bytes = convert_unicode(param, cursor.charset,
- strings_only)
- if hasattr(param, 'input_size'):
- # If parameter has `input_size` attribute, use that.
- self.input_size = param.input_size
- elif isinstance(param, six.string_types) and len(param) > 4000:
- # Mark any string param greater than 4000 characters as a CLOB.
- self.input_size = Database.CLOB
- else:
- self.input_size = None
-
-
-class VariableWrapper(object):
- """
- An adapter class for cursor variables that prevents the wrapped object
- from being converted into a string when used to instanciate an OracleParam.
- This can be used generally for any other object that should be passed into
- Cursor.execute as-is.
- """
-
- def __init__(self, var):
- self.var = var
-
- def bind_parameter(self, cursor):
- return self.var
-
- def __getattr__(self, key):
- return getattr(self.var, key)
-
- def __setattr__(self, key, value):
- if key == 'var':
- self.__dict__[key] = value
- else:
- setattr(self.var, key, value)
-
-
-class InsertIdVar(object):
- """
- A late-binding cursor variable that can be passed to Cursor.execute
- as a parameter, in order to receive the id of the row created by an
- insert statement.
- """
-
- def bind_parameter(self, cursor):
- param = cursor.cursor.var(Database.NUMBER)
- cursor._insert_id_var = param
- return param
-
-
-class FormatStylePlaceholderCursor(object):
- """
- Django uses "format" (e.g. '%s') style placeholders, but Oracle uses ":var"
- style. This fixes it -- but note that if you want to use a literal "%s" in
- a query, you'll need to use "%%s".
-
- We also do automatic conversion between Unicode on the Python side and
- UTF-8 -- for talking to Oracle -- in here.
- """
- charset = 'utf-8'
-
- def __init__(self, connection):
- self.cursor = connection.cursor()
- # Necessary to retrieve decimal values without rounding error.
- self.cursor.numbersAsStrings = True
- # Default arraysize of 1 is highly sub-optimal.
- self.cursor.arraysize = 100
-
- def _format_params(self, params):
- try:
- return dict((k,OracleParam(v, self, True)) for k,v in params.items())
- except AttributeError:
- return tuple([OracleParam(p, self, True) for p in params])
-
- def _guess_input_sizes(self, params_list):
- # Try dict handling; if that fails, treat as sequence
- if hasattr(params_list[0], 'keys'):
- sizes = {}
- for params in params_list:
- for k, value in params.items():
- if value.input_size:
- sizes[k] = value.input_size
- self.setinputsizes(**sizes)
- else:
- # It's not a list of dicts; it's a list of sequences
- sizes = [None] * len(params_list[0])
- for params in params_list:
- for i, value in enumerate(params):
- if value.input_size:
- sizes[i] = value.input_size
- self.setinputsizes(*sizes)
-
- def _param_generator(self, params):
- # Try dict handling; if that fails, treat as sequence
- if hasattr(params, 'items'):
- return dict((k, v.force_bytes) for k,v in params.items())
- else:
- return [p.force_bytes for p in params]
-
- def _fix_for_params(self, query, params):
- # cx_Oracle wants no trailing ';' for SQL statements. For PL/SQL, it
- # it does want a trailing ';' but not a trailing '/'. However, these
- # characters must be included in the original query in case the query
- # is being passed to SQL*Plus.
- if query.endswith(';') or query.endswith('/'):
- query = query[:-1]
- if params is None:
- params = []
- query = convert_unicode(query, self.charset)
- elif hasattr(params, 'keys'):
- # Handle params as dict
- args = dict((k, ":%s"%k) for k in params.keys())
- query = convert_unicode(query % args, self.charset)
- else:
- # Handle params as sequence
- args = [(':arg%d' % i) for i in range(len(params))]
- query = convert_unicode(query % tuple(args), self.charset)
- return query, self._format_params(params)
-
- def execute(self, query, params=None):
- query, params = self._fix_for_params(query, params)
- self._guess_input_sizes([params])
- try:
- return self.cursor.execute(query, self._param_generator(params))
- except Database.DatabaseError as e:
- # cx_Oracle <= 4.4.0 wrongly raises a DatabaseError for ORA-01400.
- if hasattr(e.args[0], 'code') and e.args[0].code == 1400 and not isinstance(e, IntegrityError):
- six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])
- raise
-
- def executemany(self, query, params=None):
- if not params:
- # No params given, nothing to do
- return None
- # uniform treatment for sequences and iterables
- params_iter = iter(params)
- query, firstparams = self._fix_for_params(query, next(params_iter))
- # we build a list of formatted params; as we're going to traverse it
- # more than once, we can't make it lazy by using a generator
- formatted = [firstparams]+[self._format_params(p) for p in params_iter]
- self._guess_input_sizes(formatted)
- try:
- return self.cursor.executemany(query,
- [self._param_generator(p) for p in formatted])
- except Database.DatabaseError as e:
- # cx_Oracle <= 4.4.0 wrongly raises a DatabaseError for ORA-01400.
- if hasattr(e.args[0], 'code') and e.args[0].code == 1400 and not isinstance(e, IntegrityError):
- six.reraise(utils.IntegrityError, utils.IntegrityError(*tuple(e.args)), sys.exc_info()[2])
- raise
-
- def fetchone(self):
- row = self.cursor.fetchone()
- if row is None:
- return row
- return _rowfactory(row, self.cursor)
-
- def fetchmany(self, size=None):
- if size is None:
- size = self.arraysize
- return tuple([_rowfactory(r, self.cursor)
- for r in self.cursor.fetchmany(size)])
-
- def fetchall(self):
- return tuple([_rowfactory(r, self.cursor)
- for r in self.cursor.fetchall()])
-
- def var(self, *args):
- return VariableWrapper(self.cursor.var(*args))
-
- def arrayvar(self, *args):
- return VariableWrapper(self.cursor.arrayvar(*args))
-
- def __getattr__(self, attr):
- if attr in self.__dict__:
- return self.__dict__[attr]
- else:
- return getattr(self.cursor, attr)
-
- def __iter__(self):
- return CursorIterator(self.cursor)
-
-
-class CursorIterator(six.Iterator):
-
- """Cursor iterator wrapper that invokes our custom row factory."""
-
- def __init__(self, cursor):
- self.cursor = cursor
- self.iter = iter(cursor)
-
- def __iter__(self):
- return self
-
- def __next__(self):
- return _rowfactory(next(self.iter), self.cursor)
-
-
-def _rowfactory(row, cursor):
- # Cast numeric values as the appropriate Python type based upon the
- # cursor description, and convert strings to unicode.
- casted = []
- for value, desc in zip(row, cursor.description):
- if value is not None and desc[1] is Database.NUMBER:
- precision, scale = desc[4:6]
- if scale == -127:
- if precision == 0:
- # NUMBER column: decimal-precision floating point
- # This will normally be an integer from a sequence,
- # but it could be a decimal value.
- if '.' in value:
- value = decimal.Decimal(value)
- else:
- value = int(value)
- else:
- # FLOAT column: binary-precision floating point.
- # This comes from FloatField columns.
- value = float(value)
- elif precision > 0:
- # NUMBER(p,s) column: decimal-precision fixed point.
- # This comes from IntField and DecimalField columns.
- if scale == 0:
- value = int(value)
- else:
- value = decimal.Decimal(value)
- elif '.' in value:
- # No type information. This normally comes from a
- # mathematical expression in the SELECT list. Guess int
- # or Decimal based on whether it has a decimal point.
- value = decimal.Decimal(value)
- else:
- value = int(value)
- # datetimes are returned as TIMESTAMP, except the results
- # of "dates" queries, which are returned as DATETIME.
- elif desc[1] in (Database.TIMESTAMP, Database.DATETIME):
- # Confirm that dt is naive before overwriting its tzinfo.
- if settings.USE_TZ and value is not None and timezone.is_naive(value):
- value = value.replace(tzinfo=timezone.utc)
- elif desc[1] in (Database.STRING, Database.FIXED_CHAR,
- Database.LONG_STRING):
- value = to_unicode(value)
- casted.append(value)
- return tuple(casted)
-
-
-def to_unicode(s):
- """
- Convert strings to Unicode objects (and return all other data types
- unchanged).
- """
- if isinstance(s, six.string_types):
- return force_text(s)
- return s
-
-
-def _get_sequence_reset_sql():
- # TODO: colorize this SQL code with style.SQL_KEYWORD(), etc.
- return """
-DECLARE
- table_value integer;
- seq_value integer;
-BEGIN
- SELECT NVL(MAX(%(column)s), 0) INTO table_value FROM %(table)s;
- SELECT NVL(last_number - cache_size, 0) INTO seq_value FROM user_sequences
- WHERE sequence_name = '%(sequence)s';
- WHILE table_value > seq_value LOOP
- SELECT "%(sequence)s".nextval INTO seq_value FROM dual;
- END LOOP;
-END;
-/"""
diff --git a/lib/python2.7/site-packages/django/db/backends/oracle/client.py b/lib/python2.7/site-packages/django/db/backends/oracle/client.py
deleted file mode 100644
index ccc64eb..0000000
--- a/lib/python2.7/site-packages/django/db/backends/oracle/client.py
+++ /dev/null
@@ -1,16 +0,0 @@
-import os
-import sys
-
-from django.db.backends import BaseDatabaseClient
-
-class DatabaseClient(BaseDatabaseClient):
- executable_name = 'sqlplus'
-
- def runshell(self):
- conn_string = self.connection._connect_string()
- args = [self.executable_name, "-L", conn_string]
- if os.name == 'nt':
- sys.exit(os.system(" ".join(args)))
- else:
- os.execvp(self.executable_name, args)
-
diff --git a/lib/python2.7/site-packages/django/db/backends/oracle/compiler.py b/lib/python2.7/site-packages/django/db/backends/oracle/compiler.py
deleted file mode 100644
index bb8ef59..0000000
--- a/lib/python2.7/site-packages/django/db/backends/oracle/compiler.py
+++ /dev/null
@@ -1,72 +0,0 @@
-from django.db.models.sql import compiler
-from django.utils.six.moves import zip_longest
-
-
-class SQLCompiler(compiler.SQLCompiler):
- def resolve_columns(self, row, fields=()):
- # If this query has limit/offset information, then we expect the
- # first column to be an extra "_RN" column that we need to throw
- # away.
- if self.query.high_mark is not None or self.query.low_mark:
- rn_offset = 1
- else:
- rn_offset = 0
- index_start = rn_offset + len(self.query.extra_select)
- values = [self.query.convert_values(v, None, connection=self.connection)
- for v in row[rn_offset:index_start]]
- for value, field in zip_longest(row[index_start:], fields):
- values.append(self.query.convert_values(value, field, connection=self.connection))
- return tuple(values)
-
- def as_sql(self, with_limits=True, with_col_aliases=False):
- """
- Creates the SQL for this query. Returns the SQL string and list
- of parameters. This is overriden from the original Query class
- to handle the additional SQL Oracle requires to emulate LIMIT
- and OFFSET.
-
- If 'with_limits' is False, any limit/offset information is not
- included in the query.
- """
- if with_limits and self.query.low_mark == self.query.high_mark:
- return '', ()
-
- # The `do_offset` flag indicates whether we need to construct
- # the SQL needed to use limit/offset with Oracle.
- do_offset = with_limits and (self.query.high_mark is not None
- or self.query.low_mark)
- if not do_offset:
- sql, params = super(SQLCompiler, self).as_sql(with_limits=False,
- with_col_aliases=with_col_aliases)
- else:
- sql, params = super(SQLCompiler, self).as_sql(with_limits=False,
- with_col_aliases=True)
-
- # Wrap the base query in an outer SELECT * with boundaries on
- # the "_RN" column. This is the canonical way to emulate LIMIT
- # and OFFSET on Oracle.
- high_where = ''
- if self.query.high_mark is not None:
- high_where = 'WHERE ROWNUM <= %d' % (self.query.high_mark,)
- sql = 'SELECT * FROM (SELECT ROWNUM AS "_RN", "_SUB".* FROM (%s) "_SUB" %s) WHERE "_RN" > %d' % (sql, high_where, self.query.low_mark)
-
- return sql, params
-
-
-class SQLInsertCompiler(compiler.SQLInsertCompiler, SQLCompiler):
- pass
-
-class SQLDeleteCompiler(compiler.SQLDeleteCompiler, SQLCompiler):
- pass
-
-class SQLUpdateCompiler(compiler.SQLUpdateCompiler, SQLCompiler):
- pass
-
-class SQLAggregateCompiler(compiler.SQLAggregateCompiler, SQLCompiler):
- pass
-
-class SQLDateCompiler(compiler.SQLDateCompiler, SQLCompiler):
- pass
-
-class SQLDateTimeCompiler(compiler.SQLDateTimeCompiler, SQLCompiler):
- pass
diff --git a/lib/python2.7/site-packages/django/db/backends/oracle/creation.py b/lib/python2.7/site-packages/django/db/backends/oracle/creation.py
deleted file mode 100644
index 2f2f391..0000000
--- a/lib/python2.7/site-packages/django/db/backends/oracle/creation.py
+++ /dev/null
@@ -1,277 +0,0 @@
-import sys
-import time
-
-from django.conf import settings
-from django.db.backends.creation import BaseDatabaseCreation
-from django.utils.six.moves import input
-
-TEST_DATABASE_PREFIX = 'test_'
-PASSWORD = 'Im_a_lumberjack'
-
-class DatabaseCreation(BaseDatabaseCreation):
- # This dictionary maps Field objects to their associated Oracle column
- # types, as strings. Column-type strings can contain format strings; they'll
- # be interpolated against the values of Field.__dict__ before being output.
- # If a column type is set to None, it won't be included in the output.
- #
- # Any format strings starting with "qn_" are quoted before being used in the
- # output (the "qn_" prefix is stripped before the lookup is performed.
-
- data_types = {
- 'AutoField': 'NUMBER(11)',
- 'BinaryField': 'BLOB',
- 'BooleanField': 'NUMBER(1) CHECK (%(qn_column)s IN (0,1))',
- 'CharField': 'NVARCHAR2(%(max_length)s)',
- 'CommaSeparatedIntegerField': 'VARCHAR2(%(max_length)s)',
- 'DateField': 'DATE',
- 'DateTimeField': 'TIMESTAMP',
- 'DecimalField': 'NUMBER(%(max_digits)s, %(decimal_places)s)',
- 'FileField': 'NVARCHAR2(%(max_length)s)',
- 'FilePathField': 'NVARCHAR2(%(max_length)s)',
- 'FloatField': 'DOUBLE PRECISION',
- 'IntegerField': 'NUMBER(11)',
- 'BigIntegerField': 'NUMBER(19)',
- 'IPAddressField': 'VARCHAR2(15)',
- 'GenericIPAddressField': 'VARCHAR2(39)',
- 'NullBooleanField': 'NUMBER(1) CHECK ((%(qn_column)s IN (0,1)) OR (%(qn_column)s IS NULL))',
- 'OneToOneField': 'NUMBER(11)',
- 'PositiveIntegerField': 'NUMBER(11) CHECK (%(qn_column)s >= 0)',
- 'PositiveSmallIntegerField': 'NUMBER(11) CHECK (%(qn_column)s >= 0)',
- 'SlugField': 'NVARCHAR2(%(max_length)s)',
- 'SmallIntegerField': 'NUMBER(11)',
- 'TextField': 'NCLOB',
- 'TimeField': 'TIMESTAMP',
- 'URLField': 'VARCHAR2(%(max_length)s)',
- }
-
- def __init__(self, connection):
- super(DatabaseCreation, self).__init__(connection)
-
- def _create_test_db(self, verbosity=1, autoclobber=False):
- TEST_NAME = self._test_database_name()
- TEST_USER = self._test_database_user()
- TEST_PASSWD = self._test_database_passwd()
- TEST_TBLSPACE = self._test_database_tblspace()
- TEST_TBLSPACE_TMP = self._test_database_tblspace_tmp()
-
- parameters = {
- 'dbname': TEST_NAME,
- 'user': TEST_USER,
- 'password': TEST_PASSWD,
- 'tblspace': TEST_TBLSPACE,
- 'tblspace_temp': TEST_TBLSPACE_TMP,
- }
-
- cursor = self.connection.cursor()
- if self._test_database_create():
- try:
- self._execute_test_db_creation(cursor, parameters, verbosity)
- except Exception as e:
- sys.stderr.write("Got an error creating the test database: %s\n" % e)
- if not autoclobber:
- confirm = input("It appears the test database, %s, already exists. Type 'yes' to delete it, or 'no' to cancel: " % TEST_NAME)
- if autoclobber or confirm == 'yes':
- try:
- if verbosity >= 1:
- print("Destroying old test database '%s'..." % self.connection.alias)
- self._execute_test_db_destruction(cursor, parameters, verbosity)
- self._execute_test_db_creation(cursor, parameters, verbosity)
- except Exception as e:
- sys.stderr.write("Got an error recreating the test database: %s\n" % e)
- sys.exit(2)
- else:
- print("Tests cancelled.")
- sys.exit(1)
-
- if self._test_user_create():
- if verbosity >= 1:
- print("Creating test user...")
- try:
- self._create_test_user(cursor, parameters, verbosity)
- except Exception as e:
- sys.stderr.write("Got an error creating the test user: %s\n" % e)
- if not autoclobber:
- confirm = input("It appears the test user, %s, already exists. Type 'yes' to delete it, or 'no' to cancel: " % TEST_USER)
- if autoclobber or confirm == 'yes':
- try:
- if verbosity >= 1:
- print("Destroying old test user...")
- self._destroy_test_user(cursor, parameters, verbosity)
- if verbosity >= 1:
- print("Creating test user...")
- self._create_test_user(cursor, parameters, verbosity)
- except Exception as e:
- sys.stderr.write("Got an error recreating the test user: %s\n" % e)
- sys.exit(2)
- else:
- print("Tests cancelled.")
- sys.exit(1)
-
- real_settings = settings.DATABASES[self.connection.alias]
- real_settings['SAVED_USER'] = self.connection.settings_dict['SAVED_USER'] = self.connection.settings_dict['USER']
- real_settings['SAVED_PASSWORD'] = self.connection.settings_dict['SAVED_PASSWORD'] = self.connection.settings_dict['PASSWORD']
- real_settings['TEST_USER'] = real_settings['USER'] = self.connection.settings_dict['TEST_USER'] = self.connection.settings_dict['USER'] = TEST_USER
- real_settings['PASSWORD'] = self.connection.settings_dict['PASSWORD'] = TEST_PASSWD
-
- return self.connection.settings_dict['NAME']
-
- def _destroy_test_db(self, test_database_name, verbosity=1):
- """
- Destroy a test database, prompting the user for confirmation if the
- database already exists. Returns the name of the test database created.
- """
- TEST_NAME = self._test_database_name()
- TEST_USER = self._test_database_user()
- TEST_PASSWD = self._test_database_passwd()
- TEST_TBLSPACE = self._test_database_tblspace()
- TEST_TBLSPACE_TMP = self._test_database_tblspace_tmp()
-
- self.connection.settings_dict['USER'] = self.connection.settings_dict['SAVED_USER']
- self.connection.settings_dict['PASSWORD'] = self.connection.settings_dict['SAVED_PASSWORD']
-
- parameters = {
- 'dbname': TEST_NAME,
- 'user': TEST_USER,
- 'password': TEST_PASSWD,
- 'tblspace': TEST_TBLSPACE,
- 'tblspace_temp': TEST_TBLSPACE_TMP,
- }
-
- cursor = self.connection.cursor()
- time.sleep(1) # To avoid "database is being accessed by other users" errors.
- if self._test_user_create():
- if verbosity >= 1:
- print('Destroying test user...')
- self._destroy_test_user(cursor, parameters, verbosity)
- if self._test_database_create():
- if verbosity >= 1:
- print('Destroying test database tables...')
- self._execute_test_db_destruction(cursor, parameters, verbosity)
- self.connection.close()
-
- def _execute_test_db_creation(self, cursor, parameters, verbosity):
- if verbosity >= 2:
- print("_create_test_db(): dbname = %s" % parameters['dbname'])
- statements = [
- """CREATE TABLESPACE %(tblspace)s
- DATAFILE '%(tblspace)s.dbf' SIZE 20M
- REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 200M
- """,
- """CREATE TEMPORARY TABLESPACE %(tblspace_temp)s
- TEMPFILE '%(tblspace_temp)s.dbf' SIZE 20M
- REUSE AUTOEXTEND ON NEXT 10M MAXSIZE 100M
- """,
- ]
- self._execute_statements(cursor, statements, parameters, verbosity)
-
- def _create_test_user(self, cursor, parameters, verbosity):
- if verbosity >= 2:
- print("_create_test_user(): username = %s" % parameters['user'])
- statements = [
- """CREATE USER %(user)s
- IDENTIFIED BY %(password)s
- DEFAULT TABLESPACE %(tblspace)s
- TEMPORARY TABLESPACE %(tblspace_temp)s
- QUOTA UNLIMITED ON %(tblspace)s
- """,
- """GRANT CONNECT, RESOURCE TO %(user)s""",
- ]
- self._execute_statements(cursor, statements, parameters, verbosity)
-
- def _execute_test_db_destruction(self, cursor, parameters, verbosity):
- if verbosity >= 2:
- print("_execute_test_db_destruction(): dbname=%s" % parameters['dbname'])
- statements = [
- 'DROP TABLESPACE %(tblspace)s INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS',
- 'DROP TABLESPACE %(tblspace_temp)s INCLUDING CONTENTS AND DATAFILES CASCADE CONSTRAINTS',
- ]
- self._execute_statements(cursor, statements, parameters, verbosity)
-
- def _destroy_test_user(self, cursor, parameters, verbosity):
- if verbosity >= 2:
- print("_destroy_test_user(): user=%s" % parameters['user'])
- print("Be patient. This can take some time...")
- statements = [
- 'DROP USER %(user)s CASCADE',
- ]
- self._execute_statements(cursor, statements, parameters, verbosity)
-
- def _execute_statements(self, cursor, statements, parameters, verbosity):
- for template in statements:
- stmt = template % parameters
- if verbosity >= 2:
- print(stmt)
- try:
- cursor.execute(stmt)
- except Exception as err:
- sys.stderr.write("Failed (%s)\n" % (err))
- raise
-
- def _test_database_name(self):
- name = TEST_DATABASE_PREFIX + self.connection.settings_dict['NAME']
- try:
- if self.connection.settings_dict['TEST_NAME']:
- name = self.connection.settings_dict['TEST_NAME']
- except AttributeError:
- pass
- return name
-
- def _test_database_create(self):
- return self.connection.settings_dict.get('TEST_CREATE', True)
-
- def _test_user_create(self):
- return self.connection.settings_dict.get('TEST_USER_CREATE', True)
-
- def _test_database_user(self):
- name = TEST_DATABASE_PREFIX + self.connection.settings_dict['USER']
- try:
- if self.connection.settings_dict['TEST_USER']:
- name = self.connection.settings_dict['TEST_USER']
- except KeyError:
- pass
- return name
-
- def _test_database_passwd(self):
- name = PASSWORD
- try:
- if self.connection.settings_dict['TEST_PASSWD']:
- name = self.connection.settings_dict['TEST_PASSWD']
- except KeyError:
- pass
- return name
-
- def _test_database_tblspace(self):
- name = TEST_DATABASE_PREFIX + self.connection.settings_dict['NAME']
- try:
- if self.connection.settings_dict['TEST_TBLSPACE']:
- name = self.connection.settings_dict['TEST_TBLSPACE']
- except KeyError:
- pass
- return name
-
- def _test_database_tblspace_tmp(self):
- name = TEST_DATABASE_PREFIX + self.connection.settings_dict['NAME'] + '_temp'
- try:
- if self.connection.settings_dict['TEST_TBLSPACE_TMP']:
- name = self.connection.settings_dict['TEST_TBLSPACE_TMP']
- except KeyError:
- pass
- return name
-
- def _get_test_db_name(self):
- """
- We need to return the 'production' DB name to get the test DB creation
- machinery to work. This isn't a great deal in this case because DB
- names as handled by Django haven't real counterparts in Oracle.
- """
- return self.connection.settings_dict['NAME']
-
- def test_db_signature(self):
- settings_dict = self.connection.settings_dict
- return (
- settings_dict['HOST'],
- settings_dict['PORT'],
- settings_dict['ENGINE'],
- settings_dict['NAME'],
- self._test_database_user(),
- )
diff --git a/lib/python2.7/site-packages/django/db/backends/oracle/introspection.py b/lib/python2.7/site-packages/django/db/backends/oracle/introspection.py
deleted file mode 100644
index 3ea3a08..0000000
--- a/lib/python2.7/site-packages/django/db/backends/oracle/introspection.py
+++ /dev/null
@@ -1,138 +0,0 @@
-from django.db.backends import BaseDatabaseIntrospection, FieldInfo
-from django.utils.encoding import force_text
-import cx_Oracle
-import re
-
-foreign_key_re = re.compile(r"\sCONSTRAINT `[^`]*` FOREIGN KEY \(`([^`]*)`\) REFERENCES `([^`]*)` \(`([^`]*)`\)")
-
-class DatabaseIntrospection(BaseDatabaseIntrospection):
- # Maps type objects to Django Field types.
- data_types_reverse = {
- cx_Oracle.BLOB: 'BinaryField',
- cx_Oracle.CLOB: 'TextField',
- cx_Oracle.DATETIME: 'DateField',
- cx_Oracle.FIXED_CHAR: 'CharField',
- cx_Oracle.NCLOB: 'TextField',
- cx_Oracle.NUMBER: 'DecimalField',
- cx_Oracle.STRING: 'CharField',
- cx_Oracle.TIMESTAMP: 'DateTimeField',
- }
-
- try:
- data_types_reverse[cx_Oracle.NATIVE_FLOAT] = 'FloatField'
- except AttributeError:
- pass
-
- try:
- data_types_reverse[cx_Oracle.UNICODE] = 'CharField'
- except AttributeError:
- pass
-
- def get_field_type(self, data_type, description):
- # If it's a NUMBER with scale == 0, consider it an IntegerField
- if data_type == cx_Oracle.NUMBER:
- precision, scale = description[4:6]
- if scale == 0:
- if precision > 11:
- return 'BigIntegerField'
- elif precision == 1:
- return 'BooleanField'
- else:
- return 'IntegerField'
- elif scale == -127:
- return 'FloatField'
-
- return super(DatabaseIntrospection, self).get_field_type(data_type, description)
-
- def get_table_list(self, cursor):
- "Returns a list of table names in the current database."
- cursor.execute("SELECT TABLE_NAME FROM USER_TABLES")
- return [row[0].lower() for row in cursor.fetchall()]
-
- def get_table_description(self, cursor, table_name):
- "Returns a description of the table, with the DB-API cursor.description interface."
- cursor.execute("SELECT * FROM %s WHERE ROWNUM < 2" % self.connection.ops.quote_name(table_name))
- description = []
- for desc in cursor.description:
- name = force_text(desc[0]) # cx_Oracle always returns a 'str' on both Python 2 and 3
- name = name % {} # cx_Oracle, for some reason, doubles percent signs.
- description.append(FieldInfo(*(name.lower(),) + desc[1:]))
- return description
-
- def table_name_converter(self, name):
- "Table name comparison is case insensitive under Oracle"
- return name.lower()
-
- def _name_to_index(self, cursor, table_name):
- """
- Returns a dictionary of {field_name: field_index} for the given table.
- Indexes are 0-based.
- """
- return dict([(d[0], i) for i, d in enumerate(self.get_table_description(cursor, table_name))])
-
- def get_relations(self, cursor, table_name):
- """
- Returns a dictionary of {field_index: (field_index_other_table, other_table)}
- representing all relationships to the given table. Indexes are 0-based.
- """
- table_name = table_name.upper()
- cursor.execute("""
- SELECT ta.column_id - 1, tb.table_name, tb.column_id - 1
- FROM user_constraints, USER_CONS_COLUMNS ca, USER_CONS_COLUMNS cb,
- user_tab_cols ta, user_tab_cols tb
- WHERE user_constraints.table_name = %s AND
- ta.table_name = user_constraints.table_name AND
- ta.column_name = ca.column_name AND
- ca.table_name = ta.table_name AND
- user_constraints.constraint_name = ca.constraint_name AND
- user_constraints.r_constraint_name = cb.constraint_name AND
- cb.table_name = tb.table_name AND
- cb.column_name = tb.column_name AND
- ca.position = cb.position""", [table_name])
-
- relations = {}
- for row in cursor.fetchall():
- relations[row[0]] = (row[2], row[1].lower())
- return relations
-
- def get_key_columns(self, cursor, table_name):
- cursor.execute("""
- SELECT ccol.column_name, rcol.table_name AS referenced_table, rcol.column_name AS referenced_column
- FROM user_constraints c
- JOIN user_cons_columns ccol
- ON ccol.constraint_name = c.constraint_name
- JOIN user_cons_columns rcol
- ON rcol.constraint_name = c.r_constraint_name
- WHERE c.table_name = %s AND c.constraint_type = 'R'""" , [table_name.upper()])
- return [tuple(cell.lower() for cell in row)
- for row in cursor.fetchall()]
-
- def get_indexes(self, cursor, table_name):
- sql = """
- SELECT LOWER(uic1.column_name) AS column_name,
- CASE user_constraints.constraint_type
- WHEN 'P' THEN 1 ELSE 0
- END AS is_primary_key,
- CASE user_indexes.uniqueness
- WHEN 'UNIQUE' THEN 1 ELSE 0
- END AS is_unique
- FROM user_constraints, user_indexes, user_ind_columns uic1
- WHERE user_constraints.constraint_type (+) = 'P'
- AND user_constraints.index_name (+) = uic1.index_name
- AND user_indexes.uniqueness (+) = 'UNIQUE'
- AND user_indexes.index_name (+) = uic1.index_name
- AND uic1.table_name = UPPER(%s)
- AND uic1.column_position = 1
- AND NOT EXISTS (
- SELECT 1
- FROM user_ind_columns uic2
- WHERE uic2.index_name = uic1.index_name
- AND uic2.column_position = 2
- )
- """
- cursor.execute(sql, [table_name])
- indexes = {}
- for row in cursor.fetchall():
- indexes[row[0]] = {'primary_key': bool(row[1]),
- 'unique': bool(row[2])}
- return indexes
diff --git a/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/__init__.py b/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py b/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py
deleted file mode 100644
index 9aa8b47..0000000
--- a/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py
+++ /dev/null
@@ -1,184 +0,0 @@
-"""
-PostgreSQL database backend for Django.
-
-Requires psycopg 2: http://initd.org/projects/psycopg2
-"""
-
-import sys
-
-from django.db.backends import *
-from django.db.backends.postgresql_psycopg2.operations import DatabaseOperations
-from django.db.backends.postgresql_psycopg2.client import DatabaseClient
-from django.db.backends.postgresql_psycopg2.creation import DatabaseCreation
-from django.db.backends.postgresql_psycopg2.version import get_version
-from django.db.backends.postgresql_psycopg2.introspection import DatabaseIntrospection
-from django.utils.encoding import force_str
-from django.utils.functional import cached_property
-from django.utils.safestring import SafeText, SafeBytes
-from django.utils.timezone import utc
-
-try:
- import psycopg2 as Database
- import psycopg2.extensions
-except ImportError as e:
- from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured("Error loading psycopg2 module: %s" % e)
-
-DatabaseError = Database.DatabaseError
-IntegrityError = Database.IntegrityError
-
-psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
-psycopg2.extensions.register_adapter(SafeBytes, psycopg2.extensions.QuotedString)
-psycopg2.extensions.register_adapter(SafeText, psycopg2.extensions.QuotedString)
-
-def utc_tzinfo_factory(offset):
- if offset != 0:
- raise AssertionError("database connection isn't set to UTC")
- return utc
-
-class DatabaseFeatures(BaseDatabaseFeatures):
- needs_datetime_string_cast = False
- can_return_id_from_insert = True
- requires_rollback_on_dirty_transaction = True
- has_real_datatype = True
- can_defer_constraint_checks = True
- has_select_for_update = True
- has_select_for_update_nowait = True
- has_bulk_insert = True
- uses_savepoints = True
- supports_tablespaces = True
- supports_transactions = True
- can_distinct_on_fields = True
-
-class DatabaseWrapper(BaseDatabaseWrapper):
- vendor = 'postgresql'
- operators = {
- 'exact': '= %s',
- 'iexact': '= UPPER(%s)',
- 'contains': 'LIKE %s',
- 'icontains': 'LIKE UPPER(%s)',
- 'regex': '~ %s',
- 'iregex': '~* %s',
- 'gt': '> %s',
- 'gte': '>= %s',
- 'lt': '< %s',
- 'lte': '<= %s',
- 'startswith': 'LIKE %s',
- 'endswith': 'LIKE %s',
- 'istartswith': 'LIKE UPPER(%s)',
- 'iendswith': 'LIKE UPPER(%s)',
- }
-
- Database = Database
-
- def __init__(self, *args, **kwargs):
- super(DatabaseWrapper, self).__init__(*args, **kwargs)
-
- opts = self.settings_dict["OPTIONS"]
- RC = psycopg2.extensions.ISOLATION_LEVEL_READ_COMMITTED
- self.isolation_level = opts.get('isolation_level', RC)
-
- self.features = DatabaseFeatures(self)
- self.ops = DatabaseOperations(self)
- self.client = DatabaseClient(self)
- self.creation = DatabaseCreation(self)
- self.introspection = DatabaseIntrospection(self)
- self.validation = BaseDatabaseValidation(self)
-
- def get_connection_params(self):
- settings_dict = self.settings_dict
- if not settings_dict['NAME']:
- from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured(
- "settings.DATABASES is improperly configured. "
- "Please supply the NAME value.")
- conn_params = {
- 'database': settings_dict['NAME'],
- }
- conn_params.update(settings_dict['OPTIONS'])
- if 'autocommit' in conn_params:
- del conn_params['autocommit']
- if 'isolation_level' in conn_params:
- del conn_params['isolation_level']
- if settings_dict['USER']:
- conn_params['user'] = settings_dict['USER']
- if settings_dict['PASSWORD']:
- conn_params['password'] = force_str(settings_dict['PASSWORD'])
- if settings_dict['HOST']:
- conn_params['host'] = settings_dict['HOST']
- if settings_dict['PORT']:
- conn_params['port'] = settings_dict['PORT']
- return conn_params
-
- def get_new_connection(self, conn_params):
- return Database.connect(**conn_params)
-
- def init_connection_state(self):
- settings_dict = self.settings_dict
- self.connection.set_client_encoding('UTF8')
- tz = 'UTC' if settings.USE_TZ else settings_dict.get('TIME_ZONE')
- if tz:
- try:
- get_parameter_status = self.connection.get_parameter_status
- except AttributeError:
- # psycopg2 < 2.0.12 doesn't have get_parameter_status
- conn_tz = None
- else:
- conn_tz = get_parameter_status('TimeZone')
-
- if conn_tz != tz:
- self.connection.cursor().execute(
- self.ops.set_time_zone_sql(), [tz])
- # Commit after setting the time zone (see #17062)
- self.connection.commit()
- self.connection.set_isolation_level(self.isolation_level)
-
- def create_cursor(self):
- cursor = self.connection.cursor()
- cursor.tzinfo_factory = utc_tzinfo_factory if settings.USE_TZ else None
- return cursor
-
- def _set_isolation_level(self, isolation_level):
- assert isolation_level in range(1, 5) # Use set_autocommit for level = 0
- if self.psycopg2_version >= (2, 4, 2):
- self.connection.set_session(isolation_level=isolation_level)
- else:
- self.connection.set_isolation_level(isolation_level)
-
- def _set_autocommit(self, autocommit):
- with self.wrap_database_errors:
- if self.psycopg2_version >= (2, 4, 2):
- self.connection.autocommit = autocommit
- else:
- if autocommit:
- level = psycopg2.extensions.ISOLATION_LEVEL_AUTOCOMMIT
- else:
- level = self.isolation_level
- self.connection.set_isolation_level(level)
-
- def check_constraints(self, table_names=None):
- """
- To check constraints, we set constraints to immediate. Then, when, we're done we must ensure they
- are returned to deferred.
- """
- self.cursor().execute('SET CONSTRAINTS ALL IMMEDIATE')
- self.cursor().execute('SET CONSTRAINTS ALL DEFERRED')
-
- def is_usable(self):
- try:
- # Use a psycopg cursor directly, bypassing Django's utilities.
- self.connection.cursor().execute("SELECT 1")
- except Database.Error:
- return False
- else:
- return True
-
- @cached_property
- def psycopg2_version(self):
- version = psycopg2.__version__.split(' ', 1)[0]
- return tuple(int(v) for v in version.split('.'))
-
- @cached_property
- def pg_version(self):
- with self.temporary_connection():
- return get_version(self.connection)
diff --git a/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/client.py b/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/client.py
deleted file mode 100644
index a5c0296..0000000
--- a/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/client.py
+++ /dev/null
@@ -1,23 +0,0 @@
-import os
-import sys
-
-from django.db.backends import BaseDatabaseClient
-
-class DatabaseClient(BaseDatabaseClient):
- executable_name = 'psql'
-
- def runshell(self):
- settings_dict = self.connection.settings_dict
- args = [self.executable_name]
- if settings_dict['USER']:
- args += ["-U", settings_dict['USER']]
- if settings_dict['HOST']:
- args.extend(["-h", settings_dict['HOST']])
- if settings_dict['PORT']:
- args.extend(["-p", str(settings_dict['PORT'])])
- args += [settings_dict['NAME']]
- if os.name == 'nt':
- sys.exit(os.system(" ".join(args)))
- else:
- os.execvp(self.executable_name, args)
-
diff --git a/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/creation.py b/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/creation.py
deleted file mode 100644
index d4260e0..0000000
--- a/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/creation.py
+++ /dev/null
@@ -1,77 +0,0 @@
-from django.db.backends.creation import BaseDatabaseCreation
-from django.db.backends.util import truncate_name
-
-
-class DatabaseCreation(BaseDatabaseCreation):
- # This dictionary maps Field objects to their associated PostgreSQL column
- # types, as strings. Column-type strings can contain format strings; they'll
- # be interpolated against the values of Field.__dict__ before being output.
- # If a column type is set to None, it won't be included in the output.
- data_types = {
- 'AutoField': 'serial',
- 'BinaryField': 'bytea',
- 'BooleanField': 'boolean',
- 'CharField': 'varchar(%(max_length)s)',
- 'CommaSeparatedIntegerField': 'varchar(%(max_length)s)',
- 'DateField': 'date',
- 'DateTimeField': 'timestamp with time zone',
- 'DecimalField': 'numeric(%(max_digits)s, %(decimal_places)s)',
- 'FileField': 'varchar(%(max_length)s)',
- 'FilePathField': 'varchar(%(max_length)s)',
- 'FloatField': 'double precision',
- 'IntegerField': 'integer',
- 'BigIntegerField': 'bigint',
- 'IPAddressField': 'inet',
- 'GenericIPAddressField': 'inet',
- 'NullBooleanField': 'boolean',
- 'OneToOneField': 'integer',
- 'PositiveIntegerField': 'integer CHECK ("%(column)s" >= 0)',
- 'PositiveSmallIntegerField': 'smallint CHECK ("%(column)s" >= 0)',
- 'SlugField': 'varchar(%(max_length)s)',
- 'SmallIntegerField': 'smallint',
- 'TextField': 'text',
- 'TimeField': 'time',
- }
-
- def sql_table_creation_suffix(self):
- assert self.connection.settings_dict['TEST_COLLATION'] is None, "PostgreSQL does not support collation setting at database creation time."
- if self.connection.settings_dict['TEST_CHARSET']:
- return "WITH ENCODING '%s'" % self.connection.settings_dict['TEST_CHARSET']
- return ''
-
- def sql_indexes_for_field(self, model, f, style):
- output = []
- if f.db_index or f.unique:
- qn = self.connection.ops.quote_name
- db_table = model._meta.db_table
- tablespace = f.db_tablespace or model._meta.db_tablespace
- if tablespace:
- tablespace_sql = self.connection.ops.tablespace_sql(tablespace)
- if tablespace_sql:
- tablespace_sql = ' ' + tablespace_sql
- else:
- tablespace_sql = ''
-
- def get_index_sql(index_name, opclass=''):
- return (style.SQL_KEYWORD('CREATE INDEX') + ' ' +
- style.SQL_TABLE(qn(truncate_name(index_name,self.connection.ops.max_name_length()))) + ' ' +
- style.SQL_KEYWORD('ON') + ' ' +
- style.SQL_TABLE(qn(db_table)) + ' ' +
- "(%s%s)" % (style.SQL_FIELD(qn(f.column)), opclass) +
- "%s;" % tablespace_sql)
-
- if not f.unique:
- output = [get_index_sql('%s_%s' % (db_table, f.column))]
-
- # Fields with database column types of `varchar` and `text` need
- # a second index that specifies their operator class, which is
- # needed when performing correct LIKE queries outside the
- # C locale. See #12234.
- db_type = f.db_type(connection=self.connection)
- if db_type.startswith('varchar'):
- output.append(get_index_sql('%s_%s_like' % (db_table, f.column),
- ' varchar_pattern_ops'))
- elif db_type.startswith('text'):
- output.append(get_index_sql('%s_%s_like' % (db_table, f.column),
- ' text_pattern_ops'))
- return output
diff --git a/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/introspection.py b/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/introspection.py
deleted file mode 100644
index ea4e3e1..0000000
--- a/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/introspection.py
+++ /dev/null
@@ -1,111 +0,0 @@
-from __future__ import unicode_literals
-
-from django.db.backends import BaseDatabaseIntrospection, FieldInfo
-from django.utils.encoding import force_text
-
-
-class DatabaseIntrospection(BaseDatabaseIntrospection):
- # Maps type codes to Django Field types.
- data_types_reverse = {
- 16: 'BooleanField',
- 17: 'BinaryField',
- 20: 'BigIntegerField',
- 21: 'SmallIntegerField',
- 23: 'IntegerField',
- 25: 'TextField',
- 700: 'FloatField',
- 701: 'FloatField',
- 869: 'GenericIPAddressField',
- 1042: 'CharField', # blank-padded
- 1043: 'CharField',
- 1082: 'DateField',
- 1083: 'TimeField',
- 1114: 'DateTimeField',
- 1184: 'DateTimeField',
- 1266: 'TimeField',
- 1700: 'DecimalField',
- }
-
- ignored_tables = []
-
- def get_table_list(self, cursor):
- "Returns a list of table names in the current database."
- cursor.execute("""
- SELECT c.relname
- FROM pg_catalog.pg_class c
- LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
- WHERE c.relkind IN ('r', 'v', '')
- AND n.nspname NOT IN ('pg_catalog', 'pg_toast')
- AND pg_catalog.pg_table_is_visible(c.oid)""")
- return [row[0] for row in cursor.fetchall() if row[0] not in self.ignored_tables]
-
- def get_table_description(self, cursor, table_name):
- "Returns a description of the table, with the DB-API cursor.description interface."
- # As cursor.description does not return reliably the nullable property,
- # we have to query the information_schema (#7783)
- cursor.execute("""
- SELECT column_name, is_nullable
- FROM information_schema.columns
- WHERE table_name = %s""", [table_name])
- null_map = dict(cursor.fetchall())
- cursor.execute("SELECT * FROM %s LIMIT 1" % self.connection.ops.quote_name(table_name))
- return [FieldInfo(*((force_text(line[0]),) + line[1:6] + (null_map[force_text(line[0])]=='YES',)))
- for line in cursor.description]
-
- def get_relations(self, cursor, table_name):
- """
- Returns a dictionary of {field_index: (field_index_other_table, other_table)}
- representing all relationships to the given table. Indexes are 0-based.
- """
- cursor.execute("""
- SELECT con.conkey, con.confkey, c2.relname
- FROM pg_constraint con, pg_class c1, pg_class c2
- WHERE c1.oid = con.conrelid
- AND c2.oid = con.confrelid
- AND c1.relname = %s
- AND con.contype = 'f'""", [table_name])
- relations = {}
- for row in cursor.fetchall():
- # row[0] and row[1] are single-item lists, so grab the single item.
- relations[row[0][0] - 1] = (row[1][0] - 1, row[2])
- return relations
-
- def get_key_columns(self, cursor, table_name):
- key_columns = []
- cursor.execute("""
- SELECT kcu.column_name, ccu.table_name AS referenced_table, ccu.column_name AS referenced_column
- FROM information_schema.constraint_column_usage ccu
- LEFT JOIN information_schema.key_column_usage kcu
- ON ccu.constraint_catalog = kcu.constraint_catalog
- AND ccu.constraint_schema = kcu.constraint_schema
- AND ccu.constraint_name = kcu.constraint_name
- LEFT JOIN information_schema.table_constraints tc
- ON ccu.constraint_catalog = tc.constraint_catalog
- AND ccu.constraint_schema = tc.constraint_schema
- AND ccu.constraint_name = tc.constraint_name
- WHERE kcu.table_name = %s AND tc.constraint_type = 'FOREIGN KEY'""" , [table_name])
- key_columns.extend(cursor.fetchall())
- return key_columns
-
- def get_indexes(self, cursor, table_name):
- # This query retrieves each index on the given table, including the
- # first associated field name
- cursor.execute("""
- SELECT attr.attname, idx.indkey, idx.indisunique, idx.indisprimary
- FROM pg_catalog.pg_class c, pg_catalog.pg_class c2,
- pg_catalog.pg_index idx, pg_catalog.pg_attribute attr
- WHERE c.oid = idx.indrelid
- AND idx.indexrelid = c2.oid
- AND attr.attrelid = c.oid
- AND attr.attnum = idx.indkey[0]
- AND c.relname = %s""", [table_name])
- indexes = {}
- for row in cursor.fetchall():
- # row[1] (idx.indkey) is stored in the DB as an array. It comes out as
- # a string of space-separated integers. This designates the field
- # indexes (1-based) of the fields that have indexes on the table.
- # Here, we skip any indexes across multiple fields.
- if ' ' in row[1]:
- continue
- indexes[row[0]] = {'primary_key': row[3], 'unique': row[2]}
- return indexes
diff --git a/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/operations.py b/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/operations.py
deleted file mode 100644
index c5aab84..0000000
--- a/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/operations.py
+++ /dev/null
@@ -1,222 +0,0 @@
-from __future__ import unicode_literals
-
-from django.conf import settings
-from django.db.backends import BaseDatabaseOperations
-
-
-class DatabaseOperations(BaseDatabaseOperations):
- def __init__(self, connection):
- super(DatabaseOperations, self).__init__(connection)
-
- def date_extract_sql(self, lookup_type, field_name):
- # http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT
- if lookup_type == 'week_day':
- # For consistency across backends, we return Sunday=1, Saturday=7.
- return "EXTRACT('dow' FROM %s) + 1" % field_name
- else:
- return "EXTRACT('%s' FROM %s)" % (lookup_type, field_name)
-
- def date_interval_sql(self, sql, connector, timedelta):
- """
- implements the interval functionality for expressions
- format for Postgres:
- (datefield + interval '3 days 200 seconds 5 microseconds')
- """
- modifiers = []
- if timedelta.days:
- modifiers.append('%s days' % timedelta.days)
- if timedelta.seconds:
- modifiers.append('%s seconds' % timedelta.seconds)
- if timedelta.microseconds:
- modifiers.append('%s microseconds' % timedelta.microseconds)
- mods = ' '.join(modifiers)
- conn = ' %s ' % connector
- return '(%s)' % conn.join([sql, 'interval \'%s\'' % mods])
-
- def date_trunc_sql(self, lookup_type, field_name):
- # http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC
- return "DATE_TRUNC('%s', %s)" % (lookup_type, field_name)
-
- def datetime_extract_sql(self, lookup_type, field_name, tzname):
- if settings.USE_TZ:
- field_name = "%s AT TIME ZONE %%s" % field_name
- params = [tzname]
- else:
- params = []
- # http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT
- if lookup_type == 'week_day':
- # For consistency across backends, we return Sunday=1, Saturday=7.
- sql = "EXTRACT('dow' FROM %s) + 1" % field_name
- else:
- sql = "EXTRACT('%s' FROM %s)" % (lookup_type, field_name)
- return sql, params
-
- def datetime_trunc_sql(self, lookup_type, field_name, tzname):
- if settings.USE_TZ:
- field_name = "%s AT TIME ZONE %%s" % field_name
- params = [tzname]
- else:
- params = []
- # http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC
- sql = "DATE_TRUNC('%s', %s)" % (lookup_type, field_name)
- return sql, params
-
- def deferrable_sql(self):
- return " DEFERRABLE INITIALLY DEFERRED"
-
- def lookup_cast(self, lookup_type):
- lookup = '%s'
-
- # Cast text lookups to text to allow things like filter(x__contains=4)
- if lookup_type in ('iexact', 'contains', 'icontains', 'startswith',
- 'istartswith', 'endswith', 'iendswith', 'regex', 'iregex'):
- lookup = "%s::text"
-
- # Use UPPER(x) for case-insensitive lookups; it's faster.
- if lookup_type in ('iexact', 'icontains', 'istartswith', 'iendswith'):
- lookup = 'UPPER(%s)' % lookup
-
- return lookup
-
- def field_cast_sql(self, db_type, internal_type):
- if internal_type == "GenericIPAddressField" or internal_type == "IPAddressField":
- return 'HOST(%s)'
- return '%s'
-
- def last_insert_id(self, cursor, table_name, pk_name):
- # Use pg_get_serial_sequence to get the underlying sequence name
- # from the table name and column name (available since PostgreSQL 8)
- cursor.execute("SELECT CURRVAL(pg_get_serial_sequence('%s','%s'))" % (
- self.quote_name(table_name), pk_name))
- return cursor.fetchone()[0]
-
- def no_limit_value(self):
- return None
-
- def quote_name(self, name):
- if name.startswith('"') and name.endswith('"'):
- return name # Quoting once is enough.
- return '"%s"' % name
-
- def set_time_zone_sql(self):
- return "SET TIME ZONE %s"
-
- def sql_flush(self, style, tables, sequences, allow_cascade=False):
- if tables:
- # Perform a single SQL 'TRUNCATE x, y, z...;' statement. It allows
- # us to truncate tables referenced by a foreign key in any other
- # table.
- tables_sql = ', '.join(
- style.SQL_FIELD(self.quote_name(table)) for table in tables)
- if allow_cascade:
- sql = ['%s %s %s;' % (
- style.SQL_KEYWORD('TRUNCATE'),
- tables_sql,
- style.SQL_KEYWORD('CASCADE'),
- )]
- else:
- sql = ['%s %s;' % (
- style.SQL_KEYWORD('TRUNCATE'),
- tables_sql,
- )]
- sql.extend(self.sequence_reset_by_name_sql(style, sequences))
- return sql
- else:
- return []
-
- def sequence_reset_by_name_sql(self, style, sequences):
- # 'ALTER SEQUENCE sequence_name RESTART WITH 1;'... style SQL statements
- # to reset sequence indices
- sql = []
- for sequence_info in sequences:
- table_name = sequence_info['table']
- column_name = sequence_info['column']
- if not (column_name and len(column_name) > 0):
- # This will be the case if it's an m2m using an autogenerated
- # intermediate table (see BaseDatabaseIntrospection.sequence_list)
- column_name = 'id'
- sql.append("%s setval(pg_get_serial_sequence('%s','%s'), 1, false);" % \
- (style.SQL_KEYWORD('SELECT'),
- style.SQL_TABLE(self.quote_name(table_name)),
- style.SQL_FIELD(column_name))
- )
- return sql
-
- def tablespace_sql(self, tablespace, inline=False):
- if inline:
- return "USING INDEX TABLESPACE %s" % self.quote_name(tablespace)
- else:
- return "TABLESPACE %s" % self.quote_name(tablespace)
-
- def sequence_reset_sql(self, style, model_list):
- from django.db import models
- output = []
- qn = self.quote_name
- for model in model_list:
- # Use `coalesce` to set the sequence for each model to the max pk value if there are records,
- # or 1 if there are none. Set the `is_called` property (the third argument to `setval`) to true
- # if there are records (as the max pk value is already in use), otherwise set it to false.
- # Use pg_get_serial_sequence to get the underlying sequence name from the table name
- # and column name (available since PostgreSQL 8)
-
- for f in model._meta.local_fields:
- if isinstance(f, models.AutoField):
- output.append("%s setval(pg_get_serial_sequence('%s','%s'), coalesce(max(%s), 1), max(%s) %s null) %s %s;" % \
- (style.SQL_KEYWORD('SELECT'),
- style.SQL_TABLE(qn(model._meta.db_table)),
- style.SQL_FIELD(f.column),
- style.SQL_FIELD(qn(f.column)),
- style.SQL_FIELD(qn(f.column)),
- style.SQL_KEYWORD('IS NOT'),
- style.SQL_KEYWORD('FROM'),
- style.SQL_TABLE(qn(model._meta.db_table))))
- break # Only one AutoField is allowed per model, so don't bother continuing.
- for f in model._meta.many_to_many:
- if not f.rel.through:
- output.append("%s setval(pg_get_serial_sequence('%s','%s'), coalesce(max(%s), 1), max(%s) %s null) %s %s;" % \
- (style.SQL_KEYWORD('SELECT'),
- style.SQL_TABLE(qn(f.m2m_db_table())),
- style.SQL_FIELD('id'),
- style.SQL_FIELD(qn('id')),
- style.SQL_FIELD(qn('id')),
- style.SQL_KEYWORD('IS NOT'),
- style.SQL_KEYWORD('FROM'),
- style.SQL_TABLE(qn(f.m2m_db_table()))))
- return output
-
- def prep_for_iexact_query(self, x):
- return x
-
- def max_name_length(self):
- """
- Returns the maximum length of an identifier.
-
- Note that the maximum length of an identifier is 63 by default, but can
- be changed by recompiling PostgreSQL after editing the NAMEDATALEN
- macro in src/include/pg_config_manual.h .
-
- This implementation simply returns 63, but can easily be overridden by a
- custom database backend that inherits most of its behavior from this one.
- """
-
- return 63
-
- def distinct_sql(self, fields):
- if fields:
- return 'DISTINCT ON (%s)' % ', '.join(fields)
- else:
- return 'DISTINCT'
-
- def last_executed_query(self, cursor, sql, params):
- # http://initd.org/psycopg/docs/cursor.html#cursor.query
- # The query attribute is a Psycopg extension to the DB API 2.0.
- if cursor.query is not None:
- return cursor.query.decode('utf-8')
- return None
-
- def return_insert_id(self):
- return "RETURNING %s", ()
-
- def bulk_insert_sql(self, fields, num_values):
- items_sql = "(%s)" % ", ".join(["%s"] * len(fields))
- return "VALUES " + ", ".join([items_sql] * num_values)
diff --git a/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/version.py b/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/version.py
deleted file mode 100644
index 8ef5167..0000000
--- a/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/version.py
+++ /dev/null
@@ -1,43 +0,0 @@
-"""
-Extracts the version of the PostgreSQL server.
-"""
-
-import re
-
-# This reg-exp is intentionally fairly flexible here.
-# Needs to be able to handle stuff like:
-# PostgreSQL 8.3.6
-# EnterpriseDB 8.3
-# PostgreSQL 8.3 beta4
-# PostgreSQL 8.4beta1
-VERSION_RE = re.compile(r'\S+ (\d+)\.(\d+)\.?(\d+)?')
-
-
-def _parse_version(text):
- "Internal parsing method. Factored out for testing purposes."
- major, major2, minor = VERSION_RE.search(text).groups()
- try:
- return int(major) * 10000 + int(major2) * 100 + int(minor)
- except (ValueError, TypeError):
- return int(major) * 10000 + int(major2) * 100
-
-def get_version(connection):
- """
- Returns an integer representing the major, minor and revision number of the
- server. Format is the one used for the return value of libpq
- PQServerVersion()/``server_version`` connection attribute (available in
- newer psycopg2 versions.)
-
- For example, 80304 for 8.3.4. The last two digits will be 00 in the case of
- releases (e.g., 80400 for 'PostgreSQL 8.4') or in the case of beta and
- prereleases (e.g. 90100 for 'PostgreSQL 9.1beta2').
-
- PQServerVersion()/``server_version`` doesn't execute a query so try that
- first, then fallback to a ``SELECT version()`` query.
- """
- if hasattr(connection, 'server_version'):
- return connection.server_version
- else:
- cursor = connection.cursor()
- cursor.execute("SELECT version()")
- return _parse_version(cursor.fetchone()[0])
diff --git a/lib/python2.7/site-packages/django/db/backends/signals.py b/lib/python2.7/site-packages/django/db/backends/signals.py
deleted file mode 100644
index c16a63f..0000000
--- a/lib/python2.7/site-packages/django/db/backends/signals.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.dispatch import Signal
-
-connection_created = Signal(providing_args=["connection"])
diff --git a/lib/python2.7/site-packages/django/db/backends/sqlite3/__init__.py b/lib/python2.7/site-packages/django/db/backends/sqlite3/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/db/backends/sqlite3/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py b/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py
deleted file mode 100644
index a219178..0000000
--- a/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py
+++ /dev/null
@@ -1,533 +0,0 @@
-"""
-SQLite3 backend for django.
-
-Works with either the pysqlite2 module or the sqlite3 module in the
-standard library.
-"""
-from __future__ import unicode_literals
-
-import datetime
-import decimal
-import warnings
-import re
-
-from django.db import utils
-from django.db.backends import *
-from django.db.backends.sqlite3.client import DatabaseClient
-from django.db.backends.sqlite3.creation import DatabaseCreation
-from django.db.backends.sqlite3.introspection import DatabaseIntrospection
-from django.db.models import fields
-from django.db.models.sql import aggregates
-from django.utils.dateparse import parse_date, parse_datetime, parse_time
-from django.utils.encoding import force_text
-from django.utils.functional import cached_property
-from django.utils.safestring import SafeBytes
-from django.utils import six
-from django.utils import timezone
-
-try:
- try:
- from pysqlite2 import dbapi2 as Database
- except ImportError:
- from sqlite3 import dbapi2 as Database
-except ImportError as exc:
- from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured("Error loading either pysqlite2 or sqlite3 modules (tried in that order): %s" % exc)
-
-try:
- import pytz
-except ImportError:
- pytz = None
-
-DatabaseError = Database.DatabaseError
-IntegrityError = Database.IntegrityError
-
-def parse_datetime_with_timezone_support(value):
- dt = parse_datetime(value)
- # Confirm that dt is naive before overwriting its tzinfo.
- if dt is not None and settings.USE_TZ and timezone.is_naive(dt):
- dt = dt.replace(tzinfo=timezone.utc)
- return dt
-
-def adapt_datetime_with_timezone_support(value):
- # Equivalent to DateTimeField.get_db_prep_value. Used only by raw SQL.
- if settings.USE_TZ:
- if timezone.is_naive(value):
- warnings.warn("SQLite received a naive datetime (%s)"
- " while time zone support is active." % value,
- RuntimeWarning)
- default_timezone = timezone.get_default_timezone()
- value = timezone.make_aware(value, default_timezone)
- value = value.astimezone(timezone.utc).replace(tzinfo=None)
- return value.isoformat(str(" "))
-
-def decoder(conv_func):
- """ The Python sqlite3 interface returns always byte strings.
- This function converts the received value to a regular string before
- passing it to the receiver function.
- """
- return lambda s: conv_func(s.decode('utf-8'))
-
-Database.register_converter(str("bool"), decoder(lambda s: s == '1'))
-Database.register_converter(str("time"), decoder(parse_time))
-Database.register_converter(str("date"), decoder(parse_date))
-Database.register_converter(str("datetime"), decoder(parse_datetime_with_timezone_support))
-Database.register_converter(str("timestamp"), decoder(parse_datetime_with_timezone_support))
-Database.register_converter(str("TIMESTAMP"), decoder(parse_datetime_with_timezone_support))
-Database.register_converter(str("decimal"), decoder(util.typecast_decimal))
-
-Database.register_adapter(datetime.datetime, adapt_datetime_with_timezone_support)
-Database.register_adapter(decimal.Decimal, util.rev_typecast_decimal)
-if six.PY2 and Database.version_info >= (2, 4, 1):
- # Starting in 2.4.1, the str type is not accepted anymore, therefore,
- # we convert all str objects to Unicode
- # As registering a adapter for a primitive type causes a small
- # slow-down, this adapter is only registered for sqlite3 versions
- # needing it (Python 2.6 and up).
- Database.register_adapter(str, lambda s: s.decode('utf-8'))
- Database.register_adapter(SafeBytes, lambda s: s.decode('utf-8'))
-
-class DatabaseFeatures(BaseDatabaseFeatures):
- # SQLite cannot handle us only partially reading from a cursor's result set
- # and then writing the same rows to the database in another cursor. This
- # setting ensures we always read result sets fully into memory all in one
- # go.
- can_use_chunked_reads = False
- test_db_allows_multiple_connections = False
- supports_unspecified_pk = True
- supports_timezones = False
- supports_1000_query_parameters = False
- supports_mixed_date_datetime_comparisons = False
- has_bulk_insert = True
- can_combine_inserts_with_and_without_auto_increment_pk = False
- autocommits_when_autocommit_is_off = True
- atomic_transactions = False
- supports_paramstyle_pyformat = False
-
- @cached_property
- def uses_savepoints(self):
- return Database.sqlite_version_info >= (3, 6, 8)
-
- @cached_property
- def supports_stddev(self):
- """Confirm support for STDDEV and related stats functions
-
- SQLite supports STDDEV as an extension package; so
- connection.ops.check_aggregate_support() can't unilaterally
- rule out support for STDDEV. We need to manually check
- whether the call works.
- """
- cursor = self.connection.cursor()
- cursor.execute('CREATE TABLE STDDEV_TEST (X INT)')
- try:
- cursor.execute('SELECT STDDEV(*) FROM STDDEV_TEST')
- has_support = True
- except utils.DatabaseError:
- has_support = False
- cursor.execute('DROP TABLE STDDEV_TEST')
- return has_support
-
- @cached_property
- def has_zoneinfo_database(self):
- return pytz is not None
-
-class DatabaseOperations(BaseDatabaseOperations):
- def bulk_batch_size(self, fields, objs):
- """
- SQLite has a compile-time default (SQLITE_LIMIT_VARIABLE_NUMBER) of
- 999 variables per query.
-
- If there is just single field to insert, then we can hit another
- limit, SQLITE_MAX_COMPOUND_SELECT which defaults to 500.
- """
- limit = 999 if len(fields) > 1 else 500
- return (limit // len(fields)) if len(fields) > 0 else len(objs)
-
- def check_aggregate_support(self, aggregate):
- bad_fields = (fields.DateField, fields.DateTimeField, fields.TimeField)
- bad_aggregates = (aggregates.Sum, aggregates.Avg,
- aggregates.Variance, aggregates.StdDev)
- if (isinstance(aggregate.source, bad_fields) and
- isinstance(aggregate, bad_aggregates)):
- raise NotImplementedError(
- 'You cannot use Sum, Avg, StdDev and Variance aggregations '
- 'on date/time fields in sqlite3 '
- 'since date/time is saved as text.')
-
- def date_extract_sql(self, lookup_type, field_name):
- # sqlite doesn't support extract, so we fake it with the user-defined
- # function django_date_extract that's registered in connect(). Note that
- # single quotes are used because this is a string (and could otherwise
- # cause a collision with a field name).
- return "django_date_extract('%s', %s)" % (lookup_type.lower(), field_name)
-
- def date_interval_sql(self, sql, connector, timedelta):
- # It would be more straightforward if we could use the sqlite strftime
- # function, but it does not allow for keeping six digits of fractional
- # second information, nor does it allow for formatting date and datetime
- # values differently. So instead we register our own function that
- # formats the datetime combined with the delta in a manner suitable
- # for comparisons.
- return 'django_format_dtdelta(%s, "%s", "%d", "%d", "%d")' % (sql,
- connector, timedelta.days, timedelta.seconds, timedelta.microseconds)
-
- def date_trunc_sql(self, lookup_type, field_name):
- # sqlite doesn't support DATE_TRUNC, so we fake it with a user-defined
- # function django_date_trunc that's registered in connect(). Note that
- # single quotes are used because this is a string (and could otherwise
- # cause a collision with a field name).
- return "django_date_trunc('%s', %s)" % (lookup_type.lower(), field_name)
-
- def datetime_extract_sql(self, lookup_type, field_name, tzname):
- # Same comment as in date_extract_sql.
- if settings.USE_TZ:
- if pytz is None:
- from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured("This query requires pytz, "
- "but it isn't installed.")
- return "django_datetime_extract('%s', %s, %%s)" % (
- lookup_type.lower(), field_name), [tzname]
-
- def datetime_trunc_sql(self, lookup_type, field_name, tzname):
- # Same comment as in date_trunc_sql.
- if settings.USE_TZ:
- if pytz is None:
- from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured("This query requires pytz, "
- "but it isn't installed.")
- return "django_datetime_trunc('%s', %s, %%s)" % (
- lookup_type.lower(), field_name), [tzname]
-
- def drop_foreignkey_sql(self):
- return ""
-
- def pk_default_value(self):
- return "NULL"
-
- def quote_name(self, name):
- if name.startswith('"') and name.endswith('"'):
- return name # Quoting once is enough.
- return '"%s"' % name
-
- def no_limit_value(self):
- return -1
-
- def sql_flush(self, style, tables, sequences, allow_cascade=False):
- # NB: The generated SQL below is specific to SQLite
- # Note: The DELETE FROM... SQL generated below works for SQLite databases
- # because constraints don't exist
- sql = ['%s %s %s;' % (
- style.SQL_KEYWORD('DELETE'),
- style.SQL_KEYWORD('FROM'),
- style.SQL_FIELD(self.quote_name(table))
- ) for table in tables]
- # Note: No requirement for reset of auto-incremented indices (cf. other
- # sql_flush() implementations). Just return SQL at this point
- return sql
-
- def value_to_db_datetime(self, value):
- if value is None:
- return None
-
- # SQLite doesn't support tz-aware datetimes
- if timezone.is_aware(value):
- if settings.USE_TZ:
- value = value.astimezone(timezone.utc).replace(tzinfo=None)
- else:
- raise ValueError("SQLite backend does not support timezone-aware datetimes when USE_TZ is False.")
-
- return six.text_type(value)
-
- def value_to_db_time(self, value):
- if value is None:
- return None
-
- # SQLite doesn't support tz-aware datetimes
- if timezone.is_aware(value):
- raise ValueError("SQLite backend does not support timezone-aware times.")
-
- return six.text_type(value)
-
- def convert_values(self, value, field):
- """SQLite returns floats when it should be returning decimals,
- and gets dates and datetimes wrong.
- For consistency with other backends, coerce when required.
- """
- if value is None:
- return None
-
- internal_type = field.get_internal_type()
- if internal_type == 'DecimalField':
- return util.typecast_decimal(field.format_number(value))
- elif internal_type and internal_type.endswith('IntegerField') or internal_type == 'AutoField':
- return int(value)
- elif internal_type == 'DateField':
- return parse_date(value)
- elif internal_type == 'DateTimeField':
- return parse_datetime_with_timezone_support(value)
- elif internal_type == 'TimeField':
- return parse_time(value)
-
- # No field, or the field isn't known to be a decimal or integer
- return value
-
- def bulk_insert_sql(self, fields, num_values):
- res = []
- res.append("SELECT %s" % ", ".join(
- "%%s AS %s" % self.quote_name(f.column) for f in fields
- ))
- res.extend(["UNION ALL SELECT %s" % ", ".join(["%s"] * len(fields))] * (num_values - 1))
- return " ".join(res)
-
-class DatabaseWrapper(BaseDatabaseWrapper):
- vendor = 'sqlite'
- # SQLite requires LIKE statements to include an ESCAPE clause if the value
- # being escaped has a percent or underscore in it.
- # See http://www.sqlite.org/lang_expr.html for an explanation.
- operators = {
- 'exact': '= %s',
- 'iexact': "LIKE %s ESCAPE '\\'",
- 'contains': "LIKE %s ESCAPE '\\'",
- 'icontains': "LIKE %s ESCAPE '\\'",
- 'regex': 'REGEXP %s',
- 'iregex': "REGEXP '(?i)' || %s",
- 'gt': '> %s',
- 'gte': '>= %s',
- 'lt': '< %s',
- 'lte': '<= %s',
- 'startswith': "LIKE %s ESCAPE '\\'",
- 'endswith': "LIKE %s ESCAPE '\\'",
- 'istartswith': "LIKE %s ESCAPE '\\'",
- 'iendswith': "LIKE %s ESCAPE '\\'",
- }
-
- Database = Database
-
- def __init__(self, *args, **kwargs):
- super(DatabaseWrapper, self).__init__(*args, **kwargs)
-
- self.features = DatabaseFeatures(self)
- self.ops = DatabaseOperations(self)
- self.client = DatabaseClient(self)
- self.creation = DatabaseCreation(self)
- self.introspection = DatabaseIntrospection(self)
- self.validation = BaseDatabaseValidation(self)
-
- def get_connection_params(self):
- settings_dict = self.settings_dict
- if not settings_dict['NAME']:
- from django.core.exceptions import ImproperlyConfigured
- raise ImproperlyConfigured(
- "settings.DATABASES is improperly configured. "
- "Please supply the NAME value.")
- kwargs = {
- 'database': settings_dict['NAME'],
- 'detect_types': Database.PARSE_DECLTYPES | Database.PARSE_COLNAMES,
- }
- kwargs.update(settings_dict['OPTIONS'])
- # Always allow the underlying SQLite connection to be shareable
- # between multiple threads. The safe-guarding will be handled at a
- # higher level by the `BaseDatabaseWrapper.allow_thread_sharing`
- # property. This is necessary as the shareability is disabled by
- # default in pysqlite and it cannot be changed once a connection is
- # opened.
- if 'check_same_thread' in kwargs and kwargs['check_same_thread']:
- warnings.warn(
- 'The `check_same_thread` option was provided and set to '
- 'True. It will be overriden with False. Use the '
- '`DatabaseWrapper.allow_thread_sharing` property instead '
- 'for controlling thread shareability.',
- RuntimeWarning
- )
- kwargs.update({'check_same_thread': False})
- return kwargs
-
- def get_new_connection(self, conn_params):
- conn = Database.connect(**conn_params)
- conn.create_function("django_date_extract", 2, _sqlite_date_extract)
- conn.create_function("django_date_trunc", 2, _sqlite_date_trunc)
- conn.create_function("django_datetime_extract", 3, _sqlite_datetime_extract)
- conn.create_function("django_datetime_trunc", 3, _sqlite_datetime_trunc)
- conn.create_function("regexp", 2, _sqlite_regexp)
- conn.create_function("django_format_dtdelta", 5, _sqlite_format_dtdelta)
- return conn
-
- def init_connection_state(self):
- pass
-
- def create_cursor(self):
- return self.connection.cursor(factory=SQLiteCursorWrapper)
-
- def close(self):
- self.validate_thread_sharing()
- # If database is in memory, closing the connection destroys the
- # database. To prevent accidental data loss, ignore close requests on
- # an in-memory db.
- if self.settings_dict['NAME'] != ":memory:":
- BaseDatabaseWrapper.close(self)
-
- def _savepoint_allowed(self):
- # Two conditions are required here:
- # - A sufficiently recent version of SQLite to support savepoints,
- # - Being in a transaction, which can only happen inside 'atomic'.
-
- # When 'isolation_level' is not None, sqlite3 commits before each
- # savepoint; it's a bug. When it is None, savepoints don't make sense
- # because autocommit is enabled. The only exception is inside 'atomic'
- # blocks. To work around that bug, on SQLite, 'atomic' starts a
- # transaction explicitly rather than simply disable autocommit.
- return self.features.uses_savepoints and self.in_atomic_block
-
- def _set_autocommit(self, autocommit):
- if autocommit:
- level = None
- else:
- # sqlite3's internal default is ''. It's different from None.
- # See Modules/_sqlite/connection.c.
- level = ''
- # 'isolation_level' is a misleading API.
- # SQLite always runs at the SERIALIZABLE isolation level.
- with self.wrap_database_errors:
- self.connection.isolation_level = level
-
- def check_constraints(self, table_names=None):
- """
- Checks each table name in `table_names` for rows with invalid foreign key references. This method is
- intended to be used in conjunction with `disable_constraint_checking()` and `enable_constraint_checking()`, to
- determine if rows with invalid references were entered while constraint checks were off.
-
- Raises an IntegrityError on the first invalid foreign key reference encountered (if any) and provides
- detailed information about the invalid reference in the error message.
-
- Backends can override this method if they can more directly apply constraint checking (e.g. via "SET CONSTRAINTS
- ALL IMMEDIATE")
- """
- cursor = self.cursor()
- if table_names is None:
- table_names = self.introspection.table_names(cursor)
- for table_name in table_names:
- primary_key_column_name = self.introspection.get_primary_key_column(cursor, table_name)
- if not primary_key_column_name:
- continue
- key_columns = self.introspection.get_key_columns(cursor, table_name)
- for column_name, referenced_table_name, referenced_column_name in key_columns:
- cursor.execute("""
- SELECT REFERRING.`%s`, REFERRING.`%s` FROM `%s` as REFERRING
- LEFT JOIN `%s` as REFERRED
- ON (REFERRING.`%s` = REFERRED.`%s`)
- WHERE REFERRING.`%s` IS NOT NULL AND REFERRED.`%s` IS NULL"""
- % (primary_key_column_name, column_name, table_name, referenced_table_name,
- column_name, referenced_column_name, column_name, referenced_column_name))
- for bad_row in cursor.fetchall():
- raise utils.IntegrityError("The row in table '%s' with primary key '%s' has an invalid "
- "foreign key: %s.%s contains a value '%s' that does not have a corresponding value in %s.%s."
- % (table_name, bad_row[0], table_name, column_name, bad_row[1],
- referenced_table_name, referenced_column_name))
-
- def is_usable(self):
- return True
-
- def _start_transaction_under_autocommit(self):
- """
- Start a transaction explicitly in autocommit mode.
-
- Staying in autocommit mode works around a bug of sqlite3 that breaks
- savepoints when autocommit is disabled.
- """
- self.cursor().execute("BEGIN")
-
-FORMAT_QMARK_REGEX = re.compile(r'(?<!%)%s')
-
-class SQLiteCursorWrapper(Database.Cursor):
- """
- Django uses "format" style placeholders, but pysqlite2 uses "qmark" style.
- This fixes it -- but note that if you want to use a literal "%s" in a query,
- you'll need to use "%%s".
- """
- def execute(self, query, params=None):
- if params is None:
- return Database.Cursor.execute(self, query)
- query = self.convert_query(query)
- return Database.Cursor.execute(self, query, params)
-
- def executemany(self, query, param_list):
- query = self.convert_query(query)
- return Database.Cursor.executemany(self, query, param_list)
-
- def convert_query(self, query):
- return FORMAT_QMARK_REGEX.sub('?', query).replace('%%', '%')
-
-def _sqlite_date_extract(lookup_type, dt):
- if dt is None:
- return None
- try:
- dt = util.typecast_timestamp(dt)
- except (ValueError, TypeError):
- return None
- if lookup_type == 'week_day':
- return (dt.isoweekday() % 7) + 1
- else:
- return getattr(dt, lookup_type)
-
-def _sqlite_date_trunc(lookup_type, dt):
- try:
- dt = util.typecast_timestamp(dt)
- except (ValueError, TypeError):
- return None
- if lookup_type == 'year':
- return "%i-01-01" % dt.year
- elif lookup_type == 'month':
- return "%i-%02i-01" % (dt.year, dt.month)
- elif lookup_type == 'day':
- return "%i-%02i-%02i" % (dt.year, dt.month, dt.day)
-
-def _sqlite_datetime_extract(lookup_type, dt, tzname):
- if dt is None:
- return None
- try:
- dt = util.typecast_timestamp(dt)
- except (ValueError, TypeError):
- return None
- if tzname is not None:
- dt = timezone.localtime(dt, pytz.timezone(tzname))
- if lookup_type == 'week_day':
- return (dt.isoweekday() % 7) + 1
- else:
- return getattr(dt, lookup_type)
-
-def _sqlite_datetime_trunc(lookup_type, dt, tzname):
- try:
- dt = util.typecast_timestamp(dt)
- except (ValueError, TypeError):
- return None
- if tzname is not None:
- dt = timezone.localtime(dt, pytz.timezone(tzname))
- if lookup_type == 'year':
- return "%i-01-01 00:00:00" % dt.year
- elif lookup_type == 'month':
- return "%i-%02i-01 00:00:00" % (dt.year, dt.month)
- elif lookup_type == 'day':
- return "%i-%02i-%02i 00:00:00" % (dt.year, dt.month, dt.day)
- elif lookup_type == 'hour':
- return "%i-%02i-%02i %02i:00:00" % (dt.year, dt.month, dt.day, dt.hour)
- elif lookup_type == 'minute':
- return "%i-%02i-%02i %02i:%02i:00" % (dt.year, dt.month, dt.day, dt.hour, dt.minute)
- elif lookup_type == 'second':
- return "%i-%02i-%02i %02i:%02i:%02i" % (dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second)
-
-def _sqlite_format_dtdelta(dt, conn, days, secs, usecs):
- try:
- dt = util.typecast_timestamp(dt)
- delta = datetime.timedelta(int(days), int(secs), int(usecs))
- if conn.strip() == '+':
- dt = dt + delta
- else:
- dt = dt - delta
- except (ValueError, TypeError):
- return None
- # typecast_timestamp returns a date or a datetime without timezone.
- # It will be formatted as "%Y-%m-%d" or "%Y-%m-%d %H:%M:%S[.%f]"
- return str(dt)
-
-def _sqlite_regexp(re_pattern, re_string):
- return bool(re.search(re_pattern, force_text(re_string))) if re_string is not None else False
diff --git a/lib/python2.7/site-packages/django/db/backends/sqlite3/client.py b/lib/python2.7/site-packages/django/db/backends/sqlite3/client.py
deleted file mode 100644
index 5b5b732..0000000
--- a/lib/python2.7/site-packages/django/db/backends/sqlite3/client.py
+++ /dev/null
@@ -1,16 +0,0 @@
-import os
-import sys
-
-from django.db.backends import BaseDatabaseClient
-
-class DatabaseClient(BaseDatabaseClient):
- executable_name = 'sqlite3'
-
- def runshell(self):
- args = [self.executable_name,
- self.connection.settings_dict['NAME']]
- if os.name == 'nt':
- sys.exit(os.system(" ".join(args)))
- else:
- os.execvp(self.executable_name, args)
-
diff --git a/lib/python2.7/site-packages/django/db/backends/sqlite3/creation.py b/lib/python2.7/site-packages/django/db/backends/sqlite3/creation.py
deleted file mode 100644
index a9fb273..0000000
--- a/lib/python2.7/site-packages/django/db/backends/sqlite3/creation.py
+++ /dev/null
@@ -1,88 +0,0 @@
-import os
-import sys
-from django.db.backends.creation import BaseDatabaseCreation
-from django.utils.six.moves import input
-
-class DatabaseCreation(BaseDatabaseCreation):
- # SQLite doesn't actually support most of these types, but it "does the right
- # thing" given more verbose field definitions, so leave them as is so that
- # schema inspection is more useful.
- data_types = {
- 'AutoField': 'integer',
- 'BinaryField': 'BLOB',
- 'BooleanField': 'bool',
- 'CharField': 'varchar(%(max_length)s)',
- 'CommaSeparatedIntegerField': 'varchar(%(max_length)s)',
- 'DateField': 'date',
- 'DateTimeField': 'datetime',
- 'DecimalField': 'decimal',
- 'FileField': 'varchar(%(max_length)s)',
- 'FilePathField': 'varchar(%(max_length)s)',
- 'FloatField': 'real',
- 'IntegerField': 'integer',
- 'BigIntegerField': 'bigint',
- 'IPAddressField': 'char(15)',
- 'GenericIPAddressField': 'char(39)',
- 'NullBooleanField': 'bool',
- 'OneToOneField': 'integer',
- 'PositiveIntegerField': 'integer unsigned',
- 'PositiveSmallIntegerField': 'smallint unsigned',
- 'SlugField': 'varchar(%(max_length)s)',
- 'SmallIntegerField': 'smallint',
- 'TextField': 'text',
- 'TimeField': 'time',
- }
-
- def sql_for_pending_references(self, model, style, pending_references):
- "SQLite3 doesn't support constraints"
- return []
-
- def sql_remove_table_constraints(self, model, references_to_delete, style):
- "SQLite3 doesn't support constraints"
- return []
-
- def _get_test_db_name(self):
- test_database_name = self.connection.settings_dict['TEST_NAME']
- if test_database_name and test_database_name != ':memory:':
- return test_database_name
- return ':memory:'
-
- def _create_test_db(self, verbosity, autoclobber):
- test_database_name = self._get_test_db_name()
- if test_database_name != ':memory:':
- # Erase the old test database
- if verbosity >= 1:
- print("Destroying old test database '%s'..." % self.connection.alias)
- if os.access(test_database_name, os.F_OK):
- if not autoclobber:
- confirm = input("Type 'yes' if you would like to try deleting the test database '%s', or 'no' to cancel: " % test_database_name)
- if autoclobber or confirm == 'yes':
- try:
- os.remove(test_database_name)
- except Exception as e:
- sys.stderr.write("Got an error deleting the old test database: %s\n" % e)
- sys.exit(2)
- else:
- print("Tests cancelled.")
- sys.exit(1)
- return test_database_name
-
- def _destroy_test_db(self, test_database_name, verbosity):
- if test_database_name and test_database_name != ":memory:":
- # Remove the SQLite database file
- os.remove(test_database_name)
-
- def test_db_signature(self):
- """
- Returns a tuple that uniquely identifies a test database.
-
- This takes into account the special cases of ":memory:" and "" for
- SQLite since the databases will be distinct despite having the same
- TEST_NAME. See http://www.sqlite.org/inmemorydb.html
- """
- settings_dict = self.connection.settings_dict
- test_dbname = self._get_test_db_name()
- sig = [self.connection.settings_dict['NAME']]
- if test_dbname == ':memory:':
- sig.append(self.connection.alias)
- return tuple(sig)
diff --git a/lib/python2.7/site-packages/django/db/backends/sqlite3/introspection.py b/lib/python2.7/site-packages/django/db/backends/sqlite3/introspection.py
deleted file mode 100644
index 431e112..0000000
--- a/lib/python2.7/site-packages/django/db/backends/sqlite3/introspection.py
+++ /dev/null
@@ -1,185 +0,0 @@
-import re
-from django.db.backends import BaseDatabaseIntrospection, FieldInfo
-
-field_size_re = re.compile(r'^\s*(?:var)?char\s*\(\s*(\d+)\s*\)\s*$')
-
-def get_field_size(name):
- """ Extract the size number from a "varchar(11)" type name """
- m = field_size_re.search(name)
- return int(m.group(1)) if m else None
-
-
-# This light wrapper "fakes" a dictionary interface, because some SQLite data
-# types include variables in them -- e.g. "varchar(30)" -- and can't be matched
-# as a simple dictionary lookup.
-class FlexibleFieldLookupDict(object):
- # Maps SQL types to Django Field types. Some of the SQL types have multiple
- # entries here because SQLite allows for anything and doesn't normalize the
- # field type; it uses whatever was given.
- base_data_types_reverse = {
- 'bool': 'BooleanField',
- 'boolean': 'BooleanField',
- 'smallint': 'SmallIntegerField',
- 'smallint unsigned': 'PositiveSmallIntegerField',
- 'smallinteger': 'SmallIntegerField',
- 'int': 'IntegerField',
- 'integer': 'IntegerField',
- 'bigint': 'BigIntegerField',
- 'integer unsigned': 'PositiveIntegerField',
- 'decimal': 'DecimalField',
- 'real': 'FloatField',
- 'text': 'TextField',
- 'char': 'CharField',
- 'blob': 'BinaryField',
- 'date': 'DateField',
- 'datetime': 'DateTimeField',
- 'time': 'TimeField',
- }
-
- def __getitem__(self, key):
- key = key.lower()
- try:
- return self.base_data_types_reverse[key]
- except KeyError:
- size = get_field_size(key)
- if size is not None:
- return ('CharField', {'max_length': size})
- raise KeyError
-
-class DatabaseIntrospection(BaseDatabaseIntrospection):
- data_types_reverse = FlexibleFieldLookupDict()
-
- def get_table_list(self, cursor):
- "Returns a list of table names in the current database."
- # Skip the sqlite_sequence system table used for autoincrement key
- # generation.
- cursor.execute("""
- SELECT name FROM sqlite_master
- WHERE type='table' AND NOT name='sqlite_sequence'
- ORDER BY name""")
- return [row[0] for row in cursor.fetchall()]
-
- def get_table_description(self, cursor, table_name):
- "Returns a description of the table, with the DB-API cursor.description interface."
- return [FieldInfo(info['name'], info['type'], None, info['size'], None, None,
- info['null_ok']) for info in self._table_info(cursor, table_name)]
-
- def get_relations(self, cursor, table_name):
- """
- Returns a dictionary of {field_index: (field_index_other_table, other_table)}
- representing all relationships to the given table. Indexes are 0-based.
- """
-
- # Dictionary of relations to return
- relations = {}
-
- # Schema for this table
- cursor.execute("SELECT sql FROM sqlite_master WHERE tbl_name = %s AND type = %s", [table_name, "table"])
- results = cursor.fetchone()[0].strip()
- results = results[results.index('(')+1:results.rindex(')')]
-
- # Walk through and look for references to other tables. SQLite doesn't
- # really have enforced references, but since it echoes out the SQL used
- # to create the table we can look for REFERENCES statements used there.
- for field_index, field_desc in enumerate(results.split(',')):
- field_desc = field_desc.strip()
- if field_desc.startswith("UNIQUE"):
- continue
-
- m = re.search('references (.*) \(["|](.*)["|]\)', field_desc, re.I)
- if not m:
- continue
-
- table, column = [s.strip('"') for s in m.groups()]
-
- cursor.execute("SELECT sql FROM sqlite_master WHERE tbl_name = %s", [table])
- result = cursor.fetchall()[0]
- other_table_results = result[0].strip()
- li, ri = other_table_results.index('('), other_table_results.rindex(')')
- other_table_results = other_table_results[li+1:ri]
-
-
- for other_index, other_desc in enumerate(other_table_results.split(',')):
- other_desc = other_desc.strip()
- if other_desc.startswith('UNIQUE'):
- continue
-
- name = other_desc.split(' ', 1)[0].strip('"')
- if name == column:
- relations[field_index] = (other_index, table)
- break
-
- return relations
-
- def get_key_columns(self, cursor, table_name):
- """
- Returns a list of (column_name, referenced_table_name, referenced_column_name) for all
- key columns in given table.
- """
- key_columns = []
-
- # Schema for this table
- cursor.execute("SELECT sql FROM sqlite_master WHERE tbl_name = %s AND type = %s", [table_name, "table"])
- results = cursor.fetchone()[0].strip()
- results = results[results.index('(')+1:results.rindex(')')]
-
- # Walk through and look for references to other tables. SQLite doesn't
- # really have enforced references, but since it echoes out the SQL used
- # to create the table we can look for REFERENCES statements used there.
- for field_index, field_desc in enumerate(results.split(',')):
- field_desc = field_desc.strip()
- if field_desc.startswith("UNIQUE"):
- continue
-
- m = re.search('"(.*)".*references (.*) \(["|](.*)["|]\)', field_desc, re.I)
- if not m:
- continue
-
- # This will append (column_name, referenced_table_name, referenced_column_name) to key_columns
- key_columns.append(tuple([s.strip('"') for s in m.groups()]))
-
- return key_columns
-
- def get_indexes(self, cursor, table_name):
- indexes = {}
- for info in self._table_info(cursor, table_name):
- if info['pk'] != 0:
- indexes[info['name']] = {'primary_key': True,
- 'unique': False}
- cursor.execute('PRAGMA index_list(%s)' % self.connection.ops.quote_name(table_name))
- # seq, name, unique
- for index, unique in [(field[1], field[2]) for field in cursor.fetchall()]:
- cursor.execute('PRAGMA index_info(%s)' % self.connection.ops.quote_name(index))
- info = cursor.fetchall()
- # Skip indexes across multiple fields
- if len(info) != 1:
- continue
- name = info[0][2] # seqno, cid, name
- indexes[name] = {'primary_key': False,
- 'unique': unique}
- return indexes
-
- def get_primary_key_column(self, cursor, table_name):
- """
- Get the column name of the primary key for the given table.
- """
- # Don't use PRAGMA because that causes issues with some transactions
- cursor.execute("SELECT sql FROM sqlite_master WHERE tbl_name = %s AND type = %s", [table_name, "table"])
- results = cursor.fetchone()[0].strip()
- results = results[results.index('(')+1:results.rindex(')')]
- for field_desc in results.split(','):
- field_desc = field_desc.strip()
- m = re.search('"(.*)".*PRIMARY KEY$', field_desc)
- if m:
- return m.groups()[0]
- return None
-
- def _table_info(self, cursor, name):
- cursor.execute('PRAGMA table_info(%s)' % self.connection.ops.quote_name(name))
- # cid, name, type, notnull, dflt_value, pk
- return [{'name': field[1],
- 'type': field[2],
- 'size': get_field_size(field[2]),
- 'null_ok': not field[3],
- 'pk': field[5] # undocumented
- } for field in cursor.fetchall()]
diff --git a/lib/python2.7/site-packages/django/db/backends/util.py b/lib/python2.7/site-packages/django/db/backends/util.py
deleted file mode 100644
index 2820007..0000000
--- a/lib/python2.7/site-packages/django/db/backends/util.py
+++ /dev/null
@@ -1,179 +0,0 @@
-from __future__ import unicode_literals
-
-import datetime
-import decimal
-import hashlib
-import logging
-from time import time
-
-from django.conf import settings
-from django.utils.encoding import force_bytes
-from django.utils.timezone import utc
-
-
-logger = logging.getLogger('django.db.backends')
-
-
-class CursorWrapper(object):
- def __init__(self, cursor, db):
- self.cursor = cursor
- self.db = db
-
- WRAP_ERROR_ATTRS = frozenset(['fetchone', 'fetchmany', 'fetchall', 'nextset'])
-
- def __getattr__(self, attr):
- cursor_attr = getattr(self.cursor, attr)
- if attr in CursorWrapper.WRAP_ERROR_ATTRS:
- return self.db.wrap_database_errors(cursor_attr)
- else:
- return cursor_attr
-
- def __iter__(self):
- return iter(self.cursor)
-
- # The following methods cannot be implemented in __getattr__, because the
- # code must run when the method is invoked, not just when it is accessed.
-
- def callproc(self, procname, params=None):
- self.db.validate_no_broken_transaction()
- self.db.set_dirty()
- with self.db.wrap_database_errors:
- if params is None:
- return self.cursor.callproc(procname)
- else:
- return self.cursor.callproc(procname, params)
-
- def execute(self, sql, params=None):
- self.db.validate_no_broken_transaction()
- self.db.set_dirty()
- with self.db.wrap_database_errors:
- if params is None:
- return self.cursor.execute(sql)
- else:
- return self.cursor.execute(sql, params)
-
- def executemany(self, sql, param_list):
- self.db.validate_no_broken_transaction()
- self.db.set_dirty()
- with self.db.wrap_database_errors:
- return self.cursor.executemany(sql, param_list)
-
-
-class CursorDebugWrapper(CursorWrapper):
-
- # XXX callproc isn't instrumented at this time.
-
- def execute(self, sql, params=None):
- start = time()
- try:
- return super(CursorDebugWrapper, self).execute(sql, params)
- finally:
- stop = time()
- duration = stop - start
- sql = self.db.ops.last_executed_query(self.cursor, sql, params)
- self.db.queries.append({
- 'sql': sql,
- 'time': "%.3f" % duration,
- })
- logger.debug('(%.3f) %s; args=%s' % (duration, sql, params),
- extra={'duration': duration, 'sql': sql, 'params': params}
- )
-
- def executemany(self, sql, param_list):
- start = time()
- try:
- return super(CursorDebugWrapper, self).executemany(sql, param_list)
- finally:
- stop = time()
- duration = stop - start
- try:
- times = len(param_list)
- except TypeError: # param_list could be an iterator
- times = '?'
- self.db.queries.append({
- 'sql': '%s times: %s' % (times, sql),
- 'time': "%.3f" % duration,
- })
- logger.debug('(%.3f) %s; args=%s' % (duration, sql, param_list),
- extra={'duration': duration, 'sql': sql, 'params': param_list}
- )
-
-
-###############################################
-# Converters from database (string) to Python #
-###############################################
-
-def typecast_date(s):
- return datetime.date(*map(int, s.split('-'))) if s else None # returns None if s is null
-
-def typecast_time(s): # does NOT store time zone information
- if not s: return None
- hour, minutes, seconds = s.split(':')
- if '.' in seconds: # check whether seconds have a fractional part
- seconds, microseconds = seconds.split('.')
- else:
- microseconds = '0'
- return datetime.time(int(hour), int(minutes), int(seconds), int(float('.'+microseconds) * 1000000))
-
-def typecast_timestamp(s): # does NOT store time zone information
- # "2005-07-29 15:48:00.590358-05"
- # "2005-07-29 09:56:00-05"
- if not s: return None
- if not ' ' in s: return typecast_date(s)
- d, t = s.split()
- # Extract timezone information, if it exists. Currently we just throw
- # it away, but in the future we may make use of it.
- if '-' in t:
- t, tz = t.split('-', 1)
- tz = '-' + tz
- elif '+' in t:
- t, tz = t.split('+', 1)
- tz = '+' + tz
- else:
- tz = ''
- dates = d.split('-')
- times = t.split(':')
- seconds = times[2]
- if '.' in seconds: # check whether seconds have a fractional part
- seconds, microseconds = seconds.split('.')
- else:
- microseconds = '0'
- tzinfo = utc if settings.USE_TZ else None
- return datetime.datetime(int(dates[0]), int(dates[1]), int(dates[2]),
- int(times[0]), int(times[1]), int(seconds),
- int((microseconds + '000000')[:6]), tzinfo)
-
-def typecast_decimal(s):
- if s is None or s == '':
- return None
- return decimal.Decimal(s)
-
-###############################################
-# Converters from Python to database (string) #
-###############################################
-
-def rev_typecast_decimal(d):
- if d is None:
- return None
- return str(d)
-
-def truncate_name(name, length=None, hash_len=4):
- """Shortens a string to a repeatable mangled version with the given length.
- """
- if length is None or len(name) <= length:
- return name
-
- hsh = hashlib.md5(force_bytes(name)).hexdigest()[:hash_len]
- return '%s%s' % (name[:length-hash_len], hsh)
-
-def format_number(value, max_digits, decimal_places):
- """
- Formats a number into a string with the requisite number of digits and
- decimal places.
- """
- if isinstance(value, decimal.Decimal):
- context = decimal.getcontext().copy()
- context.prec = max_digits
- return "{0:f}".format(value.quantize(decimal.Decimal(".1") ** decimal_places, context=context))
- else:
- return "%.*f" % (decimal_places, value)
diff --git a/lib/python2.7/site-packages/django/db/models/__init__.py b/lib/python2.7/site-packages/django/db/models/__init__.py
deleted file mode 100644
index b5dd1a5..0000000
--- a/lib/python2.7/site-packages/django/db/models/__init__.py
+++ /dev/null
@@ -1,33 +0,0 @@
-from functools import wraps
-
-from django.core.exceptions import ObjectDoesNotExist, ImproperlyConfigured
-from django.db.models.loading import get_apps, get_app_paths, get_app, get_models, get_model, register_models, UnavailableApp
-from django.db.models.query import Q
-from django.db.models.expressions import F
-from django.db.models.manager import Manager
-from django.db.models.base import Model
-from django.db.models.aggregates import *
-from django.db.models.fields import *
-from django.db.models.fields.subclassing import SubfieldBase
-from django.db.models.fields.files import FileField, ImageField
-from django.db.models.fields.related import ForeignKey, ForeignObject, OneToOneField, ManyToManyField, ManyToOneRel, ManyToManyRel, OneToOneRel
-from django.db.models.deletion import CASCADE, PROTECT, SET, SET_NULL, SET_DEFAULT, DO_NOTHING, ProtectedError
-from django.db.models import signals
-
-
-def permalink(func):
- """
- Decorator that calls urlresolvers.reverse() to return a URL using
- parameters returned by the decorated function "func".
-
- "func" should be a function that returns a tuple in one of the
- following formats:
- (viewname, viewargs)
- (viewname, viewargs, viewkwargs)
- """
- from django.core.urlresolvers import reverse
- @wraps(func)
- def inner(*args, **kwargs):
- bits = func(*args, **kwargs)
- return reverse(bits[0], None, *bits[1:3])
- return inner
diff --git a/lib/python2.7/site-packages/django/db/models/aggregates.py b/lib/python2.7/site-packages/django/db/models/aggregates.py
deleted file mode 100644
index b89db1c..0000000
--- a/lib/python2.7/site-packages/django/db/models/aggregates.py
+++ /dev/null
@@ -1,80 +0,0 @@
-"""
-Classes to represent the definitions of aggregate functions.
-"""
-from django.db.models.constants import LOOKUP_SEP
-
-def refs_aggregate(lookup_parts, aggregates):
- """
- A little helper method to check if the lookup_parts contains references
- to the given aggregates set. Because the LOOKUP_SEP is contained in the
- default annotation names we must check each prefix of the lookup_parts
- for match.
- """
- for i in range(len(lookup_parts) + 1):
- if LOOKUP_SEP.join(lookup_parts[0:i]) in aggregates:
- return True
- return False
-
-class Aggregate(object):
- """
- Default Aggregate definition.
- """
- def __init__(self, lookup, **extra):
- """Instantiate a new aggregate.
-
- * lookup is the field on which the aggregate operates.
- * extra is a dictionary of additional data to provide for the
- aggregate definition
-
- Also utilizes the class variables:
- * name, the identifier for this aggregate function.
- """
- self.lookup = lookup
- self.extra = extra
-
- def _default_alias(self):
- return '%s__%s' % (self.lookup, self.name.lower())
- default_alias = property(_default_alias)
-
- def add_to_query(self, query, alias, col, source, is_summary):
- """Add the aggregate to the nominated query.
-
- This method is used to convert the generic Aggregate definition into a
- backend-specific definition.
-
- * query is the backend-specific query instance to which the aggregate
- is to be added.
- * col is a column reference describing the subject field
- of the aggregate. It can be an alias, or a tuple describing
- a table and column name.
- * source is the underlying field or aggregate definition for
- the column reference. If the aggregate is not an ordinal or
- computed type, this reference is used to determine the coerced
- output type of the aggregate.
- * is_summary is a boolean that is set True if the aggregate is a
- summary value rather than an annotation.
- """
- klass = getattr(query.aggregates_module, self.name)
- aggregate = klass(col, source=source, is_summary=is_summary, **self.extra)
- query.aggregates[alias] = aggregate
-
-class Avg(Aggregate):
- name = 'Avg'
-
-class Count(Aggregate):
- name = 'Count'
-
-class Max(Aggregate):
- name = 'Max'
-
-class Min(Aggregate):
- name = 'Min'
-
-class StdDev(Aggregate):
- name = 'StdDev'
-
-class Sum(Aggregate):
- name = 'Sum'
-
-class Variance(Aggregate):
- name = 'Variance'
diff --git a/lib/python2.7/site-packages/django/db/models/base.py b/lib/python2.7/site-packages/django/db/models/base.py
deleted file mode 100644
index f6001b4..0000000
--- a/lib/python2.7/site-packages/django/db/models/base.py
+++ /dev/null
@@ -1,1042 +0,0 @@
-from __future__ import unicode_literals
-
-import copy
-import sys
-from functools import update_wrapper
-from django.utils.six.moves import zip
-
-import django.db.models.manager # Imported to register signal handler.
-from django.conf import settings
-from django.core.exceptions import (ObjectDoesNotExist,
- MultipleObjectsReturned, FieldError, ValidationError, NON_FIELD_ERRORS)
-from django.db.models.fields import AutoField, FieldDoesNotExist
-from django.db.models.fields.related import (ForeignObjectRel, ManyToOneRel,
- OneToOneField, add_lazy_relation)
-from django.db import (router, transaction, DatabaseError,
- DEFAULT_DB_ALIAS)
-from django.db.models.query import Q
-from django.db.models.query_utils import DeferredAttribute, deferred_class_factory
-from django.db.models.deletion import Collector
-from django.db.models.options import Options
-from django.db.models import signals
-from django.db.models.loading import register_models, get_model
-from django.utils.translation import ugettext_lazy as _
-from django.utils.functional import curry
-from django.utils.encoding import force_str, force_text
-from django.utils import six
-from django.utils.text import get_text_list, capfirst
-
-
-def subclass_exception(name, parents, module, attached_to=None):
- """
- Create exception subclass. Used by ModelBase below.
-
- If 'attached_to' is supplied, the exception will be created in a way that
- allows it to be pickled, assuming the returned exception class will be added
- as an attribute to the 'attached_to' class.
- """
- class_dict = {'__module__': module}
- if attached_to is not None:
- def __reduce__(self):
- # Exceptions are special - they've got state that isn't
- # in self.__dict__. We assume it is all in self.args.
- return (unpickle_inner_exception, (attached_to, name), self.args)
-
- def __setstate__(self, args):
- self.args = args
-
- class_dict['__reduce__'] = __reduce__
- class_dict['__setstate__'] = __setstate__
-
- return type(name, parents, class_dict)
-
-
-class ModelBase(type):
- """
- Metaclass for all models.
- """
- def __new__(cls, name, bases, attrs):
- super_new = super(ModelBase, cls).__new__
-
- # six.with_metaclass() inserts an extra class called 'NewBase' in the
- # inheritance tree: Model -> NewBase -> object. But the initialization
- # should be executed only once for a given model class.
-
- # attrs will never be empty for classes declared in the standard way
- # (ie. with the `class` keyword). This is quite robust.
- if name == 'NewBase' and attrs == {}:
- return super_new(cls, name, bases, attrs)
-
- # Also ensure initialization is only performed for subclasses of Model
- # (excluding Model class itself).
- parents = [b for b in bases if isinstance(b, ModelBase) and
- not (b.__name__ == 'NewBase' and b.__mro__ == (b, object))]
- if not parents:
- return super_new(cls, name, bases, attrs)
-
- # Create the class.
- module = attrs.pop('__module__')
- new_class = super_new(cls, name, bases, {'__module__': module})
- attr_meta = attrs.pop('Meta', None)
- abstract = getattr(attr_meta, 'abstract', False)
- if not attr_meta:
- meta = getattr(new_class, 'Meta', None)
- else:
- meta = attr_meta
- base_meta = getattr(new_class, '_meta', None)
-
- if getattr(meta, 'app_label', None) is None:
- # Figure out the app_label by looking one level up.
- # For 'django.contrib.sites.models', this would be 'sites'.
- model_module = sys.modules[new_class.__module__]
- kwargs = {"app_label": model_module.__name__.split('.')[-2]}
- else:
- kwargs = {}
-
- new_class.add_to_class('_meta', Options(meta, **kwargs))
- if not abstract:
- new_class.add_to_class('DoesNotExist', subclass_exception(str('DoesNotExist'),
- tuple(x.DoesNotExist
- for x in parents if hasattr(x, '_meta') and not x._meta.abstract)
- or (ObjectDoesNotExist,),
- module, attached_to=new_class))
- new_class.add_to_class('MultipleObjectsReturned', subclass_exception(str('MultipleObjectsReturned'),
- tuple(x.MultipleObjectsReturned
- for x in parents if hasattr(x, '_meta') and not x._meta.abstract)
- or (MultipleObjectsReturned,),
- module, attached_to=new_class))
- if base_meta and not base_meta.abstract:
- # Non-abstract child classes inherit some attributes from their
- # non-abstract parent (unless an ABC comes before it in the
- # method resolution order).
- if not hasattr(meta, 'ordering'):
- new_class._meta.ordering = base_meta.ordering
- if not hasattr(meta, 'get_latest_by'):
- new_class._meta.get_latest_by = base_meta.get_latest_by
-
- is_proxy = new_class._meta.proxy
-
- # If the model is a proxy, ensure that the base class
- # hasn't been swapped out.
- if is_proxy and base_meta and base_meta.swapped:
- raise TypeError("%s cannot proxy the swapped model '%s'." % (name, base_meta.swapped))
-
- if getattr(new_class, '_default_manager', None):
- if not is_proxy:
- # Multi-table inheritance doesn't inherit default manager from
- # parents.
- new_class._default_manager = None
- new_class._base_manager = None
- else:
- # Proxy classes do inherit parent's default manager, if none is
- # set explicitly.
- new_class._default_manager = new_class._default_manager._copy_to_model(new_class)
- new_class._base_manager = new_class._base_manager._copy_to_model(new_class)
-
- # Bail out early if we have already created this class.
- m = get_model(new_class._meta.app_label, name,
- seed_cache=False, only_installed=False)
- if m is not None:
- return m
-
- # Add all attributes to the class.
- for obj_name, obj in attrs.items():
- new_class.add_to_class(obj_name, obj)
-
- # All the fields of any type declared on this model
- new_fields = new_class._meta.local_fields + \
- new_class._meta.local_many_to_many + \
- new_class._meta.virtual_fields
- field_names = set([f.name for f in new_fields])
-
- # Basic setup for proxy models.
- if is_proxy:
- base = None
- for parent in [cls for cls in parents if hasattr(cls, '_meta')]:
- if parent._meta.abstract:
- if parent._meta.fields:
- raise TypeError("Abstract base class containing model fields not permitted for proxy model '%s'." % name)
- else:
- continue
- if base is not None:
- raise TypeError("Proxy model '%s' has more than one non-abstract model base class." % name)
- else:
- base = parent
- if base is None:
- raise TypeError("Proxy model '%s' has no non-abstract model base class." % name)
- if (new_class._meta.local_fields or
- new_class._meta.local_many_to_many):
- raise FieldError("Proxy model '%s' contains model fields." % name)
- new_class._meta.setup_proxy(base)
- new_class._meta.concrete_model = base._meta.concrete_model
- else:
- new_class._meta.concrete_model = new_class
-
- # Do the appropriate setup for any model parents.
- o2o_map = dict([(f.rel.to, f) for f in new_class._meta.local_fields
- if isinstance(f, OneToOneField)])
-
- for base in parents:
- original_base = base
- if not hasattr(base, '_meta'):
- # Things without _meta aren't functional models, so they're
- # uninteresting parents.
- continue
-
- parent_fields = base._meta.local_fields + base._meta.local_many_to_many
- # Check for clashes between locally declared fields and those
- # on the base classes (we cannot handle shadowed fields at the
- # moment).
- for field in parent_fields:
- if field.name in field_names:
- raise FieldError('Local field %r in class %r clashes '
- 'with field of similar name from '
- 'base class %r' %
- (field.name, name, base.__name__))
- if not base._meta.abstract:
- # Concrete classes...
- base = base._meta.concrete_model
- if base in o2o_map:
- field = o2o_map[base]
- elif not is_proxy:
- attr_name = '%s_ptr' % base._meta.model_name
- field = OneToOneField(base, name=attr_name,
- auto_created=True, parent_link=True)
- new_class.add_to_class(attr_name, field)
- else:
- field = None
- new_class._meta.parents[base] = field
- else:
- # .. and abstract ones.
- for field in parent_fields:
- new_class.add_to_class(field.name, copy.deepcopy(field))
-
- # Pass any non-abstract parent classes onto child.
- new_class._meta.parents.update(base._meta.parents)
-
- # Inherit managers from the abstract base classes.
- new_class.copy_managers(base._meta.abstract_managers)
-
- # Proxy models inherit the non-abstract managers from their base,
- # unless they have redefined any of them.
- if is_proxy:
- new_class.copy_managers(original_base._meta.concrete_managers)
-
- # Inherit virtual fields (like GenericForeignKey) from the parent
- # class
- for field in base._meta.virtual_fields:
- if base._meta.abstract and field.name in field_names:
- raise FieldError('Local field %r in class %r clashes '\
- 'with field of similar name from '\
- 'abstract base class %r' % \
- (field.name, name, base.__name__))
- new_class.add_to_class(field.name, copy.deepcopy(field))
-
- if abstract:
- # Abstract base models can't be instantiated and don't appear in
- # the list of models for an app. We do the final setup for them a
- # little differently from normal models.
- attr_meta.abstract = False
- new_class.Meta = attr_meta
- return new_class
-
- new_class._prepare()
- register_models(new_class._meta.app_label, new_class)
-
- # Because of the way imports happen (recursively), we may or may not be
- # the first time this model tries to register with the framework. There
- # should only be one class for each model, so we always return the
- # registered version.
- return get_model(new_class._meta.app_label, name,
- seed_cache=False, only_installed=False)
-
- def copy_managers(cls, base_managers):
- # This is in-place sorting of an Options attribute, but that's fine.
- base_managers.sort()
- for _, mgr_name, manager in base_managers:
- val = getattr(cls, mgr_name, None)
- if not val or val is manager:
- new_manager = manager._copy_to_model(cls)
- cls.add_to_class(mgr_name, new_manager)
-
- def add_to_class(cls, name, value):
- if hasattr(value, 'contribute_to_class'):
- value.contribute_to_class(cls, name)
- else:
- setattr(cls, name, value)
-
- def _prepare(cls):
- """
- Creates some methods once self._meta has been populated.
- """
- opts = cls._meta
- opts._prepare(cls)
-
- if opts.order_with_respect_to:
- cls.get_next_in_order = curry(cls._get_next_or_previous_in_order, is_next=True)
- cls.get_previous_in_order = curry(cls._get_next_or_previous_in_order, is_next=False)
-
- # defer creating accessors on the foreign class until we are
- # certain it has been created
- def make_foreign_order_accessors(field, model, cls):
- setattr(
- field.rel.to,
- 'get_%s_order' % cls.__name__.lower(),
- curry(method_get_order, cls)
- )
- setattr(
- field.rel.to,
- 'set_%s_order' % cls.__name__.lower(),
- curry(method_set_order, cls)
- )
- add_lazy_relation(
- cls,
- opts.order_with_respect_to,
- opts.order_with_respect_to.rel.to,
- make_foreign_order_accessors
- )
-
- # Give the class a docstring -- its definition.
- if cls.__doc__ is None:
- cls.__doc__ = "%s(%s)" % (cls.__name__, ", ".join([f.attname for f in opts.fields]))
-
- if hasattr(cls, 'get_absolute_url'):
- cls.get_absolute_url = update_wrapper(curry(get_absolute_url, opts, cls.get_absolute_url),
- cls.get_absolute_url)
-
- signals.class_prepared.send(sender=cls)
-
-
-class ModelState(object):
- """
- A class for storing instance state
- """
- def __init__(self, db=None):
- self.db = db
- # If true, uniqueness validation checks will consider this a new, as-yet-unsaved object.
- # Necessary for correct validation of new instances of objects with explicit (non-auto) PKs.
- # This impacts validation only; it has no effect on the actual save.
- self.adding = True
-
-
-class Model(six.with_metaclass(ModelBase)):
- _deferred = False
-
- def __init__(self, *args, **kwargs):
- signals.pre_init.send(sender=self.__class__, args=args, kwargs=kwargs)
-
- # Set up the storage for instance state
- self._state = ModelState()
-
- # There is a rather weird disparity here; if kwargs, it's set, then args
- # overrides it. It should be one or the other; don't duplicate the work
- # The reason for the kwargs check is that standard iterator passes in by
- # args, and instantiation for iteration is 33% faster.
- args_len = len(args)
- if args_len > len(self._meta.concrete_fields):
- # Daft, but matches old exception sans the err msg.
- raise IndexError("Number of args exceeds number of fields")
-
- if not kwargs:
- fields_iter = iter(self._meta.concrete_fields)
- # The ordering of the zip calls matter - zip throws StopIteration
- # when an iter throws it. So if the first iter throws it, the second
- # is *not* consumed. We rely on this, so don't change the order
- # without changing the logic.
- for val, field in zip(args, fields_iter):
- setattr(self, field.attname, val)
- else:
- # Slower, kwargs-ready version.
- fields_iter = iter(self._meta.fields)
- for val, field in zip(args, fields_iter):
- setattr(self, field.attname, val)
- kwargs.pop(field.name, None)
- # Maintain compatibility with existing calls.
- if isinstance(field.rel, ManyToOneRel):
- kwargs.pop(field.attname, None)
-
- # Now we're left with the unprocessed fields that *must* come from
- # keywords, or default.
-
- for field in fields_iter:
- is_related_object = False
- # This slightly odd construct is so that we can access any
- # data-descriptor object (DeferredAttribute) without triggering its
- # __get__ method.
- if (field.attname not in kwargs and
- (isinstance(self.__class__.__dict__.get(field.attname), DeferredAttribute)
- or field.column is None)):
- # This field will be populated on request.
- continue
- if kwargs:
- if isinstance(field.rel, ForeignObjectRel):
- try:
- # Assume object instance was passed in.
- rel_obj = kwargs.pop(field.name)
- is_related_object = True
- except KeyError:
- try:
- # Object instance wasn't passed in -- must be an ID.
- val = kwargs.pop(field.attname)
- except KeyError:
- val = field.get_default()
- else:
- # Object instance was passed in. Special case: You can
- # pass in "None" for related objects if it's allowed.
- if rel_obj is None and field.null:
- val = None
- else:
- try:
- val = kwargs.pop(field.attname)
- except KeyError:
- # This is done with an exception rather than the
- # default argument on pop because we don't want
- # get_default() to be evaluated, and then not used.
- # Refs #12057.
- val = field.get_default()
- else:
- val = field.get_default()
-
- if is_related_object:
- # If we are passed a related instance, set it using the
- # field.name instead of field.attname (e.g. "user" instead of
- # "user_id") so that the object gets properly cached (and type
- # checked) by the RelatedObjectDescriptor.
- setattr(self, field.name, rel_obj)
- else:
- setattr(self, field.attname, val)
-
- if kwargs:
- for prop in list(kwargs):
- try:
- if isinstance(getattr(self.__class__, prop), property):
- setattr(self, prop, kwargs.pop(prop))
- except AttributeError:
- pass
- if kwargs:
- raise TypeError("'%s' is an invalid keyword argument for this function" % list(kwargs)[0])
- super(Model, self).__init__()
- signals.post_init.send(sender=self.__class__, instance=self)
-
- def __repr__(self):
- try:
- u = six.text_type(self)
- except (UnicodeEncodeError, UnicodeDecodeError):
- u = '[Bad Unicode data]'
- return force_str('<%s: %s>' % (self.__class__.__name__, u))
-
- def __str__(self):
- if six.PY2 and hasattr(self, '__unicode__'):
- return force_text(self).encode('utf-8')
- return '%s object' % self.__class__.__name__
-
- def __eq__(self, other):
- return isinstance(other, self.__class__) and self._get_pk_val() == other._get_pk_val()
-
- def __ne__(self, other):
- return not self.__eq__(other)
-
- def __hash__(self):
- return hash(self._get_pk_val())
-
- def __reduce__(self):
- """
- Provides pickling support. Normally, this just dispatches to Python's
- standard handling. However, for models with deferred field loading, we
- need to do things manually, as they're dynamically created classes and
- only module-level classes can be pickled by the default path.
- """
- data = self.__dict__
- if not self._deferred:
- class_id = self._meta.app_label, self._meta.object_name
- return model_unpickle, (class_id, [], simple_class_factory), data
- defers = []
- for field in self._meta.fields:
- if isinstance(self.__class__.__dict__.get(field.attname),
- DeferredAttribute):
- defers.append(field.attname)
- model = self._meta.proxy_for_model
- class_id = model._meta.app_label, model._meta.object_name
- return (model_unpickle, (class_id, defers, deferred_class_factory), data)
-
- def _get_pk_val(self, meta=None):
- if not meta:
- meta = self._meta
- return getattr(self, meta.pk.attname)
-
- def _set_pk_val(self, value):
- return setattr(self, self._meta.pk.attname, value)
-
- pk = property(_get_pk_val, _set_pk_val)
-
- def serializable_value(self, field_name):
- """
- Returns the value of the field name for this instance. If the field is
- a foreign key, returns the id value, instead of the object. If there's
- no Field object with this name on the model, the model attribute's
- value is returned directly.
-
- Used to serialize a field's value (in the serializer, or form output,
- for example). Normally, you would just access the attribute directly
- and not use this method.
- """
- try:
- field = self._meta.get_field_by_name(field_name)[0]
- except FieldDoesNotExist:
- return getattr(self, field_name)
- return getattr(self, field.attname)
-
- def save(self, force_insert=False, force_update=False, using=None,
- update_fields=None):
- """
- Saves the current instance. Override this in a subclass if you want to
- control the saving process.
-
- The 'force_insert' and 'force_update' parameters can be used to insist
- that the "save" must be an SQL insert or update (or equivalent for
- non-SQL backends), respectively. Normally, they should not be set.
- """
- using = using or router.db_for_write(self.__class__, instance=self)
- if force_insert and (force_update or update_fields):
- raise ValueError("Cannot force both insert and updating in model saving.")
-
- if update_fields is not None:
- # If update_fields is empty, skip the save. We do also check for
- # no-op saves later on for inheritance cases. This bailout is
- # still needed for skipping signal sending.
- if len(update_fields) == 0:
- return
-
- update_fields = frozenset(update_fields)
- field_names = set()
-
- for field in self._meta.fields:
- if not field.primary_key:
- field_names.add(field.name)
-
- if field.name != field.attname:
- field_names.add(field.attname)
-
- non_model_fields = update_fields.difference(field_names)
-
- if non_model_fields:
- raise ValueError("The following fields do not exist in this "
- "model or are m2m fields: %s"
- % ', '.join(non_model_fields))
-
- # If saving to the same database, and this model is deferred, then
- # automatically do a "update_fields" save on the loaded fields.
- elif not force_insert and self._deferred and using == self._state.db:
- field_names = set()
- for field in self._meta.concrete_fields:
- if not field.primary_key and not hasattr(field, 'through'):
- field_names.add(field.attname)
- deferred_fields = [
- f.attname for f in self._meta.fields
- if f.attname not in self.__dict__
- and isinstance(self.__class__.__dict__[f.attname],
- DeferredAttribute)]
-
- loaded_fields = field_names.difference(deferred_fields)
- if loaded_fields:
- update_fields = frozenset(loaded_fields)
-
- self.save_base(using=using, force_insert=force_insert,
- force_update=force_update, update_fields=update_fields)
- save.alters_data = True
-
- def save_base(self, raw=False, force_insert=False,
- force_update=False, using=None, update_fields=None):
- """
- Handles the parts of saving which should be done only once per save,
- yet need to be done in raw saves, too. This includes some sanity
- checks and signal sending.
-
- The 'raw' argument is telling save_base not to save any parent
- models and not to do any changes to the values before save. This
- is used by fixture loading.
- """
- using = using or router.db_for_write(self.__class__, instance=self)
- assert not (force_insert and (force_update or update_fields))
- assert update_fields is None or len(update_fields) > 0
- cls = origin = self.__class__
- # Skip proxies, but keep the origin as the proxy model.
- if cls._meta.proxy:
- cls = cls._meta.concrete_model
- meta = cls._meta
- if not meta.auto_created:
- signals.pre_save.send(sender=origin, instance=self, raw=raw, using=using,
- update_fields=update_fields)
- with transaction.commit_on_success_unless_managed(using=using, savepoint=False):
- if not raw:
- self._save_parents(cls, using, update_fields)
- updated = self._save_table(raw, cls, force_insert, force_update, using, update_fields)
- # Store the database on which the object was saved
- self._state.db = using
- # Once saved, this is no longer a to-be-added instance.
- self._state.adding = False
-
- # Signal that the save is complete
- if not meta.auto_created:
- signals.post_save.send(sender=origin, instance=self, created=(not updated),
- update_fields=update_fields, raw=raw, using=using)
-
- save_base.alters_data = True
-
- def _save_parents(self, cls, using, update_fields):
- """
- Saves all the parents of cls using values from self.
- """
- meta = cls._meta
- for parent, field in meta.parents.items():
- # Make sure the link fields are synced between parent and self.
- if (field and getattr(self, parent._meta.pk.attname) is None
- and getattr(self, field.attname) is not None):
- setattr(self, parent._meta.pk.attname, getattr(self, field.attname))
- self._save_parents(cls=parent, using=using, update_fields=update_fields)
- self._save_table(cls=parent, using=using, update_fields=update_fields)
- # Set the parent's PK value to self.
- if field:
- setattr(self, field.attname, self._get_pk_val(parent._meta))
- # Since we didn't have an instance of the parent handy set
- # attname directly, bypassing the descriptor. Invalidate
- # the related object cache, in case it's been accidentally
- # populated. A fresh instance will be re-built from the
- # database if necessary.
- cache_name = field.get_cache_name()
- if hasattr(self, cache_name):
- delattr(self, cache_name)
-
- def _save_table(self, raw=False, cls=None, force_insert=False,
- force_update=False, using=None, update_fields=None):
- """
- Does the heavy-lifting involved in saving. Updates or inserts the data
- for a single table.
- """
- meta = cls._meta
- non_pks = [f for f in meta.local_concrete_fields if not f.primary_key]
-
- if update_fields:
- non_pks = [f for f in non_pks
- if f.name in update_fields or f.attname in update_fields]
-
- pk_val = self._get_pk_val(meta)
- pk_set = pk_val is not None
- if not pk_set and (force_update or update_fields):
- raise ValueError("Cannot force an update in save() with no primary key.")
- updated = False
- # If possible, try an UPDATE. If that doesn't update anything, do an INSERT.
- if pk_set and not force_insert:
- base_qs = cls._base_manager.using(using)
- values = [(f, None, (getattr(self, f.attname) if raw else f.pre_save(self, False)))
- for f in non_pks]
- forced_update = update_fields or force_update
- updated = self._do_update(base_qs, using, pk_val, values, update_fields,
- forced_update)
- if force_update and not updated:
- raise DatabaseError("Forced update did not affect any rows.")
- if update_fields and not updated:
- raise DatabaseError("Save with update_fields did not affect any rows.")
- if not updated:
- if meta.order_with_respect_to:
- # If this is a model with an order_with_respect_to
- # autopopulate the _order field
- field = meta.order_with_respect_to
- order_value = cls._base_manager.using(using).filter(
- **{field.name: getattr(self, field.attname)}).count()
- self._order = order_value
-
- fields = meta.local_concrete_fields
- if not pk_set:
- fields = [f for f in fields if not isinstance(f, AutoField)]
-
- update_pk = bool(meta.has_auto_field and not pk_set)
- result = self._do_insert(cls._base_manager, using, fields, update_pk, raw)
- if update_pk:
- setattr(self, meta.pk.attname, result)
- return updated
-
- def _do_update(self, base_qs, using, pk_val, values, update_fields, forced_update):
- """
- This method will try to update the model. If the model was updated (in
- the sense that an update query was done and a matching row was found
- from the DB) the method will return True.
- """
- filtered = base_qs.filter(pk=pk_val)
- if not values:
- # We can end up here when saving a model in inheritance chain where
- # update_fields doesn't target any field in current model. In that
- # case we just say the update succeeded. Another case ending up here
- # is a model with just PK - in that case check that the PK still
- # exists.
- return update_fields is not None or filtered.exists()
- if self._meta.select_on_save and not forced_update:
- if filtered.exists():
- filtered._update(values)
- return True
- else:
- return False
- return filtered._update(values) > 0
-
- def _do_insert(self, manager, using, fields, update_pk, raw):
- """
- Do an INSERT. If update_pk is defined then this method should return
- the new pk for the model.
- """
- return manager._insert([self], fields=fields, return_id=update_pk,
- using=using, raw=raw)
-
- def delete(self, using=None):
- using = using or router.db_for_write(self.__class__, instance=self)
- assert self._get_pk_val() is not None, "%s object can't be deleted because its %s attribute is set to None." % (self._meta.object_name, self._meta.pk.attname)
-
- collector = Collector(using=using)
- collector.collect([self])
- collector.delete()
-
- delete.alters_data = True
-
- def _get_FIELD_display(self, field):
- value = getattr(self, field.attname)
- return force_text(dict(field.flatchoices).get(value, value), strings_only=True)
-
- def _get_next_or_previous_by_FIELD(self, field, is_next, **kwargs):
- if not self.pk:
- raise ValueError("get_next/get_previous cannot be used on unsaved objects.")
- op = 'gt' if is_next else 'lt'
- order = '' if is_next else '-'
- param = force_text(getattr(self, field.attname))
- q = Q(**{'%s__%s' % (field.name, op): param})
- q = q | Q(**{field.name: param, 'pk__%s' % op: self.pk})
- qs = self.__class__._default_manager.using(self._state.db).filter(**kwargs).filter(q).order_by('%s%s' % (order, field.name), '%spk' % order)
- try:
- return qs[0]
- except IndexError:
- raise self.DoesNotExist("%s matching query does not exist." % self.__class__._meta.object_name)
-
- def _get_next_or_previous_in_order(self, is_next):
- cachename = "__%s_order_cache" % is_next
- if not hasattr(self, cachename):
- op = 'gt' if is_next else 'lt'
- order = '_order' if is_next else '-_order'
- order_field = self._meta.order_with_respect_to
- obj = self._default_manager.filter(**{
- order_field.name: getattr(self, order_field.attname)
- }).filter(**{
- '_order__%s' % op: self._default_manager.values('_order').filter(**{
- self._meta.pk.name: self.pk
- })
- }).order_by(order)[:1].get()
- setattr(self, cachename, obj)
- return getattr(self, cachename)
-
- def prepare_database_save(self, unused):
- if self.pk is None:
- raise ValueError("Unsaved model instance %r cannot be used in an ORM query." % self)
- return self.pk
-
- def clean(self):
- """
- Hook for doing any extra model-wide validation after clean() has been
- called on every field by self.clean_fields. Any ValidationError raised
- by this method will not be associated with a particular field; it will
- have a special-case association with the field defined by NON_FIELD_ERRORS.
- """
- pass
-
- def validate_unique(self, exclude=None):
- """
- Checks unique constraints on the model and raises ``ValidationError``
- if any failed.
- """
- unique_checks, date_checks = self._get_unique_checks(exclude=exclude)
-
- errors = self._perform_unique_checks(unique_checks)
- date_errors = self._perform_date_checks(date_checks)
-
- for k, v in date_errors.items():
- errors.setdefault(k, []).extend(v)
-
- if errors:
- raise ValidationError(errors)
-
- def _get_unique_checks(self, exclude=None):
- """
- Gather a list of checks to perform. Since validate_unique could be
- called from a ModelForm, some fields may have been excluded; we can't
- perform a unique check on a model that is missing fields involved
- in that check.
- Fields that did not validate should also be excluded, but they need
- to be passed in via the exclude argument.
- """
- if exclude is None:
- exclude = []
- unique_checks = []
-
- unique_togethers = [(self.__class__, self._meta.unique_together)]
- for parent_class in self._meta.parents.keys():
- if parent_class._meta.unique_together:
- unique_togethers.append((parent_class, parent_class._meta.unique_together))
-
- for model_class, unique_together in unique_togethers:
- for check in unique_together:
- for name in check:
- # If this is an excluded field, don't add this check.
- if name in exclude:
- break
- else:
- unique_checks.append((model_class, tuple(check)))
-
- # These are checks for the unique_for_<date/year/month>.
- date_checks = []
-
- # Gather a list of checks for fields declared as unique and add them to
- # the list of checks.
-
- fields_with_class = [(self.__class__, self._meta.local_fields)]
- for parent_class in self._meta.parents.keys():
- fields_with_class.append((parent_class, parent_class._meta.local_fields))
-
- for model_class, fields in fields_with_class:
- for f in fields:
- name = f.name
- if name in exclude:
- continue
- if f.unique:
- unique_checks.append((model_class, (name,)))
- if f.unique_for_date and f.unique_for_date not in exclude:
- date_checks.append((model_class, 'date', name, f.unique_for_date))
- if f.unique_for_year and f.unique_for_year not in exclude:
- date_checks.append((model_class, 'year', name, f.unique_for_year))
- if f.unique_for_month and f.unique_for_month not in exclude:
- date_checks.append((model_class, 'month', name, f.unique_for_month))
- return unique_checks, date_checks
-
- def _perform_unique_checks(self, unique_checks):
- errors = {}
-
- for model_class, unique_check in unique_checks:
- # Try to look up an existing object with the same values as this
- # object's values for all the unique field.
-
- lookup_kwargs = {}
- for field_name in unique_check:
- f = self._meta.get_field(field_name)
- lookup_value = getattr(self, f.attname)
- if lookup_value is None:
- # no value, skip the lookup
- continue
- if f.primary_key and not self._state.adding:
- # no need to check for unique primary key when editing
- continue
- lookup_kwargs[str(field_name)] = lookup_value
-
- # some fields were skipped, no reason to do the check
- if len(unique_check) != len(lookup_kwargs):
- continue
-
- qs = model_class._default_manager.filter(**lookup_kwargs)
-
- # Exclude the current object from the query if we are editing an
- # instance (as opposed to creating a new one)
- # Note that we need to use the pk as defined by model_class, not
- # self.pk. These can be different fields because model inheritance
- # allows single model to have effectively multiple primary keys.
- # Refs #17615.
- model_class_pk = self._get_pk_val(model_class._meta)
- if not self._state.adding and model_class_pk is not None:
- qs = qs.exclude(pk=model_class_pk)
- if qs.exists():
- if len(unique_check) == 1:
- key = unique_check[0]
- else:
- key = NON_FIELD_ERRORS
- errors.setdefault(key, []).append(self.unique_error_message(model_class, unique_check))
-
- return errors
-
- def _perform_date_checks(self, date_checks):
- errors = {}
- for model_class, lookup_type, field, unique_for in date_checks:
- lookup_kwargs = {}
- # there's a ticket to add a date lookup, we can remove this special
- # case if that makes it's way in
- date = getattr(self, unique_for)
- if date is None:
- continue
- if lookup_type == 'date':
- lookup_kwargs['%s__day' % unique_for] = date.day
- lookup_kwargs['%s__month' % unique_for] = date.month
- lookup_kwargs['%s__year' % unique_for] = date.year
- else:
- lookup_kwargs['%s__%s' % (unique_for, lookup_type)] = getattr(date, lookup_type)
- lookup_kwargs[field] = getattr(self, field)
-
- qs = model_class._default_manager.filter(**lookup_kwargs)
- # Exclude the current object from the query if we are editing an
- # instance (as opposed to creating a new one)
- if not self._state.adding and self.pk is not None:
- qs = qs.exclude(pk=self.pk)
-
- if qs.exists():
- errors.setdefault(field, []).append(
- self.date_error_message(lookup_type, field, unique_for)
- )
- return errors
-
- def date_error_message(self, lookup_type, field, unique_for):
- opts = self._meta
- return _("%(field_name)s must be unique for %(date_field)s %(lookup)s.") % {
- 'field_name': six.text_type(capfirst(opts.get_field(field).verbose_name)),
- 'date_field': six.text_type(capfirst(opts.get_field(unique_for).verbose_name)),
- 'lookup': lookup_type,
- }
-
- def unique_error_message(self, model_class, unique_check):
- opts = model_class._meta
- model_name = capfirst(opts.verbose_name)
-
- # A unique field
- if len(unique_check) == 1:
- field_name = unique_check[0]
- field = opts.get_field(field_name)
- field_label = capfirst(field.verbose_name)
- # Insert the error into the error dict, very sneaky
- return field.error_messages['unique'] % {
- 'model_name': six.text_type(model_name),
- 'field_label': six.text_type(field_label)
- }
- # unique_together
- else:
- field_labels = [capfirst(opts.get_field(f).verbose_name) for f in unique_check]
- field_labels = get_text_list(field_labels, _('and'))
- return _("%(model_name)s with this %(field_label)s already exists.") % {
- 'model_name': six.text_type(model_name),
- 'field_label': six.text_type(field_labels)
- }
-
- def full_clean(self, exclude=None, validate_unique=True):
- """
- Calls clean_fields, clean, and validate_unique, on the model,
- and raises a ``ValidationError`` for any errors that occurred.
- """
- errors = {}
- if exclude is None:
- exclude = []
-
- try:
- self.clean_fields(exclude=exclude)
- except ValidationError as e:
- errors = e.update_error_dict(errors)
-
- # Form.clean() is run even if other validation fails, so do the
- # same with Model.clean() for consistency.
- try:
- self.clean()
- except ValidationError as e:
- errors = e.update_error_dict(errors)
-
- # Run unique checks, but only for fields that passed validation.
- if validate_unique:
- for name in errors.keys():
- if name != NON_FIELD_ERRORS and name not in exclude:
- exclude.append(name)
- try:
- self.validate_unique(exclude=exclude)
- except ValidationError as e:
- errors = e.update_error_dict(errors)
-
- if errors:
- raise ValidationError(errors)
-
- def clean_fields(self, exclude=None):
- """
- Cleans all fields and raises a ValidationError containing message_dict
- of all validation errors if any occur.
- """
- if exclude is None:
- exclude = []
-
- errors = {}
- for f in self._meta.fields:
- if f.name in exclude:
- continue
- # Skip validation for empty fields with blank=True. The developer
- # is responsible for making sure they have a valid value.
- raw_value = getattr(self, f.attname)
- if f.blank and raw_value in f.empty_values:
- continue
- try:
- setattr(self, f.attname, f.clean(raw_value, self))
- except ValidationError as e:
- errors[f.name] = e.error_list
-
- if errors:
- raise ValidationError(errors)
-
-
-############################################
-# HELPER FUNCTIONS (CURRIED MODEL METHODS) #
-############################################
-
-# ORDERING METHODS #########################
-
-def method_set_order(ordered_obj, self, id_list, using=None):
- if using is None:
- using = DEFAULT_DB_ALIAS
- rel_val = getattr(self, ordered_obj._meta.order_with_respect_to.rel.field_name)
- order_name = ordered_obj._meta.order_with_respect_to.name
- # FIXME: It would be nice if there was an "update many" version of update
- # for situations like this.
- with transaction.commit_on_success_unless_managed(using=using):
- for i, j in enumerate(id_list):
- ordered_obj.objects.filter(**{'pk': j, order_name: rel_val}).update(_order=i)
-
-
-def method_get_order(ordered_obj, self):
- rel_val = getattr(self, ordered_obj._meta.order_with_respect_to.rel.field_name)
- order_name = ordered_obj._meta.order_with_respect_to.name
- pk_name = ordered_obj._meta.pk.name
- return [r[pk_name] for r in
- ordered_obj.objects.filter(**{order_name: rel_val}).values(pk_name)]
-
-
-##############################################
-# HELPER FUNCTIONS (CURRIED MODEL FUNCTIONS) #
-##############################################
-
-def get_absolute_url(opts, func, self, *args, **kwargs):
- return settings.ABSOLUTE_URL_OVERRIDES.get('%s.%s' % (opts.app_label, opts.model_name), func)(self, *args, **kwargs)
-
-
-########
-# MISC #
-########
-
-class Empty(object):
- pass
-
-def simple_class_factory(model, attrs):
- """
- Needed for dynamic classes.
- """
- return model
-
-def model_unpickle(model_id, attrs, factory):
- """
- Used to unpickle Model subclasses with deferred fields.
- """
- if isinstance(model_id, tuple):
- model = get_model(*model_id)
- else:
- # Backwards compat - the model was cached directly in earlier versions.
- model = model_id
- cls = factory(model, attrs)
- return cls.__new__(cls)
-model_unpickle.__safe_for_unpickle__ = True
-
-
-def unpickle_inner_exception(klass, exception_name):
- # Get the exception class from the class it is attached to:
- exception = getattr(klass, exception_name)
- return exception.__new__(exception)
diff --git a/lib/python2.7/site-packages/django/db/models/constants.py b/lib/python2.7/site-packages/django/db/models/constants.py
deleted file mode 100644
index a7e6c25..0000000
--- a/lib/python2.7/site-packages/django/db/models/constants.py
+++ /dev/null
@@ -1,6 +0,0 @@
-"""
-Constants used across the ORM in general.
-"""
-
-# Separator used to split filter strings apart.
-LOOKUP_SEP = '__'
diff --git a/lib/python2.7/site-packages/django/db/models/deletion.py b/lib/python2.7/site-packages/django/db/models/deletion.py
deleted file mode 100644
index e0bfb9d..0000000
--- a/lib/python2.7/site-packages/django/db/models/deletion.py
+++ /dev/null
@@ -1,292 +0,0 @@
-from operator import attrgetter
-
-from django.db import connections, transaction, IntegrityError
-from django.db.models import signals, sql
-from django.utils.datastructures import SortedDict
-from django.utils import six
-
-
-class ProtectedError(IntegrityError):
- def __init__(self, msg, protected_objects):
- self.protected_objects = protected_objects
- super(ProtectedError, self).__init__(msg, protected_objects)
-
-
-def CASCADE(collector, field, sub_objs, using):
- collector.collect(sub_objs, source=field.rel.to,
- source_attr=field.name, nullable=field.null)
- if field.null and not connections[using].features.can_defer_constraint_checks:
- collector.add_field_update(field, None, sub_objs)
-
-
-def PROTECT(collector, field, sub_objs, using):
- raise ProtectedError("Cannot delete some instances of model '%s' because "
- "they are referenced through a protected foreign key: '%s.%s'" % (
- field.rel.to.__name__, sub_objs[0].__class__.__name__, field.name
- ),
- sub_objs
- )
-
-
-def SET(value):
- if callable(value):
- def set_on_delete(collector, field, sub_objs, using):
- collector.add_field_update(field, value(), sub_objs)
- else:
- def set_on_delete(collector, field, sub_objs, using):
- collector.add_field_update(field, value, sub_objs)
- return set_on_delete
-
-
-SET_NULL = SET(None)
-
-
-def SET_DEFAULT(collector, field, sub_objs, using):
- collector.add_field_update(field, field.get_default(), sub_objs)
-
-
-def DO_NOTHING(collector, field, sub_objs, using):
- pass
-
-
-class Collector(object):
- def __init__(self, using):
- self.using = using
- # Initially, {model: set([instances])}, later values become lists.
- self.data = {}
- self.field_updates = {} # {model: {(field, value): set([instances])}}
- # fast_deletes is a list of queryset-likes that can be deleted without
- # fetching the objects into memory.
- self.fast_deletes = []
-
- # Tracks deletion-order dependency for databases without transactions
- # or ability to defer constraint checks. Only concrete model classes
- # should be included, as the dependencies exist only between actual
- # database tables; proxy models are represented here by their concrete
- # parent.
- self.dependencies = {} # {model: set([models])}
-
- def add(self, objs, source=None, nullable=False, reverse_dependency=False):
- """
- Adds 'objs' to the collection of objects to be deleted. If the call is
- the result of a cascade, 'source' should be the model that caused it,
- and 'nullable' should be set to True if the relation can be null.
-
- Returns a list of all objects that were not already collected.
- """
- if not objs:
- return []
- new_objs = []
- model = objs[0].__class__
- instances = self.data.setdefault(model, set())
- for obj in objs:
- if obj not in instances:
- new_objs.append(obj)
- instances.update(new_objs)
- # Nullable relationships can be ignored -- they are nulled out before
- # deleting, and therefore do not affect the order in which objects have
- # to be deleted.
- if source is not None and not nullable:
- if reverse_dependency:
- source, model = model, source
- self.dependencies.setdefault(
- source._meta.concrete_model, set()).add(model._meta.concrete_model)
- return new_objs
-
- def add_field_update(self, field, value, objs):
- """
- Schedules a field update. 'objs' must be a homogenous iterable
- collection of model instances (e.g. a QuerySet).
- """
- if not objs:
- return
- model = objs[0].__class__
- self.field_updates.setdefault(
- model, {}).setdefault(
- (field, value), set()).update(objs)
-
- def can_fast_delete(self, objs, from_field=None):
- """
- Determines if the objects in the given queryset-like can be
- fast-deleted. This can be done if there are no cascades, no
- parents and no signal listeners for the object class.
-
- The 'from_field' tells where we are coming from - we need this to
- determine if the objects are in fact to be deleted. Allows also
- skipping parent -> child -> parent chain preventing fast delete of
- the child.
- """
- if from_field and from_field.rel.on_delete is not CASCADE:
- return False
- if not (hasattr(objs, 'model') and hasattr(objs, '_raw_delete')):
- return False
- model = objs.model
- if (signals.pre_delete.has_listeners(model)
- or signals.post_delete.has_listeners(model)
- or signals.m2m_changed.has_listeners(model)):
- return False
- # The use of from_field comes from the need to avoid cascade back to
- # parent when parent delete is cascading to child.
- opts = model._meta
- if any(link != from_field for link in opts.concrete_model._meta.parents.values()):
- return False
- # Foreign keys pointing to this model, both from m2m and other
- # models.
- for related in opts.get_all_related_objects(
- include_hidden=True, include_proxy_eq=True):
- if related.field.rel.on_delete is not DO_NOTHING:
- return False
- # GFK deletes
- for relation in opts.many_to_many:
- if not relation.rel.through:
- return False
- return True
-
- def collect(self, objs, source=None, nullable=False, collect_related=True,
- source_attr=None, reverse_dependency=False):
- """
- Adds 'objs' to the collection of objects to be deleted as well as all
- parent instances. 'objs' must be a homogenous iterable collection of
- model instances (e.g. a QuerySet). If 'collect_related' is True,
- related objects will be handled by their respective on_delete handler.
-
- If the call is the result of a cascade, 'source' should be the model
- that caused it and 'nullable' should be set to True, if the relation
- can be null.
-
- If 'reverse_dependency' is True, 'source' will be deleted before the
- current model, rather than after. (Needed for cascading to parent
- models, the one case in which the cascade follows the forwards
- direction of an FK rather than the reverse direction.)
- """
- if self.can_fast_delete(objs):
- self.fast_deletes.append(objs)
- return
- new_objs = self.add(objs, source, nullable,
- reverse_dependency=reverse_dependency)
- if not new_objs:
- return
-
- model = new_objs[0].__class__
-
- # Recursively collect concrete model's parent models, but not their
- # related objects. These will be found by meta.get_all_related_objects()
- concrete_model = model._meta.concrete_model
- for ptr in six.itervalues(concrete_model._meta.parents):
- if ptr:
- # FIXME: This seems to be buggy and execute a query for each
- # parent object fetch. We have the parent data in the obj,
- # but we don't have a nice way to turn that data into parent
- # object instance.
- parent_objs = [getattr(obj, ptr.name) for obj in new_objs]
- self.collect(parent_objs, source=model,
- source_attr=ptr.rel.related_name,
- collect_related=False,
- reverse_dependency=True)
-
- if collect_related:
- for related in model._meta.get_all_related_objects(
- include_hidden=True, include_proxy_eq=True):
- field = related.field
- if field.rel.on_delete == DO_NOTHING:
- continue
- sub_objs = self.related_objects(related, new_objs)
- if self.can_fast_delete(sub_objs, from_field=field):
- self.fast_deletes.append(sub_objs)
- elif sub_objs:
- field.rel.on_delete(self, field, sub_objs, self.using)
- for field in model._meta.virtual_fields:
- if hasattr(field, 'bulk_related_objects'):
- # Its something like generic foreign key.
- sub_objs = field.bulk_related_objects(new_objs, self.using)
- self.collect(sub_objs,
- source=model,
- source_attr=field.rel.related_name,
- nullable=True)
-
- def related_objects(self, related, objs):
- """
- Gets a QuerySet of objects related to ``objs`` via the relation ``related``.
-
- """
- return related.model._base_manager.using(self.using).filter(
- **{"%s__in" % related.field.name: objs}
- )
-
- def instances_with_model(self):
- for model, instances in six.iteritems(self.data):
- for obj in instances:
- yield model, obj
-
- def sort(self):
- sorted_models = []
- concrete_models = set()
- models = list(self.data)
- while len(sorted_models) < len(models):
- found = False
- for model in models:
- if model in sorted_models:
- continue
- dependencies = self.dependencies.get(model._meta.concrete_model)
- if not (dependencies and dependencies.difference(concrete_models)):
- sorted_models.append(model)
- concrete_models.add(model._meta.concrete_model)
- found = True
- if not found:
- return
- self.data = SortedDict([(model, self.data[model])
- for model in sorted_models])
-
- def delete(self):
- # sort instance collections
- for model, instances in self.data.items():
- self.data[model] = sorted(instances, key=attrgetter("pk"))
-
- # if possible, bring the models in an order suitable for databases that
- # don't support transactions or cannot defer constraint checks until the
- # end of a transaction.
- self.sort()
-
- with transaction.commit_on_success_unless_managed(using=self.using):
- # send pre_delete signals
- for model, obj in self.instances_with_model():
- if not model._meta.auto_created:
- signals.pre_delete.send(
- sender=model, instance=obj, using=self.using
- )
-
- # fast deletes
- for qs in self.fast_deletes:
- qs._raw_delete(using=self.using)
-
- # update fields
- for model, instances_for_fieldvalues in six.iteritems(self.field_updates):
- query = sql.UpdateQuery(model)
- for (field, value), instances in six.iteritems(instances_for_fieldvalues):
- query.update_batch([obj.pk for obj in instances],
- {field.name: value}, self.using)
-
- # reverse instance collections
- for instances in six.itervalues(self.data):
- instances.reverse()
-
- # delete instances
- for model, instances in six.iteritems(self.data):
- query = sql.DeleteQuery(model)
- pk_list = [obj.pk for obj in instances]
- query.delete_batch(pk_list, self.using)
-
- if not model._meta.auto_created:
- for obj in instances:
- signals.post_delete.send(
- sender=model, instance=obj, using=self.using
- )
-
- # update collected instances
- for model, instances_for_fieldvalues in six.iteritems(self.field_updates):
- for (field, value), instances in six.iteritems(instances_for_fieldvalues):
- for obj in instances:
- setattr(obj, field.attname, value)
- for model, instances in six.iteritems(self.data):
- for instance in instances:
- setattr(instance, model._meta.pk.attname, None)
diff --git a/lib/python2.7/site-packages/django/db/models/expressions.py b/lib/python2.7/site-packages/django/db/models/expressions.py
deleted file mode 100644
index 6e0f3c4..0000000
--- a/lib/python2.7/site-packages/django/db/models/expressions.py
+++ /dev/null
@@ -1,186 +0,0 @@
-import datetime
-
-from django.db.models.aggregates import refs_aggregate
-from django.db.models.constants import LOOKUP_SEP
-from django.utils import tree
-
-class ExpressionNode(tree.Node):
- """
- Base class for all query expressions.
- """
- # Arithmetic connectors
- ADD = '+'
- SUB = '-'
- MUL = '*'
- DIV = '/'
- MOD = '%%' # This is a quoted % operator - it is quoted
- # because it can be used in strings that also
- # have parameter substitution.
-
- # Bitwise operators - note that these are generated by .bitand()
- # and .bitor(), the '&' and '|' are reserved for boolean operator
- # usage.
- BITAND = '&'
- BITOR = '|'
-
- def __init__(self, children=None, connector=None, negated=False):
- if children is not None and len(children) > 1 and connector is None:
- raise TypeError('You have to specify a connector.')
- super(ExpressionNode, self).__init__(children, connector, negated)
-
- def _combine(self, other, connector, reversed, node=None):
- if isinstance(other, datetime.timedelta):
- return DateModifierNode([self, other], connector)
-
- if reversed:
- obj = ExpressionNode([other], connector)
- obj.add(node or self, connector)
- else:
- obj = node or ExpressionNode([self], connector)
- obj.add(other, connector)
- return obj
-
- def contains_aggregate(self, existing_aggregates):
- if self.children:
- return any(child.contains_aggregate(existing_aggregates)
- for child in self.children
- if hasattr(child, 'contains_aggregate'))
- else:
- return refs_aggregate(self.name.split(LOOKUP_SEP),
- existing_aggregates)
-
- def prepare_database_save(self, unused):
- return self
-
- ###################
- # VISITOR METHODS #
- ###################
-
- def prepare(self, evaluator, query, allow_joins):
- return evaluator.prepare_node(self, query, allow_joins)
-
- def evaluate(self, evaluator, qn, connection):
- return evaluator.evaluate_node(self, qn, connection)
-
- #############
- # OPERATORS #
- #############
-
- def __add__(self, other):
- return self._combine(other, self.ADD, False)
-
- def __sub__(self, other):
- return self._combine(other, self.SUB, False)
-
- def __mul__(self, other):
- return self._combine(other, self.MUL, False)
-
- def __truediv__(self, other):
- return self._combine(other, self.DIV, False)
-
- def __div__(self, other): # Python 2 compatibility
- return type(self).__truediv__(self, other)
-
- def __mod__(self, other):
- return self._combine(other, self.MOD, False)
-
- def __and__(self, other):
- raise NotImplementedError(
- "Use .bitand() and .bitor() for bitwise logical operations."
- )
-
- def bitand(self, other):
- return self._combine(other, self.BITAND, False)
-
- def __or__(self, other):
- raise NotImplementedError(
- "Use .bitand() and .bitor() for bitwise logical operations."
- )
-
- def bitor(self, other):
- return self._combine(other, self.BITOR, False)
-
- def __radd__(self, other):
- return self._combine(other, self.ADD, True)
-
- def __rsub__(self, other):
- return self._combine(other, self.SUB, True)
-
- def __rmul__(self, other):
- return self._combine(other, self.MUL, True)
-
- def __rtruediv__(self, other):
- return self._combine(other, self.DIV, True)
-
- def __rdiv__(self, other): # Python 2 compatibility
- return type(self).__rtruediv__(self, other)
-
- def __rmod__(self, other):
- return self._combine(other, self.MOD, True)
-
- def __rand__(self, other):
- raise NotImplementedError(
- "Use .bitand() and .bitor() for bitwise logical operations."
- )
-
- def __ror__(self, other):
- raise NotImplementedError(
- "Use .bitand() and .bitor() for bitwise logical operations."
- )
-
-class F(ExpressionNode):
- """
- An expression representing the value of the given field.
- """
- def __init__(self, name):
- super(F, self).__init__(None, None, False)
- self.name = name
-
- def __deepcopy__(self, memodict):
- obj = super(F, self).__deepcopy__(memodict)
- obj.name = self.name
- return obj
-
- def prepare(self, evaluator, query, allow_joins):
- return evaluator.prepare_leaf(self, query, allow_joins)
-
- def evaluate(self, evaluator, qn, connection):
- return evaluator.evaluate_leaf(self, qn, connection)
-
-class DateModifierNode(ExpressionNode):
- """
- Node that implements the following syntax:
- filter(end_date__gt=F('start_date') + datetime.timedelta(days=3, seconds=200))
-
- which translates into:
- POSTGRES:
- WHERE end_date > (start_date + INTERVAL '3 days 200 seconds')
-
- MYSQL:
- WHERE end_date > (start_date + INTERVAL '3 0:0:200:0' DAY_MICROSECOND)
-
- ORACLE:
- WHERE end_date > (start_date + INTERVAL '3 00:03:20.000000' DAY(1) TO SECOND(6))
-
- SQLITE:
- WHERE end_date > django_format_dtdelta(start_date, "+" "3", "200", "0")
- (A custom function is used in order to preserve six digits of fractional
- second information on sqlite, and to format both date and datetime values.)
-
- Note that microsecond comparisons are not well supported with MySQL, since
- MySQL does not store microsecond information.
-
- Only adding and subtracting timedeltas is supported, attempts to use other
- operations raise a TypeError.
- """
- def __init__(self, children, connector, negated=False):
- if len(children) != 2:
- raise TypeError('Must specify a node and a timedelta.')
- if not isinstance(children[1], datetime.timedelta):
- raise TypeError('Second child must be a timedelta.')
- if connector not in (self.ADD, self.SUB):
- raise TypeError('Connector must be + or -, not %s' % connector)
- super(DateModifierNode, self).__init__(children, connector, negated)
-
- def evaluate(self, evaluator, qn, connection):
- return evaluator.evaluate_date_modifier_node(self, qn, connection)
diff --git a/lib/python2.7/site-packages/django/db/models/fields/__init__.py b/lib/python2.7/site-packages/django/db/models/fields/__init__.py
deleted file mode 100644
index c10e2b1..0000000
--- a/lib/python2.7/site-packages/django/db/models/fields/__init__.py
+++ /dev/null
@@ -1,1438 +0,0 @@
-from __future__ import unicode_literals
-
-import copy
-import datetime
-import decimal
-import math
-import warnings
-from base64 import b64decode, b64encode
-from itertools import tee
-
-from django.db import connection
-from django.db.models.loading import get_model
-from django.db.models.query_utils import QueryWrapper
-from django.conf import settings
-from django import forms
-from django.core import exceptions, validators
-from django.utils.datastructures import DictWrapper
-from django.utils.dateparse import parse_date, parse_datetime, parse_time
-from django.utils.functional import curry, total_ordering
-from django.utils.itercompat import is_iterator
-from django.utils.text import capfirst
-from django.utils import timezone
-from django.utils.translation import ugettext_lazy as _
-from django.utils.encoding import smart_text, force_text, force_bytes
-from django.utils.ipv6 import clean_ipv6_address
-from django.utils import six
-
-class Empty(object):
- pass
-
-class NOT_PROVIDED:
- pass
-
-# The values to use for "blank" in SelectFields. Will be appended to the start
-# of most "choices" lists.
-BLANK_CHOICE_DASH = [("", "---------")]
-
-def _load_field(app_label, model_name, field_name):
- return get_model(app_label, model_name)._meta.get_field_by_name(field_name)[0]
-
-class FieldDoesNotExist(Exception):
- pass
-
-# A guide to Field parameters:
-#
-# * name: The name of the field specifed in the model.
-# * attname: The attribute to use on the model object. This is the same as
-# "name", except in the case of ForeignKeys, where "_id" is
-# appended.
-# * db_column: The db_column specified in the model (or None).
-# * column: The database column for this field. This is the same as
-# "attname", except if db_column is specified.
-#
-# Code that introspects values, or does other dynamic things, should use
-# attname. For example, this gets the primary key value of object "obj":
-#
-# getattr(obj, opts.pk.attname)
-
-def _empty(of_cls):
- new = Empty()
- new.__class__ = of_cls
- return new
-
-@total_ordering
-class Field(object):
- """Base class for all field types"""
-
- # Designates whether empty strings fundamentally are allowed at the
- # database level.
- empty_strings_allowed = True
- empty_values = list(validators.EMPTY_VALUES)
-
- # These track each time a Field instance is created. Used to retain order.
- # The auto_creation_counter is used for fields that Django implicitly
- # creates, creation_counter is used for all user-specified fields.
- creation_counter = 0
- auto_creation_counter = -1
- default_validators = [] # Default set of validators
- default_error_messages = {
- 'invalid_choice': _('Value %(value)r is not a valid choice.'),
- 'null': _('This field cannot be null.'),
- 'blank': _('This field cannot be blank.'),
- 'unique': _('%(model_name)s with this %(field_label)s '
- 'already exists.'),
- }
-
- # Generic field type description, usually overriden by subclasses
- def _description(self):
- return _('Field of type: %(field_type)s') % {
- 'field_type': self.__class__.__name__
- }
- description = property(_description)
-
- def __init__(self, verbose_name=None, name=None, primary_key=False,
- max_length=None, unique=False, blank=False, null=False,
- db_index=False, rel=None, default=NOT_PROVIDED, editable=True,
- serialize=True, unique_for_date=None, unique_for_month=None,
- unique_for_year=None, choices=None, help_text='', db_column=None,
- db_tablespace=None, auto_created=False, validators=[],
- error_messages=None):
- self.name = name
- self.verbose_name = verbose_name
- self.primary_key = primary_key
- self.max_length, self._unique = max_length, unique
- self.blank, self.null = blank, null
- self.rel = rel
- self.default = default
- self.editable = editable
- self.serialize = serialize
- self.unique_for_date, self.unique_for_month = (unique_for_date,
- unique_for_month)
- self.unique_for_year = unique_for_year
- self._choices = choices or []
- self.help_text = help_text
- self.db_column = db_column
- self.db_tablespace = db_tablespace or settings.DEFAULT_INDEX_TABLESPACE
- self.auto_created = auto_created
-
- # Set db_index to True if the field has a relationship and doesn't
- # explicitly set db_index.
- self.db_index = db_index
-
- # Adjust the appropriate creation counter, and save our local copy.
- if auto_created:
- self.creation_counter = Field.auto_creation_counter
- Field.auto_creation_counter -= 1
- else:
- self.creation_counter = Field.creation_counter
- Field.creation_counter += 1
-
- self.validators = self.default_validators + validators
-
- messages = {}
- for c in reversed(self.__class__.__mro__):
- messages.update(getattr(c, 'default_error_messages', {}))
- messages.update(error_messages or {})
- self.error_messages = messages
-
- def __eq__(self, other):
- # Needed for @total_ordering
- if isinstance(other, Field):
- return self.creation_counter == other.creation_counter
- return NotImplemented
-
- def __lt__(self, other):
- # This is needed because bisect does not take a comparison function.
- if isinstance(other, Field):
- return self.creation_counter < other.creation_counter
- return NotImplemented
-
- def __hash__(self):
- return hash(self.creation_counter)
-
- def __deepcopy__(self, memodict):
- # We don't have to deepcopy very much here, since most things are not
- # intended to be altered after initial creation.
- obj = copy.copy(self)
- if self.rel:
- obj.rel = copy.copy(self.rel)
- if hasattr(self.rel, 'field') and self.rel.field is self:
- obj.rel.field = obj
- memodict[id(self)] = obj
- return obj
-
- def __copy__(self):
- # We need to avoid hitting __reduce__, so define this
- # slightly weird copy construct.
- obj = Empty()
- obj.__class__ = self.__class__
- obj.__dict__ = self.__dict__.copy()
- return obj
-
- def __reduce__(self):
- """
- Pickling should return the model._meta.fields instance of the field,
- not a new copy of that field. So, we use the app cache to load the
- model and then the field back.
- """
- if not hasattr(self, 'model'):
- # Fields are sometimes used without attaching them to models (for
- # example in aggregation). In this case give back a plain field
- # instance. The code below will create a new empty instance of
- # class self.__class__, then update its dict with self.__dict__
- # values - so, this is very close to normal pickle.
- return _empty, (self.__class__,), self.__dict__
- if self.model._deferred:
- # Deferred model will not be found from the app cache. This could
- # be fixed by reconstructing the deferred model on unpickle.
- raise RuntimeError("Fields of deferred models can't be reduced")
- return _load_field, (self.model._meta.app_label, self.model._meta.object_name,
- self.name)
-
- def to_python(self, value):
- """
- Converts the input value into the expected Python data type, raising
- django.core.exceptions.ValidationError if the data can't be converted.
- Returns the converted value. Subclasses should override this.
- """
- return value
-
- def run_validators(self, value):
- if value in self.empty_values:
- return
-
- errors = []
- for v in self.validators:
- try:
- v(value)
- except exceptions.ValidationError as e:
- if hasattr(e, 'code') and e.code in self.error_messages:
- e.message = self.error_messages[e.code]
- errors.extend(e.error_list)
-
- if errors:
- raise exceptions.ValidationError(errors)
-
- def validate(self, value, model_instance):
- """
- Validates value and throws ValidationError. Subclasses should override
- this to provide validation logic.
- """
- if not self.editable:
- # Skip validation for non-editable fields.
- return
-
- if self._choices and value not in self.empty_values:
- for option_key, option_value in self.choices:
- if isinstance(option_value, (list, tuple)):
- # This is an optgroup, so look inside the group for
- # options.
- for optgroup_key, optgroup_value in option_value:
- if value == optgroup_key:
- return
- elif value == option_key:
- return
- raise exceptions.ValidationError(
- self.error_messages['invalid_choice'],
- code='invalid_choice',
- params={'value': value},
- )
-
- if value is None and not self.null:
- raise exceptions.ValidationError(self.error_messages['null'], code='null')
-
- if not self.blank and value in self.empty_values:
- raise exceptions.ValidationError(self.error_messages['blank'], code='blank')
-
- def clean(self, value, model_instance):
- """
- Convert the value's type and run validation. Validation errors
- from to_python and validate are propagated. The correct value is
- returned if no error is raised.
- """
- value = self.to_python(value)
- self.validate(value, model_instance)
- self.run_validators(value)
- return value
-
- def db_type(self, connection):
- """
- Returns the database column data type for this field, for the provided
- connection.
- """
- # The default implementation of this method looks at the
- # backend-specific DATA_TYPES dictionary, looking up the field by its
- # "internal type".
- #
- # A Field class can implement the get_internal_type() method to specify
- # which *preexisting* Django Field class it's most similar to -- i.e.,
- # a custom field might be represented by a TEXT column type, which is
- # the same as the TextField Django field type, which means the custom
- # field's get_internal_type() returns 'TextField'.
- #
- # But the limitation of the get_internal_type() / data_types approach
- # is that it cannot handle database column types that aren't already
- # mapped to one of the built-in Django field types. In this case, you
- # can implement db_type() instead of get_internal_type() to specify
- # exactly which wacky database column type you want to use.
- data = DictWrapper(self.__dict__, connection.ops.quote_name, "qn_")
- try:
- return (connection.creation.data_types[self.get_internal_type()]
- % data)
- except KeyError:
- return None
-
- @property
- def unique(self):
- return self._unique or self.primary_key
-
- def set_attributes_from_name(self, name):
- if not self.name:
- self.name = name
- self.attname, self.column = self.get_attname_column()
- if self.verbose_name is None and self.name:
- self.verbose_name = self.name.replace('_', ' ')
-
- def contribute_to_class(self, cls, name, virtual_only=False):
- self.set_attributes_from_name(name)
- self.model = cls
- if virtual_only:
- cls._meta.add_virtual_field(self)
- else:
- cls._meta.add_field(self)
- if self.choices:
- setattr(cls, 'get_%s_display' % self.name,
- curry(cls._get_FIELD_display, field=self))
-
- def get_attname(self):
- return self.name
-
- def get_attname_column(self):
- attname = self.get_attname()
- column = self.db_column or attname
- return attname, column
-
- def get_cache_name(self):
- return '_%s_cache' % self.name
-
- def get_internal_type(self):
- return self.__class__.__name__
-
- def pre_save(self, model_instance, add):
- """
- Returns field's value just before saving.
- """
- return getattr(model_instance, self.attname)
-
- def get_prep_value(self, value):
- """
- Perform preliminary non-db specific value checks and conversions.
- """
- return value
-
- def get_db_prep_value(self, value, connection, prepared=False):
- """Returns field's value prepared for interacting with the database
- backend.
-
- Used by the default implementations of ``get_db_prep_save``and
- `get_db_prep_lookup```
- """
- if not prepared:
- value = self.get_prep_value(value)
- return value
-
- def get_db_prep_save(self, value, connection):
- """
- Returns field's value prepared for saving into a database.
- """
- return self.get_db_prep_value(value, connection=connection,
- prepared=False)
-
- def get_prep_lookup(self, lookup_type, value):
- """
- Perform preliminary non-db specific lookup checks and conversions
- """
- if hasattr(value, 'prepare'):
- return value.prepare()
- if hasattr(value, '_prepare'):
- return value._prepare()
-
- if lookup_type in (
- 'iexact', 'contains', 'icontains',
- 'startswith', 'istartswith', 'endswith', 'iendswith',
- 'month', 'day', 'week_day', 'hour', 'minute', 'second',
- 'isnull', 'search', 'regex', 'iregex',
- ):
- return value
- elif lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte'):
- return self.get_prep_value(value)
- elif lookup_type in ('range', 'in'):
- return [self.get_prep_value(v) for v in value]
- elif lookup_type == 'year':
- try:
- return int(value)
- except ValueError:
- raise ValueError("The __year lookup type requires an integer "
- "argument")
-
- raise TypeError("Field has invalid lookup: %s" % lookup_type)
-
- def get_db_prep_lookup(self, lookup_type, value, connection,
- prepared=False):
- """
- Returns field's value prepared for database lookup.
- """
- if not prepared:
- value = self.get_prep_lookup(lookup_type, value)
- prepared = True
- if hasattr(value, 'get_compiler'):
- value = value.get_compiler(connection=connection)
- if hasattr(value, 'as_sql') or hasattr(value, '_as_sql'):
- # If the value has a relabeled_clone method it means the
- # value will be handled later on.
- if hasattr(value, 'relabeled_clone'):
- return value
- if hasattr(value, 'as_sql'):
- sql, params = value.as_sql()
- else:
- sql, params = value._as_sql(connection=connection)
- return QueryWrapper(('(%s)' % sql), params)
-
- if lookup_type in ('month', 'day', 'week_day', 'hour', 'minute',
- 'second', 'search', 'regex', 'iregex'):
- return [value]
- elif lookup_type in ('exact', 'gt', 'gte', 'lt', 'lte'):
- return [self.get_db_prep_value(value, connection=connection,
- prepared=prepared)]
- elif lookup_type in ('range', 'in'):
- return [self.get_db_prep_value(v, connection=connection,
- prepared=prepared) for v in value]
- elif lookup_type in ('contains', 'icontains'):
- return ["%%%s%%" % connection.ops.prep_for_like_query(value)]
- elif lookup_type == 'iexact':
- return [connection.ops.prep_for_iexact_query(value)]
- elif lookup_type in ('startswith', 'istartswith'):
- return ["%s%%" % connection.ops.prep_for_like_query(value)]
- elif lookup_type in ('endswith', 'iendswith'):
- return ["%%%s" % connection.ops.prep_for_like_query(value)]
- elif lookup_type == 'isnull':
- return []
- elif lookup_type == 'year':
- if isinstance(self, DateTimeField):
- return connection.ops.year_lookup_bounds_for_datetime_field(value)
- elif isinstance(self, DateField):
- return connection.ops.year_lookup_bounds_for_date_field(value)
- else:
- return [value] # this isn't supposed to happen
-
- def has_default(self):
- """
- Returns a boolean of whether this field has a default value.
- """
- return self.default is not NOT_PROVIDED
-
- def get_default(self):
- """
- Returns the default value for this field.
- """
- if self.has_default():
- if callable(self.default):
- return self.default()
- return force_text(self.default, strings_only=True)
- if (not self.empty_strings_allowed or (self.null and
- not connection.features.interprets_empty_strings_as_nulls)):
- return None
- return ""
-
- def get_validator_unique_lookup_type(self):
- return '%s__exact' % self.name
-
- def get_choices(self, include_blank=True, blank_choice=BLANK_CHOICE_DASH):
- """Returns choices with a default blank choices included, for use
- as SelectField choices for this field."""
- first_choice = blank_choice if include_blank else []
- if self.choices:
- return first_choice + list(self.choices)
- rel_model = self.rel.to
- if hasattr(self.rel, 'get_related_field'):
- lst = [(getattr(x, self.rel.get_related_field().attname),
- smart_text(x))
- for x in rel_model._default_manager.complex_filter(
- self.rel.limit_choices_to)]
- else:
- lst = [(x._get_pk_val(), smart_text(x))
- for x in rel_model._default_manager.complex_filter(
- self.rel.limit_choices_to)]
- return first_choice + lst
-
- def get_choices_default(self):
- return self.get_choices()
-
- def get_flatchoices(self, include_blank=True,
- blank_choice=BLANK_CHOICE_DASH):
- """
- Returns flattened choices with a default blank choice included.
- """
- first_choice = blank_choice if include_blank else []
- return first_choice + list(self.flatchoices)
-
- def _get_val_from_obj(self, obj):
- if obj is not None:
- return getattr(obj, self.attname)
- else:
- return self.get_default()
-
- def value_to_string(self, obj):
- """
- Returns a string value of this field from the passed obj.
- This is used by the serialization framework.
- """
- return smart_text(self._get_val_from_obj(obj))
-
- def bind(self, fieldmapping, original, bound_field_class):
- return bound_field_class(self, fieldmapping, original)
-
- def _get_choices(self):
- if is_iterator(self._choices):
- choices, self._choices = tee(self._choices)
- return choices
- else:
- return self._choices
- choices = property(_get_choices)
-
- def _get_flatchoices(self):
- """Flattened version of choices tuple."""
- flat = []
- for choice, value in self.choices:
- if isinstance(value, (list, tuple)):
- flat.extend(value)
- else:
- flat.append((choice,value))
- return flat
- flatchoices = property(_get_flatchoices)
-
- def save_form_data(self, instance, data):
- setattr(instance, self.name, data)
-
- def formfield(self, form_class=None, choices_form_class=None, **kwargs):
- """
- Returns a django.forms.Field instance for this database Field.
- """
- defaults = {'required': not self.blank,
- 'label': capfirst(self.verbose_name),
- 'help_text': self.help_text}
- if self.has_default():
- if callable(self.default):
- defaults['initial'] = self.default
- defaults['show_hidden_initial'] = True
- else:
- defaults['initial'] = self.get_default()
- if self.choices:
- # Fields with choices get special treatment.
- include_blank = (self.blank or
- not (self.has_default() or 'initial' in kwargs))
- defaults['choices'] = self.get_choices(include_blank=include_blank)
- defaults['coerce'] = self.to_python
- if self.null:
- defaults['empty_value'] = None
- if choices_form_class is not None:
- form_class = choices_form_class
- else:
- form_class = forms.TypedChoiceField
- # Many of the subclass-specific formfield arguments (min_value,
- # max_value) don't apply for choice fields, so be sure to only pass
- # the values that TypedChoiceField will understand.
- for k in list(kwargs):
- if k not in ('coerce', 'empty_value', 'choices', 'required',
- 'widget', 'label', 'initial', 'help_text',
- 'error_messages', 'show_hidden_initial'):
- del kwargs[k]
- defaults.update(kwargs)
- if form_class is None:
- form_class = forms.CharField
- return form_class(**defaults)
-
- def value_from_object(self, obj):
- """
- Returns the value of this field in the given model instance.
- """
- return getattr(obj, self.attname)
-
- def __repr__(self):
- """
- Displays the module, class and name of the field.
- """
- path = '%s.%s' % (self.__class__.__module__, self.__class__.__name__)
- name = getattr(self, 'name', None)
- if name is not None:
- return '<%s: %s>' % (path, name)
- return '<%s>' % path
-
-class AutoField(Field):
- description = _("Integer")
-
- empty_strings_allowed = False
- default_error_messages = {
- 'invalid': _("'%(value)s' value must be an integer."),
- }
-
- def __init__(self, *args, **kwargs):
- assert kwargs.get('primary_key', False) is True, \
- "%ss must have primary_key=True." % self.__class__.__name__
- kwargs['blank'] = True
- Field.__init__(self, *args, **kwargs)
-
- def get_internal_type(self):
- return "AutoField"
-
- def to_python(self, value):
- if value is None:
- return value
- try:
- return int(value)
- except (TypeError, ValueError):
- raise exceptions.ValidationError(
- self.error_messages['invalid'],
- code='invalid',
- params={'value': value},
- )
-
- def validate(self, value, model_instance):
- pass
-
- def get_db_prep_value(self, value, connection, prepared=False):
- if not prepared:
- value = self.get_prep_value(value)
- value = connection.ops.validate_autopk_value(value)
- return value
-
- def get_prep_value(self, value):
- if value is None:
- return None
- return int(value)
-
- def contribute_to_class(self, cls, name):
- assert not cls._meta.has_auto_field, \
- "A model can't have more than one AutoField."
- super(AutoField, self).contribute_to_class(cls, name)
- cls._meta.has_auto_field = True
- cls._meta.auto_field = self
-
- def formfield(self, **kwargs):
- return None
-
-class BooleanField(Field):
- empty_strings_allowed = False
- default_error_messages = {
- 'invalid': _("'%(value)s' value must be either True or False."),
- }
- description = _("Boolean (Either True or False)")
-
- def __init__(self, *args, **kwargs):
- kwargs['blank'] = True
- Field.__init__(self, *args, **kwargs)
-
- def get_internal_type(self):
- return "BooleanField"
-
- def to_python(self, value):
- if value in (True, False):
- # if value is 1 or 0 than it's equal to True or False, but we want
- # to return a true bool for semantic reasons.
- return bool(value)
- if value in ('t', 'True', '1'):
- return True
- if value in ('f', 'False', '0'):
- return False
- raise exceptions.ValidationError(
- self.error_messages['invalid'],
- code='invalid',
- params={'value': value},
- )
-
- def get_prep_lookup(self, lookup_type, value):
- # Special-case handling for filters coming from a Web request (e.g. the
- # admin interface). Only works for scalar values (not lists). If you're
- # passing in a list, you might as well make things the right type when
- # constructing the list.
- if value in ('1', '0'):
- value = bool(int(value))
- return super(BooleanField, self).get_prep_lookup(lookup_type, value)
-
- def get_prep_value(self, value):
- if value is None:
- return None
- return bool(value)
-
- def formfield(self, **kwargs):
- # Unlike most fields, BooleanField figures out include_blank from
- # self.null instead of self.blank.
- if self.choices:
- include_blank = (self.null or
- not (self.has_default() or 'initial' in kwargs))
- defaults = {'choices': self.get_choices(
- include_blank=include_blank)}
- else:
- defaults = {'form_class': forms.BooleanField}
- defaults.update(kwargs)
- return super(BooleanField, self).formfield(**defaults)
-
-class CharField(Field):
- description = _("String (up to %(max_length)s)")
-
- def __init__(self, *args, **kwargs):
- super(CharField, self).__init__(*args, **kwargs)
- self.validators.append(validators.MaxLengthValidator(self.max_length))
-
- def get_internal_type(self):
- return "CharField"
-
- def to_python(self, value):
- if isinstance(value, six.string_types) or value is None:
- return value
- return smart_text(value)
-
- def get_prep_value(self, value):
- return self.to_python(value)
-
- def formfield(self, **kwargs):
- # Passing max_length to forms.CharField means that the value's length
- # will be validated twice. This is considered acceptable since we want
- # the value in the form field (to pass into widget for example).
- defaults = {'max_length': self.max_length}
- defaults.update(kwargs)
- return super(CharField, self).formfield(**defaults)
-
-# TODO: Maybe move this into contrib, because it's specialized.
-class CommaSeparatedIntegerField(CharField):
- default_validators = [validators.validate_comma_separated_integer_list]
- description = _("Comma-separated integers")
-
- def formfield(self, **kwargs):
- defaults = {
- 'error_messages': {
- 'invalid': _('Enter only digits separated by commas.'),
- }
- }
- defaults.update(kwargs)
- return super(CommaSeparatedIntegerField, self).formfield(**defaults)
-
-class DateField(Field):
- empty_strings_allowed = False
- default_error_messages = {
- 'invalid': _("'%(value)s' value has an invalid date format. It must be "
- "in YYYY-MM-DD format."),
- 'invalid_date': _("'%(value)s' value has the correct format (YYYY-MM-DD) "
- "but it is an invalid date."),
- }
- description = _("Date (without time)")
-
- def __init__(self, verbose_name=None, name=None, auto_now=False,
- auto_now_add=False, **kwargs):
- self.auto_now, self.auto_now_add = auto_now, auto_now_add
- if auto_now or auto_now_add:
- kwargs['editable'] = False
- kwargs['blank'] = True
- Field.__init__(self, verbose_name, name, **kwargs)
-
- def get_internal_type(self):
- return "DateField"
-
- def to_python(self, value):
- if value is None:
- return value
- if isinstance(value, datetime.datetime):
- if settings.USE_TZ and timezone.is_aware(value):
- # Convert aware datetimes to the default time zone
- # before casting them to dates (#17742).
- default_timezone = timezone.get_default_timezone()
- value = timezone.make_naive(value, default_timezone)
- return value.date()
- if isinstance(value, datetime.date):
- return value
-
- try:
- parsed = parse_date(value)
- if parsed is not None:
- return parsed
- except ValueError:
- raise exceptions.ValidationError(
- self.error_messages['invalid_date'],
- code='invalid_date',
- params={'value': value},
- )
-
- raise exceptions.ValidationError(
- self.error_messages['invalid'],
- code='invalid',
- params={'value': value},
- )
-
- def pre_save(self, model_instance, add):
- if self.auto_now or (self.auto_now_add and add):
- value = datetime.date.today()
- setattr(model_instance, self.attname, value)
- return value
- else:
- return super(DateField, self).pre_save(model_instance, add)
-
- def contribute_to_class(self, cls, name):
- super(DateField,self).contribute_to_class(cls, name)
- if not self.null:
- setattr(cls, 'get_next_by_%s' % self.name,
- curry(cls._get_next_or_previous_by_FIELD, field=self,
- is_next=True))
- setattr(cls, 'get_previous_by_%s' % self.name,
- curry(cls._get_next_or_previous_by_FIELD, field=self,
- is_next=False))
-
- def get_prep_lookup(self, lookup_type, value):
- # For dates lookups, convert the value to an int
- # so the database backend always sees a consistent type.
- if lookup_type in ('month', 'day', 'week_day', 'hour', 'minute', 'second'):
- return int(value)
- return super(DateField, self).get_prep_lookup(lookup_type, value)
-
- def get_prep_value(self, value):
- return self.to_python(value)
-
- def get_db_prep_value(self, value, connection, prepared=False):
- # Casts dates into the format expected by the backend
- if not prepared:
- value = self.get_prep_value(value)
- return connection.ops.value_to_db_date(value)
-
- def value_to_string(self, obj):
- val = self._get_val_from_obj(obj)
- return '' if val is None else val.isoformat()
-
- def formfield(self, **kwargs):
- defaults = {'form_class': forms.DateField}
- defaults.update(kwargs)
- return super(DateField, self).formfield(**defaults)
-
-class DateTimeField(DateField):
- empty_strings_allowed = False
- default_error_messages = {
- 'invalid': _("'%(value)s' value has an invalid format. It must be in "
- "YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] format."),
- 'invalid_date': _("'%(value)s' value has the correct format "
- "(YYYY-MM-DD) but it is an invalid date."),
- 'invalid_datetime': _("'%(value)s' value has the correct format "
- "(YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ]) "
- "but it is an invalid date/time."),
- }
- description = _("Date (with time)")
-
- # __init__ is inherited from DateField
-
- def get_internal_type(self):
- return "DateTimeField"
-
- def to_python(self, value):
- if value is None:
- return value
- if isinstance(value, datetime.datetime):
- return value
- if isinstance(value, datetime.date):
- value = datetime.datetime(value.year, value.month, value.day)
- if settings.USE_TZ:
- # For backwards compatibility, interpret naive datetimes in
- # local time. This won't work during DST change, but we can't
- # do much about it, so we let the exceptions percolate up the
- # call stack.
- warnings.warn("DateTimeField %s.%s received a naive datetime "
- "(%s) while time zone support is active." %
- (self.model.__name__, self.name, value),
- RuntimeWarning)
- default_timezone = timezone.get_default_timezone()
- value = timezone.make_aware(value, default_timezone)
- return value
-
- try:
- parsed = parse_datetime(value)
- if parsed is not None:
- return parsed
- except ValueError:
- raise exceptions.ValidationError(
- self.error_messages['invalid_datetime'],
- code='invalid_datetime',
- params={'value': value},
- )
-
- try:
- parsed = parse_date(value)
- if parsed is not None:
- return datetime.datetime(parsed.year, parsed.month, parsed.day)
- except ValueError:
- raise exceptions.ValidationError(
- self.error_messages['invalid_date'],
- code='invalid_date',
- params={'value': value},
- )
-
- raise exceptions.ValidationError(
- self.error_messages['invalid'],
- code='invalid',
- params={'value': value},
- )
-
- def pre_save(self, model_instance, add):
- if self.auto_now or (self.auto_now_add and add):
- value = timezone.now()
- setattr(model_instance, self.attname, value)
- return value
- else:
- return super(DateTimeField, self).pre_save(model_instance, add)
-
- # contribute_to_class is inherited from DateField, it registers
- # get_next_by_FOO and get_prev_by_FOO
-
- # get_prep_lookup is inherited from DateField
-
- def get_prep_value(self, value):
- value = self.to_python(value)
- if value is not None and settings.USE_TZ and timezone.is_naive(value):
- # For backwards compatibility, interpret naive datetimes in local
- # time. This won't work during DST change, but we can't do much
- # about it, so we let the exceptions percolate up the call stack.
- warnings.warn("DateTimeField %s.%s received a naive datetime (%s)"
- " while time zone support is active." %
- (self.model.__name__, self.name, value),
- RuntimeWarning)
- default_timezone = timezone.get_default_timezone()
- value = timezone.make_aware(value, default_timezone)
- return value
-
- def get_db_prep_value(self, value, connection, prepared=False):
- # Casts datetimes into the format expected by the backend
- if not prepared:
- value = self.get_prep_value(value)
- return connection.ops.value_to_db_datetime(value)
-
- def value_to_string(self, obj):
- val = self._get_val_from_obj(obj)
- return '' if val is None else val.isoformat()
-
- def formfield(self, **kwargs):
- defaults = {'form_class': forms.DateTimeField}
- defaults.update(kwargs)
- return super(DateTimeField, self).formfield(**defaults)
-
-class DecimalField(Field):
- empty_strings_allowed = False
- default_error_messages = {
- 'invalid': _("'%(value)s' value must be a decimal number."),
- }
- description = _("Decimal number")
-
- def __init__(self, verbose_name=None, name=None, max_digits=None,
- decimal_places=None, **kwargs):
- self.max_digits, self.decimal_places = max_digits, decimal_places
- Field.__init__(self, verbose_name, name, **kwargs)
-
- def get_internal_type(self):
- return "DecimalField"
-
- def to_python(self, value):
- if value is None:
- return value
- try:
- return decimal.Decimal(value)
- except decimal.InvalidOperation:
- raise exceptions.ValidationError(
- self.error_messages['invalid'],
- code='invalid',
- params={'value': value},
- )
-
- def _format(self, value):
- if isinstance(value, six.string_types) or value is None:
- return value
- else:
- return self.format_number(value)
-
- def format_number(self, value):
- """
- Formats a number into a string with the requisite number of digits and
- decimal places.
- """
- # Method moved to django.db.backends.util.
- #
- # It is preserved because it is used by the oracle backend
- # (django.db.backends.oracle.query), and also for
- # backwards-compatibility with any external code which may have used
- # this method.
- from django.db.backends import util
- return util.format_number(value, self.max_digits, self.decimal_places)
-
- def get_db_prep_save(self, value, connection):
- return connection.ops.value_to_db_decimal(self.to_python(value),
- self.max_digits, self.decimal_places)
-
- def get_prep_value(self, value):
- return self.to_python(value)
-
- def formfield(self, **kwargs):
- defaults = {
- 'max_digits': self.max_digits,
- 'decimal_places': self.decimal_places,
- 'form_class': forms.DecimalField,
- }
- defaults.update(kwargs)
- return super(DecimalField, self).formfield(**defaults)
-
-class EmailField(CharField):
- default_validators = [validators.validate_email]
- description = _("Email address")
-
- def __init__(self, *args, **kwargs):
- # max_length should be overridden to 254 characters to be fully
- # compliant with RFCs 3696 and 5321
-
- kwargs['max_length'] = kwargs.get('max_length', 75)
- CharField.__init__(self, *args, **kwargs)
-
- def formfield(self, **kwargs):
- # As with CharField, this will cause email validation to be performed
- # twice.
- defaults = {
- 'form_class': forms.EmailField,
- }
- defaults.update(kwargs)
- return super(EmailField, self).formfield(**defaults)
-
-class FilePathField(Field):
- description = _("File path")
-
- def __init__(self, verbose_name=None, name=None, path='', match=None,
- recursive=False, allow_files=True, allow_folders=False, **kwargs):
- self.path, self.match, self.recursive = path, match, recursive
- self.allow_files, self.allow_folders = allow_files, allow_folders
- kwargs['max_length'] = kwargs.get('max_length', 100)
- Field.__init__(self, verbose_name, name, **kwargs)
-
- def get_prep_value(self, value):
- value = super(FilePathField, self).get_prep_value(value)
- if value is None:
- return None
- return six.text_type(value)
-
- def formfield(self, **kwargs):
- defaults = {
- 'path': self.path,
- 'match': self.match,
- 'recursive': self.recursive,
- 'form_class': forms.FilePathField,
- 'allow_files': self.allow_files,
- 'allow_folders': self.allow_folders,
- }
- defaults.update(kwargs)
- return super(FilePathField, self).formfield(**defaults)
-
- def get_internal_type(self):
- return "FilePathField"
-
-class FloatField(Field):
- empty_strings_allowed = False
- default_error_messages = {
- 'invalid': _("'%(value)s' value must be a float."),
- }
- description = _("Floating point number")
-
- def get_prep_value(self, value):
- if value is None:
- return None
- return float(value)
-
- def get_internal_type(self):
- return "FloatField"
-
- def to_python(self, value):
- if value is None:
- return value
- try:
- return float(value)
- except (TypeError, ValueError):
- raise exceptions.ValidationError(
- self.error_messages['invalid'],
- code='invalid',
- params={'value': value},
- )
-
- def formfield(self, **kwargs):
- defaults = {'form_class': forms.FloatField}
- defaults.update(kwargs)
- return super(FloatField, self).formfield(**defaults)
-
-class IntegerField(Field):
- empty_strings_allowed = False
- default_error_messages = {
- 'invalid': _("'%(value)s' value must be an integer."),
- }
- description = _("Integer")
-
- def get_prep_value(self, value):
- if value is None:
- return None
- return int(value)
-
- def get_prep_lookup(self, lookup_type, value):
- if ((lookup_type == 'gte' or lookup_type == 'lt')
- and isinstance(value, float)):
- value = math.ceil(value)
- return super(IntegerField, self).get_prep_lookup(lookup_type, value)
-
- def get_internal_type(self):
- return "IntegerField"
-
- def to_python(self, value):
- if value is None:
- return value
- try:
- return int(value)
- except (TypeError, ValueError):
- raise exceptions.ValidationError(
- self.error_messages['invalid'],
- code='invalid',
- params={'value': value},
- )
-
- def formfield(self, **kwargs):
- defaults = {'form_class': forms.IntegerField}
- defaults.update(kwargs)
- return super(IntegerField, self).formfield(**defaults)
-
-class BigIntegerField(IntegerField):
- empty_strings_allowed = False
- description = _("Big (8 byte) integer")
- MAX_BIGINT = 9223372036854775807
-
- def get_internal_type(self):
- return "BigIntegerField"
-
- def formfield(self, **kwargs):
- defaults = {'min_value': -BigIntegerField.MAX_BIGINT - 1,
- 'max_value': BigIntegerField.MAX_BIGINT}
- defaults.update(kwargs)
- return super(BigIntegerField, self).formfield(**defaults)
-
-class IPAddressField(Field):
- empty_strings_allowed = False
- description = _("IPv4 address")
-
- def __init__(self, *args, **kwargs):
- kwargs['max_length'] = 15
- Field.__init__(self, *args, **kwargs)
-
- def get_prep_value(self, value):
- value = super(IPAddressField, self).get_prep_value(value)
- if value is None:
- return None
- return six.text_type(value)
-
- def get_internal_type(self):
- return "IPAddressField"
-
- def formfield(self, **kwargs):
- defaults = {'form_class': forms.IPAddressField}
- defaults.update(kwargs)
- return super(IPAddressField, self).formfield(**defaults)
-
-class GenericIPAddressField(Field):
- empty_strings_allowed = True
- description = _("IP address")
- default_error_messages = {}
-
- def __init__(self, verbose_name=None, name=None, protocol='both',
- unpack_ipv4=False, *args, **kwargs):
- self.unpack_ipv4 = unpack_ipv4
- self.protocol = protocol
- self.default_validators, invalid_error_message = \
- validators.ip_address_validators(protocol, unpack_ipv4)
- self.default_error_messages['invalid'] = invalid_error_message
- kwargs['max_length'] = 39
- Field.__init__(self, verbose_name, name, *args, **kwargs)
-
- def get_internal_type(self):
- return "GenericIPAddressField"
-
- def to_python(self, value):
- if value and ':' in value:
- return clean_ipv6_address(value,
- self.unpack_ipv4, self.error_messages['invalid'])
- return value
-
- def get_db_prep_value(self, value, connection, prepared=False):
- if not prepared:
- value = self.get_prep_value(value)
- return value or None
-
- def get_prep_value(self, value):
- if value is None:
- return value
- if value and ':' in value:
- try:
- return clean_ipv6_address(value, self.unpack_ipv4)
- except exceptions.ValidationError:
- pass
- return six.text_type(value)
-
- def formfield(self, **kwargs):
- defaults = {
- 'protocol': self.protocol,
- 'form_class': forms.GenericIPAddressField,
- }
- defaults.update(kwargs)
- return super(GenericIPAddressField, self).formfield(**defaults)
-
-
-class NullBooleanField(Field):
- empty_strings_allowed = False
- default_error_messages = {
- 'invalid': _("'%(value)s' value must be either None, True or False."),
- }
- description = _("Boolean (Either True, False or None)")
-
- def __init__(self, *args, **kwargs):
- kwargs['null'] = True
- kwargs['blank'] = True
- Field.__init__(self, *args, **kwargs)
-
- def get_internal_type(self):
- return "NullBooleanField"
-
- def to_python(self, value):
- if value is None:
- return None
- if value in (True, False):
- return bool(value)
- if value in ('None',):
- return None
- if value in ('t', 'True', '1'):
- return True
- if value in ('f', 'False', '0'):
- return False
- raise exceptions.ValidationError(
- self.error_messages['invalid'],
- code='invalid',
- params={'value': value},
- )
-
- def get_prep_lookup(self, lookup_type, value):
- # Special-case handling for filters coming from a Web request (e.g. the
- # admin interface). Only works for scalar values (not lists). If you're
- # passing in a list, you might as well make things the right type when
- # constructing the list.
- if value in ('1', '0'):
- value = bool(int(value))
- return super(NullBooleanField, self).get_prep_lookup(lookup_type,
- value)
-
- def get_prep_value(self, value):
- if value is None:
- return None
- return bool(value)
-
- def formfield(self, **kwargs):
- defaults = {
- 'form_class': forms.NullBooleanField,
- 'required': not self.blank,
- 'label': capfirst(self.verbose_name),
- 'help_text': self.help_text}
- defaults.update(kwargs)
- return super(NullBooleanField, self).formfield(**defaults)
-
-class PositiveIntegerField(IntegerField):
- description = _("Positive integer")
-
- def get_internal_type(self):
- return "PositiveIntegerField"
-
- def formfield(self, **kwargs):
- defaults = {'min_value': 0}
- defaults.update(kwargs)
- return super(PositiveIntegerField, self).formfield(**defaults)
-
-class PositiveSmallIntegerField(IntegerField):
- description = _("Positive small integer")
-
- def get_internal_type(self):
- return "PositiveSmallIntegerField"
-
- def formfield(self, **kwargs):
- defaults = {'min_value': 0}
- defaults.update(kwargs)
- return super(PositiveSmallIntegerField, self).formfield(**defaults)
-
-class SlugField(CharField):
- default_validators = [validators.validate_slug]
- description = _("Slug (up to %(max_length)s)")
-
- def __init__(self, *args, **kwargs):
- kwargs['max_length'] = kwargs.get('max_length', 50)
- # Set db_index=True unless it's been set manually.
- if 'db_index' not in kwargs:
- kwargs['db_index'] = True
- super(SlugField, self).__init__(*args, **kwargs)
-
- def get_internal_type(self):
- return "SlugField"
-
- def formfield(self, **kwargs):
- defaults = {'form_class': forms.SlugField}
- defaults.update(kwargs)
- return super(SlugField, self).formfield(**defaults)
-
-class SmallIntegerField(IntegerField):
- description = _("Small integer")
-
- def get_internal_type(self):
- return "SmallIntegerField"
-
-class TextField(Field):
- description = _("Text")
-
- def get_internal_type(self):
- return "TextField"
-
- def get_prep_value(self, value):
- if isinstance(value, six.string_types) or value is None:
- return value
- return smart_text(value)
-
- def formfield(self, **kwargs):
- defaults = {'widget': forms.Textarea}
- defaults.update(kwargs)
- return super(TextField, self).formfield(**defaults)
-
-class TimeField(Field):
- empty_strings_allowed = False
- default_error_messages = {
- 'invalid': _("'%(value)s' value has an invalid format. It must be in "
- "HH:MM[:ss[.uuuuuu]] format."),
- 'invalid_time': _("'%(value)s' value has the correct format "
- "(HH:MM[:ss[.uuuuuu]]) but it is an invalid time."),
- }
- description = _("Time")
-
- def __init__(self, verbose_name=None, name=None, auto_now=False,
- auto_now_add=False, **kwargs):
- self.auto_now, self.auto_now_add = auto_now, auto_now_add
- if auto_now or auto_now_add:
- kwargs['editable'] = False
- kwargs['blank'] = True
- Field.__init__(self, verbose_name, name, **kwargs)
-
- def get_internal_type(self):
- return "TimeField"
-
- def to_python(self, value):
- if value is None:
- return None
- if isinstance(value, datetime.time):
- return value
- if isinstance(value, datetime.datetime):
- # Not usually a good idea to pass in a datetime here (it loses
- # information), but this can be a side-effect of interacting with a
- # database backend (e.g. Oracle), so we'll be accommodating.
- return value.time()
-
- try:
- parsed = parse_time(value)
- if parsed is not None:
- return parsed
- except ValueError:
- raise exceptions.ValidationError(
- self.error_messages['invalid_time'],
- code='invalid_time',
- params={'value': value},
- )
-
- raise exceptions.ValidationError(
- self.error_messages['invalid'],
- code='invalid',
- params={'value': value},
- )
-
- def pre_save(self, model_instance, add):
- if self.auto_now or (self.auto_now_add and add):
- value = datetime.datetime.now().time()
- setattr(model_instance, self.attname, value)
- return value
- else:
- return super(TimeField, self).pre_save(model_instance, add)
-
- def get_prep_value(self, value):
- return self.to_python(value)
-
- def get_db_prep_value(self, value, connection, prepared=False):
- # Casts times into the format expected by the backend
- if not prepared:
- value = self.get_prep_value(value)
- return connection.ops.value_to_db_time(value)
-
- def value_to_string(self, obj):
- val = self._get_val_from_obj(obj)
- return '' if val is None else val.isoformat()
-
- def formfield(self, **kwargs):
- defaults = {'form_class': forms.TimeField}
- defaults.update(kwargs)
- return super(TimeField, self).formfield(**defaults)
-
-class URLField(CharField):
- default_validators = [validators.URLValidator()]
- description = _("URL")
-
- def __init__(self, verbose_name=None, name=None, **kwargs):
- kwargs['max_length'] = kwargs.get('max_length', 200)
- CharField.__init__(self, verbose_name, name, **kwargs)
-
- def formfield(self, **kwargs):
- # As with CharField, this will cause URL validation to be performed
- # twice.
- defaults = {
- 'form_class': forms.URLField,
- }
- defaults.update(kwargs)
- return super(URLField, self).formfield(**defaults)
-
-class BinaryField(Field):
- description = _("Raw binary data")
- empty_values = [None, b'']
-
- def __init__(self, *args, **kwargs):
- kwargs['editable'] = False
- super(BinaryField, self).__init__(*args, **kwargs)
- if self.max_length is not None:
- self.validators.append(validators.MaxLengthValidator(self.max_length))
-
- def get_internal_type(self):
- return "BinaryField"
-
- def get_default(self):
- if self.has_default() and not callable(self.default):
- return self.default
- default = super(BinaryField, self).get_default()
- if default == '':
- return b''
- return default
-
- def get_db_prep_value(self, value, connection, prepared=False):
- value = super(BinaryField, self
- ).get_db_prep_value(value, connection, prepared)
- if value is not None:
- return connection.Database.Binary(value)
- return value
-
- def value_to_string(self, obj):
- """Binary data is serialized as base64"""
- return b64encode(force_bytes(self._get_val_from_obj(obj))).decode('ascii')
-
- def to_python(self, value):
- # If it's a string, it should be base64-encoded data
- if isinstance(value, six.text_type):
- return six.memoryview(b64decode(force_bytes(value)))
- return value
diff --git a/lib/python2.7/site-packages/django/db/models/fields/files.py b/lib/python2.7/site-packages/django/db/models/fields/files.py
deleted file mode 100644
index 3b3c1ec..0000000
--- a/lib/python2.7/site-packages/django/db/models/fields/files.py
+++ /dev/null
@@ -1,397 +0,0 @@
-import datetime
-import os
-
-from django import forms
-from django.db.models.fields import Field
-from django.core.files.base import File
-from django.core.files.storage import default_storage
-from django.core.files.images import ImageFile
-from django.db.models import signals
-from django.utils.encoding import force_str, force_text
-from django.utils import six
-from django.utils.translation import ugettext_lazy as _
-
-class FieldFile(File):
- def __init__(self, instance, field, name):
- super(FieldFile, self).__init__(None, name)
- self.instance = instance
- self.field = field
- self.storage = field.storage
- self._committed = True
-
- def __eq__(self, other):
- # Older code may be expecting FileField values to be simple strings.
- # By overriding the == operator, it can remain backwards compatibility.
- if hasattr(other, 'name'):
- return self.name == other.name
- return self.name == other
-
- def __ne__(self, other):
- return not self.__eq__(other)
-
- def __hash__(self):
- return hash(self.name)
-
- # The standard File contains most of the necessary properties, but
- # FieldFiles can be instantiated without a name, so that needs to
- # be checked for here.
-
- def _require_file(self):
- if not self:
- raise ValueError("The '%s' attribute has no file associated with it." % self.field.name)
-
- def _get_file(self):
- self._require_file()
- if not hasattr(self, '_file') or self._file is None:
- self._file = self.storage.open(self.name, 'rb')
- return self._file
-
- def _set_file(self, file):
- self._file = file
-
- def _del_file(self):
- del self._file
-
- file = property(_get_file, _set_file, _del_file)
-
- def _get_path(self):
- self._require_file()
- return self.storage.path(self.name)
- path = property(_get_path)
-
- def _get_url(self):
- self._require_file()
- return self.storage.url(self.name)
- url = property(_get_url)
-
- def _get_size(self):
- self._require_file()
- if not self._committed:
- return self.file.size
- return self.storage.size(self.name)
- size = property(_get_size)
-
- def open(self, mode='rb'):
- self._require_file()
- self.file.open(mode)
- # open() doesn't alter the file's contents, but it does reset the pointer
- open.alters_data = True
-
- # In addition to the standard File API, FieldFiles have extra methods
- # to further manipulate the underlying file, as well as update the
- # associated model instance.
-
- def save(self, name, content, save=True):
- name = self.field.generate_filename(self.instance, name)
- self.name = self.storage.save(name, content)
- setattr(self.instance, self.field.name, self.name)
-
- # Update the filesize cache
- self._size = content.size
- self._committed = True
-
- # Save the object because it has changed, unless save is False
- if save:
- self.instance.save()
- save.alters_data = True
-
- def delete(self, save=True):
- if not self:
- return
- # Only close the file if it's already open, which we know by the
- # presence of self._file
- if hasattr(self, '_file'):
- self.close()
- del self.file
-
- self.storage.delete(self.name)
-
- self.name = None
- setattr(self.instance, self.field.name, self.name)
-
- # Delete the filesize cache
- if hasattr(self, '_size'):
- del self._size
- self._committed = False
-
- if save:
- self.instance.save()
- delete.alters_data = True
-
- def _get_closed(self):
- file = getattr(self, '_file', None)
- return file is None or file.closed
- closed = property(_get_closed)
-
- def close(self):
- file = getattr(self, '_file', None)
- if file is not None:
- file.close()
-
- def __getstate__(self):
- # FieldFile needs access to its associated model field and an instance
- # it's attached to in order to work properly, but the only necessary
- # data to be pickled is the file's name itself. Everything else will
- # be restored later, by FileDescriptor below.
- return {'name': self.name, 'closed': False, '_committed': True, '_file': None}
-
-class FileDescriptor(object):
- """
- The descriptor for the file attribute on the model instance. Returns a
- FieldFile when accessed so you can do stuff like::
-
- >>> instance.file.size
-
- Assigns a file object on assignment so you can do::
-
- >>> instance.file = File(...)
-
- """
- def __init__(self, field):
- self.field = field
-
- def __get__(self, instance=None, owner=None):
- if instance is None:
- raise AttributeError(
- "The '%s' attribute can only be accessed from %s instances."
- % (self.field.name, owner.__name__))
-
- # This is slightly complicated, so worth an explanation.
- # instance.file`needs to ultimately return some instance of `File`,
- # probably a subclass. Additionally, this returned object needs to have
- # the FieldFile API so that users can easily do things like
- # instance.file.path and have that delegated to the file storage engine.
- # Easy enough if we're strict about assignment in __set__, but if you
- # peek below you can see that we're not. So depending on the current
- # value of the field we have to dynamically construct some sort of
- # "thing" to return.
-
- # The instance dict contains whatever was originally assigned
- # in __set__.
- file = instance.__dict__[self.field.name]
-
- # If this value is a string (instance.file = "path/to/file") or None
- # then we simply wrap it with the appropriate attribute class according
- # to the file field. [This is FieldFile for FileFields and
- # ImageFieldFile for ImageFields; it's also conceivable that user
- # subclasses might also want to subclass the attribute class]. This
- # object understands how to convert a path to a file, and also how to
- # handle None.
- if isinstance(file, six.string_types) or file is None:
- attr = self.field.attr_class(instance, self.field, file)
- instance.__dict__[self.field.name] = attr
-
- # Other types of files may be assigned as well, but they need to have
- # the FieldFile interface added to the. Thus, we wrap any other type of
- # File inside a FieldFile (well, the field's attr_class, which is
- # usually FieldFile).
- elif isinstance(file, File) and not isinstance(file, FieldFile):
- file_copy = self.field.attr_class(instance, self.field, file.name)
- file_copy.file = file
- file_copy._committed = False
- instance.__dict__[self.field.name] = file_copy
-
- # Finally, because of the (some would say boneheaded) way pickle works,
- # the underlying FieldFile might not actually itself have an associated
- # file. So we need to reset the details of the FieldFile in those cases.
- elif isinstance(file, FieldFile) and not hasattr(file, 'field'):
- file.instance = instance
- file.field = self.field
- file.storage = self.field.storage
-
- # That was fun, wasn't it?
- return instance.__dict__[self.field.name]
-
- def __set__(self, instance, value):
- instance.__dict__[self.field.name] = value
-
-class FileField(Field):
-
- # The class to wrap instance attributes in. Accessing the file object off
- # the instance will always return an instance of attr_class.
- attr_class = FieldFile
-
- # The descriptor to use for accessing the attribute off of the class.
- descriptor_class = FileDescriptor
-
- description = _("File")
-
- def __init__(self, verbose_name=None, name=None, upload_to='', storage=None, **kwargs):
- for arg in ('primary_key', 'unique'):
- if arg in kwargs:
- raise TypeError("'%s' is not a valid argument for %s." % (arg, self.__class__))
-
- self.storage = storage or default_storage
- self.upload_to = upload_to
- if callable(upload_to):
- self.generate_filename = upload_to
-
- kwargs['max_length'] = kwargs.get('max_length', 100)
- super(FileField, self).__init__(verbose_name, name, **kwargs)
-
- def get_internal_type(self):
- return "FileField"
-
- def get_prep_lookup(self, lookup_type, value):
- if hasattr(value, 'name'):
- value = value.name
- return super(FileField, self).get_prep_lookup(lookup_type, value)
-
- def get_prep_value(self, value):
- "Returns field's value prepared for saving into a database."
- # Need to convert File objects provided via a form to unicode for database insertion
- if value is None:
- return None
- return six.text_type(value)
-
- def pre_save(self, model_instance, add):
- "Returns field's value just before saving."
- file = super(FileField, self).pre_save(model_instance, add)
- if file and not file._committed:
- # Commit the file to storage prior to saving the model
- file.save(file.name, file, save=False)
- return file
-
- def contribute_to_class(self, cls, name):
- super(FileField, self).contribute_to_class(cls, name)
- setattr(cls, self.name, self.descriptor_class(self))
-
- def get_directory_name(self):
- return os.path.normpath(force_text(datetime.datetime.now().strftime(force_str(self.upload_to))))
-
- def get_filename(self, filename):
- return os.path.normpath(self.storage.get_valid_name(os.path.basename(filename)))
-
- def generate_filename(self, instance, filename):
- return os.path.join(self.get_directory_name(), self.get_filename(filename))
-
- def save_form_data(self, instance, data):
- # Important: None means "no change", other false value means "clear"
- # This subtle distinction (rather than a more explicit marker) is
- # needed because we need to consume values that are also sane for a
- # regular (non Model-) Form to find in its cleaned_data dictionary.
- if data is not None:
- # This value will be converted to unicode and stored in the
- # database, so leaving False as-is is not acceptable.
- if not data:
- data = ''
- setattr(instance, self.name, data)
-
- def formfield(self, **kwargs):
- defaults = {'form_class': forms.FileField, 'max_length': self.max_length}
- # If a file has been provided previously, then the form doesn't require
- # that a new file is provided this time.
- # The code to mark the form field as not required is used by
- # form_for_instance, but can probably be removed once form_for_instance
- # is gone. ModelForm uses a different method to check for an existing file.
- if 'initial' in kwargs:
- defaults['required'] = False
- defaults.update(kwargs)
- return super(FileField, self).formfield(**defaults)
-
-class ImageFileDescriptor(FileDescriptor):
- """
- Just like the FileDescriptor, but for ImageFields. The only difference is
- assigning the width/height to the width_field/height_field, if appropriate.
- """
- def __set__(self, instance, value):
- previous_file = instance.__dict__.get(self.field.name)
- super(ImageFileDescriptor, self).__set__(instance, value)
-
- # To prevent recalculating image dimensions when we are instantiating
- # an object from the database (bug #11084), only update dimensions if
- # the field had a value before this assignment. Since the default
- # value for FileField subclasses is an instance of field.attr_class,
- # previous_file will only be None when we are called from
- # Model.__init__(). The ImageField.update_dimension_fields method
- # hooked up to the post_init signal handles the Model.__init__() cases.
- # Assignment happening outside of Model.__init__() will trigger the
- # update right here.
- if previous_file is not None:
- self.field.update_dimension_fields(instance, force=True)
-
-class ImageFieldFile(ImageFile, FieldFile):
-
- def delete(self, save=True):
- # Clear the image dimensions cache
- if hasattr(self, '_dimensions_cache'):
- del self._dimensions_cache
- super(ImageFieldFile, self).delete(save)
-
-class ImageField(FileField):
- attr_class = ImageFieldFile
- descriptor_class = ImageFileDescriptor
- description = _("Image")
-
- def __init__(self, verbose_name=None, name=None, width_field=None,
- height_field=None, **kwargs):
- self.width_field, self.height_field = width_field, height_field
- super(ImageField, self).__init__(verbose_name, name, **kwargs)
-
- def contribute_to_class(self, cls, name):
- super(ImageField, self).contribute_to_class(cls, name)
- # Attach update_dimension_fields so that dimension fields declared
- # after their corresponding image field don't stay cleared by
- # Model.__init__, see bug #11196.
- signals.post_init.connect(self.update_dimension_fields, sender=cls)
-
- def update_dimension_fields(self, instance, force=False, *args, **kwargs):
- """
- Updates field's width and height fields, if defined.
-
- This method is hooked up to model's post_init signal to update
- dimensions after instantiating a model instance. However, dimensions
- won't be updated if the dimensions fields are already populated. This
- avoids unnecessary recalculation when loading an object from the
- database.
-
- Dimensions can be forced to update with force=True, which is how
- ImageFileDescriptor.__set__ calls this method.
- """
- # Nothing to update if the field doesn't have have dimension fields.
- has_dimension_fields = self.width_field or self.height_field
- if not has_dimension_fields:
- return
-
- # getattr will call the ImageFileDescriptor's __get__ method, which
- # coerces the assigned value into an instance of self.attr_class
- # (ImageFieldFile in this case).
- file = getattr(instance, self.attname)
-
- # Nothing to update if we have no file and not being forced to update.
- if not file and not force:
- return
-
- dimension_fields_filled = not(
- (self.width_field and not getattr(instance, self.width_field))
- or (self.height_field and not getattr(instance, self.height_field))
- )
- # When both dimension fields have values, we are most likely loading
- # data from the database or updating an image field that already had
- # an image stored. In the first case, we don't want to update the
- # dimension fields because we are already getting their values from the
- # database. In the second case, we do want to update the dimensions
- # fields and will skip this return because force will be True since we
- # were called from ImageFileDescriptor.__set__.
- if dimension_fields_filled and not force:
- return
-
- # file should be an instance of ImageFieldFile or should be None.
- if file:
- width = file.width
- height = file.height
- else:
- # No file, so clear dimensions fields.
- width = None
- height = None
-
- # Update the width and height fields.
- if self.width_field:
- setattr(instance, self.width_field, width)
- if self.height_field:
- setattr(instance, self.height_field, height)
-
- def formfield(self, **kwargs):
- defaults = {'form_class': forms.ImageField}
- defaults.update(kwargs)
- return super(ImageField, self).formfield(**defaults)
diff --git a/lib/python2.7/site-packages/django/db/models/fields/proxy.py b/lib/python2.7/site-packages/django/db/models/fields/proxy.py
deleted file mode 100644
index c0cc873..0000000
--- a/lib/python2.7/site-packages/django/db/models/fields/proxy.py
+++ /dev/null
@@ -1,17 +0,0 @@
-"""
-Field-like classes that aren't really fields. It's easier to use objects that
-have the same attributes as fields sometimes (avoids a lot of special casing).
-"""
-
-from django.db.models import fields
-
-class OrderWrt(fields.IntegerField):
- """
- A proxy for the _order database field that is used when
- Meta.order_with_respect_to is specified.
- """
-
- def __init__(self, *args, **kwargs):
- kwargs['name'] = '_order'
- kwargs['editable'] = False
- super(OrderWrt, self).__init__(*args, **kwargs)
diff --git a/lib/python2.7/site-packages/django/db/models/fields/related.py b/lib/python2.7/site-packages/django/db/models/fields/related.py
deleted file mode 100644
index a4bc374..0000000
--- a/lib/python2.7/site-packages/django/db/models/fields/related.py
+++ /dev/null
@@ -1,1545 +0,0 @@
-from operator import attrgetter
-
-from django.db import connection, connections, router
-from django.db.backends import util
-from django.db.models import signals, get_model
-from django.db.models.fields import (AutoField, Field, IntegerField,
- PositiveIntegerField, PositiveSmallIntegerField, FieldDoesNotExist)
-from django.db.models.related import RelatedObject, PathInfo
-from django.db.models.query import QuerySet
-from django.db.models.deletion import CASCADE
-from django.utils.encoding import smart_text
-from django.utils import six
-from django.utils.deprecation import RenameMethodsBase
-from django.utils.translation import ugettext_lazy as _
-from django.utils.functional import curry, cached_property
-from django.core import exceptions
-from django import forms
-
-RECURSIVE_RELATIONSHIP_CONSTANT = 'self'
-
-pending_lookups = {}
-
-
-def add_lazy_relation(cls, field, relation, operation):
- """
- Adds a lookup on ``cls`` when a related field is defined using a string,
- i.e.::
-
- class MyModel(Model):
- fk = ForeignKey("AnotherModel")
-
- This string can be:
-
- * RECURSIVE_RELATIONSHIP_CONSTANT (i.e. "self") to indicate a recursive
- relation.
-
- * The name of a model (i.e "AnotherModel") to indicate another model in
- the same app.
-
- * An app-label and model name (i.e. "someapp.AnotherModel") to indicate
- another model in a different app.
-
- If the other model hasn't yet been loaded -- almost a given if you're using
- lazy relationships -- then the relation won't be set up until the
- class_prepared signal fires at the end of model initialization.
-
- operation is the work that must be performed once the relation can be resolved.
- """
- # Check for recursive relations
- if relation == RECURSIVE_RELATIONSHIP_CONSTANT:
- app_label = cls._meta.app_label
- model_name = cls.__name__
-
- else:
- # Look for an "app.Model" relation
-
- if isinstance(relation, six.string_types):
- try:
- app_label, model_name = relation.split(".")
- except ValueError:
- # If we can't split, assume a model in current app
- app_label = cls._meta.app_label
- model_name = relation
- else:
- # it's actually a model class
- app_label = relation._meta.app_label
- model_name = relation._meta.object_name
-
- # Try to look up the related model, and if it's already loaded resolve the
- # string right away. If get_model returns None, it means that the related
- # model isn't loaded yet, so we need to pend the relation until the class
- # is prepared.
- model = get_model(app_label, model_name,
- seed_cache=False, only_installed=False)
- if model:
- operation(field, model, cls)
- else:
- key = (app_label, model_name)
- value = (cls, field, operation)
- pending_lookups.setdefault(key, []).append(value)
-
-
-def do_pending_lookups(sender, **kwargs):
- """
- Handle any pending relations to the sending model. Sent from class_prepared.
- """
- key = (sender._meta.app_label, sender.__name__)
- for cls, field, operation in pending_lookups.pop(key, []):
- operation(field, sender, cls)
-
-signals.class_prepared.connect(do_pending_lookups)
-
-
-#HACK
-class RelatedField(Field):
- def db_type(self, connection):
- '''By default related field will not have a column
- as it relates columns to another table'''
- return None
-
- def contribute_to_class(self, cls, name, virtual_only=False):
- sup = super(RelatedField, self)
-
- # Store the opts for related_query_name()
- self.opts = cls._meta
-
- if hasattr(sup, 'contribute_to_class'):
- sup.contribute_to_class(cls, name, virtual_only=virtual_only)
-
- if not cls._meta.abstract and self.rel.related_name:
- related_name = self.rel.related_name % {
- 'class': cls.__name__.lower(),
- 'app_label': cls._meta.app_label.lower()
- }
- self.rel.related_name = related_name
- other = self.rel.to
- if isinstance(other, six.string_types) or other._meta.pk is None:
- def resolve_related_class(field, model, cls):
- field.rel.to = model
- field.do_related_class(model, cls)
- add_lazy_relation(cls, self, other, resolve_related_class)
- else:
- self.do_related_class(other, cls)
-
- def set_attributes_from_rel(self):
- self.name = self.name or (self.rel.to._meta.model_name + '_' + self.rel.to._meta.pk.name)
- if self.verbose_name is None:
- self.verbose_name = self.rel.to._meta.verbose_name
- self.rel.set_field_name()
-
- def do_related_class(self, other, cls):
- self.set_attributes_from_rel()
- self.related = RelatedObject(other, cls, self)
- if not cls._meta.abstract:
- self.contribute_to_related_class(other, self.related)
-
- def related_query_name(self):
- # This method defines the name that can be used to identify this
- # related object in a table-spanning query. It uses the lower-cased
- # object_name by default, but this can be overridden with the
- # "related_name" option.
- return self.rel.related_query_name or self.rel.related_name or self.opts.model_name
-
-
-class RenameRelatedObjectDescriptorMethods(RenameMethodsBase):
- renamed_methods = (
- ('get_query_set', 'get_queryset', PendingDeprecationWarning),
- ('get_prefetch_query_set', 'get_prefetch_queryset', PendingDeprecationWarning),
- )
-
-
-class SingleRelatedObjectDescriptor(six.with_metaclass(RenameRelatedObjectDescriptorMethods)):
- # This class provides the functionality that makes the related-object
- # managers available as attributes on a model class, for fields that have
- # a single "remote" value, on the class pointed to by a related field.
- # In the example "place.restaurant", the restaurant attribute is a
- # SingleRelatedObjectDescriptor instance.
- def __init__(self, related):
- self.related = related
- self.cache_name = related.get_cache_name()
-
- def is_cached(self, instance):
- return hasattr(instance, self.cache_name)
-
- def get_queryset(self, **db_hints):
- db = router.db_for_read(self.related.model, **db_hints)
- return self.related.model._base_manager.using(db)
-
- def get_prefetch_queryset(self, instances):
- rel_obj_attr = attrgetter(self.related.field.attname)
- instance_attr = lambda obj: obj._get_pk_val()
- instances_dict = dict((instance_attr(inst), inst) for inst in instances)
- query = {'%s__in' % self.related.field.name: instances}
- qs = self.get_queryset(instance=instances[0]).filter(**query)
- # Since we're going to assign directly in the cache,
- # we must manage the reverse relation cache manually.
- rel_obj_cache_name = self.related.field.get_cache_name()
- for rel_obj in qs:
- instance = instances_dict[rel_obj_attr(rel_obj)]
- setattr(rel_obj, rel_obj_cache_name, instance)
- return qs, rel_obj_attr, instance_attr, True, self.cache_name
-
- def __get__(self, instance, instance_type=None):
- if instance is None:
- return self
- try:
- rel_obj = getattr(instance, self.cache_name)
- except AttributeError:
- related_pk = instance._get_pk_val()
- if related_pk is None:
- rel_obj = None
- else:
- params = {}
- for lh_field, rh_field in self.related.field.related_fields:
- params['%s__%s' % (self.related.field.name, rh_field.name)] = getattr(instance, rh_field.attname)
- try:
- rel_obj = self.get_queryset(instance=instance).get(**params)
- except self.related.model.DoesNotExist:
- rel_obj = None
- else:
- setattr(rel_obj, self.related.field.get_cache_name(), instance)
- setattr(instance, self.cache_name, rel_obj)
- if rel_obj is None:
- raise self.related.model.DoesNotExist("%s has no %s." % (
- instance.__class__.__name__,
- self.related.get_accessor_name()))
- else:
- return rel_obj
-
- def __set__(self, instance, value):
- # The similarity of the code below to the code in
- # ReverseSingleRelatedObjectDescriptor is annoying, but there's a bunch
- # of small differences that would make a common base class convoluted.
-
- # If null=True, we can assign null here, but otherwise the value needs
- # to be an instance of the related class.
- if value is None and self.related.field.null == False:
- raise ValueError('Cannot assign None: "%s.%s" does not allow null values.' %
- (instance._meta.object_name, self.related.get_accessor_name()))
- elif value is not None and not isinstance(value, self.related.model):
- raise ValueError('Cannot assign "%r": "%s.%s" must be a "%s" instance.' %
- (value, instance._meta.object_name,
- self.related.get_accessor_name(), self.related.opts.object_name))
- elif value is not None:
- if instance._state.db is None:
- instance._state.db = router.db_for_write(instance.__class__, instance=value)
- elif value._state.db is None:
- value._state.db = router.db_for_write(value.__class__, instance=instance)
- elif value._state.db is not None and instance._state.db is not None:
- if not router.allow_relation(value, instance):
- raise ValueError('Cannot assign "%r": the current database router prevents this relation.' % value)
-
- related_pk = tuple([getattr(instance, field.attname) for field in self.related.field.foreign_related_fields])
- if None in related_pk:
- raise ValueError('Cannot assign "%r": "%s" instance isn\'t saved in the database.' %
- (value, instance._meta.object_name))
-
- # Set the value of the related field to the value of the related object's related field
- for index, field in enumerate(self.related.field.local_related_fields):
- setattr(value, field.attname, related_pk[index])
-
- # Since we already know what the related object is, seed the related
- # object caches now, too. This avoids another db hit if you get the
- # object you just set.
- setattr(instance, self.cache_name, value)
- setattr(value, self.related.field.get_cache_name(), instance)
-
-
-class ReverseSingleRelatedObjectDescriptor(six.with_metaclass(RenameRelatedObjectDescriptorMethods)):
- # This class provides the functionality that makes the related-object
- # managers available as attributes on a model class, for fields that have
- # a single "remote" value, on the class that defines the related field.
- # In the example "choice.poll", the poll attribute is a
- # ReverseSingleRelatedObjectDescriptor instance.
- def __init__(self, field_with_rel):
- self.field = field_with_rel
- self.cache_name = self.field.get_cache_name()
-
- def is_cached(self, instance):
- return hasattr(instance, self.cache_name)
-
- def get_queryset(self, **db_hints):
- db = router.db_for_read(self.field.rel.to, **db_hints)
- rel_mgr = self.field.rel.to._default_manager
- # If the related manager indicates that it should be used for
- # related fields, respect that.
- if getattr(rel_mgr, 'use_for_related_fields', False):
- return rel_mgr.using(db)
- else:
- return QuerySet(self.field.rel.to).using(db)
-
- def get_prefetch_queryset(self, instances):
- rel_obj_attr = self.field.get_foreign_related_value
- instance_attr = self.field.get_local_related_value
- instances_dict = dict((instance_attr(inst), inst) for inst in instances)
- related_field = self.field.foreign_related_fields[0]
-
- # FIXME: This will need to be revisited when we introduce support for
- # composite fields. In the meantime we take this practical approach to
- # solve a regression on 1.6 when the reverse manager in hidden
- # (related_name ends with a '+'). Refs #21410.
- # The check for len(...) == 1 is a special case that allows the query
- # to be join-less and smaller. Refs #21760.
- if self.field.rel.is_hidden() or len(self.field.foreign_related_fields) == 1:
- query = {'%s__in' % related_field.name: set(instance_attr(inst)[0] for inst in instances)}
- else:
- query = {'%s__in' % self.field.related_query_name(): instances}
-
- qs = self.get_queryset(instance=instances[0]).filter(**query)
- # Since we're going to assign directly in the cache,
- # we must manage the reverse relation cache manually.
- if not self.field.rel.multiple:
- rel_obj_cache_name = self.field.related.get_cache_name()
- for rel_obj in qs:
- instance = instances_dict[rel_obj_attr(rel_obj)]
- setattr(rel_obj, rel_obj_cache_name, instance)
- return qs, rel_obj_attr, instance_attr, True, self.cache_name
-
- def __get__(self, instance, instance_type=None):
- if instance is None:
- return self
- try:
- rel_obj = getattr(instance, self.cache_name)
- except AttributeError:
- val = self.field.get_local_related_value(instance)
- if None in val:
- rel_obj = None
- else:
- params = dict(
- (rh_field.attname, getattr(instance, lh_field.attname))
- for lh_field, rh_field in self.field.related_fields)
- qs = self.get_queryset(instance=instance)
- extra_filter = self.field.get_extra_descriptor_filter(instance)
- if isinstance(extra_filter, dict):
- params.update(extra_filter)
- qs = qs.filter(**params)
- else:
- qs = qs.filter(extra_filter, **params)
- # Assuming the database enforces foreign keys, this won't fail.
- rel_obj = qs.get()
- if not self.field.rel.multiple:
- setattr(rel_obj, self.field.related.get_cache_name(), instance)
- setattr(instance, self.cache_name, rel_obj)
- if rel_obj is None and not self.field.null:
- raise self.field.rel.to.DoesNotExist(
- "%s has no %s." % (self.field.model.__name__, self.field.name))
- else:
- return rel_obj
-
- def __set__(self, instance, value):
- # If null=True, we can assign null here, but otherwise the value needs
- # to be an instance of the related class.
- if value is None and self.field.null == False:
- raise ValueError('Cannot assign None: "%s.%s" does not allow null values.' %
- (instance._meta.object_name, self.field.name))
- elif value is not None and not isinstance(value, self.field.rel.to):
- raise ValueError('Cannot assign "%r": "%s.%s" must be a "%s" instance.' %
- (value, instance._meta.object_name,
- self.field.name, self.field.rel.to._meta.object_name))
- elif value is not None:
- if instance._state.db is None:
- instance._state.db = router.db_for_write(instance.__class__, instance=value)
- elif value._state.db is None:
- value._state.db = router.db_for_write(value.__class__, instance=instance)
- elif value._state.db is not None and instance._state.db is not None:
- if not router.allow_relation(value, instance):
- raise ValueError('Cannot assign "%r": the current database router prevents this relation.' % value)
-
- # If we're setting the value of a OneToOneField to None, we need to clear
- # out the cache on any old related object. Otherwise, deleting the
- # previously-related object will also cause this object to be deleted,
- # which is wrong.
- if value is None:
- # Look up the previously-related object, which may still be available
- # since we've not yet cleared out the related field.
- # Use the cache directly, instead of the accessor; if we haven't
- # populated the cache, then we don't care - we're only accessing
- # the object to invalidate the accessor cache, so there's no
- # need to populate the cache just to expire it again.
- related = getattr(instance, self.cache_name, None)
-
- # If we've got an old related object, we need to clear out its
- # cache. This cache also might not exist if the related object
- # hasn't been accessed yet.
- if related is not None:
- setattr(related, self.field.related.get_cache_name(), None)
-
- # Set the value of the related field
- for lh_field, rh_field in self.field.related_fields:
- try:
- setattr(instance, lh_field.attname, getattr(value, rh_field.attname))
- except AttributeError:
- setattr(instance, lh_field.attname, None)
-
- # Since we already know what the related object is, seed the related
- # object caches now, too. This avoids another db hit if you get the
- # object you just set.
- setattr(instance, self.cache_name, value)
- if value is not None and not self.field.rel.multiple:
- setattr(value, self.field.related.get_cache_name(), instance)
-
-
-class ForeignRelatedObjectsDescriptor(object):
- # This class provides the functionality that makes the related-object
- # managers available as attributes on a model class, for fields that have
- # multiple "remote" values and have a ForeignKey pointed at them by
- # some other model. In the example "poll.choice_set", the choice_set
- # attribute is a ForeignRelatedObjectsDescriptor instance.
- def __init__(self, related):
- self.related = related # RelatedObject instance
-
- def __get__(self, instance, instance_type=None):
- if instance is None:
- return self
-
- return self.related_manager_cls(instance)
-
- def __set__(self, instance, value):
- manager = self.__get__(instance)
- # If the foreign key can support nulls, then completely clear the related set.
- # Otherwise, just move the named objects into the set.
- if self.related.field.null:
- manager.clear()
- manager.add(*value)
-
- @cached_property
- def related_manager_cls(self):
- # Dynamically create a class that subclasses the related model's default
- # manager.
- superclass = self.related.model._default_manager.__class__
- rel_field = self.related.field
- rel_model = self.related.model
-
- class RelatedManager(superclass):
- def __init__(self, instance):
- super(RelatedManager, self).__init__()
- self.instance = instance
- self.core_filters= {'%s__exact' % rel_field.name: instance}
- self.model = rel_model
-
- def get_queryset(self):
- try:
- return self.instance._prefetched_objects_cache[rel_field.related_query_name()]
- except (AttributeError, KeyError):
- db = self._db or router.db_for_read(self.model, instance=self.instance)
- qs = super(RelatedManager, self).get_queryset().using(db).filter(**self.core_filters)
- empty_strings_as_null = connections[db].features.interprets_empty_strings_as_nulls
- for field in rel_field.foreign_related_fields:
- val = getattr(self.instance, field.attname)
- if val is None or (val == '' and empty_strings_as_null):
- return qs.none()
- qs._known_related_objects = {rel_field: {self.instance.pk: self.instance}}
- return qs
-
- def get_prefetch_queryset(self, instances):
- rel_obj_attr = rel_field.get_local_related_value
- instance_attr = rel_field.get_foreign_related_value
- instances_dict = dict((instance_attr(inst), inst) for inst in instances)
- db = self._db or router.db_for_read(self.model, instance=instances[0])
- query = {'%s__in' % rel_field.name: instances}
- qs = super(RelatedManager, self).get_queryset().using(db).filter(**query)
- # Since we just bypassed this class' get_queryset(), we must manage
- # the reverse relation manually.
- for rel_obj in qs:
- instance = instances_dict[rel_obj_attr(rel_obj)]
- setattr(rel_obj, rel_field.name, instance)
- cache_name = rel_field.related_query_name()
- return qs, rel_obj_attr, instance_attr, False, cache_name
-
- def add(self, *objs):
- for obj in objs:
- if not isinstance(obj, self.model):
- raise TypeError("'%s' instance expected, got %r" % (self.model._meta.object_name, obj))
- setattr(obj, rel_field.name, self.instance)
- obj.save()
- add.alters_data = True
-
- def create(self, **kwargs):
- kwargs[rel_field.name] = self.instance
- db = router.db_for_write(self.model, instance=self.instance)
- return super(RelatedManager, self.db_manager(db)).create(**kwargs)
- create.alters_data = True
-
- def get_or_create(self, **kwargs):
- # Update kwargs with the related object that this
- # ForeignRelatedObjectsDescriptor knows about.
- kwargs[rel_field.name] = self.instance
- db = router.db_for_write(self.model, instance=self.instance)
- return super(RelatedManager, self.db_manager(db)).get_or_create(**kwargs)
- get_or_create.alters_data = True
-
- # remove() and clear() are only provided if the ForeignKey can have a value of null.
- if rel_field.null:
- def remove(self, *objs):
- val = rel_field.get_foreign_related_value(self.instance)
- for obj in objs:
- # Is obj actually part of this descriptor set?
- if rel_field.get_local_related_value(obj) == val:
- setattr(obj, rel_field.name, None)
- obj.save()
- else:
- raise rel_field.rel.to.DoesNotExist("%r is not related to %r." % (obj, self.instance))
- remove.alters_data = True
-
- def clear(self):
- self.update(**{rel_field.name: None})
- clear.alters_data = True
-
- return RelatedManager
-
-
-def create_many_related_manager(superclass, rel):
- """Creates a manager that subclasses 'superclass' (which is a Manager)
- and adds behavior for many-to-many related objects."""
- class ManyRelatedManager(superclass):
- def __init__(self, model=None, query_field_name=None, instance=None, symmetrical=None,
- source_field_name=None, target_field_name=None, reverse=False,
- through=None, prefetch_cache_name=None):
- super(ManyRelatedManager, self).__init__()
- self.model = model
- self.query_field_name = query_field_name
-
- source_field = through._meta.get_field(source_field_name)
- source_related_fields = source_field.related_fields
-
- self.core_filters = {}
- for lh_field, rh_field in source_related_fields:
- self.core_filters['%s__%s' % (query_field_name, rh_field.name)] = getattr(instance, rh_field.attname)
-
- self.instance = instance
- self.symmetrical = symmetrical
- self.source_field = source_field
- self.source_field_name = source_field_name
- self.target_field_name = target_field_name
- self.reverse = reverse
- self.through = through
- self.prefetch_cache_name = prefetch_cache_name
- self.related_val = source_field.get_foreign_related_value(instance)
- # Used for single column related auto created models
- self._fk_val = self.related_val[0]
- if None in self.related_val:
- raise ValueError('"%r" needs to have a value for field "%s" before '
- 'this many-to-many relationship can be used.' %
- (instance, source_field_name))
- # Even if this relation is not to pk, we require still pk value.
- # The wish is that the instance has been already saved to DB,
- # although having a pk value isn't a guarantee of that.
- if instance.pk is None:
- raise ValueError("%r instance needs to have a primary key value before "
- "a many-to-many relationship can be used." %
- instance.__class__.__name__)
-
-
- def _get_fk_val(self, obj, field_name):
- """
- Returns the correct value for this relationship's foreign key. This
- might be something else than pk value when to_field is used.
- """
- fk = self.through._meta.get_field(field_name)
- if fk.rel.field_name and fk.rel.field_name != fk.rel.to._meta.pk.attname:
- attname = fk.rel.get_related_field().get_attname()
- return fk.get_prep_lookup('exact', getattr(obj, attname))
- else:
- return obj.pk
-
- def get_queryset(self):
- try:
- return self.instance._prefetched_objects_cache[self.prefetch_cache_name]
- except (AttributeError, KeyError):
- db = self._db or router.db_for_read(self.instance.__class__, instance=self.instance)
- return super(ManyRelatedManager, self).get_queryset().using(db)._next_is_sticky().filter(**self.core_filters)
-
- def get_prefetch_queryset(self, instances):
- instance = instances[0]
- db = self._db or router.db_for_read(instance.__class__, instance=instance)
- query = {'%s__in' % self.query_field_name: instances}
- qs = super(ManyRelatedManager, self).get_queryset().using(db)._next_is_sticky().filter(**query)
-
- # M2M: need to annotate the query in order to get the primary model
- # that the secondary model was actually related to. We know that
- # there will already be a join on the join table, so we can just add
- # the select.
-
- # For non-autocreated 'through' models, can't assume we are
- # dealing with PK values.
- fk = self.through._meta.get_field(self.source_field_name)
- join_table = self.through._meta.db_table
- connection = connections[db]
- qn = connection.ops.quote_name
- qs = qs.extra(select=dict(
- ('_prefetch_related_val_%s' % f.attname,
- '%s.%s' % (qn(join_table), qn(f.column))) for f in fk.local_related_fields))
- return (qs,
- lambda result: tuple([getattr(result, '_prefetch_related_val_%s' % f.attname) for f in fk.local_related_fields]),
- lambda inst: tuple([getattr(inst, f.attname) for f in fk.foreign_related_fields]),
- False,
- self.prefetch_cache_name)
-
- # If the ManyToMany relation has an intermediary model,
- # the add and remove methods do not exist.
- if rel.through._meta.auto_created:
- def add(self, *objs):
- self._add_items(self.source_field_name, self.target_field_name, *objs)
-
- # If this is a symmetrical m2m relation to self, add the mirror entry in the m2m table
- if self.symmetrical:
- self._add_items(self.target_field_name, self.source_field_name, *objs)
- add.alters_data = True
-
- def remove(self, *objs):
- self._remove_items(self.source_field_name, self.target_field_name, *objs)
-
- # If this is a symmetrical m2m relation to self, remove the mirror entry in the m2m table
- if self.symmetrical:
- self._remove_items(self.target_field_name, self.source_field_name, *objs)
- remove.alters_data = True
-
- def clear(self):
- self._clear_items(self.source_field_name)
-
- # If this is a symmetrical m2m relation to self, clear the mirror entry in the m2m table
- if self.symmetrical:
- self._clear_items(self.target_field_name)
- clear.alters_data = True
-
- def create(self, **kwargs):
- # This check needs to be done here, since we can't later remove this
- # from the method lookup table, as we do with add and remove.
- if not self.through._meta.auto_created:
- opts = self.through._meta
- raise AttributeError("Cannot use create() on a ManyToManyField which specifies an intermediary model. Use %s.%s's Manager instead." % (opts.app_label, opts.object_name))
- db = router.db_for_write(self.instance.__class__, instance=self.instance)
- new_obj = super(ManyRelatedManager, self.db_manager(db)).create(**kwargs)
- self.add(new_obj)
- return new_obj
- create.alters_data = True
-
- def get_or_create(self, **kwargs):
- db = router.db_for_write(self.instance.__class__, instance=self.instance)
- obj, created = \
- super(ManyRelatedManager, self.db_manager(db)).get_or_create(**kwargs)
- # We only need to add() if created because if we got an object back
- # from get() then the relationship already exists.
- if created:
- self.add(obj)
- return obj, created
- get_or_create.alters_data = True
-
- def _add_items(self, source_field_name, target_field_name, *objs):
- # source_field_name: the PK fieldname in join table for the source object
- # target_field_name: the PK fieldname in join table for the target object
- # *objs - objects to add. Either object instances, or primary keys of object instances.
-
- # If there aren't any objects, there is nothing to do.
- from django.db.models import Model
- if objs:
- new_ids = set()
- for obj in objs:
- if isinstance(obj, self.model):
- if not router.allow_relation(obj, self.instance):
- raise ValueError('Cannot add "%r": instance is on database "%s", value is on database "%s"' %
- (obj, self.instance._state.db, obj._state.db))
- fk_val = self._get_fk_val(obj, target_field_name)
- if fk_val is None:
- raise ValueError('Cannot add "%r": the value for field "%s" is None' %
- (obj, target_field_name))
- new_ids.add(self._get_fk_val(obj, target_field_name))
- elif isinstance(obj, Model):
- raise TypeError("'%s' instance expected, got %r" % (self.model._meta.object_name, obj))
- else:
- new_ids.add(obj)
- db = router.db_for_write(self.through, instance=self.instance)
- vals = self.through._default_manager.using(db).values_list(target_field_name, flat=True)
- vals = vals.filter(**{
- source_field_name: self._fk_val,
- '%s__in' % target_field_name: new_ids,
- })
- new_ids = new_ids - set(vals)
-
- if self.reverse or source_field_name == self.source_field_name:
- # Don't send the signal when we are inserting the
- # duplicate data row for symmetrical reverse entries.
- signals.m2m_changed.send(sender=self.through, action='pre_add',
- instance=self.instance, reverse=self.reverse,
- model=self.model, pk_set=new_ids, using=db)
- # Add the ones that aren't there already
- self.through._default_manager.using(db).bulk_create([
- self.through(**{
- '%s_id' % source_field_name: self._fk_val,
- '%s_id' % target_field_name: obj_id,
- })
- for obj_id in new_ids
- ])
-
- if self.reverse or source_field_name == self.source_field_name:
- # Don't send the signal when we are inserting the
- # duplicate data row for symmetrical reverse entries.
- signals.m2m_changed.send(sender=self.through, action='post_add',
- instance=self.instance, reverse=self.reverse,
- model=self.model, pk_set=new_ids, using=db)
-
- def _remove_items(self, source_field_name, target_field_name, *objs):
- # source_field_name: the PK colname in join table for the source object
- # target_field_name: the PK colname in join table for the target object
- # *objs - objects to remove
-
- # If there aren't any objects, there is nothing to do.
- if objs:
- # Check that all the objects are of the right type
- old_ids = set()
- for obj in objs:
- if isinstance(obj, self.model):
- old_ids.add(self._get_fk_val(obj, target_field_name))
- else:
- old_ids.add(obj)
- # Work out what DB we're operating on
- db = router.db_for_write(self.through, instance=self.instance)
- # Send a signal to the other end if need be.
- if self.reverse or source_field_name == self.source_field_name:
- # Don't send the signal when we are deleting the
- # duplicate data row for symmetrical reverse entries.
- signals.m2m_changed.send(sender=self.through, action="pre_remove",
- instance=self.instance, reverse=self.reverse,
- model=self.model, pk_set=old_ids, using=db)
- # Remove the specified objects from the join table
- self.through._default_manager.using(db).filter(**{
- source_field_name: self._fk_val,
- '%s__in' % target_field_name: old_ids
- }).delete()
- if self.reverse or source_field_name == self.source_field_name:
- # Don't send the signal when we are deleting the
- # duplicate data row for symmetrical reverse entries.
- signals.m2m_changed.send(sender=self.through, action="post_remove",
- instance=self.instance, reverse=self.reverse,
- model=self.model, pk_set=old_ids, using=db)
-
- def _clear_items(self, source_field_name):
- db = router.db_for_write(self.through, instance=self.instance)
- # source_field_name: the PK colname in join table for the source object
- if self.reverse or source_field_name == self.source_field_name:
- # Don't send the signal when we are clearing the
- # duplicate data rows for symmetrical reverse entries.
- signals.m2m_changed.send(sender=self.through, action="pre_clear",
- instance=self.instance, reverse=self.reverse,
- model=self.model, pk_set=None, using=db)
- self.through._default_manager.using(db).filter(**{
- source_field_name: self.related_val
- }).delete()
- if self.reverse or source_field_name == self.source_field_name:
- # Don't send the signal when we are clearing the
- # duplicate data rows for symmetrical reverse entries.
- signals.m2m_changed.send(sender=self.through, action="post_clear",
- instance=self.instance, reverse=self.reverse,
- model=self.model, pk_set=None, using=db)
-
- return ManyRelatedManager
-
-
-class ManyRelatedObjectsDescriptor(object):
- # This class provides the functionality that makes the related-object
- # managers available as attributes on a model class, for fields that have
- # multiple "remote" values and have a ManyToManyField pointed at them by
- # some other model (rather than having a ManyToManyField themselves).
- # In the example "publication.article_set", the article_set attribute is a
- # ManyRelatedObjectsDescriptor instance.
- def __init__(self, related):
- self.related = related # RelatedObject instance
-
- @cached_property
- def related_manager_cls(self):
- # Dynamically create a class that subclasses the related
- # model's default manager.
- return create_many_related_manager(
- self.related.model._default_manager.__class__,
- self.related.field.rel
- )
-
- def __get__(self, instance, instance_type=None):
- if instance is None:
- return self
-
- rel_model = self.related.model
-
- manager = self.related_manager_cls(
- model=rel_model,
- query_field_name=self.related.field.name,
- prefetch_cache_name=self.related.field.related_query_name(),
- instance=instance,
- symmetrical=False,
- source_field_name=self.related.field.m2m_reverse_field_name(),
- target_field_name=self.related.field.m2m_field_name(),
- reverse=True,
- through=self.related.field.rel.through,
- )
-
- return manager
-
- def __set__(self, instance, value):
- if not self.related.field.rel.through._meta.auto_created:
- opts = self.related.field.rel.through._meta
- raise AttributeError("Cannot set values on a ManyToManyField which specifies an intermediary model. Use %s.%s's Manager instead." % (opts.app_label, opts.object_name))
-
- manager = self.__get__(instance)
- manager.clear()
- manager.add(*value)
-
-
-class ReverseManyRelatedObjectsDescriptor(object):
- # This class provides the functionality that makes the related-object
- # managers available as attributes on a model class, for fields that have
- # multiple "remote" values and have a ManyToManyField defined in their
- # model (rather than having another model pointed *at* them).
- # In the example "article.publications", the publications attribute is a
- # ReverseManyRelatedObjectsDescriptor instance.
- def __init__(self, m2m_field):
- self.field = m2m_field
-
- @property
- def through(self):
- # through is provided so that you have easy access to the through
- # model (Book.authors.through) for inlines, etc. This is done as
- # a property to ensure that the fully resolved value is returned.
- return self.field.rel.through
-
- @cached_property
- def related_manager_cls(self):
- # Dynamically create a class that subclasses the related model's
- # default manager.
- return create_many_related_manager(
- self.field.rel.to._default_manager.__class__,
- self.field.rel
- )
-
- def __get__(self, instance, instance_type=None):
- if instance is None:
- return self
-
- manager = self.related_manager_cls(
- model=self.field.rel.to,
- query_field_name=self.field.related_query_name(),
- prefetch_cache_name=self.field.name,
- instance=instance,
- symmetrical=self.field.rel.symmetrical,
- source_field_name=self.field.m2m_field_name(),
- target_field_name=self.field.m2m_reverse_field_name(),
- reverse=False,
- through=self.field.rel.through,
- )
-
- return manager
-
- def __set__(self, instance, value):
- if not self.field.rel.through._meta.auto_created:
- opts = self.field.rel.through._meta
- raise AttributeError("Cannot set values on a ManyToManyField which specifies an intermediary model. Use %s.%s's Manager instead." % (opts.app_label, opts.object_name))
-
- manager = self.__get__(instance)
- # clear() can change expected output of 'value' queryset, we force evaluation
- # of queryset before clear; ticket #19816
- value = tuple(value)
- manager.clear()
- manager.add(*value)
-
-class ForeignObjectRel(object):
- def __init__(self, field, to, related_name=None, limit_choices_to=None,
- parent_link=False, on_delete=None, related_query_name=None):
- try:
- to._meta
- except AttributeError: # to._meta doesn't exist, so it must be RECURSIVE_RELATIONSHIP_CONSTANT
- assert isinstance(to, six.string_types), "'to' must be either a model, a model name or the string %r" % RECURSIVE_RELATIONSHIP_CONSTANT
-
- self.field = field
- self.to = to
- self.related_name = related_name
- self.related_query_name = related_query_name
- self.limit_choices_to = {} if limit_choices_to is None else limit_choices_to
- self.multiple = True
- self.parent_link = parent_link
- self.on_delete = on_delete
-
- def is_hidden(self):
- "Should the related object be hidden?"
- return self.related_name and self.related_name[-1] == '+'
-
- def get_joining_columns(self):
- return self.field.get_reverse_joining_columns()
-
- def get_extra_restriction(self, where_class, alias, related_alias):
- return self.field.get_extra_restriction(where_class, related_alias, alias)
-
- def set_field_name(self):
- """
- Sets the related field's name, this is not available until later stages
- of app loading, so set_field_name is called from
- set_attributes_from_rel()
- """
- # By default foreign object doesn't relate to any remote field (for
- # example custom multicolumn joins currently have no remote field).
- self.field_name = None
-
-class ManyToOneRel(ForeignObjectRel):
- def __init__(self, field, to, field_name, related_name=None, limit_choices_to=None,
- parent_link=False, on_delete=None, related_query_name=None):
- super(ManyToOneRel, self).__init__(
- field, to, related_name=related_name, limit_choices_to=limit_choices_to,
- parent_link=parent_link, on_delete=on_delete, related_query_name=related_query_name)
- self.field_name = field_name
-
- def get_related_field(self):
- """
- Returns the Field in the 'to' object to which this relationship is
- tied.
- """
- data = self.to._meta.get_field_by_name(self.field_name)
- if not data[2]:
- raise FieldDoesNotExist("No related field named '%s'" %
- self.field_name)
- return data[0]
-
- def set_field_name(self):
- self.field_name = self.field_name or self.to._meta.pk.name
-
-
-class OneToOneRel(ManyToOneRel):
- def __init__(self, field, to, field_name, related_name=None, limit_choices_to=None,
- parent_link=False, on_delete=None, related_query_name=None):
- super(OneToOneRel, self).__init__(field, to, field_name,
- related_name=related_name, limit_choices_to=limit_choices_to,
- parent_link=parent_link, on_delete=on_delete, related_query_name=related_query_name,
- )
- self.multiple = False
-
-
-class ManyToManyRel(object):
- def __init__(self, to, related_name=None, limit_choices_to=None,
- symmetrical=True, through=None, db_constraint=True, related_query_name=None):
- if through and not db_constraint:
- raise ValueError("Can't supply a through model and db_constraint=False")
- self.to = to
- self.related_name = related_name
- self.related_query_name = related_query_name
- if limit_choices_to is None:
- limit_choices_to = {}
- self.limit_choices_to = limit_choices_to
- self.symmetrical = symmetrical
- self.multiple = True
- self.through = through
- self.db_constraint = db_constraint
-
- def is_hidden(self):
- "Should the related object be hidden?"
- return self.related_name and self.related_name[-1] == '+'
-
- def get_related_field(self):
- """
- Returns the field in the to' object to which this relationship is tied
- (this is always the primary key on the target model). Provided for
- symmetry with ManyToOneRel.
- """
- return self.to._meta.pk
-
-
-class ForeignObject(RelatedField):
- requires_unique_target = True
- generate_reverse_relation = True
-
- def __init__(self, to, from_fields, to_fields, **kwargs):
- self.from_fields = from_fields
- self.to_fields = to_fields
-
- if 'rel' not in kwargs:
- kwargs['rel'] = ForeignObjectRel(
- self, to,
- related_name=kwargs.pop('related_name', None),
- related_query_name=kwargs.pop('related_query_name', None),
- limit_choices_to=kwargs.pop('limit_choices_to', None),
- parent_link=kwargs.pop('parent_link', False),
- on_delete=kwargs.pop('on_delete', CASCADE),
- )
- kwargs['verbose_name'] = kwargs.get('verbose_name', None)
-
- super(ForeignObject, self).__init__(**kwargs)
-
- def resolve_related_fields(self):
- if len(self.from_fields) < 1 or len(self.from_fields) != len(self.to_fields):
- raise ValueError('Foreign Object from and to fields must be the same non-zero length')
- related_fields = []
- for index in range(len(self.from_fields)):
- from_field_name = self.from_fields[index]
- to_field_name = self.to_fields[index]
- from_field = (self if from_field_name == 'self'
- else self.opts.get_field_by_name(from_field_name)[0])
- to_field = (self.rel.to._meta.pk if to_field_name is None
- else self.rel.to._meta.get_field_by_name(to_field_name)[0])
- related_fields.append((from_field, to_field))
- return related_fields
-
- @property
- def related_fields(self):
- if not hasattr(self, '_related_fields'):
- self._related_fields = self.resolve_related_fields()
- return self._related_fields
-
- @property
- def reverse_related_fields(self):
- return [(rhs_field, lhs_field) for lhs_field, rhs_field in self.related_fields]
-
- @property
- def local_related_fields(self):
- return tuple([lhs_field for lhs_field, rhs_field in self.related_fields])
-
- @property
- def foreign_related_fields(self):
- return tuple([rhs_field for lhs_field, rhs_field in self.related_fields])
-
- def get_local_related_value(self, instance):
- return self.get_instance_value_for_fields(instance, self.local_related_fields)
-
- def get_foreign_related_value(self, instance):
- return self.get_instance_value_for_fields(instance, self.foreign_related_fields)
-
- @staticmethod
- def get_instance_value_for_fields(instance, fields):
- ret = []
- for field in fields:
- # Gotcha: in some cases (like fixture loading) a model can have
- # different values in parent_ptr_id and parent's id. So, use
- # instance.pk (that is, parent_ptr_id) when asked for instance.id.
- if field.primary_key:
- ret.append(instance.pk)
- else:
- ret.append(getattr(instance, field.attname))
- return tuple(ret)
-
- def get_attname_column(self):
- attname, column = super(ForeignObject, self).get_attname_column()
- return attname, None
-
- def get_joining_columns(self, reverse_join=False):
- source = self.reverse_related_fields if reverse_join else self.related_fields
- return tuple([(lhs_field.column, rhs_field.column) for lhs_field, rhs_field in source])
-
- def get_reverse_joining_columns(self):
- return self.get_joining_columns(reverse_join=True)
-
- def get_extra_descriptor_filter(self, instance):
- """
- Returns an extra filter condition for related object fetching when
- user does 'instance.fieldname', that is the extra filter is used in
- the descriptor of the field.
-
- The filter should be either a dict usable in .filter(**kwargs) call or
- a Q-object. The condition will be ANDed together with the relation's
- joining columns.
-
- A parallel method is get_extra_restriction() which is used in
- JOIN and subquery conditions.
- """
- return {}
-
- def get_extra_restriction(self, where_class, alias, related_alias):
- """
- Returns a pair condition used for joining and subquery pushdown. The
- condition is something that responds to as_sql(qn, connection) method.
-
- Note that currently referring both the 'alias' and 'related_alias'
- will not work in some conditions, like subquery pushdown.
-
- A parallel method is get_extra_descriptor_filter() which is used in
- instance.fieldname related object fetching.
- """
- return None
-
- def get_path_info(self):
- """
- Get path from this field to the related model.
- """
- opts = self.rel.to._meta
- from_opts = self.model._meta
- return [PathInfo(from_opts, opts, self.foreign_related_fields, self, False, True)]
-
- def get_reverse_path_info(self):
- """
- Get path from the related model to this field's model.
- """
- opts = self.model._meta
- from_opts = self.rel.to._meta
- pathinfos = [PathInfo(from_opts, opts, (opts.pk,), self.rel, not self.unique, False)]
- return pathinfos
-
- def get_lookup_constraint(self, constraint_class, alias, targets, sources, lookup_type,
- raw_value):
- from django.db.models.sql.where import SubqueryConstraint, Constraint, AND, OR
- root_constraint = constraint_class()
- assert len(targets) == len(sources)
-
- def get_normalized_value(value):
-
- from django.db.models import Model
- if isinstance(value, Model):
- value_list = []
- for source in sources:
- # Account for one-to-one relations when sent a different model
- while not isinstance(value, source.model) and source.rel:
- source = source.rel.to._meta.get_field(source.rel.field_name)
- value_list.append(getattr(value, source.attname))
- return tuple(value_list)
- elif not isinstance(value, tuple):
- return (value,)
- return value
-
- is_multicolumn = len(self.related_fields) > 1
- if (hasattr(raw_value, '_as_sql') or
- hasattr(raw_value, 'get_compiler')):
- root_constraint.add(SubqueryConstraint(alias, [target.column for target in targets],
- [source.name for source in sources], raw_value),
- AND)
- elif lookup_type == 'isnull':
- root_constraint.add(
- (Constraint(alias, targets[0].column, targets[0]), lookup_type, raw_value), AND)
- elif (lookup_type == 'exact' or (lookup_type in ['gt', 'lt', 'gte', 'lte']
- and not is_multicolumn)):
- value = get_normalized_value(raw_value)
- for index, source in enumerate(sources):
- root_constraint.add(
- (Constraint(alias, targets[index].column, sources[index]), lookup_type,
- value[index]), AND)
- elif lookup_type in ['range', 'in'] and not is_multicolumn:
- values = [get_normalized_value(value) for value in raw_value]
- value = [val[0] for val in values]
- root_constraint.add(
- (Constraint(alias, targets[0].column, sources[0]), lookup_type, value), AND)
- elif lookup_type == 'in':
- values = [get_normalized_value(value) for value in raw_value]
- for value in values:
- value_constraint = constraint_class()
- for index, target in enumerate(targets):
- value_constraint.add(
- (Constraint(alias, target.column, sources[index]), 'exact', value[index]),
- AND)
- root_constraint.add(value_constraint, OR)
- else:
- raise TypeError('Related Field got invalid lookup: %s' % lookup_type)
- return root_constraint
-
- @property
- def attnames(self):
- return tuple([field.attname for field in self.local_related_fields])
-
- def get_defaults(self):
- return tuple([field.get_default() for field in self.local_related_fields])
-
- def contribute_to_class(self, cls, name, virtual_only=False):
- super(ForeignObject, self).contribute_to_class(cls, name, virtual_only=virtual_only)
- setattr(cls, self.name, ReverseSingleRelatedObjectDescriptor(self))
-
- def contribute_to_related_class(self, cls, related):
- # Internal FK's - i.e., those with a related name ending with '+' -
- # and swapped models don't get a related descriptor.
- if not self.rel.is_hidden() and not related.model._meta.swapped:
- setattr(cls, related.get_accessor_name(), ForeignRelatedObjectsDescriptor(related))
- if self.rel.limit_choices_to:
- cls._meta.related_fkey_lookups.append(self.rel.limit_choices_to)
-
-
-class ForeignKey(ForeignObject):
- empty_strings_allowed = False
- default_error_messages = {
- 'invalid': _('%(model)s instance with pk %(pk)r does not exist.')
- }
- description = _("Foreign Key (type determined by related field)")
-
- def __init__(self, to, to_field=None, rel_class=ManyToOneRel,
- db_constraint=True, **kwargs):
- try:
- to_name = to._meta.object_name.lower()
- except AttributeError: # to._meta doesn't exist, so it must be RECURSIVE_RELATIONSHIP_CONSTANT
- assert isinstance(to, six.string_types), "%s(%r) is invalid. First parameter to ForeignKey must be either a model, a model name, or the string %r" % (self.__class__.__name__, to, RECURSIVE_RELATIONSHIP_CONSTANT)
- else:
- assert not to._meta.abstract, "%s cannot define a relation with abstract class %s" % (self.__class__.__name__, to._meta.object_name)
- # For backwards compatibility purposes, we need to *try* and set
- # the to_field during FK construction. It won't be guaranteed to
- # be correct until contribute_to_class is called. Refs #12190.
- to_field = to_field or (to._meta.pk and to._meta.pk.name)
-
- if 'db_index' not in kwargs:
- kwargs['db_index'] = True
-
- self.db_constraint = db_constraint
-
- kwargs['rel'] = rel_class(
- self, to, to_field,
- related_name=kwargs.pop('related_name', None),
- related_query_name=kwargs.pop('related_query_name', None),
- limit_choices_to=kwargs.pop('limit_choices_to', None),
- parent_link=kwargs.pop('parent_link', False),
- on_delete=kwargs.pop('on_delete', CASCADE),
- )
- super(ForeignKey, self).__init__(to, ['self'], [to_field], **kwargs)
-
- @property
- def related_field(self):
- return self.foreign_related_fields[0]
-
- def get_reverse_path_info(self):
- """
- Get path from the related model to this field's model.
- """
- opts = self.model._meta
- from_opts = self.rel.to._meta
- pathinfos = [PathInfo(from_opts, opts, (opts.pk,), self.rel, not self.unique, False)]
- return pathinfos
-
- def validate(self, value, model_instance):
- if self.rel.parent_link:
- return
- super(ForeignKey, self).validate(value, model_instance)
- if value is None:
- return
-
- using = router.db_for_read(model_instance.__class__, instance=model_instance)
- qs = self.rel.to._default_manager.using(using).filter(
- **{self.rel.field_name: value}
- )
- qs = qs.complex_filter(self.rel.limit_choices_to)
- if not qs.exists():
- raise exceptions.ValidationError(
- self.error_messages['invalid'],
- code='invalid',
- params={'model': self.rel.to._meta.verbose_name, 'pk': value},
- )
-
- def get_attname(self):
- return '%s_id' % self.name
-
- def get_attname_column(self):
- attname = self.get_attname()
- column = self.db_column or attname
- return attname, column
-
- def get_validator_unique_lookup_type(self):
- return '%s__%s__exact' % (self.name, self.related_field.name)
-
- def get_default(self):
- "Here we check if the default value is an object and return the to_field if so."
- field_default = super(ForeignKey, self).get_default()
- if isinstance(field_default, self.rel.to):
- return getattr(field_default, self.related_field.attname)
- return field_default
-
- def get_db_prep_save(self, value, connection):
- if value == '' or value == None:
- return None
- else:
- return self.related_field.get_db_prep_save(value,
- connection=connection)
-
- def value_to_string(self, obj):
- if not obj:
- # In required many-to-one fields with only one available choice,
- # select that one available choice. Note: For SelectFields
- # we have to check that the length of choices is *2*, not 1,
- # because SelectFields always have an initial "blank" value.
- if not self.blank and self.choices:
- choice_list = self.get_choices_default()
- if len(choice_list) == 2:
- return smart_text(choice_list[1][0])
- return super(ForeignKey, self).value_to_string(obj)
-
- def contribute_to_related_class(self, cls, related):
- super(ForeignKey, self).contribute_to_related_class(cls, related)
- if self.rel.field_name is None:
- self.rel.field_name = cls._meta.pk.name
-
- def formfield(self, **kwargs):
- db = kwargs.pop('using', None)
- if isinstance(self.rel.to, six.string_types):
- raise ValueError("Cannot create form field for %r yet, because "
- "its related model %r has not been loaded yet" %
- (self.name, self.rel.to))
- defaults = {
- 'form_class': forms.ModelChoiceField,
- 'queryset': self.rel.to._default_manager.using(db).complex_filter(self.rel.limit_choices_to),
- 'to_field_name': self.rel.field_name,
- }
- defaults.update(kwargs)
- return super(ForeignKey, self).formfield(**defaults)
-
- def db_type(self, connection):
- # The database column type of a ForeignKey is the column type
- # of the field to which it points. An exception is if the ForeignKey
- # points to an AutoField/PositiveIntegerField/PositiveSmallIntegerField,
- # in which case the column type is simply that of an IntegerField.
- # If the database needs similar types for key fields however, the only
- # thing we can do is making AutoField an IntegerField.
- rel_field = self.related_field
- if (isinstance(rel_field, AutoField) or
- (not connection.features.related_fields_match_type and
- isinstance(rel_field, (PositiveIntegerField,
- PositiveSmallIntegerField)))):
- return IntegerField().db_type(connection=connection)
- return rel_field.db_type(connection=connection)
-
-
-class OneToOneField(ForeignKey):
- """
- A OneToOneField is essentially the same as a ForeignKey, with the exception
- that always carries a "unique" constraint with it and the reverse relation
- always returns the object pointed to (since there will only ever be one),
- rather than returning a list.
- """
- description = _("One-to-one relationship")
-
- def __init__(self, to, to_field=None, **kwargs):
- kwargs['unique'] = True
- super(OneToOneField, self).__init__(to, to_field, OneToOneRel, **kwargs)
-
- def contribute_to_related_class(self, cls, related):
- setattr(cls, related.get_accessor_name(),
- SingleRelatedObjectDescriptor(related))
-
- def formfield(self, **kwargs):
- if self.rel.parent_link:
- return None
- return super(OneToOneField, self).formfield(**kwargs)
-
- def save_form_data(self, instance, data):
- if isinstance(data, self.rel.to):
- setattr(instance, self.name, data)
- else:
- setattr(instance, self.attname, data)
-
-
-def create_many_to_many_intermediary_model(field, klass):
- from django.db import models
- managed = True
- if isinstance(field.rel.to, six.string_types) and field.rel.to != RECURSIVE_RELATIONSHIP_CONSTANT:
- to_model = field.rel.to
- to = to_model.split('.')[-1]
-
- def set_managed(field, model, cls):
- field.rel.through._meta.managed = model._meta.managed or cls._meta.managed
- add_lazy_relation(klass, field, to_model, set_managed)
- elif isinstance(field.rel.to, six.string_types):
- to = klass._meta.object_name
- to_model = klass
- managed = klass._meta.managed
- else:
- to = field.rel.to._meta.object_name
- to_model = field.rel.to
- managed = klass._meta.managed or to_model._meta.managed
- name = '%s_%s' % (klass._meta.object_name, field.name)
- if field.rel.to == RECURSIVE_RELATIONSHIP_CONSTANT or to == klass._meta.object_name:
- from_ = 'from_%s' % to.lower()
- to = 'to_%s' % to.lower()
- else:
- from_ = klass._meta.model_name
- to = to.lower()
- meta = type('Meta', (object,), {
- 'db_table': field._get_m2m_db_table(klass._meta),
- 'managed': managed,
- 'auto_created': klass,
- 'app_label': klass._meta.app_label,
- 'db_tablespace': klass._meta.db_tablespace,
- 'unique_together': (from_, to),
- 'verbose_name': '%(from)s-%(to)s relationship' % {'from': from_, 'to': to},
- 'verbose_name_plural': '%(from)s-%(to)s relationships' % {'from': from_, 'to': to},
- })
- # Construct and return the new class.
- return type(str(name), (models.Model,), {
- 'Meta': meta,
- '__module__': klass.__module__,
- from_: models.ForeignKey(klass, related_name='%s+' % name, db_tablespace=field.db_tablespace, db_constraint=field.rel.db_constraint),
- to: models.ForeignKey(to_model, related_name='%s+' % name, db_tablespace=field.db_tablespace, db_constraint=field.rel.db_constraint)
- })
-
-
-class ManyToManyField(RelatedField):
- description = _("Many-to-many relationship")
-
- def __init__(self, to, db_constraint=True, **kwargs):
- try:
- assert not to._meta.abstract, "%s cannot define a relation with abstract class %s" % (self.__class__.__name__, to._meta.object_name)
- except AttributeError: # to._meta doesn't exist, so it must be RECURSIVE_RELATIONSHIP_CONSTANT
- assert isinstance(to, six.string_types), "%s(%r) is invalid. First parameter to ManyToManyField must be either a model, a model name, or the string %r" % (self.__class__.__name__, to, RECURSIVE_RELATIONSHIP_CONSTANT)
- # Python 2.6 and earlier require dictionary keys to be of str type,
- # not unicode and class names must be ASCII (in Python 2.x), so we
- # forcibly coerce it here (breaks early if there's a problem).
- to = str(to)
-
- kwargs['verbose_name'] = kwargs.get('verbose_name', None)
- kwargs['rel'] = ManyToManyRel(to,
- related_name=kwargs.pop('related_name', None),
- related_query_name=kwargs.pop('related_query_name', None),
- limit_choices_to=kwargs.pop('limit_choices_to', None),
- symmetrical=kwargs.pop('symmetrical', to == RECURSIVE_RELATIONSHIP_CONSTANT),
- through=kwargs.pop('through', None),
- db_constraint=db_constraint,
- )
-
- self.db_table = kwargs.pop('db_table', None)
- if kwargs['rel'].through is not None:
- assert self.db_table is None, "Cannot specify a db_table if an intermediary model is used."
-
- super(ManyToManyField, self).__init__(**kwargs)
-
- def _get_path_info(self, direct=False):
- """
- Called by both direct an indirect m2m traversal.
- """
- pathinfos = []
- int_model = self.rel.through
- linkfield1 = int_model._meta.get_field_by_name(self.m2m_field_name())[0]
- linkfield2 = int_model._meta.get_field_by_name(self.m2m_reverse_field_name())[0]
- if direct:
- join1infos = linkfield1.get_reverse_path_info()
- join2infos = linkfield2.get_path_info()
- else:
- join1infos = linkfield2.get_reverse_path_info()
- join2infos = linkfield1.get_path_info()
- pathinfos.extend(join1infos)
- pathinfos.extend(join2infos)
- return pathinfos
-
- def get_path_info(self):
- return self._get_path_info(direct=True)
-
- def get_reverse_path_info(self):
- return self._get_path_info(direct=False)
-
- def get_choices_default(self):
- return Field.get_choices(self, include_blank=False)
-
- def _get_m2m_db_table(self, opts):
- "Function that can be curried to provide the m2m table name for this relation"
- if self.rel.through is not None:
- return self.rel.through._meta.db_table
- elif self.db_table:
- return self.db_table
- else:
- return util.truncate_name('%s_%s' % (opts.db_table, self.name),
- connection.ops.max_name_length())
-
- def _get_m2m_attr(self, related, attr):
- "Function that can be curried to provide the source accessor or DB column name for the m2m table"
- cache_attr = '_m2m_%s_cache' % attr
- if hasattr(self, cache_attr):
- return getattr(self, cache_attr)
- for f in self.rel.through._meta.fields:
- if hasattr(f, 'rel') and f.rel and f.rel.to == related.model:
- setattr(self, cache_attr, getattr(f, attr))
- return getattr(self, cache_attr)
-
- def _get_m2m_reverse_attr(self, related, attr):
- "Function that can be curried to provide the related accessor or DB column name for the m2m table"
- cache_attr = '_m2m_reverse_%s_cache' % attr
- if hasattr(self, cache_attr):
- return getattr(self, cache_attr)
- found = False
- for f in self.rel.through._meta.fields:
- if hasattr(f, 'rel') and f.rel and f.rel.to == related.parent_model:
- if related.model == related.parent_model:
- # If this is an m2m-intermediate to self,
- # the first foreign key you find will be
- # the source column. Keep searching for
- # the second foreign key.
- if found:
- setattr(self, cache_attr, getattr(f, attr))
- break
- else:
- found = True
- else:
- setattr(self, cache_attr, getattr(f, attr))
- break
- return getattr(self, cache_attr)
-
- def value_to_string(self, obj):
- data = ''
- if obj:
- qs = getattr(obj, self.name).all()
- data = [instance._get_pk_val() for instance in qs]
- else:
- # In required many-to-many fields with only one available choice,
- # select that one available choice.
- if not self.blank:
- choices_list = self.get_choices_default()
- if len(choices_list) == 1:
- data = [choices_list[0][0]]
- return smart_text(data)
-
- def contribute_to_class(self, cls, name):
- # To support multiple relations to self, it's useful to have a non-None
- # related name on symmetrical relations for internal reasons. The
- # concept doesn't make a lot of sense externally ("you want me to
- # specify *what* on my non-reversible relation?!"), so we set it up
- # automatically. The funky name reduces the chance of an accidental
- # clash.
- if self.rel.symmetrical and (self.rel.to == "self" or self.rel.to == cls._meta.object_name):
- self.rel.related_name = "%s_rel_+" % name
-
- super(ManyToManyField, self).contribute_to_class(cls, name)
-
- # The intermediate m2m model is not auto created if:
- # 1) There is a manually specified intermediate, or
- # 2) The class owning the m2m field is abstract.
- # 3) The class owning the m2m field has been swapped out.
- if not self.rel.through and not cls._meta.abstract and not cls._meta.swapped:
- self.rel.through = create_many_to_many_intermediary_model(self, cls)
-
- # Add the descriptor for the m2m relation
- setattr(cls, self.name, ReverseManyRelatedObjectsDescriptor(self))
-
- # Set up the accessor for the m2m table name for the relation
- self.m2m_db_table = curry(self._get_m2m_db_table, cls._meta)
-
- # Populate some necessary rel arguments so that cross-app relations
- # work correctly.
- if isinstance(self.rel.through, six.string_types):
- def resolve_through_model(field, model, cls):
- field.rel.through = model
- add_lazy_relation(cls, self, self.rel.through, resolve_through_model)
-
- def contribute_to_related_class(self, cls, related):
- # Internal M2Ms (i.e., those with a related name ending with '+')
- # and swapped models don't get a related descriptor.
- if not self.rel.is_hidden() and not related.model._meta.swapped:
- setattr(cls, related.get_accessor_name(), ManyRelatedObjectsDescriptor(related))
-
- # Set up the accessors for the column names on the m2m table
- self.m2m_column_name = curry(self._get_m2m_attr, related, 'column')
- self.m2m_reverse_name = curry(self._get_m2m_reverse_attr, related, 'column')
-
- self.m2m_field_name = curry(self._get_m2m_attr, related, 'name')
- self.m2m_reverse_field_name = curry(self._get_m2m_reverse_attr, related, 'name')
-
- get_m2m_rel = curry(self._get_m2m_attr, related, 'rel')
- self.m2m_target_field_name = lambda: get_m2m_rel().field_name
- get_m2m_reverse_rel = curry(self._get_m2m_reverse_attr, related, 'rel')
- self.m2m_reverse_target_field_name = lambda: get_m2m_reverse_rel().field_name
-
- def set_attributes_from_rel(self):
- pass
-
- def value_from_object(self, obj):
- "Returns the value of this field in the given model instance."
- return getattr(obj, self.attname).all()
-
- def save_form_data(self, instance, data):
- setattr(instance, self.attname, data)
-
- def formfield(self, **kwargs):
- db = kwargs.pop('using', None)
- defaults = {
- 'form_class': forms.ModelMultipleChoiceField,
- 'queryset': self.rel.to._default_manager.using(db).complex_filter(self.rel.limit_choices_to)
- }
- defaults.update(kwargs)
- # If initial is passed in, it's a list of related objects, but the
- # MultipleChoiceField takes a list of IDs.
- if defaults.get('initial') is not None:
- initial = defaults['initial']
- if callable(initial):
- initial = initial()
- defaults['initial'] = [i._get_pk_val() for i in initial]
- return super(ManyToManyField, self).formfield(**defaults)
diff --git a/lib/python2.7/site-packages/django/db/models/fields/subclassing.py b/lib/python2.7/site-packages/django/db/models/fields/subclassing.py
deleted file mode 100644
index e6153ae..0000000
--- a/lib/python2.7/site-packages/django/db/models/fields/subclassing.py
+++ /dev/null
@@ -1,53 +0,0 @@
-"""
-Convenience routines for creating non-trivial Field subclasses, as well as
-backwards compatibility utilities.
-
-Add SubfieldBase as the metaclass for your Field subclass, implement
-to_python() and the other necessary methods and everything will work
-seamlessly.
-"""
-
-class SubfieldBase(type):
- """
- A metaclass for custom Field subclasses. This ensures the model's attribute
- has the descriptor protocol attached to it.
- """
- def __new__(cls, name, bases, attrs):
- new_class = super(SubfieldBase, cls).__new__(cls, name, bases, attrs)
- new_class.contribute_to_class = make_contrib(
- new_class, attrs.get('contribute_to_class')
- )
- return new_class
-
-class Creator(object):
- """
- A placeholder class that provides a way to set the attribute on the model.
- """
- def __init__(self, field):
- self.field = field
-
- def __get__(self, obj, type=None):
- if obj is None:
- raise AttributeError('Can only be accessed via an instance.')
- return obj.__dict__[self.field.name]
-
- def __set__(self, obj, value):
- obj.__dict__[self.field.name] = self.field.to_python(value)
-
-def make_contrib(superclass, func=None):
- """
- Returns a suitable contribute_to_class() method for the Field subclass.
-
- If 'func' is passed in, it is the existing contribute_to_class() method on
- the subclass and it is called before anything else. It is assumed in this
- case that the existing contribute_to_class() calls all the necessary
- superclass methods.
- """
- def contribute_to_class(self, cls, name):
- if func:
- func(self, cls, name)
- else:
- super(superclass, self).contribute_to_class(cls, name)
- setattr(cls, self.name, Creator(self))
-
- return contribute_to_class
diff --git a/lib/python2.7/site-packages/django/db/models/loading.py b/lib/python2.7/site-packages/django/db/models/loading.py
deleted file mode 100644
index bb87728..0000000
--- a/lib/python2.7/site-packages/django/db/models/loading.py
+++ /dev/null
@@ -1,327 +0,0 @@
-"Utilities for loading models and the modules that contain them."
-
-from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured
-from django.utils.datastructures import SortedDict
-from django.utils.importlib import import_module
-from django.utils.module_loading import module_has_submodule
-from django.utils._os import upath
-from django.utils import six
-
-import imp
-import sys
-import os
-
-__all__ = ('get_apps', 'get_app', 'get_models', 'get_model', 'register_models',
- 'load_app', 'app_cache_ready')
-
-class UnavailableApp(Exception):
- pass
-
-class AppCache(object):
- """
- A cache that stores installed applications and their models. Used to
- provide reverse-relations and for app introspection (e.g. admin).
- """
- # Use the Borg pattern to share state between all instances. Details at
- # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/66531.
- __shared_state = dict(
- # Keys of app_store are the model modules for each application.
- app_store=SortedDict(),
-
- # Mapping of installed app_labels to model modules for that app.
- app_labels={},
-
- # Mapping of app_labels to a dictionary of model names to model code.
- # May contain apps that are not installed.
- app_models=SortedDict(),
-
- # Mapping of app_labels to errors raised when trying to import the app.
- app_errors={},
-
- # -- Everything below here is only used when populating the cache --
- loaded=False,
- handled=set(),
- postponed=[],
- nesting_level=0,
- _get_models_cache={},
- available_apps=None,
- )
-
- def __init__(self):
- self.__dict__ = self.__shared_state
-
- def _populate(self):
- """
- Fill in all the cache information. This method is threadsafe, in the
- sense that every caller will see the same state upon return, and if the
- cache is already initialised, it does no work.
- """
- if self.loaded:
- return
- # Note that we want to use the import lock here - the app loading is
- # in many cases initiated implicitly by importing, and thus it is
- # possible to end up in deadlock when one thread initiates loading
- # without holding the importer lock and another thread then tries to
- # import something which also launches the app loading. For details of
- # this situation see #18251.
- imp.acquire_lock()
- try:
- if self.loaded:
- return
- for app_name in settings.INSTALLED_APPS:
- if app_name in self.handled:
- continue
- self.load_app(app_name, True)
- if not self.nesting_level:
- for app_name in self.postponed:
- self.load_app(app_name)
- self.loaded = True
- finally:
- imp.release_lock()
-
- def _label_for(self, app_mod):
- """
- Return app_label for given models module.
-
- """
- return app_mod.__name__.split('.')[-2]
-
- def load_app(self, app_name, can_postpone=False):
- """
- Loads the app with the provided fully qualified name, and returns the
- model module.
- """
- self.handled.add(app_name)
- self.nesting_level += 1
- app_module = import_module(app_name)
- try:
- models = import_module('%s.models' % app_name)
- except ImportError:
- self.nesting_level -= 1
- # If the app doesn't have a models module, we can just ignore the
- # ImportError and return no models for it.
- if not module_has_submodule(app_module, 'models'):
- return None
- # But if the app does have a models module, we need to figure out
- # whether to suppress or propagate the error. If can_postpone is
- # True then it may be that the package is still being imported by
- # Python and the models module isn't available yet. So we add the
- # app to the postponed list and we'll try it again after all the
- # recursion has finished (in populate). If can_postpone is False
- # then it's time to raise the ImportError.
- else:
- if can_postpone:
- self.postponed.append(app_name)
- return None
- else:
- raise
-
- self.nesting_level -= 1
- if models not in self.app_store:
- self.app_store[models] = len(self.app_store)
- self.app_labels[self._label_for(models)] = models
- return models
-
- def app_cache_ready(self):
- """
- Returns true if the model cache is fully populated.
-
- Useful for code that wants to cache the results of get_models() for
- themselves once it is safe to do so.
- """
- return self.loaded
-
- def get_apps(self):
- """
- Returns a list of all installed modules that contain models.
- """
- self._populate()
-
- apps = self.app_store.items()
- if self.available_apps is not None:
- apps = [elt for elt in apps
- if self._label_for(elt[0]) in self.available_apps]
-
- # Ensure the returned list is always in the same order (with new apps
- # added at the end). This avoids unstable ordering on the admin app
- # list page, for example.
- apps = sorted(apps, key=lambda elt: elt[1])
-
- return [elt[0] for elt in apps]
-
- def get_app_paths(self):
- """
- Returns a list of paths to all installed apps.
-
- Useful for discovering files at conventional locations inside apps
- (static files, templates, etc.)
- """
- self._populate()
-
- app_paths = []
- for app in self.get_apps():
- if hasattr(app, '__path__'): # models/__init__.py package
- app_paths.extend([upath(path) for path in app.__path__])
- else: # models.py module
- app_paths.append(upath(app.__file__))
- return app_paths
-
- def get_app(self, app_label, emptyOK=False):
- """
- Returns the module containing the models for the given app_label.
-
- Returns None if the app has no models in it and emptyOK is True.
-
- Raises UnavailableApp when set_available_apps() in in effect and
- doesn't include app_label.
- """
- self._populate()
- imp.acquire_lock()
- try:
- for app_name in settings.INSTALLED_APPS:
- if app_label == app_name.split('.')[-1]:
- mod = self.load_app(app_name, False)
- if mod is None and not emptyOK:
- raise ImproperlyConfigured("App with label %s is missing a models.py module." % app_label)
- if self.available_apps is not None and app_label not in self.available_apps:
- raise UnavailableApp("App with label %s isn't available." % app_label)
- return mod
- raise ImproperlyConfigured("App with label %s could not be found" % app_label)
- finally:
- imp.release_lock()
-
- def get_app_errors(self):
- "Returns the map of known problems with the INSTALLED_APPS."
- self._populate()
- return self.app_errors
-
- def get_models(self, app_mod=None,
- include_auto_created=False, include_deferred=False,
- only_installed=True, include_swapped=False):
- """
- Given a module containing models, returns a list of the models.
- Otherwise returns a list of all installed models.
-
- By default, auto-created models (i.e., m2m models without an
- explicit intermediate table) are not included. However, if you
- specify include_auto_created=True, they will be.
-
- By default, models created to satisfy deferred attribute
- queries are *not* included in the list of models. However, if
- you specify include_deferred, they will be.
-
- By default, models that aren't part of installed apps will *not*
- be included in the list of models. However, if you specify
- only_installed=False, they will be.
-
- By default, models that have been swapped out will *not* be
- included in the list of models. However, if you specify
- include_swapped, they will be.
- """
- cache_key = (app_mod, include_auto_created, include_deferred, only_installed, include_swapped)
- model_list = None
- try:
- model_list = self._get_models_cache[cache_key]
- if self.available_apps is not None and only_installed:
- model_list = [m for m in model_list
- if m._meta.app_label in self.available_apps]
- return model_list
- except KeyError:
- pass
- self._populate()
- if app_mod:
- if app_mod in self.app_store:
- app_list = [self.app_models.get(self._label_for(app_mod),
- SortedDict())]
- else:
- app_list = []
- else:
- if only_installed:
- app_list = [self.app_models.get(app_label, SortedDict())
- for app_label in six.iterkeys(self.app_labels)]
- else:
- app_list = six.itervalues(self.app_models)
- model_list = []
- for app in app_list:
- model_list.extend(
- model for model in app.values()
- if ((not model._deferred or include_deferred) and
- (not model._meta.auto_created or include_auto_created) and
- (not model._meta.swapped or include_swapped))
- )
- self._get_models_cache[cache_key] = model_list
- if self.available_apps is not None and only_installed:
- model_list = [m for m in model_list
- if m._meta.app_label in self.available_apps]
- return model_list
-
- def get_model(self, app_label, model_name,
- seed_cache=True, only_installed=True):
- """
- Returns the model matching the given app_label and case-insensitive
- model_name.
-
- Returns None if no model is found.
-
- Raises UnavailableApp when set_available_apps() in in effect and
- doesn't include app_label.
- """
- if seed_cache:
- self._populate()
- if only_installed and app_label not in self.app_labels:
- return None
- if (self.available_apps is not None and only_installed
- and app_label not in self.available_apps):
- raise UnavailableApp("App with label %s isn't available." % app_label)
- try:
- return self.app_models[app_label][model_name.lower()]
- except KeyError:
- return None
-
- def register_models(self, app_label, *models):
- """
- Register a set of models as belonging to an app.
- """
- for model in models:
- # Store as 'name: model' pair in a dictionary
- # in the app_models dictionary
- model_name = model._meta.model_name
- model_dict = self.app_models.setdefault(app_label, SortedDict())
- if model_name in model_dict:
- # The same model may be imported via different paths (e.g.
- # appname.models and project.appname.models). We use the source
- # filename as a means to detect identity.
- fname1 = os.path.abspath(upath(sys.modules[model.__module__].__file__))
- fname2 = os.path.abspath(upath(sys.modules[model_dict[model_name].__module__].__file__))
- # Since the filename extension could be .py the first time and
- # .pyc or .pyo the second time, ignore the extension when
- # comparing.
- if os.path.splitext(fname1)[0] == os.path.splitext(fname2)[0]:
- continue
- model_dict[model_name] = model
- self._get_models_cache.clear()
-
- def set_available_apps(self, available):
- if not set(available).issubset(set(settings.INSTALLED_APPS)):
- extra = set(available) - set(settings.INSTALLED_APPS)
- raise ValueError("Available apps isn't a subset of installed "
- "apps, extra apps: " + ", ".join(extra))
- self.available_apps = set(app.rsplit('.', 1)[-1] for app in available)
-
- def unset_available_apps(self):
- self.available_apps = None
-
-cache = AppCache()
-
-# These methods were always module level, so are kept that way for backwards
-# compatibility.
-get_apps = cache.get_apps
-get_app_paths = cache.get_app_paths
-get_app = cache.get_app
-get_app_errors = cache.get_app_errors
-get_models = cache.get_models
-get_model = cache.get_model
-register_models = cache.register_models
-load_app = cache.load_app
-app_cache_ready = cache.app_cache_ready
diff --git a/lib/python2.7/site-packages/django/db/models/manager.py b/lib/python2.7/site-packages/django/db/models/manager.py
deleted file mode 100644
index a1aa79f..0000000
--- a/lib/python2.7/site-packages/django/db/models/manager.py
+++ /dev/null
@@ -1,283 +0,0 @@
-import copy
-from django.db import router
-from django.db.models.query import QuerySet, insert_query, RawQuerySet
-from django.db.models import signals
-from django.db.models.fields import FieldDoesNotExist
-from django.utils import six
-from django.utils.deprecation import RenameMethodsBase
-
-def ensure_default_manager(sender, **kwargs):
- """
- Ensures that a Model subclass contains a default manager and sets the
- _default_manager attribute on the class. Also sets up the _base_manager
- points to a plain Manager instance (which could be the same as
- _default_manager if it's not a subclass of Manager).
- """
- cls = sender
- if cls._meta.abstract:
- setattr(cls, 'objects', AbstractManagerDescriptor(cls))
- return
- elif cls._meta.swapped:
- setattr(cls, 'objects', SwappedManagerDescriptor(cls))
- return
- if not getattr(cls, '_default_manager', None):
- # Create the default manager, if needed.
- try:
- cls._meta.get_field('objects')
- raise ValueError("Model %s must specify a custom Manager, because it has a field named 'objects'" % cls.__name__)
- except FieldDoesNotExist:
- pass
- cls.add_to_class('objects', Manager())
- cls._base_manager = cls.objects
- elif not getattr(cls, '_base_manager', None):
- default_mgr = cls._default_manager.__class__
- if (default_mgr is Manager or
- getattr(default_mgr, "use_for_related_fields", False)):
- cls._base_manager = cls._default_manager
- else:
- # Default manager isn't a plain Manager class, or a suitable
- # replacement, so we walk up the base class hierarchy until we hit
- # something appropriate.
- for base_class in default_mgr.mro()[1:]:
- if (base_class is Manager or
- getattr(base_class, "use_for_related_fields", False)):
- cls.add_to_class('_base_manager', base_class())
- return
- raise AssertionError("Should never get here. Please report a bug, including your model and model manager setup.")
-
-signals.class_prepared.connect(ensure_default_manager)
-
-
-class RenameManagerMethods(RenameMethodsBase):
- renamed_methods = (
- ('get_query_set', 'get_queryset', PendingDeprecationWarning),
- ('get_prefetch_query_set', 'get_prefetch_queryset', PendingDeprecationWarning),
- )
-
-
-class Manager(six.with_metaclass(RenameManagerMethods)):
- # Tracks each time a Manager instance is created. Used to retain order.
- creation_counter = 0
-
- def __init__(self):
- super(Manager, self).__init__()
- self._set_creation_counter()
- self.model = None
- self._inherited = False
- self._db = None
-
- def contribute_to_class(self, model, name):
- # TODO: Use weakref because of possible memory leak / circular reference.
- self.model = model
- # Only contribute the manager if the model is concrete
- if model._meta.abstract:
- setattr(model, name, AbstractManagerDescriptor(model))
- elif model._meta.swapped:
- setattr(model, name, SwappedManagerDescriptor(model))
- else:
- # if not model._meta.abstract and not model._meta.swapped:
- setattr(model, name, ManagerDescriptor(self))
- if not getattr(model, '_default_manager', None) or self.creation_counter < model._default_manager.creation_counter:
- model._default_manager = self
- if model._meta.abstract or (self._inherited and not self.model._meta.proxy):
- model._meta.abstract_managers.append((self.creation_counter, name,
- self))
- else:
- model._meta.concrete_managers.append((self.creation_counter, name,
- self))
-
- def _set_creation_counter(self):
- """
- Sets the creation counter value for this instance and increments the
- class-level copy.
- """
- self.creation_counter = Manager.creation_counter
- Manager.creation_counter += 1
-
- def _copy_to_model(self, model):
- """
- Makes a copy of the manager and assigns it to 'model', which should be
- a child of the existing model (used when inheriting a manager from an
- abstract base class).
- """
- assert issubclass(model, self.model)
- mgr = copy.copy(self)
- mgr._set_creation_counter()
- mgr.model = model
- mgr._inherited = True
- return mgr
-
- def db_manager(self, using):
- obj = copy.copy(self)
- obj._db = using
- return obj
-
- @property
- def db(self):
- return self._db or router.db_for_read(self.model)
-
- #######################
- # PROXIES TO QUERYSET #
- #######################
-
- def get_queryset(self):
- """Returns a new QuerySet object. Subclasses can override this method
- to easily customize the behavior of the Manager.
- """
- return QuerySet(self.model, using=self._db)
-
- def none(self):
- return self.get_queryset().none()
-
- def all(self):
- return self.get_queryset()
-
- def count(self):
- return self.get_queryset().count()
-
- def dates(self, *args, **kwargs):
- return self.get_queryset().dates(*args, **kwargs)
-
- def datetimes(self, *args, **kwargs):
- return self.get_queryset().datetimes(*args, **kwargs)
-
- def distinct(self, *args, **kwargs):
- return self.get_queryset().distinct(*args, **kwargs)
-
- def extra(self, *args, **kwargs):
- return self.get_queryset().extra(*args, **kwargs)
-
- def get(self, *args, **kwargs):
- return self.get_queryset().get(*args, **kwargs)
-
- def get_or_create(self, **kwargs):
- return self.get_queryset().get_or_create(**kwargs)
-
- def create(self, **kwargs):
- return self.get_queryset().create(**kwargs)
-
- def bulk_create(self, *args, **kwargs):
- return self.get_queryset().bulk_create(*args, **kwargs)
-
- def filter(self, *args, **kwargs):
- return self.get_queryset().filter(*args, **kwargs)
-
- def aggregate(self, *args, **kwargs):
- return self.get_queryset().aggregate(*args, **kwargs)
-
- def annotate(self, *args, **kwargs):
- return self.get_queryset().annotate(*args, **kwargs)
-
- def complex_filter(self, *args, **kwargs):
- return self.get_queryset().complex_filter(*args, **kwargs)
-
- def exclude(self, *args, **kwargs):
- return self.get_queryset().exclude(*args, **kwargs)
-
- def in_bulk(self, *args, **kwargs):
- return self.get_queryset().in_bulk(*args, **kwargs)
-
- def iterator(self, *args, **kwargs):
- return self.get_queryset().iterator(*args, **kwargs)
-
- def earliest(self, *args, **kwargs):
- return self.get_queryset().earliest(*args, **kwargs)
-
- def latest(self, *args, **kwargs):
- return self.get_queryset().latest(*args, **kwargs)
-
- def first(self):
- return self.get_queryset().first()
-
- def last(self):
- return self.get_queryset().last()
-
- def order_by(self, *args, **kwargs):
- return self.get_queryset().order_by(*args, **kwargs)
-
- def select_for_update(self, *args, **kwargs):
- return self.get_queryset().select_for_update(*args, **kwargs)
-
- def select_related(self, *args, **kwargs):
- return self.get_queryset().select_related(*args, **kwargs)
-
- def prefetch_related(self, *args, **kwargs):
- return self.get_queryset().prefetch_related(*args, **kwargs)
-
- def values(self, *args, **kwargs):
- return self.get_queryset().values(*args, **kwargs)
-
- def values_list(self, *args, **kwargs):
- return self.get_queryset().values_list(*args, **kwargs)
-
- def update(self, *args, **kwargs):
- return self.get_queryset().update(*args, **kwargs)
-
- def reverse(self, *args, **kwargs):
- return self.get_queryset().reverse(*args, **kwargs)
-
- def defer(self, *args, **kwargs):
- return self.get_queryset().defer(*args, **kwargs)
-
- def only(self, *args, **kwargs):
- return self.get_queryset().only(*args, **kwargs)
-
- def using(self, *args, **kwargs):
- return self.get_queryset().using(*args, **kwargs)
-
- def exists(self, *args, **kwargs):
- return self.get_queryset().exists(*args, **kwargs)
-
- def _insert(self, objs, fields, **kwargs):
- return insert_query(self.model, objs, fields, **kwargs)
-
- def _update(self, values, **kwargs):
- return self.get_queryset()._update(values, **kwargs)
-
- def raw(self, raw_query, params=None, *args, **kwargs):
- return RawQuerySet(raw_query=raw_query, model=self.model, params=params, using=self._db, *args, **kwargs)
-
-
-class ManagerDescriptor(object):
- # This class ensures managers aren't accessible via model instances.
- # For example, Poll.objects works, but poll_obj.objects raises AttributeError.
- def __init__(self, manager):
- self.manager = manager
-
- def __get__(self, instance, type=None):
- if instance != None:
- raise AttributeError("Manager isn't accessible via %s instances" % type.__name__)
- return self.manager
-
-
-class AbstractManagerDescriptor(object):
- # This class provides a better error message when you try to access a
- # manager on an abstract model.
- def __init__(self, model):
- self.model = model
-
- def __get__(self, instance, type=None):
- raise AttributeError("Manager isn't available; %s is abstract" % (
- self.model._meta.object_name,
- ))
-
-
-class SwappedManagerDescriptor(object):
- # This class provides a better error message when you try to access a
- # manager on a swapped model.
- def __init__(self, model):
- self.model = model
-
- def __get__(self, instance, type=None):
- raise AttributeError("Manager isn't available; %s has been swapped for '%s'" % (
- self.model._meta.object_name, self.model._meta.swapped
- ))
-
-
-class EmptyManager(Manager):
- def __init__(self, model):
- super(EmptyManager, self).__init__()
- self.model = model
-
- def get_queryset(self):
- return super(EmptyManager, self).get_queryset().none()
diff --git a/lib/python2.7/site-packages/django/db/models/options.py b/lib/python2.7/site-packages/django/db/models/options.py
deleted file mode 100644
index 6ccc67d..0000000
--- a/lib/python2.7/site-packages/django/db/models/options.py
+++ /dev/null
@@ -1,589 +0,0 @@
-from __future__ import unicode_literals
-
-import re
-from bisect import bisect
-import warnings
-
-from django.conf import settings
-from django.db.models.fields.related import ManyToManyRel
-from django.db.models.fields import AutoField, FieldDoesNotExist
-from django.db.models.fields.proxy import OrderWrt
-from django.db.models.loading import get_models, app_cache_ready
-from django.utils import six
-from django.utils.functional import cached_property
-from django.utils.datastructures import SortedDict
-from django.utils.encoding import force_text, smart_text, python_2_unicode_compatible
-from django.utils.translation import activate, deactivate_all, get_language, string_concat
-
-# Calculate the verbose_name by converting from InitialCaps to "lowercase with spaces".
-get_verbose_name = lambda class_name: re.sub('(((?<=[a-z])[A-Z])|([A-Z](?![A-Z]|$)))', ' \\1', class_name).lower().strip()
-
-DEFAULT_NAMES = ('verbose_name', 'verbose_name_plural', 'db_table', 'ordering',
- 'unique_together', 'permissions', 'get_latest_by',
- 'order_with_respect_to', 'app_label', 'db_tablespace',
- 'abstract', 'managed', 'proxy', 'swappable', 'auto_created',
- 'index_together', 'select_on_save')
-
-
-@python_2_unicode_compatible
-class Options(object):
- def __init__(self, meta, app_label=None):
- self.local_fields, self.local_many_to_many = [], []
- self.virtual_fields = []
- self.model_name, self.verbose_name = None, None
- self.verbose_name_plural = None
- self.db_table = ''
- self.ordering = []
- self.unique_together = []
- self.index_together = []
- self.select_on_save = False
- self.permissions = []
- self.object_name, self.app_label = None, app_label
- self.get_latest_by = None
- self.order_with_respect_to = None
- self.db_tablespace = settings.DEFAULT_TABLESPACE
- self.meta = meta
- self.pk = None
- self.has_auto_field, self.auto_field = False, None
- self.abstract = False
- self.managed = True
- self.proxy = False
- # For any class that is a proxy (including automatically created
- # classes for deferred object loading), proxy_for_model tells us
- # which class this model is proxying. Note that proxy_for_model
- # can create a chain of proxy models. For non-proxy models, the
- # variable is always None.
- self.proxy_for_model = None
- # For any non-abstract class, the concrete class is the model
- # in the end of the proxy_for_model chain. In particular, for
- # concrete models, the concrete_model is always the class itself.
- self.concrete_model = None
- self.swappable = None
- self.parents = SortedDict()
- self.auto_created = False
-
- # To handle various inheritance situations, we need to track where
- # managers came from (concrete or abstract base classes).
- self.abstract_managers = []
- self.concrete_managers = []
-
- # List of all lookups defined in ForeignKey 'limit_choices_to' options
- # from *other* models. Needed for some admin checks. Internal use only.
- self.related_fkey_lookups = []
-
- def contribute_to_class(self, cls, name):
- from django.db import connection
- from django.db.backends.util import truncate_name
-
- cls._meta = self
- self.model = cls
- self.installed = re.sub('\.models$', '', cls.__module__) in settings.INSTALLED_APPS
- # First, construct the default values for these options.
- self.object_name = cls.__name__
- self.model_name = self.object_name.lower()
- self.verbose_name = get_verbose_name(self.object_name)
-
- # Next, apply any overridden values from 'class Meta'.
- if self.meta:
- meta_attrs = self.meta.__dict__.copy()
- for name in self.meta.__dict__:
- # Ignore any private attributes that Django doesn't care about.
- # NOTE: We can't modify a dictionary's contents while looping
- # over it, so we loop over the *original* dictionary instead.
- if name.startswith('_'):
- del meta_attrs[name]
- for attr_name in DEFAULT_NAMES:
- if attr_name in meta_attrs:
- setattr(self, attr_name, meta_attrs.pop(attr_name))
- elif hasattr(self.meta, attr_name):
- setattr(self, attr_name, getattr(self.meta, attr_name))
-
- # unique_together can be either a tuple of tuples, or a single
- # tuple of two strings. Normalize it to a tuple of tuples, so that
- # calling code can uniformly expect that.
- ut = meta_attrs.pop('unique_together', self.unique_together)
- if ut and not isinstance(ut[0], (tuple, list)):
- ut = (ut,)
- self.unique_together = ut
-
- # verbose_name_plural is a special case because it uses a 's'
- # by default.
- if self.verbose_name_plural is None:
- self.verbose_name_plural = string_concat(self.verbose_name, 's')
-
- # Any leftover attributes must be invalid.
- if meta_attrs != {}:
- raise TypeError("'class Meta' got invalid attribute(s): %s" % ','.join(meta_attrs.keys()))
- else:
- self.verbose_name_plural = string_concat(self.verbose_name, 's')
- del self.meta
-
- # If the db_table wasn't provided, use the app_label + model_name.
- if not self.db_table:
- self.db_table = "%s_%s" % (self.app_label, self.model_name)
- self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
-
- @property
- def module_name(self):
- """
- This property has been deprecated in favor of `model_name`. refs #19689
- """
- warnings.warn(
- "Options.module_name has been deprecated in favor of model_name",
- PendingDeprecationWarning, stacklevel=2)
- return self.model_name
-
- def _prepare(self, model):
- if self.order_with_respect_to:
- self.order_with_respect_to = self.get_field(self.order_with_respect_to)
- self.ordering = ('_order',)
- model.add_to_class('_order', OrderWrt())
- else:
- self.order_with_respect_to = None
-
- if self.pk is None:
- if self.parents:
- # Promote the first parent link in lieu of adding yet another
- # field.
- field = next(six.itervalues(self.parents))
- # Look for a local field with the same name as the
- # first parent link. If a local field has already been
- # created, use it instead of promoting the parent
- already_created = [fld for fld in self.local_fields if fld.name == field.name]
- if already_created:
- field = already_created[0]
- field.primary_key = True
- self.setup_pk(field)
- else:
- auto = AutoField(verbose_name='ID', primary_key=True,
- auto_created=True)
- model.add_to_class('id', auto)
-
- def add_field(self, field):
- # Insert the given field in the order in which it was created, using
- # the "creation_counter" attribute of the field.
- # Move many-to-many related fields from self.fields into
- # self.many_to_many.
- if field.rel and isinstance(field.rel, ManyToManyRel):
- self.local_many_to_many.insert(bisect(self.local_many_to_many, field), field)
- if hasattr(self, '_m2m_cache'):
- del self._m2m_cache
- else:
- self.local_fields.insert(bisect(self.local_fields, field), field)
- self.setup_pk(field)
- if hasattr(self, '_field_cache'):
- del self._field_cache
- del self._field_name_cache
- # The fields, concrete_fields and local_concrete_fields are
- # implemented as cached properties for performance reasons.
- # The attrs will not exists if the cached property isn't
- # accessed yet, hence the try-excepts.
- try:
- del self.fields
- except AttributeError:
- pass
- try:
- del self.concrete_fields
- except AttributeError:
- pass
- try:
- del self.local_concrete_fields
- except AttributeError:
- pass
-
- if hasattr(self, '_name_map'):
- del self._name_map
-
- def add_virtual_field(self, field):
- self.virtual_fields.append(field)
-
- def setup_pk(self, field):
- if not self.pk and field.primary_key:
- self.pk = field
- field.serialize = False
-
- def pk_index(self):
- """
- Returns the index of the primary key field in the self.concrete_fields
- list.
- """
- return self.concrete_fields.index(self.pk)
-
- def setup_proxy(self, target):
- """
- Does the internal setup so that the current model is a proxy for
- "target".
- """
- self.pk = target._meta.pk
- self.proxy_for_model = target
- self.db_table = target._meta.db_table
-
- def __repr__(self):
- return '<Options for %s>' % self.object_name
-
- def __str__(self):
- return "%s.%s" % (smart_text(self.app_label), smart_text(self.model_name))
-
- def verbose_name_raw(self):
- """
- There are a few places where the untranslated verbose name is needed
- (so that we get the same value regardless of currently active
- locale).
- """
- lang = get_language()
- deactivate_all()
- raw = force_text(self.verbose_name)
- activate(lang)
- return raw
- verbose_name_raw = property(verbose_name_raw)
-
- def _swapped(self):
- """
- Has this model been swapped out for another? If so, return the model
- name of the replacement; otherwise, return None.
-
- For historical reasons, model name lookups using get_model() are
- case insensitive, so we make sure we are case insensitive here.
- """
- if self.swappable:
- model_label = '%s.%s' % (self.app_label, self.model_name)
- swapped_for = getattr(settings, self.swappable, None)
- if swapped_for:
- try:
- swapped_label, swapped_object = swapped_for.split('.')
- except ValueError:
- # setting not in the format app_label.model_name
- # raising ImproperlyConfigured here causes problems with
- # test cleanup code - instead it is raised in get_user_model
- # or as part of validation.
- return swapped_for
-
- if '%s.%s' % (swapped_label, swapped_object.lower()) not in (None, model_label):
- return swapped_for
- return None
- swapped = property(_swapped)
-
- @cached_property
- def fields(self):
- """
- The getter for self.fields. This returns the list of field objects
- available to this model (including through parent models).
-
- Callers are not permitted to modify this list, since it's a reference
- to this instance (not a copy).
- """
- try:
- self._field_name_cache
- except AttributeError:
- self._fill_fields_cache()
- return self._field_name_cache
-
- @cached_property
- def concrete_fields(self):
- return [f for f in self.fields if f.column is not None]
-
- @cached_property
- def local_concrete_fields(self):
- return [f for f in self.local_fields if f.column is not None]
-
- def get_fields_with_model(self):
- """
- Returns a sequence of (field, model) pairs for all fields. The "model"
- element is None for fields on the current model. Mostly of use when
- constructing queries so that we know which model a field belongs to.
- """
- try:
- self._field_cache
- except AttributeError:
- self._fill_fields_cache()
- return self._field_cache
-
- def get_concrete_fields_with_model(self):
- return [(field, model) for field, model in self.get_fields_with_model() if
- field.column is not None]
-
- def _fill_fields_cache(self):
- cache = []
- for parent in self.parents:
- for field, model in parent._meta.get_fields_with_model():
- if model:
- cache.append((field, model))
- else:
- cache.append((field, parent))
- cache.extend([(f, None) for f in self.local_fields])
- self._field_cache = tuple(cache)
- self._field_name_cache = [x for x, _ in cache]
-
- def _many_to_many(self):
- try:
- self._m2m_cache
- except AttributeError:
- self._fill_m2m_cache()
- return list(self._m2m_cache)
- many_to_many = property(_many_to_many)
-
- def get_m2m_with_model(self):
- """
- The many-to-many version of get_fields_with_model().
- """
- try:
- self._m2m_cache
- except AttributeError:
- self._fill_m2m_cache()
- return list(six.iteritems(self._m2m_cache))
-
- def _fill_m2m_cache(self):
- cache = SortedDict()
- for parent in self.parents:
- for field, model in parent._meta.get_m2m_with_model():
- if model:
- cache[field] = model
- else:
- cache[field] = parent
- for field in self.local_many_to_many:
- cache[field] = None
- self._m2m_cache = cache
-
- def get_field(self, name, many_to_many=True):
- """
- Returns the requested field by name. Raises FieldDoesNotExist on error.
- """
- to_search = (self.fields + self.many_to_many) if many_to_many else self.fields
- for f in to_search:
- if f.name == name:
- return f
- raise FieldDoesNotExist('%s has no field named %r' % (self.object_name, name))
-
- def get_field_by_name(self, name):
- """
- Returns the (field_object, model, direct, m2m), where field_object is
- the Field instance for the given name, model is the model containing
- this field (None for local fields), direct is True if the field exists
- on this model, and m2m is True for many-to-many relations. When
- 'direct' is False, 'field_object' is the corresponding RelatedObject
- for this field (since the field doesn't have an instance associated
- with it).
-
- Uses a cache internally, so after the first access, this is very fast.
- """
- try:
- try:
- return self._name_map[name]
- except AttributeError:
- cache = self.init_name_map()
- return cache[name]
- except KeyError:
- raise FieldDoesNotExist('%s has no field named %r'
- % (self.object_name, name))
-
- def get_all_field_names(self):
- """
- Returns a list of all field names that are possible for this model
- (including reverse relation names). This is used for pretty printing
- debugging output (a list of choices), so any internal-only field names
- are not included.
- """
- try:
- cache = self._name_map
- except AttributeError:
- cache = self.init_name_map()
- names = sorted(cache.keys())
- # Internal-only names end with "+" (symmetrical m2m related names being
- # the main example). Trim them.
- return [val for val in names if not val.endswith('+')]
-
- def init_name_map(self):
- """
- Initialises the field name -> field object mapping.
- """
- cache = {}
- # We intentionally handle related m2m objects first so that symmetrical
- # m2m accessor names can be overridden, if necessary.
- for f, model in self.get_all_related_m2m_objects_with_model():
- cache[f.field.related_query_name()] = (f, model, False, True)
- for f, model in self.get_all_related_objects_with_model():
- cache[f.field.related_query_name()] = (f, model, False, False)
- for f, model in self.get_m2m_with_model():
- cache[f.name] = (f, model, True, True)
- for f, model in self.get_fields_with_model():
- cache[f.name] = (f, model, True, False)
- for f in self.virtual_fields:
- if hasattr(f, 'related'):
- cache[f.name] = (f.related, None if f.model == self.model else f.model, True, False)
- if app_cache_ready():
- self._name_map = cache
- return cache
-
- def get_add_permission(self):
- """
- This method has been deprecated in favor of
- `django.contrib.auth.get_permission_codename`. refs #20642
- """
- warnings.warn(
- "`Options.get_add_permission` has been deprecated in favor "
- "of `django.contrib.auth.get_permission_codename`.",
- PendingDeprecationWarning, stacklevel=2)
- return 'add_%s' % self.model_name
-
- def get_change_permission(self):
- """
- This method has been deprecated in favor of
- `django.contrib.auth.get_permission_codename`. refs #20642
- """
- warnings.warn(
- "`Options.get_change_permission` has been deprecated in favor "
- "of `django.contrib.auth.get_permission_codename`.",
- PendingDeprecationWarning, stacklevel=2)
- return 'change_%s' % self.model_name
-
- def get_delete_permission(self):
- """
- This method has been deprecated in favor of
- `django.contrib.auth.get_permission_codename`. refs #20642
- """
- warnings.warn(
- "`Options.get_delete_permission` has been deprecated in favor "
- "of `django.contrib.auth.get_permission_codename`.",
- PendingDeprecationWarning, stacklevel=2)
- return 'delete_%s' % self.model_name
-
- def get_all_related_objects(self, local_only=False, include_hidden=False,
- include_proxy_eq=False):
- return [k for k, v in self.get_all_related_objects_with_model(
- local_only=local_only, include_hidden=include_hidden,
- include_proxy_eq=include_proxy_eq)]
-
- def get_all_related_objects_with_model(self, local_only=False,
- include_hidden=False,
- include_proxy_eq=False):
- """
- Returns a list of (related-object, model) pairs. Similar to
- get_fields_with_model().
- """
- try:
- self._related_objects_cache
- except AttributeError:
- self._fill_related_objects_cache()
- predicates = []
- if local_only:
- predicates.append(lambda k, v: not v)
- if not include_hidden:
- predicates.append(lambda k, v: not k.field.rel.is_hidden())
- cache = (self._related_objects_proxy_cache if include_proxy_eq
- else self._related_objects_cache)
- return [t for t in cache.items() if all(p(*t) for p in predicates)]
-
- def _fill_related_objects_cache(self):
- cache = SortedDict()
- parent_list = self.get_parent_list()
- for parent in self.parents:
- for obj, model in parent._meta.get_all_related_objects_with_model(include_hidden=True):
- if (obj.field.creation_counter < 0 or obj.field.rel.parent_link) and obj.model not in parent_list:
- continue
- if not model:
- cache[obj] = parent
- else:
- cache[obj] = model
- # Collect also objects which are in relation to some proxy child/parent of self.
- proxy_cache = cache.copy()
- for klass in get_models(include_auto_created=True, only_installed=False):
- if not klass._meta.swapped:
- for f in klass._meta.local_fields:
- if f.rel and not isinstance(f.rel.to, six.string_types) and f.generate_reverse_relation:
- if self == f.rel.to._meta:
- cache[f.related] = None
- proxy_cache[f.related] = None
- elif self.concrete_model == f.rel.to._meta.concrete_model:
- proxy_cache[f.related] = None
- self._related_objects_cache = cache
- self._related_objects_proxy_cache = proxy_cache
-
- def get_all_related_many_to_many_objects(self, local_only=False):
- try:
- cache = self._related_many_to_many_cache
- except AttributeError:
- cache = self._fill_related_many_to_many_cache()
- if local_only:
- return [k for k, v in cache.items() if not v]
- return list(cache)
-
- def get_all_related_m2m_objects_with_model(self):
- """
- Returns a list of (related-m2m-object, model) pairs. Similar to
- get_fields_with_model().
- """
- try:
- cache = self._related_many_to_many_cache
- except AttributeError:
- cache = self._fill_related_many_to_many_cache()
- return list(six.iteritems(cache))
-
- def _fill_related_many_to_many_cache(self):
- cache = SortedDict()
- parent_list = self.get_parent_list()
- for parent in self.parents:
- for obj, model in parent._meta.get_all_related_m2m_objects_with_model():
- if obj.field.creation_counter < 0 and obj.model not in parent_list:
- continue
- if not model:
- cache[obj] = parent
- else:
- cache[obj] = model
- for klass in get_models(only_installed=False):
- if not klass._meta.swapped:
- for f in klass._meta.local_many_to_many:
- if (f.rel
- and not isinstance(f.rel.to, six.string_types)
- and self == f.rel.to._meta):
- cache[f.related] = None
- if app_cache_ready():
- self._related_many_to_many_cache = cache
- return cache
-
- def get_base_chain(self, model):
- """
- Returns a list of parent classes leading to 'model' (order from closet
- to most distant ancestor). This has to handle the case were 'model' is
- a granparent or even more distant relation.
- """
- if not self.parents:
- return None
- if model in self.parents:
- return [model]
- for parent in self.parents:
- res = parent._meta.get_base_chain(model)
- if res:
- res.insert(0, parent)
- return res
- return None
-
- def get_parent_list(self):
- """
- Returns a list of all the ancestor of this model as a list. Useful for
- determining if something is an ancestor, regardless of lineage.
- """
- result = set()
- for parent in self.parents:
- result.add(parent)
- result.update(parent._meta.get_parent_list())
- return result
-
- def get_ancestor_link(self, ancestor):
- """
- Returns the field on the current model which points to the given
- "ancestor". This is possible an indirect link (a pointer to a parent
- model, which points, eventually, to the ancestor). Used when
- constructing table joins for model inheritance.
-
- Returns None if the model isn't an ancestor of this one.
- """
- if ancestor in self.parents:
- return self.parents[ancestor]
- for parent in self.parents:
- # Tries to get a link field from the immediate parent
- parent_link = parent._meta.get_ancestor_link(ancestor)
- if parent_link:
- # In case of a proxied model, the first link
- # of the chain to the ancestor is that parent
- # links
- return self.parents[parent] or parent_link
diff --git a/lib/python2.7/site-packages/django/db/models/query.py b/lib/python2.7/site-packages/django/db/models/query.py
deleted file mode 100644
index 44047d4..0000000
--- a/lib/python2.7/site-packages/django/db/models/query.py
+++ /dev/null
@@ -1,1731 +0,0 @@
-"""
-The main QuerySet implementation. This provides the public API for the ORM.
-"""
-
-import copy
-import itertools
-import sys
-import warnings
-
-from django.conf import settings
-from django.core import exceptions
-from django.db import connections, router, transaction, DatabaseError
-from django.db.models.constants import LOOKUP_SEP
-from django.db.models.fields import AutoField
-from django.db.models.query_utils import (Q, select_related_descend,
- deferred_class_factory, InvalidQuery)
-from django.db.models.deletion import Collector
-from django.db.models import sql
-from django.utils.functional import partition
-from django.utils import six
-from django.utils import timezone
-
-# The maximum number of items to display in a QuerySet.__repr__
-REPR_OUTPUT_SIZE = 20
-
-# Pull into this namespace for backwards compatibility.
-EmptyResultSet = sql.EmptyResultSet
-
-
-class QuerySet(object):
- """
- Represents a lazy database lookup for a set of objects.
- """
- def __init__(self, model=None, query=None, using=None):
- self.model = model
- self._db = using
- self.query = query or sql.Query(self.model)
- self._result_cache = None
- self._sticky_filter = False
- self._for_write = False
- self._prefetch_related_lookups = []
- self._prefetch_done = False
- self._known_related_objects = {} # {rel_field, {pk: rel_obj}}
-
- ########################
- # PYTHON MAGIC METHODS #
- ########################
-
- def __deepcopy__(self, memo):
- """
- Deep copy of a QuerySet doesn't populate the cache
- """
- obj = self.__class__()
- for k, v in self.__dict__.items():
- if k == '_result_cache':
- obj.__dict__[k] = None
- else:
- obj.__dict__[k] = copy.deepcopy(v, memo)
- return obj
-
- def __getstate__(self):
- """
- Allows the QuerySet to be pickled.
- """
- # Force the cache to be fully populated.
- self._fetch_all()
- obj_dict = self.__dict__.copy()
- return obj_dict
-
- def __repr__(self):
- data = list(self[:REPR_OUTPUT_SIZE + 1])
- if len(data) > REPR_OUTPUT_SIZE:
- data[-1] = "...(remaining elements truncated)..."
- return repr(data)
-
- def __len__(self):
- self._fetch_all()
- return len(self._result_cache)
-
- def __iter__(self):
- """
- The queryset iterator protocol uses three nested iterators in the
- default case:
- 1. sql.compiler:execute_sql()
- - Returns 100 rows at time (constants.GET_ITERATOR_CHUNK_SIZE)
- using cursor.fetchmany(). This part is responsible for
- doing some column masking, and returning the rows in chunks.
- 2. sql/compiler.results_iter()
- - Returns one row at time. At this point the rows are still just
- tuples. In some cases the return values are converted to
- Python values at this location (see resolve_columns(),
- resolve_aggregate()).
- 3. self.iterator()
- - Responsible for turning the rows into model objects.
- """
- self._fetch_all()
- return iter(self._result_cache)
-
- def __nonzero__(self):
- self._fetch_all()
- return bool(self._result_cache)
-
- def __getitem__(self, k):
- """
- Retrieves an item or slice from the set of results.
- """
- if not isinstance(k, (slice,) + six.integer_types):
- raise TypeError
- assert ((not isinstance(k, slice) and (k >= 0))
- or (isinstance(k, slice) and (k.start is None or k.start >= 0)
- and (k.stop is None or k.stop >= 0))), \
- "Negative indexing is not supported."
-
- if self._result_cache is not None:
- return self._result_cache[k]
-
- if isinstance(k, slice):
- qs = self._clone()
- if k.start is not None:
- start = int(k.start)
- else:
- start = None
- if k.stop is not None:
- stop = int(k.stop)
- else:
- stop = None
- qs.query.set_limits(start, stop)
- return list(qs)[::k.step] if k.step else qs
-
- qs = self._clone()
- qs.query.set_limits(k, k + 1)
- return list(qs)[0]
-
- def __and__(self, other):
- self._merge_sanity_check(other)
- if isinstance(other, EmptyQuerySet):
- return other
- if isinstance(self, EmptyQuerySet):
- return self
- combined = self._clone()
- combined._merge_known_related_objects(other)
- combined.query.combine(other.query, sql.AND)
- return combined
-
- def __or__(self, other):
- self._merge_sanity_check(other)
- if isinstance(self, EmptyQuerySet):
- return other
- if isinstance(other, EmptyQuerySet):
- return self
- combined = self._clone()
- combined._merge_known_related_objects(other)
- combined.query.combine(other.query, sql.OR)
- return combined
-
- ####################################
- # METHODS THAT DO DATABASE QUERIES #
- ####################################
-
- def iterator(self):
- """
- An iterator over the results from applying this QuerySet to the
- database.
- """
- fill_cache = False
- if connections[self.db].features.supports_select_related:
- fill_cache = self.query.select_related
- if isinstance(fill_cache, dict):
- requested = fill_cache
- else:
- requested = None
- max_depth = self.query.max_depth
-
- extra_select = list(self.query.extra_select)
- aggregate_select = list(self.query.aggregate_select)
-
- only_load = self.query.get_loaded_field_names()
- if not fill_cache:
- fields = self.model._meta.concrete_fields
-
- load_fields = []
- # If only/defer clauses have been specified,
- # build the list of fields that are to be loaded.
- if only_load:
- for field, model in self.model._meta.get_concrete_fields_with_model():
- if model is None:
- model = self.model
- try:
- if field.name in only_load[model]:
- # Add a field that has been explicitly included
- load_fields.append(field.name)
- except KeyError:
- # Model wasn't explicitly listed in the only_load table
- # Therefore, we need to load all fields from this model
- load_fields.append(field.name)
-
- index_start = len(extra_select)
- aggregate_start = index_start + len(load_fields or self.model._meta.concrete_fields)
-
- skip = None
- if load_fields and not fill_cache:
- # Some fields have been deferred, so we have to initialise
- # via keyword arguments.
- skip = set()
- init_list = []
- for field in fields:
- if field.name not in load_fields:
- skip.add(field.attname)
- else:
- init_list.append(field.attname)
- model_cls = deferred_class_factory(self.model, skip)
-
- # Cache db and model outside the loop
- db = self.db
- model = self.model
- compiler = self.query.get_compiler(using=db)
- if fill_cache:
- klass_info = get_klass_info(model, max_depth=max_depth,
- requested=requested, only_load=only_load)
- for row in compiler.results_iter():
- if fill_cache:
- obj, _ = get_cached_row(row, index_start, db, klass_info,
- offset=len(aggregate_select))
- else:
- # Omit aggregates in object creation.
- row_data = row[index_start:aggregate_start]
- if skip:
- obj = model_cls(**dict(zip(init_list, row_data)))
- else:
- obj = model(*row_data)
-
- # Store the source database of the object
- obj._state.db = db
- # This object came from the database; it's not being added.
- obj._state.adding = False
-
- if extra_select:
- for i, k in enumerate(extra_select):
- setattr(obj, k, row[i])
-
- # Add the aggregates to the model
- if aggregate_select:
- for i, aggregate in enumerate(aggregate_select):
- setattr(obj, aggregate, row[i + aggregate_start])
-
- # Add the known related objects to the model, if there are any
- if self._known_related_objects:
- for field, rel_objs in self._known_related_objects.items():
- pk = getattr(obj, field.get_attname())
- try:
- rel_obj = rel_objs[pk]
- except KeyError:
- pass # may happen in qs1 | qs2 scenarios
- else:
- setattr(obj, field.name, rel_obj)
-
- yield obj
-
- def aggregate(self, *args, **kwargs):
- """
- Returns a dictionary containing the calculations (aggregation)
- over the current queryset
-
- If args is present the expression is passed as a kwarg using
- the Aggregate object's default alias.
- """
- if self.query.distinct_fields:
- raise NotImplementedError("aggregate() + distinct(fields) not implemented.")
- for arg in args:
- kwargs[arg.default_alias] = arg
-
- query = self.query.clone()
-
- for (alias, aggregate_expr) in kwargs.items():
- query.add_aggregate(aggregate_expr, self.model, alias,
- is_summary=True)
-
- return query.get_aggregation(using=self.db)
-
- def count(self):
- """
- Performs a SELECT COUNT() and returns the number of records as an
- integer.
-
- If the QuerySet is already fully cached this simply returns the length
- of the cached results set to avoid multiple SELECT COUNT(*) calls.
- """
- if self._result_cache is not None:
- return len(self._result_cache)
-
- return self.query.get_count(using=self.db)
-
- def get(self, *args, **kwargs):
- """
- Performs the query and returns a single object matching the given
- keyword arguments.
- """
- clone = self.filter(*args, **kwargs)
- if self.query.can_filter():
- clone = clone.order_by()
- num = len(clone)
- if num == 1:
- return clone._result_cache[0]
- if not num:
- raise self.model.DoesNotExist(
- "%s matching query does not exist." %
- self.model._meta.object_name)
- raise self.model.MultipleObjectsReturned(
- "get() returned more than one %s -- it returned %s!" %
- (self.model._meta.object_name, num))
-
- def create(self, **kwargs):
- """
- Creates a new object with the given kwargs, saving it to the database
- and returning the created object.
- """
- obj = self.model(**kwargs)
- self._for_write = True
- obj.save(force_insert=True, using=self.db)
- return obj
-
- def bulk_create(self, objs, batch_size=None):
- """
- Inserts each of the instances into the database. This does *not* call
- save() on each of the instances, does not send any pre/post save
- signals, and does not set the primary key attribute if it is an
- autoincrement field.
- """
- # So this case is fun. When you bulk insert you don't get the primary
- # keys back (if it's an autoincrement), so you can't insert into the
- # child tables which references this. There are two workarounds, 1)
- # this could be implemented if you didn't have an autoincrement pk,
- # and 2) you could do it by doing O(n) normal inserts into the parent
- # tables to get the primary keys back, and then doing a single bulk
- # insert into the childmost table. Some databases might allow doing
- # this by using RETURNING clause for the insert query. We're punting
- # on these for now because they are relatively rare cases.
- assert batch_size is None or batch_size > 0
- if self.model._meta.parents:
- raise ValueError("Can't bulk create an inherited model")
- if not objs:
- return objs
- self._for_write = True
- connection = connections[self.db]
- fields = self.model._meta.local_concrete_fields
- with transaction.commit_on_success_unless_managed(using=self.db):
- if (connection.features.can_combine_inserts_with_and_without_auto_increment_pk
- and self.model._meta.has_auto_field):
- self._batched_insert(objs, fields, batch_size)
- else:
- objs_with_pk, objs_without_pk = partition(lambda o: o.pk is None, objs)
- if objs_with_pk:
- self._batched_insert(objs_with_pk, fields, batch_size)
- if objs_without_pk:
- fields= [f for f in fields if not isinstance(f, AutoField)]
- self._batched_insert(objs_without_pk, fields, batch_size)
-
- return objs
-
- def get_or_create(self, **kwargs):
- """
- Looks up an object with the given kwargs, creating one if necessary.
- Returns a tuple of (object, created), where created is a boolean
- specifying whether an object was created.
- """
- defaults = kwargs.pop('defaults', {})
- lookup = kwargs.copy()
- for f in self.model._meta.fields:
- if f.attname in lookup:
- lookup[f.name] = lookup.pop(f.attname)
- try:
- self._for_write = True
- return self.get(**lookup), False
- except self.model.DoesNotExist:
- try:
- params = dict((k, v) for k, v in kwargs.items() if LOOKUP_SEP not in k)
- params.update(defaults)
- obj = self.model(**params)
- with transaction.atomic(using=self.db):
- obj.save(force_insert=True, using=self.db)
- return obj, True
- except DatabaseError:
- exc_info = sys.exc_info()
- try:
- return self.get(**lookup), False
- except self.model.DoesNotExist:
- # Re-raise the DatabaseError with its original traceback.
- six.reraise(*exc_info)
-
- def _earliest_or_latest(self, field_name=None, direction="-"):
- """
- Returns the latest object, according to the model's
- 'get_latest_by' option or optional given field_name.
- """
- order_by = field_name or getattr(self.model._meta, 'get_latest_by')
- assert bool(order_by), "earliest() and latest() require either a "\
- "field_name parameter or 'get_latest_by' in the model"
- assert self.query.can_filter(), \
- "Cannot change a query once a slice has been taken."
- obj = self._clone()
- obj.query.set_limits(high=1)
- obj.query.clear_ordering(force_empty=True)
- obj.query.add_ordering('%s%s' % (direction, order_by))
- return obj.get()
-
- def earliest(self, field_name=None):
- return self._earliest_or_latest(field_name=field_name, direction="")
-
- def latest(self, field_name=None):
- return self._earliest_or_latest(field_name=field_name, direction="-")
-
- def first(self):
- """
- Returns the first object of a query, returns None if no match is found.
- """
- qs = self if self.ordered else self.order_by('pk')
- try:
- return qs[0]
- except IndexError:
- return None
-
- def last(self):
- """
- Returns the last object of a query, returns None if no match is found.
- """
- qs = self.reverse() if self.ordered else self.order_by('-pk')
- try:
- return qs[0]
- except IndexError:
- return None
-
- def in_bulk(self, id_list):
- """
- Returns a dictionary mapping each of the given IDs to the object with
- that ID.
- """
- assert self.query.can_filter(), \
- "Cannot use 'limit' or 'offset' with in_bulk"
- if not id_list:
- return {}
- qs = self.filter(pk__in=id_list).order_by()
- return dict([(obj._get_pk_val(), obj) for obj in qs])
-
- def delete(self):
- """
- Deletes the records in the current QuerySet.
- """
- assert self.query.can_filter(), \
- "Cannot use 'limit' or 'offset' with delete."
-
- del_query = self._clone()
-
- # The delete is actually 2 queries - one to find related objects,
- # and one to delete. Make sure that the discovery of related
- # objects is performed on the same database as the deletion.
- del_query._for_write = True
-
- # Disable non-supported fields.
- del_query.query.select_for_update = False
- del_query.query.select_related = False
- del_query.query.clear_ordering(force_empty=True)
-
- collector = Collector(using=del_query.db)
- collector.collect(del_query)
- collector.delete()
-
- # Clear the result cache, in case this QuerySet gets reused.
- self._result_cache = None
- delete.alters_data = True
-
- def _raw_delete(self, using):
- """
- Deletes objects found from the given queryset in single direct SQL
- query. No signals are sent, and there is no protection for cascades.
- """
- sql.DeleteQuery(self.model).delete_qs(self, using)
- _raw_delete.alters_data = True
-
- def update(self, **kwargs):
- """
- Updates all elements in the current QuerySet, setting all the given
- fields to the appropriate values.
- """
- assert self.query.can_filter(), \
- "Cannot update a query once a slice has been taken."
- self._for_write = True
- query = self.query.clone(sql.UpdateQuery)
- query.add_update_values(kwargs)
- with transaction.commit_on_success_unless_managed(using=self.db):
- rows = query.get_compiler(self.db).execute_sql(None)
- self._result_cache = None
- return rows
- update.alters_data = True
-
- def _update(self, values):
- """
- A version of update that accepts field objects instead of field names.
- Used primarily for model saving and not intended for use by general
- code (it requires too much poking around at model internals to be
- useful at that level).
- """
- assert self.query.can_filter(), \
- "Cannot update a query once a slice has been taken."
- query = self.query.clone(sql.UpdateQuery)
- query.add_update_fields(values)
- self._result_cache = None
- return query.get_compiler(self.db).execute_sql(None)
- _update.alters_data = True
-
- def exists(self):
- if self._result_cache is None:
- return self.query.has_results(using=self.db)
- return bool(self._result_cache)
-
- def _prefetch_related_objects(self):
- # This method can only be called once the result cache has been filled.
- prefetch_related_objects(self._result_cache, self._prefetch_related_lookups)
- self._prefetch_done = True
-
- ##################################################
- # PUBLIC METHODS THAT RETURN A QUERYSET SUBCLASS #
- ##################################################
-
- def values(self, *fields):
- return self._clone(klass=ValuesQuerySet, setup=True, _fields=fields)
-
- def values_list(self, *fields, **kwargs):
- flat = kwargs.pop('flat', False)
- if kwargs:
- raise TypeError('Unexpected keyword arguments to values_list: %s'
- % (list(kwargs),))
- if flat and len(fields) > 1:
- raise TypeError("'flat' is not valid when values_list is called with more than one field.")
- return self._clone(klass=ValuesListQuerySet, setup=True, flat=flat,
- _fields=fields)
-
- def dates(self, field_name, kind, order='ASC'):
- """
- Returns a list of date objects representing all available dates for
- the given field_name, scoped to 'kind'.
- """
- assert kind in ("year", "month", "day"), \
- "'kind' must be one of 'year', 'month' or 'day'."
- assert order in ('ASC', 'DESC'), \
- "'order' must be either 'ASC' or 'DESC'."
- return self._clone(klass=DateQuerySet, setup=True,
- _field_name=field_name, _kind=kind, _order=order)
-
- def datetimes(self, field_name, kind, order='ASC', tzinfo=None):
- """
- Returns a list of datetime objects representing all available
- datetimes for the given field_name, scoped to 'kind'.
- """
- assert kind in ("year", "month", "day", "hour", "minute", "second"), \
- "'kind' must be one of 'year', 'month', 'day', 'hour', 'minute' or 'second'."
- assert order in ('ASC', 'DESC'), \
- "'order' must be either 'ASC' or 'DESC'."
- if settings.USE_TZ:
- if tzinfo is None:
- tzinfo = timezone.get_current_timezone()
- else:
- tzinfo = None
- return self._clone(klass=DateTimeQuerySet, setup=True,
- _field_name=field_name, _kind=kind, _order=order, _tzinfo=tzinfo)
-
- def none(self):
- """
- Returns an empty QuerySet.
- """
- clone = self._clone()
- clone.query.set_empty()
- return clone
-
- ##################################################################
- # PUBLIC METHODS THAT ALTER ATTRIBUTES AND RETURN A NEW QUERYSET #
- ##################################################################
-
- def all(self):
- """
- Returns a new QuerySet that is a copy of the current one. This allows a
- QuerySet to proxy for a model manager in some cases.
- """
- return self._clone()
-
- def filter(self, *args, **kwargs):
- """
- Returns a new QuerySet instance with the args ANDed to the existing
- set.
- """
- return self._filter_or_exclude(False, *args, **kwargs)
-
- def exclude(self, *args, **kwargs):
- """
- Returns a new QuerySet instance with NOT (args) ANDed to the existing
- set.
- """
- return self._filter_or_exclude(True, *args, **kwargs)
-
- def _filter_or_exclude(self, negate, *args, **kwargs):
- if args or kwargs:
- assert self.query.can_filter(), \
- "Cannot filter a query once a slice has been taken."
-
- clone = self._clone()
- if negate:
- clone.query.add_q(~Q(*args, **kwargs))
- else:
- clone.query.add_q(Q(*args, **kwargs))
- return clone
-
- def complex_filter(self, filter_obj):
- """
- Returns a new QuerySet instance with filter_obj added to the filters.
-
- filter_obj can be a Q object (or anything with an add_to_query()
- method) or a dictionary of keyword lookup arguments.
-
- This exists to support framework features such as 'limit_choices_to',
- and usually it will be more natural to use other methods.
- """
- if isinstance(filter_obj, Q) or hasattr(filter_obj, 'add_to_query'):
- clone = self._clone()
- clone.query.add_q(filter_obj)
- return clone
- else:
- return self._filter_or_exclude(None, **filter_obj)
-
- def select_for_update(self, **kwargs):
- """
- Returns a new QuerySet instance that will select objects with a
- FOR UPDATE lock.
- """
- # Default to false for nowait
- nowait = kwargs.pop('nowait', False)
- obj = self._clone()
- obj._for_write = True
- obj.query.select_for_update = True
- obj.query.select_for_update_nowait = nowait
- return obj
-
- def select_related(self, *fields, **kwargs):
- """
- Returns a new QuerySet instance that will select related objects.
-
- If fields are specified, they must be ForeignKey fields and only those
- related objects are included in the selection.
-
- If select_related(None) is called, the list is cleared.
- """
- if 'depth' in kwargs:
- warnings.warn('The "depth" keyword argument has been deprecated.\n'
- 'Use related field names instead.', DeprecationWarning, stacklevel=2)
- depth = kwargs.pop('depth', 0)
- if kwargs:
- raise TypeError('Unexpected keyword arguments to select_related: %s'
- % (list(kwargs),))
- obj = self._clone()
- if fields == (None,):
- obj.query.select_related = False
- elif fields:
- if depth:
- raise TypeError('Cannot pass both "depth" and fields to select_related()')
- obj.query.add_select_related(fields)
- else:
- obj.query.select_related = True
- if depth:
- obj.query.max_depth = depth
- return obj
-
- def prefetch_related(self, *lookups):
- """
- Returns a new QuerySet instance that will prefetch the specified
- Many-To-One and Many-To-Many related objects when the QuerySet is
- evaluated.
-
- When prefetch_related() is called more than once, the list of lookups to
- prefetch is appended to. If prefetch_related(None) is called, the
- the list is cleared.
- """
- clone = self._clone()
- if lookups == (None,):
- clone._prefetch_related_lookups = []
- else:
- clone._prefetch_related_lookups.extend(lookups)
- return clone
-
- def annotate(self, *args, **kwargs):
- """
- Return a query set in which the returned objects have been annotated
- with data aggregated from related fields.
- """
- for arg in args:
- if arg.default_alias in kwargs:
- raise ValueError("The named annotation '%s' conflicts with the "
- "default name for another annotation."
- % arg.default_alias)
- kwargs[arg.default_alias] = arg
-
- names = getattr(self, '_fields', None)
- if names is None:
- names = set(self.model._meta.get_all_field_names())
- for aggregate in kwargs:
- if aggregate in names:
- raise ValueError("The annotation '%s' conflicts with a field on "
- "the model." % aggregate)
-
- obj = self._clone()
-
- obj._setup_aggregate_query(list(kwargs))
-
- # Add the aggregates to the query
- for (alias, aggregate_expr) in kwargs.items():
- obj.query.add_aggregate(aggregate_expr, self.model, alias,
- is_summary=False)
-
- return obj
-
- def order_by(self, *field_names):
- """
- Returns a new QuerySet instance with the ordering changed.
- """
- assert self.query.can_filter(), \
- "Cannot reorder a query once a slice has been taken."
- obj = self._clone()
- obj.query.clear_ordering(force_empty=False)
- obj.query.add_ordering(*field_names)
- return obj
-
- def distinct(self, *field_names):
- """
- Returns a new QuerySet instance that will select only distinct results.
- """
- assert self.query.can_filter(), \
- "Cannot create distinct fields once a slice has been taken."
- obj = self._clone()
- obj.query.add_distinct_fields(*field_names)
- return obj
-
- def extra(self, select=None, where=None, params=None, tables=None,
- order_by=None, select_params=None):
- """
- Adds extra SQL fragments to the query.
- """
- assert self.query.can_filter(), \
- "Cannot change a query once a slice has been taken"
- clone = self._clone()
- clone.query.add_extra(select, select_params, where, params, tables, order_by)
- return clone
-
- def reverse(self):
- """
- Reverses the ordering of the QuerySet.
- """
- clone = self._clone()
- clone.query.standard_ordering = not clone.query.standard_ordering
- return clone
-
- def defer(self, *fields):
- """
- Defers the loading of data for certain fields until they are accessed.
- The set of fields to defer is added to any existing set of deferred
- fields. The only exception to this is if None is passed in as the only
- parameter, in which case all deferrals are removed (None acts as a
- reset option).
- """
- clone = self._clone()
- if fields == (None,):
- clone.query.clear_deferred_loading()
- else:
- clone.query.add_deferred_loading(fields)
- return clone
-
- def only(self, *fields):
- """
- Essentially, the opposite of defer. Only the fields passed into this
- method and that are not already specified as deferred are loaded
- immediately when the queryset is evaluated.
- """
- if fields == (None,):
- # Can only pass None to defer(), not only(), as the rest option.
- # That won't stop people trying to do this, so let's be explicit.
- raise TypeError("Cannot pass None as an argument to only().")
- clone = self._clone()
- clone.query.add_immediate_loading(fields)
- return clone
-
- def using(self, alias):
- """
- Selects which database this QuerySet should excecute its query against.
- """
- clone = self._clone()
- clone._db = alias
- return clone
-
- ###################################
- # PUBLIC INTROSPECTION ATTRIBUTES #
- ###################################
-
- def ordered(self):
- """
- Returns True if the QuerySet is ordered -- i.e. has an order_by()
- clause or a default ordering on the model.
- """
- if self.query.extra_order_by or self.query.order_by:
- return True
- elif self.query.default_ordering and self.query.get_meta().ordering:
- return True
- else:
- return False
- ordered = property(ordered)
-
- @property
- def db(self):
- "Return the database that will be used if this query is executed now"
- if self._for_write:
- return self._db or router.db_for_write(self.model)
- return self._db or router.db_for_read(self.model)
-
- ###################
- # PRIVATE METHODS #
- ###################
- def _batched_insert(self, objs, fields, batch_size):
- """
- A little helper method for bulk_insert to insert the bulk one batch
- at a time. Inserts recursively a batch from the front of the bulk and
- then _batched_insert() the remaining objects again.
- """
- if not objs:
- return
- ops = connections[self.db].ops
- batch_size = (batch_size or max(ops.bulk_batch_size(fields, objs), 1))
- for batch in [objs[i:i+batch_size]
- for i in range(0, len(objs), batch_size)]:
- self.model._base_manager._insert(batch, fields=fields,
- using=self.db)
-
- def _clone(self, klass=None, setup=False, **kwargs):
- if klass is None:
- klass = self.__class__
- query = self.query.clone()
- if self._sticky_filter:
- query.filter_is_sticky = True
- c = klass(model=self.model, query=query, using=self._db)
- c._for_write = self._for_write
- c._prefetch_related_lookups = self._prefetch_related_lookups[:]
- c._known_related_objects = self._known_related_objects
- c.__dict__.update(kwargs)
- if setup and hasattr(c, '_setup_query'):
- c._setup_query()
- return c
-
- def _fetch_all(self):
- if self._result_cache is None:
- self._result_cache = list(self.iterator())
- if self._prefetch_related_lookups and not self._prefetch_done:
- self._prefetch_related_objects()
-
- def _next_is_sticky(self):
- """
- Indicates that the next filter call and the one following that should
- be treated as a single filter. This is only important when it comes to
- determining when to reuse tables for many-to-many filters. Required so
- that we can filter naturally on the results of related managers.
-
- This doesn't return a clone of the current QuerySet (it returns
- "self"). The method is only used internally and should be immediately
- followed by a filter() that does create a clone.
- """
- self._sticky_filter = True
- return self
-
- def _merge_sanity_check(self, other):
- """
- Checks that we are merging two comparable QuerySet classes. By default
- this does nothing, but see the ValuesQuerySet for an example of where
- it's useful.
- """
- pass
-
- def _merge_known_related_objects(self, other):
- """
- Keep track of all known related objects from either QuerySet instance.
- """
- for field, objects in other._known_related_objects.items():
- self._known_related_objects.setdefault(field, {}).update(objects)
-
- def _setup_aggregate_query(self, aggregates):
- """
- Prepare the query for computing a result that contains aggregate annotations.
- """
- opts = self.model._meta
- if self.query.group_by is None:
- field_names = [f.attname for f in opts.concrete_fields]
- self.query.add_fields(field_names, False)
- self.query.set_group_by()
-
- def _prepare(self):
- return self
-
- def _as_sql(self, connection):
- """
- Returns the internal query's SQL and parameters (as a tuple).
- """
- obj = self.values("pk")
- if obj._db is None or connection == connections[obj._db]:
- return obj.query.get_compiler(connection=connection).as_nested_sql()
- raise ValueError("Can't do subqueries with queries on different DBs.")
-
- # When used as part of a nested query, a queryset will never be an "always
- # empty" result.
- value_annotation = True
-
-class InstanceCheckMeta(type):
- def __instancecheck__(self, instance):
- return instance.query.is_empty()
-
-class EmptyQuerySet(six.with_metaclass(InstanceCheckMeta)):
- """
- Marker class usable for checking if a queryset is empty by .none():
- isinstance(qs.none(), EmptyQuerySet) -> True
- """
-
- def __init__(self, *args, **kwargs):
- raise TypeError("EmptyQuerySet can't be instantiated")
-
-class ValuesQuerySet(QuerySet):
- def __init__(self, *args, **kwargs):
- super(ValuesQuerySet, self).__init__(*args, **kwargs)
- # select_related isn't supported in values(). (FIXME -#3358)
- self.query.select_related = False
-
- # QuerySet.clone() will also set up the _fields attribute with the
- # names of the model fields to select.
-
- def iterator(self):
- # Purge any extra columns that haven't been explicitly asked for
- extra_names = list(self.query.extra_select)
- field_names = self.field_names
- aggregate_names = list(self.query.aggregate_select)
-
- names = extra_names + field_names + aggregate_names
-
- for row in self.query.get_compiler(self.db).results_iter():
- yield dict(zip(names, row))
-
- def delete(self):
- # values().delete() doesn't work currently - make sure it raises an
- # user friendly error.
- raise TypeError("Queries with .values() or .values_list() applied "
- "can't be deleted")
-
- def _setup_query(self):
- """
- Constructs the field_names list that the values query will be
- retrieving.
-
- Called by the _clone() method after initializing the rest of the
- instance.
- """
- self.query.clear_deferred_loading()
- self.query.clear_select_fields()
-
- if self._fields:
- self.extra_names = []
- self.aggregate_names = []
- if not self.query.extra and not self.query.aggregates:
- # Short cut - if there are no extra or aggregates, then
- # the values() clause must be just field names.
- self.field_names = list(self._fields)
- else:
- self.query.default_cols = False
- self.field_names = []
- for f in self._fields:
- # we inspect the full extra_select list since we might
- # be adding back an extra select item that we hadn't
- # had selected previously.
- if f in self.query.extra:
- self.extra_names.append(f)
- elif f in self.query.aggregate_select:
- self.aggregate_names.append(f)
- else:
- self.field_names.append(f)
- else:
- # Default to all fields.
- self.extra_names = None
- self.field_names = [f.attname for f in self.model._meta.concrete_fields]
- self.aggregate_names = None
-
- self.query.select = []
- if self.extra_names is not None:
- self.query.set_extra_mask(self.extra_names)
- self.query.add_fields(self.field_names, True)
- if self.aggregate_names is not None:
- self.query.set_aggregate_mask(self.aggregate_names)
-
- def _clone(self, klass=None, setup=False, **kwargs):
- """
- Cloning a ValuesQuerySet preserves the current fields.
- """
- c = super(ValuesQuerySet, self)._clone(klass, **kwargs)
- if not hasattr(c, '_fields'):
- # Only clone self._fields if _fields wasn't passed into the cloning
- # call directly.
- c._fields = self._fields[:]
- c.field_names = self.field_names
- c.extra_names = self.extra_names
- c.aggregate_names = self.aggregate_names
- if setup and hasattr(c, '_setup_query'):
- c._setup_query()
- return c
-
- def _merge_sanity_check(self, other):
- super(ValuesQuerySet, self)._merge_sanity_check(other)
- if (set(self.extra_names) != set(other.extra_names) or
- set(self.field_names) != set(other.field_names) or
- self.aggregate_names != other.aggregate_names):
- raise TypeError("Merging '%s' classes must involve the same values in each case."
- % self.__class__.__name__)
-
- def _setup_aggregate_query(self, aggregates):
- """
- Prepare the query for computing a result that contains aggregate annotations.
- """
- self.query.set_group_by()
-
- if self.aggregate_names is not None:
- self.aggregate_names.extend(aggregates)
- self.query.set_aggregate_mask(self.aggregate_names)
-
- super(ValuesQuerySet, self)._setup_aggregate_query(aggregates)
-
- def _as_sql(self, connection):
- """
- For ValuesQuerySet (and subclasses like ValuesListQuerySet), they can
- only be used as nested queries if they're already set up to select only
- a single field (in which case, that is the field column that is
- returned). This differs from QuerySet.as_sql(), where the column to
- select is set up by Django.
- """
- if ((self._fields and len(self._fields) > 1) or
- (not self._fields and len(self.model._meta.fields) > 1)):
- raise TypeError('Cannot use a multi-field %s as a filter value.'
- % self.__class__.__name__)
-
- obj = self._clone()
- if obj._db is None or connection == connections[obj._db]:
- return obj.query.get_compiler(connection=connection).as_nested_sql()
- raise ValueError("Can't do subqueries with queries on different DBs.")
-
- def _prepare(self):
- """
- Validates that we aren't trying to do a query like
- value__in=qs.values('value1', 'value2'), which isn't valid.
- """
- if ((self._fields and len(self._fields) > 1) or
- (not self._fields and len(self.model._meta.fields) > 1)):
- raise TypeError('Cannot use a multi-field %s as a filter value.'
- % self.__class__.__name__)
- return self
-
-
-class ValuesListQuerySet(ValuesQuerySet):
- def iterator(self):
- if self.flat and len(self._fields) == 1:
- for row in self.query.get_compiler(self.db).results_iter():
- yield row[0]
- elif not self.query.extra_select and not self.query.aggregate_select:
- for row in self.query.get_compiler(self.db).results_iter():
- yield tuple(row)
- else:
- # When extra(select=...) or an annotation is involved, the extra
- # cols are always at the start of the row, and we need to reorder
- # the fields to match the order in self._fields.
- extra_names = list(self.query.extra_select)
- field_names = self.field_names
- aggregate_names = list(self.query.aggregate_select)
-
- names = extra_names + field_names + aggregate_names
-
- # If a field list has been specified, use it. Otherwise, use the
- # full list of fields, including extras and aggregates.
- if self._fields:
- fields = list(self._fields) + [f for f in aggregate_names if f not in self._fields]
- else:
- fields = names
-
- for row in self.query.get_compiler(self.db).results_iter():
- data = dict(zip(names, row))
- yield tuple([data[f] for f in fields])
-
- def _clone(self, *args, **kwargs):
- clone = super(ValuesListQuerySet, self)._clone(*args, **kwargs)
- if not hasattr(clone, "flat"):
- # Only assign flat if the clone didn't already get it from kwargs
- clone.flat = self.flat
- return clone
-
-
-class DateQuerySet(QuerySet):
- def iterator(self):
- return self.query.get_compiler(self.db).results_iter()
-
- def _setup_query(self):
- """
- Sets up any special features of the query attribute.
-
- Called by the _clone() method after initializing the rest of the
- instance.
- """
- self.query.clear_deferred_loading()
- self.query = self.query.clone(klass=sql.DateQuery, setup=True)
- self.query.select = []
- self.query.add_select(self._field_name, self._kind, self._order)
-
- def _clone(self, klass=None, setup=False, **kwargs):
- c = super(DateQuerySet, self)._clone(klass, False, **kwargs)
- c._field_name = self._field_name
- c._kind = self._kind
- if setup and hasattr(c, '_setup_query'):
- c._setup_query()
- return c
-
-
-class DateTimeQuerySet(QuerySet):
- def iterator(self):
- return self.query.get_compiler(self.db).results_iter()
-
- def _setup_query(self):
- """
- Sets up any special features of the query attribute.
-
- Called by the _clone() method after initializing the rest of the
- instance.
- """
- self.query.clear_deferred_loading()
- self.query = self.query.clone(klass=sql.DateTimeQuery, setup=True, tzinfo=self._tzinfo)
- self.query.select = []
- self.query.add_select(self._field_name, self._kind, self._order)
-
- def _clone(self, klass=None, setup=False, **kwargs):
- c = super(DateTimeQuerySet, self)._clone(klass, False, **kwargs)
- c._field_name = self._field_name
- c._kind = self._kind
- c._tzinfo = self._tzinfo
- if setup and hasattr(c, '_setup_query'):
- c._setup_query()
- return c
-
-
-def get_klass_info(klass, max_depth=0, cur_depth=0, requested=None,
- only_load=None, from_parent=None):
- """
- Helper function that recursively returns an information for a klass, to be
- used in get_cached_row. It exists just to compute this information only
- once for entire queryset. Otherwise it would be computed for each row, which
- leads to poor perfomance on large querysets.
-
- Arguments:
- * klass - the class to retrieve (and instantiate)
- * max_depth - the maximum depth to which a select_related()
- relationship should be explored.
- * cur_depth - the current depth in the select_related() tree.
- Used in recursive calls to determin if we should dig deeper.
- * requested - A dictionary describing the select_related() tree
- that is to be retrieved. keys are field names; values are
- dictionaries describing the keys on that related object that
- are themselves to be select_related().
- * only_load - if the query has had only() or defer() applied,
- this is the list of field names that will be returned. If None,
- the full field list for `klass` can be assumed.
- * from_parent - the parent model used to get to this model
-
- Note that when travelling from parent to child, we will only load child
- fields which aren't in the parent.
- """
- if max_depth and requested is None and cur_depth > max_depth:
- # We've recursed deeply enough; stop now.
- return None
-
- if only_load:
- load_fields = only_load.get(klass) or set()
- # When we create the object, we will also be creating populating
- # all the parent classes, so traverse the parent classes looking
- # for fields that must be included on load.
- for parent in klass._meta.get_parent_list():
- fields = only_load.get(parent)
- if fields:
- load_fields.update(fields)
- else:
- load_fields = None
-
- if load_fields:
- # Handle deferred fields.
- skip = set()
- init_list = []
- # Build the list of fields that *haven't* been requested
- for field, model in klass._meta.get_concrete_fields_with_model():
- if field.name not in load_fields:
- skip.add(field.attname)
- elif from_parent and issubclass(from_parent, model.__class__):
- # Avoid loading fields already loaded for parent model for
- # child models.
- continue
- else:
- init_list.append(field.attname)
- # Retrieve all the requested fields
- field_count = len(init_list)
- if skip:
- klass = deferred_class_factory(klass, skip)
- field_names = init_list
- else:
- field_names = ()
- else:
- # Load all fields on klass
-
- field_count = len(klass._meta.concrete_fields)
- # Check if we need to skip some parent fields.
- if from_parent and len(klass._meta.local_concrete_fields) != len(klass._meta.concrete_fields):
- # Only load those fields which haven't been already loaded into
- # 'from_parent'.
- non_seen_models = [p for p in klass._meta.get_parent_list()
- if not issubclass(from_parent, p)]
- # Load local fields, too...
- non_seen_models.append(klass)
- field_names = [f.attname for f in klass._meta.concrete_fields
- if f.model in non_seen_models]
- field_count = len(field_names)
- # Try to avoid populating field_names variable for perfomance reasons.
- # If field_names variable is set, we use **kwargs based model init
- # which is slower than normal init.
- if field_count == len(klass._meta.concrete_fields):
- field_names = ()
-
- restricted = requested is not None
-
- related_fields = []
- for f in klass._meta.fields:
- if select_related_descend(f, restricted, requested, load_fields):
- if restricted:
- next = requested[f.name]
- else:
- next = None
- klass_info = get_klass_info(f.rel.to, max_depth=max_depth, cur_depth=cur_depth+1,
- requested=next, only_load=only_load)
- related_fields.append((f, klass_info))
-
- reverse_related_fields = []
- if restricted:
- for o in klass._meta.get_all_related_objects():
- if o.field.unique and select_related_descend(o.field, restricted, requested,
- only_load.get(o.model), reverse=True):
- next = requested[o.field.related_query_name()]
- parent = klass if issubclass(o.model, klass) else None
- klass_info = get_klass_info(o.model, max_depth=max_depth, cur_depth=cur_depth+1,
- requested=next, only_load=only_load, from_parent=parent)
- reverse_related_fields.append((o.field, klass_info))
- if field_names:
- pk_idx = field_names.index(klass._meta.pk.attname)
- else:
- pk_idx = klass._meta.pk_index()
-
- return klass, field_names, field_count, related_fields, reverse_related_fields, pk_idx
-
-
-def get_cached_row(row, index_start, using, klass_info, offset=0,
- parent_data=()):
- """
- Helper function that recursively returns an object with the specified
- related attributes already populated.
-
- This method may be called recursively to populate deep select_related()
- clauses.
-
- Arguments:
- * row - the row of data returned by the database cursor
- * index_start - the index of the row at which data for this
- object is known to start
- * offset - the number of additional fields that are known to
- exist in row for `klass`. This usually means the number of
- annotated results on `klass`.
- * using - the database alias on which the query is being executed.
- * klass_info - result of the get_klass_info function
- * parent_data - parent model data in format (field, value). Used
- to populate the non-local fields of child models.
- """
- if klass_info is None:
- return None
- klass, field_names, field_count, related_fields, reverse_related_fields, pk_idx = klass_info
-
-
- fields = row[index_start : index_start + field_count]
- # If the pk column is None (or the Oracle equivalent ''), then the related
- # object must be non-existent - set the relation to None.
- if fields[pk_idx] == None or fields[pk_idx] == '':
- obj = None
- elif field_names:
- fields = list(fields)
- for rel_field, value in parent_data:
- field_names.append(rel_field.attname)
- fields.append(value)
- obj = klass(**dict(zip(field_names, fields)))
- else:
- obj = klass(*fields)
- # If an object was retrieved, set the database state.
- if obj:
- obj._state.db = using
- obj._state.adding = False
-
- # Instantiate related fields
- index_end = index_start + field_count + offset
- # Iterate over each related object, populating any
- # select_related() fields
- for f, klass_info in related_fields:
- # Recursively retrieve the data for the related object
- cached_row = get_cached_row(row, index_end, using, klass_info)
- # If the recursive descent found an object, populate the
- # descriptor caches relevant to the object
- if cached_row:
- rel_obj, index_end = cached_row
- if obj is not None:
- # If the base object exists, populate the
- # descriptor cache
- setattr(obj, f.get_cache_name(), rel_obj)
- if f.unique and rel_obj is not None:
- # If the field is unique, populate the
- # reverse descriptor cache on the related object
- setattr(rel_obj, f.related.get_cache_name(), obj)
-
- # Now do the same, but for reverse related objects.
- # Only handle the restricted case - i.e., don't do a depth
- # descent into reverse relations unless explicitly requested
- for f, klass_info in reverse_related_fields:
- # Transfer data from this object to childs.
- parent_data = []
- for rel_field, rel_model in klass_info[0]._meta.get_fields_with_model():
- if rel_model is not None and isinstance(obj, rel_model):
- parent_data.append((rel_field, getattr(obj, rel_field.attname)))
- # Recursively retrieve the data for the related object
- cached_row = get_cached_row(row, index_end, using, klass_info,
- parent_data=parent_data)
- # If the recursive descent found an object, populate the
- # descriptor caches relevant to the object
- if cached_row:
- rel_obj, index_end = cached_row
- if obj is not None:
- # populate the reverse descriptor cache
- setattr(obj, f.related.get_cache_name(), rel_obj)
- if rel_obj is not None:
- # If the related object exists, populate
- # the descriptor cache.
- setattr(rel_obj, f.get_cache_name(), obj)
- # Populate related object caches using parent data.
- for rel_field, _ in parent_data:
- if rel_field.rel:
- setattr(rel_obj, rel_field.attname, getattr(obj, rel_field.attname))
- try:
- cached_obj = getattr(obj, rel_field.get_cache_name())
- setattr(rel_obj, rel_field.get_cache_name(), cached_obj)
- except AttributeError:
- # Related object hasn't been cached yet
- pass
- return obj, index_end
-
-
-class RawQuerySet(object):
- """
- Provides an iterator which converts the results of raw SQL queries into
- annotated model instances.
- """
- def __init__(self, raw_query, model=None, query=None, params=None,
- translations=None, using=None):
- self.raw_query = raw_query
- self.model = model
- self._db = using
- self.query = query or sql.RawQuery(sql=raw_query, using=self.db, params=params)
- self.params = params or ()
- self.translations = translations or {}
-
- def __iter__(self):
- # Mapping of attrnames to row column positions. Used for constructing
- # the model using kwargs, needed when not all model's fields are present
- # in the query.
- model_init_field_names = {}
- # A list of tuples of (column name, column position). Used for
- # annotation fields.
- annotation_fields = []
-
- # Cache some things for performance reasons outside the loop.
- db = self.db
- compiler = connections[db].ops.compiler('SQLCompiler')(
- self.query, connections[db], db
- )
- need_resolv_columns = hasattr(compiler, 'resolve_columns')
-
- query = iter(self.query)
-
- # Find out which columns are model's fields, and which ones should be
- # annotated to the model.
- for pos, column in enumerate(self.columns):
- if column in self.model_fields:
- model_init_field_names[self.model_fields[column].attname] = pos
- else:
- annotation_fields.append((column, pos))
-
- # Find out which model's fields are not present in the query.
- skip = set()
- for field in self.model._meta.fields:
- if field.attname not in model_init_field_names:
- skip.add(field.attname)
- if skip:
- if self.model._meta.pk.attname in skip:
- raise InvalidQuery('Raw query must include the primary key')
- model_cls = deferred_class_factory(self.model, skip)
- else:
- model_cls = self.model
- # All model's fields are present in the query. So, it is possible
- # to use *args based model instantation. For each field of the model,
- # record the query column position matching that field.
- model_init_field_pos = []
- for field in self.model._meta.fields:
- model_init_field_pos.append(model_init_field_names[field.attname])
- if need_resolv_columns:
- fields = [self.model_fields.get(c, None) for c in self.columns]
- # Begin looping through the query values.
- for values in query:
- if need_resolv_columns:
- values = compiler.resolve_columns(values, fields)
- # Associate fields to values
- if skip:
- model_init_kwargs = {}
- for attname, pos in six.iteritems(model_init_field_names):
- model_init_kwargs[attname] = values[pos]
- instance = model_cls(**model_init_kwargs)
- else:
- model_init_args = [values[pos] for pos in model_init_field_pos]
- instance = model_cls(*model_init_args)
- if annotation_fields:
- for column, pos in annotation_fields:
- setattr(instance, column, values[pos])
-
- instance._state.db = db
- instance._state.adding = False
-
- yield instance
-
- def __repr__(self):
- text = self.raw_query
- if self.params:
- text = text % (self.params if hasattr(self.params, 'keys') else tuple(self.params))
- return "<RawQuerySet: %r>" % text
-
- def __getitem__(self, k):
- return list(self)[k]
-
- @property
- def db(self):
- "Return the database that will be used if this query is executed now"
- return self._db or router.db_for_read(self.model)
-
- def using(self, alias):
- """
- Selects which database this Raw QuerySet should excecute it's query against.
- """
- return RawQuerySet(self.raw_query, model=self.model,
- query=self.query.clone(using=alias),
- params=self.params, translations=self.translations,
- using=alias)
-
- @property
- def columns(self):
- """
- A list of model field names in the order they'll appear in the
- query results.
- """
- if not hasattr(self, '_columns'):
- self._columns = self.query.get_columns()
-
- # Adjust any column names which don't match field names
- for (query_name, model_name) in self.translations.items():
- try:
- index = self._columns.index(query_name)
- self._columns[index] = model_name
- except ValueError:
- # Ignore translations for non-existant column names
- pass
-
- return self._columns
-
- @property
- def model_fields(self):
- """
- A dict mapping column names to model field names.
- """
- if not hasattr(self, '_model_fields'):
- converter = connections[self.db].introspection.table_name_converter
- self._model_fields = {}
- for field in self.model._meta.fields:
- name, column = field.get_attname_column()
- self._model_fields[converter(column)] = field
- return self._model_fields
-
-
-def insert_query(model, objs, fields, return_id=False, raw=False, using=None):
- """
- Inserts a new record for the given model. This provides an interface to
- the InsertQuery class and is how Model.save() is implemented. It is not
- part of the public API.
- """
- query = sql.InsertQuery(model)
- query.insert_values(fields, objs, raw=raw)
- return query.get_compiler(using=using).execute_sql(return_id)
-
-
-def prefetch_related_objects(result_cache, related_lookups):
- """
- Helper function for prefetch_related functionality
-
- Populates prefetched objects caches for a list of results
- from a QuerySet
- """
- if len(result_cache) == 0:
- return # nothing to do
-
- model = result_cache[0].__class__
-
- # We need to be able to dynamically add to the list of prefetch_related
- # lookups that we look up (see below). So we need some book keeping to
- # ensure we don't do duplicate work.
- done_lookups = set() # list of lookups like foo__bar__baz
- done_queries = {} # dictionary of things like 'foo__bar': [results]
-
- auto_lookups = [] # we add to this as we go through.
- followed_descriptors = set() # recursion protection
-
- all_lookups = itertools.chain(related_lookups, auto_lookups)
- for lookup in all_lookups:
- if lookup in done_lookups:
- # We've done exactly this already, skip the whole thing
- continue
- done_lookups.add(lookup)
-
- # Top level, the list of objects to decorate is the result cache
- # from the primary QuerySet. It won't be for deeper levels.
- obj_list = result_cache
-
- attrs = lookup.split(LOOKUP_SEP)
- for level, attr in enumerate(attrs):
- # Prepare main instances
- if len(obj_list) == 0:
- break
-
- current_lookup = LOOKUP_SEP.join(attrs[0:level+1])
- if current_lookup in done_queries:
- # Skip any prefetching, and any object preparation
- obj_list = done_queries[current_lookup]
- continue
-
- # Prepare objects:
- good_objects = True
- for obj in obj_list:
- # Since prefetching can re-use instances, it is possible to have
- # the same instance multiple times in obj_list, so obj might
- # already be prepared.
- if not hasattr(obj, '_prefetched_objects_cache'):
- try:
- obj._prefetched_objects_cache = {}
- except AttributeError:
- # Must be in a QuerySet subclass that is not returning
- # Model instances, either in Django or 3rd
- # party. prefetch_related() doesn't make sense, so quit
- # now.
- good_objects = False
- break
- if not good_objects:
- break
-
- # Descend down tree
-
- # We assume that objects retrieved are homogenous (which is the premise
- # of prefetch_related), so what applies to first object applies to all.
- first_obj = obj_list[0]
- prefetcher, descriptor, attr_found, is_fetched = get_prefetcher(first_obj, attr)
-
- if not attr_found:
- raise AttributeError("Cannot find '%s' on %s object, '%s' is an invalid "
- "parameter to prefetch_related()" %
- (attr, first_obj.__class__.__name__, lookup))
-
- if level == len(attrs) - 1 and prefetcher is None:
- # Last one, this *must* resolve to something that supports
- # prefetching, otherwise there is no point adding it and the
- # developer asking for it has made a mistake.
- raise ValueError("'%s' does not resolve to a item that supports "
- "prefetching - this is an invalid parameter to "
- "prefetch_related()." % lookup)
-
- if prefetcher is not None and not is_fetched:
- obj_list, additional_prl = prefetch_one_level(obj_list, prefetcher, attr)
- # We need to ensure we don't keep adding lookups from the
- # same relationships to stop infinite recursion. So, if we
- # are already on an automatically added lookup, don't add
- # the new lookups from relationships we've seen already.
- if not (lookup in auto_lookups and
- descriptor in followed_descriptors):
- for f in additional_prl:
- new_prl = LOOKUP_SEP.join([current_lookup, f])
- auto_lookups.append(new_prl)
- done_queries[current_lookup] = obj_list
- followed_descriptors.add(descriptor)
- else:
- # Either a singly related object that has already been fetched
- # (e.g. via select_related), or hopefully some other property
- # that doesn't support prefetching but needs to be traversed.
-
- # We replace the current list of parent objects with the list
- # of related objects, filtering out empty or missing values so
- # that we can continue with nullable or reverse relations.
- new_obj_list = []
- for obj in obj_list:
- try:
- new_obj = getattr(obj, attr)
- except exceptions.ObjectDoesNotExist:
- continue
- if new_obj is None:
- continue
- new_obj_list.append(new_obj)
- obj_list = new_obj_list
-
-
-def get_prefetcher(instance, attr):
- """
- For the attribute 'attr' on the given instance, finds
- an object that has a get_prefetch_queryset().
- Returns a 4 tuple containing:
- (the object with get_prefetch_queryset (or None),
- the descriptor object representing this relationship (or None),
- a boolean that is False if the attribute was not found at all,
- a boolean that is True if the attribute has already been fetched)
- """
- prefetcher = None
- attr_found = False
- is_fetched = False
-
- # For singly related objects, we have to avoid getting the attribute
- # from the object, as this will trigger the query. So we first try
- # on the class, in order to get the descriptor object.
- rel_obj_descriptor = getattr(instance.__class__, attr, None)
- if rel_obj_descriptor is None:
- try:
- rel_obj = getattr(instance, attr)
- attr_found = True
- except AttributeError:
- pass
- else:
- attr_found = True
- if rel_obj_descriptor:
- # singly related object, descriptor object has the
- # get_prefetch_queryset() method.
- if hasattr(rel_obj_descriptor, 'get_prefetch_queryset'):
- prefetcher = rel_obj_descriptor
- if rel_obj_descriptor.is_cached(instance):
- is_fetched = True
- else:
- # descriptor doesn't support prefetching, so we go ahead and get
- # the attribute on the instance rather than the class to
- # support many related managers
- rel_obj = getattr(instance, attr)
- if hasattr(rel_obj, 'get_prefetch_queryset'):
- prefetcher = rel_obj
- return prefetcher, rel_obj_descriptor, attr_found, is_fetched
-
-
-def prefetch_one_level(instances, prefetcher, attname):
- """
- Helper function for prefetch_related_objects
-
- Runs prefetches on all instances using the prefetcher object,
- assigning results to relevant caches in instance.
-
- The prefetched objects are returned, along with any additional
- prefetches that must be done due to prefetch_related lookups
- found from default managers.
- """
- # prefetcher must have a method get_prefetch_queryset() which takes a list
- # of instances, and returns a tuple:
-
- # (queryset of instances of self.model that are related to passed in instances,
- # callable that gets value to be matched for returned instances,
- # callable that gets value to be matched for passed in instances,
- # boolean that is True for singly related objects,
- # cache name to assign to).
-
- # The 'values to be matched' must be hashable as they will be used
- # in a dictionary.
-
- rel_qs, rel_obj_attr, instance_attr, single, cache_name =\
- prefetcher.get_prefetch_queryset(instances)
- # We have to handle the possibility that the default manager itself added
- # prefetch_related lookups to the QuerySet we just got back. We don't want to
- # trigger the prefetch_related functionality by evaluating the query.
- # Rather, we need to merge in the prefetch_related lookups.
- additional_prl = getattr(rel_qs, '_prefetch_related_lookups', [])
- if additional_prl:
- # Don't need to clone because the manager should have given us a fresh
- # instance, so we access an internal instead of using public interface
- # for performance reasons.
- rel_qs._prefetch_related_lookups = []
-
- all_related_objects = list(rel_qs)
-
- rel_obj_cache = {}
- for rel_obj in all_related_objects:
- rel_attr_val = rel_obj_attr(rel_obj)
- rel_obj_cache.setdefault(rel_attr_val, []).append(rel_obj)
-
- for obj in instances:
- instance_attr_val = instance_attr(obj)
- vals = rel_obj_cache.get(instance_attr_val, [])
- if single:
- # Need to assign to single cache on instance
- setattr(obj, cache_name, vals[0] if vals else None)
- else:
- # Multi, attribute represents a manager with an .all() method that
- # returns a QuerySet
- qs = getattr(obj, attname).all()
- qs._result_cache = vals
- # We don't want the individual qs doing prefetch_related now, since we
- # have merged this into the current work.
- qs._prefetch_done = True
- obj._prefetched_objects_cache[cache_name] = qs
- return all_related_objects, additional_prl
diff --git a/lib/python2.7/site-packages/django/db/models/query_utils.py b/lib/python2.7/site-packages/django/db/models/query_utils.py
deleted file mode 100644
index ee7a56a..0000000
--- a/lib/python2.7/site-packages/django/db/models/query_utils.py
+++ /dev/null
@@ -1,205 +0,0 @@
-"""
-Various data structures used in query construction.
-
-Factored out from django.db.models.query to avoid making the main module very
-large and/or so that they can be used by other modules without getting into
-circular import difficulties.
-"""
-from __future__ import unicode_literals
-
-from django.db.backends import util
-from django.utils import six
-from django.utils import tree
-
-
-class InvalidQuery(Exception):
- """
- The query passed to raw isn't a safe query to use with raw.
- """
- pass
-
-
-class QueryWrapper(object):
- """
- A type that indicates the contents are an SQL fragment and the associate
- parameters. Can be used to pass opaque data to a where-clause, for example.
- """
- def __init__(self, sql, params):
- self.data = sql, list(params)
-
- def as_sql(self, qn=None, connection=None):
- return self.data
-
-class Q(tree.Node):
- """
- Encapsulates filters as objects that can then be combined logically (using
- & and |).
- """
- # Connection types
- AND = 'AND'
- OR = 'OR'
- default = AND
-
- def __init__(self, *args, **kwargs):
- super(Q, self).__init__(children=list(args) + list(six.iteritems(kwargs)))
-
- def _combine(self, other, conn):
- if not isinstance(other, Q):
- raise TypeError(other)
- obj = type(self)()
- obj.connector = conn
- obj.add(self, conn)
- obj.add(other, conn)
- return obj
-
- def __or__(self, other):
- return self._combine(other, self.OR)
-
- def __and__(self, other):
- return self._combine(other, self.AND)
-
- def __invert__(self):
- obj = type(self)()
- obj.add(self, self.AND)
- obj.negate()
- return obj
-
- def clone(self):
- clone = self.__class__._new_instance(
- children=[], connector=self.connector, negated=self.negated)
- for child in self.children:
- if hasattr(child, 'clone'):
- clone.children.append(child.clone())
- else:
- clone.children.append(child)
- return clone
-
-class DeferredAttribute(object):
- """
- A wrapper for a deferred-loading field. When the value is read from this
- object the first time, the query is executed.
- """
- def __init__(self, field_name, model):
- self.field_name = field_name
-
- def __get__(self, instance, owner):
- """
- Retrieves and caches the value from the datastore on the first lookup.
- Returns the cached value.
- """
- from django.db.models.fields import FieldDoesNotExist
- non_deferred_model = instance._meta.proxy_for_model
- opts = non_deferred_model._meta
-
- assert instance is not None
- data = instance.__dict__
- if data.get(self.field_name, self) is self:
- # self.field_name is the attname of the field, but only() takes the
- # actual name, so we need to translate it here.
- try:
- f = opts.get_field_by_name(self.field_name)[0]
- except FieldDoesNotExist:
- f = [f for f in opts.fields
- if f.attname == self.field_name][0]
- name = f.name
- # Let's see if the field is part of the parent chain. If so we
- # might be able to reuse the already loaded value. Refs #18343.
- val = self._check_parent_chain(instance, name)
- if val is None:
- # We use only() instead of values() here because we want the
- # various data coersion methods (to_python(), etc.) to be
- # called here.
- val = getattr(
- non_deferred_model._base_manager.only(name).using(
- instance._state.db).get(pk=instance.pk),
- self.field_name
- )
- data[self.field_name] = val
- return data[self.field_name]
-
- def __set__(self, instance, value):
- """
- Deferred loading attributes can be set normally (which means there will
- never be a database lookup involved.
- """
- instance.__dict__[self.field_name] = value
-
- def _check_parent_chain(self, instance, name):
- """
- Check if the field value can be fetched from a parent field already
- loaded in the instance. This can be done if the to-be fetched
- field is a primary key field.
- """
- opts = instance._meta
- f = opts.get_field_by_name(name)[0]
- link_field = opts.get_ancestor_link(f.model)
- if f.primary_key and f != link_field:
- return getattr(instance, link_field.attname)
- return None
-
-
-def select_related_descend(field, restricted, requested, load_fields, reverse=False):
- """
- Returns True if this field should be used to descend deeper for
- select_related() purposes. Used by both the query construction code
- (sql.query.fill_related_selections()) and the model instance creation code
- (query.get_klass_info()).
-
- Arguments:
- * field - the field to be checked
- * restricted - a boolean field, indicating if the field list has been
- manually restricted using a requested clause)
- * requested - The select_related() dictionary.
- * load_fields - the set of fields to be loaded on this model
- * reverse - boolean, True if we are checking a reverse select related
- """
- if not field.rel:
- return False
- if field.rel.parent_link and not reverse:
- return False
- if restricted:
- if reverse and field.related_query_name() not in requested:
- return False
- if not reverse and field.name not in requested:
- return False
- if not restricted and field.null:
- return False
- if load_fields:
- if field.name not in load_fields:
- if restricted and field.name in requested:
- raise InvalidQuery("Field %s.%s cannot be both deferred"
- " and traversed using select_related"
- " at the same time." %
- (field.model._meta.object_name, field.name))
- return False
- return True
-
-# This function is needed because data descriptors must be defined on a class
-# object, not an instance, to have any effect.
-
-def deferred_class_factory(model, attrs):
- """
- Returns a class object that is a copy of "model" with the specified "attrs"
- being replaced with DeferredAttribute objects. The "pk_value" ties the
- deferred attributes to a particular instance of the model.
- """
- class Meta:
- proxy = True
- app_label = model._meta.app_label
-
- # The app_cache wants a unique name for each model, otherwise the new class
- # won't be created (we get an old one back). Therefore, we generate the
- # name using the passed in attrs. It's OK to reuse an existing class
- # object if the attrs are identical.
- name = "%s_Deferred_%s" % (model.__name__, '_'.join(sorted(list(attrs))))
- name = util.truncate_name(name, 80, 32)
-
- overrides = dict((attr, DeferredAttribute(attr, model)) for attr in attrs)
- overrides["Meta"] = Meta
- overrides["__module__"] = model.__module__
- overrides["_deferred"] = True
- return type(str(name), (model,), overrides)
-
-# The above function is also used to unpickle model instances with deferred
-# fields.
-deferred_class_factory.__safe_for_unpickling__ = True
diff --git a/lib/python2.7/site-packages/django/db/models/related.py b/lib/python2.7/site-packages/django/db/models/related.py
deleted file mode 100644
index 4b00dd3..0000000
--- a/lib/python2.7/site-packages/django/db/models/related.py
+++ /dev/null
@@ -1,67 +0,0 @@
-from collections import namedtuple
-
-from django.utils.encoding import smart_text
-from django.db.models.fields import BLANK_CHOICE_DASH
-
-# PathInfo is used when converting lookups (fk__somecol). The contents
-# describe the relation in Model terms (model Options and Fields for both
-# sides of the relation. The join_field is the field backing the relation.
-PathInfo = namedtuple('PathInfo',
- 'from_opts to_opts target_fields join_field '
- 'm2m direct')
-
-class RelatedObject(object):
- def __init__(self, parent_model, model, field):
- self.parent_model = parent_model
- self.model = model
- self.opts = model._meta
- self.field = field
- self.name = '%s:%s' % (self.opts.app_label, self.opts.model_name)
- self.var_name = self.opts.model_name
-
- def get_choices(self, include_blank=True, blank_choice=BLANK_CHOICE_DASH,
- limit_to_currently_related=False):
- """Returns choices with a default blank choices included, for use
- as SelectField choices for this field.
-
- Analogue of django.db.models.fields.Field.get_choices, provided
- initially for utilisation by RelatedFieldListFilter.
- """
- first_choice = blank_choice if include_blank else []
- queryset = self.model._default_manager.all()
- if limit_to_currently_related:
- queryset = queryset.complex_filter(
- {'%s__isnull' % self.parent_model._meta.model_name: False})
- lst = [(x._get_pk_val(), smart_text(x)) for x in queryset]
- return first_choice + lst
-
- def get_db_prep_lookup(self, lookup_type, value, connection, prepared=False):
- # Defer to the actual field definition for db prep
- return self.field.get_db_prep_lookup(lookup_type, value,
- connection=connection, prepared=prepared)
-
- def editable_fields(self):
- "Get the fields in this class that should be edited inline."
- return [f for f in self.opts.fields + self.opts.many_to_many if f.editable and f != self.field]
-
- def __repr__(self):
- return "<RelatedObject: %s related to %s>" % (self.name, self.field.name)
-
- def get_accessor_name(self):
- # This method encapsulates the logic that decides what name to give an
- # accessor descriptor that retrieves related many-to-one or
- # many-to-many objects. It uses the lower-cased object_name + "_set",
- # but this can be overridden with the "related_name" option.
- if self.field.rel.multiple:
- # If this is a symmetrical m2m relation on self, there is no reverse accessor.
- if getattr(self.field.rel, 'symmetrical', False) and self.model == self.parent_model:
- return None
- return self.field.rel.related_name or (self.opts.model_name + '_set')
- else:
- return self.field.rel.related_name or (self.opts.model_name)
-
- def get_cache_name(self):
- return "_%s_cache" % self.get_accessor_name()
-
- def get_path_info(self):
- return self.field.get_reverse_path_info()
diff --git a/lib/python2.7/site-packages/django/db/models/signals.py b/lib/python2.7/site-packages/django/db/models/signals.py
deleted file mode 100644
index 0782442..0000000
--- a/lib/python2.7/site-packages/django/db/models/signals.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from django.dispatch import Signal
-
-class_prepared = Signal(providing_args=["class"])
-
-pre_init = Signal(providing_args=["instance", "args", "kwargs"], use_caching=True)
-post_init = Signal(providing_args=["instance"], use_caching=True)
-
-pre_save = Signal(providing_args=["instance", "raw", "using", "update_fields"],
- use_caching=True)
-post_save = Signal(providing_args=["instance", "raw", "created", "using", "update_fields"], use_caching=True)
-
-pre_delete = Signal(providing_args=["instance", "using"], use_caching=True)
-post_delete = Signal(providing_args=["instance", "using"], use_caching=True)
-
-pre_syncdb = Signal(providing_args=["app", "create_models", "verbosity", "interactive", "db"])
-post_syncdb = Signal(providing_args=["class", "app", "created_models", "verbosity", "interactive", "db"])
-
-m2m_changed = Signal(providing_args=["action", "instance", "reverse", "model", "pk_set", "using"], use_caching=True)
diff --git a/lib/python2.7/site-packages/django/db/models/sql/__init__.py b/lib/python2.7/site-packages/django/db/models/sql/__init__.py
deleted file mode 100644
index df5b74e..0000000
--- a/lib/python2.7/site-packages/django/db/models/sql/__init__.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from __future__ import absolute_import
-
-from django.db.models.sql.datastructures import EmptyResultSet
-from django.db.models.sql.subqueries import *
-from django.db.models.sql.query import *
-from django.db.models.sql.where import AND, OR
-
-
-__all__ = ['Query', 'AND', 'OR', 'EmptyResultSet']
diff --git a/lib/python2.7/site-packages/django/db/models/sql/aggregates.py b/lib/python2.7/site-packages/django/db/models/sql/aggregates.py
deleted file mode 100644
index 2bd2b2f..0000000
--- a/lib/python2.7/site-packages/django/db/models/sql/aggregates.py
+++ /dev/null
@@ -1,125 +0,0 @@
-"""
-Classes to represent the default SQL aggregate functions
-"""
-import copy
-
-from django.db.models.fields import IntegerField, FloatField
-
-# Fake fields used to identify aggregate types in data-conversion operations.
-ordinal_aggregate_field = IntegerField()
-computed_aggregate_field = FloatField()
-
-class Aggregate(object):
- """
- Default SQL Aggregate.
- """
- is_ordinal = False
- is_computed = False
- sql_template = '%(function)s(%(field)s)'
-
- def __init__(self, col, source=None, is_summary=False, **extra):
- """Instantiate an SQL aggregate
-
- * col is a column reference describing the subject field
- of the aggregate. It can be an alias, or a tuple describing
- a table and column name.
- * source is the underlying field or aggregate definition for
- the column reference. If the aggregate is not an ordinal or
- computed type, this reference is used to determine the coerced
- output type of the aggregate.
- * extra is a dictionary of additional data to provide for the
- aggregate definition
-
- Also utilizes the class variables:
- * sql_function, the name of the SQL function that implements the
- aggregate.
- * sql_template, a template string that is used to render the
- aggregate into SQL.
- * is_ordinal, a boolean indicating if the output of this aggregate
- is an integer (e.g., a count)
- * is_computed, a boolean indicating if this output of this aggregate
- is a computed float (e.g., an average), regardless of the input
- type.
-
- """
- self.col = col
- self.source = source
- self.is_summary = is_summary
- self.extra = extra
-
- # Follow the chain of aggregate sources back until you find an
- # actual field, or an aggregate that forces a particular output
- # type. This type of this field will be used to coerce values
- # retrieved from the database.
- tmp = self
-
- while tmp and isinstance(tmp, Aggregate):
- if getattr(tmp, 'is_ordinal', False):
- tmp = ordinal_aggregate_field
- elif getattr(tmp, 'is_computed', False):
- tmp = computed_aggregate_field
- else:
- tmp = tmp.source
-
- self.field = tmp
-
- def relabeled_clone(self, change_map):
- clone = copy.copy(self)
- if isinstance(self.col, (list, tuple)):
- clone.col = (change_map.get(self.col[0], self.col[0]), self.col[1])
- return clone
-
- def as_sql(self, qn, connection):
- "Return the aggregate, rendered as SQL with parameters."
- params = []
-
- if hasattr(self.col, 'as_sql'):
- field_name, params = self.col.as_sql(qn, connection)
- elif isinstance(self.col, (list, tuple)):
- field_name = '.'.join([qn(c) for c in self.col])
- else:
- field_name = self.col
-
- substitutions = {
- 'function': self.sql_function,
- 'field': field_name
- }
- substitutions.update(self.extra)
-
- return self.sql_template % substitutions, params
-
-
-class Avg(Aggregate):
- is_computed = True
- sql_function = 'AVG'
-
-class Count(Aggregate):
- is_ordinal = True
- sql_function = 'COUNT'
- sql_template = '%(function)s(%(distinct)s%(field)s)'
-
- def __init__(self, col, distinct=False, **extra):
- super(Count, self).__init__(col, distinct='DISTINCT ' if distinct else '', **extra)
-
-class Max(Aggregate):
- sql_function = 'MAX'
-
-class Min(Aggregate):
- sql_function = 'MIN'
-
-class StdDev(Aggregate):
- is_computed = True
-
- def __init__(self, col, sample=False, **extra):
- super(StdDev, self).__init__(col, **extra)
- self.sql_function = 'STDDEV_SAMP' if sample else 'STDDEV_POP'
-
-class Sum(Aggregate):
- sql_function = 'SUM'
-
-class Variance(Aggregate):
- is_computed = True
-
- def __init__(self, col, sample=False, **extra):
- super(Variance, self).__init__(col, **extra)
- self.sql_function = 'VAR_SAMP' if sample else 'VAR_POP'
diff --git a/lib/python2.7/site-packages/django/db/models/sql/compiler.py b/lib/python2.7/site-packages/django/db/models/sql/compiler.py
deleted file mode 100644
index ea7f9f4..0000000
--- a/lib/python2.7/site-packages/django/db/models/sql/compiler.py
+++ /dev/null
@@ -1,1128 +0,0 @@
-import datetime
-
-from django.conf import settings
-from django.core.exceptions import FieldError
-from django.db.backends.util import truncate_name
-from django.db.models.constants import LOOKUP_SEP
-from django.db.models.query_utils import select_related_descend, QueryWrapper
-from django.db.models.sql.constants import (SINGLE, MULTI, ORDER_DIR,
- GET_ITERATOR_CHUNK_SIZE, SelectInfo)
-from django.db.models.sql.datastructures import EmptyResultSet
-from django.db.models.sql.expressions import SQLEvaluator
-from django.db.models.sql.query import get_order_dir, Query
-from django.db.transaction import TransactionManagementError
-from django.db.utils import DatabaseError
-from django.utils import six
-from django.utils.six.moves import zip
-from django.utils import timezone
-
-
-class SQLCompiler(object):
- def __init__(self, query, connection, using):
- self.query = query
- self.connection = connection
- self.using = using
- self.quote_cache = {}
- # When ordering a queryset with distinct on a column not part of the
- # select set, the ordering column needs to be added to the select
- # clause. This information is needed both in SQL construction and
- # masking away the ordering selects from the returned row.
- self.ordering_aliases = []
- self.ordering_params = []
-
- def pre_sql_setup(self):
- """
- Does any necessary class setup immediately prior to producing SQL. This
- is for things that can't necessarily be done in __init__ because we
- might not have all the pieces in place at that time.
- # TODO: after the query has been executed, the altered state should be
- # cleaned. We are not using a clone() of the query here.
- """
- if not self.query.tables:
- self.query.join((None, self.query.get_meta().db_table, None))
- if (not self.query.select and self.query.default_cols and not
- self.query.included_inherited_models):
- self.query.setup_inherited_models()
- if self.query.select_related and not self.query.related_select_cols:
- self.fill_related_selections()
-
- def quote_name_unless_alias(self, name):
- """
- A wrapper around connection.ops.quote_name that doesn't quote aliases
- for table names. This avoids problems with some SQL dialects that treat
- quoted strings specially (e.g. PostgreSQL).
- """
- if name in self.quote_cache:
- return self.quote_cache[name]
- if ((name in self.query.alias_map and name not in self.query.table_map) or
- name in self.query.extra_select):
- self.quote_cache[name] = name
- return name
- r = self.connection.ops.quote_name(name)
- self.quote_cache[name] = r
- return r
-
- def as_sql(self, with_limits=True, with_col_aliases=False):
- """
- Creates the SQL for this query. Returns the SQL string and list of
- parameters.
-
- If 'with_limits' is False, any limit/offset information is not included
- in the query.
- """
- if with_limits and self.query.low_mark == self.query.high_mark:
- return '', ()
-
- self.pre_sql_setup()
- # After executing the query, we must get rid of any joins the query
- # setup created. So, take note of alias counts before the query ran.
- # However we do not want to get rid of stuff done in pre_sql_setup(),
- # as the pre_sql_setup will modify query state in a way that forbids
- # another run of it.
- self.refcounts_before = self.query.alias_refcount.copy()
- out_cols, s_params = self.get_columns(with_col_aliases)
- ordering, o_params, ordering_group_by = self.get_ordering()
-
- distinct_fields = self.get_distinct()
-
- # This must come after 'select', 'ordering' and 'distinct' -- see
- # docstring of get_from_clause() for details.
- from_, f_params = self.get_from_clause()
-
- qn = self.quote_name_unless_alias
-
- where, w_params = self.query.where.as_sql(qn=qn, connection=self.connection)
- having, h_params = self.query.having.as_sql(qn=qn, connection=self.connection)
- having_group_by = self.query.having.get_cols()
- params = []
- for val in six.itervalues(self.query.extra_select):
- params.extend(val[1])
-
- result = ['SELECT']
-
- if self.query.distinct:
- result.append(self.connection.ops.distinct_sql(distinct_fields))
- params.extend(o_params)
- result.append(', '.join(out_cols + self.ordering_aliases))
- params.extend(s_params)
- params.extend(self.ordering_params)
-
- result.append('FROM')
- result.extend(from_)
- params.extend(f_params)
-
- if where:
- result.append('WHERE %s' % where)
- params.extend(w_params)
-
- grouping, gb_params = self.get_grouping(having_group_by, ordering_group_by)
- if grouping:
- if distinct_fields:
- raise NotImplementedError(
- "annotate() + distinct(fields) not implemented.")
- if not ordering:
- ordering = self.connection.ops.force_no_ordering()
- result.append('GROUP BY %s' % ', '.join(grouping))
- params.extend(gb_params)
-
- if having:
- result.append('HAVING %s' % having)
- params.extend(h_params)
-
- if ordering:
- result.append('ORDER BY %s' % ', '.join(ordering))
-
- if with_limits:
- if self.query.high_mark is not None:
- result.append('LIMIT %d' % (self.query.high_mark - self.query.low_mark))
- if self.query.low_mark:
- if self.query.high_mark is None:
- val = self.connection.ops.no_limit_value()
- if val:
- result.append('LIMIT %d' % val)
- result.append('OFFSET %d' % self.query.low_mark)
-
- if self.query.select_for_update and self.connection.features.has_select_for_update:
- if self.connection.get_autocommit():
- raise TransactionManagementError("select_for_update cannot be used outside of a transaction.")
-
- # If we've been asked for a NOWAIT query but the backend does not support it,
- # raise a DatabaseError otherwise we could get an unexpected deadlock.
- nowait = self.query.select_for_update_nowait
- if nowait and not self.connection.features.has_select_for_update_nowait:
- raise DatabaseError('NOWAIT is not supported on this database backend.')
- result.append(self.connection.ops.for_update_sql(nowait=nowait))
-
- # Finally do cleanup - get rid of the joins we created above.
- self.query.reset_refcounts(self.refcounts_before)
-
- return ' '.join(result), tuple(params)
-
- def as_nested_sql(self):
- """
- Perform the same functionality as the as_sql() method, returning an
- SQL string and parameters. However, the alias prefixes are bumped
- beforehand (in a copy -- the current query isn't changed), and any
- ordering is removed if the query is unsliced.
-
- Used when nesting this query inside another.
- """
- obj = self.query.clone()
- if obj.low_mark == 0 and obj.high_mark is None:
- # If there is no slicing in use, then we can safely drop all ordering
- obj.clear_ordering(True)
- obj.bump_prefix()
- return obj.get_compiler(connection=self.connection).as_sql()
-
- def get_columns(self, with_aliases=False):
- """
- Returns the list of columns to use in the select statement, as well as
- a list any extra parameters that need to be included. If no columns
- have been specified, returns all columns relating to fields in the
- model.
-
- If 'with_aliases' is true, any column names that are duplicated
- (without the table names) are given unique aliases. This is needed in
- some cases to avoid ambiguity with nested queries.
- """
- qn = self.quote_name_unless_alias
- qn2 = self.connection.ops.quote_name
- result = ['(%s) AS %s' % (col[0], qn2(alias)) for alias, col in six.iteritems(self.query.extra_select)]
- params = []
- aliases = set(self.query.extra_select.keys())
- if with_aliases:
- col_aliases = aliases.copy()
- else:
- col_aliases = set()
- if self.query.select:
- only_load = self.deferred_to_columns()
- for col, _ in self.query.select:
- if isinstance(col, (list, tuple)):
- alias, column = col
- table = self.query.alias_map[alias].table_name
- if table in only_load and column not in only_load[table]:
- continue
- r = '%s.%s' % (qn(alias), qn(column))
- if with_aliases:
- if col[1] in col_aliases:
- c_alias = 'Col%d' % len(col_aliases)
- result.append('%s AS %s' % (r, c_alias))
- aliases.add(c_alias)
- col_aliases.add(c_alias)
- else:
- result.append('%s AS %s' % (r, qn2(col[1])))
- aliases.add(r)
- col_aliases.add(col[1])
- else:
- result.append(r)
- aliases.add(r)
- col_aliases.add(col[1])
- else:
- col_sql, col_params = col.as_sql(qn, self.connection)
- result.append(col_sql)
- params.extend(col_params)
-
- if hasattr(col, 'alias'):
- aliases.add(col.alias)
- col_aliases.add(col.alias)
-
- elif self.query.default_cols:
- cols, new_aliases = self.get_default_columns(with_aliases,
- col_aliases)
- result.extend(cols)
- aliases.update(new_aliases)
-
- max_name_length = self.connection.ops.max_name_length()
- for alias, aggregate in self.query.aggregate_select.items():
- agg_sql, agg_params = aggregate.as_sql(qn, self.connection)
- if alias is None:
- result.append(agg_sql)
- else:
- result.append('%s AS %s' % (agg_sql, qn(truncate_name(alias, max_name_length))))
- params.extend(agg_params)
-
- for (table, col), _ in self.query.related_select_cols:
- r = '%s.%s' % (qn(table), qn(col))
- if with_aliases and col in col_aliases:
- c_alias = 'Col%d' % len(col_aliases)
- result.append('%s AS %s' % (r, c_alias))
- aliases.add(c_alias)
- col_aliases.add(c_alias)
- else:
- result.append(r)
- aliases.add(r)
- col_aliases.add(col)
-
- self._select_aliases = aliases
- return result, params
-
- def get_default_columns(self, with_aliases=False, col_aliases=None,
- start_alias=None, opts=None, as_pairs=False, from_parent=None):
- """
- Computes the default columns for selecting every field in the base
- model. Will sometimes be called to pull in related models (e.g. via
- select_related), in which case "opts" and "start_alias" will be given
- to provide a starting point for the traversal.
-
- Returns a list of strings, quoted appropriately for use in SQL
- directly, as well as a set of aliases used in the select statement (if
- 'as_pairs' is True, returns a list of (alias, col_name) pairs instead
- of strings as the first component and None as the second component).
- """
- result = []
- if opts is None:
- opts = self.query.get_meta()
- qn = self.quote_name_unless_alias
- qn2 = self.connection.ops.quote_name
- aliases = set()
- only_load = self.deferred_to_columns()
- if not start_alias:
- start_alias = self.query.get_initial_alias()
- # The 'seen_models' is used to optimize checking the needed parent
- # alias for a given field. This also includes None -> start_alias to
- # be used by local fields.
- seen_models = {None: start_alias}
-
- for field, model in opts.get_concrete_fields_with_model():
- if from_parent and model is not None and issubclass(from_parent, model):
- # Avoid loading data for already loaded parents.
- continue
- alias = self.query.join_parent_model(opts, model, start_alias,
- seen_models)
- table = self.query.alias_map[alias].table_name
- if table in only_load and field.column not in only_load[table]:
- continue
- if as_pairs:
- result.append((alias, field))
- aliases.add(alias)
- continue
- if with_aliases and field.column in col_aliases:
- c_alias = 'Col%d' % len(col_aliases)
- result.append('%s.%s AS %s' % (qn(alias),
- qn2(field.column), c_alias))
- col_aliases.add(c_alias)
- aliases.add(c_alias)
- else:
- r = '%s.%s' % (qn(alias), qn2(field.column))
- result.append(r)
- aliases.add(r)
- if with_aliases:
- col_aliases.add(field.column)
- return result, aliases
-
- def get_distinct(self):
- """
- Returns a quoted list of fields to use in DISTINCT ON part of the query.
-
- Note that this method can alter the tables in the query, and thus it
- must be called before get_from_clause().
- """
- qn = self.quote_name_unless_alias
- qn2 = self.connection.ops.quote_name
- result = []
- opts = self.query.get_meta()
-
- for name in self.query.distinct_fields:
- parts = name.split(LOOKUP_SEP)
- field, cols, alias, _, _ = self._setup_joins(parts, opts, None)
- cols, alias = self._final_join_removal(cols, alias)
- for col in cols:
- result.append("%s.%s" % (qn(alias), qn2(col)))
- return result
-
- def get_ordering(self):
- """
- Returns a tuple containing a list representing the SQL elements in the
- "order by" clause, and the list of SQL elements that need to be added
- to the GROUP BY clause as a result of the ordering.
-
- Also sets the ordering_aliases attribute on this instance to a list of
- extra aliases needed in the select.
-
- Determining the ordering SQL can change the tables we need to include,
- so this should be run *before* get_from_clause().
- """
- if self.query.extra_order_by:
- ordering = self.query.extra_order_by
- elif not self.query.default_ordering:
- ordering = self.query.order_by
- else:
- ordering = (self.query.order_by
- or self.query.get_meta().ordering
- or [])
- qn = self.quote_name_unless_alias
- qn2 = self.connection.ops.quote_name
- distinct = self.query.distinct
- select_aliases = self._select_aliases
- result = []
- group_by = []
- ordering_aliases = []
- if self.query.standard_ordering:
- asc, desc = ORDER_DIR['ASC']
- else:
- asc, desc = ORDER_DIR['DESC']
-
- # It's possible, due to model inheritance, that normal usage might try
- # to include the same field more than once in the ordering. We track
- # the table/column pairs we use and discard any after the first use.
- processed_pairs = set()
-
- params = []
- ordering_params = []
- for pos, field in enumerate(ordering):
- if field == '?':
- result.append(self.connection.ops.random_function_sql())
- continue
- if isinstance(field, int):
- if field < 0:
- order = desc
- field = -field
- else:
- order = asc
- result.append('%s %s' % (field, order))
- group_by.append((str(field), []))
- continue
- col, order = get_order_dir(field, asc)
- if col in self.query.aggregate_select:
- result.append('%s %s' % (qn(col), order))
- continue
- if '.' in field:
- # This came in through an extra(order_by=...) addition. Pass it
- # on verbatim.
- table, col = col.split('.', 1)
- if (table, col) not in processed_pairs:
- elt = '%s.%s' % (qn(table), col)
- processed_pairs.add((table, col))
- if not distinct or elt in select_aliases:
- result.append('%s %s' % (elt, order))
- group_by.append((elt, []))
- elif get_order_dir(field)[0] not in self.query.extra:
- # 'col' is of the form 'field' or 'field1__field2' or
- # '-field1__field2__field', etc.
- for table, cols, order in self.find_ordering_name(field,
- self.query.get_meta(), default_order=asc):
- for col in cols:
- if (table, col) not in processed_pairs:
- elt = '%s.%s' % (qn(table), qn2(col))
- processed_pairs.add((table, col))
- if distinct and elt not in select_aliases:
- ordering_aliases.append(elt)
- result.append('%s %s' % (elt, order))
- group_by.append((elt, []))
- else:
- elt = qn2(col)
- if col not in self.query.extra_select:
- sql = "(%s) AS %s" % (self.query.extra[col][0], elt)
- ordering_aliases.append(sql)
- ordering_params.extend(self.query.extra[col][1])
- else:
- if distinct and col not in select_aliases:
- ordering_aliases.append(elt)
- ordering_params.extend(params)
- result.append('%s %s' % (elt, order))
- group_by.append(self.query.extra[col])
- self.ordering_aliases = ordering_aliases
- self.ordering_params = ordering_params
- return result, params, group_by
-
- def find_ordering_name(self, name, opts, alias=None, default_order='ASC',
- already_seen=None):
- """
- Returns the table alias (the name might be ambiguous, the alias will
- not be) and column name for ordering by the given 'name' parameter.
- The 'name' is of the form 'field1__field2__...__fieldN'.
- """
- name, order = get_order_dir(name, default_order)
- pieces = name.split(LOOKUP_SEP)
- field, cols, alias, joins, opts = self._setup_joins(pieces, opts, alias)
-
- # If we get to this point and the field is a relation to another model,
- # append the default ordering for that model.
- if field.rel and len(joins) > 1 and opts.ordering:
- # Firstly, avoid infinite loops.
- if not already_seen:
- already_seen = set()
- join_tuple = tuple([self.query.alias_map[j].table_name for j in joins])
- if join_tuple in already_seen:
- raise FieldError('Infinite loop caused by ordering.')
- already_seen.add(join_tuple)
-
- results = []
- for item in opts.ordering:
- results.extend(self.find_ordering_name(item, opts, alias,
- order, already_seen))
- return results
- cols, alias = self._final_join_removal(cols, alias)
- return [(alias, cols, order)]
-
- def _setup_joins(self, pieces, opts, alias):
- """
- A helper method for get_ordering and get_distinct. This method will
- call query.setup_joins, handle refcounts and then promote the joins.
-
- Note that get_ordering and get_distinct must produce same target
- columns on same input, as the prefixes of get_ordering and get_distinct
- must match. Executing SQL where this is not true is an error.
- """
- if not alias:
- alias = self.query.get_initial_alias()
- field, targets, opts, joins, _ = self.query.setup_joins(
- pieces, opts, alias)
- # We will later on need to promote those joins that were added to the
- # query afresh above.
- joins_to_promote = [j for j in joins if self.query.alias_refcount[j] < 2]
- alias = joins[-1]
- cols = [target.column for target in targets]
- if not field.rel:
- # To avoid inadvertent trimming of a necessary alias, use the
- # refcount to show that we are referencing a non-relation field on
- # the model.
- self.query.ref_alias(alias)
-
- # Must use left outer joins for nullable fields and their relations.
- # Ordering or distinct must not affect the returned set, and INNER
- # JOINS for nullable fields could do this.
- self.query.promote_joins(joins_to_promote)
- return field, cols, alias, joins, opts
-
- def _final_join_removal(self, cols, alias):
- """
- A helper method for get_distinct and get_ordering. This method will
- trim extra not-needed joins from the tail of the join chain.
-
- This is very similar to what is done in trim_joins, but we will
- trim LEFT JOINS here. It would be a good idea to consolidate this
- method and query.trim_joins().
- """
- if alias:
- while 1:
- join = self.query.alias_map[alias]
- lhs_cols, rhs_cols = zip(*[(lhs_col, rhs_col) for lhs_col, rhs_col in join.join_cols])
- if set(cols) != set(rhs_cols):
- break
-
- cols = [lhs_cols[rhs_cols.index(col)] for col in cols]
- self.query.unref_alias(alias)
- alias = join.lhs_alias
- return cols, alias
-
- def get_from_clause(self):
- """
- Returns a list of strings that are joined together to go after the
- "FROM" part of the query, as well as a list any extra parameters that
- need to be included. Sub-classes, can override this to create a
- from-clause via a "select".
-
- This should only be called after any SQL construction methods that
- might change the tables we need. This means the select columns,
- ordering and distinct must be done first.
- """
- result = []
- qn = self.quote_name_unless_alias
- qn2 = self.connection.ops.quote_name
- first = True
- from_params = []
- for alias in self.query.tables:
- if not self.query.alias_refcount[alias]:
- continue
- try:
- name, alias, join_type, lhs, join_cols, _, join_field = self.query.alias_map[alias]
- except KeyError:
- # Extra tables can end up in self.tables, but not in the
- # alias_map if they aren't in a join. That's OK. We skip them.
- continue
- alias_str = '' if alias == name else (' %s' % alias)
- if join_type and not first:
- extra_cond = join_field.get_extra_restriction(
- self.query.where_class, alias, lhs)
- if extra_cond:
- extra_sql, extra_params = extra_cond.as_sql(
- qn, self.connection)
- extra_sql = 'AND (%s)' % extra_sql
- from_params.extend(extra_params)
- else:
- extra_sql = ""
- result.append('%s %s%s ON ('
- % (join_type, qn(name), alias_str))
- for index, (lhs_col, rhs_col) in enumerate(join_cols):
- if index != 0:
- result.append(' AND ')
- result.append('%s.%s = %s.%s' %
- (qn(lhs), qn2(lhs_col), qn(alias), qn2(rhs_col)))
- result.append('%s)' % extra_sql)
- else:
- connector = '' if first else ', '
- result.append('%s%s%s' % (connector, qn(name), alias_str))
- first = False
- for t in self.query.extra_tables:
- alias, unused = self.query.table_alias(t)
- # Only add the alias if it's not already present (the table_alias()
- # calls increments the refcount, so an alias refcount of one means
- # this is the only reference.
- if alias not in self.query.alias_map or self.query.alias_refcount[alias] == 1:
- connector = '' if first else ', '
- result.append('%s%s' % (connector, qn(alias)))
- first = False
- return result, from_params
-
- def get_grouping(self, having_group_by, ordering_group_by):
- """
- Returns a tuple representing the SQL elements in the "group by" clause.
- """
- qn = self.quote_name_unless_alias
- result, params = [], []
- if self.query.group_by is not None:
- select_cols = self.query.select + self.query.related_select_cols
- # Just the column, not the fields.
- select_cols = [s[0] for s in select_cols]
- if (len(self.query.get_meta().concrete_fields) == len(self.query.select)
- and self.connection.features.allows_group_by_pk):
- self.query.group_by = [
- (self.query.get_meta().db_table, self.query.get_meta().pk.column)
- ]
- select_cols = []
- seen = set()
- cols = self.query.group_by + having_group_by + select_cols
- for col in cols:
- col_params = ()
- if isinstance(col, (list, tuple)):
- sql = '%s.%s' % (qn(col[0]), qn(col[1]))
- elif hasattr(col, 'as_sql'):
- sql, col_params = col.as_sql(qn, self.connection)
- else:
- sql = '(%s)' % str(col)
- if sql not in seen:
- result.append(sql)
- params.extend(col_params)
- seen.add(sql)
-
- # Still, we need to add all stuff in ordering (except if the backend can
- # group by just by PK).
- if ordering_group_by and not self.connection.features.allows_group_by_pk:
- for order, order_params in ordering_group_by:
- # Even if we have seen the same SQL string, it might have
- # different params, so, we add same SQL in "has params" case.
- if order not in seen or order_params:
- result.append(order)
- params.extend(order_params)
- seen.add(order)
-
- # Unconditionally add the extra_select items.
- for extra_select, extra_params in self.query.extra_select.values():
- sql = '(%s)' % str(extra_select)
- result.append(sql)
- params.extend(extra_params)
-
- return result, params
-
- def fill_related_selections(self, opts=None, root_alias=None, cur_depth=1,
- requested=None, restricted=None, nullable=None):
- """
- Fill in the information needed for a select_related query. The current
- depth is measured as the number of connections away from the root model
- (for example, cur_depth=1 means we are looking at models with direct
- connections to the root model).
- """
- if not restricted and self.query.max_depth and cur_depth > self.query.max_depth:
- # We've recursed far enough; bail out.
- return
-
- if not opts:
- opts = self.query.get_meta()
- root_alias = self.query.get_initial_alias()
- self.query.related_select_cols = []
- only_load = self.query.get_loaded_field_names()
-
- # Setup for the case when only particular related fields should be
- # included in the related selection.
- if requested is None:
- if isinstance(self.query.select_related, dict):
- requested = self.query.select_related
- restricted = True
- else:
- restricted = False
-
- for f, model in opts.get_fields_with_model():
- # The get_fields_with_model() returns None for fields that live
- # in the field's local model. So, for those fields we want to use
- # the f.model - that is the field's local model.
- field_model = model or f.model
- if not select_related_descend(f, restricted, requested,
- only_load.get(field_model)):
- continue
- promote = nullable or f.null
- _, _, _, joins, _ = self.query.setup_joins(
- [f.name], opts, root_alias, outer_if_first=promote)
- alias = joins[-1]
- columns, _ = self.get_default_columns(start_alias=alias,
- opts=f.rel.to._meta, as_pairs=True)
- self.query.related_select_cols.extend(
- SelectInfo((col[0], col[1].column), col[1]) for col in columns)
- if restricted:
- next = requested.get(f.name, {})
- else:
- next = False
- new_nullable = f.null or promote
- self.fill_related_selections(f.rel.to._meta, alias, cur_depth + 1,
- next, restricted, new_nullable)
-
- if restricted:
- related_fields = [
- (o.field, o.model)
- for o in opts.get_all_related_objects()
- if o.field.unique
- ]
- for f, model in related_fields:
- if not select_related_descend(f, restricted, requested,
- only_load.get(model), reverse=True):
- continue
-
- _, _, _, joins, _ = self.query.setup_joins(
- [f.related_query_name()], opts, root_alias, outer_if_first=True)
- alias = joins[-1]
- from_parent = (opts.model if issubclass(model, opts.model)
- else None)
- columns, _ = self.get_default_columns(start_alias=alias,
- opts=model._meta, as_pairs=True, from_parent=from_parent)
- self.query.related_select_cols.extend(
- SelectInfo((col[0], col[1].column), col[1]) for col in columns)
- next = requested.get(f.related_query_name(), {})
- # Use True here because we are looking at the _reverse_ side of
- # the relation, which is always nullable.
- new_nullable = True
- self.fill_related_selections(model._meta, alias, cur_depth + 1,
- next, restricted, new_nullable)
-
- def deferred_to_columns(self):
- """
- Converts the self.deferred_loading data structure to mapping of table
- names to sets of column names which are to be loaded. Returns the
- dictionary.
- """
- columns = {}
- self.query.deferred_to_data(columns, self.query.deferred_to_columns_cb)
- return columns
-
- def results_iter(self):
- """
- Returns an iterator over the results from executing this query.
- """
- resolve_columns = hasattr(self, 'resolve_columns')
- fields = None
- has_aggregate_select = bool(self.query.aggregate_select)
- for rows in self.execute_sql(MULTI):
- for row in rows:
- if has_aggregate_select:
- loaded_fields = self.query.get_loaded_field_names().get(self.query.model, set()) or self.query.select
- aggregate_start = len(self.query.extra_select) + len(loaded_fields)
- aggregate_end = aggregate_start + len(self.query.aggregate_select)
- if resolve_columns:
- if fields is None:
- # We only set this up here because
- # related_select_cols isn't populated until
- # execute_sql() has been called.
-
- # We also include types of fields of related models that
- # will be included via select_related() for the benefit
- # of MySQL/MySQLdb when boolean fields are involved
- # (#15040).
-
- # This code duplicates the logic for the order of fields
- # found in get_columns(). It would be nice to clean this up.
- if self.query.select:
- fields = [f.field for f in self.query.select]
- elif self.query.default_cols:
- fields = self.query.get_meta().concrete_fields
- else:
- fields = []
- fields = fields + [f.field for f in self.query.related_select_cols]
-
- # If the field was deferred, exclude it from being passed
- # into `resolve_columns` because it wasn't selected.
- only_load = self.deferred_to_columns()
- if only_load:
- fields = [f for f in fields if f.model._meta.db_table not in only_load or
- f.column in only_load[f.model._meta.db_table]]
- if has_aggregate_select:
- # pad None in to fields for aggregates
- fields = fields[:aggregate_start] + [
- None for x in range(0, aggregate_end - aggregate_start)
- ] + fields[aggregate_start:]
- row = self.resolve_columns(row, fields)
-
- if has_aggregate_select:
- row = tuple(row[:aggregate_start]) + tuple([
- self.query.resolve_aggregate(value, aggregate, self.connection)
- for (alias, aggregate), value
- in zip(self.query.aggregate_select.items(), row[aggregate_start:aggregate_end])
- ]) + tuple(row[aggregate_end:])
-
- yield row
-
- def execute_sql(self, result_type=MULTI):
- """
- Run the query against the database and returns the result(s). The
- return value is a single data item if result_type is SINGLE, or an
- iterator over the results if the result_type is MULTI.
-
- result_type is either MULTI (use fetchmany() to retrieve all rows),
- SINGLE (only retrieve a single row), or None. In this last case, the
- cursor is returned if any query is executed, since it's used by
- subclasses such as InsertQuery). It's possible, however, that no query
- is needed, as the filters describe an empty set. In that case, None is
- returned, to avoid any unnecessary database interaction.
- """
- try:
- sql, params = self.as_sql()
- if not sql:
- raise EmptyResultSet
- except EmptyResultSet:
- if result_type == MULTI:
- return iter([])
- else:
- return
-
- cursor = self.connection.cursor()
- cursor.execute(sql, params)
-
- if not result_type:
- return cursor
- if result_type == SINGLE:
- if self.ordering_aliases:
- return cursor.fetchone()[:-len(self.ordering_aliases)]
- return cursor.fetchone()
-
- # The MULTI case.
- if self.ordering_aliases:
- result = order_modified_iter(cursor, len(self.ordering_aliases),
- self.connection.features.empty_fetchmany_value)
- else:
- result = iter((lambda: cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE)),
- self.connection.features.empty_fetchmany_value)
- if not self.connection.features.can_use_chunked_reads:
- # If we are using non-chunked reads, we return the same data
- # structure as normally, but ensure it is all read into memory
- # before going any further.
- return list(result)
- return result
-
- def as_subquery_condition(self, alias, columns, qn):
- qn2 = self.connection.ops.quote_name
- if len(columns) == 1:
- sql, params = self.as_sql()
- return '%s.%s IN (%s)' % (qn(alias), qn2(columns[0]), sql), params
-
- for index, select_col in enumerate(self.query.select):
- lhs = '%s.%s' % (qn(select_col.col[0]), qn2(select_col.col[1]))
- rhs = '%s.%s' % (qn(alias), qn2(columns[index]))
- self.query.where.add(
- QueryWrapper('%s = %s' % (lhs, rhs), []), 'AND')
-
- sql, params = self.as_sql()
- return 'EXISTS (%s)' % sql, params
-
-
-class SQLInsertCompiler(SQLCompiler):
-
- def __init__(self, *args, **kwargs):
- self.return_id = False
- super(SQLInsertCompiler, self).__init__(*args, **kwargs)
-
- def placeholder(self, field, val):
- if field is None:
- # A field value of None means the value is raw.
- return val
- elif hasattr(field, 'get_placeholder'):
- # Some fields (e.g. geo fields) need special munging before
- # they can be inserted.
- return field.get_placeholder(val, self.connection)
- else:
- # Return the common case for the placeholder
- return '%s'
-
- def as_sql(self):
- # We don't need quote_name_unless_alias() here, since these are all
- # going to be column names (so we can avoid the extra overhead).
- qn = self.connection.ops.quote_name
- opts = self.query.get_meta()
- result = ['INSERT INTO %s' % qn(opts.db_table)]
-
- has_fields = bool(self.query.fields)
- fields = self.query.fields if has_fields else [opts.pk]
- result.append('(%s)' % ', '.join([qn(f.column) for f in fields]))
-
- if has_fields:
- params = values = [
- [
- f.get_db_prep_save(getattr(obj, f.attname) if self.query.raw else f.pre_save(obj, True), connection=self.connection)
- for f in fields
- ]
- for obj in self.query.objs
- ]
- else:
- values = [[self.connection.ops.pk_default_value()] for obj in self.query.objs]
- params = [[]]
- fields = [None]
- can_bulk = (not any(hasattr(field, "get_placeholder") for field in fields) and
- not self.return_id and self.connection.features.has_bulk_insert)
-
- if can_bulk:
- placeholders = [["%s"] * len(fields)]
- else:
- placeholders = [
- [self.placeholder(field, v) for field, v in zip(fields, val)]
- for val in values
- ]
- # Oracle Spatial needs to remove some values due to #10888
- params = self.connection.ops.modify_insert_params(placeholders, params)
- if self.return_id and self.connection.features.can_return_id_from_insert:
- params = params[0]
- col = "%s.%s" % (qn(opts.db_table), qn(opts.pk.column))
- result.append("VALUES (%s)" % ", ".join(placeholders[0]))
- r_fmt, r_params = self.connection.ops.return_insert_id()
- # Skip empty r_fmt to allow subclasses to customize behaviour for
- # 3rd party backends. Refs #19096.
- if r_fmt:
- result.append(r_fmt % col)
- params += r_params
- return [(" ".join(result), tuple(params))]
- if can_bulk:
- result.append(self.connection.ops.bulk_insert_sql(fields, len(values)))
- return [(" ".join(result), tuple([v for val in values for v in val]))]
- else:
- return [
- (" ".join(result + ["VALUES (%s)" % ", ".join(p)]), vals)
- for p, vals in zip(placeholders, params)
- ]
-
- def execute_sql(self, return_id=False):
- assert not (return_id and len(self.query.objs) != 1)
- self.return_id = return_id
- cursor = self.connection.cursor()
- for sql, params in self.as_sql():
- cursor.execute(sql, params)
- if not (return_id and cursor):
- return
- if self.connection.features.can_return_id_from_insert:
- return self.connection.ops.fetch_returned_insert_id(cursor)
- return self.connection.ops.last_insert_id(cursor,
- self.query.get_meta().db_table, self.query.get_meta().pk.column)
-
-
-class SQLDeleteCompiler(SQLCompiler):
- def as_sql(self):
- """
- Creates the SQL for this query. Returns the SQL string and list of
- parameters.
- """
- assert len(self.query.tables) == 1, \
- "Can only delete from one table at a time."
- qn = self.quote_name_unless_alias
- result = ['DELETE FROM %s' % qn(self.query.tables[0])]
- where, params = self.query.where.as_sql(qn=qn, connection=self.connection)
- if where:
- result.append('WHERE %s' % where)
- return ' '.join(result), tuple(params)
-
-class SQLUpdateCompiler(SQLCompiler):
- def as_sql(self):
- """
- Creates the SQL for this query. Returns the SQL string and list of
- parameters.
- """
- self.pre_sql_setup()
- if not self.query.values:
- return '', ()
- table = self.query.tables[0]
- qn = self.quote_name_unless_alias
- result = ['UPDATE %s' % qn(table)]
- result.append('SET')
- values, update_params = [], []
- for field, model, val in self.query.values:
- if hasattr(val, 'prepare_database_save'):
- val = val.prepare_database_save(field)
- else:
- val = field.get_db_prep_save(val, connection=self.connection)
-
- # Getting the placeholder for the field.
- if hasattr(field, 'get_placeholder'):
- placeholder = field.get_placeholder(val, self.connection)
- else:
- placeholder = '%s'
-
- if hasattr(val, 'evaluate'):
- val = SQLEvaluator(val, self.query, allow_joins=False)
- name = field.column
- if hasattr(val, 'as_sql'):
- sql, params = val.as_sql(qn, self.connection)
- values.append('%s = %s' % (qn(name), sql))
- update_params.extend(params)
- elif val is not None:
- values.append('%s = %s' % (qn(name), placeholder))
- update_params.append(val)
- else:
- values.append('%s = NULL' % qn(name))
- if not values:
- return '', ()
- result.append(', '.join(values))
- where, params = self.query.where.as_sql(qn=qn, connection=self.connection)
- if where:
- result.append('WHERE %s' % where)
- return ' '.join(result), tuple(update_params + params)
-
- def execute_sql(self, result_type):
- """
- Execute the specified update. Returns the number of rows affected by
- the primary update query. The "primary update query" is the first
- non-empty query that is executed. Row counts for any subsequent,
- related queries are not available.
- """
- cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)
- rows = cursor.rowcount if cursor else 0
- is_empty = cursor is None
- del cursor
- for query in self.query.get_related_updates():
- aux_rows = query.get_compiler(self.using).execute_sql(result_type)
- if is_empty:
- rows = aux_rows
- is_empty = False
- return rows
-
- def pre_sql_setup(self):
- """
- If the update depends on results from other tables, we need to do some
- munging of the "where" conditions to match the format required for
- (portable) SQL updates. That is done here.
-
- Further, if we are going to be running multiple updates, we pull out
- the id values to update at this point so that they don't change as a
- result of the progressive updates.
- """
- self.query.select_related = False
- self.query.clear_ordering(True)
- super(SQLUpdateCompiler, self).pre_sql_setup()
- count = self.query.count_active_tables()
- if not self.query.related_updates and count == 1:
- return
-
- # We need to use a sub-select in the where clause to filter on things
- # from other tables.
- query = self.query.clone(klass=Query)
- query.bump_prefix()
- query.extra = {}
- query.select = []
- query.add_fields([query.get_meta().pk.name])
- # Recheck the count - it is possible that fiddling with the select
- # fields above removes tables from the query. Refs #18304.
- count = query.count_active_tables()
- if not self.query.related_updates and count == 1:
- return
-
- must_pre_select = count > 1 and not self.connection.features.update_can_self_select
-
- # Now we adjust the current query: reset the where clause and get rid
- # of all the tables we don't need (since they're in the sub-select).
- self.query.where = self.query.where_class()
- if self.query.related_updates or must_pre_select:
- # Either we're using the idents in multiple update queries (so
- # don't want them to change), or the db backend doesn't support
- # selecting from the updating table (e.g. MySQL).
- idents = []
- for rows in query.get_compiler(self.using).execute_sql(MULTI):
- idents.extend([r[0] for r in rows])
- self.query.add_filter(('pk__in', idents))
- self.query.related_ids = idents
- else:
- # The fast path. Filters and updates in one query.
- self.query.add_filter(('pk__in', query))
- for alias in self.query.tables[1:]:
- self.query.alias_refcount[alias] = 0
-
-class SQLAggregateCompiler(SQLCompiler):
- def as_sql(self, qn=None):
- """
- Creates the SQL for this query. Returns the SQL string and list of
- parameters.
- """
- if qn is None:
- qn = self.quote_name_unless_alias
-
- sql, params = [], []
- for aggregate in self.query.aggregate_select.values():
- agg_sql, agg_params = aggregate.as_sql(qn, self.connection)
- sql.append(agg_sql)
- params.extend(agg_params)
- sql = ', '.join(sql)
- params = tuple(params)
-
- sql = 'SELECT %s FROM (%s) subquery' % (sql, self.query.subquery)
- params = params + self.query.sub_params
- return sql, params
-
-class SQLDateCompiler(SQLCompiler):
- def results_iter(self):
- """
- Returns an iterator over the results from executing this query.
- """
- resolve_columns = hasattr(self, 'resolve_columns')
- if resolve_columns:
- from django.db.models.fields import DateField
- fields = [DateField()]
- else:
- from django.db.backends.util import typecast_date
- needs_string_cast = self.connection.features.needs_datetime_string_cast
-
- offset = len(self.query.extra_select)
- for rows in self.execute_sql(MULTI):
- for row in rows:
- date = row[offset]
- if resolve_columns:
- date = self.resolve_columns(row, fields)[offset]
- elif needs_string_cast:
- date = typecast_date(str(date))
- if isinstance(date, datetime.datetime):
- date = date.date()
- yield date
-
-class SQLDateTimeCompiler(SQLCompiler):
- def results_iter(self):
- """
- Returns an iterator over the results from executing this query.
- """
- resolve_columns = hasattr(self, 'resolve_columns')
- if resolve_columns:
- from django.db.models.fields import DateTimeField
- fields = [DateTimeField()]
- else:
- from django.db.backends.util import typecast_timestamp
- needs_string_cast = self.connection.features.needs_datetime_string_cast
-
- offset = len(self.query.extra_select)
- for rows in self.execute_sql(MULTI):
- for row in rows:
- datetime = row[offset]
- if resolve_columns:
- datetime = self.resolve_columns(row, fields)[offset]
- elif needs_string_cast:
- datetime = typecast_timestamp(str(datetime))
- # Datetimes are artifically returned in UTC on databases that
- # don't support time zone. Restore the zone used in the query.
- if settings.USE_TZ:
- if datetime is None:
- raise ValueError("Database returned an invalid value "
- "in QuerySet.datetimes(). Are time zone "
- "definitions for your database and pytz installed?")
- datetime = datetime.replace(tzinfo=None)
- datetime = timezone.make_aware(datetime, self.query.tzinfo)
- yield datetime
-
-def order_modified_iter(cursor, trim, sentinel):
- """
- Yields blocks of rows from a cursor. We use this iterator in the special
- case when extra output columns have been added to support ordering
- requirements. We must trim those extra columns before anything else can use
- the results, since they're only needed to make the SQL valid.
- """
- for rows in iter((lambda: cursor.fetchmany(GET_ITERATOR_CHUNK_SIZE)),
- sentinel):
- yield [r[:-trim] for r in rows]
diff --git a/lib/python2.7/site-packages/django/db/models/sql/constants.py b/lib/python2.7/site-packages/django/db/models/sql/constants.py
deleted file mode 100644
index 904f7b2..0000000
--- a/lib/python2.7/site-packages/django/db/models/sql/constants.py
+++ /dev/null
@@ -1,41 +0,0 @@
-"""
-Constants specific to the SQL storage portion of the ORM.
-"""
-
-from collections import namedtuple
-import re
-
-# Valid query types (a set is used for speedy lookups). These are (currently)
-# considered SQL-specific; other storage systems may choose to use different
-# lookup types.
-QUERY_TERMS = set([
- 'exact', 'iexact', 'contains', 'icontains', 'gt', 'gte', 'lt', 'lte', 'in',
- 'startswith', 'istartswith', 'endswith', 'iendswith', 'range', 'year',
- 'month', 'day', 'week_day', 'hour', 'minute', 'second', 'isnull', 'search',
- 'regex', 'iregex',
-])
-
-# Size of each "chunk" for get_iterator calls.
-# Larger values are slightly faster at the expense of more storage space.
-GET_ITERATOR_CHUNK_SIZE = 100
-
-# Namedtuples for sql.* internal use.
-
-# Join lists (indexes into the tuples that are values in the alias_map
-# dictionary in the Query class).
-JoinInfo = namedtuple('JoinInfo',
- 'table_name rhs_alias join_type lhs_alias '
- 'join_cols nullable join_field')
-
-# Pairs of column clauses to select, and (possibly None) field for the clause.
-SelectInfo = namedtuple('SelectInfo', 'col field')
-
-# How many results to expect from a cursor.execute call
-MULTI = 'multi'
-SINGLE = 'single'
-
-ORDER_PATTERN = re.compile(r'\?|[-+]?[.\w]+$')
-ORDER_DIR = {
- 'ASC': ('ASC', 'DESC'),
- 'DESC': ('DESC', 'ASC'),
-}
diff --git a/lib/python2.7/site-packages/django/db/models/sql/datastructures.py b/lib/python2.7/site-packages/django/db/models/sql/datastructures.py
deleted file mode 100644
index daaabbe..0000000
--- a/lib/python2.7/site-packages/django/db/models/sql/datastructures.py
+++ /dev/null
@@ -1,62 +0,0 @@
-"""
-Useful auxilliary data structures for query construction. Not useful outside
-the SQL domain.
-"""
-
-class EmptyResultSet(Exception):
- pass
-
-class MultiJoin(Exception):
- """
- Used by join construction code to indicate the point at which a
- multi-valued join was attempted (if the caller wants to treat that
- exceptionally).
- """
- def __init__(self, names_pos, path_with_names):
- self.level = names_pos
- # The path travelled, this includes the path to the multijoin.
- self.names_with_path = path_with_names
-
-class Empty(object):
- pass
-
-class RawValue(object):
- def __init__(self, value):
- self.value = value
-
-class Date(object):
- """
- Add a date selection column.
- """
- def __init__(self, col, lookup_type):
- self.col = col
- self.lookup_type = lookup_type
-
- def relabeled_clone(self, change_map):
- return self.__class__((change_map.get(self.col[0], self.col[0]), self.col[1]))
-
- def as_sql(self, qn, connection):
- if isinstance(self.col, (list, tuple)):
- col = '%s.%s' % tuple([qn(c) for c in self.col])
- else:
- col = self.col
- return connection.ops.date_trunc_sql(self.lookup_type, col), []
-
-class DateTime(object):
- """
- Add a datetime selection column.
- """
- def __init__(self, col, lookup_type, tzname):
- self.col = col
- self.lookup_type = lookup_type
- self.tzname = tzname
-
- def relabeled_clone(self, change_map):
- return self.__class__((change_map.get(self.col[0], self.col[0]), self.col[1]))
-
- def as_sql(self, qn, connection):
- if isinstance(self.col, (list, tuple)):
- col = '%s.%s' % tuple([qn(c) for c in self.col])
- else:
- col = self.col
- return connection.ops.datetime_trunc_sql(self.lookup_type, col, self.tzname)
diff --git a/lib/python2.7/site-packages/django/db/models/sql/expressions.py b/lib/python2.7/site-packages/django/db/models/sql/expressions.py
deleted file mode 100644
index 31e0899..0000000
--- a/lib/python2.7/site-packages/django/db/models/sql/expressions.py
+++ /dev/null
@@ -1,117 +0,0 @@
-from django.core.exceptions import FieldError
-from django.db.models.constants import LOOKUP_SEP
-from django.db.models.fields import FieldDoesNotExist
-import copy
-
-class SQLEvaluator(object):
- def __init__(self, expression, query, allow_joins=True, reuse=None):
- self.expression = expression
- self.opts = query.get_meta()
- self.reuse = reuse
- self.cols = []
- self.expression.prepare(self, query, allow_joins)
-
- def relabeled_clone(self, change_map):
- clone = copy.copy(self)
- clone.cols = []
- for node, col in self.cols:
- if hasattr(col, 'relabeled_clone'):
- clone.cols.append((node, col.relabeled_clone(change_map)))
- else:
- clone.cols.append((node,
- (change_map.get(col[0], col[0]), col[1])))
- return clone
-
- def get_cols(self):
- cols = []
- for node, col in self.cols:
- if hasattr(node, 'get_cols'):
- cols.extend(node.get_cols())
- elif isinstance(col, tuple):
- cols.append(col)
- return cols
-
- def prepare(self):
- return self
-
- def as_sql(self, qn, connection):
- return self.expression.evaluate(self, qn, connection)
-
- #####################################################
- # Vistor methods for initial expression preparation #
- #####################################################
-
- def prepare_node(self, node, query, allow_joins):
- for child in node.children:
- if hasattr(child, 'prepare'):
- child.prepare(self, query, allow_joins)
-
- def prepare_leaf(self, node, query, allow_joins):
- if not allow_joins and LOOKUP_SEP in node.name:
- raise FieldError("Joined field references are not permitted in this query")
-
- field_list = node.name.split(LOOKUP_SEP)
- if node.name in query.aggregates:
- self.cols.append((node, query.aggregate_select[node.name]))
- else:
- try:
- field, sources, opts, join_list, path = query.setup_joins(
- field_list, query.get_meta(),
- query.get_initial_alias(), self.reuse)
- targets, _, join_list = query.trim_joins(sources, join_list, path)
- if self.reuse is not None:
- self.reuse.update(join_list)
- for t in targets:
- self.cols.append((node, (join_list[-1], t.column)))
- except FieldDoesNotExist:
- raise FieldError("Cannot resolve keyword %r into field. "
- "Choices are: %s" % (self.name,
- [f.name for f in self.opts.fields]))
-
- ##################################################
- # Vistor methods for final expression evaluation #
- ##################################################
-
- def evaluate_node(self, node, qn, connection):
- expressions = []
- expression_params = []
- for child in node.children:
- if hasattr(child, 'evaluate'):
- sql, params = child.evaluate(self, qn, connection)
- else:
- sql, params = '%s', (child,)
-
- if len(getattr(child, 'children', [])) > 1:
- format = '(%s)'
- else:
- format = '%s'
-
- if sql:
- expressions.append(format % sql)
- expression_params.extend(params)
-
- return connection.ops.combine_expression(node.connector, expressions), expression_params
-
- def evaluate_leaf(self, node, qn, connection):
- col = None
- for n, c in self.cols:
- if n is node:
- col = c
- break
- if col is None:
- raise ValueError("Given node not found")
- if hasattr(col, 'as_sql'):
- return col.as_sql(qn, connection)
- else:
- return '%s.%s' % (qn(col[0]), qn(col[1])), []
-
- def evaluate_date_modifier_node(self, node, qn, connection):
- timedelta = node.children.pop()
- sql, params = self.evaluate_node(node, qn, connection)
- node.children.append(timedelta)
-
- if timedelta.days == 0 and timedelta.seconds == 0 and \
- timedelta.microseconds == 0:
- return sql, params
-
- return connection.ops.date_interval_sql(sql, node.connector, timedelta), params
diff --git a/lib/python2.7/site-packages/django/db/models/sql/query.py b/lib/python2.7/site-packages/django/db/models/sql/query.py
deleted file mode 100644
index 7868c19..0000000
--- a/lib/python2.7/site-packages/django/db/models/sql/query.py
+++ /dev/null
@@ -1,1922 +0,0 @@
-"""
-Create SQL statements for QuerySets.
-
-The code in here encapsulates all of the SQL construction so that QuerySets
-themselves do not have to (and could be backed by things other than SQL
-databases). The abstraction barrier only works one way: this module has to know
-all about the internals of models in order to get the information it needs.
-"""
-
-import copy
-
-from django.utils.datastructures import SortedDict
-from django.utils.encoding import force_text
-from django.utils.tree import Node
-from django.utils import six
-from django.db import connections, DEFAULT_DB_ALIAS
-from django.db.models.constants import LOOKUP_SEP
-from django.db.models.aggregates import refs_aggregate
-from django.db.models.expressions import ExpressionNode
-from django.db.models.fields import FieldDoesNotExist
-from django.db.models.related import PathInfo
-from django.db.models.sql import aggregates as base_aggregates_module
-from django.db.models.sql.constants import (QUERY_TERMS, ORDER_DIR, SINGLE,
- ORDER_PATTERN, JoinInfo, SelectInfo)
-from django.db.models.sql.datastructures import EmptyResultSet, Empty, MultiJoin
-from django.db.models.sql.expressions import SQLEvaluator
-from django.db.models.sql.where import (WhereNode, Constraint, EverythingNode,
- ExtraWhere, AND, OR, EmptyWhere)
-from django.core.exceptions import FieldError
-
-__all__ = ['Query', 'RawQuery']
-
-
-class RawQuery(object):
- """
- A single raw SQL query
- """
-
- def __init__(self, sql, using, params=None):
- self.params = params or ()
- self.sql = sql
- self.using = using
- self.cursor = None
-
- # Mirror some properties of a normal query so that
- # the compiler can be used to process results.
- self.low_mark, self.high_mark = 0, None # Used for offset/limit
- self.extra_select = {}
- self.aggregate_select = {}
-
- def clone(self, using):
- return RawQuery(self.sql, using, params=self.params)
-
- def convert_values(self, value, field, connection):
- """Convert the database-returned value into a type that is consistent
- across database backends.
-
- By default, this defers to the underlying backend operations, but
- it can be overridden by Query classes for specific backends.
- """
- return connection.ops.convert_values(value, field)
-
- def get_columns(self):
- if self.cursor is None:
- self._execute_query()
- converter = connections[self.using].introspection.table_name_converter
- return [converter(column_meta[0])
- for column_meta in self.cursor.description]
-
- def __iter__(self):
- # Always execute a new query for a new iterator.
- # This could be optimized with a cache at the expense of RAM.
- self._execute_query()
- if not connections[self.using].features.can_use_chunked_reads:
- # If the database can't use chunked reads we need to make sure we
- # evaluate the entire query up front.
- result = list(self.cursor)
- else:
- result = self.cursor
- return iter(result)
-
- def __repr__(self):
- return "<RawQuery: %r>" % (self.sql % tuple(self.params))
-
- def _execute_query(self):
- self.cursor = connections[self.using].cursor()
- self.cursor.execute(self.sql, self.params)
-
-
-class Query(object):
- """
- A single SQL query.
- """
- # SQL join types. These are part of the class because their string forms
- # vary from database to database and can be customised by a subclass.
- INNER = 'INNER JOIN'
- LOUTER = 'LEFT OUTER JOIN'
-
- alias_prefix = 'T'
- query_terms = QUERY_TERMS
- aggregates_module = base_aggregates_module
-
- compiler = 'SQLCompiler'
-
- def __init__(self, model, where=WhereNode):
- self.model = model
- self.alias_refcount = {}
- # alias_map is the most important data structure regarding joins.
- # It's used for recording which joins exist in the query and what
- # type they are. The key is the alias of the joined table (possibly
- # the table name) and the value is JoinInfo from constants.py.
- self.alias_map = {}
- self.table_map = {} # Maps table names to list of aliases.
- self.join_map = {}
- self.default_cols = True
- self.default_ordering = True
- self.standard_ordering = True
- self.used_aliases = set()
- self.filter_is_sticky = False
- self.included_inherited_models = {}
-
- # SQL-related attributes
- # Select and related select clauses as SelectInfo instances.
- # The select is used for cases where we want to set up the select
- # clause to contain other than default fields (values(), annotate(),
- # subqueries...)
- self.select = []
- # The related_select_cols is used for columns needed for
- # select_related - this is populated in compile stage.
- self.related_select_cols = []
- self.tables = [] # Aliases in the order they are created.
- self.where = where()
- self.where_class = where
- self.group_by = None
- self.having = where()
- self.order_by = []
- self.low_mark, self.high_mark = 0, None # Used for offset/limit
- self.distinct = False
- self.distinct_fields = []
- self.select_for_update = False
- self.select_for_update_nowait = False
- self.select_related = False
-
- # SQL aggregate-related attributes
- self.aggregates = SortedDict() # Maps alias -> SQL aggregate function
- self.aggregate_select_mask = None
- self._aggregate_select_cache = None
-
- # Arbitrary maximum limit for select_related. Prevents infinite
- # recursion. Can be changed by the depth parameter to select_related().
- self.max_depth = 5
-
- # These are for extensions. The contents are more or less appended
- # verbatim to the appropriate clause.
- self.extra = SortedDict() # Maps col_alias -> (col_sql, params).
- self.extra_select_mask = None
- self._extra_select_cache = None
-
- self.extra_tables = ()
- self.extra_order_by = ()
-
- # A tuple that is a set of model field names and either True, if these
- # are the fields to defer, or False if these are the only fields to
- # load.
- self.deferred_loading = (set(), True)
-
- def __str__(self):
- """
- Returns the query as a string of SQL with the parameter values
- substituted in (use sql_with_params() to see the unsubstituted string).
-
- Parameter values won't necessarily be quoted correctly, since that is
- done by the database interface at execution time.
- """
- sql, params = self.sql_with_params()
- return sql % params
-
- def sql_with_params(self):
- """
- Returns the query as an SQL string and the parameters that will be
- subsituted into the query.
- """
- return self.get_compiler(DEFAULT_DB_ALIAS).as_sql()
-
- def __deepcopy__(self, memo):
- result = self.clone(memo=memo)
- memo[id(self)] = result
- return result
-
- def prepare(self):
- return self
-
- def get_compiler(self, using=None, connection=None):
- if using is None and connection is None:
- raise ValueError("Need either using or connection")
- if using:
- connection = connections[using]
-
- # Check that the compiler will be able to execute the query
- for alias, aggregate in self.aggregate_select.items():
- connection.ops.check_aggregate_support(aggregate)
-
- return connection.ops.compiler(self.compiler)(self, connection, using)
-
- def get_meta(self):
- """
- Returns the Options instance (the model._meta) from which to start
- processing. Normally, this is self.model._meta, but it can be changed
- by subclasses.
- """
- return self.model._meta
-
- def clone(self, klass=None, memo=None, **kwargs):
- """
- Creates a copy of the current instance. The 'kwargs' parameter can be
- used by clients to update attributes after copying has taken place.
- """
- obj = Empty()
- obj.__class__ = klass or self.__class__
- obj.model = self.model
- obj.alias_refcount = self.alias_refcount.copy()
- obj.alias_map = self.alias_map.copy()
- obj.table_map = self.table_map.copy()
- obj.join_map = self.join_map.copy()
- obj.default_cols = self.default_cols
- obj.default_ordering = self.default_ordering
- obj.standard_ordering = self.standard_ordering
- obj.included_inherited_models = self.included_inherited_models.copy()
- obj.select = self.select[:]
- obj.related_select_cols = []
- obj.tables = self.tables[:]
- obj.where = self.where.clone()
- obj.where_class = self.where_class
- if self.group_by is None:
- obj.group_by = None
- else:
- obj.group_by = self.group_by[:]
- obj.having = self.having.clone()
- obj.order_by = self.order_by[:]
- obj.low_mark, obj.high_mark = self.low_mark, self.high_mark
- obj.distinct = self.distinct
- obj.distinct_fields = self.distinct_fields[:]
- obj.select_for_update = self.select_for_update
- obj.select_for_update_nowait = self.select_for_update_nowait
- obj.select_related = self.select_related
- obj.related_select_cols = []
- obj.aggregates = self.aggregates.copy()
- if self.aggregate_select_mask is None:
- obj.aggregate_select_mask = None
- else:
- obj.aggregate_select_mask = self.aggregate_select_mask.copy()
- # _aggregate_select_cache cannot be copied, as doing so breaks the
- # (necessary) state in which both aggregates and
- # _aggregate_select_cache point to the same underlying objects.
- # It will get re-populated in the cloned queryset the next time it's
- # used.
- obj._aggregate_select_cache = None
- obj.max_depth = self.max_depth
- obj.extra = self.extra.copy()
- if self.extra_select_mask is None:
- obj.extra_select_mask = None
- else:
- obj.extra_select_mask = self.extra_select_mask.copy()
- if self._extra_select_cache is None:
- obj._extra_select_cache = None
- else:
- obj._extra_select_cache = self._extra_select_cache.copy()
- obj.extra_tables = self.extra_tables
- obj.extra_order_by = self.extra_order_by
- obj.deferred_loading = copy.copy(self.deferred_loading[0]), self.deferred_loading[1]
- if self.filter_is_sticky and self.used_aliases:
- obj.used_aliases = self.used_aliases.copy()
- else:
- obj.used_aliases = set()
- obj.filter_is_sticky = False
-
- obj.__dict__.update(kwargs)
- if hasattr(obj, '_setup_query'):
- obj._setup_query()
- return obj
-
- def convert_values(self, value, field, connection):
- """Convert the database-returned value into a type that is consistent
- across database backends.
-
- By default, this defers to the underlying backend operations, but
- it can be overridden by Query classes for specific backends.
- """
- return connection.ops.convert_values(value, field)
-
- def resolve_aggregate(self, value, aggregate, connection):
- """Resolve the value of aggregates returned by the database to
- consistent (and reasonable) types.
-
- This is required because of the predisposition of certain backends
- to return Decimal and long types when they are not needed.
- """
- if value is None:
- if aggregate.is_ordinal:
- return 0
- # Return None as-is
- return value
- elif aggregate.is_ordinal:
- # Any ordinal aggregate (e.g., count) returns an int
- return int(value)
- elif aggregate.is_computed:
- # Any computed aggregate (e.g., avg) returns a float
- return float(value)
- else:
- # Return value depends on the type of the field being processed.
- return self.convert_values(value, aggregate.field, connection)
-
- def get_aggregation(self, using):
- """
- Returns the dictionary with the values of the existing aggregations.
- """
- if not self.aggregate_select:
- return {}
-
- # If there is a group by clause, aggregating does not add useful
- # information but retrieves only the first row. Aggregate
- # over the subquery instead.
- if self.group_by is not None:
- from django.db.models.sql.subqueries import AggregateQuery
- query = AggregateQuery(self.model)
-
- obj = self.clone()
-
- # Remove any aggregates marked for reduction from the subquery
- # and move them to the outer AggregateQuery.
- for alias, aggregate in self.aggregate_select.items():
- if aggregate.is_summary:
- query.aggregate_select[alias] = aggregate
- del obj.aggregate_select[alias]
-
- try:
- query.add_subquery(obj, using)
- except EmptyResultSet:
- return dict(
- (alias, None)
- for alias in query.aggregate_select
- )
- else:
- query = self
- self.select = []
- self.default_cols = False
- self.extra = {}
- self.remove_inherited_models()
-
- query.clear_ordering(True)
- query.clear_limits()
- query.select_for_update = False
- query.select_related = False
- query.related_select_cols = []
-
- result = query.get_compiler(using).execute_sql(SINGLE)
- if result is None:
- result = [None for q in query.aggregate_select.items()]
-
- return dict([
- (alias, self.resolve_aggregate(val, aggregate, connection=connections[using]))
- for (alias, aggregate), val
- in zip(query.aggregate_select.items(), result)
- ])
-
- def get_count(self, using):
- """
- Performs a COUNT() query using the current filter constraints.
- """
- obj = self.clone()
- if len(self.select) > 1 or self.aggregate_select or (self.distinct and self.distinct_fields):
- # If a select clause exists, then the query has already started to
- # specify the columns that are to be returned.
- # In this case, we need to use a subquery to evaluate the count.
- from django.db.models.sql.subqueries import AggregateQuery
- subquery = obj
- subquery.clear_ordering(True)
- subquery.clear_limits()
-
- obj = AggregateQuery(obj.model)
- try:
- obj.add_subquery(subquery, using=using)
- except EmptyResultSet:
- # add_subquery evaluates the query, if it's an EmptyResultSet
- # then there are can be no results, and therefore there the
- # count is obviously 0
- return 0
-
- obj.add_count_column()
- number = obj.get_aggregation(using=using)[None]
-
- # Apply offset and limit constraints manually, since using LIMIT/OFFSET
- # in SQL (in variants that provide them) doesn't change the COUNT
- # output.
- number = max(0, number - self.low_mark)
- if self.high_mark is not None:
- number = min(number, self.high_mark - self.low_mark)
-
- return number
-
- def has_results(self, using):
- q = self.clone()
- q.clear_select_clause()
- q.add_extra({'a': 1}, None, None, None, None, None)
- q.set_extra_mask(['a'])
- q.clear_ordering(True)
- q.set_limits(high=1)
- compiler = q.get_compiler(using=using)
- return bool(compiler.execute_sql(SINGLE))
-
- def combine(self, rhs, connector):
- """
- Merge the 'rhs' query into the current one (with any 'rhs' effects
- being applied *after* (that is, "to the right of") anything in the
- current query. 'rhs' is not modified during a call to this function.
-
- The 'connector' parameter describes how to connect filters from the
- 'rhs' query.
- """
- assert self.model == rhs.model, \
- "Cannot combine queries on two different base models."
- assert self.can_filter(), \
- "Cannot combine queries once a slice has been taken."
- assert self.distinct == rhs.distinct, \
- "Cannot combine a unique query with a non-unique query."
- assert self.distinct_fields == rhs.distinct_fields, \
- "Cannot combine queries with different distinct fields."
-
- self.remove_inherited_models()
- # Work out how to relabel the rhs aliases, if necessary.
- change_map = {}
- conjunction = (connector == AND)
-
- # Determine which existing joins can be reused. When combining the
- # query with AND we must recreate all joins for m2m filters. When
- # combining with OR we can reuse joins. The reason is that in AND
- # case a single row can't fulfill a condition like:
- # revrel__col=1 & revrel__col=2
- # But, there might be two different related rows matching this
- # condition. In OR case a single True is enough, so single row is
- # enough, too.
- #
- # Note that we will be creating duplicate joins for non-m2m joins in
- # the AND case. The results will be correct but this creates too many
- # joins. This is something that could be fixed later on.
- reuse = set() if conjunction else set(self.tables)
- # Base table must be present in the query - this is the same
- # table on both sides.
- self.get_initial_alias()
- # Now, add the joins from rhs query into the new query (skipping base
- # table).
- for alias in rhs.tables[1:]:
- table, _, join_type, lhs, join_cols, nullable, join_field = rhs.alias_map[alias]
- promote = (join_type == self.LOUTER)
- # If the left side of the join was already relabeled, use the
- # updated alias.
- lhs = change_map.get(lhs, lhs)
- new_alias = self.join(
- (lhs, table, join_cols), reuse=reuse,
- outer_if_first=not conjunction, nullable=nullable,
- join_field=join_field)
- if promote:
- self.promote_joins([new_alias])
- # We can't reuse the same join again in the query. If we have two
- # distinct joins for the same connection in rhs query, then the
- # combined query must have two joins, too.
- reuse.discard(new_alias)
- change_map[alias] = new_alias
- if not rhs.alias_refcount[alias]:
- # The alias was unused in the rhs query. Unref it so that it
- # will be unused in the new query, too. We have to add and
- # unref the alias so that join promotion has information of
- # the join type for the unused alias.
- self.unref_alias(new_alias)
-
- # So that we don't exclude valid results in an OR query combination,
- # all joins exclusive to either the lhs or the rhs must be converted
- # to an outer join. RHS joins were already set to outer joins above,
- # so check which joins were used only in the lhs query.
- if not conjunction:
- rhs_used_joins = set(change_map.values())
- to_promote = [alias for alias in self.tables
- if alias not in rhs_used_joins]
- self.promote_joins(to_promote, True)
-
- # Now relabel a copy of the rhs where-clause and add it to the current
- # one.
- if rhs.where:
- w = rhs.where.clone()
- w.relabel_aliases(change_map)
- if not self.where:
- # Since 'self' matches everything, add an explicit "include
- # everything" where-constraint so that connections between the
- # where clauses won't exclude valid results.
- self.where.add(EverythingNode(), AND)
- elif self.where:
- # rhs has an empty where clause.
- w = self.where_class()
- w.add(EverythingNode(), AND)
- else:
- w = self.where_class()
- self.where.add(w, connector)
-
- # Selection columns and extra extensions are those provided by 'rhs'.
- self.select = []
- for col, field in rhs.select:
- if isinstance(col, (list, tuple)):
- new_col = change_map.get(col[0], col[0]), col[1]
- self.select.append(SelectInfo(new_col, field))
- else:
- new_col = col.relabeled_clone(change_map)
- self.select.append(SelectInfo(new_col, field))
-
- if connector == OR:
- # It would be nice to be able to handle this, but the queries don't
- # really make sense (or return consistent value sets). Not worth
- # the extra complexity when you can write a real query instead.
- if self.extra and rhs.extra:
- raise ValueError("When merging querysets using 'or', you "
- "cannot have extra(select=...) on both sides.")
- self.extra.update(rhs.extra)
- extra_select_mask = set()
- if self.extra_select_mask is not None:
- extra_select_mask.update(self.extra_select_mask)
- if rhs.extra_select_mask is not None:
- extra_select_mask.update(rhs.extra_select_mask)
- if extra_select_mask:
- self.set_extra_mask(extra_select_mask)
- self.extra_tables += rhs.extra_tables
-
- # Ordering uses the 'rhs' ordering, unless it has none, in which case
- # the current ordering is used.
- self.order_by = rhs.order_by[:] if rhs.order_by else self.order_by
- self.extra_order_by = rhs.extra_order_by or self.extra_order_by
-
- def deferred_to_data(self, target, callback):
- """
- Converts the self.deferred_loading data structure to an alternate data
- structure, describing the field that *will* be loaded. This is used to
- compute the columns to select from the database and also by the
- QuerySet class to work out which fields are being initialised on each
- model. Models that have all their fields included aren't mentioned in
- the result, only those that have field restrictions in place.
-
- The "target" parameter is the instance that is populated (in place).
- The "callback" is a function that is called whenever a (model, field)
- pair need to be added to "target". It accepts three parameters:
- "target", and the model and list of fields being added for that model.
- """
- field_names, defer = self.deferred_loading
- if not field_names:
- return
- orig_opts = self.get_meta()
- seen = {}
- must_include = {orig_opts.concrete_model: set([orig_opts.pk])}
- for field_name in field_names:
- parts = field_name.split(LOOKUP_SEP)
- cur_model = self.model
- opts = orig_opts
- for name in parts[:-1]:
- old_model = cur_model
- source = opts.get_field_by_name(name)[0]
- if is_reverse_o2o(source):
- cur_model = source.model
- else:
- cur_model = source.rel.to
- opts = cur_model._meta
- # Even if we're "just passing through" this model, we must add
- # both the current model's pk and the related reference field
- # (if it's not a reverse relation) to the things we select.
- if not is_reverse_o2o(source):
- must_include[old_model].add(source)
- add_to_dict(must_include, cur_model, opts.pk)
- field, model, _, _ = opts.get_field_by_name(parts[-1])
- if model is None:
- model = cur_model
- if not is_reverse_o2o(field):
- add_to_dict(seen, model, field)
-
- if defer:
- # We need to load all fields for each model, except those that
- # appear in "seen" (for all models that appear in "seen"). The only
- # slight complexity here is handling fields that exist on parent
- # models.
- workset = {}
- for model, values in six.iteritems(seen):
- for field, m in model._meta.get_fields_with_model():
- if field in values:
- continue
- add_to_dict(workset, m or model, field)
- for model, values in six.iteritems(must_include):
- # If we haven't included a model in workset, we don't add the
- # corresponding must_include fields for that model, since an
- # empty set means "include all fields". That's why there's no
- # "else" branch here.
- if model in workset:
- workset[model].update(values)
- for model, values in six.iteritems(workset):
- callback(target, model, values)
- else:
- for model, values in six.iteritems(must_include):
- if model in seen:
- seen[model].update(values)
- else:
- # As we've passed through this model, but not explicitly
- # included any fields, we have to make sure it's mentioned
- # so that only the "must include" fields are pulled in.
- seen[model] = values
- # Now ensure that every model in the inheritance chain is mentioned
- # in the parent list. Again, it must be mentioned to ensure that
- # only "must include" fields are pulled in.
- for model in orig_opts.get_parent_list():
- if model not in seen:
- seen[model] = set()
- for model, values in six.iteritems(seen):
- callback(target, model, values)
-
-
- def deferred_to_columns_cb(self, target, model, fields):
- """
- Callback used by deferred_to_columns(). The "target" parameter should
- be a set instance.
- """
- table = model._meta.db_table
- if table not in target:
- target[table] = set()
- for field in fields:
- target[table].add(field.column)
-
-
- def table_alias(self, table_name, create=False):
- """
- Returns a table alias for the given table_name and whether this is a
- new alias or not.
-
- If 'create' is true, a new alias is always created. Otherwise, the
- most recently created alias for the table (if one exists) is reused.
- """
- current = self.table_map.get(table_name)
- if not create and current:
- alias = current[0]
- self.alias_refcount[alias] += 1
- return alias, False
-
- # Create a new alias for this table.
- if current:
- alias = '%s%d' % (self.alias_prefix, len(self.alias_map) + 1)
- current.append(alias)
- else:
- # The first occurence of a table uses the table name directly.
- alias = table_name
- self.table_map[alias] = [alias]
- self.alias_refcount[alias] = 1
- self.tables.append(alias)
- return alias, True
-
- def ref_alias(self, alias):
- """ Increases the reference count for this alias. """
- self.alias_refcount[alias] += 1
-
- def unref_alias(self, alias, amount=1):
- """ Decreases the reference count for this alias. """
- self.alias_refcount[alias] -= amount
-
- def promote_joins(self, aliases, unconditional=False):
- """
- Promotes recursively the join type of given aliases and its children to
- an outer join. If 'unconditional' is False, the join is only promoted if
- it is nullable or the parent join is an outer join.
-
- Note about join promotion: When promoting any alias, we make sure all
- joins which start from that alias are promoted, too. When adding a join
- in join(), we make sure any join added to already existing LOUTER join
- is generated as LOUTER. This ensures we don't ever have broken join
- chains which contain first a LOUTER join, then an INNER JOIN, that is
- this kind of join should never be generated: a LOUTER b INNER c. The
- reason for avoiding this type of join chain is that the INNER after
- the LOUTER will effectively remove any effect the LOUTER had.
- """
- aliases = list(aliases)
- while aliases:
- alias = aliases.pop(0)
- if self.alias_map[alias].join_cols[0][1] is None:
- # This is the base table (first FROM entry) - this table
- # isn't really joined at all in the query, so we should not
- # alter its join type.
- continue
- parent_alias = self.alias_map[alias].lhs_alias
- parent_louter = (parent_alias
- and self.alias_map[parent_alias].join_type == self.LOUTER)
- already_louter = self.alias_map[alias].join_type == self.LOUTER
- if ((unconditional or self.alias_map[alias].nullable
- or parent_louter) and not already_louter):
- data = self.alias_map[alias]._replace(join_type=self.LOUTER)
- self.alias_map[alias] = data
- # Join type of 'alias' changed, so re-examine all aliases that
- # refer to this one.
- aliases.extend(
- join for join in self.alias_map.keys()
- if (self.alias_map[join].lhs_alias == alias
- and join not in aliases))
-
- def reset_refcounts(self, to_counts):
- """
- This method will reset reference counts for aliases so that they match
- the value passed in :param to_counts:.
- """
- for alias, cur_refcount in self.alias_refcount.copy().items():
- unref_amount = cur_refcount - to_counts.get(alias, 0)
- self.unref_alias(alias, unref_amount)
-
- def promote_disjunction(self, aliases_before, alias_usage_counts,
- num_childs):
- """
- This method is to be used for promoting joins in ORed filters.
-
- The principle for promotion is: any alias which is used (it is in
- alias_usage_counts), is not used by every child of the ORed filter,
- and isn't pre-existing needs to be promoted to LOUTER join.
- """
- for alias, use_count in alias_usage_counts.items():
- if use_count < num_childs and alias not in aliases_before:
- self.promote_joins([alias])
-
- def change_aliases(self, change_map):
- """
- Changes the aliases in change_map (which maps old-alias -> new-alias),
- relabelling any references to them in select columns and the where
- clause.
- """
- assert set(change_map.keys()).intersection(set(change_map.values())) == set()
-
- def relabel_column(col):
- if isinstance(col, (list, tuple)):
- old_alias = col[0]
- return (change_map.get(old_alias, old_alias), col[1])
- else:
- return col.relabeled_clone(change_map)
- # 1. Update references in "select" (normal columns plus aliases),
- # "group by", "where" and "having".
- self.where.relabel_aliases(change_map)
- self.having.relabel_aliases(change_map)
- if self.group_by:
- self.group_by = [relabel_column(col) for col in self.group_by]
- self.select = [SelectInfo(relabel_column(s.col), s.field)
- for s in self.select]
- self.aggregates = SortedDict(
- (key, relabel_column(col)) for key, col in self.aggregates.items())
-
- # 2. Rename the alias in the internal table/alias datastructures.
- for ident, aliases in self.join_map.items():
- del self.join_map[ident]
- aliases = tuple([change_map.get(a, a) for a in aliases])
- ident = (change_map.get(ident[0], ident[0]),) + ident[1:]
- self.join_map[ident] = aliases
- for old_alias, new_alias in six.iteritems(change_map):
- alias_data = self.alias_map[old_alias]
- alias_data = alias_data._replace(rhs_alias=new_alias)
- self.alias_refcount[new_alias] = self.alias_refcount[old_alias]
- del self.alias_refcount[old_alias]
- self.alias_map[new_alias] = alias_data
- del self.alias_map[old_alias]
-
- table_aliases = self.table_map[alias_data.table_name]
- for pos, alias in enumerate(table_aliases):
- if alias == old_alias:
- table_aliases[pos] = new_alias
- break
- for pos, alias in enumerate(self.tables):
- if alias == old_alias:
- self.tables[pos] = new_alias
- break
- for key, alias in self.included_inherited_models.items():
- if alias in change_map:
- self.included_inherited_models[key] = change_map[alias]
-
- # 3. Update any joins that refer to the old alias.
- for alias, data in six.iteritems(self.alias_map):
- lhs = data.lhs_alias
- if lhs in change_map:
- data = data._replace(lhs_alias=change_map[lhs])
- self.alias_map[alias] = data
-
- def bump_prefix(self, exceptions=()):
- """
- Changes the alias prefix to the next letter in the alphabet and
- relabels all the aliases. Even tables that previously had no alias will
- get an alias after this call (it's mostly used for nested queries and
- the outer query will already be using the non-aliased table name).
-
- Subclasses who create their own prefix should override this method to
- produce a similar result (a new prefix and relabelled aliases).
-
- The 'exceptions' parameter is a container that holds alias names which
- should not be changed.
- """
- current = ord(self.alias_prefix)
- assert current < ord('Z')
- prefix = chr(current + 1)
- self.alias_prefix = prefix
- change_map = SortedDict()
- for pos, alias in enumerate(self.tables):
- if alias in exceptions:
- continue
- new_alias = '%s%d' % (prefix, pos)
- change_map[alias] = new_alias
- self.tables[pos] = new_alias
- self.change_aliases(change_map)
-
- def get_initial_alias(self):
- """
- Returns the first alias for this query, after increasing its reference
- count.
- """
- if self.tables:
- alias = self.tables[0]
- self.ref_alias(alias)
- else:
- alias = self.join((None, self.get_meta().db_table, None))
- return alias
-
- def count_active_tables(self):
- """
- Returns the number of tables in this query with a non-zero reference
- count. Note that after execution, the reference counts are zeroed, so
- tables added in compiler will not be seen by this method.
- """
- return len([1 for count in self.alias_refcount.values() if count])
-
- def join(self, connection, reuse=None, outer_if_first=False,
- nullable=False, join_field=None):
- """
- Returns an alias for the join in 'connection', either reusing an
- existing alias for that join or creating a new one. 'connection' is a
- tuple (lhs, table, join_cols) where 'lhs' is either an existing
- table alias or a table name. 'join_cols' is a tuple of tuples containing
- columns to join on ((l_id1, r_id1), (l_id2, r_id2)). The join corresponds
- to the SQL equivalent of::
-
- lhs.l_id1 = table.r_id1 AND lhs.l_id2 = table.r_id2
-
- The 'reuse' parameter can be either None which means all joins
- (matching the connection) are reusable, or it can be a set containing
- the aliases that can be reused.
-
- If 'outer_if_first' is True and a new join is created, it will have the
- LOUTER join type.
-
- A join is always created as LOUTER if the lhs alias is LOUTER to make
- sure we do not generate chains like t1 LOUTER t2 INNER t3.
-
- If 'nullable' is True, the join can potentially involve NULL values and
- is a candidate for promotion (to "left outer") when combining querysets.
-
- The 'join_field' is the field we are joining along (if any).
- """
- lhs, table, join_cols = connection
- assert lhs is None or join_field is not None
- existing = self.join_map.get(connection, ())
- if reuse is None:
- reuse = existing
- else:
- reuse = [a for a in existing if a in reuse]
- for alias in reuse:
- if join_field and self.alias_map[alias].join_field != join_field:
- # The join_map doesn't contain join_field (mainly because
- # fields in Query structs are problematic in pickling), so
- # check that the existing join is created using the same
- # join_field used for the under work join.
- continue
- self.ref_alias(alias)
- return alias
-
- # No reuse is possible, so we need a new alias.
- alias, _ = self.table_alias(table, True)
- if not lhs:
- # Not all tables need to be joined to anything. No join type
- # means the later columns are ignored.
- join_type = None
- elif outer_if_first or self.alias_map[lhs].join_type == self.LOUTER:
- # We need to use LOUTER join if asked by outer_if_first or if the
- # LHS table is left-joined in the query.
- join_type = self.LOUTER
- else:
- join_type = self.INNER
- join = JoinInfo(table, alias, join_type, lhs, join_cols or ((None, None),), nullable,
- join_field)
- self.alias_map[alias] = join
- if connection in self.join_map:
- self.join_map[connection] += (alias,)
- else:
- self.join_map[connection] = (alias,)
- return alias
-
- def setup_inherited_models(self):
- """
- If the model that is the basis for this QuerySet inherits other models,
- we need to ensure that those other models have their tables included in
- the query.
-
- We do this as a separate step so that subclasses know which
- tables are going to be active in the query, without needing to compute
- all the select columns (this method is called from pre_sql_setup(),
- whereas column determination is a later part, and side-effect, of
- as_sql()).
- """
- opts = self.get_meta()
- root_alias = self.tables[0]
- seen = {None: root_alias}
-
- for field, model in opts.get_fields_with_model():
- if model not in seen:
- self.join_parent_model(opts, model, root_alias, seen)
- self.included_inherited_models = seen
-
- def join_parent_model(self, opts, model, alias, seen):
- """
- Makes sure the given 'model' is joined in the query. If 'model' isn't
- a parent of 'opts' or if it is None this method is a no-op.
-
- The 'alias' is the root alias for starting the join, 'seen' is a dict
- of model -> alias of existing joins. It must also contain a mapping
- of None -> some alias. This will be returned in the no-op case.
- """
- if model in seen:
- return seen[model]
- chain = opts.get_base_chain(model)
- if chain is None:
- return alias
- curr_opts = opts
- for int_model in chain:
- if int_model in seen:
- return seen[int_model]
- # Proxy model have elements in base chain
- # with no parents, assign the new options
- # object and skip to the next base in that
- # case
- if not curr_opts.parents[int_model]:
- curr_opts = int_model._meta
- continue
- link_field = curr_opts.get_ancestor_link(int_model)
- _, _, _, joins, _ = self.setup_joins(
- [link_field.name], curr_opts, alias)
- curr_opts = int_model._meta
- alias = seen[int_model] = joins[-1]
- return alias or seen[None]
-
- def remove_inherited_models(self):
- """
- Undoes the effects of setup_inherited_models(). Should be called
- whenever select columns (self.select) are set explicitly.
- """
- for key, alias in self.included_inherited_models.items():
- if key:
- self.unref_alias(alias)
- self.included_inherited_models = {}
-
-
- def add_aggregate(self, aggregate, model, alias, is_summary):
- """
- Adds a single aggregate expression to the Query
- """
- opts = model._meta
- field_list = aggregate.lookup.split(LOOKUP_SEP)
- if len(field_list) == 1 and aggregate.lookup in self.aggregates:
- # Aggregate is over an annotation
- field_name = field_list[0]
- col = field_name
- source = self.aggregates[field_name]
- if not is_summary:
- raise FieldError("Cannot compute %s('%s'): '%s' is an aggregate" % (
- aggregate.name, field_name, field_name))
- elif ((len(field_list) > 1) or
- (field_list[0] not in [i.name for i in opts.fields]) or
- self.group_by is None or
- not is_summary):
- # If:
- # - the field descriptor has more than one part (foo__bar), or
- # - the field descriptor is referencing an m2m/m2o field, or
- # - this is a reference to a model field (possibly inherited), or
- # - this is an annotation over a model field
- # then we need to explore the joins that are required.
-
- field, sources, opts, join_list, path = self.setup_joins(
- field_list, opts, self.get_initial_alias())
-
- # Process the join chain to see if it can be trimmed
- targets, _, join_list = self.trim_joins(sources, join_list, path)
-
- # If the aggregate references a model or field that requires a join,
- # those joins must be LEFT OUTER - empty join rows must be returned
- # in order for zeros to be returned for those aggregates.
- self.promote_joins(join_list, True)
-
- col = targets[0].column
- source = sources[0]
- col = (join_list[-1], col)
- else:
- # The simplest cases. No joins required -
- # just reference the provided column alias.
- field_name = field_list[0]
- source = opts.get_field(field_name)
- col = field_name
-
- # Add the aggregate to the query
- aggregate.add_to_query(self, alias, col=col, source=source, is_summary=is_summary)
-
- def build_filter(self, filter_expr, branch_negated=False, current_negated=False,
- can_reuse=None):
- """
- Builds a WhereNode for a single filter clause, but doesn't add it
- to this Query. Query.add_q() will then add this filter to the where
- or having Node.
-
- The 'branch_negated' tells us if the current branch contains any
- negations. This will be used to determine if subqueries are needed.
-
- The 'current_negated' is used to determine if the current filter is
- negated or not and this will be used to determine if IS NULL filtering
- is needed.
-
- The difference between current_netageted and branch_negated is that
- branch_negated is set on first negation, but current_negated is
- flipped for each negation.
-
- Note that add_filter will not do any negating itself, that is done
- upper in the code by add_q().
-
- The 'can_reuse' is a set of reusable joins for multijoins.
-
- The method will create a filter clause that can be added to the current
- query. However, if the filter isn't added to the query then the caller
- is responsible for unreffing the joins used.
- """
- arg, value = filter_expr
- parts = arg.split(LOOKUP_SEP)
- if not parts:
- raise FieldError("Cannot parse keyword query %r" % arg)
-
- # Work out the lookup type and remove it from the end of 'parts',
- # if necessary.
- lookup_type = 'exact' # Default lookup type
- num_parts = len(parts)
- if (len(parts) > 1 and parts[-1] in self.query_terms
- and arg not in self.aggregates):
- # Traverse the lookup query to distinguish related fields from
- # lookup types.
- lookup_model = self.model
- for counter, field_name in enumerate(parts):
- try:
- lookup_field = lookup_model._meta.get_field(field_name)
- except FieldDoesNotExist:
- # Not a field. Bail out.
- lookup_type = parts.pop()
- break
- # Unless we're at the end of the list of lookups, let's attempt
- # to continue traversing relations.
- if (counter + 1) < num_parts:
- try:
- lookup_model = lookup_field.rel.to
- except AttributeError:
- # Not a related field. Bail out.
- lookup_type = parts.pop()
- break
-
- clause = self.where_class()
- # Interpret '__exact=None' as the sql 'is NULL'; otherwise, reject all
- # uses of None as a query value.
- if value is None:
- if lookup_type != 'exact':
- raise ValueError("Cannot use None as a query value")
- lookup_type = 'isnull'
- value = True
- elif callable(value):
- value = value()
- elif isinstance(value, ExpressionNode):
- # If value is a query expression, evaluate it
- value = SQLEvaluator(value, self, reuse=can_reuse)
- # For Oracle '' is equivalent to null. The check needs to be done
- # at this stage because join promotion can't be done at compiler
- # stage. Using DEFAULT_DB_ALIAS isn't nice, but it is the best we
- # can do here. Similar thing is done in is_nullable(), too.
- if (connections[DEFAULT_DB_ALIAS].features.interprets_empty_strings_as_nulls and
- lookup_type == 'exact' and value == ''):
- value = True
- lookup_type = 'isnull'
-
- for alias, aggregate in self.aggregates.items():
- if alias in (parts[0], LOOKUP_SEP.join(parts)):
- clause.add((aggregate, lookup_type, value), AND)
- return clause
-
- opts = self.get_meta()
- alias = self.get_initial_alias()
- allow_many = not branch_negated
-
- try:
- field, sources, opts, join_list, path = self.setup_joins(
- parts, opts, alias, can_reuse, allow_many,
- allow_explicit_fk=True)
- if can_reuse is not None:
- can_reuse.update(join_list)
- except MultiJoin as e:
- return self.split_exclude(filter_expr, LOOKUP_SEP.join(parts[:e.level]),
- can_reuse, e.names_with_path)
-
- if (lookup_type == 'isnull' and value is True and not current_negated and
- len(join_list) > 1):
- # If the comparison is against NULL, we may need to use some left
- # outer joins when creating the join chain. This is only done when
- # needed, as it's less efficient at the database level.
- self.promote_joins(join_list)
-
- # Process the join list to see if we can remove any inner joins from
- # the far end (fewer tables in a query is better). Note that join
- # promotion must happen before join trimming to have the join type
- # information available when reusing joins.
- targets, alias, join_list = self.trim_joins(sources, join_list, path)
-
- if hasattr(field, 'get_lookup_constraint'):
- constraint = field.get_lookup_constraint(self.where_class, alias, targets, sources,
- lookup_type, value)
- else:
- constraint = (Constraint(alias, targets[0].column, field), lookup_type, value)
- clause.add(constraint, AND)
- if current_negated and (lookup_type != 'isnull' or value is False):
- self.promote_joins(join_list)
- if (lookup_type != 'isnull' and (
- self.is_nullable(targets[0]) or
- self.alias_map[join_list[-1]].join_type == self.LOUTER)):
- # The condition added here will be SQL like this:
- # NOT (col IS NOT NULL), where the first NOT is added in
- # upper layers of code. The reason for addition is that if col
- # is null, then col != someval will result in SQL "unknown"
- # which isn't the same as in Python. The Python None handling
- # is wanted, and it can be gotten by
- # (col IS NULL OR col != someval)
- # <=>
- # NOT (col IS NOT NULL AND col = someval).
- clause.add((Constraint(alias, targets[0].column, None), 'isnull', False), AND)
- return clause
-
- def add_filter(self, filter_clause):
- self.where.add(self.build_filter(filter_clause), 'AND')
-
- def need_having(self, obj):
- """
- Returns whether or not all elements of this q_object need to be put
- together in the HAVING clause.
- """
- if not isinstance(obj, Node):
- return (refs_aggregate(obj[0].split(LOOKUP_SEP), self.aggregates)
- or (hasattr(obj[1], 'contains_aggregate')
- and obj[1].contains_aggregate(self.aggregates)))
- return any(self.need_having(c) for c in obj.children)
-
- def split_having_parts(self, q_object, negated=False):
- """
- Returns a list of q_objects which need to go into the having clause
- instead of the where clause. Removes the splitted out nodes from the
- given q_object. Note that the q_object is altered, so cloning it is
- needed.
- """
- having_parts = []
- for c in q_object.children[:]:
- # When constucting the having nodes we need to take care to
- # preserve the negation status from the upper parts of the tree
- if isinstance(c, Node):
- # For each negated child, flip the in_negated flag.
- in_negated = c.negated ^ negated
- if c.connector == OR and self.need_having(c):
- # A subtree starting from OR clause must go into having in
- # whole if any part of that tree references an aggregate.
- q_object.children.remove(c)
- having_parts.append(c)
- c.negated = in_negated
- else:
- having_parts.extend(
- self.split_having_parts(c, in_negated)[1])
- elif self.need_having(c):
- q_object.children.remove(c)
- new_q = self.where_class(children=[c], negated=negated)
- having_parts.append(new_q)
- return q_object, having_parts
-
- def add_q(self, q_object):
- """
- A preprocessor for the internal _add_q(). Responsible for
- splitting the given q_object into where and having parts and
- setting up some internal variables.
- """
- if not self.need_having(q_object):
- where_part, having_parts = q_object, []
- else:
- where_part, having_parts = self.split_having_parts(
- q_object.clone(), q_object.negated)
- used_aliases = self.used_aliases
- clause = self._add_q(where_part, used_aliases)
- self.where.add(clause, AND)
- for hp in having_parts:
- clause = self._add_q(hp, used_aliases)
- self.having.add(clause, AND)
- if self.filter_is_sticky:
- self.used_aliases = used_aliases
-
- def _add_q(self, q_object, used_aliases, branch_negated=False,
- current_negated=False):
- """
- Adds a Q-object to the current filter.
- """
- connector = q_object.connector
- current_negated = current_negated ^ q_object.negated
- branch_negated = branch_negated or q_object.negated
- target_clause = self.where_class(connector=connector,
- negated=q_object.negated)
- # Treat case NOT (a AND b) like case ((NOT a) OR (NOT b)) for join
- # promotion. See ticket #21748.
- effective_connector = connector
- if current_negated:
- effective_connector = OR if effective_connector == AND else AND
- if effective_connector == OR:
- alias_usage_counts = dict()
- aliases_before = set(self.tables)
- for child in q_object.children:
- if effective_connector == OR:
- refcounts_before = self.alias_refcount.copy()
- if isinstance(child, Node):
- child_clause = self._add_q(
- child, used_aliases, branch_negated,
- current_negated)
- else:
- child_clause = self.build_filter(
- child, can_reuse=used_aliases, branch_negated=branch_negated,
- current_negated=current_negated)
- target_clause.add(child_clause, connector)
- if effective_connector == OR:
- used = alias_diff(refcounts_before, self.alias_refcount)
- for alias in used:
- alias_usage_counts[alias] = alias_usage_counts.get(alias, 0) + 1
- if effective_connector == OR:
- self.promote_disjunction(aliases_before, alias_usage_counts,
- len(q_object.children))
- return target_clause
-
- def names_to_path(self, names, opts, allow_many, allow_explicit_fk):
- """
- Walks the names path and turns them PathInfo tuples. Note that a
- single name in 'names' can generate multiple PathInfos (m2m for
- example).
-
- 'names' is the path of names to travle, 'opts' is the model Options we
- start the name resolving from, 'allow_many' and 'allow_explicit_fk'
- are as for setup_joins().
-
- Returns a list of PathInfo tuples. In addition returns the final field
- (the last used join field), and target (which is a field guaranteed to
- contain the same value as the final field).
- """
- path, names_with_path = [], []
- for pos, name in enumerate(names):
- cur_names_with_path = (name, [])
- if name == 'pk':
- name = opts.pk.name
- try:
- field, model, direct, m2m = opts.get_field_by_name(name)
- except FieldDoesNotExist:
- for f in opts.fields:
- if allow_explicit_fk and name == f.attname:
- # XXX: A hack to allow foo_id to work in values() for
- # backwards compatibility purposes. If we dropped that
- # feature, this could be removed.
- field, model, direct, m2m = opts.get_field_by_name(f.name)
- break
- else:
- available = opts.get_all_field_names() + list(self.aggregate_select)
- raise FieldError("Cannot resolve keyword %r into field. "
- "Choices are: %s" % (name, ", ".join(available)))
- # Check if we need any joins for concrete inheritance cases (the
- # field lives in parent, but we are currently in one of its
- # children)
- if model:
- # The field lives on a base class of the current model.
- # Skip the chain of proxy to the concrete proxied model
- proxied_model = opts.concrete_model
-
- for int_model in opts.get_base_chain(model):
- if int_model is proxied_model:
- opts = int_model._meta
- else:
- final_field = opts.parents[int_model]
- targets = (final_field.rel.get_related_field(),)
- opts = int_model._meta
- path.append(PathInfo(final_field.model._meta, opts, targets, final_field, False, True))
- cur_names_with_path[1].append(PathInfo(final_field.model._meta, opts, targets, final_field, False, True))
- if hasattr(field, 'get_path_info'):
- pathinfos = field.get_path_info()
- if not allow_many:
- for inner_pos, p in enumerate(pathinfos):
- if p.m2m:
- cur_names_with_path[1].extend(pathinfos[0:inner_pos + 1])
- names_with_path.append(cur_names_with_path)
- raise MultiJoin(pos + 1, names_with_path)
- last = pathinfos[-1]
- path.extend(pathinfos)
- final_field = last.join_field
- opts = last.to_opts
- targets = last.target_fields
- cur_names_with_path[1].extend(pathinfos)
- names_with_path.append(cur_names_with_path)
- else:
- # Local non-relational field.
- final_field = field
- targets = (field,)
- break
-
- if pos != len(names) - 1:
- if pos == len(names) - 2:
- raise FieldError(
- "Join on field %r not permitted. Did you misspell %r for "
- "the lookup type?" % (name, names[pos + 1]))
- else:
- raise FieldError("Join on field %r not permitted." % name)
- return path, final_field, targets
-
- def setup_joins(self, names, opts, alias, can_reuse=None, allow_many=True,
- allow_explicit_fk=False, outer_if_first=False):
- """
- Compute the necessary table joins for the passage through the fields
- given in 'names'. 'opts' is the Options class for the current model
- (which gives the table we are starting from), 'alias' is the alias for
- the table to start the joining from.
-
- The 'can_reuse' defines the reverse foreign key joins we can reuse. It
- can be None in which case all joins are reusable or a set of aliases
- that can be reused. Note that non-reverse foreign keys are always
- reusable when using setup_joins().
-
- If 'allow_many' is False, then any reverse foreign key seen will
- generate a MultiJoin exception.
-
- The 'allow_explicit_fk' controls if field.attname is allowed in the
- lookups.
-
- Returns the final field involved in the joins, the target field (used
- for any 'where' constraint), the final 'opts' value, the joins and the
- field path travelled to generate the joins.
-
- The target field is the field containing the concrete value. Final
- field can be something different, for example foreign key pointing to
- that value. Final field is needed for example in some value
- conversions (convert 'obj' in fk__id=obj to pk val using the foreign
- key field for example).
- """
- joins = [alias]
- # First, generate the path for the names
- path, final_field, targets = self.names_to_path(
- names, opts, allow_many, allow_explicit_fk)
- # Then, add the path to the query's joins. Note that we can't trim
- # joins at this stage - we will need the information about join type
- # of the trimmed joins.
- for pos, join in enumerate(path):
- opts = join.to_opts
- if join.direct:
- nullable = self.is_nullable(join.join_field)
- else:
- nullable = True
- connection = alias, opts.db_table, join.join_field.get_joining_columns()
- reuse = can_reuse if join.m2m else None
- alias = self.join(
- connection, reuse=reuse, nullable=nullable, join_field=join.join_field,
- outer_if_first=outer_if_first)
- joins.append(alias)
- if hasattr(final_field, 'field'):
- final_field = final_field.field
- return final_field, targets, opts, joins, path
-
- def trim_joins(self, targets, joins, path):
- """
- The 'target' parameter is the final field being joined to, 'joins'
- is the full list of join aliases. The 'path' contain the PathInfos
- used to create the joins.
-
- Returns the final target field and table alias and the new active
- joins.
-
- We will always trim any direct join if we have the target column
- available already in the previous table. Reverse joins can't be
- trimmed as we don't know if there is anything on the other side of
- the join.
- """
- for pos, info in enumerate(reversed(path)):
- if len(joins) == 1 or not info.direct:
- break
- join_targets = set(t.column for t in info.join_field.foreign_related_fields)
- cur_targets = set(t.column for t in targets)
- if not cur_targets.issubset(join_targets):
- break
- targets = tuple(r[0] for r in info.join_field.related_fields if r[1].column in cur_targets)
- self.unref_alias(joins.pop())
- return targets, joins[-1], joins
-
- def split_exclude(self, filter_expr, prefix, can_reuse, names_with_path):
- """
- When doing an exclude against any kind of N-to-many relation, we need
- to use a subquery. This method constructs the nested query, given the
- original exclude filter (filter_expr) and the portion up to the first
- N-to-many relation field.
-
- As an example we could have original filter ~Q(child__name='foo').
- We would get here with filter_expr = child__name, prefix = child and
- can_reuse is a set of joins usable for filters in the original query.
-
- We will turn this into equivalent of:
- WHERE NOT (pk IN (SELECT parent_id FROM thetable
- WHERE name = 'foo' AND parent_id IS NOT NULL))
-
- It might be worth it to consider using WHERE NOT EXISTS as that has
- saner null handling, and is easier for the backend's optimizer to
- handle.
- """
- # Generate the inner query.
- query = Query(self.model)
- query.where.add(query.build_filter(filter_expr), AND)
- query.bump_prefix()
- query.clear_ordering(True)
- # Try to have as simple as possible subquery -> trim leading joins from
- # the subquery.
- trimmed_prefix, contains_louter = query.trim_start(names_with_path)
- query.remove_inherited_models()
-
- # Add extra check to make sure the selected field will not be null
- # since we are adding a IN <subquery> clause. This prevents the
- # database from tripping over IN (...,NULL,...) selects and returning
- # nothing
- if self.is_nullable(query.select[0].field):
- alias, col = query.select[0].col
- query.where.add((Constraint(alias, col, query.select[0].field), 'isnull', False), AND)
-
- condition = self.build_filter(
- ('%s__in' % trimmed_prefix, query),
- current_negated=True, branch_negated=True, can_reuse=can_reuse)
- if contains_louter:
- or_null_condition = self.build_filter(
- ('%s__isnull' % trimmed_prefix, True),
- current_negated=True, branch_negated=True, can_reuse=can_reuse)
- condition.add(or_null_condition, OR)
- # Note that the end result will be:
- # (outercol NOT IN innerq AND outercol IS NOT NULL) OR outercol IS NULL.
- # This might look crazy but due to how IN works, this seems to be
- # correct. If the IS NOT NULL check is removed then outercol NOT
- # IN will return UNKNOWN. If the IS NULL check is removed, then if
- # outercol IS NULL we will not match the row.
- return condition
-
- def set_empty(self):
- self.where = EmptyWhere()
- self.having = EmptyWhere()
-
- def is_empty(self):
- return isinstance(self.where, EmptyWhere) or isinstance(self.having, EmptyWhere)
-
- def set_limits(self, low=None, high=None):
- """
- Adjusts the limits on the rows retrieved. We use low/high to set these,
- as it makes it more Pythonic to read and write. When the SQL query is
- created, they are converted to the appropriate offset and limit values.
-
- Any limits passed in here are applied relative to the existing
- constraints. So low is added to the current low value and both will be
- clamped to any existing high value.
- """
- if high is not None:
- if self.high_mark is not None:
- self.high_mark = min(self.high_mark, self.low_mark + high)
- else:
- self.high_mark = self.low_mark + high
- if low is not None:
- if self.high_mark is not None:
- self.low_mark = min(self.high_mark, self.low_mark + low)
- else:
- self.low_mark = self.low_mark + low
-
- def clear_limits(self):
- """
- Clears any existing limits.
- """
- self.low_mark, self.high_mark = 0, None
-
- def can_filter(self):
- """
- Returns True if adding filters to this instance is still possible.
-
- Typically, this means no limits or offsets have been put on the results.
- """
- return not self.low_mark and self.high_mark is None
-
- def clear_select_clause(self):
- """
- Removes all fields from SELECT clause.
- """
- self.select = []
- self.default_cols = False
- self.select_related = False
- self.set_extra_mask(())
- self.set_aggregate_mask(())
-
- def clear_select_fields(self):
- """
- Clears the list of fields to select (but not extra_select columns).
- Some queryset types completely replace any existing list of select
- columns.
- """
- self.select = []
-
- def add_distinct_fields(self, *field_names):
- """
- Adds and resolves the given fields to the query's "distinct on" clause.
- """
- self.distinct_fields = field_names
- self.distinct = True
-
- def add_fields(self, field_names, allow_m2m=True):
- """
- Adds the given (model) fields to the select set. The field names are
- added in the order specified.
- """
- alias = self.get_initial_alias()
- opts = self.get_meta()
-
- try:
- for name in field_names:
- field, targets, u2, joins, path = self.setup_joins(
- name.split(LOOKUP_SEP), opts, alias, None, allow_m2m,
- allow_explicit_fk=True, outer_if_first=True)
-
- # Trim last join if possible
- targets, final_alias, remaining_joins = self.trim_joins(targets, joins[-2:], path)
- joins = joins[:-2] + remaining_joins
-
- self.promote_joins(joins[1:])
- for target in targets:
- self.select.append(SelectInfo((final_alias, target.column), target))
- except MultiJoin:
- raise FieldError("Invalid field name: '%s'" % name)
- except FieldError:
- if LOOKUP_SEP in name:
- # For lookups spanning over relationships, show the error
- # from the model on which the lookup failed.
- raise
- else:
- names = sorted(opts.get_all_field_names() + list(self.extra)
- + list(self.aggregate_select))
- raise FieldError("Cannot resolve keyword %r into field. "
- "Choices are: %s" % (name, ", ".join(names)))
- self.remove_inherited_models()
-
- def add_ordering(self, *ordering):
- """
- Adds items from the 'ordering' sequence to the query's "order by"
- clause. These items are either field names (not column names) --
- possibly with a direction prefix ('-' or '?') -- or ordinals,
- corresponding to column positions in the 'select' list.
-
- If 'ordering' is empty, all ordering is cleared from the query.
- """
- errors = []
- for item in ordering:
- if not ORDER_PATTERN.match(item):
- errors.append(item)
- if errors:
- raise FieldError('Invalid order_by arguments: %s' % errors)
- if ordering:
- self.order_by.extend(ordering)
- else:
- self.default_ordering = False
-
- def clear_ordering(self, force_empty):
- """
- Removes any ordering settings. If 'force_empty' is True, there will be
- no ordering in the resulting query (not even the model's default).
- """
- self.order_by = []
- self.extra_order_by = ()
- if force_empty:
- self.default_ordering = False
-
- def set_group_by(self):
- """
- Expands the GROUP BY clause required by the query.
-
- This will usually be the set of all non-aggregate fields in the
- return data. If the database backend supports grouping by the
- primary key, and the query would be equivalent, the optimization
- will be made automatically.
- """
- self.group_by = []
-
- for col, _ in self.select:
- self.group_by.append(col)
-
- def add_count_column(self):
- """
- Converts the query to do count(...) or count(distinct(pk)) in order to
- get its size.
- """
- if not self.distinct:
- if not self.select:
- count = self.aggregates_module.Count('*', is_summary=True)
- else:
- assert len(self.select) == 1, \
- "Cannot add count col with multiple cols in 'select': %r" % self.select
- count = self.aggregates_module.Count(self.select[0].col)
- else:
- opts = self.get_meta()
- if not self.select:
- count = self.aggregates_module.Count(
- (self.join((None, opts.db_table, None)), opts.pk.column),
- is_summary=True, distinct=True)
- else:
- # Because of SQL portability issues, multi-column, distinct
- # counts need a sub-query -- see get_count() for details.
- assert len(self.select) == 1, \
- "Cannot add count col with multiple cols in 'select'."
-
- count = self.aggregates_module.Count(self.select[0].col, distinct=True)
- # Distinct handling is done in Count(), so don't do it at this
- # level.
- self.distinct = False
-
- # Set only aggregate to be the count column.
- # Clear out the select cache to reflect the new unmasked aggregates.
- self.aggregates = {None: count}
- self.set_aggregate_mask(None)
- self.group_by = None
-
- def add_select_related(self, fields):
- """
- Sets up the select_related data structure so that we only select
- certain related models (as opposed to all models, when
- self.select_related=True).
- """
- field_dict = {}
- for field in fields:
- d = field_dict
- for part in field.split(LOOKUP_SEP):
- d = d.setdefault(part, {})
- self.select_related = field_dict
- self.related_select_cols = []
-
- def add_extra(self, select, select_params, where, params, tables, order_by):
- """
- Adds data to the various extra_* attributes for user-created additions
- to the query.
- """
- if select:
- # We need to pair any placeholder markers in the 'select'
- # dictionary with their parameters in 'select_params' so that
- # subsequent updates to the select dictionary also adjust the
- # parameters appropriately.
- select_pairs = SortedDict()
- if select_params:
- param_iter = iter(select_params)
- else:
- param_iter = iter([])
- for name, entry in select.items():
- entry = force_text(entry)
- entry_params = []
- pos = entry.find("%s")
- while pos != -1:
- entry_params.append(next(param_iter))
- pos = entry.find("%s", pos + 2)
- select_pairs[name] = (entry, entry_params)
- # This is order preserving, since self.extra_select is a SortedDict.
- self.extra.update(select_pairs)
- if where or params:
- self.where.add(ExtraWhere(where, params), AND)
- if tables:
- self.extra_tables += tuple(tables)
- if order_by:
- self.extra_order_by = order_by
-
- def clear_deferred_loading(self):
- """
- Remove any fields from the deferred loading set.
- """
- self.deferred_loading = (set(), True)
-
- def add_deferred_loading(self, field_names):
- """
- Add the given list of model field names to the set of fields to
- exclude from loading from the database when automatic column selection
- is done. The new field names are added to any existing field names that
- are deferred (or removed from any existing field names that are marked
- as the only ones for immediate loading).
- """
- # Fields on related models are stored in the literal double-underscore
- # format, so that we can use a set datastructure. We do the foo__bar
- # splitting and handling when computing the SQL colum names (as part of
- # get_columns()).
- existing, defer = self.deferred_loading
- if defer:
- # Add to existing deferred names.
- self.deferred_loading = existing.union(field_names), True
- else:
- # Remove names from the set of any existing "immediate load" names.
- self.deferred_loading = existing.difference(field_names), False
-
- def add_immediate_loading(self, field_names):
- """
- Add the given list of model field names to the set of fields to
- retrieve when the SQL is executed ("immediate loading" fields). The
- field names replace any existing immediate loading field names. If
- there are field names already specified for deferred loading, those
- names are removed from the new field_names before storing the new names
- for immediate loading. (That is, immediate loading overrides any
- existing immediate values, but respects existing deferrals.)
- """
- existing, defer = self.deferred_loading
- field_names = set(field_names)
- if 'pk' in field_names:
- field_names.remove('pk')
- field_names.add(self.get_meta().pk.name)
-
- if defer:
- # Remove any existing deferred names from the current set before
- # setting the new names.
- self.deferred_loading = field_names.difference(existing), False
- else:
- # Replace any existing "immediate load" field names.
- self.deferred_loading = field_names, False
-
- def get_loaded_field_names(self):
- """
- If any fields are marked to be deferred, returns a dictionary mapping
- models to a set of names in those fields that will be loaded. If a
- model is not in the returned dictionary, none of it's fields are
- deferred.
-
- If no fields are marked for deferral, returns an empty dictionary.
- """
- # We cache this because we call this function multiple times
- # (compiler.fill_related_selections, query.iterator)
- try:
- return self._loaded_field_names_cache
- except AttributeError:
- collection = {}
- self.deferred_to_data(collection, self.get_loaded_field_names_cb)
- self._loaded_field_names_cache = collection
- return collection
-
- def get_loaded_field_names_cb(self, target, model, fields):
- """
- Callback used by get_deferred_field_names().
- """
- target[model] = set([f.name for f in fields])
-
- def set_aggregate_mask(self, names):
- "Set the mask of aggregates that will actually be returned by the SELECT"
- if names is None:
- self.aggregate_select_mask = None
- else:
- self.aggregate_select_mask = set(names)
- self._aggregate_select_cache = None
-
- def set_extra_mask(self, names):
- """
- Set the mask of extra select items that will be returned by SELECT,
- we don't actually remove them from the Query since they might be used
- later
- """
- if names is None:
- self.extra_select_mask = None
- else:
- self.extra_select_mask = set(names)
- self._extra_select_cache = None
-
- def _aggregate_select(self):
- """The SortedDict of aggregate columns that are not masked, and should
- be used in the SELECT clause.
-
- This result is cached for optimization purposes.
- """
- if self._aggregate_select_cache is not None:
- return self._aggregate_select_cache
- elif self.aggregate_select_mask is not None:
- self._aggregate_select_cache = SortedDict([
- (k,v) for k,v in self.aggregates.items()
- if k in self.aggregate_select_mask
- ])
- return self._aggregate_select_cache
- else:
- return self.aggregates
- aggregate_select = property(_aggregate_select)
-
- def _extra_select(self):
- if self._extra_select_cache is not None:
- return self._extra_select_cache
- elif self.extra_select_mask is not None:
- self._extra_select_cache = SortedDict([
- (k,v) for k,v in self.extra.items()
- if k in self.extra_select_mask
- ])
- return self._extra_select_cache
- else:
- return self.extra
- extra_select = property(_extra_select)
-
- def trim_start(self, names_with_path):
- """
- Trims joins from the start of the join path. The candidates for trim
- are the PathInfos in names_with_path structure that are m2m joins.
-
- Also sets the select column so the start matches the join.
-
- This method is meant to be used for generating the subquery joins &
- cols in split_exclude().
-
- Returns a lookup usable for doing outerq.filter(lookup=self). Returns
- also if the joins in the prefix contain a LEFT OUTER join.
- _"""
- all_paths = []
- for _, paths in names_with_path:
- all_paths.extend(paths)
- contains_louter = False
- for pos, path in enumerate(all_paths):
- if path.m2m:
- break
- if self.alias_map[self.tables[pos + 1]].join_type == self.LOUTER:
- contains_louter = True
- self.unref_alias(self.tables[pos])
- # The path.join_field is a Rel, lets get the other side's field
- join_field = path.join_field.field
- # Build the filter prefix.
- trimmed_prefix = []
- paths_in_prefix = pos
- for name, path in names_with_path:
- if paths_in_prefix - len(path) < 0:
- break
- trimmed_prefix.append(name)
- paths_in_prefix -= len(path)
- trimmed_prefix.append(
- join_field.foreign_related_fields[0].name)
- trimmed_prefix = LOOKUP_SEP.join(trimmed_prefix)
- # Lets still see if we can trim the first join from the inner query
- # (that is, self). We can't do this for LEFT JOINs because we would
- # miss those rows that have nothing on the outer side.
- if self.alias_map[self.tables[pos + 1]].join_type != self.LOUTER:
- select_fields = [r[0] for r in join_field.related_fields]
- select_alias = self.tables[pos + 1]
- self.unref_alias(self.tables[pos])
- extra_restriction = join_field.get_extra_restriction(
- self.where_class, None, self.tables[pos + 1])
- if extra_restriction:
- self.where.add(extra_restriction, AND)
- else:
- # TODO: It might be possible to trim more joins from the start of the
- # inner query if it happens to have a longer join chain containing the
- # values in select_fields. Lets punt this one for now.
- select_fields = [r[1] for r in join_field.related_fields]
- select_alias = self.tables[pos]
- self.select = [SelectInfo((select_alias, f.column), f) for f in select_fields]
- return trimmed_prefix, contains_louter
-
- def is_nullable(self, field):
- """
- A helper to check if the given field should be treated as nullable.
-
- Some backends treat '' as null and Django treats such fields as
- nullable for those backends. In such situations field.null can be
- False even if we should treat the field as nullable.
- """
- # We need to use DEFAULT_DB_ALIAS here, as QuerySet does not have
- # (nor should it have) knowledge of which connection is going to be
- # used. The proper fix would be to defer all decisions where
- # is_nullable() is needed to the compiler stage, but that is not easy
- # to do currently.
- if ((connections[DEFAULT_DB_ALIAS].features.interprets_empty_strings_as_nulls)
- and field.empty_strings_allowed):
- return True
- else:
- return field.null
-
-def get_order_dir(field, default='ASC'):
- """
- Returns the field name and direction for an order specification. For
- example, '-foo' is returned as ('foo', 'DESC').
-
- The 'default' param is used to indicate which way no prefix (or a '+'
- prefix) should sort. The '-' prefix always sorts the opposite way.
- """
- dirn = ORDER_DIR[default]
- if field[0] == '-':
- return field[1:], dirn[1]
- return field, dirn[0]
-
-
-def add_to_dict(data, key, value):
- """
- A helper function to add "value" to the set of values for "key", whether or
- not "key" already exists.
- """
- if key in data:
- data[key].add(value)
- else:
- data[key] = set([value])
-
-def is_reverse_o2o(field):
- """
- A little helper to check if the given field is reverse-o2o. The field is
- expected to be some sort of relation field or related object.
- """
- return not hasattr(field, 'rel') and field.field.unique
-
-def alias_diff(refcounts_before, refcounts_after):
- """
- Given the before and after copies of refcounts works out which aliases
- have been added to the after copy.
- """
- # Use -1 as default value so that any join that is created, then trimmed
- # is seen as added.
- return set(t for t in refcounts_after
- if refcounts_after[t] > refcounts_before.get(t, -1))
diff --git a/lib/python2.7/site-packages/django/db/models/sql/subqueries.py b/lib/python2.7/site-packages/django/db/models/sql/subqueries.py
deleted file mode 100644
index 6dc0005..0000000
--- a/lib/python2.7/site-packages/django/db/models/sql/subqueries.py
+++ /dev/null
@@ -1,297 +0,0 @@
-"""
-Query subclasses which provide extra functionality beyond simple data retrieval.
-"""
-
-from django.conf import settings
-from django.core.exceptions import FieldError
-from django.db import connections
-from django.db.models.constants import LOOKUP_SEP
-from django.db.models.fields import DateField, DateTimeField, FieldDoesNotExist
-from django.db.models.sql.constants import *
-from django.db.models.sql.datastructures import Date, DateTime
-from django.db.models.sql.query import Query
-from django.db.models.sql.where import AND, Constraint
-from django.utils.functional import Promise
-from django.utils.encoding import force_text
-from django.utils import six
-from django.utils import timezone
-
-
-__all__ = ['DeleteQuery', 'UpdateQuery', 'InsertQuery', 'DateQuery',
- 'DateTimeQuery', 'AggregateQuery']
-
-class DeleteQuery(Query):
- """
- Delete queries are done through this class, since they are more constrained
- than general queries.
- """
-
- compiler = 'SQLDeleteCompiler'
-
- def do_query(self, table, where, using):
- self.tables = [table]
- self.where = where
- self.get_compiler(using).execute_sql(None)
-
- def delete_batch(self, pk_list, using, field=None):
- """
- Set up and execute delete queries for all the objects in pk_list.
-
- More than one physical query may be executed if there are a
- lot of values in pk_list.
- """
- if not field:
- field = self.get_meta().pk
- for offset in range(0, len(pk_list), GET_ITERATOR_CHUNK_SIZE):
- where = self.where_class()
- where.add((Constraint(None, field.column, field), 'in',
- pk_list[offset:offset + GET_ITERATOR_CHUNK_SIZE]), AND)
- self.do_query(self.get_meta().db_table, where, using=using)
-
- def delete_qs(self, query, using):
- """
- Delete the queryset in one SQL query (if possible). For simple queries
- this is done by copying the query.query.where to self.query, for
- complex queries by using subquery.
- """
- innerq = query.query
- # Make sure the inner query has at least one table in use.
- innerq.get_initial_alias()
- # The same for our new query.
- self.get_initial_alias()
- innerq_used_tables = [t for t in innerq.tables
- if innerq.alias_refcount[t]]
- if ((not innerq_used_tables or innerq_used_tables == self.tables)
- and not len(innerq.having)):
- # There is only the base table in use in the query, and there are
- # no aggregate filtering going on.
- self.where = innerq.where
- else:
- pk = query.model._meta.pk
- if not connections[using].features.update_can_self_select:
- # We can't do the delete using subquery.
- values = list(query.values_list('pk', flat=True))
- if not values:
- return
- self.delete_batch(values, using)
- return
- else:
- innerq.clear_select_clause()
- innerq.select = [SelectInfo((self.get_initial_alias(), pk.column), None)]
- values = innerq
- where = self.where_class()
- where.add((Constraint(None, pk.column, pk), 'in', values), AND)
- self.where = where
- self.get_compiler(using).execute_sql(None)
-
-
-class UpdateQuery(Query):
- """
- Represents an "update" SQL query.
- """
-
- compiler = 'SQLUpdateCompiler'
-
- def __init__(self, *args, **kwargs):
- super(UpdateQuery, self).__init__(*args, **kwargs)
- self._setup_query()
-
- def _setup_query(self):
- """
- Runs on initialization and after cloning. Any attributes that would
- normally be set in __init__ should go in here, instead, so that they
- are also set up after a clone() call.
- """
- self.values = []
- self.related_ids = None
- if not hasattr(self, 'related_updates'):
- self.related_updates = {}
-
- def clone(self, klass=None, **kwargs):
- return super(UpdateQuery, self).clone(klass,
- related_updates=self.related_updates.copy(), **kwargs)
-
- def update_batch(self, pk_list, values, using):
- pk_field = self.get_meta().pk
- self.add_update_values(values)
- for offset in range(0, len(pk_list), GET_ITERATOR_CHUNK_SIZE):
- self.where = self.where_class()
- self.where.add((Constraint(None, pk_field.column, pk_field), 'in',
- pk_list[offset:offset + GET_ITERATOR_CHUNK_SIZE]),
- AND)
- self.get_compiler(using).execute_sql(None)
-
- def add_update_values(self, values):
- """
- Convert a dictionary of field name to value mappings into an update
- query. This is the entry point for the public update() method on
- querysets.
- """
- values_seq = []
- for name, val in six.iteritems(values):
- field, model, direct, m2m = self.get_meta().get_field_by_name(name)
- if not direct or m2m:
- raise FieldError('Cannot update model field %r (only non-relations and foreign keys permitted).' % field)
- if model:
- self.add_related_update(model, field, val)
- continue
- values_seq.append((field, model, val))
- return self.add_update_fields(values_seq)
-
- def add_update_fields(self, values_seq):
- """
- Turn a sequence of (field, model, value) triples into an update query.
- Used by add_update_values() as well as the "fast" update path when
- saving models.
- """
- # Check that no Promise object passes to the query. Refs #10498.
- values_seq = [(value[0], value[1], force_text(value[2]))
- if isinstance(value[2], Promise) else value
- for value in values_seq]
- self.values.extend(values_seq)
-
- def add_related_update(self, model, field, value):
- """
- Adds (name, value) to an update query for an ancestor model.
-
- Updates are coalesced so that we only run one update query per ancestor.
- """
- try:
- self.related_updates[model].append((field, None, value))
- except KeyError:
- self.related_updates[model] = [(field, None, value)]
-
- def get_related_updates(self):
- """
- Returns a list of query objects: one for each update required to an
- ancestor model. Each query will have the same filtering conditions as
- the current query but will only update a single table.
- """
- if not self.related_updates:
- return []
- result = []
- for model, values in six.iteritems(self.related_updates):
- query = UpdateQuery(model)
- query.values = values
- if self.related_ids is not None:
- query.add_filter(('pk__in', self.related_ids))
- result.append(query)
- return result
-
-class InsertQuery(Query):
- compiler = 'SQLInsertCompiler'
-
- def __init__(self, *args, **kwargs):
- super(InsertQuery, self).__init__(*args, **kwargs)
- self.fields = []
- self.objs = []
-
- def clone(self, klass=None, **kwargs):
- extras = {
- 'fields': self.fields[:],
- 'objs': self.objs[:],
- 'raw': self.raw,
- }
- extras.update(kwargs)
- return super(InsertQuery, self).clone(klass, **extras)
-
- def insert_values(self, fields, objs, raw=False):
- """
- Set up the insert query from the 'insert_values' dictionary. The
- dictionary gives the model field names and their target values.
-
- If 'raw_values' is True, the values in the 'insert_values' dictionary
- are inserted directly into the query, rather than passed as SQL
- parameters. This provides a way to insert NULL and DEFAULT keywords
- into the query, for example.
- """
- self.fields = fields
- # Check that no Promise object reaches the DB. Refs #10498.
- for field in fields:
- for obj in objs:
- value = getattr(obj, field.attname)
- if isinstance(value, Promise):
- setattr(obj, field.attname, force_text(value))
- self.objs = objs
- self.raw = raw
-
-class DateQuery(Query):
- """
- A DateQuery is a normal query, except that it specifically selects a single
- date field. This requires some special handling when converting the results
- back to Python objects, so we put it in a separate class.
- """
-
- compiler = 'SQLDateCompiler'
-
- def add_select(self, field_name, lookup_type, order='ASC'):
- """
- Converts the query into an extraction query.
- """
- try:
- result = self.setup_joins(
- field_name.split(LOOKUP_SEP),
- self.get_meta(),
- self.get_initial_alias(),
- )
- except FieldError:
- raise FieldDoesNotExist("%s has no field named '%s'" % (
- self.get_meta().object_name, field_name
- ))
- field = result[0]
- self._check_field(field) # overridden in DateTimeQuery
- alias = result[3][-1]
- select = self._get_select((alias, field.column), lookup_type)
- self.clear_select_clause()
- self.select = [SelectInfo(select, None)]
- self.distinct = True
- self.order_by = [1] if order == 'ASC' else [-1]
-
- if field.null:
- self.add_filter(("%s__isnull" % field_name, False))
-
- def _check_field(self, field):
- assert isinstance(field, DateField), \
- "%r isn't a DateField." % field.name
- if settings.USE_TZ:
- assert not isinstance(field, DateTimeField), \
- "%r is a DateTimeField, not a DateField." % field.name
-
- def _get_select(self, col, lookup_type):
- return Date(col, lookup_type)
-
-class DateTimeQuery(DateQuery):
- """
- A DateTimeQuery is like a DateQuery but for a datetime field. If time zone
- support is active, the tzinfo attribute contains the time zone to use for
- converting the values before truncating them. Otherwise it's set to None.
- """
-
- compiler = 'SQLDateTimeCompiler'
-
- def clone(self, klass=None, memo=None, **kwargs):
- if 'tzinfo' not in kwargs and hasattr(self, 'tzinfo'):
- kwargs['tzinfo'] = self.tzinfo
- return super(DateTimeQuery, self).clone(klass, memo, **kwargs)
-
- def _check_field(self, field):
- assert isinstance(field, DateTimeField), \
- "%r isn't a DateTimeField." % field.name
-
- def _get_select(self, col, lookup_type):
- if self.tzinfo is None:
- tzname = None
- else:
- tzname = timezone._get_timezone_name(self.tzinfo)
- return DateTime(col, lookup_type, tzname)
-
-class AggregateQuery(Query):
- """
- An AggregateQuery takes another query as a parameter to the FROM
- clause and only selects the elements in the provided list.
- """
-
- compiler = 'SQLAggregateCompiler'
-
- def add_subquery(self, query, using):
- self.subquery, self.sub_params = query.get_compiler(using).as_sql(with_col_aliases=True)
diff --git a/lib/python2.7/site-packages/django/db/models/sql/where.py b/lib/python2.7/site-packages/django/db/models/sql/where.py
deleted file mode 100644
index 2a342d4..0000000
--- a/lib/python2.7/site-packages/django/db/models/sql/where.py
+++ /dev/null
@@ -1,419 +0,0 @@
-"""
-Code to manage the creation and SQL rendering of 'where' constraints.
-"""
-
-from __future__ import absolute_import
-
-import datetime
-from itertools import repeat
-
-from django.conf import settings
-from django.db.models.fields import DateTimeField, Field
-from django.db.models.sql.datastructures import EmptyResultSet, Empty
-from django.db.models.sql.aggregates import Aggregate
-from django.utils.itercompat import is_iterator
-from django.utils.six.moves import xrange
-from django.utils import timezone
-from django.utils import tree
-
-# Connection types
-AND = 'AND'
-OR = 'OR'
-
-class EmptyShortCircuit(Exception):
- """
- Internal exception used to indicate that a "matches nothing" node should be
- added to the where-clause.
- """
- pass
-
-class WhereNode(tree.Node):
- """
- Used to represent the SQL where-clause.
-
- The class is tied to the Query class that created it (in order to create
- the correct SQL).
-
- A child is usually a tuple of:
- (Constraint(alias, targetcol, field), lookup_type, value)
- where value can be either raw Python value, or Query, ExpressionNode or
- something else knowing how to turn itself into SQL.
-
- However, a child could also be any class with as_sql() and either
- relabeled_clone() method or relabel_aliases() and clone() methods. The
- second alternative should be used if the alias is not the only mutable
- variable.
- """
- default = AND
-
- def _prepare_data(self, data):
- """
- Prepare data for addition to the tree. If the data is a list or tuple,
- it is expected to be of the form (obj, lookup_type, value), where obj
- is a Constraint object, and is then slightly munged before being
- stored (to avoid storing any reference to field objects). Otherwise,
- the 'data' is stored unchanged and can be any class with an 'as_sql()'
- method.
- """
- if not isinstance(data, (list, tuple)):
- return data
- obj, lookup_type, value = data
- if is_iterator(value):
- # Consume any generators immediately, so that we can determine
- # emptiness and transform any non-empty values correctly.
- value = list(value)
-
- # The "value_annotation" parameter is used to pass auxilliary information
- # about the value(s) to the query construction. Specifically, datetime
- # and empty values need special handling. Other types could be used
- # here in the future (using Python types is suggested for consistency).
- if (isinstance(value, datetime.datetime)
- or (isinstance(obj.field, DateTimeField) and lookup_type != 'isnull')):
- value_annotation = datetime.datetime
- elif hasattr(value, 'value_annotation'):
- value_annotation = value.value_annotation
- else:
- value_annotation = bool(value)
-
- if hasattr(obj, "prepare"):
- value = obj.prepare(lookup_type, value)
- return (obj, lookup_type, value_annotation, value)
-
- def as_sql(self, qn, connection):
- """
- Returns the SQL version of the where clause and the value to be
- substituted in. Returns '', [] if this node matches everything,
- None, [] if this node is empty, and raises EmptyResultSet if this
- node can't match anything.
- """
- # Note that the logic here is made slightly more complex than
- # necessary because there are two kind of empty nodes: Nodes
- # containing 0 children, and nodes that are known to match everything.
- # A match-everything node is different than empty node (which also
- # technically matches everything) for backwards compatibility reasons.
- # Refs #5261.
- result = []
- result_params = []
- everything_childs, nothing_childs = 0, 0
- non_empty_childs = len(self.children)
-
- for child in self.children:
- try:
- if hasattr(child, 'as_sql'):
- sql, params = child.as_sql(qn=qn, connection=connection)
- else:
- # A leaf node in the tree.
- sql, params = self.make_atom(child, qn, connection)
- except EmptyResultSet:
- nothing_childs += 1
- else:
- if sql:
- result.append(sql)
- result_params.extend(params)
- else:
- if sql is None:
- # Skip empty childs totally.
- non_empty_childs -= 1
- continue
- everything_childs += 1
- # Check if this node matches nothing or everything.
- # First check the amount of full nodes and empty nodes
- # to make this node empty/full.
- if self.connector == AND:
- full_needed, empty_needed = non_empty_childs, 1
- else:
- full_needed, empty_needed = 1, non_empty_childs
- # Now, check if this node is full/empty using the
- # counts.
- if empty_needed - nothing_childs <= 0:
- if self.negated:
- return '', []
- else:
- raise EmptyResultSet
- if full_needed - everything_childs <= 0:
- if self.negated:
- raise EmptyResultSet
- else:
- return '', []
-
- if non_empty_childs == 0:
- # All the child nodes were empty, so this one is empty, too.
- return None, []
- conn = ' %s ' % self.connector
- sql_string = conn.join(result)
- if sql_string:
- if self.negated:
- # Some backends (Oracle at least) need parentheses
- # around the inner SQL in the negated case, even if the
- # inner SQL contains just a single expression.
- sql_string = 'NOT (%s)' % sql_string
- elif len(result) > 1:
- sql_string = '(%s)' % sql_string
- return sql_string, result_params
-
- def get_cols(self):
- cols = []
- for child in self.children:
- if hasattr(child, 'get_cols'):
- cols.extend(child.get_cols())
- else:
- if isinstance(child[0], Constraint):
- cols.append((child[0].alias, child[0].col))
- if hasattr(child[3], 'get_cols'):
- cols.extend(child[3].get_cols())
- return cols
-
- def make_atom(self, child, qn, connection):
- """
- Turn a tuple (Constraint(table_alias, column_name, db_type),
- lookup_type, value_annotation, params) into valid SQL.
-
- The first item of the tuple may also be an Aggregate.
-
- Returns the string for the SQL fragment and the parameters to use for
- it.
- """
- lvalue, lookup_type, value_annotation, params_or_value = child
- field_internal_type = lvalue.field.get_internal_type() if lvalue.field else None
-
- if isinstance(lvalue, Constraint):
- try:
- lvalue, params = lvalue.process(lookup_type, params_or_value, connection)
- except EmptyShortCircuit:
- raise EmptyResultSet
- elif isinstance(lvalue, Aggregate):
- params = lvalue.field.get_db_prep_lookup(lookup_type, params_or_value, connection)
- else:
- raise TypeError("'make_atom' expects a Constraint or an Aggregate "
- "as the first item of its 'child' argument.")
-
- if isinstance(lvalue, tuple):
- # A direct database column lookup.
- field_sql, field_params = self.sql_for_columns(lvalue, qn, connection, field_internal_type), []
- else:
- # A smart object with an as_sql() method.
- field_sql, field_params = lvalue.as_sql(qn, connection)
-
- is_datetime_field = value_annotation is datetime.datetime
- cast_sql = connection.ops.datetime_cast_sql() if is_datetime_field else '%s'
-
- if hasattr(params, 'as_sql'):
- extra, params = params.as_sql(qn, connection)
- cast_sql = ''
- else:
- extra = ''
-
- params = field_params + params
-
- if (len(params) == 1 and params[0] == '' and lookup_type == 'exact'
- and connection.features.interprets_empty_strings_as_nulls):
- lookup_type = 'isnull'
- value_annotation = True
-
- if lookup_type in connection.operators:
- format = "%s %%s %%s" % (connection.ops.lookup_cast(lookup_type),)
- return (format % (field_sql,
- connection.operators[lookup_type] % cast_sql,
- extra), params)
-
- if lookup_type == 'in':
- if not value_annotation:
- raise EmptyResultSet
- if extra:
- return ('%s IN %s' % (field_sql, extra), params)
- max_in_list_size = connection.ops.max_in_list_size()
- if max_in_list_size and len(params) > max_in_list_size:
- # Break up the params list into an OR of manageable chunks.
- in_clause_elements = ['(']
- for offset in xrange(0, len(params), max_in_list_size):
- if offset > 0:
- in_clause_elements.append(' OR ')
- in_clause_elements.append('%s IN (' % field_sql)
- group_size = min(len(params) - offset, max_in_list_size)
- param_group = ', '.join(repeat('%s', group_size))
- in_clause_elements.append(param_group)
- in_clause_elements.append(')')
- in_clause_elements.append(')')
- return ''.join(in_clause_elements), params
- else:
- return ('%s IN (%s)' % (field_sql,
- ', '.join(repeat('%s', len(params)))),
- params)
- elif lookup_type in ('range', 'year'):
- return ('%s BETWEEN %%s and %%s' % field_sql, params)
- elif is_datetime_field and lookup_type in ('month', 'day', 'week_day',
- 'hour', 'minute', 'second'):
- tzname = timezone.get_current_timezone_name() if settings.USE_TZ else None
- sql, tz_params = connection.ops.datetime_extract_sql(lookup_type, field_sql, tzname)
- return ('%s = %%s' % sql, tz_params + params)
- elif lookup_type in ('month', 'day', 'week_day'):
- return ('%s = %%s'
- % connection.ops.date_extract_sql(lookup_type, field_sql), params)
- elif lookup_type == 'isnull':
- assert value_annotation in (True, False), "Invalid value_annotation for isnull"
- return ('%s IS %sNULL' % (field_sql, ('' if value_annotation else 'NOT ')), ())
- elif lookup_type == 'search':
- return (connection.ops.fulltext_search_sql(field_sql), params)
- elif lookup_type in ('regex', 'iregex'):
- return connection.ops.regex_lookup(lookup_type) % (field_sql, cast_sql), params
-
- raise TypeError('Invalid lookup_type: %r' % lookup_type)
-
- def sql_for_columns(self, data, qn, connection, internal_type=None):
- """
- Returns the SQL fragment used for the left-hand side of a column
- constraint (for example, the "T1.foo" portion in the clause
- "WHERE ... T1.foo = 6") and a list of parameters.
- """
- table_alias, name, db_type = data
- if table_alias:
- lhs = '%s.%s' % (qn(table_alias), qn(name))
- else:
- lhs = qn(name)
- return connection.ops.field_cast_sql(db_type, internal_type) % lhs
-
- def relabel_aliases(self, change_map):
- """
- Relabels the alias values of any children. 'change_map' is a dictionary
- mapping old (current) alias values to the new values.
- """
- for pos, child in enumerate(self.children):
- if hasattr(child, 'relabel_aliases'):
- # For example another WhereNode
- child.relabel_aliases(change_map)
- elif isinstance(child, (list, tuple)):
- # tuple starting with Constraint
- child = (child[0].relabeled_clone(change_map),) + child[1:]
- if hasattr(child[3], 'relabeled_clone'):
- child = (child[0], child[1], child[2]) + (
- child[3].relabeled_clone(change_map),)
- self.children[pos] = child
-
- def clone(self):
- """
- Creates a clone of the tree. Must only be called on root nodes (nodes
- with empty subtree_parents). Childs must be either (Contraint, lookup,
- value) tuples, or objects supporting .clone().
- """
- clone = self.__class__._new_instance(
- children=[], connector=self.connector, negated=self.negated)
- for child in self.children:
- if hasattr(child, 'clone'):
- clone.children.append(child.clone())
- else:
- clone.children.append(child)
- return clone
-
-class EmptyWhere(WhereNode):
-
- def add(self, data, connector):
- return
-
- def as_sql(self, qn=None, connection=None):
- raise EmptyResultSet
-
-class EverythingNode(object):
- """
- A node that matches everything.
- """
-
- def as_sql(self, qn=None, connection=None):
- return '', []
-
-
-class NothingNode(object):
- """
- A node that matches nothing.
- """
- def as_sql(self, qn=None, connection=None):
- raise EmptyResultSet
-
-
-class ExtraWhere(object):
- def __init__(self, sqls, params):
- self.sqls = sqls
- self.params = params
-
- def as_sql(self, qn=None, connection=None):
- sqls = ["(%s)" % sql for sql in self.sqls]
- return " AND ".join(sqls), list(self.params or ())
-
-
-class Constraint(object):
- """
- An object that can be passed to WhereNode.add() and knows how to
- pre-process itself prior to including in the WhereNode.
- """
- def __init__(self, alias, col, field):
- self.alias, self.col, self.field = alias, col, field
-
- def prepare(self, lookup_type, value):
- if self.field:
- return self.field.get_prep_lookup(lookup_type, value)
- return value
-
- def process(self, lookup_type, value, connection):
- """
- Returns a tuple of data suitable for inclusion in a WhereNode
- instance.
- """
- # Because of circular imports, we need to import this here.
- from django.db.models.base import ObjectDoesNotExist
- try:
- if self.field:
- params = self.field.get_db_prep_lookup(lookup_type, value,
- connection=connection, prepared=True)
- db_type = self.field.db_type(connection=connection)
- else:
- # This branch is used at times when we add a comparison to NULL
- # (we don't really want to waste time looking up the associated
- # field object at the calling location).
- params = Field().get_db_prep_lookup(lookup_type, value,
- connection=connection, prepared=True)
- db_type = None
- except ObjectDoesNotExist:
- raise EmptyShortCircuit
-
- return (self.alias, self.col, db_type), params
-
- def relabeled_clone(self, change_map):
- if self.alias not in change_map:
- return self
- else:
- new = Empty()
- new.__class__ = self.__class__
- new.alias, new.col, new.field = change_map[self.alias], self.col, self.field
- return new
-
-class SubqueryConstraint(object):
- def __init__(self, alias, columns, targets, query_object):
- self.alias = alias
- self.columns = columns
- self.targets = targets
- self.query_object = query_object
-
- def as_sql(self, qn, connection):
- query = self.query_object
-
- # QuerySet was sent
- if hasattr(query, 'values'):
- if query._db and connection.alias != query._db:
- raise ValueError("Can't do subqueries with queries on different DBs.")
- # Do not override already existing values.
- if not hasattr(query, 'field_names'):
- query = query.values(*self.targets)
- else:
- query = query._clone()
- query = query.query
- query.clear_ordering(True)
-
- query_compiler = query.get_compiler(connection=connection)
- return query_compiler.as_subquery_condition(self.alias, self.columns, qn)
-
- def relabel_aliases(self, change_map):
- self.alias = change_map.get(self.alias, self.alias)
-
- def clone(self):
- return self.__class__(
- self.alias, self.columns, self.targets,
- self.query_object)
diff --git a/lib/python2.7/site-packages/django/db/transaction.py b/lib/python2.7/site-packages/django/db/transaction.py
deleted file mode 100644
index f75137a..0000000
--- a/lib/python2.7/site-packages/django/db/transaction.py
+++ /dev/null
@@ -1,541 +0,0 @@
-"""
-This module implements a transaction manager that can be used to define
-transaction handling in a request or view function. It is used by transaction
-control middleware and decorators.
-
-The transaction manager can be in managed or in auto state. Auto state means the
-system is using a commit-on-save strategy (actually it's more like
-commit-on-change). As soon as the .save() or .delete() (or related) methods are
-called, a commit is made.
-
-Managed transactions don't do those commits, but will need some kind of manual
-or implicit commits or rollbacks.
-"""
-
-import warnings
-
-from functools import wraps
-
-from django.db import (
- connections, DEFAULT_DB_ALIAS,
- DatabaseError, Error, ProgrammingError)
-from django.utils.decorators import available_attrs
-
-
-class TransactionManagementError(ProgrammingError):
- """
- This exception is thrown when transaction management is used improperly.
- """
- pass
-
-################
-# Private APIs #
-################
-
-def get_connection(using=None):
- """
- Get a database connection by name, or the default database connection
- if no name is provided.
- """
- if using is None:
- using = DEFAULT_DB_ALIAS
- return connections[using]
-
-###########################
-# Deprecated private APIs #
-###########################
-
-def abort(using=None):
- """
- Roll back any ongoing transactions and clean the transaction management
- state of the connection.
-
- This method is to be used only in cases where using balanced
- leave_transaction_management() calls isn't possible. For example after a
- request has finished, the transaction state isn't known, yet the connection
- must be cleaned up for the next request.
- """
- get_connection(using).abort()
-
-def enter_transaction_management(managed=True, using=None, forced=False):
- """
- Enters transaction management for a running thread. It must be balanced with
- the appropriate leave_transaction_management call, since the actual state is
- managed as a stack.
-
- The state and dirty flag are carried over from the surrounding block or
- from the settings, if there is no surrounding block (dirty is always false
- when no current block is running).
- """
- get_connection(using).enter_transaction_management(managed, forced)
-
-def leave_transaction_management(using=None):
- """
- Leaves transaction management for a running thread. A dirty flag is carried
- over to the surrounding block, as a commit will commit all changes, even
- those from outside. (Commits are on connection level.)
- """
- get_connection(using).leave_transaction_management()
-
-def is_dirty(using=None):
- """
- Returns True if the current transaction requires a commit for changes to
- happen.
- """
- return get_connection(using).is_dirty()
-
-def set_dirty(using=None):
- """
- Sets a dirty flag for the current thread and code streak. This can be used
- to decide in a managed block of code to decide whether there are open
- changes waiting for commit.
- """
- get_connection(using).set_dirty()
-
-def set_clean(using=None):
- """
- Resets a dirty flag for the current thread and code streak. This can be used
- to decide in a managed block of code to decide whether a commit or rollback
- should happen.
- """
- get_connection(using).set_clean()
-
-def is_managed(using=None):
- warnings.warn("'is_managed' is deprecated.",
- PendingDeprecationWarning, stacklevel=2)
-
-def managed(flag=True, using=None):
- warnings.warn("'managed' no longer serves a purpose.",
- PendingDeprecationWarning, stacklevel=2)
-
-def commit_unless_managed(using=None):
- warnings.warn("'commit_unless_managed' is now a no-op.",
- PendingDeprecationWarning, stacklevel=2)
-
-def rollback_unless_managed(using=None):
- warnings.warn("'rollback_unless_managed' is now a no-op.",
- PendingDeprecationWarning, stacklevel=2)
-
-###############
-# Public APIs #
-###############
-
-def get_autocommit(using=None):
- """
- Get the autocommit status of the connection.
- """
- return get_connection(using).get_autocommit()
-
-def set_autocommit(autocommit, using=None):
- """
- Set the autocommit status of the connection.
- """
- return get_connection(using).set_autocommit(autocommit)
-
-def commit(using=None):
- """
- Commits a transaction and resets the dirty flag.
- """
- get_connection(using).commit()
-
-def rollback(using=None):
- """
- Rolls back a transaction and resets the dirty flag.
- """
- get_connection(using).rollback()
-
-def savepoint(using=None):
- """
- Creates a savepoint (if supported and required by the backend) inside the
- current transaction. Returns an identifier for the savepoint that will be
- used for the subsequent rollback or commit.
- """
- return get_connection(using).savepoint()
-
-def savepoint_rollback(sid, using=None):
- """
- Rolls back the most recent savepoint (if one exists). Does nothing if
- savepoints are not supported.
- """
- get_connection(using).savepoint_rollback(sid)
-
-def savepoint_commit(sid, using=None):
- """
- Commits the most recent savepoint (if one exists). Does nothing if
- savepoints are not supported.
- """
- get_connection(using).savepoint_commit(sid)
-
-def clean_savepoints(using=None):
- """
- Resets the counter used to generate unique savepoint ids in this thread.
- """
- get_connection(using).clean_savepoints()
-
-def get_rollback(using=None):
- """
- Gets the "needs rollback" flag -- for *advanced use* only.
- """
- return get_connection(using).get_rollback()
-
-def set_rollback(rollback, using=None):
- """
- Sets or unsets the "needs rollback" flag -- for *advanced use* only.
-
- When `rollback` is `True`, it triggers a rollback when exiting the
- innermost enclosing atomic block that has `savepoint=True` (that's the
- default). Use this to force a rollback without raising an exception.
-
- When `rollback` is `False`, it prevents such a rollback. Use this only
- after rolling back to a known-good state! Otherwise, you break the atomic
- block and data corruption may occur.
- """
- return get_connection(using).set_rollback(rollback)
-
-#################################
-# Decorators / context managers #
-#################################
-
-class Atomic(object):
- """
- This class guarantees the atomic execution of a given block.
-
- An instance can be used either as a decorator or as a context manager.
-
- When it's used as a decorator, __call__ wraps the execution of the
- decorated function in the instance itself, used as a context manager.
-
- When it's used as a context manager, __enter__ creates a transaction or a
- savepoint, depending on whether a transaction is already in progress, and
- __exit__ commits the transaction or releases the savepoint on normal exit,
- and rolls back the transaction or to the savepoint on exceptions.
-
- It's possible to disable the creation of savepoints if the goal is to
- ensure that some code runs within a transaction without creating overhead.
-
- A stack of savepoints identifiers is maintained as an attribute of the
- connection. None denotes the absence of a savepoint.
-
- This allows reentrancy even if the same AtomicWrapper is reused. For
- example, it's possible to define `oa = @atomic('other')` and use `@oa` or
- `with oa:` multiple times.
-
- Since database connections are thread-local, this is thread-safe.
- """
-
- def __init__(self, using, savepoint):
- self.using = using
- self.savepoint = savepoint
-
- def __enter__(self):
- connection = get_connection(self.using)
-
- if not connection.in_atomic_block:
- # Reset state when entering an outermost atomic block.
- connection.commit_on_exit = True
- connection.needs_rollback = False
- if not connection.get_autocommit():
- # Some database adapters (namely sqlite3) don't handle
- # transactions and savepoints properly when autocommit is off.
- # Turning autocommit back on isn't an option; it would trigger
- # a premature commit. Give up if that happens.
- if connection.features.autocommits_when_autocommit_is_off:
- raise TransactionManagementError(
- "Your database backend doesn't behave properly when "
- "autocommit is off. Turn it on before using 'atomic'.")
- # When entering an atomic block with autocommit turned off,
- # Django should only use savepoints and shouldn't commit.
- # This requires at least a savepoint for the outermost block.
- if not self.savepoint:
- raise TransactionManagementError(
- "The outermost 'atomic' block cannot use "
- "savepoint = False when autocommit is off.")
- # Pretend we're already in an atomic block to bypass the code
- # that disables autocommit to enter a transaction, and make a
- # note to deal with this case in __exit__.
- connection.in_atomic_block = True
- connection.commit_on_exit = False
-
- if connection.in_atomic_block:
- # We're already in a transaction; create a savepoint, unless we
- # were told not to or we're already waiting for a rollback. The
- # second condition avoids creating useless savepoints and prevents
- # overwriting needs_rollback until the rollback is performed.
- if self.savepoint and not connection.needs_rollback:
- sid = connection.savepoint()
- connection.savepoint_ids.append(sid)
- else:
- connection.savepoint_ids.append(None)
- else:
- # We aren't in a transaction yet; create one.
- # The usual way to start a transaction is to turn autocommit off.
- # However, some database adapters (namely sqlite3) don't handle
- # transactions and savepoints properly when autocommit is off.
- # In such cases, start an explicit transaction instead, which has
- # the side-effect of disabling autocommit.
- if connection.features.autocommits_when_autocommit_is_off:
- connection._start_transaction_under_autocommit()
- connection.autocommit = False
- else:
- connection.set_autocommit(False)
- connection.in_atomic_block = True
-
- def __exit__(self, exc_type, exc_value, traceback):
- connection = get_connection(self.using)
-
- if connection.savepoint_ids:
- sid = connection.savepoint_ids.pop()
- else:
- # Prematurely unset this flag to allow using commit or rollback.
- connection.in_atomic_block = False
-
- try:
- if connection.closed_in_transaction:
- # The database will perform a rollback by itself.
- # Wait until we exit the outermost block.
- pass
-
- elif exc_type is None and not connection.needs_rollback:
- if connection.in_atomic_block:
- # Release savepoint if there is one
- if sid is not None:
- try:
- connection.savepoint_commit(sid)
- except DatabaseError:
- try:
- connection.savepoint_rollback(sid)
- except Error:
- # If rolling back to a savepoint fails, mark for
- # rollback at a higher level and avoid shadowing
- # the original exception.
- connection.needs_rollback = True
- raise
- else:
- # Commit transaction
- try:
- connection.commit()
- except DatabaseError:
- try:
- connection.rollback()
- except Error:
- # An error during rollback means that something
- # went wrong with the connection. Drop it.
- connection.close()
- raise
- else:
- # This flag will be set to True again if there isn't a savepoint
- # allowing to perform the rollback at this level.
- connection.needs_rollback = False
- if connection.in_atomic_block:
- # Roll back to savepoint if there is one, mark for rollback
- # otherwise.
- if sid is None:
- connection.needs_rollback = True
- else:
- try:
- connection.savepoint_rollback(sid)
- except Error:
- # If rolling back to a savepoint fails, mark for
- # rollback at a higher level and avoid shadowing
- # the original exception.
- connection.needs_rollback = True
- else:
- # Roll back transaction
- try:
- connection.rollback()
- except Error:
- # An error during rollback means that something
- # went wrong with the connection. Drop it.
- connection.close()
-
- finally:
- # Outermost block exit when autocommit was enabled.
- if not connection.in_atomic_block:
- if connection.closed_in_transaction:
- connection.connection = None
- elif connection.features.autocommits_when_autocommit_is_off:
- connection.autocommit = True
- else:
- connection.set_autocommit(True)
- # Outermost block exit when autocommit was disabled.
- elif not connection.savepoint_ids and not connection.commit_on_exit:
- if connection.closed_in_transaction:
- connection.connection = None
- else:
- connection.in_atomic_block = False
-
- def __call__(self, func):
- @wraps(func, assigned=available_attrs(func))
- def inner(*args, **kwargs):
- with self:
- return func(*args, **kwargs)
- return inner
-
-
-def atomic(using=None, savepoint=True):
- # Bare decorator: @atomic -- although the first argument is called
- # `using`, it's actually the function being decorated.
- if callable(using):
- return Atomic(DEFAULT_DB_ALIAS, savepoint)(using)
- # Decorator: @atomic(...) or context manager: with atomic(...): ...
- else:
- return Atomic(using, savepoint)
-
-
-def _non_atomic_requests(view, using):
- try:
- view._non_atomic_requests.add(using)
- except AttributeError:
- view._non_atomic_requests = set([using])
- return view
-
-
-def non_atomic_requests(using=None):
- if callable(using):
- return _non_atomic_requests(using, DEFAULT_DB_ALIAS)
- else:
- if using is None:
- using = DEFAULT_DB_ALIAS
- return lambda view: _non_atomic_requests(view, using)
-
-
-############################################
-# Deprecated decorators / context managers #
-############################################
-
-class Transaction(object):
- """
- Acts as either a decorator, or a context manager. If it's a decorator it
- takes a function and returns a wrapped function. If it's a contextmanager
- it's used with the ``with`` statement. In either event entering/exiting
- are called before and after, respectively, the function/block is executed.
-
- autocommit, commit_on_success, and commit_manually contain the
- implementations of entering and exiting.
- """
- def __init__(self, entering, exiting, using):
- self.entering = entering
- self.exiting = exiting
- self.using = using
-
- def __enter__(self):
- self.entering(self.using)
-
- def __exit__(self, exc_type, exc_value, traceback):
- self.exiting(exc_type, self.using)
-
- def __call__(self, func):
- @wraps(func)
- def inner(*args, **kwargs):
- with self:
- return func(*args, **kwargs)
- return inner
-
-def _transaction_func(entering, exiting, using):
- """
- Takes 3 things, an entering function (what to do to start this block of
- transaction management), an exiting function (what to do to end it, on both
- success and failure, and using which can be: None, indiciating using is
- DEFAULT_DB_ALIAS, a callable, indicating that using is DEFAULT_DB_ALIAS and
- to return the function already wrapped.
-
- Returns either a Transaction objects, which is both a decorator and a
- context manager, or a wrapped function, if using is a callable.
- """
- # Note that although the first argument is *called* `using`, it
- # may actually be a function; @autocommit and @autocommit('foo')
- # are both allowed forms.
- if using is None:
- using = DEFAULT_DB_ALIAS
- if callable(using):
- return Transaction(entering, exiting, DEFAULT_DB_ALIAS)(using)
- return Transaction(entering, exiting, using)
-
-
-def autocommit(using=None):
- """
- Decorator that activates commit on save. This is Django's default behavior;
- this decorator is useful if you globally activated transaction management in
- your settings file and want the default behavior in some view functions.
- """
- warnings.warn("autocommit is deprecated in favor of set_autocommit.",
- PendingDeprecationWarning, stacklevel=2)
-
- def entering(using):
- enter_transaction_management(managed=False, using=using)
-
- def exiting(exc_type, using):
- leave_transaction_management(using=using)
-
- return _transaction_func(entering, exiting, using)
-
-def commit_on_success(using=None):
- """
- This decorator activates commit on response. This way, if the view function
- runs successfully, a commit is made; if the viewfunc produces an exception,
- a rollback is made. This is one of the most common ways to do transaction
- control in Web apps.
- """
- warnings.warn("commit_on_success is deprecated in favor of atomic.",
- PendingDeprecationWarning, stacklevel=2)
-
- def entering(using):
- enter_transaction_management(using=using)
-
- def exiting(exc_type, using):
- try:
- if exc_type is not None:
- if is_dirty(using=using):
- rollback(using=using)
- else:
- if is_dirty(using=using):
- try:
- commit(using=using)
- except:
- rollback(using=using)
- raise
- finally:
- leave_transaction_management(using=using)
-
- return _transaction_func(entering, exiting, using)
-
-def commit_manually(using=None):
- """
- Decorator that activates manual transaction control. It just disables
- automatic transaction control and doesn't do any commit/rollback of its
- own -- it's up to the user to call the commit and rollback functions
- themselves.
- """
- warnings.warn("commit_manually is deprecated in favor of set_autocommit.",
- PendingDeprecationWarning, stacklevel=2)
-
- def entering(using):
- enter_transaction_management(using=using)
-
- def exiting(exc_type, using):
- leave_transaction_management(using=using)
-
- return _transaction_func(entering, exiting, using)
-
-def commit_on_success_unless_managed(using=None, savepoint=False):
- """
- Transitory API to preserve backwards-compatibility while refactoring.
-
- Once the legacy transaction management is fully deprecated, this should
- simply be replaced by atomic. Until then, it's necessary to guarantee that
- a commit occurs on exit, which atomic doesn't do when it's nested.
-
- Unlike atomic, savepoint defaults to False because that's closer to the
- legacy behavior.
- """
- connection = get_connection(using)
- if connection.get_autocommit() or connection.in_atomic_block:
- return atomic(using, savepoint)
- else:
- def entering(using):
- pass
-
- def exiting(exc_type, using):
- set_dirty(using=using)
-
- return _transaction_func(entering, exiting, using)
diff --git a/lib/python2.7/site-packages/django/db/utils.py b/lib/python2.7/site-packages/django/db/utils.py
deleted file mode 100644
index eb5708c..0000000
--- a/lib/python2.7/site-packages/django/db/utils.py
+++ /dev/null
@@ -1,282 +0,0 @@
-from functools import wraps
-import os
-import pkgutil
-from threading import local
-import warnings
-
-from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured
-from django.utils.functional import cached_property
-from django.utils.importlib import import_module
-from django.utils.module_loading import import_by_path
-from django.utils._os import upath
-from django.utils import six
-
-
-DEFAULT_DB_ALIAS = 'default'
-
-
-class Error(Exception if six.PY3 else StandardError):
- pass
-
-
-class InterfaceError(Error):
- pass
-
-
-class DatabaseError(Error):
- pass
-
-
-class DataError(DatabaseError):
- pass
-
-
-class OperationalError(DatabaseError):
- pass
-
-
-class IntegrityError(DatabaseError):
- pass
-
-
-class InternalError(DatabaseError):
- pass
-
-
-class ProgrammingError(DatabaseError):
- pass
-
-
-class NotSupportedError(DatabaseError):
- pass
-
-
-class DatabaseErrorWrapper(object):
- """
- Context manager and decorator that re-throws backend-specific database
- exceptions using Django's common wrappers.
- """
-
- def __init__(self, wrapper):
- """
- wrapper is a database wrapper.
-
- It must have a Database attribute defining PEP-249 exceptions.
- """
- self.wrapper = wrapper
-
- def __enter__(self):
- pass
-
- def __exit__(self, exc_type, exc_value, traceback):
- if exc_type is None:
- return
- for dj_exc_type in (
- DataError,
- OperationalError,
- IntegrityError,
- InternalError,
- ProgrammingError,
- NotSupportedError,
- DatabaseError,
- InterfaceError,
- Error,
- ):
- db_exc_type = getattr(self.wrapper.Database, dj_exc_type.__name__)
- if issubclass(exc_type, db_exc_type):
- # Under Python 2.6, exc_value can still be a string.
- try:
- args = tuple(exc_value.args)
- except AttributeError:
- args = (exc_value,)
- dj_exc_value = dj_exc_type(*args)
- dj_exc_value.__cause__ = exc_value
- # Only set the 'errors_occurred' flag for errors that may make
- # the connection unusable.
- if dj_exc_type not in (DataError, IntegrityError):
- self.wrapper.errors_occurred = True
- six.reraise(dj_exc_type, dj_exc_value, traceback)
-
- def __call__(self, func):
- # Note that we are intentionally not using @wraps here for performance
- # reasons. Refs #21109.
- def inner(*args, **kwargs):
- with self:
- return func(*args, **kwargs)
- return inner
-
-
-def load_backend(backend_name):
- # Look for a fully qualified database backend name
- try:
- return import_module('%s.base' % backend_name)
- except ImportError as e_user:
- # The database backend wasn't found. Display a helpful error message
- # listing all possible (built-in) database backends.
- backend_dir = os.path.join(os.path.dirname(upath(__file__)), 'backends')
- try:
- builtin_backends = [
- name for _, name, ispkg in pkgutil.iter_modules([backend_dir])
- if ispkg and name != 'dummy']
- except EnvironmentError:
- builtin_backends = []
- if backend_name not in ['django.db.backends.%s' % b for b in
- builtin_backends]:
- backend_reprs = map(repr, sorted(builtin_backends))
- error_msg = ("%r isn't an available database backend.\n"
- "Try using 'django.db.backends.XXX', where XXX "
- "is one of:\n %s\nError was: %s" %
- (backend_name, ", ".join(backend_reprs), e_user))
- raise ImproperlyConfigured(error_msg)
- else:
- # If there's some other error, this must be an error in Django
- raise
-
-
-class ConnectionDoesNotExist(Exception):
- pass
-
-
-class ConnectionHandler(object):
- def __init__(self, databases=None):
- """
- databases is an optional dictionary of database definitions (structured
- like settings.DATABASES).
- """
- self._databases = databases
- self._connections = local()
-
- @cached_property
- def databases(self):
- if self._databases is None:
- self._databases = settings.DATABASES
- if self._databases == {}:
- self._databases = {
- DEFAULT_DB_ALIAS: {
- 'ENGINE': 'django.db.backends.dummy',
- },
- }
- if DEFAULT_DB_ALIAS not in self._databases:
- raise ImproperlyConfigured("You must define a '%s' database" % DEFAULT_DB_ALIAS)
- return self._databases
-
- def ensure_defaults(self, alias):
- """
- Puts the defaults into the settings dictionary for a given connection
- where no settings is provided.
- """
- try:
- conn = self.databases[alias]
- except KeyError:
- raise ConnectionDoesNotExist("The connection %s doesn't exist" % alias)
-
- conn.setdefault('ATOMIC_REQUESTS', False)
- if settings.TRANSACTIONS_MANAGED:
- warnings.warn(
- "TRANSACTIONS_MANAGED is deprecated. Use AUTOCOMMIT instead.",
- PendingDeprecationWarning, stacklevel=2)
- conn.setdefault('AUTOCOMMIT', False)
- conn.setdefault('AUTOCOMMIT', True)
- conn.setdefault('ENGINE', 'django.db.backends.dummy')
- if conn['ENGINE'] == 'django.db.backends.' or not conn['ENGINE']:
- conn['ENGINE'] = 'django.db.backends.dummy'
- conn.setdefault('CONN_MAX_AGE', 0)
- conn.setdefault('OPTIONS', {})
- conn.setdefault('TIME_ZONE', 'UTC' if settings.USE_TZ else settings.TIME_ZONE)
- for setting in ['NAME', 'USER', 'PASSWORD', 'HOST', 'PORT']:
- conn.setdefault(setting, '')
- for setting in ['TEST_CHARSET', 'TEST_COLLATION', 'TEST_NAME', 'TEST_MIRROR']:
- conn.setdefault(setting, None)
-
- def __getitem__(self, alias):
- if hasattr(self._connections, alias):
- return getattr(self._connections, alias)
-
- self.ensure_defaults(alias)
- db = self.databases[alias]
- backend = load_backend(db['ENGINE'])
- conn = backend.DatabaseWrapper(db, alias)
- setattr(self._connections, alias, conn)
- return conn
-
- def __setitem__(self, key, value):
- setattr(self._connections, key, value)
-
- def __delitem__(self, key):
- delattr(self._connections, key)
-
- def __iter__(self):
- return iter(self.databases)
-
- def all(self):
- return [self[alias] for alias in self]
-
-
-class ConnectionRouter(object):
- def __init__(self, routers=None):
- """
- If routers is not specified, will default to settings.DATABASE_ROUTERS.
- """
- self._routers = routers
-
- @cached_property
- def routers(self):
- if self._routers is None:
- self._routers = settings.DATABASE_ROUTERS
- routers = []
- for r in self._routers:
- if isinstance(r, six.string_types):
- router = import_by_path(r)()
- else:
- router = r
- routers.append(router)
- return routers
-
- def _router_func(action):
- def _route_db(self, model, **hints):
- chosen_db = None
- for router in self.routers:
- try:
- method = getattr(router, action)
- except AttributeError:
- # If the router doesn't have a method, skip to the next one.
- pass
- else:
- chosen_db = method(model, **hints)
- if chosen_db:
- return chosen_db
- try:
- return hints['instance']._state.db or DEFAULT_DB_ALIAS
- except KeyError:
- return DEFAULT_DB_ALIAS
- return _route_db
-
- db_for_read = _router_func('db_for_read')
- db_for_write = _router_func('db_for_write')
-
- def allow_relation(self, obj1, obj2, **hints):
- for router in self.routers:
- try:
- method = router.allow_relation
- except AttributeError:
- # If the router doesn't have a method, skip to the next one.
- pass
- else:
- allow = method(obj1, obj2, **hints)
- if allow is not None:
- return allow
- return obj1._state.db == obj2._state.db
-
- def allow_syncdb(self, db, model):
- for router in self.routers:
- try:
- method = router.allow_syncdb
- except AttributeError:
- # If the router doesn't have a method, skip to the next one.
- pass
- else:
- allow = method(db, model)
- if allow is not None:
- return allow
- return True
diff --git a/lib/python2.7/site-packages/django/dispatch/__init__.py b/lib/python2.7/site-packages/django/dispatch/__init__.py
deleted file mode 100644
index 9aeb83c..0000000
--- a/lib/python2.7/site-packages/django/dispatch/__init__.py
+++ /dev/null
@@ -1,9 +0,0 @@
-"""Multi-consumer multi-producer dispatching mechanism
-
-Originally based on pydispatch (BSD) http://pypi.python.org/pypi/PyDispatcher/2.0.1
-See license.txt for original license.
-
-Heavily modified for Django's purposes.
-"""
-
-from django.dispatch.dispatcher import Signal, receiver \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django/dispatch/dispatcher.py b/lib/python2.7/site-packages/django/dispatch/dispatcher.py
deleted file mode 100644
index d26433a..0000000
--- a/lib/python2.7/site-packages/django/dispatch/dispatcher.py
+++ /dev/null
@@ -1,306 +0,0 @@
-import weakref
-import threading
-
-from django.dispatch import saferef
-from django.utils.six.moves import xrange
-
-
-WEAKREF_TYPES = (weakref.ReferenceType, saferef.BoundMethodWeakref)
-
-
-def _make_id(target):
- if hasattr(target, '__func__'):
- return (id(target.__self__), id(target.__func__))
- return id(target)
-NONE_ID = _make_id(None)
-
-# A marker for caching
-NO_RECEIVERS = object()
-
-
-class Signal(object):
- """
- Base class for all signals
-
- Internal attributes:
-
- receivers
- { receriverkey (id) : weakref(receiver) }
- """
- def __init__(self, providing_args=None, use_caching=False):
- """
- Create a new signal.
-
- providing_args
- A list of the arguments this signal can pass along in a send() call.
- """
- self.receivers = []
- if providing_args is None:
- providing_args = []
- self.providing_args = set(providing_args)
- self.lock = threading.Lock()
- self.use_caching = use_caching
- # For convenience we create empty caches even if they are not used.
- # A note about caching: if use_caching is defined, then for each
- # distinct sender we cache the receivers that sender has in
- # 'sender_receivers_cache'. The cache is cleaned when .connect() or
- # .disconnect() is called and populated on send().
- self.sender_receivers_cache = weakref.WeakKeyDictionary() if use_caching else {}
-
- def connect(self, receiver, sender=None, weak=True, dispatch_uid=None):
- """
- Connect receiver to sender for signal.
-
- Arguments:
-
- receiver
- A function or an instance method which is to receive signals.
- Receivers must be hashable objects.
-
- If weak is True, then receiver must be weak-referencable (more
- precisely saferef.safeRef() must be able to create a reference
- to the receiver).
-
- Receivers must be able to accept keyword arguments.
-
- If receivers have a dispatch_uid attribute, the receiver will
- not be added if another receiver already exists with that
- dispatch_uid.
-
- sender
- The sender to which the receiver should respond. Must either be
- of type Signal, or None to receive events from any sender.
-
- weak
- Whether to use weak references to the receiver. By default, the
- module will attempt to use weak references to the receiver
- objects. If this parameter is false, then strong references will
- be used.
-
- dispatch_uid
- An identifier used to uniquely identify a particular instance of
- a receiver. This will usually be a string, though it may be
- anything hashable.
- """
- from django.conf import settings
-
- # If DEBUG is on, check that we got a good receiver
- if settings.configured and settings.DEBUG:
- import inspect
- assert callable(receiver), "Signal receivers must be callable."
-
- # Check for **kwargs
- # Not all callables are inspectable with getargspec, so we'll
- # try a couple different ways but in the end fall back on assuming
- # it is -- we don't want to prevent registration of valid but weird
- # callables.
- try:
- argspec = inspect.getargspec(receiver)
- except TypeError:
- try:
- argspec = inspect.getargspec(receiver.__call__)
- except (TypeError, AttributeError):
- argspec = None
- if argspec:
- assert argspec[2] is not None, \
- "Signal receivers must accept keyword arguments (**kwargs)."
-
- if dispatch_uid:
- lookup_key = (dispatch_uid, _make_id(sender))
- else:
- lookup_key = (_make_id(receiver), _make_id(sender))
-
- if weak:
- receiver = saferef.safeRef(receiver, onDelete=self._remove_receiver)
-
- with self.lock:
- for r_key, _ in self.receivers:
- if r_key == lookup_key:
- break
- else:
- self.receivers.append((lookup_key, receiver))
- self.sender_receivers_cache.clear()
-
- def disconnect(self, receiver=None, sender=None, weak=True, dispatch_uid=None):
- """
- Disconnect receiver from sender for signal.
-
- If weak references are used, disconnect need not be called. The receiver
- will be remove from dispatch automatically.
-
- Arguments:
-
- receiver
- The registered receiver to disconnect. May be none if
- dispatch_uid is specified.
-
- sender
- The registered sender to disconnect
-
- weak
- The weakref state to disconnect
-
- dispatch_uid
- the unique identifier of the receiver to disconnect
- """
- if dispatch_uid:
- lookup_key = (dispatch_uid, _make_id(sender))
- else:
- lookup_key = (_make_id(receiver), _make_id(sender))
-
- with self.lock:
- for index in xrange(len(self.receivers)):
- (r_key, _) = self.receivers[index]
- if r_key == lookup_key:
- del self.receivers[index]
- break
- self.sender_receivers_cache.clear()
-
- def has_listeners(self, sender=None):
- return bool(self._live_receivers(sender))
-
- def send(self, sender, **named):
- """
- Send signal from sender to all connected receivers.
-
- If any receiver raises an error, the error propagates back through send,
- terminating the dispatch loop, so it is quite possible to not have all
- receivers called if a raises an error.
-
- Arguments:
-
- sender
- The sender of the signal Either a specific object or None.
-
- named
- Named arguments which will be passed to receivers.
-
- Returns a list of tuple pairs [(receiver, response), ... ].
- """
- responses = []
- if not self.receivers or self.sender_receivers_cache.get(sender) is NO_RECEIVERS:
- return responses
-
- for receiver in self._live_receivers(sender):
- response = receiver(signal=self, sender=sender, **named)
- responses.append((receiver, response))
- return responses
-
- def send_robust(self, sender, **named):
- """
- Send signal from sender to all connected receivers catching errors.
-
- Arguments:
-
- sender
- The sender of the signal. Can be any python object (normally one
- registered with a connect if you actually want something to
- occur).
-
- named
- Named arguments which will be passed to receivers. These
- arguments must be a subset of the argument names defined in
- providing_args.
-
- Return a list of tuple pairs [(receiver, response), ... ]. May raise
- DispatcherKeyError.
-
- If any receiver raises an error (specifically any subclass of
- Exception), the error instance is returned as the result for that
- receiver.
- """
- responses = []
- if not self.receivers or self.sender_receivers_cache.get(sender) is NO_RECEIVERS:
- return responses
-
- # Call each receiver with whatever arguments it can accept.
- # Return a list of tuple pairs [(receiver, response), ... ].
- for receiver in self._live_receivers(sender):
- try:
- response = receiver(signal=self, sender=sender, **named)
- except Exception as err:
- responses.append((receiver, err))
- else:
- responses.append((receiver, response))
- return responses
-
- def _live_receivers(self, sender):
- """
- Filter sequence of receivers to get resolved, live receivers.
-
- This checks for weak references and resolves them, then returning only
- live receivers.
- """
- receivers = None
- if self.use_caching:
- receivers = self.sender_receivers_cache.get(sender)
- # We could end up here with NO_RECEIVERS even if we do check this case in
- # .send() prior to calling _live_receivers() due to concurrent .send() call.
- if receivers is NO_RECEIVERS:
- return []
- if receivers is None:
- with self.lock:
- senderkey = _make_id(sender)
- receivers = []
- for (receiverkey, r_senderkey), receiver in self.receivers:
- if r_senderkey == NONE_ID or r_senderkey == senderkey:
- receivers.append(receiver)
- if self.use_caching:
- if not receivers:
- self.sender_receivers_cache[sender] = NO_RECEIVERS
- else:
- # Note, we must cache the weakref versions.
- self.sender_receivers_cache[sender] = receivers
- non_weak_receivers = []
- for receiver in receivers:
- if isinstance(receiver, WEAKREF_TYPES):
- # Dereference the weak reference.
- receiver = receiver()
- if receiver is not None:
- non_weak_receivers.append(receiver)
- else:
- non_weak_receivers.append(receiver)
- return non_weak_receivers
-
- def _remove_receiver(self, receiver):
- """
- Remove dead receivers from connections.
- """
-
- with self.lock:
- to_remove = []
- for key, connected_receiver in self.receivers:
- if connected_receiver == receiver:
- to_remove.append(key)
- for key in to_remove:
- last_idx = len(self.receivers) - 1
- # enumerate in reverse order so that indexes are valid even
- # after we delete some items
- for idx, (r_key, _) in enumerate(reversed(self.receivers)):
- if r_key == key:
- del self.receivers[last_idx - idx]
- self.sender_receivers_cache.clear()
-
-
-def receiver(signal, **kwargs):
- """
- A decorator for connecting receivers to signals. Used by passing in the
- signal (or list of signals) and keyword arguments to connect::
-
- @receiver(post_save, sender=MyModel)
- def signal_receiver(sender, **kwargs):
- ...
-
- @receiver([post_save, post_delete], sender=MyModel)
- def signals_receiver(sender, **kwargs):
- ...
-
- """
- def _decorator(func):
- if isinstance(signal, (list, tuple)):
- for s in signal:
- s.connect(func, **kwargs)
- else:
- signal.connect(func, **kwargs)
- return func
- return _decorator
diff --git a/lib/python2.7/site-packages/django/dispatch/saferef.py b/lib/python2.7/site-packages/django/dispatch/saferef.py
deleted file mode 100644
index c7731d4..0000000
--- a/lib/python2.7/site-packages/django/dispatch/saferef.py
+++ /dev/null
@@ -1,257 +0,0 @@
-"""
-"Safe weakrefs", originally from pyDispatcher.
-
-Provides a way to safely weakref any function, including bound methods (which
-aren't handled by the core weakref module).
-"""
-
-import traceback
-import weakref
-
-def safeRef(target, onDelete = None):
- """Return a *safe* weak reference to a callable target
-
- target -- the object to be weakly referenced, if it's a
- bound method reference, will create a BoundMethodWeakref,
- otherwise creates a simple weakref.
- onDelete -- if provided, will have a hard reference stored
- to the callable to be called after the safe reference
- goes out of scope with the reference object, (either a
- weakref or a BoundMethodWeakref) as argument.
- """
- if hasattr(target, '__self__'):
- if target.__self__ is not None:
- # Turn a bound method into a BoundMethodWeakref instance.
- # Keep track of these instances for lookup by disconnect().
- assert hasattr(target, '__func__'), """safeRef target %r has __self__, but no __func__, don't know how to create reference"""%( target,)
- reference = get_bound_method_weakref(
- target=target,
- onDelete=onDelete
- )
- return reference
- if callable(onDelete):
- return weakref.ref(target, onDelete)
- else:
- return weakref.ref( target )
-
-class BoundMethodWeakref(object):
- """'Safe' and reusable weak references to instance methods
-
- BoundMethodWeakref objects provide a mechanism for
- referencing a bound method without requiring that the
- method object itself (which is normally a transient
- object) is kept alive. Instead, the BoundMethodWeakref
- object keeps weak references to both the object and the
- function which together define the instance method.
-
- Attributes:
- key -- the identity key for the reference, calculated
- by the class's calculateKey method applied to the
- target instance method
- deletionMethods -- sequence of callable objects taking
- single argument, a reference to this object which
- will be called when *either* the target object or
- target function is garbage collected (i.e. when
- this object becomes invalid). These are specified
- as the onDelete parameters of safeRef calls.
- weakSelf -- weak reference to the target object
- weakFunc -- weak reference to the target function
-
- Class Attributes:
- _allInstances -- class attribute pointing to all live
- BoundMethodWeakref objects indexed by the class's
- calculateKey(target) method applied to the target
- objects. This weak value dictionary is used to
- short-circuit creation so that multiple references
- to the same (object, function) pair produce the
- same BoundMethodWeakref instance.
-
- """
-
- _allInstances = weakref.WeakValueDictionary()
-
- def __new__( cls, target, onDelete=None, *arguments,**named ):
- """Create new instance or return current instance
-
- Basically this method of construction allows us to
- short-circuit creation of references to already-
- referenced instance methods. The key corresponding
- to the target is calculated, and if there is already
- an existing reference, that is returned, with its
- deletionMethods attribute updated. Otherwise the
- new instance is created and registered in the table
- of already-referenced methods.
- """
- key = cls.calculateKey(target)
- current =cls._allInstances.get(key)
- if current is not None:
- current.deletionMethods.append( onDelete)
- return current
- else:
- base = super( BoundMethodWeakref, cls).__new__( cls )
- cls._allInstances[key] = base
- base.__init__( target, onDelete, *arguments,**named)
- return base
-
- def __init__(self, target, onDelete=None):
- """Return a weak-reference-like instance for a bound method
-
- target -- the instance-method target for the weak
- reference, must have __self__ and __func__ attributes
- and be reconstructable via:
- target.__func__.__get__( target.__self__ )
- which is true of built-in instance methods.
- onDelete -- optional callback which will be called
- when this weak reference ceases to be valid
- (i.e. either the object or the function is garbage
- collected). Should take a single argument,
- which will be passed a pointer to this object.
- """
- def remove(weak, self=self):
- """Set self.isDead to true when method or instance is destroyed"""
- methods = self.deletionMethods[:]
- del self.deletionMethods[:]
- try:
- del self.__class__._allInstances[ self.key ]
- except KeyError:
- pass
- for function in methods:
- try:
- if callable( function ):
- function( self )
- except Exception as e:
- try:
- traceback.print_exc()
- except AttributeError:
- print('Exception during saferef %s cleanup function %s: %s' % (
- self, function, e)
- )
- self.deletionMethods = [onDelete]
- self.key = self.calculateKey( target )
- self.weakSelf = weakref.ref(target.__self__, remove)
- self.weakFunc = weakref.ref(target.__func__, remove)
- self.selfName = str(target.__self__)
- self.funcName = str(target.__func__.__name__)
-
- def calculateKey( cls, target ):
- """Calculate the reference key for this reference
-
- Currently this is a two-tuple of the id()'s of the
- target object and the target function respectively.
- """
- return (id(target.__self__),id(target.__func__))
- calculateKey = classmethod( calculateKey )
-
- def __str__(self):
- """Give a friendly representation of the object"""
- return """%s( %s.%s )"""%(
- self.__class__.__name__,
- self.selfName,
- self.funcName,
- )
-
- __repr__ = __str__
-
- def __hash__(self):
- return hash(self.key)
-
- def __bool__( self ):
- """Whether we are still a valid reference"""
- return self() is not None
-
- def __nonzero__(self): # Python 2 compatibility
- return type(self).__bool__(self)
-
- def __eq__(self, other):
- """Compare with another reference"""
- if not isinstance(other, self.__class__):
- return self.__class__ == type(other)
- return self.key == other.key
-
- def __call__(self):
- """Return a strong reference to the bound method
-
- If the target cannot be retrieved, then will
- return None, otherwise returns a bound instance
- method for our object and function.
-
- Note:
- You may call this method any number of times,
- as it does not invalidate the reference.
- """
- target = self.weakSelf()
- if target is not None:
- function = self.weakFunc()
- if function is not None:
- return function.__get__(target)
- return None
-
-class BoundNonDescriptorMethodWeakref(BoundMethodWeakref):
- """A specialized BoundMethodWeakref, for platforms where instance methods
- are not descriptors.
-
- It assumes that the function name and the target attribute name are the
- same, instead of assuming that the function is a descriptor. This approach
- is equally fast, but not 100% reliable because functions can be stored on an
- attribute named differenty than the function's name such as in:
-
- class A: pass
- def foo(self): return "foo"
- A.bar = foo
-
- But this shouldn't be a common use case. So, on platforms where methods
- aren't descriptors (such as Jython) this implementation has the advantage
- of working in the most cases.
- """
- def __init__(self, target, onDelete=None):
- """Return a weak-reference-like instance for a bound method
-
- target -- the instance-method target for the weak
- reference, must have __self__ and __func__ attributes
- and be reconstructable via:
- target.__func__.__get__( target.__self__ )
- which is true of built-in instance methods.
- onDelete -- optional callback which will be called
- when this weak reference ceases to be valid
- (i.e. either the object or the function is garbage
- collected). Should take a single argument,
- which will be passed a pointer to this object.
- """
- assert getattr(target.__self__, target.__name__) == target, \
- ("method %s isn't available as the attribute %s of %s" %
- (target, target.__name__, target.__self__))
- super(BoundNonDescriptorMethodWeakref, self).__init__(target, onDelete)
-
- def __call__(self):
- """Return a strong reference to the bound method
-
- If the target cannot be retrieved, then will
- return None, otherwise returns a bound instance
- method for our object and function.
-
- Note:
- You may call this method any number of times,
- as it does not invalidate the reference.
- """
- target = self.weakSelf()
- if target is not None:
- function = self.weakFunc()
- if function is not None:
- # Using partial() would be another option, but it erases the
- # "signature" of the function. That is, after a function is
- # curried, the inspect module can't be used to determine how
- # many arguments the function expects, nor what keyword
- # arguments it supports, and pydispatcher needs this
- # information.
- return getattr(target, function.__name__)
- return None
-
-def get_bound_method_weakref(target, onDelete):
- """Instantiates the appropiate BoundMethodWeakRef, depending on the details of
- the underlying class method implementation"""
- if hasattr(target, '__get__'):
- # target method is a descriptor, so the default implementation works:
- return BoundMethodWeakref(target=target, onDelete=onDelete)
- else:
- # no luck, use the alternative implementation:
- return BoundNonDescriptorMethodWeakref(target=target, onDelete=onDelete)
diff --git a/lib/python2.7/site-packages/django/forms/__init__.py b/lib/python2.7/site-packages/django/forms/__init__.py
deleted file mode 100644
index 2588098..0000000
--- a/lib/python2.7/site-packages/django/forms/__init__.py
+++ /dev/null
@@ -1,11 +0,0 @@
-"""
-Django validation and HTML form handling.
-"""
-
-from __future__ import absolute_import
-
-from django.core.exceptions import ValidationError
-from django.forms.fields import *
-from django.forms.forms import *
-from django.forms.models import *
-from django.forms.widgets import *
diff --git a/lib/python2.7/site-packages/django/forms/extras/__init__.py b/lib/python2.7/site-packages/django/forms/extras/__init__.py
deleted file mode 100644
index d801e4f..0000000
--- a/lib/python2.7/site-packages/django/forms/extras/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from __future__ import absolute_import
-
-from django.forms.extras.widgets import *
diff --git a/lib/python2.7/site-packages/django/forms/extras/widgets.py b/lib/python2.7/site-packages/django/forms/extras/widgets.py
deleted file mode 100644
index 0b96dc4..0000000
--- a/lib/python2.7/site-packages/django/forms/extras/widgets.py
+++ /dev/null
@@ -1,138 +0,0 @@
-"""
-Extra HTML Widget classes
-"""
-from __future__ import unicode_literals
-
-import datetime
-import re
-
-from django.forms.widgets import Widget, Select
-from django.utils import datetime_safe
-from django.utils.dates import MONTHS
-from django.utils.encoding import force_str
-from django.utils.safestring import mark_safe
-from django.utils.formats import get_format
-from django.utils import six
-from django.conf import settings
-
-__all__ = ('SelectDateWidget',)
-
-RE_DATE = re.compile(r'(\d{4})-(\d\d?)-(\d\d?)$')
-
-def _parse_date_fmt():
- fmt = get_format('DATE_FORMAT')
- escaped = False
- output = []
- for char in fmt:
- if escaped:
- escaped = False
- elif char == '\\':
- escaped = True
- elif char in 'Yy':
- output.append('year')
- #if not self.first_select: self.first_select = 'year'
- elif char in 'bEFMmNn':
- output.append('month')
- #if not self.first_select: self.first_select = 'month'
- elif char in 'dj':
- output.append('day')
- #if not self.first_select: self.first_select = 'day'
- return output
-
-class SelectDateWidget(Widget):
- """
- A Widget that splits date input into three <select> boxes.
-
- This also serves as an example of a Widget that has more than one HTML
- element and hence implements value_from_datadict.
- """
- none_value = (0, '---')
- month_field = '%s_month'
- day_field = '%s_day'
- year_field = '%s_year'
-
- def __init__(self, attrs=None, years=None, required=True):
- # years is an optional list/tuple of years to use in the "year" select box.
- self.attrs = attrs or {}
- self.required = required
- if years:
- self.years = years
- else:
- this_year = datetime.date.today().year
- self.years = range(this_year, this_year+10)
-
- def render(self, name, value, attrs=None):
- try:
- year_val, month_val, day_val = value.year, value.month, value.day
- except AttributeError:
- year_val = month_val = day_val = None
- if isinstance(value, six.string_types):
- if settings.USE_L10N:
- try:
- input_format = get_format('DATE_INPUT_FORMATS')[0]
- v = datetime.datetime.strptime(force_str(value), input_format)
- year_val, month_val, day_val = v.year, v.month, v.day
- except ValueError:
- pass
- else:
- match = RE_DATE.match(value)
- if match:
- year_val, month_val, day_val = [int(v) for v in match.groups()]
- choices = [(i, i) for i in self.years]
- year_html = self.create_select(name, self.year_field, value, year_val, choices)
- choices = list(six.iteritems(MONTHS))
- month_html = self.create_select(name, self.month_field, value, month_val, choices)
- choices = [(i, i) for i in range(1, 32)]
- day_html = self.create_select(name, self.day_field, value, day_val, choices)
-
- output = []
- for field in _parse_date_fmt():
- if field == 'year':
- output.append(year_html)
- elif field == 'month':
- output.append(month_html)
- elif field == 'day':
- output.append(day_html)
- return mark_safe('\n'.join(output))
-
- def id_for_label(self, id_):
- first_select = None
- field_list = _parse_date_fmt()
- if field_list:
- first_select = field_list[0]
- if first_select is not None:
- return '%s_%s' % (id_, first_select)
- else:
- return '%s_month' % id_
-
- def value_from_datadict(self, data, files, name):
- y = data.get(self.year_field % name)
- m = data.get(self.month_field % name)
- d = data.get(self.day_field % name)
- if y == m == d == "0":
- return None
- if y and m and d:
- if settings.USE_L10N:
- input_format = get_format('DATE_INPUT_FORMATS')[0]
- try:
- date_value = datetime.date(int(y), int(m), int(d))
- except ValueError:
- return '%s-%s-%s' % (y, m, d)
- else:
- date_value = datetime_safe.new_date(date_value)
- return date_value.strftime(input_format)
- else:
- return '%s-%s-%s' % (y, m, d)
- return data.get(name, None)
-
- def create_select(self, name, field, value, val, choices):
- if 'id' in self.attrs:
- id_ = self.attrs['id']
- else:
- id_ = 'id_%s' % name
- if not (self.required and val):
- choices.insert(0, self.none_value)
- local_attrs = self.build_attrs(id=field % id_)
- s = Select(choices=choices)
- select_html = s.render(field % name, val, local_attrs)
- return select_html
diff --git a/lib/python2.7/site-packages/django/forms/fields.py b/lib/python2.7/site-packages/django/forms/fields.py
deleted file mode 100644
index 966b303..0000000
--- a/lib/python2.7/site-packages/django/forms/fields.py
+++ /dev/null
@@ -1,1146 +0,0 @@
-"""
-Field classes.
-"""
-
-from __future__ import absolute_import, unicode_literals
-
-import copy
-import datetime
-import os
-import re
-import sys
-from decimal import Decimal, DecimalException
-from io import BytesIO
-
-from django.core import validators
-from django.core.exceptions import ValidationError
-from django.forms.util import ErrorList, from_current_timezone, to_current_timezone
-from django.forms.widgets import (
- TextInput, NumberInput, EmailInput, URLInput, HiddenInput,
- MultipleHiddenInput, ClearableFileInput, CheckboxInput, Select,
- NullBooleanSelect, SelectMultiple, DateInput, DateTimeInput, TimeInput,
- SplitDateTimeWidget, SplitHiddenDateTimeWidget, FILE_INPUT_CONTRADICTION
-)
-from django.utils import formats
-from django.utils.encoding import smart_text, force_str, force_text
-from django.utils.ipv6 import clean_ipv6_address
-from django.utils import six
-from django.utils.six.moves.urllib.parse import urlsplit, urlunsplit
-from django.utils.translation import ugettext_lazy as _, ungettext_lazy
-
-# Provide this import for backwards compatibility.
-from django.core.validators import EMPTY_VALUES
-
-
-__all__ = (
- 'Field', 'CharField', 'IntegerField',
- 'DateField', 'TimeField', 'DateTimeField', 'TimeField',
- 'RegexField', 'EmailField', 'FileField', 'ImageField', 'URLField',
- 'BooleanField', 'NullBooleanField', 'ChoiceField', 'MultipleChoiceField',
- 'ComboField', 'MultiValueField', 'FloatField', 'DecimalField',
- 'SplitDateTimeField', 'IPAddressField', 'GenericIPAddressField', 'FilePathField',
- 'SlugField', 'TypedChoiceField', 'TypedMultipleChoiceField'
-)
-
-
-class Field(object):
- widget = TextInput # Default widget to use when rendering this type of Field.
- hidden_widget = HiddenInput # Default widget to use when rendering this as "hidden".
- default_validators = [] # Default set of validators
- # Add an 'invalid' entry to default_error_message if you want a specific
- # field error message not raised by the field validators.
- default_error_messages = {
- 'required': _('This field is required.'),
- }
- empty_values = list(validators.EMPTY_VALUES)
-
- # Tracks each time a Field instance is created. Used to retain order.
- creation_counter = 0
-
- def __init__(self, required=True, widget=None, label=None, initial=None,
- help_text='', error_messages=None, show_hidden_initial=False,
- validators=[], localize=False):
- # required -- Boolean that specifies whether the field is required.
- # True by default.
- # widget -- A Widget class, or instance of a Widget class, that should
- # be used for this Field when displaying it. Each Field has a
- # default Widget that it'll use if you don't specify this. In
- # most cases, the default widget is TextInput.
- # label -- A verbose name for this field, for use in displaying this
- # field in a form. By default, Django will use a "pretty"
- # version of the form field name, if the Field is part of a
- # Form.
- # initial -- A value to use in this Field's initial display. This value
- # is *not* used as a fallback if data isn't given.
- # help_text -- An optional string to use as "help text" for this Field.
- # error_messages -- An optional dictionary to override the default
- # messages that the field will raise.
- # show_hidden_initial -- Boolean that specifies if it is needed to render a
- # hidden widget with initial value after widget.
- # validators -- List of addtional validators to use
- # localize -- Boolean that specifies if the field should be localized.
- self.required, self.label, self.initial = required, label, initial
- self.show_hidden_initial = show_hidden_initial
- self.help_text = help_text
- widget = widget or self.widget
- if isinstance(widget, type):
- widget = widget()
-
- # Trigger the localization machinery if needed.
- self.localize = localize
- if self.localize:
- widget.is_localized = True
-
- # Let the widget know whether it should display as required.
- widget.is_required = self.required
-
- # Hook into self.widget_attrs() for any Field-specific HTML attributes.
- extra_attrs = self.widget_attrs(widget)
- if extra_attrs:
- widget.attrs.update(extra_attrs)
-
- self.widget = widget
-
- # Increase the creation counter, and save our local copy.
- self.creation_counter = Field.creation_counter
- Field.creation_counter += 1
-
- messages = {}
- for c in reversed(self.__class__.__mro__):
- messages.update(getattr(c, 'default_error_messages', {}))
- messages.update(error_messages or {})
- self.error_messages = messages
-
- self.validators = self.default_validators + validators
- super(Field, self).__init__()
-
- def prepare_value(self, value):
- return value
-
- def to_python(self, value):
- return value
-
- def validate(self, value):
- if value in self.empty_values and self.required:
- raise ValidationError(self.error_messages['required'], code='required')
-
- def run_validators(self, value):
- if value in self.empty_values:
- return
- errors = []
- for v in self.validators:
- try:
- v(value)
- except ValidationError as e:
- if hasattr(e, 'code') and e.code in self.error_messages:
- e.message = self.error_messages[e.code]
- errors.extend(e.error_list)
- if errors:
- raise ValidationError(errors)
-
- def clean(self, value):
- """
- Validates the given value and returns its "cleaned" value as an
- appropriate Python object.
-
- Raises ValidationError for any errors.
- """
- value = self.to_python(value)
- self.validate(value)
- self.run_validators(value)
- return value
-
- def bound_data(self, data, initial):
- """
- Return the value that should be shown for this field on render of a
- bound form, given the submitted POST data for the field and the initial
- data, if any.
-
- For most fields, this will simply be data; FileFields need to handle it
- a bit differently.
- """
- return data
-
- def widget_attrs(self, widget):
- """
- Given a Widget instance (*not* a Widget class), returns a dictionary of
- any HTML attributes that should be added to the Widget, based on this
- Field.
- """
- return {}
-
- def _has_changed(self, initial, data):
- """
- Return True if data differs from initial.
- """
- # For purposes of seeing whether something has changed, None is
- # the same as an empty string, if the data or inital value we get
- # is None, replace it w/ ''.
- initial_value = initial if initial is not None else ''
- try:
- data = self.to_python(data)
- except ValidationError:
- return True
- data_value = data if data is not None else ''
- return initial_value != data_value
-
- def __deepcopy__(self, memo):
- result = copy.copy(self)
- memo[id(self)] = result
- result.widget = copy.deepcopy(self.widget, memo)
- result.validators = self.validators[:]
- return result
-
-
-class CharField(Field):
- def __init__(self, max_length=None, min_length=None, *args, **kwargs):
- self.max_length, self.min_length = max_length, min_length
- super(CharField, self).__init__(*args, **kwargs)
- if min_length is not None:
- self.validators.append(validators.MinLengthValidator(int(min_length)))
- if max_length is not None:
- self.validators.append(validators.MaxLengthValidator(int(max_length)))
-
- def to_python(self, value):
- "Returns a Unicode object."
- if value in self.empty_values:
- return ''
- return smart_text(value)
-
- def widget_attrs(self, widget):
- attrs = super(CharField, self).widget_attrs(widget)
- if self.max_length is not None and isinstance(widget, TextInput):
- # The HTML attribute is maxlength, not max_length.
- attrs.update({'maxlength': str(self.max_length)})
- return attrs
-
-
-class IntegerField(Field):
- widget = NumberInput
- default_error_messages = {
- 'invalid': _('Enter a whole number.'),
- }
-
- def __init__(self, max_value=None, min_value=None, *args, **kwargs):
- self.max_value, self.min_value = max_value, min_value
- if kwargs.get('localize') and self.widget == NumberInput:
- # Localized number input is not well supported on most browsers
- kwargs.setdefault('widget', super(IntegerField, self).widget)
- super(IntegerField, self).__init__(*args, **kwargs)
-
- if max_value is not None:
- self.validators.append(validators.MaxValueValidator(max_value))
- if min_value is not None:
- self.validators.append(validators.MinValueValidator(min_value))
-
- def to_python(self, value):
- """
- Validates that int() can be called on the input. Returns the result
- of int(). Returns None for empty values.
- """
- value = super(IntegerField, self).to_python(value)
- if value in self.empty_values:
- return None
- if self.localize:
- value = formats.sanitize_separators(value)
- try:
- value = int(str(value))
- except (ValueError, TypeError):
- raise ValidationError(self.error_messages['invalid'], code='invalid')
- return value
-
- def widget_attrs(self, widget):
- attrs = super(IntegerField, self).widget_attrs(widget)
- if isinstance(widget, NumberInput):
- if self.min_value is not None:
- attrs['min'] = self.min_value
- if self.max_value is not None:
- attrs['max'] = self.max_value
- return attrs
-
-
-class FloatField(IntegerField):
- default_error_messages = {
- 'invalid': _('Enter a number.'),
- }
-
- def to_python(self, value):
- """
- Validates that float() can be called on the input. Returns the result
- of float(). Returns None for empty values.
- """
- value = super(IntegerField, self).to_python(value)
- if value in self.empty_values:
- return None
- if self.localize:
- value = formats.sanitize_separators(value)
- try:
- value = float(value)
- except (ValueError, TypeError):
- raise ValidationError(self.error_messages['invalid'], code='invalid')
- return value
-
- def widget_attrs(self, widget):
- attrs = super(FloatField, self).widget_attrs(widget)
- if isinstance(widget, NumberInput):
- attrs.setdefault('step', 'any')
- return attrs
-
-
-class DecimalField(IntegerField):
- default_error_messages = {
- 'invalid': _('Enter a number.'),
- 'max_digits': ungettext_lazy(
- 'Ensure that there are no more than %(max)s digit in total.',
- 'Ensure that there are no more than %(max)s digits in total.',
- 'max'),
- 'max_decimal_places': ungettext_lazy(
- 'Ensure that there are no more than %(max)s decimal place.',
- 'Ensure that there are no more than %(max)s decimal places.',
- 'max'),
- 'max_whole_digits': ungettext_lazy(
- 'Ensure that there are no more than %(max)s digit before the decimal point.',
- 'Ensure that there are no more than %(max)s digits before the decimal point.',
- 'max'),
- }
-
- def __init__(self, max_value=None, min_value=None, max_digits=None, decimal_places=None, *args, **kwargs):
- self.max_digits, self.decimal_places = max_digits, decimal_places
- super(DecimalField, self).__init__(max_value, min_value, *args, **kwargs)
-
- def to_python(self, value):
- """
- Validates that the input is a decimal number. Returns a Decimal
- instance. Returns None for empty values. Ensures that there are no more
- than max_digits in the number, and no more than decimal_places digits
- after the decimal point.
- """
- if value in self.empty_values:
- return None
- if self.localize:
- value = formats.sanitize_separators(value)
- value = smart_text(value).strip()
- try:
- value = Decimal(value)
- except DecimalException:
- raise ValidationError(self.error_messages['invalid'], code='invalid')
- return value
-
- def validate(self, value):
- super(DecimalField, self).validate(value)
- if value in self.empty_values:
- return
- # Check for NaN, Inf and -Inf values. We can't compare directly for NaN,
- # since it is never equal to itself. However, NaN is the only value that
- # isn't equal to itself, so we can use this to identify NaN
- if value != value or value == Decimal("Inf") or value == Decimal("-Inf"):
- raise ValidationError(self.error_messages['invalid'], code='invalid')
- sign, digittuple, exponent = value.as_tuple()
- decimals = abs(exponent)
- # digittuple doesn't include any leading zeros.
- digits = len(digittuple)
- if decimals > digits:
- # We have leading zeros up to or past the decimal point. Count
- # everything past the decimal point as a digit. We do not count
- # 0 before the decimal point as a digit since that would mean
- # we would not allow max_digits = decimal_places.
- digits = decimals
- whole_digits = digits - decimals
-
- if self.max_digits is not None and digits > self.max_digits:
- raise ValidationError(
- self.error_messages['max_digits'],
- code='max_digits',
- params={'max': self.max_digits},
- )
- if self.decimal_places is not None and decimals > self.decimal_places:
- raise ValidationError(
- self.error_messages['max_decimal_places'],
- code='max_decimal_places',
- params={'max': self.decimal_places},
- )
- if (self.max_digits is not None and self.decimal_places is not None
- and whole_digits > (self.max_digits - self.decimal_places)):
- raise ValidationError(
- self.error_messages['max_whole_digits'],
- code='max_whole_digits',
- params={'max': (self.max_digits - self.decimal_places)},
- )
- return value
-
- def widget_attrs(self, widget):
- attrs = super(DecimalField, self).widget_attrs(widget)
- if isinstance(widget, NumberInput):
- if self.decimal_places is not None:
- # Use exponential notation for small values since they might
- # be parsed as 0 otherwise. ref #20765
- step = str(Decimal('1') / 10 ** self.decimal_places).lower()
- else:
- step = 'any'
- attrs.setdefault('step', step)
- return attrs
-
-
-class BaseTemporalField(Field):
-
- def __init__(self, input_formats=None, *args, **kwargs):
- super(BaseTemporalField, self).__init__(*args, **kwargs)
- if input_formats is not None:
- self.input_formats = input_formats
-
- def to_python(self, value):
- # Try to coerce the value to unicode.
- unicode_value = force_text(value, strings_only=True)
- if isinstance(unicode_value, six.text_type):
- value = unicode_value.strip()
- # If unicode, try to strptime against each input format.
- if isinstance(value, six.text_type):
- for format in self.input_formats:
- try:
- return self.strptime(value, format)
- except (ValueError, TypeError):
- continue
- raise ValidationError(self.error_messages['invalid'], code='invalid')
-
- def strptime(self, value, format):
- raise NotImplementedError('Subclasses must define this method.')
-
-
-class DateField(BaseTemporalField):
- widget = DateInput
- input_formats = formats.get_format_lazy('DATE_INPUT_FORMATS')
- default_error_messages = {
- 'invalid': _('Enter a valid date.'),
- }
-
- def to_python(self, value):
- """
- Validates that the input can be converted to a date. Returns a Python
- datetime.date object.
- """
- if value in self.empty_values:
- return None
- if isinstance(value, datetime.datetime):
- return value.date()
- if isinstance(value, datetime.date):
- return value
- return super(DateField, self).to_python(value)
-
- def strptime(self, value, format):
- return datetime.datetime.strptime(force_str(value), format).date()
-
-
-class TimeField(BaseTemporalField):
- widget = TimeInput
- input_formats = formats.get_format_lazy('TIME_INPUT_FORMATS')
- default_error_messages = {
- 'invalid': _('Enter a valid time.')
- }
-
- def to_python(self, value):
- """
- Validates that the input can be converted to a time. Returns a Python
- datetime.time object.
- """
- if value in self.empty_values:
- return None
- if isinstance(value, datetime.time):
- return value
- return super(TimeField, self).to_python(value)
-
- def strptime(self, value, format):
- return datetime.datetime.strptime(force_str(value), format).time()
-
-
-class DateTimeField(BaseTemporalField):
- widget = DateTimeInput
- input_formats = formats.get_format_lazy('DATETIME_INPUT_FORMATS')
- default_error_messages = {
- 'invalid': _('Enter a valid date/time.'),
- }
-
- def prepare_value(self, value):
- if isinstance(value, datetime.datetime):
- value = to_current_timezone(value)
- return value
-
- def to_python(self, value):
- """
- Validates that the input can be converted to a datetime. Returns a
- Python datetime.datetime object.
- """
- if value in self.empty_values:
- return None
- if isinstance(value, datetime.datetime):
- return from_current_timezone(value)
- if isinstance(value, datetime.date):
- result = datetime.datetime(value.year, value.month, value.day)
- return from_current_timezone(result)
- if isinstance(value, list):
- # Input comes from a SplitDateTimeWidget, for example. So, it's two
- # components: date and time.
- if len(value) != 2:
- raise ValidationError(self.error_messages['invalid'], code='invalid')
- if value[0] in self.empty_values and value[1] in self.empty_values:
- return None
- value = '%s %s' % tuple(value)
- result = super(DateTimeField, self).to_python(value)
- return from_current_timezone(result)
-
- def strptime(self, value, format):
- return datetime.datetime.strptime(force_str(value), format)
-
-
-class RegexField(CharField):
- def __init__(self, regex, max_length=None, min_length=None, error_message=None, *args, **kwargs):
- """
- regex can be either a string or a compiled regular expression object.
- error_message is an optional error message to use, if
- 'Enter a valid value' is too generic for you.
- """
- # error_message is just kept for backwards compatibility:
- if error_message:
- error_messages = kwargs.get('error_messages') or {}
- error_messages['invalid'] = error_message
- kwargs['error_messages'] = error_messages
- super(RegexField, self).__init__(max_length, min_length, *args, **kwargs)
- self._set_regex(regex)
-
- def _get_regex(self):
- return self._regex
-
- def _set_regex(self, regex):
- if isinstance(regex, six.string_types):
- regex = re.compile(regex, re.UNICODE)
- self._regex = regex
- if hasattr(self, '_regex_validator') and self._regex_validator in self.validators:
- self.validators.remove(self._regex_validator)
- self._regex_validator = validators.RegexValidator(regex=regex)
- self.validators.append(self._regex_validator)
-
- regex = property(_get_regex, _set_regex)
-
-
-class EmailField(CharField):
- widget = EmailInput
- default_validators = [validators.validate_email]
-
- def clean(self, value):
- value = self.to_python(value).strip()
- return super(EmailField, self).clean(value)
-
-
-class FileField(Field):
- widget = ClearableFileInput
- default_error_messages = {
- 'invalid': _("No file was submitted. Check the encoding type on the form."),
- 'missing': _("No file was submitted."),
- 'empty': _("The submitted file is empty."),
- 'max_length': ungettext_lazy(
- 'Ensure this filename has at most %(max)d character (it has %(length)d).',
- 'Ensure this filename has at most %(max)d characters (it has %(length)d).',
- 'max'),
- 'contradiction': _('Please either submit a file or check the clear checkbox, not both.')
- }
-
- def __init__(self, *args, **kwargs):
- self.max_length = kwargs.pop('max_length', None)
- self.allow_empty_file = kwargs.pop('allow_empty_file', False)
- super(FileField, self).__init__(*args, **kwargs)
-
- def to_python(self, data):
- if data in self.empty_values:
- return None
-
- # UploadedFile objects should have name and size attributes.
- try:
- file_name = data.name
- file_size = data.size
- except AttributeError:
- raise ValidationError(self.error_messages['invalid'], code='invalid')
-
- if self.max_length is not None and len(file_name) > self.max_length:
- params = {'max': self.max_length, 'length': len(file_name)}
- raise ValidationError(self.error_messages['max_length'], code='max_length', params=params)
- if not file_name:
- raise ValidationError(self.error_messages['invalid'], code='invalid')
- if not self.allow_empty_file and not file_size:
- raise ValidationError(self.error_messages['empty'], code='empty')
-
- return data
-
- def clean(self, data, initial=None):
- # If the widget got contradictory inputs, we raise a validation error
- if data is FILE_INPUT_CONTRADICTION:
- raise ValidationError(self.error_messages['contradiction'], code='contradiction')
- # False means the field value should be cleared; further validation is
- # not needed.
- if data is False:
- if not self.required:
- return False
- # If the field is required, clearing is not possible (the widget
- # shouldn't return False data in that case anyway). False is not
- # in self.empty_value; if a False value makes it this far
- # it should be validated from here on out as None (so it will be
- # caught by the required check).
- data = None
- if not data and initial:
- return initial
- return super(FileField, self).clean(data)
-
- def bound_data(self, data, initial):
- if data in (None, FILE_INPUT_CONTRADICTION):
- return initial
- return data
-
- def _has_changed(self, initial, data):
- if data is None:
- return False
- return True
-
-
-class ImageField(FileField):
- default_error_messages = {
- 'invalid_image': _("Upload a valid image. The file you uploaded was either not an image or a corrupted image."),
- }
-
- def to_python(self, data):
- """
- Checks that the file-upload field data contains a valid image (GIF, JPG,
- PNG, possibly others -- whatever the Python Imaging Library supports).
- """
- f = super(ImageField, self).to_python(data)
- if f is None:
- return None
-
- from django.utils.image import Image
-
- # We need to get a file object for Pillow. We might have a path or we might
- # have to read the data into memory.
- if hasattr(data, 'temporary_file_path'):
- file = data.temporary_file_path()
- else:
- if hasattr(data, 'read'):
- file = BytesIO(data.read())
- else:
- file = BytesIO(data['content'])
-
- try:
- # load() could spot a truncated JPEG, but it loads the entire
- # image in memory, which is a DoS vector. See #3848 and #18520.
- # verify() must be called immediately after the constructor.
- Image.open(file).verify()
- except Exception:
- # Pillow (or PIL) doesn't recognize it as an image.
- six.reraise(ValidationError, ValidationError(
- self.error_messages['invalid_image'],
- code='invalid_image',
- ), sys.exc_info()[2])
- if hasattr(f, 'seek') and callable(f.seek):
- f.seek(0)
- return f
-
-
-class URLField(CharField):
- widget = URLInput
- default_error_messages = {
- 'invalid': _('Enter a valid URL.'),
- }
- default_validators = [validators.URLValidator()]
-
- def to_python(self, value):
-
- def split_url(url):
- """
- Returns a list of url parts via ``urlparse.urlsplit`` (or raises a
- ``ValidationError`` exception for certain).
- """
- try:
- return list(urlsplit(url))
- except ValueError:
- # urlparse.urlsplit can raise a ValueError with some
- # misformatted URLs.
- raise ValidationError(self.error_messages['invalid'], code='invalid')
-
- value = super(URLField, self).to_python(value)
- if value:
- url_fields = split_url(value)
- if not url_fields[0]:
- # If no URL scheme given, assume http://
- url_fields[0] = 'http'
- if not url_fields[1]:
- # Assume that if no domain is provided, that the path segment
- # contains the domain.
- url_fields[1] = url_fields[2]
- url_fields[2] = ''
- # Rebuild the url_fields list, since the domain segment may now
- # contain the path too.
- url_fields = split_url(urlunsplit(url_fields))
- if not url_fields[2]:
- # the path portion may need to be added before query params
- url_fields[2] = '/'
- value = urlunsplit(url_fields)
- return value
-
- def clean(self, value):
- value = self.to_python(value).strip()
- return super(URLField, self).clean(value)
-
-
-class BooleanField(Field):
- widget = CheckboxInput
-
- def to_python(self, value):
- """Returns a Python boolean object."""
- # Explicitly check for the string 'False', which is what a hidden field
- # will submit for False. Also check for '0', since this is what
- # RadioSelect will provide. Because bool("True") == bool('1') == True,
- # we don't need to handle that explicitly.
- if isinstance(value, six.string_types) and value.lower() in ('false', '0'):
- value = False
- else:
- value = bool(value)
- return super(BooleanField, self).to_python(value)
-
- def validate(self, value):
- if not value and self.required:
- raise ValidationError(self.error_messages['required'], code='required')
-
- def _has_changed(self, initial, data):
- # Sometimes data or initial could be None or '' which should be the
- # same thing as False.
- if initial == 'False':
- # show_hidden_initial may have transformed False to 'False'
- initial = False
- return bool(initial) != bool(data)
-
-
-class NullBooleanField(BooleanField):
- """
- A field whose valid values are None, True and False. Invalid values are
- cleaned to None.
- """
- widget = NullBooleanSelect
-
- def to_python(self, value):
- """
- Explicitly checks for the string 'True' and 'False', which is what a
- hidden field will submit for True and False, and for '1' and '0', which
- is what a RadioField will submit. Unlike the Booleanfield we need to
- explicitly check for True, because we are not using the bool() function
- """
- if value in (True, 'True', '1'):
- return True
- elif value in (False, 'False', '0'):
- return False
- else:
- return None
-
- def validate(self, value):
- pass
-
- def _has_changed(self, initial, data):
- # None (unknown) and False (No) are not the same
- if initial is not None:
- initial = bool(initial)
- if data is not None:
- data = bool(data)
- return initial != data
-
-
-class ChoiceField(Field):
- widget = Select
- default_error_messages = {
- 'invalid_choice': _('Select a valid choice. %(value)s is not one of the available choices.'),
- }
-
- def __init__(self, choices=(), required=True, widget=None, label=None,
- initial=None, help_text='', *args, **kwargs):
- super(ChoiceField, self).__init__(required=required, widget=widget, label=label,
- initial=initial, help_text=help_text, *args, **kwargs)
- self.choices = choices
-
- def __deepcopy__(self, memo):
- result = super(ChoiceField, self).__deepcopy__(memo)
- result._choices = copy.deepcopy(self._choices, memo)
- return result
-
- def _get_choices(self):
- return self._choices
-
- def _set_choices(self, value):
- # Setting choices also sets the choices on the widget.
- # choices can be any iterable, but we call list() on it because
- # it will be consumed more than once.
- self._choices = self.widget.choices = list(value)
-
- choices = property(_get_choices, _set_choices)
-
- def to_python(self, value):
- "Returns a Unicode object."
- if value in self.empty_values:
- return ''
- return smart_text(value)
-
- def validate(self, value):
- """
- Validates that the input is in self.choices.
- """
- super(ChoiceField, self).validate(value)
- if value and not self.valid_value(value):
- raise ValidationError(
- self.error_messages['invalid_choice'],
- code='invalid_choice',
- params={'value': value},
- )
-
- def valid_value(self, value):
- "Check to see if the provided value is a valid choice"
- text_value = force_text(value)
- for k, v in self.choices:
- if isinstance(v, (list, tuple)):
- # This is an optgroup, so look inside the group for options
- for k2, v2 in v:
- if value == k2 or text_value == force_text(k2):
- return True
- else:
- if value == k or text_value == force_text(k):
- return True
- return False
-
-
-class TypedChoiceField(ChoiceField):
- def __init__(self, *args, **kwargs):
- self.coerce = kwargs.pop('coerce', lambda val: val)
- self.empty_value = kwargs.pop('empty_value', '')
- super(TypedChoiceField, self).__init__(*args, **kwargs)
-
- def to_python(self, value):
- """
- Validates that the value is in self.choices and can be coerced to the
- right type.
- """
- value = super(TypedChoiceField, self).to_python(value)
- if value == self.empty_value or value in self.empty_values:
- return self.empty_value
- try:
- value = self.coerce(value)
- except (ValueError, TypeError, ValidationError):
- raise ValidationError(
- self.error_messages['invalid_choice'],
- code='invalid_choice',
- params={'value': value},
- )
- return value
-
-
-class MultipleChoiceField(ChoiceField):
- hidden_widget = MultipleHiddenInput
- widget = SelectMultiple
- default_error_messages = {
- 'invalid_choice': _('Select a valid choice. %(value)s is not one of the available choices.'),
- 'invalid_list': _('Enter a list of values.'),
- }
-
- def to_python(self, value):
- if not value:
- return []
- elif not isinstance(value, (list, tuple)):
- raise ValidationError(self.error_messages['invalid_list'], code='invalid_list')
- return [smart_text(val) for val in value]
-
- def validate(self, value):
- """
- Validates that the input is a list or tuple.
- """
- if self.required and not value:
- raise ValidationError(self.error_messages['required'], code='required')
- # Validate that each value in the value list is in self.choices.
- for val in value:
- if not self.valid_value(val):
- raise ValidationError(
- self.error_messages['invalid_choice'],
- code='invalid_choice',
- params={'value': val},
- )
-
- def _has_changed(self, initial, data):
- if initial is None:
- initial = []
- if data is None:
- data = []
- if len(initial) != len(data):
- return True
- initial_set = set([force_text(value) for value in initial])
- data_set = set([force_text(value) for value in data])
- return data_set != initial_set
-
-
-class TypedMultipleChoiceField(MultipleChoiceField):
- def __init__(self, *args, **kwargs):
- self.coerce = kwargs.pop('coerce', lambda val: val)
- self.empty_value = kwargs.pop('empty_value', [])
- super(TypedMultipleChoiceField, self).__init__(*args, **kwargs)
-
- def to_python(self, value):
- """
- Validates that the values are in self.choices and can be coerced to the
- right type.
- """
- value = super(TypedMultipleChoiceField, self).to_python(value)
- if value == self.empty_value or value in self.empty_values:
- return self.empty_value
- new_value = []
- for choice in value:
- try:
- new_value.append(self.coerce(choice))
- except (ValueError, TypeError, ValidationError):
- raise ValidationError(
- self.error_messages['invalid_choice'],
- code='invalid_choice',
- params={'value': choice},
- )
- return new_value
-
- def validate(self, value):
- if value != self.empty_value:
- super(TypedMultipleChoiceField, self).validate(value)
- elif self.required:
- raise ValidationError(self.error_messages['required'], code='required')
-
-
-class ComboField(Field):
- """
- A Field whose clean() method calls multiple Field clean() methods.
- """
- def __init__(self, fields=(), *args, **kwargs):
- super(ComboField, self).__init__(*args, **kwargs)
- # Set 'required' to False on the individual fields, because the
- # required validation will be handled by ComboField, not by those
- # individual fields.
- for f in fields:
- f.required = False
- self.fields = fields
-
- def clean(self, value):
- """
- Validates the given value against all of self.fields, which is a
- list of Field instances.
- """
- super(ComboField, self).clean(value)
- for field in self.fields:
- value = field.clean(value)
- return value
-
-
-class MultiValueField(Field):
- """
- A Field that aggregates the logic of multiple Fields.
-
- Its clean() method takes a "decompressed" list of values, which are then
- cleaned into a single value according to self.fields. Each value in
- this list is cleaned by the corresponding field -- the first value is
- cleaned by the first field, the second value is cleaned by the second
- field, etc. Once all fields are cleaned, the list of clean values is
- "compressed" into a single value.
-
- Subclasses should not have to implement clean(). Instead, they must
- implement compress(), which takes a list of valid values and returns a
- "compressed" version of those values -- a single value.
-
- You'll probably want to use this with MultiWidget.
- """
- default_error_messages = {
- 'invalid': _('Enter a list of values.'),
- }
-
- def __init__(self, fields=(), *args, **kwargs):
- super(MultiValueField, self).__init__(*args, **kwargs)
- # Set 'required' to False on the individual fields, because the
- # required validation will be handled by MultiValueField, not by those
- # individual fields.
- for f in fields:
- f.required = False
- self.fields = fields
-
- def validate(self, value):
- pass
-
- def clean(self, value):
- """
- Validates every value in the given list. A value is validated against
- the corresponding Field in self.fields.
-
- For example, if this MultiValueField was instantiated with
- fields=(DateField(), TimeField()), clean() would call
- DateField.clean(value[0]) and TimeField.clean(value[1]).
- """
- clean_data = []
- errors = ErrorList()
- if not value or isinstance(value, (list, tuple)):
- if not value or not [v for v in value if v not in self.empty_values]:
- if self.required:
- raise ValidationError(self.error_messages['required'], code='required')
- else:
- return self.compress([])
- else:
- raise ValidationError(self.error_messages['invalid'], code='invalid')
- for i, field in enumerate(self.fields):
- try:
- field_value = value[i]
- except IndexError:
- field_value = None
- if self.required and field_value in self.empty_values:
- raise ValidationError(self.error_messages['required'], code='required')
- try:
- clean_data.append(field.clean(field_value))
- except ValidationError as e:
- # Collect all validation errors in a single list, which we'll
- # raise at the end of clean(), rather than raising a single
- # exception for the first error we encounter.
- errors.extend(e.error_list)
- if errors:
- raise ValidationError(errors)
-
- out = self.compress(clean_data)
- self.validate(out)
- self.run_validators(out)
- return out
-
- def compress(self, data_list):
- """
- Returns a single value for the given list of values. The values can be
- assumed to be valid.
-
- For example, if this MultiValueField was instantiated with
- fields=(DateField(), TimeField()), this might return a datetime
- object created by combining the date and time in data_list.
- """
- raise NotImplementedError('Subclasses must implement this method.')
-
- def _has_changed(self, initial, data):
- if initial is None:
- initial = ['' for x in range(0, len(data))]
- else:
- if not isinstance(initial, list):
- initial = self.widget.decompress(initial)
- for field, initial, data in zip(self.fields, initial, data):
- if field._has_changed(field.to_python(initial), data):
- return True
- return False
-
-
-class FilePathField(ChoiceField):
- def __init__(self, path, match=None, recursive=False, allow_files=True,
- allow_folders=False, required=True, widget=None, label=None,
- initial=None, help_text='', *args, **kwargs):
- self.path, self.match, self.recursive = path, match, recursive
- self.allow_files, self.allow_folders = allow_files, allow_folders
- super(FilePathField, self).__init__(choices=(), required=required,
- widget=widget, label=label, initial=initial, help_text=help_text,
- *args, **kwargs)
-
- if self.required:
- self.choices = []
- else:
- self.choices = [("", "---------")]
-
- if self.match is not None:
- self.match_re = re.compile(self.match)
-
- if recursive:
- for root, dirs, files in sorted(os.walk(self.path)):
- if self.allow_files:
- for f in files:
- if self.match is None or self.match_re.search(f):
- f = os.path.join(root, f)
- self.choices.append((f, f.replace(path, "", 1)))
- if self.allow_folders:
- for f in dirs:
- if f == '__pycache__':
- continue
- if self.match is None or self.match_re.search(f):
- f = os.path.join(root, f)
- self.choices.append((f, f.replace(path, "", 1)))
- else:
- try:
- for f in sorted(os.listdir(self.path)):
- if f == '__pycache__':
- continue
- full_file = os.path.join(self.path, f)
- if (((self.allow_files and os.path.isfile(full_file)) or
- (self.allow_folders and os.path.isdir(full_file))) and
- (self.match is None or self.match_re.search(f))):
- self.choices.append((full_file, f))
- except OSError:
- pass
-
- self.widget.choices = self.choices
-
-
-class SplitDateTimeField(MultiValueField):
- widget = SplitDateTimeWidget
- hidden_widget = SplitHiddenDateTimeWidget
- default_error_messages = {
- 'invalid_date': _('Enter a valid date.'),
- 'invalid_time': _('Enter a valid time.'),
- }
-
- def __init__(self, input_date_formats=None, input_time_formats=None, *args, **kwargs):
- errors = self.default_error_messages.copy()
- if 'error_messages' in kwargs:
- errors.update(kwargs['error_messages'])
- localize = kwargs.get('localize', False)
- fields = (
- DateField(input_formats=input_date_formats,
- error_messages={'invalid': errors['invalid_date']},
- localize=localize),
- TimeField(input_formats=input_time_formats,
- error_messages={'invalid': errors['invalid_time']},
- localize=localize),
- )
- super(SplitDateTimeField, self).__init__(fields, *args, **kwargs)
-
- def compress(self, data_list):
- if data_list:
- # Raise a validation error if time or date is empty
- # (possible if SplitDateTimeField has required=False).
- if data_list[0] in self.empty_values:
- raise ValidationError(self.error_messages['invalid_date'], code='invalid_date')
- if data_list[1] in self.empty_values:
- raise ValidationError(self.error_messages['invalid_time'], code='invalid_time')
- result = datetime.datetime.combine(*data_list)
- return from_current_timezone(result)
- return None
-
-
-class IPAddressField(CharField):
- default_validators = [validators.validate_ipv4_address]
-
- def to_python(self, value):
- if value in self.empty_values:
- return ''
- return value.strip()
-
-
-class GenericIPAddressField(CharField):
- def __init__(self, protocol='both', unpack_ipv4=False, *args, **kwargs):
- self.unpack_ipv4 = unpack_ipv4
- self.default_validators = validators.ip_address_validators(protocol, unpack_ipv4)[0]
- super(GenericIPAddressField, self).__init__(*args, **kwargs)
-
- def to_python(self, value):
- if value in self.empty_values:
- return ''
- value = value.strip()
- if value and ':' in value:
- return clean_ipv6_address(value, self.unpack_ipv4)
- return value
-
-
-class SlugField(CharField):
- default_validators = [validators.validate_slug]
-
- def clean(self, value):
- value = self.to_python(value).strip()
- return super(SlugField, self).clean(value)
diff --git a/lib/python2.7/site-packages/django/forms/forms.py b/lib/python2.7/site-packages/django/forms/forms.py
deleted file mode 100644
index 573215d..0000000
--- a/lib/python2.7/site-packages/django/forms/forms.py
+++ /dev/null
@@ -1,584 +0,0 @@
-"""
-Form classes
-"""
-
-from __future__ import absolute_import, unicode_literals
-
-import copy
-import warnings
-
-from django.core.exceptions import ValidationError
-from django.forms.fields import Field, FileField
-from django.forms.util import flatatt, ErrorDict, ErrorList
-from django.forms.widgets import Media, media_property, TextInput, Textarea
-from django.utils.datastructures import SortedDict
-from django.utils.html import conditional_escape, format_html
-from django.utils.encoding import smart_text, force_text, python_2_unicode_compatible
-from django.utils.safestring import mark_safe
-from django.utils.translation import ugettext as _
-from django.utils import six
-
-
-__all__ = ('BaseForm', 'Form')
-
-NON_FIELD_ERRORS = '__all__'
-
-def pretty_name(name):
- """Converts 'first_name' to 'First name'"""
- if not name:
- return ''
- return name.replace('_', ' ').capitalize()
-
-def get_declared_fields(bases, attrs, with_base_fields=True):
- """
- Create a list of form field instances from the passed in 'attrs', plus any
- similar fields on the base classes (in 'bases'). This is used by both the
- Form and ModelForm metaclasses.
-
- If 'with_base_fields' is True, all fields from the bases are used.
- Otherwise, only fields in the 'declared_fields' attribute on the bases are
- used. The distinction is useful in ModelForm subclassing.
- Also integrates any additional media definitions.
- """
- fields = [(field_name, attrs.pop(field_name)) for field_name, obj in list(six.iteritems(attrs)) if isinstance(obj, Field)]
- fields.sort(key=lambda x: x[1].creation_counter)
-
- # If this class is subclassing another Form, add that Form's fields.
- # Note that we loop over the bases in *reverse*. This is necessary in
- # order to preserve the correct order of fields.
- if with_base_fields:
- for base in bases[::-1]:
- if hasattr(base, 'base_fields'):
- fields = list(six.iteritems(base.base_fields)) + fields
- else:
- for base in bases[::-1]:
- if hasattr(base, 'declared_fields'):
- fields = list(six.iteritems(base.declared_fields)) + fields
-
- return SortedDict(fields)
-
-class DeclarativeFieldsMetaclass(type):
- """
- Metaclass that converts Field attributes to a dictionary called
- 'base_fields', taking into account parent class 'base_fields' as well.
- """
- def __new__(cls, name, bases, attrs):
- attrs['base_fields'] = get_declared_fields(bases, attrs)
- new_class = super(DeclarativeFieldsMetaclass,
- cls).__new__(cls, name, bases, attrs)
- if 'media' not in attrs:
- new_class.media = media_property(new_class)
- return new_class
-
-@python_2_unicode_compatible
-class BaseForm(object):
- # This is the main implementation of all the Form logic. Note that this
- # class is different than Form. See the comments by the Form class for more
- # information. Any improvements to the form API should be made to *this*
- # class, not to the Form class.
- def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
- initial=None, error_class=ErrorList, label_suffix=None,
- empty_permitted=False):
- self.is_bound = data is not None or files is not None
- self.data = data or {}
- self.files = files or {}
- self.auto_id = auto_id
- self.prefix = prefix
- self.initial = initial or {}
- self.error_class = error_class
- # Translators: This is the default suffix added to form field labels
- self.label_suffix = label_suffix if label_suffix is not None else _(':')
- self.empty_permitted = empty_permitted
- self._errors = None # Stores the errors after clean() has been called.
- self._changed_data = None
-
- # The base_fields class attribute is the *class-wide* definition of
- # fields. Because a particular *instance* of the class might want to
- # alter self.fields, we create self.fields here by copying base_fields.
- # Instances should always modify self.fields; they should not modify
- # self.base_fields.
- self.fields = copy.deepcopy(self.base_fields)
-
- def __str__(self):
- return self.as_table()
-
- def __iter__(self):
- for name in self.fields:
- yield self[name]
-
- def __getitem__(self, name):
- "Returns a BoundField with the given name."
- try:
- field = self.fields[name]
- except KeyError:
- raise KeyError('Key %r not found in Form' % name)
- return BoundField(self, field, name)
-
- @property
- def errors(self):
- "Returns an ErrorDict for the data provided for the form"
- if self._errors is None:
- self.full_clean()
- return self._errors
-
- def is_valid(self):
- """
- Returns True if the form has no errors. Otherwise, False. If errors are
- being ignored, returns False.
- """
- return self.is_bound and not bool(self.errors)
-
- def add_prefix(self, field_name):
- """
- Returns the field name with a prefix appended, if this Form has a
- prefix set.
-
- Subclasses may wish to override.
- """
- return '%s-%s' % (self.prefix, field_name) if self.prefix else field_name
-
- def add_initial_prefix(self, field_name):
- """
- Add a 'initial' prefix for checking dynamic initial values
- """
- return 'initial-%s' % self.add_prefix(field_name)
-
- def _html_output(self, normal_row, error_row, row_ender, help_text_html, errors_on_separate_row):
- "Helper function for outputting HTML. Used by as_table(), as_ul(), as_p()."
- top_errors = self.non_field_errors() # Errors that should be displayed above all fields.
- output, hidden_fields = [], []
-
- for name, field in self.fields.items():
- html_class_attr = ''
- bf = self[name]
- # Escape and cache in local variable.
- bf_errors = self.error_class([conditional_escape(error) for error in bf.errors])
- if bf.is_hidden:
- if bf_errors:
- top_errors.extend(
- [_('(Hidden field %(name)s) %(error)s') % {'name': name, 'error': force_text(e)}
- for e in bf_errors])
- hidden_fields.append(six.text_type(bf))
- else:
- # Create a 'class="..."' atribute if the row should have any
- # CSS classes applied.
- css_classes = bf.css_classes()
- if css_classes:
- html_class_attr = ' class="%s"' % css_classes
-
- if errors_on_separate_row and bf_errors:
- output.append(error_row % force_text(bf_errors))
-
- if bf.label:
- label = conditional_escape(force_text(bf.label))
- label = bf.label_tag(label) or ''
- else:
- label = ''
-
- if field.help_text:
- help_text = help_text_html % force_text(field.help_text)
- else:
- help_text = ''
-
- output.append(normal_row % {
- 'errors': force_text(bf_errors),
- 'label': force_text(label),
- 'field': six.text_type(bf),
- 'help_text': help_text,
- 'html_class_attr': html_class_attr
- })
-
- if top_errors:
- output.insert(0, error_row % force_text(top_errors))
-
- if hidden_fields: # Insert any hidden fields in the last row.
- str_hidden = ''.join(hidden_fields)
- if output:
- last_row = output[-1]
- # Chop off the trailing row_ender (e.g. '</td></tr>') and
- # insert the hidden fields.
- if not last_row.endswith(row_ender):
- # This can happen in the as_p() case (and possibly others
- # that users write): if there are only top errors, we may
- # not be able to conscript the last row for our purposes,
- # so insert a new, empty row.
- last_row = (normal_row % {'errors': '', 'label': '',
- 'field': '', 'help_text':'',
- 'html_class_attr': html_class_attr})
- output.append(last_row)
- output[-1] = last_row[:-len(row_ender)] + str_hidden + row_ender
- else:
- # If there aren't any rows in the output, just append the
- # hidden fields.
- output.append(str_hidden)
- return mark_safe('\n'.join(output))
-
- def as_table(self):
- "Returns this form rendered as HTML <tr>s -- excluding the <table></table>."
- return self._html_output(
- normal_row = '<tr%(html_class_attr)s><th>%(label)s</th><td>%(errors)s%(field)s%(help_text)s</td></tr>',
- error_row = '<tr><td colspan="2">%s</td></tr>',
- row_ender = '</td></tr>',
- help_text_html = '<br /><span class="helptext">%s</span>',
- errors_on_separate_row = False)
-
- def as_ul(self):
- "Returns this form rendered as HTML <li>s -- excluding the <ul></ul>."
- return self._html_output(
- normal_row = '<li%(html_class_attr)s>%(errors)s%(label)s %(field)s%(help_text)s</li>',
- error_row = '<li>%s</li>',
- row_ender = '</li>',
- help_text_html = ' <span class="helptext">%s</span>',
- errors_on_separate_row = False)
-
- def as_p(self):
- "Returns this form rendered as HTML <p>s."
- return self._html_output(
- normal_row = '<p%(html_class_attr)s>%(label)s %(field)s%(help_text)s</p>',
- error_row = '%s',
- row_ender = '</p>',
- help_text_html = ' <span class="helptext">%s</span>',
- errors_on_separate_row = True)
-
- def non_field_errors(self):
- """
- Returns an ErrorList of errors that aren't associated with a particular
- field -- i.e., from Form.clean(). Returns an empty ErrorList if there
- are none.
- """
- return self.errors.get(NON_FIELD_ERRORS, self.error_class())
-
- def _raw_value(self, fieldname):
- """
- Returns the raw_value for a particular field name. This is just a
- convenient wrapper around widget.value_from_datadict.
- """
- field = self.fields[fieldname]
- prefix = self.add_prefix(fieldname)
- return field.widget.value_from_datadict(self.data, self.files, prefix)
-
- def full_clean(self):
- """
- Cleans all of self.data and populates self._errors and
- self.cleaned_data.
- """
- self._errors = ErrorDict()
- if not self.is_bound: # Stop further processing.
- return
- self.cleaned_data = {}
- # If the form is permitted to be empty, and none of the form data has
- # changed from the initial data, short circuit any validation.
- if self.empty_permitted and not self.has_changed():
- return
- self._clean_fields()
- self._clean_form()
- self._post_clean()
-
- def _clean_fields(self):
- for name, field in self.fields.items():
- # value_from_datadict() gets the data from the data dictionaries.
- # Each widget type knows how to retrieve its own data, because some
- # widgets split data over several HTML fields.
- value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name))
- try:
- if isinstance(field, FileField):
- initial = self.initial.get(name, field.initial)
- value = field.clean(value, initial)
- else:
- value = field.clean(value)
- self.cleaned_data[name] = value
- if hasattr(self, 'clean_%s' % name):
- value = getattr(self, 'clean_%s' % name)()
- self.cleaned_data[name] = value
- except ValidationError as e:
- self._errors[name] = self.error_class(e.messages)
- if name in self.cleaned_data:
- del self.cleaned_data[name]
-
- def _clean_form(self):
- try:
- self.cleaned_data = self.clean()
- except ValidationError as e:
- self._errors[NON_FIELD_ERRORS] = self.error_class(e.messages)
-
- def _post_clean(self):
- """
- An internal hook for performing additional cleaning after form cleaning
- is complete. Used for model validation in model forms.
- """
- pass
-
- def clean(self):
- """
- Hook for doing any extra form-wide cleaning after Field.clean() been
- called on every field. Any ValidationError raised by this method will
- not be associated with a particular field; it will have a special-case
- association with the field named '__all__'.
- """
- return self.cleaned_data
-
- def has_changed(self):
- """
- Returns True if data differs from initial.
- """
- return bool(self.changed_data)
-
- @property
- def changed_data(self):
- if self._changed_data is None:
- self._changed_data = []
- # XXX: For now we're asking the individual widgets whether or not the
- # data has changed. It would probably be more efficient to hash the
- # initial data, store it in a hidden field, and compare a hash of the
- # submitted data, but we'd need a way to easily get the string value
- # for a given field. Right now, that logic is embedded in the render
- # method of each widget.
- for name, field in self.fields.items():
- prefixed_name = self.add_prefix(name)
- data_value = field.widget.value_from_datadict(self.data, self.files, prefixed_name)
- if not field.show_hidden_initial:
- initial_value = self.initial.get(name, field.initial)
- if callable(initial_value):
- initial_value = initial_value()
- else:
- initial_prefixed_name = self.add_initial_prefix(name)
- hidden_widget = field.hidden_widget()
- try:
- initial_value = field.to_python(hidden_widget.value_from_datadict(
- self.data, self.files, initial_prefixed_name))
- except ValidationError:
- # Always assume data has changed if validation fails.
- self._changed_data.append(name)
- continue
- if hasattr(field.widget, '_has_changed'):
- warnings.warn("The _has_changed method on widgets is deprecated,"
- " define it at field level instead.",
- PendingDeprecationWarning, stacklevel=2)
- if field.widget._has_changed(initial_value, data_value):
- self._changed_data.append(name)
- elif field._has_changed(initial_value, data_value):
- self._changed_data.append(name)
- return self._changed_data
-
- @property
- def media(self):
- """
- Provide a description of all media required to render the widgets on this form
- """
- media = Media()
- for field in self.fields.values():
- media = media + field.widget.media
- return media
-
- def is_multipart(self):
- """
- Returns True if the form needs to be multipart-encoded, i.e. it has
- FileInput. Otherwise, False.
- """
- for field in self.fields.values():
- if field.widget.needs_multipart_form:
- return True
- return False
-
- def hidden_fields(self):
- """
- Returns a list of all the BoundField objects that are hidden fields.
- Useful for manual form layout in templates.
- """
- return [field for field in self if field.is_hidden]
-
- def visible_fields(self):
- """
- Returns a list of BoundField objects that aren't hidden fields.
- The opposite of the hidden_fields() method.
- """
- return [field for field in self if not field.is_hidden]
-
-class Form(six.with_metaclass(DeclarativeFieldsMetaclass, BaseForm)):
- "A collection of Fields, plus their associated data."
- # This is a separate class from BaseForm in order to abstract the way
- # self.fields is specified. This class (Form) is the one that does the
- # fancy metaclass stuff purely for the semantic sugar -- it allows one
- # to define a form using declarative syntax.
- # BaseForm itself has no way of designating self.fields.
-
-@python_2_unicode_compatible
-class BoundField(object):
- "A Field plus data"
- def __init__(self, form, field, name):
- self.form = form
- self.field = field
- self.name = name
- self.html_name = form.add_prefix(name)
- self.html_initial_name = form.add_initial_prefix(name)
- self.html_initial_id = form.add_initial_prefix(self.auto_id)
- if self.field.label is None:
- self.label = pretty_name(name)
- else:
- self.label = self.field.label
- self.help_text = field.help_text or ''
-
- def __str__(self):
- """Renders this field as an HTML widget."""
- if self.field.show_hidden_initial:
- return self.as_widget() + self.as_hidden(only_initial=True)
- return self.as_widget()
-
- def __iter__(self):
- """
- Yields rendered strings that comprise all widgets in this BoundField.
-
- This really is only useful for RadioSelect widgets, so that you can
- iterate over individual radio buttons in a template.
- """
- for subwidget in self.field.widget.subwidgets(self.html_name, self.value()):
- yield subwidget
-
- def __len__(self):
- return len(list(self.__iter__()))
-
- def __getitem__(self, idx):
- return list(self.__iter__())[idx]
-
- @property
- def errors(self):
- """
- Returns an ErrorList for this field. Returns an empty ErrorList
- if there are none.
- """
- return self.form.errors.get(self.name, self.form.error_class())
-
- def as_widget(self, widget=None, attrs=None, only_initial=False):
- """
- Renders the field by rendering the passed widget, adding any HTML
- attributes passed as attrs. If no widget is specified, then the
- field's default widget will be used.
- """
- if not widget:
- widget = self.field.widget
-
- if self.field.localize:
- widget.is_localized = True
-
- attrs = attrs or {}
- auto_id = self.auto_id
- if auto_id and 'id' not in attrs and 'id' not in widget.attrs:
- if not only_initial:
- attrs['id'] = auto_id
- else:
- attrs['id'] = self.html_initial_id
-
- if not only_initial:
- name = self.html_name
- else:
- name = self.html_initial_name
- return widget.render(name, self.value(), attrs=attrs)
-
- def as_text(self, attrs=None, **kwargs):
- """
- Returns a string of HTML for representing this as an <input type="text">.
- """
- return self.as_widget(TextInput(), attrs, **kwargs)
-
- def as_textarea(self, attrs=None, **kwargs):
- "Returns a string of HTML for representing this as a <textarea>."
- return self.as_widget(Textarea(), attrs, **kwargs)
-
- def as_hidden(self, attrs=None, **kwargs):
- """
- Returns a string of HTML for representing this as an <input type="hidden">.
- """
- return self.as_widget(self.field.hidden_widget(), attrs, **kwargs)
-
- @property
- def data(self):
- """
- Returns the data for this BoundField, or None if it wasn't given.
- """
- return self.field.widget.value_from_datadict(self.form.data, self.form.files, self.html_name)
-
- def value(self):
- """
- Returns the value for this BoundField, using the initial value if
- the form is not bound or the data otherwise.
- """
- if not self.form.is_bound:
- data = self.form.initial.get(self.name, self.field.initial)
- if callable(data):
- data = data()
- else:
- data = self.field.bound_data(
- self.data, self.form.initial.get(self.name, self.field.initial)
- )
- return self.field.prepare_value(data)
-
- def label_tag(self, contents=None, attrs=None, label_suffix=None):
- """
- Wraps the given contents in a <label>, if the field has an ID attribute.
- contents should be 'mark_safe'd to avoid HTML escaping. If contents
- aren't given, uses the field's HTML-escaped label.
-
- If attrs are given, they're used as HTML attributes on the <label> tag.
-
- label_suffix allows overriding the form's label_suffix.
- """
- contents = contents or self.label
- # Only add the suffix if the label does not end in punctuation.
- label_suffix = label_suffix if label_suffix is not None else self.form.label_suffix
- # Translators: If found as last label character, these punctuation
- # characters will prevent the default label_suffix to be appended to the label
- if label_suffix and contents and contents[-1] not in _(':?.!'):
- contents = format_html('{0}{1}', contents, label_suffix)
- widget = self.field.widget
- id_ = widget.attrs.get('id') or self.auto_id
- if id_:
- id_for_label = widget.id_for_label(id_)
- if id_for_label:
- attrs = dict(attrs or {}, **{'for': id_for_label})
- attrs = flatatt(attrs) if attrs else ''
- contents = format_html('<label{0}>{1}</label>', attrs, contents)
- else:
- contents = conditional_escape(contents)
- return mark_safe(contents)
-
- def css_classes(self, extra_classes=None):
- """
- Returns a string of space-separated CSS classes for this field.
- """
- if hasattr(extra_classes, 'split'):
- extra_classes = extra_classes.split()
- extra_classes = set(extra_classes or [])
- if self.errors and hasattr(self.form, 'error_css_class'):
- extra_classes.add(self.form.error_css_class)
- if self.field.required and hasattr(self.form, 'required_css_class'):
- extra_classes.add(self.form.required_css_class)
- return ' '.join(extra_classes)
-
- @property
- def is_hidden(self):
- "Returns True if this BoundField's widget is hidden."
- return self.field.widget.is_hidden
-
- @property
- def auto_id(self):
- """
- Calculates and returns the ID attribute for this BoundField, if the
- associated Form has specified auto_id. Returns an empty string otherwise.
- """
- auto_id = self.form.auto_id
- if auto_id and '%s' in smart_text(auto_id):
- return smart_text(auto_id) % self.html_name
- elif auto_id:
- return self.html_name
- return ''
-
- @property
- def id_for_label(self):
- """
- Wrapper around the field widget's `id_for_label` method.
- Useful, for example, for focusing on this field regardless of whether
- it has a single widget or a MultiWidget.
- """
- widget = self.field.widget
- id_ = widget.attrs.get('id') or self.auto_id
- return widget.id_for_label(id_)
diff --git a/lib/python2.7/site-packages/django/forms/formsets.py b/lib/python2.7/site-packages/django/forms/formsets.py
deleted file mode 100644
index cb3126e..0000000
--- a/lib/python2.7/site-packages/django/forms/formsets.py
+++ /dev/null
@@ -1,417 +0,0 @@
-from __future__ import absolute_import, unicode_literals
-
-from django.core.exceptions import ValidationError
-from django.forms import Form
-from django.forms.fields import IntegerField, BooleanField
-from django.forms.util import ErrorList
-from django.forms.widgets import HiddenInput
-from django.utils.encoding import python_2_unicode_compatible
-from django.utils.functional import cached_property
-from django.utils.safestring import mark_safe
-from django.utils import six
-from django.utils.six.moves import xrange
-from django.utils.translation import ungettext, ugettext as _
-
-
-__all__ = ('BaseFormSet', 'all_valid')
-
-# special field names
-TOTAL_FORM_COUNT = 'TOTAL_FORMS'
-INITIAL_FORM_COUNT = 'INITIAL_FORMS'
-MAX_NUM_FORM_COUNT = 'MAX_NUM_FORMS'
-ORDERING_FIELD_NAME = 'ORDER'
-DELETION_FIELD_NAME = 'DELETE'
-
-# default maximum number of forms in a formset, to prevent memory exhaustion
-DEFAULT_MAX_NUM = 1000
-
-class ManagementForm(Form):
- """
- ``ManagementForm`` is used to keep track of how many form instances
- are displayed on the page. If adding new forms via javascript, you should
- increment the count field of this form as well.
- """
- def __init__(self, *args, **kwargs):
- self.base_fields[TOTAL_FORM_COUNT] = IntegerField(widget=HiddenInput)
- self.base_fields[INITIAL_FORM_COUNT] = IntegerField(widget=HiddenInput)
- # MAX_NUM_FORM_COUNT is output with the rest of the management form,
- # but only for the convenience of client-side code. The POST
- # value of MAX_NUM_FORM_COUNT returned from the client is not checked.
- self.base_fields[MAX_NUM_FORM_COUNT] = IntegerField(required=False, widget=HiddenInput)
- super(ManagementForm, self).__init__(*args, **kwargs)
-
-@python_2_unicode_compatible
-class BaseFormSet(object):
- """
- A collection of instances of the same Form class.
- """
- def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
- initial=None, error_class=ErrorList):
- self.is_bound = data is not None or files is not None
- self.prefix = prefix or self.get_default_prefix()
- self.auto_id = auto_id
- self.data = data or {}
- self.files = files or {}
- self.initial = initial
- self.error_class = error_class
- self._errors = None
- self._non_form_errors = None
-
- def __str__(self):
- return self.as_table()
-
- def __iter__(self):
- """Yields the forms in the order they should be rendered"""
- return iter(self.forms)
-
- def __getitem__(self, index):
- """Returns the form at the given index, based on the rendering order"""
- return self.forms[index]
-
- def __len__(self):
- return len(self.forms)
-
- def __bool__(self):
- """All formsets have a management form which is not included in the length"""
- return True
-
- def __nonzero__(self): # Python 2 compatibility
- return type(self).__bool__(self)
-
- @property
- def management_form(self):
- """Returns the ManagementForm instance for this FormSet."""
- if self.is_bound:
- form = ManagementForm(self.data, auto_id=self.auto_id, prefix=self.prefix)
- if not form.is_valid():
- raise ValidationError(
- _('ManagementForm data is missing or has been tampered with'),
- code='missing_management_form',
- )
- else:
- form = ManagementForm(auto_id=self.auto_id, prefix=self.prefix, initial={
- TOTAL_FORM_COUNT: self.total_form_count(),
- INITIAL_FORM_COUNT: self.initial_form_count(),
- MAX_NUM_FORM_COUNT: self.max_num
- })
- return form
-
- def total_form_count(self):
- """Returns the total number of forms in this FormSet."""
- if self.is_bound:
- # return absolute_max if it is lower than the actual total form
- # count in the data; this is DoS protection to prevent clients
- # from forcing the server to instantiate arbitrary numbers of
- # forms
- return min(self.management_form.cleaned_data[TOTAL_FORM_COUNT], self.absolute_max)
- else:
- initial_forms = self.initial_form_count()
- total_forms = initial_forms + self.extra
- # Allow all existing related objects/inlines to be displayed,
- # but don't allow extra beyond max_num.
- if initial_forms > self.max_num >= 0:
- total_forms = initial_forms
- elif total_forms > self.max_num >= 0:
- total_forms = self.max_num
- return total_forms
-
- def initial_form_count(self):
- """Returns the number of forms that are required in this FormSet."""
- if self.is_bound:
- return self.management_form.cleaned_data[INITIAL_FORM_COUNT]
- else:
- # Use the length of the initial data if it's there, 0 otherwise.
- initial_forms = len(self.initial) if self.initial else 0
- return initial_forms
-
- @cached_property
- def forms(self):
- """
- Instantiate forms at first property access.
- """
- # DoS protection is included in total_form_count()
- forms = [self._construct_form(i) for i in xrange(self.total_form_count())]
- return forms
-
- def _construct_form(self, i, **kwargs):
- """
- Instantiates and returns the i-th form instance in a formset.
- """
- defaults = {
- 'auto_id': self.auto_id,
- 'prefix': self.add_prefix(i),
- 'error_class': self.error_class,
- }
- if self.is_bound:
- defaults['data'] = self.data
- defaults['files'] = self.files
- if self.initial and not 'initial' in kwargs:
- try:
- defaults['initial'] = self.initial[i]
- except IndexError:
- pass
- # Allow extra forms to be empty.
- if i >= self.initial_form_count():
- defaults['empty_permitted'] = True
- defaults.update(kwargs)
- form = self.form(**defaults)
- self.add_fields(form, i)
- return form
-
- @property
- def initial_forms(self):
- """Return a list of all the initial forms in this formset."""
- return self.forms[:self.initial_form_count()]
-
- @property
- def extra_forms(self):
- """Return a list of all the extra forms in this formset."""
- return self.forms[self.initial_form_count():]
-
- @property
- def empty_form(self):
- form = self.form(
- auto_id=self.auto_id,
- prefix=self.add_prefix('__prefix__'),
- empty_permitted=True,
- )
- self.add_fields(form, None)
- return form
-
- @property
- def cleaned_data(self):
- """
- Returns a list of form.cleaned_data dicts for every form in self.forms.
- """
- if not self.is_valid():
- raise AttributeError("'%s' object has no attribute 'cleaned_data'" % self.__class__.__name__)
- return [form.cleaned_data for form in self.forms]
-
- @property
- def deleted_forms(self):
- """
- Returns a list of forms that have been marked for deletion.
- """
- if not self.is_valid() or not self.can_delete:
- return []
- # construct _deleted_form_indexes which is just a list of form indexes
- # that have had their deletion widget set to True
- if not hasattr(self, '_deleted_form_indexes'):
- self._deleted_form_indexes = []
- for i in range(0, self.total_form_count()):
- form = self.forms[i]
- # if this is an extra form and hasn't changed, don't consider it
- if i >= self.initial_form_count() and not form.has_changed():
- continue
- if self._should_delete_form(form):
- self._deleted_form_indexes.append(i)
- return [self.forms[i] for i in self._deleted_form_indexes]
-
- @property
- def ordered_forms(self):
- """
- Returns a list of form in the order specified by the incoming data.
- Raises an AttributeError if ordering is not allowed.
- """
- if not self.is_valid() or not self.can_order:
- raise AttributeError("'%s' object has no attribute 'ordered_forms'" % self.__class__.__name__)
- # Construct _ordering, which is a list of (form_index, order_field_value)
- # tuples. After constructing this list, we'll sort it by order_field_value
- # so we have a way to get to the form indexes in the order specified
- # by the form data.
- if not hasattr(self, '_ordering'):
- self._ordering = []
- for i in range(0, self.total_form_count()):
- form = self.forms[i]
- # if this is an extra form and hasn't changed, don't consider it
- if i >= self.initial_form_count() and not form.has_changed():
- continue
- # don't add data marked for deletion to self.ordered_data
- if self.can_delete and self._should_delete_form(form):
- continue
- self._ordering.append((i, form.cleaned_data[ORDERING_FIELD_NAME]))
- # After we're done populating self._ordering, sort it.
- # A sort function to order things numerically ascending, but
- # None should be sorted below anything else. Allowing None as
- # a comparison value makes it so we can leave ordering fields
- # blank.
- def compare_ordering_key(k):
- if k[1] is None:
- return (1, 0) # +infinity, larger than any number
- return (0, k[1])
- self._ordering.sort(key=compare_ordering_key)
- # Return a list of form.cleaned_data dicts in the order specified by
- # the form data.
- return [self.forms[i[0]] for i in self._ordering]
-
- @classmethod
- def get_default_prefix(cls):
- return 'form'
-
- def non_form_errors(self):
- """
- Returns an ErrorList of errors that aren't associated with a particular
- form -- i.e., from formset.clean(). Returns an empty ErrorList if there
- are none.
- """
- if self._non_form_errors is None:
- self.full_clean()
- return self._non_form_errors
-
- @property
- def errors(self):
- """
- Returns a list of form.errors for every form in self.forms.
- """
- if self._errors is None:
- self.full_clean()
- return self._errors
-
- def total_error_count(self):
- """
- Returns the number of errors across all forms in the formset.
- """
- return len(self.non_form_errors()) +\
- sum(len(form_errors) for form_errors in self.errors)
-
- def _should_delete_form(self, form):
- """
- Returns whether or not the form was marked for deletion.
- """
- return form.cleaned_data.get(DELETION_FIELD_NAME, False)
-
- def is_valid(self):
- """
- Returns True if every form in self.forms is valid.
- """
- if not self.is_bound:
- return False
- # We loop over every form.errors here rather than short circuiting on the
- # first failure to make sure validation gets triggered for every form.
- forms_valid = True
- err = self.errors
- for i in range(0, self.total_form_count()):
- form = self.forms[i]
- if self.can_delete:
- if self._should_delete_form(form):
- # This form is going to be deleted so any of its errors
- # should not cause the entire formset to be invalid.
- continue
- forms_valid &= form.is_valid()
- return forms_valid and not bool(self.non_form_errors())
-
- def full_clean(self):
- """
- Cleans all of self.data and populates self._errors and
- self._non_form_errors.
- """
- self._errors = []
- self._non_form_errors = self.error_class()
-
- if not self.is_bound: # Stop further processing.
- return
- for i in range(0, self.total_form_count()):
- form = self.forms[i]
- self._errors.append(form.errors)
- try:
- if (self.validate_max and
- self.total_form_count() - len(self.deleted_forms) > self.max_num) or \
- self.management_form.cleaned_data[TOTAL_FORM_COUNT] > self.absolute_max:
- raise ValidationError(ungettext(
- "Please submit %d or fewer forms.",
- "Please submit %d or fewer forms.", self.max_num) % self.max_num,
- code='too_many_forms',
- )
- # Give self.clean() a chance to do cross-form validation.
- self.clean()
- except ValidationError as e:
- self._non_form_errors = self.error_class(e.messages)
-
- def clean(self):
- """
- Hook for doing any extra formset-wide cleaning after Form.clean() has
- been called on every form. Any ValidationError raised by this method
- will not be associated with a particular form; it will be accesible
- via formset.non_form_errors()
- """
- pass
-
- def has_changed(self):
- """
- Returns true if data in any form differs from initial.
- """
- return any(form.has_changed() for form in self)
-
- def add_fields(self, form, index):
- """A hook for adding extra fields on to each form instance."""
- if self.can_order:
- # Only pre-fill the ordering field for initial forms.
- if index is not None and index < self.initial_form_count():
- form.fields[ORDERING_FIELD_NAME] = IntegerField(label=_('Order'), initial=index+1, required=False)
- else:
- form.fields[ORDERING_FIELD_NAME] = IntegerField(label=_('Order'), required=False)
- if self.can_delete:
- form.fields[DELETION_FIELD_NAME] = BooleanField(label=_('Delete'), required=False)
-
- def add_prefix(self, index):
- return '%s-%s' % (self.prefix, index)
-
- def is_multipart(self):
- """
- Returns True if the formset needs to be multipart, i.e. it
- has FileInput. Otherwise, False.
- """
- if self.forms:
- return self.forms[0].is_multipart()
- else:
- return self.empty_form.is_multipart()
-
- @property
- def media(self):
- # All the forms on a FormSet are the same, so you only need to
- # interrogate the first form for media.
- if self.forms:
- return self.forms[0].media
- else:
- return self.empty_form.media
-
- def as_table(self):
- "Returns this formset rendered as HTML <tr>s -- excluding the <table></table>."
- # XXX: there is no semantic division between forms here, there
- # probably should be. It might make sense to render each form as a
- # table row with each field as a td.
- forms = ' '.join([form.as_table() for form in self])
- return mark_safe('\n'.join([six.text_type(self.management_form), forms]))
-
- def as_p(self):
- "Returns this formset rendered as HTML <p>s."
- forms = ' '.join([form.as_p() for form in self])
- return mark_safe('\n'.join([six.text_type(self.management_form), forms]))
-
- def as_ul(self):
- "Returns this formset rendered as HTML <li>s."
- forms = ' '.join([form.as_ul() for form in self])
- return mark_safe('\n'.join([six.text_type(self.management_form), forms]))
-
-def formset_factory(form, formset=BaseFormSet, extra=1, can_order=False,
- can_delete=False, max_num=None, validate_max=False):
- """Return a FormSet for the given form class."""
- if max_num is None:
- max_num = DEFAULT_MAX_NUM
- # hard limit on forms instantiated, to prevent memory-exhaustion attacks
- # limit is simply max_num + DEFAULT_MAX_NUM (which is 2*DEFAULT_MAX_NUM
- # if max_num is None in the first place)
- absolute_max = max_num + DEFAULT_MAX_NUM
- attrs = {'form': form, 'extra': extra,
- 'can_order': can_order, 'can_delete': can_delete,
- 'max_num': max_num, 'absolute_max': absolute_max,
- 'validate_max' : validate_max}
- return type(form.__name__ + str('FormSet'), (formset,), attrs)
-
-def all_valid(formsets):
- """Returns true if every formset in formsets is valid."""
- valid = True
- for formset in formsets:
- if not formset.is_valid():
- valid = False
- return valid
diff --git a/lib/python2.7/site-packages/django/forms/models.py b/lib/python2.7/site-packages/django/forms/models.py
deleted file mode 100644
index 15c0015..0000000
--- a/lib/python2.7/site-packages/django/forms/models.py
+++ /dev/null
@@ -1,1231 +0,0 @@
-"""
-Helper functions for creating Form classes from Django models
-and database field objects.
-"""
-
-from __future__ import absolute_import, unicode_literals
-
-import warnings
-
-from django.core.exceptions import ValidationError, NON_FIELD_ERRORS, FieldError
-from django.forms.fields import Field, ChoiceField
-from django.forms.forms import BaseForm, get_declared_fields
-from django.forms.formsets import BaseFormSet, formset_factory
-from django.forms.util import ErrorList
-from django.forms.widgets import (SelectMultiple, HiddenInput,
- MultipleHiddenInput, media_property, CheckboxSelectMultiple)
-from django.utils.encoding import smart_text, force_text
-from django.utils.datastructures import SortedDict
-from django.utils import six
-from django.utils.text import get_text_list, capfirst
-from django.utils.translation import ugettext_lazy as _, ugettext, string_concat
-
-
-__all__ = (
- 'ModelForm', 'BaseModelForm', 'model_to_dict', 'fields_for_model',
- 'save_instance', 'ModelChoiceField', 'ModelMultipleChoiceField',
- 'ALL_FIELDS',
-)
-
-ALL_FIELDS = '__all__'
-
-
-def construct_instance(form, instance, fields=None, exclude=None):
- """
- Constructs and returns a model instance from the bound ``form``'s
- ``cleaned_data``, but does not save the returned instance to the
- database.
- """
- from django.db import models
- opts = instance._meta
-
- cleaned_data = form.cleaned_data
- file_field_list = []
- for f in opts.fields:
- if not f.editable or isinstance(f, models.AutoField) \
- or not f.name in cleaned_data:
- continue
- if fields is not None and f.name not in fields:
- continue
- if exclude and f.name in exclude:
- continue
- # Defer saving file-type fields until after the other fields, so a
- # callable upload_to can use the values from other fields.
- if isinstance(f, models.FileField):
- file_field_list.append(f)
- else:
- f.save_form_data(instance, cleaned_data[f.name])
-
- for f in file_field_list:
- f.save_form_data(instance, cleaned_data[f.name])
-
- return instance
-
-def save_instance(form, instance, fields=None, fail_message='saved',
- commit=True, exclude=None, construct=True):
- """
- Saves bound Form ``form``'s cleaned_data into model instance ``instance``.
-
- If commit=True, then the changes to ``instance`` will be saved to the
- database. Returns ``instance``.
-
- If construct=False, assume ``instance`` has already been constructed and
- just needs to be saved.
- """
- if construct:
- instance = construct_instance(form, instance, fields, exclude)
- opts = instance._meta
- if form.errors:
- raise ValueError("The %s could not be %s because the data didn't"
- " validate." % (opts.object_name, fail_message))
-
- # Wrap up the saving of m2m data as a function.
- def save_m2m():
- cleaned_data = form.cleaned_data
- # Note that for historical reasons we want to include also
- # virtual_fields here. (GenericRelation was previously a fake
- # m2m field).
- for f in opts.many_to_many + opts.virtual_fields:
- if not hasattr(f, 'save_form_data'):
- continue
- if fields and f.name not in fields:
- continue
- if exclude and f.name in exclude:
- continue
- if f.name in cleaned_data:
- f.save_form_data(instance, cleaned_data[f.name])
- if commit:
- # If we are committing, save the instance and the m2m data immediately.
- instance.save()
- save_m2m()
- else:
- # We're not committing. Add a method to the form to allow deferred
- # saving of m2m data.
- form.save_m2m = save_m2m
- return instance
-
-
-# ModelForms #################################################################
-
-def model_to_dict(instance, fields=None, exclude=None):
- """
- Returns a dict containing the data in ``instance`` suitable for passing as
- a Form's ``initial`` keyword argument.
-
- ``fields`` is an optional list of field names. If provided, only the named
- fields will be included in the returned dict.
-
- ``exclude`` is an optional list of field names. If provided, the named
- fields will be excluded from the returned dict, even if they are listed in
- the ``fields`` argument.
- """
- # avoid a circular import
- from django.db.models.fields.related import ManyToManyField
- opts = instance._meta
- data = {}
- for f in opts.concrete_fields + opts.virtual_fields + opts.many_to_many:
- if not getattr(f, 'editable', False):
- continue
- if fields and not f.name in fields:
- continue
- if exclude and f.name in exclude:
- continue
- if isinstance(f, ManyToManyField):
- # If the object doesn't have a primary key yet, just use an empty
- # list for its m2m fields. Calling f.value_from_object will raise
- # an exception.
- if instance.pk is None:
- data[f.name] = []
- else:
- # MultipleChoiceWidget needs a list of pks, not object instances.
- data[f.name] = list(f.value_from_object(instance).values_list('pk', flat=True))
- else:
- data[f.name] = f.value_from_object(instance)
- return data
-
-def fields_for_model(model, fields=None, exclude=None, widgets=None,
- formfield_callback=None, localized_fields=None,
- labels=None, help_texts=None, error_messages=None):
- """
- Returns a ``SortedDict`` containing form fields for the given model.
-
- ``fields`` is an optional list of field names. If provided, only the named
- fields will be included in the returned fields.
-
- ``exclude`` is an optional list of field names. If provided, the named
- fields will be excluded from the returned fields, even if they are listed
- in the ``fields`` argument.
-
- ``widgets`` is a dictionary of model field names mapped to a widget.
-
- ``localized_fields`` is a list of names of fields which should be localized.
-
- ``labels`` is a dictionary of model field names mapped to a label.
-
- ``help_texts`` is a dictionary of model field names mapped to a help text.
-
- ``error_messages`` is a dictionary of model field names mapped to a
- dictionary of error messages.
-
- ``formfield_callback`` is a callable that takes a model field and returns
- a form field.
- """
- field_list = []
- ignored = []
- opts = model._meta
- # Avoid circular import
- from django.db.models.fields import Field as ModelField
- sortable_virtual_fields = [f for f in opts.virtual_fields
- if isinstance(f, ModelField)]
- for f in sorted(opts.concrete_fields + sortable_virtual_fields + opts.many_to_many):
- if not getattr(f, 'editable', False):
- continue
- if fields is not None and not f.name in fields:
- continue
- if exclude and f.name in exclude:
- continue
-
- kwargs = {}
- if widgets and f.name in widgets:
- kwargs['widget'] = widgets[f.name]
- if localized_fields == ALL_FIELDS or (localized_fields and f.name in localized_fields):
- kwargs['localize'] = True
- if labels and f.name in labels:
- kwargs['label'] = labels[f.name]
- if help_texts and f.name in help_texts:
- kwargs['help_text'] = help_texts[f.name]
- if error_messages and f.name in error_messages:
- kwargs['error_messages'] = error_messages[f.name]
-
- if formfield_callback is None:
- formfield = f.formfield(**kwargs)
- elif not callable(formfield_callback):
- raise TypeError('formfield_callback must be a function or callable')
- else:
- formfield = formfield_callback(f, **kwargs)
-
- if formfield:
- field_list.append((f.name, formfield))
- else:
- ignored.append(f.name)
- field_dict = SortedDict(field_list)
- if fields:
- field_dict = SortedDict(
- [(f, field_dict.get(f)) for f in fields
- if ((not exclude) or (exclude and f not in exclude)) and (f not in ignored)]
- )
- return field_dict
-
-class ModelFormOptions(object):
- def __init__(self, options=None):
- self.model = getattr(options, 'model', None)
- self.fields = getattr(options, 'fields', None)
- self.exclude = getattr(options, 'exclude', None)
- self.widgets = getattr(options, 'widgets', None)
- self.localized_fields = getattr(options, 'localized_fields', None)
- self.labels = getattr(options, 'labels', None)
- self.help_texts = getattr(options, 'help_texts', None)
- self.error_messages = getattr(options, 'error_messages', None)
-
-
-class ModelFormMetaclass(type):
- def __new__(cls, name, bases, attrs):
- formfield_callback = attrs.pop('formfield_callback', None)
- try:
- parents = [b for b in bases if issubclass(b, ModelForm)]
- except NameError:
- # We are defining ModelForm itself.
- parents = None
- declared_fields = get_declared_fields(bases, attrs, False)
- new_class = super(ModelFormMetaclass, cls).__new__(cls, name, bases,
- attrs)
- if not parents:
- return new_class
-
- if 'media' not in attrs:
- new_class.media = media_property(new_class)
- opts = new_class._meta = ModelFormOptions(getattr(new_class, 'Meta', None))
-
- # We check if a string was passed to `fields` or `exclude`,
- # which is likely to be a mistake where the user typed ('foo') instead
- # of ('foo',)
- for opt in ['fields', 'exclude', 'localized_fields']:
- value = getattr(opts, opt)
- if isinstance(value, six.string_types) and value != ALL_FIELDS:
- msg = ("%(model)s.Meta.%(opt)s cannot be a string. "
- "Did you mean to type: ('%(value)s',)?" % {
- 'model': new_class.__name__,
- 'opt': opt,
- 'value': value,
- })
- raise TypeError(msg)
-
- if opts.model:
- # If a model is defined, extract form fields from it.
-
- if opts.fields is None and opts.exclude is None:
- # This should be some kind of assertion error once deprecation
- # cycle is complete.
- warnings.warn("Creating a ModelForm without either the 'fields' attribute "
- "or the 'exclude' attribute is deprecated - form %s "
- "needs updating" % name,
- PendingDeprecationWarning, stacklevel=2)
-
- if opts.fields == ALL_FIELDS:
- # sentinel for fields_for_model to indicate "get the list of
- # fields from the model"
- opts.fields = None
-
- fields = fields_for_model(opts.model, opts.fields, opts.exclude,
- opts.widgets, formfield_callback,
- opts.localized_fields, opts.labels,
- opts.help_texts, opts.error_messages)
-
- # make sure opts.fields doesn't specify an invalid field
- none_model_fields = [k for k, v in six.iteritems(fields) if not v]
- missing_fields = set(none_model_fields) - \
- set(declared_fields.keys())
- if missing_fields:
- message = 'Unknown field(s) (%s) specified for %s'
- message = message % (', '.join(missing_fields),
- opts.model.__name__)
- raise FieldError(message)
- # Override default model fields with any custom declared ones
- # (plus, include all the other declared fields).
- fields.update(declared_fields)
- else:
- fields = declared_fields
- new_class.declared_fields = declared_fields
- new_class.base_fields = fields
- return new_class
-
-class BaseModelForm(BaseForm):
- def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
- initial=None, error_class=ErrorList, label_suffix=None,
- empty_permitted=False, instance=None):
- opts = self._meta
- if opts.model is None:
- raise ValueError('ModelForm has no model class specified.')
- if instance is None:
- # if we didn't get an instance, instantiate a new one
- self.instance = opts.model()
- object_data = {}
- else:
- self.instance = instance
- object_data = model_to_dict(instance, opts.fields, opts.exclude)
- # if initial was provided, it should override the values from instance
- if initial is not None:
- object_data.update(initial)
- # self._validate_unique will be set to True by BaseModelForm.clean().
- # It is False by default so overriding self.clean() and failing to call
- # super will stop validate_unique from being called.
- self._validate_unique = False
- super(BaseModelForm, self).__init__(data, files, auto_id, prefix, object_data,
- error_class, label_suffix, empty_permitted)
-
- def _update_errors(self, errors):
- for field, messages in errors.error_dict.items():
- if field not in self.fields:
- continue
- field = self.fields[field]
- for message in messages:
- if isinstance(message, ValidationError):
- if message.code in field.error_messages:
- message.message = field.error_messages[message.code]
-
- message_dict = errors.message_dict
- for k, v in message_dict.items():
- if k != NON_FIELD_ERRORS:
- self._errors.setdefault(k, self.error_class()).extend(v)
- # Remove the data from the cleaned_data dict since it was invalid
- if k in self.cleaned_data:
- del self.cleaned_data[k]
- if NON_FIELD_ERRORS in message_dict:
- messages = message_dict[NON_FIELD_ERRORS]
- self._errors.setdefault(NON_FIELD_ERRORS, self.error_class()).extend(messages)
-
- def _get_validation_exclusions(self):
- """
- For backwards-compatibility, several types of fields need to be
- excluded from model validation. See the following tickets for
- details: #12507, #12521, #12553
- """
- exclude = []
- # Build up a list of fields that should be excluded from model field
- # validation and unique checks.
- for f in self.instance._meta.fields:
- field = f.name
- # Exclude fields that aren't on the form. The developer may be
- # adding these values to the model after form validation.
- if field not in self.fields:
- exclude.append(f.name)
-
- # Don't perform model validation on fields that were defined
- # manually on the form and excluded via the ModelForm's Meta
- # class. See #12901.
- elif self._meta.fields and field not in self._meta.fields:
- exclude.append(f.name)
- elif self._meta.exclude and field in self._meta.exclude:
- exclude.append(f.name)
-
- # Exclude fields that failed form validation. There's no need for
- # the model fields to validate them as well.
- elif field in self._errors.keys():
- exclude.append(f.name)
-
- # Exclude empty fields that are not required by the form, if the
- # underlying model field is required. This keeps the model field
- # from raising a required error. Note: don't exclude the field from
- # validation if the model field allows blanks. If it does, the blank
- # value may be included in a unique check, so cannot be excluded
- # from validation.
- else:
- form_field = self.fields[field]
- field_value = self.cleaned_data.get(field, None)
- if not f.blank and not form_field.required and field_value in form_field.empty_values:
- exclude.append(f.name)
- return exclude
-
- def clean(self):
- self._validate_unique = True
- return self.cleaned_data
-
- def _post_clean(self):
- opts = self._meta
- # Update the model instance with self.cleaned_data.
- self.instance = construct_instance(self, self.instance, opts.fields, opts.exclude)
-
- exclude = self._get_validation_exclusions()
-
- # Foreign Keys being used to represent inline relationships
- # are excluded from basic field value validation. This is for two
- # reasons: firstly, the value may not be supplied (#12507; the
- # case of providing new values to the admin); secondly the
- # object being referred to may not yet fully exist (#12749).
- # However, these fields *must* be included in uniqueness checks,
- # so this can't be part of _get_validation_exclusions().
- for f_name, field in self.fields.items():
- if isinstance(field, InlineForeignKeyField):
- exclude.append(f_name)
-
- try:
- self.instance.full_clean(exclude=exclude,
- validate_unique=False)
- except ValidationError as e:
- self._update_errors(e)
-
- # Validate uniqueness if needed.
- if self._validate_unique:
- self.validate_unique()
-
- def validate_unique(self):
- """
- Calls the instance's validate_unique() method and updates the form's
- validation errors if any were raised.
- """
- exclude = self._get_validation_exclusions()
- try:
- self.instance.validate_unique(exclude=exclude)
- except ValidationError as e:
- self._update_errors(e)
-
- def save(self, commit=True):
- """
- Saves this ``form``'s cleaned_data into model instance
- ``self.instance``.
-
- If commit=True, then the changes to ``instance`` will be saved to the
- database. Returns ``instance``.
- """
- if self.instance.pk is None:
- fail_message = 'created'
- else:
- fail_message = 'changed'
- return save_instance(self, self.instance, self._meta.fields,
- fail_message, commit, self._meta.exclude,
- construct=False)
-
- save.alters_data = True
-
-class ModelForm(six.with_metaclass(ModelFormMetaclass, BaseModelForm)):
- pass
-
-def modelform_factory(model, form=ModelForm, fields=None, exclude=None,
- formfield_callback=None, widgets=None, localized_fields=None,
- labels=None, help_texts=None, error_messages=None):
- """
- Returns a ModelForm containing form fields for the given model.
-
- ``fields`` is an optional list of field names. If provided, only the named
- fields will be included in the returned fields. If omitted or '__all__',
- all fields will be used.
-
- ``exclude`` is an optional list of field names. If provided, the named
- fields will be excluded from the returned fields, even if they are listed
- in the ``fields`` argument.
-
- ``widgets`` is a dictionary of model field names mapped to a widget.
-
- ``localized_fields`` is a list of names of fields which should be localized.
-
- ``formfield_callback`` is a callable that takes a model field and returns
- a form field.
-
- ``labels`` is a dictionary of model field names mapped to a label.
-
- ``help_texts`` is a dictionary of model field names mapped to a help text.
-
- ``error_messages`` is a dictionary of model field names mapped to a
- dictionary of error messages.
- """
- # Create the inner Meta class. FIXME: ideally, we should be able to
- # construct a ModelForm without creating and passing in a temporary
- # inner class.
-
- # Build up a list of attributes that the Meta object will have.
- attrs = {'model': model}
- if fields is not None:
- attrs['fields'] = fields
- if exclude is not None:
- attrs['exclude'] = exclude
- if widgets is not None:
- attrs['widgets'] = widgets
- if localized_fields is not None:
- attrs['localized_fields'] = localized_fields
- if labels is not None:
- attrs['labels'] = labels
- if help_texts is not None:
- attrs['help_texts'] = help_texts
- if error_messages is not None:
- attrs['error_messages'] = error_messages
-
- # If parent form class already has an inner Meta, the Meta we're
- # creating needs to inherit from the parent's inner meta.
- parent = (object,)
- if hasattr(form, 'Meta'):
- parent = (form.Meta, object)
- Meta = type(str('Meta'), parent, attrs)
-
- # Give this new form class a reasonable name.
- class_name = model.__name__ + str('Form')
-
- # Class attributes for the new form class.
- form_class_attrs = {
- 'Meta': Meta,
- 'formfield_callback': formfield_callback
- }
-
- # The ModelFormMetaclass will trigger a similar warning/error, but this will
- # be difficult to debug for code that needs updating, so we produce the
- # warning here too.
- if (getattr(Meta, 'fields', None) is None and
- getattr(Meta, 'exclude', None) is None):
- warnings.warn("Calling modelform_factory without defining 'fields' or "
- "'exclude' explicitly is deprecated",
- PendingDeprecationWarning, stacklevel=2)
-
- # Instatiate type(form) in order to use the same metaclass as form.
- return type(form)(class_name, (form,), form_class_attrs)
-
-
-# ModelFormSets ##############################################################
-
-class BaseModelFormSet(BaseFormSet):
- """
- A ``FormSet`` for editing a queryset and/or adding new objects to it.
- """
- model = None
-
- def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
- queryset=None, **kwargs):
- self.queryset = queryset
- self.initial_extra = kwargs.pop('initial', None)
- defaults = {'data': data, 'files': files, 'auto_id': auto_id, 'prefix': prefix}
- defaults.update(kwargs)
- super(BaseModelFormSet, self).__init__(**defaults)
-
- def initial_form_count(self):
- """Returns the number of forms that are required in this FormSet."""
- if not (self.data or self.files):
- return len(self.get_queryset())
- return super(BaseModelFormSet, self).initial_form_count()
-
- def _existing_object(self, pk):
- if not hasattr(self, '_object_dict'):
- self._object_dict = dict([(o.pk, o) for o in self.get_queryset()])
- return self._object_dict.get(pk)
-
- def _construct_form(self, i, **kwargs):
- if self.is_bound and i < self.initial_form_count():
- # Import goes here instead of module-level because importing
- # django.db has side effects.
- from django.db import connections
- pk_key = "%s-%s" % (self.add_prefix(i), self.model._meta.pk.name)
- pk = self.data[pk_key]
- pk_field = self.model._meta.pk
- pk = pk_field.get_db_prep_lookup('exact', pk,
- connection=connections[self.get_queryset().db])
- if isinstance(pk, list):
- pk = pk[0]
- kwargs['instance'] = self._existing_object(pk)
- if i < self.initial_form_count() and not kwargs.get('instance'):
- kwargs['instance'] = self.get_queryset()[i]
- if i >= self.initial_form_count() and self.initial_extra:
- # Set initial values for extra forms
- try:
- kwargs['initial'] = self.initial_extra[i-self.initial_form_count()]
- except IndexError:
- pass
- return super(BaseModelFormSet, self)._construct_form(i, **kwargs)
-
- def get_queryset(self):
- if not hasattr(self, '_queryset'):
- if self.queryset is not None:
- qs = self.queryset
- else:
- qs = self.model._default_manager.get_queryset()
-
- # If the queryset isn't already ordered we need to add an
- # artificial ordering here to make sure that all formsets
- # constructed from this queryset have the same form order.
- if not qs.ordered:
- qs = qs.order_by(self.model._meta.pk.name)
-
- # Removed queryset limiting here. As per discussion re: #13023
- # on django-dev, max_num should not prevent existing
- # related objects/inlines from being displayed.
- self._queryset = qs
- return self._queryset
-
- def save_new(self, form, commit=True):
- """Saves and returns a new model instance for the given form."""
- return form.save(commit=commit)
-
- def save_existing(self, form, instance, commit=True):
- """Saves and returns an existing model instance for the given form."""
- return form.save(commit=commit)
-
- def save(self, commit=True):
- """Saves model instances for every form, adding and changing instances
- as necessary, and returns the list of instances.
- """
- if not commit:
- self.saved_forms = []
- def save_m2m():
- for form in self.saved_forms:
- form.save_m2m()
- self.save_m2m = save_m2m
- return self.save_existing_objects(commit) + self.save_new_objects(commit)
-
- save.alters_data = True
-
- def clean(self):
- self.validate_unique()
-
- def validate_unique(self):
- # Collect unique_checks and date_checks to run from all the forms.
- all_unique_checks = set()
- all_date_checks = set()
- forms_to_delete = self.deleted_forms
- valid_forms = [form for form in self.forms if form.is_valid() and form not in forms_to_delete]
- for form in valid_forms:
- exclude = form._get_validation_exclusions()
- unique_checks, date_checks = form.instance._get_unique_checks(exclude=exclude)
- all_unique_checks = all_unique_checks.union(set(unique_checks))
- all_date_checks = all_date_checks.union(set(date_checks))
-
- errors = []
- # Do each of the unique checks (unique and unique_together)
- for uclass, unique_check in all_unique_checks:
- seen_data = set()
- for form in valid_forms:
- # get data for each field of each of unique_check
- row_data = tuple([form.cleaned_data[field] for field in unique_check if field in form.cleaned_data])
- if row_data and not None in row_data:
- # if we've already seen it then we have a uniqueness failure
- if row_data in seen_data:
- # poke error messages into the right places and mark
- # the form as invalid
- errors.append(self.get_unique_error_message(unique_check))
- form._errors[NON_FIELD_ERRORS] = self.error_class([self.get_form_error()])
- # remove the data from the cleaned_data dict since it was invalid
- for field in unique_check:
- if field in form.cleaned_data:
- del form.cleaned_data[field]
- # mark the data as seen
- seen_data.add(row_data)
- # iterate over each of the date checks now
- for date_check in all_date_checks:
- seen_data = set()
- uclass, lookup, field, unique_for = date_check
- for form in valid_forms:
- # see if we have data for both fields
- if (form.cleaned_data and form.cleaned_data[field] is not None
- and form.cleaned_data[unique_for] is not None):
- # if it's a date lookup we need to get the data for all the fields
- if lookup == 'date':
- date = form.cleaned_data[unique_for]
- date_data = (date.year, date.month, date.day)
- # otherwise it's just the attribute on the date/datetime
- # object
- else:
- date_data = (getattr(form.cleaned_data[unique_for], lookup),)
- data = (form.cleaned_data[field],) + date_data
- # if we've already seen it then we have a uniqueness failure
- if data in seen_data:
- # poke error messages into the right places and mark
- # the form as invalid
- errors.append(self.get_date_error_message(date_check))
- form._errors[NON_FIELD_ERRORS] = self.error_class([self.get_form_error()])
- # remove the data from the cleaned_data dict since it was invalid
- del form.cleaned_data[field]
- # mark the data as seen
- seen_data.add(data)
- if errors:
- raise ValidationError(errors)
-
- def get_unique_error_message(self, unique_check):
- if len(unique_check) == 1:
- return ugettext("Please correct the duplicate data for %(field)s.") % {
- "field": unique_check[0],
- }
- else:
- return ugettext("Please correct the duplicate data for %(field)s, "
- "which must be unique.") % {
- "field": get_text_list(unique_check, six.text_type(_("and"))),
- }
-
- def get_date_error_message(self, date_check):
- return ugettext("Please correct the duplicate data for %(field_name)s "
- "which must be unique for the %(lookup)s in %(date_field)s.") % {
- 'field_name': date_check[2],
- 'date_field': date_check[3],
- 'lookup': six.text_type(date_check[1]),
- }
-
- def get_form_error(self):
- return ugettext("Please correct the duplicate values below.")
-
- def save_existing_objects(self, commit=True):
- self.changed_objects = []
- self.deleted_objects = []
- if not self.initial_forms:
- return []
-
- saved_instances = []
- forms_to_delete = self.deleted_forms
- for form in self.initial_forms:
- pk_name = self._pk_field.name
- raw_pk_value = form._raw_value(pk_name)
-
- # clean() for different types of PK fields can sometimes return
- # the model instance, and sometimes the PK. Handle either.
- pk_value = form.fields[pk_name].clean(raw_pk_value)
- pk_value = getattr(pk_value, 'pk', pk_value)
-
- obj = self._existing_object(pk_value)
- if form in forms_to_delete:
- self.deleted_objects.append(obj)
- obj.delete()
- continue
- if form.has_changed():
- self.changed_objects.append((obj, form.changed_data))
- saved_instances.append(self.save_existing(form, obj, commit=commit))
- if not commit:
- self.saved_forms.append(form)
- return saved_instances
-
- def save_new_objects(self, commit=True):
- self.new_objects = []
- for form in self.extra_forms:
- if not form.has_changed():
- continue
- # If someone has marked an add form for deletion, don't save the
- # object.
- if self.can_delete and self._should_delete_form(form):
- continue
- self.new_objects.append(self.save_new(form, commit=commit))
- if not commit:
- self.saved_forms.append(form)
- return self.new_objects
-
- def add_fields(self, form, index):
- """Add a hidden field for the object's primary key."""
- from django.db.models import AutoField, OneToOneField, ForeignKey
- self._pk_field = pk = self.model._meta.pk
- # If a pk isn't editable, then it won't be on the form, so we need to
- # add it here so we can tell which object is which when we get the
- # data back. Generally, pk.editable should be false, but for some
- # reason, auto_created pk fields and AutoField's editable attribute is
- # True, so check for that as well.
- def pk_is_not_editable(pk):
- return ((not pk.editable) or (pk.auto_created or isinstance(pk, AutoField))
- or (pk.rel and pk.rel.parent_link and pk_is_not_editable(pk.rel.to._meta.pk)))
- if pk_is_not_editable(pk) or pk.name not in form.fields:
- if form.is_bound:
- pk_value = form.instance.pk
- else:
- try:
- if index is not None:
- pk_value = self.get_queryset()[index].pk
- else:
- pk_value = None
- except IndexError:
- pk_value = None
- if isinstance(pk, OneToOneField) or isinstance(pk, ForeignKey):
- qs = pk.rel.to._default_manager.get_queryset()
- else:
- qs = self.model._default_manager.get_queryset()
- qs = qs.using(form.instance._state.db)
- if form._meta.widgets:
- widget = form._meta.widgets.get(self._pk_field.name, HiddenInput)
- else:
- widget = HiddenInput
- form.fields[self._pk_field.name] = ModelChoiceField(qs, initial=pk_value, required=False, widget=widget)
- super(BaseModelFormSet, self).add_fields(form, index)
-
-def modelformset_factory(model, form=ModelForm, formfield_callback=None,
- formset=BaseModelFormSet, extra=1, can_delete=False,
- can_order=False, max_num=None, fields=None, exclude=None,
- widgets=None, validate_max=False, localized_fields=None,
- labels=None, help_texts=None, error_messages=None):
- """
- Returns a FormSet class for the given Django model class.
- """
- # modelform_factory will produce the same warning/error, but that will be
- # difficult to debug for code that needs upgrading, so we produce the
- # warning here too. This logic is reproducing logic inside
- # modelform_factory, but it can be removed once the deprecation cycle is
- # complete, since the validation exception will produce a helpful
- # stacktrace.
- meta = getattr(form, 'Meta', None)
- if meta is None:
- meta = type(str('Meta'), (object,), {})
- if (getattr(meta, 'fields', fields) is None and
- getattr(meta, 'exclude', exclude) is None):
- warnings.warn("Calling modelformset_factory without defining 'fields' or "
- "'exclude' explicitly is deprecated",
- PendingDeprecationWarning, stacklevel=2)
-
- form = modelform_factory(model, form=form, fields=fields, exclude=exclude,
- formfield_callback=formfield_callback,
- widgets=widgets, localized_fields=localized_fields,
- labels=labels, help_texts=help_texts, error_messages=error_messages)
- FormSet = formset_factory(form, formset, extra=extra, max_num=max_num,
- can_order=can_order, can_delete=can_delete,
- validate_max=validate_max)
- FormSet.model = model
- return FormSet
-
-
-# InlineFormSets #############################################################
-
-class BaseInlineFormSet(BaseModelFormSet):
- """A formset for child objects related to a parent."""
- def __init__(self, data=None, files=None, instance=None,
- save_as_new=False, prefix=None, queryset=None, **kwargs):
- if instance is None:
- self.instance = self.fk.rel.to()
- else:
- self.instance = instance
- self.save_as_new = save_as_new
- if queryset is None:
- queryset = self.model._default_manager
- if self.instance.pk is not None:
- qs = queryset.filter(**{self.fk.name: self.instance})
- else:
- qs = queryset.none()
- super(BaseInlineFormSet, self).__init__(data, files, prefix=prefix,
- queryset=qs, **kwargs)
-
- def initial_form_count(self):
- if self.save_as_new:
- return 0
- return super(BaseInlineFormSet, self).initial_form_count()
-
-
- def _construct_form(self, i, **kwargs):
- form = super(BaseInlineFormSet, self)._construct_form(i, **kwargs)
- if self.save_as_new:
- # Remove the primary key from the form's data, we are only
- # creating new instances
- form.data[form.add_prefix(self._pk_field.name)] = None
-
- # Remove the foreign key from the form's data
- form.data[form.add_prefix(self.fk.name)] = None
-
- # Set the fk value here so that the form can do its validation.
- setattr(form.instance, self.fk.get_attname(), self.instance.pk)
- return form
-
- @classmethod
- def get_default_prefix(cls):
- from django.db.models.fields.related import RelatedObject
- return RelatedObject(cls.fk.rel.to, cls.model, cls.fk).get_accessor_name().replace('+','')
-
- def save_new(self, form, commit=True):
- # Use commit=False so we can assign the parent key afterwards, then
- # save the object.
- obj = form.save(commit=False)
- pk_value = getattr(self.instance, self.fk.rel.field_name)
- setattr(obj, self.fk.get_attname(), getattr(pk_value, 'pk', pk_value))
- if commit:
- obj.save()
- # form.save_m2m() can be called via the formset later on if commit=False
- if commit and hasattr(form, 'save_m2m'):
- form.save_m2m()
- return obj
-
- def add_fields(self, form, index):
- super(BaseInlineFormSet, self).add_fields(form, index)
- if self._pk_field == self.fk:
- name = self._pk_field.name
- kwargs = {'pk_field': True}
- else:
- # The foreign key field might not be on the form, so we poke at the
- # Model field to get the label, since we need that for error messages.
- name = self.fk.name
- kwargs = {
- 'label': getattr(form.fields.get(name), 'label', capfirst(self.fk.verbose_name))
- }
- if self.fk.rel.field_name != self.fk.rel.to._meta.pk.name:
- kwargs['to_field'] = self.fk.rel.field_name
-
- form.fields[name] = InlineForeignKeyField(self.instance, **kwargs)
-
- # Add the generated field to form._meta.fields if it's defined to make
- # sure validation isn't skipped on that field.
- if form._meta.fields:
- if isinstance(form._meta.fields, tuple):
- form._meta.fields = list(form._meta.fields)
- form._meta.fields.append(self.fk.name)
-
- def get_unique_error_message(self, unique_check):
- unique_check = [field for field in unique_check if field != self.fk.name]
- return super(BaseInlineFormSet, self).get_unique_error_message(unique_check)
-
-
-def _get_foreign_key(parent_model, model, fk_name=None, can_fail=False):
- """
- Finds and returns the ForeignKey from model to parent if there is one
- (returns None if can_fail is True and no such field exists). If fk_name is
- provided, assume it is the name of the ForeignKey field. Unles can_fail is
- True, an exception is raised if there is no ForeignKey from model to
- parent_model.
- """
- # avoid circular import
- from django.db.models import ForeignKey
- opts = model._meta
- if fk_name:
- fks_to_parent = [f for f in opts.fields if f.name == fk_name]
- if len(fks_to_parent) == 1:
- fk = fks_to_parent[0]
- if not isinstance(fk, ForeignKey) or \
- (fk.rel.to != parent_model and
- fk.rel.to not in parent_model._meta.get_parent_list()):
- raise Exception("fk_name '%s' is not a ForeignKey to %s" % (fk_name, parent_model))
- elif len(fks_to_parent) == 0:
- raise Exception("%s has no field named '%s'" % (model, fk_name))
- else:
- # Try to discover what the ForeignKey from model to parent_model is
- fks_to_parent = [
- f for f in opts.fields
- if isinstance(f, ForeignKey)
- and (f.rel.to == parent_model
- or f.rel.to in parent_model._meta.get_parent_list())
- ]
- if len(fks_to_parent) == 1:
- fk = fks_to_parent[0]
- elif len(fks_to_parent) == 0:
- if can_fail:
- return
- raise Exception("%s has no ForeignKey to %s" % (model, parent_model))
- else:
- raise Exception("%s has more than 1 ForeignKey to %s" % (model, parent_model))
- return fk
-
-
-def inlineformset_factory(parent_model, model, form=ModelForm,
- formset=BaseInlineFormSet, fk_name=None,
- fields=None, exclude=None, extra=3, can_order=False,
- can_delete=True, max_num=None, formfield_callback=None,
- widgets=None, validate_max=False, localized_fields=None,
- labels=None, help_texts=None, error_messages=None):
- """
- Returns an ``InlineFormSet`` for the given kwargs.
-
- You must provide ``fk_name`` if ``model`` has more than one ``ForeignKey``
- to ``parent_model``.
- """
- fk = _get_foreign_key(parent_model, model, fk_name=fk_name)
- # enforce a max_num=1 when the foreign key to the parent model is unique.
- if fk.unique:
- max_num = 1
- kwargs = {
- 'form': form,
- 'formfield_callback': formfield_callback,
- 'formset': formset,
- 'extra': extra,
- 'can_delete': can_delete,
- 'can_order': can_order,
- 'fields': fields,
- 'exclude': exclude,
- 'max_num': max_num,
- 'widgets': widgets,
- 'validate_max': validate_max,
- 'localized_fields': localized_fields,
- 'labels': labels,
- 'help_texts': help_texts,
- 'error_messages': error_messages,
- }
- FormSet = modelformset_factory(model, **kwargs)
- FormSet.fk = fk
- return FormSet
-
-
-# Fields #####################################################################
-
-class InlineForeignKeyField(Field):
- """
- A basic integer field that deals with validating the given value to a
- given parent instance in an inline.
- """
- widget = HiddenInput
- default_error_messages = {
- 'invalid_choice': _('The inline foreign key did not match the parent instance primary key.'),
- }
-
- def __init__(self, parent_instance, *args, **kwargs):
- self.parent_instance = parent_instance
- self.pk_field = kwargs.pop("pk_field", False)
- self.to_field = kwargs.pop("to_field", None)
- if self.parent_instance is not None:
- if self.to_field:
- kwargs["initial"] = getattr(self.parent_instance, self.to_field)
- else:
- kwargs["initial"] = self.parent_instance.pk
- kwargs["required"] = False
- super(InlineForeignKeyField, self).__init__(*args, **kwargs)
-
- def clean(self, value):
- if value in self.empty_values:
- if self.pk_field:
- return None
- # if there is no value act as we did before.
- return self.parent_instance
- # ensure the we compare the values as equal types.
- if self.to_field:
- orig = getattr(self.parent_instance, self.to_field)
- else:
- orig = self.parent_instance.pk
- if force_text(value) != force_text(orig):
- raise ValidationError(self.error_messages['invalid_choice'], code='invalid_choice')
- return self.parent_instance
-
- def _has_changed(self, initial, data):
- return False
-
-class ModelChoiceIterator(object):
- def __init__(self, field):
- self.field = field
- self.queryset = field.queryset
-
- def __iter__(self):
- if self.field.empty_label is not None:
- yield ("", self.field.empty_label)
- if self.field.cache_choices:
- if self.field.choice_cache is None:
- self.field.choice_cache = [
- self.choice(obj) for obj in self.queryset.all()
- ]
- for choice in self.field.choice_cache:
- yield choice
- else:
- for obj in self.queryset.all():
- yield self.choice(obj)
-
- def __len__(self):
- return len(self.queryset) +\
- (1 if self.field.empty_label is not None else 0)
-
- def choice(self, obj):
- return (self.field.prepare_value(obj), self.field.label_from_instance(obj))
-
-class ModelChoiceField(ChoiceField):
- """A ChoiceField whose choices are a model QuerySet."""
- # This class is a subclass of ChoiceField for purity, but it doesn't
- # actually use any of ChoiceField's implementation.
- default_error_messages = {
- 'invalid_choice': _('Select a valid choice. That choice is not one of'
- ' the available choices.'),
- }
-
- def __init__(self, queryset, empty_label="---------", cache_choices=False,
- required=True, widget=None, label=None, initial=None,
- help_text='', to_field_name=None, *args, **kwargs):
- if required and (initial is not None):
- self.empty_label = None
- else:
- self.empty_label = empty_label
- self.cache_choices = cache_choices
-
- # Call Field instead of ChoiceField __init__() because we don't need
- # ChoiceField.__init__().
- Field.__init__(self, required, widget, label, initial, help_text,
- *args, **kwargs)
- self.queryset = queryset
- self.choice_cache = None
- self.to_field_name = to_field_name
-
- def __deepcopy__(self, memo):
- result = super(ChoiceField, self).__deepcopy__(memo)
- # Need to force a new ModelChoiceIterator to be created, bug #11183
- result.queryset = result.queryset
- return result
-
- def _get_queryset(self):
- return self._queryset
-
- def _set_queryset(self, queryset):
- self._queryset = queryset
- self.widget.choices = self.choices
-
- queryset = property(_get_queryset, _set_queryset)
-
- # this method will be used to create object labels by the QuerySetIterator.
- # Override it to customize the label.
- def label_from_instance(self, obj):
- """
- This method is used to convert objects into strings; it's used to
- generate the labels for the choices presented by this object. Subclasses
- can override this method to customize the display of the choices.
- """
- return smart_text(obj)
-
- def _get_choices(self):
- # If self._choices is set, then somebody must have manually set
- # the property self.choices. In this case, just return self._choices.
- if hasattr(self, '_choices'):
- return self._choices
-
- # Otherwise, execute the QuerySet in self.queryset to determine the
- # choices dynamically. Return a fresh ModelChoiceIterator that has not been
- # consumed. Note that we're instantiating a new ModelChoiceIterator *each*
- # time _get_choices() is called (and, thus, each time self.choices is
- # accessed) so that we can ensure the QuerySet has not been consumed. This
- # construct might look complicated but it allows for lazy evaluation of
- # the queryset.
- return ModelChoiceIterator(self)
-
- choices = property(_get_choices, ChoiceField._set_choices)
-
- def prepare_value(self, value):
- if hasattr(value, '_meta'):
- if self.to_field_name:
- return value.serializable_value(self.to_field_name)
- else:
- return value.pk
- return super(ModelChoiceField, self).prepare_value(value)
-
- def to_python(self, value):
- if value in self.empty_values:
- return None
- try:
- key = self.to_field_name or 'pk'
- value = self.queryset.get(**{key: value})
- except (ValueError, self.queryset.model.DoesNotExist):
- raise ValidationError(self.error_messages['invalid_choice'], code='invalid_choice')
- return value
-
- def validate(self, value):
- return Field.validate(self, value)
-
- def _has_changed(self, initial, data):
- initial_value = initial if initial is not None else ''
- data_value = data if data is not None else ''
- return force_text(self.prepare_value(initial_value)) != force_text(data_value)
-
-class ModelMultipleChoiceField(ModelChoiceField):
- """A MultipleChoiceField whose choices are a model QuerySet."""
- widget = SelectMultiple
- hidden_widget = MultipleHiddenInput
- default_error_messages = {
- 'list': _('Enter a list of values.'),
- 'invalid_choice': _('Select a valid choice. %(value)s is not one of the'
- ' available choices.'),
- 'invalid_pk_value': _('"%(pk)s" is not a valid value for a primary key.')
- }
-
- def __init__(self, queryset, cache_choices=False, required=True,
- widget=None, label=None, initial=None,
- help_text='', *args, **kwargs):
- super(ModelMultipleChoiceField, self).__init__(queryset, None,
- cache_choices, required, widget, label, initial, help_text,
- *args, **kwargs)
- # Remove this in Django 1.8
- if isinstance(self.widget, SelectMultiple) and not isinstance(self.widget, CheckboxSelectMultiple):
- msg = _('Hold down "Control", or "Command" on a Mac, to select more than one.')
- self.help_text = string_concat(self.help_text, ' ', msg)
-
- def to_python(self, value):
- if not value:
- return []
- to_py = super(ModelMultipleChoiceField, self).to_python
- return [to_py(val) for val in value]
-
- def clean(self, value):
- if self.required and not value:
- raise ValidationError(self.error_messages['required'], code='required')
- elif not self.required and not value:
- return self.queryset.none()
- if not isinstance(value, (list, tuple)):
- raise ValidationError(self.error_messages['list'], code='list')
- key = self.to_field_name or 'pk'
- for pk in value:
- try:
- self.queryset.filter(**{key: pk})
- except ValueError:
- raise ValidationError(
- self.error_messages['invalid_pk_value'],
- code='invalid_pk_value',
- params={'pk': pk},
- )
- qs = self.queryset.filter(**{'%s__in' % key: value})
- pks = set([force_text(getattr(o, key)) for o in qs])
- for val in value:
- if force_text(val) not in pks:
- raise ValidationError(
- self.error_messages['invalid_choice'],
- code='invalid_choice',
- params={'value': val},
- )
- # Since this overrides the inherited ModelChoiceField.clean
- # we run custom validators here
- self.run_validators(value)
- return qs
-
- def prepare_value(self, value):
- if (hasattr(value, '__iter__') and
- not isinstance(value, six.text_type) and
- not hasattr(value, '_meta')):
- return [super(ModelMultipleChoiceField, self).prepare_value(v) for v in value]
- return super(ModelMultipleChoiceField, self).prepare_value(value)
-
- def _has_changed(self, initial, data):
- if initial is None:
- initial = []
- if data is None:
- data = []
- if len(initial) != len(data):
- return True
- initial_set = set([force_text(value) for value in self.prepare_value(initial)])
- data_set = set([force_text(value) for value in data])
- return data_set != initial_set
-
-
-def modelform_defines_fields(form_class):
- return (form_class is not None and (
- hasattr(form_class, '_meta') and
- (form_class._meta.fields is not None or
- form_class._meta.exclude is not None)
- ))
diff --git a/lib/python2.7/site-packages/django/forms/util.py b/lib/python2.7/site-packages/django/forms/util.py
deleted file mode 100644
index 0a73320..0000000
--- a/lib/python2.7/site-packages/django/forms/util.py
+++ /dev/null
@@ -1,103 +0,0 @@
-from __future__ import unicode_literals
-
-from django.conf import settings
-from django.utils.html import format_html, format_html_join
-from django.utils.encoding import force_text, python_2_unicode_compatible
-from django.utils import timezone
-from django.utils.translation import ugettext_lazy as _
-from django.utils import six
-import sys
-
-# Import ValidationError so that it can be imported from this
-# module to maintain backwards compatibility.
-from django.core.exceptions import ValidationError
-
-def flatatt(attrs):
- """
- Convert a dictionary of attributes to a single string.
- The returned string will contain a leading space followed by key="value",
- XML-style pairs. It is assumed that the keys do not need to be XML-escaped.
- If the passed dictionary is empty, then return an empty string.
-
- The result is passed through 'mark_safe'.
- """
- return format_html_join('', ' {0}="{1}"', sorted(attrs.items()))
-
-@python_2_unicode_compatible
-class ErrorDict(dict):
- """
- A collection of errors that knows how to display itself in various formats.
-
- The dictionary keys are the field names, and the values are the errors.
- """
- def __str__(self):
- return self.as_ul()
-
- def as_ul(self):
- if not self: return ''
- return format_html('<ul class="errorlist">{0}</ul>',
- format_html_join('', '<li>{0}{1}</li>',
- ((k, force_text(v))
- for k, v in self.items())
- ))
-
- def as_text(self):
- return '\n'.join(['* %s\n%s' % (k, '\n'.join([' * %s' % force_text(i) for i in v])) for k, v in self.items()])
-
-@python_2_unicode_compatible
-class ErrorList(list):
- """
- A collection of errors that knows how to display itself in various formats.
- """
- def __str__(self):
- return self.as_ul()
-
- def as_ul(self):
- if not self: return ''
- return format_html('<ul class="errorlist">{0}</ul>',
- format_html_join('', '<li>{0}</li>',
- ((force_text(e),) for e in self)
- )
- )
-
- def as_text(self):
- if not self: return ''
- return '\n'.join(['* %s' % force_text(e) for e in self])
-
- def __repr__(self):
- return repr([force_text(e) for e in self])
-
-# Utilities for time zone support in DateTimeField et al.
-
-def from_current_timezone(value):
- """
- When time zone support is enabled, convert naive datetimes
- entered in the current time zone to aware datetimes.
- """
- if settings.USE_TZ and value is not None and timezone.is_naive(value):
- current_timezone = timezone.get_current_timezone()
- try:
- return timezone.make_aware(value, current_timezone)
- except Exception:
- message = _(
- '%(datetime)s couldn\'t be interpreted '
- 'in time zone %(current_timezone)s; it '
- 'may be ambiguous or it may not exist.'
- )
- params = {'datetime': value, 'current_timezone': current_timezone}
- six.reraise(ValidationError, ValidationError(
- message,
- code='ambiguous_timezone',
- params=params,
- ), sys.exc_info()[2])
- return value
-
-def to_current_timezone(value):
- """
- When time zone support is enabled, convert aware datetimes
- to naive dateimes in the current time zone for display.
- """
- if settings.USE_TZ and value is not None and timezone.is_aware(value):
- current_timezone = timezone.get_current_timezone()
- return timezone.make_naive(value, current_timezone)
- return value
diff --git a/lib/python2.7/site-packages/django/forms/widgets.py b/lib/python2.7/site-packages/django/forms/widgets.py
deleted file mode 100644
index cf68bac..0000000
--- a/lib/python2.7/site-packages/django/forms/widgets.py
+++ /dev/null
@@ -1,869 +0,0 @@
-"""
-HTML Widget classes
-"""
-
-from __future__ import absolute_import, unicode_literals
-
-import copy
-from itertools import chain
-import warnings
-
-from django.conf import settings
-from django.forms.util import flatatt, to_current_timezone
-from django.utils.datastructures import MultiValueDict, MergeDict
-from django.utils.html import conditional_escape, format_html
-from django.utils.translation import ugettext_lazy
-from django.utils.encoding import force_text, python_2_unicode_compatible
-from django.utils.safestring import mark_safe
-from django.utils import datetime_safe, formats, six
-from django.utils.six.moves.urllib.parse import urljoin
-
-__all__ = (
- 'Media', 'MediaDefiningClass', 'Widget', 'TextInput',
- 'EmailInput', 'URLInput', 'NumberInput', 'PasswordInput',
- 'HiddenInput', 'MultipleHiddenInput', 'ClearableFileInput',
- 'FileInput', 'DateInput', 'DateTimeInput', 'TimeInput', 'Textarea', 'CheckboxInput',
- 'Select', 'NullBooleanSelect', 'SelectMultiple', 'RadioSelect',
- 'CheckboxSelectMultiple', 'MultiWidget',
- 'SplitDateTimeWidget',
-)
-
-MEDIA_TYPES = ('css','js')
-
-@python_2_unicode_compatible
-class Media(object):
- def __init__(self, media=None, **kwargs):
- if media:
- media_attrs = media.__dict__
- else:
- media_attrs = kwargs
-
- self._css = {}
- self._js = []
-
- for name in MEDIA_TYPES:
- getattr(self, 'add_' + name)(media_attrs.get(name, None))
-
- # Any leftover attributes must be invalid.
- # if media_attrs != {}:
- # raise TypeError("'class Media' has invalid attribute(s): %s" % ','.join(media_attrs.keys()))
-
- def __str__(self):
- return self.render()
-
- def render(self):
- return mark_safe('\n'.join(chain(*[getattr(self, 'render_' + name)() for name in MEDIA_TYPES])))
-
- def render_js(self):
- return [format_html('<script type="text/javascript" src="{0}"></script>', self.absolute_path(path)) for path in self._js]
-
- def render_css(self):
- # To keep rendering order consistent, we can't just iterate over items().
- # We need to sort the keys, and iterate over the sorted list.
- media = sorted(self._css.keys())
- return chain(*[
- [format_html('<link href="{0}" type="text/css" media="{1}" rel="stylesheet" />', self.absolute_path(path), medium)
- for path in self._css[medium]]
- for medium in media])
-
- def absolute_path(self, path, prefix=None):
- if path.startswith(('http://', 'https://', '/')):
- return path
- if prefix is None:
- if settings.STATIC_URL is None:
- # backwards compatibility
- prefix = settings.MEDIA_URL
- else:
- prefix = settings.STATIC_URL
- return urljoin(prefix, path)
-
- def __getitem__(self, name):
- "Returns a Media object that only contains media of the given type"
- if name in MEDIA_TYPES:
- return Media(**{str(name): getattr(self, '_' + name)})
- raise KeyError('Unknown media type "%s"' % name)
-
- def add_js(self, data):
- if data:
- for path in data:
- if path not in self._js:
- self._js.append(path)
-
- def add_css(self, data):
- if data:
- for medium, paths in data.items():
- for path in paths:
- if not self._css.get(medium) or path not in self._css[medium]:
- self._css.setdefault(medium, []).append(path)
-
- def __add__(self, other):
- combined = Media()
- for name in MEDIA_TYPES:
- getattr(combined, 'add_' + name)(getattr(self, '_' + name, None))
- getattr(combined, 'add_' + name)(getattr(other, '_' + name, None))
- return combined
-
-def media_property(cls):
- def _media(self):
- # Get the media property of the superclass, if it exists
- sup_cls = super(cls, self)
- try:
- base = sup_cls.media
- except AttributeError:
- base = Media()
-
- # Get the media definition for this class
- definition = getattr(cls, 'Media', None)
- if definition:
- extend = getattr(definition, 'extend', True)
- if extend:
- if extend == True:
- m = base
- else:
- m = Media()
- for medium in extend:
- m = m + base[medium]
- return m + Media(definition)
- else:
- return Media(definition)
- else:
- return base
- return property(_media)
-
-class MediaDefiningClass(type):
- "Metaclass for classes that can have media definitions"
- def __new__(cls, name, bases, attrs):
- new_class = super(MediaDefiningClass, cls).__new__(cls, name, bases,
- attrs)
- if 'media' not in attrs:
- new_class.media = media_property(new_class)
- return new_class
-
-@python_2_unicode_compatible
-class SubWidget(object):
- """
- Some widgets are made of multiple HTML elements -- namely, RadioSelect.
- This is a class that represents the "inner" HTML element of a widget.
- """
- def __init__(self, parent_widget, name, value, attrs, choices):
- self.parent_widget = parent_widget
- self.name, self.value = name, value
- self.attrs, self.choices = attrs, choices
-
- def __str__(self):
- args = [self.name, self.value, self.attrs]
- if self.choices:
- args.append(self.choices)
- return self.parent_widget.render(*args)
-
-class Widget(six.with_metaclass(MediaDefiningClass)):
- is_hidden = False # Determines whether this corresponds to an <input type="hidden">.
- needs_multipart_form = False # Determines does this widget need multipart form
- is_localized = False
- is_required = False
-
- def __init__(self, attrs=None):
- if attrs is not None:
- self.attrs = attrs.copy()
- else:
- self.attrs = {}
-
- def __deepcopy__(self, memo):
- obj = copy.copy(self)
- obj.attrs = self.attrs.copy()
- memo[id(self)] = obj
- return obj
-
- def subwidgets(self, name, value, attrs=None, choices=()):
- """
- Yields all "subwidgets" of this widget. Used only by RadioSelect to
- allow template access to individual <input type="radio"> buttons.
-
- Arguments are the same as for render().
- """
- yield SubWidget(self, name, value, attrs, choices)
-
- def render(self, name, value, attrs=None):
- """
- Returns this Widget rendered as HTML, as a Unicode string.
-
- The 'value' given is not guaranteed to be valid input, so subclass
- implementations should program defensively.
- """
- raise NotImplementedError
-
- def build_attrs(self, extra_attrs=None, **kwargs):
- "Helper function for building an attribute dictionary."
- attrs = dict(self.attrs, **kwargs)
- if extra_attrs:
- attrs.update(extra_attrs)
- return attrs
-
- def value_from_datadict(self, data, files, name):
- """
- Given a dictionary of data and this widget's name, returns the value
- of this widget. Returns None if it's not provided.
- """
- return data.get(name, None)
-
- def id_for_label(self, id_):
- """
- Returns the HTML ID attribute of this Widget for use by a <label>,
- given the ID of the field. Returns None if no ID is available.
-
- This hook is necessary because some widgets have multiple HTML
- elements and, thus, multiple IDs. In that case, this method should
- return an ID value that corresponds to the first ID in the widget's
- tags.
- """
- return id_
-
-class Input(Widget):
- """
- Base class for all <input> widgets (except type='checkbox' and
- type='radio', which are special).
- """
- input_type = None # Subclasses must define this.
-
- def _format_value(self, value):
- if self.is_localized:
- return formats.localize_input(value)
- return value
-
- def render(self, name, value, attrs=None):
- if value is None:
- value = ''
- final_attrs = self.build_attrs(attrs, type=self.input_type, name=name)
- if value != '':
- # Only add the 'value' attribute if a value is non-empty.
- final_attrs['value'] = force_text(self._format_value(value))
- return format_html('<input{0} />', flatatt(final_attrs))
-
-
-class TextInput(Input):
- input_type = 'text'
-
- def __init__(self, attrs=None):
- if attrs is not None:
- self.input_type = attrs.pop('type', self.input_type)
- super(TextInput, self).__init__(attrs)
-
-
-class NumberInput(TextInput):
- input_type = 'number'
-
-
-class EmailInput(TextInput):
- input_type = 'email'
-
-
-class URLInput(TextInput):
- input_type = 'url'
-
-
-class PasswordInput(TextInput):
- input_type = 'password'
-
- def __init__(self, attrs=None, render_value=False):
- super(PasswordInput, self).__init__(attrs)
- self.render_value = render_value
-
- def render(self, name, value, attrs=None):
- if not self.render_value: value=None
- return super(PasswordInput, self).render(name, value, attrs)
-
-class HiddenInput(Input):
- input_type = 'hidden'
- is_hidden = True
-
-class MultipleHiddenInput(HiddenInput):
- """
- A widget that handles <input type="hidden"> for fields that have a list
- of values.
- """
- def __init__(self, attrs=None, choices=()):
- super(MultipleHiddenInput, self).__init__(attrs)
- # choices can be any iterable
- self.choices = choices
-
- def render(self, name, value, attrs=None, choices=()):
- if value is None: value = []
- final_attrs = self.build_attrs(attrs, type=self.input_type, name=name)
- id_ = final_attrs.get('id', None)
- inputs = []
- for i, v in enumerate(value):
- input_attrs = dict(value=force_text(v), **final_attrs)
- if id_:
- # An ID attribute was given. Add a numeric index as a suffix
- # so that the inputs don't all have the same ID attribute.
- input_attrs['id'] = '%s_%s' % (id_, i)
- inputs.append(format_html('<input{0} />', flatatt(input_attrs)))
- return mark_safe('\n'.join(inputs))
-
- def value_from_datadict(self, data, files, name):
- if isinstance(data, (MultiValueDict, MergeDict)):
- return data.getlist(name)
- return data.get(name, None)
-
-class FileInput(Input):
- input_type = 'file'
- needs_multipart_form = True
-
- def render(self, name, value, attrs=None):
- return super(FileInput, self).render(name, None, attrs=attrs)
-
- def value_from_datadict(self, data, files, name):
- "File widgets take data from FILES, not POST"
- return files.get(name, None)
-
-
-FILE_INPUT_CONTRADICTION = object()
-
-class ClearableFileInput(FileInput):
- initial_text = ugettext_lazy('Currently')
- input_text = ugettext_lazy('Change')
- clear_checkbox_label = ugettext_lazy('Clear')
-
- template_with_initial = '%(initial_text)s: %(initial)s %(clear_template)s<br />%(input_text)s: %(input)s'
-
- template_with_clear = '%(clear)s <label for="%(clear_checkbox_id)s">%(clear_checkbox_label)s</label>'
-
- url_markup_template = '<a href="{0}">{1}</a>'
-
- def clear_checkbox_name(self, name):
- """
- Given the name of the file input, return the name of the clear checkbox
- input.
- """
- return name + '-clear'
-
- def clear_checkbox_id(self, name):
- """
- Given the name of the clear checkbox input, return the HTML id for it.
- """
- return name + '_id'
-
- def render(self, name, value, attrs=None):
- substitutions = {
- 'initial_text': self.initial_text,
- 'input_text': self.input_text,
- 'clear_template': '',
- 'clear_checkbox_label': self.clear_checkbox_label,
- }
- template = '%(input)s'
- substitutions['input'] = super(ClearableFileInput, self).render(name, value, attrs)
-
- if value and hasattr(value, "url"):
- template = self.template_with_initial
- substitutions['initial'] = format_html(self.url_markup_template,
- value.url,
- force_text(value))
- if not self.is_required:
- checkbox_name = self.clear_checkbox_name(name)
- checkbox_id = self.clear_checkbox_id(checkbox_name)
- substitutions['clear_checkbox_name'] = conditional_escape(checkbox_name)
- substitutions['clear_checkbox_id'] = conditional_escape(checkbox_id)
- substitutions['clear'] = CheckboxInput().render(checkbox_name, False, attrs={'id': checkbox_id})
- substitutions['clear_template'] = self.template_with_clear % substitutions
-
- return mark_safe(template % substitutions)
-
- def value_from_datadict(self, data, files, name):
- upload = super(ClearableFileInput, self).value_from_datadict(data, files, name)
- if not self.is_required and CheckboxInput().value_from_datadict(
- data, files, self.clear_checkbox_name(name)):
- if upload:
- # If the user contradicts themselves (uploads a new file AND
- # checks the "clear" checkbox), we return a unique marker
- # object that FileField will turn into a ValidationError.
- return FILE_INPUT_CONTRADICTION
- # False signals to clear any existing value, as opposed to just None
- return False
- return upload
-
-class Textarea(Widget):
- def __init__(self, attrs=None):
- # The 'rows' and 'cols' attributes are required for HTML correctness.
- default_attrs = {'cols': '40', 'rows': '10'}
- if attrs:
- default_attrs.update(attrs)
- super(Textarea, self).__init__(default_attrs)
-
- def render(self, name, value, attrs=None):
- if value is None: value = ''
- final_attrs = self.build_attrs(attrs, name=name)
- return format_html('<textarea{0}>\r\n{1}</textarea>',
- flatatt(final_attrs),
- force_text(value))
-
-
-class DateInput(TextInput):
- def __init__(self, attrs=None, format=None):
- super(DateInput, self).__init__(attrs)
- if format:
- self.format = format
- self.manual_format = True
- else:
- self.format = formats.get_format('DATE_INPUT_FORMATS')[0]
- self.manual_format = False
-
- def _format_value(self, value):
- if self.is_localized and not self.manual_format:
- return formats.localize_input(value)
- elif hasattr(value, 'strftime'):
- value = datetime_safe.new_date(value)
- return value.strftime(self.format)
- return value
-
-
-class DateTimeInput(TextInput):
- def __init__(self, attrs=None, format=None):
- super(DateTimeInput, self).__init__(attrs)
- if format:
- self.format = format
- self.manual_format = True
- else:
- self.format = formats.get_format('DATETIME_INPUT_FORMATS')[0]
- self.manual_format = False
-
- def _format_value(self, value):
- if self.is_localized and not self.manual_format:
- return formats.localize_input(value)
- elif hasattr(value, 'strftime'):
- value = datetime_safe.new_datetime(value)
- return value.strftime(self.format)
- return value
-
-
-class TimeInput(TextInput):
- def __init__(self, attrs=None, format=None):
- super(TimeInput, self).__init__(attrs)
- if format:
- self.format = format
- self.manual_format = True
- else:
- self.format = formats.get_format('TIME_INPUT_FORMATS')[0]
- self.manual_format = False
-
- def _format_value(self, value):
- if self.is_localized and not self.manual_format:
- return formats.localize_input(value)
- elif hasattr(value, 'strftime'):
- return value.strftime(self.format)
- return value
-
-
-# Defined at module level so that CheckboxInput is picklable (#17976)
-def boolean_check(v):
- return not (v is False or v is None or v == '')
-
-
-class CheckboxInput(Widget):
- def __init__(self, attrs=None, check_test=None):
- super(CheckboxInput, self).__init__(attrs)
- # check_test is a callable that takes a value and returns True
- # if the checkbox should be checked for that value.
- self.check_test = boolean_check if check_test is None else check_test
-
- def render(self, name, value, attrs=None):
- final_attrs = self.build_attrs(attrs, type='checkbox', name=name)
- if self.check_test(value):
- final_attrs['checked'] = 'checked'
- if not (value is True or value is False or value is None or value == ''):
- # Only add the 'value' attribute if a value is non-empty.
- final_attrs['value'] = force_text(value)
- return format_html('<input{0} />', flatatt(final_attrs))
-
- def value_from_datadict(self, data, files, name):
- if name not in data:
- # A missing value means False because HTML form submission does not
- # send results for unselected checkboxes.
- return False
- value = data.get(name)
- # Translate true and false strings to boolean values.
- values = {'true': True, 'false': False}
- if isinstance(value, six.string_types):
- value = values.get(value.lower(), value)
- return bool(value)
-
-
-class Select(Widget):
- allow_multiple_selected = False
-
- def __init__(self, attrs=None, choices=()):
- super(Select, self).__init__(attrs)
- # choices can be any iterable, but we may need to render this widget
- # multiple times. Thus, collapse it into a list so it can be consumed
- # more than once.
- self.choices = list(choices)
-
- def render(self, name, value, attrs=None, choices=()):
- if value is None: value = ''
- final_attrs = self.build_attrs(attrs, name=name)
- output = [format_html('<select{0}>', flatatt(final_attrs))]
- options = self.render_options(choices, [value])
- if options:
- output.append(options)
- output.append('</select>')
- return mark_safe('\n'.join(output))
-
- def render_option(self, selected_choices, option_value, option_label):
- option_value = force_text(option_value)
- if option_value in selected_choices:
- selected_html = mark_safe(' selected="selected"')
- if not self.allow_multiple_selected:
- # Only allow for a single selection.
- selected_choices.remove(option_value)
- else:
- selected_html = ''
- return format_html('<option value="{0}"{1}>{2}</option>',
- option_value,
- selected_html,
- force_text(option_label))
-
- def render_options(self, choices, selected_choices):
- # Normalize to strings.
- selected_choices = set(force_text(v) for v in selected_choices)
- output = []
- for option_value, option_label in chain(self.choices, choices):
- if isinstance(option_label, (list, tuple)):
- output.append(format_html('<optgroup label="{0}">', force_text(option_value)))
- for option in option_label:
- output.append(self.render_option(selected_choices, *option))
- output.append('</optgroup>')
- else:
- output.append(self.render_option(selected_choices, option_value, option_label))
- return '\n'.join(output)
-
-class NullBooleanSelect(Select):
- """
- A Select Widget intended to be used with NullBooleanField.
- """
- def __init__(self, attrs=None):
- choices = (('1', ugettext_lazy('Unknown')),
- ('2', ugettext_lazy('Yes')),
- ('3', ugettext_lazy('No')))
- super(NullBooleanSelect, self).__init__(attrs, choices)
-
- def render(self, name, value, attrs=None, choices=()):
- try:
- value = {True: '2', False: '3', '2': '2', '3': '3'}[value]
- except KeyError:
- value = '1'
- return super(NullBooleanSelect, self).render(name, value, attrs, choices)
-
- def value_from_datadict(self, data, files, name):
- value = data.get(name, None)
- return {'2': True,
- True: True,
- 'True': True,
- '3': False,
- 'False': False,
- False: False}.get(value, None)
-
-
-class SelectMultiple(Select):
- allow_multiple_selected = True
-
- def render(self, name, value, attrs=None, choices=()):
- if value is None: value = []
- final_attrs = self.build_attrs(attrs, name=name)
- output = [format_html('<select multiple="multiple"{0}>', flatatt(final_attrs))]
- options = self.render_options(choices, value)
- if options:
- output.append(options)
- output.append('</select>')
- return mark_safe('\n'.join(output))
-
- def value_from_datadict(self, data, files, name):
- if isinstance(data, (MultiValueDict, MergeDict)):
- return data.getlist(name)
- return data.get(name, None)
-
-
-@python_2_unicode_compatible
-class ChoiceInput(SubWidget):
- """
- An object used by ChoiceFieldRenderer that represents a single
- <input type='$input_type'>.
- """
- input_type = None # Subclasses must define this
-
- def __init__(self, name, value, attrs, choice, index):
- self.name = name
- self.value = value
- self.attrs = attrs
- self.choice_value = force_text(choice[0])
- self.choice_label = force_text(choice[1])
- self.index = index
-
- def __str__(self):
- return self.render()
-
- def render(self, name=None, value=None, attrs=None, choices=()):
- name = name or self.name
- value = value or self.value
- attrs = attrs or self.attrs
- if 'id' in self.attrs:
- label_for = format_html(' for="{0}_{1}"', self.attrs['id'], self.index)
- else:
- label_for = ''
- return format_html('<label{0}>{1} {2}</label>', label_for, self.tag(), self.choice_label)
-
- def is_checked(self):
- return self.value == self.choice_value
-
- def tag(self):
- if 'id' in self.attrs:
- self.attrs['id'] = '%s_%s' % (self.attrs['id'], self.index)
- final_attrs = dict(self.attrs, type=self.input_type, name=self.name, value=self.choice_value)
- if self.is_checked():
- final_attrs['checked'] = 'checked'
- return format_html('<input{0} />', flatatt(final_attrs))
-
-
-class RadioChoiceInput(ChoiceInput):
- input_type = 'radio'
-
- def __init__(self, *args, **kwargs):
- super(RadioChoiceInput, self).__init__(*args, **kwargs)
- self.value = force_text(self.value)
-
-
-class RadioInput(RadioChoiceInput):
- def __init__(self, *args, **kwargs):
- msg = "RadioInput has been deprecated. Use RadioChoiceInput instead."
- warnings.warn(msg, PendingDeprecationWarning, stacklevel=2)
- super(RadioInput, self).__init__(*args, **kwargs)
-
-
-class CheckboxChoiceInput(ChoiceInput):
- input_type = 'checkbox'
-
- def __init__(self, *args, **kwargs):
- super(CheckboxChoiceInput, self).__init__(*args, **kwargs)
- self.value = set(force_text(v) for v in self.value)
-
- def is_checked(self):
- return self.choice_value in self.value
-
-
-@python_2_unicode_compatible
-class ChoiceFieldRenderer(object):
- """
- An object used by RadioSelect to enable customization of radio widgets.
- """
-
- choice_input_class = None
-
- def __init__(self, name, value, attrs, choices):
- self.name = name
- self.value = value
- self.attrs = attrs
- self.choices = choices
-
- def __iter__(self):
- for i, choice in enumerate(self.choices):
- yield self.choice_input_class(self.name, self.value, self.attrs.copy(), choice, i)
-
- def __getitem__(self, idx):
- choice = self.choices[idx] # Let the IndexError propogate
- return self.choice_input_class(self.name, self.value, self.attrs.copy(), choice, idx)
-
- def __str__(self):
- return self.render()
-
- def render(self):
- """
- Outputs a <ul> for this set of choice fields.
- If an id was given to the field, it is applied to the <ul> (each
- item in the list will get an id of `$id_$i`).
- """
- id_ = self.attrs.get('id', None)
- start_tag = format_html('<ul id="{0}">', id_) if id_ else '<ul>'
- output = [start_tag]
- for widget in self:
- output.append(format_html('<li>{0}</li>', force_text(widget)))
- output.append('</ul>')
- return mark_safe('\n'.join(output))
-
-
-class RadioFieldRenderer(ChoiceFieldRenderer):
- choice_input_class = RadioChoiceInput
-
-
-class CheckboxFieldRenderer(ChoiceFieldRenderer):
- choice_input_class = CheckboxChoiceInput
-
-
-class RendererMixin(object):
- renderer = None # subclasses must define this
- _empty_value = None
-
- def __init__(self, *args, **kwargs):
- # Override the default renderer if we were passed one.
- renderer = kwargs.pop('renderer', None)
- if renderer:
- self.renderer = renderer
- super(RendererMixin, self).__init__(*args, **kwargs)
-
- def subwidgets(self, name, value, attrs=None, choices=()):
- for widget in self.get_renderer(name, value, attrs, choices):
- yield widget
-
- def get_renderer(self, name, value, attrs=None, choices=()):
- """Returns an instance of the renderer."""
- if value is None:
- value = self._empty_value
- final_attrs = self.build_attrs(attrs)
- choices = list(chain(self.choices, choices))
- return self.renderer(name, value, final_attrs, choices)
-
- def render(self, name, value, attrs=None, choices=()):
- return self.get_renderer(name, value, attrs, choices).render()
-
- def id_for_label(self, id_):
- # Widgets using this RendererMixin are made of a collection of
- # subwidgets, each with their own <label>, and distinct ID.
- # The IDs are made distinct by y "_X" suffix, where X is the zero-based
- # index of the choice field. Thus, the label for the main widget should
- # reference the first subwidget, hence the "_0" suffix.
- if id_:
- id_ += '_0'
- return id_
-
-
-class RadioSelect(RendererMixin, Select):
- renderer = RadioFieldRenderer
- _empty_value = ''
-
-
-class CheckboxSelectMultiple(RendererMixin, SelectMultiple):
- renderer = CheckboxFieldRenderer
- _empty_value = []
-
-
-class MultiWidget(Widget):
- """
- A widget that is composed of multiple widgets.
-
- Its render() method is different than other widgets', because it has to
- figure out how to split a single value for display in multiple widgets.
- The ``value`` argument can be one of two things:
-
- * A list.
- * A normal value (e.g., a string) that has been "compressed" from
- a list of values.
-
- In the second case -- i.e., if the value is NOT a list -- render() will
- first "decompress" the value into a list before rendering it. It does so by
- calling the decompress() method, which MultiWidget subclasses must
- implement. This method takes a single "compressed" value and returns a
- list.
-
- When render() does its HTML rendering, each value in the list is rendered
- with the corresponding widget -- the first value is rendered in the first
- widget, the second value is rendered in the second widget, etc.
-
- Subclasses may implement format_output(), which takes the list of rendered
- widgets and returns a string of HTML that formats them any way you'd like.
-
- You'll probably want to use this class with MultiValueField.
- """
- def __init__(self, widgets, attrs=None):
- self.widgets = [w() if isinstance(w, type) else w for w in widgets]
- super(MultiWidget, self).__init__(attrs)
-
- def render(self, name, value, attrs=None):
- if self.is_localized:
- for widget in self.widgets:
- widget.is_localized = self.is_localized
- # value is a list of values, each corresponding to a widget
- # in self.widgets.
- if not isinstance(value, list):
- value = self.decompress(value)
- output = []
- final_attrs = self.build_attrs(attrs)
- id_ = final_attrs.get('id', None)
- for i, widget in enumerate(self.widgets):
- try:
- widget_value = value[i]
- except IndexError:
- widget_value = None
- if id_:
- final_attrs = dict(final_attrs, id='%s_%s' % (id_, i))
- output.append(widget.render(name + '_%s' % i, widget_value, final_attrs))
- return mark_safe(self.format_output(output))
-
- def id_for_label(self, id_):
- # See the comment for RadioSelect.id_for_label()
- if id_:
- id_ += '_0'
- return id_
-
- def value_from_datadict(self, data, files, name):
- return [widget.value_from_datadict(data, files, name + '_%s' % i) for i, widget in enumerate(self.widgets)]
-
- def format_output(self, rendered_widgets):
- """
- Given a list of rendered widgets (as strings), returns a Unicode string
- representing the HTML for the whole lot.
-
- This hook allows you to format the HTML design of the widgets, if
- needed.
- """
- return ''.join(rendered_widgets)
-
- def decompress(self, value):
- """
- Returns a list of decompressed values for the given compressed value.
- The given value can be assumed to be valid, but not necessarily
- non-empty.
- """
- raise NotImplementedError('Subclasses must implement this method.')
-
- def _get_media(self):
- "Media for a multiwidget is the combination of all media of the subwidgets"
- media = Media()
- for w in self.widgets:
- media = media + w.media
- return media
- media = property(_get_media)
-
- def __deepcopy__(self, memo):
- obj = super(MultiWidget, self).__deepcopy__(memo)
- obj.widgets = copy.deepcopy(self.widgets)
- return obj
-
- @property
- def needs_multipart_form(self):
- return any(w.needs_multipart_form for w in self.widgets)
-
-
-class SplitDateTimeWidget(MultiWidget):
- """
- A Widget that splits datetime input into two <input type="text"> boxes.
- """
-
- def __init__(self, attrs=None, date_format=None, time_format=None):
- widgets = (DateInput(attrs=attrs, format=date_format),
- TimeInput(attrs=attrs, format=time_format))
- super(SplitDateTimeWidget, self).__init__(widgets, attrs)
-
- def decompress(self, value):
- if value:
- value = to_current_timezone(value)
- return [value.date(), value.time().replace(microsecond=0)]
- return [None, None]
-
-class SplitHiddenDateTimeWidget(SplitDateTimeWidget):
- """
- A Widget that splits datetime input into two <input type="hidden"> inputs.
- """
- is_hidden = True
-
- def __init__(self, attrs=None, date_format=None, time_format=None):
- super(SplitHiddenDateTimeWidget, self).__init__(attrs, date_format, time_format)
- for widget in self.widgets:
- widget.input_type = 'hidden'
- widget.is_hidden = True
diff --git a/lib/python2.7/site-packages/django/http/__init__.py b/lib/python2.7/site-packages/django/http/__init__.py
deleted file mode 100644
index 46afa34..0000000
--- a/lib/python2.7/site-packages/django/http/__init__.py
+++ /dev/null
@@ -1,10 +0,0 @@
-from django.http.cookie import SimpleCookie, parse_cookie
-from django.http.request import (HttpRequest, QueryDict, UnreadablePostError,
- build_request_repr)
-from django.http.response import (HttpResponse, StreamingHttpResponse,
- CompatibleStreamingHttpResponse, HttpResponsePermanentRedirect,
- HttpResponseRedirect, HttpResponseNotModified, HttpResponseBadRequest,
- HttpResponseForbidden, HttpResponseNotFound, HttpResponseNotAllowed,
- HttpResponseGone, HttpResponseServerError, Http404, BadHeaderError)
-from django.http.utils import (fix_location_header, conditional_content_removal,
- fix_IE_for_attach, fix_IE_for_vary)
diff --git a/lib/python2.7/site-packages/django/http/cookie.py b/lib/python2.7/site-packages/django/http/cookie.py
deleted file mode 100644
index b0b5350..0000000
--- a/lib/python2.7/site-packages/django/http/cookie.py
+++ /dev/null
@@ -1,86 +0,0 @@
-from __future__ import absolute_import, unicode_literals
-
-from django.utils.encoding import force_str
-from django.utils import six
-from django.utils.six.moves import http_cookies
-
-
-# Some versions of Python 2.7 and later won't need this encoding bug fix:
-_cookie_encodes_correctly = http_cookies.SimpleCookie().value_encode(';') == (';', '"\\073"')
-# See ticket #13007, http://bugs.python.org/issue2193 and http://trac.edgewall.org/ticket/2256
-_tc = http_cookies.SimpleCookie()
-try:
- _tc.load(str('foo:bar=1'))
- _cookie_allows_colon_in_names = True
-except http_cookies.CookieError:
- _cookie_allows_colon_in_names = False
-
-if _cookie_encodes_correctly and _cookie_allows_colon_in_names:
- SimpleCookie = http_cookies.SimpleCookie
-else:
- Morsel = http_cookies.Morsel
-
- class SimpleCookie(http_cookies.SimpleCookie):
- if not _cookie_encodes_correctly:
- def value_encode(self, val):
- # Some browsers do not support quoted-string from RFC 2109,
- # including some versions of Safari and Internet Explorer.
- # These browsers split on ';', and some versions of Safari
- # are known to split on ', '. Therefore, we encode ';' and ','
-
- # SimpleCookie already does the hard work of encoding and decoding.
- # It uses octal sequences like '\\012' for newline etc.
- # and non-ASCII chars. We just make use of this mechanism, to
- # avoid introducing two encoding schemes which would be confusing
- # and especially awkward for javascript.
-
- # NB, contrary to Python docs, value_encode returns a tuple containing
- # (real val, encoded_val)
- val, encoded = super(SimpleCookie, self).value_encode(val)
-
- encoded = encoded.replace(";", "\\073").replace(",","\\054")
- # If encoded now contains any quoted chars, we need double quotes
- # around the whole string.
- if "\\" in encoded and not encoded.startswith('"'):
- encoded = '"' + encoded + '"'
-
- return val, encoded
-
- if not _cookie_allows_colon_in_names:
- def load(self, rawdata):
- self.bad_cookies = set()
- if six.PY2 and isinstance(rawdata, six.text_type):
- rawdata = force_str(rawdata)
- super(SimpleCookie, self).load(rawdata)
- for key in self.bad_cookies:
- del self[key]
-
- # override private __set() method:
- # (needed for using our Morsel, and for laxness with CookieError
- def _BaseCookie__set(self, key, real_value, coded_value):
- key = force_str(key)
- try:
- M = self.get(key, Morsel())
- M.set(key, real_value, coded_value)
- dict.__setitem__(self, key, M)
- except http_cookies.CookieError:
- self.bad_cookies.add(key)
- dict.__setitem__(self, key, http_cookies.Morsel())
-
-
-def parse_cookie(cookie):
- if cookie == '':
- return {}
- if not isinstance(cookie, http_cookies.BaseCookie):
- try:
- c = SimpleCookie()
- c.load(cookie)
- except http_cookies.CookieError:
- # Invalid cookie
- return {}
- else:
- c = cookie
- cookiedict = {}
- for key in c.keys():
- cookiedict[key] = c.get(key).value
- return cookiedict
diff --git a/lib/python2.7/site-packages/django/http/multipartparser.py b/lib/python2.7/site-packages/django/http/multipartparser.py
deleted file mode 100644
index eeb435f..0000000
--- a/lib/python2.7/site-packages/django/http/multipartparser.py
+++ /dev/null
@@ -1,633 +0,0 @@
-"""
-Multi-part parsing for file uploads.
-
-Exposes one class, ``MultiPartParser``, which feeds chunks of uploaded data to
-file upload handlers for processing.
-"""
-from __future__ import unicode_literals
-
-import base64
-import cgi
-import sys
-
-from django.conf import settings
-from django.core.exceptions import SuspiciousMultipartForm
-from django.utils.datastructures import MultiValueDict
-from django.utils.encoding import force_text
-from django.utils import six
-from django.utils.text import unescape_entities
-from django.core.files.uploadhandler import StopUpload, SkipFile, StopFutureHandlers
-
-__all__ = ('MultiPartParser', 'MultiPartParserError', 'InputStreamExhausted')
-
-class MultiPartParserError(Exception):
- pass
-
-class InputStreamExhausted(Exception):
- """
- No more reads are allowed from this device.
- """
- pass
-
-RAW = "raw"
-FILE = "file"
-FIELD = "field"
-
-class MultiPartParser(object):
- """
- A rfc2388 multipart/form-data parser.
-
- ``MultiValueDict.parse()`` reads the input stream in ``chunk_size`` chunks
- and returns a tuple of ``(MultiValueDict(POST), MultiValueDict(FILES))``.
- """
- def __init__(self, META, input_data, upload_handlers, encoding=None):
- """
- Initialize the MultiPartParser object.
-
- :META:
- The standard ``META`` dictionary in Django request objects.
- :input_data:
- The raw post data, as a file-like object.
- :upload_handlers:
- A list of UploadHandler instances that perform operations on the uploaded
- data.
- :encoding:
- The encoding with which to treat the incoming data.
- """
-
- #
- # Content-Type should containt multipart and the boundary information.
- #
-
- content_type = META.get('HTTP_CONTENT_TYPE', META.get('CONTENT_TYPE', ''))
- if not content_type.startswith('multipart/'):
- raise MultiPartParserError('Invalid Content-Type: %s' % content_type)
-
- # Parse the header to get the boundary to split the parts.
- ctypes, opts = parse_header(content_type.encode('ascii'))
- boundary = opts.get('boundary')
- if not boundary or not cgi.valid_boundary(boundary):
- raise MultiPartParserError('Invalid boundary in multipart: %s' % boundary)
-
- # Content-Length should contain the length of the body we are about
- # to receive.
- try:
- content_length = int(META.get('HTTP_CONTENT_LENGTH', META.get('CONTENT_LENGTH', 0)))
- except (ValueError, TypeError):
- content_length = 0
-
- if content_length < 0:
- # This means we shouldn't continue...raise an error.
- raise MultiPartParserError("Invalid content length: %r" % content_length)
-
- if isinstance(boundary, six.text_type):
- boundary = boundary.encode('ascii')
- self._boundary = boundary
- self._input_data = input_data
-
- # For compatibility with low-level network APIs (with 32-bit integers),
- # the chunk size should be < 2^31, but still divisible by 4.
- possible_sizes = [x.chunk_size for x in upload_handlers if x.chunk_size]
- self._chunk_size = min([2**31-4] + possible_sizes)
-
- self._meta = META
- self._encoding = encoding or settings.DEFAULT_CHARSET
- self._content_length = content_length
- self._upload_handlers = upload_handlers
-
- def parse(self):
- """
- Parse the POST data and break it into a FILES MultiValueDict and a POST
- MultiValueDict.
-
- Returns a tuple containing the POST and FILES dictionary, respectively.
- """
- # We have to import QueryDict down here to avoid a circular import.
- from django.http import QueryDict
-
- encoding = self._encoding
- handlers = self._upload_handlers
-
- # HTTP spec says that Content-Length >= 0 is valid
- # handling content-length == 0 before continuing
- if self._content_length == 0:
- return QueryDict('', encoding=self._encoding), MultiValueDict()
-
- # See if any of the handlers take care of the parsing.
- # This allows overriding everything if need be.
- for handler in handlers:
- result = handler.handle_raw_input(self._input_data,
- self._meta,
- self._content_length,
- self._boundary,
- encoding)
- #Check to see if it was handled
- if result is not None:
- return result[0], result[1]
-
- # Create the data structures to be used later.
- self._post = QueryDict('', mutable=True)
- self._files = MultiValueDict()
-
- # Instantiate the parser and stream:
- stream = LazyStream(ChunkIter(self._input_data, self._chunk_size))
-
- # Whether or not to signal a file-completion at the beginning of the loop.
- old_field_name = None
- counters = [0] * len(handlers)
-
- try:
- for item_type, meta_data, field_stream in Parser(stream, self._boundary):
- if old_field_name:
- # We run this at the beginning of the next loop
- # since we cannot be sure a file is complete until
- # we hit the next boundary/part of the multipart content.
- self.handle_file_complete(old_field_name, counters)
- old_field_name = None
-
- try:
- disposition = meta_data['content-disposition'][1]
- field_name = disposition['name'].strip()
- except (KeyError, IndexError, AttributeError):
- continue
-
- transfer_encoding = meta_data.get('content-transfer-encoding')
- if transfer_encoding is not None:
- transfer_encoding = transfer_encoding[0].strip()
- field_name = force_text(field_name, encoding, errors='replace')
-
- if item_type == FIELD:
- # This is a post field, we can just set it in the post
- if transfer_encoding == 'base64':
- raw_data = field_stream.read()
- try:
- data = str(raw_data).decode('base64')
- except:
- data = raw_data
- else:
- data = field_stream.read()
-
- self._post.appendlist(field_name,
- force_text(data, encoding, errors='replace'))
- elif item_type == FILE:
- # This is a file, use the handler...
- file_name = disposition.get('filename')
- if not file_name:
- continue
- file_name = force_text(file_name, encoding, errors='replace')
- file_name = self.IE_sanitize(unescape_entities(file_name))
-
- content_type = meta_data.get('content-type', ('',))[0].strip()
- try:
- charset = meta_data.get('content-type', (0, {}))[1].get('charset', None)
- except:
- charset = None
-
- try:
- content_length = int(meta_data.get('content-length')[0])
- except (IndexError, TypeError, ValueError):
- content_length = None
-
- counters = [0] * len(handlers)
- try:
- for handler in handlers:
- try:
- handler.new_file(field_name, file_name,
- content_type, content_length,
- charset)
- except StopFutureHandlers:
- break
-
- for chunk in field_stream:
- if transfer_encoding == 'base64':
- # We only special-case base64 transfer encoding
- # We should always read base64 streams by multiple of 4
- over_bytes = len(chunk) % 4
- if over_bytes:
- over_chunk = field_stream.read(4 - over_bytes)
- chunk += over_chunk
-
- try:
- chunk = base64.b64decode(chunk)
- except Exception as e:
- # Since this is only a chunk, any error is an unfixable error.
- msg = "Could not decode base64 data: %r" % e
- six.reraise(MultiPartParserError, MultiPartParserError(msg), sys.exc_info()[2])
-
- for i, handler in enumerate(handlers):
- chunk_length = len(chunk)
- chunk = handler.receive_data_chunk(chunk,
- counters[i])
- counters[i] += chunk_length
- if chunk is None:
- # If the chunk received by the handler is None, then don't continue.
- break
-
- except SkipFile:
- # Just use up the rest of this file...
- exhaust(field_stream)
- else:
- # Handle file upload completions on next iteration.
- old_field_name = field_name
- else:
- # If this is neither a FIELD or a FILE, just exhaust the stream.
- exhaust(stream)
- except StopUpload as e:
- if not e.connection_reset:
- exhaust(self._input_data)
- else:
- # Make sure that the request data is all fed
- exhaust(self._input_data)
-
- # Signal that the upload has completed.
- for handler in handlers:
- retval = handler.upload_complete()
- if retval:
- break
-
- return self._post, self._files
-
- def handle_file_complete(self, old_field_name, counters):
- """
- Handle all the signalling that takes place when a file is complete.
- """
- for i, handler in enumerate(self._upload_handlers):
- file_obj = handler.file_complete(counters[i])
- if file_obj:
- # If it returns a file object, then set the files dict.
- self._files.appendlist(force_text(old_field_name,
- self._encoding,
- errors='replace'),
- file_obj)
- break
-
- def IE_sanitize(self, filename):
- """Cleanup filename from Internet Explorer full paths."""
- return filename and filename[filename.rfind("\\")+1:].strip()
-
-class LazyStream(six.Iterator):
- """
- The LazyStream wrapper allows one to get and "unget" bytes from a stream.
-
- Given a producer object (an iterator that yields bytestrings), the
- LazyStream object will support iteration, reading, and keeping a "look-back"
- variable in case you need to "unget" some bytes.
- """
- def __init__(self, producer, length=None):
- """
- Every LazyStream must have a producer when instantiated.
-
- A producer is an iterable that returns a string each time it
- is called.
- """
- self._producer = producer
- self._empty = False
- self._leftover = b''
- self.length = length
- self.position = 0
- self._remaining = length
- self._unget_history = []
-
- def tell(self):
- return self.position
-
- def read(self, size=None):
- def parts():
- remaining = self._remaining if size is None else size
- # do the whole thing in one shot if no limit was provided.
- if remaining is None:
- yield b''.join(self)
- return
-
- # otherwise do some bookkeeping to return exactly enough
- # of the stream and stashing any extra content we get from
- # the producer
- while remaining != 0:
- assert remaining > 0, 'remaining bytes to read should never go negative'
-
- chunk = next(self)
-
- emitting = chunk[:remaining]
- self.unget(chunk[remaining:])
- remaining -= len(emitting)
- yield emitting
-
- out = b''.join(parts())
- return out
-
- def __next__(self):
- """
- Used when the exact number of bytes to read is unimportant.
-
- This procedure just returns whatever is chunk is conveniently returned
- from the iterator instead. Useful to avoid unnecessary bookkeeping if
- performance is an issue.
- """
- if self._leftover:
- output = self._leftover
- self._leftover = b''
- else:
- output = next(self._producer)
- self._unget_history = []
- self.position += len(output)
- return output
-
- def close(self):
- """
- Used to invalidate/disable this lazy stream.
-
- Replaces the producer with an empty list. Any leftover bytes that have
- already been read will still be reported upon read() and/or next().
- """
- self._producer = []
-
- def __iter__(self):
- return self
-
- def unget(self, bytes):
- """
- Places bytes back onto the front of the lazy stream.
-
- Future calls to read() will return those bytes first. The
- stream position and thus tell() will be rewound.
- """
- if not bytes:
- return
- self._update_unget_history(len(bytes))
- self.position -= len(bytes)
- self._leftover = b''.join([bytes, self._leftover])
-
- def _update_unget_history(self, num_bytes):
- """
- Updates the unget history as a sanity check to see if we've pushed
- back the same number of bytes in one chunk. If we keep ungetting the
- same number of bytes many times (here, 50), we're mostly likely in an
- infinite loop of some sort. This is usually caused by a
- maliciously-malformed MIME request.
- """
- self._unget_history = [num_bytes] + self._unget_history[:49]
- number_equal = len([current_number for current_number in self._unget_history
- if current_number == num_bytes])
-
- if number_equal > 40:
- raise SuspiciousMultipartForm(
- "The multipart parser got stuck, which shouldn't happen with"
- " normal uploaded files. Check for malicious upload activity;"
- " if there is none, report this to the Django developers."
- )
-
-class ChunkIter(six.Iterator):
- """
- An iterable that will yield chunks of data. Given a file-like object as the
- constructor, this object will yield chunks of read operations from that
- object.
- """
- def __init__(self, flo, chunk_size=64 * 1024):
- self.flo = flo
- self.chunk_size = chunk_size
-
- def __next__(self):
- try:
- data = self.flo.read(self.chunk_size)
- except InputStreamExhausted:
- raise StopIteration()
- if data:
- return data
- else:
- raise StopIteration()
-
- def __iter__(self):
- return self
-
-class InterBoundaryIter(six.Iterator):
- """
- A Producer that will iterate over boundaries.
- """
- def __init__(self, stream, boundary):
- self._stream = stream
- self._boundary = boundary
-
- def __iter__(self):
- return self
-
- def __next__(self):
- try:
- return LazyStream(BoundaryIter(self._stream, self._boundary))
- except InputStreamExhausted:
- raise StopIteration()
-
-class BoundaryIter(six.Iterator):
- """
- A Producer that is sensitive to boundaries.
-
- Will happily yield bytes until a boundary is found. Will yield the bytes
- before the boundary, throw away the boundary bytes themselves, and push the
- post-boundary bytes back on the stream.
-
- The future calls to next() after locating the boundary will raise a
- StopIteration exception.
- """
-
- def __init__(self, stream, boundary):
- self._stream = stream
- self._boundary = boundary
- self._done = False
- # rollback an additional six bytes because the format is like
- # this: CRLF<boundary>[--CRLF]
- self._rollback = len(boundary) + 6
-
- # Try to use mx fast string search if available. Otherwise
- # use Python find. Wrap the latter for consistency.
- unused_char = self._stream.read(1)
- if not unused_char:
- raise InputStreamExhausted()
- self._stream.unget(unused_char)
-
- def __iter__(self):
- return self
-
- def __next__(self):
- if self._done:
- raise StopIteration()
-
- stream = self._stream
- rollback = self._rollback
-
- bytes_read = 0
- chunks = []
- for bytes in stream:
- bytes_read += len(bytes)
- chunks.append(bytes)
- if bytes_read > rollback:
- break
- if not bytes:
- break
- else:
- self._done = True
-
- if not chunks:
- raise StopIteration()
-
- chunk = b''.join(chunks)
- boundary = self._find_boundary(chunk, len(chunk) < self._rollback)
-
- if boundary:
- end, next = boundary
- stream.unget(chunk[next:])
- self._done = True
- return chunk[:end]
- else:
- # make sure we dont treat a partial boundary (and
- # its separators) as data
- if not chunk[:-rollback]:# and len(chunk) >= (len(self._boundary) + 6):
- # There's nothing left, we should just return and mark as done.
- self._done = True
- return chunk
- else:
- stream.unget(chunk[-rollback:])
- return chunk[:-rollback]
-
- def _find_boundary(self, data, eof = False):
- """
- Finds a multipart boundary in data.
-
- Should no boundry exist in the data None is returned instead. Otherwise
- a tuple containing the indices of the following are returned:
-
- * the end of current encapsulation
- * the start of the next encapsulation
- """
- index = data.find(self._boundary)
- if index < 0:
- return None
- else:
- end = index
- next = index + len(self._boundary)
- # backup over CRLF
- last = max(0, end-1)
- if data[last:last+1] == b'\n':
- end -= 1
- last = max(0, end-1)
- if data[last:last+1] == b'\r':
- end -= 1
- return end, next
-
-def exhaust(stream_or_iterable):
- """
- Completely exhausts an iterator or stream.
-
- Raise a MultiPartParserError if the argument is not a stream or an iterable.
- """
- iterator = None
- try:
- iterator = iter(stream_or_iterable)
- except TypeError:
- iterator = ChunkIter(stream_or_iterable, 16384)
-
- if iterator is None:
- raise MultiPartParserError('multipartparser.exhaust() was passed a non-iterable or stream parameter')
-
- for __ in iterator:
- pass
-
-def parse_boundary_stream(stream, max_header_size):
- """
- Parses one and exactly one stream that encapsulates a boundary.
- """
- # Stream at beginning of header, look for end of header
- # and parse it if found. The header must fit within one
- # chunk.
- chunk = stream.read(max_header_size)
-
- # 'find' returns the top of these four bytes, so we'll
- # need to munch them later to prevent them from polluting
- # the payload.
- header_end = chunk.find(b'\r\n\r\n')
-
- def _parse_header(line):
- main_value_pair, params = parse_header(line)
- try:
- name, value = main_value_pair.split(':', 1)
- except:
- raise ValueError("Invalid header: %r" % line)
- return name, (value, params)
-
- if header_end == -1:
- # we find no header, so we just mark this fact and pass on
- # the stream verbatim
- stream.unget(chunk)
- return (RAW, {}, stream)
-
- header = chunk[:header_end]
-
- # here we place any excess chunk back onto the stream, as
- # well as throwing away the CRLFCRLF bytes from above.
- stream.unget(chunk[header_end + 4:])
-
- TYPE = RAW
- outdict = {}
-
- # Eliminate blank lines
- for line in header.split(b'\r\n'):
- # This terminology ("main value" and "dictionary of
- # parameters") is from the Python docs.
- try:
- name, (value, params) = _parse_header(line)
- except:
- continue
-
- if name == 'content-disposition':
- TYPE = FIELD
- if params.get('filename'):
- TYPE = FILE
-
- outdict[name] = value, params
-
- if TYPE == RAW:
- stream.unget(chunk)
-
- return (TYPE, outdict, stream)
-
-class Parser(object):
- def __init__(self, stream, boundary):
- self._stream = stream
- self._separator = b'--' + boundary
-
- def __iter__(self):
- boundarystream = InterBoundaryIter(self._stream, self._separator)
- for sub_stream in boundarystream:
- # Iterate over each part
- yield parse_boundary_stream(sub_stream, 1024)
-
-def parse_header(line):
- """ Parse the header into a key-value.
- Input (line): bytes, output: unicode for key/name, bytes for value which
- will be decoded later
- """
- plist = _parse_header_params(b';' + line)
- key = plist.pop(0).lower().decode('ascii')
- pdict = {}
- for p in plist:
- i = p.find(b'=')
- if i >= 0:
- name = p[:i].strip().lower().decode('ascii')
- value = p[i+1:].strip()
- if len(value) >= 2 and value[:1] == value[-1:] == b'"':
- value = value[1:-1]
- value = value.replace(b'\\\\', b'\\').replace(b'\\"', b'"')
- pdict[name] = value
- return key, pdict
-
-def _parse_header_params(s):
- plist = []
- while s[:1] == b';':
- s = s[1:]
- end = s.find(b';')
- while end > 0 and s.count(b'"', 0, end) % 2:
- end = s.find(b';', end + 1)
- if end < 0:
- end = len(s)
- f = s[:end]
- plist.append(f.strip())
- s = s[end:]
- return plist
diff --git a/lib/python2.7/site-packages/django/http/request.py b/lib/python2.7/site-packages/django/http/request.py
deleted file mode 100644
index dee6910..0000000
--- a/lib/python2.7/site-packages/django/http/request.py
+++ /dev/null
@@ -1,514 +0,0 @@
-from __future__ import absolute_import, unicode_literals
-
-import copy
-import os
-import re
-import sys
-from io import BytesIO
-from pprint import pformat
-
-from django.conf import settings
-from django.core import signing
-from django.core.exceptions import DisallowedHost, ImproperlyConfigured
-from django.core.files import uploadhandler
-from django.http.multipartparser import MultiPartParser
-from django.utils import six
-from django.utils.datastructures import MultiValueDict, ImmutableList
-from django.utils.encoding import force_bytes, force_text, force_str, iri_to_uri
-from django.utils.six.moves.urllib.parse import parse_qsl, urlencode, quote, urljoin
-
-
-RAISE_ERROR = object()
-absolute_http_url_re = re.compile(r"^https?://", re.I)
-host_validation_re = re.compile(r"^([a-z0-9.-]+|\[[a-f0-9]*:[a-f0-9:]+\])(:\d+)?$")
-
-
-class UnreadablePostError(IOError):
- pass
-
-
-class HttpRequest(object):
- """A basic HTTP request."""
-
- # The encoding used in GET/POST dicts. None means use default setting.
- _encoding = None
- _upload_handlers = []
-
- def __init__(self):
- # WARNING: The `WSGIRequest` subclass doesn't call `super`.
- # Any variable assignment made here should also happen in
- # `WSGIRequest.__init__()`.
-
- self.GET, self.POST, self.COOKIES, self.META, self.FILES = {}, {}, {}, {}, {}
- self.path = ''
- self.path_info = ''
- self.method = None
- self.resolver_match = None
- self._post_parse_error = False
-
- def __repr__(self):
- return build_request_repr(self)
-
- def get_host(self):
- """Returns the HTTP host using the environment or request headers."""
- # We try three options, in order of decreasing preference.
- if settings.USE_X_FORWARDED_HOST and (
- 'HTTP_X_FORWARDED_HOST' in self.META):
- host = self.META['HTTP_X_FORWARDED_HOST']
- elif 'HTTP_HOST' in self.META:
- host = self.META['HTTP_HOST']
- else:
- # Reconstruct the host using the algorithm from PEP 333.
- host = self.META['SERVER_NAME']
- server_port = str(self.META['SERVER_PORT'])
- if server_port != ('443' if self.is_secure() else '80'):
- host = '%s:%s' % (host, server_port)
-
- allowed_hosts = ['*'] if settings.DEBUG else settings.ALLOWED_HOSTS
- domain, port = split_domain_port(host)
- if domain and validate_host(domain, allowed_hosts):
- return host
- else:
- msg = "Invalid HTTP_HOST header: %r." % host
- if domain:
- msg += "You may need to add %r to ALLOWED_HOSTS." % domain
- raise DisallowedHost(msg)
-
- def get_full_path(self):
- # RFC 3986 requires query string arguments to be in the ASCII range.
- # Rather than crash if this doesn't happen, we encode defensively.
- return '%s%s' % (self.path, ('?' + iri_to_uri(self.META.get('QUERY_STRING', ''))) if self.META.get('QUERY_STRING', '') else '')
-
- def get_signed_cookie(self, key, default=RAISE_ERROR, salt='', max_age=None):
- """
- Attempts to return a signed cookie. If the signature fails or the
- cookie has expired, raises an exception... unless you provide the
- default argument in which case that value will be returned instead.
- """
- try:
- cookie_value = self.COOKIES[key]
- except KeyError:
- if default is not RAISE_ERROR:
- return default
- else:
- raise
- try:
- value = signing.get_cookie_signer(salt=key + salt).unsign(
- cookie_value, max_age=max_age)
- except signing.BadSignature:
- if default is not RAISE_ERROR:
- return default
- else:
- raise
- return value
-
- def build_absolute_uri(self, location=None):
- """
- Builds an absolute URI from the location and the variables available in
- this request. If no location is specified, the absolute URI is built on
- ``request.get_full_path()``.
- """
- if not location:
- location = self.get_full_path()
- if not absolute_http_url_re.match(location):
- current_uri = '%s://%s%s' % ('https' if self.is_secure() else 'http',
- self.get_host(), self.path)
- location = urljoin(current_uri, location)
- return iri_to_uri(location)
-
- def _is_secure(self):
- return os.environ.get("HTTPS") == "on"
-
- def is_secure(self):
- # First, check the SECURE_PROXY_SSL_HEADER setting.
- if settings.SECURE_PROXY_SSL_HEADER:
- try:
- header, value = settings.SECURE_PROXY_SSL_HEADER
- except ValueError:
- raise ImproperlyConfigured('The SECURE_PROXY_SSL_HEADER setting must be a tuple containing two values.')
- if self.META.get(header, None) == value:
- return True
-
- # Failing that, fall back to _is_secure(), which is a hook for
- # subclasses to implement.
- return self._is_secure()
-
- def is_ajax(self):
- return self.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'
-
- @property
- def encoding(self):
- return self._encoding
-
- @encoding.setter
- def encoding(self, val):
- """
- Sets the encoding used for GET/POST accesses. If the GET or POST
- dictionary has already been created, it is removed and recreated on the
- next access (so that it is decoded correctly).
- """
- self._encoding = val
- if hasattr(self, '_get'):
- del self._get
- if hasattr(self, '_post'):
- del self._post
-
- def _initialize_handlers(self):
- self._upload_handlers = [uploadhandler.load_handler(handler, self)
- for handler in settings.FILE_UPLOAD_HANDLERS]
-
- @property
- def upload_handlers(self):
- if not self._upload_handlers:
- # If there are no upload handlers defined, initialize them from settings.
- self._initialize_handlers()
- return self._upload_handlers
-
- @upload_handlers.setter
- def upload_handlers(self, upload_handlers):
- if hasattr(self, '_files'):
- raise AttributeError("You cannot set the upload handlers after the upload has been processed.")
- self._upload_handlers = upload_handlers
-
- def parse_file_upload(self, META, post_data):
- """Returns a tuple of (POST QueryDict, FILES MultiValueDict)."""
- self.upload_handlers = ImmutableList(
- self.upload_handlers,
- warning="You cannot alter upload handlers after the upload has been processed."
- )
- parser = MultiPartParser(META, post_data, self.upload_handlers, self.encoding)
- return parser.parse()
-
- @property
- def body(self):
- if not hasattr(self, '_body'):
- if self._read_started:
- raise Exception("You cannot access body after reading from request's data stream")
- try:
- self._body = self.read()
- except IOError as e:
- six.reraise(UnreadablePostError, UnreadablePostError(*e.args), sys.exc_info()[2])
- self._stream = BytesIO(self._body)
- return self._body
-
- def _mark_post_parse_error(self):
- self._post = QueryDict('')
- self._files = MultiValueDict()
- self._post_parse_error = True
-
- def _load_post_and_files(self):
- """Populate self._post and self._files if the content-type is a form type"""
- if self.method != 'POST':
- self._post, self._files = QueryDict('', encoding=self._encoding), MultiValueDict()
- return
- if self._read_started and not hasattr(self, '_body'):
- self._mark_post_parse_error()
- return
-
- if self.META.get('CONTENT_TYPE', '').startswith('multipart/form-data'):
- if hasattr(self, '_body'):
- # Use already read data
- data = BytesIO(self._body)
- else:
- data = self
- try:
- self._post, self._files = self.parse_file_upload(self.META, data)
- except:
- # An error occured while parsing POST data. Since when
- # formatting the error the request handler might access
- # self.POST, set self._post and self._file to prevent
- # attempts to parse POST data again.
- # Mark that an error occured. This allows self.__repr__ to
- # be explicit about it instead of simply representing an
- # empty POST
- self._mark_post_parse_error()
- raise
- elif self.META.get('CONTENT_TYPE', '').startswith('application/x-www-form-urlencoded'):
- self._post, self._files = QueryDict(self.body, encoding=self._encoding), MultiValueDict()
- else:
- self._post, self._files = QueryDict('', encoding=self._encoding), MultiValueDict()
-
- ## File-like and iterator interface.
- ##
- ## Expects self._stream to be set to an appropriate source of bytes by
- ## a corresponding request subclass (e.g. WSGIRequest).
- ## Also when request data has already been read by request.POST or
- ## request.body, self._stream points to a BytesIO instance
- ## containing that data.
-
- def read(self, *args, **kwargs):
- self._read_started = True
- try:
- return self._stream.read(*args, **kwargs)
- except IOError as e:
- six.reraise(UnreadablePostError, UnreadablePostError(*e.args), sys.exc_info()[2])
-
- def readline(self, *args, **kwargs):
- self._read_started = True
- try:
- return self._stream.readline(*args, **kwargs)
- except IOError as e:
- six.reraise(UnreadablePostError, UnreadablePostError(*e.args), sys.exc_info()[2])
-
- def xreadlines(self):
- while True:
- buf = self.readline()
- if not buf:
- break
- yield buf
-
- __iter__ = xreadlines
-
- def readlines(self):
- return list(iter(self))
-
-
-class QueryDict(MultiValueDict):
- """
- A specialized MultiValueDict that takes a query string when initialized.
- This is immutable unless you create a copy of it.
-
- Values retrieved from this class are converted from the given encoding
- (DEFAULT_CHARSET by default) to unicode.
- """
- # These are both reset in __init__, but is specified here at the class
- # level so that unpickling will have valid values
- _mutable = True
- _encoding = None
-
- def __init__(self, query_string, mutable=False, encoding=None):
- super(QueryDict, self).__init__()
- if not encoding:
- encoding = settings.DEFAULT_CHARSET
- self.encoding = encoding
- if six.PY3:
- if isinstance(query_string, bytes):
- # query_string contains URL-encoded data, a subset of ASCII.
- query_string = query_string.decode()
- for key, value in parse_qsl(query_string or '',
- keep_blank_values=True,
- encoding=encoding):
- self.appendlist(key, value)
- else:
- for key, value in parse_qsl(query_string or '',
- keep_blank_values=True):
- self.appendlist(force_text(key, encoding, errors='replace'),
- force_text(value, encoding, errors='replace'))
- self._mutable = mutable
-
- @property
- def encoding(self):
- if self._encoding is None:
- self._encoding = settings.DEFAULT_CHARSET
- return self._encoding
-
- @encoding.setter
- def encoding(self, value):
- self._encoding = value
-
- def _assert_mutable(self):
- if not self._mutable:
- raise AttributeError("This QueryDict instance is immutable")
-
- def __setitem__(self, key, value):
- self._assert_mutable()
- key = bytes_to_text(key, self.encoding)
- value = bytes_to_text(value, self.encoding)
- super(QueryDict, self).__setitem__(key, value)
-
- def __delitem__(self, key):
- self._assert_mutable()
- super(QueryDict, self).__delitem__(key)
-
- def __copy__(self):
- result = self.__class__('', mutable=True, encoding=self.encoding)
- for key, value in six.iterlists(self):
- result.setlist(key, value)
- return result
-
- def __deepcopy__(self, memo):
- result = self.__class__('', mutable=True, encoding=self.encoding)
- memo[id(self)] = result
- for key, value in six.iterlists(self):
- result.setlist(copy.deepcopy(key, memo), copy.deepcopy(value, memo))
- return result
-
- def setlist(self, key, list_):
- self._assert_mutable()
- key = bytes_to_text(key, self.encoding)
- list_ = [bytes_to_text(elt, self.encoding) for elt in list_]
- super(QueryDict, self).setlist(key, list_)
-
- def setlistdefault(self, key, default_list=None):
- self._assert_mutable()
- return super(QueryDict, self).setlistdefault(key, default_list)
-
- def appendlist(self, key, value):
- self._assert_mutable()
- key = bytes_to_text(key, self.encoding)
- value = bytes_to_text(value, self.encoding)
- super(QueryDict, self).appendlist(key, value)
-
- def pop(self, key, *args):
- self._assert_mutable()
- return super(QueryDict, self).pop(key, *args)
-
- def popitem(self):
- self._assert_mutable()
- return super(QueryDict, self).popitem()
-
- def clear(self):
- self._assert_mutable()
- super(QueryDict, self).clear()
-
- def setdefault(self, key, default=None):
- self._assert_mutable()
- key = bytes_to_text(key, self.encoding)
- default = bytes_to_text(default, self.encoding)
- return super(QueryDict, self).setdefault(key, default)
-
- def copy(self):
- """Returns a mutable copy of this object."""
- return self.__deepcopy__({})
-
- def urlencode(self, safe=None):
- """
- Returns an encoded string of all query string arguments.
-
- :arg safe: Used to specify characters which do not require quoting, for
- example::
-
- >>> q = QueryDict('', mutable=True)
- >>> q['next'] = '/a&b/'
- >>> q.urlencode()
- 'next=%2Fa%26b%2F'
- >>> q.urlencode(safe='/')
- 'next=/a%26b/'
-
- """
- output = []
- if safe:
- safe = force_bytes(safe, self.encoding)
- encode = lambda k, v: '%s=%s' % ((quote(k, safe), quote(v, safe)))
- else:
- encode = lambda k, v: urlencode({k: v})
- for k, list_ in self.lists():
- k = force_bytes(k, self.encoding)
- output.extend([encode(k, force_bytes(v, self.encoding))
- for v in list_])
- return '&'.join(output)
-
-
-def build_request_repr(request, path_override=None, GET_override=None,
- POST_override=None, COOKIES_override=None,
- META_override=None):
- """
- Builds and returns the request's representation string. The request's
- attributes may be overridden by pre-processed values.
- """
- # Since this is called as part of error handling, we need to be very
- # robust against potentially malformed input.
- try:
- get = (pformat(GET_override)
- if GET_override is not None
- else pformat(request.GET))
- except Exception:
- get = '<could not parse>'
- if request._post_parse_error:
- post = '<could not parse>'
- else:
- try:
- post = (pformat(POST_override)
- if POST_override is not None
- else pformat(request.POST))
- except Exception:
- post = '<could not parse>'
- try:
- cookies = (pformat(COOKIES_override)
- if COOKIES_override is not None
- else pformat(request.COOKIES))
- except Exception:
- cookies = '<could not parse>'
- try:
- meta = (pformat(META_override)
- if META_override is not None
- else pformat(request.META))
- except Exception:
- meta = '<could not parse>'
- path = path_override if path_override is not None else request.path
- return force_str('<%s\npath:%s,\nGET:%s,\nPOST:%s,\nCOOKIES:%s,\nMETA:%s>' %
- (request.__class__.__name__,
- path,
- six.text_type(get),
- six.text_type(post),
- six.text_type(cookies),
- six.text_type(meta)))
-
-
-# It's neither necessary nor appropriate to use
-# django.utils.encoding.smart_text for parsing URLs and form inputs. Thus,
-# this slightly more restricted function, used by QueryDict.
-def bytes_to_text(s, encoding):
- """
- Converts basestring objects to unicode, using the given encoding. Illegally
- encoded input characters are replaced with Unicode "unknown" codepoint
- (\ufffd).
-
- Returns any non-basestring objects without change.
- """
- if isinstance(s, bytes):
- return six.text_type(s, encoding, 'replace')
- else:
- return s
-
-
-def split_domain_port(host):
- """
- Return a (domain, port) tuple from a given host.
-
- Returned domain is lower-cased. If the host is invalid, the domain will be
- empty.
- """
- host = host.lower()
-
- if not host_validation_re.match(host):
- return '', ''
-
- if host[-1] == ']':
- # It's an IPv6 address without a port.
- return host, ''
- bits = host.rsplit(':', 1)
- if len(bits) == 2:
- return tuple(bits)
- return bits[0], ''
-
-
-def validate_host(host, allowed_hosts):
- """
- Validate the given host for this site.
-
- Check that the host looks valid and matches a host or host pattern in the
- given list of ``allowed_hosts``. Any pattern beginning with a period
- matches a domain and all its subdomains (e.g. ``.example.com`` matches
- ``example.com`` and any subdomain), ``*`` matches anything, and anything
- else must match exactly.
-
- Note: This function assumes that the given host is lower-cased and has
- already had the port, if any, stripped off.
-
- Return ``True`` for a valid host, ``False`` otherwise.
-
- """
- for pattern in allowed_hosts:
- pattern = pattern.lower()
- match = (
- pattern == '*' or
- pattern.startswith('.') and (
- host.endswith(pattern) or host == pattern[1:]
- ) or
- pattern == host
- )
- if match:
- return True
-
- return False
diff --git a/lib/python2.7/site-packages/django/http/response.py b/lib/python2.7/site-packages/django/http/response.py
deleted file mode 100644
index 60739ab..0000000
--- a/lib/python2.7/site-packages/django/http/response.py
+++ /dev/null
@@ -1,518 +0,0 @@
-from __future__ import absolute_import, unicode_literals
-
-import datetime
-import time
-import warnings
-from email.header import Header
-
-from django.conf import settings
-from django.core import signals
-from django.core import signing
-from django.core.exceptions import DisallowedRedirect
-from django.http.cookie import SimpleCookie
-from django.utils import six, timezone
-from django.utils.encoding import force_bytes, force_text, iri_to_uri
-from django.utils.http import cookie_date
-from django.utils.six.moves import map
-from django.utils.six.moves.urllib.parse import urlparse
-
-
-# See http://www.iana.org/assignments/http-status-codes
-REASON_PHRASES = {
- 100: 'CONTINUE',
- 101: 'SWITCHING PROTOCOLS',
- 102: 'PROCESSING',
- 200: 'OK',
- 201: 'CREATED',
- 202: 'ACCEPTED',
- 203: 'NON-AUTHORITATIVE INFORMATION',
- 204: 'NO CONTENT',
- 205: 'RESET CONTENT',
- 206: 'PARTIAL CONTENT',
- 207: 'MULTI-STATUS',
- 208: 'ALREADY REPORTED',
- 226: 'IM USED',
- 300: 'MULTIPLE CHOICES',
- 301: 'MOVED PERMANENTLY',
- 302: 'FOUND',
- 303: 'SEE OTHER',
- 304: 'NOT MODIFIED',
- 305: 'USE PROXY',
- 306: 'RESERVED',
- 307: 'TEMPORARY REDIRECT',
- 400: 'BAD REQUEST',
- 401: 'UNAUTHORIZED',
- 402: 'PAYMENT REQUIRED',
- 403: 'FORBIDDEN',
- 404: 'NOT FOUND',
- 405: 'METHOD NOT ALLOWED',
- 406: 'NOT ACCEPTABLE',
- 407: 'PROXY AUTHENTICATION REQUIRED',
- 408: 'REQUEST TIMEOUT',
- 409: 'CONFLICT',
- 410: 'GONE',
- 411: 'LENGTH REQUIRED',
- 412: 'PRECONDITION FAILED',
- 413: 'REQUEST ENTITY TOO LARGE',
- 414: 'REQUEST-URI TOO LONG',
- 415: 'UNSUPPORTED MEDIA TYPE',
- 416: 'REQUESTED RANGE NOT SATISFIABLE',
- 417: 'EXPECTATION FAILED',
- 418: "I'M A TEAPOT",
- 422: 'UNPROCESSABLE ENTITY',
- 423: 'LOCKED',
- 424: 'FAILED DEPENDENCY',
- 426: 'UPGRADE REQUIRED',
- 428: 'PRECONDITION REQUIRED',
- 429: 'TOO MANY REQUESTS',
- 431: 'REQUEST HEADER FIELDS TOO LARGE',
- 500: 'INTERNAL SERVER ERROR',
- 501: 'NOT IMPLEMENTED',
- 502: 'BAD GATEWAY',
- 503: 'SERVICE UNAVAILABLE',
- 504: 'GATEWAY TIMEOUT',
- 505: 'HTTP VERSION NOT SUPPORTED',
- 506: 'VARIANT ALSO NEGOTIATES',
- 507: 'INSUFFICIENT STORAGE',
- 508: 'LOOP DETECTED',
- 510: 'NOT EXTENDED',
- 511: 'NETWORK AUTHENTICATION REQUIRED',
-}
-
-
-class BadHeaderError(ValueError):
- pass
-
-
-class HttpResponseBase(six.Iterator):
- """
- An HTTP response base class with dictionary-accessed headers.
-
- This class doesn't handle content. It should not be used directly.
- Use the HttpResponse and StreamingHttpResponse subclasses instead.
- """
-
- status_code = 200
- reason_phrase = None # Use default reason phrase for status code.
-
- def __init__(self, content_type=None, status=None, reason=None, mimetype=None):
- # _headers is a mapping of the lower-case name to the original case of
- # the header (required for working with legacy systems) and the header
- # value. Both the name of the header and its value are ASCII strings.
- self._headers = {}
- self._charset = settings.DEFAULT_CHARSET
- self._closable_objects = []
- # This parameter is set by the handler. It's necessary to preserve the
- # historical behavior of request_finished.
- self._handler_class = None
- if mimetype:
- warnings.warn("Using mimetype keyword argument is deprecated, use"
- " content_type instead",
- DeprecationWarning, stacklevel=2)
- content_type = mimetype
- if not content_type:
- content_type = "%s; charset=%s" % (settings.DEFAULT_CONTENT_TYPE,
- self._charset)
- self.cookies = SimpleCookie()
- if status is not None:
- self.status_code = status
- if reason is not None:
- self.reason_phrase = reason
- elif self.reason_phrase is None:
- self.reason_phrase = REASON_PHRASES.get(self.status_code,
- 'UNKNOWN STATUS CODE')
- self['Content-Type'] = content_type
-
- def serialize_headers(self):
- """HTTP headers as a bytestring."""
- def to_bytes(val, encoding):
- return val if isinstance(val, bytes) else val.encode(encoding)
-
- headers = [
- (b': '.join([to_bytes(key, 'ascii'), to_bytes(value, 'latin-1')]))
- for key, value in self._headers.values()
- ]
- return b'\r\n'.join(headers)
-
- if six.PY3:
- __bytes__ = serialize_headers
- else:
- __str__ = serialize_headers
-
- def _convert_to_charset(self, value, charset, mime_encode=False):
- """Converts headers key/value to ascii/latin-1 native strings.
-
- `charset` must be 'ascii' or 'latin-1'. If `mime_encode` is True and
- `value` value can't be represented in the given charset, MIME-encoding
- is applied.
- """
- if not isinstance(value, (bytes, six.text_type)):
- value = str(value)
- try:
- if six.PY3:
- if isinstance(value, str):
- # Ensure string is valid in given charset
- value.encode(charset)
- else:
- # Convert bytestring using given charset
- value = value.decode(charset)
- else:
- if isinstance(value, str):
- # Ensure string is valid in given charset
- value.decode(charset)
- else:
- # Convert unicode string to given charset
- value = value.encode(charset)
- except UnicodeError as e:
- if mime_encode:
- # Wrapping in str() is a workaround for #12422 under Python 2.
- value = str(Header(value, 'utf-8').encode())
- else:
- e.reason += ', HTTP response headers must be in %s format' % charset
- raise
- if str('\n') in value or str('\r') in value:
- raise BadHeaderError("Header values can't contain newlines (got %r)" % value)
- return value
-
- def __setitem__(self, header, value):
- header = self._convert_to_charset(header, 'ascii')
- value = self._convert_to_charset(value, 'latin-1', mime_encode=True)
- self._headers[header.lower()] = (header, value)
-
- def __delitem__(self, header):
- try:
- del self._headers[header.lower()]
- except KeyError:
- pass
-
- def __getitem__(self, header):
- return self._headers[header.lower()][1]
-
- def __getstate__(self):
- # SimpleCookie is not pickeable with pickle.HIGHEST_PROTOCOL, so we
- # serialise to a string instead
- state = self.__dict__.copy()
- state['cookies'] = str(state['cookies'])
- return state
-
- def __setstate__(self, state):
- self.__dict__.update(state)
- self.cookies = SimpleCookie(self.cookies)
-
- def has_header(self, header):
- """Case-insensitive check for a header."""
- return header.lower() in self._headers
-
- __contains__ = has_header
-
- def items(self):
- return self._headers.values()
-
- def get(self, header, alternate=None):
- return self._headers.get(header.lower(), (None, alternate))[1]
-
- def set_cookie(self, key, value='', max_age=None, expires=None, path='/',
- domain=None, secure=False, httponly=False):
- """
- Sets a cookie.
-
- ``expires`` can be:
- - a string in the correct format,
- - a naive ``datetime.datetime`` object in UTC,
- - an aware ``datetime.datetime`` object in any time zone.
- If it is a ``datetime.datetime`` object then ``max_age`` will be calculated.
-
- """
- self.cookies[key] = value
- if expires is not None:
- if isinstance(expires, datetime.datetime):
- if timezone.is_aware(expires):
- expires = timezone.make_naive(expires, timezone.utc)
- delta = expires - expires.utcnow()
- # Add one second so the date matches exactly (a fraction of
- # time gets lost between converting to a timedelta and
- # then the date string).
- delta = delta + datetime.timedelta(seconds=1)
- # Just set max_age - the max_age logic will set expires.
- expires = None
- max_age = max(0, delta.days * 86400 + delta.seconds)
- else:
- self.cookies[key]['expires'] = expires
- if max_age is not None:
- self.cookies[key]['max-age'] = max_age
- # IE requires expires, so set it if hasn't been already.
- if not expires:
- self.cookies[key]['expires'] = cookie_date(time.time() +
- max_age)
- if path is not None:
- self.cookies[key]['path'] = path
- if domain is not None:
- self.cookies[key]['domain'] = domain
- if secure:
- self.cookies[key]['secure'] = True
- if httponly:
- self.cookies[key]['httponly'] = True
-
- def set_signed_cookie(self, key, value, salt='', **kwargs):
- value = signing.get_cookie_signer(salt=key + salt).sign(value)
- return self.set_cookie(key, value, **kwargs)
-
- def delete_cookie(self, key, path='/', domain=None):
- self.set_cookie(key, max_age=0, path=path, domain=domain,
- expires='Thu, 01-Jan-1970 00:00:00 GMT')
-
- # Common methods used by subclasses
-
- def make_bytes(self, value):
- """Turn a value into a bytestring encoded in the output charset."""
- # Per PEP 3333, this response body must be bytes. To avoid returning
- # an instance of a subclass, this function returns `bytes(value)`.
- # This doesn't make a copy when `value` already contains bytes.
-
- # If content is already encoded (eg. gzip), assume bytes.
- if self.has_header('Content-Encoding'):
- return bytes(value)
-
- # Handle string types -- we can't rely on force_bytes here because:
- # - under Python 3 it attemps str conversion first
- # - when self._charset != 'utf-8' it re-encodes the content
- if isinstance(value, bytes):
- return bytes(value)
- if isinstance(value, six.text_type):
- return bytes(value.encode(self._charset))
-
- # Handle non-string types (#16494)
- return force_bytes(value, self._charset)
-
- def __iter__(self):
- return self
-
- def __next__(self):
- # Subclasses must define self._iterator for this function.
- return self.make_bytes(next(self._iterator))
-
- # These methods partially implement the file-like object interface.
- # See http://docs.python.org/lib/bltin-file-objects.html
-
- # The WSGI server must call this method upon completion of the request.
- # See http://blog.dscpl.com.au/2012/10/obligations-for-calling-close-on.html
- def close(self):
- for closable in self._closable_objects:
- try:
- closable.close()
- except Exception:
- pass
- signals.request_finished.send(sender=self._handler_class)
-
- def write(self, content):
- raise Exception("This %s instance is not writable" % self.__class__.__name__)
-
- def flush(self):
- pass
-
- def tell(self):
- raise Exception("This %s instance cannot tell its position" % self.__class__.__name__)
-
-
-class HttpResponse(HttpResponseBase):
- """
- An HTTP response class with a string as content.
-
- This content that can be read, appended to or replaced.
- """
-
- streaming = False
-
- def __init__(self, content=b'', *args, **kwargs):
- super(HttpResponse, self).__init__(*args, **kwargs)
- # Content is a bytestring. See the `content` property methods.
- self.content = content
-
- def serialize(self):
- """Full HTTP message, including headers, as a bytestring."""
- return self.serialize_headers() + b'\r\n\r\n' + self.content
-
- if six.PY3:
- __bytes__ = serialize
- else:
- __str__ = serialize
-
- def _consume_content(self):
- # If the response was instantiated with an iterator, when its content
- # is accessed, the iterator is going be exhausted and the content
- # loaded in memory. At this point, it's better to abandon the original
- # iterator and save the content for later reuse. This is a temporary
- # solution. See the comment in __iter__ below for the long term plan.
- if self._base_content_is_iter:
- self.content = b''.join(self.make_bytes(e) for e in self._container)
-
- @property
- def content(self):
- self._consume_content()
- return b''.join(self.make_bytes(e) for e in self._container)
-
- @content.setter
- def content(self, value):
- if hasattr(value, '__iter__') and not isinstance(value, (bytes, six.string_types)):
- self._container = value
- self._base_content_is_iter = True
- if hasattr(value, 'close'):
- self._closable_objects.append(value)
- else:
- self._container = [value]
- self._base_content_is_iter = False
-
- def __iter__(self):
- # Raise a deprecation warning only if the content wasn't consumed yet,
- # because the response may be intended to be streamed.
- # Once the deprecation completes, iterators should be consumed upon
- # assignment rather than upon access. The _consume_content method
- # should be removed. See #6527.
- if self._base_content_is_iter:
- warnings.warn(
- 'Creating streaming responses with `HttpResponse` is '
- 'deprecated. Use `StreamingHttpResponse` instead '
- 'if you need the streaming behavior.',
- DeprecationWarning, stacklevel=2)
- if not hasattr(self, '_iterator'):
- self._iterator = iter(self._container)
- return self
-
- def write(self, content):
- self._consume_content()
- self._container.append(content)
-
- def tell(self):
- self._consume_content()
- return len(self.content)
-
-
-class StreamingHttpResponse(HttpResponseBase):
- """
- A streaming HTTP response class with an iterator as content.
-
- This should only be iterated once, when the response is streamed to the
- client. However, it can be appended to or replaced with a new iterator
- that wraps the original content (or yields entirely new content).
- """
-
- streaming = True
-
- def __init__(self, streaming_content=(), *args, **kwargs):
- super(StreamingHttpResponse, self).__init__(*args, **kwargs)
- # `streaming_content` should be an iterable of bytestrings.
- # See the `streaming_content` property methods.
- self.streaming_content = streaming_content
-
- @property
- def content(self):
- raise AttributeError("This %s instance has no `content` attribute. "
- "Use `streaming_content` instead." % self.__class__.__name__)
-
- @property
- def streaming_content(self):
- return map(self.make_bytes, self._iterator)
-
- @streaming_content.setter
- def streaming_content(self, value):
- # Ensure we can never iterate on "value" more than once.
- self._iterator = iter(value)
- if hasattr(value, 'close'):
- self._closable_objects.append(value)
-
-
-class CompatibleStreamingHttpResponse(StreamingHttpResponse):
- """
- This class maintains compatibility with middleware that doesn't know how
- to handle the content of a streaming response by exposing a `content`
- attribute that will consume and cache the content iterator when accessed.
-
- These responses will stream only if no middleware attempts to access the
- `content` attribute. Otherwise, they will behave like a regular response,
- and raise a `DeprecationWarning`.
- """
- @property
- def content(self):
- warnings.warn(
- 'Accessing the `content` attribute on a streaming response is '
- 'deprecated. Use the `streaming_content` attribute instead.',
- DeprecationWarning, stacklevel=2)
- content = b''.join(self)
- self.streaming_content = [content]
- return content
-
- @content.setter
- def content(self, content):
- warnings.warn(
- 'Accessing the `content` attribute on a streaming response is '
- 'deprecated. Use the `streaming_content` attribute instead.',
- DeprecationWarning, stacklevel=2)
- self.streaming_content = [content]
-
-
-class HttpResponseRedirectBase(HttpResponse):
- allowed_schemes = ['http', 'https', 'ftp']
-
- def __init__(self, redirect_to, *args, **kwargs):
- parsed = urlparse(force_text(redirect_to))
- if parsed.scheme and parsed.scheme not in self.allowed_schemes:
- raise DisallowedRedirect("Unsafe redirect to URL with protocol '%s'" % parsed.scheme)
- super(HttpResponseRedirectBase, self).__init__(*args, **kwargs)
- self['Location'] = iri_to_uri(redirect_to)
-
- url = property(lambda self: self['Location'])
-
-
-class HttpResponseRedirect(HttpResponseRedirectBase):
- status_code = 302
-
-
-class HttpResponsePermanentRedirect(HttpResponseRedirectBase):
- status_code = 301
-
-
-class HttpResponseNotModified(HttpResponse):
- status_code = 304
-
- def __init__(self, *args, **kwargs):
- super(HttpResponseNotModified, self).__init__(*args, **kwargs)
- del self['content-type']
-
- @HttpResponse.content.setter
- def content(self, value):
- if value:
- raise AttributeError("You cannot set content to a 304 (Not Modified) response")
- self._container = []
- self._base_content_is_iter = False
-
-
-class HttpResponseBadRequest(HttpResponse):
- status_code = 400
-
-
-class HttpResponseNotFound(HttpResponse):
- status_code = 404
-
-
-class HttpResponseForbidden(HttpResponse):
- status_code = 403
-
-
-class HttpResponseNotAllowed(HttpResponse):
- status_code = 405
-
- def __init__(self, permitted_methods, *args, **kwargs):
- super(HttpResponseNotAllowed, self).__init__(*args, **kwargs)
- self['Allow'] = ', '.join(permitted_methods)
-
-
-class HttpResponseGone(HttpResponse):
- status_code = 410
-
-
-class HttpResponseServerError(HttpResponse):
- status_code = 500
-
-
-class Http404(Exception):
- pass
diff --git a/lib/python2.7/site-packages/django/http/utils.py b/lib/python2.7/site-packages/django/http/utils.py
deleted file mode 100644
index e13dc4c..0000000
--- a/lib/python2.7/site-packages/django/http/utils.py
+++ /dev/null
@@ -1,96 +0,0 @@
-"""
-Functions that modify an HTTP request or response in some way.
-"""
-
-# This group of functions are run as part of the response handling, after
-# everything else, including all response middleware. Think of them as
-# "compulsory response middleware". Be careful about what goes here, because
-# it's a little fiddly to override this behavior, so they should be truly
-# universally applicable.
-
-
-def fix_location_header(request, response):
- """
- Ensures that we always use an absolute URI in any location header in the
- response. This is required by RFC 2616, section 14.30.
-
- Code constructing response objects is free to insert relative paths, as
- this function converts them to absolute paths.
- """
- if 'Location' in response and request.get_host():
- response['Location'] = request.build_absolute_uri(response['Location'])
- return response
-
-
-def conditional_content_removal(request, response):
- """
- Removes the content of responses for HEAD requests, 1xx, 204 and 304
- responses. Ensures compliance with RFC 2616, section 4.3.
- """
- if 100 <= response.status_code < 200 or response.status_code in (204, 304):
- if response.streaming:
- response.streaming_content = []
- else:
- response.content = b''
- response['Content-Length'] = '0'
- if request.method == 'HEAD':
- if response.streaming:
- response.streaming_content = []
- else:
- response.content = b''
- return response
-
-
-def fix_IE_for_attach(request, response):
- """
- This function will prevent Django from serving a Content-Disposition header
- while expecting the browser to cache it (only when the browser is IE). This
- leads to IE not allowing the client to download.
- """
- useragent = request.META.get('HTTP_USER_AGENT', '').upper()
- if 'MSIE' not in useragent and 'CHROMEFRAME' not in useragent:
- return response
-
- offending_headers = ('no-cache', 'no-store')
- if response.has_header('Content-Disposition'):
- try:
- del response['Pragma']
- except KeyError:
- pass
- if response.has_header('Cache-Control'):
- cache_control_values = [value.strip() for value in
- response['Cache-Control'].split(',')
- if value.strip().lower() not in offending_headers]
-
- if not len(cache_control_values):
- del response['Cache-Control']
- else:
- response['Cache-Control'] = ', '.join(cache_control_values)
-
- return response
-
-
-def fix_IE_for_vary(request, response):
- """
- This function will fix the bug reported at
- http://support.microsoft.com/kb/824847/en-us?spid=8722&sid=global
- by clearing the Vary header whenever the mime-type is not safe
- enough for Internet Explorer to handle. Poor thing.
- """
- useragent = request.META.get('HTTP_USER_AGENT', '').upper()
- if 'MSIE' not in useragent and 'CHROMEFRAME' not in useragent:
- return response
-
- # These mime-types that are decreed "Vary-safe" for IE:
- safe_mime_types = ('text/html', 'text/plain', 'text/sgml')
-
- # The first part of the Content-Type field will be the MIME type,
- # everything after ';', such as character-set, can be ignored.
- mime_type = response.get('Content-Type', '').partition(';')[0]
- if mime_type not in safe_mime_types:
- try:
- del response['Vary']
- except KeyError:
- pass
-
- return response
diff --git a/lib/python2.7/site-packages/django/middleware/__init__.py b/lib/python2.7/site-packages/django/middleware/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/middleware/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/middleware/cache.py b/lib/python2.7/site-packages/django/middleware/cache.py
deleted file mode 100644
index 7bbc167..0000000
--- a/lib/python2.7/site-packages/django/middleware/cache.py
+++ /dev/null
@@ -1,213 +0,0 @@
-"""
-Cache middleware. If enabled, each Django-powered page will be cached based on
-URL. The canonical way to enable cache middleware is to set
-``UpdateCacheMiddleware`` as your first piece of middleware, and
-``FetchFromCacheMiddleware`` as the last::
-
- MIDDLEWARE_CLASSES = [
- 'django.middleware.cache.UpdateCacheMiddleware',
- ...
- 'django.middleware.cache.FetchFromCacheMiddleware'
- ]
-
-This is counter-intuitive, but correct: ``UpdateCacheMiddleware`` needs to run
-last during the response phase, which processes middleware bottom-up;
-``FetchFromCacheMiddleware`` needs to run last during the request phase, which
-processes middleware top-down.
-
-The single-class ``CacheMiddleware`` can be used for some simple sites.
-However, if any other piece of middleware needs to affect the cache key, you'll
-need to use the two-part ``UpdateCacheMiddleware`` and
-``FetchFromCacheMiddleware``. This'll most often happen when you're using
-Django's ``LocaleMiddleware``.
-
-More details about how the caching works:
-
-* Only GET or HEAD-requests with status code 200 are cached.
-
-* The number of seconds each page is stored for is set by the "max-age" section
- of the response's "Cache-Control" header, falling back to the
- CACHE_MIDDLEWARE_SECONDS setting if the section was not found.
-
-* This middleware expects that a HEAD request is answered with the same response
- headers exactly like the corresponding GET request.
-
-* When a hit occurs, a shallow copy of the original response object is returned
- from process_request.
-
-* Pages will be cached based on the contents of the request headers listed in
- the response's "Vary" header.
-
-* This middleware also sets ETag, Last-Modified, Expires and Cache-Control
- headers on the response object.
-
-"""
-
-import warnings
-
-from django.conf import settings
-from django.core.cache import get_cache, DEFAULT_CACHE_ALIAS
-from django.utils.cache import (get_cache_key, get_max_age, has_vary_header,
- learn_cache_key, patch_response_headers)
-
-
-class UpdateCacheMiddleware(object):
- """
- Response-phase cache middleware that updates the cache if the response is
- cacheable.
-
- Must be used as part of the two-part update/fetch cache middleware.
- UpdateCacheMiddleware must be the first piece of middleware in
- MIDDLEWARE_CLASSES so that it'll get called last during the response phase.
- """
- def __init__(self):
- self.cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
- self.key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
- self.cache_anonymous_only = getattr(settings, 'CACHE_MIDDLEWARE_ANONYMOUS_ONLY', False)
- self.cache_alias = settings.CACHE_MIDDLEWARE_ALIAS
- self.cache = get_cache(self.cache_alias)
-
- def _session_accessed(self, request):
- try:
- return request.session.accessed
- except AttributeError:
- return False
-
- def _should_update_cache(self, request, response):
- if not hasattr(request, '_cache_update_cache') or not request._cache_update_cache:
- return False
- # If the session has not been accessed otherwise, we don't want to
- # cause it to be accessed here. If it hasn't been accessed, then the
- # user's logged-in status has not affected the response anyway.
- if self.cache_anonymous_only and self._session_accessed(request):
- assert hasattr(request, 'user'), "The Django cache middleware with CACHE_MIDDLEWARE_ANONYMOUS_ONLY=True requires authentication middleware to be installed. Edit your MIDDLEWARE_CLASSES setting to insert 'django.contrib.auth.middleware.AuthenticationMiddleware' before the CacheMiddleware."
- if request.user.is_authenticated():
- # Don't cache user-variable requests from authenticated users.
- return False
- return True
-
- def process_response(self, request, response):
- """Sets the cache, if needed."""
- if not self._should_update_cache(request, response):
- # We don't need to update the cache, just return.
- return response
-
- if response.streaming or response.status_code != 200:
- return response
-
- # Don't cache responses that set a user-specific (and maybe security
- # sensitive) cookie in response to a cookie-less request.
- if not request.COOKIES and response.cookies and has_vary_header(response, 'Cookie'):
- return response
-
- # Try to get the timeout from the "max-age" section of the "Cache-
- # Control" header before reverting to using the default cache_timeout
- # length.
- timeout = get_max_age(response)
- if timeout == None:
- timeout = self.cache_timeout
- elif timeout == 0:
- # max-age was set to 0, don't bother caching.
- return response
- patch_response_headers(response, timeout)
- if timeout:
- cache_key = learn_cache_key(request, response, timeout, self.key_prefix, cache=self.cache)
- if hasattr(response, 'render') and callable(response.render):
- response.add_post_render_callback(
- lambda r: self.cache.set(cache_key, r, timeout)
- )
- else:
- self.cache.set(cache_key, response, timeout)
- return response
-
-class FetchFromCacheMiddleware(object):
- """
- Request-phase cache middleware that fetches a page from the cache.
-
- Must be used as part of the two-part update/fetch cache middleware.
- FetchFromCacheMiddleware must be the last piece of middleware in
- MIDDLEWARE_CLASSES so that it'll get called last during the request phase.
- """
- def __init__(self):
- self.cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
- self.key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
- self.cache_alias = settings.CACHE_MIDDLEWARE_ALIAS
- self.cache = get_cache(self.cache_alias)
-
- def process_request(self, request):
- """
- Checks whether the page is already cached and returns the cached
- version if available.
- """
- if not request.method in ('GET', 'HEAD'):
- request._cache_update_cache = False
- return None # Don't bother checking the cache.
-
- # try and get the cached GET response
- cache_key = get_cache_key(request, self.key_prefix, 'GET', cache=self.cache)
- if cache_key is None:
- request._cache_update_cache = True
- return None # No cache information available, need to rebuild.
- response = self.cache.get(cache_key, None)
- # if it wasn't found and we are looking for a HEAD, try looking just for that
- if response is None and request.method == 'HEAD':
- cache_key = get_cache_key(request, self.key_prefix, 'HEAD', cache=self.cache)
- response = self.cache.get(cache_key, None)
-
- if response is None:
- request._cache_update_cache = True
- return None # No cache information available, need to rebuild.
-
- # hit, return cached response
- request._cache_update_cache = False
- return response
-
-class CacheMiddleware(UpdateCacheMiddleware, FetchFromCacheMiddleware):
- """
- Cache middleware that provides basic behavior for many simple sites.
-
- Also used as the hook point for the cache decorator, which is generated
- using the decorator-from-middleware utility.
- """
- def __init__(self, cache_timeout=None, cache_anonymous_only=None, **kwargs):
- # We need to differentiate between "provided, but using default value",
- # and "not provided". If the value is provided using a default, then
- # we fall back to system defaults. If it is not provided at all,
- # we need to use middleware defaults.
-
- cache_kwargs = {}
-
- try:
- self.key_prefix = kwargs['key_prefix']
- if self.key_prefix is not None:
- cache_kwargs['KEY_PREFIX'] = self.key_prefix
- else:
- self.key_prefix = ''
- except KeyError:
- self.key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
- cache_kwargs['KEY_PREFIX'] = self.key_prefix
-
- try:
- self.cache_alias = kwargs['cache_alias']
- if self.cache_alias is None:
- self.cache_alias = DEFAULT_CACHE_ALIAS
- if cache_timeout is not None:
- cache_kwargs['TIMEOUT'] = cache_timeout
- except KeyError:
- self.cache_alias = settings.CACHE_MIDDLEWARE_ALIAS
- if cache_timeout is None:
- cache_kwargs['TIMEOUT'] = settings.CACHE_MIDDLEWARE_SECONDS
- else:
- cache_kwargs['TIMEOUT'] = cache_timeout
-
- if cache_anonymous_only is None:
- self.cache_anonymous_only = getattr(settings, 'CACHE_MIDDLEWARE_ANONYMOUS_ONLY', False)
- else:
- self.cache_anonymous_only = cache_anonymous_only
-
- if self.cache_anonymous_only:
- msg = "CACHE_MIDDLEWARE_ANONYMOUS_ONLY has been deprecated and will be removed in Django 1.8."
- warnings.warn(msg, PendingDeprecationWarning, stacklevel=1)
-
- self.cache = get_cache(self.cache_alias, **cache_kwargs)
- self.cache_timeout = self.cache.default_timeout
diff --git a/lib/python2.7/site-packages/django/middleware/clickjacking.py b/lib/python2.7/site-packages/django/middleware/clickjacking.py
deleted file mode 100644
index 81763ef..0000000
--- a/lib/python2.7/site-packages/django/middleware/clickjacking.py
+++ /dev/null
@@ -1,51 +0,0 @@
-"""
-Clickjacking Protection Middleware.
-
-This module provides a middleware that implements protection against a
-malicious site loading resources from your site in a hidden frame.
-"""
-
-from django.conf import settings
-
-class XFrameOptionsMiddleware(object):
- """
- Middleware that sets the X-Frame-Options HTTP header in HTTP responses.
-
- Does not set the header if it's already set or if the response contains
- a xframe_options_exempt value set to True.
-
- By default, sets the X-Frame-Options header to 'SAMEORIGIN', meaning the
- response can only be loaded on a frame within the same site. To prevent the
- response from being loaded in a frame in any site, set X_FRAME_OPTIONS in
- your project's Django settings to 'DENY'.
-
- Note: older browsers will quietly ignore this header, thus other
- clickjacking protection techniques should be used if protection in those
- browsers is required.
-
- http://en.wikipedia.org/wiki/Clickjacking#Server_and_client
- """
- def process_response(self, request, response):
- # Don't set it if it's already in the response
- if response.get('X-Frame-Options', None) is not None:
- return response
-
- # Don't set it if they used @xframe_options_exempt
- if getattr(response, 'xframe_options_exempt', False):
- return response
-
- response['X-Frame-Options'] = self.get_xframe_options_value(request,
- response)
- return response
-
- def get_xframe_options_value(self, request, response):
- """
- Gets the value to set for the X_FRAME_OPTIONS header.
-
- By default this uses the value from the X_FRAME_OPTIONS Django
- settings. If not found in settings, defaults to 'SAMEORIGIN'.
-
- This method can be overridden if needed, allowing it to vary based on
- the request or response.
- """
- return getattr(settings, 'X_FRAME_OPTIONS', 'SAMEORIGIN').upper()
diff --git a/lib/python2.7/site-packages/django/middleware/common.py b/lib/python2.7/site-packages/django/middleware/common.py
deleted file mode 100644
index 2c76c47..0000000
--- a/lib/python2.7/site-packages/django/middleware/common.py
+++ /dev/null
@@ -1,174 +0,0 @@
-import hashlib
-import logging
-import re
-import warnings
-
-from django.conf import settings
-from django.core.mail import mail_managers
-from django.core import urlresolvers
-from django import http
-from django.utils.encoding import force_text
-from django.utils.http import urlquote
-from django.utils import six
-
-
-logger = logging.getLogger('django.request')
-
-
-class CommonMiddleware(object):
- """
- "Common" middleware for taking care of some basic operations:
-
- - Forbids access to User-Agents in settings.DISALLOWED_USER_AGENTS
-
- - URL rewriting: Based on the APPEND_SLASH and PREPEND_WWW settings,
- this middleware appends missing slashes and/or prepends missing
- "www."s.
-
- - If APPEND_SLASH is set and the initial URL doesn't end with a
- slash, and it is not found in urlpatterns, a new URL is formed by
- appending a slash at the end. If this new URL is found in
- urlpatterns, then an HTTP-redirect is returned to this new URL;
- otherwise the initial URL is processed as usual.
-
- - ETags: If the USE_ETAGS setting is set, ETags will be calculated from
- the entire page content and Not Modified responses will be returned
- appropriately.
- """
-
- def process_request(self, request):
- """
- Check for denied User-Agents and rewrite the URL based on
- settings.APPEND_SLASH and settings.PREPEND_WWW
- """
-
- # Check for denied User-Agents
- if 'HTTP_USER_AGENT' in request.META:
- for user_agent_regex in settings.DISALLOWED_USER_AGENTS:
- if user_agent_regex.search(request.META['HTTP_USER_AGENT']):
- logger.warning('Forbidden (User agent): %s', request.path,
- extra={
- 'status_code': 403,
- 'request': request
- }
- )
- return http.HttpResponseForbidden('<h1>Forbidden</h1>')
-
- # Check for a redirect based on settings.APPEND_SLASH
- # and settings.PREPEND_WWW
- host = request.get_host()
- old_url = [host, request.path]
- new_url = old_url[:]
-
- if (settings.PREPEND_WWW and old_url[0] and
- not old_url[0].startswith('www.')):
- new_url[0] = 'www.' + old_url[0]
-
- # Append a slash if APPEND_SLASH is set and the URL doesn't have a
- # trailing slash and there is no pattern for the current path
- if settings.APPEND_SLASH and (not old_url[1].endswith('/')):
- urlconf = getattr(request, 'urlconf', None)
- if (not urlresolvers.is_valid_path(request.path_info, urlconf) and
- urlresolvers.is_valid_path("%s/" % request.path_info, urlconf)):
- new_url[1] = new_url[1] + '/'
- if settings.DEBUG and request.method == 'POST':
- raise RuntimeError((""
- "You called this URL via POST, but the URL doesn't end "
- "in a slash and you have APPEND_SLASH set. Django can't "
- "redirect to the slash URL while maintaining POST data. "
- "Change your form to point to %s%s (note the trailing "
- "slash), or set APPEND_SLASH=False in your Django "
- "settings.") % (new_url[0], new_url[1]))
-
- if new_url == old_url:
- # No redirects required.
- return
- if new_url[0]:
- newurl = "%s://%s%s" % (
- 'https' if request.is_secure() else 'http',
- new_url[0], urlquote(new_url[1]))
- else:
- newurl = urlquote(new_url[1])
- if request.META.get('QUERY_STRING', ''):
- if six.PY3:
- newurl += '?' + request.META['QUERY_STRING']
- else:
- # `query_string` is a bytestring. Appending it to the unicode
- # string `newurl` will fail if it isn't ASCII-only. This isn't
- # allowed; only broken software generates such query strings.
- # Better drop the invalid query string than crash (#15152).
- try:
- newurl += '?' + request.META['QUERY_STRING'].decode()
- except UnicodeDecodeError:
- pass
- return http.HttpResponsePermanentRedirect(newurl)
-
- def process_response(self, request, response):
- """
- Calculate the ETag, if needed.
- """
- if settings.SEND_BROKEN_LINK_EMAILS:
- warnings.warn("SEND_BROKEN_LINK_EMAILS is deprecated. "
- "Use BrokenLinkEmailsMiddleware instead.",
- PendingDeprecationWarning, stacklevel=2)
- BrokenLinkEmailsMiddleware().process_response(request, response)
-
- if settings.USE_ETAGS:
- if response.has_header('ETag'):
- etag = response['ETag']
- elif response.streaming:
- etag = None
- else:
- etag = '"%s"' % hashlib.md5(response.content).hexdigest()
- if etag is not None:
- if (200 <= response.status_code < 300
- and request.META.get('HTTP_IF_NONE_MATCH') == etag):
- cookies = response.cookies
- response = http.HttpResponseNotModified()
- response.cookies = cookies
- else:
- response['ETag'] = etag
-
- return response
-
-
-class BrokenLinkEmailsMiddleware(object):
-
- def process_response(self, request, response):
- """
- Send broken link emails for relevant 404 NOT FOUND responses.
- """
- if response.status_code == 404 and not settings.DEBUG:
- domain = request.get_host()
- path = request.get_full_path()
- referer = force_text(request.META.get('HTTP_REFERER', ''), errors='replace')
-
- if not self.is_ignorable_request(request, path, domain, referer):
- ua = request.META.get('HTTP_USER_AGENT', '<none>')
- ip = request.META.get('REMOTE_ADDR', '<none>')
- mail_managers(
- "Broken %slink on %s" % (
- ('INTERNAL ' if self.is_internal_request(domain, referer) else ''),
- domain
- ),
- "Referrer: %s\nRequested URL: %s\nUser agent: %s\n"
- "IP address: %s\n" % (referer, path, ua, ip),
- fail_silently=True)
- return response
-
- def is_internal_request(self, domain, referer):
- """
- Returns True if the referring URL is the same domain as the current request.
- """
- # Different subdomains are treated as different domains.
- return bool(re.match("^https?://%s/" % re.escape(domain), referer))
-
- def is_ignorable_request(self, request, uri, domain, referer):
- """
- Returns True if the given request *shouldn't* notify the site managers.
- """
- # '?' in referer is identified as search engine source
- if (not referer or
- (not self.is_internal_request(domain, referer) and '?' in referer)):
- return True
- return any(pattern.search(uri) for pattern in settings.IGNORABLE_404_URLS)
diff --git a/lib/python2.7/site-packages/django/middleware/csrf.py b/lib/python2.7/site-packages/django/middleware/csrf.py
deleted file mode 100644
index 1089153..0000000
--- a/lib/python2.7/site-packages/django/middleware/csrf.py
+++ /dev/null
@@ -1,208 +0,0 @@
-"""
-Cross Site Request Forgery Middleware.
-
-This module provides a middleware that implements protection
-against request forgeries from other sites.
-"""
-from __future__ import unicode_literals
-
-import logging
-import re
-
-from django.conf import settings
-from django.core.urlresolvers import get_callable
-from django.utils.cache import patch_vary_headers
-from django.utils.encoding import force_text
-from django.utils.http import same_origin
-from django.utils.crypto import constant_time_compare, get_random_string
-
-
-logger = logging.getLogger('django.request')
-
-REASON_NO_REFERER = "Referer checking failed - no Referer."
-REASON_BAD_REFERER = "Referer checking failed - %s does not match %s."
-REASON_NO_CSRF_COOKIE = "CSRF cookie not set."
-REASON_BAD_TOKEN = "CSRF token missing or incorrect."
-
-CSRF_KEY_LENGTH = 32
-
-def _get_failure_view():
- """
- Returns the view to be used for CSRF rejections
- """
- return get_callable(settings.CSRF_FAILURE_VIEW)
-
-
-def _get_new_csrf_key():
- return get_random_string(CSRF_KEY_LENGTH)
-
-
-def get_token(request):
- """
- Returns the CSRF token required for a POST form. The token is an
- alphanumeric value.
-
- A side effect of calling this function is to make the csrf_protect
- decorator and the CsrfViewMiddleware add a CSRF cookie and a 'Vary: Cookie'
- header to the outgoing response. For this reason, you may need to use this
- function lazily, as is done by the csrf context processor.
- """
- request.META["CSRF_COOKIE_USED"] = True
- return request.META.get("CSRF_COOKIE", None)
-
-
-def rotate_token(request):
- """
- Changes the CSRF token in use for a request - should be done on login
- for security purposes.
- """
- request.META.update({
- "CSRF_COOKIE_USED": True,
- "CSRF_COOKIE": _get_new_csrf_key(),
- })
-
-
-def _sanitize_token(token):
- # Allow only alphanum
- if len(token) > CSRF_KEY_LENGTH:
- return _get_new_csrf_key()
- token = re.sub('[^a-zA-Z0-9]+', '', force_text(token))
- if token == "":
- # In case the cookie has been truncated to nothing at some point.
- return _get_new_csrf_key()
- return token
-
-
-class CsrfViewMiddleware(object):
- """
- Middleware that requires a present and correct csrfmiddlewaretoken
- for POST requests that have a CSRF cookie, and sets an outgoing
- CSRF cookie.
-
- This middleware should be used in conjunction with the csrf_token template
- tag.
- """
- # The _accept and _reject methods currently only exist for the sake of the
- # requires_csrf_token decorator.
- def _accept(self, request):
- # Avoid checking the request twice by adding a custom attribute to
- # request. This will be relevant when both decorator and middleware
- # are used.
- request.csrf_processing_done = True
- return None
-
- def _reject(self, request, reason):
- logger.warning('Forbidden (%s): %s',
- reason, request.path,
- extra={
- 'status_code': 403,
- 'request': request,
- }
- )
- return _get_failure_view()(request, reason=reason)
-
- def process_view(self, request, callback, callback_args, callback_kwargs):
-
- if getattr(request, 'csrf_processing_done', False):
- return None
-
- try:
- csrf_token = _sanitize_token(
- request.COOKIES[settings.CSRF_COOKIE_NAME])
- # Use same token next time
- request.META['CSRF_COOKIE'] = csrf_token
- except KeyError:
- csrf_token = None
- # Generate token and store it in the request, so it's
- # available to the view.
- request.META["CSRF_COOKIE"] = _get_new_csrf_key()
-
- # Wait until request.META["CSRF_COOKIE"] has been manipulated before
- # bailing out, so that get_token still works
- if getattr(callback, 'csrf_exempt', False):
- return None
-
- # Assume that anything not defined as 'safe' by RFC2616 needs protection
- if request.method not in ('GET', 'HEAD', 'OPTIONS', 'TRACE'):
- if getattr(request, '_dont_enforce_csrf_checks', False):
- # Mechanism to turn off CSRF checks for test suite.
- # It comes after the creation of CSRF cookies, so that
- # everything else continues to work exactly the same
- # (e.g. cookies are sent, etc.), but before any
- # branches that call reject().
- return self._accept(request)
-
- if request.is_secure():
- # Suppose user visits http://example.com/
- # An active network attacker (man-in-the-middle, MITM) sends a
- # POST form that targets https://example.com/detonate-bomb/ and
- # submits it via JavaScript.
- #
- # The attacker will need to provide a CSRF cookie and token, but
- # that's no problem for a MITM and the session-independent
- # nonce we're using. So the MITM can circumvent the CSRF
- # protection. This is true for any HTTP connection, but anyone
- # using HTTPS expects better! For this reason, for
- # https://example.com/ we need additional protection that treats
- # http://example.com/ as completely untrusted. Under HTTPS,
- # Barth et al. found that the Referer header is missing for
- # same-domain requests in only about 0.2% of cases or less, so
- # we can use strict Referer checking.
- referer = request.META.get('HTTP_REFERER')
- if referer is None:
- return self._reject(request, REASON_NO_REFERER)
-
- # Note that request.get_host() includes the port.
- good_referer = 'https://%s/' % request.get_host()
- if not same_origin(referer, good_referer):
- reason = REASON_BAD_REFERER % (referer, good_referer)
- return self._reject(request, reason)
-
- if csrf_token is None:
- # No CSRF cookie. For POST requests, we insist on a CSRF cookie,
- # and in this way we can avoid all CSRF attacks, including login
- # CSRF.
- return self._reject(request, REASON_NO_CSRF_COOKIE)
-
- # Check non-cookie token for match.
- request_csrf_token = ""
- if request.method == "POST":
- request_csrf_token = request.POST.get('csrfmiddlewaretoken', '')
-
- if request_csrf_token == "":
- # Fall back to X-CSRFToken, to make things easier for AJAX,
- # and possible for PUT/DELETE.
- request_csrf_token = request.META.get('HTTP_X_CSRFTOKEN', '')
-
- if not constant_time_compare(request_csrf_token, csrf_token):
- return self._reject(request, REASON_BAD_TOKEN)
-
- return self._accept(request)
-
- def process_response(self, request, response):
- if getattr(response, 'csrf_processing_done', False):
- return response
-
- # If CSRF_COOKIE is unset, then CsrfViewMiddleware.process_view was
- # never called, probaby because a request middleware returned a response
- # (for example, contrib.auth redirecting to a login page).
- if request.META.get("CSRF_COOKIE") is None:
- return response
-
- if not request.META.get("CSRF_COOKIE_USED", False):
- return response
-
- # Set the CSRF cookie even if it's already set, so we renew
- # the expiry timer.
- response.set_cookie(settings.CSRF_COOKIE_NAME,
- request.META["CSRF_COOKIE"],
- max_age = 60 * 60 * 24 * 7 * 52,
- domain=settings.CSRF_COOKIE_DOMAIN,
- path=settings.CSRF_COOKIE_PATH,
- secure=settings.CSRF_COOKIE_SECURE,
- httponly=settings.CSRF_COOKIE_HTTPONLY
- )
- # Content varies with the CSRF cookie, so set the Vary header.
- patch_vary_headers(response, ('Cookie',))
- response.csrf_processing_done = True
- return response
diff --git a/lib/python2.7/site-packages/django/middleware/doc.py b/lib/python2.7/site-packages/django/middleware/doc.py
deleted file mode 100644
index 1af7b61..0000000
--- a/lib/python2.7/site-packages/django/middleware/doc.py
+++ /dev/null
@@ -1,6 +0,0 @@
-"""XViewMiddleware has been moved to django.contrib.admindocs.middleware."""
-
-import warnings
-warnings.warn(__doc__, PendingDeprecationWarning, stacklevel=2)
-
-from django.contrib.admindocs.middleware import XViewMiddleware
diff --git a/lib/python2.7/site-packages/django/middleware/gzip.py b/lib/python2.7/site-packages/django/middleware/gzip.py
deleted file mode 100644
index fb54501..0000000
--- a/lib/python2.7/site-packages/django/middleware/gzip.py
+++ /dev/null
@@ -1,52 +0,0 @@
-import re
-
-from django.utils.text import compress_sequence, compress_string
-from django.utils.cache import patch_vary_headers
-
-re_accepts_gzip = re.compile(r'\bgzip\b')
-
-class GZipMiddleware(object):
- """
- This middleware compresses content if the browser allows gzip compression.
- It sets the Vary header accordingly, so that caches will base their storage
- on the Accept-Encoding header.
- """
- def process_response(self, request, response):
- # It's not worth attempting to compress really short responses.
- if not response.streaming and len(response.content) < 200:
- return response
-
- patch_vary_headers(response, ('Accept-Encoding',))
-
- # Avoid gzipping if we've already got a content-encoding.
- if response.has_header('Content-Encoding'):
- return response
-
- # MSIE have issues with gzipped response of various content types.
- if "msie" in request.META.get('HTTP_USER_AGENT', '').lower():
- ctype = response.get('Content-Type', '').lower()
- if not ctype.startswith("text/") or "javascript" in ctype:
- return response
-
- ae = request.META.get('HTTP_ACCEPT_ENCODING', '')
- if not re_accepts_gzip.search(ae):
- return response
-
- if response.streaming:
- # Delete the `Content-Length` header for streaming content, because
- # we won't know the compressed size until we stream it.
- response.streaming_content = compress_sequence(response.streaming_content)
- del response['Content-Length']
- else:
- # Return the compressed content only if it's actually shorter.
- compressed_content = compress_string(response.content)
- if len(compressed_content) >= len(response.content):
- return response
- response.content = compressed_content
- response['Content-Length'] = str(len(response.content))
-
- if response.has_header('ETag'):
- response['ETag'] = re.sub('"$', ';gzip"', response['ETag'])
- response['Content-Encoding'] = 'gzip'
-
- return response
diff --git a/lib/python2.7/site-packages/django/middleware/http.py b/lib/python2.7/site-packages/django/middleware/http.py
deleted file mode 100644
index 5a46e04..0000000
--- a/lib/python2.7/site-packages/django/middleware/http.py
+++ /dev/null
@@ -1,35 +0,0 @@
-from django.utils.http import http_date, parse_http_date_safe
-
-class ConditionalGetMiddleware(object):
- """
- Handles conditional GET operations. If the response has a ETag or
- Last-Modified header, and the request has If-None-Match or
- If-Modified-Since, the response is replaced by an HttpNotModified.
-
- Also sets the Date and Content-Length response-headers.
- """
- def process_response(self, request, response):
- response['Date'] = http_date()
- if not response.streaming and not response.has_header('Content-Length'):
- response['Content-Length'] = str(len(response.content))
-
- if response.has_header('ETag'):
- if_none_match = request.META.get('HTTP_IF_NONE_MATCH')
- if if_none_match == response['ETag']:
- # Setting the status is enough here. The response handling path
- # automatically removes content for this status code (in
- # http.conditional_content_removal()).
- response.status_code = 304
-
- if response.has_header('Last-Modified'):
- if_modified_since = request.META.get('HTTP_IF_MODIFIED_SINCE')
- if if_modified_since is not None:
- if_modified_since = parse_http_date_safe(if_modified_since)
- if if_modified_since is not None:
- last_modified = parse_http_date_safe(response['Last-Modified'])
- if last_modified is not None and last_modified <= if_modified_since:
- # Setting the status code is enough here (same reasons as
- # above).
- response.status_code = 304
-
- return response
diff --git a/lib/python2.7/site-packages/django/middleware/locale.py b/lib/python2.7/site-packages/django/middleware/locale.py
deleted file mode 100644
index bd14910..0000000
--- a/lib/python2.7/site-packages/django/middleware/locale.py
+++ /dev/null
@@ -1,68 +0,0 @@
-"This is the locale selecting middleware that will look at accept headers"
-
-from django.conf import settings
-from django.core.urlresolvers import (is_valid_path, get_resolver,
- LocaleRegexURLResolver)
-from django.http import HttpResponseRedirect
-from django.utils.cache import patch_vary_headers
-from django.utils import translation
-from django.utils.datastructures import SortedDict
-
-
-class LocaleMiddleware(object):
- """
- This is a very simple middleware that parses a request
- and decides what translation object to install in the current
- thread context. This allows pages to be dynamically
- translated to the language the user desires (if the language
- is available, of course).
- """
-
- def __init__(self):
- self._supported_languages = SortedDict(settings.LANGUAGES)
- self._is_language_prefix_patterns_used = False
- for url_pattern in get_resolver(None).url_patterns:
- if isinstance(url_pattern, LocaleRegexURLResolver):
- self._is_language_prefix_patterns_used = True
- break
-
- def process_request(self, request):
- check_path = self.is_language_prefix_patterns_used()
- language = translation.get_language_from_request(
- request, check_path=check_path)
- translation.activate(language)
- request.LANGUAGE_CODE = translation.get_language()
-
- def process_response(self, request, response):
- language = translation.get_language()
- language_from_path = translation.get_language_from_path(
- request.path_info, supported=self._supported_languages
- )
- if (response.status_code == 404 and not language_from_path
- and self.is_language_prefix_patterns_used()):
- urlconf = getattr(request, 'urlconf', None)
- language_path = '/%s%s' % (language, request.path_info)
- path_valid = is_valid_path(language_path, urlconf)
- if (not path_valid and settings.APPEND_SLASH
- and not language_path.endswith('/')):
- path_valid = is_valid_path("%s/" % language_path, urlconf)
-
- if path_valid:
- language_url = "%s://%s/%s%s" % (
- 'https' if request.is_secure() else 'http',
- request.get_host(), language, request.get_full_path())
- return HttpResponseRedirect(language_url)
-
- if not (self.is_language_prefix_patterns_used()
- and language_from_path):
- patch_vary_headers(response, ('Accept-Language',))
- if 'Content-Language' not in response:
- response['Content-Language'] = language
- return response
-
- def is_language_prefix_patterns_used(self):
- """
- Returns `True` if the `LocaleRegexURLResolver` is used
- at root level of the urlpatterns, else it returns `False`.
- """
- return self._is_language_prefix_patterns_used
diff --git a/lib/python2.7/site-packages/django/middleware/transaction.py b/lib/python2.7/site-packages/django/middleware/transaction.py
deleted file mode 100644
index 95cc9a2..0000000
--- a/lib/python2.7/site-packages/django/middleware/transaction.py
+++ /dev/null
@@ -1,56 +0,0 @@
-import warnings
-
-from django.core.exceptions import MiddlewareNotUsed
-from django.db import connection, transaction
-
-class TransactionMiddleware(object):
- """
- Transaction middleware. If this is enabled, each view function will be run
- with commit_on_response activated - that way a save() doesn't do a direct
- commit, the commit is done when a successful response is created. If an
- exception happens, the database is rolled back.
- """
-
- def __init__(self):
- warnings.warn(
- "TransactionMiddleware is deprecated in favor of ATOMIC_REQUESTS.",
- PendingDeprecationWarning, stacklevel=2)
- if connection.settings_dict['ATOMIC_REQUESTS']:
- raise MiddlewareNotUsed
-
- def process_request(self, request):
- """Enters transaction management"""
- transaction.enter_transaction_management()
-
- def process_exception(self, request, exception):
- """Rolls back the database and leaves transaction management"""
- if transaction.is_dirty():
- # This rollback might fail because of network failure for example.
- # If rollback isn't possible it is impossible to clean the
- # connection's state. So leave the connection in dirty state and
- # let request_finished signal deal with cleaning the connection.
- transaction.rollback()
- transaction.leave_transaction_management()
-
- def process_response(self, request, response):
- """Commits and leaves transaction management."""
- if not transaction.get_autocommit():
- if transaction.is_dirty():
- # Note: it is possible that the commit fails. If the reason is
- # closed connection or some similar reason, then there is
- # little hope to proceed nicely. However, in some cases (
- # deferred foreign key checks for exampl) it is still possible
- # to rollback().
- try:
- transaction.commit()
- except Exception:
- # If the rollback fails, the transaction state will be
- # messed up. It doesn't matter, the connection will be set
- # to clean state after the request finishes. And, we can't
- # clean the state here properly even if we wanted to, the
- # connection is in transaction but we can't rollback...
- transaction.rollback()
- transaction.leave_transaction_management()
- raise
- transaction.leave_transaction_management()
- return response
diff --git a/lib/python2.7/site-packages/django/shortcuts/__init__.py b/lib/python2.7/site-packages/django/shortcuts/__init__.py
deleted file mode 100644
index 21bd7a0..0000000
--- a/lib/python2.7/site-packages/django/shortcuts/__init__.py
+++ /dev/null
@@ -1,161 +0,0 @@
-"""
-This module collects helper functions and classes that "span" multiple levels
-of MVC. In other words, these functions/classes introduce controlled coupling
-for convenience's sake.
-"""
-import warnings
-
-from django.template import loader, RequestContext
-from django.http import HttpResponse, Http404
-from django.http import HttpResponseRedirect, HttpResponsePermanentRedirect
-from django.db.models.base import ModelBase
-from django.db.models.manager import Manager
-from django.db.models.query import QuerySet
-from django.core import urlresolvers
-
-def render_to_response(*args, **kwargs):
- """
- Returns a HttpResponse whose content is filled with the result of calling
- django.template.loader.render_to_string() with the passed arguments.
- """
- httpresponse_kwargs = {'content_type': kwargs.pop('content_type', None)}
-
- mimetype = kwargs.pop('mimetype', None)
- if mimetype:
- warnings.warn("The mimetype keyword argument is deprecated, use "
- "content_type instead", DeprecationWarning, stacklevel=2)
- httpresponse_kwargs['content_type'] = mimetype
-
- return HttpResponse(loader.render_to_string(*args, **kwargs), **httpresponse_kwargs)
-
-def render(request, *args, **kwargs):
- """
- Returns a HttpResponse whose content is filled with the result of calling
- django.template.loader.render_to_string() with the passed arguments.
- Uses a RequestContext by default.
- """
- httpresponse_kwargs = {
- 'content_type': kwargs.pop('content_type', None),
- 'status': kwargs.pop('status', None),
- }
-
- if 'context_instance' in kwargs:
- context_instance = kwargs.pop('context_instance')
- if kwargs.get('current_app', None):
- raise ValueError('If you provide a context_instance you must '
- 'set its current_app before calling render()')
- else:
- current_app = kwargs.pop('current_app', None)
- context_instance = RequestContext(request, current_app=current_app)
-
- kwargs['context_instance'] = context_instance
-
- return HttpResponse(loader.render_to_string(*args, **kwargs),
- **httpresponse_kwargs)
-
-def redirect(to, *args, **kwargs):
- """
- Returns an HttpResponseRedirect to the appropriate URL for the arguments
- passed.
-
- The arguments could be:
-
- * A model: the model's `get_absolute_url()` function will be called.
-
- * A view name, possibly with arguments: `urlresolvers.reverse()` will
- be used to reverse-resolve the name.
-
- * A URL, which will be used as-is for the redirect location.
-
- By default issues a temporary redirect; pass permanent=True to issue a
- permanent redirect
- """
- if kwargs.pop('permanent', False):
- redirect_class = HttpResponsePermanentRedirect
- else:
- redirect_class = HttpResponseRedirect
-
- return redirect_class(resolve_url(to, *args, **kwargs))
-
-def _get_queryset(klass):
- """
- Returns a QuerySet from a Model, Manager, or QuerySet. Created to make
- get_object_or_404 and get_list_or_404 more DRY.
-
- Raises a ValueError if klass is not a Model, Manager, or QuerySet.
- """
- if isinstance(klass, QuerySet):
- return klass
- elif isinstance(klass, Manager):
- manager = klass
- elif isinstance(klass, ModelBase):
- manager = klass._default_manager
- else:
- klass__name = klass.__name__ if isinstance(klass, type) \
- else klass.__class__.__name__
- raise ValueError("Object is of type '%s', but must be a Django Model, "
- "Manager, or QuerySet" % klass__name)
- return manager.all()
-
-def get_object_or_404(klass, *args, **kwargs):
- """
- Uses get() to return an object, or raises a Http404 exception if the object
- does not exist.
-
- klass may be a Model, Manager, or QuerySet object. All other passed
- arguments and keyword arguments are used in the get() query.
-
- Note: Like with get(), an MultipleObjectsReturned will be raised if more than one
- object is found.
- """
- queryset = _get_queryset(klass)
- try:
- return queryset.get(*args, **kwargs)
- except queryset.model.DoesNotExist:
- raise Http404('No %s matches the given query.' % queryset.model._meta.object_name)
-
-def get_list_or_404(klass, *args, **kwargs):
- """
- Uses filter() to return a list of objects, or raise a Http404 exception if
- the list is empty.
-
- klass may be a Model, Manager, or QuerySet object. All other passed
- arguments and keyword arguments are used in the filter() query.
- """
- queryset = _get_queryset(klass)
- obj_list = list(queryset.filter(*args, **kwargs))
- if not obj_list:
- raise Http404('No %s matches the given query.' % queryset.model._meta.object_name)
- return obj_list
-
-def resolve_url(to, *args, **kwargs):
- """
- Return a URL appropriate for the arguments passed.
-
- The arguments could be:
-
- * A model: the model's `get_absolute_url()` function will be called.
-
- * A view name, possibly with arguments: `urlresolvers.reverse()` will
- be used to reverse-resolve the name.
-
- * A URL, which will be returned as-is.
-
- """
- # If it's a model, use get_absolute_url()
- if hasattr(to, 'get_absolute_url'):
- return to.get_absolute_url()
-
- # Next try a reverse URL resolution.
- try:
- return urlresolvers.reverse(to, args=args, kwargs=kwargs)
- except urlresolvers.NoReverseMatch:
- # If this is a callable, re-raise.
- if callable(to):
- raise
- # If this doesn't "feel" like a URL, re-raise.
- if '/' not in to and '.' not in to:
- raise
-
- # Finally, fall back and assume it's a URL
- return to
diff --git a/lib/python2.7/site-packages/django/template/__init__.py b/lib/python2.7/site-packages/django/template/__init__.py
deleted file mode 100644
index ca1bd49..0000000
--- a/lib/python2.7/site-packages/django/template/__init__.py
+++ /dev/null
@@ -1,80 +0,0 @@
-"""
-This is the Django template system.
-
-How it works:
-
-The Lexer.tokenize() function converts a template string (i.e., a string containing
-markup with custom template tags) to tokens, which can be either plain text
-(TOKEN_TEXT), variables (TOKEN_VAR) or block statements (TOKEN_BLOCK).
-
-The Parser() class takes a list of tokens in its constructor, and its parse()
-method returns a compiled template -- which is, under the hood, a list of
-Node objects.
-
-Each Node is responsible for creating some sort of output -- e.g. simple text
-(TextNode), variable values in a given context (VariableNode), results of basic
-logic (IfNode), results of looping (ForNode), or anything else. The core Node
-types are TextNode, VariableNode, IfNode and ForNode, but plugin modules can
-define their own custom node types.
-
-Each Node has a render() method, which takes a Context and returns a string of
-the rendered node. For example, the render() method of a Variable Node returns
-the variable's value as a string. The render() method of an IfNode returns the
-rendered output of whatever was inside the loop, recursively.
-
-The Template class is a convenient wrapper that takes care of template
-compilation and rendering.
-
-Usage:
-
-The only thing you should ever use directly in this file is the Template class.
-Create a compiled template object with a template_string, then call render()
-with a context. In the compilation stage, the TemplateSyntaxError exception
-will be raised if the template doesn't have proper syntax.
-
-Sample code:
-
->>> from django import template
->>> s = u'<html>{% if test %}<h1>{{ varvalue }}</h1>{% endif %}</html>'
->>> t = template.Template(s)
-
-(t is now a compiled template, and its render() method can be called multiple
-times with multiple contexts)
-
->>> c = template.Context({'test':True, 'varvalue': 'Hello'})
->>> t.render(c)
-u'<html><h1>Hello</h1></html>'
->>> c = template.Context({'test':False, 'varvalue': 'Hello'})
->>> t.render(c)
-u'<html></html>'
-"""
-
-# Template lexing symbols
-from django.template.base import (ALLOWED_VARIABLE_CHARS, BLOCK_TAG_END,
- BLOCK_TAG_START, COMMENT_TAG_END, COMMENT_TAG_START,
- FILTER_ARGUMENT_SEPARATOR, FILTER_SEPARATOR, SINGLE_BRACE_END,
- SINGLE_BRACE_START, TOKEN_BLOCK, TOKEN_COMMENT, TOKEN_TEXT, TOKEN_VAR,
- TRANSLATOR_COMMENT_MARK, UNKNOWN_SOURCE, VARIABLE_ATTRIBUTE_SEPARATOR,
- VARIABLE_TAG_END, VARIABLE_TAG_START, filter_re, tag_re)
-
-# Exceptions
-from django.template.base import (ContextPopException, InvalidTemplateLibrary,
- TemplateDoesNotExist, TemplateEncodingError, TemplateSyntaxError,
- VariableDoesNotExist)
-
-# Template parts
-from django.template.base import (Context, FilterExpression, Lexer, Node,
- NodeList, Parser, RequestContext, Origin, StringOrigin, Template,
- TextNode, Token, TokenParser, Variable, VariableNode, constant_string,
- filter_raw_string)
-
-# Compiling templates
-from django.template.base import (compile_string, resolve_variable,
- unescape_string_literal, generic_tag_compiler)
-
-# Library management
-from django.template.base import (Library, add_to_builtins, builtins,
- get_library, get_templatetags_modules, get_text_list, import_library,
- libraries)
-
-__all__ = ('Template', 'Context', 'RequestContext', 'compile_string')
diff --git a/lib/python2.7/site-packages/django/template/base.py b/lib/python2.7/site-packages/django/template/base.py
deleted file mode 100644
index 26f8111..0000000
--- a/lib/python2.7/site-packages/django/template/base.py
+++ /dev/null
@@ -1,1335 +0,0 @@
-from __future__ import absolute_import, unicode_literals
-
-import re
-from functools import partial
-from inspect import getargspec
-
-from django.conf import settings
-from django.template.context import (BaseContext, Context, RequestContext,
- ContextPopException)
-from django.utils.importlib import import_module
-from django.utils.itercompat import is_iterable
-from django.utils.text import (smart_split, unescape_string_literal,
- get_text_list)
-from django.utils.encoding import force_str, force_text
-from django.utils.translation import ugettext_lazy, pgettext_lazy
-from django.utils.safestring import (SafeData, EscapeData, mark_safe,
- mark_for_escaping)
-from django.utils.formats import localize
-from django.utils.html import escape
-from django.utils.module_loading import module_has_submodule
-from django.utils import six
-from django.utils.timezone import template_localtime
-from django.utils.encoding import python_2_unicode_compatible
-
-
-TOKEN_TEXT = 0
-TOKEN_VAR = 1
-TOKEN_BLOCK = 2
-TOKEN_COMMENT = 3
-TOKEN_MAPPING = {
- TOKEN_TEXT: 'Text',
- TOKEN_VAR: 'Var',
- TOKEN_BLOCK: 'Block',
- TOKEN_COMMENT: 'Comment',
-}
-
-# template syntax constants
-FILTER_SEPARATOR = '|'
-FILTER_ARGUMENT_SEPARATOR = ':'
-VARIABLE_ATTRIBUTE_SEPARATOR = '.'
-BLOCK_TAG_START = '{%'
-BLOCK_TAG_END = '%}'
-VARIABLE_TAG_START = '{{'
-VARIABLE_TAG_END = '}}'
-COMMENT_TAG_START = '{#'
-COMMENT_TAG_END = '#}'
-TRANSLATOR_COMMENT_MARK = 'Translators'
-SINGLE_BRACE_START = '{'
-SINGLE_BRACE_END = '}'
-
-ALLOWED_VARIABLE_CHARS = ('abcdefghijklmnopqrstuvwxyz'
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_.')
-
-# what to report as the origin for templates that come from non-loader sources
-# (e.g. strings)
-UNKNOWN_SOURCE = '<unknown source>'
-
-# match a variable or block tag and capture the entire tag, including start/end
-# delimiters
-tag_re = (re.compile('(%s.*?%s|%s.*?%s|%s.*?%s)' %
- (re.escape(BLOCK_TAG_START), re.escape(BLOCK_TAG_END),
- re.escape(VARIABLE_TAG_START), re.escape(VARIABLE_TAG_END),
- re.escape(COMMENT_TAG_START), re.escape(COMMENT_TAG_END))))
-
-# global dictionary of libraries that have been loaded using get_library
-libraries = {}
-# global list of libraries to load by default for a new parser
-builtins = []
-
-# True if TEMPLATE_STRING_IF_INVALID contains a format string (%s). None means
-# uninitialised.
-invalid_var_format_string = None
-
-class TemplateSyntaxError(Exception):
- pass
-
-class TemplateDoesNotExist(Exception):
- pass
-
-class TemplateEncodingError(Exception):
- pass
-
-@python_2_unicode_compatible
-class VariableDoesNotExist(Exception):
-
- def __init__(self, msg, params=()):
- self.msg = msg
- self.params = params
-
- def __str__(self):
- return self.msg % tuple([force_text(p, errors='replace')
- for p in self.params])
-
-class InvalidTemplateLibrary(Exception):
- pass
-
-class Origin(object):
- def __init__(self, name):
- self.name = name
-
- def reload(self):
- raise NotImplementedError
-
- def __str__(self):
- return self.name
-
-class StringOrigin(Origin):
- def __init__(self, source):
- super(StringOrigin, self).__init__(UNKNOWN_SOURCE)
- self.source = source
-
- def reload(self):
- return self.source
-
-class Template(object):
- def __init__(self, template_string, origin=None,
- name='<Unknown Template>'):
- try:
- template_string = force_text(template_string)
- except UnicodeDecodeError:
- raise TemplateEncodingError("Templates can only be constructed "
- "from unicode or UTF-8 strings.")
- if settings.TEMPLATE_DEBUG and origin is None:
- origin = StringOrigin(template_string)
- self.nodelist = compile_string(template_string, origin)
- self.name = name
-
- def __iter__(self):
- for node in self.nodelist:
- for subnode in node:
- yield subnode
-
- def _render(self, context):
- return self.nodelist.render(context)
-
- def render(self, context):
- "Display stage -- can be called many times"
- context.render_context.push()
- try:
- return self._render(context)
- finally:
- context.render_context.pop()
-
-def compile_string(template_string, origin):
- "Compiles template_string into NodeList ready for rendering"
- if settings.TEMPLATE_DEBUG:
- from django.template.debug import DebugLexer, DebugParser
- lexer_class, parser_class = DebugLexer, DebugParser
- else:
- lexer_class, parser_class = Lexer, Parser
- lexer = lexer_class(template_string, origin)
- parser = parser_class(lexer.tokenize())
- return parser.parse()
-
-class Token(object):
- def __init__(self, token_type, contents):
- # token_type must be TOKEN_TEXT, TOKEN_VAR, TOKEN_BLOCK or
- # TOKEN_COMMENT.
- self.token_type, self.contents = token_type, contents
- self.lineno = None
-
- def __str__(self):
- token_name = TOKEN_MAPPING[self.token_type]
- return ('<%s token: "%s...">' %
- (token_name, self.contents[:20].replace('\n', '')))
-
- def split_contents(self):
- split = []
- bits = iter(smart_split(self.contents))
- for bit in bits:
- # Handle translation-marked template pieces
- if bit.startswith('_("') or bit.startswith("_('"):
- sentinal = bit[2] + ')'
- trans_bit = [bit]
- while not bit.endswith(sentinal):
- bit = next(bits)
- trans_bit.append(bit)
- bit = ' '.join(trans_bit)
- split.append(bit)
- return split
-
-class Lexer(object):
- def __init__(self, template_string, origin):
- self.template_string = template_string
- self.origin = origin
- self.lineno = 1
- self.verbatim = False
-
- def tokenize(self):
- """
- Return a list of tokens from a given template_string.
- """
- in_tag = False
- result = []
- for bit in tag_re.split(self.template_string):
- if bit:
- result.append(self.create_token(bit, in_tag))
- in_tag = not in_tag
- return result
-
- def create_token(self, token_string, in_tag):
- """
- Convert the given token string into a new Token object and return it.
- If in_tag is True, we are processing something that matched a tag,
- otherwise it should be treated as a literal string.
- """
- if in_tag and token_string.startswith(BLOCK_TAG_START):
- # The [2:-2] ranges below strip off *_TAG_START and *_TAG_END.
- # We could do len(BLOCK_TAG_START) to be more "correct", but we've
- # hard-coded the 2s here for performance. And it's not like
- # the TAG_START values are going to change anytime, anyway.
- block_content = token_string[2:-2].strip()
- if self.verbatim and block_content == self.verbatim:
- self.verbatim = False
- if in_tag and not self.verbatim:
- if token_string.startswith(VARIABLE_TAG_START):
- token = Token(TOKEN_VAR, token_string[2:-2].strip())
- elif token_string.startswith(BLOCK_TAG_START):
- if block_content[:9] in ('verbatim', 'verbatim '):
- self.verbatim = 'end%s' % block_content
- token = Token(TOKEN_BLOCK, block_content)
- elif token_string.startswith(COMMENT_TAG_START):
- content = ''
- if token_string.find(TRANSLATOR_COMMENT_MARK):
- content = token_string[2:-2].strip()
- token = Token(TOKEN_COMMENT, content)
- else:
- token = Token(TOKEN_TEXT, token_string)
- token.lineno = self.lineno
- self.lineno += token_string.count('\n')
- return token
-
-class Parser(object):
- def __init__(self, tokens):
- self.tokens = tokens
- self.tags = {}
- self.filters = {}
- for lib in builtins:
- self.add_library(lib)
-
- def parse(self, parse_until=None):
- if parse_until is None:
- parse_until = []
- nodelist = self.create_nodelist()
- while self.tokens:
- token = self.next_token()
- # Use the raw values here for TOKEN_* for a tiny performance boost.
- if token.token_type == 0: # TOKEN_TEXT
- self.extend_nodelist(nodelist, TextNode(token.contents), token)
- elif token.token_type == 1: # TOKEN_VAR
- if not token.contents:
- self.empty_variable(token)
- try:
- filter_expression = self.compile_filter(token.contents)
- except TemplateSyntaxError as e:
- if not self.compile_filter_error(token, e):
- raise
- var_node = self.create_variable_node(filter_expression)
- self.extend_nodelist(nodelist, var_node, token)
- elif token.token_type == 2: # TOKEN_BLOCK
- try:
- command = token.contents.split()[0]
- except IndexError:
- self.empty_block_tag(token)
- if command in parse_until:
- # put token back on token list so calling
- # code knows why it terminated
- self.prepend_token(token)
- return nodelist
- # execute callback function for this tag and append
- # resulting node
- self.enter_command(command, token)
- try:
- compile_func = self.tags[command]
- except KeyError:
- self.invalid_block_tag(token, command, parse_until)
- try:
- compiled_result = compile_func(self, token)
- except TemplateSyntaxError as e:
- if not self.compile_function_error(token, e):
- raise
- self.extend_nodelist(nodelist, compiled_result, token)
- self.exit_command()
- if parse_until:
- self.unclosed_block_tag(parse_until)
- return nodelist
-
- def skip_past(self, endtag):
- while self.tokens:
- token = self.next_token()
- if token.token_type == TOKEN_BLOCK and token.contents == endtag:
- return
- self.unclosed_block_tag([endtag])
-
- def create_variable_node(self, filter_expression):
- return VariableNode(filter_expression)
-
- def create_nodelist(self):
- return NodeList()
-
- def extend_nodelist(self, nodelist, node, token):
- if node.must_be_first and nodelist:
- try:
- if nodelist.contains_nontext:
- raise AttributeError
- except AttributeError:
- raise TemplateSyntaxError("%r must be the first tag "
- "in the template." % node)
- if isinstance(nodelist, NodeList) and not isinstance(node, TextNode):
- nodelist.contains_nontext = True
- nodelist.append(node)
-
- def enter_command(self, command, token):
- pass
-
- def exit_command(self):
- pass
-
- def error(self, token, msg):
- return TemplateSyntaxError(msg)
-
- def empty_variable(self, token):
- raise self.error(token, "Empty variable tag")
-
- def empty_block_tag(self, token):
- raise self.error(token, "Empty block tag")
-
- def invalid_block_tag(self, token, command, parse_until=None):
- if parse_until:
- raise self.error(token, "Invalid block tag: '%s', expected %s" %
- (command, get_text_list(["'%s'" % p for p in parse_until])))
- raise self.error(token, "Invalid block tag: '%s'" % command)
-
- def unclosed_block_tag(self, parse_until):
- raise self.error(None, "Unclosed tags: %s " % ', '.join(parse_until))
-
- def compile_filter_error(self, token, e):
- pass
-
- def compile_function_error(self, token, e):
- pass
-
- def next_token(self):
- return self.tokens.pop(0)
-
- def prepend_token(self, token):
- self.tokens.insert(0, token)
-
- def delete_first_token(self):
- del self.tokens[0]
-
- def add_library(self, lib):
- self.tags.update(lib.tags)
- self.filters.update(lib.filters)
-
- def compile_filter(self, token):
- """
- Convenient wrapper for FilterExpression
- """
- return FilterExpression(token, self)
-
- def find_filter(self, filter_name):
- if filter_name in self.filters:
- return self.filters[filter_name]
- else:
- raise TemplateSyntaxError("Invalid filter: '%s'" % filter_name)
-
-class TokenParser(object):
- """
- Subclass this and implement the top() method to parse a template line.
- When instantiating the parser, pass in the line from the Django template
- parser.
-
- The parser's "tagname" instance-variable stores the name of the tag that
- the filter was called with.
- """
- def __init__(self, subject):
- self.subject = subject
- self.pointer = 0
- self.backout = []
- self.tagname = self.tag()
-
- def top(self):
- """
- Overload this method to do the actual parsing and return the result.
- """
- raise NotImplementedError()
-
- def more(self):
- """
- Returns True if there is more stuff in the tag.
- """
- return self.pointer < len(self.subject)
-
- def back(self):
- """
- Undoes the last microparser. Use this for lookahead and backtracking.
- """
- if not len(self.backout):
- raise TemplateSyntaxError("back called without some previous "
- "parsing")
- self.pointer = self.backout.pop()
-
- def tag(self):
- """
- A microparser that just returns the next tag from the line.
- """
- subject = self.subject
- i = self.pointer
- if i >= len(subject):
- raise TemplateSyntaxError("expected another tag, found "
- "end of string: %s" % subject)
- p = i
- while i < len(subject) and subject[i] not in (' ', '\t'):
- i += 1
- s = subject[p:i]
- while i < len(subject) and subject[i] in (' ', '\t'):
- i += 1
- self.backout.append(self.pointer)
- self.pointer = i
- return s
-
- def value(self):
- """
- A microparser that parses for a value: some string constant or
- variable name.
- """
- subject = self.subject
- i = self.pointer
-
- def next_space_index(subject, i):
- """
- Increment pointer until a real space (i.e. a space not within
- quotes) is encountered
- """
- while i < len(subject) and subject[i] not in (' ', '\t'):
- if subject[i] in ('"', "'"):
- c = subject[i]
- i += 1
- while i < len(subject) and subject[i] != c:
- i += 1
- if i >= len(subject):
- raise TemplateSyntaxError("Searching for value. "
- "Unexpected end of string in column %d: %s" %
- (i, subject))
- i += 1
- return i
-
- if i >= len(subject):
- raise TemplateSyntaxError("Searching for value. Expected another "
- "value but found end of string: %s" %
- subject)
- if subject[i] in ('"', "'"):
- p = i
- i += 1
- while i < len(subject) and subject[i] != subject[p]:
- i += 1
- if i >= len(subject):
- raise TemplateSyntaxError("Searching for value. Unexpected "
- "end of string in column %d: %s" %
- (i, subject))
- i += 1
-
- # Continue parsing until next "real" space,
- # so that filters are also included
- i = next_space_index(subject, i)
-
- res = subject[p:i]
- while i < len(subject) and subject[i] in (' ', '\t'):
- i += 1
- self.backout.append(self.pointer)
- self.pointer = i
- return res
- else:
- p = i
- i = next_space_index(subject, i)
- s = subject[p:i]
- while i < len(subject) and subject[i] in (' ', '\t'):
- i += 1
- self.backout.append(self.pointer)
- self.pointer = i
- return s
-
-# This only matches constant *strings* (things in quotes or marked for
-# translation). Numbers are treated as variables for implementation reasons
-# (so that they retain their type when passed to filters).
-constant_string = r"""
-(?:%(i18n_open)s%(strdq)s%(i18n_close)s|
-%(i18n_open)s%(strsq)s%(i18n_close)s|
-%(strdq)s|
-%(strsq)s)
-""" % {
- 'strdq': r'"[^"\\]*(?:\\.[^"\\]*)*"', # double-quoted string
- 'strsq': r"'[^'\\]*(?:\\.[^'\\]*)*'", # single-quoted string
- 'i18n_open': re.escape("_("),
- 'i18n_close': re.escape(")"),
- }
-constant_string = constant_string.replace("\n", "")
-
-filter_raw_string = r"""
-^(?P<constant>%(constant)s)|
-^(?P<var>[%(var_chars)s]+|%(num)s)|
- (?:\s*%(filter_sep)s\s*
- (?P<filter_name>\w+)
- (?:%(arg_sep)s
- (?:
- (?P<constant_arg>%(constant)s)|
- (?P<var_arg>[%(var_chars)s]+|%(num)s)
- )
- )?
- )""" % {
- 'constant': constant_string,
- 'num': r'[-+\.]?\d[\d\.e]*',
- 'var_chars': "\w\.",
- 'filter_sep': re.escape(FILTER_SEPARATOR),
- 'arg_sep': re.escape(FILTER_ARGUMENT_SEPARATOR),
- }
-
-filter_re = re.compile(filter_raw_string, re.UNICODE | re.VERBOSE)
-
-class FilterExpression(object):
- """
- Parses a variable token and its optional filters (all as a single string),
- and return a list of tuples of the filter name and arguments.
- Sample::
-
- >>> token = 'variable|default:"Default value"|date:"Y-m-d"'
- >>> p = Parser('')
- >>> fe = FilterExpression(token, p)
- >>> len(fe.filters)
- 2
- >>> fe.var
- <Variable: 'variable'>
-
- This class should never be instantiated outside of the
- get_filters_from_token helper function.
- """
- def __init__(self, token, parser):
- self.token = token
- matches = filter_re.finditer(token)
- var_obj = None
- filters = []
- upto = 0
- for match in matches:
- start = match.start()
- if upto != start:
- raise TemplateSyntaxError("Could not parse some characters: "
- "%s|%s|%s" %
- (token[:upto], token[upto:start],
- token[start:]))
- if var_obj is None:
- var, constant = match.group("var", "constant")
- if constant:
- try:
- var_obj = Variable(constant).resolve({})
- except VariableDoesNotExist:
- var_obj = None
- elif var is None:
- raise TemplateSyntaxError("Could not find variable at "
- "start of %s." % token)
- else:
- var_obj = Variable(var)
- else:
- filter_name = match.group("filter_name")
- args = []
- constant_arg, var_arg = match.group("constant_arg", "var_arg")
- if constant_arg:
- args.append((False, Variable(constant_arg).resolve({})))
- elif var_arg:
- args.append((True, Variable(var_arg)))
- filter_func = parser.find_filter(filter_name)
- self.args_check(filter_name, filter_func, args)
- filters.append((filter_func, args))
- upto = match.end()
- if upto != len(token):
- raise TemplateSyntaxError("Could not parse the remainder: '%s' "
- "from '%s'" % (token[upto:], token))
-
- self.filters = filters
- self.var = var_obj
-
- def resolve(self, context, ignore_failures=False):
- if isinstance(self.var, Variable):
- try:
- obj = self.var.resolve(context)
- except VariableDoesNotExist:
- if ignore_failures:
- obj = None
- else:
- if settings.TEMPLATE_STRING_IF_INVALID:
- global invalid_var_format_string
- if invalid_var_format_string is None:
- invalid_var_format_string = '%s' in settings.TEMPLATE_STRING_IF_INVALID
- if invalid_var_format_string:
- return settings.TEMPLATE_STRING_IF_INVALID % self.var
- return settings.TEMPLATE_STRING_IF_INVALID
- else:
- obj = settings.TEMPLATE_STRING_IF_INVALID
- else:
- obj = self.var
- for func, args in self.filters:
- arg_vals = []
- for lookup, arg in args:
- if not lookup:
- arg_vals.append(mark_safe(arg))
- else:
- arg_vals.append(arg.resolve(context))
- if getattr(func, 'expects_localtime', False):
- obj = template_localtime(obj, context.use_tz)
- if getattr(func, 'needs_autoescape', False):
- new_obj = func(obj, autoescape=context.autoescape, *arg_vals)
- else:
- new_obj = func(obj, *arg_vals)
- if getattr(func, 'is_safe', False) and isinstance(obj, SafeData):
- obj = mark_safe(new_obj)
- elif isinstance(obj, EscapeData):
- obj = mark_for_escaping(new_obj)
- else:
- obj = new_obj
- return obj
-
- def args_check(name, func, provided):
- provided = list(provided)
- plen = len(provided)
- # Check to see if a decorator is providing the real function.
- func = getattr(func, '_decorated_function', func)
- args, varargs, varkw, defaults = getargspec(func)
- # First argument is filter input.
- args.pop(0)
- if defaults:
- nondefs = args[:-len(defaults)]
- else:
- nondefs = args
- # Args without defaults must be provided.
- try:
- for arg in nondefs:
- provided.pop(0)
- except IndexError:
- # Not enough
- raise TemplateSyntaxError("%s requires %d arguments, %d provided" %
- (name, len(nondefs), plen))
-
- # Defaults can be overridden.
- defaults = list(defaults) if defaults else []
- try:
- for parg in provided:
- defaults.pop(0)
- except IndexError:
- # Too many.
- raise TemplateSyntaxError("%s requires %d arguments, %d provided" %
- (name, len(nondefs), plen))
-
- return True
- args_check = staticmethod(args_check)
-
- def __str__(self):
- return self.token
-
-def resolve_variable(path, context):
- """
- Returns the resolved variable, which may contain attribute syntax, within
- the given context.
-
- Deprecated; use the Variable class instead.
- """
- return Variable(path).resolve(context)
-
-class Variable(object):
- """
- A template variable, resolvable against a given context. The variable may
- be a hard-coded string (if it begins and ends with single or double quote
- marks)::
-
- >>> c = {'article': {'section':u'News'}}
- >>> Variable('article.section').resolve(c)
- u'News'
- >>> Variable('article').resolve(c)
- {'section': u'News'}
- >>> class AClass: pass
- >>> c = AClass()
- >>> c.article = AClass()
- >>> c.article.section = u'News'
-
- (The example assumes VARIABLE_ATTRIBUTE_SEPARATOR is '.')
- """
-
- def __init__(self, var):
- self.var = var
- self.literal = None
- self.lookups = None
- self.translate = False
- self.message_context = None
-
- try:
- # First try to treat this variable as a number.
- #
- # Note that this could cause an OverflowError here that we're not
- # catching. Since this should only happen at compile time, that's
- # probably OK.
- self.literal = float(var)
-
- # So it's a float... is it an int? If the original value contained a
- # dot or an "e" then it was a float, not an int.
- if '.' not in var and 'e' not in var.lower():
- self.literal = int(self.literal)
-
- # "2." is invalid
- if var.endswith('.'):
- raise ValueError
-
- except ValueError:
- # A ValueError means that the variable isn't a number.
- if var.startswith('_(') and var.endswith(')'):
- # The result of the lookup should be translated at rendering
- # time.
- self.translate = True
- var = var[2:-1]
- # If it's wrapped with quotes (single or double), then
- # we're also dealing with a literal.
- try:
- self.literal = mark_safe(unescape_string_literal(var))
- except ValueError:
- # Otherwise we'll set self.lookups so that resolve() knows we're
- # dealing with a bonafide variable
- if var.find(VARIABLE_ATTRIBUTE_SEPARATOR + '_') > -1 or var[0] == '_':
- raise TemplateSyntaxError("Variables and attributes may "
- "not begin with underscores: '%s'" %
- var)
- self.lookups = tuple(var.split(VARIABLE_ATTRIBUTE_SEPARATOR))
-
- def resolve(self, context):
- """Resolve this variable against a given context."""
- if self.lookups is not None:
- # We're dealing with a variable that needs to be resolved
- value = self._resolve_lookup(context)
- else:
- # We're dealing with a literal, so it's already been "resolved"
- value = self.literal
- if self.translate:
- if self.message_context:
- return pgettext_lazy(self.message_context, value)
- else:
- return ugettext_lazy(value)
- return value
-
- def __repr__(self):
- return "<%s: %r>" % (self.__class__.__name__, self.var)
-
- def __str__(self):
- return self.var
-
- def _resolve_lookup(self, context):
- """
- Performs resolution of a real variable (i.e. not a literal) against the
- given context.
-
- As indicated by the method's name, this method is an implementation
- detail and shouldn't be called by external code. Use Variable.resolve()
- instead.
- """
- current = context
- try: # catch-all for silent variable failures
- for bit in self.lookups:
- try: # dictionary lookup
- current = current[bit]
- except (TypeError, AttributeError, KeyError, ValueError):
- try: # attribute lookup
- # Don't return class attributes if the class is the context:
- if isinstance(current, BaseContext) and getattr(type(current), bit):
- raise AttributeError
- current = getattr(current, bit)
- except (TypeError, AttributeError):
- try: # list-index lookup
- current = current[int(bit)]
- except (IndexError, # list index out of range
- ValueError, # invalid literal for int()
- KeyError, # current is a dict without `int(bit)` key
- TypeError): # unsubscriptable object
- raise VariableDoesNotExist("Failed lookup for key "
- "[%s] in %r",
- (bit, current)) # missing attribute
- if callable(current):
- if getattr(current, 'do_not_call_in_templates', False):
- pass
- elif getattr(current, 'alters_data', False):
- current = settings.TEMPLATE_STRING_IF_INVALID
- else:
- try: # method call (assuming no args required)
- current = current()
- except TypeError: # arguments *were* required
- # GOTCHA: This will also catch any TypeError
- # raised in the function itself.
- current = settings.TEMPLATE_STRING_IF_INVALID # invalid method call
- except Exception as e:
- if getattr(e, 'silent_variable_failure', False):
- current = settings.TEMPLATE_STRING_IF_INVALID
- else:
- raise
-
- return current
-
-class Node(object):
- # Set this to True for nodes that must be first in the template (although
- # they can be preceded by text nodes.
- must_be_first = False
- child_nodelists = ('nodelist',)
-
- def render(self, context):
- """
- Return the node rendered as a string.
- """
- pass
-
- def __iter__(self):
- yield self
-
- def get_nodes_by_type(self, nodetype):
- """
- Return a list of all nodes (within this node and its nodelist)
- of the given type
- """
- nodes = []
- if isinstance(self, nodetype):
- nodes.append(self)
- for attr in self.child_nodelists:
- nodelist = getattr(self, attr, None)
- if nodelist:
- nodes.extend(nodelist.get_nodes_by_type(nodetype))
- return nodes
-
-class NodeList(list):
- # Set to True the first time a non-TextNode is inserted by
- # extend_nodelist().
- contains_nontext = False
-
- def render(self, context):
- bits = []
- for node in self:
- if isinstance(node, Node):
- bit = self.render_node(node, context)
- else:
- bit = node
- bits.append(force_text(bit))
- return mark_safe(''.join(bits))
-
- def get_nodes_by_type(self, nodetype):
- "Return a list of all nodes of the given type"
- nodes = []
- for node in self:
- nodes.extend(node.get_nodes_by_type(nodetype))
- return nodes
-
- def render_node(self, node, context):
- return node.render(context)
-
-class TextNode(Node):
- def __init__(self, s):
- self.s = s
-
- def __repr__(self):
- return force_str("<Text Node: '%s'>" % self.s[:25], 'ascii',
- errors='replace')
-
- def render(self, context):
- return self.s
-
-def render_value_in_context(value, context):
- """
- Converts any value to a string to become part of a rendered template. This
- means escaping, if required, and conversion to a unicode object. If value
- is a string, it is expected to have already been translated.
- """
- value = template_localtime(value, use_tz=context.use_tz)
- value = localize(value, use_l10n=context.use_l10n)
- value = force_text(value)
- if ((context.autoescape and not isinstance(value, SafeData)) or
- isinstance(value, EscapeData)):
- return escape(value)
- else:
- return value
-
-class VariableNode(Node):
- def __init__(self, filter_expression):
- self.filter_expression = filter_expression
-
- def __repr__(self):
- return "<Variable Node: %s>" % self.filter_expression
-
- def render(self, context):
- try:
- output = self.filter_expression.resolve(context)
- except UnicodeDecodeError:
- # Unicode conversion can fail sometimes for reasons out of our
- # control (e.g. exception rendering). In that case, we fail
- # quietly.
- return ''
- return render_value_in_context(output, context)
-
-# Regex for token keyword arguments
-kwarg_re = re.compile(r"(?:(\w+)=)?(.+)")
-
-def token_kwargs(bits, parser, support_legacy=False):
- """
- A utility method for parsing token keyword arguments.
-
- :param bits: A list containing remainder of the token (split by spaces)
- that is to be checked for arguments. Valid arguments will be removed
- from this list.
-
- :param support_legacy: If set to true ``True``, the legacy format
- ``1 as foo`` will be accepted. Otherwise, only the standard ``foo=1``
- format is allowed.
-
- :returns: A dictionary of the arguments retrieved from the ``bits`` token
- list.
-
- There is no requirement for all remaining token ``bits`` to be keyword
- arguments, so the dictionary will be returned as soon as an invalid
- argument format is reached.
- """
- if not bits:
- return {}
- match = kwarg_re.match(bits[0])
- kwarg_format = match and match.group(1)
- if not kwarg_format:
- if not support_legacy:
- return {}
- if len(bits) < 3 or bits[1] != 'as':
- return {}
-
- kwargs = {}
- while bits:
- if kwarg_format:
- match = kwarg_re.match(bits[0])
- if not match or not match.group(1):
- return kwargs
- key, value = match.groups()
- del bits[:1]
- else:
- if len(bits) < 3 or bits[1] != 'as':
- return kwargs
- key, value = bits[2], bits[0]
- del bits[:3]
- kwargs[key] = parser.compile_filter(value)
- if bits and not kwarg_format:
- if bits[0] != 'and':
- return kwargs
- del bits[:1]
- return kwargs
-
-def parse_bits(parser, bits, params, varargs, varkw, defaults,
- takes_context, name):
- """
- Parses bits for template tag helpers (simple_tag, include_tag and
- assignment_tag), in particular by detecting syntax errors and by
- extracting positional and keyword arguments.
- """
- if takes_context:
- if params[0] == 'context':
- params = params[1:]
- else:
- raise TemplateSyntaxError(
- "'%s' is decorated with takes_context=True so it must "
- "have a first argument of 'context'" % name)
- args = []
- kwargs = {}
- unhandled_params = list(params)
- for bit in bits:
- # First we try to extract a potential kwarg from the bit
- kwarg = token_kwargs([bit], parser)
- if kwarg:
- # The kwarg was successfully extracted
- param, value = list(six.iteritems(kwarg))[0]
- if param not in params and varkw is None:
- # An unexpected keyword argument was supplied
- raise TemplateSyntaxError(
- "'%s' received unexpected keyword argument '%s'" %
- (name, param))
- elif param in kwargs:
- # The keyword argument has already been supplied once
- raise TemplateSyntaxError(
- "'%s' received multiple values for keyword argument '%s'" %
- (name, param))
- else:
- # All good, record the keyword argument
- kwargs[str(param)] = value
- if param in unhandled_params:
- # If using the keyword syntax for a positional arg, then
- # consume it.
- unhandled_params.remove(param)
- else:
- if kwargs:
- raise TemplateSyntaxError(
- "'%s' received some positional argument(s) after some "
- "keyword argument(s)" % name)
- else:
- # Record the positional argument
- args.append(parser.compile_filter(bit))
- try:
- # Consume from the list of expected positional arguments
- unhandled_params.pop(0)
- except IndexError:
- if varargs is None:
- raise TemplateSyntaxError(
- "'%s' received too many positional arguments" %
- name)
- if defaults is not None:
- # Consider the last n params handled, where n is the
- # number of defaults.
- unhandled_params = unhandled_params[:-len(defaults)]
- if unhandled_params:
- # Some positional arguments were not supplied
- raise TemplateSyntaxError(
- "'%s' did not receive value(s) for the argument(s): %s" %
- (name, ", ".join(["'%s'" % p for p in unhandled_params])))
- return args, kwargs
-
-def generic_tag_compiler(parser, token, params, varargs, varkw, defaults,
- name, takes_context, node_class):
- """
- Returns a template.Node subclass.
- """
- bits = token.split_contents()[1:]
- args, kwargs = parse_bits(parser, bits, params, varargs, varkw,
- defaults, takes_context, name)
- return node_class(takes_context, args, kwargs)
-
-class TagHelperNode(Node):
- """
- Base class for tag helper nodes such as SimpleNode, InclusionNode and
- AssignmentNode. Manages the positional and keyword arguments to be passed
- to the decorated function.
- """
-
- def __init__(self, takes_context, args, kwargs):
- self.takes_context = takes_context
- self.args = args
- self.kwargs = kwargs
-
- def get_resolved_arguments(self, context):
- resolved_args = [var.resolve(context) for var in self.args]
- if self.takes_context:
- resolved_args = [context] + resolved_args
- resolved_kwargs = dict((k, v.resolve(context))
- for k, v in self.kwargs.items())
- return resolved_args, resolved_kwargs
-
-class Library(object):
- def __init__(self):
- self.filters = {}
- self.tags = {}
-
- def tag(self, name=None, compile_function=None):
- if name is None and compile_function is None:
- # @register.tag()
- return self.tag_function
- elif name is not None and compile_function is None:
- if callable(name):
- # @register.tag
- return self.tag_function(name)
- else:
- # @register.tag('somename') or @register.tag(name='somename')
- def dec(func):
- return self.tag(name, func)
- return dec
- elif name is not None and compile_function is not None:
- # register.tag('somename', somefunc)
- self.tags[name] = compile_function
- return compile_function
- else:
- raise InvalidTemplateLibrary("Unsupported arguments to "
- "Library.tag: (%r, %r)", (name, compile_function))
-
- def tag_function(self, func):
- self.tags[getattr(func, "_decorated_function", func).__name__] = func
- return func
-
- def filter(self, name=None, filter_func=None, **flags):
- if name is None and filter_func is None:
- # @register.filter()
- def dec(func):
- return self.filter_function(func, **flags)
- return dec
-
- elif name is not None and filter_func is None:
- if callable(name):
- # @register.filter
- return self.filter_function(name, **flags)
- else:
- # @register.filter('somename') or @register.filter(name='somename')
- def dec(func):
- return self.filter(name, func, **flags)
- return dec
-
- elif name is not None and filter_func is not None:
- # register.filter('somename', somefunc)
- self.filters[name] = filter_func
- for attr in ('expects_localtime', 'is_safe', 'needs_autoescape'):
- if attr in flags:
- value = flags[attr]
- # set the flag on the filter for FilterExpression.resolve
- setattr(filter_func, attr, value)
- # set the flag on the innermost decorated function
- # for decorators that need it e.g. stringfilter
- if hasattr(filter_func, "_decorated_function"):
- setattr(filter_func._decorated_function, attr, value)
- filter_func._filter_name = name
- return filter_func
- else:
- raise InvalidTemplateLibrary("Unsupported arguments to "
- "Library.filter: (%r, %r)", (name, filter_func))
-
- def filter_function(self, func, **flags):
- name = getattr(func, "_decorated_function", func).__name__
- return self.filter(name, func, **flags)
-
- def simple_tag(self, func=None, takes_context=None, name=None):
- def dec(func):
- params, varargs, varkw, defaults = getargspec(func)
-
- class SimpleNode(TagHelperNode):
-
- def render(self, context):
- resolved_args, resolved_kwargs = self.get_resolved_arguments(context)
- return func(*resolved_args, **resolved_kwargs)
-
- function_name = (name or
- getattr(func, '_decorated_function', func).__name__)
- compile_func = partial(generic_tag_compiler,
- params=params, varargs=varargs, varkw=varkw,
- defaults=defaults, name=function_name,
- takes_context=takes_context, node_class=SimpleNode)
- compile_func.__doc__ = func.__doc__
- self.tag(function_name, compile_func)
- return func
-
- if func is None:
- # @register.simple_tag(...)
- return dec
- elif callable(func):
- # @register.simple_tag
- return dec(func)
- else:
- raise TemplateSyntaxError("Invalid arguments provided to simple_tag")
-
- def assignment_tag(self, func=None, takes_context=None, name=None):
- def dec(func):
- params, varargs, varkw, defaults = getargspec(func)
-
- class AssignmentNode(TagHelperNode):
- def __init__(self, takes_context, args, kwargs, target_var):
- super(AssignmentNode, self).__init__(takes_context, args, kwargs)
- self.target_var = target_var
-
- def render(self, context):
- resolved_args, resolved_kwargs = self.get_resolved_arguments(context)
- context[self.target_var] = func(*resolved_args, **resolved_kwargs)
- return ''
-
- function_name = (name or
- getattr(func, '_decorated_function', func).__name__)
-
- def compile_func(parser, token):
- bits = token.split_contents()[1:]
- if len(bits) < 2 or bits[-2] != 'as':
- raise TemplateSyntaxError(
- "'%s' tag takes at least 2 arguments and the "
- "second last argument must be 'as'" % function_name)
- target_var = bits[-1]
- bits = bits[:-2]
- args, kwargs = parse_bits(parser, bits, params,
- varargs, varkw, defaults, takes_context, function_name)
- return AssignmentNode(takes_context, args, kwargs, target_var)
-
- compile_func.__doc__ = func.__doc__
- self.tag(function_name, compile_func)
- return func
-
- if func is None:
- # @register.assignment_tag(...)
- return dec
- elif callable(func):
- # @register.assignment_tag
- return dec(func)
- else:
- raise TemplateSyntaxError("Invalid arguments provided to assignment_tag")
-
- def inclusion_tag(self, file_name, context_class=Context, takes_context=False, name=None):
- def dec(func):
- params, varargs, varkw, defaults = getargspec(func)
-
- class InclusionNode(TagHelperNode):
-
- def render(self, context):
- resolved_args, resolved_kwargs = self.get_resolved_arguments(context)
- _dict = func(*resolved_args, **resolved_kwargs)
-
- if not getattr(self, 'nodelist', False):
- from django.template.loader import get_template, select_template
- if isinstance(file_name, Template):
- t = file_name
- elif not isinstance(file_name, six.string_types) and is_iterable(file_name):
- t = select_template(file_name)
- else:
- t = get_template(file_name)
- self.nodelist = t.nodelist
- new_context = context_class(_dict, **{
- 'autoescape': context.autoescape,
- 'current_app': context.current_app,
- 'use_l10n': context.use_l10n,
- 'use_tz': context.use_tz,
- })
- # Copy across the CSRF token, if present, because
- # inclusion tags are often used for forms, and we need
- # instructions for using CSRF protection to be as simple
- # as possible.
- csrf_token = context.get('csrf_token', None)
- if csrf_token is not None:
- new_context['csrf_token'] = csrf_token
- return self.nodelist.render(new_context)
-
- function_name = (name or
- getattr(func, '_decorated_function', func).__name__)
- compile_func = partial(generic_tag_compiler,
- params=params, varargs=varargs, varkw=varkw,
- defaults=defaults, name=function_name,
- takes_context=takes_context, node_class=InclusionNode)
- compile_func.__doc__ = func.__doc__
- self.tag(function_name, compile_func)
- return func
- return dec
-
-def is_library_missing(name):
- """Check if library that failed to load cannot be found under any
- templatetags directory or does exist but fails to import.
-
- Non-existing condition is checked recursively for each subpackage in cases
- like <appdir>/templatetags/subpackage/package/module.py.
- """
- # Don't bother to check if '.' is in name since any name will be prefixed
- # with some template root.
- path, module = name.rsplit('.', 1)
- try:
- package = import_module(path)
- return not module_has_submodule(package, module)
- except ImportError:
- return is_library_missing(path)
-
-def import_library(taglib_module):
- """
- Load a template tag library module.
-
- Verifies that the library contains a 'register' attribute, and
- returns that attribute as the representation of the library
- """
- try:
- mod = import_module(taglib_module)
- except ImportError as e:
- # If the ImportError is because the taglib submodule does not exist,
- # that's not an error that should be raised. If the submodule exists
- # and raised an ImportError on the attempt to load it, that we want
- # to raise.
- if is_library_missing(taglib_module):
- return None
- else:
- raise InvalidTemplateLibrary("ImportError raised loading %s: %s" %
- (taglib_module, e))
- try:
- return mod.register
- except AttributeError:
- raise InvalidTemplateLibrary("Template library %s does not have "
- "a variable named 'register'" %
- taglib_module)
-
-templatetags_modules = []
-
-def get_templatetags_modules():
- """
- Return the list of all available template tag modules.
-
- Caches the result for faster access.
- """
- global templatetags_modules
- if not templatetags_modules:
- _templatetags_modules = []
- # Populate list once per process. Mutate the local list first, and
- # then assign it to the global name to ensure there are no cases where
- # two threads try to populate it simultaneously.
- for app_module in ['django'] + list(settings.INSTALLED_APPS):
- try:
- templatetag_module = '%s.templatetags' % app_module
- import_module(templatetag_module)
- _templatetags_modules.append(templatetag_module)
- except ImportError:
- continue
- templatetags_modules = _templatetags_modules
- return templatetags_modules
-
-def get_library(library_name):
- """
- Load the template library module with the given name.
-
- If library is not already loaded loop over all templatetags modules
- to locate it.
-
- {% load somelib %} and {% load someotherlib %} loops twice.
-
- Subsequent loads eg. {% load somelib %} in the same process will grab
- the cached module from libraries.
- """
- lib = libraries.get(library_name, None)
- if not lib:
- templatetags_modules = get_templatetags_modules()
- tried_modules = []
- for module in templatetags_modules:
- taglib_module = '%s.%s' % (module, library_name)
- tried_modules.append(taglib_module)
- lib = import_library(taglib_module)
- if lib:
- libraries[library_name] = lib
- break
- if not lib:
- raise InvalidTemplateLibrary("Template library %s not found, "
- "tried %s" %
- (library_name,
- ','.join(tried_modules)))
- return lib
-
-
-def add_to_builtins(module):
- builtins.append(import_library(module))
-
-
-add_to_builtins('django.template.defaulttags')
-add_to_builtins('django.template.defaultfilters')
diff --git a/lib/python2.7/site-packages/django/template/context.py b/lib/python2.7/site-packages/django/template/context.py
deleted file mode 100644
index 1ef7e88..0000000
--- a/lib/python2.7/site-packages/django/template/context.py
+++ /dev/null
@@ -1,169 +0,0 @@
-from copy import copy
-from django.utils.module_loading import import_by_path
-
-# Cache of actual callables.
-_standard_context_processors = None
-# We need the CSRF processor no matter what the user has in their settings,
-# because otherwise it is a security vulnerability, and we can't afford to leave
-# this to human error or failure to read migration instructions.
-_builtin_context_processors = ('django.core.context_processors.csrf',)
-
-class ContextPopException(Exception):
- "pop() has been called more times than push()"
- pass
-
-class BaseContext(object):
- def __init__(self, dict_=None):
- self._reset_dicts(dict_)
-
- def _reset_dicts(self, value=None):
- builtins = {'True': True, 'False': False, 'None': None}
- self.dicts = [builtins]
- if value is not None:
- self.dicts.append(value)
-
- def __copy__(self):
- duplicate = copy(super(BaseContext, self))
- duplicate.dicts = self.dicts[:]
- return duplicate
-
- def __repr__(self):
- return repr(self.dicts)
-
- def __iter__(self):
- for d in reversed(self.dicts):
- yield d
-
- def push(self):
- d = {}
- self.dicts.append(d)
- return d
-
- def pop(self):
- if len(self.dicts) == 1:
- raise ContextPopException
- return self.dicts.pop()
-
- def __setitem__(self, key, value):
- "Set a variable in the current context"
- self.dicts[-1][key] = value
-
- def __getitem__(self, key):
- "Get a variable's value, starting at the current context and going upward"
- for d in reversed(self.dicts):
- if key in d:
- return d[key]
- raise KeyError(key)
-
- def __delitem__(self, key):
- "Delete a variable from the current context"
- del self.dicts[-1][key]
-
- def has_key(self, key):
- for d in self.dicts:
- if key in d:
- return True
- return False
-
- def __contains__(self, key):
- return self.has_key(key)
-
- def get(self, key, otherwise=None):
- for d in reversed(self.dicts):
- if key in d:
- return d[key]
- return otherwise
-
- def new(self, values=None):
- """
- Returns a new context with the same properties, but with only the
- values given in 'values' stored.
- """
- new_context = copy(self)
- new_context._reset_dicts(values)
- return new_context
-
-class Context(BaseContext):
- "A stack container for variable context"
- def __init__(self, dict_=None, autoescape=True, current_app=None,
- use_l10n=None, use_tz=None):
- self.autoescape = autoescape
- self.current_app = current_app
- self.use_l10n = use_l10n
- self.use_tz = use_tz
- self.render_context = RenderContext()
- super(Context, self).__init__(dict_)
-
- def __copy__(self):
- duplicate = super(Context, self).__copy__()
- duplicate.render_context = copy(self.render_context)
- return duplicate
-
- def update(self, other_dict):
- "Pushes other_dict to the stack of dictionaries in the Context"
- if not hasattr(other_dict, '__getitem__'):
- raise TypeError('other_dict must be a mapping (dictionary-like) object.')
- self.dicts.append(other_dict)
- return other_dict
-
-class RenderContext(BaseContext):
- """
- A stack container for storing Template state.
-
- RenderContext simplifies the implementation of template Nodes by providing a
- safe place to store state between invocations of a node's `render` method.
-
- The RenderContext also provides scoping rules that are more sensible for
- 'template local' variables. The render context stack is pushed before each
- template is rendered, creating a fresh scope with nothing in it. Name
- resolution fails if a variable is not found at the top of the RequestContext
- stack. Thus, variables are local to a specific template and don't affect the
- rendering of other templates as they would if they were stored in the normal
- template context.
- """
- def __iter__(self):
- for d in self.dicts[-1]:
- yield d
-
- def has_key(self, key):
- return key in self.dicts[-1]
-
- def get(self, key, otherwise=None):
- d = self.dicts[-1]
- if key in d:
- return d[key]
- return otherwise
-
-# This is a function rather than module-level procedural code because we only
-# want it to execute if somebody uses RequestContext.
-def get_standard_processors():
- from django.conf import settings
- global _standard_context_processors
- if _standard_context_processors is None:
- processors = []
- collect = []
- collect.extend(_builtin_context_processors)
- collect.extend(settings.TEMPLATE_CONTEXT_PROCESSORS)
- for path in collect:
- func = import_by_path(path)
- processors.append(func)
- _standard_context_processors = tuple(processors)
- return _standard_context_processors
-
-class RequestContext(Context):
- """
- This subclass of template.Context automatically populates itself using
- the processors defined in TEMPLATE_CONTEXT_PROCESSORS.
- Additional processors can be specified as a list of callables
- using the "processors" keyword argument.
- """
- def __init__(self, request, dict_=None, processors=None, current_app=None,
- use_l10n=None, use_tz=None):
- Context.__init__(self, dict_, current_app=current_app,
- use_l10n=use_l10n, use_tz=use_tz)
- if processors is None:
- processors = ()
- else:
- processors = tuple(processors)
- for processor in get_standard_processors() + processors:
- self.update(processor(request))
diff --git a/lib/python2.7/site-packages/django/template/debug.py b/lib/python2.7/site-packages/django/template/debug.py
deleted file mode 100644
index 043dd91..0000000
--- a/lib/python2.7/site-packages/django/template/debug.py
+++ /dev/null
@@ -1,101 +0,0 @@
-from django.template.base import Lexer, Parser, tag_re, NodeList, VariableNode, TemplateSyntaxError
-from django.utils.encoding import force_text
-from django.utils.html import escape
-from django.utils.safestring import SafeData, EscapeData
-from django.utils.formats import localize
-from django.utils.timezone import template_localtime
-
-
-class DebugLexer(Lexer):
- def __init__(self, template_string, origin):
- super(DebugLexer, self).__init__(template_string, origin)
-
- def tokenize(self):
- "Return a list of tokens from a given template_string"
- result, upto = [], 0
- for match in tag_re.finditer(self.template_string):
- start, end = match.span()
- if start > upto:
- result.append(self.create_token(self.template_string[upto:start], (upto, start), False))
- upto = start
- result.append(self.create_token(self.template_string[start:end], (start, end), True))
- upto = end
- last_bit = self.template_string[upto:]
- if last_bit:
- result.append(self.create_token(last_bit, (upto, upto + len(last_bit)), False))
- return result
-
- def create_token(self, token_string, source, in_tag):
- token = super(DebugLexer, self).create_token(token_string, in_tag)
- token.source = self.origin, source
- return token
-
-class DebugParser(Parser):
- def __init__(self, lexer):
- super(DebugParser, self).__init__(lexer)
- self.command_stack = []
-
- def enter_command(self, command, token):
- self.command_stack.append( (command, token.source) )
-
- def exit_command(self):
- self.command_stack.pop()
-
- def error(self, token, msg):
- return self.source_error(token.source, msg)
-
- def source_error(self, source, msg):
- e = TemplateSyntaxError(msg)
- e.django_template_source = source
- return e
-
- def create_nodelist(self):
- return DebugNodeList()
-
- def create_variable_node(self, contents):
- return DebugVariableNode(contents)
-
- def extend_nodelist(self, nodelist, node, token):
- node.source = token.source
- super(DebugParser, self).extend_nodelist(nodelist, node, token)
-
- def unclosed_block_tag(self, parse_until):
- command, source = self.command_stack.pop()
- msg = "Unclosed tag '%s'. Looking for one of: %s " % (command, ', '.join(parse_until))
- raise self.source_error(source, msg)
-
- def compile_filter_error(self, token, e):
- if not hasattr(e, 'django_template_source'):
- e.django_template_source = token.source
-
- def compile_function_error(self, token, e):
- if not hasattr(e, 'django_template_source'):
- e.django_template_source = token.source
-
-class DebugNodeList(NodeList):
- def render_node(self, node, context):
- try:
- return node.render(context)
- except Exception as e:
- if not hasattr(e, 'django_template_source'):
- e.django_template_source = node.source
- raise
-
-
-class DebugVariableNode(VariableNode):
- def render(self, context):
- try:
- output = self.filter_expression.resolve(context)
- output = template_localtime(output, use_tz=context.use_tz)
- output = localize(output, use_l10n=context.use_l10n)
- output = force_text(output)
- except UnicodeDecodeError:
- return ''
- except Exception as e:
- if not hasattr(e, 'django_template_source'):
- e.django_template_source = self.source
- raise
- if (context.autoescape and not isinstance(output, SafeData)) or isinstance(output, EscapeData):
- return escape(output)
- else:
- return output
diff --git a/lib/python2.7/site-packages/django/template/defaultfilters.py b/lib/python2.7/site-packages/django/template/defaultfilters.py
deleted file mode 100644
index 76c0121..0000000
--- a/lib/python2.7/site-packages/django/template/defaultfilters.py
+++ /dev/null
@@ -1,893 +0,0 @@
-"""Default variable filters."""
-from __future__ import unicode_literals
-
-import re
-import random as random_module
-from decimal import Decimal, InvalidOperation, Context, ROUND_HALF_UP
-from functools import wraps
-from pprint import pformat
-
-from django.template.base import Variable, Library, VariableDoesNotExist
-from django.conf import settings
-from django.utils import formats
-from django.utils.dateformat import format, time_format
-from django.utils.encoding import force_text, iri_to_uri
-from django.utils.html import (conditional_escape, escapejs, fix_ampersands,
- escape, urlize as urlize_impl, linebreaks, strip_tags, avoid_wrapping)
-from django.utils.http import urlquote
-from django.utils.text import Truncator, wrap, phone2numeric
-from django.utils.safestring import mark_safe, SafeData, mark_for_escaping
-from django.utils import six
-from django.utils.timesince import timesince, timeuntil
-from django.utils.translation import ugettext, ungettext
-from django.utils.text import normalize_newlines
-
-register = Library()
-
-#######################
-# STRING DECORATOR #
-#######################
-
-def stringfilter(func):
- """
- Decorator for filters which should only receive unicode objects. The object
- passed as the first positional argument will be converted to a unicode
- object.
- """
- def _dec(*args, **kwargs):
- if args:
- args = list(args)
- args[0] = force_text(args[0])
- if (isinstance(args[0], SafeData) and
- getattr(_dec._decorated_function, 'is_safe', False)):
- return mark_safe(func(*args, **kwargs))
- return func(*args, **kwargs)
-
- # Include a reference to the real function (used to check original
- # arguments by the template parser, and to bear the 'is_safe' attribute
- # when multiple decorators are applied).
- _dec._decorated_function = getattr(func, '_decorated_function', func)
-
- return wraps(func)(_dec)
-
-
-###################
-# STRINGS #
-###################
-
-@register.filter(is_safe=True)
-@stringfilter
-def addslashes(value):
- """
- Adds slashes before quotes. Useful for escaping strings in CSV, for
- example. Less useful for escaping JavaScript; use the ``escapejs``
- filter instead.
- """
- return value.replace('\\', '\\\\').replace('"', '\\"').replace("'", "\\'")
-
-@register.filter(is_safe=True)
-@stringfilter
-def capfirst(value):
- """Capitalizes the first character of the value."""
- return value and value[0].upper() + value[1:]
-
-@register.filter("escapejs")
-@stringfilter
-def escapejs_filter(value):
- """Hex encodes characters for use in JavaScript strings."""
- return escapejs(value)
-
-@register.filter("fix_ampersands", is_safe=True)
-@stringfilter
-def fix_ampersands_filter(value):
- """Replaces ampersands with ``&amp;`` entities."""
- return fix_ampersands(value)
-
-# Values for testing floatformat input against infinity and NaN representations,
-# which differ across platforms and Python versions. Some (i.e. old Windows
-# ones) are not recognized by Decimal but we want to return them unchanged vs.
-# returning an empty string as we do for completely invalid input. Note these
-# need to be built up from values that are not inf/nan, since inf/nan values do
-# not reload properly from .pyc files on Windows prior to some level of Python 2.5
-# (see Python Issue757815 and Issue1080440).
-pos_inf = 1e200 * 1e200
-neg_inf = -1e200 * 1e200
-nan = (1e200 * 1e200) // (1e200 * 1e200)
-special_floats = [str(pos_inf), str(neg_inf), str(nan)]
-
-@register.filter(is_safe=True)
-def floatformat(text, arg=-1):
- """
- Displays a float to a specified number of decimal places.
-
- If called without an argument, it displays the floating point number with
- one decimal place -- but only if there's a decimal place to be displayed:
-
- * num1 = 34.23234
- * num2 = 34.00000
- * num3 = 34.26000
- * {{ num1|floatformat }} displays "34.2"
- * {{ num2|floatformat }} displays "34"
- * {{ num3|floatformat }} displays "34.3"
-
- If arg is positive, it will always display exactly arg number of decimal
- places:
-
- * {{ num1|floatformat:3 }} displays "34.232"
- * {{ num2|floatformat:3 }} displays "34.000"
- * {{ num3|floatformat:3 }} displays "34.260"
-
- If arg is negative, it will display arg number of decimal places -- but
- only if there are places to be displayed:
-
- * {{ num1|floatformat:"-3" }} displays "34.232"
- * {{ num2|floatformat:"-3" }} displays "34"
- * {{ num3|floatformat:"-3" }} displays "34.260"
-
- If the input float is infinity or NaN, the (platform-dependent) string
- representation of that value will be displayed.
- """
-
- try:
- input_val = force_text(text)
- d = Decimal(input_val)
- except UnicodeEncodeError:
- return ''
- except InvalidOperation:
- if input_val in special_floats:
- return input_val
- try:
- d = Decimal(force_text(float(text)))
- except (ValueError, InvalidOperation, TypeError, UnicodeEncodeError):
- return ''
- try:
- p = int(arg)
- except ValueError:
- return input_val
-
- try:
- m = int(d) - d
- except (ValueError, OverflowError, InvalidOperation):
- return input_val
-
- if not m and p < 0:
- return mark_safe(formats.number_format('%d' % (int(d)), 0))
-
- if p == 0:
- exp = Decimal(1)
- else:
- exp = Decimal('1.0') / (Decimal(10) ** abs(p))
- try:
- # Set the precision high enough to avoid an exception, see #15789.
- tupl = d.as_tuple()
- units = len(tupl[1]) - tupl[2]
- prec = abs(p) + units + 1
-
- # Avoid conversion to scientific notation by accessing `sign`, `digits`
- # and `exponent` from `Decimal.as_tuple()` directly.
- sign, digits, exponent = d.quantize(exp, ROUND_HALF_UP,
- Context(prec=prec)).as_tuple()
- digits = [six.text_type(digit) for digit in reversed(digits)]
- while len(digits) <= abs(exponent):
- digits.append('0')
- digits.insert(-exponent, '.')
- if sign:
- digits.append('-')
- number = ''.join(reversed(digits))
- return mark_safe(formats.number_format(number, abs(p)))
- except InvalidOperation:
- return input_val
-
-@register.filter(is_safe=True)
-@stringfilter
-def iriencode(value):
- """Escapes an IRI value for use in a URL."""
- return force_text(iri_to_uri(value))
-
-@register.filter(is_safe=True, needs_autoescape=True)
-@stringfilter
-def linenumbers(value, autoescape=None):
- """Displays text with line numbers."""
- lines = value.split('\n')
- # Find the maximum width of the line count, for use with zero padding
- # string format command
- width = six.text_type(len(six.text_type(len(lines))))
- if not autoescape or isinstance(value, SafeData):
- for i, line in enumerate(lines):
- lines[i] = ("%0" + width + "d. %s") % (i + 1, line)
- else:
- for i, line in enumerate(lines):
- lines[i] = ("%0" + width + "d. %s") % (i + 1, escape(line))
- return mark_safe('\n'.join(lines))
-
-@register.filter(is_safe=True)
-@stringfilter
-def lower(value):
- """Converts a string into all lowercase."""
- return value.lower()
-
-@register.filter(is_safe=False)
-@stringfilter
-def make_list(value):
- """
- Returns the value turned into a list.
-
- For an integer, it's a list of digits.
- For a string, it's a list of characters.
- """
- return list(value)
-
-@register.filter(is_safe=True)
-@stringfilter
-def slugify(value):
- """
- Converts to lowercase, removes non-word characters (alphanumerics and
- underscores) and converts spaces to hyphens. Also strips leading and
- trailing whitespace.
- """
- from django.utils.text import slugify
- return slugify(value)
-
-@register.filter(is_safe=True)
-def stringformat(value, arg):
- """
- Formats the variable according to the arg, a string formatting specifier.
-
- This specifier uses Python string formating syntax, with the exception that
- the leading "%" is dropped.
-
- See http://docs.python.org/lib/typesseq-strings.html for documentation
- of Python string formatting
- """
- try:
- return ("%" + six.text_type(arg)) % value
- except (ValueError, TypeError):
- return ""
-
-@register.filter(is_safe=True)
-@stringfilter
-def title(value):
- """Converts a string into titlecase."""
- t = re.sub("([a-z])'([A-Z])", lambda m: m.group(0).lower(), value.title())
- return re.sub("\d([A-Z])", lambda m: m.group(0).lower(), t)
-
-@register.filter(is_safe=True)
-@stringfilter
-def truncatechars(value, arg):
- """
- Truncates a string after a certain number of characters.
-
- Argument: Number of characters to truncate after.
- """
- try:
- length = int(arg)
- except ValueError: # Invalid literal for int().
- return value # Fail silently.
- return Truncator(value).chars(length)
-
-@register.filter(is_safe=True)
-@stringfilter
-def truncatewords(value, arg):
- """
- Truncates a string after a certain number of words.
-
- Argument: Number of words to truncate after.
-
- Newlines within the string are removed.
- """
- try:
- length = int(arg)
- except ValueError: # Invalid literal for int().
- return value # Fail silently.
- return Truncator(value).words(length, truncate=' ...')
-
-@register.filter(is_safe=True)
-@stringfilter
-def truncatewords_html(value, arg):
- """
- Truncates HTML after a certain number of words.
-
- Argument: Number of words to truncate after.
-
- Newlines in the HTML are preserved.
- """
- try:
- length = int(arg)
- except ValueError: # invalid literal for int()
- return value # Fail silently.
- return Truncator(value).words(length, html=True, truncate=' ...')
-
-@register.filter(is_safe=False)
-@stringfilter
-def upper(value):
- """Converts a string into all uppercase."""
- return value.upper()
-
-@register.filter(is_safe=False)
-@stringfilter
-def urlencode(value, safe=None):
- """
- Escapes a value for use in a URL.
-
- Takes an optional ``safe`` parameter used to determine the characters which
- should not be escaped by Django's ``urlquote`` method. If not provided, the
- default safe characters will be used (but an empty string can be provided
- when *all* characters should be escaped).
- """
- kwargs = {}
- if safe is not None:
- kwargs['safe'] = safe
- return urlquote(value, **kwargs)
-
-@register.filter(is_safe=True, needs_autoescape=True)
-@stringfilter
-def urlize(value, autoescape=None):
- """Converts URLs in plain text into clickable links."""
- return mark_safe(urlize_impl(value, nofollow=True, autoescape=autoescape))
-
-@register.filter(is_safe=True, needs_autoescape=True)
-@stringfilter
-def urlizetrunc(value, limit, autoescape=None):
- """
- Converts URLs into clickable links, truncating URLs to the given character
- limit, and adding 'rel=nofollow' attribute to discourage spamming.
-
- Argument: Length to truncate URLs to.
- """
- return mark_safe(urlize_impl(value, trim_url_limit=int(limit), nofollow=True,
- autoescape=autoescape))
-
-@register.filter(is_safe=False)
-@stringfilter
-def wordcount(value):
- """Returns the number of words."""
- return len(value.split())
-
-@register.filter(is_safe=True)
-@stringfilter
-def wordwrap(value, arg):
- """
- Wraps words at specified line length.
-
- Argument: number of characters to wrap the text at.
- """
- return wrap(value, int(arg))
-
-@register.filter(is_safe=True)
-@stringfilter
-def ljust(value, arg):
- """
- Left-aligns the value in a field of a given width.
-
- Argument: field size.
- """
- return value.ljust(int(arg))
-
-@register.filter(is_safe=True)
-@stringfilter
-def rjust(value, arg):
- """
- Right-aligns the value in a field of a given width.
-
- Argument: field size.
- """
- return value.rjust(int(arg))
-
-@register.filter(is_safe=True)
-@stringfilter
-def center(value, arg):
- """Centers the value in a field of a given width."""
- return value.center(int(arg))
-
-@register.filter
-@stringfilter
-def cut(value, arg):
- """
- Removes all values of arg from the given string.
- """
- safe = isinstance(value, SafeData)
- value = value.replace(arg, '')
- if safe and arg != ';':
- return mark_safe(value)
- return value
-
-###################
-# HTML STRINGS #
-###################
-
-@register.filter("escape", is_safe=True)
-@stringfilter
-def escape_filter(value):
- """
- Marks the value as a string that should not be auto-escaped.
- """
- return mark_for_escaping(value)
-
-@register.filter(is_safe=True)
-@stringfilter
-def force_escape(value):
- """
- Escapes a string's HTML. This returns a new string containing the escaped
- characters (as opposed to "escape", which marks the content for later
- possible escaping).
- """
- return escape(value)
-
-@register.filter("linebreaks", is_safe=True, needs_autoescape=True)
-@stringfilter
-def linebreaks_filter(value, autoescape=None):
- """
- Replaces line breaks in plain text with appropriate HTML; a single
- newline becomes an HTML line break (``<br />``) and a new line
- followed by a blank line becomes a paragraph break (``</p>``).
- """
- autoescape = autoescape and not isinstance(value, SafeData)
- return mark_safe(linebreaks(value, autoescape))
-
-@register.filter(is_safe=True, needs_autoescape=True)
-@stringfilter
-def linebreaksbr(value, autoescape=None):
- """
- Converts all newlines in a piece of plain text to HTML line breaks
- (``<br />``).
- """
- autoescape = autoescape and not isinstance(value, SafeData)
- value = normalize_newlines(value)
- if autoescape:
- value = escape(value)
- return mark_safe(value.replace('\n', '<br />'))
-
-@register.filter(is_safe=True)
-@stringfilter
-def safe(value):
- """
- Marks the value as a string that should not be auto-escaped.
- """
- return mark_safe(value)
-
-@register.filter(is_safe=True)
-def safeseq(value):
- """
- A "safe" filter for sequences. Marks each element in the sequence,
- individually, as safe, after converting them to unicode. Returns a list
- with the results.
- """
- return [mark_safe(force_text(obj)) for obj in value]
-
-@register.filter(is_safe=True)
-@stringfilter
-def removetags(value, tags):
- """Removes a space separated list of [X]HTML tags from the output."""
- from django.utils.html import remove_tags
- return remove_tags(value, tags)
-
-@register.filter(is_safe=True)
-@stringfilter
-def striptags(value):
- """Strips all [X]HTML tags."""
- return strip_tags(value)
-
-###################
-# LISTS #
-###################
-
-@register.filter(is_safe=False)
-def dictsort(value, arg):
- """
- Takes a list of dicts, returns that list sorted by the property given in
- the argument.
- """
- try:
- return sorted(value, key=Variable(arg).resolve)
- except (TypeError, VariableDoesNotExist):
- return ''
-
-@register.filter(is_safe=False)
-def dictsortreversed(value, arg):
- """
- Takes a list of dicts, returns that list sorted in reverse order by the
- property given in the argument.
- """
- try:
- return sorted(value, key=Variable(arg).resolve, reverse=True)
- except (TypeError, VariableDoesNotExist):
- return ''
-
-@register.filter(is_safe=False)
-def first(value):
- """Returns the first item in a list."""
- try:
- return value[0]
- except IndexError:
- return ''
-
-@register.filter(is_safe=True, needs_autoescape=True)
-def join(value, arg, autoescape=None):
- """
- Joins a list with a string, like Python's ``str.join(list)``.
- """
- value = map(force_text, value)
- if autoescape:
- value = [conditional_escape(v) for v in value]
- try:
- data = conditional_escape(arg).join(value)
- except AttributeError: # fail silently but nicely
- return value
- return mark_safe(data)
-
-@register.filter(is_safe=True)
-def last(value):
- "Returns the last item in a list"
- try:
- return value[-1]
- except IndexError:
- return ''
-
-@register.filter(is_safe=True)
-def length(value):
- """Returns the length of the value - useful for lists."""
- try:
- return len(value)
- except (ValueError, TypeError):
- return ''
-
-@register.filter(is_safe=False)
-def length_is(value, arg):
- """Returns a boolean of whether the value's length is the argument."""
- try:
- return len(value) == int(arg)
- except (ValueError, TypeError):
- return ''
-
-@register.filter(is_safe=True)
-def random(value):
- """Returns a random item from the list."""
- return random_module.choice(value)
-
-@register.filter("slice", is_safe=True)
-def slice_filter(value, arg):
- """
- Returns a slice of the list.
-
- Uses the same syntax as Python's list slicing; see
- http://www.diveintopython3.net/native-datatypes.html#slicinglists
- for an introduction.
- """
- try:
- bits = []
- for x in arg.split(':'):
- if len(x) == 0:
- bits.append(None)
- else:
- bits.append(int(x))
- return value[slice(*bits)]
-
- except (ValueError, TypeError):
- return value # Fail silently.
-
-@register.filter(is_safe=True, needs_autoescape=True)
-def unordered_list(value, autoescape=None):
- """
- Recursively takes a self-nested list and returns an HTML unordered list --
- WITHOUT opening and closing <ul> tags.
-
- The list is assumed to be in the proper format. For example, if ``var``
- contains: ``['States', ['Kansas', ['Lawrence', 'Topeka'], 'Illinois']]``,
- then ``{{ var|unordered_list }}`` would return::
-
- <li>States
- <ul>
- <li>Kansas
- <ul>
- <li>Lawrence</li>
- <li>Topeka</li>
- </ul>
- </li>
- <li>Illinois</li>
- </ul>
- </li>
- """
- if autoescape:
- escaper = conditional_escape
- else:
- escaper = lambda x: x
- def convert_old_style_list(list_):
- """
- Converts old style lists to the new easier to understand format.
-
- The old list format looked like:
- ['Item 1', [['Item 1.1', []], ['Item 1.2', []]]
-
- And it is converted to:
- ['Item 1', ['Item 1.1', 'Item 1.2]]
- """
- if not isinstance(list_, (tuple, list)) or len(list_) != 2:
- return list_, False
- first_item, second_item = list_
- if second_item == []:
- return [first_item], True
- try:
- # see if second item is iterable
- iter(second_item)
- except TypeError:
- return list_, False
- old_style_list = True
- new_second_item = []
- for sublist in second_item:
- item, old_style_list = convert_old_style_list(sublist)
- if not old_style_list:
- break
- new_second_item.extend(item)
- if old_style_list:
- second_item = new_second_item
- return [first_item, second_item], old_style_list
- def _helper(list_, tabs=1):
- indent = '\t' * tabs
- output = []
-
- list_length = len(list_)
- i = 0
- while i < list_length:
- title = list_[i]
- sublist = ''
- sublist_item = None
- if isinstance(title, (list, tuple)):
- sublist_item = title
- title = ''
- elif i < list_length - 1:
- next_item = list_[i+1]
- if next_item and isinstance(next_item, (list, tuple)):
- # The next item is a sub-list.
- sublist_item = next_item
- # We've processed the next item now too.
- i += 1
- if sublist_item:
- sublist = _helper(sublist_item, tabs+1)
- sublist = '\n%s<ul>\n%s\n%s</ul>\n%s' % (indent, sublist,
- indent, indent)
- output.append('%s<li>%s%s</li>' % (indent,
- escaper(force_text(title)), sublist))
- i += 1
- return '\n'.join(output)
- value, converted = convert_old_style_list(value)
- return mark_safe(_helper(value))
-
-###################
-# INTEGERS #
-###################
-
-@register.filter(is_safe=False)
-def add(value, arg):
- """Adds the arg to the value."""
- try:
- return int(value) + int(arg)
- except (ValueError, TypeError):
- try:
- return value + arg
- except Exception:
- return ''
-
-@register.filter(is_safe=False)
-def get_digit(value, arg):
- """
- Given a whole number, returns the requested digit of it, where 1 is the
- right-most digit, 2 is the second-right-most digit, etc. Returns the
- original value for invalid input (if input or argument is not an integer,
- or if argument is less than 1). Otherwise, output is always an integer.
- """
- try:
- arg = int(arg)
- value = int(value)
- except ValueError:
- return value # Fail silently for an invalid argument
- if arg < 1:
- return value
- try:
- return int(str(value)[-arg])
- except IndexError:
- return 0
-
-###################
-# DATES #
-###################
-
-@register.filter(expects_localtime=True, is_safe=False)
-def date(value, arg=None):
- """Formats a date according to the given format."""
- if value in (None, ''):
- return ''
- if arg is None:
- arg = settings.DATE_FORMAT
- try:
- return formats.date_format(value, arg)
- except AttributeError:
- try:
- return format(value, arg)
- except AttributeError:
- return ''
-
-@register.filter(expects_localtime=True, is_safe=False)
-def time(value, arg=None):
- """Formats a time according to the given format."""
- if value in (None, ''):
- return ''
- if arg is None:
- arg = settings.TIME_FORMAT
- try:
- return formats.time_format(value, arg)
- except AttributeError:
- try:
- return time_format(value, arg)
- except AttributeError:
- return ''
-
-@register.filter("timesince", is_safe=False)
-def timesince_filter(value, arg=None):
- """Formats a date as the time since that date (i.e. "4 days, 6 hours")."""
- if not value:
- return ''
- try:
- if arg:
- return timesince(value, arg)
- return timesince(value)
- except (ValueError, TypeError):
- return ''
-
-@register.filter("timeuntil", is_safe=False)
-def timeuntil_filter(value, arg=None):
- """Formats a date as the time until that date (i.e. "4 days, 6 hours")."""
- if not value:
- return ''
- try:
- return timeuntil(value, arg)
- except (ValueError, TypeError):
- return ''
-
-###################
-# LOGIC #
-###################
-
-@register.filter(is_safe=False)
-def default(value, arg):
- """If value is unavailable, use given default."""
- return value or arg
-
-@register.filter(is_safe=False)
-def default_if_none(value, arg):
- """If value is None, use given default."""
- if value is None:
- return arg
- return value
-
-@register.filter(is_safe=False)
-def divisibleby(value, arg):
- """Returns True if the value is devisible by the argument."""
- return int(value) % int(arg) == 0
-
-@register.filter(is_safe=False)
-def yesno(value, arg=None):
- """
- Given a string mapping values for true, false and (optionally) None,
- returns one of those strings according to the value:
-
- ========== ====================== ==================================
- Value Argument Outputs
- ========== ====================== ==================================
- ``True`` ``"yeah,no,maybe"`` ``yeah``
- ``False`` ``"yeah,no,maybe"`` ``no``
- ``None`` ``"yeah,no,maybe"`` ``maybe``
- ``None`` ``"yeah,no"`` ``"no"`` (converts None to False
- if no mapping for None is given.
- ========== ====================== ==================================
- """
- if arg is None:
- arg = ugettext('yes,no,maybe')
- bits = arg.split(',')
- if len(bits) < 2:
- return value # Invalid arg.
- try:
- yes, no, maybe = bits
- except ValueError:
- # Unpack list of wrong size (no "maybe" value provided).
- yes, no, maybe = bits[0], bits[1], bits[1]
- if value is None:
- return maybe
- if value:
- return yes
- return no
-
-###################
-# MISC #
-###################
-
-@register.filter(is_safe=True)
-def filesizeformat(bytes):
- """
- Formats the value like a 'human-readable' file size (i.e. 13 KB, 4.1 MB,
- 102 bytes, etc).
- """
- try:
- bytes = float(bytes)
- except (TypeError,ValueError,UnicodeDecodeError):
- value = ungettext("%(size)d byte", "%(size)d bytes", 0) % {'size': 0}
- return avoid_wrapping(value)
-
- filesize_number_format = lambda value: formats.number_format(round(value, 1), 1)
-
- KB = 1<<10
- MB = 1<<20
- GB = 1<<30
- TB = 1<<40
- PB = 1<<50
-
- if bytes < KB:
- value = ungettext("%(size)d byte", "%(size)d bytes", bytes) % {'size': bytes}
- elif bytes < MB:
- value = ugettext("%s KB") % filesize_number_format(bytes / KB)
- elif bytes < GB:
- value = ugettext("%s MB") % filesize_number_format(bytes / MB)
- elif bytes < TB:
- value = ugettext("%s GB") % filesize_number_format(bytes / GB)
- elif bytes < PB:
- value = ugettext("%s TB") % filesize_number_format(bytes / TB)
- else:
- value = ugettext("%s PB") % filesize_number_format(bytes / PB)
-
- return avoid_wrapping(value)
-
-@register.filter(is_safe=False)
-def pluralize(value, arg='s'):
- """
- Returns a plural suffix if the value is not 1. By default, 's' is used as
- the suffix:
-
- * If value is 0, vote{{ value|pluralize }} displays "0 votes".
- * If value is 1, vote{{ value|pluralize }} displays "1 vote".
- * If value is 2, vote{{ value|pluralize }} displays "2 votes".
-
- If an argument is provided, that string is used instead:
-
- * If value is 0, class{{ value|pluralize:"es" }} displays "0 classes".
- * If value is 1, class{{ value|pluralize:"es" }} displays "1 class".
- * If value is 2, class{{ value|pluralize:"es" }} displays "2 classes".
-
- If the provided argument contains a comma, the text before the comma is
- used for the singular case and the text after the comma is used for the
- plural case:
-
- * If value is 0, cand{{ value|pluralize:"y,ies" }} displays "0 candies".
- * If value is 1, cand{{ value|pluralize:"y,ies" }} displays "1 candy".
- * If value is 2, cand{{ value|pluralize:"y,ies" }} displays "2 candies".
- """
- if not ',' in arg:
- arg = ',' + arg
- bits = arg.split(',')
- if len(bits) > 2:
- return ''
- singular_suffix, plural_suffix = bits[:2]
-
- try:
- if int(value) != 1:
- return plural_suffix
- except ValueError: # Invalid string that's not a number.
- pass
- except TypeError: # Value isn't a string or a number; maybe it's a list?
- try:
- if len(value) != 1:
- return plural_suffix
- except TypeError: # len() of unsized object.
- pass
- return singular_suffix
-
-@register.filter("phone2numeric", is_safe=True)
-def phone2numeric_filter(value):
- """Takes a phone number and converts it in to its numerical equivalent."""
- return phone2numeric(value)
-
-@register.filter(is_safe=True)
-def pprint(value):
- """A wrapper around pprint.pprint -- for debugging, really."""
- try:
- return pformat(value)
- except Exception as e:
- return "Error in formatting: %s" % force_text(e, errors="replace")
diff --git a/lib/python2.7/site-packages/django/template/defaulttags.py b/lib/python2.7/site-packages/django/template/defaulttags.py
deleted file mode 100644
index 554c7bc..0000000
--- a/lib/python2.7/site-packages/django/template/defaulttags.py
+++ /dev/null
@@ -1,1409 +0,0 @@
-"""Default tags used by the template system, available to all templates."""
-from __future__ import unicode_literals
-
-import os
-import sys
-import re
-from datetime import datetime
-from itertools import groupby, cycle as itertools_cycle
-import warnings
-
-from django.conf import settings
-from django.template.base import (Node, NodeList, Template, Context, Library,
- TemplateSyntaxError, VariableDoesNotExist, InvalidTemplateLibrary,
- BLOCK_TAG_START, BLOCK_TAG_END, VARIABLE_TAG_START, VARIABLE_TAG_END,
- SINGLE_BRACE_START, SINGLE_BRACE_END, COMMENT_TAG_START, COMMENT_TAG_END,
- VARIABLE_ATTRIBUTE_SEPARATOR, get_library, token_kwargs, kwarg_re,
- render_value_in_context)
-from django.template.smartif import IfParser, Literal
-from django.template.defaultfilters import date
-from django.utils.encoding import smart_text
-from django.utils.safestring import mark_safe
-from django.utils.html import format_html
-from django.utils import six
-from django.utils import timezone
-
-register = Library()
-
-class AutoEscapeControlNode(Node):
- """Implements the actions of the autoescape tag."""
- def __init__(self, setting, nodelist):
- self.setting, self.nodelist = setting, nodelist
-
- def render(self, context):
- old_setting = context.autoescape
- context.autoescape = self.setting
- output = self.nodelist.render(context)
- context.autoescape = old_setting
- if self.setting:
- return mark_safe(output)
- else:
- return output
-
-class CommentNode(Node):
- def render(self, context):
- return ''
-
-class CsrfTokenNode(Node):
- def render(self, context):
- csrf_token = context.get('csrf_token', None)
- if csrf_token:
- if csrf_token == 'NOTPROVIDED':
- return format_html("")
- else:
- return format_html("<input type='hidden' name='csrfmiddlewaretoken' value='{0}' />", csrf_token)
- else:
- # It's very probable that the token is missing because of
- # misconfiguration, so we raise a warning
- from django.conf import settings
- if settings.DEBUG:
- warnings.warn("A {% csrf_token %} was used in a template, but the context did not provide the value. This is usually caused by not using RequestContext.")
- return ''
-
-class CycleNode(Node):
- def __init__(self, cyclevars, variable_name=None, silent=False, escape=False):
- self.cyclevars = cyclevars
- self.variable_name = variable_name
- self.silent = silent
- self.escape = escape # only while the "future" version exists
-
- def render(self, context):
- if self not in context.render_context:
- # First time the node is rendered in template
- context.render_context[self] = itertools_cycle(self.cyclevars)
- cycle_iter = context.render_context[self]
- value = next(cycle_iter).resolve(context)
- if self.variable_name:
- context[self.variable_name] = value
- if self.silent:
- return ''
- if not self.escape:
- value = mark_safe(value)
- return render_value_in_context(value, context)
-
-class DebugNode(Node):
- def render(self, context):
- from pprint import pformat
- output = [pformat(val) for val in context]
- output.append('\n\n')
- output.append(pformat(sys.modules))
- return ''.join(output)
-
-class FilterNode(Node):
- def __init__(self, filter_expr, nodelist):
- self.filter_expr, self.nodelist = filter_expr, nodelist
-
- def render(self, context):
- output = self.nodelist.render(context)
- # Apply filters.
- context.update({'var': output})
- filtered = self.filter_expr.resolve(context)
- context.pop()
- return filtered
-
-class FirstOfNode(Node):
- def __init__(self, variables, escape=False):
- self.vars = variables
- self.escape = escape # only while the "future" version exists
-
- def render(self, context):
- for var in self.vars:
- value = var.resolve(context, True)
- if value:
- if not self.escape:
- value = mark_safe(value)
- return render_value_in_context(value, context)
- return ''
-
-class ForNode(Node):
- child_nodelists = ('nodelist_loop', 'nodelist_empty')
-
- def __init__(self, loopvars, sequence, is_reversed, nodelist_loop, nodelist_empty=None):
- self.loopvars, self.sequence = loopvars, sequence
- self.is_reversed = is_reversed
- self.nodelist_loop = nodelist_loop
- if nodelist_empty is None:
- self.nodelist_empty = NodeList()
- else:
- self.nodelist_empty = nodelist_empty
-
- def __repr__(self):
- reversed_text = ' reversed' if self.is_reversed else ''
- return "<For Node: for %s in %s, tail_len: %d%s>" % \
- (', '.join(self.loopvars), self.sequence, len(self.nodelist_loop),
- reversed_text)
-
- def __iter__(self):
- for node in self.nodelist_loop:
- yield node
- for node in self.nodelist_empty:
- yield node
-
- def render(self, context):
- if 'forloop' in context:
- parentloop = context['forloop']
- else:
- parentloop = {}
- context.push()
- try:
- values = self.sequence.resolve(context, True)
- except VariableDoesNotExist:
- values = []
- if values is None:
- values = []
- if not hasattr(values, '__len__'):
- values = list(values)
- len_values = len(values)
- if len_values < 1:
- context.pop()
- return self.nodelist_empty.render(context)
- nodelist = NodeList()
- if self.is_reversed:
- values = reversed(values)
- unpack = len(self.loopvars) > 1
- # Create a forloop value in the context. We'll update counters on each
- # iteration just below.
- loop_dict = context['forloop'] = {'parentloop': parentloop}
- for i, item in enumerate(values):
- # Shortcuts for current loop iteration number.
- loop_dict['counter0'] = i
- loop_dict['counter'] = i+1
- # Reverse counter iteration numbers.
- loop_dict['revcounter'] = len_values - i
- loop_dict['revcounter0'] = len_values - i - 1
- # Boolean values designating first and last times through loop.
- loop_dict['first'] = (i == 0)
- loop_dict['last'] = (i == len_values - 1)
-
- pop_context = False
- if unpack:
- # If there are multiple loop variables, unpack the item into
- # them.
- try:
- unpacked_vars = dict(zip(self.loopvars, item))
- except TypeError:
- pass
- else:
- pop_context = True
- context.update(unpacked_vars)
- else:
- context[self.loopvars[0]] = item
- # In TEMPLATE_DEBUG mode provide source of the node which
- # actually raised the exception
- if settings.TEMPLATE_DEBUG:
- for node in self.nodelist_loop:
- try:
- nodelist.append(node.render(context))
- except Exception as e:
- if not hasattr(e, 'django_template_source'):
- e.django_template_source = node.source
- raise
- else:
- for node in self.nodelist_loop:
- nodelist.append(node.render(context))
- if pop_context:
- # The loop variables were pushed on to the context so pop them
- # off again. This is necessary because the tag lets the length
- # of loopvars differ to the length of each set of items and we
- # don't want to leave any vars from the previous loop on the
- # context.
- context.pop()
- context.pop()
- return nodelist.render(context)
-
-class IfChangedNode(Node):
- child_nodelists = ('nodelist_true', 'nodelist_false')
-
- def __init__(self, nodelist_true, nodelist_false, *varlist):
- self.nodelist_true, self.nodelist_false = nodelist_true, nodelist_false
- self._varlist = varlist
-
- def render(self, context):
- # Init state storage
- state_frame = self._get_context_stack_frame(context)
- if self not in state_frame:
- state_frame[self] = None
-
- nodelist_true_output = None
- try:
- if self._varlist:
- # Consider multiple parameters. This automatically behaves
- # like an OR evaluation of the multiple variables.
- compare_to = [var.resolve(context, True) for var in self._varlist]
- else:
- # The "{% ifchanged %}" syntax (without any variables) compares the rendered output.
- compare_to = nodelist_true_output = self.nodelist_true.render(context)
- except VariableDoesNotExist:
- compare_to = None
-
- if compare_to != state_frame[self]:
- state_frame[self] = compare_to
- return nodelist_true_output or self.nodelist_true.render(context) # render true block if not already rendered
- elif self.nodelist_false:
- return self.nodelist_false.render(context)
- return ''
-
- def _get_context_stack_frame(self, context):
- # The Context object behaves like a stack where each template tag can create a new scope.
- # Find the place where to store the state to detect changes.
- if 'forloop' in context:
- # Ifchanged is bound to the local for loop.
- # When there is a loop-in-loop, the state is bound to the inner loop,
- # so it resets when the outer loop continues.
- return context['forloop']
- else:
- # Using ifchanged outside loops. Effectively this is a no-op because the state is associated with 'self'.
- return context.render_context
-
-class IfEqualNode(Node):
- child_nodelists = ('nodelist_true', 'nodelist_false')
-
- def __init__(self, var1, var2, nodelist_true, nodelist_false, negate):
- self.var1, self.var2 = var1, var2
- self.nodelist_true, self.nodelist_false = nodelist_true, nodelist_false
- self.negate = negate
-
- def __repr__(self):
- return "<IfEqualNode>"
-
- def render(self, context):
- val1 = self.var1.resolve(context, True)
- val2 = self.var2.resolve(context, True)
- if (self.negate and val1 != val2) or (not self.negate and val1 == val2):
- return self.nodelist_true.render(context)
- return self.nodelist_false.render(context)
-
-class IfNode(Node):
-
- def __init__(self, conditions_nodelists):
- self.conditions_nodelists = conditions_nodelists
-
- def __repr__(self):
- return "<IfNode>"
-
- def __iter__(self):
- for _, nodelist in self.conditions_nodelists:
- for node in nodelist:
- yield node
-
- @property
- def nodelist(self):
- return NodeList(node for _, nodelist in self.conditions_nodelists for node in nodelist)
-
- def render(self, context):
- for condition, nodelist in self.conditions_nodelists:
-
- if condition is not None: # if / elif clause
- try:
- match = condition.eval(context)
- except VariableDoesNotExist:
- match = None
- else: # else clause
- match = True
-
- if match:
- return nodelist.render(context)
-
- return ''
-
-class RegroupNode(Node):
- def __init__(self, target, expression, var_name):
- self.target, self.expression = target, expression
- self.var_name = var_name
-
- def resolve_expression(self, obj, context):
- # This method is called for each object in self.target. See regroup()
- # for the reason why we temporarily put the object in the context.
- context[self.var_name] = obj
- return self.expression.resolve(context, True)
-
- def render(self, context):
- obj_list = self.target.resolve(context, True)
- if obj_list == None:
- # target variable wasn't found in context; fail silently.
- context[self.var_name] = []
- return ''
- # List of dictionaries in the format:
- # {'grouper': 'key', 'list': [list of contents]}.
- context[self.var_name] = [
- {'grouper': key, 'list': list(val)}
- for key, val in
- groupby(obj_list, lambda obj: self.resolve_expression(obj, context))
- ]
- return ''
-
-def include_is_allowed(filepath):
- filepath = os.path.abspath(filepath)
- for root in settings.ALLOWED_INCLUDE_ROOTS:
- if filepath.startswith(root):
- return True
- return False
-
-class SsiNode(Node):
- def __init__(self, filepath, parsed):
- self.filepath = filepath
- self.parsed = parsed
-
- def render(self, context):
- filepath = self.filepath.resolve(context)
-
- if not include_is_allowed(filepath):
- if settings.DEBUG:
- return "[Didn't have permission to include file]"
- else:
- return '' # Fail silently for invalid includes.
- try:
- with open(filepath, 'r') as fp:
- output = fp.read()
- except IOError:
- output = ''
- if self.parsed:
- try:
- t = Template(output, name=filepath)
- return t.render(context)
- except TemplateSyntaxError as e:
- if settings.DEBUG:
- return "[Included template had syntax error: %s]" % e
- else:
- return '' # Fail silently for invalid included templates.
- return output
-
-class LoadNode(Node):
- def render(self, context):
- return ''
-
-class NowNode(Node):
- def __init__(self, format_string):
- self.format_string = format_string
-
- def render(self, context):
- tzinfo = timezone.get_current_timezone() if settings.USE_TZ else None
- return date(datetime.now(tz=tzinfo), self.format_string)
-
-class SpacelessNode(Node):
- def __init__(self, nodelist):
- self.nodelist = nodelist
-
- def render(self, context):
- from django.utils.html import strip_spaces_between_tags
- return strip_spaces_between_tags(self.nodelist.render(context).strip())
-
-class TemplateTagNode(Node):
- mapping = {'openblock': BLOCK_TAG_START,
- 'closeblock': BLOCK_TAG_END,
- 'openvariable': VARIABLE_TAG_START,
- 'closevariable': VARIABLE_TAG_END,
- 'openbrace': SINGLE_BRACE_START,
- 'closebrace': SINGLE_BRACE_END,
- 'opencomment': COMMENT_TAG_START,
- 'closecomment': COMMENT_TAG_END,
- }
-
- def __init__(self, tagtype):
- self.tagtype = tagtype
-
- def render(self, context):
- return self.mapping.get(self.tagtype, '')
-
-class URLNode(Node):
- def __init__(self, view_name, args, kwargs, asvar):
- self.view_name = view_name
- self.args = args
- self.kwargs = kwargs
- self.asvar = asvar
-
- def render(self, context):
- from django.core.urlresolvers import reverse, NoReverseMatch
- args = [arg.resolve(context) for arg in self.args]
- kwargs = dict([(smart_text(k, 'ascii'), v.resolve(context))
- for k, v in self.kwargs.items()])
-
- view_name = self.view_name.resolve(context)
-
- if not view_name:
- raise NoReverseMatch("'url' requires a non-empty first argument. "
- "The syntax changed in Django 1.5, see the docs.")
-
- # Try to look up the URL twice: once given the view name, and again
- # relative to what we guess is the "main" app. If they both fail,
- # re-raise the NoReverseMatch unless we're using the
- # {% url ... as var %} construct in which case return nothing.
- url = ''
- try:
- url = reverse(view_name, args=args, kwargs=kwargs, current_app=context.current_app)
- except NoReverseMatch:
- exc_info = sys.exc_info()
- if settings.SETTINGS_MODULE:
- project_name = settings.SETTINGS_MODULE.split('.')[0]
- try:
- url = reverse(project_name + '.' + view_name,
- args=args, kwargs=kwargs,
- current_app=context.current_app)
- except NoReverseMatch:
- if self.asvar is None:
- # Re-raise the original exception, not the one with
- # the path relative to the project. This makes a
- # better error message.
- six.reraise(*exc_info)
- else:
- if self.asvar is None:
- raise
-
- if self.asvar:
- context[self.asvar] = url
- return ''
- else:
- return url
-
-class VerbatimNode(Node):
- def __init__(self, content):
- self.content = content
-
- def render(self, context):
- return self.content
-
-class WidthRatioNode(Node):
- def __init__(self, val_expr, max_expr, max_width):
- self.val_expr = val_expr
- self.max_expr = max_expr
- self.max_width = max_width
-
- def render(self, context):
- try:
- value = self.val_expr.resolve(context)
- max_value = self.max_expr.resolve(context)
- max_width = int(self.max_width.resolve(context))
- except VariableDoesNotExist:
- return ''
- except (ValueError, TypeError):
- raise TemplateSyntaxError("widthratio final argument must be a number")
- try:
- value = float(value)
- max_value = float(max_value)
- ratio = (value / max_value) * max_width
- except ZeroDivisionError:
- return '0'
- except (ValueError, TypeError):
- return ''
- return str(int(round(ratio)))
-
-class WithNode(Node):
- def __init__(self, var, name, nodelist, extra_context=None):
- self.nodelist = nodelist
- # var and name are legacy attributes, being left in case they are used
- # by third-party subclasses of this Node.
- self.extra_context = extra_context or {}
- if name:
- self.extra_context[name] = var
-
- def __repr__(self):
- return "<WithNode>"
-
- def render(self, context):
- values = dict([(key, val.resolve(context)) for key, val in
- six.iteritems(self.extra_context)])
- context.update(values)
- output = self.nodelist.render(context)
- context.pop()
- return output
-
-@register.tag
-def autoescape(parser, token):
- """
- Force autoescape behavior for this block.
- """
- # token.split_contents() isn't useful here because this tag doesn't accept variable as arguments
- args = token.contents.split()
- if len(args) != 2:
- raise TemplateSyntaxError("'autoescape' tag requires exactly one argument.")
- arg = args[1]
- if arg not in ('on', 'off'):
- raise TemplateSyntaxError("'autoescape' argument should be 'on' or 'off'")
- nodelist = parser.parse(('endautoescape',))
- parser.delete_first_token()
- return AutoEscapeControlNode((arg == 'on'), nodelist)
-
-@register.tag
-def comment(parser, token):
- """
- Ignores everything between ``{% comment %}`` and ``{% endcomment %}``.
- """
- parser.skip_past('endcomment')
- return CommentNode()
-
-@register.tag
-def cycle(parser, token, escape=False):
- """
- Cycles among the given strings each time this tag is encountered.
-
- Within a loop, cycles among the given strings each time through
- the loop::
-
- {% for o in some_list %}
- <tr class="{% cycle 'row1' 'row2' %}">
- ...
- </tr>
- {% endfor %}
-
- Outside of a loop, give the values a unique name the first time you call
- it, then use that name each sucessive time through::
-
- <tr class="{% cycle 'row1' 'row2' 'row3' as rowcolors %}">...</tr>
- <tr class="{% cycle rowcolors %}">...</tr>
- <tr class="{% cycle rowcolors %}">...</tr>
-
- You can use any number of values, separated by spaces. Commas can also
- be used to separate values; if a comma is used, the cycle values are
- interpreted as literal strings.
-
- The optional flag "silent" can be used to prevent the cycle declaration
- from returning any value::
-
- {% for o in some_list %}
- {% cycle 'row1' 'row2' as rowcolors silent %}
- <tr class="{{ rowcolors }}">{% include "subtemplate.html " %}</tr>
- {% endfor %}
-
- """
- if not escape:
- warnings.warn(
- "'The `cycle` template tag is changing to escape its arguments; "
- "the non-autoescaping version is deprecated. Load it "
- "from the `future` tag library to start using the new behavior.",
- PendingDeprecationWarning, stacklevel=2)
-
- # Note: This returns the exact same node on each {% cycle name %} call;
- # that is, the node object returned from {% cycle a b c as name %} and the
- # one returned from {% cycle name %} are the exact same object. This
- # shouldn't cause problems (heh), but if it does, now you know.
- #
- # Ugly hack warning: This stuffs the named template dict into parser so
- # that names are only unique within each template (as opposed to using
- # a global variable, which would make cycle names have to be unique across
- # *all* templates.
-
- args = token.split_contents()
-
- if len(args) < 2:
- raise TemplateSyntaxError("'cycle' tag requires at least two arguments")
-
- if ',' in args[1]:
- # Backwards compatibility: {% cycle a,b %} or {% cycle a,b as foo %}
- # case.
- args[1:2] = ['"%s"' % arg for arg in args[1].split(",")]
-
- if len(args) == 2:
- # {% cycle foo %} case.
- name = args[1]
- if not hasattr(parser, '_namedCycleNodes'):
- raise TemplateSyntaxError("No named cycles in template. '%s' is not defined" % name)
- if not name in parser._namedCycleNodes:
- raise TemplateSyntaxError("Named cycle '%s' does not exist" % name)
- return parser._namedCycleNodes[name]
-
- as_form = False
-
- if len(args) > 4:
- # {% cycle ... as foo [silent] %} case.
- if args[-3] == "as":
- if args[-1] != "silent":
- raise TemplateSyntaxError("Only 'silent' flag is allowed after cycle's name, not '%s'." % args[-1])
- as_form = True
- silent = True
- args = args[:-1]
- elif args[-2] == "as":
- as_form = True
- silent = False
-
- if as_form:
- name = args[-1]
- values = [parser.compile_filter(arg) for arg in args[1:-2]]
- node = CycleNode(values, name, silent=silent, escape=escape)
- if not hasattr(parser, '_namedCycleNodes'):
- parser._namedCycleNodes = {}
- parser._namedCycleNodes[name] = node
- else:
- values = [parser.compile_filter(arg) for arg in args[1:]]
- node = CycleNode(values, escape=escape)
- return node
-
-@register.tag
-def csrf_token(parser, token):
- return CsrfTokenNode()
-
-@register.tag
-def debug(parser, token):
- """
- Outputs a whole load of debugging information, including the current
- context and imported modules.
-
- Sample usage::
-
- <pre>
- {% debug %}
- </pre>
- """
- return DebugNode()
-
-@register.tag('filter')
-def do_filter(parser, token):
- """
- Filters the contents of the block through variable filters.
-
- Filters can also be piped through each other, and they can have
- arguments -- just like in variable syntax.
-
- Sample usage::
-
- {% filter force_escape|lower %}
- This text will be HTML-escaped, and will appear in lowercase.
- {% endfilter %}
-
- Note that the ``escape`` and ``safe`` filters are not acceptable arguments.
- Instead, use the ``autoescape`` tag to manage autoescaping for blocks of
- template code.
- """
- # token.split_contents() isn't useful here because this tag doesn't accept variable as arguments
- _, rest = token.contents.split(None, 1)
- filter_expr = parser.compile_filter("var|%s" % (rest))
- for func, unused in filter_expr.filters:
- filter_name = getattr(func, '_filter_name', None)
- if filter_name in ('escape', 'safe'):
- raise TemplateSyntaxError('"filter %s" is not permitted. Use the "autoescape" tag instead.' % filter_name)
- nodelist = parser.parse(('endfilter',))
- parser.delete_first_token()
- return FilterNode(filter_expr, nodelist)
-
-@register.tag
-def firstof(parser, token, escape=False):
- """
- Outputs the first variable passed that is not False, without escaping.
-
- Outputs nothing if all the passed variables are False.
-
- Sample usage::
-
- {% firstof var1 var2 var3 %}
-
- This is equivalent to::
-
- {% if var1 %}
- {{ var1|safe }}
- {% elif var2 %}
- {{ var2|safe }}
- {% elif var3 %}
- {{ var3|safe }}
- {% endif %}
-
- but obviously much cleaner!
-
- You can also use a literal string as a fallback value in case all
- passed variables are False::
-
- {% firstof var1 var2 var3 "fallback value" %}
-
- If you want to escape the output, use a filter tag::
-
- {% filter force_escape %}
- {% firstof var1 var2 var3 "fallback value" %}
- {% endfilter %}
-
- """
- if not escape:
- warnings.warn(
- "'The `firstof` template tag is changing to escape its arguments; "
- "the non-autoescaping version is deprecated. Load it "
- "from the `future` tag library to start using the new behavior.",
- PendingDeprecationWarning, stacklevel=2)
-
- bits = token.split_contents()[1:]
- if len(bits) < 1:
- raise TemplateSyntaxError("'firstof' statement requires at least one argument")
- return FirstOfNode([parser.compile_filter(bit) for bit in bits], escape=escape)
-
-@register.tag('for')
-def do_for(parser, token):
- """
- Loops over each item in an array.
-
- For example, to display a list of athletes given ``athlete_list``::
-
- <ul>
- {% for athlete in athlete_list %}
- <li>{{ athlete.name }}</li>
- {% endfor %}
- </ul>
-
- You can loop over a list in reverse by using
- ``{% for obj in list reversed %}``.
-
- You can also unpack multiple values from a two-dimensional array::
-
- {% for key,value in dict.items %}
- {{ key }}: {{ value }}
- {% endfor %}
-
- The ``for`` tag can take an optional ``{% empty %}`` clause that will
- be displayed if the given array is empty or could not be found::
-
- <ul>
- {% for athlete in athlete_list %}
- <li>{{ athlete.name }}</li>
- {% empty %}
- <li>Sorry, no athletes in this list.</li>
- {% endfor %}
- <ul>
-
- The above is equivalent to -- but shorter, cleaner, and possibly faster
- than -- the following::
-
- <ul>
- {% if althete_list %}
- {% for athlete in athlete_list %}
- <li>{{ athlete.name }}</li>
- {% endfor %}
- {% else %}
- <li>Sorry, no athletes in this list.</li>
- {% endif %}
- </ul>
-
- The for loop sets a number of variables available within the loop:
-
- ========================== ================================================
- Variable Description
- ========================== ================================================
- ``forloop.counter`` The current iteration of the loop (1-indexed)
- ``forloop.counter0`` The current iteration of the loop (0-indexed)
- ``forloop.revcounter`` The number of iterations from the end of the
- loop (1-indexed)
- ``forloop.revcounter0`` The number of iterations from the end of the
- loop (0-indexed)
- ``forloop.first`` True if this is the first time through the loop
- ``forloop.last`` True if this is the last time through the loop
- ``forloop.parentloop`` For nested loops, this is the loop "above" the
- current one
- ========================== ================================================
-
- """
- bits = token.split_contents()
- if len(bits) < 4:
- raise TemplateSyntaxError("'for' statements should have at least four"
- " words: %s" % token.contents)
-
- is_reversed = bits[-1] == 'reversed'
- in_index = -3 if is_reversed else -2
- if bits[in_index] != 'in':
- raise TemplateSyntaxError("'for' statements should use the format"
- " 'for x in y': %s" % token.contents)
-
- loopvars = re.split(r' *, *', ' '.join(bits[1:in_index]))
- for var in loopvars:
- if not var or ' ' in var:
- raise TemplateSyntaxError("'for' tag received an invalid argument:"
- " %s" % token.contents)
-
- sequence = parser.compile_filter(bits[in_index+1])
- nodelist_loop = parser.parse(('empty', 'endfor',))
- token = parser.next_token()
- if token.contents == 'empty':
- nodelist_empty = parser.parse(('endfor',))
- parser.delete_first_token()
- else:
- nodelist_empty = None
- return ForNode(loopvars, sequence, is_reversed, nodelist_loop, nodelist_empty)
-
-def do_ifequal(parser, token, negate):
- bits = list(token.split_contents())
- if len(bits) != 3:
- raise TemplateSyntaxError("%r takes two arguments" % bits[0])
- end_tag = 'end' + bits[0]
- nodelist_true = parser.parse(('else', end_tag))
- token = parser.next_token()
- if token.contents == 'else':
- nodelist_false = parser.parse((end_tag,))
- parser.delete_first_token()
- else:
- nodelist_false = NodeList()
- val1 = parser.compile_filter(bits[1])
- val2 = parser.compile_filter(bits[2])
- return IfEqualNode(val1, val2, nodelist_true, nodelist_false, negate)
-
-@register.tag
-def ifequal(parser, token):
- """
- Outputs the contents of the block if the two arguments equal each other.
-
- Examples::
-
- {% ifequal user.id comment.user_id %}
- ...
- {% endifequal %}
-
- {% ifnotequal user.id comment.user_id %}
- ...
- {% else %}
- ...
- {% endifnotequal %}
- """
- return do_ifequal(parser, token, False)
-
-@register.tag
-def ifnotequal(parser, token):
- """
- Outputs the contents of the block if the two arguments are not equal.
- See ifequal.
- """
- return do_ifequal(parser, token, True)
-
-class TemplateLiteral(Literal):
- def __init__(self, value, text):
- self.value = value
- self.text = text # for better error messages
-
- def display(self):
- return self.text
-
- def eval(self, context):
- return self.value.resolve(context, ignore_failures=True)
-
-class TemplateIfParser(IfParser):
- error_class = TemplateSyntaxError
-
- def __init__(self, parser, *args, **kwargs):
- self.template_parser = parser
- super(TemplateIfParser, self).__init__(*args, **kwargs)
-
- def create_var(self, value):
- return TemplateLiteral(self.template_parser.compile_filter(value), value)
-
-@register.tag('if')
-def do_if(parser, token):
- """
- The ``{% if %}`` tag evaluates a variable, and if that variable is "true"
- (i.e., exists, is not empty, and is not a false boolean value), the
- contents of the block are output:
-
- ::
-
- {% if athlete_list %}
- Number of athletes: {{ athlete_list|count }}
- {% elif athlete_in_locker_room_list %}
- Athletes should be out of the locker room soon!
- {% else %}
- No athletes.
- {% endif %}
-
- In the above, if ``athlete_list`` is not empty, the number of athletes will
- be displayed by the ``{{ athlete_list|count }}`` variable.
-
- As you can see, the ``if`` tag may take one or several `` {% elif %}``
- clauses, as well as an ``{% else %}`` clause that will be displayed if all
- previous conditions fail. These clauses are optional.
-
- ``if`` tags may use ``or``, ``and`` or ``not`` to test a number of
- variables or to negate a given variable::
-
- {% if not athlete_list %}
- There are no athletes.
- {% endif %}
-
- {% if athlete_list or coach_list %}
- There are some athletes or some coaches.
- {% endif %}
-
- {% if athlete_list and coach_list %}
- Both atheletes and coaches are available.
- {% endif %}
-
- {% if not athlete_list or coach_list %}
- There are no athletes, or there are some coaches.
- {% endif %}
-
- {% if athlete_list and not coach_list %}
- There are some athletes and absolutely no coaches.
- {% endif %}
-
- Comparison operators are also available, and the use of filters is also
- allowed, for example::
-
- {% if articles|length >= 5 %}...{% endif %}
-
- Arguments and operators _must_ have a space between them, so
- ``{% if 1>2 %}`` is not a valid if tag.
-
- All supported operators are: ``or``, ``and``, ``in``, ``not in``
- ``==`` (or ``=``), ``!=``, ``>``, ``>=``, ``<`` and ``<=``.
-
- Operator precedence follows Python.
- """
- # {% if ... %}
- bits = token.split_contents()[1:]
- condition = TemplateIfParser(parser, bits).parse()
- nodelist = parser.parse(('elif', 'else', 'endif'))
- conditions_nodelists = [(condition, nodelist)]
- token = parser.next_token()
-
- # {% elif ... %} (repeatable)
- while token.contents.startswith('elif'):
- bits = token.split_contents()[1:]
- condition = TemplateIfParser(parser, bits).parse()
- nodelist = parser.parse(('elif', 'else', 'endif'))
- conditions_nodelists.append((condition, nodelist))
- token = parser.next_token()
-
- # {% else %} (optional)
- if token.contents == 'else':
- nodelist = parser.parse(('endif',))
- conditions_nodelists.append((None, nodelist))
- token = parser.next_token()
-
- # {% endif %}
- assert token.contents == 'endif'
-
- return IfNode(conditions_nodelists)
-
-
-@register.tag
-def ifchanged(parser, token):
- """
- Checks if a value has changed from the last iteration of a loop.
-
- The ``{% ifchanged %}`` block tag is used within a loop. It has two
- possible uses.
-
- 1. Checks its own rendered contents against its previous state and only
- displays the content if it has changed. For example, this displays a
- list of days, only displaying the month if it changes::
-
- <h1>Archive for {{ year }}</h1>
-
- {% for date in days %}
- {% ifchanged %}<h3>{{ date|date:"F" }}</h3>{% endifchanged %}
- <a href="{{ date|date:"M/d"|lower }}/">{{ date|date:"j" }}</a>
- {% endfor %}
-
- 2. If given one or more variables, check whether any variable has changed.
- For example, the following shows the date every time it changes, while
- showing the hour if either the hour or the date has changed::
-
- {% for date in days %}
- {% ifchanged date.date %} {{ date.date }} {% endifchanged %}
- {% ifchanged date.hour date.date %}
- {{ date.hour }}
- {% endifchanged %}
- {% endfor %}
- """
- bits = token.split_contents()
- nodelist_true = parser.parse(('else', 'endifchanged'))
- token = parser.next_token()
- if token.contents == 'else':
- nodelist_false = parser.parse(('endifchanged',))
- parser.delete_first_token()
- else:
- nodelist_false = NodeList()
- values = [parser.compile_filter(bit) for bit in bits[1:]]
- return IfChangedNode(nodelist_true, nodelist_false, *values)
-
-@register.tag
-def ssi(parser, token):
- """
- Outputs the contents of a given file into the page.
-
- Like a simple "include" tag, the ``ssi`` tag includes the contents
- of another file -- which must be specified using an absolute path --
- in the current page::
-
- {% ssi "/home/html/ljworld.com/includes/right_generic.html" %}
-
- If the optional "parsed" parameter is given, the contents of the included
- file are evaluated as template code, with the current context::
-
- {% ssi "/home/html/ljworld.com/includes/right_generic.html" parsed %}
- """
- bits = token.split_contents()
- parsed = False
- if len(bits) not in (2, 3):
- raise TemplateSyntaxError("'ssi' tag takes one argument: the path to"
- " the file to be included")
- if len(bits) == 3:
- if bits[2] == 'parsed':
- parsed = True
- else:
- raise TemplateSyntaxError("Second (optional) argument to %s tag"
- " must be 'parsed'" % bits[0])
- filepath = parser.compile_filter(bits[1])
- return SsiNode(filepath, parsed)
-
-@register.tag
-def load(parser, token):
- """
- Loads a custom template tag set.
-
- For example, to load the template tags in
- ``django/templatetags/news/photos.py``::
-
- {% load news.photos %}
-
- Can also be used to load an individual tag/filter from
- a library::
-
- {% load byline from news %}
-
- """
- # token.split_contents() isn't useful here because this tag doesn't accept variable as arguments
- bits = token.contents.split()
- if len(bits) >= 4 and bits[-2] == "from":
- try:
- taglib = bits[-1]
- lib = get_library(taglib)
- except InvalidTemplateLibrary as e:
- raise TemplateSyntaxError("'%s' is not a valid tag library: %s" %
- (taglib, e))
- else:
- temp_lib = Library()
- for name in bits[1:-2]:
- if name in lib.tags:
- temp_lib.tags[name] = lib.tags[name]
- # a name could be a tag *and* a filter, so check for both
- if name in lib.filters:
- temp_lib.filters[name] = lib.filters[name]
- elif name in lib.filters:
- temp_lib.filters[name] = lib.filters[name]
- else:
- raise TemplateSyntaxError("'%s' is not a valid tag or filter in tag library '%s'" %
- (name, taglib))
- parser.add_library(temp_lib)
- else:
- for taglib in bits[1:]:
- # add the library to the parser
- try:
- lib = get_library(taglib)
- parser.add_library(lib)
- except InvalidTemplateLibrary as e:
- raise TemplateSyntaxError("'%s' is not a valid tag library: %s" %
- (taglib, e))
- return LoadNode()
-
-@register.tag
-def now(parser, token):
- """
- Displays the date, formatted according to the given string.
-
- Uses the same format as PHP's ``date()`` function; see http://php.net/date
- for all the possible values.
-
- Sample usage::
-
- It is {% now "jS F Y H:i" %}
- """
- bits = token.split_contents()
- if len(bits) != 2:
- raise TemplateSyntaxError("'now' statement takes one argument")
- format_string = bits[1][1:-1]
- return NowNode(format_string)
-
-@register.tag
-def regroup(parser, token):
- """
- Regroups a list of alike objects by a common attribute.
-
- This complex tag is best illustrated by use of an example: say that
- ``people`` is a list of ``Person`` objects that have ``first_name``,
- ``last_name``, and ``gender`` attributes, and you'd like to display a list
- that looks like:
-
- * Male:
- * George Bush
- * Bill Clinton
- * Female:
- * Margaret Thatcher
- * Colendeeza Rice
- * Unknown:
- * Pat Smith
-
- The following snippet of template code would accomplish this dubious task::
-
- {% regroup people by gender as grouped %}
- <ul>
- {% for group in grouped %}
- <li>{{ group.grouper }}
- <ul>
- {% for item in group.list %}
- <li>{{ item }}</li>
- {% endfor %}
- </ul>
- {% endfor %}
- </ul>
-
- As you can see, ``{% regroup %}`` populates a variable with a list of
- objects with ``grouper`` and ``list`` attributes. ``grouper`` contains the
- item that was grouped by; ``list`` contains the list of objects that share
- that ``grouper``. In this case, ``grouper`` would be ``Male``, ``Female``
- and ``Unknown``, and ``list`` is the list of people with those genders.
-
- Note that ``{% regroup %}`` does not work when the list to be grouped is not
- sorted by the key you are grouping by! This means that if your list of
- people was not sorted by gender, you'd need to make sure it is sorted
- before using it, i.e.::
-
- {% regroup people|dictsort:"gender" by gender as grouped %}
-
- """
- bits = token.split_contents()
- if len(bits) != 6:
- raise TemplateSyntaxError("'regroup' tag takes five arguments")
- target = parser.compile_filter(bits[1])
- if bits[2] != 'by':
- raise TemplateSyntaxError("second argument to 'regroup' tag must be 'by'")
- if bits[4] != 'as':
- raise TemplateSyntaxError("next-to-last argument to 'regroup' tag must"
- " be 'as'")
- var_name = bits[5]
- # RegroupNode will take each item in 'target', put it in the context under
- # 'var_name', evaluate 'var_name'.'expression' in the current context, and
- # group by the resulting value. After all items are processed, it will
- # save the final result in the context under 'var_name', thus clearing the
- # temporary values. This hack is necessary because the template engine
- # doesn't provide a context-aware equivalent of Python's getattr.
- expression = parser.compile_filter(var_name +
- VARIABLE_ATTRIBUTE_SEPARATOR +
- bits[3])
- return RegroupNode(target, expression, var_name)
-
-@register.tag
-def spaceless(parser, token):
- """
- Removes whitespace between HTML tags, including tab and newline characters.
-
- Example usage::
-
- {% spaceless %}
- <p>
- <a href="foo/">Foo</a>
- </p>
- {% endspaceless %}
-
- This example would return this HTML::
-
- <p><a href="foo/">Foo</a></p>
-
- Only space between *tags* is normalized -- not space between tags and text.
- In this example, the space around ``Hello`` won't be stripped::
-
- {% spaceless %}
- <strong>
- Hello
- </strong>
- {% endspaceless %}
- """
- nodelist = parser.parse(('endspaceless',))
- parser.delete_first_token()
- return SpacelessNode(nodelist)
-
-@register.tag
-def templatetag(parser, token):
- """
- Outputs one of the bits used to compose template tags.
-
- Since the template system has no concept of "escaping", to display one of
- the bits used in template tags, you must use the ``{% templatetag %}`` tag.
-
- The argument tells which template bit to output:
-
- ================== =======
- Argument Outputs
- ================== =======
- ``openblock`` ``{%``
- ``closeblock`` ``%}``
- ``openvariable`` ``{{``
- ``closevariable`` ``}}``
- ``openbrace`` ``{``
- ``closebrace`` ``}``
- ``opencomment`` ``{#``
- ``closecomment`` ``#}``
- ================== =======
- """
- # token.split_contents() isn't useful here because this tag doesn't accept variable as arguments
- bits = token.contents.split()
- if len(bits) != 2:
- raise TemplateSyntaxError("'templatetag' statement takes one argument")
- tag = bits[1]
- if tag not in TemplateTagNode.mapping:
- raise TemplateSyntaxError("Invalid templatetag argument: '%s'."
- " Must be one of: %s" %
- (tag, list(TemplateTagNode.mapping)))
- return TemplateTagNode(tag)
-
-@register.tag
-def url(parser, token):
- """
- Returns an absolute URL matching given view with its parameters.
-
- This is a way to define links that aren't tied to a particular URL
- configuration::
-
- {% url "path.to.some_view" arg1 arg2 %}
-
- or
-
- {% url "path.to.some_view" name1=value1 name2=value2 %}
-
- The first argument is a path to a view. It can be an absolute Python path
- or just ``app_name.view_name`` without the project name if the view is
- located inside the project.
-
- Other arguments are space-separated values that will be filled in place of
- positional and keyword arguments in the URL. Don't mix positional and
- keyword arguments.
-
- All arguments for the URL should be present.
-
- For example if you have a view ``app_name.client`` taking client's id and
- the corresponding line in a URLconf looks like this::
-
- ('^client/(\d+)/$', 'app_name.client')
-
- and this app's URLconf is included into the project's URLconf under some
- path::
-
- ('^clients/', include('project_name.app_name.urls'))
-
- then in a template you can create a link for a certain client like this::
-
- {% url "app_name.client" client.id %}
-
- The URL will look like ``/clients/client/123/``.
-
- The first argument can also be a named URL instead of the Python path to
- the view callable. For example if the URLconf entry looks like this::
-
- url('^client/(\d+)/$', name='client-detail-view')
-
- then in the template you can use::
-
- {% url "client-detail-view" client.id %}
-
- There is even another possible value type for the first argument. It can be
- the name of a template variable that will be evaluated to obtain the view
- name or the URL name, e.g.::
-
- {% with view_path="app_name.client" %}
- {% url view_path client.id %}
- {% endwith %}
-
- or,
-
- {% with url_name="client-detail-view" %}
- {% url url_name client.id %}
- {% endwith %}
-
- """
- bits = token.split_contents()
- if len(bits) < 2:
- raise TemplateSyntaxError("'%s' takes at least one argument"
- " (path to a view)" % bits[0])
- try:
- viewname = parser.compile_filter(bits[1])
- except TemplateSyntaxError as exc:
- exc.args = (exc.args[0] + ". "
- "The syntax of 'url' changed in Django 1.5, see the docs."),
- raise
- args = []
- kwargs = {}
- asvar = None
- bits = bits[2:]
- if len(bits) >= 2 and bits[-2] == 'as':
- asvar = bits[-1]
- bits = bits[:-2]
-
- if len(bits):
- for bit in bits:
- match = kwarg_re.match(bit)
- if not match:
- raise TemplateSyntaxError("Malformed arguments to url tag")
- name, value = match.groups()
- if name:
- kwargs[name] = parser.compile_filter(value)
- else:
- args.append(parser.compile_filter(value))
-
- return URLNode(viewname, args, kwargs, asvar)
-
-@register.tag
-def verbatim(parser, token):
- """
- Stops the template engine from rendering the contents of this block tag.
-
- Usage::
-
- {% verbatim %}
- {% don't process this %}
- {% endverbatim %}
-
- You can also designate a specific closing tag block (allowing the
- unrendered use of ``{% endverbatim %}``)::
-
- {% verbatim myblock %}
- ...
- {% endverbatim myblock %}
- """
- nodelist = parser.parse(('endverbatim',))
- parser.delete_first_token()
- return VerbatimNode(nodelist.render(Context()))
-
-@register.tag
-def widthratio(parser, token):
- """
- For creating bar charts and such, this tag calculates the ratio of a given
- value to a maximum value, and then applies that ratio to a constant.
-
- For example::
-
- <img src='bar.gif' height='10' width='{% widthratio this_value max_value max_width %}' />
-
- If ``this_value`` is 175, ``max_value`` is 200, and ``max_width`` is 100,
- the image in the above example will be 88 pixels wide
- (because 175/200 = .875; .875 * 100 = 87.5 which is rounded up to 88).
- """
- bits = token.split_contents()
- if len(bits) != 4:
- raise TemplateSyntaxError("widthratio takes three arguments")
- tag, this_value_expr, max_value_expr, max_width = bits
-
- return WidthRatioNode(parser.compile_filter(this_value_expr),
- parser.compile_filter(max_value_expr),
- parser.compile_filter(max_width))
-
-@register.tag('with')
-def do_with(parser, token):
- """
- Adds one or more values to the context (inside of this block) for caching
- and easy access.
-
- For example::
-
- {% with total=person.some_sql_method %}
- {{ total }} object{{ total|pluralize }}
- {% endwith %}
-
- Multiple values can be added to the context::
-
- {% with foo=1 bar=2 %}
- ...
- {% endwith %}
-
- The legacy format of ``{% with person.some_sql_method as total %}`` is
- still accepted.
- """
- bits = token.split_contents()
- remaining_bits = bits[1:]
- extra_context = token_kwargs(remaining_bits, parser, support_legacy=True)
- if not extra_context:
- raise TemplateSyntaxError("%r expected at least one variable "
- "assignment" % bits[0])
- if remaining_bits:
- raise TemplateSyntaxError("%r received an invalid token: %r" %
- (bits[0], remaining_bits[0]))
- nodelist = parser.parse(('endwith',))
- parser.delete_first_token()
- return WithNode(None, None, nodelist, extra_context=extra_context)
diff --git a/lib/python2.7/site-packages/django/template/loader.py b/lib/python2.7/site-packages/django/template/loader.py
deleted file mode 100644
index 6df4e43..0000000
--- a/lib/python2.7/site-packages/django/template/loader.py
+++ /dev/null
@@ -1,188 +0,0 @@
-# Wrapper for loading templates from storage of some sort (e.g. filesystem, database).
-#
-# This uses the TEMPLATE_LOADERS setting, which is a list of loaders to use.
-# Each loader is expected to have this interface:
-#
-# callable(name, dirs=[])
-#
-# name is the template name.
-# dirs is an optional list of directories to search instead of TEMPLATE_DIRS.
-#
-# The loader should return a tuple of (template_source, path). The path returned
-# might be shown to the user for debugging purposes, so it should identify where
-# the template was loaded from.
-#
-# A loader may return an already-compiled template instead of the actual
-# template source. In that case the path returned should be None, since the
-# path information is associated with the template during the compilation,
-# which has already been done.
-#
-# Each loader should have an "is_usable" attribute set. This is a boolean that
-# specifies whether the loader can be used in this Python installation. Each
-# loader is responsible for setting this when it's initialized.
-#
-# For example, the eggs loader (which is capable of loading templates from
-# Python eggs) sets is_usable to False if the "pkg_resources" module isn't
-# installed, because pkg_resources is necessary to read eggs.
-
-from django.core.exceptions import ImproperlyConfigured
-from django.template.base import Origin, Template, Context, TemplateDoesNotExist, add_to_builtins
-from django.conf import settings
-from django.utils.module_loading import import_by_path
-from django.utils import six
-
-template_source_loaders = None
-
-class BaseLoader(object):
- is_usable = False
-
- def __init__(self, *args, **kwargs):
- pass
-
- def __call__(self, template_name, template_dirs=None):
- return self.load_template(template_name, template_dirs)
-
- def load_template(self, template_name, template_dirs=None):
- source, display_name = self.load_template_source(template_name, template_dirs)
- origin = make_origin(display_name, self.load_template_source, template_name, template_dirs)
- try:
- template = get_template_from_string(source, origin, template_name)
- return template, None
- except TemplateDoesNotExist:
- # If compiling the template we found raises TemplateDoesNotExist, back off to
- # returning the source and display name for the template we were asked to load.
- # This allows for correct identification (later) of the actual template that does
- # not exist.
- return source, display_name
-
- def load_template_source(self, template_name, template_dirs=None):
- """
- Returns a tuple containing the source and origin for the given template
- name.
-
- """
- raise NotImplementedError
-
- def reset(self):
- """
- Resets any state maintained by the loader instance (e.g., cached
- templates or cached loader modules).
-
- """
- pass
-
-class LoaderOrigin(Origin):
- def __init__(self, display_name, loader, name, dirs):
- super(LoaderOrigin, self).__init__(display_name)
- self.loader, self.loadname, self.dirs = loader, name, dirs
-
- def reload(self):
- return self.loader(self.loadname, self.dirs)[0]
-
-def make_origin(display_name, loader, name, dirs):
- if settings.TEMPLATE_DEBUG and display_name:
- return LoaderOrigin(display_name, loader, name, dirs)
- else:
- return None
-
-def find_template_loader(loader):
- if isinstance(loader, (tuple, list)):
- loader, args = loader[0], loader[1:]
- else:
- args = []
- if isinstance(loader, six.string_types):
- TemplateLoader = import_by_path(loader)
-
- if hasattr(TemplateLoader, 'load_template_source'):
- func = TemplateLoader(*args)
- else:
- # Try loading module the old way - string is full path to callable
- if args:
- raise ImproperlyConfigured("Error importing template source loader %s - can't pass arguments to function-based loader." % loader)
- func = TemplateLoader
-
- if not func.is_usable:
- import warnings
- warnings.warn("Your TEMPLATE_LOADERS setting includes %r, but your Python installation doesn't support that type of template loading. Consider removing that line from TEMPLATE_LOADERS." % loader)
- return None
- else:
- return func
- else:
- raise ImproperlyConfigured('Loader does not define a "load_template" callable template source loader')
-
-def find_template(name, dirs=None):
- # Calculate template_source_loaders the first time the function is executed
- # because putting this logic in the module-level namespace may cause
- # circular import errors. See Django ticket #1292.
- global template_source_loaders
- if template_source_loaders is None:
- loaders = []
- for loader_name in settings.TEMPLATE_LOADERS:
- loader = find_template_loader(loader_name)
- if loader is not None:
- loaders.append(loader)
- template_source_loaders = tuple(loaders)
- for loader in template_source_loaders:
- try:
- source, display_name = loader(name, dirs)
- return (source, make_origin(display_name, loader, name, dirs))
- except TemplateDoesNotExist:
- pass
- raise TemplateDoesNotExist(name)
-
-def get_template(template_name):
- """
- Returns a compiled Template object for the given template name,
- handling template inheritance recursively.
- """
- template, origin = find_template(template_name)
- if not hasattr(template, 'render'):
- # template needs to be compiled
- template = get_template_from_string(template, origin, template_name)
- return template
-
-def get_template_from_string(source, origin=None, name=None):
- """
- Returns a compiled Template object for the given template code,
- handling template inheritance recursively.
- """
- return Template(source, origin, name)
-
-def render_to_string(template_name, dictionary=None, context_instance=None):
- """
- Loads the given template_name and renders it with the given dictionary as
- context. The template_name may be a string to load a single template using
- get_template, or it may be a tuple to use select_template to find one of
- the templates in the list. Returns a string.
- """
- dictionary = dictionary or {}
- if isinstance(template_name, (list, tuple)):
- t = select_template(template_name)
- else:
- t = get_template(template_name)
- if not context_instance:
- return t.render(Context(dictionary))
- # Add the dictionary to the context stack, ensuring it gets removed again
- # to keep the context_instance in the same state it started in.
- context_instance.update(dictionary)
- try:
- return t.render(context_instance)
- finally:
- context_instance.pop()
-
-def select_template(template_name_list):
- "Given a list of template names, returns the first that can be loaded."
- if not template_name_list:
- raise TemplateDoesNotExist("No template names provided")
- not_found = []
- for template_name in template_name_list:
- try:
- return get_template(template_name)
- except TemplateDoesNotExist as e:
- if e.args[0] not in not_found:
- not_found.append(e.args[0])
- continue
- # If we get here, none of the templates could be loaded
- raise TemplateDoesNotExist(', '.join(not_found))
-
-add_to_builtins('django.template.loader_tags')
diff --git a/lib/python2.7/site-packages/django/template/loader_tags.py b/lib/python2.7/site-packages/django/template/loader_tags.py
deleted file mode 100644
index 85ffcf1..0000000
--- a/lib/python2.7/site-packages/django/template/loader_tags.py
+++ /dev/null
@@ -1,265 +0,0 @@
-from collections import defaultdict
-
-from django.conf import settings
-from django.template.base import TemplateSyntaxError, Library, Node, TextNode,\
- token_kwargs, Variable
-from django.template.loader import get_template
-from django.utils.safestring import mark_safe
-from django.utils import six
-
-register = Library()
-
-BLOCK_CONTEXT_KEY = 'block_context'
-
-class ExtendsError(Exception):
- pass
-
-class BlockContext(object):
- def __init__(self):
- # Dictionary of FIFO queues.
- self.blocks = defaultdict(list)
-
- def add_blocks(self, blocks):
- for name, block in six.iteritems(blocks):
- self.blocks[name].insert(0, block)
-
- def pop(self, name):
- try:
- return self.blocks[name].pop()
- except IndexError:
- return None
-
- def push(self, name, block):
- self.blocks[name].append(block)
-
- def get_block(self, name):
- try:
- return self.blocks[name][-1]
- except IndexError:
- return None
-
-class BlockNode(Node):
- def __init__(self, name, nodelist, parent=None):
- self.name, self.nodelist, self.parent = name, nodelist, parent
-
- def __repr__(self):
- return "<Block Node: %s. Contents: %r>" % (self.name, self.nodelist)
-
- def render(self, context):
- block_context = context.render_context.get(BLOCK_CONTEXT_KEY)
- context.push()
- if block_context is None:
- context['block'] = self
- result = self.nodelist.render(context)
- else:
- push = block = block_context.pop(self.name)
- if block is None:
- block = self
- # Create new block so we can store context without thread-safety issues.
- block = BlockNode(block.name, block.nodelist)
- block.context = context
- context['block'] = block
- result = block.nodelist.render(context)
- if push is not None:
- block_context.push(self.name, push)
- context.pop()
- return result
-
- def super(self):
- render_context = self.context.render_context
- if (BLOCK_CONTEXT_KEY in render_context and
- render_context[BLOCK_CONTEXT_KEY].get_block(self.name) is not None):
- return mark_safe(self.render(self.context))
- return ''
-
-class ExtendsNode(Node):
- must_be_first = True
-
- def __init__(self, nodelist, parent_name, template_dirs=None):
- self.nodelist = nodelist
- self.parent_name = parent_name
- self.template_dirs = template_dirs
- self.blocks = dict([(n.name, n) for n in nodelist.get_nodes_by_type(BlockNode)])
-
- def __repr__(self):
- return '<ExtendsNode: extends %s>' % self.parent_name.token
-
- def get_parent(self, context):
- parent = self.parent_name.resolve(context)
- if not parent:
- error_msg = "Invalid template name in 'extends' tag: %r." % parent
- if self.parent_name.filters or\
- isinstance(self.parent_name.var, Variable):
- error_msg += " Got this from the '%s' variable." %\
- self.parent_name.token
- raise TemplateSyntaxError(error_msg)
- if hasattr(parent, 'render'):
- return parent # parent is a Template object
- return get_template(parent)
-
- def render(self, context):
- compiled_parent = self.get_parent(context)
-
- if BLOCK_CONTEXT_KEY not in context.render_context:
- context.render_context[BLOCK_CONTEXT_KEY] = BlockContext()
- block_context = context.render_context[BLOCK_CONTEXT_KEY]
-
- # Add the block nodes from this node to the block context
- block_context.add_blocks(self.blocks)
-
- # If this block's parent doesn't have an extends node it is the root,
- # and its block nodes also need to be added to the block context.
- for node in compiled_parent.nodelist:
- # The ExtendsNode has to be the first non-text node.
- if not isinstance(node, TextNode):
- if not isinstance(node, ExtendsNode):
- blocks = dict([(n.name, n) for n in
- compiled_parent.nodelist.get_nodes_by_type(BlockNode)])
- block_context.add_blocks(blocks)
- break
-
- # Call Template._render explicitly so the parser context stays
- # the same.
- return compiled_parent._render(context)
-
-class BaseIncludeNode(Node):
- def __init__(self, *args, **kwargs):
- self.extra_context = kwargs.pop('extra_context', {})
- self.isolated_context = kwargs.pop('isolated_context', False)
- super(BaseIncludeNode, self).__init__(*args, **kwargs)
-
- def render_template(self, template, context):
- values = dict([(name, var.resolve(context)) for name, var
- in six.iteritems(self.extra_context)])
- if self.isolated_context:
- return template.render(context.new(values))
- context.update(values)
- output = template.render(context)
- context.pop()
- return output
-
-class ConstantIncludeNode(BaseIncludeNode):
- def __init__(self, template_path, *args, **kwargs):
- super(ConstantIncludeNode, self).__init__(*args, **kwargs)
- try:
- t = get_template(template_path)
- self.template = t
- except:
- if settings.TEMPLATE_DEBUG:
- raise
- self.template = None
-
- def render(self, context):
- if not self.template:
- return ''
- return self.render_template(self.template, context)
-
-class IncludeNode(BaseIncludeNode):
- def __init__(self, template_name, *args, **kwargs):
- super(IncludeNode, self).__init__(*args, **kwargs)
- self.template_name = template_name
-
- def render(self, context):
- try:
- template_name = self.template_name.resolve(context)
- template = get_template(template_name)
- return self.render_template(template, context)
- except:
- if settings.TEMPLATE_DEBUG:
- raise
- return ''
-
-@register.tag('block')
-def do_block(parser, token):
- """
- Define a block that can be overridden by child templates.
- """
- # token.split_contents() isn't useful here because this tag doesn't accept variable as arguments
- bits = token.contents.split()
- if len(bits) != 2:
- raise TemplateSyntaxError("'%s' tag takes only one argument" % bits[0])
- block_name = bits[1]
- # Keep track of the names of BlockNodes found in this template, so we can
- # check for duplication.
- try:
- if block_name in parser.__loaded_blocks:
- raise TemplateSyntaxError("'%s' tag with name '%s' appears more than once" % (bits[0], block_name))
- parser.__loaded_blocks.append(block_name)
- except AttributeError: # parser.__loaded_blocks isn't a list yet
- parser.__loaded_blocks = [block_name]
- nodelist = parser.parse(('endblock',))
-
- # This check is kept for backwards-compatibility. See #3100.
- endblock = parser.next_token()
- acceptable_endblocks = ('endblock', 'endblock %s' % block_name)
- if endblock.contents not in acceptable_endblocks:
- parser.invalid_block_tag(endblock, 'endblock', acceptable_endblocks)
-
- return BlockNode(block_name, nodelist)
-
-@register.tag('extends')
-def do_extends(parser, token):
- """
- Signal that this template extends a parent template.
-
- This tag may be used in two ways: ``{% extends "base" %}`` (with quotes)
- uses the literal value "base" as the name of the parent template to extend,
- or ``{% extends variable %}`` uses the value of ``variable`` as either the
- name of the parent template to extend (if it evaluates to a string) or as
- the parent template itself (if it evaluates to a Template object).
- """
- bits = token.split_contents()
- if len(bits) != 2:
- raise TemplateSyntaxError("'%s' takes one argument" % bits[0])
- parent_name = parser.compile_filter(bits[1])
- nodelist = parser.parse()
- if nodelist.get_nodes_by_type(ExtendsNode):
- raise TemplateSyntaxError("'%s' cannot appear more than once in the same template" % bits[0])
- return ExtendsNode(nodelist, parent_name)
-
-@register.tag('include')
-def do_include(parser, token):
- """
- Loads a template and renders it with the current context. You can pass
- additional context using keyword arguments.
-
- Example::
-
- {% include "foo/some_include" %}
- {% include "foo/some_include" with bar="BAZZ!" baz="BING!" %}
-
- Use the ``only`` argument to exclude the current context when rendering
- the included template::
-
- {% include "foo/some_include" only %}
- {% include "foo/some_include" with bar="1" only %}
- """
- bits = token.split_contents()
- if len(bits) < 2:
- raise TemplateSyntaxError("%r tag takes at least one argument: the name of the template to be included." % bits[0])
- options = {}
- remaining_bits = bits[2:]
- while remaining_bits:
- option = remaining_bits.pop(0)
- if option in options:
- raise TemplateSyntaxError('The %r option was specified more '
- 'than once.' % option)
- if option == 'with':
- value = token_kwargs(remaining_bits, parser, support_legacy=False)
- if not value:
- raise TemplateSyntaxError('"with" in %r tag needs at least '
- 'one keyword argument.' % bits[0])
- elif option == 'only':
- value = True
- else:
- raise TemplateSyntaxError('Unknown argument for %r tag: %r.' %
- (bits[0], option))
- options[option] = value
- isolated_context = options.get('only', False)
- namemap = options.get('with', {})
- path = bits[1]
- if path[0] in ('"', "'") and path[-1] == path[0]:
- return ConstantIncludeNode(path[1:-1], extra_context=namemap,
- isolated_context=isolated_context)
- return IncludeNode(parser.compile_filter(bits[1]), extra_context=namemap,
- isolated_context=isolated_context)
diff --git a/lib/python2.7/site-packages/django/template/loaders/__init__.py b/lib/python2.7/site-packages/django/template/loaders/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/template/loaders/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/template/loaders/app_directories.py b/lib/python2.7/site-packages/django/template/loaders/app_directories.py
deleted file mode 100644
index c82817a..0000000
--- a/lib/python2.7/site-packages/django/template/loaders/app_directories.py
+++ /dev/null
@@ -1,63 +0,0 @@
-"""
-Wrapper for loading templates from "templates" directories in INSTALLED_APPS
-packages.
-"""
-
-import os
-import sys
-
-from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured
-from django.template.base import TemplateDoesNotExist
-from django.template.loader import BaseLoader
-from django.utils._os import safe_join
-from django.utils.importlib import import_module
-from django.utils import six
-
-# At compile time, cache the directories to search.
-if six.PY2:
- fs_encoding = sys.getfilesystemencoding() or sys.getdefaultencoding()
-app_template_dirs = []
-for app in settings.INSTALLED_APPS:
- try:
- mod = import_module(app)
- except ImportError as e:
- raise ImproperlyConfigured('ImportError %s: %s' % (app, e.args[0]))
- template_dir = os.path.join(os.path.dirname(mod.__file__), 'templates')
- if os.path.isdir(template_dir):
- if six.PY2:
- template_dir = template_dir.decode(fs_encoding)
- app_template_dirs.append(template_dir)
-
-# It won't change, so convert it to a tuple to save memory.
-app_template_dirs = tuple(app_template_dirs)
-
-class Loader(BaseLoader):
- is_usable = True
-
- def get_template_sources(self, template_name, template_dirs=None):
- """
- Returns the absolute paths to "template_name", when appended to each
- directory in "template_dirs". Any paths that don't lie inside one of the
- template dirs are excluded from the result set, for security reasons.
- """
- if not template_dirs:
- template_dirs = app_template_dirs
- for template_dir in template_dirs:
- try:
- yield safe_join(template_dir, template_name)
- except UnicodeDecodeError:
- # The template dir name was a bytestring that wasn't valid UTF-8.
- raise
- except ValueError:
- # The joined path was located outside of template_dir.
- pass
-
- def load_template_source(self, template_name, template_dirs=None):
- for filepath in self.get_template_sources(template_name, template_dirs):
- try:
- with open(filepath, 'rb') as fp:
- return (fp.read().decode(settings.FILE_CHARSET), filepath)
- except IOError:
- pass
- raise TemplateDoesNotExist(template_name)
diff --git a/lib/python2.7/site-packages/django/template/loaders/cached.py b/lib/python2.7/site-packages/django/template/loaders/cached.py
deleted file mode 100644
index c61045d..0000000
--- a/lib/python2.7/site-packages/django/template/loaders/cached.py
+++ /dev/null
@@ -1,64 +0,0 @@
-"""
-Wrapper class that takes a list of template loaders as an argument and attempts
-to load templates from them in order, caching the result.
-"""
-
-import hashlib
-from django.template.base import TemplateDoesNotExist
-from django.template.loader import BaseLoader, get_template_from_string, find_template_loader, make_origin
-from django.utils.encoding import force_bytes
-
-class Loader(BaseLoader):
- is_usable = True
-
- def __init__(self, loaders):
- self.template_cache = {}
- self._loaders = loaders
- self._cached_loaders = []
-
- @property
- def loaders(self):
- # Resolve loaders on demand to avoid circular imports
- if not self._cached_loaders:
- # Set self._cached_loaders atomically. Otherwise, another thread
- # could see an incomplete list. See #17303.
- cached_loaders = []
- for loader in self._loaders:
- cached_loaders.append(find_template_loader(loader))
- self._cached_loaders = cached_loaders
- return self._cached_loaders
-
- def find_template(self, name, dirs=None):
- for loader in self.loaders:
- try:
- template, display_name = loader(name, dirs)
- return (template, make_origin(display_name, loader, name, dirs))
- except TemplateDoesNotExist:
- pass
- raise TemplateDoesNotExist(name)
-
- def load_template(self, template_name, template_dirs=None):
- key = template_name
- if template_dirs:
- # If template directories were specified, use a hash to differentiate
- key = '-'.join([template_name, hashlib.sha1(force_bytes('|'.join(template_dirs))).hexdigest()])
-
- try:
- template = self.template_cache[key]
- except KeyError:
- template, origin = self.find_template(template_name, template_dirs)
- if not hasattr(template, 'render'):
- try:
- template = get_template_from_string(template, origin, template_name)
- except TemplateDoesNotExist:
- # If compiling the template we found raises TemplateDoesNotExist,
- # back off to returning the source and display name for the template
- # we were asked to load. This allows for correct identification (later)
- # of the actual template that does not exist.
- return template, origin
- self.template_cache[key] = template
- return template, None
-
- def reset(self):
- "Empty the template cache."
- self.template_cache.clear()
diff --git a/lib/python2.7/site-packages/django/template/loaders/eggs.py b/lib/python2.7/site-packages/django/template/loaders/eggs.py
deleted file mode 100644
index 7da1803..0000000
--- a/lib/python2.7/site-packages/django/template/loaders/eggs.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# Wrapper for loading templates from eggs via pkg_resources.resource_string.
-from __future__ import unicode_literals
-
-try:
- from pkg_resources import resource_string
-except ImportError:
- resource_string = None
-
-from django.conf import settings
-from django.template.base import TemplateDoesNotExist
-from django.template.loader import BaseLoader
-from django.utils import six
-
-class Loader(BaseLoader):
- is_usable = resource_string is not None
-
- def load_template_source(self, template_name, template_dirs=None):
- """
- Loads templates from Python eggs via pkg_resource.resource_string.
-
- For every installed app, it tries to get the resource (app, template_name).
- """
- if resource_string is not None:
- pkg_name = 'templates/' + template_name
- for app in settings.INSTALLED_APPS:
- try:
- resource = resource_string(app, pkg_name)
- except Exception:
- continue
- if six.PY2:
- resource = resource.decode(settings.FILE_CHARSET)
- return (resource, 'egg:%s:%s' % (app, pkg_name))
- raise TemplateDoesNotExist(template_name)
diff --git a/lib/python2.7/site-packages/django/template/loaders/filesystem.py b/lib/python2.7/site-packages/django/template/loaders/filesystem.py
deleted file mode 100644
index 1a7f0d2..0000000
--- a/lib/python2.7/site-packages/django/template/loaders/filesystem.py
+++ /dev/null
@@ -1,46 +0,0 @@
-"""
-Wrapper for loading templates from the filesystem.
-"""
-
-from django.conf import settings
-from django.template.base import TemplateDoesNotExist
-from django.template.loader import BaseLoader
-from django.utils._os import safe_join
-
-class Loader(BaseLoader):
- is_usable = True
-
- def get_template_sources(self, template_name, template_dirs=None):
- """
- Returns the absolute paths to "template_name", when appended to each
- directory in "template_dirs". Any paths that don't lie inside one of the
- template dirs are excluded from the result set, for security reasons.
- """
- if not template_dirs:
- template_dirs = settings.TEMPLATE_DIRS
- for template_dir in template_dirs:
- try:
- yield safe_join(template_dir, template_name)
- except UnicodeDecodeError:
- # The template dir name was a bytestring that wasn't valid UTF-8.
- raise
- except ValueError:
- # The joined path was located outside of this particular
- # template_dir (it might be inside another one, so this isn't
- # fatal).
- pass
-
- def load_template_source(self, template_name, template_dirs=None):
- tried = []
- for filepath in self.get_template_sources(template_name, template_dirs):
- try:
- with open(filepath, 'rb') as fp:
- return (fp.read().decode(settings.FILE_CHARSET), filepath)
- except IOError:
- tried.append(filepath)
- if tried:
- error_msg = "Tried %s" % tried
- else:
- error_msg = "Your TEMPLATE_DIRS setting is empty. Change it to point to at least one template directory."
- raise TemplateDoesNotExist(error_msg)
- load_template_source.is_usable = True
diff --git a/lib/python2.7/site-packages/django/template/response.py b/lib/python2.7/site-packages/django/template/response.py
deleted file mode 100644
index 3b3b413..0000000
--- a/lib/python2.7/site-packages/django/template/response.py
+++ /dev/null
@@ -1,159 +0,0 @@
-from django.http import HttpResponse
-from django.template import loader, Context, RequestContext
-from django.utils import six
-
-
-class ContentNotRenderedError(Exception):
- pass
-
-
-class SimpleTemplateResponse(HttpResponse):
- rendering_attrs = ['template_name', 'context_data', '_post_render_callbacks']
-
- def __init__(self, template, context=None, content_type=None, status=None,
- mimetype=None):
- # It would seem obvious to call these next two members 'template' and
- # 'context', but those names are reserved as part of the test Client
- # API. To avoid the name collision, we use tricky-to-debug problems
- self.template_name = template
- self.context_data = context
-
- self._post_render_callbacks = []
-
- # content argument doesn't make sense here because it will be replaced
- # with rendered template so we always pass empty string in order to
- # prevent errors and provide shorter signature.
- super(SimpleTemplateResponse, self).__init__('', content_type, status,
- mimetype)
-
- # _is_rendered tracks whether the template and context has been baked
- # into a final response.
- # Super __init__ doesn't know any better than to set self.content to
- # the empty string we just gave it, which wrongly sets _is_rendered
- # True, so we initialize it to False after the call to super __init__.
- self._is_rendered = False
-
- def __getstate__(self):
- """Pickling support function.
-
- Ensures that the object can't be pickled before it has been
- rendered, and that the pickled state only includes rendered
- data, not the data used to construct the response.
- """
- obj_dict = super(SimpleTemplateResponse, self).__getstate__()
- if not self._is_rendered:
- raise ContentNotRenderedError('The response content must be '
- 'rendered before it can be pickled.')
- for attr in self.rendering_attrs:
- if attr in obj_dict:
- del obj_dict[attr]
-
- return obj_dict
-
- def resolve_template(self, template):
- "Accepts a template object, path-to-template or list of paths"
- if isinstance(template, (list, tuple)):
- return loader.select_template(template)
- elif isinstance(template, six.string_types):
- return loader.get_template(template)
- else:
- return template
-
- def resolve_context(self, context):
- """Converts context data into a full Context object
- (assuming it isn't already a Context object).
- """
- if isinstance(context, Context):
- return context
- else:
- return Context(context)
-
- @property
- def rendered_content(self):
- """Returns the freshly rendered content for the template and context
- described by the TemplateResponse.
-
- This *does not* set the final content of the response. To set the
- response content, you must either call render(), or set the
- content explicitly using the value of this property.
- """
- template = self.resolve_template(self.template_name)
- context = self.resolve_context(self.context_data)
- content = template.render(context)
- return content
-
- def add_post_render_callback(self, callback):
- """Adds a new post-rendering callback.
-
- If the response has already been rendered,
- invoke the callback immediately.
- """
- if self._is_rendered:
- callback(self)
- else:
- self._post_render_callbacks.append(callback)
-
- def render(self):
- """Renders (thereby finalizing) the content of the response.
-
- If the content has already been rendered, this is a no-op.
-
- Returns the baked response instance.
- """
- retval = self
- if not self._is_rendered:
- self.content = self.rendered_content
- for post_callback in self._post_render_callbacks:
- newretval = post_callback(retval)
- if newretval is not None:
- retval = newretval
- return retval
-
- @property
- def is_rendered(self):
- return self._is_rendered
-
- def __iter__(self):
- if not self._is_rendered:
- raise ContentNotRenderedError('The response content must be '
- 'rendered before it can be iterated over.')
- return super(SimpleTemplateResponse, self).__iter__()
-
- @property
- def content(self):
- if not self._is_rendered:
- raise ContentNotRenderedError('The response content must be '
- 'rendered before it can be accessed.')
- return super(SimpleTemplateResponse, self).content
-
- @content.setter
- def content(self, value):
- """Sets the content for the response
- """
- HttpResponse.content.fset(self, value)
- self._is_rendered = True
-
-
-class TemplateResponse(SimpleTemplateResponse):
- rendering_attrs = SimpleTemplateResponse.rendering_attrs + \
- ['_request', '_current_app']
-
- def __init__(self, request, template, context=None, content_type=None,
- status=None, mimetype=None, current_app=None):
- # self.request gets over-written by django.test.client.Client - and
- # unlike context_data and template_name the _request should not
- # be considered part of the public API.
- self._request = request
- # As a convenience we'll allow callers to provide current_app without
- # having to avoid needing to create the RequestContext directly
- self._current_app = current_app
- super(TemplateResponse, self).__init__(
- template, context, content_type, status, mimetype)
-
- def resolve_context(self, context):
- """Convert context data into a full RequestContext object
- (assuming it isn't already a Context object).
- """
- if isinstance(context, Context):
- return context
- return RequestContext(self._request, context, current_app=self._current_app)
diff --git a/lib/python2.7/site-packages/django/template/smartif.py b/lib/python2.7/site-packages/django/template/smartif.py
deleted file mode 100644
index e2ca395..0000000
--- a/lib/python2.7/site-packages/django/template/smartif.py
+++ /dev/null
@@ -1,205 +0,0 @@
-"""
-Parser and utilities for the smart 'if' tag
-"""
-
-# Using a simple top down parser, as described here:
-# http://effbot.org/zone/simple-top-down-parsing.htm.
-# 'led' = left denotation
-# 'nud' = null denotation
-# 'bp' = binding power (left = lbp, right = rbp)
-
-class TokenBase(object):
- """
- Base class for operators and literals, mainly for debugging and for throwing
- syntax errors.
- """
- id = None # node/token type name
- value = None # used by literals
- first = second = None # used by tree nodes
-
- def nud(self, parser):
- # Null denotation - called in prefix context
- raise parser.error_class(
- "Not expecting '%s' in this position in if tag." % self.id
- )
-
- def led(self, left, parser):
- # Left denotation - called in infix context
- raise parser.error_class(
- "Not expecting '%s' as infix operator in if tag." % self.id
- )
-
- def display(self):
- """
- Returns what to display in error messages for this node
- """
- return self.id
-
- def __repr__(self):
- out = [str(x) for x in [self.id, self.first, self.second] if x is not None]
- return "(" + " ".join(out) + ")"
-
-
-def infix(bp, func):
- """
- Creates an infix operator, given a binding power and a function that
- evaluates the node
- """
- class Operator(TokenBase):
- lbp = bp
-
- def led(self, left, parser):
- self.first = left
- self.second = parser.expression(bp)
- return self
-
- def eval(self, context):
- try:
- return func(context, self.first, self.second)
- except Exception:
- # Templates shouldn't throw exceptions when rendering. We are
- # most likely to get exceptions for things like {% if foo in bar
- # %} where 'bar' does not support 'in', so default to False
- return False
-
- return Operator
-
-
-def prefix(bp, func):
- """
- Creates a prefix operator, given a binding power and a function that
- evaluates the node.
- """
- class Operator(TokenBase):
- lbp = bp
-
- def nud(self, parser):
- self.first = parser.expression(bp)
- self.second = None
- return self
-
- def eval(self, context):
- try:
- return func(context, self.first)
- except Exception:
- return False
-
- return Operator
-
-
-# Operator precedence follows Python.
-# NB - we can get slightly more accurate syntax error messages by not using the
-# same object for '==' and '='.
-# We defer variable evaluation to the lambda to ensure that terms are
-# lazily evaluated using Python's boolean parsing logic.
-OPERATORS = {
- 'or': infix(6, lambda context, x, y: x.eval(context) or y.eval(context)),
- 'and': infix(7, lambda context, x, y: x.eval(context) and y.eval(context)),
- 'not': prefix(8, lambda context, x: not x.eval(context)),
- 'in': infix(9, lambda context, x, y: x.eval(context) in y.eval(context)),
- 'not in': infix(9, lambda context, x, y: x.eval(context) not in y.eval(context)),
- '=': infix(10, lambda context, x, y: x.eval(context) == y.eval(context)),
- '==': infix(10, lambda context, x, y: x.eval(context) == y.eval(context)),
- '!=': infix(10, lambda context, x, y: x.eval(context) != y.eval(context)),
- '>': infix(10, lambda context, x, y: x.eval(context) > y.eval(context)),
- '>=': infix(10, lambda context, x, y: x.eval(context) >= y.eval(context)),
- '<': infix(10, lambda context, x, y: x.eval(context) < y.eval(context)),
- '<=': infix(10, lambda context, x, y: x.eval(context) <= y.eval(context)),
-}
-
-# Assign 'id' to each:
-for key, op in OPERATORS.items():
- op.id = key
-
-
-class Literal(TokenBase):
- """
- A basic self-resolvable object similar to a Django template variable.
- """
- # IfParser uses Literal in create_var, but TemplateIfParser overrides
- # create_var so that a proper implementation that actually resolves
- # variables, filters etc is used.
- id = "literal"
- lbp = 0
-
- def __init__(self, value):
- self.value = value
-
- def display(self):
- return repr(self.value)
-
- def nud(self, parser):
- return self
-
- def eval(self, context):
- return self.value
-
- def __repr__(self):
- return "(%s %r)" % (self.id, self.value)
-
-
-class EndToken(TokenBase):
- lbp = 0
-
- def nud(self, parser):
- raise parser.error_class("Unexpected end of expression in if tag.")
-
-EndToken = EndToken()
-
-
-class IfParser(object):
- error_class = ValueError
-
- def __init__(self, tokens):
- # pre-pass necessary to turn 'not','in' into single token
- l = len(tokens)
- mapped_tokens = []
- i = 0
- while i < l:
- token = tokens[i]
- if token == "not" and i + 1 < l and tokens[i+1] == "in":
- token = "not in"
- i += 1 # skip 'in'
- mapped_tokens.append(self.translate_token(token))
- i += 1
-
- self.tokens = mapped_tokens
- self.pos = 0
- self.current_token = self.next_token()
-
- def translate_token(self, token):
- try:
- op = OPERATORS[token]
- except (KeyError, TypeError):
- return self.create_var(token)
- else:
- return op()
-
- def next_token(self):
- if self.pos >= len(self.tokens):
- return EndToken
- else:
- retval = self.tokens[self.pos]
- self.pos += 1
- return retval
-
- def parse(self):
- retval = self.expression()
- # Check that we have exhausted all the tokens
- if self.current_token is not EndToken:
- raise self.error_class("Unused '%s' at end of if expression." %
- self.current_token.display())
- return retval
-
- def expression(self, rbp=0):
- t = self.current_token
- self.current_token = self.next_token()
- left = t.nud(self)
- while rbp < self.current_token.lbp:
- t = self.current_token
- self.current_token = self.next_token()
- left = t.led(left, self)
- return left
-
- def create_var(self, value):
- return Literal(value)
diff --git a/lib/python2.7/site-packages/django/templatetags/__init__.py b/lib/python2.7/site-packages/django/templatetags/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/templatetags/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/templatetags/cache.py b/lib/python2.7/site-packages/django/templatetags/cache.py
deleted file mode 100644
index 215f117..0000000
--- a/lib/python2.7/site-packages/django/templatetags/cache.py
+++ /dev/null
@@ -1,63 +0,0 @@
-from __future__ import unicode_literals
-
-from django.core.cache.utils import make_template_fragment_key
-from django.template import Library, Node, TemplateSyntaxError, VariableDoesNotExist
-from django.core.cache import cache
-
-register = Library()
-
-class CacheNode(Node):
- def __init__(self, nodelist, expire_time_var, fragment_name, vary_on):
- self.nodelist = nodelist
- self.expire_time_var = expire_time_var
- self.fragment_name = fragment_name
- self.vary_on = vary_on
-
- def render(self, context):
- try:
- expire_time = self.expire_time_var.resolve(context)
- except VariableDoesNotExist:
- raise TemplateSyntaxError('"cache" tag got an unknown variable: %r' % self.expire_time_var.var)
- try:
- expire_time = int(expire_time)
- except (ValueError, TypeError):
- raise TemplateSyntaxError('"cache" tag got a non-integer timeout value: %r' % expire_time)
- vary_on = [var.resolve(context) for var in self.vary_on]
- cache_key = make_template_fragment_key(self.fragment_name, vary_on)
- value = cache.get(cache_key)
- if value is None:
- value = self.nodelist.render(context)
- cache.set(cache_key, value, expire_time)
- return value
-
-@register.tag('cache')
-def do_cache(parser, token):
- """
- This will cache the contents of a template fragment for a given amount
- of time.
-
- Usage::
-
- {% load cache %}
- {% cache [expire_time] [fragment_name] %}
- .. some expensive processing ..
- {% endcache %}
-
- This tag also supports varying by a list of arguments::
-
- {% load cache %}
- {% cache [expire_time] [fragment_name] [var1] [var2] .. %}
- .. some expensive processing ..
- {% endcache %}
-
- Each unique set of arguments will result in a unique cache entry.
- """
- nodelist = parser.parse(('endcache',))
- parser.delete_first_token()
- tokens = token.split_contents()
- if len(tokens) < 3:
- raise TemplateSyntaxError("'%r' tag requires at least 2 arguments." % tokens[0])
- return CacheNode(nodelist,
- parser.compile_filter(tokens[1]),
- tokens[2], # fragment_name can't be a variable.
- [parser.compile_filter(token) for token in tokens[3:]])
diff --git a/lib/python2.7/site-packages/django/templatetags/future.py b/lib/python2.7/site-packages/django/templatetags/future.py
deleted file mode 100644
index 7203f39..0000000
--- a/lib/python2.7/site-packages/django/templatetags/future.py
+++ /dev/null
@@ -1,65 +0,0 @@
-from django.template import Library
-from django.template import defaulttags
-
-register = Library()
-
-
-@register.tag
-def ssi(parser, token):
- # Used for deprecation path during 1.3/1.4, will be removed in 2.0
- return defaulttags.ssi(parser, token)
-
-
-@register.tag
-def url(parser, token):
- # Used for deprecation path during 1.3/1.4, will be removed in 2.0
- return defaulttags.url(parser, token)
-
-
-@register.tag
-def cycle(parser, token):
- """
- This is the future version of `cycle` with auto-escaping.
-
- By default all strings are escaped.
-
- If you want to disable auto-escaping of variables you can use::
-
- {% autoescape off %}
- {% cycle var1 var2 var3 as somecycle %}
- {% autoescape %}
-
- Or if only some variables should be escaped, you can use::
-
- {% cycle var1 var2|safe var3|safe as somecycle %}
- """
- return defaulttags.cycle(parser, token, escape=True)
-
-
-@register.tag
-def firstof(parser, token):
- """
- This is the future version of `firstof` with auto-escaping.
-
- This is equivalent to::
-
- {% if var1 %}
- {{ var1 }}
- {% elif var2 %}
- {{ var2 }}
- {% elif var3 %}
- {{ var3 }}
- {% endif %}
-
- If you want to disable auto-escaping of variables you can use::
-
- {% autoescape off %}
- {% firstof var1 var2 var3 "<strong>fallback value</strong>" %}
- {% autoescape %}
-
- Or if only some variables should be escaped, you can use::
-
- {% firstof var1 var2|safe var3 "<strong>fallback value</strong>"|safe %}
-
- """
- return defaulttags.firstof(parser, token, escape=True)
diff --git a/lib/python2.7/site-packages/django/templatetags/i18n.py b/lib/python2.7/site-packages/django/templatetags/i18n.py
deleted file mode 100644
index 14f0382..0000000
--- a/lib/python2.7/site-packages/django/templatetags/i18n.py
+++ /dev/null
@@ -1,488 +0,0 @@
-from __future__ import unicode_literals
-import re
-import sys
-
-from django.conf import settings
-from django.template import (Node, Variable, TemplateSyntaxError,
- TokenParser, Library, TOKEN_TEXT, TOKEN_VAR)
-from django.template.base import render_value_in_context
-from django.template.defaulttags import token_kwargs
-from django.utils import six
-from django.utils import translation
-
-
-register = Library()
-
-
-class GetAvailableLanguagesNode(Node):
- def __init__(self, variable):
- self.variable = variable
-
- def render(self, context):
- context[self.variable] = [(k, translation.ugettext(v)) for k, v in settings.LANGUAGES]
- return ''
-
-
-class GetLanguageInfoNode(Node):
- def __init__(self, lang_code, variable):
- self.lang_code = lang_code
- self.variable = variable
-
- def render(self, context):
- lang_code = self.lang_code.resolve(context)
- context[self.variable] = translation.get_language_info(lang_code)
- return ''
-
-
-class GetLanguageInfoListNode(Node):
- def __init__(self, languages, variable):
- self.languages = languages
- self.variable = variable
-
- def get_language_info(self, language):
- # ``language`` is either a language code string or a sequence
- # with the language code as its first item
- if len(language[0]) > 1:
- return translation.get_language_info(language[0])
- else:
- return translation.get_language_info(str(language))
-
- def render(self, context):
- langs = self.languages.resolve(context)
- context[self.variable] = [self.get_language_info(lang) for lang in langs]
- return ''
-
-
-class GetCurrentLanguageNode(Node):
- def __init__(self, variable):
- self.variable = variable
-
- def render(self, context):
- context[self.variable] = translation.get_language()
- return ''
-
-
-class GetCurrentLanguageBidiNode(Node):
- def __init__(self, variable):
- self.variable = variable
-
- def render(self, context):
- context[self.variable] = translation.get_language_bidi()
- return ''
-
-
-class TranslateNode(Node):
- def __init__(self, filter_expression, noop, asvar=None,
- message_context=None):
- self.noop = noop
- self.asvar = asvar
- self.message_context = message_context
- self.filter_expression = filter_expression
- if isinstance(self.filter_expression.var, six.string_types):
- self.filter_expression.var = Variable("'%s'" %
- self.filter_expression.var)
-
- def render(self, context):
- self.filter_expression.var.translate = not self.noop
- if self.message_context:
- self.filter_expression.var.message_context = (
- self.message_context.resolve(context))
- output = self.filter_expression.resolve(context)
- value = render_value_in_context(output, context)
- if self.asvar:
- context[self.asvar] = value
- return ''
- else:
- return value
-
-
-class BlockTranslateNode(Node):
- def __init__(self, extra_context, singular, plural=None, countervar=None,
- counter=None, message_context=None):
- self.extra_context = extra_context
- self.singular = singular
- self.plural = plural
- self.countervar = countervar
- self.counter = counter
- self.message_context = message_context
-
- def render_token_list(self, tokens):
- result = []
- vars = []
- for token in tokens:
- if token.token_type == TOKEN_TEXT:
- result.append(token.contents.replace('%', '%%'))
- elif token.token_type == TOKEN_VAR:
- result.append('%%(%s)s' % token.contents)
- vars.append(token.contents)
- return ''.join(result), vars
-
- def render(self, context, nested=False):
- if self.message_context:
- message_context = self.message_context.resolve(context)
- else:
- message_context = None
- tmp_context = {}
- for var, val in self.extra_context.items():
- tmp_context[var] = val.resolve(context)
- # Update() works like a push(), so corresponding context.pop() is at
- # the end of function
- context.update(tmp_context)
- singular, vars = self.render_token_list(self.singular)
- if self.plural and self.countervar and self.counter:
- count = self.counter.resolve(context)
- context[self.countervar] = count
- plural, plural_vars = self.render_token_list(self.plural)
- if message_context:
- result = translation.npgettext(message_context, singular,
- plural, count)
- else:
- result = translation.ungettext(singular, plural, count)
- vars.extend(plural_vars)
- else:
- if message_context:
- result = translation.pgettext(message_context, singular)
- else:
- result = translation.ugettext(singular)
- default_value = settings.TEMPLATE_STRING_IF_INVALID
- render_value = lambda v: render_value_in_context(
- context.get(v, default_value), context)
- data = dict([(v, render_value(v)) for v in vars])
- context.pop()
- try:
- result = result % data
- except (KeyError, ValueError):
- if nested:
- # Either string is malformed, or it's a bug
- raise TemplateSyntaxError("'blocktrans' is unable to format "
- "string returned by gettext: %r using %r" % (result, data))
- with translation.override(None):
- result = self.render(context, nested=True)
- return result
-
-
-class LanguageNode(Node):
- def __init__(self, nodelist, language):
- self.nodelist = nodelist
- self.language = language
-
- def render(self, context):
- with translation.override(self.language.resolve(context)):
- output = self.nodelist.render(context)
- return output
-
-
-@register.tag("get_available_languages")
-def do_get_available_languages(parser, token):
- """
- This will store a list of available languages
- in the context.
-
- Usage::
-
- {% get_available_languages as languages %}
- {% for language in languages %}
- ...
- {% endfor %}
-
- This will just pull the LANGUAGES setting from
- your setting file (or the default settings) and
- put it into the named variable.
- """
- # token.split_contents() isn't useful here because this tag doesn't accept variable as arguments
- args = token.contents.split()
- if len(args) != 3 or args[1] != 'as':
- raise TemplateSyntaxError("'get_available_languages' requires 'as variable' (got %r)" % args)
- return GetAvailableLanguagesNode(args[2])
-
-@register.tag("get_language_info")
-def do_get_language_info(parser, token):
- """
- This will store the language information dictionary for the given language
- code in a context variable.
-
- Usage::
-
- {% get_language_info for LANGUAGE_CODE as l %}
- {{ l.code }}
- {{ l.name }}
- {{ l.name_local }}
- {{ l.bidi|yesno:"bi-directional,uni-directional" }}
- """
- args = token.split_contents()
- if len(args) != 5 or args[1] != 'for' or args[3] != 'as':
- raise TemplateSyntaxError("'%s' requires 'for string as variable' (got %r)" % (args[0], args[1:]))
- return GetLanguageInfoNode(parser.compile_filter(args[2]), args[4])
-
-@register.tag("get_language_info_list")
-def do_get_language_info_list(parser, token):
- """
- This will store a list of language information dictionaries for the given
- language codes in a context variable. The language codes can be specified
- either as a list of strings or a settings.LANGUAGES style tuple (or any
- sequence of sequences whose first items are language codes).
-
- Usage::
-
- {% get_language_info_list for LANGUAGES as langs %}
- {% for l in langs %}
- {{ l.code }}
- {{ l.name }}
- {{ l.name_local }}
- {{ l.bidi|yesno:"bi-directional,uni-directional" }}
- {% endfor %}
- """
- args = token.split_contents()
- if len(args) != 5 or args[1] != 'for' or args[3] != 'as':
- raise TemplateSyntaxError("'%s' requires 'for sequence as variable' (got %r)" % (args[0], args[1:]))
- return GetLanguageInfoListNode(parser.compile_filter(args[2]), args[4])
-
-@register.filter
-def language_name(lang_code):
- return translation.get_language_info(lang_code)['name']
-
-@register.filter
-def language_name_local(lang_code):
- return translation.get_language_info(lang_code)['name_local']
-
-@register.filter
-def language_bidi(lang_code):
- return translation.get_language_info(lang_code)['bidi']
-
-@register.tag("get_current_language")
-def do_get_current_language(parser, token):
- """
- This will store the current language in the context.
-
- Usage::
-
- {% get_current_language as language %}
-
- This will fetch the currently active language and
- put it's value into the ``language`` context
- variable.
- """
- # token.split_contents() isn't useful here because this tag doesn't accept variable as arguments
- args = token.contents.split()
- if len(args) != 3 or args[1] != 'as':
- raise TemplateSyntaxError("'get_current_language' requires 'as variable' (got %r)" % args)
- return GetCurrentLanguageNode(args[2])
-
-@register.tag("get_current_language_bidi")
-def do_get_current_language_bidi(parser, token):
- """
- This will store the current language layout in the context.
-
- Usage::
-
- {% get_current_language_bidi as bidi %}
-
- This will fetch the currently active language's layout and
- put it's value into the ``bidi`` context variable.
- True indicates right-to-left layout, otherwise left-to-right
- """
- # token.split_contents() isn't useful here because this tag doesn't accept variable as arguments
- args = token.contents.split()
- if len(args) != 3 or args[1] != 'as':
- raise TemplateSyntaxError("'get_current_language_bidi' requires 'as variable' (got %r)" % args)
- return GetCurrentLanguageBidiNode(args[2])
-
-@register.tag("trans")
-def do_translate(parser, token):
- """
- This will mark a string for translation and will
- translate the string for the current language.
-
- Usage::
-
- {% trans "this is a test" %}
-
- This will mark the string for translation so it will
- be pulled out by mark-messages.py into the .po files
- and will run the string through the translation engine.
-
- There is a second form::
-
- {% trans "this is a test" noop %}
-
- This will only mark for translation, but will return
- the string unchanged. Use it when you need to store
- values into forms that should be translated later on.
-
- You can use variables instead of constant strings
- to translate stuff you marked somewhere else::
-
- {% trans variable %}
-
- This will just try to translate the contents of
- the variable ``variable``. Make sure that the string
- in there is something that is in the .po file.
-
- It is possible to store the translated string into a variable::
-
- {% trans "this is a test" as var %}
- {{ var }}
-
- Contextual translations are also supported::
-
- {% trans "this is a test" context "greeting" %}
-
- This is equivalent to calling pgettext instead of (u)gettext.
- """
- class TranslateParser(TokenParser):
- def top(self):
- value = self.value()
-
- # Backwards Compatiblity fix:
- # FilterExpression does not support single-quoted strings,
- # so we make a cheap localized fix in order to maintain
- # backwards compatibility with existing uses of ``trans``
- # where single quote use is supported.
- if value[0] == "'":
- m = re.match("^'([^']+)'(\|.*$)", value)
- if m:
- value = '"%s"%s' % (m.group(1).replace('"','\\"'), m.group(2))
- elif value[-1] == "'":
- value = '"%s"' % value[1:-1].replace('"','\\"')
-
- noop = False
- asvar = None
- message_context = None
-
- while self.more():
- tag = self.tag()
- if tag == 'noop':
- noop = True
- elif tag == 'context':
- message_context = parser.compile_filter(self.value())
- elif tag == 'as':
- asvar = self.tag()
- else:
- raise TemplateSyntaxError(
- "Only options for 'trans' are 'noop', " \
- "'context \"xxx\"', and 'as VAR'.")
- return value, noop, asvar, message_context
- value, noop, asvar, message_context = TranslateParser(token.contents).top()
- return TranslateNode(parser.compile_filter(value), noop, asvar,
- message_context)
-
-@register.tag("blocktrans")
-def do_block_translate(parser, token):
- """
- This will translate a block of text with parameters.
-
- Usage::
-
- {% blocktrans with bar=foo|filter boo=baz|filter %}
- This is {{ bar }} and {{ boo }}.
- {% endblocktrans %}
-
- Additionally, this supports pluralization::
-
- {% blocktrans count count=var|length %}
- There is {{ count }} object.
- {% plural %}
- There are {{ count }} objects.
- {% endblocktrans %}
-
- This is much like ngettext, only in template syntax.
-
- The "var as value" legacy format is still supported::
-
- {% blocktrans with foo|filter as bar and baz|filter as boo %}
- {% blocktrans count var|length as count %}
-
- Contextual translations are supported::
-
- {% blocktrans with bar=foo|filter context "greeting" %}
- This is {{ bar }}.
- {% endblocktrans %}
-
- This is equivalent to calling pgettext/npgettext instead of
- (u)gettext/(u)ngettext.
- """
- bits = token.split_contents()
-
- options = {}
- remaining_bits = bits[1:]
- while remaining_bits:
- option = remaining_bits.pop(0)
- if option in options:
- raise TemplateSyntaxError('The %r option was specified more '
- 'than once.' % option)
- if option == 'with':
- value = token_kwargs(remaining_bits, parser, support_legacy=True)
- if not value:
- raise TemplateSyntaxError('"with" in %r tag needs at least '
- 'one keyword argument.' % bits[0])
- elif option == 'count':
- value = token_kwargs(remaining_bits, parser, support_legacy=True)
- if len(value) != 1:
- raise TemplateSyntaxError('"count" in %r tag expected exactly '
- 'one keyword argument.' % bits[0])
- elif option == "context":
- try:
- value = remaining_bits.pop(0)
- value = parser.compile_filter(value)
- except Exception:
- msg = (
- '"context" in %r tag expected '
- 'exactly one argument.') % bits[0]
- six.reraise(TemplateSyntaxError, TemplateSyntaxError(msg), sys.exc_info()[2])
- else:
- raise TemplateSyntaxError('Unknown argument for %r tag: %r.' %
- (bits[0], option))
- options[option] = value
-
- if 'count' in options:
- countervar, counter = list(six.iteritems(options['count']))[0]
- else:
- countervar, counter = None, None
- if 'context' in options:
- message_context = options['context']
- else:
- message_context = None
- extra_context = options.get('with', {})
-
- singular = []
- plural = []
- while parser.tokens:
- token = parser.next_token()
- if token.token_type in (TOKEN_VAR, TOKEN_TEXT):
- singular.append(token)
- else:
- break
- if countervar and counter:
- if token.contents.strip() != 'plural':
- raise TemplateSyntaxError("'blocktrans' doesn't allow other block tags inside it")
- while parser.tokens:
- token = parser.next_token()
- if token.token_type in (TOKEN_VAR, TOKEN_TEXT):
- plural.append(token)
- else:
- break
- if token.contents.strip() != 'endblocktrans':
- raise TemplateSyntaxError("'blocktrans' doesn't allow other block tags (seen %r) inside it" % token.contents)
-
- return BlockTranslateNode(extra_context, singular, plural, countervar,
- counter, message_context)
-
-@register.tag
-def language(parser, token):
- """
- This will enable the given language just for this block.
-
- Usage::
-
- {% language "de" %}
- This is {{ bar }} and {{ boo }}.
- {% endlanguage %}
-
- """
- bits = token.split_contents()
- if len(bits) != 2:
- raise TemplateSyntaxError("'%s' takes one argument (language)" % bits[0])
- language = parser.compile_filter(bits[1])
- nodelist = parser.parse(('endlanguage',))
- parser.delete_first_token()
- return LanguageNode(nodelist, language)
diff --git a/lib/python2.7/site-packages/django/templatetags/l10n.py b/lib/python2.7/site-packages/django/templatetags/l10n.py
deleted file mode 100644
index 667de24..0000000
--- a/lib/python2.7/site-packages/django/templatetags/l10n.py
+++ /dev/null
@@ -1,62 +0,0 @@
-from django.template import Node
-from django.template import TemplateSyntaxError, Library
-from django.utils import formats
-from django.utils.encoding import force_text
-
-register = Library()
-
-@register.filter(is_safe=False)
-def localize(value):
- """
- Forces a value to be rendered as a localized value,
- regardless of the value of ``settings.USE_L10N``.
- """
- return force_text(formats.localize(value, use_l10n=True))
-
-@register.filter(is_safe=False)
-def unlocalize(value):
- """
- Forces a value to be rendered as a non-localized value,
- regardless of the value of ``settings.USE_L10N``.
- """
- return force_text(value)
-
-class LocalizeNode(Node):
- def __init__(self, nodelist, use_l10n):
- self.nodelist = nodelist
- self.use_l10n = use_l10n
-
- def __repr__(self):
- return "<LocalizeNode>"
-
- def render(self, context):
- old_setting = context.use_l10n
- context.use_l10n = self.use_l10n
- output = self.nodelist.render(context)
- context.use_l10n = old_setting
- return output
-
-@register.tag('localize')
-def localize_tag(parser, token):
- """
- Forces or prevents localization of values, regardless of the value of
- `settings.USE_L10N`.
-
- Sample usage::
-
- {% localize off %}
- var pi = {{ 3.1415 }};
- {% endlocalize %}
-
- """
- use_l10n = None
- bits = list(token.split_contents())
- if len(bits) == 1:
- use_l10n = True
- elif len(bits) > 2 or bits[1] not in ('on', 'off'):
- raise TemplateSyntaxError("%r argument should be 'on' or 'off'" % bits[0])
- else:
- use_l10n = bits[1] == 'on'
- nodelist = parser.parse(('endlocalize',))
- parser.delete_first_token()
- return LocalizeNode(nodelist, use_l10n)
diff --git a/lib/python2.7/site-packages/django/templatetags/static.py b/lib/python2.7/site-packages/django/templatetags/static.py
deleted file mode 100644
index e3a23fb..0000000
--- a/lib/python2.7/site-packages/django/templatetags/static.py
+++ /dev/null
@@ -1,158 +0,0 @@
-from django import template
-from django.template.base import Node
-from django.utils.encoding import iri_to_uri
-from django.utils.six.moves.urllib.parse import urljoin
-
-register = template.Library()
-
-
-class PrefixNode(template.Node):
-
- def __repr__(self):
- return "<PrefixNode for %r>" % self.name
-
- def __init__(self, varname=None, name=None):
- if name is None:
- raise template.TemplateSyntaxError(
- "Prefix nodes must be given a name to return.")
- self.varname = varname
- self.name = name
-
- @classmethod
- def handle_token(cls, parser, token, name):
- """
- Class method to parse prefix node and return a Node.
- """
- # token.split_contents() isn't useful here because tags using this method don't accept variable as arguments
- tokens = token.contents.split()
- if len(tokens) > 1 and tokens[1] != 'as':
- raise template.TemplateSyntaxError(
- "First argument in '%s' must be 'as'" % tokens[0])
- if len(tokens) > 1:
- varname = tokens[2]
- else:
- varname = None
- return cls(varname, name)
-
- @classmethod
- def handle_simple(cls, name):
- try:
- from django.conf import settings
- except ImportError:
- prefix = ''
- else:
- prefix = iri_to_uri(getattr(settings, name, ''))
- return prefix
-
- def render(self, context):
- prefix = self.handle_simple(self.name)
- if self.varname is None:
- return prefix
- context[self.varname] = prefix
- return ''
-
-
-@register.tag
-def get_static_prefix(parser, token):
- """
- Populates a template variable with the static prefix,
- ``settings.STATIC_URL``.
-
- Usage::
-
- {% get_static_prefix [as varname] %}
-
- Examples::
-
- {% get_static_prefix %}
- {% get_static_prefix as static_prefix %}
-
- """
- return PrefixNode.handle_token(parser, token, "STATIC_URL")
-
-
-@register.tag
-def get_media_prefix(parser, token):
- """
- Populates a template variable with the media prefix,
- ``settings.MEDIA_URL``.
-
- Usage::
-
- {% get_media_prefix [as varname] %}
-
- Examples::
-
- {% get_media_prefix %}
- {% get_media_prefix as media_prefix %}
-
- """
- return PrefixNode.handle_token(parser, token, "MEDIA_URL")
-
-
-class StaticNode(Node):
- def __init__(self, varname=None, path=None):
- if path is None:
- raise template.TemplateSyntaxError(
- "Static template nodes must be given a path to return.")
- self.path = path
- self.varname = varname
-
- def url(self, context):
- path = self.path.resolve(context)
- return self.handle_simple(path)
-
- def render(self, context):
- url = self.url(context)
- if self.varname is None:
- return url
- context[self.varname] = url
- return ''
-
- @classmethod
- def handle_simple(cls, path):
- return urljoin(PrefixNode.handle_simple("STATIC_URL"), path)
-
- @classmethod
- def handle_token(cls, parser, token):
- """
- Class method to parse prefix node and return a Node.
- """
- bits = token.split_contents()
-
- if len(bits) < 2:
- raise template.TemplateSyntaxError(
- "'%s' takes at least one argument (path to file)" % bits[0])
-
- path = parser.compile_filter(bits[1])
-
- if len(bits) >= 2 and bits[-2] == 'as':
- varname = bits[3]
- else:
- varname = None
-
- return cls(varname, path)
-
-
-@register.tag('static')
-def do_static(parser, token):
- """
- Joins the given path with the STATIC_URL setting.
-
- Usage::
-
- {% static path [as varname] %}
-
- Examples::
-
- {% static "myapp/css/base.css" %}
- {% static variable_with_path %}
- {% static "myapp/css/base.css" as admin_base_css %}
- {% static variable_with_path as varname %}
-
- """
- return StaticNode.handle_token(parser, token)
-
-
-def static(path):
- return StaticNode.handle_simple(path)
diff --git a/lib/python2.7/site-packages/django/templatetags/tz.py b/lib/python2.7/site-packages/django/templatetags/tz.py
deleted file mode 100644
index 05088e1..0000000
--- a/lib/python2.7/site-packages/django/templatetags/tz.py
+++ /dev/null
@@ -1,198 +0,0 @@
-from datetime import datetime, tzinfo
-
-try:
- import pytz
-except ImportError:
- pytz = None
-
-from django.template import Node
-from django.template import TemplateSyntaxError, Library
-from django.utils import six
-from django.utils import timezone
-
-register = Library()
-
-
-# HACK: datetime is an old-style class, create a new-style equivalent
-# so we can define additional attributes.
-class datetimeobject(datetime, object):
- pass
-
-
-# Template filters
-
-@register.filter
-def localtime(value):
- """
- Converts a datetime to local time in the active time zone.
-
- This only makes sense within a {% localtime off %} block.
- """
- return do_timezone(value, timezone.get_current_timezone())
-
-
-@register.filter
-def utc(value):
- """
- Converts a datetime to UTC.
- """
- return do_timezone(value, timezone.utc)
-
-
-@register.filter('timezone')
-def do_timezone(value, arg):
- """
- Converts a datetime to local time in a given time zone.
-
- The argument must be an instance of a tzinfo subclass or a time zone name.
- If it is a time zone name, pytz is required.
-
- Naive datetimes are assumed to be in local time in the default time zone.
- """
- if not isinstance(value, datetime):
- return ''
-
- # Obtain a timezone-aware datetime
- try:
- if timezone.is_naive(value):
- default_timezone = timezone.get_default_timezone()
- value = timezone.make_aware(value, default_timezone)
- # Filters must never raise exceptions, and pytz' exceptions inherit
- # Exception directly, not a specific subclass. So catch everything.
- except Exception:
- return ''
-
- # Obtain a tzinfo instance
- if isinstance(arg, tzinfo):
- tz = arg
- elif isinstance(arg, six.string_types) and pytz is not None:
- try:
- tz = pytz.timezone(arg)
- except pytz.UnknownTimeZoneError:
- return ''
- else:
- return ''
-
- result = timezone.localtime(value, tz)
-
- # HACK: the convert_to_local_time flag will prevent
- # automatic conversion of the value to local time.
- result = datetimeobject(result.year, result.month, result.day,
- result.hour, result.minute, result.second,
- result.microsecond, result.tzinfo)
- result.convert_to_local_time = False
- return result
-
-
-# Template tags
-
-class LocalTimeNode(Node):
- """
- Template node class used by ``localtime_tag``.
- """
- def __init__(self, nodelist, use_tz):
- self.nodelist = nodelist
- self.use_tz = use_tz
-
- def render(self, context):
- old_setting = context.use_tz
- context.use_tz = self.use_tz
- output = self.nodelist.render(context)
- context.use_tz = old_setting
- return output
-
-
-class TimezoneNode(Node):
- """
- Template node class used by ``timezone_tag``.
- """
- def __init__(self, nodelist, tz):
- self.nodelist = nodelist
- self.tz = tz
-
- def render(self, context):
- with timezone.override(self.tz.resolve(context)):
- output = self.nodelist.render(context)
- return output
-
-
-class GetCurrentTimezoneNode(Node):
- """
- Template node class used by ``get_current_timezone_tag``.
- """
- def __init__(self, variable):
- self.variable = variable
-
- def render(self, context):
- context[self.variable] = timezone.get_current_timezone_name()
- return ''
-
-
-@register.tag('localtime')
-def localtime_tag(parser, token):
- """
- Forces or prevents conversion of datetime objects to local time,
- regardless of the value of ``settings.USE_TZ``.
-
- Sample usage::
-
- {% localtime off %}{{ value_in_utc }}{% endlocaltime %}
-
- """
- bits = token.split_contents()
- if len(bits) == 1:
- use_tz = True
- elif len(bits) > 2 or bits[1] not in ('on', 'off'):
- raise TemplateSyntaxError("%r argument should be 'on' or 'off'" %
- bits[0])
- else:
- use_tz = bits[1] == 'on'
- nodelist = parser.parse(('endlocaltime',))
- parser.delete_first_token()
- return LocalTimeNode(nodelist, use_tz)
-
-
-@register.tag('timezone')
-def timezone_tag(parser, token):
- """
- Enables a given time zone just for this block.
-
- The ``timezone`` argument must be an instance of a ``tzinfo`` subclass, a
- time zone name, or ``None``. If is it a time zone name, pytz is required.
- If it is ``None``, the default time zone is used within the block.
-
- Sample usage::
-
- {% timezone "Europe/Paris" %}
- It is {{ now }} in Paris.
- {% endtimezone %}
-
- """
- bits = token.split_contents()
- if len(bits) != 2:
- raise TemplateSyntaxError("'%s' takes one argument (timezone)" %
- bits[0])
- tz = parser.compile_filter(bits[1])
- nodelist = parser.parse(('endtimezone',))
- parser.delete_first_token()
- return TimezoneNode(nodelist, tz)
-
-
-@register.tag("get_current_timezone")
-def get_current_timezone_tag(parser, token):
- """
- Stores the name of the current time zone in the context.
-
- Usage::
-
- {% get_current_timezone as TIME_ZONE %}
-
- This will fetch the currently active time zone and put its name
- into the ``TIME_ZONE`` context variable.
- """
- # token.split_contents() isn't useful here because this tag doesn't accept variable as arguments
- args = token.contents.split()
- if len(args) != 3 or args[1] != 'as':
- raise TemplateSyntaxError("'get_current_timezone' requires "
- "'as variable' (got %r)" % args)
- return GetCurrentTimezoneNode(args[2])
diff --git a/lib/python2.7/site-packages/django/test/__init__.py b/lib/python2.7/site-packages/django/test/__init__.py
deleted file mode 100644
index 7a49875..0000000
--- a/lib/python2.7/site-packages/django/test/__init__.py
+++ /dev/null
@@ -1,10 +0,0 @@
-"""
-Django Unit Test and Doctest framework.
-"""
-
-from django.test.client import Client, RequestFactory
-from django.test.testcases import (TestCase, TransactionTestCase,
- SimpleTestCase, LiveServerTestCase, skipIfDBFeature,
- skipUnlessDBFeature
-)
-from django.test.utils import Approximate
diff --git a/lib/python2.7/site-packages/django/test/_doctest.py b/lib/python2.7/site-packages/django/test/_doctest.py
deleted file mode 100644
index 5381cff..0000000
--- a/lib/python2.7/site-packages/django/test/_doctest.py
+++ /dev/null
@@ -1,2755 +0,0 @@
-# This is a slightly modified version of the doctest.py that shipped with Python 2.5
-# It incorporates changes that have been submitted to the Python ticket tracker
-# as ticket #1521051. These changes allow for a DoctestRunner and Doctest base
-# class to be specified when constructing a DoctestSuite.
-
-# Module doctest.
-# Released to the public domain 16-Jan-2001, by Tim Peters (tim@python.org).
-# Major enhancements and refactoring by:
-# Jim Fulton
-# Edward Loper
-
-# Provided as-is; use at your own risk; no warranty; no promises; enjoy!
-
-r"""Module doctest -- a framework for running examples in docstrings.
-
-In simplest use, end each module M to be tested with:
-
-def _test():
- import doctest
- doctest.testmod()
-
-if __name__ == "__main__":
- _test()
-
-Then running the module as a script will cause the examples in the
-docstrings to get executed and verified:
-
-python M.py
-
-This won't display anything unless an example fails, in which case the
-failing example(s) and the cause(s) of the failure(s) are printed to stdout
-(why not stderr? because stderr is a lame hack <0.2 wink>), and the final
-line of output is "Test failed.".
-
-Run it with the -v switch instead:
-
-python M.py -v
-
-and a detailed report of all examples tried is printed to stdout, along
-with assorted summaries at the end.
-
-You can force verbose mode by passing "verbose=True" to testmod, or prohibit
-it by passing "verbose=False". In either of those cases, sys.argv is not
-examined by testmod.
-
-There are a variety of other ways to run doctests, including integration
-with the unittest framework, and support for running non-Python text
-files containing doctests. There are also many ways to override parts
-of doctest's default behaviors. See the Library Reference Manual for
-details.
-"""
-import warnings
-
-warnings.warn(
- "The django.test._doctest module is deprecated; "
- "use the doctest module from the Python standard library instead.",
- PendingDeprecationWarning)
-
-
-__docformat__ = 'reStructuredText en'
-
-__all__ = [
- # 0, Option Flags
- 'register_optionflag',
- 'DONT_ACCEPT_TRUE_FOR_1',
- 'DONT_ACCEPT_BLANKLINE',
- 'NORMALIZE_WHITESPACE',
- 'ELLIPSIS',
- 'SKIP',
- 'IGNORE_EXCEPTION_DETAIL',
- 'COMPARISON_FLAGS',
- 'REPORT_UDIFF',
- 'REPORT_CDIFF',
- 'REPORT_NDIFF',
- 'REPORT_ONLY_FIRST_FAILURE',
- 'REPORTING_FLAGS',
- # 1. Utility Functions
- # 2. Example & DocTest
- 'Example',
- 'DocTest',
- # 3. Doctest Parser
- 'DocTestParser',
- # 4. Doctest Finder
- 'DocTestFinder',
- # 5. Doctest Runner
- 'DocTestRunner',
- 'OutputChecker',
- 'DocTestFailure',
- 'UnexpectedException',
- 'DebugRunner',
- # 6. Test Functions
- 'testmod',
- 'testfile',
- 'run_docstring_examples',
- # 7. Tester
- 'Tester',
- # 8. Unittest Support
- 'DocTestSuite',
- 'DocFileSuite',
- 'set_unittest_reportflags',
- # 9. Debugging Support
- 'script_from_examples',
- 'testsource',
- 'debug_src',
- 'debug',
-]
-
-import __future__
-
-import sys, traceback, inspect, linecache, os, re
-import unittest, difflib, pdb, tempfile
-import warnings
-
-from django.utils import six
-from django.utils.six.moves import StringIO, xrange
-
-if sys.platform.startswith('java'):
- # On Jython, isclass() reports some modules as classes. Patch it.
- def patch_isclass(isclass):
- def patched_isclass(obj):
- return isclass(obj) and hasattr(obj, '__module__')
- return patched_isclass
- inspect.isclass = patch_isclass(inspect.isclass)
-
-# There are 4 basic classes:
-# - Example: a <source, want> pair, plus an intra-docstring line number.
-# - DocTest: a collection of examples, parsed from a docstring, plus
-# info about where the docstring came from (name, filename, lineno).
-# - DocTestFinder: extracts DocTests from a given object's docstring and
-# its contained objects' docstrings.
-# - DocTestRunner: runs DocTest cases, and accumulates statistics.
-#
-# So the basic picture is:
-#
-# list of:
-# +------+ +---------+ +-------+
-# |object| --DocTestFinder-> | DocTest | --DocTestRunner-> |results|
-# +------+ +---------+ +-------+
-# | Example |
-# | ... |
-# | Example |
-# +---------+
-
-# Option constants.
-
-OPTIONFLAGS_BY_NAME = {}
-def register_optionflag(name):
- # Create a new flag unless `name` is already known.
- return OPTIONFLAGS_BY_NAME.setdefault(name, 1 << len(OPTIONFLAGS_BY_NAME))
-
-DONT_ACCEPT_TRUE_FOR_1 = register_optionflag('DONT_ACCEPT_TRUE_FOR_1')
-DONT_ACCEPT_BLANKLINE = register_optionflag('DONT_ACCEPT_BLANKLINE')
-NORMALIZE_WHITESPACE = register_optionflag('NORMALIZE_WHITESPACE')
-ELLIPSIS = register_optionflag('ELLIPSIS')
-SKIP = register_optionflag('SKIP')
-IGNORE_EXCEPTION_DETAIL = register_optionflag('IGNORE_EXCEPTION_DETAIL')
-
-COMPARISON_FLAGS = (DONT_ACCEPT_TRUE_FOR_1 |
- DONT_ACCEPT_BLANKLINE |
- NORMALIZE_WHITESPACE |
- ELLIPSIS |
- SKIP |
- IGNORE_EXCEPTION_DETAIL)
-
-REPORT_UDIFF = register_optionflag('REPORT_UDIFF')
-REPORT_CDIFF = register_optionflag('REPORT_CDIFF')
-REPORT_NDIFF = register_optionflag('REPORT_NDIFF')
-REPORT_ONLY_FIRST_FAILURE = register_optionflag('REPORT_ONLY_FIRST_FAILURE')
-
-REPORTING_FLAGS = (REPORT_UDIFF |
- REPORT_CDIFF |
- REPORT_NDIFF |
- REPORT_ONLY_FIRST_FAILURE)
-
-# Special string markers for use in `want` strings:
-BLANKLINE_MARKER = '<BLANKLINE>'
-ELLIPSIS_MARKER = '...'
-
-######################################################################
-## Table of Contents
-######################################################################
-# 1. Utility Functions
-# 2. Example & DocTest -- store test cases
-# 3. DocTest Parser -- extracts examples from strings
-# 4. DocTest Finder -- extracts test cases from objects
-# 5. DocTest Runner -- runs test cases
-# 6. Test Functions -- convenient wrappers for testing
-# 7. Tester Class -- for backwards compatibility
-# 8. Unittest Support
-# 9. Debugging Support
-# 10. Example Usage
-
-######################################################################
-## 1. Utility Functions
-######################################################################
-
-def _extract_future_flags(globs):
- """
- Return the compiler-flags associated with the future features that
- have been imported into the given namespace (globs).
- """
- flags = 0
- for fname in __future__.all_feature_names:
- feature = globs.get(fname, None)
- if feature is getattr(__future__, fname):
- flags |= feature.compiler_flag
- return flags
-
-def _normalize_module(module, depth=2):
- """
- Return the module specified by `module`. In particular:
- - If `module` is a module, then return module.
- - If `module` is a string, then import and return the
- module with that name.
- - If `module` is None, then return the calling module.
- The calling module is assumed to be the module of
- the stack frame at the given depth in the call stack.
- """
- if inspect.ismodule(module):
- return module
- elif isinstance(module, six.string_types):
- return __import__(module, globals(), locals(), ["*"])
- elif module is None:
- return sys.modules[sys._getframe(depth).f_globals['__name__']]
- else:
- raise TypeError("Expected a module, string, or None")
-
-def _load_testfile(filename, package, module_relative):
- if module_relative:
- package = _normalize_module(package, 3)
- filename = _module_relative_path(package, filename)
- if hasattr(package, '__loader__'):
- if hasattr(package.__loader__, 'get_data'):
- file_contents = package.__loader__.get_data(filename)
- # get_data() opens files as 'rb', so one must do the equivalent
- # conversion as universal newlines would do.
- return file_contents.replace(os.linesep, '\n'), filename
- with open(filename) as fp:
- return fp.read(), filename
-
-def _indent(s, indent=4):
- """
- Add the given number of space characters to the beginning every
- non-blank line in `s`, and return the result.
- """
- # This regexp matches the start of non-blank lines:
- return re.sub('(?m)^(?!$)', indent*' ', s)
-
-def _exception_traceback(exc_info):
- """
- Return a string containing a traceback message for the given
- exc_info tuple (as returned by sys.exc_info()).
- """
- # Get a traceback message.
- excout = StringIO()
- exc_type, exc_val, exc_tb = exc_info
- traceback.print_exception(exc_type, exc_val, exc_tb, file=excout)
- return excout.getvalue()
-
-# Override some StringIO methods.
-class _SpoofOut(StringIO):
- def getvalue(self):
- result = StringIO.getvalue(self)
- # If anything at all was written, make sure there's a trailing
- # newline. There's no way for the expected output to indicate
- # that a trailing newline is missing.
- if result and not result.endswith("\n"):
- result += "\n"
- # Prevent softspace from screwing up the next test case, in
- # case they used print with a trailing comma in an example.
- if hasattr(self, "softspace"):
- del self.softspace
- return result
-
- def truncate(self, size=None):
- StringIO.truncate(self, size)
- if hasattr(self, "softspace"):
- del self.softspace
-
-# Worst-case linear-time ellipsis matching.
-def _ellipsis_match(want, got):
- """
- Essentially the only subtle case:
- >>> _ellipsis_match('aa...aa', 'aaa')
- False
- """
- if ELLIPSIS_MARKER not in want:
- return want == got
-
- # Find "the real" strings.
- ws = want.split(ELLIPSIS_MARKER)
- assert len(ws) >= 2
-
- # Deal with exact matches possibly needed at one or both ends.
- startpos, endpos = 0, len(got)
- w = ws[0]
- if w: # starts with exact match
- if got.startswith(w):
- startpos = len(w)
- del ws[0]
- else:
- return False
- w = ws[-1]
- if w: # ends with exact match
- if got.endswith(w):
- endpos -= len(w)
- del ws[-1]
- else:
- return False
-
- if startpos > endpos:
- # Exact end matches required more characters than we have, as in
- # _ellipsis_match('aa...aa', 'aaa')
- return False
-
- # For the rest, we only need to find the leftmost non-overlapping
- # match for each piece. If there's no overall match that way alone,
- # there's no overall match period.
- for w in ws:
- # w may be '' at times, if there are consecutive ellipses, or
- # due to an ellipsis at the start or end of `want`. That's OK.
- # Search for an empty string succeeds, and doesn't change startpos.
- startpos = got.find(w, startpos, endpos)
- if startpos < 0:
- return False
- startpos += len(w)
-
- return True
-
-def _comment_line(line):
- "Return a commented form of the given line"
- line = line.rstrip()
- if line:
- return '# '+line
- else:
- return '#'
-
-class _OutputRedirectingPdb(pdb.Pdb):
- """
- A specialized version of the python debugger that redirects stdout
- to a given stream when interacting with the user. Stdout is *not*
- redirected when traced code is executed.
- """
- def __init__(self, out):
- self.__out = out
- self.__debugger_used = False
- pdb.Pdb.__init__(self, stdout=out)
-
- def set_trace(self, frame=None):
- self.__debugger_used = True
- if frame is None:
- frame = sys._getframe().f_back
- pdb.Pdb.set_trace(self, frame)
-
- def set_continue(self):
- # Calling set_continue unconditionally would break unit test
- # coverage reporting, as Bdb.set_continue calls sys.settrace(None).
- if self.__debugger_used:
- pdb.Pdb.set_continue(self)
-
- def trace_dispatch(self, *args):
- # Redirect stdout to the given stream.
- save_stdout = sys.stdout
- sys.stdout = self.__out
- # Call Pdb's trace dispatch method.
- try:
- return pdb.Pdb.trace_dispatch(self, *args)
- finally:
- sys.stdout = save_stdout
-
-# [XX] Normalize with respect to os.path.pardir?
-def _module_relative_path(module, path):
- if not inspect.ismodule(module):
- raise TypeError('Expected a module: %r' % module)
- if path.startswith('/'):
- raise ValueError('Module-relative files may not have absolute paths')
-
- # Find the base directory for the path.
- if hasattr(module, '__file__'):
- # A normal module/package
- basedir = os.path.split(module.__file__)[0]
- elif module.__name__ == '__main__':
- # An interactive session.
- if len(sys.argv)>0 and sys.argv[0] != '':
- basedir = os.path.split(sys.argv[0])[0]
- else:
- basedir = os.curdir
- else:
- # A module w/o __file__ (this includes builtins)
- raise ValueError("Can't resolve paths relative to the module " +
- module + " (it has no __file__)")
-
- # Combine the base directory and the path.
- return os.path.join(basedir, *(path.split('/')))
-
-######################################################################
-## 2. Example & DocTest
-######################################################################
-## - An "example" is a <source, want> pair, where "source" is a
-## fragment of source code, and "want" is the expected output for
-## "source." The Example class also includes information about
-## where the example was extracted from.
-##
-## - A "doctest" is a collection of examples, typically extracted from
-## a string (such as an object's docstring). The DocTest class also
-## includes information about where the string was extracted from.
-
-class Example:
- """
- A single doctest example, consisting of source code and expected
- output. `Example` defines the following attributes:
-
- - source: A single Python statement, always ending with a newline.
- The constructor adds a newline if needed.
-
- - want: The expected output from running the source code (either
- from stdout, or a traceback in case of exception). `want` ends
- with a newline unless it's empty, in which case it's an empty
- string. The constructor adds a newline if needed.
-
- - exc_msg: The exception message generated by the example, if
- the example is expected to generate an exception; or `None` if
- it is not expected to generate an exception. This exception
- message is compared against the return value of
- `traceback.format_exception_only()`. `exc_msg` ends with a
- newline unless it's `None`. The constructor adds a newline
- if needed.
-
- - lineno: The line number within the DocTest string containing
- this Example where the Example begins. This line number is
- zero-based, with respect to the beginning of the DocTest.
-
- - indent: The example's indentation in the DocTest string.
- I.e., the number of space characters that preceed the
- example's first prompt.
-
- - options: A dictionary mapping from option flags to True or
- False, which is used to override default options for this
- example. Any option flags not contained in this dictionary
- are left at their default value (as specified by the
- DocTestRunner's optionflags). By default, no options are set.
- """
- def __init__(self, source, want, exc_msg=None, lineno=0, indent=0,
- options=None):
- # Normalize inputs.
- if not source.endswith('\n'):
- source += '\n'
- if want and not want.endswith('\n'):
- want += '\n'
- if exc_msg is not None and not exc_msg.endswith('\n'):
- exc_msg += '\n'
- # Store properties.
- self.source = source
- self.want = want
- self.lineno = lineno
- self.indent = indent
- if options is None: options = {}
- self.options = options
- self.exc_msg = exc_msg
-
-class DocTest:
- """
- A collection of doctest examples that should be run in a single
- namespace. Each `DocTest` defines the following attributes:
-
- - examples: the list of examples.
-
- - globs: The namespace (aka globals) that the examples should
- be run in.
-
- - name: A name identifying the DocTest (typically, the name of
- the object whose docstring this DocTest was extracted from).
-
- - filename: The name of the file that this DocTest was extracted
- from, or `None` if the filename is unknown.
-
- - lineno: The line number within filename where this DocTest
- begins, or `None` if the line number is unavailable. This
- line number is zero-based, with respect to the beginning of
- the file.
-
- - docstring: The string that the examples were extracted from,
- or `None` if the string is unavailable.
- """
- def __init__(self, examples, globs, name, filename, lineno, docstring):
- """
- Create a new DocTest containing the given examples. The
- DocTest's globals are initialized with a copy of `globs`.
- """
- assert not isinstance(examples, six.string_types), \
- "DocTest no longer accepts str; use DocTestParser instead"
- self.examples = examples
- self.docstring = docstring
- self.globs = globs.copy()
- self.name = name
- self.filename = filename
- self.lineno = lineno
-
- def __repr__(self):
- if len(self.examples) == 0:
- examples = 'no examples'
- elif len(self.examples) == 1:
- examples = '1 example'
- else:
- examples = '%d examples' % len(self.examples)
- return ('<DocTest %s from %s:%s (%s)>' %
- (self.name, self.filename, self.lineno, examples))
-
-
- # This lets us sort tests by name:
- def _cmpkey(self):
- return (self.name, self.filename, self.lineno, id(self))
- def __cmp__(self, other):
- if not isinstance(other, DocTest):
- return -1
- return cmp(self._cmpkey(), other._cmpkey())
-
- def __lt__(self, other):
- return self._cmpkey() < other._cmpkey()
-
- def __le__(self, other):
- return self._cmpkey() <= other._cmpkey()
-
- def __gt__(self, other):
- return self._cmpkey() > other._cmpkey()
-
- def __ge__(self, other):
- return self._cmpkey() >= other._cmpkey()
-
- def __eq__(self, other):
- return self._cmpkey() == other._cmpkey()
-
- def __ne__(self, other):
- return self._cmpkey() != other._cmpkey()
-
-
-######################################################################
-## 3. DocTestParser
-######################################################################
-
-class DocTestParser:
- """
- A class used to parse strings containing doctest examples.
- """
- # This regular expression is used to find doctest examples in a
- # string. It defines three groups: `source` is the source code
- # (including leading indentation and prompts); `indent` is the
- # indentation of the first (PS1) line of the source code; and
- # `want` is the expected output (including leading indentation).
- _EXAMPLE_RE = re.compile(r'''
- # Source consists of a PS1 line followed by zero or more PS2 lines.
- (?P<source>
- (?:^(?P<indent> [ ]*) >>> .*) # PS1 line
- (?:\n [ ]* \.\.\. .*)*) # PS2 lines
- \n?
- # Want consists of any non-blank lines that do not start with PS1.
- (?P<want> (?:(?![ ]*$) # Not a blank line
- (?![ ]*>>>) # Not a line starting with PS1
- .*$\n? # But any other line
- )*)
- ''', re.MULTILINE | re.VERBOSE)
-
- # A regular expression for handling `want` strings that contain
- # expected exceptions. It divides `want` into three pieces:
- # - the traceback header line (`hdr`)
- # - the traceback stack (`stack`)
- # - the exception message (`msg`), as generated by
- # traceback.format_exception_only()
- # `msg` may have multiple lines. We assume/require that the
- # exception message is the first non-indented line starting with a word
- # character following the traceback header line.
- _EXCEPTION_RE = re.compile(r"""
- # Grab the traceback header. Different versions of Python have
- # said different things on the first traceback line.
- ^(?P<hdr> Traceback\ \(
- (?: most\ recent\ call\ last
- | innermost\ last
- ) \) :
- )
- \s* $ # toss trailing whitespace on the header.
- (?P<stack> .*?) # don't blink: absorb stuff until...
- ^ (?P<msg> \w+ .*) # a line *starts* with alphanum.
- """, re.VERBOSE | re.MULTILINE | re.DOTALL)
-
- # A callable returning a true value if its argument is a blank line
- # or contains a single comment.
- _IS_BLANK_OR_COMMENT = re.compile(r'^[ ]*(#.*)?$').match
-
- def parse(self, string, name='<string>'):
- """
- Divide the given string into examples and intervening text,
- and return them as a list of alternating Examples and strings.
- Line numbers for the Examples are 0-based. The optional
- argument `name` is a name identifying this string, and is only
- used for error messages.
- """
- string = string.expandtabs()
- # If all lines begin with the same indentation, then strip it.
- min_indent = self._min_indent(string)
- if min_indent > 0:
- string = '\n'.join([l[min_indent:] for l in string.split('\n')])
-
- output = []
- charno, lineno = 0, 0
- # Find all doctest examples in the string:
- for m in self._EXAMPLE_RE.finditer(string):
- # Add the pre-example text to `output`.
- output.append(string[charno:m.start()])
- # Update lineno (lines before this example)
- lineno += string.count('\n', charno, m.start())
- # Extract info from the regexp match.
- (source, options, want, exc_msg) = \
- self._parse_example(m, name, lineno)
- # Create an Example, and add it to the list.
- if not self._IS_BLANK_OR_COMMENT(source):
- output.append( Example(source, want, exc_msg,
- lineno=lineno,
- indent=min_indent+len(m.group('indent')),
- options=options) )
- # Update lineno (lines inside this example)
- lineno += string.count('\n', m.start(), m.end())
- # Update charno.
- charno = m.end()
- # Add any remaining post-example text to `output`.
- output.append(string[charno:])
- return output
-
- def get_doctest(self, string, globs, name, filename, lineno):
- """
- Extract all doctest examples from the given string, and
- collect them into a `DocTest` object.
-
- `globs`, `name`, `filename`, and `lineno` are attributes for
- the new `DocTest` object. See the documentation for `DocTest`
- for more information.
- """
- return DocTest(self.get_examples(string, name), globs,
- name, filename, lineno, string)
-
- def get_examples(self, string, name='<string>'):
- """
- Extract all doctest examples from the given string, and return
- them as a list of `Example` objects. Line numbers are
- 0-based, because it's most common in doctests that nothing
- interesting appears on the same line as opening triple-quote,
- and so the first interesting line is called \"line 1\" then.
-
- The optional argument `name` is a name identifying this
- string, and is only used for error messages.
- """
- return [x for x in self.parse(string, name)
- if isinstance(x, Example)]
-
- def _parse_example(self, m, name, lineno):
- """
- Given a regular expression match from `_EXAMPLE_RE` (`m`),
- return a pair `(source, want)`, where `source` is the matched
- example's source code (with prompts and indentation stripped);
- and `want` is the example's expected output (with indentation
- stripped).
-
- `name` is the string's name, and `lineno` is the line number
- where the example starts; both are used for error messages.
- """
- # Get the example's indentation level.
- indent = len(m.group('indent'))
-
- # Divide source into lines; check that they're properly
- # indented; and then strip their indentation & prompts.
- source_lines = m.group('source').split('\n')
- self._check_prompt_blank(source_lines, indent, name, lineno)
- self._check_prefix(source_lines[1:], ' '*indent + '.', name, lineno)
- source = '\n'.join([sl[indent+4:] for sl in source_lines])
-
- # Divide want into lines; check that it's properly indented; and
- # then strip the indentation. Spaces before the last newline should
- # be preserved, so plain rstrip() isn't good enough.
- want = m.group('want')
- want_lines = want.split('\n')
- if len(want_lines) > 1 and re.match(r' *$', want_lines[-1]):
- del want_lines[-1] # forget final newline & spaces after it
- self._check_prefix(want_lines, ' '*indent, name,
- lineno + len(source_lines))
- want = '\n'.join([wl[indent:] for wl in want_lines])
-
- # If `want` contains a traceback message, then extract it.
- m = self._EXCEPTION_RE.match(want)
- if m:
- exc_msg = m.group('msg')
- else:
- exc_msg = None
-
- # Extract options from the source.
- options = self._find_options(source, name, lineno)
-
- return source, options, want, exc_msg
-
- # This regular expression looks for option directives in the
- # source code of an example. Option directives are comments
- # starting with "doctest:". Warning: this may give false
- # positives for string-literals that contain the string
- # "#doctest:". Eliminating these false positives would require
- # actually parsing the string; but we limit them by ignoring any
- # line containing "#doctest:" that is *followed* by a quote mark.
- _OPTION_DIRECTIVE_RE = re.compile(r'#\s*doctest:\s*([^\n\'"]*)$',
- re.MULTILINE)
-
- def _find_options(self, source, name, lineno):
- """
- Return a dictionary containing option overrides extracted from
- option directives in the given source string.
-
- `name` is the string's name, and `lineno` is the line number
- where the example starts; both are used for error messages.
- """
- options = {}
- # (note: with the current regexp, this will match at most once:)
- for m in self._OPTION_DIRECTIVE_RE.finditer(source):
- option_strings = m.group(1).replace(',', ' ').split()
- for option in option_strings:
- if (option[0] not in '+-' or
- option[1:] not in OPTIONFLAGS_BY_NAME):
- raise ValueError('line %r of the doctest for %s '
- 'has an invalid option: %r' %
- (lineno+1, name, option))
- flag = OPTIONFLAGS_BY_NAME[option[1:]]
- options[flag] = (option[0] == '+')
- if options and self._IS_BLANK_OR_COMMENT(source):
- raise ValueError('line %r of the doctest for %s has an option '
- 'directive on a line with no example: %r' %
- (lineno, name, source))
- return options
-
- # This regular expression finds the indentation of every non-blank
- # line in a string.
- _INDENT_RE = re.compile('^([ ]*)(?=\S)', re.MULTILINE)
-
- def _min_indent(self, s):
- "Return the minimum indentation of any non-blank line in `s`"
- indents = [len(indent) for indent in self._INDENT_RE.findall(s)]
- if len(indents) > 0:
- return min(indents)
- else:
- return 0
-
- def _check_prompt_blank(self, lines, indent, name, lineno):
- """
- Given the lines of a source string (including prompts and
- leading indentation), check to make sure that every prompt is
- followed by a space character. If any line is not followed by
- a space character, then raise ValueError.
- """
- for i, line in enumerate(lines):
- if len(line) >= indent+4 and line[indent+3] != ' ':
- raise ValueError('line %r of the docstring for %s '
- 'lacks blank after %s: %r' %
- (lineno+i+1, name,
- line[indent:indent+3], line))
-
- def _check_prefix(self, lines, prefix, name, lineno):
- """
- Check that every line in the given list starts with the given
- prefix; if any line does not, then raise a ValueError.
- """
- for i, line in enumerate(lines):
- if line and not line.startswith(prefix):
- raise ValueError('line %r of the docstring for %s has '
- 'inconsistent leading whitespace: %r' %
- (lineno+i+1, name, line))
-
-
-######################################################################
-## 4. DocTest Finder
-######################################################################
-
-class DocTestFinder:
- """
- A class used to extract the DocTests that are relevant to a given
- object, from its docstring and the docstrings of its contained
- objects. Doctests can currently be extracted from the following
- object types: modules, functions, classes, methods, staticmethods,
- classmethods, and properties.
- """
-
- def __init__(self, verbose=False, parser=DocTestParser(),
- recurse=True, exclude_empty=True):
- """
- Create a new doctest finder.
-
- The optional argument `parser` specifies a class or
- function that should be used to create new DocTest objects (or
- objects that implement the same interface as DocTest). The
- signature for this factory function should match the signature
- of the DocTest constructor.
-
- If the optional argument `recurse` is false, then `find` will
- only examine the given object, and not any contained objects.
-
- If the optional argument `exclude_empty` is false, then `find`
- will include tests for objects with empty docstrings.
- """
- self._parser = parser
- self._verbose = verbose
- self._recurse = recurse
- self._exclude_empty = exclude_empty
-
- def find(self, obj, name=None, module=None, globs=None, extraglobs=None):
- """
- Return a list of the DocTests that are defined by the given
- object's docstring, or by any of its contained objects'
- docstrings.
-
- The optional parameter `module` is the module that contains
- the given object. If the module is not specified or is None, then
- the test finder will attempt to automatically determine the
- correct module. The object's module is used:
-
- - As a default namespace, if `globs` is not specified.
- - To prevent the DocTestFinder from extracting DocTests
- from objects that are imported from other modules.
- - To find the name of the file containing the object.
- - To help find the line number of the object within its
- file.
-
- Contained objects whose module does not match `module` are ignored.
-
- If `module` is False, no attempt to find the module will be made.
- This is obscure, of use mostly in tests: if `module` is False, or
- is None but cannot be found automatically, then all objects are
- considered to belong to the (non-existent) module, so all contained
- objects will (recursively) be searched for doctests.
-
- The globals for each DocTest is formed by combining `globs`
- and `extraglobs` (bindings in `extraglobs` override bindings
- in `globs`). A new copy of the globals dictionary is created
- for each DocTest. If `globs` is not specified, then it
- defaults to the module's `__dict__`, if specified, or {}
- otherwise. If `extraglobs` is not specified, then it defaults
- to {}.
-
- """
- # If name was not specified, then extract it from the object.
- if name is None:
- name = getattr(obj, '__name__', None)
- if name is None:
- raise ValueError("DocTestFinder.find: name must be given "
- "when obj.__name__ doesn't exist: %r" %
- (type(obj),))
-
- # Find the module that contains the given object (if obj is
- # a module, then module=obj.). Note: this may fail, in which
- # case module will be None.
- if module is False:
- module = None
- elif module is None:
- module = inspect.getmodule(obj)
-
- # Read the module's source code. This is used by
- # DocTestFinder._find_lineno to find the line number for a
- # given object's docstring.
- try:
- file = inspect.getsourcefile(obj) or inspect.getfile(obj)
- source_lines = linecache.getlines(file)
- if not source_lines:
- source_lines = None
- except TypeError:
- source_lines = None
-
- # Initialize globals, and merge in extraglobs.
- if globs is None:
- if module is None:
- globs = {}
- else:
- globs = module.__dict__.copy()
- else:
- globs = globs.copy()
- if extraglobs is not None:
- globs.update(extraglobs)
-
- # Recursively explore `obj`, extracting DocTests.
- tests = []
- self._find(tests, obj, name, module, source_lines, globs, {})
- return tests
-
- def _from_module(self, module, object):
- """
- Return true if the given object is defined in the given
- module.
- """
- if module is None:
- return True
- elif inspect.isfunction(object):
- return module.__dict__ is six.get_function_globals(object)
- elif inspect.isclass(object):
- return module.__name__ == object.__module__
- elif inspect.getmodule(object) is not None:
- return module is inspect.getmodule(object)
- elif hasattr(object, '__module__'):
- return module.__name__ == object.__module__
- elif isinstance(object, property):
- return True # [XX] no way not be sure.
- else:
- raise ValueError("object must be a class or function")
-
- def _find(self, tests, obj, name, module, source_lines, globs, seen):
- """
- Find tests for the given object and any contained objects, and
- add them to `tests`.
- """
- if self._verbose:
- print('Finding tests in %s' % name)
-
- # If we've already processed this object, then ignore it.
- if id(obj) in seen:
- return
- seen[id(obj)] = 1
-
- # Find a test for this object, and add it to the list of tests.
- test = self._get_test(obj, name, module, globs, source_lines)
- if test is not None:
- tests.append(test)
-
- # Look for tests in a module's contained objects.
- if inspect.ismodule(obj) and self._recurse:
- for valname, val in obj.__dict__.items():
- valname = '%s.%s' % (name, valname)
- # Recurse to functions & classes.
- if ((inspect.isfunction(val) or inspect.isclass(val)) and
- self._from_module(module, val)):
- self._find(tests, val, valname, module, source_lines,
- globs, seen)
-
- # Look for tests in a module's __test__ dictionary.
- if inspect.ismodule(obj) and self._recurse:
- for valname, val in getattr(obj, '__test__', {}).items():
- if not isinstance(valname, six.string_types):
- raise ValueError("DocTestFinder.find: __test__ keys "
- "must be strings: %r" %
- (type(valname),))
- if not (inspect.isfunction(val) or inspect.isclass(val) or
- inspect.ismethod(val) or inspect.ismodule(val) or
- isinstance(val, six.string_types)):
- raise ValueError("DocTestFinder.find: __test__ values "
- "must be strings, functions, methods, "
- "classes, or modules: %r" %
- (type(val),))
- valname = '%s.__test__.%s' % (name, valname)
- self._find(tests, val, valname, module, source_lines,
- globs, seen)
-
- # Look for tests in a class's contained objects.
- if inspect.isclass(obj) and self._recurse:
- for valname, val in obj.__dict__.items():
- # Special handling for staticmethod/classmethod.
- if isinstance(val, staticmethod):
- val = getattr(obj, valname)
- if isinstance(val, classmethod):
- val = getattr(obj, valname).__func__
-
- # Recurse to methods, properties, and nested classes.
- if ((inspect.isfunction(val) or inspect.isclass(val) or
- isinstance(val, property)) and
- self._from_module(module, val)):
- valname = '%s.%s' % (name, valname)
- self._find(tests, val, valname, module, source_lines,
- globs, seen)
-
- def _get_test(self, obj, name, module, globs, source_lines):
- """
- Return a DocTest for the given object, if it defines a docstring;
- otherwise, return None.
- """
- # Extract the object's docstring. If it doesn't have one,
- # then return None (no test for this object).
- if isinstance(obj, six.string_types):
- docstring = obj
- else:
- try:
- if obj.__doc__ is None:
- docstring = ''
- else:
- docstring = obj.__doc__
- if not isinstance(docstring, six.string_types):
- docstring = str(docstring)
- except (TypeError, AttributeError):
- docstring = ''
-
- # Find the docstring's location in the file.
- lineno = self._find_lineno(obj, source_lines)
-
- # Don't bother if the docstring is empty.
- if self._exclude_empty and not docstring:
- return None
-
- # Return a DocTest for this object.
- if module is None:
- filename = None
- else:
- filename = getattr(module, '__file__', module.__name__)
- if filename[-4:] in (".pyc", ".pyo"):
- filename = filename[:-1]
- return self._parser.get_doctest(docstring, globs, name,
- filename, lineno)
-
- def _find_lineno(self, obj, source_lines):
- """
- Return a line number of the given object's docstring. Note:
- this method assumes that the object has a docstring.
- """
- lineno = None
-
- # Find the line number for modules.
- if inspect.ismodule(obj):
- lineno = 0
-
- # Find the line number for classes.
- # Note: this could be fooled if a class is defined multiple
- # times in a single file.
- if inspect.isclass(obj):
- if source_lines is None:
- return None
- pat = re.compile(r'^\s*class\s*%s\b' %
- getattr(obj, '__name__', '-'))
- for i, line in enumerate(source_lines):
- if pat.match(line):
- lineno = i
- break
-
- # Find the line number for functions & methods.
- if inspect.ismethod(obj): obj = obj.__func__
- if inspect.isfunction(obj): obj = six.get_function_code(obj)
- if inspect.istraceback(obj): obj = obj.tb_frame
- if inspect.isframe(obj): obj = obj.f_code
- if inspect.iscode(obj):
- lineno = getattr(obj, 'co_firstlineno', None)-1
-
- # Find the line number where the docstring starts. Assume
- # that it's the first line that begins with a quote mark.
- # Note: this could be fooled by a multiline function
- # signature, where a continuation line begins with a quote
- # mark.
- if lineno is not None:
- if source_lines is None:
- return lineno+1
- pat = re.compile('(^|.*:)\s*\w*("|\')')
- for lineno in range(lineno, len(source_lines)):
- if pat.match(source_lines[lineno]):
- return lineno
-
- # We couldn't find the line number.
- return None
-
-######################################################################
-## 5. DocTest Runner
-######################################################################
-
-class DocTestRunner:
- """
- A class used to run DocTest test cases, and accumulate statistics.
- The `run` method is used to process a single DocTest case. It
- returns a tuple `(f, t)`, where `t` is the number of test cases
- tried, and `f` is the number of test cases that failed.
-
- >>> tests = DocTestFinder().find(_TestClass)
- >>> runner = DocTestRunner(verbose=False)
- >>> for test in tests:
- ... print(runner.run(test))
- (0, 2)
- (0, 1)
- (0, 2)
- (0, 2)
-
- The `summarize` method prints a summary of all the test cases that
- have been run by the runner, and returns an aggregated `(f, t)`
- tuple:
-
- >>> runner.summarize(verbose=1)
- 4 items passed all tests:
- 2 tests in _TestClass
- 2 tests in _TestClass.__init__
- 2 tests in _TestClass.get
- 1 tests in _TestClass.square
- 7 tests in 4 items.
- 7 passed and 0 failed.
- Test passed.
- (0, 7)
-
- The aggregated number of tried examples and failed examples is
- also available via the `tries` and `failures` attributes:
-
- >>> runner.tries
- 7
- >>> runner.failures
- 0
-
- The comparison between expected outputs and actual outputs is done
- by an `OutputChecker`. This comparison may be customized with a
- number of option flags; see the documentation for `testmod` for
- more information. If the option flags are insufficient, then the
- comparison may also be customized by passing a subclass of
- `OutputChecker` to the constructor.
-
- The test runner's display output can be controlled in two ways.
- First, an output function (`out) can be passed to
- `TestRunner.run`; this function will be called with strings that
- should be displayed. It defaults to `sys.stdout.write`. If
- capturing the output is not sufficient, then the display output
- can be also customized by subclassing DocTestRunner, and
- overriding the methods `report_start`, `report_success`,
- `report_unexpected_exception`, and `report_failure`.
- """
- # This divider string is used to separate failure messages, and to
- # separate sections of the summary.
- DIVIDER = "*" * 70
-
- def __init__(self, checker=None, verbose=None, optionflags=0):
- """
- Create a new test runner.
-
- Optional keyword arg `checker` is the `OutputChecker` that
- should be used to compare the expected outputs and actual
- outputs of doctest examples.
-
- Optional keyword arg 'verbose' prints lots of stuff if true,
- only failures if false; by default, it's true iff '-v' is in
- sys.argv.
-
- Optional argument `optionflags` can be used to control how the
- test runner compares expected output to actual output, and how
- it displays failures. See the documentation for `testmod` for
- more information.
- """
- self._checker = checker or OutputChecker()
- if verbose is None:
- verbose = '-v' in sys.argv
- self._verbose = verbose
- self.optionflags = optionflags
- self.original_optionflags = optionflags
-
- # Keep track of the examples we've run.
- self.tries = 0
- self.failures = 0
- self._name2ft = {}
-
- # Create a fake output target for capturing doctest output.
- self._fakeout = _SpoofOut()
-
- #/////////////////////////////////////////////////////////////////
- # Reporting methods
- #/////////////////////////////////////////////////////////////////
-
- def report_start(self, out, test, example):
- """
- Report that the test runner is about to process the given
- example. (Only displays a message if verbose=True)
- """
- if self._verbose:
- if example.want:
- out('Trying:\n' + _indent(example.source) +
- 'Expecting:\n' + _indent(example.want))
- else:
- out('Trying:\n' + _indent(example.source) +
- 'Expecting nothing\n')
-
- def report_success(self, out, test, example, got):
- """
- Report that the given example ran successfully. (Only
- displays a message if verbose=True)
- """
- if self._verbose:
- out("ok\n")
-
- def report_failure(self, out, test, example, got):
- """
- Report that the given example failed.
- """
- out(self._failure_header(test, example) +
- self._checker.output_difference(example, got, self.optionflags))
-
- def report_unexpected_exception(self, out, test, example, exc_info):
- """
- Report that the given example raised an unexpected exception.
- """
- out(self._failure_header(test, example) +
- 'Exception raised:\n' + _indent(_exception_traceback(exc_info)))
-
- def _failure_header(self, test, example):
- out = [self.DIVIDER]
- if test.filename:
- if test.lineno is not None and example.lineno is not None:
- lineno = test.lineno + example.lineno + 1
- else:
- lineno = '?'
- out.append('File "%s", line %s, in %s' %
- (test.filename, lineno, test.name))
- else:
- out.append('Line %s, in %s' % (example.lineno+1, test.name))
- out.append('Failed example:')
- source = example.source
- out.append(_indent(source))
- return '\n'.join(out)
-
- #/////////////////////////////////////////////////////////////////
- # DocTest Running
- #/////////////////////////////////////////////////////////////////
-
- def __run(self, test, compileflags, out):
- """
- Run the examples in `test`. Write the outcome of each example
- with one of the `DocTestRunner.report_*` methods, using the
- writer function `out`. `compileflags` is the set of compiler
- flags that should be used to execute examples. Return a tuple
- `(f, t)`, where `t` is the number of examples tried, and `f`
- is the number of examples that failed. The examples are run
- in the namespace `test.globs`.
- """
- # Keep track of the number of failures and tries.
- failures = tries = 0
-
- # Save the option flags (since option directives can be used
- # to modify them).
- original_optionflags = self.optionflags
-
- SUCCESS, FAILURE, BOOM = range(3) # `outcome` state
-
- check = self._checker.check_output
-
- # Process each example.
- for examplenum, example in enumerate(test.examples):
-
- # If REPORT_ONLY_FIRST_FAILURE is set, then suppress
- # reporting after the first failure.
- quiet = (self.optionflags & REPORT_ONLY_FIRST_FAILURE and
- failures > 0)
-
- # Merge in the example's options.
- self.optionflags = original_optionflags
- if example.options:
- for (optionflag, val) in example.options.items():
- if val:
- self.optionflags |= optionflag
- else:
- self.optionflags &= ~optionflag
-
- # If 'SKIP' is set, then skip this example.
- if self.optionflags & SKIP:
- continue
-
- # Record that we started this example.
- tries += 1
- if not quiet:
- self.report_start(out, test, example)
-
- # Use a special filename for compile(), so we can retrieve
- # the source code during interactive debugging (see
- # __patched_linecache_getlines).
- filename = '<doctest %s[%d]>' % (test.name, examplenum)
-
- # Doctest and Py3 issue:
- # If the current example that we wish to run is going to fail
- # because it expects a leading u"", then use an alternate displayhook
- original_displayhook = sys.displayhook
-
- if six.PY3:
- # only set alternate displayhook if Python 3.x or after
- lines = []
- def py3_displayhook(value):
- if value is None:
- # None should not be considered at all
- return original_displayhook(value)
-
- # Collect the repr output in one variable
- s = repr(value)
- # Strip b"" and u"" prefixes from the repr and expected output
- # TODO: better way of stripping the prefixes?
- expected = example.want
- expected = expected.strip() # be wary of newlines
- s = s.replace("u", "")
- s = s.replace("b", "")
- expected = expected.replace("u", "")
- expected = expected.replace("b", "")
- # single quote vs. double quote should not matter
- # default all quote marks to double quote
- s = s.replace("'", '"')
- expected = expected.replace("'", '"')
-
- # In case of multi-line expected result
- lines.append(s)
-
- # let them match
- if s == expected: # be wary of false positives here
- # they should be the same, print expected value
- sys.stdout.write("%s\n" % example.want.strip())
-
- # multi-line expected output, doctest uses loop
- elif len(expected.split("\n")) == len(lines):
- if "\n".join(lines) == expected:
- sys.stdout.write("%s\n" % example.want.strip())
- else:
- sys.stdout.write("%s\n" % repr(value))
- elif len(expected.split("\n")) != len(lines):
- # we are not done looping yet, do not print anything!
- pass
-
- else:
- sys.stdout.write("%s\n" % repr(value))
-
- sys.displayhook = py3_displayhook
-
- # Run the example in the given context (globs), and record
- # any exception that gets raised. (But don't intercept
- # keyboard interrupts.)
- try:
- # Don't blink! This is where the user's code gets run.
- six.exec_(compile(example.source, filename, "single",
- compileflags, 1), test.globs)
- self.debugger.set_continue() # ==== Example Finished ====
- exception = None
- except KeyboardInterrupt:
- raise
- except:
- exception = sys.exc_info()
- self.debugger.set_continue() # ==== Example Finished ====
- finally:
- # restore the original displayhook
- sys.displayhook = original_displayhook
-
- got = self._fakeout.getvalue() # the actual output
- self._fakeout.truncate(0)
- # Python 3.1 requires seek after truncate
- self._fakeout.seek(0)
- outcome = FAILURE # guilty until proved innocent or insane
-
- # If the example executed without raising any exceptions,
- # verify its output.
- if exception is None:
- if check(example.want, got, self.optionflags):
- outcome = SUCCESS
-
- # The example raised an exception: check if it was expected.
- else:
- exc_msg = traceback.format_exception_only(*exception[:2])[-1]
- if six.PY3:
- # module name will be in group(1) and the expected
- # exception message will be in group(2)
- m = re.match(r'(.*)\.(\w+:.+\s)', exc_msg)
- # make sure there's a match
- if m != None:
- f_name = m.group(1)
- # check to see if m.group(1) contains the module name
- if f_name == exception[0].__module__:
- # strip the module name from exc_msg
- exc_msg = m.group(2)
-
- if not quiet:
- got += _exception_traceback(exception)
-
- # If `example.exc_msg` is None, then we weren't expecting
- # an exception.
- if example.exc_msg is None:
- outcome = BOOM
-
- # We expected an exception: see whether it matches.
- elif check(example.exc_msg, exc_msg, self.optionflags):
- outcome = SUCCESS
-
- # Another chance if they didn't care about the detail.
- elif self.optionflags & IGNORE_EXCEPTION_DETAIL:
- m1 = re.match(r'[^:]*:', example.exc_msg)
- m2 = re.match(r'[^:]*:', exc_msg)
- if m1 and m2 and check(m1.group(0), m2.group(0),
- self.optionflags):
- outcome = SUCCESS
-
- # Report the outcome.
- if outcome is SUCCESS:
- if not quiet:
- self.report_success(out, test, example, got)
- elif outcome is FAILURE:
- if not quiet:
- self.report_failure(out, test, example, got)
- failures += 1
- elif outcome is BOOM:
- if not quiet:
- self.report_unexpected_exception(out, test, example,
- exception)
- failures += 1
- else:
- assert False, ("unknown outcome", outcome)
-
- # Restore the option flags (in case they were modified)
- self.optionflags = original_optionflags
-
- # Record and return the number of failures and tries.
- self.__record_outcome(test, failures, tries)
- return failures, tries
-
- def __record_outcome(self, test, f, t):
- """
- Record the fact that the given DocTest (`test`) generated `f`
- failures out of `t` tried examples.
- """
- f2, t2 = self._name2ft.get(test.name, (0,0))
- self._name2ft[test.name] = (f+f2, t+t2)
- self.failures += f
- self.tries += t
-
- __LINECACHE_FILENAME_RE = re.compile(r'<doctest '
- r'(?P<name>[\w\.]+)'
- r'\[(?P<examplenum>\d+)\]>$')
- def __patched_linecache_getlines(self, filename, module_globals=None):
- m = self.__LINECACHE_FILENAME_RE.match(filename)
- if m and m.group('name') == self.test.name:
- example = self.test.examples[int(m.group('examplenum'))]
- return example.source.splitlines(True)
- else:
- return self.save_linecache_getlines(filename, module_globals)
-
- def run(self, test, compileflags=None, out=None, clear_globs=True):
- """
- Run the examples in `test`, and display the results using the
- writer function `out`.
-
- The examples are run in the namespace `test.globs`. If
- `clear_globs` is true (the default), then this namespace will
- be cleared after the test runs, to help with garbage
- collection. If you would like to examine the namespace after
- the test completes, then use `clear_globs=False`.
-
- `compileflags` gives the set of flags that should be used by
- the Python compiler when running the examples. If not
- specified, then it will default to the set of future-import
- flags that apply to `globs`.
-
- The output of each example is checked using
- `DocTestRunner.check_output`, and the results are formatted by
- the `DocTestRunner.report_*` methods.
- """
- self.test = test
-
- if compileflags is None:
- compileflags = _extract_future_flags(test.globs)
-
- save_stdout = sys.stdout
- if out is None:
- out = save_stdout.write
- sys.stdout = self._fakeout
-
- # Patch pdb.set_trace to restore sys.stdout during interactive
- # debugging (so it's not still redirected to self._fakeout).
- # Note that the interactive output will go to *our*
- # save_stdout, even if that's not the real sys.stdout; this
- # allows us to write test cases for the set_trace behavior.
- save_set_trace = pdb.set_trace
- self.debugger = _OutputRedirectingPdb(save_stdout)
- self.debugger.reset()
- pdb.set_trace = self.debugger.set_trace
-
- # Patch linecache.getlines, so we can see the example's source
- # when we're inside the debugger.
- self.save_linecache_getlines = linecache.getlines
- linecache.getlines = self.__patched_linecache_getlines
-
- try:
- return self.__run(test, compileflags, out)
- finally:
- sys.stdout = save_stdout
- pdb.set_trace = save_set_trace
- linecache.getlines = self.save_linecache_getlines
- if clear_globs:
- test.globs.clear()
-
- #/////////////////////////////////////////////////////////////////
- # Summarization
- #/////////////////////////////////////////////////////////////////
- def summarize(self, verbose=None):
- """
- Print a summary of all the test cases that have been run by
- this DocTestRunner, and return a tuple `(f, t)`, where `f` is
- the total number of failed examples, and `t` is the total
- number of tried examples.
-
- The optional `verbose` argument controls how detailed the
- summary is. If the verbosity is not specified, then the
- DocTestRunner's verbosity is used.
- """
- if verbose is None:
- verbose = self._verbose
- notests = []
- passed = []
- failed = []
- totalt = totalf = 0
- for x in self._name2ft.items():
- name, (f, t) = x
- assert f <= t
- totalt += t
- totalf += f
- if t == 0:
- notests.append(name)
- elif f == 0:
- passed.append( (name, t) )
- else:
- failed.append(x)
- if verbose:
- if notests:
- print("%d items had no tests:" % len(notests))
- notests.sort()
- for thing in notests:
- print(" %s" % thing)
- if passed:
- print("%d items passed all tests:" % len(passed))
- passed.sort()
- for thing, count in passed:
- print(" %3d tests in %s" % (count, thing))
- if failed:
- print(self.DIVIDER)
- print("%d items had failures:" % len(failed))
- failed.sort()
- for thing, (f, t) in failed:
- print(" %3d of %3d in %s" % (f, t, thing))
- if verbose:
- print("%d tests in % d items" % (len(self._name2ft), totalt))
- print("%d passed and %d failed." % (totalt - totalf, totalf))
- if totalf:
- print("***Test Failed*** %d failures." % totalf)
- elif verbose:
- print("Test passed.")
- return totalf, totalt
-
- #/////////////////////////////////////////////////////////////////
- # Backward compatibility cruft to maintain doctest.master.
- #/////////////////////////////////////////////////////////////////
- def merge(self, other):
- d = self._name2ft
- for name, (f, t) in other._name2ft.items():
- if name in d:
- print("*** DocTestRunner.merge: '" + name + "' in both" \
- " testers; summing outcomes.")
- f2, t2 = d[name]
- f = f + f2
- t = t + t2
- d[name] = f, t
-
-class OutputChecker:
- """
- A class used to check the whether the actual output from a doctest
- example matches the expected output. `OutputChecker` defines two
- methods: `check_output`, which compares a given pair of outputs,
- and returns true if they match; and `output_difference`, which
- returns a string describing the differences between two outputs.
- """
- def check_output(self, want, got, optionflags):
- """
- Return True iff the actual output from an example (`got`)
- matches the expected output (`want`). These strings are
- always considered to match if they are identical; but
- depending on what option flags the test runner is using,
- several non-exact match types are also possible. See the
- documentation for `TestRunner` for more information about
- option flags.
- """
- # Handle the common case first, for efficiency:
- # if they're string-identical, always return true.
- if got == want:
- return True
-
- # The values True and False replaced 1 and 0 as the return
- # value for boolean comparisons in Python 2.3.
- if not (optionflags & DONT_ACCEPT_TRUE_FOR_1):
- if (got,want) == ("True\n", "1\n"):
- return True
- if (got,want) == ("False\n", "0\n"):
- return True
-
- # <BLANKLINE> can be used as a special sequence to signify a
- # blank line, unless the DONT_ACCEPT_BLANKLINE flag is used.
- if not (optionflags & DONT_ACCEPT_BLANKLINE):
- # Replace <BLANKLINE> in want with a blank line.
- want = re.sub('(?m)^%s\s*?$' % re.escape(BLANKLINE_MARKER),
- '', want)
- # If a line in got contains only spaces, then remove the
- # spaces.
- got = re.sub('(?m)^\s*?$', '', got)
- if got == want:
- return True
-
- # This flag causes doctest to ignore any differences in the
- # contents of whitespace strings. Note that this can be used
- # in conjunction with the ELLIPSIS flag.
- if optionflags & NORMALIZE_WHITESPACE:
- got = ' '.join(got.split())
- want = ' '.join(want.split())
- if got == want:
- return True
-
- # The ELLIPSIS flag says to let the sequence "..." in `want`
- # match any substring in `got`.
- if optionflags & ELLIPSIS:
- if _ellipsis_match(want, got):
- return True
-
- # We didn't find any match; return false.
- return False
-
- # Should we do a fancy diff?
- def _do_a_fancy_diff(self, want, got, optionflags):
- # Not unless they asked for a fancy diff.
- if not optionflags & (REPORT_UDIFF |
- REPORT_CDIFF |
- REPORT_NDIFF):
- return False
-
- # If expected output uses ellipsis, a meaningful fancy diff is
- # too hard ... or maybe not. In two real-life failures Tim saw,
- # a diff was a major help anyway, so this is commented out.
- # [todo] _ellipsis_match() knows which pieces do and don't match,
- # and could be the basis for a kick-ass diff in this case.
- ##if optionflags & ELLIPSIS and ELLIPSIS_MARKER in want:
- ## return False
-
- # ndiff does intraline difference marking, so can be useful even
- # for 1-line differences.
- if optionflags & REPORT_NDIFF:
- return True
-
- # The other diff types need at least a few lines to be helpful.
- return want.count('\n') > 2 and got.count('\n') > 2
-
- def output_difference(self, example, got, optionflags):
- """
- Return a string describing the differences between the
- expected output for a given example (`example`) and the actual
- output (`got`). `optionflags` is the set of option flags used
- to compare `want` and `got`.
- """
- want = example.want
- # If <BLANKLINE>s are being used, then replace blank lines
- # with <BLANKLINE> in the actual output string.
- if not (optionflags & DONT_ACCEPT_BLANKLINE):
- got = re.sub('(?m)^[ ]*(?=\n)', BLANKLINE_MARKER, got)
-
- # Check if we should use diff.
- if self._do_a_fancy_diff(want, got, optionflags):
- # Split want & got into lines.
- want_lines = want.splitlines(True) # True == keep line ends
- got_lines = got.splitlines(True)
- # Use difflib to find their differences.
- if optionflags & REPORT_UDIFF:
- diff = difflib.unified_diff(want_lines, got_lines, n=2)
- diff = list(diff)[2:] # strip the diff header
- kind = 'unified diff with -expected +actual'
- elif optionflags & REPORT_CDIFF:
- diff = difflib.context_diff(want_lines, got_lines, n=2)
- diff = list(diff)[2:] # strip the diff header
- kind = 'context diff with expected followed by actual'
- elif optionflags & REPORT_NDIFF:
- engine = difflib.Differ(charjunk=difflib.IS_CHARACTER_JUNK)
- diff = list(engine.compare(want_lines, got_lines))
- kind = 'ndiff with -expected +actual'
- else:
- assert 0, 'Bad diff option'
- # Remove trailing whitespace on diff output.
- diff = [line.rstrip() + '\n' for line in diff]
- return 'Differences (%s):\n' % kind + _indent(''.join(diff))
-
- # If we're not using diff, then simply list the expected
- # output followed by the actual output.
- if want and got:
- return 'Expected:\n%sGot:\n%s' % (_indent(want), _indent(got))
- elif want:
- return 'Expected:\n%sGot nothing\n' % _indent(want)
- elif got:
- return 'Expected nothing\nGot:\n%s' % _indent(got)
- else:
- return 'Expected nothing\nGot nothing\n'
-
-class DocTestFailure(Exception):
- """A DocTest example has failed in debugging mode.
-
- The exception instance has variables:
-
- - test: the DocTest object being run
-
- - example: the Example object that failed
-
- - got: the actual output
- """
- def __init__(self, test, example, got):
- self.test = test
- self.example = example
- self.got = got
-
- def __str__(self):
- return str(self.test)
-
-class UnexpectedException(Exception):
- """A DocTest example has encountered an unexpected exception
-
- The exception instance has variables:
-
- - test: the DocTest object being run
-
- - example: the Example object that failed
-
- - exc_info: the exception info
- """
- def __init__(self, test, example, exc_info):
- self.test = test
- self.example = example
- self.exc_info = exc_info
-
- def __str__(self):
- return str(self.test)
-
-class DebugRunner(DocTestRunner):
- r"""Run doc tests but raise an exception as soon as there is a failure.
-
- If an unexpected exception occurs, an UnexpectedException is raised.
- It contains the test, the example, and the original exception:
-
- >>> runner = DebugRunner(verbose=False)
- >>> test = DocTestParser().get_doctest('>>> raise KeyError\n42',
- ... {}, 'foo', 'foo.py', 0)
- >>> try:
- ... runner.run(test)
- ... except UnexpectedException as e:
- ... failure = e
-
- >>> failure.test is test
- True
-
- >>> failure.example.want
- '42\n'
-
- >>> exc_info = failure.exc_info
- >>> raise exc_info[0], exc_info[1], exc_info[2]
- Traceback (most recent call last):
- ...
- KeyError
-
- We wrap the original exception to give the calling application
- access to the test and example information.
-
- If the output doesn't match, then a DocTestFailure is raised:
-
- >>> test = DocTestParser().get_doctest('''
- ... >>> x = 1
- ... >>> x
- ... 2
- ... ''', {}, 'foo', 'foo.py', 0)
-
- >>> try:
- ... runner.run(test)
- ... except DocTestFailure as e:
- ... failure = e
-
- DocTestFailure objects provide access to the test:
-
- >>> failure.test is test
- True
-
- As well as to the example:
-
- >>> failure.example.want
- '2\n'
-
- and the actual output:
-
- >>> failure.got
- '1\n'
-
- If a failure or error occurs, the globals are left intact:
-
- >>> del test.globs['__builtins__']
- >>> test.globs
- {'x': 1}
-
- >>> test = DocTestParser().get_doctest('''
- ... >>> x = 2
- ... >>> raise KeyError
- ... ''', {}, 'foo', 'foo.py', 0)
-
- >>> runner.run(test)
- Traceback (most recent call last):
- ...
- UnexpectedException: <DocTest foo from foo.py:0 (2 examples)>
-
- >>> del test.globs['__builtins__']
- >>> test.globs
- {'x': 2}
-
- But the globals are cleared if there is no error:
-
- >>> test = DocTestParser().get_doctest('''
- ... >>> x = 2
- ... ''', {}, 'foo', 'foo.py', 0)
-
- >>> runner.run(test)
- (0, 1)
-
- >>> test.globs
- {}
-
- """
-
- def run(self, test, compileflags=None, out=None, clear_globs=True):
- r = DocTestRunner.run(self, test, compileflags, out, False)
- if clear_globs:
- test.globs.clear()
- return r
-
- def report_unexpected_exception(self, out, test, example, exc_info):
- raise UnexpectedException(test, example, exc_info)
-
- def report_failure(self, out, test, example, got):
- raise DocTestFailure(test, example, got)
-
-######################################################################
-## 6. Test Functions
-######################################################################
-# These should be backwards compatible.
-
-# For backward compatibility, a global instance of a DocTestRunner
-# class, updated by testmod.
-master = None
-
-def testmod(m=None, name=None, globs=None, verbose=None,
- report=True, optionflags=0, extraglobs=None,
- raise_on_error=False, exclude_empty=False):
- """m=None, name=None, globs=None, verbose=None, report=True,
- optionflags=0, extraglobs=None, raise_on_error=False,
- exclude_empty=False
-
- Test examples in docstrings in functions and classes reachable
- from module m (or the current module if m is not supplied), starting
- with m.__doc__.
-
- Also test examples reachable from dict m.__test__ if it exists and is
- not None. m.__test__ maps names to functions, classes and strings;
- function and class docstrings are tested even if the name is private;
- strings are tested directly, as if they were docstrings.
-
- Return (#failures, #tests).
-
- See doctest.__doc__ for an overview.
-
- Optional keyword arg "name" gives the name of the module; by default
- use m.__name__.
-
- Optional keyword arg "globs" gives a dict to be used as the globals
- when executing examples; by default, use m.__dict__. A copy of this
- dict is actually used for each docstring, so that each docstring's
- examples start with a clean slate.
-
- Optional keyword arg "extraglobs" gives a dictionary that should be
- merged into the globals that are used to execute examples. By
- default, no extra globals are used. This is new in 2.4.
-
- Optional keyword arg "verbose" prints lots of stuff if true, prints
- only failures if false; by default, it's true iff "-v" is in sys.argv.
-
- Optional keyword arg "report" prints a summary at the end when true,
- else prints nothing at the end. In verbose mode, the summary is
- detailed, else very brief (in fact, empty if all tests passed).
-
- Optional keyword arg "optionflags" or's together module constants,
- and defaults to 0. This is new in 2.3. Possible values (see the
- docs for details):
-
- DONT_ACCEPT_TRUE_FOR_1
- DONT_ACCEPT_BLANKLINE
- NORMALIZE_WHITESPACE
- ELLIPSIS
- SKIP
- IGNORE_EXCEPTION_DETAIL
- REPORT_UDIFF
- REPORT_CDIFF
- REPORT_NDIFF
- REPORT_ONLY_FIRST_FAILURE
-
- Optional keyword arg "raise_on_error" raises an exception on the
- first unexpected exception or failure. This allows failures to be
- post-mortem debugged.
-
- Advanced tomfoolery: testmod runs methods of a local instance of
- class doctest.Tester, then merges the results into (or creates)
- global Tester instance doctest.master. Methods of doctest.master
- can be called directly too, if you want to do something unusual.
- Passing report=0 to testmod is especially useful then, to delay
- displaying a summary. Invoke doctest.master.summarize(verbose)
- when you're done fiddling.
- """
- global master
-
- # If no module was given, then use __main__.
- if m is None:
- # DWA - m will still be None if this wasn't invoked from the command
- # line, in which case the following TypeError is about as good an error
- # as we should expect
- m = sys.modules.get('__main__')
-
- # Check that we were actually given a module.
- if not inspect.ismodule(m):
- raise TypeError("testmod: module required; %r" % (m,))
-
- # If no name was given, then use the module's name.
- if name is None:
- name = m.__name__
-
- # Find, parse, and run all tests in the given module.
- finder = DocTestFinder(exclude_empty=exclude_empty)
-
- if raise_on_error:
- runner = DebugRunner(verbose=verbose, optionflags=optionflags)
- else:
- runner = DocTestRunner(verbose=verbose, optionflags=optionflags)
-
- for test in finder.find(m, name, globs=globs, extraglobs=extraglobs):
- runner.run(test)
-
- if report:
- runner.summarize()
-
- if master is None:
- master = runner
- else:
- master.merge(runner)
-
- return runner.failures, runner.tries
-
-def testfile(filename, module_relative=True, name=None, package=None,
- globs=None, verbose=None, report=True, optionflags=0,
- extraglobs=None, raise_on_error=False, parser=DocTestParser(),
- encoding=None):
- """
- Test examples in the given file. Return (#failures, #tests).
-
- Optional keyword arg "module_relative" specifies how filenames
- should be interpreted:
-
- - If "module_relative" is True (the default), then "filename"
- specifies a module-relative path. By default, this path is
- relative to the calling module's directory; but if the
- "package" argument is specified, then it is relative to that
- package. To ensure os-independence, "filename" should use
- "/" characters to separate path segments, and should not
- be an absolute path (i.e., it may not begin with "/").
-
- - If "module_relative" is False, then "filename" specifies an
- os-specific path. The path may be absolute or relative (to
- the current working directory).
-
- Optional keyword arg "name" gives the name of the test; by default
- use the file's basename.
-
- Optional keyword argument "package" is a Python package or the
- name of a Python package whose directory should be used as the
- base directory for a module relative filename. If no package is
- specified, then the calling module's directory is used as the base
- directory for module relative filenames. It is an error to
- specify "package" if "module_relative" is False.
-
- Optional keyword arg "globs" gives a dict to be used as the globals
- when executing examples; by default, use {}. A copy of this dict
- is actually used for each docstring, so that each docstring's
- examples start with a clean slate.
-
- Optional keyword arg "extraglobs" gives a dictionary that should be
- merged into the globals that are used to execute examples. By
- default, no extra globals are used.
-
- Optional keyword arg "verbose" prints lots of stuff if true, prints
- only failures if false; by default, it's true iff "-v" is in sys.argv.
-
- Optional keyword arg "report" prints a summary at the end when true,
- else prints nothing at the end. In verbose mode, the summary is
- detailed, else very brief (in fact, empty if all tests passed).
-
- Optional keyword arg "optionflags" or's together module constants,
- and defaults to 0. Possible values (see the docs for details):
-
- DONT_ACCEPT_TRUE_FOR_1
- DONT_ACCEPT_BLANKLINE
- NORMALIZE_WHITESPACE
- ELLIPSIS
- SKIP
- IGNORE_EXCEPTION_DETAIL
- REPORT_UDIFF
- REPORT_CDIFF
- REPORT_NDIFF
- REPORT_ONLY_FIRST_FAILURE
-
- Optional keyword arg "raise_on_error" raises an exception on the
- first unexpected exception or failure. This allows failures to be
- post-mortem debugged.
-
- Optional keyword arg "parser" specifies a DocTestParser (or
- subclass) that should be used to extract tests from the files.
-
- Optional keyword arg "encoding" specifies an encoding that should
- be used to convert the file to unicode.
-
- Advanced tomfoolery: testmod runs methods of a local instance of
- class doctest.Tester, then merges the results into (or creates)
- global Tester instance doctest.master. Methods of doctest.master
- can be called directly too, if you want to do something unusual.
- Passing report=0 to testmod is especially useful then, to delay
- displaying a summary. Invoke doctest.master.summarize(verbose)
- when you're done fiddling.
- """
- global master
-
- if package and not module_relative:
- raise ValueError("Package may only be specified for module-"
- "relative paths.")
-
- # Relativize the path
- text, filename = _load_testfile(filename, package, module_relative)
-
- # If no name was given, then use the file's name.
- if name is None:
- name = os.path.basename(filename)
-
- # Assemble the globals.
- if globs is None:
- globs = {}
- else:
- globs = globs.copy()
- if extraglobs is not None:
- globs.update(extraglobs)
-
- if raise_on_error:
- runner = DebugRunner(verbose=verbose, optionflags=optionflags)
- else:
- runner = DocTestRunner(verbose=verbose, optionflags=optionflags)
-
- if encoding is not None:
- text = text.decode(encoding)
-
- # Read the file, convert it to a test, and run it.
- test = parser.get_doctest(text, globs, name, filename, 0)
- runner.run(test)
-
- if report:
- runner.summarize()
-
- if master is None:
- master = runner
- else:
- master.merge(runner)
-
- return runner.failures, runner.tries
-
-def run_docstring_examples(f, globs, verbose=False, name="NoName",
- compileflags=None, optionflags=0):
- """
- Test examples in the given object's docstring (`f`), using `globs`
- as globals. Optional argument `name` is used in failure messages.
- If the optional argument `verbose` is true, then generate output
- even if there are no failures.
-
- `compileflags` gives the set of flags that should be used by the
- Python compiler when running the examples. If not specified, then
- it will default to the set of future-import flags that apply to
- `globs`.
-
- Optional keyword arg `optionflags` specifies options for the
- testing and output. See the documentation for `testmod` for more
- information.
- """
- # Find, parse, and run all tests in the given module.
- finder = DocTestFinder(verbose=verbose, recurse=False)
- runner = DocTestRunner(verbose=verbose, optionflags=optionflags)
- for test in finder.find(f, name, globs=globs):
- runner.run(test, compileflags=compileflags)
-
-######################################################################
-## 7. Tester
-######################################################################
-# This is provided only for backwards compatibility. It's not
-# actually used in any way.
-
-class Tester:
- def __init__(self, mod=None, globs=None, verbose=None, optionflags=0):
-
- warnings.warn("class Tester is deprecated; "
- "use class doctest.DocTestRunner instead",
- DeprecationWarning, stacklevel=2)
- if mod is None and globs is None:
- raise TypeError("Tester.__init__: must specify mod or globs")
- if mod is not None and not inspect.ismodule(mod):
- raise TypeError("Tester.__init__: mod must be a module; %r" %
- (mod,))
- if globs is None:
- globs = mod.__dict__
- self.globs = globs
-
- self.verbose = verbose
- self.optionflags = optionflags
- self.testfinder = DocTestFinder()
- self.testrunner = DocTestRunner(verbose=verbose,
- optionflags=optionflags)
-
- def runstring(self, s, name):
- test = DocTestParser().get_doctest(s, self.globs, name, None, None)
- if self.verbose:
- print("Running string %s" % name)
- (f,t) = self.testrunner.run(test)
- if self.verbose:
- print("%s of %s examples failed in string %s" % (f, t, name))
- return (f,t)
-
- def rundoc(self, object, name=None, module=None):
- f = t = 0
- tests = self.testfinder.find(object, name, module=module,
- globs=self.globs)
- for test in tests:
- (f2, t2) = self.testrunner.run(test)
- (f,t) = (f+f2, t+t2)
- return (f,t)
-
- def rundict(self, d, name, module=None):
- import new
- m = new.module(name)
- m.__dict__.update(d)
- if module is None:
- module = False
- return self.rundoc(m, name, module)
-
- def run__test__(self, d, name):
- import new
- m = new.module(name)
- m.__test__ = d
- return self.rundoc(m, name)
-
- def summarize(self, verbose=None):
- return self.testrunner.summarize(verbose)
-
- def merge(self, other):
- self.testrunner.merge(other.testrunner)
-
-######################################################################
-## 8. Unittest Support
-######################################################################
-
-_unittest_reportflags = 0
-
-def set_unittest_reportflags(flags):
- """Sets the unittest option flags.
-
- The old flag is returned so that a runner could restore the old
- value if it wished to:
-
- >>> old = _unittest_reportflags
- >>> set_unittest_reportflags(REPORT_NDIFF |
- ... REPORT_ONLY_FIRST_FAILURE) == old
- True
-
- >>> import doctest
- >>> doctest._unittest_reportflags == (REPORT_NDIFF |
- ... REPORT_ONLY_FIRST_FAILURE)
- True
-
- Only reporting flags can be set:
-
- >>> set_unittest_reportflags(ELLIPSIS)
- Traceback (most recent call last):
- ...
- ValueError: ('Only reporting flags allowed', 8)
-
- >>> set_unittest_reportflags(old) == (REPORT_NDIFF |
- ... REPORT_ONLY_FIRST_FAILURE)
- True
- """
- global _unittest_reportflags
-
- if (flags & REPORTING_FLAGS) != flags:
- raise ValueError("Only reporting flags allowed", flags)
- old = _unittest_reportflags
- _unittest_reportflags = flags
- return old
-
-
-class DocTestCase(unittest.TestCase):
-
- def __init__(self, test, optionflags=0, setUp=None, tearDown=None,
- checker=None, runner=DocTestRunner):
-
- unittest.TestCase.__init__(self)
- self._dt_optionflags = optionflags
- self._dt_checker = checker
- self._dt_test = test
- self._dt_setUp = setUp
- self._dt_tearDown = tearDown
- self._dt_runner = runner
-
- def setUp(self):
- test = self._dt_test
-
- if self._dt_setUp is not None:
- self._dt_setUp(test)
-
- def tearDown(self):
- test = self._dt_test
-
- if self._dt_tearDown is not None:
- self._dt_tearDown(test)
-
- test.globs.clear()
-
- def runTest(self):
- test = self._dt_test
- old = sys.stdout
- new = StringIO()
- optionflags = self._dt_optionflags
-
- if not (optionflags & REPORTING_FLAGS):
- # The option flags don't include any reporting flags,
- # so add the default reporting flags
- optionflags |= _unittest_reportflags
-
- runner = self._dt_runner(optionflags=optionflags,
- checker=self._dt_checker, verbose=False)
-
- try:
- runner.DIVIDER = "-"*70
- failures, tries = runner.run(
- test, out=new.write, clear_globs=False)
- finally:
- sys.stdout = old
-
- if failures:
- raise self.failureException(self.format_failure(new.getvalue()))
-
- def format_failure(self, err):
- test = self._dt_test
- if test.lineno is None:
- lineno = 'unknown line number'
- else:
- lineno = '%s' % test.lineno
- lname = '.'.join(test.name.split('.')[-1:])
- return ('Failed doctest test for %s\n'
- ' File "%s", line %s, in %s\n\n%s'
- % (test.name, test.filename, lineno, lname, err)
- )
-
- def debug(self):
- r"""Run the test case without results and without catching exceptions
-
- The unit test framework includes a debug method on test cases
- and test suites to support post-mortem debugging. The test code
- is run in such a way that errors are not caught. This way a
- caller can catch the errors and initiate post-mortem debugging.
-
- The DocTestCase provides a debug method that raises
- UnexpectedException errors if there is an unexepcted
- exception:
-
- >>> test = DocTestParser().get_doctest('>>> raise KeyError\n42',
- ... {}, 'foo', 'foo.py', 0)
- >>> case = DocTestCase(test)
- >>> try:
- ... case.debug()
- ... except UnexpectedException as e:
- ... failure = e
-
- The UnexpectedException contains the test, the example, and
- the original exception:
-
- >>> failure.test is test
- True
-
- >>> failure.example.want
- '42\n'
-
- >>> exc_info = failure.exc_info
- >>> raise exc_info[0], exc_info[1], exc_info[2]
- Traceback (most recent call last):
- ...
- KeyError
-
- If the output doesn't match, then a DocTestFailure is raised:
-
- >>> test = DocTestParser().get_doctest('''
- ... >>> x = 1
- ... >>> x
- ... 2
- ... ''', {}, 'foo', 'foo.py', 0)
- >>> case = DocTestCase(test)
-
- >>> try:
- ... case.debug()
- ... except DocTestFailure as e:
- ... failure = e
-
- DocTestFailure objects provide access to the test:
-
- >>> failure.test is test
- True
-
- As well as to the example:
-
- >>> failure.example.want
- '2\n'
-
- and the actual output:
-
- >>> failure.got
- '1\n'
-
- """
-
- self.setUp()
- runner = DebugRunner(optionflags=self._dt_optionflags,
- checker=self._dt_checker, verbose=False)
- runner.run(self._dt_test)
- self.tearDown()
-
- def id(self):
- return self._dt_test.name
-
- def __repr__(self):
- name = self._dt_test.name.split('.')
- return "%s (%s)" % (name[-1], '.'.join(name[:-1]))
-
- __str__ = __repr__
-
- def shortDescription(self):
- return "Doctest: " + self._dt_test.name
-
-def DocTestSuite(module=None, globs=None, extraglobs=None, test_finder=None,
- test_class=DocTestCase, **options):
- """
- Convert doctest tests for a module to a unittest test suite.
-
- This converts each documentation string in a module that
- contains doctest tests to a unittest test case. If any of the
- tests in a doc string fail, then the test case fails. An exception
- is raised showing the name of the file containing the test and a
- (sometimes approximate) line number.
-
- The `module` argument provides the module to be tested. The argument
- can be either a module or a module name.
-
- If no argument is given, the calling module is used.
-
- A number of options may be provided as keyword arguments:
-
- setUp
- A set-up function. This is called before running the
- tests in each file. The setUp function will be passed a DocTest
- object. The setUp function can access the test globals as the
- globs attribute of the test passed.
-
- tearDown
- A tear-down function. This is called after running the
- tests in each file. The tearDown function will be passed a DocTest
- object. The tearDown function can access the test globals as the
- globs attribute of the test passed.
-
- globs
- A dictionary containing initial global variables for the tests.
-
- optionflags
- A set of doctest option flags expressed as an integer.
- """
-
- if test_finder is None:
- test_finder = DocTestFinder()
-
- module = _normalize_module(module)
- tests = test_finder.find(module, globs=globs, extraglobs=extraglobs)
- if globs is None:
- globs = module.__dict__
- if not tests:
- # Why do we want to do this? Because it reveals a bug that might
- # otherwise be hidden.
- raise ValueError(module, "has no tests")
-
- tests.sort()
- suite = unittest.TestSuite()
- for test in tests:
- if len(test.examples) == 0:
- continue
- if not test.filename:
- filename = module.__file__
- if filename[-4:] in (".pyc", ".pyo"):
- filename = filename[:-1]
- test.filename = filename
- suite.addTest(test_class(test, **options))
-
- return suite
-
-class DocFileCase(DocTestCase):
-
- def id(self):
- return '_'.join(self._dt_test.name.split('.'))
-
- def __repr__(self):
- return self._dt_test.filename
- __str__ = __repr__
-
- def format_failure(self, err):
- return ('Failed doctest test for %s\n File "%s", line 0\n\n%s'
- % (self._dt_test.name, self._dt_test.filename, err)
- )
-
-def DocFileTest(path, module_relative=True, package=None,
- globs=None, parser=DocTestParser(),
- encoding=None, **options):
- if globs is None:
- globs = {}
- else:
- globs = globs.copy()
-
- if package and not module_relative:
- raise ValueError("Package may only be specified for module-"
- "relative paths.")
-
- # Relativize the path.
- doc, path = _load_testfile(path, package, module_relative)
-
- if "__file__" not in globs:
- globs["__file__"] = path
-
- # Find the file and read it.
- name = os.path.basename(path)
-
- # If an encoding is specified, use it to convert the file to unicode
- if encoding is not None:
- doc = doc.decode(encoding)
-
- # Convert it to a test, and wrap it in a DocFileCase.
- test = parser.get_doctest(doc, globs, name, path, 0)
- return DocFileCase(test, **options)
-
-def DocFileSuite(*paths, **kw):
- """A unittest suite for one or more doctest files.
-
- The path to each doctest file is given as a string; the
- interpretation of that string depends on the keyword argument
- "module_relative".
-
- A number of options may be provided as keyword arguments:
-
- module_relative
- If "module_relative" is True, then the given file paths are
- interpreted as os-independent module-relative paths. By
- default, these paths are relative to the calling module's
- directory; but if the "package" argument is specified, then
- they are relative to that package. To ensure os-independence,
- "filename" should use "/" characters to separate path
- segments, and may not be an absolute path (i.e., it may not
- begin with "/").
-
- If "module_relative" is False, then the given file paths are
- interpreted as os-specific paths. These paths may be absolute
- or relative (to the current working directory).
-
- package
- A Python package or the name of a Python package whose directory
- should be used as the base directory for module relative paths.
- If "package" is not specified, then the calling module's
- directory is used as the base directory for module relative
- filenames. It is an error to specify "package" if
- "module_relative" is False.
-
- setUp
- A set-up function. This is called before running the
- tests in each file. The setUp function will be passed a DocTest
- object. The setUp function can access the test globals as the
- globs attribute of the test passed.
-
- tearDown
- A tear-down function. This is called after running the
- tests in each file. The tearDown function will be passed a DocTest
- object. The tearDown function can access the test globals as the
- globs attribute of the test passed.
-
- globs
- A dictionary containing initial global variables for the tests.
-
- optionflags
- A set of doctest option flags expressed as an integer.
-
- parser
- A DocTestParser (or subclass) that should be used to extract
- tests from the files.
-
- encoding
- An encoding that will be used to convert the files to unicode.
- """
- suite = unittest.TestSuite()
-
- # We do this here so that _normalize_module is called at the right
- # level. If it were called in DocFileTest, then this function
- # would be the caller and we might guess the package incorrectly.
- if kw.get('module_relative', True):
- kw['package'] = _normalize_module(kw.get('package'))
-
- for path in paths:
- suite.addTest(DocFileTest(path, **kw))
-
- return suite
-
-######################################################################
-## 9. Debugging Support
-######################################################################
-
-def script_from_examples(s):
- r"""Extract script from text with examples.
-
- Converts text with examples to a Python script. Example input is
- converted to regular code. Example output and all other words
- are converted to comments:
-
- >>> text = '''
- ... Here are examples of simple math.
- ...
- ... Python has super accurate integer addition
- ...
- ... >>> 2 + 2
- ... 5
- ...
- ... And very friendly error messages:
- ...
- ... >>> 1/0
- ... To Infinity
- ... And
- ... Beyond
- ...
- ... You can use logic if you want:
- ...
- ... >>> if 0:
- ... ... blah
- ... ... blah
- ... ...
- ...
- ... Ho hum
- ... '''
-
- >>> print(script_from_examples(text))
- # Here are examples of simple math.
- #
- # Python has super accurate integer addition
- #
- 2 + 2
- # Expected:
- ## 5
- #
- # And very friendly error messages:
- #
- 1/0
- # Expected:
- ## To Infinity
- ## And
- ## Beyond
- #
- # You can use logic if you want:
- #
- if 0:
- blah
- blah
- #
- # Ho hum
- """
- output = []
- for piece in DocTestParser().parse(s):
- if isinstance(piece, Example):
- # Add the example's source code (strip trailing NL)
- output.append(piece.source[:-1])
- # Add the expected output:
- want = piece.want
- if want:
- output.append('# Expected:')
- output += ['## '+l for l in want.split('\n')[:-1]]
- else:
- # Add non-example text.
- output += [_comment_line(l)
- for l in piece.split('\n')[:-1]]
-
- # Trim junk on both ends.
- while output and output[-1] == '#':
- output.pop()
- while output and output[0] == '#':
- output.pop(0)
- # Combine the output, and return it.
- return '\n'.join(output)
-
-def testsource(module, name):
- """Extract the test sources from a doctest docstring as a script.
-
- Provide the module (or dotted name of the module) containing the
- test to be debugged and the name (within the module) of the object
- with the doc string with tests to be debugged.
- """
- module = _normalize_module(module)
- tests = DocTestFinder().find(module)
- test = [t for t in tests if t.name == name]
- if not test:
- raise ValueError(name, "not found in tests")
- test = test[0]
- testsrc = script_from_examples(test.docstring)
- return testsrc
-
-def debug_src(src, pm=False, globs=None):
- """Debug a single doctest docstring, in argument `src`'"""
- testsrc = script_from_examples(src)
- debug_script(testsrc, pm, globs)
-
-def debug_script(src, pm=False, globs=None):
- "Debug a test script. `src` is the script, as a string."
- import pdb
-
- # Note that tempfile.NameTemporaryFile() cannot be used. As the
- # docs say, a file so created cannot be opened by name a second time
- # on modern Windows boxes, and execfile() needs to open it.
- srcfilename = tempfile.mktemp(".py", "doctestdebug")
- with open(srcfilename, 'w') as fp:
- fp.write(src)
-
- try:
- if globs:
- globs = globs.copy()
- else:
- globs = {}
-
- if pm:
- try:
- execfile(srcfilename, globs, globs)
- except:
- print(sys.exc_info()[1])
- pdb.post_mortem(sys.exc_info()[2])
- else:
- # Note that %r is vital here. '%s' instead can, e.g., cause
- # backslashes to get treated as metacharacters on Windows.
- pdb.run("execfile(%r)" % srcfilename, globs, globs)
-
- finally:
- os.remove(srcfilename)
-
-def debug(module, name, pm=False):
- """Debug a single doctest docstring.
-
- Provide the module (or dotted name of the module) containing the
- test to be debugged and the name (within the module) of the object
- with the docstring with tests to be debugged.
- """
- module = _normalize_module(module)
- testsrc = testsource(module, name)
- debug_script(testsrc, pm, module.__dict__)
-
-######################################################################
-## 10. Example Usage
-######################################################################
-class _TestClass:
- """
- A pointless class, for sanity-checking of docstring testing.
-
- Methods:
- square()
- get()
-
- >>> _TestClass(13).get() + _TestClass(-12).get()
- 1
- >>> hex(_TestClass(13).square().get())
- '0xa9'
- """
-
- def __init__(self, val):
- """val -> _TestClass object with associated value val.
-
- >>> t = _TestClass(123)
- >>> print(t.get())
- 123
- """
-
- self.val = val
-
- def square(self):
- """square() -> square TestClass's associated value
-
- >>> _TestClass(13).square().get()
- 169
- """
-
- self.val = self.val ** 2
- return self
-
- def get(self):
- """get() -> return TestClass's associated value.
-
- >>> x = _TestClass(-42)
- >>> print(x.get())
- -42
- """
-
- return self.val
-
-__test__ = {"_TestClass": _TestClass,
- "string": r"""
- Example of a string object, searched as-is.
- >>> x = 1; y = 2
- >>> x + y, x * y
- (3, 2)
- """,
-
- "bool-int equivalence": r"""
- In 2.2, boolean expressions displayed
- 0 or 1. By default, we still accept
- them. This can be disabled by passing
- DONT_ACCEPT_TRUE_FOR_1 to the new
- optionflags argument.
- >>> 4 == 4
- 1
- >>> 4 == 4
- True
- >>> 4 > 4
- 0
- >>> 4 > 4
- False
- """,
-
- "blank lines": r"""
- Blank lines can be marked with <BLANKLINE>:
- >>> print('foo\n\nbar\n')
- foo
- <BLANKLINE>
- bar
- <BLANKLINE>
- """,
-
- "ellipsis": r"""
- If the ellipsis flag is used, then '...' can be used to
- elide substrings in the desired output:
- >>> print(range(1000)) #doctest: +ELLIPSIS
- [0, 1, 2, ..., 999]
- """,
-
- "whitespace normalization": r"""
- If the whitespace normalization flag is used, then
- differences in whitespace are ignored.
- >>> print(list(xrange(30))) #doctest: +NORMALIZE_WHITESPACE
- [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
- 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
- 27, 28, 29]
- """,
- }
-
-def _test():
- r = unittest.TextTestRunner()
- r.run(DocTestSuite())
-
-if __name__ == "__main__":
- _test()
diff --git a/lib/python2.7/site-packages/django/test/client.py b/lib/python2.7/site-packages/django/test/client.py
deleted file mode 100644
index 6ea8119..0000000
--- a/lib/python2.7/site-packages/django/test/client.py
+++ /dev/null
@@ -1,623 +0,0 @@
-from __future__ import unicode_literals
-
-import sys
-import os
-import re
-import mimetypes
-from copy import copy
-from io import BytesIO
-
-from django.conf import settings
-from django.contrib.auth import authenticate, login, logout, get_user_model
-from django.core.handlers.base import BaseHandler
-from django.core.handlers.wsgi import WSGIRequest
-from django.core.signals import (request_started, request_finished,
- got_request_exception)
-from django.db import close_old_connections
-from django.http import SimpleCookie, HttpRequest, QueryDict
-from django.template import TemplateDoesNotExist
-from django.test import signals
-from django.utils.functional import curry
-from django.utils.encoding import force_bytes, force_str
-from django.utils.http import urlencode
-from django.utils.importlib import import_module
-from django.utils.itercompat import is_iterable
-from django.utils import six
-from django.utils.six.moves.urllib.parse import unquote, urlparse, urlsplit
-from django.test.utils import ContextList
-
-__all__ = ('Client', 'RequestFactory', 'encode_file', 'encode_multipart')
-
-
-BOUNDARY = 'BoUnDaRyStRiNg'
-MULTIPART_CONTENT = 'multipart/form-data; boundary=%s' % BOUNDARY
-CONTENT_TYPE_RE = re.compile('.*; charset=([\w\d-]+);?')
-
-class FakePayload(object):
- """
- A wrapper around BytesIO that restricts what can be read since data from
- the network can't be seeked and cannot be read outside of its content
- length. This makes sure that views can't do anything under the test client
- that wouldn't work in Real Life.
- """
- def __init__(self, content=None):
- self.__content = BytesIO()
- self.__len = 0
- self.read_started = False
- if content is not None:
- self.write(content)
-
- def __len__(self):
- return self.__len
-
- def read(self, num_bytes=None):
- if not self.read_started:
- self.__content.seek(0)
- self.read_started = True
- if num_bytes is None:
- num_bytes = self.__len or 0
- assert self.__len >= num_bytes, "Cannot read more than the available bytes from the HTTP incoming data."
- content = self.__content.read(num_bytes)
- self.__len -= num_bytes
- return content
-
- def write(self, content):
- if self.read_started:
- raise ValueError("Unable to write a payload after he's been read")
- content = force_bytes(content)
- self.__content.write(content)
- self.__len += len(content)
-
-
-def closing_iterator_wrapper(iterable, close):
- try:
- for item in iterable:
- yield item
- finally:
- request_finished.disconnect(close_old_connections)
- close() # will fire request_finished
- request_finished.connect(close_old_connections)
-
-
-class ClientHandler(BaseHandler):
- """
- A HTTP Handler that can be used for testing purposes.
- Uses the WSGI interface to compose requests, but returns
- the raw HttpResponse object
- """
- def __init__(self, enforce_csrf_checks=True, *args, **kwargs):
- self.enforce_csrf_checks = enforce_csrf_checks
- super(ClientHandler, self).__init__(*args, **kwargs)
-
- def __call__(self, environ):
- from django.conf import settings
-
- # Set up middleware if needed. We couldn't do this earlier, because
- # settings weren't available.
- if self._request_middleware is None:
- self.load_middleware()
-
- request_started.disconnect(close_old_connections)
- request_started.send(sender=self.__class__)
- request_started.connect(close_old_connections)
- request = WSGIRequest(environ)
- # sneaky little hack so that we can easily get round
- # CsrfViewMiddleware. This makes life easier, and is probably
- # required for backwards compatibility with external tests against
- # admin views.
- request._dont_enforce_csrf_checks = not self.enforce_csrf_checks
- response = self.get_response(request)
- # We're emulating a WSGI server; we must call the close method
- # on completion.
- if response.streaming:
- response.streaming_content = closing_iterator_wrapper(
- response.streaming_content, response.close)
- else:
- request_finished.disconnect(close_old_connections)
- response.close() # will fire request_finished
- request_finished.connect(close_old_connections)
-
- return response
-
-def store_rendered_templates(store, signal, sender, template, context, **kwargs):
- """
- Stores templates and contexts that are rendered.
-
- The context is copied so that it is an accurate representation at the time
- of rendering.
- """
- store.setdefault('templates', []).append(template)
- store.setdefault('context', ContextList()).append(copy(context))
-
-def encode_multipart(boundary, data):
- """
- Encodes multipart POST data from a dictionary of form values.
-
- The key will be used as the form data name; the value will be transmitted
- as content. If the value is a file, the contents of the file will be sent
- as an application/octet-stream; otherwise, str(value) will be sent.
- """
- lines = []
- to_bytes = lambda s: force_bytes(s, settings.DEFAULT_CHARSET)
-
- # Not by any means perfect, but good enough for our purposes.
- is_file = lambda thing: hasattr(thing, "read") and callable(thing.read)
-
- # Each bit of the multipart form data could be either a form value or a
- # file, or a *list* of form values and/or files. Remember that HTTP field
- # names can be duplicated!
- for (key, value) in data.items():
- if is_file(value):
- lines.extend(encode_file(boundary, key, value))
- elif not isinstance(value, six.string_types) and is_iterable(value):
- for item in value:
- if is_file(item):
- lines.extend(encode_file(boundary, key, item))
- else:
- lines.extend([to_bytes(val) for val in [
- '--%s' % boundary,
- 'Content-Disposition: form-data; name="%s"' % key,
- '',
- item
- ]])
- else:
- lines.extend([to_bytes(val) for val in [
- '--%s' % boundary,
- 'Content-Disposition: form-data; name="%s"' % key,
- '',
- value
- ]])
-
- lines.extend([
- to_bytes('--%s--' % boundary),
- b'',
- ])
- return b'\r\n'.join(lines)
-
-def encode_file(boundary, key, file):
- to_bytes = lambda s: force_bytes(s, settings.DEFAULT_CHARSET)
- content_type = mimetypes.guess_type(file.name)[0]
- if content_type is None:
- content_type = 'application/octet-stream'
- return [
- to_bytes('--%s' % boundary),
- to_bytes('Content-Disposition: form-data; name="%s"; filename="%s"' \
- % (key, os.path.basename(file.name))),
- to_bytes('Content-Type: %s' % content_type),
- b'',
- file.read()
- ]
-
-
-class RequestFactory(object):
- """
- Class that lets you create mock Request objects for use in testing.
-
- Usage:
-
- rf = RequestFactory()
- get_request = rf.get('/hello/')
- post_request = rf.post('/submit/', {'foo': 'bar'})
-
- Once you have a request object you can pass it to any view function,
- just as if that view had been hooked up using a URLconf.
- """
- def __init__(self, **defaults):
- self.defaults = defaults
- self.cookies = SimpleCookie()
- self.errors = BytesIO()
-
- def _base_environ(self, **request):
- """
- The base environment for a request.
- """
- # This is a minimal valid WSGI environ dictionary, plus:
- # - HTTP_COOKIE: for cookie support,
- # - REMOTE_ADDR: often useful, see #8551.
- # See http://www.python.org/dev/peps/pep-3333/#environ-variables
- environ = {
- 'HTTP_COOKIE': self.cookies.output(header='', sep='; '),
- 'PATH_INFO': str('/'),
- 'REMOTE_ADDR': str('127.0.0.1'),
- 'REQUEST_METHOD': str('GET'),
- 'SCRIPT_NAME': str(''),
- 'SERVER_NAME': str('testserver'),
- 'SERVER_PORT': str('80'),
- 'SERVER_PROTOCOL': str('HTTP/1.1'),
- 'wsgi.version': (1, 0),
- 'wsgi.url_scheme': str('http'),
- 'wsgi.input': FakePayload(b''),
- 'wsgi.errors': self.errors,
- 'wsgi.multiprocess': True,
- 'wsgi.multithread': False,
- 'wsgi.run_once': False,
- }
- environ.update(self.defaults)
- environ.update(request)
- return environ
-
- def request(self, **request):
- "Construct a generic request object."
- return WSGIRequest(self._base_environ(**request))
-
- def _encode_data(self, data, content_type, ):
- if content_type is MULTIPART_CONTENT:
- return encode_multipart(BOUNDARY, data)
- else:
- # Encode the content so that the byte representation is correct.
- match = CONTENT_TYPE_RE.match(content_type)
- if match:
- charset = match.group(1)
- else:
- charset = settings.DEFAULT_CHARSET
- return force_bytes(data, encoding=charset)
-
- def _get_path(self, parsed):
- path = force_str(parsed[2])
- # If there are parameters, add them
- if parsed[3]:
- path += str(";") + force_str(parsed[3])
- path = unquote(path)
- # WSGI requires latin-1 encoded strings. See get_path_info().
- if six.PY3:
- path = path.encode('utf-8').decode('iso-8859-1')
- return path
-
- def get(self, path, data={}, **extra):
- "Construct a GET request."
-
- parsed = urlparse(path)
- query_string = urlencode(data, doseq=True) or force_str(parsed[4])
- if six.PY3:
- query_string = query_string.encode('utf-8').decode('iso-8859-1')
-
- r = {
- 'PATH_INFO': self._get_path(parsed),
- 'QUERY_STRING': query_string,
- 'REQUEST_METHOD': str('GET'),
- }
- r.update(extra)
- return self.request(**r)
-
- def post(self, path, data={}, content_type=MULTIPART_CONTENT,
- **extra):
- "Construct a POST request."
-
- post_data = self._encode_data(data, content_type)
-
- parsed = urlparse(path)
- query_string = force_str(parsed[4])
- if six.PY3:
- query_string = query_string.encode('utf-8').decode('iso-8859-1')
-
- r = {
- 'CONTENT_LENGTH': len(post_data),
- 'CONTENT_TYPE': content_type,
- 'PATH_INFO': self._get_path(parsed),
- 'QUERY_STRING': query_string,
- 'REQUEST_METHOD': str('POST'),
- 'wsgi.input': FakePayload(post_data),
- }
- r.update(extra)
- return self.request(**r)
-
- def head(self, path, data={}, **extra):
- "Construct a HEAD request."
-
- parsed = urlparse(path)
- query_string = urlencode(data, doseq=True) or force_str(parsed[4])
- if six.PY3:
- query_string = query_string.encode('utf-8').decode('iso-8859-1')
-
- r = {
- 'PATH_INFO': self._get_path(parsed),
- 'QUERY_STRING': query_string,
- 'REQUEST_METHOD': str('HEAD'),
- }
- r.update(extra)
- return self.request(**r)
-
- def options(self, path, data='', content_type='application/octet-stream',
- **extra):
- "Construct an OPTIONS request."
- return self.generic('OPTIONS', path, data, content_type, **extra)
-
- def put(self, path, data='', content_type='application/octet-stream',
- **extra):
- "Construct a PUT request."
- return self.generic('PUT', path, data, content_type, **extra)
-
- def patch(self, path, data='', content_type='application/octet-stream',
- **extra):
- "Construct a PATCH request."
- return self.generic('PATCH', path, data, content_type, **extra)
-
- def delete(self, path, data='', content_type='application/octet-stream',
- **extra):
- "Construct a DELETE request."
- return self.generic('DELETE', path, data, content_type, **extra)
-
- def generic(self, method, path,
- data='', content_type='application/octet-stream', **extra):
- parsed = urlparse(path)
- data = force_bytes(data, settings.DEFAULT_CHARSET)
- r = {
- 'PATH_INFO': self._get_path(parsed),
- 'REQUEST_METHOD': str(method),
- }
- if data:
- r.update({
- 'CONTENT_LENGTH': len(data),
- 'CONTENT_TYPE': str(content_type),
- 'wsgi.input': FakePayload(data),
- })
- r.update(extra)
- # If QUERY_STRING is absent or empty, we want to extract it from the URL.
- if not r.get('QUERY_STRING'):
- query_string = force_bytes(parsed[4])
- # WSGI requires latin-1 encoded strings. See get_path_info().
- if six.PY3:
- query_string = query_string.decode('iso-8859-1')
- r['QUERY_STRING'] = query_string
- return self.request(**r)
-
-
-class Client(RequestFactory):
- """
- A class that can act as a client for testing purposes.
-
- It allows the user to compose GET and POST requests, and
- obtain the response that the server gave to those requests.
- The server Response objects are annotated with the details
- of the contexts and templates that were rendered during the
- process of serving the request.
-
- Client objects are stateful - they will retain cookie (and
- thus session) details for the lifetime of the Client instance.
-
- This is not intended as a replacement for Twill/Selenium or
- the like - it is here to allow testing against the
- contexts and templates produced by a view, rather than the
- HTML rendered to the end-user.
- """
- def __init__(self, enforce_csrf_checks=False, **defaults):
- super(Client, self).__init__(**defaults)
- self.handler = ClientHandler(enforce_csrf_checks)
- self.exc_info = None
-
- def store_exc_info(self, **kwargs):
- """
- Stores exceptions when they are generated by a view.
- """
- self.exc_info = sys.exc_info()
-
- def _session(self):
- """
- Obtains the current session variables.
- """
- if 'django.contrib.sessions' in settings.INSTALLED_APPS:
- engine = import_module(settings.SESSION_ENGINE)
- cookie = self.cookies.get(settings.SESSION_COOKIE_NAME, None)
- if cookie:
- return engine.SessionStore(cookie.value)
- return {}
- session = property(_session)
-
-
- def request(self, **request):
- """
- The master request method. Composes the environment dictionary
- and passes to the handler, returning the result of the handler.
- Assumes defaults for the query environment, which can be overridden
- using the arguments to the request.
- """
- environ = self._base_environ(**request)
-
- # Curry a data dictionary into an instance of the template renderer
- # callback function.
- data = {}
- on_template_render = curry(store_rendered_templates, data)
- signals.template_rendered.connect(on_template_render, dispatch_uid="template-render")
- # Capture exceptions created by the handler.
- got_request_exception.connect(self.store_exc_info, dispatch_uid="request-exception")
- try:
-
- try:
- response = self.handler(environ)
- except TemplateDoesNotExist as e:
- # If the view raises an exception, Django will attempt to show
- # the 500.html template. If that template is not available,
- # we should ignore the error in favor of re-raising the
- # underlying exception that caused the 500 error. Any other
- # template found to be missing during view error handling
- # should be reported as-is.
- if e.args != ('500.html',):
- raise
-
- # Look for a signalled exception, clear the current context
- # exception data, then re-raise the signalled exception.
- # Also make sure that the signalled exception is cleared from
- # the local cache!
- if self.exc_info:
- exc_info = self.exc_info
- self.exc_info = None
- six.reraise(*exc_info)
-
- # Save the client and request that stimulated the response.
- response.client = self
- response.request = request
-
- # Add any rendered template detail to the response.
- response.templates = data.get("templates", [])
- response.context = data.get("context")
-
- # Flatten a single context. Not really necessary anymore thanks to
- # the __getattr__ flattening in ContextList, but has some edge-case
- # backwards-compatibility implications.
- if response.context and len(response.context) == 1:
- response.context = response.context[0]
-
- # Update persistent cookie data.
- if response.cookies:
- self.cookies.update(response.cookies)
-
- return response
- finally:
- signals.template_rendered.disconnect(dispatch_uid="template-render")
- got_request_exception.disconnect(dispatch_uid="request-exception")
-
- def get(self, path, data={}, follow=False, **extra):
- """
- Requests a response from the server using GET.
- """
- response = super(Client, self).get(path, data=data, **extra)
- if follow:
- response = self._handle_redirects(response, **extra)
- return response
-
- def post(self, path, data={}, content_type=MULTIPART_CONTENT,
- follow=False, **extra):
- """
- Requests a response from the server using POST.
- """
- response = super(Client, self).post(path, data=data, content_type=content_type, **extra)
- if follow:
- response = self._handle_redirects(response, **extra)
- return response
-
- def head(self, path, data={}, follow=False, **extra):
- """
- Request a response from the server using HEAD.
- """
- response = super(Client, self).head(path, data=data, **extra)
- if follow:
- response = self._handle_redirects(response, **extra)
- return response
-
- def options(self, path, data='', content_type='application/octet-stream',
- follow=False, **extra):
- """
- Request a response from the server using OPTIONS.
- """
- response = super(Client, self).options(path,
- data=data, content_type=content_type, **extra)
- if follow:
- response = self._handle_redirects(response, **extra)
- return response
-
- def put(self, path, data='', content_type='application/octet-stream',
- follow=False, **extra):
- """
- Send a resource to the server using PUT.
- """
- response = super(Client, self).put(path,
- data=data, content_type=content_type, **extra)
- if follow:
- response = self._handle_redirects(response, **extra)
- return response
-
- def patch(self, path, data='', content_type='application/octet-stream',
- follow=False, **extra):
- """
- Send a resource to the server using PATCH.
- """
- response = super(Client, self).patch(
- path, data=data, content_type=content_type, **extra)
- if follow:
- response = self._handle_redirects(response, **extra)
- return response
-
- def delete(self, path, data='', content_type='application/octet-stream',
- follow=False, **extra):
- """
- Send a DELETE request to the server.
- """
- response = super(Client, self).delete(path,
- data=data, content_type=content_type, **extra)
- if follow:
- response = self._handle_redirects(response, **extra)
- return response
-
- def login(self, **credentials):
- """
- Sets the Factory to appear as if it has successfully logged into a site.
-
- Returns True if login is possible; False if the provided credentials
- are incorrect, or the user is inactive, or if the sessions framework is
- not available.
- """
- user = authenticate(**credentials)
- if user and user.is_active \
- and 'django.contrib.sessions' in settings.INSTALLED_APPS:
- engine = import_module(settings.SESSION_ENGINE)
-
- # Create a fake request to store login details.
- request = HttpRequest()
- if self.session:
- request.session = self.session
- else:
- request.session = engine.SessionStore()
- login(request, user)
-
- # Save the session values.
- request.session.save()
-
- # Set the cookie to represent the session.
- session_cookie = settings.SESSION_COOKIE_NAME
- self.cookies[session_cookie] = request.session.session_key
- cookie_data = {
- 'max-age': None,
- 'path': '/',
- 'domain': settings.SESSION_COOKIE_DOMAIN,
- 'secure': settings.SESSION_COOKIE_SECURE or None,
- 'expires': None,
- }
- self.cookies[session_cookie].update(cookie_data)
-
- return True
- else:
- return False
-
- def logout(self):
- """
- Removes the authenticated user's cookies and session object.
-
- Causes the authenticated user to be logged out.
- """
- request = HttpRequest()
- engine = import_module(settings.SESSION_ENGINE)
- UserModel = get_user_model()
- if self.session:
- request.session = self.session
- uid = self.session.get("_auth_user_id")
- if uid:
- request.user = UserModel._default_manager.get(pk=uid)
- else:
- request.session = engine.SessionStore()
- logout(request)
- self.cookies = SimpleCookie()
-
- def _handle_redirects(self, response, **extra):
- "Follows any redirects by requesting responses from the server using GET."
-
- response.redirect_chain = []
- while response.status_code in (301, 302, 303, 307):
- url = response.url
- redirect_chain = response.redirect_chain
- redirect_chain.append((url, response.status_code))
-
- url = urlsplit(url)
- if url.scheme:
- extra['wsgi.url_scheme'] = url.scheme
- if url.hostname:
- extra['SERVER_NAME'] = url.hostname
- if url.port:
- extra['SERVER_PORT'] = str(url.port)
-
- response = self.get(url.path, QueryDict(url.query), follow=False, **extra)
- response.redirect_chain = redirect_chain
-
- # Prevent loops
- if response.redirect_chain[-1] in response.redirect_chain[0:-1]:
- break
- return response
diff --git a/lib/python2.7/site-packages/django/test/html.py b/lib/python2.7/site-packages/django/test/html.py
deleted file mode 100644
index 0d30bd2..0000000
--- a/lib/python2.7/site-packages/django/test/html.py
+++ /dev/null
@@ -1,238 +0,0 @@
-"""
-Comparing two html documents.
-"""
-
-from __future__ import unicode_literals
-
-import re
-from django.utils.encoding import force_text
-from django.utils.html_parser import HTMLParser, HTMLParseError
-from django.utils import six
-from django.utils.encoding import python_2_unicode_compatible
-
-
-WHITESPACE = re.compile('\s+')
-
-
-def normalize_whitespace(string):
- return WHITESPACE.sub(' ', string)
-
-
-@python_2_unicode_compatible
-class Element(object):
- def __init__(self, name, attributes):
- self.name = name
- self.attributes = sorted(attributes)
- self.children = []
-
- def append(self, element):
- if isinstance(element, six.string_types):
- element = force_text(element)
- element = normalize_whitespace(element)
- if self.children:
- if isinstance(self.children[-1], six.string_types):
- self.children[-1] += element
- self.children[-1] = normalize_whitespace(self.children[-1])
- return
- elif self.children:
- # removing last children if it is only whitespace
- # this can result in incorrect dom representations since
- # whitespace between inline tags like <span> is significant
- if isinstance(self.children[-1], six.string_types):
- if self.children[-1].isspace():
- self.children.pop()
- if element:
- self.children.append(element)
-
- def finalize(self):
- def rstrip_last_element(children):
- if children:
- if isinstance(children[-1], six.string_types):
- children[-1] = children[-1].rstrip()
- if not children[-1]:
- children.pop()
- children = rstrip_last_element(children)
- return children
-
- rstrip_last_element(self.children)
- for i, child in enumerate(self.children):
- if isinstance(child, six.string_types):
- self.children[i] = child.strip()
- elif hasattr(child, 'finalize'):
- child.finalize()
-
- def __eq__(self, element):
- if not hasattr(element, 'name'):
- return False
- if hasattr(element, 'name') and self.name != element.name:
- return False
- if len(self.attributes) != len(element.attributes):
- return False
- if self.attributes != element.attributes:
- # attributes without a value is same as attribute with value that
- # equals the attributes name:
- # <input checked> == <input checked="checked">
- for i in range(len(self.attributes)):
- attr, value = self.attributes[i]
- other_attr, other_value = element.attributes[i]
- if value is None:
- value = attr
- if other_value is None:
- other_value = other_attr
- if attr != other_attr or value != other_value:
- return False
- if self.children != element.children:
- return False
- return True
-
- def __hash__(self):
- return hash((self.name,) + tuple(a for a in self.attributes))
-
- def __ne__(self, element):
- return not self.__eq__(element)
-
- def _count(self, element, count=True):
- if not isinstance(element, six.string_types):
- if self == element:
- return 1
- i = 0
- for child in self.children:
- # child is text content and element is also text content, then
- # make a simple "text" in "text"
- if isinstance(child, six.string_types):
- if isinstance(element, six.string_types):
- if count:
- i += child.count(element)
- elif element in child:
- return 1
- else:
- i += child._count(element, count=count)
- if not count and i:
- return i
- return i
-
- def __contains__(self, element):
- return self._count(element, count=False) > 0
-
- def count(self, element):
- return self._count(element, count=True)
-
- def __getitem__(self, key):
- return self.children[key]
-
- def __str__(self):
- output = '<%s' % self.name
- for key, value in self.attributes:
- if value:
- output += ' %s="%s"' % (key, value)
- else:
- output += ' %s' % key
- if self.children:
- output += '>\n'
- output += ''.join(six.text_type(c) for c in self.children)
- output += '\n</%s>' % self.name
- else:
- output += ' />'
- return output
-
- def __repr__(self):
- return six.text_type(self)
-
-
-@python_2_unicode_compatible
-class RootElement(Element):
- def __init__(self):
- super(RootElement, self).__init__(None, ())
-
- def __str__(self):
- return ''.join(six.text_type(c) for c in self.children)
-
-
-class Parser(HTMLParser):
- SELF_CLOSING_TAGS = ('br' , 'hr', 'input', 'img', 'meta', 'spacer',
- 'link', 'frame', 'base', 'col')
-
- def __init__(self):
- HTMLParser.__init__(self)
- self.root = RootElement()
- self.open_tags = []
- self.element_positions = {}
-
- def error(self, msg):
- raise HTMLParseError(msg, self.getpos())
-
- def format_position(self, position=None, element=None):
- if not position and element:
- position = self.element_positions[element]
- if position is None:
- position = self.getpos()
- if hasattr(position, 'lineno'):
- position = position.lineno, position.offset
- return 'Line %d, Column %d' % position
-
- @property
- def current(self):
- if self.open_tags:
- return self.open_tags[-1]
- else:
- return self.root
-
- def handle_startendtag(self, tag, attrs):
- self.handle_starttag(tag, attrs)
- if tag not in self.SELF_CLOSING_TAGS:
- self.handle_endtag(tag)
-
- def handle_starttag(self, tag, attrs):
- # Special case handling of 'class' attribute, so that comparisons of DOM
- # instances are not sensitive to ordering of classes.
- attrs = [
- (name, " ".join(sorted(value.split(" "))))
- if name == "class"
- else (name, value)
- for name, value in attrs
- ]
- element = Element(tag, attrs)
- self.current.append(element)
- if tag not in self.SELF_CLOSING_TAGS:
- self.open_tags.append(element)
- self.element_positions[element] = self.getpos()
-
- def handle_endtag(self, tag):
- if not self.open_tags:
- self.error("Unexpected end tag `%s` (%s)" % (
- tag, self.format_position()))
- element = self.open_tags.pop()
- while element.name != tag:
- if not self.open_tags:
- self.error("Unexpected end tag `%s` (%s)" % (
- tag, self.format_position()))
- element = self.open_tags.pop()
-
- def handle_data(self, data):
- self.current.append(data)
-
- def handle_charref(self, name):
- self.current.append('&%s;' % name)
-
- def handle_entityref(self, name):
- self.current.append('&%s;' % name)
-
-
-def parse_html(html):
- """
- Takes a string that contains *valid* HTML and turns it into a Python object
- structure that can be easily compared against other HTML on semantic
- equivalence. Syntactical differences like which quotation is used on
- arguments will be ignored.
-
- """
- parser = Parser()
- parser.feed(html)
- parser.close()
- document = parser.root
- document.finalize()
- # Removing ROOT element if it's not necessary
- if len(document.children) == 1:
- if not isinstance(document.children[0], six.string_types):
- document = document.children[0]
- return document
diff --git a/lib/python2.7/site-packages/django/test/runner.py b/lib/python2.7/site-packages/django/test/runner.py
deleted file mode 100644
index d8db8da..0000000
--- a/lib/python2.7/site-packages/django/test/runner.py
+++ /dev/null
@@ -1,291 +0,0 @@
-import os
-from optparse import make_option
-
-from django.conf import settings
-from django.core.exceptions import ImproperlyConfigured
-from django.test import TestCase
-from django.test.utils import setup_test_environment, teardown_test_environment
-from django.utils import unittest
-from django.utils.unittest import TestSuite, defaultTestLoader
-
-
-class DiscoverRunner(object):
- """
- A Django test runner that uses unittest2 test discovery.
- """
-
- test_loader = defaultTestLoader
- reorder_by = (TestCase, )
- option_list = (
- make_option('-t', '--top-level-directory',
- action='store', dest='top_level', default=None,
- help='Top level of project for unittest discovery.'),
- make_option('-p', '--pattern', action='store', dest='pattern',
- default="test*.py",
- help='The test matching pattern. Defaults to test*.py.'),
- )
-
- def __init__(self, pattern=None, top_level=None,
- verbosity=1, interactive=True, failfast=False,
- **kwargs):
-
- self.pattern = pattern
- self.top_level = top_level
-
- self.verbosity = verbosity
- self.interactive = interactive
- self.failfast = failfast
-
- def setup_test_environment(self, **kwargs):
- setup_test_environment()
- settings.DEBUG = False
- unittest.installHandler()
-
- def build_suite(self, test_labels=None, extra_tests=None, **kwargs):
- suite = TestSuite()
- test_labels = test_labels or ['.']
- extra_tests = extra_tests or []
-
- discover_kwargs = {}
- if self.pattern is not None:
- discover_kwargs['pattern'] = self.pattern
- if self.top_level is not None:
- discover_kwargs['top_level_dir'] = self.top_level
-
- for label in test_labels:
- kwargs = discover_kwargs.copy()
- tests = None
-
- label_as_path = os.path.abspath(label)
-
- # if a module, or "module.ClassName[.method_name]", just run those
- if not os.path.exists(label_as_path):
- tests = self.test_loader.loadTestsFromName(label)
- elif os.path.isdir(label_as_path) and not self.top_level:
- # Try to be a bit smarter than unittest about finding the
- # default top-level for a given directory path, to avoid
- # breaking relative imports. (Unittest's default is to set
- # top-level equal to the path, which means relative imports
- # will result in "Attempted relative import in non-package.").
-
- # We'd be happy to skip this and require dotted module paths
- # (which don't cause this problem) instead of file paths (which
- # do), but in the case of a directory in the cwd, which would
- # be equally valid if considered as a top-level module or as a
- # directory path, unittest unfortunately prefers the latter.
-
- top_level = label_as_path
- while True:
- init_py = os.path.join(top_level, '__init__.py')
- if os.path.exists(init_py):
- try_next = os.path.dirname(top_level)
- if try_next == top_level:
- # __init__.py all the way down? give up.
- break
- top_level = try_next
- continue
- break
- kwargs['top_level_dir'] = top_level
-
-
- if not (tests and tests.countTestCases()):
- # if no tests found, it's probably a package; try discovery
- tests = self.test_loader.discover(start_dir=label, **kwargs)
-
- # make unittest forget the top-level dir it calculated from this
- # run, to support running tests from two different top-levels.
- self.test_loader._top_level_dir = None
-
- suite.addTests(tests)
-
- for test in extra_tests:
- suite.addTest(test)
-
- return reorder_suite(suite, self.reorder_by)
-
- def setup_databases(self, **kwargs):
- return setup_databases(self.verbosity, self.interactive, **kwargs)
-
- def run_suite(self, suite, **kwargs):
- return unittest.TextTestRunner(
- verbosity=self.verbosity,
- failfast=self.failfast,
- ).run(suite)
-
- def teardown_databases(self, old_config, **kwargs):
- """
- Destroys all the non-mirror databases.
- """
- old_names, mirrors = old_config
- for connection, old_name, destroy in old_names:
- if destroy:
- connection.creation.destroy_test_db(old_name, self.verbosity)
-
- def teardown_test_environment(self, **kwargs):
- unittest.removeHandler()
- teardown_test_environment()
-
- def suite_result(self, suite, result, **kwargs):
- return len(result.failures) + len(result.errors)
-
- def run_tests(self, test_labels, extra_tests=None, **kwargs):
- """
- Run the unit tests for all the test labels in the provided list.
-
- Test labels should be dotted Python paths to test modules, test
- classes, or test methods.
-
- A list of 'extra' tests may also be provided; these tests
- will be added to the test suite.
-
- Returns the number of tests that failed.
- """
- self.setup_test_environment()
- suite = self.build_suite(test_labels, extra_tests)
- old_config = self.setup_databases()
- result = self.run_suite(suite)
- self.teardown_databases(old_config)
- self.teardown_test_environment()
- return self.suite_result(suite, result)
-
-
-def dependency_ordered(test_databases, dependencies):
- """
- Reorder test_databases into an order that honors the dependencies
- described in TEST_DEPENDENCIES.
- """
- ordered_test_databases = []
- resolved_databases = set()
-
- # Maps db signature to dependencies of all it's aliases
- dependencies_map = {}
-
- # sanity check - no DB can depend on it's own alias
- for sig, (_, aliases) in test_databases:
- all_deps = set()
- for alias in aliases:
- all_deps.update(dependencies.get(alias, []))
- if not all_deps.isdisjoint(aliases):
- raise ImproperlyConfigured(
- "Circular dependency: databases %r depend on each other, "
- "but are aliases." % aliases)
- dependencies_map[sig] = all_deps
-
- while test_databases:
- changed = False
- deferred = []
-
- # Try to find a DB that has all it's dependencies met
- for signature, (db_name, aliases) in test_databases:
- if dependencies_map[signature].issubset(resolved_databases):
- resolved_databases.update(aliases)
- ordered_test_databases.append((signature, (db_name, aliases)))
- changed = True
- else:
- deferred.append((signature, (db_name, aliases)))
-
- if not changed:
- raise ImproperlyConfigured(
- "Circular dependency in TEST_DEPENDENCIES")
- test_databases = deferred
- return ordered_test_databases
-
-
-def reorder_suite(suite, classes):
- """
- Reorders a test suite by test type.
-
- `classes` is a sequence of types
-
- All tests of type classes[0] are placed first, then tests of type
- classes[1], etc. Tests with no match in classes are placed last.
- """
- class_count = len(classes)
- bins = [unittest.TestSuite() for i in range(class_count+1)]
- partition_suite(suite, classes, bins)
- for i in range(class_count):
- bins[0].addTests(bins[i+1])
- return bins[0]
-
-
-def partition_suite(suite, classes, bins):
- """
- Partitions a test suite by test type.
-
- classes is a sequence of types
- bins is a sequence of TestSuites, one more than classes
-
- Tests of type classes[i] are added to bins[i],
- tests with no match found in classes are place in bins[-1]
- """
- for test in suite:
- if isinstance(test, unittest.TestSuite):
- partition_suite(test, classes, bins)
- else:
- for i in range(len(classes)):
- if isinstance(test, classes[i]):
- bins[i].addTest(test)
- break
- else:
- bins[-1].addTest(test)
-
-
-def setup_databases(verbosity, interactive, **kwargs):
- from django.db import connections, DEFAULT_DB_ALIAS
-
- # First pass -- work out which databases actually need to be created,
- # and which ones are test mirrors or duplicate entries in DATABASES
- mirrored_aliases = {}
- test_databases = {}
- dependencies = {}
- default_sig = connections[DEFAULT_DB_ALIAS].creation.test_db_signature()
- for alias in connections:
- connection = connections[alias]
- if connection.settings_dict['TEST_MIRROR']:
- # If the database is marked as a test mirror, save
- # the alias.
- mirrored_aliases[alias] = (
- connection.settings_dict['TEST_MIRROR'])
- else:
- # Store a tuple with DB parameters that uniquely identify it.
- # If we have two aliases with the same values for that tuple,
- # we only need to create the test database once.
- item = test_databases.setdefault(
- connection.creation.test_db_signature(),
- (connection.settings_dict['NAME'], set())
- )
- item[1].add(alias)
-
- if 'TEST_DEPENDENCIES' in connection.settings_dict:
- dependencies[alias] = (
- connection.settings_dict['TEST_DEPENDENCIES'])
- else:
- if alias != DEFAULT_DB_ALIAS and connection.creation.test_db_signature() != default_sig:
- dependencies[alias] = connection.settings_dict.get(
- 'TEST_DEPENDENCIES', [DEFAULT_DB_ALIAS])
-
- # Second pass -- actually create the databases.
- old_names = []
- mirrors = []
-
- for signature, (db_name, aliases) in dependency_ordered(
- test_databases.items(), dependencies):
- test_db_name = None
- # Actually create the database for the first connection
- for alias in aliases:
- connection = connections[alias]
- if test_db_name is None:
- test_db_name = connection.creation.create_test_db(
- verbosity, autoclobber=not interactive)
- destroy = True
- else:
- connection.settings_dict['NAME'] = test_db_name
- destroy = False
- old_names.append((connection, db_name, destroy))
-
- for alias, mirror_alias in mirrored_aliases.items():
- mirrors.append((alias, connections[alias].settings_dict['NAME']))
- connections[alias].settings_dict['NAME'] = (
- connections[mirror_alias].settings_dict['NAME'])
-
- return old_names, mirrors
diff --git a/lib/python2.7/site-packages/django/test/signals.py b/lib/python2.7/site-packages/django/test/signals.py
deleted file mode 100644
index a96bdff..0000000
--- a/lib/python2.7/site-packages/django/test/signals.py
+++ /dev/null
@@ -1,81 +0,0 @@
-import os
-import time
-
-from django.conf import settings
-from django.db import connections
-from django.dispatch import receiver, Signal
-from django.utils import timezone
-from django.utils.functional import empty
-
-template_rendered = Signal(providing_args=["template", "context"])
-
-setting_changed = Signal(providing_args=["setting", "value"])
-
-# Most setting_changed receivers are supposed to be added below,
-# except for cases where the receiver is related to a contrib app.
-
-
-@receiver(setting_changed)
-def update_connections_time_zone(**kwargs):
- if kwargs['setting'] == 'TIME_ZONE':
- # Reset process time zone
- if hasattr(time, 'tzset'):
- if kwargs['value']:
- os.environ['TZ'] = kwargs['value']
- else:
- os.environ.pop('TZ', None)
- time.tzset()
-
- # Reset local time zone cache
- timezone._localtime = None
-
- # Reset the database connections' time zone
- if kwargs['setting'] == 'USE_TZ' and settings.TIME_ZONE != 'UTC':
- USE_TZ, TIME_ZONE = kwargs['value'], settings.TIME_ZONE
- elif kwargs['setting'] == 'TIME_ZONE' and not settings.USE_TZ:
- USE_TZ, TIME_ZONE = settings.USE_TZ, kwargs['value']
- else:
- # no need to change the database connnections' time zones
- return
- tz = 'UTC' if USE_TZ else TIME_ZONE
- for conn in connections.all():
- conn.settings_dict['TIME_ZONE'] = tz
- tz_sql = conn.ops.set_time_zone_sql()
- if tz_sql:
- conn.cursor().execute(tz_sql, [tz])
-
-
-@receiver(setting_changed)
-def clear_context_processors_cache(**kwargs):
- if kwargs['setting'] == 'TEMPLATE_CONTEXT_PROCESSORS':
- from django.template import context
- context._standard_context_processors = None
-
-
-@receiver(setting_changed)
-def clear_template_loaders_cache(**kwargs):
- if kwargs['setting'] == 'TEMPLATE_LOADERS':
- from django.template import loader
- loader.template_source_loaders = None
-
-
-@receiver(setting_changed)
-def clear_serializers_cache(**kwargs):
- if kwargs['setting'] == 'SERIALIZATION_MODULES':
- from django.core import serializers
- serializers._serializers = {}
-
-
-@receiver(setting_changed)
-def language_changed(**kwargs):
- if kwargs['setting'] in ('LOCALE_PATHS', 'LANGUAGE_CODE'):
- from django.utils.translation import trans_real
- trans_real._default = None
- if kwargs['setting'] == 'LOCALE_PATHS':
- trans_real._translations = {}
-
-@receiver(setting_changed)
-def file_storage_changed(**kwargs):
- if kwargs['setting'] in ('MEDIA_ROOT', 'DEFAULT_FILE_STORAGE'):
- from django.core.files.storage import default_storage
- default_storage._wrapped = empty
diff --git a/lib/python2.7/site-packages/django/test/simple.py b/lib/python2.7/site-packages/django/test/simple.py
deleted file mode 100644
index f28b8a2..0000000
--- a/lib/python2.7/site-packages/django/test/simple.py
+++ /dev/null
@@ -1,253 +0,0 @@
-"""
-This module is pending deprecation as of Django 1.6 and will be removed in
-version 1.8.
-
-"""
-import json
-import re
-import unittest as real_unittest
-import warnings
-
-from django.db.models import get_app, get_apps
-from django.test import _doctest as doctest
-from django.test import runner
-from django.test.utils import compare_xml, strip_quotes
-from django.utils import unittest
-from django.utils.importlib import import_module
-from django.utils.module_loading import module_has_submodule
-
-__all__ = ('DjangoTestSuiteRunner',)
-
-warnings.warn(
- "The django.test.simple module and DjangoTestSuiteRunner are deprecated; "
- "use django.test.runner.DiscoverRunner instead.",
- PendingDeprecationWarning)
-
-# The module name for tests outside models.py
-TEST_MODULE = 'tests'
-
-
-normalize_long_ints = lambda s: re.sub(r'(?<![\w])(\d+)L(?![\w])', '\\1', s)
-normalize_decimals = lambda s: re.sub(r"Decimal\('(\d+(\.\d*)?)'\)",
- lambda m: "Decimal(\"%s\")" % m.groups()[0], s)
-
-
-class OutputChecker(doctest.OutputChecker):
- def check_output(self, want, got, optionflags):
- """
- The entry method for doctest output checking. Defers to a sequence of
- child checkers
- """
- checks = (self.check_output_default,
- self.check_output_numeric,
- self.check_output_xml,
- self.check_output_json)
- for check in checks:
- if check(want, got, optionflags):
- return True
- return False
-
- def check_output_default(self, want, got, optionflags):
- """
- The default comparator provided by doctest - not perfect, but good for
- most purposes
- """
- return doctest.OutputChecker.check_output(self, want, got, optionflags)
-
- def check_output_numeric(self, want, got, optionflags):
- """Doctest does an exact string comparison of output, which means that
- some numerically equivalent values aren't equal. This check normalizes
- * long integers (22L) so that they equal normal integers. (22)
- * Decimals so that they are comparable, regardless of the change
- made to __repr__ in Python 2.6.
- """
- return doctest.OutputChecker.check_output(self,
- normalize_decimals(normalize_long_ints(want)),
- normalize_decimals(normalize_long_ints(got)),
- optionflags)
-
- def check_output_xml(self, want, got, optionsflags):
- try:
- return compare_xml(want, got)
- except Exception:
- return False
-
- def check_output_json(self, want, got, optionsflags):
- """
- Tries to compare want and got as if they were JSON-encoded data
- """
- want, got = strip_quotes(want, got)
- try:
- want_json = json.loads(want)
- got_json = json.loads(got)
- except Exception:
- return False
- return want_json == got_json
-
-
-class DocTestRunner(doctest.DocTestRunner):
- def __init__(self, *args, **kwargs):
- doctest.DocTestRunner.__init__(self, *args, **kwargs)
- self.optionflags = doctest.ELLIPSIS
-
-
-doctestOutputChecker = OutputChecker()
-
-
-def get_tests(app_module):
- parts = app_module.__name__.split('.')
- prefix, last = parts[:-1], parts[-1]
- try:
- test_module = import_module('.'.join(prefix + [TEST_MODULE]))
- except ImportError:
- # Couldn't import tests.py. Was it due to a missing file, or
- # due to an import error in a tests.py that actually exists?
- # app_module either points to a models.py file, or models/__init__.py
- # Tests are therefore either in same directory, or one level up
- if last == 'models':
- app_root = import_module('.'.join(prefix))
- else:
- app_root = app_module
-
- if not module_has_submodule(app_root, TEST_MODULE):
- test_module = None
- else:
- # The module exists, so there must be an import error in the test
- # module itself.
- raise
- return test_module
-
-
-def make_doctest(module):
- return doctest.DocTestSuite(module,
- checker=doctestOutputChecker,
- runner=DocTestRunner,
- )
-
-
-def build_suite(app_module):
- """
- Create a complete Django test suite for the provided application module.
- """
- suite = unittest.TestSuite()
-
- # Load unit and doctests in the models.py module. If module has
- # a suite() method, use it. Otherwise build the test suite ourselves.
- if hasattr(app_module, 'suite'):
- suite.addTest(app_module.suite())
- else:
- suite.addTest(unittest.defaultTestLoader.loadTestsFromModule(
- app_module))
- try:
- suite.addTest(make_doctest(app_module))
- except ValueError:
- # No doc tests in models.py
- pass
-
- # Check to see if a separate 'tests' module exists parallel to the
- # models module
- test_module = get_tests(app_module)
- if test_module:
- # Load unit and doctests in the tests.py module. If module has
- # a suite() method, use it. Otherwise build the test suite ourselves.
- if hasattr(test_module, 'suite'):
- suite.addTest(test_module.suite())
- else:
- suite.addTest(unittest.defaultTestLoader.loadTestsFromModule(
- test_module))
- try:
- suite.addTest(make_doctest(test_module))
- except ValueError:
- # No doc tests in tests.py
- pass
- return suite
-
-
-def build_test(label):
- """
- Construct a test case with the specified label. Label should be of the
- form model.TestClass or model.TestClass.test_method. Returns an
- instantiated test or test suite corresponding to the label provided.
-
- """
- parts = label.split('.')
- if len(parts) < 2 or len(parts) > 3:
- raise ValueError("Test label '%s' should be of the form app.TestCase "
- "or app.TestCase.test_method" % label)
-
- #
- # First, look for TestCase instances with a name that matches
- #
- app_module = get_app(parts[0])
- test_module = get_tests(app_module)
- TestClass = getattr(app_module, parts[1], None)
-
- # Couldn't find the test class in models.py; look in tests.py
- if TestClass is None:
- if test_module:
- TestClass = getattr(test_module, parts[1], None)
-
- try:
- if issubclass(TestClass, (unittest.TestCase, real_unittest.TestCase)):
- if len(parts) == 2: # label is app.TestClass
- try:
- return unittest.TestLoader().loadTestsFromTestCase(
- TestClass)
- except TypeError:
- raise ValueError(
- "Test label '%s' does not refer to a test class"
- % label)
- else: # label is app.TestClass.test_method
- return TestClass(parts[2])
- except TypeError:
- # TestClass isn't a TestClass - it must be a method or normal class
- pass
-
- #
- # If there isn't a TestCase, look for a doctest that matches
- #
- tests = []
- for module in app_module, test_module:
- try:
- doctests = make_doctest(module)
- # Now iterate over the suite, looking for doctests whose name
- # matches the pattern that was given
- for test in doctests:
- if test._dt_test.name in (
- '%s.%s' % (module.__name__, '.'.join(parts[1:])),
- '%s.__test__.%s' % (
- module.__name__, '.'.join(parts[1:]))):
- tests.append(test)
- except ValueError:
- # No doctests found.
- pass
-
- # If no tests were found, then we were given a bad test label.
- if not tests:
- raise ValueError("Test label '%s' does not refer to a test" % label)
-
- # Construct a suite out of the tests that matched.
- return unittest.TestSuite(tests)
-
-
-class DjangoTestSuiteRunner(runner.DiscoverRunner):
-
- def build_suite(self, test_labels, extra_tests=None, **kwargs):
- suite = unittest.TestSuite()
-
- if test_labels:
- for label in test_labels:
- if '.' in label:
- suite.addTest(build_test(label))
- else:
- app = get_app(label)
- suite.addTest(build_suite(app))
- else:
- for app in get_apps():
- suite.addTest(build_suite(app))
-
- if extra_tests:
- for test in extra_tests:
- suite.addTest(test)
-
- return runner.reorder_suite(suite, (unittest.TestCase,))
diff --git a/lib/python2.7/site-packages/django/test/testcases.py b/lib/python2.7/site-packages/django/test/testcases.py
deleted file mode 100644
index 85ff66a..0000000
--- a/lib/python2.7/site-packages/django/test/testcases.py
+++ /dev/null
@@ -1,1208 +0,0 @@
-from __future__ import unicode_literals
-
-from copy import copy
-import difflib
-import errno
-from functools import wraps
-import json
-import os
-import re
-import socket
-import sys
-import select
-import socket
-import threading
-import warnings
-
-from django.conf import settings
-from django.contrib.staticfiles.handlers import StaticFilesHandler
-from django.core import mail
-from django.core.exceptions import ValidationError, ImproperlyConfigured
-from django.core.handlers.wsgi import WSGIHandler
-from django.core.management import call_command
-from django.core.management.color import no_style
-from django.core.management.commands import flush
-from django.core.servers.basehttp import WSGIRequestHandler, WSGIServer
-from django.core.urlresolvers import clear_url_caches, set_urlconf
-from django.db import connection, connections, DEFAULT_DB_ALIAS, transaction
-from django.db.models.loading import cache
-from django.forms.fields import CharField
-from django.http import QueryDict
-from django.test.client import Client
-from django.test.html import HTMLParseError, parse_html
-from django.test.signals import template_rendered
-from django.test.utils import (CaptureQueriesContext, ContextList,
- override_settings, compare_xml)
-from django.utils import six, unittest as ut2
-from django.utils.encoding import force_text
-from django.utils.six.moves.urllib.parse import urlsplit, urlunsplit
-from django.utils.unittest import skipIf # Imported here for backward compatibility
-from django.utils.unittest.util import safe_repr
-from django.views.static import serve
-
-
-__all__ = ('TestCase', 'TransactionTestCase',
- 'SimpleTestCase', 'skipIfDBFeature', 'skipUnlessDBFeature')
-
-
-def to_list(value):
- """
- Puts value into a list if it's not already one.
- Returns an empty list if value is None.
- """
- if value is None:
- value = []
- elif not isinstance(value, list):
- value = [value]
- return value
-
-real_commit = transaction.commit
-real_rollback = transaction.rollback
-real_enter_transaction_management = transaction.enter_transaction_management
-real_leave_transaction_management = transaction.leave_transaction_management
-real_abort = transaction.abort
-
-def nop(*args, **kwargs):
- return
-
-def disable_transaction_methods():
- transaction.commit = nop
- transaction.rollback = nop
- transaction.enter_transaction_management = nop
- transaction.leave_transaction_management = nop
- transaction.abort = nop
-
-def restore_transaction_methods():
- transaction.commit = real_commit
- transaction.rollback = real_rollback
- transaction.enter_transaction_management = real_enter_transaction_management
- transaction.leave_transaction_management = real_leave_transaction_management
- transaction.abort = real_abort
-
-
-def assert_and_parse_html(self, html, user_msg, msg):
- try:
- dom = parse_html(html)
- except HTMLParseError as e:
- standardMsg = '%s\n%s' % (msg, e.msg)
- self.fail(self._formatMessage(user_msg, standardMsg))
- return dom
-
-
-class _AssertNumQueriesContext(CaptureQueriesContext):
- def __init__(self, test_case, num, connection):
- self.test_case = test_case
- self.num = num
- super(_AssertNumQueriesContext, self).__init__(connection)
-
- def __exit__(self, exc_type, exc_value, traceback):
- super(_AssertNumQueriesContext, self).__exit__(exc_type, exc_value, traceback)
- if exc_type is not None:
- return
- executed = len(self)
- self.test_case.assertEqual(
- executed, self.num, "%d queries executed, %d expected" % (
- executed, self.num
- )
- )
-
-
-class _AssertTemplateUsedContext(object):
- def __init__(self, test_case, template_name):
- self.test_case = test_case
- self.template_name = template_name
- self.rendered_templates = []
- self.rendered_template_names = []
- self.context = ContextList()
-
- def on_template_render(self, sender, signal, template, context, **kwargs):
- self.rendered_templates.append(template)
- self.rendered_template_names.append(template.name)
- self.context.append(copy(context))
-
- def test(self):
- return self.template_name in self.rendered_template_names
-
- def message(self):
- return '%s was not rendered.' % self.template_name
-
- def __enter__(self):
- template_rendered.connect(self.on_template_render)
- return self
-
- def __exit__(self, exc_type, exc_value, traceback):
- template_rendered.disconnect(self.on_template_render)
- if exc_type is not None:
- return
-
- if not self.test():
- message = self.message()
- if len(self.rendered_templates) == 0:
- message += ' No template was rendered.'
- else:
- message += ' Following templates were rendered: %s' % (
- ', '.join(self.rendered_template_names))
- self.test_case.fail(message)
-
-
-class _AssertTemplateNotUsedContext(_AssertTemplateUsedContext):
- def test(self):
- return self.template_name not in self.rendered_template_names
-
- def message(self):
- return '%s was rendered.' % self.template_name
-
-
-class SimpleTestCase(ut2.TestCase):
-
- # The class we'll use for the test client self.client.
- # Can be overridden in derived classes.
- client_class = Client
-
- _warn_txt = ("save_warnings_state/restore_warnings_state "
- "django.test.*TestCase methods are deprecated. Use Python's "
- "warnings.catch_warnings context manager instead.")
-
- def __call__(self, result=None):
- """
- Wrapper around default __call__ method to perform common Django test
- set up. This means that user-defined Test Cases aren't required to
- include a call to super().setUp().
- """
- testMethod = getattr(self, self._testMethodName)
- skipped = (getattr(self.__class__, "__unittest_skip__", False) or
- getattr(testMethod, "__unittest_skip__", False))
-
- if not skipped:
- try:
- self._pre_setup()
- except (KeyboardInterrupt, SystemExit):
- raise
- except Exception:
- result.addError(self, sys.exc_info())
- return
- super(SimpleTestCase, self).__call__(result)
- if not skipped:
- try:
- self._post_teardown()
- except (KeyboardInterrupt, SystemExit):
- raise
- except Exception:
- result.addError(self, sys.exc_info())
- return
-
- def _pre_setup(self):
- """Performs any pre-test setup. This includes:
-
- * Creating a test client.
- * If the class has a 'urls' attribute, replace ROOT_URLCONF with it.
- * Clearing the mail test outbox.
- """
- self.client = self.client_class()
- self._urlconf_setup()
- mail.outbox = []
-
- def _urlconf_setup(self):
- set_urlconf(None)
- if hasattr(self, 'urls'):
- self._old_root_urlconf = settings.ROOT_URLCONF
- settings.ROOT_URLCONF = self.urls
- clear_url_caches()
-
- def _post_teardown(self):
- """Performs any post-test things. This includes:
-
- * Putting back the original ROOT_URLCONF if it was changed.
- """
- self._urlconf_teardown()
-
- def _urlconf_teardown(self):
- set_urlconf(None)
- if hasattr(self, '_old_root_urlconf'):
- settings.ROOT_URLCONF = self._old_root_urlconf
- clear_url_caches()
-
- def save_warnings_state(self):
- """
- Saves the state of the warnings module
- """
- warnings.warn(self._warn_txt, DeprecationWarning, stacklevel=2)
- self._warnings_state = warnings.filters[:]
-
- def restore_warnings_state(self):
- """
- Restores the state of the warnings module to the state
- saved by save_warnings_state()
- """
- warnings.warn(self._warn_txt, DeprecationWarning, stacklevel=2)
- warnings.filters = self._warnings_state[:]
-
- def settings(self, **kwargs):
- """
- A context manager that temporarily sets a setting and reverts
- back to the original value when exiting the context.
- """
- return override_settings(**kwargs)
-
- def assertRedirects(self, response, expected_url, status_code=302,
- target_status_code=200, host=None, msg_prefix=''):
- """Asserts that a response redirected to a specific URL, and that the
- redirect URL can be loaded.
-
- Note that assertRedirects won't work for external links since it uses
- TestClient to do a request.
- """
- if msg_prefix:
- msg_prefix += ": "
-
- if hasattr(response, 'redirect_chain'):
- # The request was a followed redirect
- self.assertTrue(len(response.redirect_chain) > 0,
- msg_prefix + "Response didn't redirect as expected: Response"
- " code was %d (expected %d)" %
- (response.status_code, status_code))
-
- self.assertEqual(response.redirect_chain[0][1], status_code,
- msg_prefix + "Initial response didn't redirect as expected:"
- " Response code was %d (expected %d)" %
- (response.redirect_chain[0][1], status_code))
-
- url, status_code = response.redirect_chain[-1]
-
- self.assertEqual(response.status_code, target_status_code,
- msg_prefix + "Response didn't redirect as expected: Final"
- " Response code was %d (expected %d)" %
- (response.status_code, target_status_code))
-
- else:
- # Not a followed redirect
- self.assertEqual(response.status_code, status_code,
- msg_prefix + "Response didn't redirect as expected: Response"
- " code was %d (expected %d)" %
- (response.status_code, status_code))
-
- url = response.url
- scheme, netloc, path, query, fragment = urlsplit(url)
-
- redirect_response = response.client.get(path, QueryDict(query))
-
- # Get the redirection page, using the same client that was used
- # to obtain the original response.
- self.assertEqual(redirect_response.status_code, target_status_code,
- msg_prefix + "Couldn't retrieve redirection page '%s':"
- " response code was %d (expected %d)" %
- (path, redirect_response.status_code, target_status_code))
-
- e_scheme, e_netloc, e_path, e_query, e_fragment = urlsplit(
- expected_url)
- if not (e_scheme or e_netloc):
- expected_url = urlunsplit(('http', host or 'testserver', e_path,
- e_query, e_fragment))
-
- self.assertEqual(url, expected_url,
- msg_prefix + "Response redirected to '%s', expected '%s'" %
- (url, expected_url))
-
- def assertContains(self, response, text, count=None, status_code=200,
- msg_prefix='', html=False):
- """
- Asserts that a response indicates that some content was retrieved
- successfully, (i.e., the HTTP status code was as expected), and that
- ``text`` occurs ``count`` times in the content of the response.
- If ``count`` is None, the count doesn't matter - the assertion is true
- if the text occurs at least once in the response.
- """
-
- # If the response supports deferred rendering and hasn't been rendered
- # yet, then ensure that it does get rendered before proceeding further.
- if (hasattr(response, 'render') and callable(response.render)
- and not response.is_rendered):
- response.render()
-
- if msg_prefix:
- msg_prefix += ": "
-
- self.assertEqual(response.status_code, status_code,
- msg_prefix + "Couldn't retrieve content: Response code was %d"
- " (expected %d)" % (response.status_code, status_code))
-
- if response.streaming:
- content = b''.join(response.streaming_content)
- else:
- content = response.content
- if not isinstance(text, bytes) or html:
- text = force_text(text, encoding=response._charset)
- content = content.decode(response._charset)
- text_repr = "'%s'" % text
- else:
- text_repr = repr(text)
- if html:
- content = assert_and_parse_html(self, content, None,
- "Response's content is not valid HTML:")
- text = assert_and_parse_html(self, text, None,
- "Second argument is not valid HTML:")
- real_count = content.count(text)
- if count is not None:
- self.assertEqual(real_count, count,
- msg_prefix + "Found %d instances of %s in response"
- " (expected %d)" % (real_count, text_repr, count))
- else:
- self.assertTrue(real_count != 0,
- msg_prefix + "Couldn't find %s in response" % text_repr)
-
- def assertNotContains(self, response, text, status_code=200,
- msg_prefix='', html=False):
- """
- Asserts that a response indicates that some content was retrieved
- successfully, (i.e., the HTTP status code was as expected), and that
- ``text`` doesn't occurs in the content of the response.
- """
-
- # If the response supports deferred rendering and hasn't been rendered
- # yet, then ensure that it does get rendered before proceeding further.
- if (hasattr(response, 'render') and callable(response.render)
- and not response.is_rendered):
- response.render()
-
- if msg_prefix:
- msg_prefix += ": "
-
- self.assertEqual(response.status_code, status_code,
- msg_prefix + "Couldn't retrieve content: Response code was %d"
- " (expected %d)" % (response.status_code, status_code))
-
- content = response.content
- if not isinstance(text, bytes) or html:
- text = force_text(text, encoding=response._charset)
- content = content.decode(response._charset)
- text_repr = "'%s'" % text
- else:
- text_repr = repr(text)
- if html:
- content = assert_and_parse_html(self, content, None,
- 'Response\'s content is not valid HTML:')
- text = assert_and_parse_html(self, text, None,
- 'Second argument is not valid HTML:')
- self.assertEqual(content.count(text), 0,
- msg_prefix + "Response should not contain %s" % text_repr)
-
- def assertFormError(self, response, form, field, errors, msg_prefix=''):
- """
- Asserts that a form used to render the response has a specific field
- error.
- """
- if msg_prefix:
- msg_prefix += ": "
-
- # Put context(s) into a list to simplify processing.
- contexts = to_list(response.context)
- if not contexts:
- self.fail(msg_prefix + "Response did not use any contexts to "
- "render the response")
-
- # Put error(s) into a list to simplify processing.
- errors = to_list(errors)
-
- # Search all contexts for the error.
- found_form = False
- for i,context in enumerate(contexts):
- if form not in context:
- continue
- found_form = True
- for err in errors:
- if field:
- if field in context[form].errors:
- field_errors = context[form].errors[field]
- self.assertTrue(err in field_errors,
- msg_prefix + "The field '%s' on form '%s' in"
- " context %d does not contain the error '%s'"
- " (actual errors: %s)" %
- (field, form, i, err, repr(field_errors)))
- elif field in context[form].fields:
- self.fail(msg_prefix + "The field '%s' on form '%s'"
- " in context %d contains no errors" %
- (field, form, i))
- else:
- self.fail(msg_prefix + "The form '%s' in context %d"
- " does not contain the field '%s'" %
- (form, i, field))
- else:
- non_field_errors = context[form].non_field_errors()
- self.assertTrue(err in non_field_errors,
- msg_prefix + "The form '%s' in context %d does not"
- " contain the non-field error '%s'"
- " (actual errors: %s)" %
- (form, i, err, non_field_errors))
- if not found_form:
- self.fail(msg_prefix + "The form '%s' was not used to render the"
- " response" % form)
-
- def assertFormsetError(self, response, formset, form_index, field, errors,
- msg_prefix=''):
- """
- Asserts that a formset used to render the response has a specific error.
-
- For field errors, specify the ``form_index`` and the ``field``.
- For non-field errors, specify the ``form_index`` and the ``field`` as
- None.
- For non-form errors, specify ``form_index`` as None and the ``field``
- as None.
- """
- # Add punctuation to msg_prefix
- if msg_prefix:
- msg_prefix += ": "
-
- # Put context(s) into a list to simplify processing.
- contexts = to_list(response.context)
- if not contexts:
- self.fail(msg_prefix + 'Response did not use any contexts to '
- 'render the response')
-
- # Put error(s) into a list to simplify processing.
- errors = to_list(errors)
-
- # Search all contexts for the error.
- found_formset = False
- for i, context in enumerate(contexts):
- if formset not in context:
- continue
- found_formset = True
- for err in errors:
- if field is not None:
- if field in context[formset].forms[form_index].errors:
- field_errors = context[formset].forms[form_index].errors[field]
- self.assertTrue(err in field_errors,
- msg_prefix + "The field '%s' on formset '%s', "
- "form %d in context %d does not contain the "
- "error '%s' (actual errors: %s)" %
- (field, formset, form_index, i, err,
- repr(field_errors)))
- elif field in context[formset].forms[form_index].fields:
- self.fail(msg_prefix + "The field '%s' "
- "on formset '%s', form %d in "
- "context %d contains no errors" %
- (field, formset, form_index, i))
- else:
- self.fail(msg_prefix + "The formset '%s', form %d in "
- "context %d does not contain the field '%s'" %
- (formset, form_index, i, field))
- elif form_index is not None:
- non_field_errors = context[formset].forms[form_index].non_field_errors()
- self.assertFalse(len(non_field_errors) == 0,
- msg_prefix + "The formset '%s', form %d in "
- "context %d does not contain any non-field "
- "errors." % (formset, form_index, i))
- self.assertTrue(err in non_field_errors,
- msg_prefix + "The formset '%s', form %d "
- "in context %d does not contain the "
- "non-field error '%s' "
- "(actual errors: %s)" %
- (formset, form_index, i, err,
- repr(non_field_errors)))
- else:
- non_form_errors = context[formset].non_form_errors()
- self.assertFalse(len(non_form_errors) == 0,
- msg_prefix + "The formset '%s' in "
- "context %d does not contain any "
- "non-form errors." % (formset, i))
- self.assertTrue(err in non_form_errors,
- msg_prefix + "The formset '%s' in context "
- "%d does not contain the "
- "non-form error '%s' (actual errors: %s)" %
- (formset, i, err, repr(non_form_errors)))
- if not found_formset:
- self.fail(msg_prefix + "The formset '%s' was not used to render "
- "the response" % formset)
-
- def assertTemplateUsed(self, response=None, template_name=None, msg_prefix=''):
- """
- Asserts that the template with the provided name was used in rendering
- the response. Also usable as context manager.
- """
- if response is None and template_name is None:
- raise TypeError('response and/or template_name argument must be provided')
-
- if msg_prefix:
- msg_prefix += ": "
-
- # Use assertTemplateUsed as context manager.
- if not hasattr(response, 'templates') or (response is None and template_name):
- if response:
- template_name = response
- response = None
- context = _AssertTemplateUsedContext(self, template_name)
- return context
-
- template_names = [t.name for t in response.templates]
- if not template_names:
- self.fail(msg_prefix + "No templates used to render the response")
- self.assertTrue(template_name in template_names,
- msg_prefix + "Template '%s' was not a template used to render"
- " the response. Actual template(s) used: %s" %
- (template_name, ', '.join(template_names)))
-
- def assertTemplateNotUsed(self, response=None, template_name=None, msg_prefix=''):
- """
- Asserts that the template with the provided name was NOT used in
- rendering the response. Also usable as context manager.
- """
- if response is None and template_name is None:
- raise TypeError('response and/or template_name argument must be provided')
-
- if msg_prefix:
- msg_prefix += ": "
-
- # Use assertTemplateUsed as context manager.
- if not hasattr(response, 'templates') or (response is None and template_name):
- if response:
- template_name = response
- response = None
- context = _AssertTemplateNotUsedContext(self, template_name)
- return context
-
- template_names = [t.name for t in response.templates]
- self.assertFalse(template_name in template_names,
- msg_prefix + "Template '%s' was used unexpectedly in rendering"
- " the response" % template_name)
-
- def assertRaisesMessage(self, expected_exception, expected_message,
- callable_obj=None, *args, **kwargs):
- """
- Asserts that the message in a raised exception matches the passed
- value.
-
- Args:
- expected_exception: Exception class expected to be raised.
- expected_message: expected error message string value.
- callable_obj: Function to be called.
- args: Extra args.
- kwargs: Extra kwargs.
- """
- return six.assertRaisesRegex(self, expected_exception,
- re.escape(expected_message), callable_obj, *args, **kwargs)
-
- def assertFieldOutput(self, fieldclass, valid, invalid, field_args=None,
- field_kwargs=None, empty_value=''):
- """
- Asserts that a form field behaves correctly with various inputs.
-
- Args:
- fieldclass: the class of the field to be tested.
- valid: a dictionary mapping valid inputs to their expected
- cleaned values.
- invalid: a dictionary mapping invalid inputs to one or more
- raised error messages.
- field_args: the args passed to instantiate the field
- field_kwargs: the kwargs passed to instantiate the field
- empty_value: the expected clean output for inputs in empty_values
-
- """
- if field_args is None:
- field_args = []
- if field_kwargs is None:
- field_kwargs = {}
- required = fieldclass(*field_args, **field_kwargs)
- optional = fieldclass(*field_args,
- **dict(field_kwargs, required=False))
- # test valid inputs
- for input, output in valid.items():
- self.assertEqual(required.clean(input), output)
- self.assertEqual(optional.clean(input), output)
- # test invalid inputs
- for input, errors in invalid.items():
- with self.assertRaises(ValidationError) as context_manager:
- required.clean(input)
- self.assertEqual(context_manager.exception.messages, errors)
-
- with self.assertRaises(ValidationError) as context_manager:
- optional.clean(input)
- self.assertEqual(context_manager.exception.messages, errors)
- # test required inputs
- error_required = [force_text(required.error_messages['required'])]
- for e in required.empty_values:
- with self.assertRaises(ValidationError) as context_manager:
- required.clean(e)
- self.assertEqual(context_manager.exception.messages,
- error_required)
- self.assertEqual(optional.clean(e), empty_value)
- # test that max_length and min_length are always accepted
- if issubclass(fieldclass, CharField):
- field_kwargs.update({'min_length':2, 'max_length':20})
- self.assertTrue(isinstance(fieldclass(*field_args, **field_kwargs),
- fieldclass))
-
- def assertHTMLEqual(self, html1, html2, msg=None):
- """
- Asserts that two HTML snippets are semantically the same.
- Whitespace in most cases is ignored, and attribute ordering is not
- significant. The passed-in arguments must be valid HTML.
- """
- dom1 = assert_and_parse_html(self, html1, msg,
- 'First argument is not valid HTML:')
- dom2 = assert_and_parse_html(self, html2, msg,
- 'Second argument is not valid HTML:')
-
- if dom1 != dom2:
- standardMsg = '%s != %s' % (
- safe_repr(dom1, True), safe_repr(dom2, True))
- diff = ('\n' + '\n'.join(difflib.ndiff(
- six.text_type(dom1).splitlines(),
- six.text_type(dom2).splitlines())))
- standardMsg = self._truncateMessage(standardMsg, diff)
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertHTMLNotEqual(self, html1, html2, msg=None):
- """Asserts that two HTML snippets are not semantically equivalent."""
- dom1 = assert_and_parse_html(self, html1, msg,
- 'First argument is not valid HTML:')
- dom2 = assert_and_parse_html(self, html2, msg,
- 'Second argument is not valid HTML:')
-
- if dom1 == dom2:
- standardMsg = '%s == %s' % (
- safe_repr(dom1, True), safe_repr(dom2, True))
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertInHTML(self, needle, haystack, count=None, msg_prefix=''):
- needle = assert_and_parse_html(self, needle, None,
- 'First argument is not valid HTML:')
- haystack = assert_and_parse_html(self, haystack, None,
- 'Second argument is not valid HTML:')
- real_count = haystack.count(needle)
- if count is not None:
- self.assertEqual(real_count, count,
- msg_prefix + "Found %d instances of '%s' in response"
- " (expected %d)" % (real_count, needle, count))
- else:
- self.assertTrue(real_count != 0,
- msg_prefix + "Couldn't find '%s' in response" % needle)
-
- def assertJSONEqual(self, raw, expected_data, msg=None):
- try:
- data = json.loads(raw)
- except ValueError:
- self.fail("First argument is not valid JSON: %r" % raw)
- if isinstance(expected_data, six.string_types):
- try:
- expected_data = json.loads(expected_data)
- except ValueError:
- self.fail("Second argument is not valid JSON: %r" % expected_data)
- self.assertEqual(data, expected_data, msg=msg)
-
- def assertXMLEqual(self, xml1, xml2, msg=None):
- """
- Asserts that two XML snippets are semantically the same.
- Whitespace in most cases is ignored, and attribute ordering is not
- significant. The passed-in arguments must be valid XML.
- """
- try:
- result = compare_xml(xml1, xml2)
- except Exception as e:
- standardMsg = 'First or second argument is not valid XML\n%s' % e
- self.fail(self._formatMessage(msg, standardMsg))
- else:
- if not result:
- standardMsg = '%s != %s' % (safe_repr(xml1, True), safe_repr(xml2, True))
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertXMLNotEqual(self, xml1, xml2, msg=None):
- """
- Asserts that two XML snippets are not semantically equivalent.
- Whitespace in most cases is ignored, and attribute ordering is not
- significant. The passed-in arguments must be valid XML.
- """
- try:
- result = compare_xml(xml1, xml2)
- except Exception as e:
- standardMsg = 'First or second argument is not valid XML\n%s' % e
- self.fail(self._formatMessage(msg, standardMsg))
- else:
- if result:
- standardMsg = '%s == %s' % (safe_repr(xml1, True), safe_repr(xml2, True))
- self.fail(self._formatMessage(msg, standardMsg))
-
-
-class TransactionTestCase(SimpleTestCase):
-
- # Subclasses can ask for resetting of auto increment sequence before each
- # test case
- reset_sequences = False
-
- # Subclasses can enable only a subset of apps for faster tests
- available_apps = None
-
- def _pre_setup(self):
- """Performs any pre-test setup. This includes:
-
- * If the class has an 'available_apps' attribute, restricting the app
- cache to these applications, then firing post_syncdb -- it must run
- with the correct set of applications for the test case.
- * If the class has a 'fixtures' attribute, installing these fixtures.
- """
- super(TransactionTestCase, self)._pre_setup()
- if self.available_apps is not None:
- cache.set_available_apps(self.available_apps)
- for db_name in self._databases_names(include_mirrors=False):
- flush.Command.emit_post_syncdb(
- verbosity=0, interactive=False, database=db_name)
- try:
- self._fixture_setup()
- except Exception:
- if self.available_apps is not None:
- cache.unset_available_apps()
- raise
-
- def _databases_names(self, include_mirrors=True):
- # If the test case has a multi_db=True flag, act on all databases,
- # including mirrors or not. Otherwise, just on the default DB.
- if getattr(self, 'multi_db', False):
- return [alias for alias in connections
- if include_mirrors or not connections[alias].settings_dict['TEST_MIRROR']]
- else:
- return [DEFAULT_DB_ALIAS]
-
- def _reset_sequences(self, db_name):
- conn = connections[db_name]
- if conn.features.supports_sequence_reset:
- sql_list = \
- conn.ops.sequence_reset_by_name_sql(no_style(),
- conn.introspection.sequence_list())
- if sql_list:
- with transaction.commit_on_success_unless_managed(using=db_name):
- cursor = conn.cursor()
- for sql in sql_list:
- cursor.execute(sql)
-
- def _fixture_setup(self):
- for db_name in self._databases_names(include_mirrors=False):
- # Reset sequences
- if self.reset_sequences:
- self._reset_sequences(db_name)
-
- if hasattr(self, 'fixtures'):
- # We have to use this slightly awkward syntax due to the fact
- # that we're using *args and **kwargs together.
- call_command('loaddata', *self.fixtures,
- **{'verbosity': 0, 'database': db_name, 'skip_validation': True})
-
- def _post_teardown(self):
- """Performs any post-test things. This includes:
-
- * Flushing the contents of the database, to leave a clean slate. If
- the class has an 'available_apps' attribute, post_syncdb isn't fired.
- * Force-closing the connection, so the next test gets a clean cursor.
- """
- try:
- self._fixture_teardown()
- super(TransactionTestCase, self)._post_teardown()
- # Some DB cursors include SQL statements as part of cursor
- # creation. If you have a test that does rollback, the effect of
- # these statements is lost, which can effect the operation of
- # tests (e.g., losing a timezone setting causing objects to be
- # created with the wrong time). To make sure this doesn't happen,
- # get a clean connection at the start of every test.
- for conn in connections.all():
- conn.close()
- finally:
- cache.unset_available_apps()
-
- def _fixture_teardown(self):
- # Allow TRUNCATE ... CASCADE and don't emit the post_syncdb signal
- # when flushing only a subset of the apps
- for db_name in self._databases_names(include_mirrors=False):
- call_command('flush', verbosity=0, interactive=False,
- database=db_name, skip_validation=True,
- reset_sequences=False,
- allow_cascade=self.available_apps is not None,
- inhibit_post_syncdb=self.available_apps is not None)
-
- def assertQuerysetEqual(self, qs, values, transform=repr, ordered=True):
- items = six.moves.map(transform, qs)
- if not ordered:
- return self.assertEqual(set(items), set(values))
- values = list(values)
- # For example qs.iterator() could be passed as qs, but it does not
- # have 'ordered' attribute.
- if len(values) > 1 and hasattr(qs, 'ordered') and not qs.ordered:
- raise ValueError("Trying to compare non-ordered queryset "
- "against more than one ordered values")
- return self.assertEqual(list(items), values)
-
- def assertNumQueries(self, num, func=None, *args, **kwargs):
- using = kwargs.pop("using", DEFAULT_DB_ALIAS)
- conn = connections[using]
-
- context = _AssertNumQueriesContext(self, num, conn)
- if func is None:
- return context
-
- with context:
- func(*args, **kwargs)
-
-
-def connections_support_transactions():
- """
- Returns True if all connections support transactions.
- """
- return all(conn.features.supports_transactions
- for conn in connections.all())
-
-
-class TestCase(TransactionTestCase):
- """
- Does basically the same as TransactionTestCase, but surrounds every test
- with a transaction, monkey-patches the real transaction management routines
- to do nothing, and rollsback the test transaction at the end of the test.
- You have to use TransactionTestCase, if you need transaction management
- inside a test.
- """
-
- def _fixture_setup(self):
- if not connections_support_transactions():
- return super(TestCase, self)._fixture_setup()
-
- assert not self.reset_sequences, 'reset_sequences cannot be used on TestCase instances'
-
- self.atomics = {}
- for db_name in self._databases_names():
- self.atomics[db_name] = transaction.atomic(using=db_name)
- self.atomics[db_name].__enter__()
- # Remove this when the legacy transaction management goes away.
- disable_transaction_methods()
-
- for db_name in self._databases_names(include_mirrors=False):
- if hasattr(self, 'fixtures'):
- try:
- call_command('loaddata', *self.fixtures,
- **{
- 'verbosity': 0,
- 'commit': False,
- 'database': db_name,
- 'skip_validation': True,
- })
- except Exception:
- self._fixture_teardown()
- raise
-
- def _fixture_teardown(self):
- if not connections_support_transactions():
- return super(TestCase, self)._fixture_teardown()
-
- # Remove this when the legacy transaction management goes away.
- restore_transaction_methods()
- for db_name in reversed(self._databases_names()):
- # Hack to force a rollback
- connections[db_name].needs_rollback = True
- self.atomics[db_name].__exit__(None, None, None)
-
-
-def _deferredSkip(condition, reason):
- def decorator(test_func):
- if not (isinstance(test_func, type) and
- issubclass(test_func, TestCase)):
- @wraps(test_func)
- def skip_wrapper(*args, **kwargs):
- if condition():
- raise ut2.SkipTest(reason)
- return test_func(*args, **kwargs)
- test_item = skip_wrapper
- else:
- test_item = test_func
- test_item.__unittest_skip_why__ = reason
- return test_item
- return decorator
-
-
-def skipIfDBFeature(feature):
- """
- Skip a test if a database has the named feature
- """
- return _deferredSkip(lambda: getattr(connection.features, feature),
- "Database has feature %s" % feature)
-
-
-def skipUnlessDBFeature(feature):
- """
- Skip a test unless a database has the named feature
- """
- return _deferredSkip(lambda: not getattr(connection.features, feature),
- "Database doesn't support feature %s" % feature)
-
-
-class QuietWSGIRequestHandler(WSGIRequestHandler):
- """
- Just a regular WSGIRequestHandler except it doesn't log to the standard
- output any of the requests received, so as to not clutter the output for
- the tests' results.
- """
-
- def log_message(*args):
- pass
-
-
-if sys.version_info >= (3, 3, 0):
- _ImprovedEvent = threading.Event
-elif sys.version_info >= (2, 7, 0):
- _ImprovedEvent = threading._Event
-else:
- class _ImprovedEvent(threading._Event):
- """
- Does the same as `threading.Event` except it overrides the wait() method
- with some code borrowed from Python 2.7 to return the set state of the
- event (see: http://hg.python.org/cpython/rev/b5aa8aa78c0f/). This allows
- to know whether the wait() method exited normally or because of the
- timeout. This class can be removed when Django supports only Python >= 2.7.
- """
-
- def wait(self, timeout=None):
- self._Event__cond.acquire()
- try:
- if not self._Event__flag:
- self._Event__cond.wait(timeout)
- return self._Event__flag
- finally:
- self._Event__cond.release()
-
-
-class StoppableWSGIServer(WSGIServer):
- """
- The code in this class is borrowed from the `SocketServer.BaseServer` class
- in Python 2.6. The important functionality here is that the server is non-
- blocking and that it can be shut down at any moment. This is made possible
- by the server regularly polling the socket and checking if it has been
- asked to stop.
- Note for the future: Once Django stops supporting Python 2.6, this class
- can be removed as `WSGIServer` will have this ability to shutdown on
- demand and will not require the use of the _ImprovedEvent class whose code
- is borrowed from Python 2.7.
- """
-
- def __init__(self, *args, **kwargs):
- super(StoppableWSGIServer, self).__init__(*args, **kwargs)
- self.__is_shut_down = _ImprovedEvent()
- self.__serving = False
-
- def serve_forever(self, poll_interval=0.5):
- """
- Handle one request at a time until shutdown.
-
- Polls for shutdown every poll_interval seconds.
- """
- self.__serving = True
- self.__is_shut_down.clear()
- while self.__serving:
- r, w, e = select.select([self], [], [], poll_interval)
- if r:
- self._handle_request_noblock()
- self.__is_shut_down.set()
-
- def shutdown(self):
- """
- Stops the serve_forever loop.
-
- Blocks until the loop has finished. This must be called while
- serve_forever() is running in another thread, or it will
- deadlock.
- """
- self.__serving = False
- if not self.__is_shut_down.wait(2):
- raise RuntimeError(
- "Failed to shutdown the live test server in 2 seconds. The "
- "server might be stuck or generating a slow response.")
-
- def handle_request(self):
- """Handle one request, possibly blocking.
- """
- fd_sets = select.select([self], [], [], None)
- if not fd_sets[0]:
- return
- self._handle_request_noblock()
-
- def _handle_request_noblock(self):
- """
- Handle one request, without blocking.
-
- I assume that select.select has returned that the socket is
- readable before this function was called, so there should be
- no risk of blocking in get_request().
- """
- try:
- request, client_address = self.get_request()
- except socket.error:
- return
- if self.verify_request(request, client_address):
- try:
- self.process_request(request, client_address)
- except Exception:
- self.handle_error(request, client_address)
- self.close_request(request)
-
-
-class _MediaFilesHandler(StaticFilesHandler):
- """
- Handler for serving the media files. This is a private class that is
- meant to be used solely as a convenience by LiveServerThread.
- """
-
- def get_base_dir(self):
- return settings.MEDIA_ROOT
-
- def get_base_url(self):
- return settings.MEDIA_URL
-
- def serve(self, request):
- relative_url = request.path[len(self.base_url[2]):]
- return serve(request, relative_url, document_root=self.get_base_dir())
-
-
-class LiveServerThread(threading.Thread):
- """
- Thread for running a live http server while the tests are running.
- """
-
- def __init__(self, host, possible_ports, connections_override=None):
- self.host = host
- self.port = None
- self.possible_ports = possible_ports
- self.is_ready = threading.Event()
- self.error = None
- self.connections_override = connections_override
- super(LiveServerThread, self).__init__()
-
- def run(self):
- """
- Sets up the live server and databases, and then loops over handling
- http requests.
- """
- if self.connections_override:
- # Override this thread's database connections with the ones
- # provided by the main thread.
- for alias, conn in self.connections_override.items():
- connections[alias] = conn
- try:
- # Create the handler for serving static and media files
- handler = StaticFilesHandler(_MediaFilesHandler(WSGIHandler()))
-
- # Go through the list of possible ports, hoping that we can find
- # one that is free to use for the WSGI server.
- for index, port in enumerate(self.possible_ports):
- try:
- self.httpd = StoppableWSGIServer(
- (self.host, port), QuietWSGIRequestHandler)
- except socket.error as e:
- if (index + 1 < len(self.possible_ports) and
- e.errno == errno.EADDRINUSE):
- # This port is already in use, so we go on and try with
- # the next one in the list.
- continue
- else:
- # Either none of the given ports are free or the error
- # is something else than "Address already in use". So
- # we let that error bubble up to the main thread.
- raise
- else:
- # A free port was found.
- self.port = port
- break
-
- self.httpd.set_app(handler)
- self.is_ready.set()
- self.httpd.serve_forever()
- except Exception as e:
- self.error = e
- self.is_ready.set()
-
- def join(self, timeout=None):
- if hasattr(self, 'httpd'):
- # Stop the WSGI server
- self.httpd.shutdown()
- self.httpd.server_close()
- super(LiveServerThread, self).join(timeout)
-
-
-class LiveServerTestCase(TransactionTestCase):
- """
- Does basically the same as TransactionTestCase but also launches a live
- http server in a separate thread so that the tests may use another testing
- framework, such as Selenium for example, instead of the built-in dummy
- client.
- Note that it inherits from TransactionTestCase instead of TestCase because
- the threads do not share the same transactions (unless if using in-memory
- sqlite) and each thread needs to commit all their transactions so that the
- other thread can see the changes.
- """
-
- @property
- def live_server_url(self):
- return 'http://%s:%s' % (
- self.server_thread.host, self.server_thread.port)
-
- @classmethod
- def setUpClass(cls):
- connections_override = {}
- for conn in connections.all():
- # If using in-memory sqlite databases, pass the connections to
- # the server thread.
- if (conn.settings_dict['ENGINE'].rsplit('.', 1)[-1] in ('sqlite3', 'spatialite')
- and conn.settings_dict['NAME'] == ':memory:'):
- # Explicitly enable thread-shareability for this connection
- conn.allow_thread_sharing = True
- connections_override[conn.alias] = conn
-
- # Launch the live server's thread
- specified_address = os.environ.get(
- 'DJANGO_LIVE_TEST_SERVER_ADDRESS', 'localhost:8081')
-
- # The specified ports may be of the form '8000-8010,8080,9200-9300'
- # i.e. a comma-separated list of ports or ranges of ports, so we break
- # it down into a detailed list of all possible ports.
- possible_ports = []
- try:
- host, port_ranges = specified_address.split(':')
- for port_range in port_ranges.split(','):
- # A port range can be of either form: '8000' or '8000-8010'.
- extremes = list(map(int, port_range.split('-')))
- assert len(extremes) in [1, 2]
- if len(extremes) == 1:
- # Port range of the form '8000'
- possible_ports.append(extremes[0])
- else:
- # Port range of the form '8000-8010'
- for port in range(extremes[0], extremes[1] + 1):
- possible_ports.append(port)
- except Exception:
- msg = 'Invalid address ("%s") for live server.' % specified_address
- six.reraise(ImproperlyConfigured, ImproperlyConfigured(msg), sys.exc_info()[2])
- cls.server_thread = LiveServerThread(
- host, possible_ports, connections_override)
- cls.server_thread.daemon = True
- cls.server_thread.start()
-
- # Wait for the live server to be ready
- cls.server_thread.is_ready.wait()
- if cls.server_thread.error:
- # Clean up behind ourselves, since tearDownClass won't get called in
- # case of errors.
- cls._tearDownClassInternal()
- raise cls.server_thread.error
-
- super(LiveServerTestCase, cls).setUpClass()
-
- @classmethod
- def _tearDownClassInternal(cls):
- # There may not be a 'server_thread' attribute if setUpClass() for some
- # reasons has raised an exception.
- if hasattr(cls, 'server_thread'):
- # Terminate the live server's thread
- cls.server_thread.join()
-
- # Restore sqlite connections' non-sharability
- for conn in connections.all():
- if (conn.settings_dict['ENGINE'].rsplit('.', 1)[-1] in ('sqlite3', 'spatialite')
- and conn.settings_dict['NAME'] == ':memory:'):
- conn.allow_thread_sharing = False
-
- @classmethod
- def tearDownClass(cls):
- cls._tearDownClassInternal()
- super(LiveServerTestCase, cls).tearDownClass()
diff --git a/lib/python2.7/site-packages/django/test/utils.py b/lib/python2.7/site-packages/django/test/utils.py
deleted file mode 100644
index 818ccaf..0000000
--- a/lib/python2.7/site-packages/django/test/utils.py
+++ /dev/null
@@ -1,469 +0,0 @@
-from contextlib import contextmanager
-import logging
-import re
-import sys
-from threading import local
-import time
-import warnings
-from functools import wraps
-from xml.dom.minidom import parseString, Node
-
-from django.conf import settings, UserSettingsHolder
-from django.core import mail
-from django.core.signals import request_started
-from django.db import reset_queries
-from django.http import request
-from django.template import Template, loader, TemplateDoesNotExist
-from django.template.loaders import cached
-from django.test.signals import template_rendered, setting_changed
-from django.utils.encoding import force_str
-from django.utils import six
-from django.utils.translation import deactivate
-from django.utils.unittest import skipUnless
-
-
-__all__ = (
- 'Approximate', 'ContextList', 'get_runner', 'override_settings',
- 'requires_tz_support', 'setup_test_environment', 'teardown_test_environment',
-)
-
-RESTORE_LOADERS_ATTR = '_original_template_source_loaders'
-TZ_SUPPORT = hasattr(time, 'tzset')
-
-
-class Approximate(object):
- def __init__(self, val, places=7):
- self.val = val
- self.places = places
-
- def __repr__(self):
- return repr(self.val)
-
- def __eq__(self, other):
- if self.val == other:
- return True
- return round(abs(self.val - other), self.places) == 0
-
-
-class ContextList(list):
- """A wrapper that provides direct key access to context items contained
- in a list of context objects.
- """
- def __getitem__(self, key):
- if isinstance(key, six.string_types):
- for subcontext in self:
- if key in subcontext:
- return subcontext[key]
- raise KeyError(key)
- else:
- return super(ContextList, self).__getitem__(key)
-
- def __contains__(self, key):
- try:
- self[key]
- except KeyError:
- return False
- return True
-
- def keys(self):
- """
- Flattened keys of subcontexts.
- """
- keys = set()
- for subcontext in self:
- for dict in subcontext:
- keys |= set(dict.keys())
- return keys
-
-
-def instrumented_test_render(self, context):
- """
- An instrumented Template render method, providing a signal
- that can be intercepted by the test system Client
- """
- template_rendered.send(sender=self, template=self, context=context)
- return self.nodelist.render(context)
-
-
-def setup_test_environment():
- """Perform any global pre-test setup. This involves:
-
- - Installing the instrumented test renderer
- - Set the email backend to the locmem email backend.
- - Setting the active locale to match the LANGUAGE_CODE setting.
- """
- Template._original_render = Template._render
- Template._render = instrumented_test_render
-
- # Storing previous values in the settings module itself is problematic.
- # Store them in arbitrary (but related) modules instead. See #20636.
-
- mail._original_email_backend = settings.EMAIL_BACKEND
- settings.EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'
-
- request._original_allowed_hosts = settings.ALLOWED_HOSTS
- settings.ALLOWED_HOSTS = ['*']
-
- mail.outbox = []
-
- deactivate()
-
-
-def teardown_test_environment():
- """Perform any global post-test teardown. This involves:
-
- - Restoring the original test renderer
- - Restoring the email sending functions
-
- """
- Template._render = Template._original_render
- del Template._original_render
-
- settings.EMAIL_BACKEND = mail._original_email_backend
- del mail._original_email_backend
-
- settings.ALLOWED_HOSTS = request._original_allowed_hosts
- del request._original_allowed_hosts
-
- del mail.outbox
-
-
-warn_txt = ("get_warnings_state/restore_warnings_state functions from "
- "django.test.utils are deprecated. Use Python's warnings.catch_warnings() "
- "context manager instead.")
-
-
-def get_warnings_state():
- """
- Returns an object containing the state of the warnings module
- """
- # There is no public interface for doing this, but this implementation of
- # get_warnings_state and restore_warnings_state appears to work on Python
- # 2.4 to 2.7.
- warnings.warn(warn_txt, DeprecationWarning, stacklevel=2)
- return warnings.filters[:]
-
-
-def restore_warnings_state(state):
- """
- Restores the state of the warnings module when passed an object that was
- returned by get_warnings_state()
- """
- warnings.warn(warn_txt, DeprecationWarning, stacklevel=2)
- warnings.filters = state[:]
-
-
-def get_runner(settings, test_runner_class=None):
- if not test_runner_class:
- test_runner_class = settings.TEST_RUNNER
-
- test_path = test_runner_class.split('.')
- # Allow for Python 2.5 relative paths
- if len(test_path) > 1:
- test_module_name = '.'.join(test_path[:-1])
- else:
- test_module_name = '.'
- test_module = __import__(test_module_name, {}, {}, force_str(test_path[-1]))
- test_runner = getattr(test_module, test_path[-1])
- return test_runner
-
-
-def setup_test_template_loader(templates_dict, use_cached_loader=False):
- """
- Changes Django to only find templates from within a dictionary (where each
- key is the template name and each value is the corresponding template
- content to return).
-
- Use meth:`restore_template_loaders` to restore the original loaders.
- """
- if hasattr(loader, RESTORE_LOADERS_ATTR):
- raise Exception("loader.%s already exists" % RESTORE_LOADERS_ATTR)
-
- def test_template_loader(template_name, template_dirs=None):
- "A custom template loader that loads templates from a dictionary."
- try:
- return (templates_dict[template_name], "test:%s" % template_name)
- except KeyError:
- raise TemplateDoesNotExist(template_name)
-
- if use_cached_loader:
- template_loader = cached.Loader(('test_template_loader',))
- template_loader._cached_loaders = (test_template_loader,)
- else:
- template_loader = test_template_loader
-
- setattr(loader, RESTORE_LOADERS_ATTR, loader.template_source_loaders)
- loader.template_source_loaders = (template_loader,)
- return template_loader
-
-
-def restore_template_loaders():
- """
- Restores the original template loaders after
- :meth:`setup_test_template_loader` has been run.
- """
- loader.template_source_loaders = getattr(loader, RESTORE_LOADERS_ATTR)
- delattr(loader, RESTORE_LOADERS_ATTR)
-
-
-class override_settings(object):
- """
- Acts as either a decorator, or a context manager. If it's a decorator it
- takes a function and returns a wrapped function. If it's a contextmanager
- it's used with the ``with`` statement. In either event entering/exiting
- are called before and after, respectively, the function/block is executed.
- """
- def __init__(self, **kwargs):
- self.options = kwargs
-
- def __enter__(self):
- self.enable()
-
- def __exit__(self, exc_type, exc_value, traceback):
- self.disable()
-
- def __call__(self, test_func):
- from django.test import SimpleTestCase
- if isinstance(test_func, type):
- if not issubclass(test_func, SimpleTestCase):
- raise Exception(
- "Only subclasses of Django SimpleTestCase can be decorated "
- "with override_settings")
- original_pre_setup = test_func._pre_setup
- original_post_teardown = test_func._post_teardown
-
- def _pre_setup(innerself):
- self.enable()
- original_pre_setup(innerself)
-
- def _post_teardown(innerself):
- original_post_teardown(innerself)
- self.disable()
- test_func._pre_setup = _pre_setup
- test_func._post_teardown = _post_teardown
- return test_func
- else:
- @wraps(test_func)
- def inner(*args, **kwargs):
- with self:
- return test_func(*args, **kwargs)
- return inner
-
- def enable(self):
- override = UserSettingsHolder(settings._wrapped)
- for key, new_value in self.options.items():
- setattr(override, key, new_value)
- self.wrapped = settings._wrapped
- settings._wrapped = override
- for key, new_value in self.options.items():
- setting_changed.send(sender=settings._wrapped.__class__,
- setting=key, value=new_value)
-
- def disable(self):
- settings._wrapped = self.wrapped
- del self.wrapped
- for key in self.options:
- new_value = getattr(settings, key, None)
- setting_changed.send(sender=settings._wrapped.__class__,
- setting=key, value=new_value)
-
-
-def compare_xml(want, got):
- """Tries to do a 'xml-comparison' of want and got. Plain string
- comparison doesn't always work because, for example, attribute
- ordering should not be important. Comment nodes are not considered in the
- comparison.
-
- Based on http://codespeak.net/svn/lxml/trunk/src/lxml/doctestcompare.py
- """
- _norm_whitespace_re = re.compile(r'[ \t\n][ \t\n]+')
- def norm_whitespace(v):
- return _norm_whitespace_re.sub(' ', v)
-
- def child_text(element):
- return ''.join([c.data for c in element.childNodes
- if c.nodeType == Node.TEXT_NODE])
-
- def children(element):
- return [c for c in element.childNodes
- if c.nodeType == Node.ELEMENT_NODE]
-
- def norm_child_text(element):
- return norm_whitespace(child_text(element))
-
- def attrs_dict(element):
- return dict(element.attributes.items())
-
- def check_element(want_element, got_element):
- if want_element.tagName != got_element.tagName:
- return False
- if norm_child_text(want_element) != norm_child_text(got_element):
- return False
- if attrs_dict(want_element) != attrs_dict(got_element):
- return False
- want_children = children(want_element)
- got_children = children(got_element)
- if len(want_children) != len(got_children):
- return False
- for want, got in zip(want_children, got_children):
- if not check_element(want, got):
- return False
- return True
-
- def first_node(document):
- for node in document.childNodes:
- if node.nodeType != Node.COMMENT_NODE:
- return node
-
- want, got = strip_quotes(want, got)
- want = want.replace('\\n','\n')
- got = got.replace('\\n','\n')
-
- # If the string is not a complete xml document, we may need to add a
- # root element. This allow us to compare fragments, like "<foo/><bar/>"
- if not want.startswith('<?xml'):
- wrapper = '<root>%s</root>'
- want = wrapper % want
- got = wrapper % got
-
- # Parse the want and got strings, and compare the parsings.
- want_root = first_node(parseString(want))
- got_root = first_node(parseString(got))
-
- return check_element(want_root, got_root)
-
-
-def strip_quotes(want, got):
- """
- Strip quotes of doctests output values:
-
- >>> strip_quotes("'foo'")
- "foo"
- >>> strip_quotes('"foo"')
- "foo"
- """
- def is_quoted_string(s):
- s = s.strip()
- return (len(s) >= 2
- and s[0] == s[-1]
- and s[0] in ('"', "'"))
-
- def is_quoted_unicode(s):
- s = s.strip()
- return (len(s) >= 3
- and s[0] == 'u'
- and s[1] == s[-1]
- and s[1] in ('"', "'"))
-
- if is_quoted_string(want) and is_quoted_string(got):
- want = want.strip()[1:-1]
- got = got.strip()[1:-1]
- elif is_quoted_unicode(want) and is_quoted_unicode(got):
- want = want.strip()[2:-1]
- got = got.strip()[2:-1]
- return want, got
-
-
-def str_prefix(s):
- return s % {'_': '' if six.PY3 else 'u'}
-
-
-class CaptureQueriesContext(object):
- """
- Context manager that captures queries executed by the specified connection.
- """
- def __init__(self, connection):
- self.connection = connection
-
- def __iter__(self):
- return iter(self.captured_queries)
-
- def __getitem__(self, index):
- return self.captured_queries[index]
-
- def __len__(self):
- return len(self.captured_queries)
-
- @property
- def captured_queries(self):
- return self.connection.queries[self.initial_queries:self.final_queries]
-
- def __enter__(self):
- self.use_debug_cursor = self.connection.use_debug_cursor
- self.connection.use_debug_cursor = True
- self.initial_queries = len(self.connection.queries)
- self.final_queries = None
- request_started.disconnect(reset_queries)
- return self
-
- def __exit__(self, exc_type, exc_value, traceback):
- self.connection.use_debug_cursor = self.use_debug_cursor
- request_started.connect(reset_queries)
- if exc_type is not None:
- return
- self.final_queries = len(self.connection.queries)
-
-
-class IgnoreDeprecationWarningsMixin(object):
-
- warning_class = DeprecationWarning
-
- def setUp(self):
- super(IgnoreDeprecationWarningsMixin, self).setUp()
- self.catch_warnings = warnings.catch_warnings()
- self.catch_warnings.__enter__()
- warnings.filterwarnings("ignore", category=self.warning_class)
-
- def tearDown(self):
- self.catch_warnings.__exit__(*sys.exc_info())
- super(IgnoreDeprecationWarningsMixin, self).tearDown()
-
-
-class IgnorePendingDeprecationWarningsMixin(IgnoreDeprecationWarningsMixin):
-
- warning_class = PendingDeprecationWarning
-
-
-@contextmanager
-def patch_logger(logger_name, log_level):
- """
- Context manager that takes a named logger and the logging level
- and provides a simple mock-like list of messages received
- """
- calls = []
- def replacement(msg):
- calls.append(msg)
- logger = logging.getLogger(logger_name)
- orig = getattr(logger, log_level)
- setattr(logger, log_level, replacement)
- try:
- yield calls
- finally:
- setattr(logger, log_level, orig)
-
-
-class TransRealMixin(object):
- """This is the only way to reset the translation machinery. Otherwise
- the test suite occasionally fails because of global state pollution
- between tests."""
- def flush_caches(self):
- from django.utils.translation import trans_real
- trans_real._translations = {}
- trans_real._active = local()
- trans_real._default = None
- trans_real._accepted = {}
- trans_real._checked_languages = {}
-
- def tearDown(self):
- self.flush_caches()
- super(TransRealMixin, self).tearDown()
-
-
-# On OSes that don't provide tzset (Windows), we can't set the timezone
-# in which the program runs. As a consequence, we must skip tests that
-# don't enforce a specific timezone (with timezone.override or equivalent),
-# or attempt to interpret naive datetimes in the default timezone.
-
-requires_tz_support = skipUnless(TZ_SUPPORT,
- "This test relies on the ability to run a program in an arbitrary "
- "time zone, but your operating system isn't able to do that.")
diff --git a/lib/python2.7/site-packages/django/utils/2to3_fixes/__init__.py b/lib/python2.7/site-packages/django/utils/2to3_fixes/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/utils/2to3_fixes/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/utils/2to3_fixes/fix_unicode.py b/lib/python2.7/site-packages/django/utils/2to3_fixes/fix_unicode.py
deleted file mode 100644
index 613734c..0000000
--- a/lib/python2.7/site-packages/django/utils/2to3_fixes/fix_unicode.py
+++ /dev/null
@@ -1,36 +0,0 @@
-"""Fixer for __unicode__ methods.
-
-Uses the django.utils.encoding.python_2_unicode_compatible decorator.
-"""
-
-from __future__ import unicode_literals
-
-from lib2to3 import fixer_base
-from lib2to3.fixer_util import find_indentation, Name, syms, touch_import
-from lib2to3.pgen2 import token
-from lib2to3.pytree import Leaf, Node
-
-
-class FixUnicode(fixer_base.BaseFix):
-
- BM_compatible = True
- PATTERN = """
- classdef< 'class' any+ ':'
- suite< any*
- funcdef< 'def' unifunc='__unicode__'
- parameters< '(' NAME ')' > any+ >
- any* > >
- """
-
- def transform(self, node, results):
- unifunc = results["unifunc"]
- strfunc = Name("__str__", prefix=unifunc.prefix)
- unifunc.replace(strfunc)
-
- klass = node.clone()
- klass.prefix = '\n' + find_indentation(node)
- decorator = Node(syms.decorator, [Leaf(token.AT, "@"), Name('python_2_unicode_compatible')])
- decorated = Node(syms.decorated, [decorator, klass], prefix=node.prefix)
- node.replace(decorated)
-
- touch_import('django.utils.encoding', 'python_2_unicode_compatible', decorated)
diff --git a/lib/python2.7/site-packages/django/utils/__init__.py b/lib/python2.7/site-packages/django/utils/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/utils/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/utils/_os.py b/lib/python2.7/site-packages/django/utils/_os.py
deleted file mode 100644
index 3e60c10..0000000
--- a/lib/python2.7/site-packages/django/utils/_os.py
+++ /dev/null
@@ -1,98 +0,0 @@
-import os
-import stat
-import sys
-from os.path import join, normcase, normpath, abspath, isabs, sep, dirname
-
-from django.utils.encoding import force_text
-from django.utils import six
-
-try:
- WindowsError = WindowsError
-except NameError:
- class WindowsError(Exception):
- pass
-
-if six.PY2:
- fs_encoding = sys.getfilesystemencoding() or sys.getdefaultencoding()
-
-
-# Under Python 2, define our own abspath function that can handle joining
-# unicode paths to a current working directory that has non-ASCII characters
-# in it. This isn't necessary on Windows since the Windows version of abspath
-# handles this correctly. It also handles drive letters differently than the
-# pure Python implementation, so it's best not to replace it.
-if six.PY3 or os.name == 'nt':
- abspathu = abspath
-else:
- def abspathu(path):
- """
- Version of os.path.abspath that uses the unicode representation
- of the current working directory, thus avoiding a UnicodeDecodeError
- in join when the cwd has non-ASCII characters.
- """
- if not isabs(path):
- path = join(os.getcwdu(), path)
- return normpath(path)
-
-def upath(path):
- """
- Always return a unicode path.
- """
- if six.PY2 and not isinstance(path, six.text_type):
- return path.decode(fs_encoding)
- return path
-
-def npath(path):
- """
- Always return a native path, that is unicode on Python 3 and bytestring on
- Python 2.
- """
- if six.PY2 and not isinstance(path, bytes):
- return path.encode(fs_encoding)
- return path
-
-def safe_join(base, *paths):
- """
- Joins one or more path components to the base path component intelligently.
- Returns a normalized, absolute version of the final path.
-
- The final path must be located inside of the base path component (otherwise
- a ValueError is raised).
- """
- base = force_text(base)
- paths = [force_text(p) for p in paths]
- final_path = abspathu(join(base, *paths))
- base_path = abspathu(base)
- # Ensure final_path starts with base_path (using normcase to ensure we
- # don't false-negative on case insensitive operating systems like Windows),
- # further, one of the following conditions must be true:
- # a) The next character is the path separator (to prevent conditions like
- # safe_join("/dir", "/../d"))
- # b) The final path must be the same as the base path.
- # c) The base path must be the most root path (meaning either "/" or "C:\\")
- if (not normcase(final_path).startswith(normcase(base_path + sep)) and
- normcase(final_path) != normcase(base_path) and
- dirname(normcase(base_path)) != normcase(base_path)):
- raise ValueError('The joined path (%s) is located outside of the base '
- 'path component (%s)' % (final_path, base_path))
- return final_path
-
-
-def rmtree_errorhandler(func, path, exc_info):
- """
- On Windows, some files are read-only (e.g. in in .svn dirs), so when
- rmtree() tries to remove them, an exception is thrown.
- We catch that here, remove the read-only attribute, and hopefully
- continue without problems.
- """
- exctype, value = exc_info[:2]
- # looking for a windows error
- if exctype is not WindowsError or 'Access is denied' not in str(value):
- raise
- # file type should currently be read only
- if ((os.stat(path).st_mode & stat.S_IREAD) != stat.S_IREAD):
- raise
- # convert to read/write
- os.chmod(path, stat.S_IWRITE)
- # use the original function to repeat the operation
- func(path)
diff --git a/lib/python2.7/site-packages/django/utils/archive.py b/lib/python2.7/site-packages/django/utils/archive.py
deleted file mode 100644
index 0faf1fa..0000000
--- a/lib/python2.7/site-packages/django/utils/archive.py
+++ /dev/null
@@ -1,215 +0,0 @@
-"""
-Based on "python-archive" -- http://pypi.python.org/pypi/python-archive/
-
-Copyright (c) 2010 Gary Wilson Jr. <gary.wilson@gmail.com> and contributors.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-"""
-import os
-import shutil
-import tarfile
-import zipfile
-
-from django.utils import six
-
-
-class ArchiveException(Exception):
- """
- Base exception class for all archive errors.
- """
-
-
-class UnrecognizedArchiveFormat(ArchiveException):
- """
- Error raised when passed file is not a recognized archive format.
- """
-
-
-def extract(path, to_path=''):
- """
- Unpack the tar or zip file at the specified path to the directory
- specified by to_path.
- """
- with Archive(path) as archive:
- archive.extract(to_path)
-
-
-class Archive(object):
- """
- The external API class that encapsulates an archive implementation.
- """
- def __init__(self, file):
- self._archive = self._archive_cls(file)(file)
-
- @staticmethod
- def _archive_cls(file):
- cls = None
- if isinstance(file, six.string_types):
- filename = file
- else:
- try:
- filename = file.name
- except AttributeError:
- raise UnrecognizedArchiveFormat(
- "File object not a recognized archive format.")
- base, tail_ext = os.path.splitext(filename.lower())
- cls = extension_map.get(tail_ext)
- if not cls:
- base, ext = os.path.splitext(base)
- cls = extension_map.get(ext)
- if not cls:
- raise UnrecognizedArchiveFormat(
- "Path not a recognized archive format: %s" % filename)
- return cls
-
- def __enter__(self):
- return self
-
- def __exit__(self, exc_type, exc_value, traceback):
- self.close()
-
- def extract(self, to_path=''):
- self._archive.extract(to_path)
-
- def list(self):
- self._archive.list()
-
- def close(self):
- self._archive.close()
-
-
-class BaseArchive(object):
- """
- Base Archive class. Implementations should inherit this class.
- """
- def split_leading_dir(self, path):
- path = str(path)
- path = path.lstrip('/').lstrip('\\')
- if '/' in path and (('\\' in path and path.find('/') < path.find('\\'))
- or '\\' not in path):
- return path.split('/', 1)
- elif '\\' in path:
- return path.split('\\', 1)
- else:
- return path, ''
-
- def has_leading_dir(self, paths):
- """
- Returns true if all the paths have the same leading path name
- (i.e., everything is in one subdirectory in an archive)
- """
- common_prefix = None
- for path in paths:
- prefix, rest = self.split_leading_dir(path)
- if not prefix:
- return False
- elif common_prefix is None:
- common_prefix = prefix
- elif prefix != common_prefix:
- return False
- return True
-
- def extract(self):
- raise NotImplementedError
-
- def list(self):
- raise NotImplementedError
-
-
-class TarArchive(BaseArchive):
-
- def __init__(self, file):
- self._archive = tarfile.open(file)
-
- def list(self, *args, **kwargs):
- self._archive.list(*args, **kwargs)
-
- def extract(self, to_path):
- # note: python<=2.5 doesnt seem to know about pax headers, filter them
- members = [member for member in self._archive.getmembers()
- if member.name != 'pax_global_header']
- leading = self.has_leading_dir(members)
- for member in members:
- name = member.name
- if leading:
- name = self.split_leading_dir(name)[1]
- filename = os.path.join(to_path, name)
- if member.isdir():
- if filename and not os.path.exists(filename):
- os.makedirs(filename)
- else:
- try:
- extracted = self._archive.extractfile(member)
- except (KeyError, AttributeError) as exc:
- # Some corrupt tar files seem to produce this
- # (specifically bad symlinks)
- print("In the tar file %s the member %s is invalid: %s" %
- (name, member.name, exc))
- else:
- dirname = os.path.dirname(filename)
- if dirname and not os.path.exists(dirname):
- os.makedirs(dirname)
- with open(filename, 'wb') as outfile:
- shutil.copyfileobj(extracted, outfile)
- finally:
- if extracted:
- extracted.close()
-
- def close(self):
- self._archive.close()
-
-
-class ZipArchive(BaseArchive):
-
- def __init__(self, file):
- self._archive = zipfile.ZipFile(file)
-
- def list(self, *args, **kwargs):
- self._archive.printdir(*args, **kwargs)
-
- def extract(self, to_path):
- namelist = self._archive.namelist()
- leading = self.has_leading_dir(namelist)
- for name in namelist:
- data = self._archive.read(name)
- if leading:
- name = self.split_leading_dir(name)[1]
- filename = os.path.join(to_path, name)
- dirname = os.path.dirname(filename)
- if dirname and not os.path.exists(dirname):
- os.makedirs(dirname)
- if filename.endswith(('/', '\\')):
- # A directory
- if not os.path.exists(filename):
- os.makedirs(filename)
- else:
- with open(filename, 'wb') as outfile:
- outfile.write(data)
-
- def close(self):
- self._archive.close()
-
-extension_map = {
- '.tar': TarArchive,
- '.tar.bz2': TarArchive,
- '.tar.gz': TarArchive,
- '.tgz': TarArchive,
- '.tz2': TarArchive,
- '.zip': ZipArchive,
-}
diff --git a/lib/python2.7/site-packages/django/utils/autoreload.py b/lib/python2.7/site-packages/django/utils/autoreload.py
deleted file mode 100644
index 6de15a2..0000000
--- a/lib/python2.7/site-packages/django/utils/autoreload.py
+++ /dev/null
@@ -1,182 +0,0 @@
-# Autoreloading launcher.
-# Borrowed from Peter Hunt and the CherryPy project (http://www.cherrypy.org).
-# Some taken from Ian Bicking's Paste (http://pythonpaste.org/).
-#
-# Portions copyright (c) 2004, CherryPy Team (team@cherrypy.org)
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without modification,
-# are permitted provided that the following conditions are met:
-#
-# * Redistributions of source code must retain the above copyright notice,
-# this list of conditions and the following disclaimer.
-# * 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.
-# * Neither the name of the CherryPy Team 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.
-
-import os, sys, time, signal, traceback
-
-try:
- from django.utils.six.moves import _thread as thread
-except ImportError:
- from django.utils.six.moves import _dummy_thread as thread
-
-# This import does nothing, but it's necessary to avoid some race conditions
-# in the threading module. See http://code.djangoproject.com/ticket/2330 .
-try:
- import threading
-except ImportError:
- pass
-
-try:
- import termios
-except ImportError:
- termios = None
-
-RUN_RELOADER = True
-
-_mtimes = {}
-_win = (sys.platform == "win32")
-
-_error_files = []
-
-def code_changed():
- global _mtimes, _win
- filenames = []
- for m in list(sys.modules.values()):
- try:
- filenames.append(m.__file__)
- except AttributeError:
- pass
- for filename in filenames + _error_files:
- if not filename:
- continue
- if filename.endswith(".pyc") or filename.endswith(".pyo"):
- filename = filename[:-1]
- if filename.endswith("$py.class"):
- filename = filename[:-9] + ".py"
- if not os.path.exists(filename):
- continue # File might be in an egg, so it can't be reloaded.
- stat = os.stat(filename)
- mtime = stat.st_mtime
- if _win:
- mtime -= stat.st_ctime
- if filename not in _mtimes:
- _mtimes[filename] = mtime
- continue
- if mtime != _mtimes[filename]:
- _mtimes = {}
- try:
- del _error_files[_error_files.index(filename)]
- except ValueError:
- pass
- return True
- return False
-
-def check_errors(fn):
- def wrapper(*args, **kwargs):
- try:
- fn(*args, **kwargs)
- except (ImportError, IndentationError, NameError, SyntaxError,
- TypeError, AttributeError):
- et, ev, tb = sys.exc_info()
-
- if getattr(ev, 'filename', None) is None:
- # get the filename from the last item in the stack
- filename = traceback.extract_tb(tb)[-1][0]
- else:
- filename = ev.filename
-
- if filename not in _error_files:
- _error_files.append(filename)
-
- raise
-
- return wrapper
-
-def ensure_echo_on():
- if termios:
- fd = sys.stdin
- if fd.isatty():
- attr_list = termios.tcgetattr(fd)
- if not attr_list[3] & termios.ECHO:
- attr_list[3] |= termios.ECHO
- if hasattr(signal, 'SIGTTOU'):
- old_handler = signal.signal(signal.SIGTTOU, signal.SIG_IGN)
- else:
- old_handler = None
- termios.tcsetattr(fd, termios.TCSANOW, attr_list)
- if old_handler is not None:
- signal.signal(signal.SIGTTOU, old_handler)
-
-def reloader_thread():
- ensure_echo_on()
- while RUN_RELOADER:
- if code_changed():
- sys.exit(3) # force reload
- time.sleep(1)
-
-def restart_with_reloader():
- while True:
- args = [sys.executable] + ['-W%s' % o for o in sys.warnoptions] + sys.argv
- if sys.platform == "win32":
- args = ['"%s"' % arg for arg in args]
- new_environ = os.environ.copy()
- new_environ["RUN_MAIN"] = 'true'
- exit_code = os.spawnve(os.P_WAIT, sys.executable, args, new_environ)
- if exit_code != 3:
- return exit_code
-
-def python_reloader(main_func, args, kwargs):
- if os.environ.get("RUN_MAIN") == "true":
- thread.start_new_thread(main_func, args, kwargs)
- try:
- reloader_thread()
- except KeyboardInterrupt:
- pass
- else:
- try:
- exit_code = restart_with_reloader()
- if exit_code < 0:
- os.kill(os.getpid(), -exit_code)
- else:
- sys.exit(exit_code)
- except KeyboardInterrupt:
- pass
-
-def jython_reloader(main_func, args, kwargs):
- from _systemrestart import SystemRestart
- thread.start_new_thread(main_func, args)
- while True:
- if code_changed():
- raise SystemRestart
- time.sleep(1)
-
-
-def main(main_func, args=None, kwargs=None):
- if args is None:
- args = ()
- if kwargs is None:
- kwargs = {}
- if sys.platform.startswith('java'):
- reloader = jython_reloader
- else:
- reloader = python_reloader
-
- wrapped_main_func = check_errors(main_func)
- reloader(wrapped_main_func, args, kwargs)
-
diff --git a/lib/python2.7/site-packages/django/utils/baseconv.py b/lib/python2.7/site-packages/django/utils/baseconv.py
deleted file mode 100644
index 053ce3e..0000000
--- a/lib/python2.7/site-packages/django/utils/baseconv.py
+++ /dev/null
@@ -1,99 +0,0 @@
-# Copyright (c) 2010 Guilherme Gondim. All rights reserved.
-# Copyright (c) 2009 Simon Willison. All rights reserved.
-# Copyright (c) 2002 Drew Perttula. All rights reserved.
-#
-# License:
-# Python Software Foundation License version 2
-#
-# See the file "LICENSE" for terms & conditions for usage, and a DISCLAIMER OF
-# ALL WARRANTIES.
-#
-# This Baseconv distribution contains no GNU General Public Licensed (GPLed)
-# code so it may be used in proprietary projects just like prior ``baseconv``
-# distributions.
-#
-# All trademarks referenced herein are property of their respective holders.
-#
-
-"""
-Convert numbers from base 10 integers to base X strings and back again.
-
-Sample usage::
-
- >>> base20 = BaseConverter('0123456789abcdefghij')
- >>> base20.encode(1234)
- '31e'
- >>> base20.decode('31e')
- 1234
- >>> base20.encode(-1234)
- '-31e'
- >>> base20.decode('-31e')
- -1234
- >>> base11 = BaseConverter('0123456789-', sign='$')
- >>> base11.encode('$1234')
- '$-22'
- >>> base11.decode('$-22')
- '$1234'
-
-"""
-
-BASE2_ALPHABET = '01'
-BASE16_ALPHABET = '0123456789ABCDEF'
-BASE56_ALPHABET = '23456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz'
-BASE36_ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz'
-BASE62_ALPHABET = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
-BASE64_ALPHABET = BASE62_ALPHABET + '-_'
-
-class BaseConverter(object):
- decimal_digits = '0123456789'
-
- def __init__(self, digits, sign='-'):
- self.sign = sign
- self.digits = digits
- if sign in self.digits:
- raise ValueError('Sign character found in converter base digits.')
-
- def __repr__(self):
- return "<BaseConverter: base%s (%s)>" % (len(self.digits), self.digits)
-
- def encode(self, i):
- neg, value = self.convert(i, self.decimal_digits, self.digits, '-')
- if neg:
- return self.sign + value
- return value
-
- def decode(self, s):
- neg, value = self.convert(s, self.digits, self.decimal_digits, self.sign)
- if neg:
- value = '-' + value
- return int(value)
-
- def convert(self, number, from_digits, to_digits, sign):
- if str(number)[0] == sign:
- number = str(number)[1:]
- neg = 1
- else:
- neg = 0
-
- # make an integer out of the number
- x = 0
- for digit in str(number):
- x = x * len(from_digits) + from_digits.index(digit)
-
- # create the result in base 'len(to_digits)'
- if x == 0:
- res = to_digits[0]
- else:
- res = ''
- while x > 0:
- digit = x % len(to_digits)
- res = to_digits[digit] + res
- x = int(x // len(to_digits))
- return neg, res
-
-base2 = BaseConverter(BASE2_ALPHABET)
-base16 = BaseConverter(BASE16_ALPHABET)
-base36 = BaseConverter(BASE36_ALPHABET)
-base56 = BaseConverter(BASE56_ALPHABET)
-base62 = BaseConverter(BASE62_ALPHABET)
-base64 = BaseConverter(BASE64_ALPHABET, sign='$')
diff --git a/lib/python2.7/site-packages/django/utils/cache.py b/lib/python2.7/site-packages/django/utils/cache.py
deleted file mode 100644
index 1c8587d..0000000
--- a/lib/python2.7/site-packages/django/utils/cache.py
+++ /dev/null
@@ -1,264 +0,0 @@
-"""
-This module contains helper functions for controlling caching. It does so by
-managing the "Vary" header of responses. It includes functions to patch the
-header of response objects directly and decorators that change functions to do
-that header-patching themselves.
-
-For information on the Vary header, see:
-
- http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.44
-
-Essentially, the "Vary" HTTP header defines which headers a cache should take
-into account when building its cache key. Requests with the same path but
-different header content for headers named in "Vary" need to get different
-cache keys to prevent delivery of wrong content.
-
-An example: i18n middleware would need to distinguish caches by the
-"Accept-language" header.
-"""
-from __future__ import unicode_literals
-
-import hashlib
-import re
-import time
-
-from django.conf import settings
-from django.core.cache import get_cache
-from django.utils.encoding import iri_to_uri, force_bytes, force_text
-from django.utils.http import http_date
-from django.utils.timezone import get_current_timezone_name
-from django.utils.translation import get_language
-
-cc_delim_re = re.compile(r'\s*,\s*')
-
-def patch_cache_control(response, **kwargs):
- """
- This function patches the Cache-Control header by adding all
- keyword arguments to it. The transformation is as follows:
-
- * All keyword parameter names are turned to lowercase, and underscores
- are converted to hyphens.
- * If the value of a parameter is True (exactly True, not just a
- true value), only the parameter name is added to the header.
- * All other parameters are added with their value, after applying
- str() to it.
- """
- def dictitem(s):
- t = s.split('=', 1)
- if len(t) > 1:
- return (t[0].lower(), t[1])
- else:
- return (t[0].lower(), True)
-
- def dictvalue(t):
- if t[1] is True:
- return t[0]
- else:
- return '%s=%s' % (t[0], t[1])
-
- if response.has_header('Cache-Control'):
- cc = cc_delim_re.split(response['Cache-Control'])
- cc = dict([dictitem(el) for el in cc])
- else:
- cc = {}
-
- # If there's already a max-age header but we're being asked to set a new
- # max-age, use the minimum of the two ages. In practice this happens when
- # a decorator and a piece of middleware both operate on a given view.
- if 'max-age' in cc and 'max_age' in kwargs:
- kwargs['max_age'] = min(int(cc['max-age']), kwargs['max_age'])
-
- # Allow overriding private caching and vice versa
- if 'private' in cc and 'public' in kwargs:
- del cc['private']
- elif 'public' in cc and 'private' in kwargs:
- del cc['public']
-
- for (k, v) in kwargs.items():
- cc[k.replace('_', '-')] = v
- cc = ', '.join([dictvalue(el) for el in cc.items()])
- response['Cache-Control'] = cc
-
-def get_max_age(response):
- """
- Returns the max-age from the response Cache-Control header as an integer
- (or ``None`` if it wasn't found or wasn't an integer.
- """
- if not response.has_header('Cache-Control'):
- return
- cc = dict([_to_tuple(el) for el in
- cc_delim_re.split(response['Cache-Control'])])
- if 'max-age' in cc:
- try:
- return int(cc['max-age'])
- except (ValueError, TypeError):
- pass
-
-def _set_response_etag(response):
- if not response.streaming:
- response['ETag'] = '"%s"' % hashlib.md5(response.content).hexdigest()
- return response
-
-def patch_response_headers(response, cache_timeout=None):
- """
- Adds some useful headers to the given HttpResponse object:
- ETag, Last-Modified, Expires and Cache-Control
-
- Each header is only added if it isn't already set.
-
- cache_timeout is in seconds. The CACHE_MIDDLEWARE_SECONDS setting is used
- by default.
- """
- if cache_timeout is None:
- cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
- if cache_timeout < 0:
- cache_timeout = 0 # Can't have max-age negative
- if settings.USE_ETAGS and not response.has_header('ETag'):
- if hasattr(response, 'render') and callable(response.render):
- response.add_post_render_callback(_set_response_etag)
- else:
- response = _set_response_etag(response)
- if not response.has_header('Last-Modified'):
- response['Last-Modified'] = http_date()
- if not response.has_header('Expires'):
- response['Expires'] = http_date(time.time() + cache_timeout)
- patch_cache_control(response, max_age=cache_timeout)
-
-def add_never_cache_headers(response):
- """
- Adds headers to a response to indicate that a page should never be cached.
- """
- patch_response_headers(response, cache_timeout=-1)
-
-def patch_vary_headers(response, newheaders):
- """
- Adds (or updates) the "Vary" header in the given HttpResponse object.
- newheaders is a list of header names that should be in "Vary". Existing
- headers in "Vary" aren't removed.
- """
- # Note that we need to keep the original order intact, because cache
- # implementations may rely on the order of the Vary contents in, say,
- # computing an MD5 hash.
- if response.has_header('Vary'):
- vary_headers = cc_delim_re.split(response['Vary'])
- else:
- vary_headers = []
- # Use .lower() here so we treat headers as case-insensitive.
- existing_headers = set([header.lower() for header in vary_headers])
- additional_headers = [newheader for newheader in newheaders
- if newheader.lower() not in existing_headers]
- response['Vary'] = ', '.join(vary_headers + additional_headers)
-
-def has_vary_header(response, header_query):
- """
- Checks to see if the response has a given header name in its Vary header.
- """
- if not response.has_header('Vary'):
- return False
- vary_headers = cc_delim_re.split(response['Vary'])
- existing_headers = set([header.lower() for header in vary_headers])
- return header_query.lower() in existing_headers
-
-def _i18n_cache_key_suffix(request, cache_key):
- """If necessary, adds the current locale or time zone to the cache key."""
- if settings.USE_I18N or settings.USE_L10N:
- # first check if LocaleMiddleware or another middleware added
- # LANGUAGE_CODE to request, then fall back to the active language
- # which in turn can also fall back to settings.LANGUAGE_CODE
- cache_key += '.%s' % getattr(request, 'LANGUAGE_CODE', get_language())
- if settings.USE_TZ:
- # The datetime module doesn't restrict the output of tzname().
- # Windows is known to use non-standard, locale-dependent names.
- # User-defined tzinfo classes may return absolutely anything.
- # Hence this paranoid conversion to create a valid cache key.
- tz_name = force_text(get_current_timezone_name(), errors='ignore')
- cache_key += '.%s' % tz_name.encode('ascii', 'ignore').decode('ascii').replace(' ', '_')
- return cache_key
-
-def _generate_cache_key(request, method, headerlist, key_prefix):
- """Returns a cache key from the headers given in the header list."""
- ctx = hashlib.md5()
- for header in headerlist:
- value = request.META.get(header, None)
- if value is not None:
- ctx.update(force_bytes(value))
- path = hashlib.md5(force_bytes(iri_to_uri(request.get_full_path())))
- cache_key = 'views.decorators.cache.cache_page.%s.%s.%s.%s' % (
- key_prefix, method, path.hexdigest(), ctx.hexdigest())
- return _i18n_cache_key_suffix(request, cache_key)
-
-def _generate_cache_header_key(key_prefix, request):
- """Returns a cache key for the header cache."""
- path = hashlib.md5(force_bytes(iri_to_uri(request.get_full_path())))
- cache_key = 'views.decorators.cache.cache_header.%s.%s' % (
- key_prefix, path.hexdigest())
- return _i18n_cache_key_suffix(request, cache_key)
-
-def get_cache_key(request, key_prefix=None, method='GET', cache=None):
- """
- Returns a cache key based on the request path and query. It can be used
- in the request phase because it pulls the list of headers to take into
- account from the global path registry and uses those to build a cache key
- to check against.
-
- If there is no headerlist stored, the page needs to be rebuilt, so this
- function returns None.
- """
- if key_prefix is None:
- key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
- cache_key = _generate_cache_header_key(key_prefix, request)
- if cache is None:
- cache = get_cache(settings.CACHE_MIDDLEWARE_ALIAS)
- headerlist = cache.get(cache_key, None)
- if headerlist is not None:
- return _generate_cache_key(request, method, headerlist, key_prefix)
- else:
- return None
-
-def learn_cache_key(request, response, cache_timeout=None, key_prefix=None, cache=None):
- """
- Learns what headers to take into account for some request path from the
- response object. It stores those headers in a global path registry so that
- later access to that path will know what headers to take into account
- without building the response object itself. The headers are named in the
- Vary header of the response, but we want to prevent response generation.
-
- The list of headers to use for cache key generation is stored in the same
- cache as the pages themselves. If the cache ages some data out of the
- cache, this just means that we have to build the response once to get at
- the Vary header and so at the list of headers to use for the cache key.
- """
- if key_prefix is None:
- key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
- if cache_timeout is None:
- cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
- cache_key = _generate_cache_header_key(key_prefix, request)
- if cache is None:
- cache = get_cache(settings.CACHE_MIDDLEWARE_ALIAS)
- if response.has_header('Vary'):
- is_accept_language_redundant = settings.USE_I18N or settings.USE_L10N
- # If i18n or l10n are used, the generated cache key will be suffixed
- # with the current locale. Adding the raw value of Accept-Language is
- # redundant in that case and would result in storing the same content
- # under multiple keys in the cache. See #18191 for details.
- headerlist = []
- for header in cc_delim_re.split(response['Vary']):
- header = header.upper().replace('-', '_')
- if header == 'ACCEPT_LANGUAGE' and is_accept_language_redundant:
- continue
- headerlist.append('HTTP_' + header)
- headerlist.sort()
- cache.set(cache_key, headerlist, cache_timeout)
- return _generate_cache_key(request, request.method, headerlist, key_prefix)
- else:
- # if there is no Vary header, we still need a cache key
- # for the request.get_full_path()
- cache.set(cache_key, [], cache_timeout)
- return _generate_cache_key(request, request.method, [], key_prefix)
-
-
-def _to_tuple(s):
- t = s.split('=',1)
- if len(t) == 2:
- return t[0].lower(), t[1]
- return t[0].lower(), True
diff --git a/lib/python2.7/site-packages/django/utils/checksums.py b/lib/python2.7/site-packages/django/utils/checksums.py
deleted file mode 100644
index 8617e22..0000000
--- a/lib/python2.7/site-packages/django/utils/checksums.py
+++ /dev/null
@@ -1,24 +0,0 @@
-"""
-Common checksum routines.
-"""
-
-__all__ = ['luhn',]
-
-from django.utils import six
-
-LUHN_ODD_LOOKUP = (0, 2, 4, 6, 8, 1, 3, 5, 7, 9) # sum_of_digits(index * 2)
-
-def luhn(candidate):
- """
- Checks a candidate number for validity according to the Luhn
- algorithm (used in validation of, for example, credit cards).
- Both numeric and string candidates are accepted.
- """
- if not isinstance(candidate, six.string_types):
- candidate = str(candidate)
- try:
- evens = sum([int(c) for c in candidate[-1::-2]])
- odds = sum([LUHN_ODD_LOOKUP[int(c)] for c in candidate[-2::-2]])
- return ((evens + odds) % 10 == 0)
- except ValueError: # Raised if an int conversion fails
- return False
diff --git a/lib/python2.7/site-packages/django/utils/crypto.py b/lib/python2.7/site-packages/django/utils/crypto.py
deleted file mode 100644
index 6463709..0000000
--- a/lib/python2.7/site-packages/django/utils/crypto.py
+++ /dev/null
@@ -1,166 +0,0 @@
-"""
-Django's standard crypto functions and utilities.
-"""
-from __future__ import unicode_literals
-
-import hmac
-import struct
-import hashlib
-import binascii
-import operator
-import time
-from functools import reduce
-
-# Use the system PRNG if possible
-import random
-try:
- random = random.SystemRandom()
- using_sysrandom = True
-except NotImplementedError:
- import warnings
- warnings.warn('A secure pseudo-random number generator is not available '
- 'on your system. Falling back to Mersenne Twister.')
- using_sysrandom = False
-
-from django.conf import settings
-from django.utils.encoding import force_bytes
-from django.utils import six
-from django.utils.six.moves import xrange
-
-
-def salted_hmac(key_salt, value, secret=None):
- """
- Returns the HMAC-SHA1 of 'value', using a key generated from key_salt and a
- secret (which defaults to settings.SECRET_KEY).
-
- A different key_salt should be passed in for every application of HMAC.
- """
- if secret is None:
- secret = settings.SECRET_KEY
-
- # We need to generate a derived key from our base key. We can do this by
- # passing the key_salt and our base key through a pseudo-random function and
- # SHA1 works nicely.
- key = hashlib.sha1((key_salt + secret).encode('utf-8')).digest()
-
- # If len(key_salt + secret) > sha_constructor().block_size, the above
- # line is redundant and could be replaced by key = key_salt + secret, since
- # the hmac module does the same thing for keys longer than the block size.
- # However, we need to ensure that we *always* do this.
- return hmac.new(key, msg=force_bytes(value), digestmod=hashlib.sha1)
-
-
-def get_random_string(length=12,
- allowed_chars='abcdefghijklmnopqrstuvwxyz'
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'):
- """
- Returns a securely generated random string.
-
- The default length of 12 with the a-z, A-Z, 0-9 character set returns
- a 71-bit value. log_2((26+26+10)^12) =~ 71 bits
- """
- if not using_sysrandom:
- # This is ugly, and a hack, but it makes things better than
- # the alternative of predictability. This re-seeds the PRNG
- # using a value that is hard for an attacker to predict, every
- # time a random string is required. This may change the
- # properties of the chosen random sequence slightly, but this
- # is better than absolute predictability.
- random.seed(
- hashlib.sha256(
- ("%s%s%s" % (
- random.getstate(),
- time.time(),
- settings.SECRET_KEY)).encode('utf-8')
- ).digest())
- return ''.join([random.choice(allowed_chars) for i in range(length)])
-
-
-def constant_time_compare(val1, val2):
- """
- Returns True if the two strings are equal, False otherwise.
-
- The time taken is independent of the number of characters that match.
-
- For the sake of simplicity, this function executes in constant time only
- when the two strings have the same length. It short-circuits when they
- have different lengths. Since Django only uses it to compare hashes of
- known expected length, this is acceptable.
- """
- if len(val1) != len(val2):
- return False
- result = 0
- if six.PY3 and isinstance(val1, bytes) and isinstance(val2, bytes):
- for x, y in zip(val1, val2):
- result |= x ^ y
- else:
- for x, y in zip(val1, val2):
- result |= ord(x) ^ ord(y)
- return result == 0
-
-
-def _bin_to_long(x):
- """
- Convert a binary string into a long integer
-
- This is a clever optimization for fast xor vector math
- """
- return int(binascii.hexlify(x), 16)
-
-
-def _long_to_bin(x, hex_format_string):
- """
- Convert a long integer into a binary string.
- hex_format_string is like "%020x" for padding 10 characters.
- """
- return binascii.unhexlify((hex_format_string % x).encode('ascii'))
-
-
-def pbkdf2(password, salt, iterations, dklen=0, digest=None):
- """
- Implements PBKDF2 as defined in RFC 2898, section 5.2
-
- HMAC+SHA256 is used as the default pseudo random function.
-
- As of 2011, 10,000 iterations was the recommended default which
- took 100ms on a 2.2Ghz Core 2 Duo. This is probably the bare
- minimum for security given 1000 iterations was recommended in
- 2001. This code is very well optimized for CPython and is only
- four times slower than openssl's implementation. Look in
- django.contrib.auth.hashers for the present default.
- """
- assert iterations > 0
- if not digest:
- digest = hashlib.sha256
- password = force_bytes(password)
- salt = force_bytes(salt)
- hlen = digest().digest_size
- if not dklen:
- dklen = hlen
- if dklen > (2 ** 32 - 1) * hlen:
- raise OverflowError('dklen too big')
- l = -(-dklen // hlen)
- r = dklen - (l - 1) * hlen
-
- hex_format_string = "%%0%ix" % (hlen * 2)
-
- inner, outer = digest(), digest()
- if len(password) > inner.block_size:
- password = digest(password).digest()
- password += b'\x00' * (inner.block_size - len(password))
- inner.update(password.translate(hmac.trans_36))
- outer.update(password.translate(hmac.trans_5C))
-
- def F(i):
- def U():
- u = salt + struct.pack(b'>I', i)
- for j in xrange(int(iterations)):
- dig1, dig2 = inner.copy(), outer.copy()
- dig1.update(u)
- dig2.update(dig1.digest())
- u = dig2.digest()
- yield _bin_to_long(u)
- return _long_to_bin(reduce(operator.xor, U()), hex_format_string)
-
- T = [F(x) for x in range(1, l + 1)]
- return b''.join(T[:-1]) + T[-1][:r]
diff --git a/lib/python2.7/site-packages/django/utils/daemonize.py b/lib/python2.7/site-packages/django/utils/daemonize.py
deleted file mode 100644
index 763a9db..0000000
--- a/lib/python2.7/site-packages/django/utils/daemonize.py
+++ /dev/null
@@ -1,58 +0,0 @@
-import os
-import sys
-
-if os.name == 'posix':
- def become_daemon(our_home_dir='.', out_log='/dev/null',
- err_log='/dev/null', umask=0o022):
- "Robustly turn into a UNIX daemon, running in our_home_dir."
- # First fork
- try:
- if os.fork() > 0:
- sys.exit(0) # kill off parent
- except OSError as e:
- sys.stderr.write("fork #1 failed: (%d) %s\n" % (e.errno, e.strerror))
- sys.exit(1)
- os.setsid()
- os.chdir(our_home_dir)
- os.umask(umask)
-
- # Second fork
- try:
- if os.fork() > 0:
- os._exit(0)
- except OSError as e:
- sys.stderr.write("fork #2 failed: (%d) %s\n" % (e.errno, e.strerror))
- os._exit(1)
-
- si = open('/dev/null', 'r')
- so = open(out_log, 'a+', 0)
- se = open(err_log, 'a+', 0)
- os.dup2(si.fileno(), sys.stdin.fileno())
- os.dup2(so.fileno(), sys.stdout.fileno())
- os.dup2(se.fileno(), sys.stderr.fileno())
- # Set custom file descriptors so that they get proper buffering.
- sys.stdout, sys.stderr = so, se
-else:
- def become_daemon(our_home_dir='.', out_log=None, err_log=None, umask=0o022):
- """
- If we're not running under a POSIX system, just simulate the daemon
- mode by doing redirections and directory changing.
- """
- os.chdir(our_home_dir)
- os.umask(umask)
- sys.stdin.close()
- sys.stdout.close()
- sys.stderr.close()
- if err_log:
- sys.stderr = open(err_log, 'a', 0)
- else:
- sys.stderr = NullDevice()
- if out_log:
- sys.stdout = open(out_log, 'a', 0)
- else:
- sys.stdout = NullDevice()
-
- class NullDevice:
- "A writeable object that writes to nowhere -- like /dev/null."
- def write(self, s):
- pass
diff --git a/lib/python2.7/site-packages/django/utils/datastructures.py b/lib/python2.7/site-packages/django/utils/datastructures.py
deleted file mode 100644
index f854933..0000000
--- a/lib/python2.7/site-packages/django/utils/datastructures.py
+++ /dev/null
@@ -1,524 +0,0 @@
-import copy
-import warnings
-from django.utils import six
-
-
-class MergeDict(object):
- """
- A simple class for creating new "virtual" dictionaries that actually look
- up values in more than one dictionary, passed in the constructor.
-
- If a key appears in more than one of the given dictionaries, only the
- first occurrence will be used.
- """
- def __init__(self, *dicts):
- self.dicts = dicts
-
- def __bool__(self):
- return any(self.dicts)
-
- def __nonzero__(self):
- return type(self).__bool__(self)
-
- def __getitem__(self, key):
- for dict_ in self.dicts:
- try:
- return dict_[key]
- except KeyError:
- pass
- raise KeyError(key)
-
- def __copy__(self):
- return self.__class__(*self.dicts)
-
- def get(self, key, default=None):
- try:
- return self[key]
- except KeyError:
- return default
-
- # This is used by MergeDicts of MultiValueDicts.
- def getlist(self, key):
- for dict_ in self.dicts:
- if key in dict_:
- return dict_.getlist(key)
- return []
-
- def _iteritems(self):
- seen = set()
- for dict_ in self.dicts:
- for item in six.iteritems(dict_):
- k = item[0]
- if k in seen:
- continue
- seen.add(k)
- yield item
-
- def _iterkeys(self):
- for k, v in self._iteritems():
- yield k
-
- def _itervalues(self):
- for k, v in self._iteritems():
- yield v
-
- if six.PY3:
- items = _iteritems
- keys = _iterkeys
- values = _itervalues
- else:
- iteritems = _iteritems
- iterkeys = _iterkeys
- itervalues = _itervalues
-
- def items(self):
- return list(self.iteritems())
-
- def keys(self):
- return list(self.iterkeys())
-
- def values(self):
- return list(self.itervalues())
-
- def has_key(self, key):
- for dict_ in self.dicts:
- if key in dict_:
- return True
- return False
-
- __contains__ = has_key
-
- __iter__ = _iterkeys
-
- def copy(self):
- """Returns a copy of this object."""
- return self.__copy__()
-
- def __str__(self):
- '''
- Returns something like
-
- "{'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}"
-
- instead of the generic "<object meta-data>" inherited from object.
- '''
- return str(dict(self.items()))
-
- def __repr__(self):
- '''
- Returns something like
-
- MergeDict({'key1': 'val1', 'key2': 'val2'}, {'key3': 'val3'})
-
- instead of generic "<object meta-data>" inherited from object.
- '''
- dictreprs = ', '.join(repr(d) for d in self.dicts)
- return '%s(%s)' % (self.__class__.__name__, dictreprs)
-
-class SortedDict(dict):
- """
- A dictionary that keeps its keys in the order in which they're inserted.
- """
- def __new__(cls, *args, **kwargs):
- instance = super(SortedDict, cls).__new__(cls, *args, **kwargs)
- instance.keyOrder = []
- return instance
-
- def __init__(self, data=None):
- if data is None or isinstance(data, dict):
- data = data or []
- super(SortedDict, self).__init__(data)
- self.keyOrder = list(data) if data else []
- else:
- super(SortedDict, self).__init__()
- super_set = super(SortedDict, self).__setitem__
- for key, value in data:
- # Take the ordering from first key
- if key not in self:
- self.keyOrder.append(key)
- # But override with last value in data (dict() does this)
- super_set(key, value)
-
- def __deepcopy__(self, memo):
- return self.__class__([(key, copy.deepcopy(value, memo))
- for key, value in self.items()])
-
- def __copy__(self):
- # The Python's default copy implementation will alter the state
- # of self. The reason for this seems complex but is likely related to
- # subclassing dict.
- return self.copy()
-
- def __setitem__(self, key, value):
- if key not in self:
- self.keyOrder.append(key)
- super(SortedDict, self).__setitem__(key, value)
-
- def __delitem__(self, key):
- super(SortedDict, self).__delitem__(key)
- self.keyOrder.remove(key)
-
- def __iter__(self):
- return iter(self.keyOrder)
-
- def __reversed__(self):
- return reversed(self.keyOrder)
-
- def pop(self, k, *args):
- result = super(SortedDict, self).pop(k, *args)
- try:
- self.keyOrder.remove(k)
- except ValueError:
- # Key wasn't in the dictionary in the first place. No problem.
- pass
- return result
-
- def popitem(self):
- result = super(SortedDict, self).popitem()
- self.keyOrder.remove(result[0])
- return result
-
- def _iteritems(self):
- for key in self.keyOrder:
- yield key, self[key]
-
- def _iterkeys(self):
- for key in self.keyOrder:
- yield key
-
- def _itervalues(self):
- for key in self.keyOrder:
- yield self[key]
-
- if six.PY3:
- items = _iteritems
- keys = _iterkeys
- values = _itervalues
- else:
- iteritems = _iteritems
- iterkeys = _iterkeys
- itervalues = _itervalues
-
- def items(self):
- return [(k, self[k]) for k in self.keyOrder]
-
- def keys(self):
- return self.keyOrder[:]
-
- def values(self):
- return [self[k] for k in self.keyOrder]
-
- def update(self, dict_):
- for k, v in six.iteritems(dict_):
- self[k] = v
-
- def setdefault(self, key, default):
- if key not in self:
- self.keyOrder.append(key)
- return super(SortedDict, self).setdefault(key, default)
-
- def value_for_index(self, index):
- """Returns the value of the item at the given zero-based index."""
- # This, and insert() are deprecated because they cannot be implemented
- # using collections.OrderedDict (Python 2.7 and up), which we'll
- # eventually switch to
- warnings.warn(
- "SortedDict.value_for_index is deprecated", DeprecationWarning,
- stacklevel=2
- )
- return self[self.keyOrder[index]]
-
- def insert(self, index, key, value):
- """Inserts the key, value pair before the item with the given index."""
- warnings.warn(
- "SortedDict.insert is deprecated", DeprecationWarning,
- stacklevel=2
- )
- if key in self.keyOrder:
- n = self.keyOrder.index(key)
- del self.keyOrder[n]
- if n < index:
- index -= 1
- self.keyOrder.insert(index, key)
- super(SortedDict, self).__setitem__(key, value)
-
- def copy(self):
- """Returns a copy of this object."""
- # This way of initializing the copy means it works for subclasses, too.
- return self.__class__(self)
-
- def __repr__(self):
- """
- Replaces the normal dict.__repr__ with a version that returns the keys
- in their sorted order.
- """
- return '{%s}' % ', '.join(['%r: %r' % (k, v) for k, v in six.iteritems(self)])
-
- def clear(self):
- super(SortedDict, self).clear()
- self.keyOrder = []
-
-class MultiValueDictKeyError(KeyError):
- pass
-
-class MultiValueDict(dict):
- """
- A subclass of dictionary customized to handle multiple values for the
- same key.
-
- >>> d = MultiValueDict({'name': ['Adrian', 'Simon'], 'position': ['Developer']})
- >>> d['name']
- 'Simon'
- >>> d.getlist('name')
- ['Adrian', 'Simon']
- >>> d.getlist('doesnotexist')
- []
- >>> d.getlist('doesnotexist', ['Adrian', 'Simon'])
- ['Adrian', 'Simon']
- >>> d.get('lastname', 'nonexistent')
- 'nonexistent'
- >>> d.setlist('lastname', ['Holovaty', 'Willison'])
-
- This class exists to solve the irritating problem raised by cgi.parse_qs,
- which returns a list for every key, even though most Web forms submit
- single name-value pairs.
- """
- def __init__(self, key_to_list_mapping=()):
- super(MultiValueDict, self).__init__(key_to_list_mapping)
-
- def __repr__(self):
- return "<%s: %s>" % (self.__class__.__name__,
- super(MultiValueDict, self).__repr__())
-
- def __getitem__(self, key):
- """
- Returns the last data value for this key, or [] if it's an empty list;
- raises KeyError if not found.
- """
- try:
- list_ = super(MultiValueDict, self).__getitem__(key)
- except KeyError:
- raise MultiValueDictKeyError(repr(key))
- try:
- return list_[-1]
- except IndexError:
- return []
-
- def __setitem__(self, key, value):
- super(MultiValueDict, self).__setitem__(key, [value])
-
- def __copy__(self):
- return self.__class__([
- (k, v[:])
- for k, v in self.lists()
- ])
-
- def __deepcopy__(self, memo=None):
- if memo is None:
- memo = {}
- result = self.__class__()
- memo[id(self)] = result
- for key, value in dict.items(self):
- dict.__setitem__(result, copy.deepcopy(key, memo),
- copy.deepcopy(value, memo))
- return result
-
- def __getstate__(self):
- obj_dict = self.__dict__.copy()
- obj_dict['_data'] = dict([(k, self.getlist(k)) for k in self])
- return obj_dict
-
- def __setstate__(self, obj_dict):
- data = obj_dict.pop('_data', {})
- for k, v in data.items():
- self.setlist(k, v)
- self.__dict__.update(obj_dict)
-
- def get(self, key, default=None):
- """
- Returns the last data value for the passed key. If key doesn't exist
- or value is an empty list, then default is returned.
- """
- try:
- val = self[key]
- except KeyError:
- return default
- if val == []:
- return default
- return val
-
- def getlist(self, key, default=None):
- """
- Returns the list of values for the passed key. If key doesn't exist,
- then a default value is returned.
- """
- try:
- return super(MultiValueDict, self).__getitem__(key)
- except KeyError:
- if default is None:
- return []
- return default
-
- def setlist(self, key, list_):
- super(MultiValueDict, self).__setitem__(key, list_)
-
- def setdefault(self, key, default=None):
- if key not in self:
- self[key] = default
- # Do not return default here because __setitem__() may store
- # another value -- QueryDict.__setitem__() does. Look it up.
- return self[key]
-
- def setlistdefault(self, key, default_list=None):
- if key not in self:
- if default_list is None:
- default_list = []
- self.setlist(key, default_list)
- # Do not return default_list here because setlist() may store
- # another value -- QueryDict.setlist() does. Look it up.
- return self.getlist(key)
-
- def appendlist(self, key, value):
- """Appends an item to the internal list associated with key."""
- self.setlistdefault(key).append(value)
-
- def _iteritems(self):
- """
- Yields (key, value) pairs, where value is the last item in the list
- associated with the key.
- """
- for key in self:
- yield key, self[key]
-
- def _iterlists(self):
- """Yields (key, list) pairs."""
- return six.iteritems(super(MultiValueDict, self))
-
- def _itervalues(self):
- """Yield the last value on every key list."""
- for key in self:
- yield self[key]
-
- if six.PY3:
- items = _iteritems
- lists = _iterlists
- values = _itervalues
- else:
- iteritems = _iteritems
- iterlists = _iterlists
- itervalues = _itervalues
-
- def items(self):
- return list(self.iteritems())
-
- def lists(self):
- return list(self.iterlists())
-
- def values(self):
- return list(self.itervalues())
-
- def copy(self):
- """Returns a shallow copy of this object."""
- return copy.copy(self)
-
- def update(self, *args, **kwargs):
- """
- update() extends rather than replaces existing key lists.
- Also accepts keyword args.
- """
- if len(args) > 1:
- raise TypeError("update expected at most 1 arguments, got %d" % len(args))
- if args:
- other_dict = args[0]
- if isinstance(other_dict, MultiValueDict):
- for key, value_list in other_dict.lists():
- self.setlistdefault(key).extend(value_list)
- else:
- try:
- for key, value in other_dict.items():
- self.setlistdefault(key).append(value)
- except TypeError:
- raise ValueError("MultiValueDict.update() takes either a MultiValueDict or dictionary")
- for key, value in six.iteritems(kwargs):
- self.setlistdefault(key).append(value)
-
- def dict(self):
- """
- Returns current object as a dict with singular values.
- """
- return dict((key, self[key]) for key in self)
-
-
-class ImmutableList(tuple):
- """
- A tuple-like object that raises useful errors when it is asked to mutate.
-
- Example::
-
- >>> a = ImmutableList(range(5), warning="You cannot mutate this.")
- >>> a[3] = '4'
- Traceback (most recent call last):
- ...
- AttributeError: You cannot mutate this.
- """
-
- def __new__(cls, *args, **kwargs):
- if 'warning' in kwargs:
- warning = kwargs['warning']
- del kwargs['warning']
- else:
- warning = 'ImmutableList object is immutable.'
- self = tuple.__new__(cls, *args, **kwargs)
- self.warning = warning
- return self
-
- def complain(self, *wargs, **kwargs):
- if isinstance(self.warning, Exception):
- raise self.warning
- else:
- raise AttributeError(self.warning)
-
- # All list mutation functions complain.
- __delitem__ = complain
- __delslice__ = complain
- __iadd__ = complain
- __imul__ = complain
- __setitem__ = complain
- __setslice__ = complain
- append = complain
- extend = complain
- insert = complain
- pop = complain
- remove = complain
- sort = complain
- reverse = complain
-
-class DictWrapper(dict):
- """
- Wraps accesses to a dictionary so that certain values (those starting with
- the specified prefix) are passed through a function before being returned.
- The prefix is removed before looking up the real value.
-
- Used by the SQL construction code to ensure that values are correctly
- quoted before being used.
- """
- def __init__(self, data, func, prefix):
- super(DictWrapper, self).__init__(data)
- self.func = func
- self.prefix = prefix
-
- def __getitem__(self, key):
- """
- Retrieves the real value after stripping the prefix string (if
- present). If the prefix is present, pass the value through self.func
- before returning, otherwise return the raw value.
- """
- if key.startswith(self.prefix):
- use_func = True
- key = key[len(self.prefix):]
- else:
- use_func = False
- value = super(DictWrapper, self).__getitem__(key)
- if use_func:
- return self.func(value)
- return value
diff --git a/lib/python2.7/site-packages/django/utils/dateformat.py b/lib/python2.7/site-packages/django/utils/dateformat.py
deleted file mode 100644
index 6d0a7b6..0000000
--- a/lib/python2.7/site-packages/django/utils/dateformat.py
+++ /dev/null
@@ -1,317 +0,0 @@
-"""
-PHP date() style date formatting
-See http://www.php.net/date for format strings
-
-Usage:
->>> import datetime
->>> d = datetime.datetime.now()
->>> df = DateFormat(d)
->>> print(df.format('jS F Y H:i'))
-7th October 2003 11:39
->>>
-"""
-from __future__ import unicode_literals
-
-import re
-import time
-import calendar
-import datetime
-
-from django.utils.dates import MONTHS, MONTHS_3, MONTHS_ALT, MONTHS_AP, WEEKDAYS, WEEKDAYS_ABBR
-from django.utils.tzinfo import LocalTimezone
-from django.utils.translation import ugettext as _
-from django.utils.encoding import force_text
-from django.utils import six
-from django.utils.timezone import is_aware, is_naive
-
-re_formatchars = re.compile(r'(?<!\\)([aAbBcdDeEfFgGhHiIjlLmMnNoOPrsStTUuwWyYzZ])')
-re_escaped = re.compile(r'\\(.)')
-
-class Formatter(object):
- def format(self, formatstr):
- pieces = []
- for i, piece in enumerate(re_formatchars.split(force_text(formatstr))):
- if i % 2:
- pieces.append(force_text(getattr(self, piece)()))
- elif piece:
- pieces.append(re_escaped.sub(r'\1', piece))
- return ''.join(pieces)
-
-class TimeFormat(Formatter):
- def __init__(self, t):
- self.data = t
-
- def a(self):
- "'a.m.' or 'p.m.'"
- if self.data.hour > 11:
- return _('p.m.')
- return _('a.m.')
-
- def A(self):
- "'AM' or 'PM'"
- if self.data.hour > 11:
- return _('PM')
- return _('AM')
-
- def B(self):
- "Swatch Internet time"
- raise NotImplementedError
-
- def f(self):
- """
- Time, in 12-hour hours and minutes, with minutes left off if they're
- zero.
- Examples: '1', '1:30', '2:05', '2'
- Proprietary extension.
- """
- if self.data.minute == 0:
- return self.g()
- return '%s:%s' % (self.g(), self.i())
-
- def g(self):
- "Hour, 12-hour format without leading zeros; i.e. '1' to '12'"
- if self.data.hour == 0:
- return 12
- if self.data.hour > 12:
- return self.data.hour - 12
- return self.data.hour
-
- def G(self):
- "Hour, 24-hour format without leading zeros; i.e. '0' to '23'"
- return self.data.hour
-
- def h(self):
- "Hour, 12-hour format; i.e. '01' to '12'"
- return '%02d' % self.g()
-
- def H(self):
- "Hour, 24-hour format; i.e. '00' to '23'"
- return '%02d' % self.G()
-
- def i(self):
- "Minutes; i.e. '00' to '59'"
- return '%02d' % self.data.minute
-
- def P(self):
- """
- Time, in 12-hour hours, minutes and 'a.m.'/'p.m.', with minutes left off
- if they're zero and the strings 'midnight' and 'noon' if appropriate.
- Examples: '1 a.m.', '1:30 p.m.', 'midnight', 'noon', '12:30 p.m.'
- Proprietary extension.
- """
- if self.data.minute == 0 and self.data.hour == 0:
- return _('midnight')
- if self.data.minute == 0 and self.data.hour == 12:
- return _('noon')
- return '%s %s' % (self.f(), self.a())
-
- def s(self):
- "Seconds; i.e. '00' to '59'"
- return '%02d' % self.data.second
-
- def u(self):
- "Microseconds; i.e. '000000' to '999999'"
- return '%06d' %self.data.microsecond
-
-
-class DateFormat(TimeFormat):
- year_days = [None, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]
-
- def __init__(self, dt):
- # Accepts either a datetime or date object.
- self.data = dt
- self.timezone = None
- if isinstance(dt, datetime.datetime):
- if is_naive(dt):
- self.timezone = LocalTimezone(dt)
- else:
- self.timezone = dt.tzinfo
-
- def b(self):
- "Month, textual, 3 letters, lowercase; e.g. 'jan'"
- return MONTHS_3[self.data.month]
-
- def c(self):
- """
- ISO 8601 Format
- Example : '2008-01-02T10:30:00.000123'
- """
- return self.data.isoformat()
-
- def d(self):
- "Day of the month, 2 digits with leading zeros; i.e. '01' to '31'"
- return '%02d' % self.data.day
-
- def D(self):
- "Day of the week, textual, 3 letters; e.g. 'Fri'"
- return WEEKDAYS_ABBR[self.data.weekday()]
-
- def e(self):
- "Timezone name if available"
- try:
- if hasattr(self.data, 'tzinfo') and self.data.tzinfo:
- # Have to use tzinfo.tzname and not datetime.tzname
- # because datatime.tzname does not expect Unicode
- return self.data.tzinfo.tzname(self.data) or ""
- except NotImplementedError:
- pass
- return ""
-
- def E(self):
- "Alternative month names as required by some locales. Proprietary extension."
- return MONTHS_ALT[self.data.month]
-
- def F(self):
- "Month, textual, long; e.g. 'January'"
- return MONTHS[self.data.month]
-
- def I(self):
- "'1' if Daylight Savings Time, '0' otherwise."
- if self.timezone and self.timezone.dst(self.data):
- return '1'
- else:
- return '0'
-
- def j(self):
- "Day of the month without leading zeros; i.e. '1' to '31'"
- return self.data.day
-
- def l(self):
- "Day of the week, textual, long; e.g. 'Friday'"
- return WEEKDAYS[self.data.weekday()]
-
- def L(self):
- "Boolean for whether it is a leap year; i.e. True or False"
- return calendar.isleap(self.data.year)
-
- def m(self):
- "Month; i.e. '01' to '12'"
- return '%02d' % self.data.month
-
- def M(self):
- "Month, textual, 3 letters; e.g. 'Jan'"
- return MONTHS_3[self.data.month].title()
-
- def n(self):
- "Month without leading zeros; i.e. '1' to '12'"
- return self.data.month
-
- def N(self):
- "Month abbreviation in Associated Press style. Proprietary extension."
- return MONTHS_AP[self.data.month]
-
- def o(self):
- "ISO 8601 year number matching the ISO week number (W)"
- return self.data.isocalendar()[0]
-
- def O(self):
- "Difference to Greenwich time in hours; e.g. '+0200', '-0430'"
- seconds = self.Z()
- sign = '-' if seconds < 0 else '+'
- seconds = abs(seconds)
- return "%s%02d%02d" % (sign, seconds // 3600, (seconds // 60) % 60)
-
- def r(self):
- "RFC 2822 formatted date; e.g. 'Thu, 21 Dec 2000 16:01:07 +0200'"
- return self.format('D, j M Y H:i:s O')
-
- def S(self):
- "English ordinal suffix for the day of the month, 2 characters; i.e. 'st', 'nd', 'rd' or 'th'"
- if self.data.day in (11, 12, 13): # Special case
- return 'th'
- last = self.data.day % 10
- if last == 1:
- return 'st'
- if last == 2:
- return 'nd'
- if last == 3:
- return 'rd'
- return 'th'
-
- def t(self):
- "Number of days in the given month; i.e. '28' to '31'"
- return '%02d' % calendar.monthrange(self.data.year, self.data.month)[1]
-
- def T(self):
- "Time zone of this machine; e.g. 'EST' or 'MDT'"
- name = self.timezone.tzname(self.data) if self.timezone else None
- if name is None:
- name = self.format('O')
- return six.text_type(name)
-
- def U(self):
- "Seconds since the Unix epoch (January 1 1970 00:00:00 GMT)"
- if isinstance(self.data, datetime.datetime) and is_aware(self.data):
- return int(calendar.timegm(self.data.utctimetuple()))
- else:
- return int(time.mktime(self.data.timetuple()))
-
- def w(self):
- "Day of the week, numeric, i.e. '0' (Sunday) to '6' (Saturday)"
- return (self.data.weekday() + 1) % 7
-
- def W(self):
- "ISO-8601 week number of year, weeks starting on Monday"
- # Algorithm from http://www.personal.ecu.edu/mccartyr/ISOwdALG.txt
- week_number = None
- jan1_weekday = self.data.replace(month=1, day=1).weekday() + 1
- weekday = self.data.weekday() + 1
- day_of_year = self.z()
- if day_of_year <= (8 - jan1_weekday) and jan1_weekday > 4:
- if jan1_weekday == 5 or (jan1_weekday == 6 and calendar.isleap(self.data.year-1)):
- week_number = 53
- else:
- week_number = 52
- else:
- if calendar.isleap(self.data.year):
- i = 366
- else:
- i = 365
- if (i - day_of_year) < (4 - weekday):
- week_number = 1
- else:
- j = day_of_year + (7 - weekday) + (jan1_weekday - 1)
- week_number = j // 7
- if jan1_weekday > 4:
- week_number -= 1
- return week_number
-
- def y(self):
- "Year, 2 digits; e.g. '99'"
- return six.text_type(self.data.year)[2:]
-
- def Y(self):
- "Year, 4 digits; e.g. '1999'"
- return self.data.year
-
- def z(self):
- "Day of the year; i.e. '0' to '365'"
- doy = self.year_days[self.data.month] + self.data.day
- if self.L() and self.data.month > 2:
- doy += 1
- return doy
-
- def Z(self):
- """
- Time zone offset in seconds (i.e. '-43200' to '43200'). The offset for
- timezones west of UTC is always negative, and for those east of UTC is
- always positive.
- """
- if not self.timezone:
- return 0
- offset = self.timezone.utcoffset(self.data)
- # `offset` is a datetime.timedelta. For negative values (to the west of
- # UTC) only days can be negative (days=-1) and seconds are always
- # positive. e.g. UTC-1 -> timedelta(days=-1, seconds=82800, microseconds=0)
- # Positive offsets have days=0
- return offset.days * 86400 + offset.seconds
-
-def format(value, format_string):
- "Convenience function"
- df = DateFormat(value)
- return df.format(format_string)
-
-def time_format(value, format_string):
- "Convenience function"
- tf = TimeFormat(value)
- return tf.format(format_string)
diff --git a/lib/python2.7/site-packages/django/utils/dateparse.py b/lib/python2.7/site-packages/django/utils/dateparse.py
deleted file mode 100644
index b4bd559..0000000
--- a/lib/python2.7/site-packages/django/utils/dateparse.py
+++ /dev/null
@@ -1,82 +0,0 @@
-"""Functions to parse datetime objects."""
-
-# We're using regular expressions rather than time.strptime because:
-# - They provide both validation and parsing.
-# - They're more flexible for datetimes.
-# - The date/datetime/time constructors produce friendlier error messages.
-
-import datetime
-import re
-from django.utils import six
-from django.utils.timezone import utc
-from django.utils.tzinfo import FixedOffset
-
-date_re = re.compile(
- r'(?P<year>\d{4})-(?P<month>\d{1,2})-(?P<day>\d{1,2})$'
-)
-
-time_re = re.compile(
- r'(?P<hour>\d{1,2}):(?P<minute>\d{1,2})'
- r'(?::(?P<second>\d{1,2})(?:\.(?P<microsecond>\d{1,6})\d{0,6})?)?'
-)
-
-datetime_re = re.compile(
- r'(?P<year>\d{4})-(?P<month>\d{1,2})-(?P<day>\d{1,2})'
- r'[T ](?P<hour>\d{1,2}):(?P<minute>\d{1,2})'
- r'(?::(?P<second>\d{1,2})(?:\.(?P<microsecond>\d{1,6})\d{0,6})?)?'
- r'(?P<tzinfo>Z|[+-]\d{2}:?\d{2})?$'
-)
-
-def parse_date(value):
- """Parses a string and return a datetime.date.
-
- Raises ValueError if the input is well formatted but not a valid date.
- Returns None if the input isn't well formatted.
- """
- match = date_re.match(value)
- if match:
- kw = dict((k, int(v)) for k, v in six.iteritems(match.groupdict()))
- return datetime.date(**kw)
-
-def parse_time(value):
- """Parses a string and return a datetime.time.
-
- This function doesn't support time zone offsets.
-
- Raises ValueError if the input is well formatted but not a valid time.
- Returns None if the input isn't well formatted, in particular if it
- contains an offset.
- """
- match = time_re.match(value)
- if match:
- kw = match.groupdict()
- if kw['microsecond']:
- kw['microsecond'] = kw['microsecond'].ljust(6, '0')
- kw = dict((k, int(v)) for k, v in six.iteritems(kw) if v is not None)
- return datetime.time(**kw)
-
-def parse_datetime(value):
- """Parses a string and return a datetime.datetime.
-
- This function supports time zone offsets. When the input contains one,
- the output uses an instance of FixedOffset as tzinfo.
-
- Raises ValueError if the input is well formatted but not a valid datetime.
- Returns None if the input isn't well formatted.
- """
- match = datetime_re.match(value)
- if match:
- kw = match.groupdict()
- if kw['microsecond']:
- kw['microsecond'] = kw['microsecond'].ljust(6, '0')
- tzinfo = kw.pop('tzinfo')
- if tzinfo == 'Z':
- tzinfo = utc
- elif tzinfo is not None:
- offset = 60 * int(tzinfo[1:3]) + int(tzinfo[-2:])
- if tzinfo[0] == '-':
- offset = -offset
- tzinfo = FixedOffset(offset)
- kw = dict((k, int(v)) for k, v in six.iteritems(kw) if v is not None)
- kw['tzinfo'] = tzinfo
- return datetime.datetime(**kw)
diff --git a/lib/python2.7/site-packages/django/utils/dates.py b/lib/python2.7/site-packages/django/utils/dates.py
deleted file mode 100644
index a1c0fa2..0000000
--- a/lib/python2.7/site-packages/django/utils/dates.py
+++ /dev/null
@@ -1,57 +0,0 @@
-"Commonly-used date structures"
-
-from django.utils.translation import ugettext_lazy as _, pgettext_lazy
-
-WEEKDAYS = {
- 0:_('Monday'), 1:_('Tuesday'), 2:_('Wednesday'), 3:_('Thursday'), 4:_('Friday'),
- 5:_('Saturday'), 6:_('Sunday')
-}
-WEEKDAYS_ABBR = {
- 0:_('Mon'), 1:_('Tue'), 2:_('Wed'), 3:_('Thu'), 4:_('Fri'),
- 5:_('Sat'), 6:_('Sun')
-}
-WEEKDAYS_REV = {
- 'monday':0, 'tuesday':1, 'wednesday':2, 'thursday':3, 'friday':4,
- 'saturday':5, 'sunday':6
-}
-MONTHS = {
- 1:_('January'), 2:_('February'), 3:_('March'), 4:_('April'), 5:_('May'), 6:_('June'),
- 7:_('July'), 8:_('August'), 9:_('September'), 10:_('October'), 11:_('November'),
- 12:_('December')
-}
-MONTHS_3 = {
- 1:_('jan'), 2:_('feb'), 3:_('mar'), 4:_('apr'), 5:_('may'), 6:_('jun'),
- 7:_('jul'), 8:_('aug'), 9:_('sep'), 10:_('oct'), 11:_('nov'), 12:_('dec')
-}
-MONTHS_3_REV = {
- 'jan':1, 'feb':2, 'mar':3, 'apr':4, 'may':5, 'jun':6, 'jul':7, 'aug':8,
- 'sep':9, 'oct':10, 'nov':11, 'dec':12
-}
-MONTHS_AP = { # month names in Associated Press style
- 1: pgettext_lazy('abbrev. month', 'Jan.'),
- 2: pgettext_lazy('abbrev. month', 'Feb.'),
- 3: pgettext_lazy('abbrev. month', 'March'),
- 4: pgettext_lazy('abbrev. month', 'April'),
- 5: pgettext_lazy('abbrev. month', 'May'),
- 6: pgettext_lazy('abbrev. month', 'June'),
- 7: pgettext_lazy('abbrev. month', 'July'),
- 8: pgettext_lazy('abbrev. month', 'Aug.'),
- 9: pgettext_lazy('abbrev. month', 'Sept.'),
- 10: pgettext_lazy('abbrev. month', 'Oct.'),
- 11: pgettext_lazy('abbrev. month', 'Nov.'),
- 12: pgettext_lazy('abbrev. month', 'Dec.')
-}
-MONTHS_ALT = { # required for long date representation by some locales
- 1: pgettext_lazy('alt. month', 'January'),
- 2: pgettext_lazy('alt. month', 'February'),
- 3: pgettext_lazy('alt. month', 'March'),
- 4: pgettext_lazy('alt. month', 'April'),
- 5: pgettext_lazy('alt. month', 'May'),
- 6: pgettext_lazy('alt. month', 'June'),
- 7: pgettext_lazy('alt. month', 'July'),
- 8: pgettext_lazy('alt. month', 'August'),
- 9: pgettext_lazy('alt. month', 'September'),
- 10: pgettext_lazy('alt. month', 'October'),
- 11: pgettext_lazy('alt. month', 'November'),
- 12: pgettext_lazy('alt. month', 'December')
-}
diff --git a/lib/python2.7/site-packages/django/utils/datetime_safe.py b/lib/python2.7/site-packages/django/utils/datetime_safe.py
deleted file mode 100644
index ca96fb3..0000000
--- a/lib/python2.7/site-packages/django/utils/datetime_safe.py
+++ /dev/null
@@ -1,92 +0,0 @@
-# Python's datetime strftime doesn't handle dates before 1900.
-# These classes override date and datetime to support the formatting of a date
-# through its full "proleptic Gregorian" date range.
-#
-# Based on code submitted to comp.lang.python by Andrew Dalke
-#
-# >>> datetime_safe.date(1850, 8, 2).strftime("%Y/%m/%d was a %A")
-# '1850/08/02 was a Friday'
-
-from datetime import date as real_date, datetime as real_datetime
-import re
-import time
-
-class date(real_date):
- def strftime(self, fmt):
- return strftime(self, fmt)
-
-class datetime(real_datetime):
- def strftime(self, fmt):
- return strftime(self, fmt)
-
- @classmethod
- def combine(cls, date, time):
- return cls(date.year, date.month, date.day,
- time.hour, time.minute, time.second,
- time.microsecond, time.tzinfo)
-
- def date(self):
- return date(self.year, self.month, self.day)
-
-def new_date(d):
- "Generate a safe date from a datetime.date object."
- return date(d.year, d.month, d.day)
-
-def new_datetime(d):
- """
- Generate a safe datetime from a datetime.date or datetime.datetime object.
- """
- kw = [d.year, d.month, d.day]
- if isinstance(d, real_datetime):
- kw.extend([d.hour, d.minute, d.second, d.microsecond, d.tzinfo])
- return datetime(*kw)
-
-# This library does not support strftime's "%s" or "%y" format strings.
-# Allowed if there's an even number of "%"s because they are escaped.
-_illegal_formatting = re.compile(r"((^|[^%])(%%)*%[sy])")
-
-def _findall(text, substr):
- # Also finds overlaps
- sites = []
- i = 0
- while 1:
- j = text.find(substr, i)
- if j == -1:
- break
- sites.append(j)
- i=j+1
- return sites
-
-def strftime(dt, fmt):
- if dt.year >= 1900:
- return super(type(dt), dt).strftime(fmt)
- illegal_formatting = _illegal_formatting.search(fmt)
- if illegal_formatting:
- raise TypeError("strftime of dates before 1900 does not handle" + illegal_formatting.group(0))
-
- year = dt.year
- # For every non-leap year century, advance by
- # 6 years to get into the 28-year repeat cycle
- delta = 2000 - year
- off = 6 * (delta // 100 + delta // 400)
- year = year + off
-
- # Move to around the year 2000
- year = year + ((2000 - year) // 28) * 28
- timetuple = dt.timetuple()
- s1 = time.strftime(fmt, (year,) + timetuple[1:])
- sites1 = _findall(s1, str(year))
-
- s2 = time.strftime(fmt, (year+28,) + timetuple[1:])
- sites2 = _findall(s2, str(year+28))
-
- sites = []
- for site in sites1:
- if site in sites2:
- sites.append(site)
-
- s = s1
- syear = "%04d" % (dt.year,)
- for site in sites:
- s = s[:site] + syear + s[site+4:]
- return s
diff --git a/lib/python2.7/site-packages/django/utils/decorators.py b/lib/python2.7/site-packages/django/utils/decorators.py
deleted file mode 100644
index 91444f0..0000000
--- a/lib/python2.7/site-packages/django/utils/decorators.py
+++ /dev/null
@@ -1,120 +0,0 @@
-"Functions that help with dynamically creating decorators for views."
-
-from functools import wraps, update_wrapper, WRAPPER_ASSIGNMENTS
-
-from django.utils import six
-
-
-class classonlymethod(classmethod):
- def __get__(self, instance, owner):
- if instance is not None:
- raise AttributeError("This method is available only on the view class.")
- return super(classonlymethod, self).__get__(instance, owner)
-
-
-def method_decorator(decorator):
- """
- Converts a function decorator into a method decorator
- """
- # 'func' is a function at the time it is passed to _dec, but will eventually
- # be a method of the class it is defined it.
- def _dec(func):
- def _wrapper(self, *args, **kwargs):
- @decorator
- def bound_func(*args2, **kwargs2):
- return func(self, *args2, **kwargs2)
- # bound_func has the signature that 'decorator' expects i.e. no
- # 'self' argument, but it is a closure over self so it can call
- # 'func' correctly.
- return bound_func(*args, **kwargs)
- # In case 'decorator' adds attributes to the function it decorates, we
- # want to copy those. We don't have access to bound_func in this scope,
- # but we can cheat by using it on a dummy function.
- @decorator
- def dummy(*args, **kwargs):
- pass
- update_wrapper(_wrapper, dummy)
- # Need to preserve any existing attributes of 'func', including the name.
- update_wrapper(_wrapper, func)
-
- return _wrapper
- update_wrapper(_dec, decorator)
- # Change the name to aid debugging.
- _dec.__name__ = 'method_decorator(%s)' % decorator.__name__
- return _dec
-
-
-def decorator_from_middleware_with_args(middleware_class):
- """
- Like decorator_from_middleware, but returns a function
- that accepts the arguments to be passed to the middleware_class.
- Use like::
-
- cache_page = decorator_from_middleware_with_args(CacheMiddleware)
- # ...
-
- @cache_page(3600)
- def my_view(request):
- # ...
- """
- return make_middleware_decorator(middleware_class)
-
-
-def decorator_from_middleware(middleware_class):
- """
- Given a middleware class (not an instance), returns a view decorator. This
- lets you use middleware functionality on a per-view basis. The middleware
- is created with no params passed.
- """
- return make_middleware_decorator(middleware_class)()
-
-
-def available_attrs(fn):
- """
- Return the list of functools-wrappable attributes on a callable.
- This is required as a workaround for http://bugs.python.org/issue3445
- under Python 2.
- """
- if six.PY3:
- return WRAPPER_ASSIGNMENTS
- else:
- return tuple(a for a in WRAPPER_ASSIGNMENTS if hasattr(fn, a))
-
-
-def make_middleware_decorator(middleware_class):
- def _make_decorator(*m_args, **m_kwargs):
- middleware = middleware_class(*m_args, **m_kwargs)
- def _decorator(view_func):
- @wraps(view_func, assigned=available_attrs(view_func))
- def _wrapped_view(request, *args, **kwargs):
- if hasattr(middleware, 'process_request'):
- result = middleware.process_request(request)
- if result is not None:
- return result
- if hasattr(middleware, 'process_view'):
- result = middleware.process_view(request, view_func, args, kwargs)
- if result is not None:
- return result
- try:
- response = view_func(request, *args, **kwargs)
- except Exception as e:
- if hasattr(middleware, 'process_exception'):
- result = middleware.process_exception(request, e)
- if result is not None:
- return result
- raise
- if hasattr(response, 'render') and callable(response.render):
- if hasattr(middleware, 'process_template_response'):
- response = middleware.process_template_response(request, response)
- # Defer running of process_response until after the template
- # has been rendered:
- if hasattr(middleware, 'process_response'):
- callback = lambda response: middleware.process_response(request, response)
- response.add_post_render_callback(callback)
- else:
- if hasattr(middleware, 'process_response'):
- return middleware.process_response(request, response)
- return response
- return _wrapped_view
- return _decorator
- return _make_decorator
diff --git a/lib/python2.7/site-packages/django/utils/deprecation.py b/lib/python2.7/site-packages/django/utils/deprecation.py
deleted file mode 100644
index edbb5ca..0000000
--- a/lib/python2.7/site-packages/django/utils/deprecation.py
+++ /dev/null
@@ -1,62 +0,0 @@
-import inspect
-import warnings
-
-
-class warn_about_renamed_method(object):
- def __init__(self, class_name, old_method_name, new_method_name, deprecation_warning):
- self.class_name = class_name
- self.old_method_name = old_method_name
- self.new_method_name = new_method_name
- self.deprecation_warning = deprecation_warning
-
- def __call__(self, f):
- def wrapped(*args, **kwargs):
- warnings.warn(
- "`%s.%s` is deprecated, use `%s` instead." %
- (self.class_name, self.old_method_name, self.new_method_name),
- self.deprecation_warning, 2)
- return f(*args, **kwargs)
- return wrapped
-
-
-class RenameMethodsBase(type):
- """
- Handles the deprecation paths when renaming a method.
-
- It does the following:
- 1) Define the new method if missing and complain about it.
- 2) Define the old method if missing.
- 3) Complain whenever an old method is called.
-
- See #15363 for more details.
- """
-
- renamed_methods = ()
-
- def __new__(cls, name, bases, attrs):
- new_class = super(RenameMethodsBase, cls).__new__(cls, name, bases, attrs)
-
- for base in inspect.getmro(new_class):
- class_name = base.__name__
- for renamed_method in cls.renamed_methods:
- old_method_name = renamed_method[0]
- old_method = base.__dict__.get(old_method_name)
- new_method_name = renamed_method[1]
- new_method = base.__dict__.get(new_method_name)
- deprecation_warning = renamed_method[2]
- wrapper = warn_about_renamed_method(class_name, *renamed_method)
-
- # Define the new method if missing and complain about it
- if not new_method and old_method:
- warnings.warn(
- "`%s.%s` method should be renamed `%s`." %
- (class_name, old_method_name, new_method_name),
- deprecation_warning, 2)
- setattr(base, new_method_name, old_method)
- setattr(base, old_method_name, wrapper(old_method))
-
- # Define the old method as a wrapped call to the new method.
- if not old_method and new_method:
- setattr(base, old_method_name, wrapper(new_method))
-
- return new_class
diff --git a/lib/python2.7/site-packages/django/utils/dictconfig.py b/lib/python2.7/site-packages/django/utils/dictconfig.py
deleted file mode 100644
index c7b3981..0000000
--- a/lib/python2.7/site-packages/django/utils/dictconfig.py
+++ /dev/null
@@ -1,555 +0,0 @@
-# This is a copy of the Python logging.config.dictconfig module,
-# reproduced with permission. It is provided here for backwards
-# compatibility for Python versions prior to 2.7.
-#
-# Copyright 2009-2010 by Vinay Sajip. All Rights Reserved.
-#
-# Permission to use, copy, modify, and distribute this software and its
-# documentation for any purpose and without fee is hereby granted,
-# provided that the above copyright notice appear in all copies and that
-# both that copyright notice and this permission notice appear in
-# supporting documentation, and that the name of Vinay Sajip
-# not be used in advertising or publicity pertaining to distribution
-# of the software without specific, written prior permission.
-# VINAY SAJIP DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
-# ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
-# VINAY SAJIP BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
-# ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
-# IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-import logging.handlers
-import re
-import sys
-import types
-
-from django.utils import six
-
-IDENTIFIER = re.compile('^[a-z_][a-z0-9_]*$', re.I)
-
-def valid_ident(s):
- m = IDENTIFIER.match(s)
- if not m:
- raise ValueError('Not a valid Python identifier: %r' % s)
- return True
-
-#
-# This function is defined in logging only in recent versions of Python
-#
-try:
- from logging import _checkLevel
-except ImportError:
- def _checkLevel(level):
- if isinstance(level, int):
- rv = level
- elif str(level) == level:
- if level not in logging._levelNames:
- raise ValueError('Unknown level: %r' % level)
- rv = logging._levelNames[level]
- else:
- raise TypeError('Level not an integer or a '
- 'valid string: %r' % level)
- return rv
-
-# The ConvertingXXX classes are wrappers around standard Python containers,
-# and they serve to convert any suitable values in the container. The
-# conversion converts base dicts, lists and tuples to their wrapped
-# equivalents, whereas strings which match a conversion format are converted
-# appropriately.
-#
-# Each wrapper should have a configurator attribute holding the actual
-# configurator to use for conversion.
-
-class ConvertingDict(dict):
- """A converting dictionary wrapper."""
-
- def __getitem__(self, key):
- value = dict.__getitem__(self, key)
- result = self.configurator.convert(value)
- #If the converted value is different, save for next time
- if value is not result:
- self[key] = result
- if type(result) in (ConvertingDict, ConvertingList,
- ConvertingTuple):
- result.parent = self
- result.key = key
- return result
-
- def get(self, key, default=None):
- value = dict.get(self, key, default)
- result = self.configurator.convert(value)
- #If the converted value is different, save for next time
- if value is not result:
- self[key] = result
- if type(result) in (ConvertingDict, ConvertingList,
- ConvertingTuple):
- result.parent = self
- result.key = key
- return result
-
- def pop(self, key, default=None):
- value = dict.pop(self, key, default)
- result = self.configurator.convert(value)
- if value is not result:
- if type(result) in (ConvertingDict, ConvertingList,
- ConvertingTuple):
- result.parent = self
- result.key = key
- return result
-
-class ConvertingList(list):
- """A converting list wrapper."""
- def __getitem__(self, key):
- value = list.__getitem__(self, key)
- result = self.configurator.convert(value)
- #If the converted value is different, save for next time
- if value is not result:
- self[key] = result
- if type(result) in (ConvertingDict, ConvertingList,
- ConvertingTuple):
- result.parent = self
- result.key = key
- return result
-
- def pop(self, idx=-1):
- value = list.pop(self, idx)
- result = self.configurator.convert(value)
- if value is not result:
- if type(result) in (ConvertingDict, ConvertingList,
- ConvertingTuple):
- result.parent = self
- return result
-
-class ConvertingTuple(tuple):
- """A converting tuple wrapper."""
- def __getitem__(self, key):
- value = tuple.__getitem__(self, key)
- result = self.configurator.convert(value)
- if value is not result:
- if type(result) in (ConvertingDict, ConvertingList,
- ConvertingTuple):
- result.parent = self
- result.key = key
- return result
-
-class BaseConfigurator(object):
- """
- The configurator base class which defines some useful defaults.
- """
-
- CONVERT_PATTERN = re.compile(r'^(?P<prefix>[a-z]+)://(?P<suffix>.*)$')
-
- WORD_PATTERN = re.compile(r'^\s*(\w+)\s*')
- DOT_PATTERN = re.compile(r'^\.\s*(\w+)\s*')
- INDEX_PATTERN = re.compile(r'^\[\s*(\w+)\s*\]\s*')
- DIGIT_PATTERN = re.compile(r'^\d+$')
-
- value_converters = {
- 'ext' : 'ext_convert',
- 'cfg' : 'cfg_convert',
- }
-
- # We might want to use a different one, e.g. importlib
- importer = __import__
-
- def __init__(self, config):
- self.config = ConvertingDict(config)
- self.config.configurator = self
-
- def resolve(self, s):
- """
- Resolve strings to objects using standard import and attribute
- syntax.
- """
- name = s.split('.')
- used = name.pop(0)
- try:
- found = self.importer(used)
- for frag in name:
- used += '.' + frag
- try:
- found = getattr(found, frag)
- except AttributeError:
- self.importer(used)
- found = getattr(found, frag)
- return found
- except ImportError:
- e, tb = sys.exc_info()[1:]
- v = ValueError('Cannot resolve %r: %s' % (s, e))
- v.__cause__, v.__traceback__ = e, tb
- raise v
-
- def ext_convert(self, value):
- """Default converter for the ext:// protocol."""
- return self.resolve(value)
-
- def cfg_convert(self, value):
- """Default converter for the cfg:// protocol."""
- rest = value
- m = self.WORD_PATTERN.match(rest)
- if m is None:
- raise ValueError("Unable to convert %r" % value)
- else:
- rest = rest[m.end():]
- d = self.config[m.groups()[0]]
- #print d, rest
- while rest:
- m = self.DOT_PATTERN.match(rest)
- if m:
- d = d[m.groups()[0]]
- else:
- m = self.INDEX_PATTERN.match(rest)
- if m:
- idx = m.groups()[0]
- if not self.DIGIT_PATTERN.match(idx):
- d = d[idx]
- else:
- try:
- n = int(idx) # try as number first (most likely)
- d = d[n]
- except TypeError:
- d = d[idx]
- if m:
- rest = rest[m.end():]
- else:
- raise ValueError('Unable to convert '
- '%r at %r' % (value, rest))
- #rest should be empty
- return d
-
- def convert(self, value):
- """
- Convert values to an appropriate type. dicts, lists and tuples are
- replaced by their converting alternatives. Strings are checked to
- see if they have a conversion format and are converted if they do.
- """
- if not isinstance(value, ConvertingDict) and isinstance(value, dict):
- value = ConvertingDict(value)
- value.configurator = self
- elif not isinstance(value, ConvertingList) and isinstance(value, list):
- value = ConvertingList(value)
- value.configurator = self
- elif not isinstance(value, ConvertingTuple) and\
- isinstance(value, tuple):
- value = ConvertingTuple(value)
- value.configurator = self
- elif isinstance(value, six.string_types): # str for py3k
- m = self.CONVERT_PATTERN.match(value)
- if m:
- d = m.groupdict()
- prefix = d['prefix']
- converter = self.value_converters.get(prefix, None)
- if converter:
- suffix = d['suffix']
- converter = getattr(self, converter)
- value = converter(suffix)
- return value
-
- def configure_custom(self, config):
- """Configure an object with a user-supplied factory."""
- c = config.pop('()')
- if not hasattr(c, '__call__') and hasattr(types, 'ClassType') and type(c) != types.ClassType:
- c = self.resolve(c)
- props = config.pop('.', None)
- # Check for valid identifiers
- kwargs = dict([(k, config[k]) for k in config if valid_ident(k)])
- result = c(**kwargs)
- if props:
- for name, value in props.items():
- setattr(result, name, value)
- return result
-
- def as_tuple(self, value):
- """Utility function which converts lists to tuples."""
- if isinstance(value, list):
- value = tuple(value)
- return value
-
-class DictConfigurator(BaseConfigurator):
- """
- Configure logging using a dictionary-like object to describe the
- configuration.
- """
-
- def configure(self):
- """Do the configuration."""
-
- config = self.config
- if 'version' not in config:
- raise ValueError("dictionary doesn't specify a version")
- if config['version'] != 1:
- raise ValueError("Unsupported version: %s" % config['version'])
- incremental = config.pop('incremental', False)
- EMPTY_DICT = {}
- logging._acquireLock()
- try:
- if incremental:
- handlers = config.get('handlers', EMPTY_DICT)
- # incremental handler config only if handler name
- # ties in to logging._handlers (Python 2.7)
- if sys.version_info[:2] == (2, 7):
- for name in handlers:
- if name not in logging._handlers:
- raise ValueError('No handler found with '
- 'name %r' % name)
- else:
- try:
- handler = logging._handlers[name]
- handler_config = handlers[name]
- level = handler_config.get('level', None)
- if level:
- handler.setLevel(_checkLevel(level))
- except StandardError as e:
- raise ValueError('Unable to configure handler '
- '%r: %s' % (name, e))
- loggers = config.get('loggers', EMPTY_DICT)
- for name in loggers:
- try:
- self.configure_logger(name, loggers[name], True)
- except StandardError as e:
- raise ValueError('Unable to configure logger '
- '%r: %s' % (name, e))
- root = config.get('root', None)
- if root:
- try:
- self.configure_root(root, True)
- except StandardError as e:
- raise ValueError('Unable to configure root '
- 'logger: %s' % e)
- else:
- disable_existing = config.pop('disable_existing_loggers', True)
-
- logging._handlers.clear()
- del logging._handlerList[:]
-
- # Do formatters first - they don't refer to anything else
- formatters = config.get('formatters', EMPTY_DICT)
- for name in formatters:
- try:
- formatters[name] = self.configure_formatter(
- formatters[name])
- except StandardError as e:
- raise ValueError('Unable to configure '
- 'formatter %r: %s' % (name, e))
- # Next, do filters - they don't refer to anything else, either
- filters = config.get('filters', EMPTY_DICT)
- for name in filters:
- try:
- filters[name] = self.configure_filter(filters[name])
- except StandardError as e:
- raise ValueError('Unable to configure '
- 'filter %r: %s' % (name, e))
-
- # Next, do handlers - they refer to formatters and filters
- # As handlers can refer to other handlers, sort the keys
- # to allow a deterministic order of configuration
- handlers = config.get('handlers', EMPTY_DICT)
- for name in sorted(handlers):
- try:
- handler = self.configure_handler(handlers[name])
- handler.name = name
- handlers[name] = handler
- except StandardError as e:
- raise ValueError('Unable to configure handler '
- '%r: %s' % (name, e))
- # Next, do loggers - they refer to handlers and filters
-
- #we don't want to lose the existing loggers,
- #since other threads may have pointers to them.
- #existing is set to contain all existing loggers,
- #and as we go through the new configuration we
- #remove any which are configured. At the end,
- #what's left in existing is the set of loggers
- #which were in the previous configuration but
- #which are not in the new configuration.
- root = logging.root
- existing = list(root.manager.loggerDict)
- #The list needs to be sorted so that we can
- #avoid disabling child loggers of explicitly
- #named loggers. With a sorted list it is easier
- #to find the child loggers.
- existing.sort()
- #We'll keep the list of existing loggers
- #which are children of named loggers here...
- child_loggers = []
- #now set up the new ones...
- loggers = config.get('loggers', EMPTY_DICT)
- for name in loggers:
- if name in existing:
- i = existing.index(name)
- prefixed = name + "."
- pflen = len(prefixed)
- num_existing = len(existing)
- i = i + 1 # look at the entry after name
- while (i < num_existing) and\
- (existing[i][:pflen] == prefixed):
- child_loggers.append(existing[i])
- i = i + 1
- existing.remove(name)
- try:
- self.configure_logger(name, loggers[name])
- except StandardError as e:
- raise ValueError('Unable to configure logger '
- '%r: %s' % (name, e))
-
- #Disable any old loggers. There's no point deleting
- #them as other threads may continue to hold references
- #and by disabling them, you stop them doing any logging.
- #However, don't disable children of named loggers, as that's
- #probably not what was intended by the user.
- for log in existing:
- logger = root.manager.loggerDict[log]
- if log in child_loggers:
- logger.level = logging.NOTSET
- logger.handlers = []
- logger.propagate = True
- elif disable_existing:
- logger.disabled = True
-
- # And finally, do the root logger
- root = config.get('root', None)
- if root:
- try:
- self.configure_root(root)
- except StandardError as e:
- raise ValueError('Unable to configure root '
- 'logger: %s' % e)
- finally:
- logging._releaseLock()
-
- def configure_formatter(self, config):
- """Configure a formatter from a dictionary."""
- if '()' in config:
- factory = config['()'] # for use in exception handler
- try:
- result = self.configure_custom(config)
- except TypeError as te:
- if "'format'" not in str(te):
- raise
- #Name of parameter changed from fmt to format.
- #Retry with old name.
- #This is so that code can be used with older Python versions
- #(e.g. by Django)
- config['fmt'] = config.pop('format')
- config['()'] = factory
- result = self.configure_custom(config)
- else:
- fmt = config.get('format', None)
- dfmt = config.get('datefmt', None)
- result = logging.Formatter(fmt, dfmt)
- return result
-
- def configure_filter(self, config):
- """Configure a filter from a dictionary."""
- if '()' in config:
- result = self.configure_custom(config)
- else:
- name = config.get('name', '')
- result = logging.Filter(name)
- return result
-
- def add_filters(self, filterer, filters):
- """Add filters to a filterer from a list of names."""
- for f in filters:
- try:
- filterer.addFilter(self.config['filters'][f])
- except StandardError as e:
- raise ValueError('Unable to add filter %r: %s' % (f, e))
-
- def configure_handler(self, config):
- """Configure a handler from a dictionary."""
- formatter = config.pop('formatter', None)
- if formatter:
- try:
- formatter = self.config['formatters'][formatter]
- except StandardError as e:
- raise ValueError('Unable to set formatter '
- '%r: %s' % (formatter, e))
- level = config.pop('level', None)
- filters = config.pop('filters', None)
- if '()' in config:
- c = config.pop('()')
- if not hasattr(c, '__call__') and hasattr(types, 'ClassType') and type(c) != types.ClassType:
- c = self.resolve(c)
- factory = c
- else:
- klass = self.resolve(config.pop('class'))
- #Special case for handler which refers to another handler
- if issubclass(klass, logging.handlers.MemoryHandler) and\
- 'target' in config:
- try:
- config['target'] = self.config['handlers'][config['target']]
- except StandardError as e:
- raise ValueError('Unable to set target handler '
- '%r: %s' % (config['target'], e))
- elif issubclass(klass, logging.handlers.SMTPHandler) and\
- 'mailhost' in config:
- config['mailhost'] = self.as_tuple(config['mailhost'])
- elif issubclass(klass, logging.handlers.SysLogHandler) and\
- 'address' in config:
- config['address'] = self.as_tuple(config['address'])
- factory = klass
- kwargs = dict([(k, config[k]) for k in config if valid_ident(k)])
- try:
- result = factory(**kwargs)
- except TypeError as te:
- if "'stream'" not in str(te):
- raise
- #The argument name changed from strm to stream
- #Retry with old name.
- #This is so that code can be used with older Python versions
- #(e.g. by Django)
- kwargs['strm'] = kwargs.pop('stream')
- result = factory(**kwargs)
- if formatter:
- result.setFormatter(formatter)
- if level is not None:
- result.setLevel(_checkLevel(level))
- if filters:
- self.add_filters(result, filters)
- return result
-
- def add_handlers(self, logger, handlers):
- """Add handlers to a logger from a list of names."""
- for h in handlers:
- try:
- logger.addHandler(self.config['handlers'][h])
- except StandardError as e:
- raise ValueError('Unable to add handler %r: %s' % (h, e))
-
- def common_logger_config(self, logger, config, incremental=False):
- """
- Perform configuration which is common to root and non-root loggers.
- """
- level = config.get('level', None)
- if level is not None:
- logger.setLevel(_checkLevel(level))
- if not incremental:
- #Remove any existing handlers
- for h in logger.handlers[:]:
- logger.removeHandler(h)
- handlers = config.get('handlers', None)
- if handlers:
- self.add_handlers(logger, handlers)
- filters = config.get('filters', None)
- if filters:
- self.add_filters(logger, filters)
-
- def configure_logger(self, name, config, incremental=False):
- """Configure a non-root logger from a dictionary."""
- logger = logging.getLogger(name)
- self.common_logger_config(logger, config, incremental)
- propagate = config.get('propagate', None)
- if propagate is not None:
- logger.propagate = propagate
-
- def configure_root(self, config, incremental=False):
- """Configure a root logger from a dictionary."""
- root = logging.getLogger()
- self.common_logger_config(root, config, incremental)
-
-dictConfigClass = DictConfigurator
-
-def dictConfig(config):
- """Configure logging using a dictionary."""
- dictConfigClass(config).configure()
diff --git a/lib/python2.7/site-packages/django/utils/encoding.py b/lib/python2.7/site-packages/django/utils/encoding.py
deleted file mode 100644
index 599952b..0000000
--- a/lib/python2.7/site-packages/django/utils/encoding.py
+++ /dev/null
@@ -1,253 +0,0 @@
-from __future__ import unicode_literals
-
-import codecs
-import datetime
-from decimal import Decimal
-import locale
-import warnings
-
-from django.utils.functional import Promise
-from django.utils import six
-from django.utils.six.moves.urllib.parse import quote
-
-class DjangoUnicodeDecodeError(UnicodeDecodeError):
- def __init__(self, obj, *args):
- self.obj = obj
- UnicodeDecodeError.__init__(self, *args)
-
- def __str__(self):
- original = UnicodeDecodeError.__str__(self)
- return '%s. You passed in %r (%s)' % (original, self.obj,
- type(self.obj))
-
-class StrAndUnicode(object):
- """
- A class that derives __str__ from __unicode__.
-
- On Python 2, __str__ returns the output of __unicode__ encoded as a UTF-8
- bytestring. On Python 3, __str__ returns the output of __unicode__.
-
- Useful as a mix-in. If you support Python 2 and 3 with a single code base,
- you can inherit this mix-in and just define __unicode__.
- """
- def __init__(self, *args, **kwargs):
- warnings.warn("StrAndUnicode is deprecated. Define a __str__ method "
- "and apply the @python_2_unicode_compatible decorator "
- "instead.", DeprecationWarning, stacklevel=2)
- super(StrAndUnicode, self).__init__(*args, **kwargs)
-
- if six.PY3:
- def __str__(self):
- return self.__unicode__()
- else:
- def __str__(self):
- return self.__unicode__().encode('utf-8')
-
-def python_2_unicode_compatible(klass):
- """
- A decorator that defines __unicode__ and __str__ methods under Python 2.
- Under Python 3 it does nothing.
-
- To support Python 2 and 3 with a single code base, define a __str__ method
- returning text and apply this decorator to the class.
- """
- if six.PY2:
- if '__str__' not in klass.__dict__:
- raise ValueError("@python_2_unicode_compatible cannot be applied "
- "to %s because it doesn't define __str__()." %
- klass.__name__)
- klass.__unicode__ = klass.__str__
- klass.__str__ = lambda self: self.__unicode__().encode('utf-8')
- return klass
-
-def smart_text(s, encoding='utf-8', strings_only=False, errors='strict'):
- """
- Returns a text object representing 's' -- unicode on Python 2 and str on
- Python 3. Treats bytestrings using the 'encoding' codec.
-
- If strings_only is True, don't convert (some) non-string-like objects.
- """
- if isinstance(s, Promise):
- # The input is the result of a gettext_lazy() call.
- return s
- return force_text(s, encoding, strings_only, errors)
-
-def is_protected_type(obj):
- """Determine if the object instance is of a protected type.
-
- Objects of protected types are preserved as-is when passed to
- force_text(strings_only=True).
- """
- return isinstance(obj, six.integer_types + (type(None), float, Decimal,
- datetime.datetime, datetime.date, datetime.time))
-
-def force_text(s, encoding='utf-8', strings_only=False, errors='strict'):
- """
- Similar to smart_text, except that lazy instances are resolved to
- strings, rather than kept as lazy objects.
-
- If strings_only is True, don't convert (some) non-string-like objects.
- """
- # Handle the common case first, saves 30-40% when s is an instance of
- # six.text_type. This function gets called often in that setting.
- if isinstance(s, six.text_type):
- return s
- if strings_only and is_protected_type(s):
- return s
- try:
- if not isinstance(s, six.string_types):
- if hasattr(s, '__unicode__'):
- s = s.__unicode__()
- else:
- if six.PY3:
- if isinstance(s, bytes):
- s = six.text_type(s, encoding, errors)
- else:
- s = six.text_type(s)
- else:
- s = six.text_type(bytes(s), encoding, errors)
- else:
- # Note: We use .decode() here, instead of six.text_type(s, encoding,
- # errors), so that if s is a SafeBytes, it ends up being a
- # SafeText at the end.
- s = s.decode(encoding, errors)
- except UnicodeDecodeError as e:
- if not isinstance(s, Exception):
- raise DjangoUnicodeDecodeError(s, *e.args)
- else:
- # If we get to here, the caller has passed in an Exception
- # subclass populated with non-ASCII bytestring data without a
- # working unicode method. Try to handle this without raising a
- # further exception by individually forcing the exception args
- # to unicode.
- s = ' '.join([force_text(arg, encoding, strings_only,
- errors) for arg in s])
- return s
-
-def smart_bytes(s, encoding='utf-8', strings_only=False, errors='strict'):
- """
- Returns a bytestring version of 's', encoded as specified in 'encoding'.
-
- If strings_only is True, don't convert (some) non-string-like objects.
- """
- if isinstance(s, Promise):
- # The input is the result of a gettext_lazy() call.
- return s
- return force_bytes(s, encoding, strings_only, errors)
-
-
-def force_bytes(s, encoding='utf-8', strings_only=False, errors='strict'):
- """
- Similar to smart_bytes, except that lazy instances are resolved to
- strings, rather than kept as lazy objects.
-
- If strings_only is True, don't convert (some) non-string-like objects.
- """
- if isinstance(s, six.memoryview):
- s = bytes(s)
- if isinstance(s, bytes):
- if encoding == 'utf-8':
- return s
- else:
- return s.decode('utf-8', errors).encode(encoding, errors)
- if strings_only and (s is None or isinstance(s, int)):
- return s
- if isinstance(s, Promise):
- return six.text_type(s).encode(encoding, errors)
- if not isinstance(s, six.string_types):
- try:
- if six.PY3:
- return six.text_type(s).encode(encoding)
- else:
- return bytes(s)
- except UnicodeEncodeError:
- if isinstance(s, Exception):
- # An Exception subclass containing non-ASCII data that doesn't
- # know how to print itself properly. We shouldn't raise a
- # further exception.
- return b' '.join([force_bytes(arg, encoding, strings_only,
- errors) for arg in s])
- return six.text_type(s).encode(encoding, errors)
- else:
- return s.encode(encoding, errors)
-
-if six.PY3:
- smart_str = smart_text
- force_str = force_text
-else:
- smart_str = smart_bytes
- force_str = force_bytes
- # backwards compatibility for Python 2
- smart_unicode = smart_text
- force_unicode = force_text
-
-smart_str.__doc__ = """\
-Apply smart_text in Python 3 and smart_bytes in Python 2.
-
-This is suitable for writing to sys.stdout (for instance).
-"""
-
-force_str.__doc__ = """\
-Apply force_text in Python 3 and force_bytes in Python 2.
-"""
-
-def iri_to_uri(iri):
- """
- Convert an Internationalized Resource Identifier (IRI) portion to a URI
- portion that is suitable for inclusion in a URL.
-
- This is the algorithm from section 3.1 of RFC 3987. However, since we are
- assuming input is either UTF-8 or unicode already, we can simplify things a
- little from the full method.
-
- Returns an ASCII string containing the encoded result.
- """
- # The list of safe characters here is constructed from the "reserved" and
- # "unreserved" characters specified in sections 2.2 and 2.3 of RFC 3986:
- # reserved = gen-delims / sub-delims
- # gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"
- # sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
- # / "*" / "+" / "," / ";" / "="
- # unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
- # Of the unreserved characters, urllib.quote already considers all but
- # the ~ safe.
- # The % character is also added to the list of safe characters here, as the
- # end of section 3.1 of RFC 3987 specifically mentions that % must not be
- # converted.
- if iri is None:
- return iri
- return quote(force_bytes(iri), safe=b"/#%[]=:;$&()+,!?*@'~")
-
-def filepath_to_uri(path):
- """Convert a file system path to a URI portion that is suitable for
- inclusion in a URL.
-
- We are assuming input is either UTF-8 or unicode already.
-
- This method will encode certain chars that would normally be recognized as
- special chars for URIs. Note that this method does not encode the '
- character, as it is a valid character within URIs. See
- encodeURIComponent() JavaScript function for more details.
-
- Returns an ASCII string containing the encoded result.
- """
- if path is None:
- return path
- # I know about `os.sep` and `os.altsep` but I want to leave
- # some flexibility for hardcoding separators.
- return quote(force_bytes(path).replace(b"\\", b"/"), safe=b"/~!*()'")
-
-def get_system_encoding():
- """
- The encoding of the default system locale but falls back to the given
- fallback encoding if the encoding is unsupported by python or could
- not be determined. See tickets #10335 and #5846
- """
- try:
- encoding = locale.getdefaultlocale()[1] or 'ascii'
- codecs.lookup(encoding)
- except Exception:
- encoding = 'ascii'
- return encoding
-
-DEFAULT_LOCALE_ENCODING = get_system_encoding()
diff --git a/lib/python2.7/site-packages/django/utils/feedgenerator.py b/lib/python2.7/site-packages/django/utils/feedgenerator.py
deleted file mode 100644
index 13708d4..0000000
--- a/lib/python2.7/site-packages/django/utils/feedgenerator.py
+++ /dev/null
@@ -1,391 +0,0 @@
-"""
-Syndication feed generation library -- used for generating RSS, etc.
-
-Sample usage:
-
->>> from django.utils import feedgenerator
->>> feed = feedgenerator.Rss201rev2Feed(
-... title="Poynter E-Media Tidbits",
-... link="http://www.poynter.org/column.asp?id=31",
-... description="A group Weblog by the sharpest minds in online media/journalism/publishing.",
-... language="en",
-... )
->>> feed.add_item(
-... title="Hello",
-... link="http://www.holovaty.com/test/",
-... description="Testing."
-... )
->>> with open('test.rss', 'w') as fp:
-... feed.write(fp, 'utf-8')
-
-For definitions of the different versions of RSS, see:
-http://web.archive.org/web/20110718035220/http://diveintomark.org/archives/2004/02/04/incompatible-rss
-"""
-from __future__ import unicode_literals
-
-import datetime
-from django.utils.xmlutils import SimplerXMLGenerator
-from django.utils.encoding import force_text, iri_to_uri
-from django.utils import datetime_safe
-from django.utils import six
-from django.utils.six import StringIO
-from django.utils.six.moves.urllib.parse import urlparse
-from django.utils.timezone import is_aware
-
-def rfc2822_date(date):
- # We can't use strftime() because it produces locale-dependent results, so
- # we have to map english month and day names manually
- months = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec',)
- days = ('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun')
- # Support datetime objects older than 1900
- date = datetime_safe.new_datetime(date)
- # We do this ourselves to be timezone aware, email.Utils is not tz aware.
- dow = days[date.weekday()]
- month = months[date.month - 1]
- time_str = date.strftime('%s, %%d %s %%Y %%H:%%M:%%S ' % (dow, month))
- if six.PY2: # strftime returns a byte string in Python 2
- time_str = time_str.decode('utf-8')
- if is_aware(date):
- offset = date.tzinfo.utcoffset(date)
- timezone = (offset.days * 24 * 60) + (offset.seconds // 60)
- hour, minute = divmod(timezone, 60)
- return time_str + '%+03d%02d' % (hour, minute)
- else:
- return time_str + '-0000'
-
-def rfc3339_date(date):
- # Support datetime objects older than 1900
- date = datetime_safe.new_datetime(date)
- time_str = date.strftime('%Y-%m-%dT%H:%M:%S')
- if six.PY2: # strftime returns a byte string in Python 2
- time_str = time_str.decode('utf-8')
- if is_aware(date):
- offset = date.tzinfo.utcoffset(date)
- timezone = (offset.days * 24 * 60) + (offset.seconds // 60)
- hour, minute = divmod(timezone, 60)
- return time_str + '%+03d:%02d' % (hour, minute)
- else:
- return time_str + 'Z'
-
-def get_tag_uri(url, date):
- """
- Creates a TagURI.
-
- See http://web.archive.org/web/20110514113830/http://diveintomark.org/archives/2004/05/28/howto-atom-id
- """
- bits = urlparse(url)
- d = ''
- if date is not None:
- d = ',%s' % datetime_safe.new_datetime(date).strftime('%Y-%m-%d')
- return 'tag:%s%s:%s/%s' % (bits.hostname, d, bits.path, bits.fragment)
-
-class SyndicationFeed(object):
- "Base class for all syndication feeds. Subclasses should provide write()"
- def __init__(self, title, link, description, language=None, author_email=None,
- author_name=None, author_link=None, subtitle=None, categories=None,
- feed_url=None, feed_copyright=None, feed_guid=None, ttl=None, **kwargs):
- to_unicode = lambda s: force_text(s, strings_only=True)
- if categories:
- categories = [force_text(c) for c in categories]
- if ttl is not None:
- # Force ints to unicode
- ttl = force_text(ttl)
- self.feed = {
- 'title': to_unicode(title),
- 'link': iri_to_uri(link),
- 'description': to_unicode(description),
- 'language': to_unicode(language),
- 'author_email': to_unicode(author_email),
- 'author_name': to_unicode(author_name),
- 'author_link': iri_to_uri(author_link),
- 'subtitle': to_unicode(subtitle),
- 'categories': categories or (),
- 'feed_url': iri_to_uri(feed_url),
- 'feed_copyright': to_unicode(feed_copyright),
- 'id': feed_guid or link,
- 'ttl': ttl,
- }
- self.feed.update(kwargs)
- self.items = []
-
- def add_item(self, title, link, description, author_email=None,
- author_name=None, author_link=None, pubdate=None, comments=None,
- unique_id=None, unique_id_is_permalink=None, enclosure=None,
- categories=(), item_copyright=None, ttl=None, **kwargs):
- """
- Adds an item to the feed. All args are expected to be Python Unicode
- objects except pubdate, which is a datetime.datetime object, and
- enclosure, which is an instance of the Enclosure class.
- """
- to_unicode = lambda s: force_text(s, strings_only=True)
- if categories:
- categories = [to_unicode(c) for c in categories]
- if ttl is not None:
- # Force ints to unicode
- ttl = force_text(ttl)
- item = {
- 'title': to_unicode(title),
- 'link': iri_to_uri(link),
- 'description': to_unicode(description),
- 'author_email': to_unicode(author_email),
- 'author_name': to_unicode(author_name),
- 'author_link': iri_to_uri(author_link),
- 'pubdate': pubdate,
- 'comments': to_unicode(comments),
- 'unique_id': to_unicode(unique_id),
- 'unique_id_is_permalink': unique_id_is_permalink,
- 'enclosure': enclosure,
- 'categories': categories or (),
- 'item_copyright': to_unicode(item_copyright),
- 'ttl': ttl,
- }
- item.update(kwargs)
- self.items.append(item)
-
- def num_items(self):
- return len(self.items)
-
- def root_attributes(self):
- """
- Return extra attributes to place on the root (i.e. feed/channel) element.
- Called from write().
- """
- return {}
-
- def add_root_elements(self, handler):
- """
- Add elements in the root (i.e. feed/channel) element. Called
- from write().
- """
- pass
-
- def item_attributes(self, item):
- """
- Return extra attributes to place on each item (i.e. item/entry) element.
- """
- return {}
-
- def add_item_elements(self, handler, item):
- """
- Add elements on each item (i.e. item/entry) element.
- """
- pass
-
- def write(self, outfile, encoding):
- """
- Outputs the feed in the given encoding to outfile, which is a file-like
- object. Subclasses should override this.
- """
- raise NotImplementedError
-
- def writeString(self, encoding):
- """
- Returns the feed in the given encoding as a string.
- """
- s = StringIO()
- self.write(s, encoding)
- return s.getvalue()
-
- def latest_post_date(self):
- """
- Returns the latest item's pubdate. If none of them have a pubdate,
- this returns the current date/time.
- """
- updates = [i['pubdate'] for i in self.items if i['pubdate'] is not None]
- if len(updates) > 0:
- updates.sort()
- return updates[-1]
- else:
- return datetime.datetime.now()
-
-class Enclosure(object):
- "Represents an RSS enclosure"
- def __init__(self, url, length, mime_type):
- "All args are expected to be Python Unicode objects"
- self.length, self.mime_type = length, mime_type
- self.url = iri_to_uri(url)
-
-class RssFeed(SyndicationFeed):
- mime_type = 'application/rss+xml; charset=utf-8'
- def write(self, outfile, encoding):
- handler = SimplerXMLGenerator(outfile, encoding)
- handler.startDocument()
- handler.startElement("rss", self.rss_attributes())
- handler.startElement("channel", self.root_attributes())
- self.add_root_elements(handler)
- self.write_items(handler)
- self.endChannelElement(handler)
- handler.endElement("rss")
-
- def rss_attributes(self):
- return {"version": self._version,
- "xmlns:atom": "http://www.w3.org/2005/Atom"}
-
- def write_items(self, handler):
- for item in self.items:
- handler.startElement('item', self.item_attributes(item))
- self.add_item_elements(handler, item)
- handler.endElement("item")
-
- def add_root_elements(self, handler):
- handler.addQuickElement("title", self.feed['title'])
- handler.addQuickElement("link", self.feed['link'])
- handler.addQuickElement("description", self.feed['description'])
- if self.feed['feed_url'] is not None:
- handler.addQuickElement("atom:link", None,
- {"rel": "self", "href": self.feed['feed_url']})
- if self.feed['language'] is not None:
- handler.addQuickElement("language", self.feed['language'])
- for cat in self.feed['categories']:
- handler.addQuickElement("category", cat)
- if self.feed['feed_copyright'] is not None:
- handler.addQuickElement("copyright", self.feed['feed_copyright'])
- handler.addQuickElement("lastBuildDate", rfc2822_date(self.latest_post_date()))
- if self.feed['ttl'] is not None:
- handler.addQuickElement("ttl", self.feed['ttl'])
-
- def endChannelElement(self, handler):
- handler.endElement("channel")
-
-class RssUserland091Feed(RssFeed):
- _version = "0.91"
- def add_item_elements(self, handler, item):
- handler.addQuickElement("title", item['title'])
- handler.addQuickElement("link", item['link'])
- if item['description'] is not None:
- handler.addQuickElement("description", item['description'])
-
-class Rss201rev2Feed(RssFeed):
- # Spec: http://blogs.law.harvard.edu/tech/rss
- _version = "2.0"
- def add_item_elements(self, handler, item):
- handler.addQuickElement("title", item['title'])
- handler.addQuickElement("link", item['link'])
- if item['description'] is not None:
- handler.addQuickElement("description", item['description'])
-
- # Author information.
- if item["author_name"] and item["author_email"]:
- handler.addQuickElement("author", "%s (%s)" % \
- (item['author_email'], item['author_name']))
- elif item["author_email"]:
- handler.addQuickElement("author", item["author_email"])
- elif item["author_name"]:
- handler.addQuickElement("dc:creator", item["author_name"], {"xmlns:dc": "http://purl.org/dc/elements/1.1/"})
-
- if item['pubdate'] is not None:
- handler.addQuickElement("pubDate", rfc2822_date(item['pubdate']))
- if item['comments'] is not None:
- handler.addQuickElement("comments", item['comments'])
- if item['unique_id'] is not None:
- guid_attrs = {}
- if isinstance(item.get('unique_id_is_permalink'), bool):
- guid_attrs['isPermaLink'] = str(
- item['unique_id_is_permalink']).lower()
- handler.addQuickElement("guid", item['unique_id'], guid_attrs)
- if item['ttl'] is not None:
- handler.addQuickElement("ttl", item['ttl'])
-
- # Enclosure.
- if item['enclosure'] is not None:
- handler.addQuickElement("enclosure", '',
- {"url": item['enclosure'].url, "length": item['enclosure'].length,
- "type": item['enclosure'].mime_type})
-
- # Categories.
- for cat in item['categories']:
- handler.addQuickElement("category", cat)
-
-class Atom1Feed(SyndicationFeed):
- # Spec: http://atompub.org/2005/07/11/draft-ietf-atompub-format-10.html
- mime_type = 'application/atom+xml; charset=utf-8'
- ns = "http://www.w3.org/2005/Atom"
-
- def write(self, outfile, encoding):
- handler = SimplerXMLGenerator(outfile, encoding)
- handler.startDocument()
- handler.startElement('feed', self.root_attributes())
- self.add_root_elements(handler)
- self.write_items(handler)
- handler.endElement("feed")
-
- def root_attributes(self):
- if self.feed['language'] is not None:
- return {"xmlns": self.ns, "xml:lang": self.feed['language']}
- else:
- return {"xmlns": self.ns}
-
- def add_root_elements(self, handler):
- handler.addQuickElement("title", self.feed['title'])
- handler.addQuickElement("link", "", {"rel": "alternate", "href": self.feed['link']})
- if self.feed['feed_url'] is not None:
- handler.addQuickElement("link", "", {"rel": "self", "href": self.feed['feed_url']})
- handler.addQuickElement("id", self.feed['id'])
- handler.addQuickElement("updated", rfc3339_date(self.latest_post_date()))
- if self.feed['author_name'] is not None:
- handler.startElement("author", {})
- handler.addQuickElement("name", self.feed['author_name'])
- if self.feed['author_email'] is not None:
- handler.addQuickElement("email", self.feed['author_email'])
- if self.feed['author_link'] is not None:
- handler.addQuickElement("uri", self.feed['author_link'])
- handler.endElement("author")
- if self.feed['subtitle'] is not None:
- handler.addQuickElement("subtitle", self.feed['subtitle'])
- for cat in self.feed['categories']:
- handler.addQuickElement("category", "", {"term": cat})
- if self.feed['feed_copyright'] is not None:
- handler.addQuickElement("rights", self.feed['feed_copyright'])
-
- def write_items(self, handler):
- for item in self.items:
- handler.startElement("entry", self.item_attributes(item))
- self.add_item_elements(handler, item)
- handler.endElement("entry")
-
- def add_item_elements(self, handler, item):
- handler.addQuickElement("title", item['title'])
- handler.addQuickElement("link", "", {"href": item['link'], "rel": "alternate"})
- if item['pubdate'] is not None:
- handler.addQuickElement("updated", rfc3339_date(item['pubdate']))
-
- # Author information.
- if item['author_name'] is not None:
- handler.startElement("author", {})
- handler.addQuickElement("name", item['author_name'])
- if item['author_email'] is not None:
- handler.addQuickElement("email", item['author_email'])
- if item['author_link'] is not None:
- handler.addQuickElement("uri", item['author_link'])
- handler.endElement("author")
-
- # Unique ID.
- if item['unique_id'] is not None:
- unique_id = item['unique_id']
- else:
- unique_id = get_tag_uri(item['link'], item['pubdate'])
- handler.addQuickElement("id", unique_id)
-
- # Summary.
- if item['description'] is not None:
- handler.addQuickElement("summary", item['description'], {"type": "html"})
-
- # Enclosure.
- if item['enclosure'] is not None:
- handler.addQuickElement("link", '',
- {"rel": "enclosure",
- "href": item['enclosure'].url,
- "length": item['enclosure'].length,
- "type": item['enclosure'].mime_type})
-
- # Categories.
- for cat in item['categories']:
- handler.addQuickElement("category", "", {"term": cat})
-
- # Rights.
- if item['item_copyright'] is not None:
- handler.addQuickElement("rights", item['item_copyright'])
-
-# This isolates the decision of what the system default is, so calling code can
-# do "feedgenerator.DefaultFeed" instead of "feedgenerator.Rss201rev2Feed".
-DefaultFeed = Rss201rev2Feed
diff --git a/lib/python2.7/site-packages/django/utils/formats.py b/lib/python2.7/site-packages/django/utils/formats.py
deleted file mode 100644
index dbe1716..0000000
--- a/lib/python2.7/site-packages/django/utils/formats.py
+++ /dev/null
@@ -1,209 +0,0 @@
-import decimal
-import datetime
-import unicodedata
-
-from django.conf import settings
-from django.utils import dateformat, numberformat, datetime_safe
-from django.utils.importlib import import_module
-from django.utils.encoding import force_str
-from django.utils.functional import lazy
-from django.utils.safestring import mark_safe
-from django.utils import six
-from django.utils.translation import get_language, to_locale, check_for_language
-
-# format_cache is a mapping from (format_type, lang) to the format string.
-# By using the cache, it is possible to avoid running get_format_modules
-# repeatedly.
-_format_cache = {}
-_format_modules_cache = {}
-
-ISO_INPUT_FORMATS = {
- 'DATE_INPUT_FORMATS': ('%Y-%m-%d',),
- 'TIME_INPUT_FORMATS': ('%H:%M:%S', '%H:%M:%S.%f', '%H:%M'),
- 'DATETIME_INPUT_FORMATS': (
- '%Y-%m-%d %H:%M:%S',
- '%Y-%m-%d %H:%M:%S.%f',
- '%Y-%m-%d %H:%M',
- '%Y-%m-%d'
- ),
-}
-
-def reset_format_cache():
- """Clear any cached formats.
-
- This method is provided primarily for testing purposes,
- so that the effects of cached formats can be removed.
- """
- global _format_cache, _format_modules_cache
- _format_cache = {}
- _format_modules_cache = {}
-
-def iter_format_modules(lang):
- """
- Does the heavy lifting of finding format modules.
- """
- if check_for_language(lang):
- format_locations = ['django.conf.locale.%s']
- if settings.FORMAT_MODULE_PATH:
- format_locations.append(settings.FORMAT_MODULE_PATH + '.%s')
- format_locations.reverse()
- locale = to_locale(lang)
- locales = [locale]
- if '_' in locale:
- locales.append(locale.split('_')[0])
- for location in format_locations:
- for loc in locales:
- try:
- yield import_module('%s.formats' % (location % loc))
- except ImportError:
- pass
-
-def get_format_modules(lang=None, reverse=False):
- """
- Returns a list of the format modules found
- """
- if lang is None:
- lang = get_language()
- modules = _format_modules_cache.setdefault(lang, list(iter_format_modules(lang)))
- if reverse:
- return list(reversed(modules))
- return modules
-
-def get_format(format_type, lang=None, use_l10n=None):
- """
- For a specific format type, returns the format for the current
- language (locale), defaults to the format in the settings.
- format_type is the name of the format, e.g. 'DATE_FORMAT'
-
- If use_l10n is provided and is not None, that will force the value to
- be localized (or not), overriding the value of settings.USE_L10N.
- """
- format_type = force_str(format_type)
- if use_l10n or (use_l10n is None and settings.USE_L10N):
- if lang is None:
- lang = get_language()
- cache_key = (format_type, lang)
- try:
- cached = _format_cache[cache_key]
- if cached is not None:
- return cached
- else:
- # Return the general setting by default
- return getattr(settings, format_type)
- except KeyError:
- for module in get_format_modules(lang):
- try:
- val = getattr(module, format_type)
- for iso_input in ISO_INPUT_FORMATS.get(format_type, ()):
- if iso_input not in val:
- if isinstance(val, tuple):
- val = list(val)
- val.append(iso_input)
- _format_cache[cache_key] = val
- return val
- except AttributeError:
- pass
- _format_cache[cache_key] = None
- return getattr(settings, format_type)
-
-get_format_lazy = lazy(get_format, six.text_type, list, tuple)
-
-def date_format(value, format=None, use_l10n=None):
- """
- Formats a datetime.date or datetime.datetime object using a
- localizable format
-
- If use_l10n is provided and is not None, that will force the value to
- be localized (or not), overriding the value of settings.USE_L10N.
- """
- return dateformat.format(value, get_format(format or 'DATE_FORMAT', use_l10n=use_l10n))
-
-def time_format(value, format=None, use_l10n=None):
- """
- Formats a datetime.time object using a localizable format
-
- If use_l10n is provided and is not None, that will force the value to
- be localized (or not), overriding the value of settings.USE_L10N.
- """
- return dateformat.time_format(value, get_format(format or 'TIME_FORMAT', use_l10n=use_l10n))
-
-def number_format(value, decimal_pos=None, use_l10n=None, force_grouping=False):
- """
- Formats a numeric value using localization settings
-
- If use_l10n is provided and is not None, that will force the value to
- be localized (or not), overriding the value of settings.USE_L10N.
- """
- if use_l10n or (use_l10n is None and settings.USE_L10N):
- lang = get_language()
- else:
- lang = None
- return numberformat.format(
- value,
- get_format('DECIMAL_SEPARATOR', lang, use_l10n=use_l10n),
- decimal_pos,
- get_format('NUMBER_GROUPING', lang, use_l10n=use_l10n),
- get_format('THOUSAND_SEPARATOR', lang, use_l10n=use_l10n),
- force_grouping=force_grouping
- )
-
-def localize(value, use_l10n=None):
- """
- Checks if value is a localizable type (date, number...) and returns it
- formatted as a string using current locale format.
-
- If use_l10n is provided and is not None, that will force the value to
- be localized (or not), overriding the value of settings.USE_L10N.
- """
- if isinstance(value, bool):
- return mark_safe(six.text_type(value))
- elif isinstance(value, (decimal.Decimal, float) + six.integer_types):
- return number_format(value, use_l10n=use_l10n)
- elif isinstance(value, datetime.datetime):
- return date_format(value, 'DATETIME_FORMAT', use_l10n=use_l10n)
- elif isinstance(value, datetime.date):
- return date_format(value, use_l10n=use_l10n)
- elif isinstance(value, datetime.time):
- return time_format(value, 'TIME_FORMAT', use_l10n=use_l10n)
- else:
- return value
-
-def localize_input(value, default=None):
- """
- Checks if an input value is a localizable type and returns it
- formatted with the appropriate formatting string of the current locale.
- """
- if isinstance(value, (decimal.Decimal, float) + six.integer_types):
- return number_format(value)
- elif isinstance(value, datetime.datetime):
- value = datetime_safe.new_datetime(value)
- format = force_str(default or get_format('DATETIME_INPUT_FORMATS')[0])
- return value.strftime(format)
- elif isinstance(value, datetime.date):
- value = datetime_safe.new_date(value)
- format = force_str(default or get_format('DATE_INPUT_FORMATS')[0])
- return value.strftime(format)
- elif isinstance(value, datetime.time):
- format = force_str(default or get_format('TIME_INPUT_FORMATS')[0])
- return value.strftime(format)
- return value
-
-def sanitize_separators(value):
- """
- Sanitizes a value according to the current decimal and
- thousand separator setting. Used with form field input.
- """
- if settings.USE_L10N and isinstance(value, six.string_types):
- parts = []
- decimal_separator = get_format('DECIMAL_SEPARATOR')
- if decimal_separator in value:
- value, decimals = value.split(decimal_separator, 1)
- parts.append(decimals)
- if settings.USE_THOUSAND_SEPARATOR:
- thousand_sep = get_format('THOUSAND_SEPARATOR')
- for replacement in set([
- thousand_sep, unicodedata.normalize('NFKD', thousand_sep)]):
- value = value.replace(replacement, '')
- parts.append(value)
- value = '.'.join(reversed(parts))
- return value
diff --git a/lib/python2.7/site-packages/django/utils/functional.py b/lib/python2.7/site-packages/django/utils/functional.py
deleted file mode 100644
index 6c63999..0000000
--- a/lib/python2.7/site-packages/django/utils/functional.py
+++ /dev/null
@@ -1,430 +0,0 @@
-import copy
-import operator
-from functools import wraps
-import sys
-
-from django.utils import six
-from django.utils.six.moves import copyreg
-
-
-# You can't trivially replace this with `functools.partial` because this binds
-# to classes and returns bound instances, whereas functools.partial (on
-# CPython) is a type and its instances don't bind.
-def curry(_curried_func, *args, **kwargs):
- def _curried(*moreargs, **morekwargs):
- return _curried_func(*(args + moreargs), **dict(kwargs, **morekwargs))
- return _curried
-
-
-def memoize(func, cache, num_args):
- """
- Wrap a function so that results for any argument tuple are stored in
- 'cache'. Note that the args to the function must be usable as dictionary
- keys.
-
- Only the first num_args are considered when creating the key.
- """
- @wraps(func)
- def wrapper(*args):
- mem_args = args[:num_args]
- if mem_args in cache:
- return cache[mem_args]
- result = func(*args)
- cache[mem_args] = result
- return result
- return wrapper
-
-
-class cached_property(object):
- """
- Decorator that converts a method with a single self argument into a
- property cached on the instance.
- """
- def __init__(self, func):
- self.func = func
-
- def __get__(self, instance, type=None):
- if instance is None:
- return self
- res = instance.__dict__[self.func.__name__] = self.func(instance)
- return res
-
-
-class Promise(object):
- """
- This is just a base class for the proxy class created in
- the closure of the lazy function. It can be used to recognize
- promises in code.
- """
- pass
-
-
-def lazy(func, *resultclasses):
- """
- Turns any callable into a lazy evaluated callable. You need to give result
- classes or types -- at least one is needed so that the automatic forcing of
- the lazy evaluation code is triggered. Results are not memoized; the
- function is evaluated on every access.
- """
-
- @total_ordering
- class __proxy__(Promise):
- """
- Encapsulate a function call and act as a proxy for methods that are
- called on the result of that function. The function is not evaluated
- until one of the methods on the result is called.
- """
- __dispatch = None
-
- def __init__(self, args, kw):
- self.__args = args
- self.__kw = kw
- if self.__dispatch is None:
- self.__prepare_class__()
-
- def __reduce__(self):
- return (
- _lazy_proxy_unpickle,
- (func, self.__args, self.__kw) + resultclasses
- )
-
- def __prepare_class__(cls):
- cls.__dispatch = {}
- for resultclass in resultclasses:
- cls.__dispatch[resultclass] = {}
- for type_ in reversed(resultclass.mro()):
- for (k, v) in type_.__dict__.items():
- # All __promise__ return the same wrapper method, but
- # they also do setup, inserting the method into the
- # dispatch dict.
- meth = cls.__promise__(resultclass, k, v)
- if hasattr(cls, k):
- continue
- setattr(cls, k, meth)
- cls._delegate_bytes = bytes in resultclasses
- cls._delegate_text = six.text_type in resultclasses
- assert not (cls._delegate_bytes and cls._delegate_text), "Cannot call lazy() with both bytes and text return types."
- if cls._delegate_text:
- if six.PY3:
- cls.__str__ = cls.__text_cast
- else:
- cls.__unicode__ = cls.__text_cast
- elif cls._delegate_bytes:
- if six.PY3:
- cls.__bytes__ = cls.__bytes_cast
- else:
- cls.__str__ = cls.__bytes_cast
- __prepare_class__ = classmethod(__prepare_class__)
-
- def __promise__(cls, klass, funcname, method):
- # Builds a wrapper around some magic method and registers that
- # magic method for the given type and method name.
- def __wrapper__(self, *args, **kw):
- # Automatically triggers the evaluation of a lazy value and
- # applies the given magic method of the result type.
- res = func(*self.__args, **self.__kw)
- for t in type(res).mro():
- if t in self.__dispatch:
- return self.__dispatch[t][funcname](res, *args, **kw)
- raise TypeError("Lazy object returned unexpected type.")
-
- if klass not in cls.__dispatch:
- cls.__dispatch[klass] = {}
- cls.__dispatch[klass][funcname] = method
- return __wrapper__
- __promise__ = classmethod(__promise__)
-
- def __text_cast(self):
- return func(*self.__args, **self.__kw)
-
- def __bytes_cast(self):
- return bytes(func(*self.__args, **self.__kw))
-
- def __cast(self):
- if self._delegate_bytes:
- return self.__bytes_cast()
- elif self._delegate_text:
- return self.__text_cast()
- else:
- return func(*self.__args, **self.__kw)
-
- def __eq__(self, other):
- if isinstance(other, Promise):
- other = other.__cast()
- return self.__cast() == other
-
- def __lt__(self, other):
- if isinstance(other, Promise):
- other = other.__cast()
- return self.__cast() < other
-
- def __hash__(self):
- return hash(self.__cast())
-
- def __mod__(self, rhs):
- if self._delegate_bytes and six.PY2:
- return bytes(self) % rhs
- elif self._delegate_text:
- return six.text_type(self) % rhs
- return self.__cast() % rhs
-
- def __deepcopy__(self, memo):
- # Instances of this class are effectively immutable. It's just a
- # collection of functions. So we don't need to do anything
- # complicated for copying.
- memo[id(self)] = self
- return self
-
- @wraps(func)
- def __wrapper__(*args, **kw):
- # Creates the proxy object, instead of the actual value.
- return __proxy__(args, kw)
-
- return __wrapper__
-
-
-def _lazy_proxy_unpickle(func, args, kwargs, *resultclasses):
- return lazy(func, *resultclasses)(*args, **kwargs)
-
-
-def allow_lazy(func, *resultclasses):
- """
- A decorator that allows a function to be called with one or more lazy
- arguments. If none of the args are lazy, the function is evaluated
- immediately, otherwise a __proxy__ is returned that will evaluate the
- function when needed.
- """
- @wraps(func)
- def wrapper(*args, **kwargs):
- for arg in list(args) + list(six.itervalues(kwargs)):
- if isinstance(arg, Promise):
- break
- else:
- return func(*args, **kwargs)
- return lazy(func, *resultclasses)(*args, **kwargs)
- return wrapper
-
-empty = object()
-
-
-def new_method_proxy(func):
- def inner(self, *args):
- if self._wrapped is empty:
- self._setup()
- return func(self._wrapped, *args)
- return inner
-
-
-class LazyObject(object):
- """
- A wrapper for another class that can be used to delay instantiation of the
- wrapped class.
-
- By subclassing, you have the opportunity to intercept and alter the
- instantiation. If you don't need to do that, use SimpleLazyObject.
- """
-
- # Avoid infinite recursion when tracing __init__ (#19456).
- _wrapped = None
-
- def __init__(self):
- self._wrapped = empty
-
- __getattr__ = new_method_proxy(getattr)
-
- def __setattr__(self, name, value):
- if name == "_wrapped":
- # Assign to __dict__ to avoid infinite __setattr__ loops.
- self.__dict__["_wrapped"] = value
- else:
- if self._wrapped is empty:
- self._setup()
- setattr(self._wrapped, name, value)
-
- def __delattr__(self, name):
- if name == "_wrapped":
- raise TypeError("can't delete _wrapped.")
- if self._wrapped is empty:
- self._setup()
- delattr(self._wrapped, name)
-
- def _setup(self):
- """
- Must be implemented by subclasses to initialise the wrapped object.
- """
- raise NotImplementedError
-
- # Introspection support
- __dir__ = new_method_proxy(dir)
-
- # Dictionary methods support
- @new_method_proxy
- def __getitem__(self, key):
- return self[key]
-
- @new_method_proxy
- def __setitem__(self, key, value):
- self[key] = value
-
- @new_method_proxy
- def __delitem__(self, key):
- del self[key]
-
-
-# Workaround for http://bugs.python.org/issue12370
-_super = super
-
-
-class SimpleLazyObject(LazyObject):
- """
- A lazy object initialised from any function.
-
- Designed for compound objects of unknown type. For builtins or objects of
- known type, use django.utils.functional.lazy.
- """
- def __init__(self, func):
- """
- Pass in a callable that returns the object to be wrapped.
-
- If copies are made of the resulting SimpleLazyObject, which can happen
- in various circumstances within Django, then you must ensure that the
- callable can be safely run more than once and will return the same
- value.
- """
- self.__dict__['_setupfunc'] = func
- _super(SimpleLazyObject, self).__init__()
-
- def _setup(self):
- self._wrapped = self._setupfunc()
-
- if six.PY3:
- __bytes__ = new_method_proxy(bytes)
- __str__ = new_method_proxy(str)
- else:
- __str__ = new_method_proxy(str)
- __unicode__ = new_method_proxy(unicode)
-
- def __deepcopy__(self, memo):
- if self._wrapped is empty:
- # We have to use SimpleLazyObject, not self.__class__, because the
- # latter is proxied.
- result = SimpleLazyObject(self._setupfunc)
- memo[id(self)] = result
- return result
- else:
- return copy.deepcopy(self._wrapped, memo)
-
- # Because we have messed with __class__ below, we confuse pickle as to what
- # class we are pickling. It also appears to stop __reduce__ from being
- # called. So, we define __getstate__ in a way that cooperates with the way
- # that pickle interprets this class. This fails when the wrapped class is
- # a builtin, but it is better than nothing.
- def __getstate__(self):
- if self._wrapped is empty:
- self._setup()
- return self._wrapped.__dict__
-
- # Python 3.3 will call __reduce__ when pickling; this method is needed
- # to serialize and deserialize correctly.
- @classmethod
- def __newobj__(cls, *args):
- return cls.__new__(cls, *args)
-
- def __reduce_ex__(self, proto):
- if proto >= 2:
- # On Py3, since the default protocol is 3, pickle uses the
- # ``__newobj__`` method (& more efficient opcodes) for writing.
- return (self.__newobj__, (self.__class__,), self.__getstate__())
- else:
- # On Py2, the default protocol is 0 (for back-compat) & the above
- # code fails miserably (see regression test). Instead, we return
- # exactly what's returned if there's no ``__reduce__`` method at
- # all.
- return (copyreg._reconstructor, (self.__class__, object, None), self.__getstate__())
-
- # Return a meaningful representation of the lazy object for debugging
- # without evaluating the wrapped object.
- def __repr__(self):
- if self._wrapped is empty:
- repr_attr = self._setupfunc
- else:
- repr_attr = self._wrapped
- return '<SimpleLazyObject: %r>' % repr_attr
-
- # Need to pretend to be the wrapped class, for the sake of objects that
- # care about this (especially in equality tests)
- __class__ = property(new_method_proxy(operator.attrgetter("__class__")))
- __eq__ = new_method_proxy(operator.eq)
- __ne__ = new_method_proxy(operator.ne)
- __hash__ = new_method_proxy(hash)
- __bool__ = new_method_proxy(bool) # Python 3
- __nonzero__ = __bool__ # Python 2
-
-
-class lazy_property(property):
- """
- A property that works with subclasses by wrapping the decorated
- functions of the base class.
- """
- def __new__(cls, fget=None, fset=None, fdel=None, doc=None):
- if fget is not None:
- @wraps(fget)
- def fget(instance, instance_type=None, name=fget.__name__):
- return getattr(instance, name)()
- if fset is not None:
- @wraps(fset)
- def fset(instance, value, name=fset.__name__):
- return getattr(instance, name)(value)
- if fdel is not None:
- @wraps(fdel)
- def fdel(instance, name=fdel.__name__):
- return getattr(instance, name)()
- return property(fget, fset, fdel, doc)
-
-
-def partition(predicate, values):
- """
- Splits the values into two sets, based on the return value of the function
- (True/False). e.g.:
-
- >>> partition(lambda x: x > 3, range(5))
- [0, 1, 2, 3], [4]
- """
- results = ([], [])
- for item in values:
- results[predicate(item)].append(item)
- return results
-
-if sys.version_info >= (2, 7, 2):
- from functools import total_ordering
-else:
- # For Python < 2.7.2. Python 2.6 does not have total_ordering, and
- # total_ordering in 2.7 versions prior to 2.7.2 is buggy. See
- # http://bugs.python.org/issue10042 for details. For these versions use
- # code borrowed from Python 2.7.3.
- def total_ordering(cls):
- """Class decorator that fills in missing ordering methods"""
- convert = {
- '__lt__': [('__gt__', lambda self, other: not (self < other or self == other)),
- ('__le__', lambda self, other: self < other or self == other),
- ('__ge__', lambda self, other: not self < other)],
- '__le__': [('__ge__', lambda self, other: not self <= other or self == other),
- ('__lt__', lambda self, other: self <= other and not self == other),
- ('__gt__', lambda self, other: not self <= other)],
- '__gt__': [('__lt__', lambda self, other: not (self > other or self == other)),
- ('__ge__', lambda self, other: self > other or self == other),
- ('__le__', lambda self, other: not self > other)],
- '__ge__': [('__le__', lambda self, other: (not self >= other) or self == other),
- ('__gt__', lambda self, other: self >= other and not self == other),
- ('__lt__', lambda self, other: not self >= other)]
- }
- roots = set(dir(cls)) & set(convert)
- if not roots:
- raise ValueError('must define at least one ordering operation: < > <= >=')
- root = max(roots) # prefer __lt__ to __le__ to __gt__ to __ge__
- for opname, opfunc in convert[root]:
- if opname not in roots:
- opfunc.__name__ = opname
- opfunc.__doc__ = getattr(int, opname).__doc__
- setattr(cls, opname, opfunc)
- return cls
diff --git a/lib/python2.7/site-packages/django/utils/html.py b/lib/python2.7/site-packages/django/utils/html.py
deleted file mode 100644
index 5d96f15..0000000
--- a/lib/python2.7/site-packages/django/utils/html.py
+++ /dev/null
@@ -1,330 +0,0 @@
-"""HTML utilities suitable for global use."""
-
-from __future__ import unicode_literals
-
-import re
-
-from django.utils.safestring import SafeData, mark_safe
-from django.utils.encoding import force_text, force_str
-from django.utils.functional import allow_lazy
-from django.utils import six
-from django.utils.six.moves.urllib.parse import quote, unquote, urlsplit, urlunsplit
-from django.utils.text import normalize_newlines
-
-from .html_parser import HTMLParser, HTMLParseError
-
-
-# Configuration for urlize() function.
-TRAILING_PUNCTUATION = ['.', ',', ':', ';', '.)']
-WRAPPING_PUNCTUATION = [('(', ')'), ('<', '>'), ('[', ']'), ('&lt;', '&gt;')]
-
-# List of possible strings used for bullets in bulleted lists.
-DOTS = ['&middot;', '*', '\u2022', '&#149;', '&bull;', '&#8226;']
-
-unencoded_ampersands_re = re.compile(r'&(?!(\w+|#\d+);)')
-word_split_re = re.compile(r'(\s+)')
-simple_url_re = re.compile(r'^https?://\[?\w', re.IGNORECASE)
-simple_url_2_re = re.compile(r'^www\.|^(?!http)\w[^@]+\.(com|edu|gov|int|mil|net|org)$', re.IGNORECASE)
-simple_email_re = re.compile(r'^\S+@\S+\.\S+$')
-link_target_attribute_re = re.compile(r'(<a [^>]*?)target=[^\s>]+')
-html_gunk_re = re.compile(r'(?:<br clear="all">|<i><\/i>|<b><\/b>|<em><\/em>|<strong><\/strong>|<\/?smallcaps>|<\/?uppercase>)', re.IGNORECASE)
-hard_coded_bullets_re = re.compile(r'((?:<p>(?:%s).*?[a-zA-Z].*?</p>\s*)+)' % '|'.join([re.escape(x) for x in DOTS]), re.DOTALL)
-trailing_empty_content_re = re.compile(r'(?:<p>(?:&nbsp;|\s|<br \/>)*?</p>\s*)+\Z')
-
-
-def escape(text):
- """
- Returns the given text with ampersands, quotes and angle brackets encoded for use in HTML.
- """
- return mark_safe(force_text(text).replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;').replace('"', '&quot;').replace("'", '&#39;'))
-escape = allow_lazy(escape, six.text_type)
-
-_js_escapes = {
- ord('\\'): '\\u005C',
- ord('\''): '\\u0027',
- ord('"'): '\\u0022',
- ord('>'): '\\u003E',
- ord('<'): '\\u003C',
- ord('&'): '\\u0026',
- ord('='): '\\u003D',
- ord('-'): '\\u002D',
- ord(';'): '\\u003B',
- ord('\u2028'): '\\u2028',
- ord('\u2029'): '\\u2029'
-}
-
-# Escape every ASCII character with a value less than 32.
-_js_escapes.update((ord('%c' % z), '\\u%04X' % z) for z in range(32))
-
-def escapejs(value):
- """Hex encodes characters for use in JavaScript strings."""
- return mark_safe(force_text(value).translate(_js_escapes))
-escapejs = allow_lazy(escapejs, six.text_type)
-
-def conditional_escape(text):
- """
- Similar to escape(), except that it doesn't operate on pre-escaped strings.
- """
- if isinstance(text, SafeData):
- return text
- else:
- return escape(text)
-
-def format_html(format_string, *args, **kwargs):
- """
- Similar to str.format, but passes all arguments through conditional_escape,
- and calls 'mark_safe' on the result. This function should be used instead
- of str.format or % interpolation to build up small HTML fragments.
- """
- args_safe = map(conditional_escape, args)
- kwargs_safe = dict([(k, conditional_escape(v)) for (k, v) in
- six.iteritems(kwargs)])
- return mark_safe(format_string.format(*args_safe, **kwargs_safe))
-
-def format_html_join(sep, format_string, args_generator):
- """
- A wrapper of format_html, for the common case of a group of arguments that
- need to be formatted using the same format string, and then joined using
- 'sep'. 'sep' is also passed through conditional_escape.
-
- 'args_generator' should be an iterator that returns the sequence of 'args'
- that will be passed to format_html.
-
- Example:
-
- format_html_join('\n', "<li>{0} {1}</li>", ((u.first_name, u.last_name)
- for u in users))
-
- """
- return mark_safe(conditional_escape(sep).join(
- format_html(format_string, *tuple(args))
- for args in args_generator))
-
-
-def linebreaks(value, autoescape=False):
- """Converts newlines into <p> and <br />s."""
- value = normalize_newlines(value)
- paras = re.split('\n{2,}', value)
- if autoescape:
- paras = ['<p>%s</p>' % escape(p).replace('\n', '<br />') for p in paras]
- else:
- paras = ['<p>%s</p>' % p.replace('\n', '<br />') for p in paras]
- return '\n\n'.join(paras)
-linebreaks = allow_lazy(linebreaks, six.text_type)
-
-
-class MLStripper(HTMLParser):
- def __init__(self):
- if six.PY2:
- HTMLParser.__init__(self)
- else:
- HTMLParser.__init__(self, strict=False)
- self.reset()
- self.fed = []
- def handle_data(self, d):
- self.fed.append(d)
- def handle_entityref(self, name):
- self.fed.append('&%s;' % name)
- def handle_charref(self, name):
- self.fed.append('&#%s;' % name)
- def get_data(self):
- return ''.join(self.fed)
-
-
-def _strip_once(value):
- """
- Internal tag stripping utility used by strip_tags.
- """
- s = MLStripper()
- try:
- s.feed(value)
- except HTMLParseError:
- return value
- try:
- s.close()
- except (HTMLParseError, UnboundLocalError) as err:
- # UnboundLocalError because of http://bugs.python.org/issue17802
- # on Python 3.2, triggered by strict=False mode of HTMLParser
- return s.get_data() + s.rawdata
- else:
- return s.get_data()
-
-
-def strip_tags(value):
- """Returns the given HTML with all tags stripped."""
- while True:
- if not ('<' in value or '>' in value):
- return value
- new_value = _strip_once(value)
- if new_value == value:
- # _strip_once was not able to detect more tags
- return value
- else:
- value = new_value
-strip_tags = allow_lazy(strip_tags)
-
-def remove_tags(html, tags):
- """Returns the given HTML with given tags removed."""
- tags = [re.escape(tag) for tag in tags.split()]
- tags_re = '(%s)' % '|'.join(tags)
- starttag_re = re.compile(r'<%s(/?>|(\s+[^>]*>))' % tags_re, re.U)
- endtag_re = re.compile('</%s>' % tags_re)
- html = starttag_re.sub('', html)
- html = endtag_re.sub('', html)
- return html
-remove_tags = allow_lazy(remove_tags, six.text_type)
-
-def strip_spaces_between_tags(value):
- """Returns the given HTML with spaces between tags removed."""
- return re.sub(r'>\s+<', '><', force_text(value))
-strip_spaces_between_tags = allow_lazy(strip_spaces_between_tags, six.text_type)
-
-def strip_entities(value):
- """Returns the given HTML with all entities (&something;) stripped."""
- return re.sub(r'&(?:\w+|#\d+);', '', force_text(value))
-strip_entities = allow_lazy(strip_entities, six.text_type)
-
-def fix_ampersands(value):
- """Returns the given HTML with all unencoded ampersands encoded correctly."""
- return unencoded_ampersands_re.sub('&amp;', force_text(value))
-fix_ampersands = allow_lazy(fix_ampersands, six.text_type)
-
-def smart_urlquote(url):
- "Quotes a URL if it isn't already quoted."
- # Handle IDN before quoting.
- try:
- scheme, netloc, path, query, fragment = urlsplit(url)
- try:
- netloc = netloc.encode('idna').decode('ascii') # IDN -> ACE
- except UnicodeError: # invalid domain part
- pass
- else:
- url = urlunsplit((scheme, netloc, path, query, fragment))
- except ValueError:
- # invalid IPv6 URL (normally square brackets in hostname part).
- pass
-
- url = unquote(force_str(url))
- # See http://bugs.python.org/issue2637
- url = quote(url, safe=b'!*\'();:@&=+$,/?#[]~')
-
- return force_text(url)
-
-def urlize(text, trim_url_limit=None, nofollow=False, autoescape=False):
- """
- Converts any URLs in text into clickable links.
-
- Works on http://, https://, www. links, and also on links ending in one of
- the original seven gTLDs (.com, .edu, .gov, .int, .mil, .net, and .org).
- Links can have trailing punctuation (periods, commas, close-parens) and
- leading punctuation (opening parens) and it'll still do the right thing.
-
- If trim_url_limit is not None, the URLs in link text longer than this limit
- will truncated to trim_url_limit-3 characters and appended with an elipsis.
-
- If nofollow is True, the URLs in link text will get a rel="nofollow"
- attribute.
-
- If autoescape is True, the link text and URLs will get autoescaped.
- """
- def trim_url(x, limit=trim_url_limit):
- if limit is None or len(x) <= limit:
- return x
- return '%s...' % x[:max(0, limit - 3)]
- safe_input = isinstance(text, SafeData)
- words = word_split_re.split(force_text(text))
- for i, word in enumerate(words):
- match = None
- if '.' in word or '@' in word or ':' in word:
- # Deal with punctuation.
- lead, middle, trail = '', word, ''
- for punctuation in TRAILING_PUNCTUATION:
- if middle.endswith(punctuation):
- middle = middle[:-len(punctuation)]
- trail = punctuation + trail
- for opening, closing in WRAPPING_PUNCTUATION:
- if middle.startswith(opening):
- middle = middle[len(opening):]
- lead = lead + opening
- # Keep parentheses at the end only if they're balanced.
- if (middle.endswith(closing)
- and middle.count(closing) == middle.count(opening) + 1):
- middle = middle[:-len(closing)]
- trail = closing + trail
-
- # Make URL we want to point to.
- url = None
- nofollow_attr = ' rel="nofollow"' if nofollow else ''
- if simple_url_re.match(middle):
- url = smart_urlquote(middle)
- elif simple_url_2_re.match(middle):
- url = smart_urlquote('http://%s' % middle)
- elif not ':' in middle and simple_email_re.match(middle):
- local, domain = middle.rsplit('@', 1)
- try:
- domain = domain.encode('idna').decode('ascii')
- except UnicodeError:
- continue
- url = 'mailto:%s@%s' % (local, domain)
- nofollow_attr = ''
-
- # Make link.
- if url:
- trimmed = trim_url(middle)
- if autoescape and not safe_input:
- lead, trail = escape(lead), escape(trail)
- url, trimmed = escape(url), escape(trimmed)
- middle = '<a href="%s"%s>%s</a>' % (url, nofollow_attr, trimmed)
- words[i] = mark_safe('%s%s%s' % (lead, middle, trail))
- else:
- if safe_input:
- words[i] = mark_safe(word)
- elif autoescape:
- words[i] = escape(word)
- elif safe_input:
- words[i] = mark_safe(word)
- elif autoescape:
- words[i] = escape(word)
- return ''.join(words)
-urlize = allow_lazy(urlize, six.text_type)
-
-def clean_html(text):
- """
- Clean the given HTML. Specifically, do the following:
- * Convert <b> and <i> to <strong> and <em>.
- * Encode all ampersands correctly.
- * Remove all "target" attributes from <a> tags.
- * Remove extraneous HTML, such as presentational tags that open and
- immediately close and <br clear="all">.
- * Convert hard-coded bullets into HTML unordered lists.
- * Remove stuff like "<p>&nbsp;&nbsp;</p>", but only if it's at the
- bottom of the text.
- """
- from django.utils.text import normalize_newlines
- text = normalize_newlines(force_text(text))
- text = re.sub(r'<(/?)\s*b\s*>', '<\\1strong>', text)
- text = re.sub(r'<(/?)\s*i\s*>', '<\\1em>', text)
- text = fix_ampersands(text)
- # Remove all target="" attributes from <a> tags.
- text = link_target_attribute_re.sub('\\1', text)
- # Trim stupid HTML such as <br clear="all">.
- text = html_gunk_re.sub('', text)
- # Convert hard-coded bullets into HTML unordered lists.
- def replace_p_tags(match):
- s = match.group().replace('</p>', '</li>')
- for d in DOTS:
- s = s.replace('<p>%s' % d, '<li>')
- return '<ul>\n%s\n</ul>' % s
- text = hard_coded_bullets_re.sub(replace_p_tags, text)
- # Remove stuff like "<p>&nbsp;&nbsp;</p>", but only if it's at the bottom
- # of the text.
- text = trailing_empty_content_re.sub('', text)
- return text
-clean_html = allow_lazy(clean_html, six.text_type)
-
-def avoid_wrapping(value):
- """
- Avoid text wrapping in the middle of a phrase by adding non-breaking
- spaces where there previously were normal spaces.
- """
- return value.replace(" ", "\xa0")
diff --git a/lib/python2.7/site-packages/django/utils/html_parser.py b/lib/python2.7/site-packages/django/utils/html_parser.py
deleted file mode 100644
index 6ccb665..0000000
--- a/lib/python2.7/site-packages/django/utils/html_parser.py
+++ /dev/null
@@ -1,113 +0,0 @@
-from django.utils.six.moves import html_parser as _html_parser
-import re
-import sys
-
-current_version = sys.version_info
-
-use_workaround = (
- (current_version < (2, 7, 3)) or
- (current_version >= (3, 0) and current_version < (3, 2, 3))
-)
-
-HTMLParseError = _html_parser.HTMLParseError
-
-if not use_workaround:
- HTMLParser = _html_parser.HTMLParser
-else:
- tagfind = re.compile('([a-zA-Z][-.a-zA-Z0-9:_]*)(?:\s|/(?!>))*')
-
- class HTMLParser(_html_parser.HTMLParser):
- """
- Patched version of stdlib's HTMLParser with patch from:
- http://bugs.python.org/issue670664
- """
- def __init__(self):
- _html_parser.HTMLParser.__init__(self)
- self.cdata_tag = None
-
- def set_cdata_mode(self, tag):
- try:
- self.interesting = _html_parser.interesting_cdata
- except AttributeError:
- self.interesting = re.compile(r'</\s*%s\s*>' % tag.lower(), re.I)
- self.cdata_tag = tag.lower()
-
- def clear_cdata_mode(self):
- self.interesting = _html_parser.interesting_normal
- self.cdata_tag = None
-
- # Internal -- handle starttag, return end or -1 if not terminated
- def parse_starttag(self, i):
- self.__starttag_text = None
- endpos = self.check_for_whole_start_tag(i)
- if endpos < 0:
- return endpos
- rawdata = self.rawdata
- self.__starttag_text = rawdata[i:endpos]
-
- # Now parse the data between i+1 and j into a tag and attrs
- attrs = []
- match = tagfind.match(rawdata, i + 1)
- assert match, 'unexpected call to parse_starttag()'
- k = match.end()
- self.lasttag = tag = match.group(1).lower()
-
- while k < endpos:
- m = _html_parser.attrfind.match(rawdata, k)
- if not m:
- break
- attrname, rest, attrvalue = m.group(1, 2, 3)
- if not rest:
- attrvalue = None
- elif attrvalue[:1] == '\'' == attrvalue[-1:] or \
- attrvalue[:1] == '"' == attrvalue[-1:]:
- attrvalue = attrvalue[1:-1]
- if attrvalue:
- attrvalue = self.unescape(attrvalue)
- attrs.append((attrname.lower(), attrvalue))
- k = m.end()
-
- end = rawdata[k:endpos].strip()
- if end not in (">", "/>"):
- lineno, offset = self.getpos()
- if "\n" in self.__starttag_text:
- lineno = lineno + self.__starttag_text.count("\n")
- offset = len(self.__starttag_text) \
- - self.__starttag_text.rfind("\n")
- else:
- offset = offset + len(self.__starttag_text)
- self.error("junk characters in start tag: %r"
- % (rawdata[k:endpos][:20],))
- if end.endswith('/>'):
- # XHTML-style empty tag: <span attr="value" />
- self.handle_startendtag(tag, attrs)
- else:
- self.handle_starttag(tag, attrs)
- if tag in self.CDATA_CONTENT_ELEMENTS:
- self.set_cdata_mode(tag) # <--------------------------- Changed
- return endpos
-
- # Internal -- parse endtag, return end or -1 if incomplete
- def parse_endtag(self, i):
- rawdata = self.rawdata
- assert rawdata[i:i + 2] == "</", "unexpected call to parse_endtag"
- match = _html_parser.endendtag.search(rawdata, i + 1) # >
- if not match:
- return -1
- j = match.end()
- match = _html_parser.endtagfind.match(rawdata, i) # </ + tag + >
- if not match:
- if self.cdata_tag is not None: # *** add ***
- self.handle_data(rawdata[i:j]) # *** add ***
- return j # *** add ***
- self.error("bad end tag: %r" % (rawdata[i:j],))
- # --- changed start ---------------------------------------------------
- tag = match.group(1).strip()
- if self.cdata_tag is not None:
- if tag.lower() != self.cdata_tag:
- self.handle_data(rawdata[i:j])
- return j
- # --- changed end -----------------------------------------------------
- self.handle_endtag(tag.lower())
- self.clear_cdata_mode()
- return j
diff --git a/lib/python2.7/site-packages/django/utils/http.py b/lib/python2.7/site-packages/django/utils/http.py
deleted file mode 100644
index 571a179..0000000
--- a/lib/python2.7/site-packages/django/utils/http.py
+++ /dev/null
@@ -1,261 +0,0 @@
-from __future__ import unicode_literals
-
-import base64
-import calendar
-import datetime
-import re
-import sys
-
-from binascii import Error as BinasciiError
-from email.utils import formatdate
-
-from django.utils.datastructures import MultiValueDict
-from django.utils.encoding import force_str, force_text
-from django.utils.functional import allow_lazy
-from django.utils import six
-from django.utils.six.moves.urllib.parse import (
- quote, quote_plus, unquote, unquote_plus, urlparse,
- urlencode as original_urlencode)
-
-ETAG_MATCH = re.compile(r'(?:W/)?"((?:\\.|[^"])*)"')
-
-MONTHS = 'jan feb mar apr may jun jul aug sep oct nov dec'.split()
-__D = r'(?P<day>\d{2})'
-__D2 = r'(?P<day>[ \d]\d)'
-__M = r'(?P<mon>\w{3})'
-__Y = r'(?P<year>\d{4})'
-__Y2 = r'(?P<year>\d{2})'
-__T = r'(?P<hour>\d{2}):(?P<min>\d{2}):(?P<sec>\d{2})'
-RFC1123_DATE = re.compile(r'^\w{3}, %s %s %s %s GMT$' % (__D, __M, __Y, __T))
-RFC850_DATE = re.compile(r'^\w{6,9}, %s-%s-%s %s GMT$' % (__D, __M, __Y2, __T))
-ASCTIME_DATE = re.compile(r'^\w{3} %s %s %s %s$' % (__M, __D2, __T, __Y))
-
-def urlquote(url, safe='/'):
- """
- A version of Python's urllib.quote() function that can operate on unicode
- strings. The url is first UTF-8 encoded before quoting. The returned string
- can safely be used as part of an argument to a subsequent iri_to_uri() call
- without double-quoting occurring.
- """
- return force_text(quote(force_str(url), force_str(safe)))
-urlquote = allow_lazy(urlquote, six.text_type)
-
-def urlquote_plus(url, safe=''):
- """
- A version of Python's urllib.quote_plus() function that can operate on
- unicode strings. The url is first UTF-8 encoded before quoting. The
- returned string can safely be used as part of an argument to a subsequent
- iri_to_uri() call without double-quoting occurring.
- """
- return force_text(quote_plus(force_str(url), force_str(safe)))
-urlquote_plus = allow_lazy(urlquote_plus, six.text_type)
-
-def urlunquote(quoted_url):
- """
- A wrapper for Python's urllib.unquote() function that can operate on
- the result of django.utils.http.urlquote().
- """
- return force_text(unquote(force_str(quoted_url)))
-urlunquote = allow_lazy(urlunquote, six.text_type)
-
-def urlunquote_plus(quoted_url):
- """
- A wrapper for Python's urllib.unquote_plus() function that can operate on
- the result of django.utils.http.urlquote_plus().
- """
- return force_text(unquote_plus(force_str(quoted_url)))
-urlunquote_plus = allow_lazy(urlunquote_plus, six.text_type)
-
-def urlencode(query, doseq=0):
- """
- A version of Python's urllib.urlencode() function that can operate on
- unicode strings. The parameters are first cast to UTF-8 encoded strings and
- then encoded as per normal.
- """
- if isinstance(query, MultiValueDict):
- query = query.lists()
- elif hasattr(query, 'items'):
- query = query.items()
- return original_urlencode(
- [(force_str(k),
- [force_str(i) for i in v] if isinstance(v, (list,tuple)) else force_str(v))
- for k, v in query],
- doseq)
-
-def cookie_date(epoch_seconds=None):
- """
- Formats the time to ensure compatibility with Netscape's cookie standard.
-
- Accepts a floating point number expressed in seconds since the epoch, in
- UTC - such as that outputted by time.time(). If set to None, defaults to
- the current time.
-
- Outputs a string in the format 'Wdy, DD-Mon-YYYY HH:MM:SS GMT'.
- """
- rfcdate = formatdate(epoch_seconds)
- return '%s-%s-%s GMT' % (rfcdate[:7], rfcdate[8:11], rfcdate[12:25])
-
-def http_date(epoch_seconds=None):
- """
- Formats the time to match the RFC1123 date format as specified by HTTP
- RFC2616 section 3.3.1.
-
- Accepts a floating point number expressed in seconds since the epoch, in
- UTC - such as that outputted by time.time(). If set to None, defaults to
- the current time.
-
- Outputs a string in the format 'Wdy, DD Mon YYYY HH:MM:SS GMT'.
- """
- rfcdate = formatdate(epoch_seconds)
- return '%s GMT' % rfcdate[:25]
-
-def parse_http_date(date):
- """
- Parses a date format as specified by HTTP RFC2616 section 3.3.1.
-
- The three formats allowed by the RFC are accepted, even if only the first
- one is still in widespread use.
-
- Returns an integer expressed in seconds since the epoch, in UTC.
- """
- # emails.Util.parsedate does the job for RFC1123 dates; unfortunately
- # RFC2616 makes it mandatory to support RFC850 dates too. So we roll
- # our own RFC-compliant parsing.
- for regex in RFC1123_DATE, RFC850_DATE, ASCTIME_DATE:
- m = regex.match(date)
- if m is not None:
- break
- else:
- raise ValueError("%r is not in a valid HTTP date format" % date)
- try:
- year = int(m.group('year'))
- if year < 100:
- if year < 70:
- year += 2000
- else:
- year += 1900
- month = MONTHS.index(m.group('mon').lower()) + 1
- day = int(m.group('day'))
- hour = int(m.group('hour'))
- min = int(m.group('min'))
- sec = int(m.group('sec'))
- result = datetime.datetime(year, month, day, hour, min, sec)
- return calendar.timegm(result.utctimetuple())
- except Exception:
- six.reraise(ValueError, ValueError("%r is not a valid date" % date), sys.exc_info()[2])
-
-def parse_http_date_safe(date):
- """
- Same as parse_http_date, but returns None if the input is invalid.
- """
- try:
- return parse_http_date(date)
- except Exception:
- pass
-
-# Base 36 functions: useful for generating compact URLs
-
-def base36_to_int(s):
- """
- Converts a base 36 string to an ``int``. Raises ``ValueError` if the
- input won't fit into an int.
- """
- # To prevent overconsumption of server resources, reject any
- # base36 string that is long than 13 base36 digits (13 digits
- # is sufficient to base36-encode any 64-bit integer)
- if len(s) > 13:
- raise ValueError("Base36 input too large")
- value = int(s, 36)
- # ... then do a final check that the value will fit into an int to avoid
- # returning a long (#15067). The long type was removed in Python 3.
- if six.PY2 and value > sys.maxint:
- raise ValueError("Base36 input too large")
- return value
-
-def int_to_base36(i):
- """
- Converts an integer to a base36 string
- """
- digits = "0123456789abcdefghijklmnopqrstuvwxyz"
- factor = 0
- if i < 0:
- raise ValueError("Negative base36 conversion input.")
- if six.PY2:
- if not isinstance(i, six.integer_types):
- raise TypeError("Non-integer base36 conversion input.")
- if i > sys.maxint:
- raise ValueError("Base36 conversion input too large.")
- # Find starting factor
- while True:
- factor += 1
- if i < 36 ** factor:
- factor -= 1
- break
- base36 = []
- # Construct base36 representation
- while factor >= 0:
- j = 36 ** factor
- base36.append(digits[i // j])
- i = i % j
- factor -= 1
- return ''.join(base36)
-
-def urlsafe_base64_encode(s):
- """
- Encodes a bytestring in base64 for use in URLs, stripping any trailing
- equal signs.
- """
- return base64.urlsafe_b64encode(s).rstrip(b'\n=')
-
-def urlsafe_base64_decode(s):
- """
- Decodes a base64 encoded string, adding back any trailing equal signs that
- might have been stripped.
- """
- s = s.encode('utf-8') # base64encode should only return ASCII.
- try:
- return base64.urlsafe_b64decode(s.ljust(len(s) + len(s) % 4, b'='))
- except (LookupError, BinasciiError) as e:
- raise ValueError(e)
-
-def parse_etags(etag_str):
- """
- Parses a string with one or several etags passed in If-None-Match and
- If-Match headers by the rules in RFC 2616. Returns a list of etags
- without surrounding double quotes (") and unescaped from \<CHAR>.
- """
- etags = ETAG_MATCH.findall(etag_str)
- if not etags:
- # etag_str has wrong format, treat it as an opaque string then
- return [etag_str]
- etags = [e.encode('ascii').decode('unicode_escape') for e in etags]
- return etags
-
-def quote_etag(etag):
- """
- Wraps a string in double quotes escaping contents as necessary.
- """
- return '"%s"' % etag.replace('\\', '\\\\').replace('"', '\\"')
-
-def same_origin(url1, url2):
- """
- Checks if two URLs are 'same-origin'
- """
- p1, p2 = urlparse(url1), urlparse(url2)
- try:
- return (p1.scheme, p1.hostname, p1.port) == (p2.scheme, p2.hostname, p2.port)
- except ValueError:
- return False
-
-def is_safe_url(url, host=None):
- """
- Return ``True`` if the url is a safe redirection (i.e. it doesn't point to
- a different host and uses a safe scheme).
-
- Always returns ``False`` on an empty url.
- """
- if not url:
- return False
- url_info = urlparse(url)
- return (not url_info.netloc or url_info.netloc == host) and \
- (not url_info.scheme or url_info.scheme in ['http', 'https'])
diff --git a/lib/python2.7/site-packages/django/utils/image.py b/lib/python2.7/site-packages/django/utils/image.py
deleted file mode 100644
index 4bece2e..0000000
--- a/lib/python2.7/site-packages/django/utils/image.py
+++ /dev/null
@@ -1,154 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-To provide a shim layer over Pillow/PIL situation until the PIL support is
-removed.
-
-
-Combinations To Account For
-===========================
-
-* Pillow:
-
- * never has ``_imaging`` under any Python
- * has the ``Image.alpha_composite``, which may aid in detection
-
-* PIL
-
- * CPython 2.x may have _imaging (& work)
- * CPython 2.x may *NOT* have _imaging (broken & needs a error message)
- * CPython 3.x doesn't work
- * PyPy will *NOT* have _imaging (but works?)
- * On some platforms (Homebrew and RHEL6 reported) _imaging isn't available,
- the needed import is from PIL import _imaging (refs #21355)
-
-Restated, that looks like:
-
-* If we're on Python 2.x, it could be either Pillow or PIL:
-
- * If ``import _imaging`` results in ``ImportError``, either they have a
- working Pillow installation or a broken PIL installation, so we need to
- detect further:
-
- * To detect, we first ``import Image``.
- * If ``Image`` has a ``alpha_composite`` attribute present, only Pillow
- has this, so we assume it's working.
- * If ``Image`` DOES NOT have a ``alpha_composite``attribute, it must be
- PIL & is a broken (likely C compiler-less) install, which we need to
- warn the user about.
-
- * If ``import _imaging`` works, it must be PIL & is a working install.
-
-* Python 3.x
-
- * If ``import Image`` works, it must be Pillow, since PIL isn't Python 3.x
- compatible.
-
-* PyPy
-
- * If ``import _imaging`` results in ``ImportError``, it could be either
- Pillow or PIL, both of which work without it on PyPy, so we're fine.
-
-
-Approach
-========
-
-* Attempt to import ``Image``
-
- * ``ImportError`` - nothing is installed, toss an exception
- * Either Pillow or the PIL is installed, so continue detecting
-
-* Attempt to ``hasattr(Image, 'alpha_composite')``
-
- * If it works, it's Pillow & working
- * If it fails, we've got a PIL install, continue detecting
-
- * The only option here is that we're on Python 2.x or PyPy, of which
- we only care about if we're on CPython.
- * If we're on CPython, attempt to ``from PIL import _imaging`` and
- ``import _imaging``
-
- * ``ImportError`` - Bad install, toss an exception
-
-"""
-from __future__ import unicode_literals
-
-import warnings
-
-from django.core.exceptions import ImproperlyConfigured
-from django.utils.translation import ugettext_lazy as _
-
-
-Image = None
-_imaging = None
-ImageFile = None
-
-
-def _detect_image_library():
- global Image
- global _imaging
- global ImageFile
-
- # Skip re-attempting to import if we've already run detection.
- if Image is not None:
- return Image, _imaging, ImageFile
-
- # Assume it's not there.
- PIL_imaging = False
-
- try:
- # Try from the Pillow (or one variant of PIL) install location first.
- from PIL import Image as PILImage
- except ImportError as err:
- try:
- # If that failed, try the alternate import syntax for PIL.
- import Image as PILImage
- except ImportError as err:
- # Neither worked, so it's likely not installed.
- raise ImproperlyConfigured(
- _("Neither Pillow nor PIL could be imported: %s") % err
- )
-
- # ``Image.alpha_composite`` was added to Pillow in SHA: e414c6 & is not
- # available in any version of the PIL.
- if hasattr(PILImage, 'alpha_composite'):
- PIL_imaging = False
- else:
- # We're dealing with the PIL. Determine if we're on CPython & if
- # ``_imaging`` is available.
- import platform
-
- # This is the Alex Approved™ way.
- # See http://mail.python.org/pipermail//pypy-dev/2011-November/008739.html
- if platform.python_implementation().lower() == 'cpython':
- # We're on CPython (likely 2.x). Since a C compiler is needed to
- # produce a fully-working PIL & will create a ``_imaging`` module,
- # we'll attempt to import it to verify their kit works.
- try:
- from PIL import _imaging as PIL_imaging
- except ImportError:
- try:
- import _imaging as PIL_imaging
- except ImportError as err:
- raise ImproperlyConfigured(
- _("The '_imaging' module for the PIL could not be "
- "imported: %s") % err
- )
-
- # Try to import ImageFile as well.
- try:
- from PIL import ImageFile as PILImageFile
- except ImportError:
- import ImageFile as PILImageFile
-
- # Finally, warn about deprecation...
- if PIL_imaging is not False:
- warnings.warn(
- "Support for the PIL will be removed in Django 1.8. Please " +
- "uninstall it & install Pillow instead.",
- PendingDeprecationWarning
- )
-
- return PILImage, PIL_imaging, PILImageFile
-
-
-Image, _imaging, ImageFile = _detect_image_library()
diff --git a/lib/python2.7/site-packages/django/utils/importlib.py b/lib/python2.7/site-packages/django/utils/importlib.py
deleted file mode 100644
index ae7987c..0000000
--- a/lib/python2.7/site-packages/django/utils/importlib.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# Taken from Python 2.7 with permission from/by the original author.
-import sys
-
-from django.utils import six
-
-def _resolve_name(name, package, level):
- """Return the absolute name of the module to be imported."""
- if not hasattr(package, 'rindex'):
- raise ValueError("'package' not set to a string")
- dot = len(package)
- for x in range(level, 1, -1):
- try:
- dot = package.rindex('.', 0, dot)
- except ValueError:
- raise ValueError("attempted relative import beyond top-level "
- "package")
- return "%s.%s" % (package[:dot], name)
-
-
-if six.PY3:
- from importlib import import_module
-else:
- def import_module(name, package=None):
- """Import a module.
-
- The 'package' argument is required when performing a relative import. It
- specifies the package to use as the anchor point from which to resolve the
- relative import to an absolute import.
-
- """
- if name.startswith('.'):
- if not package:
- raise TypeError("relative imports require the 'package' argument")
- level = 0
- for character in name:
- if character != '.':
- break
- level += 1
- name = _resolve_name(name[level:], package, level)
- __import__(name)
- return sys.modules[name]
diff --git a/lib/python2.7/site-packages/django/utils/ipv6.py b/lib/python2.7/site-packages/django/utils/ipv6.py
deleted file mode 100644
index 4d53522..0000000
--- a/lib/python2.7/site-packages/django/utils/ipv6.py
+++ /dev/null
@@ -1,268 +0,0 @@
-# This code was mostly based on ipaddr-py
-# Copyright 2007 Google Inc. http://code.google.com/p/ipaddr-py/
-# Licensed under the Apache License, Version 2.0 (the "License").
-from django.core.exceptions import ValidationError
-from django.utils.translation import ugettext_lazy as _
-from django.utils.six.moves import xrange
-
-def clean_ipv6_address(ip_str, unpack_ipv4=False,
- error_message=_("This is not a valid IPv6 address.")):
- """
- Cleans a IPv6 address string.
-
- Validity is checked by calling is_valid_ipv6_address() - if an
- invalid address is passed, ValidationError is raised.
-
- Replaces the longest continious zero-sequence with "::" and
- removes leading zeroes and makes sure all hextets are lowercase.
-
- Args:
- ip_str: A valid IPv6 address.
- unpack_ipv4: if an IPv4-mapped address is found,
- return the plain IPv4 address (default=False).
- error_message: A error message for in the ValidationError.
-
- Returns:
- A compressed IPv6 address, or the same value
-
- """
- best_doublecolon_start = -1
- best_doublecolon_len = 0
- doublecolon_start = -1
- doublecolon_len = 0
-
- if not is_valid_ipv6_address(ip_str):
- raise ValidationError(error_message, code='invalid')
-
- # This algorithm can only handle fully exploded
- # IP strings
- ip_str = _explode_shorthand_ip_string(ip_str)
-
- ip_str = _sanitize_ipv4_mapping(ip_str)
-
- # If needed, unpack the IPv4 and return straight away
- # - no need in running the rest of the algorithm
- if unpack_ipv4:
- ipv4_unpacked = _unpack_ipv4(ip_str)
-
- if ipv4_unpacked:
- return ipv4_unpacked
-
- hextets = ip_str.split(":")
-
- for index in range(len(hextets)):
- # Remove leading zeroes
- hextets[index] = hextets[index].lstrip('0')
- if not hextets[index]:
- hextets[index] = '0'
-
- # Determine best hextet to compress
- if hextets[index] == '0':
- doublecolon_len += 1
- if doublecolon_start == -1:
- # Start of a sequence of zeros.
- doublecolon_start = index
- if doublecolon_len > best_doublecolon_len:
- # This is the longest sequence of zeros so far.
- best_doublecolon_len = doublecolon_len
- best_doublecolon_start = doublecolon_start
- else:
- doublecolon_len = 0
- doublecolon_start = -1
-
- # Compress the most suitable hextet
- if best_doublecolon_len > 1:
- best_doublecolon_end = (best_doublecolon_start +
- best_doublecolon_len)
- # For zeros at the end of the address.
- if best_doublecolon_end == len(hextets):
- hextets += ['']
- hextets[best_doublecolon_start:best_doublecolon_end] = ['']
- # For zeros at the beginning of the address.
- if best_doublecolon_start == 0:
- hextets = [''] + hextets
-
- result = ":".join(hextets)
-
- return result.lower()
-
-
-def _sanitize_ipv4_mapping(ip_str):
- """
- Sanitize IPv4 mapping in a expanded IPv6 address.
-
- This converts ::ffff:0a0a:0a0a to ::ffff:10.10.10.10.
- If there is nothing to sanitize, returns an unchanged
- string.
-
- Args:
- ip_str: A string, the expanded IPv6 address.
-
- Returns:
- The sanitized output string, if applicable.
- """
- if not ip_str.lower().startswith('0000:0000:0000:0000:0000:ffff:'):
- # not an ipv4 mapping
- return ip_str
-
- hextets = ip_str.split(':')
-
- if '.' in hextets[-1]:
- # already sanitized
- return ip_str
-
- ipv4_address = "%d.%d.%d.%d" % (
- int(hextets[6][0:2], 16),
- int(hextets[6][2:4], 16),
- int(hextets[7][0:2], 16),
- int(hextets[7][2:4], 16),
- )
-
- result = ':'.join(hextets[0:6])
- result += ':' + ipv4_address
-
- return result
-
-def _unpack_ipv4(ip_str):
- """
- Unpack an IPv4 address that was mapped in a compressed IPv6 address.
-
- This converts 0000:0000:0000:0000:0000:ffff:10.10.10.10 to 10.10.10.10.
- If there is nothing to sanitize, returns None.
-
- Args:
- ip_str: A string, the expanded IPv6 address.
-
- Returns:
- The unpacked IPv4 address, or None if there was nothing to unpack.
- """
- if not ip_str.lower().startswith('0000:0000:0000:0000:0000:ffff:'):
- return None
-
- return ip_str.rsplit(':', 1)[1]
-
-def is_valid_ipv6_address(ip_str):
- """
- Ensure we have a valid IPv6 address.
-
- Args:
- ip_str: A string, the IPv6 address.
-
- Returns:
- A boolean, True if this is a valid IPv6 address.
-
- """
- from django.core.validators import validate_ipv4_address
-
- # We need to have at least one ':'.
- if ':' not in ip_str:
- return False
-
- # We can only have one '::' shortener.
- if ip_str.count('::') > 1:
- return False
-
- # '::' should be encompassed by start, digits or end.
- if ':::' in ip_str:
- return False
-
- # A single colon can neither start nor end an address.
- if ((ip_str.startswith(':') and not ip_str.startswith('::')) or
- (ip_str.endswith(':') and not ip_str.endswith('::'))):
- return False
-
- # We can never have more than 7 ':' (1::2:3:4:5:6:7:8 is invalid)
- if ip_str.count(':') > 7:
- return False
-
- # If we have no concatenation, we need to have 8 fields with 7 ':'.
- if '::' not in ip_str and ip_str.count(':') != 7:
- # We might have an IPv4 mapped address.
- if ip_str.count('.') != 3:
- return False
-
- ip_str = _explode_shorthand_ip_string(ip_str)
-
- # Now that we have that all squared away, let's check that each of the
- # hextets are between 0x0 and 0xFFFF.
- for hextet in ip_str.split(':'):
- if hextet.count('.') == 3:
- # If we have an IPv4 mapped address, the IPv4 portion has to
- # be at the end of the IPv6 portion.
- if not ip_str.split(':')[-1] == hextet:
- return False
- try:
- validate_ipv4_address(hextet)
- except ValidationError:
- return False
- else:
- try:
- # a value error here means that we got a bad hextet,
- # something like 0xzzzz
- if int(hextet, 16) < 0x0 or int(hextet, 16) > 0xFFFF:
- return False
- except ValueError:
- return False
- return True
-
-
-def _explode_shorthand_ip_string(ip_str):
- """
- Expand a shortened IPv6 address.
-
- Args:
- ip_str: A string, the IPv6 address.
-
- Returns:
- A string, the expanded IPv6 address.
-
- """
- if not _is_shorthand_ip(ip_str):
- # We've already got a longhand ip_str.
- return ip_str
-
- new_ip = []
- hextet = ip_str.split('::')
-
- # If there is a ::, we need to expand it with zeroes
- # to get to 8 hextets - unless there is a dot in the last hextet,
- # meaning we're doing v4-mapping
- if '.' in ip_str.split(':')[-1]:
- fill_to = 7
- else:
- fill_to = 8
-
- if len(hextet) > 1:
- sep = len(hextet[0].split(':')) + len(hextet[1].split(':'))
- new_ip = hextet[0].split(':')
-
- for _ in xrange(fill_to - sep):
- new_ip.append('0000')
- new_ip += hextet[1].split(':')
-
- else:
- new_ip = ip_str.split(':')
-
- # Now need to make sure every hextet is 4 lower case characters.
- # If a hextet is < 4 characters, we've got missing leading 0's.
- ret_ip = []
- for hextet in new_ip:
- ret_ip.append(('0' * (4 - len(hextet)) + hextet).lower())
- return ':'.join(ret_ip)
-
-
-def _is_shorthand_ip(ip_str):
- """Determine if the address is shortened.
-
- Args:
- ip_str: A string, the IPv6 address.
-
- Returns:
- A boolean, True if the address is shortened.
-
- """
- if ip_str.count('::') == 1:
- return True
- if any(len(x) < 4 for x in ip_str.split(':')):
- return True
- return False
diff --git a/lib/python2.7/site-packages/django/utils/itercompat.py b/lib/python2.7/site-packages/django/utils/itercompat.py
deleted file mode 100644
index c50dcfb..0000000
--- a/lib/python2.7/site-packages/django/utils/itercompat.py
+++ /dev/null
@@ -1,36 +0,0 @@
-"""
-Providing iterator functions that are not in all version of Python we support.
-Where possible, we try to use the system-native version and only fall back to
-these implementations if necessary.
-"""
-
-import collections
-import itertools
-import sys
-import warnings
-
-
-def is_iterable(x):
- "A implementation independent way of checking for iterables"
- try:
- iter(x)
- except TypeError:
- return False
- else:
- return True
-
-def is_iterator(x):
- """An implementation independent way of checking for iterators
-
- Python 2.6 has a different implementation of collections.Iterator which
- accepts anything with a `next` method. 2.7+ requires and `__iter__` method
- as well.
- """
- if sys.version_info >= (2, 7):
- return isinstance(x, collections.Iterator)
- return isinstance(x, collections.Iterator) and hasattr(x, '__iter__')
-
-def product(*args, **kwds):
- warnings.warn("django.utils.itercompat.product is deprecated; use the native version instead",
- DeprecationWarning, stacklevel=2)
- return itertools.product(*args, **kwds)
diff --git a/lib/python2.7/site-packages/django/utils/jslex.py b/lib/python2.7/site-packages/django/utils/jslex.py
deleted file mode 100644
index c465647..0000000
--- a/lib/python2.7/site-packages/django/utils/jslex.py
+++ /dev/null
@@ -1,219 +0,0 @@
-"""JsLex: a lexer for Javascript"""
-# Originally from https://bitbucket.org/ned/jslex
-import re
-
-class Tok(object):
- """
- A specification for a token class.
- """
- num = 0
-
- def __init__(self, name, regex, next=None):
- self.id = Tok.num
- Tok.num += 1
- self.name = name
- self.regex = regex
- self.next = next
-
-def literals(choices, prefix="", suffix=""):
- """
- Create a regex from a space-separated list of literal `choices`.
-
- If provided, `prefix` and `suffix` will be attached to each choice
- individually.
-
- """
- return "|".join(prefix+re.escape(c)+suffix for c in choices.split())
-
-
-class Lexer(object):
- """
- A generic multi-state regex-based lexer.
- """
-
- def __init__(self, states, first):
- self.regexes = {}
- self.toks = {}
-
- for state, rules in states.items():
- parts = []
- for tok in rules:
- groupid = "t%d" % tok.id
- self.toks[groupid] = tok
- parts.append("(?P<%s>%s)" % (groupid, tok.regex))
- self.regexes[state] = re.compile("|".join(parts), re.MULTILINE|re.VERBOSE)
-
- self.state = first
-
- def lex(self, text):
- """
- Lexically analyze `text`.
-
- Yields pairs (`name`, `tokentext`).
- """
- end = len(text)
- state = self.state
- regexes = self.regexes
- toks = self.toks
- start = 0
-
- while start < end:
- for match in regexes[state].finditer(text, start):
- name = match.lastgroup
- tok = toks[name]
- toktext = match.group(name)
- start += len(toktext)
- yield (tok.name, toktext)
-
- if tok.next:
- state = tok.next
- break
-
- self.state = state
-
-
-class JsLexer(Lexer):
- """
- A Javascript lexer
-
- >>> lexer = JsLexer()
- >>> list(lexer.lex("a = 1"))
- [('id', 'a'), ('ws', ' '), ('punct', '='), ('ws', ' '), ('dnum', '1')]
-
- This doesn't properly handle non-Ascii characters in the Javascript source.
- """
-
- # Because these tokens are matched as alternatives in a regex, longer
- # possibilities must appear in the list before shorter ones, for example,
- # '>>' before '>'.
- #
- # Note that we don't have to detect malformed Javascript, only properly
- # lex correct Javascript, so much of this is simplified.
-
- # Details of Javascript lexical structure are taken from
- # http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf
-
- # A useful explanation of automatic semicolon insertion is at
- # http://inimino.org/~inimino/blog/javascript_semicolons
-
- both_before = [
- Tok("comment", r"/\*(.|\n)*?\*/"),
- Tok("linecomment", r"//.*?$"),
- Tok("ws", r"\s+"),
- Tok("keyword", literals("""
- break case catch class const continue debugger
- default delete do else enum export extends
- finally for function if import in instanceof
- new return super switch this throw try typeof
- var void while with
- """, suffix=r"\b"), next='reg'),
- Tok("reserved", literals("null true false", suffix=r"\b"), next='div'),
- Tok("id", r"""
- ([a-zA-Z_$ ]|\\u[0-9a-fA-Z]{4}) # first char
- ([a-zA-Z_$0-9]|\\u[0-9a-fA-F]{4})* # rest chars
- """, next='div'),
- Tok("hnum", r"0[xX][0-9a-fA-F]+", next='div'),
- Tok("onum", r"0[0-7]+"),
- Tok("dnum", r"""
- ( (0|[1-9][0-9]*) # DecimalIntegerLiteral
- \. # dot
- [0-9]* # DecimalDigits-opt
- ([eE][-+]?[0-9]+)? # ExponentPart-opt
- |
- \. # dot
- [0-9]+ # DecimalDigits
- ([eE][-+]?[0-9]+)? # ExponentPart-opt
- |
- (0|[1-9][0-9]*) # DecimalIntegerLiteral
- ([eE][-+]?[0-9]+)? # ExponentPart-opt
- )
- """, next='div'),
- Tok("punct", literals("""
- >>>= === !== >>> <<= >>= <= >= == != << >> &&
- || += -= *= %= &= |= ^=
- """), next="reg"),
- Tok("punct", literals("++ -- ) ]"), next='div'),
- Tok("punct", literals("{ } ( [ . ; , < > + - * % & | ^ ! ~ ? : ="), next='reg'),
- Tok("string", r'"([^"\\]|(\\(.|\n)))*?"', next='div'),
- Tok("string", r"'([^'\\]|(\\(.|\n)))*?'", next='div'),
- ]
-
- both_after = [
- Tok("other", r"."),
- ]
-
- states = {
- 'div': # slash will mean division
- both_before + [
- Tok("punct", literals("/= /"), next='reg'),
- ] + both_after,
-
- 'reg': # slash will mean regex
- both_before + [
- Tok("regex",
- r"""
- / # opening slash
- # First character is..
- ( [^*\\/[] # anything but * \ / or [
- | \\. # or an escape sequence
- | \[ # or a class, which has
- ( [^\]\\] # anything but \ or ]
- | \\. # or an escape sequence
- )* # many times
- \]
- )
- # Following characters are same, except for excluding a star
- ( [^\\/[] # anything but \ / or [
- | \\. # or an escape sequence
- | \[ # or a class, which has
- ( [^\]\\] # anything but \ or ]
- | \\. # or an escape sequence
- )* # many times
- \]
- )* # many times
- / # closing slash
- [a-zA-Z0-9]* # trailing flags
- """, next='div'),
- ] + both_after,
- }
-
- def __init__(self):
- super(JsLexer, self).__init__(self.states, 'reg')
-
-
-def prepare_js_for_gettext(js):
- """
- Convert the Javascript source `js` into something resembling C for
- xgettext.
-
- What actually happens is that all the regex literals are replaced with
- "REGEX".
- """
- def escape_quotes(m):
- """Used in a regex to properly escape double quotes."""
- s = m.group(0)
- if s == '"':
- return r'\"'
- else:
- return s
-
- lexer = JsLexer()
- c = []
- for name, tok in lexer.lex(js):
- if name == 'regex':
- # C doesn't grok regexes, and they aren't needed for gettext,
- # so just output a string instead.
- tok = '"REGEX"';
- elif name == 'string':
- # C doesn't have single-quoted strings, so make all strings
- # double-quoted.
- if tok.startswith("'"):
- guts = re.sub(r"\\.|.", escape_quotes, tok[1:-1])
- tok = '"' + guts + '"'
- elif name == 'id':
- # C can't deal with Unicode escapes in identifiers. We don't
- # need them for gettext anyway, so replace them with something
- # innocuous
- tok = tok.replace("\\", "U");
- c.append(tok)
- return ''.join(c)
diff --git a/lib/python2.7/site-packages/django/utils/log.py b/lib/python2.7/site-packages/django/utils/log.py
deleted file mode 100644
index 6734a72..0000000
--- a/lib/python2.7/site-packages/django/utils/log.py
+++ /dev/null
@@ -1,160 +0,0 @@
-import logging
-import traceback
-
-from django.conf import settings
-from django.core import mail
-from django.core.mail import get_connection
-from django.views.debug import ExceptionReporter, get_exception_reporter_filter
-
-
-# Make sure a NullHandler is available
-# This was added in Python 2.7/3.2
-try:
- from logging import NullHandler
-except ImportError:
- class NullHandler(logging.Handler):
- def emit(self, record):
- pass
-
-# Make sure that dictConfig is available
-# This was added in Python 2.7/3.2
-try:
- from logging.config import dictConfig
-except ImportError:
- from django.utils.dictconfig import dictConfig
-
-getLogger = logging.getLogger
-
-# Default logging for Django. This sends an email to the site admins on every
-# HTTP 500 error. Depending on DEBUG, all other log records are either sent to
-# the console (DEBUG=True) or discarded by mean of the NullHandler (DEBUG=False).
-DEFAULT_LOGGING = {
- 'version': 1,
- 'disable_existing_loggers': False,
- 'filters': {
- 'require_debug_false': {
- '()': 'django.utils.log.RequireDebugFalse',
- },
- 'require_debug_true': {
- '()': 'django.utils.log.RequireDebugTrue',
- },
- },
- 'handlers': {
- 'console': {
- 'level': 'INFO',
- 'filters': ['require_debug_true'],
- 'class': 'logging.StreamHandler',
- },
- 'null': {
- 'class': 'django.utils.log.NullHandler',
- },
- 'mail_admins': {
- 'level': 'ERROR',
- 'filters': ['require_debug_false'],
- 'class': 'django.utils.log.AdminEmailHandler'
- }
- },
- 'loggers': {
- 'django': {
- 'handlers': ['console'],
- },
- 'django.request': {
- 'handlers': ['mail_admins'],
- 'level': 'ERROR',
- 'propagate': False,
- },
- 'django.security': {
- 'handlers': ['mail_admins'],
- 'level': 'ERROR',
- 'propagate': False,
- },
- 'py.warnings': {
- 'handlers': ['console'],
- },
- }
-}
-
-
-class AdminEmailHandler(logging.Handler):
- """An exception log handler that emails log entries to site admins.
-
- If the request is passed as the first argument to the log record,
- request data will be provided in the email report.
- """
-
- def __init__(self, include_html=False, email_backend=None):
- logging.Handler.__init__(self)
- self.include_html = include_html
- self.email_backend = email_backend
-
- def emit(self, record):
- try:
- request = record.request
- subject = '%s (%s IP): %s' % (
- record.levelname,
- ('internal' if request.META.get('REMOTE_ADDR') in settings.INTERNAL_IPS
- else 'EXTERNAL'),
- record.getMessage()
- )
- filter = get_exception_reporter_filter(request)
- request_repr = filter.get_request_repr(request)
- except Exception:
- subject = '%s: %s' % (
- record.levelname,
- record.getMessage()
- )
- request = None
- request_repr = "Request repr() unavailable."
- subject = self.format_subject(subject)
-
- if record.exc_info:
- exc_info = record.exc_info
- stack_trace = '\n'.join(traceback.format_exception(*record.exc_info))
- else:
- exc_info = (None, record.getMessage(), None)
- stack_trace = 'No stack trace available'
-
- message = "%s\n\n%s" % (stack_trace, request_repr)
- reporter = ExceptionReporter(request, is_email=True, *exc_info)
- html_message = reporter.get_traceback_html() if self.include_html else None
- mail.mail_admins(subject, message, fail_silently=True,
- html_message=html_message,
- connection=self.connection())
-
- def connection(self):
- return get_connection(backend=self.email_backend, fail_silently=True)
-
- def format_subject(self, subject):
- """
- Escape CR and LF characters, and limit length.
- RFC 2822's hard limit is 998 characters per line. So, minus "Subject: "
- the actual subject must be no longer than 989 characters.
- """
- formatted_subject = subject.replace('\n', '\\n').replace('\r', '\\r')
- return formatted_subject[:989]
-
-
-class CallbackFilter(logging.Filter):
- """
- A logging filter that checks the return value of a given callable (which
- takes the record-to-be-logged as its only parameter) to decide whether to
- log a record.
-
- """
- def __init__(self, callback):
- self.callback = callback
-
- def filter(self, record):
- if self.callback(record):
- return 1
- return 0
-
-
-class RequireDebugFalse(logging.Filter):
- def filter(self, record):
- return not settings.DEBUG
-
-
-class RequireDebugTrue(logging.Filter):
- def filter(self, record):
- return settings.DEBUG
diff --git a/lib/python2.7/site-packages/django/utils/module_loading.py b/lib/python2.7/site-packages/django/utils/module_loading.py
deleted file mode 100644
index ede585e..0000000
--- a/lib/python2.7/site-packages/django/utils/module_loading.py
+++ /dev/null
@@ -1,98 +0,0 @@
-import imp
-import os
-import sys
-
-from django.core.exceptions import ImproperlyConfigured
-from django.utils import six
-from django.utils.importlib import import_module
-
-
-def import_by_path(dotted_path, error_prefix=''):
- """
- Import a dotted module path and return the attribute/class designated by the
- last name in the path. Raise ImproperlyConfigured if something goes wrong.
- """
- try:
- module_path, class_name = dotted_path.rsplit('.', 1)
- except ValueError:
- raise ImproperlyConfigured("%s%s doesn't look like a module path" % (
- error_prefix, dotted_path))
- try:
- module = import_module(module_path)
- except ImportError as e:
- msg = '%sError importing module %s: "%s"' % (
- error_prefix, module_path, e)
- six.reraise(ImproperlyConfigured, ImproperlyConfigured(msg),
- sys.exc_info()[2])
- try:
- attr = getattr(module, class_name)
- except AttributeError:
- raise ImproperlyConfigured('%sModule "%s" does not define a "%s" attribute/class' % (
- error_prefix, module_path, class_name))
- return attr
-
-
-def module_has_submodule(package, module_name):
- """See if 'module' is in 'package'."""
- name = ".".join([package.__name__, module_name])
- try:
- # None indicates a cached miss; see mark_miss() in Python/import.c.
- return sys.modules[name] is not None
- except KeyError:
- pass
- try:
- package_path = package.__path__ # No __path__, then not a package.
- except AttributeError:
- # Since the remainder of this function assumes that we're dealing with
- # a package (module with a __path__), so if it's not, then bail here.
- return False
- for finder in sys.meta_path:
- if finder.find_module(name, package_path):
- return True
- for entry in package_path:
- try:
- # Try the cached finder.
- finder = sys.path_importer_cache[entry]
- if finder is None:
- # Implicit import machinery should be used.
- try:
- file_, _, _ = imp.find_module(module_name, [entry])
- if file_:
- file_.close()
- return True
- except ImportError:
- continue
- # Else see if the finder knows of a loader.
- elif finder.find_module(name):
- return True
- else:
- continue
- except KeyError:
- # No cached finder, so try and make one.
- for hook in sys.path_hooks:
- try:
- finder = hook(entry)
- # XXX Could cache in sys.path_importer_cache
- if finder.find_module(name):
- return True
- else:
- # Once a finder is found, stop the search.
- break
- except ImportError:
- # Continue the search for a finder.
- continue
- else:
- # No finder found.
- # Try the implicit import machinery if searching a directory.
- if os.path.isdir(entry):
- try:
- file_, _, _ = imp.find_module(module_name, [entry])
- if file_:
- file_.close()
- return True
- except ImportError:
- pass
- # XXX Could insert None or NullImporter
- else:
- # Exhausted the search, so the module cannot be found.
- return False
diff --git a/lib/python2.7/site-packages/django/utils/numberformat.py b/lib/python2.7/site-packages/django/utils/numberformat.py
deleted file mode 100644
index 6a31237..0000000
--- a/lib/python2.7/site-packages/django/utils/numberformat.py
+++ /dev/null
@@ -1,48 +0,0 @@
-from django.conf import settings
-from django.utils.safestring import mark_safe
-from django.utils import six
-
-
-def format(number, decimal_sep, decimal_pos=None, grouping=0, thousand_sep='',
- force_grouping=False):
- """
- Gets a number (as a number or string), and returns it as a string,
- using formats defined as arguments:
-
- * decimal_sep: Decimal separator symbol (for example ".")
- * decimal_pos: Number of decimal positions
- * grouping: Number of digits in every group limited by thousand separator
- * thousand_sep: Thousand separator symbol (for example ",")
- """
- use_grouping = settings.USE_L10N and settings.USE_THOUSAND_SEPARATOR
- use_grouping = use_grouping or force_grouping
- use_grouping = use_grouping and grouping > 0
- # Make the common case fast
- if isinstance(number, int) and not use_grouping and not decimal_pos:
- return mark_safe(six.text_type(number))
- # sign
- sign = ''
- str_number = six.text_type(number)
- if str_number[0] == '-':
- sign = '-'
- str_number = str_number[1:]
- # decimal part
- if '.' in str_number:
- int_part, dec_part = str_number.split('.')
- if decimal_pos is not None:
- dec_part = dec_part[:decimal_pos]
- else:
- int_part, dec_part = str_number, ''
- if decimal_pos is not None:
- dec_part = dec_part + ('0' * (decimal_pos - len(dec_part)))
- if dec_part:
- dec_part = decimal_sep + dec_part
- # grouping
- if use_grouping:
- int_part_gd = ''
- for cnt, digit in enumerate(int_part[::-1]):
- if cnt and not cnt % grouping:
- int_part_gd += thousand_sep
- int_part_gd += digit
- int_part = int_part_gd[::-1]
- return sign + int_part + dec_part
diff --git a/lib/python2.7/site-packages/django/utils/regex_helper.py b/lib/python2.7/site-packages/django/utils/regex_helper.py
deleted file mode 100644
index 7b40d14..0000000
--- a/lib/python2.7/site-packages/django/utils/regex_helper.py
+++ /dev/null
@@ -1,342 +0,0 @@
-"""
-Functions for reversing a regular expression (used in reverse URL resolving).
-Used internally by Django and not intended for external use.
-
-This is not, and is not intended to be, a complete reg-exp decompiler. It
-should be good enough for a large class of URLS, however.
-"""
-from __future__ import unicode_literals
-
-from django.utils import six
-from django.utils.six.moves import zip
-
-# Mapping of an escape character to a representative of that class. So, e.g.,
-# "\w" is replaced by "x" in a reverse URL. A value of None means to ignore
-# this sequence. Any missing key is mapped to itself.
-ESCAPE_MAPPINGS = {
- "A": None,
- "b": None,
- "B": None,
- "d": "0",
- "D": "x",
- "s": " ",
- "S": "x",
- "w": "x",
- "W": "!",
- "Z": None,
-}
-
-class Choice(list):
- """
- Used to represent multiple possibilities at this point in a pattern string.
- We use a distinguished type, rather than a list, so that the usage in the
- code is clear.
- """
-
-class Group(list):
- """
- Used to represent a capturing group in the pattern string.
- """
-
-class NonCapture(list):
- """
- Used to represent a non-capturing group in the pattern string.
- """
-
-def normalize(pattern):
- """
- Given a reg-exp pattern, normalizes it to an iterable of forms that
- suffice for reverse matching. This does the following:
-
- (1) For any repeating sections, keeps the minimum number of occurrences
- permitted (this means zero for optional groups).
- (2) If an optional group includes parameters, include one occurrence of
- that group (along with the zero occurrence case from step (1)).
- (3) Select the first (essentially an arbitrary) element from any character
- class. Select an arbitrary character for any unordered class (e.g. '.'
- or '\w') in the pattern.
- (5) Ignore comments and any of the reg-exp flags that won't change
- what we construct ("iLmsu"). "(?x)" is an error, however.
- (6) Raise an error on all other non-capturing (?...) forms (e.g.
- look-ahead and look-behind matches) and any disjunctive ('|')
- constructs.
-
- Django's URLs for forward resolving are either all positional arguments or
- all keyword arguments. That is assumed here, as well. Although reverse
- resolving can be done using positional args when keyword args are
- specified, the two cannot be mixed in the same reverse() call.
- """
- # Do a linear scan to work out the special features of this pattern. The
- # idea is that we scan once here and collect all the information we need to
- # make future decisions.
- result = []
- non_capturing_groups = []
- consume_next = True
- pattern_iter = next_char(iter(pattern))
- num_args = 0
-
- # A "while" loop is used here because later on we need to be able to peek
- # at the next character and possibly go around without consuming another
- # one at the top of the loop.
- try:
- ch, escaped = next(pattern_iter)
- except StopIteration:
- return [('', [])]
-
- try:
- while True:
- if escaped:
- result.append(ch)
- elif ch == '.':
- # Replace "any character" with an arbitrary representative.
- result.append(".")
- elif ch == '|':
- # FIXME: One day we'll should do this, but not in 1.0.
- raise NotImplementedError
- elif ch == "^":
- pass
- elif ch == '$':
- break
- elif ch == ')':
- # This can only be the end of a non-capturing group, since all
- # other unescaped parentheses are handled by the grouping
- # section later (and the full group is handled there).
- #
- # We regroup everything inside the capturing group so that it
- # can be quantified, if necessary.
- start = non_capturing_groups.pop()
- inner = NonCapture(result[start:])
- result = result[:start] + [inner]
- elif ch == '[':
- # Replace ranges with the first character in the range.
- ch, escaped = next(pattern_iter)
- result.append(ch)
- ch, escaped = next(pattern_iter)
- while escaped or ch != ']':
- ch, escaped = next(pattern_iter)
- elif ch == '(':
- # Some kind of group.
- ch, escaped = next(pattern_iter)
- if ch != '?' or escaped:
- # A positional group
- name = "_%d" % num_args
- num_args += 1
- result.append(Group((("%%(%s)s" % name), name)))
- walk_to_end(ch, pattern_iter)
- else:
- ch, escaped = next(pattern_iter)
- if ch in "iLmsu#":
- # All of these are ignorable. Walk to the end of the
- # group.
- walk_to_end(ch, pattern_iter)
- elif ch == ':':
- # Non-capturing group
- non_capturing_groups.append(len(result))
- elif ch != 'P':
- # Anything else, other than a named group, is something
- # we cannot reverse.
- raise ValueError("Non-reversible reg-exp portion: '(?%s'" % ch)
- else:
- ch, escaped = next(pattern_iter)
- if ch not in ('<', '='):
- raise ValueError("Non-reversible reg-exp portion: '(?P%s'" % ch)
- # We are in a named capturing group. Extra the name and
- # then skip to the end.
- if ch == '<':
- terminal_char = '>'
- # We are in a named backreference.
- else:
- terminal_char = ')'
- name = []
- ch, escaped = next(pattern_iter)
- while ch != terminal_char:
- name.append(ch)
- ch, escaped = next(pattern_iter)
- param = ''.join(name)
- # Named backreferences have already consumed the
- # parenthesis.
- if terminal_char != ')':
- result.append(Group((("%%(%s)s" % param), param)))
- walk_to_end(ch, pattern_iter)
- else:
- result.append(Group((("%%(%s)s" % param), None)))
- elif ch in "*?+{":
- # Quanitifers affect the previous item in the result list.
- count, ch = get_quantifier(ch, pattern_iter)
- if ch:
- # We had to look ahead, but it wasn't need to compute the
- # quanitifer, so use this character next time around the
- # main loop.
- consume_next = False
-
- if count == 0:
- if contains(result[-1], Group):
- # If we are quantifying a capturing group (or
- # something containing such a group) and the minimum is
- # zero, we must also handle the case of one occurrence
- # being present. All the quantifiers (except {0,0},
- # which we conveniently ignore) that have a 0 minimum
- # also allow a single occurrence.
- result[-1] = Choice([None, result[-1]])
- else:
- result.pop()
- elif count > 1:
- result.extend([result[-1]] * (count - 1))
- else:
- # Anything else is a literal.
- result.append(ch)
-
- if consume_next:
- ch, escaped = next(pattern_iter)
- else:
- consume_next = True
- except StopIteration:
- pass
- except NotImplementedError:
- # A case of using the disjunctive form. No results for you!
- return [('', [])]
-
- return list(zip(*flatten_result(result)))
-
-def next_char(input_iter):
- """
- An iterator that yields the next character from "pattern_iter", respecting
- escape sequences. An escaped character is replaced by a representative of
- its class (e.g. \w -> "x"). If the escaped character is one that is
- skipped, it is not returned (the next character is returned instead).
-
- Yields the next character, along with a boolean indicating whether it is a
- raw (unescaped) character or not.
- """
- for ch in input_iter:
- if ch != '\\':
- yield ch, False
- continue
- ch = next(input_iter)
- representative = ESCAPE_MAPPINGS.get(ch, ch)
- if representative is None:
- continue
- yield representative, True
-
-def walk_to_end(ch, input_iter):
- """
- The iterator is currently inside a capturing group. We want to walk to the
- close of this group, skipping over any nested groups and handling escaped
- parentheses correctly.
- """
- if ch == '(':
- nesting = 1
- else:
- nesting = 0
- for ch, escaped in input_iter:
- if escaped:
- continue
- elif ch == '(':
- nesting += 1
- elif ch == ')':
- if not nesting:
- return
- nesting -= 1
-
-def get_quantifier(ch, input_iter):
- """
- Parse a quantifier from the input, where "ch" is the first character in the
- quantifier.
-
- Returns the minimum number of occurences permitted by the quantifier and
- either None or the next character from the input_iter if the next character
- is not part of the quantifier.
- """
- if ch in '*?+':
- try:
- ch2, escaped = next(input_iter)
- except StopIteration:
- ch2 = None
- if ch2 == '?':
- ch2 = None
- if ch == '+':
- return 1, ch2
- return 0, ch2
-
- quant = []
- while ch != '}':
- ch, escaped = next(input_iter)
- quant.append(ch)
- quant = quant[:-1]
- values = ''.join(quant).split(',')
-
- # Consume the trailing '?', if necessary.
- try:
- ch, escaped = next(input_iter)
- except StopIteration:
- ch = None
- if ch == '?':
- ch = None
- return int(values[0]), ch
-
-def contains(source, inst):
- """
- Returns True if the "source" contains an instance of "inst". False,
- otherwise.
- """
- if isinstance(source, inst):
- return True
- if isinstance(source, NonCapture):
- for elt in source:
- if contains(elt, inst):
- return True
- return False
-
-def flatten_result(source):
- """
- Turns the given source sequence into a list of reg-exp possibilities and
- their arguments. Returns a list of strings and a list of argument lists.
- Each of the two lists will be of the same length.
- """
- if source is None:
- return [''], [[]]
- if isinstance(source, Group):
- if source[1] is None:
- params = []
- else:
- params = [source[1]]
- return [source[0]], [params]
- result = ['']
- result_args = [[]]
- pos = last = 0
- for pos, elt in enumerate(source):
- if isinstance(elt, six.string_types):
- continue
- piece = ''.join(source[last:pos])
- if isinstance(elt, Group):
- piece += elt[0]
- param = elt[1]
- else:
- param = None
- last = pos + 1
- for i in range(len(result)):
- result[i] += piece
- if param:
- result_args[i].append(param)
- if isinstance(elt, (Choice, NonCapture)):
- if isinstance(elt, NonCapture):
- elt = [elt]
- inner_result, inner_args = [], []
- for item in elt:
- res, args = flatten_result(item)
- inner_result.extend(res)
- inner_args.extend(args)
- new_result = []
- new_args = []
- for item, args in zip(result, result_args):
- for i_item, i_args in zip(inner_result, inner_args):
- new_result.append(item + i_item)
- new_args.append(args[:] + i_args)
- result = new_result
- result_args = new_args
- if pos >= last:
- piece = ''.join(source[last:])
- for i in range(len(result)):
- result[i] += piece
- return result, result_args
-
diff --git a/lib/python2.7/site-packages/django/utils/safestring.py b/lib/python2.7/site-packages/django/utils/safestring.py
deleted file mode 100644
index 07e0bf4..0000000
--- a/lib/python2.7/site-packages/django/utils/safestring.py
+++ /dev/null
@@ -1,134 +0,0 @@
-"""
-Functions for working with "safe strings": strings that can be displayed safely
-without further escaping in HTML. Marking something as a "safe string" means
-that the producer of the string has already turned characters that should not
-be interpreted by the HTML engine (e.g. '<') into the appropriate entities.
-"""
-from django.utils.functional import curry, Promise
-from django.utils import six
-
-class EscapeData(object):
- pass
-
-class EscapeBytes(bytes, EscapeData):
- """
- A byte string that should be HTML-escaped when output.
- """
- pass
-
-class EscapeText(six.text_type, EscapeData):
- """
- A unicode string object that should be HTML-escaped when output.
- """
- pass
-
-if six.PY3:
- EscapeString = EscapeText
-else:
- EscapeString = EscapeBytes
- # backwards compatibility for Python 2
- EscapeUnicode = EscapeText
-
-class SafeData(object):
- pass
-
-class SafeBytes(bytes, SafeData):
- """
- A bytes subclass that has been specifically marked as "safe" (requires no
- further escaping) for HTML output purposes.
- """
- def __add__(self, rhs):
- """
- Concatenating a safe byte string with another safe byte string or safe
- unicode string is safe. Otherwise, the result is no longer safe.
- """
- t = super(SafeBytes, self).__add__(rhs)
- if isinstance(rhs, SafeText):
- return SafeText(t)
- elif isinstance(rhs, SafeBytes):
- return SafeBytes(t)
- return t
-
- def _proxy_method(self, *args, **kwargs):
- """
- Wrap a call to a normal unicode method up so that we return safe
- results. The method that is being wrapped is passed in the 'method'
- argument.
- """
- method = kwargs.pop('method')
- data = method(self, *args, **kwargs)
- if isinstance(data, bytes):
- return SafeBytes(data)
- else:
- return SafeText(data)
-
- decode = curry(_proxy_method, method=bytes.decode)
-
-class SafeText(six.text_type, SafeData):
- """
- A unicode (Python 2) / str (Python 3) subclass that has been specifically
- marked as "safe" for HTML output purposes.
- """
- def __add__(self, rhs):
- """
- Concatenating a safe unicode string with another safe byte string or
- safe unicode string is safe. Otherwise, the result is no longer safe.
- """
- t = super(SafeText, self).__add__(rhs)
- if isinstance(rhs, SafeData):
- return SafeText(t)
- return t
-
- def _proxy_method(self, *args, **kwargs):
- """
- Wrap a call to a normal unicode method up so that we return safe
- results. The method that is being wrapped is passed in the 'method'
- argument.
- """
- method = kwargs.pop('method')
- data = method(self, *args, **kwargs)
- if isinstance(data, bytes):
- return SafeBytes(data)
- else:
- return SafeText(data)
-
- encode = curry(_proxy_method, method=six.text_type.encode)
-
-if six.PY3:
- SafeString = SafeText
-else:
- SafeString = SafeBytes
- # backwards compatibility for Python 2
- SafeUnicode = SafeText
-
-def mark_safe(s):
- """
- Explicitly mark a string as safe for (HTML) output purposes. The returned
- object can be used everywhere a string or unicode object is appropriate.
-
- Can be called multiple times on a single string.
- """
- if isinstance(s, SafeData):
- return s
- if isinstance(s, bytes) or (isinstance(s, Promise) and s._delegate_bytes):
- return SafeBytes(s)
- if isinstance(s, (six.text_type, Promise)):
- return SafeText(s)
- return SafeString(str(s))
-
-def mark_for_escaping(s):
- """
- Explicitly mark a string as requiring HTML escaping upon output. Has no
- effect on SafeData subclasses.
-
- Can be called multiple times on a single string (the resulting escaping is
- only applied once).
- """
- if isinstance(s, (SafeData, EscapeData)):
- return s
- if isinstance(s, bytes) or (isinstance(s, Promise) and s._delegate_bytes):
- return EscapeBytes(s)
- if isinstance(s, (six.text_type, Promise)):
- return EscapeText(s)
- return EscapeBytes(bytes(s))
-
diff --git a/lib/python2.7/site-packages/django/utils/simplejson.py b/lib/python2.7/site-packages/django/utils/simplejson.py
deleted file mode 100644
index d4032a6..0000000
--- a/lib/python2.7/site-packages/django/utils/simplejson.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# Django 1.5 only supports Python >= 2.6, where the standard library includes
-# the json module. Previous version of Django shipped a copy for Python < 2.6.
-
-# For backwards compatibility, we're keeping an importable json module
-# at this location, with the same lookup sequence.
-
-# Avoid shadowing the simplejson module
-from __future__ import absolute_import
-
-import warnings
-warnings.warn("django.utils.simplejson is deprecated; use json instead.",
- DeprecationWarning, stacklevel=2)
-
-try:
- import simplejson
-except ImportError:
- use_simplejson = False
-else:
- # The system-installed version has priority providing it is either not an
- # earlier version or it contains the C speedups.
- from json import __version__ as stdlib_json_version
- use_simplejson = (hasattr(simplejson, '_speedups') or
- simplejson.__version__.split('.') >= stdlib_json_version.split('.'))
-
-# Make sure we copy over the version. See #17071
-if use_simplejson:
- from simplejson import *
- from simplejson import __version__
-else:
- from json import *
- from json import __version__
diff --git a/lib/python2.7/site-packages/django/utils/six.py b/lib/python2.7/site-packages/django/utils/six.py
deleted file mode 100644
index 26370d7..0000000
--- a/lib/python2.7/site-packages/django/utils/six.py
+++ /dev/null
@@ -1,676 +0,0 @@
-"""Utilities for writing code that runs on Python 2 and 3"""
-
-# Copyright (c) 2010-2014 Benjamin Peterson
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in all
-# copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-import operator
-import sys
-import types
-
-__author__ = "Benjamin Peterson <benjamin@python.org>"
-__version__ = "1.6.1"
-
-
-# Useful for very coarse version differentiation.
-PY2 = sys.version_info[0] == 2
-PY3 = sys.version_info[0] == 3
-
-if PY3:
- string_types = str,
- integer_types = int,
- class_types = type,
- text_type = str
- binary_type = bytes
-
- MAXSIZE = sys.maxsize
-else:
- string_types = basestring,
- integer_types = (int, long)
- class_types = (type, types.ClassType)
- text_type = unicode
- binary_type = str
-
- if sys.platform.startswith("java"):
- # Jython always uses 32 bits.
- MAXSIZE = int((1 << 31) - 1)
- else:
- # It's possible to have sizeof(long) != sizeof(Py_ssize_t).
- class X(object):
- def __len__(self):
- return 1 << 31
- try:
- len(X())
- except OverflowError:
- # 32-bit
- MAXSIZE = int((1 << 31) - 1)
- else:
- # 64-bit
- MAXSIZE = int((1 << 63) - 1)
- del X
-
-
-def _add_doc(func, doc):
- """Add documentation to a function."""
- func.__doc__ = doc
-
-
-def _import_module(name):
- """Import module, returning the module after the last dot."""
- __import__(name)
- return sys.modules[name]
-
-
-class _LazyDescr(object):
-
- def __init__(self, name):
- self.name = name
-
- def __get__(self, obj, tp):
- try:
- result = self._resolve()
- except ImportError:
- # See the nice big comment in MovedModule.__getattr__.
- raise AttributeError("%s could not be imported " % self.name)
- setattr(obj, self.name, result) # Invokes __set__.
- # This is a bit ugly, but it avoids running this again.
- delattr(obj.__class__, self.name)
- return result
-
-
-class MovedModule(_LazyDescr):
-
- def __init__(self, name, old, new=None):
- super(MovedModule, self).__init__(name)
- if PY3:
- if new is None:
- new = name
- self.mod = new
- else:
- self.mod = old
-
- def _resolve(self):
- return _import_module(self.mod)
-
- def __getattr__(self, attr):
- # It turns out many Python frameworks like to traverse sys.modules and
- # try to load various attributes. This causes problems if this is a
- # platform-specific module on the wrong platform, like _winreg on
- # Unixes. Therefore, we silently pretend unimportable modules do not
- # have any attributes. See issues #51, #53, #56, and #63 for the full
- # tales of woe.
- #
- # First, if possible, avoid loading the module just to look at __file__,
- # __name__, or __path__.
- if (attr in ("__file__", "__name__", "__path__") and
- self.mod not in sys.modules):
- raise AttributeError(attr)
- try:
- _module = self._resolve()
- except ImportError:
- raise AttributeError(attr)
- value = getattr(_module, attr)
- setattr(self, attr, value)
- return value
-
-
-class _LazyModule(types.ModuleType):
-
- def __init__(self, name):
- super(_LazyModule, self).__init__(name)
- self.__doc__ = self.__class__.__doc__
-
- def __dir__(self):
- attrs = ["__doc__", "__name__"]
- attrs += [attr.name for attr in self._moved_attributes]
- return attrs
-
- # Subclasses should override this
- _moved_attributes = []
-
-
-class MovedAttribute(_LazyDescr):
-
- def __init__(self, name, old_mod, new_mod, old_attr=None, new_attr=None):
- super(MovedAttribute, self).__init__(name)
- if PY3:
- if new_mod is None:
- new_mod = name
- self.mod = new_mod
- if new_attr is None:
- if old_attr is None:
- new_attr = name
- else:
- new_attr = old_attr
- self.attr = new_attr
- else:
- self.mod = old_mod
- if old_attr is None:
- old_attr = name
- self.attr = old_attr
-
- def _resolve(self):
- module = _import_module(self.mod)
- return getattr(module, self.attr)
-
-
-
-class _MovedItems(_LazyModule):
- """Lazy loading of moved objects"""
-
-
-_moved_attributes = [
- MovedAttribute("cStringIO", "cStringIO", "io", "StringIO"),
- MovedAttribute("filter", "itertools", "builtins", "ifilter", "filter"),
- MovedAttribute("filterfalse", "itertools", "itertools", "ifilterfalse", "filterfalse"),
- MovedAttribute("input", "__builtin__", "builtins", "raw_input", "input"),
- MovedAttribute("map", "itertools", "builtins", "imap", "map"),
- MovedAttribute("range", "__builtin__", "builtins", "xrange", "range"),
- MovedAttribute("reload_module", "__builtin__", "imp", "reload"),
- MovedAttribute("reduce", "__builtin__", "functools"),
- MovedAttribute("StringIO", "StringIO", "io"),
- MovedAttribute("UserString", "UserString", "collections"),
- MovedAttribute("xrange", "__builtin__", "builtins", "xrange", "range"),
- MovedAttribute("zip", "itertools", "builtins", "izip", "zip"),
- MovedAttribute("zip_longest", "itertools", "itertools", "izip_longest", "zip_longest"),
-
- MovedModule("builtins", "__builtin__"),
- MovedModule("configparser", "ConfigParser"),
- MovedModule("copyreg", "copy_reg"),
- MovedModule("dbm_gnu", "gdbm", "dbm.gnu"),
- MovedModule("http_cookiejar", "cookielib", "http.cookiejar"),
- MovedModule("http_cookies", "Cookie", "http.cookies"),
- MovedModule("html_entities", "htmlentitydefs", "html.entities"),
- MovedModule("html_parser", "HTMLParser", "html.parser"),
- MovedModule("http_client", "httplib", "http.client"),
- MovedModule("email_mime_multipart", "email.MIMEMultipart", "email.mime.multipart"),
- MovedModule("email_mime_text", "email.MIMEText", "email.mime.text"),
- MovedModule("email_mime_base", "email.MIMEBase", "email.mime.base"),
- MovedModule("BaseHTTPServer", "BaseHTTPServer", "http.server"),
- MovedModule("CGIHTTPServer", "CGIHTTPServer", "http.server"),
- MovedModule("SimpleHTTPServer", "SimpleHTTPServer", "http.server"),
- MovedModule("cPickle", "cPickle", "pickle"),
- MovedModule("queue", "Queue"),
- MovedModule("reprlib", "repr"),
- MovedModule("socketserver", "SocketServer"),
- MovedModule("_thread", "thread", "_thread"),
- MovedModule("tkinter", "Tkinter"),
- MovedModule("tkinter_dialog", "Dialog", "tkinter.dialog"),
- MovedModule("tkinter_filedialog", "FileDialog", "tkinter.filedialog"),
- MovedModule("tkinter_scrolledtext", "ScrolledText", "tkinter.scrolledtext"),
- MovedModule("tkinter_simpledialog", "SimpleDialog", "tkinter.simpledialog"),
- MovedModule("tkinter_tix", "Tix", "tkinter.tix"),
- MovedModule("tkinter_ttk", "ttk", "tkinter.ttk"),
- MovedModule("tkinter_constants", "Tkconstants", "tkinter.constants"),
- MovedModule("tkinter_dnd", "Tkdnd", "tkinter.dnd"),
- MovedModule("tkinter_colorchooser", "tkColorChooser",
- "tkinter.colorchooser"),
- MovedModule("tkinter_commondialog", "tkCommonDialog",
- "tkinter.commondialog"),
- MovedModule("tkinter_tkfiledialog", "tkFileDialog", "tkinter.filedialog"),
- MovedModule("tkinter_font", "tkFont", "tkinter.font"),
- MovedModule("tkinter_messagebox", "tkMessageBox", "tkinter.messagebox"),
- MovedModule("tkinter_tksimpledialog", "tkSimpleDialog",
- "tkinter.simpledialog"),
- MovedModule("urllib_parse", __name__ + ".moves.urllib_parse", "urllib.parse"),
- MovedModule("urllib_error", __name__ + ".moves.urllib_error", "urllib.error"),
- MovedModule("urllib", __name__ + ".moves.urllib", __name__ + ".moves.urllib"),
- MovedModule("urllib_robotparser", "robotparser", "urllib.robotparser"),
- MovedModule("xmlrpc_client", "xmlrpclib", "xmlrpc.client"),
- MovedModule("xmlrpc_server", "xmlrpclib", "xmlrpc.server"),
- MovedModule("winreg", "_winreg"),
-]
-for attr in _moved_attributes:
- setattr(_MovedItems, attr.name, attr)
- if isinstance(attr, MovedModule):
- sys.modules[__name__ + ".moves." + attr.name] = attr
-del attr
-
-_MovedItems._moved_attributes = _moved_attributes
-
-moves = sys.modules[__name__ + ".moves"] = _MovedItems(__name__ + ".moves")
-
-
-class Module_six_moves_urllib_parse(_LazyModule):
- """Lazy loading of moved objects in six.moves.urllib_parse"""
-
-
-_urllib_parse_moved_attributes = [
- MovedAttribute("ParseResult", "urlparse", "urllib.parse"),
- MovedAttribute("SplitResult", "urlparse", "urllib.parse"),
- MovedAttribute("parse_qs", "urlparse", "urllib.parse"),
- MovedAttribute("parse_qsl", "urlparse", "urllib.parse"),
- MovedAttribute("urldefrag", "urlparse", "urllib.parse"),
- MovedAttribute("urljoin", "urlparse", "urllib.parse"),
- MovedAttribute("urlparse", "urlparse", "urllib.parse"),
- MovedAttribute("urlsplit", "urlparse", "urllib.parse"),
- MovedAttribute("urlunparse", "urlparse", "urllib.parse"),
- MovedAttribute("urlunsplit", "urlparse", "urllib.parse"),
- MovedAttribute("quote", "urllib", "urllib.parse"),
- MovedAttribute("quote_plus", "urllib", "urllib.parse"),
- MovedAttribute("unquote", "urllib", "urllib.parse"),
- MovedAttribute("unquote_plus", "urllib", "urllib.parse"),
- MovedAttribute("urlencode", "urllib", "urllib.parse"),
- MovedAttribute("splitquery", "urllib", "urllib.parse"),
-]
-for attr in _urllib_parse_moved_attributes:
- setattr(Module_six_moves_urllib_parse, attr.name, attr)
-del attr
-
-Module_six_moves_urllib_parse._moved_attributes = _urllib_parse_moved_attributes
-
-sys.modules[__name__ + ".moves.urllib_parse"] = sys.modules[__name__ + ".moves.urllib.parse"] = Module_six_moves_urllib_parse(__name__ + ".moves.urllib_parse")
-
-
-class Module_six_moves_urllib_error(_LazyModule):
- """Lazy loading of moved objects in six.moves.urllib_error"""
-
-
-_urllib_error_moved_attributes = [
- MovedAttribute("URLError", "urllib2", "urllib.error"),
- MovedAttribute("HTTPError", "urllib2", "urllib.error"),
- MovedAttribute("ContentTooShortError", "urllib", "urllib.error"),
-]
-for attr in _urllib_error_moved_attributes:
- setattr(Module_six_moves_urllib_error, attr.name, attr)
-del attr
-
-Module_six_moves_urllib_error._moved_attributes = _urllib_error_moved_attributes
-
-sys.modules[__name__ + ".moves.urllib_error"] = sys.modules[__name__ + ".moves.urllib.error"] = Module_six_moves_urllib_error(__name__ + ".moves.urllib.error")
-
-
-class Module_six_moves_urllib_request(_LazyModule):
- """Lazy loading of moved objects in six.moves.urllib_request"""
-
-
-_urllib_request_moved_attributes = [
- MovedAttribute("urlopen", "urllib2", "urllib.request"),
- MovedAttribute("install_opener", "urllib2", "urllib.request"),
- MovedAttribute("build_opener", "urllib2", "urllib.request"),
- MovedAttribute("pathname2url", "urllib", "urllib.request"),
- MovedAttribute("url2pathname", "urllib", "urllib.request"),
- MovedAttribute("getproxies", "urllib", "urllib.request"),
- MovedAttribute("Request", "urllib2", "urllib.request"),
- MovedAttribute("OpenerDirector", "urllib2", "urllib.request"),
- MovedAttribute("HTTPDefaultErrorHandler", "urllib2", "urllib.request"),
- MovedAttribute("HTTPRedirectHandler", "urllib2", "urllib.request"),
- MovedAttribute("HTTPCookieProcessor", "urllib2", "urllib.request"),
- MovedAttribute("ProxyHandler", "urllib2", "urllib.request"),
- MovedAttribute("BaseHandler", "urllib2", "urllib.request"),
- MovedAttribute("HTTPPasswordMgr", "urllib2", "urllib.request"),
- MovedAttribute("HTTPPasswordMgrWithDefaultRealm", "urllib2", "urllib.request"),
- MovedAttribute("AbstractBasicAuthHandler", "urllib2", "urllib.request"),
- MovedAttribute("HTTPBasicAuthHandler", "urllib2", "urllib.request"),
- MovedAttribute("ProxyBasicAuthHandler", "urllib2", "urllib.request"),
- MovedAttribute("AbstractDigestAuthHandler", "urllib2", "urllib.request"),
- MovedAttribute("HTTPDigestAuthHandler", "urllib2", "urllib.request"),
- MovedAttribute("ProxyDigestAuthHandler", "urllib2", "urllib.request"),
- MovedAttribute("HTTPHandler", "urllib2", "urllib.request"),
- MovedAttribute("HTTPSHandler", "urllib2", "urllib.request"),
- MovedAttribute("FileHandler", "urllib2", "urllib.request"),
- MovedAttribute("FTPHandler", "urllib2", "urllib.request"),
- MovedAttribute("CacheFTPHandler", "urllib2", "urllib.request"),
- MovedAttribute("UnknownHandler", "urllib2", "urllib.request"),
- MovedAttribute("HTTPErrorProcessor", "urllib2", "urllib.request"),
- MovedAttribute("urlretrieve", "urllib", "urllib.request"),
- MovedAttribute("urlcleanup", "urllib", "urllib.request"),
- MovedAttribute("URLopener", "urllib", "urllib.request"),
- MovedAttribute("FancyURLopener", "urllib", "urllib.request"),
- MovedAttribute("proxy_bypass", "urllib", "urllib.request"),
-]
-for attr in _urllib_request_moved_attributes:
- setattr(Module_six_moves_urllib_request, attr.name, attr)
-del attr
-
-Module_six_moves_urllib_request._moved_attributes = _urllib_request_moved_attributes
-
-sys.modules[__name__ + ".moves.urllib_request"] = sys.modules[__name__ + ".moves.urllib.request"] = Module_six_moves_urllib_request(__name__ + ".moves.urllib.request")
-
-
-class Module_six_moves_urllib_response(_LazyModule):
- """Lazy loading of moved objects in six.moves.urllib_response"""
-
-
-_urllib_response_moved_attributes = [
- MovedAttribute("addbase", "urllib", "urllib.response"),
- MovedAttribute("addclosehook", "urllib", "urllib.response"),
- MovedAttribute("addinfo", "urllib", "urllib.response"),
- MovedAttribute("addinfourl", "urllib", "urllib.response"),
-]
-for attr in _urllib_response_moved_attributes:
- setattr(Module_six_moves_urllib_response, attr.name, attr)
-del attr
-
-Module_six_moves_urllib_response._moved_attributes = _urllib_response_moved_attributes
-
-sys.modules[__name__ + ".moves.urllib_response"] = sys.modules[__name__ + ".moves.urllib.response"] = Module_six_moves_urllib_response(__name__ + ".moves.urllib.response")
-
-
-class Module_six_moves_urllib_robotparser(_LazyModule):
- """Lazy loading of moved objects in six.moves.urllib_robotparser"""
-
-
-_urllib_robotparser_moved_attributes = [
- MovedAttribute("RobotFileParser", "robotparser", "urllib.robotparser"),
-]
-for attr in _urllib_robotparser_moved_attributes:
- setattr(Module_six_moves_urllib_robotparser, attr.name, attr)
-del attr
-
-Module_six_moves_urllib_robotparser._moved_attributes = _urllib_robotparser_moved_attributes
-
-sys.modules[__name__ + ".moves.urllib_robotparser"] = sys.modules[__name__ + ".moves.urllib.robotparser"] = Module_six_moves_urllib_robotparser(__name__ + ".moves.urllib.robotparser")
-
-
-class Module_six_moves_urllib(types.ModuleType):
- """Create a six.moves.urllib namespace that resembles the Python 3 namespace"""
- parse = sys.modules[__name__ + ".moves.urllib_parse"]
- error = sys.modules[__name__ + ".moves.urllib_error"]
- request = sys.modules[__name__ + ".moves.urllib_request"]
- response = sys.modules[__name__ + ".moves.urllib_response"]
- robotparser = sys.modules[__name__ + ".moves.urllib_robotparser"]
-
- def __dir__(self):
- return ['parse', 'error', 'request', 'response', 'robotparser']
-
-
-sys.modules[__name__ + ".moves.urllib"] = Module_six_moves_urllib(__name__ + ".moves.urllib")
-
-
-def add_move(move):
- """Add an item to six.moves."""
- setattr(_MovedItems, move.name, move)
-
-
-def remove_move(name):
- """Remove item from six.moves."""
- try:
- delattr(_MovedItems, name)
- except AttributeError:
- try:
- del moves.__dict__[name]
- except KeyError:
- raise AttributeError("no such move, %r" % (name,))
-
-
-if PY3:
- _meth_func = "__func__"
- _meth_self = "__self__"
-
- _func_closure = "__closure__"
- _func_code = "__code__"
- _func_defaults = "__defaults__"
- _func_globals = "__globals__"
-
- _iterkeys = "keys"
- _itervalues = "values"
- _iteritems = "items"
- _iterlists = "lists"
-else:
- _meth_func = "im_func"
- _meth_self = "im_self"
-
- _func_closure = "func_closure"
- _func_code = "func_code"
- _func_defaults = "func_defaults"
- _func_globals = "func_globals"
-
- _iterkeys = "iterkeys"
- _itervalues = "itervalues"
- _iteritems = "iteritems"
- _iterlists = "iterlists"
-
-
-try:
- advance_iterator = next
-except NameError:
- def advance_iterator(it):
- return it.next()
-next = advance_iterator
-
-
-try:
- callable = callable
-except NameError:
- def callable(obj):
- return any("__call__" in klass.__dict__ for klass in type(obj).__mro__)
-
-
-if PY3:
- def get_unbound_function(unbound):
- return unbound
-
- create_bound_method = types.MethodType
-
- Iterator = object
-else:
- def get_unbound_function(unbound):
- return unbound.im_func
-
- def create_bound_method(func, obj):
- return types.MethodType(func, obj, obj.__class__)
-
- class Iterator(object):
-
- def next(self):
- return type(self).__next__(self)
-
- callable = callable
-_add_doc(get_unbound_function,
- """Get the function out of a possibly unbound function""")
-
-
-get_method_function = operator.attrgetter(_meth_func)
-get_method_self = operator.attrgetter(_meth_self)
-get_function_closure = operator.attrgetter(_func_closure)
-get_function_code = operator.attrgetter(_func_code)
-get_function_defaults = operator.attrgetter(_func_defaults)
-get_function_globals = operator.attrgetter(_func_globals)
-
-
-def iterkeys(d, **kw):
- """Return an iterator over the keys of a dictionary."""
- return iter(getattr(d, _iterkeys)(**kw))
-
-def itervalues(d, **kw):
- """Return an iterator over the values of a dictionary."""
- return iter(getattr(d, _itervalues)(**kw))
-
-def iteritems(d, **kw):
- """Return an iterator over the (key, value) pairs of a dictionary."""
- return iter(getattr(d, _iteritems)(**kw))
-
-def iterlists(d, **kw):
- """Return an iterator over the (key, [values]) pairs of a dictionary."""
- return iter(getattr(d, _iterlists)(**kw))
-
-
-if PY3:
- def b(s):
- return s.encode("latin-1")
- def u(s):
- return s
- unichr = chr
- if sys.version_info[1] <= 1:
- def int2byte(i):
- return bytes((i,))
- else:
- # This is about 2x faster than the implementation above on 3.2+
- int2byte = operator.methodcaller("to_bytes", 1, "big")
- byte2int = operator.itemgetter(0)
- indexbytes = operator.getitem
- iterbytes = iter
- import io
- StringIO = io.StringIO
- BytesIO = io.BytesIO
-else:
- def b(s):
- return s
- # Workaround for standalone backslash
- def u(s):
- return unicode(s.replace(r'\\', r'\\\\'), "unicode_escape")
- unichr = unichr
- int2byte = chr
- def byte2int(bs):
- return ord(bs[0])
- def indexbytes(buf, i):
- return ord(buf[i])
- def iterbytes(buf):
- return (ord(byte) for byte in buf)
- import StringIO
- StringIO = BytesIO = StringIO.StringIO
-_add_doc(b, """Byte literal""")
-_add_doc(u, """Text literal""")
-
-
-if PY3:
- exec_ = getattr(moves.builtins, "exec")
-
-
- def reraise(tp, value, tb=None):
- if value.__traceback__ is not tb:
- raise value.with_traceback(tb)
- raise value
-
-else:
- def exec_(_code_, _globs_=None, _locs_=None):
- """Execute code in a namespace."""
- if _globs_ is None:
- frame = sys._getframe(1)
- _globs_ = frame.f_globals
- if _locs_ is None:
- _locs_ = frame.f_locals
- del frame
- elif _locs_ is None:
- _locs_ = _globs_
- exec("""exec _code_ in _globs_, _locs_""")
-
-
- exec_("""def reraise(tp, value, tb=None):
- raise tp, value, tb
-""")
-
-
-print_ = getattr(moves.builtins, "print", None)
-if print_ is None:
- def print_(*args, **kwargs):
- """The new-style print function for Python 2.4 and 2.5."""
- fp = kwargs.pop("file", sys.stdout)
- if fp is None:
- return
- def write(data):
- if not isinstance(data, basestring):
- data = str(data)
- # If the file has an encoding, encode unicode with it.
- if (isinstance(fp, file) and
- isinstance(data, unicode) and
- fp.encoding is not None):
- errors = getattr(fp, "errors", None)
- if errors is None:
- errors = "strict"
- data = data.encode(fp.encoding, errors)
- fp.write(data)
- want_unicode = False
- sep = kwargs.pop("sep", None)
- if sep is not None:
- if isinstance(sep, unicode):
- want_unicode = True
- elif not isinstance(sep, str):
- raise TypeError("sep must be None or a string")
- end = kwargs.pop("end", None)
- if end is not None:
- if isinstance(end, unicode):
- want_unicode = True
- elif not isinstance(end, str):
- raise TypeError("end must be None or a string")
- if kwargs:
- raise TypeError("invalid keyword arguments to print()")
- if not want_unicode:
- for arg in args:
- if isinstance(arg, unicode):
- want_unicode = True
- break
- if want_unicode:
- newline = unicode("\n")
- space = unicode(" ")
- else:
- newline = "\n"
- space = " "
- if sep is None:
- sep = space
- if end is None:
- end = newline
- for i, arg in enumerate(args):
- if i:
- write(sep)
- write(arg)
- write(end)
-
-_add_doc(reraise, """Reraise an exception.""")
-
-
-def with_metaclass(meta, *bases):
- """Create a base class with a metaclass."""
- return meta("NewBase", bases, {})
-
-def add_metaclass(metaclass):
- """Class decorator for creating a class with a metaclass."""
- def wrapper(cls):
- orig_vars = cls.__dict__.copy()
- orig_vars.pop('__dict__', None)
- orig_vars.pop('__weakref__', None)
- slots = orig_vars.get('__slots__')
- if slots is not None:
- if isinstance(slots, str):
- slots = [slots]
- for slots_var in slots:
- orig_vars.pop(slots_var)
- return metaclass(cls.__name__, cls.__bases__, orig_vars)
- return wrapper
-
-
-### Additional customizations for Django ###
-
-if PY3:
- _assertRaisesRegex = "assertRaisesRegex"
- _assertRegex = "assertRegex"
- memoryview = memoryview
-else:
- _assertRaisesRegex = "assertRaisesRegexp"
- _assertRegex = "assertRegexpMatches"
- # memoryview and buffer are not stricly equivalent, but should be fine for
- # django core usage (mainly BinaryField). However, Jython doesn't support
- # buffer (see http://bugs.jython.org/issue1521), so we have to be careful.
- if sys.platform.startswith('java'):
- memoryview = memoryview
- else:
- memoryview = buffer
-
-
-def assertRaisesRegex(self, *args, **kwargs):
- return getattr(self, _assertRaisesRegex)(*args, **kwargs)
-
-
-def assertRegex(self, *args, **kwargs):
- return getattr(self, _assertRegex)(*args, **kwargs)
-
-
-add_move(MovedModule("_dummy_thread", "dummy_thread"))
-add_move(MovedModule("_thread", "thread"))
diff --git a/lib/python2.7/site-packages/django/utils/synch.py b/lib/python2.7/site-packages/django/utils/synch.py
deleted file mode 100644
index 4859907..0000000
--- a/lib/python2.7/site-packages/django/utils/synch.py
+++ /dev/null
@@ -1,93 +0,0 @@
-"""
-Synchronization primitives:
-
- - reader-writer lock (preference to writers)
-
-(Contributed to Django by eugene@lazutkin.com)
-"""
-
-import contextlib
-try:
- import threading
-except ImportError:
- import dummy_threading as threading
-
-
-class RWLock(object):
- """
- Classic implementation of reader-writer lock with preference to writers.
-
- Readers can access a resource simultaneously.
- Writers get an exclusive access.
-
- API is self-descriptive:
- reader_enters()
- reader_leaves()
- writer_enters()
- writer_leaves()
- """
- def __init__(self):
- self.mutex = threading.RLock()
- self.can_read = threading.Semaphore(0)
- self.can_write = threading.Semaphore(0)
- self.active_readers = 0
- self.active_writers = 0
- self.waiting_readers = 0
- self.waiting_writers = 0
-
- def reader_enters(self):
- with self.mutex:
- if self.active_writers == 0 and self.waiting_writers == 0:
- self.active_readers += 1
- self.can_read.release()
- else:
- self.waiting_readers += 1
- self.can_read.acquire()
-
- def reader_leaves(self):
- with self.mutex:
- self.active_readers -= 1
- if self.active_readers == 0 and self.waiting_writers != 0:
- self.active_writers += 1
- self.waiting_writers -= 1
- self.can_write.release()
-
- @contextlib.contextmanager
- def reader(self):
- self.reader_enters()
- try:
- yield
- finally:
- self.reader_leaves()
-
- def writer_enters(self):
- with self.mutex:
- if self.active_writers == 0 and self.waiting_writers == 0 and self.active_readers == 0:
- self.active_writers += 1
- self.can_write.release()
- else:
- self.waiting_writers += 1
- self.can_write.acquire()
-
- def writer_leaves(self):
- with self.mutex:
- self.active_writers -= 1
- if self.waiting_writers != 0:
- self.active_writers += 1
- self.waiting_writers -= 1
- self.can_write.release()
- elif self.waiting_readers != 0:
- t = self.waiting_readers
- self.waiting_readers = 0
- self.active_readers += t
- while t > 0:
- self.can_read.release()
- t -= 1
-
- @contextlib.contextmanager
- def writer(self):
- self.writer_enters()
- try:
- yield
- finally:
- self.writer_leaves()
diff --git a/lib/python2.7/site-packages/django/utils/termcolors.py b/lib/python2.7/site-packages/django/utils/termcolors.py
deleted file mode 100644
index bb14837..0000000
--- a/lib/python2.7/site-packages/django/utils/termcolors.py
+++ /dev/null
@@ -1,200 +0,0 @@
-"""
-termcolors.py
-"""
-
-from django.utils import six
-
-color_names = ('black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white')
-foreground = dict([(color_names[x], '3%s' % x) for x in range(8)])
-background = dict([(color_names[x], '4%s' % x) for x in range(8)])
-
-RESET = '0'
-opt_dict = {'bold': '1', 'underscore': '4', 'blink': '5', 'reverse': '7', 'conceal': '8'}
-
-def colorize(text='', opts=(), **kwargs):
- """
- Returns your text, enclosed in ANSI graphics codes.
-
- Depends on the keyword arguments 'fg' and 'bg', and the contents of
- the opts tuple/list.
-
- Returns the RESET code if no parameters are given.
-
- Valid colors:
- 'black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'
-
- Valid options:
- 'bold'
- 'underscore'
- 'blink'
- 'reverse'
- 'conceal'
- 'noreset' - string will not be auto-terminated with the RESET code
-
- Examples:
- colorize('hello', fg='red', bg='blue', opts=('blink',))
- colorize()
- colorize('goodbye', opts=('underscore',))
- print(colorize('first line', fg='red', opts=('noreset',)))
- print('this should be red too')
- print(colorize('and so should this'))
- print('this should not be red')
- """
- code_list = []
- if text == '' and len(opts) == 1 and opts[0] == 'reset':
- return '\x1b[%sm' % RESET
- for k, v in six.iteritems(kwargs):
- if k == 'fg':
- code_list.append(foreground[v])
- elif k == 'bg':
- code_list.append(background[v])
- for o in opts:
- if o in opt_dict:
- code_list.append(opt_dict[o])
- if 'noreset' not in opts:
- text = '%s\x1b[%sm' % (text or '', RESET)
- return '%s%s' % (('\x1b[%sm' % ';'.join(code_list)), text or '')
-
-def make_style(opts=(), **kwargs):
- """
- Returns a function with default parameters for colorize()
-
- Example:
- bold_red = make_style(opts=('bold',), fg='red')
- print(bold_red('hello'))
- KEYWORD = make_style(fg='yellow')
- COMMENT = make_style(fg='blue', opts=('bold',))
- """
- return lambda text: colorize(text, opts, **kwargs)
-
-NOCOLOR_PALETTE = 'nocolor'
-DARK_PALETTE = 'dark'
-LIGHT_PALETTE = 'light'
-
-PALETTES = {
- NOCOLOR_PALETTE: {
- 'ERROR': {},
- 'NOTICE': {},
- 'SQL_FIELD': {},
- 'SQL_COLTYPE': {},
- 'SQL_KEYWORD': {},
- 'SQL_TABLE': {},
- 'HTTP_INFO': {},
- 'HTTP_SUCCESS': {},
- 'HTTP_REDIRECT': {},
- 'HTTP_NOT_MODIFIED': {},
- 'HTTP_BAD_REQUEST': {},
- 'HTTP_NOT_FOUND': {},
- 'HTTP_SERVER_ERROR': {},
- },
- DARK_PALETTE: {
- 'ERROR': { 'fg': 'red', 'opts': ('bold',) },
- 'NOTICE': { 'fg': 'red' },
- 'SQL_FIELD': { 'fg': 'green', 'opts': ('bold',) },
- 'SQL_COLTYPE': { 'fg': 'green' },
- 'SQL_KEYWORD': { 'fg': 'yellow' },
- 'SQL_TABLE': { 'opts': ('bold',) },
- 'HTTP_INFO': { 'opts': ('bold',) },
- 'HTTP_SUCCESS': { },
- 'HTTP_REDIRECT': { 'fg': 'green' },
- 'HTTP_NOT_MODIFIED': { 'fg': 'cyan' },
- 'HTTP_BAD_REQUEST': { 'fg': 'red', 'opts': ('bold',) },
- 'HTTP_NOT_FOUND': { 'fg': 'yellow' },
- 'HTTP_SERVER_ERROR': { 'fg': 'magenta', 'opts': ('bold',) },
- },
- LIGHT_PALETTE: {
- 'ERROR': { 'fg': 'red', 'opts': ('bold',) },
- 'NOTICE': { 'fg': 'red' },
- 'SQL_FIELD': { 'fg': 'green', 'opts': ('bold',) },
- 'SQL_COLTYPE': { 'fg': 'green' },
- 'SQL_KEYWORD': { 'fg': 'blue' },
- 'SQL_TABLE': { 'opts': ('bold',) },
- 'HTTP_INFO': { 'opts': ('bold',) },
- 'HTTP_SUCCESS': { },
- 'HTTP_REDIRECT': { 'fg': 'green', 'opts': ('bold',) },
- 'HTTP_NOT_MODIFIED': { 'fg': 'green' },
- 'HTTP_BAD_REQUEST': { 'fg': 'red', 'opts': ('bold',) },
- 'HTTP_NOT_FOUND': { 'fg': 'red' },
- 'HTTP_SERVER_ERROR': { 'fg': 'magenta', 'opts': ('bold',) },
- }
-}
-DEFAULT_PALETTE = DARK_PALETTE
-
-def parse_color_setting(config_string):
- """Parse a DJANGO_COLORS environment variable to produce the system palette
-
- The general form of a pallete definition is:
-
- "palette;role=fg;role=fg/bg;role=fg,option,option;role=fg/bg,option,option"
-
- where:
- palette is a named palette; one of 'light', 'dark', or 'nocolor'.
- role is a named style used by Django
- fg is a background color.
- bg is a background color.
- option is a display options.
-
- Specifying a named palette is the same as manually specifying the individual
- definitions for each role. Any individual definitions following the pallete
- definition will augment the base palette definition.
-
- Valid roles:
- 'error', 'notice', 'sql_field', 'sql_coltype', 'sql_keyword', 'sql_table',
- 'http_info', 'http_success', 'http_redirect', 'http_bad_request',
- 'http_not_found', 'http_server_error'
-
- Valid colors:
- 'black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'
-
- Valid options:
- 'bold', 'underscore', 'blink', 'reverse', 'conceal'
-
- """
- if not config_string:
- return PALETTES[DEFAULT_PALETTE]
-
- # Split the color configuration into parts
- parts = config_string.lower().split(';')
- palette = PALETTES[NOCOLOR_PALETTE].copy()
- for part in parts:
- if part in PALETTES:
- # A default palette has been specified
- palette.update(PALETTES[part])
- elif '=' in part:
- # Process a palette defining string
- definition = {}
-
- # Break the definition into the role,
- # plus the list of specific instructions.
- # The role must be in upper case
- role, instructions = part.split('=')
- role = role.upper()
-
- styles = instructions.split(',')
- styles.reverse()
-
- # The first instruction can contain a slash
- # to break apart fg/bg.
- colors = styles.pop().split('/')
- colors.reverse()
- fg = colors.pop()
- if fg in color_names:
- definition['fg'] = fg
- if colors and colors[-1] in color_names:
- definition['bg'] = colors[-1]
-
- # All remaining instructions are options
- opts = tuple(s for s in styles if s in opt_dict.keys())
- if opts:
- definition['opts'] = opts
-
- # The nocolor palette has all available roles.
- # Use that palette as the basis for determining
- # if the role is valid.
- if role in PALETTES[NOCOLOR_PALETTE] and definition:
- palette[role] = definition
-
- # If there are no colors specified, return the empty palette.
- if palette == PALETTES[NOCOLOR_PALETTE]:
- return None
- return palette
diff --git a/lib/python2.7/site-packages/django/utils/text.py b/lib/python2.7/site-packages/django/utils/text.py
deleted file mode 100644
index 92eda53..0000000
--- a/lib/python2.7/site-packages/django/utils/text.py
+++ /dev/null
@@ -1,412 +0,0 @@
-from __future__ import unicode_literals
-
-import re
-import unicodedata
-from gzip import GzipFile
-from io import BytesIO
-
-from django.utils.encoding import force_text
-from django.utils.functional import allow_lazy, SimpleLazyObject
-from django.utils import six
-from django.utils.six.moves import html_entities
-from django.utils.translation import ugettext_lazy, ugettext as _, pgettext
-from django.utils.safestring import mark_safe
-
-if six.PY2:
- # Import force_unicode even though this module doesn't use it, because some
- # people rely on it being here.
- from django.utils.encoding import force_unicode
-
-# Capitalizes the first letter of a string.
-capfirst = lambda x: x and force_text(x)[0].upper() + force_text(x)[1:]
-capfirst = allow_lazy(capfirst, six.text_type)
-
-# Set up regular expressions
-re_words = re.compile(r'&.*?;|<.*?>|(\w[\w-]*)', re.U|re.S)
-re_tag = re.compile(r'<(/)?([^ ]+?)(?:(\s*/)| .*?)?>', re.S)
-
-
-def wrap(text, width):
- """
- A word-wrap function that preserves existing line breaks and most spaces in
- the text. Expects that existing line breaks are posix newlines.
- """
- text = force_text(text)
- def _generator():
- it = iter(text.split(' '))
- word = next(it)
- yield word
- pos = len(word) - word.rfind('\n') - 1
- for word in it:
- if "\n" in word:
- lines = word.split('\n')
- else:
- lines = (word,)
- pos += len(lines[0]) + 1
- if pos > width:
- yield '\n'
- pos = len(lines[-1])
- else:
- yield ' '
- if len(lines) > 1:
- pos = len(lines[-1])
- yield word
- return ''.join(_generator())
-wrap = allow_lazy(wrap, six.text_type)
-
-
-class Truncator(SimpleLazyObject):
- """
- An object used to truncate text, either by characters or words.
- """
- def __init__(self, text):
- super(Truncator, self).__init__(lambda: force_text(text))
-
- def add_truncation_text(self, text, truncate=None):
- if truncate is None:
- truncate = pgettext(
- 'String to return when truncating text',
- '%(truncated_text)s...')
- truncate = force_text(truncate)
- if '%(truncated_text)s' in truncate:
- return truncate % {'truncated_text': text}
- # The truncation text didn't contain the %(truncated_text)s string
- # replacement argument so just append it to the text.
- if text.endswith(truncate):
- # But don't append the truncation text if the current text already
- # ends in this.
- return text
- return '%s%s' % (text, truncate)
-
- def chars(self, num, truncate=None):
- """
- Returns the text truncated to be no longer than the specified number
- of characters.
-
- Takes an optional argument of what should be used to notify that the
- string has been truncated, defaulting to a translatable string of an
- ellipsis (...).
- """
- length = int(num)
- text = unicodedata.normalize('NFC', self._wrapped)
-
- # Calculate the length to truncate to (max length - end_text length)
- truncate_len = length
- for char in self.add_truncation_text('', truncate):
- if not unicodedata.combining(char):
- truncate_len -= 1
- if truncate_len == 0:
- break
-
- s_len = 0
- end_index = None
- for i, char in enumerate(text):
- if unicodedata.combining(char):
- # Don't consider combining characters
- # as adding to the string length
- continue
- s_len += 1
- if end_index is None and s_len > truncate_len:
- end_index = i
- if s_len > length:
- # Return the truncated string
- return self.add_truncation_text(text[:end_index or 0],
- truncate)
-
- # Return the original string since no truncation was necessary
- return text
- chars = allow_lazy(chars)
-
- def words(self, num, truncate=None, html=False):
- """
- Truncates a string after a certain number of words. Takes an optional
- argument of what should be used to notify that the string has been
- truncated, defaulting to ellipsis (...).
- """
- length = int(num)
- if html:
- return self._html_words(length, truncate)
- return self._text_words(length, truncate)
- words = allow_lazy(words)
-
- def _text_words(self, length, truncate):
- """
- Truncates a string after a certain number of words.
-
- Newlines in the string will be stripped.
- """
- words = self._wrapped.split()
- if len(words) > length:
- words = words[:length]
- return self.add_truncation_text(' '.join(words), truncate)
- return ' '.join(words)
-
- def _html_words(self, length, truncate):
- """
- Truncates HTML to a certain number of words (not counting tags and
- comments). Closes opened tags if they were correctly closed in the
- given HTML.
-
- Newlines in the HTML are preserved.
- """
- if length <= 0:
- return ''
- html4_singlets = (
- 'br', 'col', 'link', 'base', 'img',
- 'param', 'area', 'hr', 'input'
- )
- # Count non-HTML words and keep note of open tags
- pos = 0
- end_text_pos = 0
- words = 0
- open_tags = []
- while words <= length:
- m = re_words.search(self._wrapped, pos)
- if not m:
- # Checked through whole string
- break
- pos = m.end(0)
- if m.group(1):
- # It's an actual non-HTML word
- words += 1
- if words == length:
- end_text_pos = pos
- continue
- # Check for tag
- tag = re_tag.match(m.group(0))
- if not tag or end_text_pos:
- # Don't worry about non tags or tags after our truncate point
- continue
- closing_tag, tagname, self_closing = tag.groups()
- # Element names are always case-insensitive
- tagname = tagname.lower()
- if self_closing or tagname in html4_singlets:
- pass
- elif closing_tag:
- # Check for match in open tags list
- try:
- i = open_tags.index(tagname)
- except ValueError:
- pass
- else:
- # SGML: An end tag closes, back to the matching start tag,
- # all unclosed intervening start tags with omitted end tags
- open_tags = open_tags[i + 1:]
- else:
- # Add it to the start of the open tags list
- open_tags.insert(0, tagname)
- if words <= length:
- # Don't try to close tags if we don't need to truncate
- return self._wrapped
- out = self._wrapped[:end_text_pos]
- truncate_text = self.add_truncation_text('', truncate)
- if truncate_text:
- out += truncate_text
- # Close any tags still open
- for tag in open_tags:
- out += '</%s>' % tag
- # Return string
- return out
-
-def get_valid_filename(s):
- """
- Returns the given string converted to a string that can be used for a clean
- filename. Specifically, leading and trailing spaces are removed; other
- spaces are converted to underscores; and anything that is not a unicode
- alphanumeric, dash, underscore, or dot, is removed.
- >>> get_valid_filename("john's portrait in 2004.jpg")
- 'johns_portrait_in_2004.jpg'
- """
- s = force_text(s).strip().replace(' ', '_')
- return re.sub(r'(?u)[^-\w.]', '', s)
-get_valid_filename = allow_lazy(get_valid_filename, six.text_type)
-
-def get_text_list(list_, last_word=ugettext_lazy('or')):
- """
- >>> get_text_list(['a', 'b', 'c', 'd'])
- 'a, b, c or d'
- >>> get_text_list(['a', 'b', 'c'], 'and')
- 'a, b and c'
- >>> get_text_list(['a', 'b'], 'and')
- 'a and b'
- >>> get_text_list(['a'])
- 'a'
- >>> get_text_list([])
- ''
- """
- if len(list_) == 0: return ''
- if len(list_) == 1: return force_text(list_[0])
- return '%s %s %s' % (
- # Translators: This string is used as a separator between list elements
- _(', ').join([force_text(i) for i in list_][:-1]),
- force_text(last_word), force_text(list_[-1]))
-get_text_list = allow_lazy(get_text_list, six.text_type)
-
-def normalize_newlines(text):
- return force_text(re.sub(r'\r\n|\r|\n', '\n', text))
-normalize_newlines = allow_lazy(normalize_newlines, six.text_type)
-
-def recapitalize(text):
- "Recapitalizes text, placing caps after end-of-sentence punctuation."
- text = force_text(text).lower()
- capsRE = re.compile(r'(?:^|(?<=[\.\?\!] ))([a-z])')
- text = capsRE.sub(lambda x: x.group(1).upper(), text)
- return text
-recapitalize = allow_lazy(recapitalize)
-
-def phone2numeric(phone):
- "Converts a phone number with letters into its numeric equivalent."
- char2number = {'a': '2', 'b': '2', 'c': '2', 'd': '3', 'e': '3', 'f': '3',
- 'g': '4', 'h': '4', 'i': '4', 'j': '5', 'k': '5', 'l': '5', 'm': '6',
- 'n': '6', 'o': '6', 'p': '7', 'q': '7', 'r': '7', 's': '7', 't': '8',
- 'u': '8', 'v': '8', 'w': '9', 'x': '9', 'y': '9', 'z': '9',
- }
- return ''.join(char2number.get(c, c) for c in phone.lower())
-phone2numeric = allow_lazy(phone2numeric)
-
-# From http://www.xhaus.com/alan/python/httpcomp.html#gzip
-# Used with permission.
-def compress_string(s):
- zbuf = BytesIO()
- zfile = GzipFile(mode='wb', compresslevel=6, fileobj=zbuf)
- zfile.write(s)
- zfile.close()
- return zbuf.getvalue()
-
-class StreamingBuffer(object):
- def __init__(self):
- self.vals = []
-
- def write(self, val):
- self.vals.append(val)
-
- def read(self):
- ret = b''.join(self.vals)
- self.vals = []
- return ret
-
- def flush(self):
- return
-
- def close(self):
- return
-
-# Like compress_string, but for iterators of strings.
-def compress_sequence(sequence):
- buf = StreamingBuffer()
- zfile = GzipFile(mode='wb', compresslevel=6, fileobj=buf)
- # Output headers...
- yield buf.read()
- for item in sequence:
- zfile.write(item)
- zfile.flush()
- yield buf.read()
- zfile.close()
- yield buf.read()
-
-ustring_re = re.compile("([\u0080-\uffff])")
-
-def javascript_quote(s, quote_double_quotes=False):
-
- def fix(match):
- return "\\u%04x" % ord(match.group(1))
-
- if type(s) == bytes:
- s = s.decode('utf-8')
- elif type(s) != six.text_type:
- raise TypeError(s)
- s = s.replace('\\', '\\\\')
- s = s.replace('\r', '\\r')
- s = s.replace('\n', '\\n')
- s = s.replace('\t', '\\t')
- s = s.replace("'", "\\'")
- if quote_double_quotes:
- s = s.replace('"', '&quot;')
- return str(ustring_re.sub(fix, s))
-javascript_quote = allow_lazy(javascript_quote, six.text_type)
-
-# Expression to match some_token and some_token="with spaces" (and similarly
-# for single-quoted strings).
-smart_split_re = re.compile(r"""
- ((?:
- [^\s'"]*
- (?:
- (?:"(?:[^"\\]|\\.)*" | '(?:[^'\\]|\\.)*')
- [^\s'"]*
- )+
- ) | \S+)
-""", re.VERBOSE)
-
-def smart_split(text):
- r"""
- Generator that splits a string by spaces, leaving quoted phrases together.
- Supports both single and double quotes, and supports escaping quotes with
- backslashes. In the output, strings will keep their initial and trailing
- quote marks and escaped quotes will remain escaped (the results can then
- be further processed with unescape_string_literal()).
-
- >>> list(smart_split(r'This is "a person\'s" test.'))
- ['This', 'is', '"a person\\\'s"', 'test.']
- >>> list(smart_split(r"Another 'person\'s' test."))
- ['Another', "'person\\'s'", 'test.']
- >>> list(smart_split(r'A "\"funky\" style" test.'))
- ['A', '"\\"funky\\" style"', 'test.']
- """
- text = force_text(text)
- for bit in smart_split_re.finditer(text):
- yield bit.group(0)
-
-def _replace_entity(match):
- text = match.group(1)
- if text[0] == '#':
- text = text[1:]
- try:
- if text[0] in 'xX':
- c = int(text[1:], 16)
- else:
- c = int(text)
- return six.unichr(c)
- except ValueError:
- return match.group(0)
- else:
- try:
- return six.unichr(html_entities.name2codepoint[text])
- except (ValueError, KeyError):
- return match.group(0)
-
-_entity_re = re.compile(r"&(#?[xX]?(?:[0-9a-fA-F]+|\w{1,8}));")
-
-def unescape_entities(text):
- return _entity_re.sub(_replace_entity, text)
-unescape_entities = allow_lazy(unescape_entities, six.text_type)
-
-def unescape_string_literal(s):
- r"""
- Convert quoted string literals to unquoted strings with escaped quotes and
- backslashes unquoted::
-
- >>> unescape_string_literal('"abc"')
- 'abc'
- >>> unescape_string_literal("'abc'")
- 'abc'
- >>> unescape_string_literal('"a \"bc\""')
- 'a "bc"'
- >>> unescape_string_literal("'\'ab\' c'")
- "'ab' c"
- """
- if s[0] not in "\"'" or s[-1] != s[0]:
- raise ValueError("Not a string literal: %r" % s)
- quote = s[0]
- return s[1:-1].replace(r'\%s' % quote, quote).replace(r'\\', '\\')
-unescape_string_literal = allow_lazy(unescape_string_literal)
-
-def slugify(value):
- """
- Converts to lowercase, removes non-word characters (alphanumerics and
- underscores) and converts spaces to hyphens. Also strips leading and
- trailing whitespace.
- """
- value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore').decode('ascii')
- value = re.sub('[^\w\s-]', '', value).strip().lower()
- return mark_safe(re.sub('[-\s]+', '-', value))
-slugify = allow_lazy(slugify, six.text_type)
diff --git a/lib/python2.7/site-packages/django/utils/timesince.py b/lib/python2.7/site-packages/django/utils/timesince.py
deleted file mode 100644
index 8fb0f64..0000000
--- a/lib/python2.7/site-packages/django/utils/timesince.py
+++ /dev/null
@@ -1,64 +0,0 @@
-from __future__ import unicode_literals
-
-import datetime
-
-from django.utils.html import avoid_wrapping
-from django.utils.timezone import is_aware, utc
-from django.utils.translation import ugettext, ungettext_lazy
-
-def timesince(d, now=None, reversed=False):
- """
- Takes two datetime objects and returns the time between d and now
- as a nicely formatted string, e.g. "10 minutes". If d occurs after now,
- then "0 minutes" is returned.
-
- Units used are years, months, weeks, days, hours, and minutes.
- Seconds and microseconds are ignored. Up to two adjacent units will be
- displayed. For example, "2 weeks, 3 days" and "1 year, 3 months" are
- possible outputs, but "2 weeks, 3 hours" and "1 year, 5 days" are not.
-
- Adapted from
- http://web.archive.org/web/20060617175230/http://blog.natbat.co.uk/archive/2003/Jun/14/time_since
- """
- chunks = (
- (60 * 60 * 24 * 365, ungettext_lazy('%d year', '%d years')),
- (60 * 60 * 24 * 30, ungettext_lazy('%d month', '%d months')),
- (60 * 60 * 24 * 7, ungettext_lazy('%d week', '%d weeks')),
- (60 * 60 * 24, ungettext_lazy('%d day', '%d days')),
- (60 * 60, ungettext_lazy('%d hour', '%d hours')),
- (60, ungettext_lazy('%d minute', '%d minutes'))
- )
- # Convert datetime.date to datetime.datetime for comparison.
- if not isinstance(d, datetime.datetime):
- d = datetime.datetime(d.year, d.month, d.day)
- if now and not isinstance(now, datetime.datetime):
- now = datetime.datetime(now.year, now.month, now.day)
-
- if not now:
- now = datetime.datetime.now(utc if is_aware(d) else None)
-
- delta = (d - now) if reversed else (now - d)
- # ignore microseconds
- since = delta.days * 24 * 60 * 60 + delta.seconds
- if since <= 0:
- # d is in the future compared to now, stop processing.
- return avoid_wrapping(ugettext('0 minutes'))
- for i, (seconds, name) in enumerate(chunks):
- count = since // seconds
- if count != 0:
- break
- result = avoid_wrapping(name % count)
- if i + 1 < len(chunks):
- # Now get the second item
- seconds2, name2 = chunks[i + 1]
- count2 = (since - (seconds * count)) // seconds2
- if count2 != 0:
- result += ugettext(', ') + avoid_wrapping(name2 % count2)
- return result
-
-def timeuntil(d, now=None):
- """
- Like timesince, but returns a string measuring the time until
- the given time.
- """
- return timesince(d, now, reversed=True)
diff --git a/lib/python2.7/site-packages/django/utils/timezone.py b/lib/python2.7/site-packages/django/utils/timezone.py
deleted file mode 100644
index 73749cf..0000000
--- a/lib/python2.7/site-packages/django/utils/timezone.py
+++ /dev/null
@@ -1,317 +0,0 @@
-"""
-Timezone-related classes and functions.
-
-This module uses pytz when it's available and fallbacks when it isn't.
-"""
-
-from datetime import datetime, timedelta, tzinfo
-from threading import local
-import sys
-import time as _time
-
-try:
- import pytz
-except ImportError:
- pytz = None
-
-from django.conf import settings
-from django.utils import six
-
-__all__ = [
- 'utc',
- 'get_default_timezone', 'get_default_timezone_name',
- 'get_current_timezone', 'get_current_timezone_name',
- 'activate', 'deactivate', 'override',
- 'localtime', 'now',
- 'is_aware', 'is_naive', 'make_aware', 'make_naive',
-]
-
-
-# UTC and local time zones
-
-ZERO = timedelta(0)
-
-class UTC(tzinfo):
- """
- UTC implementation taken from Python's docs.
-
- Used only when pytz isn't available.
- """
-
- def __repr__(self):
- return "<UTC>"
-
- def utcoffset(self, dt):
- return ZERO
-
- def tzname(self, dt):
- return "UTC"
-
- def dst(self, dt):
- return ZERO
-
-class ReferenceLocalTimezone(tzinfo):
- """
- Local time implementation taken from Python's docs.
-
- Used only when pytz isn't available, and most likely inaccurate. If you're
- having trouble with this class, don't waste your time, just install pytz.
-
- Kept identical to the reference version. Subclasses contain improvements.
- """
-
- def __init__(self):
- # This code is moved in __init__ to execute it as late as possible
- # See get_default_timezone().
- self.STDOFFSET = timedelta(seconds=-_time.timezone)
- if _time.daylight:
- self.DSTOFFSET = timedelta(seconds=-_time.altzone)
- else:
- self.DSTOFFSET = self.STDOFFSET
- self.DSTDIFF = self.DSTOFFSET - self.STDOFFSET
- tzinfo.__init__(self)
-
- def __repr__(self):
- return "<LocalTimezone>"
-
- def utcoffset(self, dt):
- if self._isdst(dt):
- return self.DSTOFFSET
- else:
- return self.STDOFFSET
-
- def dst(self, dt):
- if self._isdst(dt):
- return self.DSTDIFF
- else:
- return ZERO
-
- def tzname(self, dt):
- is_dst = False if dt is None else self._isdst(dt)
- return _time.tzname[is_dst]
-
- def _isdst(self, dt):
- tt = (dt.year, dt.month, dt.day,
- dt.hour, dt.minute, dt.second,
- dt.weekday(), 0, 0)
- stamp = _time.mktime(tt)
- tt = _time.localtime(stamp)
- return tt.tm_isdst > 0
-
-class LocalTimezone(ReferenceLocalTimezone):
- """
- Slightly improved local time implementation focusing on correctness.
-
- It still crashes on dates before 1970 or after 2038, but at least the
- error message is helpful.
- """
-
- def _isdst(self, dt):
- try:
- return super(LocalTimezone, self)._isdst(dt)
- except (OverflowError, ValueError) as exc:
- exc_type = type(exc)
- exc_value = exc_type(
- "Unsupported value: %r. You should install pytz." % dt)
- exc_value.__cause__ = exc
- six.reraise(exc_type, exc_value, sys.exc_info()[2])
-
-utc = pytz.utc if pytz else UTC()
-"""UTC time zone as a tzinfo instance."""
-
-# In order to avoid accessing the settings at compile time,
-# wrap the expression in a function and cache the result.
-_localtime = None
-
-def get_default_timezone():
- """
- Returns the default time zone as a tzinfo instance.
-
- This is the time zone defined by settings.TIME_ZONE.
-
- See also :func:`get_current_timezone`.
- """
- global _localtime
- if _localtime is None:
- if isinstance(settings.TIME_ZONE, six.string_types) and pytz is not None:
- _localtime = pytz.timezone(settings.TIME_ZONE)
- else:
- # This relies on os.environ['TZ'] being set to settings.TIME_ZONE.
- _localtime = LocalTimezone()
- return _localtime
-
-# This function exists for consistency with get_current_timezone_name
-def get_default_timezone_name():
- """
- Returns the name of the default time zone.
- """
- return _get_timezone_name(get_default_timezone())
-
-_active = local()
-
-def get_current_timezone():
- """
- Returns the currently active time zone as a tzinfo instance.
- """
- return getattr(_active, "value", get_default_timezone())
-
-def get_current_timezone_name():
- """
- Returns the name of the currently active time zone.
- """
- return _get_timezone_name(get_current_timezone())
-
-def _get_timezone_name(timezone):
- """
- Returns the name of ``timezone``.
- """
- try:
- # for pytz timezones
- return timezone.zone
- except AttributeError:
- # for regular tzinfo objects
- return timezone.tzname(None)
-
-# Timezone selection functions.
-
-# These functions don't change os.environ['TZ'] and call time.tzset()
-# because it isn't thread safe.
-
-def activate(timezone):
- """
- Sets the time zone for the current thread.
-
- The ``timezone`` argument must be an instance of a tzinfo subclass or a
- time zone name. If it is a time zone name, pytz is required.
- """
- if isinstance(timezone, tzinfo):
- _active.value = timezone
- elif isinstance(timezone, six.string_types) and pytz is not None:
- _active.value = pytz.timezone(timezone)
- else:
- raise ValueError("Invalid timezone: %r" % timezone)
-
-def deactivate():
- """
- Unsets the time zone for the current thread.
-
- Django will then use the time zone defined by settings.TIME_ZONE.
- """
- if hasattr(_active, "value"):
- del _active.value
-
-class override(object):
- """
- Temporarily set the time zone for the current thread.
-
- This is a context manager that uses ``~django.utils.timezone.activate()``
- to set the timezone on entry, and restores the previously active timezone
- on exit.
-
- The ``timezone`` argument must be an instance of a ``tzinfo`` subclass, a
- time zone name, or ``None``. If is it a time zone name, pytz is required.
- If it is ``None``, Django enables the default time zone.
- """
- def __init__(self, timezone):
- self.timezone = timezone
- self.old_timezone = getattr(_active, 'value', None)
-
- def __enter__(self):
- if self.timezone is None:
- deactivate()
- else:
- activate(self.timezone)
-
- def __exit__(self, exc_type, exc_value, traceback):
- if self.old_timezone is None:
- deactivate()
- else:
- _active.value = self.old_timezone
-
-
-# Templates
-
-def template_localtime(value, use_tz=None):
- """
- Checks if value is a datetime and converts it to local time if necessary.
-
- If use_tz is provided and is not None, that will force the value to
- be converted (or not), overriding the value of settings.USE_TZ.
-
- This function is designed for use by the template engine.
- """
- should_convert = (isinstance(value, datetime)
- and (settings.USE_TZ if use_tz is None else use_tz)
- and not is_naive(value)
- and getattr(value, 'convert_to_local_time', True))
- return localtime(value) if should_convert else value
-
-
-# Utilities
-
-def localtime(value, timezone=None):
- """
- Converts an aware datetime.datetime to local time.
-
- Local time is defined by the current time zone, unless another time zone
- is specified.
- """
- if timezone is None:
- timezone = get_current_timezone()
- value = value.astimezone(timezone)
- if hasattr(timezone, 'normalize'):
- # available for pytz time zones
- value = timezone.normalize(value)
- return value
-
-def now():
- """
- Returns an aware or naive datetime.datetime, depending on settings.USE_TZ.
- """
- if settings.USE_TZ:
- # timeit shows that datetime.now(tz=utc) is 24% slower
- return datetime.utcnow().replace(tzinfo=utc)
- else:
- return datetime.now()
-
-# By design, these four functions don't perform any checks on their arguments.
-# The caller should ensure that they don't receive an invalid value like None.
-
-def is_aware(value):
- """
- Determines if a given datetime.datetime is aware.
-
- The logic is described in Python's docs:
- http://docs.python.org/library/datetime.html#datetime.tzinfo
- """
- return value.tzinfo is not None and value.tzinfo.utcoffset(value) is not None
-
-def is_naive(value):
- """
- Determines if a given datetime.datetime is naive.
-
- The logic is described in Python's docs:
- http://docs.python.org/library/datetime.html#datetime.tzinfo
- """
- return value.tzinfo is None or value.tzinfo.utcoffset(value) is None
-
-def make_aware(value, timezone):
- """
- Makes a naive datetime.datetime in a given time zone aware.
- """
- if hasattr(timezone, 'localize'):
- # available for pytz time zones
- return timezone.localize(value, is_dst=None)
- else:
- # may be wrong around DST changes
- return value.replace(tzinfo=timezone)
-
-def make_naive(value, timezone):
- """
- Makes an aware datetime.datetime naive in a given time zone.
- """
- value = value.astimezone(timezone)
- if hasattr(timezone, 'normalize'):
- # available for pytz time zones
- value = timezone.normalize(value)
- return value.replace(tzinfo=None)
diff --git a/lib/python2.7/site-packages/django/utils/translation/__init__.py b/lib/python2.7/site-packages/django/utils/translation/__init__.py
deleted file mode 100644
index 10a6cd6..0000000
--- a/lib/python2.7/site-packages/django/utils/translation/__init__.py
+++ /dev/null
@@ -1,196 +0,0 @@
-"""
-Internationalization support.
-"""
-from __future__ import unicode_literals
-
-from django.utils.encoding import force_text
-from django.utils.functional import lazy
-from django.utils import six
-
-
-__all__ = [
- 'activate', 'deactivate', 'override', 'deactivate_all',
- 'get_language', 'get_language_from_request',
- 'get_language_info', 'get_language_bidi',
- 'check_for_language', 'to_locale', 'templatize', 'string_concat',
- 'gettext', 'gettext_lazy', 'gettext_noop',
- 'ugettext', 'ugettext_lazy', 'ugettext_noop',
- 'ngettext', 'ngettext_lazy',
- 'ungettext', 'ungettext_lazy',
- 'pgettext', 'pgettext_lazy',
- 'npgettext', 'npgettext_lazy',
-]
-
-
-class TranslatorCommentWarning(SyntaxWarning):
- pass
-
-
-# Here be dragons, so a short explanation of the logic won't hurt:
-# We are trying to solve two problems: (1) access settings, in particular
-# settings.USE_I18N, as late as possible, so that modules can be imported
-# without having to first configure Django, and (2) if some other code creates
-# a reference to one of these functions, don't break that reference when we
-# replace the functions with their real counterparts (once we do access the
-# settings).
-
-class Trans(object):
- """
- The purpose of this class is to store the actual translation function upon
- receiving the first call to that function. After this is done, changes to
- USE_I18N will have no effect to which function is served upon request. If
- your tests rely on changing USE_I18N, you can delete all the functions
- from _trans.__dict__.
-
- Note that storing the function with setattr will have a noticeable
- performance effect, as access to the function goes the normal path,
- instead of using __getattr__.
- """
-
- def __getattr__(self, real_name):
- from django.conf import settings
- if settings.USE_I18N:
- from django.utils.translation import trans_real as trans
- else:
- from django.utils.translation import trans_null as trans
- setattr(self, real_name, getattr(trans, real_name))
- return getattr(trans, real_name)
-
-_trans = Trans()
-
-# The Trans class is no more needed, so remove it from the namespace.
-del Trans
-
-def gettext_noop(message):
- return _trans.gettext_noop(message)
-
-ugettext_noop = gettext_noop
-
-def gettext(message):
- return _trans.gettext(message)
-
-def ngettext(singular, plural, number):
- return _trans.ngettext(singular, plural, number)
-
-def ugettext(message):
- return _trans.ugettext(message)
-
-def ungettext(singular, plural, number):
- return _trans.ungettext(singular, plural, number)
-
-def pgettext(context, message):
- return _trans.pgettext(context, message)
-
-def npgettext(context, singular, plural, number):
- return _trans.npgettext(context, singular, plural, number)
-
-gettext_lazy = lazy(gettext, str)
-ugettext_lazy = lazy(ugettext, six.text_type)
-pgettext_lazy = lazy(pgettext, six.text_type)
-
-def lazy_number(func, resultclass, number=None, **kwargs):
- if isinstance(number, int):
- kwargs['number'] = number
- proxy = lazy(func, resultclass)(**kwargs)
- else:
- class NumberAwareString(resultclass):
- def __mod__(self, rhs):
- if isinstance(rhs, dict) and number:
- try:
- number_value = rhs[number]
- except KeyError:
- raise KeyError('Your dictionary lacks key \'%s\'. '
- 'Please provide it, because it is required to '
- 'determine whether string is singular or plural.'
- % number)
- else:
- number_value = rhs
- kwargs['number'] = number_value
- translated = func(**kwargs)
- try:
- translated = translated % rhs
- except TypeError:
- # String doesn't contain a placeholder for the number
- pass
- return translated
-
- proxy = lazy(lambda **kwargs: NumberAwareString(), NumberAwareString)(**kwargs)
- return proxy
-
-def ngettext_lazy(singular, plural, number=None):
- return lazy_number(ngettext, str, singular=singular, plural=plural, number=number)
-
-def ungettext_lazy(singular, plural, number=None):
- return lazy_number(ungettext, six.text_type, singular=singular, plural=plural, number=number)
-
-def npgettext_lazy(context, singular, plural, number=None):
- return lazy_number(npgettext, six.text_type, context=context, singular=singular, plural=plural, number=number)
-
-def activate(language):
- return _trans.activate(language)
-
-def deactivate():
- return _trans.deactivate()
-
-class override(object):
- def __init__(self, language, deactivate=False):
- self.language = language
- self.deactivate = deactivate
- self.old_language = get_language()
-
- def __enter__(self):
- if self.language is not None:
- activate(self.language)
- else:
- deactivate_all()
-
- def __exit__(self, exc_type, exc_value, traceback):
- if self.deactivate:
- deactivate()
- else:
- activate(self.old_language)
-
-def get_language():
- return _trans.get_language()
-
-def get_language_bidi():
- return _trans.get_language_bidi()
-
-def check_for_language(lang_code):
- return _trans.check_for_language(lang_code)
-
-def to_locale(language):
- return _trans.to_locale(language)
-
-def get_language_from_request(request, check_path=False):
- return _trans.get_language_from_request(request, check_path)
-
-def get_language_from_path(path, supported=None):
- return _trans.get_language_from_path(path, supported=supported)
-
-def templatize(src, origin=None):
- return _trans.templatize(src, origin)
-
-def deactivate_all():
- return _trans.deactivate_all()
-
-def _string_concat(*strings):
- """
- Lazy variant of string concatenation, needed for translations that are
- constructed from multiple parts.
- """
- return ''.join([force_text(s) for s in strings])
-string_concat = lazy(_string_concat, six.text_type)
-
-def get_language_info(lang_code):
- from django.conf.locale import LANG_INFO
- try:
- return LANG_INFO[lang_code]
- except KeyError:
- if '-' not in lang_code:
- raise KeyError("Unknown language code %s." % lang_code)
- generic_lang_code = lang_code.split('-')[0]
- try:
- return LANG_INFO[generic_lang_code]
- except KeyError:
- raise KeyError("Unknown language code %s and %s." % (lang_code, generic_lang_code))
diff --git a/lib/python2.7/site-packages/django/utils/translation/trans_null.py b/lib/python2.7/site-packages/django/utils/translation/trans_null.py
deleted file mode 100644
index 7ef0779..0000000
--- a/lib/python2.7/site-packages/django/utils/translation/trans_null.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# These are versions of the functions in django.utils.translation.trans_real
-# that don't actually do anything. This is purely for performance, so that
-# settings.USE_I18N = False can use this module rather than trans_real.py.
-
-from django.conf import settings
-from django.utils.encoding import force_text
-from django.utils.safestring import mark_safe, SafeData
-
-def ngettext(singular, plural, number):
- if number == 1: return singular
- return plural
-ngettext_lazy = ngettext
-
-def ungettext(singular, plural, number):
- return force_text(ngettext(singular, plural, number))
-
-def pgettext(context, message):
- return ugettext(message)
-
-def npgettext(context, singular, plural, number):
- return ungettext(singular, plural, number)
-
-activate = lambda x: None
-deactivate = deactivate_all = lambda: None
-get_language = lambda: settings.LANGUAGE_CODE
-get_language_bidi = lambda: settings.LANGUAGE_CODE in settings.LANGUAGES_BIDI
-check_for_language = lambda x: True
-
-# date formats shouldn't be used using gettext anymore. This
-# is kept for backward compatibility
-TECHNICAL_ID_MAP = {
- "DATE_WITH_TIME_FULL": settings.DATETIME_FORMAT,
- "DATE_FORMAT": settings.DATE_FORMAT,
- "DATETIME_FORMAT": settings.DATETIME_FORMAT,
- "TIME_FORMAT": settings.TIME_FORMAT,
- "YEAR_MONTH_FORMAT": settings.YEAR_MONTH_FORMAT,
- "MONTH_DAY_FORMAT": settings.MONTH_DAY_FORMAT,
-}
-
-def gettext(message):
- result = TECHNICAL_ID_MAP.get(message, message)
- if isinstance(message, SafeData):
- return mark_safe(result)
- return result
-
-def ugettext(message):
- return force_text(gettext(message))
-
-gettext_noop = gettext_lazy = _ = gettext
-
-def to_locale(language):
- p = language.find('-')
- if p >= 0:
- return language[:p].lower()+'_'+language[p+1:].upper()
- else:
- return language.lower()
-
-def get_language_from_request(request, check_path=False):
- return settings.LANGUAGE_CODE
-
-def get_language_from_path(request, supported=None):
- return None
-
diff --git a/lib/python2.7/site-packages/django/utils/translation/trans_real.py b/lib/python2.7/site-packages/django/utils/translation/trans_real.py
deleted file mode 100644
index 195badf..0000000
--- a/lib/python2.7/site-packages/django/utils/translation/trans_real.py
+++ /dev/null
@@ -1,676 +0,0 @@
-"""Translation helper functions."""
-from __future__ import unicode_literals
-
-import locale
-import os
-import re
-import sys
-import gettext as gettext_module
-from threading import local
-import warnings
-
-from django.utils.importlib import import_module
-from django.utils.datastructures import SortedDict
-from django.utils.encoding import force_str, force_text
-from django.utils.functional import memoize
-from django.utils._os import upath
-from django.utils.safestring import mark_safe, SafeData
-from django.utils import six
-from django.utils.six import StringIO
-from django.utils.translation import TranslatorCommentWarning
-
-
-# Translations are cached in a dictionary for every language+app tuple.
-# The active translations are stored by threadid to make them thread local.
-_translations = {}
-_active = local()
-
-# The default translation is based on the settings file.
-_default = None
-
-# This is a cache for normalized accept-header languages to prevent multiple
-# file lookups when checking the same locale on repeated requests.
-_accepted = {}
-_checked_languages = {}
-
-# magic gettext number to separate context from message
-CONTEXT_SEPARATOR = "\x04"
-
-# Format of Accept-Language header values. From RFC 2616, section 14.4 and 3.9
-# and RFC 3066, section 2.1
-accept_language_re = re.compile(r'''
- ([A-Za-z]{1,8}(?:-[A-Za-z0-9]{1,8})*|\*) # "en", "en-au", "x-y-z", "es-419", "*"
- (?:\s*;\s*q=(0(?:\.\d{,3})?|1(?:.0{,3})?))? # Optional "q=1.00", "q=0.8"
- (?:\s*,\s*|$) # Multiple accepts per header.
- ''', re.VERBOSE)
-
-language_code_prefix_re = re.compile(r'^/([\w-]+)(/|$)')
-
-
-def to_locale(language, to_lower=False):
- """
- Turns a language name (en-us) into a locale name (en_US). If 'to_lower' is
- True, the last component is lower-cased (en_us).
- """
- p = language.find('-')
- if p >= 0:
- if to_lower:
- return language[:p].lower()+'_'+language[p+1:].lower()
- else:
- # Get correct locale for sr-latn
- if len(language[p+1:]) > 2:
- return language[:p].lower()+'_'+language[p+1].upper()+language[p+2:].lower()
- return language[:p].lower()+'_'+language[p+1:].upper()
- else:
- return language.lower()
-
-def to_language(locale):
- """Turns a locale name (en_US) into a language name (en-us)."""
- p = locale.find('_')
- if p >= 0:
- return locale[:p].lower()+'-'+locale[p+1:].lower()
- else:
- return locale.lower()
-
-class DjangoTranslation(gettext_module.GNUTranslations):
- """
- This class sets up the GNUTranslations context with regard to output
- charset.
- """
- def __init__(self, *args, **kw):
- gettext_module.GNUTranslations.__init__(self, *args, **kw)
- self.set_output_charset('utf-8')
- self.__language = '??'
-
- def merge(self, other):
- self._catalog.update(other._catalog)
-
- def set_language(self, language):
- self.__language = language
- self.__to_language = to_language(language)
-
- def language(self):
- return self.__language
-
- def to_language(self):
- return self.__to_language
-
- def __repr__(self):
- return "<DjangoTranslation lang:%s>" % self.__language
-
-def translation(language):
- """
- Returns a translation object.
-
- This translation object will be constructed out of multiple GNUTranslations
- objects by merging their catalogs. It will construct a object for the
- requested language and add a fallback to the default language, if it's
- different from the requested language.
- """
- global _translations
-
- t = _translations.get(language, None)
- if t is not None:
- return t
-
- from django.conf import settings
-
- globalpath = os.path.join(os.path.dirname(upath(sys.modules[settings.__module__].__file__)), 'locale')
-
- def _fetch(lang, fallback=None):
-
- global _translations
-
- res = _translations.get(lang, None)
- if res is not None:
- return res
-
- loc = to_locale(lang)
-
- def _translation(path):
- try:
- t = gettext_module.translation('django', path, [loc], DjangoTranslation)
- t.set_language(lang)
- return t
- except IOError:
- return None
-
- res = _translation(globalpath)
-
- # We want to ensure that, for example, "en-gb" and "en-us" don't share
- # the same translation object (thus, merging en-us with a local update
- # doesn't affect en-gb), even though they will both use the core "en"
- # translation. So we have to subvert Python's internal gettext caching.
- base_lang = lambda x: x.split('-', 1)[0]
- if base_lang(lang) in [base_lang(trans) for trans in list(_translations)]:
- res._info = res._info.copy()
- res._catalog = res._catalog.copy()
-
- def _merge(path):
- t = _translation(path)
- if t is not None:
- if res is None:
- return t
- else:
- res.merge(t)
- return res
-
- for appname in reversed(settings.INSTALLED_APPS):
- app = import_module(appname)
- apppath = os.path.join(os.path.dirname(upath(app.__file__)), 'locale')
-
- if os.path.isdir(apppath):
- res = _merge(apppath)
-
- for localepath in reversed(settings.LOCALE_PATHS):
- if os.path.isdir(localepath):
- res = _merge(localepath)
-
- if res is None:
- if fallback is not None:
- res = fallback
- else:
- return gettext_module.NullTranslations()
- _translations[lang] = res
- return res
-
- default_translation = _fetch(settings.LANGUAGE_CODE)
- current_translation = _fetch(language, fallback=default_translation)
-
- return current_translation
-
-def activate(language):
- """
- Fetches the translation object for a given tuple of application name and
- language and installs it as the current translation object for the current
- thread.
- """
- _active.value = translation(language)
-
-def deactivate():
- """
- Deinstalls the currently active translation object so that further _ calls
- will resolve against the default translation object, again.
- """
- if hasattr(_active, "value"):
- del _active.value
-
-def deactivate_all():
- """
- Makes the active translation object a NullTranslations() instance. This is
- useful when we want delayed translations to appear as the original string
- for some reason.
- """
- _active.value = gettext_module.NullTranslations()
-
-def get_language():
- """Returns the currently selected language."""
- t = getattr(_active, "value", None)
- if t is not None:
- try:
- return t.to_language()
- except AttributeError:
- pass
- # If we don't have a real translation object, assume it's the default language.
- from django.conf import settings
- return settings.LANGUAGE_CODE
-
-def get_language_bidi():
- """
- Returns selected language's BiDi layout.
-
- * False = left-to-right layout
- * True = right-to-left layout
- """
- from django.conf import settings
-
- base_lang = get_language().split('-')[0]
- return base_lang in settings.LANGUAGES_BIDI
-
-def catalog():
- """
- Returns the current active catalog for further processing.
- This can be used if you need to modify the catalog or want to access the
- whole message catalog instead of just translating one string.
- """
- global _default
-
- t = getattr(_active, "value", None)
- if t is not None:
- return t
- if _default is None:
- from django.conf import settings
- _default = translation(settings.LANGUAGE_CODE)
- return _default
-
-def do_translate(message, translation_function):
- """
- Translates 'message' using the given 'translation_function' name -- which
- will be either gettext or ugettext. It uses the current thread to find the
- translation object to use. If no current translation is activated, the
- message will be run through the default translation object.
- """
- global _default
-
- # str() is allowing a bytestring message to remain bytestring on Python 2
- eol_message = message.replace(str('\r\n'), str('\n')).replace(str('\r'), str('\n'))
- t = getattr(_active, "value", None)
- if t is not None:
- result = getattr(t, translation_function)(eol_message)
- else:
- if _default is None:
- from django.conf import settings
- _default = translation(settings.LANGUAGE_CODE)
- result = getattr(_default, translation_function)(eol_message)
- if isinstance(message, SafeData):
- return mark_safe(result)
- return result
-
-def gettext(message):
- """
- Returns a string of the translation of the message.
-
- Returns a string on Python 3 and an UTF-8-encoded bytestring on Python 2.
- """
- return do_translate(message, 'gettext')
-
-if six.PY3:
- ugettext = gettext
-else:
- def ugettext(message):
- return do_translate(message, 'ugettext')
-
-def pgettext(context, message):
- msg_with_ctxt = "%s%s%s" % (context, CONTEXT_SEPARATOR, message)
- result = ugettext(msg_with_ctxt)
- if CONTEXT_SEPARATOR in result:
- # Translation not found
- result = message
- return result
-
-def gettext_noop(message):
- """
- Marks strings for translation but doesn't translate them now. This can be
- used to store strings in global variables that should stay in the base
- language (because they might be used externally) and will be translated
- later.
- """
- return message
-
-def do_ntranslate(singular, plural, number, translation_function):
- global _default
-
- t = getattr(_active, "value", None)
- if t is not None:
- return getattr(t, translation_function)(singular, plural, number)
- if _default is None:
- from django.conf import settings
- _default = translation(settings.LANGUAGE_CODE)
- return getattr(_default, translation_function)(singular, plural, number)
-
-def ngettext(singular, plural, number):
- """
- Returns a string of the translation of either the singular or plural,
- based on the number.
-
- Returns a string on Python 3 and an UTF-8-encoded bytestring on Python 2.
- """
- return do_ntranslate(singular, plural, number, 'ngettext')
-
-if six.PY3:
- ungettext = ngettext
-else:
- def ungettext(singular, plural, number):
- """
- Returns a unicode strings of the translation of either the singular or
- plural, based on the number.
- """
- return do_ntranslate(singular, plural, number, 'ungettext')
-
-def npgettext(context, singular, plural, number):
- msgs_with_ctxt = ("%s%s%s" % (context, CONTEXT_SEPARATOR, singular),
- "%s%s%s" % (context, CONTEXT_SEPARATOR, plural),
- number)
- result = ungettext(*msgs_with_ctxt)
- if CONTEXT_SEPARATOR in result:
- # Translation not found
- result = ungettext(singular, plural, number)
- return result
-
-def all_locale_paths():
- """
- Returns a list of paths to user-provides languages files.
- """
- from django.conf import settings
- globalpath = os.path.join(
- os.path.dirname(upath(sys.modules[settings.__module__].__file__)), 'locale')
- return [globalpath] + list(settings.LOCALE_PATHS)
-
-def check_for_language(lang_code):
- """
- Checks whether there is a global language file for the given language
- code. This is used to decide whether a user-provided language is
- available. This is only used for language codes from either the cookies
- or session and during format localization.
- """
- for path in all_locale_paths():
- if gettext_module.find('django', path, [to_locale(lang_code)]) is not None:
- return True
- return False
-check_for_language = memoize(check_for_language, _checked_languages, 1)
-
-def get_supported_language_variant(lang_code, supported=None, strict=False):
- """
- Returns the language-code that's listed in supported languages, possibly
- selecting a more generic variant. Raises LookupError if nothing found.
-
- If `strict` is False (the default), the function will look for an alternative
- country-specific variant when the currently checked is not found.
- """
- if supported is None:
- from django.conf import settings
- supported = SortedDict(settings.LANGUAGES)
- if lang_code:
- # if fr-CA is not supported, try fr-ca; if that fails, fallback to fr.
- generic_lang_code = lang_code.split('-')[0]
- variants = (lang_code, lang_code.lower(), generic_lang_code,
- generic_lang_code.lower())
- for code in variants:
- if code in supported and check_for_language(code):
- return code
- if not strict:
- # if fr-fr is not supported, try fr-ca.
- for supported_code in supported:
- if supported_code.startswith((generic_lang_code + '-',
- generic_lang_code.lower() + '-')):
- return supported_code
- raise LookupError(lang_code)
-
-def get_language_from_path(path, supported=None, strict=False):
- """
- Returns the language-code if there is a valid language-code
- found in the `path`.
-
- If `strict` is False (the default), the function will look for an alternative
- country-specific variant when the currently checked is not found.
- """
- if supported is None:
- from django.conf import settings
- supported = SortedDict(settings.LANGUAGES)
- regex_match = language_code_prefix_re.match(path)
- if not regex_match:
- return None
- lang_code = regex_match.group(1)
- try:
- return get_supported_language_variant(lang_code, supported, strict=strict)
- except LookupError:
- return None
-
-def get_language_from_request(request, check_path=False):
- """
- Analyzes the request to find what language the user wants the system to
- show. Only languages listed in settings.LANGUAGES are taken into account.
- If the user requests a sublanguage where we have a main language, we send
- out the main language.
-
- If check_path is True, the URL path prefix will be checked for a language
- code, otherwise this is skipped for backwards compatibility.
- """
- global _accepted
- from django.conf import settings
- supported = SortedDict(settings.LANGUAGES)
-
- if check_path:
- lang_code = get_language_from_path(request.path_info, supported)
- if lang_code is not None:
- return lang_code
-
- if hasattr(request, 'session'):
- lang_code = request.session.get('django_language', None)
- if lang_code in supported and lang_code is not None and check_for_language(lang_code):
- return lang_code
-
- lang_code = request.COOKIES.get(settings.LANGUAGE_COOKIE_NAME)
-
- try:
- return get_supported_language_variant(lang_code, supported)
- except LookupError:
- pass
-
- accept = request.META.get('HTTP_ACCEPT_LANGUAGE', '')
- for accept_lang, unused in parse_accept_lang_header(accept):
- if accept_lang == '*':
- break
-
- # 'normalized' is the root name of the locale in POSIX format (which is
- # the format used for the directories holding the MO files).
- normalized = locale.locale_alias.get(to_locale(accept_lang, True))
- if not normalized:
- continue
- # Remove the default encoding from locale_alias.
- normalized = normalized.split('.')[0]
-
- if normalized in _accepted:
- # We've seen this locale before and have an MO file for it, so no
- # need to check again.
- return _accepted[normalized]
-
- try:
- accept_lang = get_supported_language_variant(accept_lang, supported)
- except LookupError:
- continue
- else:
- _accepted[normalized] = accept_lang
- return accept_lang
-
- try:
- return get_supported_language_variant(settings.LANGUAGE_CODE, supported)
- except LookupError:
- return settings.LANGUAGE_CODE
-
-dot_re = re.compile(r'\S')
-def blankout(src, char):
- """
- Changes every non-whitespace character to the given char.
- Used in the templatize function.
- """
- return dot_re.sub(char, src)
-
-context_re = re.compile(r"""^\s+.*context\s+((?:"[^"]*?")|(?:'[^']*?'))\s*""")
-inline_re = re.compile(r"""^\s*trans\s+((?:"[^"]*?")|(?:'[^']*?'))(\s+.*context\s+((?:"[^"]*?")|(?:'[^']*?')))?\s*""")
-block_re = re.compile(r"""^\s*blocktrans(\s+.*context\s+((?:"[^"]*?")|(?:'[^']*?')))?(?:\s+|$)""")
-endblock_re = re.compile(r"""^\s*endblocktrans$""")
-plural_re = re.compile(r"""^\s*plural$""")
-constant_re = re.compile(r"""_\(((?:".*?")|(?:'.*?'))\)""")
-one_percent_re = re.compile(r"""(?<!%)%(?!%)""")
-
-
-def templatize(src, origin=None):
- """
- Turns a Django template into something that is understood by xgettext. It
- does so by translating the Django translation tags into standard gettext
- function invocations.
- """
- from django.conf import settings
- from django.template import (Lexer, TOKEN_TEXT, TOKEN_VAR, TOKEN_BLOCK,
- TOKEN_COMMENT, TRANSLATOR_COMMENT_MARK)
- src = force_text(src, settings.FILE_CHARSET)
- out = StringIO()
- message_context = None
- intrans = False
- inplural = False
- singular = []
- plural = []
- incomment = False
- comment = []
- lineno_comment_map = {}
- comment_lineno_cache = None
-
- for t in Lexer(src, origin).tokenize():
- if incomment:
- if t.token_type == TOKEN_BLOCK and t.contents == 'endcomment':
- content = ''.join(comment)
- translators_comment_start = None
- for lineno, line in enumerate(content.splitlines(True)):
- if line.lstrip().startswith(TRANSLATOR_COMMENT_MARK):
- translators_comment_start = lineno
- for lineno, line in enumerate(content.splitlines(True)):
- if translators_comment_start is not None and lineno >= translators_comment_start:
- out.write(' # %s' % line)
- else:
- out.write(' #\n')
- incomment = False
- comment = []
- else:
- comment.append(t.contents)
- elif intrans:
- if t.token_type == TOKEN_BLOCK:
- endbmatch = endblock_re.match(t.contents)
- pluralmatch = plural_re.match(t.contents)
- if endbmatch:
- if inplural:
- if message_context:
- out.write(' npgettext(%r, %r, %r,count) ' % (message_context, ''.join(singular), ''.join(plural)))
- else:
- out.write(' ngettext(%r, %r, count) ' % (''.join(singular), ''.join(plural)))
- for part in singular:
- out.write(blankout(part, 'S'))
- for part in plural:
- out.write(blankout(part, 'P'))
- else:
- if message_context:
- out.write(' pgettext(%r, %r) ' % (message_context, ''.join(singular)))
- else:
- out.write(' gettext(%r) ' % ''.join(singular))
- for part in singular:
- out.write(blankout(part, 'S'))
- message_context = None
- intrans = False
- inplural = False
- singular = []
- plural = []
- elif pluralmatch:
- inplural = True
- else:
- filemsg = ''
- if origin:
- filemsg = 'file %s, ' % origin
- raise SyntaxError("Translation blocks must not include other block tags: %s (%sline %d)" % (t.contents, filemsg, t.lineno))
- elif t.token_type == TOKEN_VAR:
- if inplural:
- plural.append('%%(%s)s' % t.contents)
- else:
- singular.append('%%(%s)s' % t.contents)
- elif t.token_type == TOKEN_TEXT:
- contents = one_percent_re.sub('%%', t.contents)
- if inplural:
- plural.append(contents)
- else:
- singular.append(contents)
-
- else:
- # Handle comment tokens (`{# ... #}`) plus other constructs on
- # the same line:
- if comment_lineno_cache is not None:
- cur_lineno = t.lineno + t.contents.count('\n')
- if comment_lineno_cache == cur_lineno:
- if t.token_type != TOKEN_COMMENT:
- for c in lineno_comment_map[comment_lineno_cache]:
- filemsg = ''
- if origin:
- filemsg = 'file %s, ' % origin
- warn_msg = ("The translator-targeted comment '%s' "
- "(%sline %d) was ignored, because it wasn't the last item "
- "on the line.") % (c, filemsg, comment_lineno_cache)
- warnings.warn(warn_msg, TranslatorCommentWarning)
- lineno_comment_map[comment_lineno_cache] = []
- else:
- out.write('# %s' % ' | '.join(lineno_comment_map[comment_lineno_cache]))
- comment_lineno_cache = None
-
- if t.token_type == TOKEN_BLOCK:
- imatch = inline_re.match(t.contents)
- bmatch = block_re.match(t.contents)
- cmatches = constant_re.findall(t.contents)
- if imatch:
- g = imatch.group(1)
- if g[0] == '"':
- g = g.strip('"')
- elif g[0] == "'":
- g = g.strip("'")
- g = one_percent_re.sub('%%', g)
- if imatch.group(2):
- # A context is provided
- context_match = context_re.match(imatch.group(2))
- message_context = context_match.group(1)
- if message_context[0] == '"':
- message_context = message_context.strip('"')
- elif message_context[0] == "'":
- message_context = message_context.strip("'")
- out.write(' pgettext(%r, %r) ' % (message_context, g))
- message_context = None
- else:
- out.write(' gettext(%r) ' % g)
- elif bmatch:
- for fmatch in constant_re.findall(t.contents):
- out.write(' _(%s) ' % fmatch)
- if bmatch.group(1):
- # A context is provided
- context_match = context_re.match(bmatch.group(1))
- message_context = context_match.group(1)
- if message_context[0] == '"':
- message_context = message_context.strip('"')
- elif message_context[0] == "'":
- message_context = message_context.strip("'")
- intrans = True
- inplural = False
- singular = []
- plural = []
- elif cmatches:
- for cmatch in cmatches:
- out.write(' _(%s) ' % cmatch)
- elif t.contents == 'comment':
- incomment = True
- else:
- out.write(blankout(t.contents, 'B'))
- elif t.token_type == TOKEN_VAR:
- parts = t.contents.split('|')
- cmatch = constant_re.match(parts[0])
- if cmatch:
- out.write(' _(%s) ' % cmatch.group(1))
- for p in parts[1:]:
- if p.find(':_(') >= 0:
- out.write(' %s ' % p.split(':',1)[1])
- else:
- out.write(blankout(p, 'F'))
- elif t.token_type == TOKEN_COMMENT:
- if t.contents.lstrip().startswith(TRANSLATOR_COMMENT_MARK):
- lineno_comment_map.setdefault(t.lineno,
- []).append(t.contents)
- comment_lineno_cache = t.lineno
- else:
- out.write(blankout(t.contents, 'X'))
- return force_str(out.getvalue())
-
-def parse_accept_lang_header(lang_string):
- """
- Parses the lang_string, which is the body of an HTTP Accept-Language
- header, and returns a list of (lang, q-value), ordered by 'q' values.
-
- Any format errors in lang_string results in an empty list being returned.
- """
- result = []
- pieces = accept_language_re.split(lang_string)
- if pieces[-1]:
- return []
- for i in range(0, len(pieces) - 1, 3):
- first, lang, priority = pieces[i : i + 3]
- if first:
- return []
- if priority:
- priority = float(priority)
- if not priority: # if priority is 0.0 at this point make it 1.0
- priority = 1.0
- result.append((lang, priority))
- result.sort(key=lambda k: k[1], reverse=True)
- return result
diff --git a/lib/python2.7/site-packages/django/utils/tree.py b/lib/python2.7/site-packages/django/utils/tree.py
deleted file mode 100644
index 3f93738..0000000
--- a/lib/python2.7/site-packages/django/utils/tree.py
+++ /dev/null
@@ -1,136 +0,0 @@
-"""
-A class for storing a tree graph. Primarily used for filter constructs in the
-ORM.
-"""
-
-import copy
-
-class Node(object):
- """
- A single internal node in the tree graph. A Node should be viewed as a
- connection (the root) with the children being either leaf nodes or other
- Node instances.
- """
- # Standard connector type. Clients usually won't use this at all and
- # subclasses will usually override the value.
- default = 'DEFAULT'
-
- def __init__(self, children=None, connector=None, negated=False):
- """
- Constructs a new Node. If no connector is given, the default will be
- used.
- """
- self.children = children[:] if children else []
- self.connector = connector or self.default
- self.negated = negated
-
- # We need this because of django.db.models.query_utils.Q. Q. __init__() is
- # problematic, but it is a natural Node subclass in all other respects.
- def _new_instance(cls, children=None, connector=None, negated=False):
- """
- This is called to create a new instance of this class when we need new
- Nodes (or subclasses) in the internal code in this class. Normally, it
- just shadows __init__(). However, subclasses with an __init__ signature
- that is not an extension of Node.__init__ might need to implement this
- method to allow a Node to create a new instance of them (if they have
- any extra setting up to do).
- """
- obj = Node(children, connector, negated)
- obj.__class__ = cls
- return obj
- _new_instance = classmethod(_new_instance)
-
- def __str__(self):
- if self.negated:
- return '(NOT (%s: %s))' % (self.connector, ', '.join([str(c) for c
- in self.children]))
- return '(%s: %s)' % (self.connector, ', '.join([str(c) for c in
- self.children]))
-
- def __deepcopy__(self, memodict):
- """
- Utility method used by copy.deepcopy().
- """
- obj = Node(connector=self.connector, negated=self.negated)
- obj.__class__ = self.__class__
- obj.children = copy.deepcopy(self.children, memodict)
- return obj
-
- def __len__(self):
- """
- The size of a node if the number of children it has.
- """
- return len(self.children)
-
- def __bool__(self):
- """
- For truth value testing.
- """
- return bool(self.children)
-
- def __nonzero__(self): # Python 2 compatibility
- return type(self).__bool__(self)
-
- def __contains__(self, other):
- """
- Returns True is 'other' is a direct child of this instance.
- """
- return other in self.children
-
- def _prepare_data(self, data):
- """
- A subclass hook for doing subclass specific transformations of the
- given data on combine() or add().
- """
- return data
-
- def add(self, data, conn_type, squash=True):
- """
- Combines this tree and the data represented by data using the
- connector conn_type. The combine is done by squashing the node other
- away if possible.
-
- This tree (self) will never be pushed to a child node of the
- combined tree, nor will the connector or negated properties change.
-
- The function returns a node which can be used in place of data
- regardless if the node other got squashed or not.
-
- If `squash` is False the data is prepared and added as a child to
- this tree without further logic.
- """
- if data in self.children:
- return data
- data = self._prepare_data(data)
- if not squash:
- self.children.append(data)
- return data
- if self.connector == conn_type:
- # We can reuse self.children to append or squash the node other.
- if (isinstance(data, Node) and not data.negated
- and (data.connector == conn_type or len(data) == 1)):
- # We can squash the other node's children directly into this
- # node. We are just doing (AB)(CD) == (ABCD) here, with the
- # addition that if the length of the other node is 1 the
- # connector doesn't matter. However, for the len(self) == 1
- # case we don't want to do the squashing, as it would alter
- # self.connector.
- self.children.extend(data.children)
- return self
- else:
- # We could use perhaps additional logic here to see if some
- # children could be used for pushdown here.
- self.children.append(data)
- return data
- else:
- obj = self._new_instance(self.children, self.connector,
- self.negated)
- self.connector = conn_type
- self.children = [obj, data]
- return data
-
- def negate(self):
- """
- Negate the sense of the root connector.
- """
- self.negated = not self.negated
diff --git a/lib/python2.7/site-packages/django/utils/tzinfo.py b/lib/python2.7/site-packages/django/utils/tzinfo.py
deleted file mode 100644
index fd221ea..0000000
--- a/lib/python2.7/site-packages/django/utils/tzinfo.py
+++ /dev/null
@@ -1,100 +0,0 @@
-"Implementation of tzinfo classes for use with datetime.datetime."
-
-from __future__ import unicode_literals
-
-import time
-from datetime import timedelta, tzinfo
-
-from django.utils.encoding import force_str, force_text, DEFAULT_LOCALE_ENCODING
-
-# Python's doc say: "A tzinfo subclass must have an __init__() method that can
-# be called with no arguments". FixedOffset and LocalTimezone don't honor this
-# requirement. Defining __getinitargs__ is sufficient to fix copy/deepcopy as
-# well as pickling/unpickling.
-
-class FixedOffset(tzinfo):
- "Fixed offset in minutes east from UTC."
- def __init__(self, offset):
- if isinstance(offset, timedelta):
- self.__offset = offset
- offset = self.__offset.seconds // 60
- else:
- self.__offset = timedelta(minutes=offset)
-
- sign = '-' if offset < 0 else '+'
- self.__name = "%s%02d%02d" % (sign, abs(offset) / 60., abs(offset) % 60)
-
- def __repr__(self):
- return self.__name
-
- def __getinitargs__(self):
- return self.__offset,
-
- def utcoffset(self, dt):
- return self.__offset
-
- def tzname(self, dt):
- return self.__name
-
- def dst(self, dt):
- return timedelta(0)
-
-# This implementation is used for display purposes. It uses an approximation
-# for DST computations on dates >= 2038.
-
-# A similar implementation exists in django.utils.timezone. It's used for
-# timezone support (when USE_TZ = True) and focuses on correctness.
-
-class LocalTimezone(tzinfo):
- "Proxy timezone information from time module."
- def __init__(self, dt):
- tzinfo.__init__(self)
- self.__dt = dt
- self._tzname = self.tzname(dt)
-
- def __repr__(self):
- return force_str(self._tzname)
-
- def __getinitargs__(self):
- return self.__dt,
-
- def utcoffset(self, dt):
- if self._isdst(dt):
- return timedelta(seconds=-time.altzone)
- else:
- return timedelta(seconds=-time.timezone)
-
- def dst(self, dt):
- if self._isdst(dt):
- return timedelta(seconds=-time.altzone) - timedelta(seconds=-time.timezone)
- else:
- return timedelta(0)
-
- def tzname(self, dt):
- is_dst = False if dt is None else self._isdst(dt)
- try:
- return force_text(time.tzname[is_dst], DEFAULT_LOCALE_ENCODING)
- except UnicodeDecodeError:
- return None
-
- def _isdst(self, dt):
- tt = (dt.year, dt.month, dt.day,
- dt.hour, dt.minute, dt.second,
- dt.weekday(), 0, 0)
- try:
- stamp = time.mktime(tt)
- except (OverflowError, ValueError):
- # 32 bit systems can't handle dates after Jan 2038, and certain
- # systems can't handle dates before ~1901-12-01:
- #
- # >>> time.mktime((1900, 1, 13, 0, 0, 0, 0, 0, 0))
- # OverflowError: mktime argument out of range
- # >>> time.mktime((1850, 1, 13, 0, 0, 0, 0, 0, 0))
- # ValueError: year out of range
- #
- # In this case, we fake the date, because we only care about the
- # DST flag.
- tt = (2037,) + tt[1:]
- stamp = time.mktime(tt)
- tt = time.localtime(stamp)
- return tt.tm_isdst > 0
diff --git a/lib/python2.7/site-packages/django/utils/unittest/__init__.py b/lib/python2.7/site-packages/django/utils/unittest/__init__.py
deleted file mode 100644
index ac852a3..0000000
--- a/lib/python2.7/site-packages/django/utils/unittest/__init__.py
+++ /dev/null
@@ -1,80 +0,0 @@
-"""
-unittest2
-
-unittest2 is a backport of the new features added to the unittest testing
-framework in Python 2.7. It is tested to run on Python 2.4 - 2.6.
-
-To use unittest2 instead of unittest simply replace ``import unittest`` with
-``import unittest2``.
-
-
-Copyright (c) 1999-2003 Steve Purcell
-Copyright (c) 2003-2010 Python Software Foundation
-This module is free software, and you may redistribute it and/or modify
-it under the same terms as Python itself, so long as this copyright message
-and disclaimer are retained in their original form.
-
-IN NO EVENT SHALL THE AUTHOR BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
-SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF
-THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGE.
-
-THE AUTHOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
-PARTICULAR PURPOSE. THE CODE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS,
-AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
-SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
-"""
-
-import sys
-
-# Django hackery to load the appropriate version of unittest
-
-try:
- # check the system path first
- from unittest2 import *
-except ImportError:
- if sys.version_info >= (2,7):
- # unittest2 features are native in Python 2.7
- from unittest import *
- else:
- # otherwise use our bundled version
- __all__ = ['TestResult', 'TestCase', 'TestSuite',
- 'TextTestRunner', 'TestLoader', 'FunctionTestCase', 'main',
- 'defaultTestLoader', 'SkipTest', 'skip', 'skipIf', 'skipUnless',
- 'expectedFailure', 'TextTestResult', '__version__', 'collector']
-
- __version__ = '0.5.1'
-
- # Expose obsolete functions for backwards compatibility
- __all__.extend(['getTestCaseNames', 'makeSuite', 'findTestCases'])
-
-
- from django.utils.unittest.collector import collector
- from django.utils.unittest.result import TestResult
- from django.utils.unittest.case import \
- TestCase, FunctionTestCase, SkipTest, skip, skipIf,\
- skipUnless, expectedFailure
-
- from django.utils.unittest.suite import BaseTestSuite, TestSuite
- from django.utils.unittest.loader import \
- TestLoader, defaultTestLoader, makeSuite, getTestCaseNames,\
- findTestCases
-
- from django.utils.unittest.main import TestProgram, main, main_
- from django.utils.unittest.runner import TextTestRunner, TextTestResult
-
- try:
- from django.utils.unittest.signals import\
- installHandler, registerResult, removeResult, removeHandler
- except ImportError:
- # Compatibility with platforms that don't have the signal module
- pass
- else:
- __all__.extend(['installHandler', 'registerResult', 'removeResult',
- 'removeHandler'])
-
- # deprecated
- _TextTestResult = TextTestResult
-
- __unittest = True
diff --git a/lib/python2.7/site-packages/django/utils/unittest/__main__.py b/lib/python2.7/site-packages/django/utils/unittest/__main__.py
deleted file mode 100644
index 68b893d..0000000
--- a/lib/python2.7/site-packages/django/utils/unittest/__main__.py
+++ /dev/null
@@ -1,10 +0,0 @@
-"""Main entry point"""
-
-import sys
-if sys.argv[0].endswith("__main__.py"):
- sys.argv[0] = "unittest2"
-
-__unittest = True
-
-from django.utils.unittest.main import main_
-main_()
diff --git a/lib/python2.7/site-packages/django/utils/unittest/case.py b/lib/python2.7/site-packages/django/utils/unittest/case.py
deleted file mode 100644
index fffd3c2..0000000
--- a/lib/python2.7/site-packages/django/utils/unittest/case.py
+++ /dev/null
@@ -1,1076 +0,0 @@
-"""Test case implementation"""
-
-import sys
-import difflib
-import pprint
-import re
-import unittest
-import warnings
-
-from django.utils.unittest import result
-from django.utils.unittest.util import\
- safe_repr, safe_str, strclass,\
- unorderable_list_difference
-
-from django.utils.unittest.compatibility import wraps
-
-__unittest = True
-
-
-DIFF_OMITTED = ('\nDiff is %s characters long. '
- 'Set self.maxDiff to None to see it.')
-
-class SkipTest(Exception):
- """
- Raise this exception in a test to skip it.
-
- Usually you can use TestResult.skip() or one of the skipping decorators
- instead of raising this directly.
- """
-
-class _ExpectedFailure(Exception):
- """
- Raise this when a test is expected to fail.
-
- This is an implementation detail.
- """
-
- def __init__(self, exc_info):
- # can't use super because Python 2.4 exceptions are old style
- Exception.__init__(self)
- self.exc_info = exc_info
-
-class _UnexpectedSuccess(Exception):
- """
- The test was supposed to fail, but it didn't!
- """
-
-def _id(obj):
- return obj
-
-def skip(reason):
- """
- Unconditionally skip a test.
- """
- def decorator(test_item):
- if not (isinstance(test_item, type) and issubclass(test_item, TestCase)):
- @wraps(test_item)
- def skip_wrapper(*args, **kwargs):
- raise SkipTest(reason)
- test_item = skip_wrapper
-
- test_item.__unittest_skip__ = True
- test_item.__unittest_skip_why__ = reason
- return test_item
- return decorator
-
-def skipIf(condition, reason):
- """
- Skip a test if the condition is true.
- """
- if condition:
- return skip(reason)
- return _id
-
-def skipUnless(condition, reason):
- """
- Skip a test unless the condition is true.
- """
- if not condition:
- return skip(reason)
- return _id
-
-
-def expectedFailure(func):
- @wraps(func)
- def wrapper(*args, **kwargs):
- try:
- func(*args, **kwargs)
- except Exception:
- raise _ExpectedFailure(sys.exc_info())
- raise _UnexpectedSuccess
- return wrapper
-
-
-class _AssertRaisesContext(object):
- """A context manager used to implement TestCase.assertRaises* methods."""
-
- def __init__(self, expected, test_case, expected_regexp=None):
- self.expected = expected
- self.failureException = test_case.failureException
- self.expected_regexp = expected_regexp
-
- def __enter__(self):
- return self
-
- def __exit__(self, exc_type, exc_value, tb):
- if exc_type is None:
- try:
- exc_name = self.expected.__name__
- except AttributeError:
- exc_name = str(self.expected)
- raise self.failureException(
- "%s not raised" % (exc_name,))
- if not issubclass(exc_type, self.expected):
- # let unexpected exceptions pass through
- return False
- self.exception = exc_value # store for later retrieval
- if self.expected_regexp is None:
- return True
-
- expected_regexp = self.expected_regexp
- if isinstance(expected_regexp, basestring):
- expected_regexp = re.compile(expected_regexp)
- if not expected_regexp.search(str(exc_value)):
- raise self.failureException('"%s" does not match "%s"' %
- (expected_regexp.pattern, str(exc_value)))
- return True
-
-
-class _TypeEqualityDict(object):
-
- def __init__(self, testcase):
- self.testcase = testcase
- self._store = {}
-
- def __setitem__(self, key, value):
- self._store[key] = value
-
- def __getitem__(self, key):
- value = self._store[key]
- if isinstance(value, basestring):
- return getattr(self.testcase, value)
- return value
-
- def get(self, key, default=None):
- if key in self._store:
- return self[key]
- return default
-
-
-class TestCase(unittest.TestCase):
- """A class whose instances are single test cases.
-
- By default, the test code itself should be placed in a method named
- 'runTest'.
-
- If the fixture may be used for many test cases, create as
- many test methods as are needed. When instantiating such a TestCase
- subclass, specify in the constructor arguments the name of the test method
- that the instance is to execute.
-
- Test authors should subclass TestCase for their own tests. Construction
- and deconstruction of the test's environment ('fixture') can be
- implemented by overriding the 'setUp' and 'tearDown' methods respectively.
-
- If it is necessary to override the __init__ method, the base class
- __init__ method must always be called. It is important that subclasses
- should not change the signature of their __init__ method, since instances
- of the classes are instantiated automatically by parts of the framework
- in order to be run.
- """
-
- # This attribute determines which exception will be raised when
- # the instance's assertion methods fail; test methods raising this
- # exception will be deemed to have 'failed' rather than 'errored'
-
- failureException = AssertionError
-
- # This attribute sets the maximum length of a diff in failure messages
- # by assert methods using difflib. It is looked up as an instance attribute
- # so can be configured by individual tests if required.
-
- maxDiff = 80*8
-
- # This attribute determines whether long messages (including repr of
- # objects used in assert methods) will be printed on failure in *addition*
- # to any explicit message passed.
-
- longMessage = True
-
- # Attribute used by TestSuite for classSetUp
-
- _classSetupFailed = False
-
- def __init__(self, methodName='runTest'):
- """Create an instance of the class that will use the named test
- method when executed. Raises a ValueError if the instance does
- not have a method with the specified name.
- """
- self._testMethodName = methodName
- self._resultForDoCleanups = None
- try:
- testMethod = getattr(self, methodName)
- except AttributeError:
- raise ValueError("no such test method in %s: %s" % \
- (self.__class__, methodName))
- self._testMethodDoc = testMethod.__doc__
- self._cleanups = []
-
- # Map types to custom assertEqual functions that will compare
- # instances of said type in more detail to generate a more useful
- # error message.
- self._type_equality_funcs = _TypeEqualityDict(self)
- self.addTypeEqualityFunc(dict, 'assertDictEqual')
- self.addTypeEqualityFunc(list, 'assertListEqual')
- self.addTypeEqualityFunc(tuple, 'assertTupleEqual')
- self.addTypeEqualityFunc(set, 'assertSetEqual')
- self.addTypeEqualityFunc(frozenset, 'assertSetEqual')
- self.addTypeEqualityFunc(unicode, 'assertMultiLineEqual')
-
- def addTypeEqualityFunc(self, typeobj, function):
- """Add a type specific assertEqual style function to compare a type.
-
- This method is for use by TestCase subclasses that need to register
- their own type equality functions to provide nicer error messages.
-
- Args:
- typeobj: The data type to call this function on when both values
- are of the same type in assertEqual().
- function: The callable taking two arguments and an optional
- msg= argument that raises self.failureException with a
- useful error message when the two arguments are not equal.
- """
- self._type_equality_funcs[typeobj] = function
-
- def addCleanup(self, function, *args, **kwargs):
- """Add a function, with arguments, to be called when the test is
- completed. Functions added are called on a LIFO basis and are
- called after tearDown on test failure or success.
-
- Cleanup items are called even if setUp fails (unlike tearDown)."""
- self._cleanups.append((function, args, kwargs))
-
- @classmethod
- def setUpClass(cls):
- "Hook method for setting up class fixture before running tests in the class."
-
- @classmethod
- def tearDownClass(cls):
- "Hook method for deconstructing the class fixture after running all tests in the class."
-
- def countTestCases(self):
- return 1
-
- def defaultTestResult(self):
- return result.TestResult()
-
- def shortDescription(self):
- """Returns a one-line description of the test, or None if no
- description has been provided.
-
- The default implementation of this method returns the first line of
- the specified test method's docstring.
- """
- doc = self._testMethodDoc
- return doc and doc.split("\n")[0].strip() or None
-
-
- def id(self):
- return "%s.%s" % (strclass(self.__class__), self._testMethodName)
-
- def __eq__(self, other):
- if type(self) is not type(other):
- return NotImplemented
-
- return self._testMethodName == other._testMethodName
-
- def __ne__(self, other):
- return not self == other
-
- def __hash__(self):
- return hash((type(self), self._testMethodName))
-
- def __str__(self):
- return "%s (%s)" % (self._testMethodName, strclass(self.__class__))
-
- def __repr__(self):
- return "<%s testMethod=%s>" % \
- (strclass(self.__class__), self._testMethodName)
-
- def _addSkip(self, result, reason):
- addSkip = getattr(result, 'addSkip', None)
- if addSkip is not None:
- addSkip(self, reason)
- else:
- warnings.warn("Use of a TestResult without an addSkip method is deprecated",
- DeprecationWarning, 2)
- result.addSuccess(self)
-
- def run(self, result=None):
- orig_result = result
- if result is None:
- result = self.defaultTestResult()
- startTestRun = getattr(result, 'startTestRun', None)
- if startTestRun is not None:
- startTestRun()
-
- self._resultForDoCleanups = result
- result.startTest(self)
-
- testMethod = getattr(self, self._testMethodName)
-
- if (getattr(self.__class__, "__unittest_skip__", False) or
- getattr(testMethod, "__unittest_skip__", False)):
- # If the class or method was skipped.
- try:
- skip_why = (getattr(self.__class__, '__unittest_skip_why__', '')
- or getattr(testMethod, '__unittest_skip_why__', ''))
- self._addSkip(result, skip_why)
- finally:
- result.stopTest(self)
- return
- try:
- success = False
- try:
- self.setUp()
- except SkipTest as e:
- self._addSkip(result, str(e))
- except Exception:
- result.addError(self, sys.exc_info())
- else:
- try:
- testMethod()
- except self.failureException:
- result.addFailure(self, sys.exc_info())
- except _ExpectedFailure as e:
- addExpectedFailure = getattr(result, 'addExpectedFailure', None)
- if addExpectedFailure is not None:
- addExpectedFailure(self, e.exc_info)
- else:
- warnings.warn("Use of a TestResult without an addExpectedFailure method is deprecated",
- DeprecationWarning)
- result.addSuccess(self)
- except _UnexpectedSuccess:
- addUnexpectedSuccess = getattr(result, 'addUnexpectedSuccess', None)
- if addUnexpectedSuccess is not None:
- addUnexpectedSuccess(self)
- else:
- warnings.warn("Use of a TestResult without an addUnexpectedSuccess method is deprecated",
- DeprecationWarning)
- result.addFailure(self, sys.exc_info())
- except SkipTest as e:
- self._addSkip(result, str(e))
- except Exception:
- result.addError(self, sys.exc_info())
- else:
- success = True
-
- try:
- self.tearDown()
- except Exception:
- result.addError(self, sys.exc_info())
- success = False
-
- cleanUpSuccess = self.doCleanups()
- success = success and cleanUpSuccess
- if success:
- result.addSuccess(self)
- finally:
- result.stopTest(self)
- if orig_result is None:
- stopTestRun = getattr(result, 'stopTestRun', None)
- if stopTestRun is not None:
- stopTestRun()
-
- def doCleanups(self):
- """Execute all cleanup functions. Normally called for you after
- tearDown."""
- result = self._resultForDoCleanups
- ok = True
- while self._cleanups:
- function, args, kwargs = self._cleanups.pop(-1)
- try:
- function(*args, **kwargs)
- except Exception:
- ok = False
- result.addError(self, sys.exc_info())
- return ok
-
- def __call__(self, *args, **kwds):
- return self.run(*args, **kwds)
-
- def debug(self):
- """Run the test without collecting errors in a TestResult"""
- self.setUp()
- getattr(self, self._testMethodName)()
- self.tearDown()
- while self._cleanups:
- function, args, kwargs = self._cleanups.pop(-1)
- function(*args, **kwargs)
-
- def skipTest(self, reason):
- """Skip this test."""
- raise SkipTest(reason)
-
- def fail(self, msg=None):
- """Fail immediately, with the given message."""
- raise self.failureException(msg)
-
- def assertFalse(self, expr, msg=None):
- "Fail the test if the expression is true."
- if expr:
- msg = self._formatMessage(msg, "%s is not False" % safe_repr(expr))
- raise self.failureException(msg)
-
- def assertTrue(self, expr, msg=None):
- """Fail the test unless the expression is true."""
- if not expr:
- msg = self._formatMessage(msg, "%s is not True" % safe_repr(expr))
- raise self.failureException(msg)
-
- def _formatMessage(self, msg, standardMsg):
- """Honour the longMessage attribute when generating failure messages.
- If longMessage is False this means:
- * Use only an explicit message if it is provided
- * Otherwise use the standard message for the assert
-
- If longMessage is True:
- * Use the standard message
- * If an explicit message is provided, plus ' : ' and the explicit message
- """
- if not self.longMessage:
- return msg or standardMsg
- if msg is None:
- return standardMsg
- try:
- return '%s : %s' % (standardMsg, msg)
- except UnicodeDecodeError:
- return '%s : %s' % (safe_str(standardMsg), safe_str(msg))
-
-
- def assertRaises(self, excClass, callableObj=None, *args, **kwargs):
- """Fail unless an exception of class excClass is thrown
- by callableObj when invoked with arguments args and keyword
- arguments kwargs. If a different type of exception is
- thrown, it will not be caught, and the test case will be
- deemed to have suffered an error, exactly as for an
- unexpected exception.
-
- If called with callableObj omitted or None, will return a
- context object used like this::
-
- with self.assertRaises(SomeException):
- do_something()
-
- The context manager keeps a reference to the exception as
- the 'exception' attribute. This allows you to inspect the
- exception after the assertion::
-
- with self.assertRaises(SomeException) as cm:
- do_something()
- the_exception = cm.exception
- self.assertEqual(the_exception.error_code, 3)
- """
- if callableObj is None:
- return _AssertRaisesContext(excClass, self)
- try:
- callableObj(*args, **kwargs)
- except excClass:
- return
-
- if hasattr(excClass,'__name__'):
- excName = excClass.__name__
- else:
- excName = str(excClass)
- raise self.failureException("%s not raised" % excName)
-
- def _getAssertEqualityFunc(self, first, second):
- """Get a detailed comparison function for the types of the two args.
-
- Returns: A callable accepting (first, second, msg=None) that will
- raise a failure exception if first != second with a useful human
- readable error message for those types.
- """
- #
- # NOTE(gregory.p.smith): I considered isinstance(first, type(second))
- # and vice versa. I opted for the conservative approach in case
- # subclasses are not intended to be compared in detail to their super
- # class instances using a type equality func. This means testing
- # subtypes won't automagically use the detailed comparison. Callers
- # should use their type specific assertSpamEqual method to compare
- # subclasses if the detailed comparison is desired and appropriate.
- # See the discussion in http://bugs.python.org/issue2578.
- #
- if type(first) is type(second):
- asserter = self._type_equality_funcs.get(type(first))
- if asserter is not None:
- return asserter
-
- return self._baseAssertEqual
-
- def _baseAssertEqual(self, first, second, msg=None):
- """The default assertEqual implementation, not type specific."""
- if not first == second:
- standardMsg = '%s != %s' % (safe_repr(first), safe_repr(second))
- msg = self._formatMessage(msg, standardMsg)
- raise self.failureException(msg)
-
- def assertEqual(self, first, second, msg=None):
- """Fail if the two objects are unequal as determined by the '=='
- operator.
- """
- assertion_func = self._getAssertEqualityFunc(first, second)
- assertion_func(first, second, msg=msg)
-
- def assertNotEqual(self, first, second, msg=None):
- """Fail if the two objects are equal as determined by the '=='
- operator.
- """
- if not first != second:
- msg = self._formatMessage(msg, '%s == %s' % (safe_repr(first),
- safe_repr(second)))
- raise self.failureException(msg)
-
- def assertAlmostEqual(self, first, second, places=None, msg=None, delta=None):
- """Fail if the two objects are unequal as determined by their
- difference rounded to the given number of decimal places
- (default 7) and comparing to zero, or by comparing that the
- between the two objects is more than the given delta.
-
- Note that decimal places (from zero) are usually not the same
- as significant digits (measured from the most signficant digit).
-
- If the two objects compare equal then they will automatically
- compare almost equal.
- """
- if first == second:
- # shortcut
- return
- if delta is not None and places is not None:
- raise TypeError("specify delta or places not both")
-
- if delta is not None:
- if abs(first - second) <= delta:
- return
-
- standardMsg = '%s != %s within %s delta' % (safe_repr(first),
- safe_repr(second),
- safe_repr(delta))
- else:
- if places is None:
- places = 7
-
- if round(abs(second-first), places) == 0:
- return
-
- standardMsg = '%s != %s within %r places' % (safe_repr(first),
- safe_repr(second),
- places)
- msg = self._formatMessage(msg, standardMsg)
- raise self.failureException(msg)
-
- def assertNotAlmostEqual(self, first, second, places=None, msg=None, delta=None):
- """Fail if the two objects are equal as determined by their
- difference rounded to the given number of decimal places
- (default 7) and comparing to zero, or by comparing that the
- between the two objects is less than the given delta.
-
- Note that decimal places (from zero) are usually not the same
- as significant digits (measured from the most signficant digit).
-
- Objects that are equal automatically fail.
- """
- if delta is not None and places is not None:
- raise TypeError("specify delta or places not both")
- if delta is not None:
- if not (first == second) and abs(first - second) > delta:
- return
- standardMsg = '%s == %s within %s delta' % (safe_repr(first),
- safe_repr(second),
- safe_repr(delta))
- else:
- if places is None:
- places = 7
- if not (first == second) and round(abs(second-first), places) != 0:
- return
- standardMsg = '%s == %s within %r places' % (safe_repr(first),
- safe_repr(second),
- places)
-
- msg = self._formatMessage(msg, standardMsg)
- raise self.failureException(msg)
-
- # Synonyms for assertion methods
-
- # The plurals are undocumented. Keep them that way to discourage use.
- # Do not add more. Do not remove.
- # Going through a deprecation cycle on these would annoy many people.
- assertEquals = assertEqual
- assertNotEquals = assertNotEqual
- assertAlmostEquals = assertAlmostEqual
- assertNotAlmostEquals = assertNotAlmostEqual
- assert_ = assertTrue
-
- # These fail* assertion method names are pending deprecation and will
- # be a DeprecationWarning in 3.2; http://bugs.python.org/issue2578
- def _deprecate(original_func):
- def deprecated_func(*args, **kwargs):
- warnings.warn(
- ('Please use %s instead.' % original_func.__name__),
- PendingDeprecationWarning, 2)
- return original_func(*args, **kwargs)
- return deprecated_func
-
- failUnlessEqual = _deprecate(assertEqual)
- failIfEqual = _deprecate(assertNotEqual)
- failUnlessAlmostEqual = _deprecate(assertAlmostEqual)
- failIfAlmostEqual = _deprecate(assertNotAlmostEqual)
- failUnless = _deprecate(assertTrue)
- failUnlessRaises = _deprecate(assertRaises)
- failIf = _deprecate(assertFalse)
-
- def assertSequenceEqual(self, seq1, seq2,
- msg=None, seq_type=None, max_diff=80*8):
- """An equality assertion for ordered sequences (like lists and tuples).
-
- For the purposes of this function, a valid ordered sequence type is one
- which can be indexed, has a length, and has an equality operator.
-
- Args:
- seq1: The first sequence to compare.
- seq2: The second sequence to compare.
- seq_type: The expected datatype of the sequences, or None if no
- datatype should be enforced.
- msg: Optional message to use on failure instead of a list of
- differences.
- max_diff: Maximum size off the diff, larger diffs are not shown
- """
- if seq_type is not None:
- seq_type_name = seq_type.__name__
- if not isinstance(seq1, seq_type):
- raise self.failureException('First sequence is not a %s: %s'
- % (seq_type_name, safe_repr(seq1)))
- if not isinstance(seq2, seq_type):
- raise self.failureException('Second sequence is not a %s: %s'
- % (seq_type_name, safe_repr(seq2)))
- else:
- seq_type_name = "sequence"
-
- differing = None
- try:
- len1 = len(seq1)
- except (TypeError, NotImplementedError):
- differing = 'First %s has no length. Non-sequence?' % (
- seq_type_name)
-
- if differing is None:
- try:
- len2 = len(seq2)
- except (TypeError, NotImplementedError):
- differing = 'Second %s has no length. Non-sequence?' % (
- seq_type_name)
-
- if differing is None:
- if seq1 == seq2:
- return
-
- seq1_repr = repr(seq1)
- seq2_repr = repr(seq2)
- if len(seq1_repr) > 30:
- seq1_repr = seq1_repr[:30] + '...'
- if len(seq2_repr) > 30:
- seq2_repr = seq2_repr[:30] + '...'
- elements = (seq_type_name.capitalize(), seq1_repr, seq2_repr)
- differing = '%ss differ: %s != %s\n' % elements
-
- for i in xrange(min(len1, len2)):
- try:
- item1 = seq1[i]
- except (TypeError, IndexError, NotImplementedError):
- differing += ('\nUnable to index element %d of first %s\n' %
- (i, seq_type_name))
- break
-
- try:
- item2 = seq2[i]
- except (TypeError, IndexError, NotImplementedError):
- differing += ('\nUnable to index element %d of second %s\n' %
- (i, seq_type_name))
- break
-
- if item1 != item2:
- differing += ('\nFirst differing element %d:\n%s\n%s\n' %
- (i, item1, item2))
- break
- else:
- if (len1 == len2 and seq_type is None and
- type(seq1) != type(seq2)):
- # The sequences are the same, but have differing types.
- return
-
- if len1 > len2:
- differing += ('\nFirst %s contains %d additional '
- 'elements.\n' % (seq_type_name, len1 - len2))
- try:
- differing += ('First extra element %d:\n%s\n' %
- (len2, seq1[len2]))
- except (TypeError, IndexError, NotImplementedError):
- differing += ('Unable to index element %d '
- 'of first %s\n' % (len2, seq_type_name))
- elif len1 < len2:
- differing += ('\nSecond %s contains %d additional '
- 'elements.\n' % (seq_type_name, len2 - len1))
- try:
- differing += ('First extra element %d:\n%s\n' %
- (len1, seq2[len1]))
- except (TypeError, IndexError, NotImplementedError):
- differing += ('Unable to index element %d '
- 'of second %s\n' % (len1, seq_type_name))
- standardMsg = differing
- diffMsg = '\n' + '\n'.join(
- difflib.ndiff(pprint.pformat(seq1).splitlines(),
- pprint.pformat(seq2).splitlines()))
-
- standardMsg = self._truncateMessage(standardMsg, diffMsg)
- msg = self._formatMessage(msg, standardMsg)
- self.fail(msg)
-
- def _truncateMessage(self, message, diff):
- max_diff = self.maxDiff
- if max_diff is None or len(diff) <= max_diff:
- return message + diff
- return message + (DIFF_OMITTED % len(diff))
-
- def assertListEqual(self, list1, list2, msg=None):
- """A list-specific equality assertion.
-
- Args:
- list1: The first list to compare.
- list2: The second list to compare.
- msg: Optional message to use on failure instead of a list of
- differences.
-
- """
- self.assertSequenceEqual(list1, list2, msg, seq_type=list)
-
- def assertTupleEqual(self, tuple1, tuple2, msg=None):
- """A tuple-specific equality assertion.
-
- Args:
- tuple1: The first tuple to compare.
- tuple2: The second tuple to compare.
- msg: Optional message to use on failure instead of a list of
- differences.
- """
- self.assertSequenceEqual(tuple1, tuple2, msg, seq_type=tuple)
-
- def assertSetEqual(self, set1, set2, msg=None):
- """A set-specific equality assertion.
-
- Args:
- set1: The first set to compare.
- set2: The second set to compare.
- msg: Optional message to use on failure instead of a list of
- differences.
-
- assertSetEqual uses ducktyping to support
- different types of sets, and is optimized for sets specifically
- (parameters must support a difference method).
- """
- try:
- difference1 = set1.difference(set2)
- except TypeError as e:
- self.fail('invalid type when attempting set difference: %s' % e)
- except AttributeError as e:
- self.fail('first argument does not support set difference: %s' % e)
-
- try:
- difference2 = set2.difference(set1)
- except TypeError as e:
- self.fail('invalid type when attempting set difference: %s' % e)
- except AttributeError as e:
- self.fail('second argument does not support set difference: %s' % e)
-
- if not (difference1 or difference2):
- return
-
- lines = []
- if difference1:
- lines.append('Items in the first set but not the second:')
- for item in difference1:
- lines.append(repr(item))
- if difference2:
- lines.append('Items in the second set but not the first:')
- for item in difference2:
- lines.append(repr(item))
-
- standardMsg = '\n'.join(lines)
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertIn(self, member, container, msg=None):
- """Just like self.assertTrue(a in b), but with a nicer default message."""
- if member not in container:
- standardMsg = '%s not found in %s' % (safe_repr(member),
- safe_repr(container))
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertNotIn(self, member, container, msg=None):
- """Just like self.assertTrue(a not in b), but with a nicer default message."""
- if member in container:
- standardMsg = '%s unexpectedly found in %s' % (safe_repr(member),
- safe_repr(container))
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertIs(self, expr1, expr2, msg=None):
- """Just like self.assertTrue(a is b), but with a nicer default message."""
- if expr1 is not expr2:
- standardMsg = '%s is not %s' % (safe_repr(expr1), safe_repr(expr2))
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertIsNot(self, expr1, expr2, msg=None):
- """Just like self.assertTrue(a is not b), but with a nicer default message."""
- if expr1 is expr2:
- standardMsg = 'unexpectedly identical: %s' % (safe_repr(expr1),)
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertDictEqual(self, d1, d2, msg=None):
- self.assertTrue(isinstance(d1, dict), 'First argument is not a dictionary')
- self.assertTrue(isinstance(d2, dict), 'Second argument is not a dictionary')
-
- if d1 != d2:
- standardMsg = '%s != %s' % (safe_repr(d1, True), safe_repr(d2, True))
- diff = ('\n' + '\n'.join(difflib.ndiff(
- pprint.pformat(d1).splitlines(),
- pprint.pformat(d2).splitlines())))
- standardMsg = self._truncateMessage(standardMsg, diff)
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertDictContainsSubset(self, expected, actual, msg=None):
- """Checks whether actual is a superset of expected."""
- missing = []
- mismatched = []
- for key, value in expected.iteritems():
- if key not in actual:
- missing.append(key)
- elif value != actual[key]:
- mismatched.append('%s, expected: %s, actual: %s' %
- (safe_repr(key), safe_repr(value),
- safe_repr(actual[key])))
-
- if not (missing or mismatched):
- return
-
- standardMsg = ''
- if missing:
- standardMsg = 'Missing: %s' % ','.join(safe_repr(m) for m in
- missing)
- if mismatched:
- if standardMsg:
- standardMsg += '; '
- standardMsg += 'Mismatched values: %s' % ','.join(mismatched)
-
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertItemsEqual(self, expected_seq, actual_seq, msg=None):
- """An unordered sequence specific comparison. It asserts that
- expected_seq and actual_seq contain the same elements. It is
- the equivalent of::
-
- self.assertEqual(sorted(expected_seq), sorted(actual_seq))
-
- Raises with an error message listing which elements of expected_seq
- are missing from actual_seq and vice versa if any.
-
- Asserts that each element has the same count in both sequences.
- Example:
- - [0, 1, 1] and [1, 0, 1] compare equal.
- - [0, 0, 1] and [0, 1] compare unequal.
- """
- try:
- expected = sorted(expected_seq)
- actual = sorted(actual_seq)
- except TypeError:
- # Unsortable items (example: set(), complex(), ...)
- expected = list(expected_seq)
- actual = list(actual_seq)
- missing, unexpected = unorderable_list_difference(
- expected, actual, ignore_duplicate=False
- )
- else:
- return self.assertSequenceEqual(expected, actual, msg=msg)
-
- errors = []
- if missing:
- errors.append('Expected, but missing:\n %s' %
- safe_repr(missing))
- if unexpected:
- errors.append('Unexpected, but present:\n %s' %
- safe_repr(unexpected))
- if errors:
- standardMsg = '\n'.join(errors)
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertMultiLineEqual(self, first, second, msg=None):
- """Assert that two multi-line strings are equal."""
- self.assertTrue(isinstance(first, basestring), (
- 'First argument is not a string'))
- self.assertTrue(isinstance(second, basestring), (
- 'Second argument is not a string'))
-
- if first != second:
- standardMsg = '%s != %s' % (safe_repr(first, True), safe_repr(second, True))
- diff = '\n' + ''.join(difflib.ndiff(first.splitlines(True),
- second.splitlines(True)))
- standardMsg = self._truncateMessage(standardMsg, diff)
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertLess(self, a, b, msg=None):
- """Just like self.assertTrue(a < b), but with a nicer default message."""
- if not a < b:
- standardMsg = '%s not less than %s' % (safe_repr(a), safe_repr(b))
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertLessEqual(self, a, b, msg=None):
- """Just like self.assertTrue(a <= b), but with a nicer default message."""
- if not a <= b:
- standardMsg = '%s not less than or equal to %s' % (safe_repr(a), safe_repr(b))
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertGreater(self, a, b, msg=None):
- """Just like self.assertTrue(a > b), but with a nicer default message."""
- if not a > b:
- standardMsg = '%s not greater than %s' % (safe_repr(a), safe_repr(b))
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertGreaterEqual(self, a, b, msg=None):
- """Just like self.assertTrue(a >= b), but with a nicer default message."""
- if not a >= b:
- standardMsg = '%s not greater than or equal to %s' % (safe_repr(a), safe_repr(b))
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertIsNone(self, obj, msg=None):
- """Same as self.assertTrue(obj is None), with a nicer default message."""
- if obj is not None:
- standardMsg = '%s is not None' % (safe_repr(obj),)
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertIsNotNone(self, obj, msg=None):
- """Included for symmetry with assertIsNone."""
- if obj is None:
- standardMsg = 'unexpectedly None'
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertIsInstance(self, obj, cls, msg=None):
- """Same as self.assertTrue(isinstance(obj, cls)), with a nicer
- default message."""
- if not isinstance(obj, cls):
- standardMsg = '%s is not an instance of %r' % (safe_repr(obj), cls)
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertNotIsInstance(self, obj, cls, msg=None):
- """Included for symmetry with assertIsInstance."""
- if isinstance(obj, cls):
- standardMsg = '%s is an instance of %r' % (safe_repr(obj), cls)
- self.fail(self._formatMessage(msg, standardMsg))
-
- def assertRaisesRegexp(self, expected_exception, expected_regexp,
- callable_obj=None, *args, **kwargs):
- """Asserts that the message in a raised exception matches a regexp.
-
- Args:
- expected_exception: Exception class expected to be raised.
- expected_regexp: Regexp (re pattern object or string) expected
- to be found in error message.
- callable_obj: Function to be called.
- args: Extra args.
- kwargs: Extra kwargs.
- """
- if callable_obj is None:
- return _AssertRaisesContext(expected_exception, self, expected_regexp)
- try:
- callable_obj(*args, **kwargs)
- except expected_exception as exc_value:
- if isinstance(expected_regexp, basestring):
- expected_regexp = re.compile(expected_regexp)
- if not expected_regexp.search(str(exc_value)):
- raise self.failureException('"%s" does not match "%s"' %
- (expected_regexp.pattern, str(exc_value)))
- else:
- if hasattr(expected_exception, '__name__'):
- excName = expected_exception.__name__
- else:
- excName = str(expected_exception)
- raise self.failureException("%s not raised" % excName)
-
- def assertRegexpMatches(self, text, expected_regexp, msg=None):
- """Fail the test unless the text matches the regular expression."""
- if isinstance(expected_regexp, basestring):
- expected_regexp = re.compile(expected_regexp)
- if not expected_regexp.search(text):
- msg = msg or "Regexp didn't match"
- msg = '%s: %r not found in %r' % (msg, expected_regexp.pattern, text)
- raise self.failureException(msg)
-
- def assertNotRegexpMatches(self, text, unexpected_regexp, msg=None):
- """Fail the test if the text matches the regular expression."""
- if isinstance(unexpected_regexp, basestring):
- unexpected_regexp = re.compile(unexpected_regexp)
- match = unexpected_regexp.search(text)
- if match:
- msg = msg or "Regexp matched"
- msg = '%s: %r matches %r in %r' % (msg,
- text[match.start():match.end()],
- unexpected_regexp.pattern,
- text)
- raise self.failureException(msg)
-
-class FunctionTestCase(TestCase):
- """A test case that wraps a test function.
-
- This is useful for slipping pre-existing test functions into the
- unittest framework. Optionally, set-up and tidy-up functions can be
- supplied. As with TestCase, the tidy-up ('tearDown') function will
- always be called if the set-up ('setUp') function ran successfully.
- """
-
- def __init__(self, testFunc, setUp=None, tearDown=None, description=None):
- super(FunctionTestCase, self).__init__()
- self._setUpFunc = setUp
- self._tearDownFunc = tearDown
- self._testFunc = testFunc
- self._description = description
-
- def setUp(self):
- if self._setUpFunc is not None:
- self._setUpFunc()
-
- def tearDown(self):
- if self._tearDownFunc is not None:
- self._tearDownFunc()
-
- def runTest(self):
- self._testFunc()
-
- def id(self):
- return self._testFunc.__name__
-
- def __eq__(self, other):
- if not isinstance(other, self.__class__):
- return NotImplemented
-
- return self._setUpFunc == other._setUpFunc and \
- self._tearDownFunc == other._tearDownFunc and \
- self._testFunc == other._testFunc and \
- self._description == other._description
-
- def __ne__(self, other):
- return not self == other
-
- def __hash__(self):
- return hash((type(self), self._setUpFunc, self._tearDownFunc,
- self._testFunc, self._description))
-
- def __str__(self):
- return "%s (%s)" % (strclass(self.__class__),
- self._testFunc.__name__)
-
- def __repr__(self):
- return "<%s testFunc=%s>" % (strclass(self.__class__),
- self._testFunc)
-
- def shortDescription(self):
- if self._description is not None:
- return self._description
- doc = self._testFunc.__doc__
- return doc and doc.split("\n")[0].strip() or None
diff --git a/lib/python2.7/site-packages/django/utils/unittest/collector.py b/lib/python2.7/site-packages/django/utils/unittest/collector.py
deleted file mode 100644
index 0f76fc3..0000000
--- a/lib/python2.7/site-packages/django/utils/unittest/collector.py
+++ /dev/null
@@ -1,9 +0,0 @@
-import os
-import sys
-from django.utils.unittest.loader import defaultTestLoader
-
-def collector():
- # import __main__ triggers code re-execution
- __main__ = sys.modules['__main__']
- setupDir = os.path.abspath(os.path.dirname(__main__.__file__))
- return defaultTestLoader.discover(setupDir)
diff --git a/lib/python2.7/site-packages/django/utils/unittest/compatibility.py b/lib/python2.7/site-packages/django/utils/unittest/compatibility.py
deleted file mode 100644
index a0dc499..0000000
--- a/lib/python2.7/site-packages/django/utils/unittest/compatibility.py
+++ /dev/null
@@ -1,64 +0,0 @@
-import os
-import sys
-
-try:
- from functools import wraps
-except ImportError:
- # only needed for Python 2.4
- def wraps(_):
- def _wraps(func):
- return func
- return _wraps
-
-__unittest = True
-
-def _relpath_nt(path, start=os.path.curdir):
- """Return a relative version of a path"""
-
- if not path:
- raise ValueError("no path specified")
- start_list = os.path.abspath(start).split(os.path.sep)
- path_list = os.path.abspath(path).split(os.path.sep)
- if start_list[0].lower() != path_list[0].lower():
- unc_path, rest = os.path.splitunc(path)
- unc_start, rest = os.path.splitunc(start)
- if bool(unc_path) ^ bool(unc_start):
- raise ValueError("Cannot mix UNC and non-UNC paths (%s and %s)"
- % (path, start))
- else:
- raise ValueError("path is on drive %s, start on drive %s"
- % (path_list[0], start_list[0]))
- # Work out how much of the filepath is shared by start and path.
- for i in range(min(len(start_list), len(path_list))):
- if start_list[i].lower() != path_list[i].lower():
- break
- else:
- i += 1
-
- rel_list = [os.path.pardir] * (len(start_list)-i) + path_list[i:]
- if not rel_list:
- return os.path.curdir
- return os.path.join(*rel_list)
-
-# default to posixpath definition
-def _relpath_posix(path, start=os.path.curdir):
- """Return a relative version of a path"""
-
- if not path:
- raise ValueError("no path specified")
-
- start_list = os.path.abspath(start).split(os.path.sep)
- path_list = os.path.abspath(path).split(os.path.sep)
-
- # Work out how much of the filepath is shared by start and path.
- i = len(os.path.commonprefix([start_list, path_list]))
-
- rel_list = [os.path.pardir] * (len(start_list)-i) + path_list[i:]
- if not rel_list:
- return os.path.curdir
- return os.path.join(*rel_list)
-
-if os.path is sys.modules.get('ntpath'):
- relpath = _relpath_nt
-else:
- relpath = _relpath_posix
diff --git a/lib/python2.7/site-packages/django/utils/unittest/loader.py b/lib/python2.7/site-packages/django/utils/unittest/loader.py
deleted file mode 100644
index 695bac4..0000000
--- a/lib/python2.7/site-packages/django/utils/unittest/loader.py
+++ /dev/null
@@ -1,322 +0,0 @@
-"""Loading unittests."""
-
-import os
-import re
-import sys
-import traceback
-import types
-import unittest
-
-from fnmatch import fnmatch
-
-from django.utils.unittest import case, suite
-
-try:
- from os.path import relpath
-except ImportError:
- from django.utils.unittest.compatibility import relpath
-
-__unittest = True
-
-
-def _CmpToKey(mycmp):
- 'Convert a cmp= function into a key= function'
- class K(object):
- def __init__(self, obj):
- self.obj = obj
- def __lt__(self, other):
- return mycmp(self.obj, other.obj) == -1
- return K
-
-
-# what about .pyc or .pyo (etc)
-# we would need to avoid loading the same tests multiple times
-# from '.py', '.pyc' *and* '.pyo'
-VALID_MODULE_NAME = re.compile(r'[_a-z]\w*\.py$', re.IGNORECASE)
-
-
-def _make_failed_import_test(name, suiteClass):
- message = 'Failed to import test module: %s' % name
- if hasattr(traceback, 'format_exc'):
- # Python 2.3 compatibility
- # format_exc returns two frames of discover.py as well
- message += '\n%s' % traceback.format_exc()
- return _make_failed_test('ModuleImportFailure', name, ImportError(message),
- suiteClass)
-
-def _make_failed_load_tests(name, exception, suiteClass):
- return _make_failed_test('LoadTestsFailure', name, exception, suiteClass)
-
-def _make_failed_test(classname, methodname, exception, suiteClass):
- def testFailure(self):
- raise exception
- attrs = {methodname: testFailure}
- TestClass = type(classname, (case.TestCase,), attrs)
- return suiteClass((TestClass(methodname),))
-
-
-class TestLoader(unittest.TestLoader):
- """
- This class is responsible for loading tests according to various criteria
- and returning them wrapped in a TestSuite
- """
- testMethodPrefix = 'test'
- sortTestMethodsUsing = cmp
- suiteClass = suite.TestSuite
- _top_level_dir = None
-
- def loadTestsFromTestCase(self, testCaseClass):
- """Return a suite of all tests cases contained in testCaseClass"""
- if issubclass(testCaseClass, suite.TestSuite):
- raise TypeError("Test cases should not be derived from TestSuite."
- " Maybe you meant to derive from TestCase?")
- testCaseNames = self.getTestCaseNames(testCaseClass)
- if not testCaseNames and hasattr(testCaseClass, 'runTest'):
- testCaseNames = ['runTest']
- loaded_suite = self.suiteClass(map(testCaseClass, testCaseNames))
- return loaded_suite
-
- def loadTestsFromModule(self, module, use_load_tests=True):
- """Return a suite of all tests cases contained in the given module"""
- tests = []
- for name in dir(module):
- obj = getattr(module, name)
- if isinstance(obj, type) and issubclass(obj, unittest.TestCase):
- tests.append(self.loadTestsFromTestCase(obj))
-
- load_tests = getattr(module, 'load_tests', None)
- tests = self.suiteClass(tests)
- if use_load_tests and load_tests is not None:
- try:
- return load_tests(self, tests, None)
- except Exception as e:
- return _make_failed_load_tests(module.__name__, e,
- self.suiteClass)
- return tests
-
- def loadTestsFromName(self, name, module=None):
- """Return a suite of all tests cases given a string specifier.
-
- The name may resolve either to a module, a test case class, a
- test method within a test case class, or a callable object which
- returns a TestCase or TestSuite instance.
-
- The method optionally resolves the names relative to a given module.
- """
- parts = name.split('.')
- if module is None:
- parts_copy = parts[:]
- while parts_copy:
- try:
- module = __import__('.'.join(parts_copy))
- break
- except ImportError:
- del parts_copy[-1]
- if not parts_copy:
- raise
- parts = parts[1:]
- obj = module
- for part in parts:
- parent, obj = obj, getattr(obj, part)
-
- if isinstance(obj, types.ModuleType):
- return self.loadTestsFromModule(obj)
- elif isinstance(obj, type) and issubclass(obj, unittest.TestCase):
- return self.loadTestsFromTestCase(obj)
- elif (isinstance(obj, types.UnboundMethodType) and
- isinstance(parent, type) and
- issubclass(parent, unittest.TestCase)):
- return self.suiteClass([parent(obj.__name__)])
- elif isinstance(obj, unittest.TestSuite):
- return obj
- elif hasattr(obj, '__call__'):
- test = obj()
- if isinstance(test, unittest.TestSuite):
- return test
- elif isinstance(test, unittest.TestCase):
- return self.suiteClass([test])
- else:
- raise TypeError("calling %s returned %s, not a test" %
- (obj, test))
- else:
- raise TypeError("don't know how to make test from: %s" % obj)
-
- def loadTestsFromNames(self, names, module=None):
- """Return a suite of all tests cases found using the given sequence
- of string specifiers. See 'loadTestsFromName()'.
- """
- suites = [self.loadTestsFromName(name, module) for name in names]
- return self.suiteClass(suites)
-
- def getTestCaseNames(self, testCaseClass):
- """Return a sorted sequence of method names found within testCaseClass
- """
- def isTestMethod(attrname, testCaseClass=testCaseClass,
- prefix=self.testMethodPrefix):
- return attrname.startswith(prefix) and \
- hasattr(getattr(testCaseClass, attrname), '__call__')
- testFnNames = filter(isTestMethod, dir(testCaseClass))
- if self.sortTestMethodsUsing:
- testFnNames.sort(key=_CmpToKey(self.sortTestMethodsUsing))
- return testFnNames
-
- def discover(self, start_dir, pattern='test*.py', top_level_dir=None):
- """Find and return all test modules from the specified start
- directory, recursing into subdirectories to find them. Only test files
- that match the pattern will be loaded. (Using shell style pattern
- matching.)
-
- All test modules must be importable from the top level of the project.
- If the start directory is not the top level directory then the top
- level directory must be specified separately.
-
- If a test package name (directory with '__init__.py') matches the
- pattern then the package will be checked for a 'load_tests' function. If
- this exists then it will be called with loader, tests, pattern.
-
- If load_tests exists then discovery does *not* recurse into the package,
- load_tests is responsible for loading all tests in the package.
-
- The pattern is deliberately not stored as a loader attribute so that
- packages can continue discovery themselves. top_level_dir is stored so
- load_tests does not need to pass this argument in to loader.discover().
- """
- set_implicit_top = False
- if top_level_dir is None and self._top_level_dir is not None:
- # make top_level_dir optional if called from load_tests in a package
- top_level_dir = self._top_level_dir
- elif top_level_dir is None:
- set_implicit_top = True
- top_level_dir = start_dir
-
- top_level_dir = os.path.abspath(top_level_dir)
-
- if not top_level_dir in sys.path:
- # all test modules must be importable from the top level directory
- # should we *unconditionally* put the start directory in first
- # in sys.path to minimise likelihood of conflicts between installed
- # modules and development versions?
- sys.path.insert(0, top_level_dir)
- self._top_level_dir = top_level_dir
-
- is_not_importable = False
- if os.path.isdir(os.path.abspath(start_dir)):
- start_dir = os.path.abspath(start_dir)
- if start_dir != top_level_dir:
- is_not_importable = not os.path.isfile(os.path.join(start_dir, '__init__.py'))
- else:
- # support for discovery from dotted module names
- try:
- __import__(start_dir)
- except ImportError:
- is_not_importable = True
- else:
- the_module = sys.modules[start_dir]
- top_part = start_dir.split('.')[0]
- start_dir = os.path.abspath(os.path.dirname((the_module.__file__)))
- if set_implicit_top:
- self._top_level_dir = os.path.abspath(os.path.dirname(os.path.dirname(sys.modules[top_part].__file__)))
- sys.path.remove(top_level_dir)
-
- if is_not_importable:
- raise ImportError('Start directory is not importable: %r' % start_dir)
-
- tests = list(self._find_tests(start_dir, pattern))
- return self.suiteClass(tests)
-
- def _get_name_from_path(self, path):
- path = os.path.splitext(os.path.normpath(path))[0]
-
- _relpath = relpath(path, self._top_level_dir)
- assert not os.path.isabs(_relpath), "Path must be within the project"
- assert not _relpath.startswith('..'), "Path must be within the project"
-
- name = _relpath.replace(os.path.sep, '.')
- return name
-
- def _get_module_from_name(self, name):
- __import__(name)
- return sys.modules[name]
-
- def _match_path(self, path, full_path, pattern):
- # override this method to use alternative matching strategy
- return fnmatch(path, pattern)
-
- def _find_tests(self, start_dir, pattern):
- """Used by discovery. Yields test suites it loads."""
- paths = os.listdir(start_dir)
-
- for path in paths:
- full_path = os.path.join(start_dir, path)
- if os.path.isfile(full_path):
- if not VALID_MODULE_NAME.match(path):
- # valid Python identifiers only
- continue
- if not self._match_path(path, full_path, pattern):
- continue
- # if the test file matches, load it
- name = self._get_name_from_path(full_path)
- try:
- module = self._get_module_from_name(name)
- except:
- yield _make_failed_import_test(name, self.suiteClass)
- else:
- mod_file = os.path.abspath(getattr(module, '__file__', full_path))
- realpath = os.path.splitext(mod_file)[0]
- fullpath_noext = os.path.splitext(full_path)[0]
- if realpath.lower() != fullpath_noext.lower():
- module_dir = os.path.dirname(realpath)
- mod_name = os.path.splitext(os.path.basename(full_path))[0]
- expected_dir = os.path.dirname(full_path)
- msg = ("%r module incorrectly imported from %r. Expected %r. "
- "Is this module globally installed?")
- raise ImportError(msg % (mod_name, module_dir, expected_dir))
- yield self.loadTestsFromModule(module)
- elif os.path.isdir(full_path):
- if not os.path.isfile(os.path.join(full_path, '__init__.py')):
- continue
-
- load_tests = None
- tests = None
- if fnmatch(path, pattern):
- # only check load_tests if the package directory itself matches the filter
- name = self._get_name_from_path(full_path)
- package = self._get_module_from_name(name)
- load_tests = getattr(package, 'load_tests', None)
- tests = self.loadTestsFromModule(package, use_load_tests=False)
-
- if load_tests is None:
- if tests is not None:
- # tests loaded from package file
- yield tests
- # recurse into the package
- for test in self._find_tests(full_path, pattern):
- yield test
- else:
- try:
- yield load_tests(self, tests, pattern)
- except Exception as e:
- yield _make_failed_load_tests(package.__name__, e,
- self.suiteClass)
-
-defaultTestLoader = TestLoader()
-
-
-def _makeLoader(prefix, sortUsing, suiteClass=None):
- loader = TestLoader()
- loader.sortTestMethodsUsing = sortUsing
- loader.testMethodPrefix = prefix
- if suiteClass:
- loader.suiteClass = suiteClass
- return loader
-
-def getTestCaseNames(testCaseClass, prefix, sortUsing=cmp):
- return _makeLoader(prefix, sortUsing).getTestCaseNames(testCaseClass)
-
-def makeSuite(testCaseClass, prefix='test', sortUsing=cmp,
- suiteClass=suite.TestSuite):
- return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromTestCase(testCaseClass)
-
-def findTestCases(module, prefix='test', sortUsing=cmp,
- suiteClass=suite.TestSuite):
- return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromModule(module)
diff --git a/lib/python2.7/site-packages/django/utils/unittest/main.py b/lib/python2.7/site-packages/django/utils/unittest/main.py
deleted file mode 100644
index 659310b..0000000
--- a/lib/python2.7/site-packages/django/utils/unittest/main.py
+++ /dev/null
@@ -1,241 +0,0 @@
-"""Unittest main program"""
-
-import sys
-import os
-import types
-
-from django.utils.unittest import loader, runner
-try:
- from django.utils.unittest.signals import installHandler
-except ImportError:
- installHandler = None
-
-__unittest = True
-
-FAILFAST = " -f, --failfast Stop on first failure\n"
-CATCHBREAK = " -c, --catch Catch control-C and display results\n"
-BUFFEROUTPUT = " -b, --buffer Buffer stdout and stderr during test runs\n"
-
-USAGE_AS_MAIN = """\
-Usage: %(progName)s [options] [tests]
-
-Options:
- -h, --help Show this message
- -v, --verbose Verbose output
- -q, --quiet Minimal output
-%(failfast)s%(catchbreak)s%(buffer)s
-Examples:
- %(progName)s test_module - run tests from test_module
- %(progName)s test_module.TestClass - run tests from
- test_module.TestClass
- %(progName)s test_module.TestClass.test_method - run specified test method
-
-[tests] can be a list of any number of test modules, classes and test
-methods.
-
-Alternative Usage: %(progName)s discover [options]
-
-Options:
- -v, --verbose Verbose output
-%(failfast)s%(catchbreak)s%(buffer)s -s directory Directory to start discovery ('.' default)
- -p pattern Pattern to match test files ('test*.py' default)
- -t directory Top level directory of project (default to
- start directory)
-
-For test discovery all test modules must be importable from the top
-level directory of the project.
-"""
-
-USAGE_FROM_MODULE = """\
-Usage: %(progName)s [options] [test] [...]
-
-Options:
- -h, --help Show this message
- -v, --verbose Verbose output
- -q, --quiet Minimal output
-%(failfast)s%(catchbreak)s%(buffer)s
-Examples:
- %(progName)s - run default set of tests
- %(progName)s MyTestSuite - run suite 'MyTestSuite'
- %(progName)s MyTestCase.testSomething - run MyTestCase.testSomething
- %(progName)s MyTestCase - run all 'test*' test methods
- in MyTestCase
-"""
-
-
-class TestProgram(object):
- """A command-line program that runs a set of tests; this is primarily
- for making test modules conveniently executable.
- """
- USAGE = USAGE_FROM_MODULE
-
- # defaults for testing
- failfast = catchbreak = buffer = progName = None
-
- def __init__(self, module='__main__', defaultTest=None,
- argv=None, testRunner=None,
- testLoader=loader.defaultTestLoader, exit=True,
- verbosity=1, failfast=None, catchbreak=None, buffer=None):
- if isinstance(module, basestring):
- self.module = __import__(module)
- for part in module.split('.')[1:]:
- self.module = getattr(self.module, part)
- else:
- self.module = module
- if argv is None:
- argv = sys.argv
-
- self.exit = exit
- self.verbosity = verbosity
- self.failfast = failfast
- self.catchbreak = catchbreak
- self.buffer = buffer
- self.defaultTest = defaultTest
- self.testRunner = testRunner
- self.testLoader = testLoader
- self.progName = os.path.basename(argv[0])
- self.parseArgs(argv)
- self.runTests()
-
- def usageExit(self, msg=None):
- if msg:
- print(msg)
- usage = {'progName': self.progName, 'catchbreak': '', 'failfast': '',
- 'buffer': ''}
- if self.failfast != False:
- usage['failfast'] = FAILFAST
- if self.catchbreak != False and installHandler is not None:
- usage['catchbreak'] = CATCHBREAK
- if self.buffer != False:
- usage['buffer'] = BUFFEROUTPUT
- print(self.USAGE % usage)
- sys.exit(2)
-
- def parseArgs(self, argv):
- if len(argv) > 1 and argv[1].lower() == 'discover':
- self._do_discovery(argv[2:])
- return
-
- import getopt
- long_opts = ['help', 'verbose', 'quiet', 'failfast', 'catch', 'buffer']
- try:
- options, args = getopt.getopt(argv[1:], 'hHvqfcb', long_opts)
- for opt, value in options:
- if opt in ('-h','-H','--help'):
- self.usageExit()
- if opt in ('-q','--quiet'):
- self.verbosity = 0
- if opt in ('-v','--verbose'):
- self.verbosity = 2
- if opt in ('-f','--failfast'):
- if self.failfast is None:
- self.failfast = True
- # Should this raise an exception if -f is not valid?
- if opt in ('-c','--catch'):
- if self.catchbreak is None and installHandler is not None:
- self.catchbreak = True
- # Should this raise an exception if -c is not valid?
- if opt in ('-b','--buffer'):
- if self.buffer is None:
- self.buffer = True
- # Should this raise an exception if -b is not valid?
- if len(args) == 0 and self.defaultTest is None:
- # createTests will load tests from self.module
- self.testNames = None
- elif len(args) > 0:
- self.testNames = args
- if __name__ == '__main__':
- # to support python -m unittest ...
- self.module = None
- else:
- self.testNames = (self.defaultTest,)
- self.createTests()
- except getopt.error as msg:
- self.usageExit(msg)
-
- def createTests(self):
- if self.testNames is None:
- self.test = self.testLoader.loadTestsFromModule(self.module)
- else:
- self.test = self.testLoader.loadTestsFromNames(self.testNames,
- self.module)
-
- def _do_discovery(self, argv, Loader=loader.TestLoader):
- # handle command line args for test discovery
- self.progName = '%s discover' % self.progName
- import optparse
- parser = optparse.OptionParser()
- parser.prog = self.progName
- parser.add_option('-v', '--verbose', dest='verbose', default=False,
- help='Verbose output', action='store_true')
- if self.failfast != False:
- parser.add_option('-f', '--failfast', dest='failfast', default=False,
- help='Stop on first fail or error',
- action='store_true')
- if self.catchbreak != False and installHandler is not None:
- parser.add_option('-c', '--catch', dest='catchbreak', default=False,
- help='Catch ctrl-C and display results so far',
- action='store_true')
- if self.buffer != False:
- parser.add_option('-b', '--buffer', dest='buffer', default=False,
- help='Buffer stdout and stderr during tests',
- action='store_true')
- parser.add_option('-s', '--start-directory', dest='start', default='.',
- help="Directory to start discovery ('.' default)")
- parser.add_option('-p', '--pattern', dest='pattern', default='test*.py',
- help="Pattern to match tests ('test*.py' default)")
- parser.add_option('-t', '--top-level-directory', dest='top', default=None,
- help='Top level directory of project (defaults to start directory)')
-
- options, args = parser.parse_args(argv)
- if len(args) > 3:
- self.usageExit()
-
- for name, value in zip(('start', 'pattern', 'top'), args):
- setattr(options, name, value)
-
- # only set options from the parsing here
- # if they weren't set explicitly in the constructor
- if self.failfast is None:
- self.failfast = options.failfast
- if self.catchbreak is None and installHandler is not None:
- self.catchbreak = options.catchbreak
- if self.buffer is None:
- self.buffer = options.buffer
-
- if options.verbose:
- self.verbosity = 2
-
- start_dir = options.start
- pattern = options.pattern
- top_level_dir = options.top
-
- loader = Loader()
- self.test = loader.discover(start_dir, pattern, top_level_dir)
-
- def runTests(self):
- if self.catchbreak:
- installHandler()
- if self.testRunner is None:
- self.testRunner = runner.TextTestRunner
- if isinstance(self.testRunner, (type, types.ClassType)):
- try:
- testRunner = self.testRunner(verbosity=self.verbosity,
- failfast=self.failfast,
- buffer=self.buffer)
- except TypeError:
- # didn't accept the verbosity, buffer or failfast arguments
- testRunner = self.testRunner()
- else:
- # it is assumed to be a TestRunner instance
- testRunner = self.testRunner
- self.result = testRunner.run(self.test)
- if self.exit:
- sys.exit(not self.result.wasSuccessful())
-
-main = TestProgram
-
-def main_():
- TestProgram.USAGE = USAGE_AS_MAIN
- main(module=None)
-
diff --git a/lib/python2.7/site-packages/django/utils/unittest/result.py b/lib/python2.7/site-packages/django/utils/unittest/result.py
deleted file mode 100644
index 2d2a1ad..0000000
--- a/lib/python2.7/site-packages/django/utils/unittest/result.py
+++ /dev/null
@@ -1,183 +0,0 @@
-"""Test result object"""
-
-import sys
-import traceback
-import unittest
-
-from StringIO import StringIO
-
-from django.utils.unittest import util
-from django.utils.unittest.compatibility import wraps
-
-__unittest = True
-
-def failfast(method):
- @wraps(method)
- def inner(self, *args, **kw):
- if getattr(self, 'failfast', False):
- self.stop()
- return method(self, *args, **kw)
- return inner
-
-
-STDOUT_LINE = '\nStdout:\n%s'
-STDERR_LINE = '\nStderr:\n%s'
-
-class TestResult(unittest.TestResult):
- """Holder for test result information.
-
- Test results are automatically managed by the TestCase and TestSuite
- classes, and do not need to be explicitly manipulated by writers of tests.
-
- Each instance holds the total number of tests run, and collections of
- failures and errors that occurred among those test runs. The collections
- contain tuples of (testcase, exceptioninfo), where exceptioninfo is the
- formatted traceback of the error that occurred.
- """
- _previousTestClass = None
- _moduleSetUpFailed = False
-
- def __init__(self):
- self.failfast = False
- self.failures = []
- self.errors = []
- self.testsRun = 0
- self.skipped = []
- self.expectedFailures = []
- self.unexpectedSuccesses = []
- self.shouldStop = False
- self.buffer = False
- self._stdout_buffer = None
- self._stderr_buffer = None
- self._original_stdout = sys.stdout
- self._original_stderr = sys.stderr
- self._mirrorOutput = False
-
- def startTest(self, test):
- "Called when the given test is about to be run"
- self.testsRun += 1
- self._mirrorOutput = False
- if self.buffer:
- if self._stderr_buffer is None:
- self._stderr_buffer = StringIO()
- self._stdout_buffer = StringIO()
- sys.stdout = self._stdout_buffer
- sys.stderr = self._stderr_buffer
-
- def startTestRun(self):
- """Called once before any tests are executed.
-
- See startTest for a method called before each test.
- """
-
- def stopTest(self, test):
- """Called when the given test has been run"""
- if self.buffer:
- if self._mirrorOutput:
- output = sys.stdout.getvalue()
- error = sys.stderr.getvalue()
- if output:
- if not output.endswith('\n'):
- output += '\n'
- self._original_stdout.write(STDOUT_LINE % output)
- if error:
- if not error.endswith('\n'):
- error += '\n'
- self._original_stderr.write(STDERR_LINE % error)
-
- sys.stdout = self._original_stdout
- sys.stderr = self._original_stderr
- self._stdout_buffer.seek(0)
- self._stdout_buffer.truncate()
- self._stderr_buffer.seek(0)
- self._stderr_buffer.truncate()
- self._mirrorOutput = False
-
-
- def stopTestRun(self):
- """Called once after all tests are executed.
-
- See stopTest for a method called after each test.
- """
-
- @failfast
- def addError(self, test, err):
- """Called when an error has occurred. 'err' is a tuple of values as
- returned by sys.exc_info().
- """
- self.errors.append((test, self._exc_info_to_string(err, test)))
- self._mirrorOutput = True
-
- @failfast
- def addFailure(self, test, err):
- """Called when an error has occurred. 'err' is a tuple of values as
- returned by sys.exc_info()."""
- self.failures.append((test, self._exc_info_to_string(err, test)))
- self._mirrorOutput = True
-
- def addSuccess(self, test):
- "Called when a test has completed successfully"
- pass
-
- def addSkip(self, test, reason):
- """Called when a test is skipped."""
- self.skipped.append((test, reason))
-
- def addExpectedFailure(self, test, err):
- """Called when an expected failure/error occured."""
- self.expectedFailures.append(
- (test, self._exc_info_to_string(err, test)))
-
- @failfast
- def addUnexpectedSuccess(self, test):
- """Called when a test was expected to fail, but succeed."""
- self.unexpectedSuccesses.append(test)
-
- def wasSuccessful(self):
- "Tells whether or not this result was a success"
- return (len(self.failures) + len(self.errors) == 0)
-
- def stop(self):
- "Indicates that the tests should be aborted"
- self.shouldStop = True
-
- def _exc_info_to_string(self, err, test):
- """Converts a sys.exc_info()-style tuple of values into a string."""
- exctype, value, tb = err
- # Skip test runner traceback levels
- while tb and self._is_relevant_tb_level(tb):
- tb = tb.tb_next
- if exctype is test.failureException:
- # Skip assert*() traceback levels
- length = self._count_relevant_tb_levels(tb)
- msgLines = traceback.format_exception(exctype, value, tb, length)
- else:
- msgLines = traceback.format_exception(exctype, value, tb)
-
- if self.buffer:
- output = sys.stdout.getvalue()
- error = sys.stderr.getvalue()
- if output:
- if not output.endswith('\n'):
- output += '\n'
- msgLines.append(STDOUT_LINE % output)
- if error:
- if not error.endswith('\n'):
- error += '\n'
- msgLines.append(STDERR_LINE % error)
- return ''.join(msgLines)
-
- def _is_relevant_tb_level(self, tb):
- return '__unittest' in tb.tb_frame.f_globals
-
- def _count_relevant_tb_levels(self, tb):
- length = 0
- while tb and not self._is_relevant_tb_level(tb):
- length += 1
- tb = tb.tb_next
- return length
-
- def __repr__(self):
- return "<%s run=%i errors=%i failures=%i>" % \
- (util.strclass(self.__class__), self.testsRun, len(self.errors),
- len(self.failures))
diff --git a/lib/python2.7/site-packages/django/utils/unittest/runner.py b/lib/python2.7/site-packages/django/utils/unittest/runner.py
deleted file mode 100644
index 242173e..0000000
--- a/lib/python2.7/site-packages/django/utils/unittest/runner.py
+++ /dev/null
@@ -1,206 +0,0 @@
-"""Running tests"""
-
-import sys
-import time
-import unittest
-
-from django.utils.unittest import result
-
-try:
- from django.utils.unittest.signals import registerResult
-except ImportError:
- def registerResult(_):
- pass
-
-__unittest = True
-
-
-class _WritelnDecorator(object):
- """Used to decorate file-like objects with a handy 'writeln' method"""
- def __init__(self,stream):
- self.stream = stream
-
- def __getattr__(self, attr):
- if attr in ('stream', '__getstate__'):
- raise AttributeError(attr)
- return getattr(self.stream,attr)
-
- def writeln(self, arg=None):
- if arg:
- self.write(arg)
- self.write('\n') # text-mode streams translate to \r\n if needed
-
-
-class TextTestResult(result.TestResult):
- """A test result class that can print formatted text results to a stream.
-
- Used by TextTestRunner.
- """
- separator1 = '=' * 70
- separator2 = '-' * 70
-
- def __init__(self, stream, descriptions, verbosity):
- super(TextTestResult, self).__init__()
- self.stream = stream
- self.showAll = verbosity > 1
- self.dots = verbosity == 1
- self.descriptions = descriptions
-
- def getDescription(self, test):
- doc_first_line = test.shortDescription()
- if self.descriptions and doc_first_line:
- return '\n'.join((str(test), doc_first_line))
- else:
- return str(test)
-
- def startTest(self, test):
- super(TextTestResult, self).startTest(test)
- if self.showAll:
- self.stream.write(self.getDescription(test))
- self.stream.write(" ... ")
- self.stream.flush()
-
- def addSuccess(self, test):
- super(TextTestResult, self).addSuccess(test)
- if self.showAll:
- self.stream.writeln("ok")
- elif self.dots:
- self.stream.write('.')
- self.stream.flush()
-
- def addError(self, test, err):
- super(TextTestResult, self).addError(test, err)
- if self.showAll:
- self.stream.writeln("ERROR")
- elif self.dots:
- self.stream.write('E')
- self.stream.flush()
-
- def addFailure(self, test, err):
- super(TextTestResult, self).addFailure(test, err)
- if self.showAll:
- self.stream.writeln("FAIL")
- elif self.dots:
- self.stream.write('F')
- self.stream.flush()
-
- def addSkip(self, test, reason):
- super(TextTestResult, self).addSkip(test, reason)
- if self.showAll:
- self.stream.writeln("skipped %r" % (reason,))
- elif self.dots:
- self.stream.write("s")
- self.stream.flush()
-
- def addExpectedFailure(self, test, err):
- super(TextTestResult, self).addExpectedFailure(test, err)
- if self.showAll:
- self.stream.writeln("expected failure")
- elif self.dots:
- self.stream.write("x")
- self.stream.flush()
-
- def addUnexpectedSuccess(self, test):
- super(TextTestResult, self).addUnexpectedSuccess(test)
- if self.showAll:
- self.stream.writeln("unexpected success")
- elif self.dots:
- self.stream.write("u")
- self.stream.flush()
-
- def printErrors(self):
- if self.dots or self.showAll:
- self.stream.writeln()
- self.printErrorList('ERROR', self.errors)
- self.printErrorList('FAIL', self.failures)
-
- def printErrorList(self, flavour, errors):
- for test, err in errors:
- self.stream.writeln(self.separator1)
- self.stream.writeln("%s: %s" % (flavour, self.getDescription(test)))
- self.stream.writeln(self.separator2)
- self.stream.writeln("%s" % err)
-
- def stopTestRun(self):
- super(TextTestResult, self).stopTestRun()
- self.printErrors()
-
-
-class TextTestRunner(unittest.TextTestRunner):
- """A test runner class that displays results in textual form.
-
- It prints out the names of tests as they are run, errors as they
- occur, and a summary of the results at the end of the test run.
- """
- resultclass = TextTestResult
-
- def __init__(self, stream=sys.stderr, descriptions=True, verbosity=1,
- failfast=False, buffer=False, resultclass=None):
- self.stream = _WritelnDecorator(stream)
- self.descriptions = descriptions
- self.verbosity = verbosity
- self.failfast = failfast
- self.buffer = buffer
- if resultclass is not None:
- self.resultclass = resultclass
-
- def _makeResult(self):
- return self.resultclass(self.stream, self.descriptions, self.verbosity)
-
- def run(self, test):
- "Run the given test case or test suite."
- result = self._makeResult()
- result.failfast = self.failfast
- result.buffer = self.buffer
- registerResult(result)
-
- startTime = time.time()
- startTestRun = getattr(result, 'startTestRun', None)
- if startTestRun is not None:
- startTestRun()
- try:
- test(result)
- finally:
- stopTestRun = getattr(result, 'stopTestRun', None)
- if stopTestRun is not None:
- stopTestRun()
- else:
- result.printErrors()
- stopTime = time.time()
- timeTaken = stopTime - startTime
- if hasattr(result, 'separator2'):
- self.stream.writeln(result.separator2)
- run = result.testsRun
- self.stream.writeln("Ran %d test%s in %.3fs" %
- (run, run != 1 and "s" or "", timeTaken))
- self.stream.writeln()
-
- expectedFails = unexpectedSuccesses = skipped = 0
- try:
- results = map(len, (result.expectedFailures,
- result.unexpectedSuccesses,
- result.skipped))
- expectedFails, unexpectedSuccesses, skipped = results
- except AttributeError:
- pass
- infos = []
- if not result.wasSuccessful():
- self.stream.write("FAILED")
- failed, errored = map(len, (result.failures, result.errors))
- if failed:
- infos.append("failures=%d" % failed)
- if errored:
- infos.append("errors=%d" % errored)
- else:
- self.stream.write("OK")
- if skipped:
- infos.append("skipped=%d" % skipped)
- if expectedFails:
- infos.append("expected failures=%d" % expectedFails)
- if unexpectedSuccesses:
- infos.append("unexpected successes=%d" % unexpectedSuccesses)
- if infos:
- self.stream.writeln(" (%s)" % (", ".join(infos),))
- else:
- self.stream.write("\n")
- return result
diff --git a/lib/python2.7/site-packages/django/utils/unittest/signals.py b/lib/python2.7/site-packages/django/utils/unittest/signals.py
deleted file mode 100644
index f1731ea..0000000
--- a/lib/python2.7/site-packages/django/utils/unittest/signals.py
+++ /dev/null
@@ -1,57 +0,0 @@
-import signal
-import weakref
-
-from django.utils.unittest.compatibility import wraps
-
-__unittest = True
-
-
-class _InterruptHandler(object):
- def __init__(self, default_handler):
- self.called = False
- self.default_handler = default_handler
-
- def __call__(self, signum, frame):
- installed_handler = signal.getsignal(signal.SIGINT)
- if installed_handler is not self:
- # if we aren't the installed handler, then delegate immediately
- # to the default handler
- self.default_handler(signum, frame)
-
- if self.called:
- self.default_handler(signum, frame)
- self.called = True
- for result in _results.keys():
- result.stop()
-
-_results = weakref.WeakKeyDictionary()
-def registerResult(result):
- _results[result] = 1
-
-def removeResult(result):
- return bool(_results.pop(result, None))
-
-_interrupt_handler = None
-def installHandler():
- global _interrupt_handler
- if _interrupt_handler is None:
- default_handler = signal.getsignal(signal.SIGINT)
- _interrupt_handler = _InterruptHandler(default_handler)
- signal.signal(signal.SIGINT, _interrupt_handler)
-
-
-def removeHandler(method=None):
- if method is not None:
- @wraps(method)
- def inner(*args, **kwargs):
- initial = signal.getsignal(signal.SIGINT)
- removeHandler()
- try:
- return method(*args, **kwargs)
- finally:
- signal.signal(signal.SIGINT, initial)
- return inner
-
- global _interrupt_handler
- if _interrupt_handler is not None:
- signal.signal(signal.SIGINT, _interrupt_handler.default_handler)
diff --git a/lib/python2.7/site-packages/django/utils/unittest/suite.py b/lib/python2.7/site-packages/django/utils/unittest/suite.py
deleted file mode 100644
index da8ac2e..0000000
--- a/lib/python2.7/site-packages/django/utils/unittest/suite.py
+++ /dev/null
@@ -1,287 +0,0 @@
-"""TestSuite"""
-
-import sys
-import unittest
-from django.utils.unittest import case, util
-
-__unittest = True
-
-
-class BaseTestSuite(unittest.TestSuite):
- """A simple test suite that doesn't provide class or module shared fixtures.
- """
- def __init__(self, tests=()):
- self._tests = []
- self.addTests(tests)
-
- def __repr__(self):
- return "<%s tests=%s>" % (util.strclass(self.__class__), list(self))
-
- def __eq__(self, other):
- if not isinstance(other, self.__class__):
- return NotImplemented
- return list(self) == list(other)
-
- def __ne__(self, other):
- return not self == other
-
- # Can't guarantee hash invariant, so flag as unhashable
- __hash__ = None
-
- def __iter__(self):
- return iter(self._tests)
-
- def countTestCases(self):
- cases = 0
- for test in self:
- cases += test.countTestCases()
- return cases
-
- def addTest(self, test):
- # sanity checks
- if not hasattr(test, '__call__'):
- raise TypeError("%r is not callable" % (repr(test),))
- if isinstance(test, type) and issubclass(test,
- (case.TestCase, TestSuite)):
- raise TypeError("TestCases and TestSuites must be instantiated "
- "before passing them to addTest()")
- self._tests.append(test)
-
- def addTests(self, tests):
- if isinstance(tests, basestring):
- raise TypeError("tests must be an iterable of tests, not a string")
- for test in tests:
- self.addTest(test)
-
- def run(self, result):
- for test in self:
- if result.shouldStop:
- break
- test(result)
- return result
-
- def __call__(self, *args, **kwds):
- return self.run(*args, **kwds)
-
- def debug(self):
- """Run the tests without collecting errors in a TestResult"""
- for test in self:
- test.debug()
-
-
-class TestSuite(BaseTestSuite):
- """A test suite is a composite test consisting of a number of TestCases.
-
- For use, create an instance of TestSuite, then add test case instances.
- When all tests have been added, the suite can be passed to a test
- runner, such as TextTestRunner. It will run the individual test cases
- in the order in which they were added, aggregating the results. When
- subclassing, do not forget to call the base class constructor.
- """
-
-
- def run(self, result):
- self._wrapped_run(result)
- self._tearDownPreviousClass(None, result)
- self._handleModuleTearDown(result)
- return result
-
- def debug(self):
- """Run the tests without collecting errors in a TestResult"""
- debug = _DebugResult()
- self._wrapped_run(debug, True)
- self._tearDownPreviousClass(None, debug)
- self._handleModuleTearDown(debug)
-
- ################################
- # private methods
- def _wrapped_run(self, result, debug=False):
- for test in self:
- if result.shouldStop:
- break
-
- if _isnotsuite(test):
- self._tearDownPreviousClass(test, result)
- self._handleModuleFixture(test, result)
- self._handleClassSetUp(test, result)
- result._previousTestClass = test.__class__
-
- if (getattr(test.__class__, '_classSetupFailed', False) or
- getattr(result, '_moduleSetUpFailed', False)):
- continue
-
- if hasattr(test, '_wrapped_run'):
- test._wrapped_run(result, debug)
- elif not debug:
- test(result)
- else:
- test.debug()
-
- def _handleClassSetUp(self, test, result):
- previousClass = getattr(result, '_previousTestClass', None)
- currentClass = test.__class__
- if currentClass == previousClass:
- return
- if result._moduleSetUpFailed:
- return
- if getattr(currentClass, "__unittest_skip__", False):
- return
-
- try:
- currentClass._classSetupFailed = False
- except TypeError:
- # test may actually be a function
- # so its class will be a builtin-type
- pass
-
- setUpClass = getattr(currentClass, 'setUpClass', None)
- if setUpClass is not None:
- try:
- setUpClass()
- except Exception as e:
- if isinstance(result, _DebugResult):
- raise
- currentClass._classSetupFailed = True
- className = util.strclass(currentClass)
- errorName = 'setUpClass (%s)' % className
- self._addClassOrModuleLevelException(result, e, errorName)
-
- def _get_previous_module(self, result):
- previousModule = None
- previousClass = getattr(result, '_previousTestClass', None)
- if previousClass is not None:
- previousModule = previousClass.__module__
- return previousModule
-
-
- def _handleModuleFixture(self, test, result):
- previousModule = self._get_previous_module(result)
- currentModule = test.__class__.__module__
- if currentModule == previousModule:
- return
-
- self._handleModuleTearDown(result)
-
-
- result._moduleSetUpFailed = False
- try:
- module = sys.modules[currentModule]
- except KeyError:
- return
- setUpModule = getattr(module, 'setUpModule', None)
- if setUpModule is not None:
- try:
- setUpModule()
- except Exception as e:
- if isinstance(result, _DebugResult):
- raise
- result._moduleSetUpFailed = True
- errorName = 'setUpModule (%s)' % currentModule
- self._addClassOrModuleLevelException(result, e, errorName)
-
- def _addClassOrModuleLevelException(self, result, exception, errorName):
- error = _ErrorHolder(errorName)
- addSkip = getattr(result, 'addSkip', None)
- if addSkip is not None and isinstance(exception, case.SkipTest):
- addSkip(error, str(exception))
- else:
- result.addError(error, sys.exc_info())
-
- def _handleModuleTearDown(self, result):
- previousModule = self._get_previous_module(result)
- if previousModule is None:
- return
- if result._moduleSetUpFailed:
- return
-
- try:
- module = sys.modules[previousModule]
- except KeyError:
- return
-
- tearDownModule = getattr(module, 'tearDownModule', None)
- if tearDownModule is not None:
- try:
- tearDownModule()
- except Exception as e:
- if isinstance(result, _DebugResult):
- raise
- errorName = 'tearDownModule (%s)' % previousModule
- self._addClassOrModuleLevelException(result, e, errorName)
-
- def _tearDownPreviousClass(self, test, result):
- previousClass = getattr(result, '_previousTestClass', None)
- currentClass = test.__class__
- if currentClass == previousClass:
- return
- if getattr(previousClass, '_classSetupFailed', False):
- return
- if getattr(result, '_moduleSetUpFailed', False):
- return
- if getattr(previousClass, "__unittest_skip__", False):
- return
-
- tearDownClass = getattr(previousClass, 'tearDownClass', None)
- if tearDownClass is not None:
- try:
- tearDownClass()
- except Exception as e:
- if isinstance(result, _DebugResult):
- raise
- className = util.strclass(previousClass)
- errorName = 'tearDownClass (%s)' % className
- self._addClassOrModuleLevelException(result, e, errorName)
-
-
-class _ErrorHolder(object):
- """
- Placeholder for a TestCase inside a result. As far as a TestResult
- is concerned, this looks exactly like a unit test. Used to insert
- arbitrary errors into a test suite run.
- """
- # Inspired by the ErrorHolder from Twisted:
- # http://twistedmatrix.com/trac/browser/trunk/twisted/trial/runner.py
-
- # attribute used by TestResult._exc_info_to_string
- failureException = None
-
- def __init__(self, description):
- self.description = description
-
- def id(self):
- return self.description
-
- def shortDescription(self):
- return None
-
- def __repr__(self):
- return "<ErrorHolder description=%r>" % (self.description,)
-
- def __str__(self):
- return self.id()
-
- def run(self, result):
- # could call result.addError(...) - but this test-like object
- # shouldn't be run anyway
- pass
-
- def __call__(self, result):
- return self.run(result)
-
- def countTestCases(self):
- return 0
-
-def _isnotsuite(test):
- "A crude way to tell apart testcases and suites with duck-typing"
- try:
- iter(test)
- except TypeError:
- return True
- return False
-
-
-class _DebugResult(object):
- "Used by the TestSuite to hold previous class when running in debug."
- _previousTestClass = None
- _moduleSetUpFailed = False
- shouldStop = False
diff --git a/lib/python2.7/site-packages/django/utils/unittest/util.py b/lib/python2.7/site-packages/django/utils/unittest/util.py
deleted file mode 100644
index c45d008..0000000
--- a/lib/python2.7/site-packages/django/utils/unittest/util.py
+++ /dev/null
@@ -1,99 +0,0 @@
-"""Various utility functions."""
-
-__unittest = True
-
-
-_MAX_LENGTH = 80
-def safe_repr(obj, short=False):
- try:
- result = repr(obj)
- except Exception:
- result = object.__repr__(obj)
- if not short or len(result) < _MAX_LENGTH:
- return result
- return result[:_MAX_LENGTH] + ' [truncated]...'
-
-def safe_str(obj):
- try:
- return str(obj)
- except Exception:
- return object.__str__(obj)
-
-def strclass(cls):
- return "%s.%s" % (cls.__module__, cls.__name__)
-
-def sorted_list_difference(expected, actual):
- """Finds elements in only one or the other of two, sorted input lists.
-
- Returns a two-element tuple of lists. The first list contains those
- elements in the "expected" list but not in the "actual" list, and the
- second contains those elements in the "actual" list but not in the
- "expected" list. Duplicate elements in either input list are ignored.
- """
- i = j = 0
- missing = []
- unexpected = []
- while True:
- try:
- e = expected[i]
- a = actual[j]
- if e < a:
- missing.append(e)
- i += 1
- while expected[i] == e:
- i += 1
- elif e > a:
- unexpected.append(a)
- j += 1
- while actual[j] == a:
- j += 1
- else:
- i += 1
- try:
- while expected[i] == e:
- i += 1
- finally:
- j += 1
- while actual[j] == a:
- j += 1
- except IndexError:
- missing.extend(expected[i:])
- unexpected.extend(actual[j:])
- break
- return missing, unexpected
-
-def unorderable_list_difference(expected, actual, ignore_duplicate=False):
- """Same behavior as sorted_list_difference but
- for lists of unorderable items (like dicts).
-
- As it does a linear search per item (remove) it
- has O(n*n) performance.
- """
- missing = []
- unexpected = []
- while expected:
- item = expected.pop()
- try:
- actual.remove(item)
- except ValueError:
- missing.append(item)
- if ignore_duplicate:
- for lst in expected, actual:
- try:
- while True:
- lst.remove(item)
- except ValueError:
- pass
- if ignore_duplicate:
- while actual:
- item = actual.pop()
- unexpected.append(item)
- try:
- while True:
- actual.remove(item)
- except ValueError:
- pass
- return missing, unexpected
-
- # anything left in actual is unexpected
- return missing, actual
diff --git a/lib/python2.7/site-packages/django/utils/version.py b/lib/python2.7/site-packages/django/utils/version.py
deleted file mode 100644
index e0a8286..0000000
--- a/lib/python2.7/site-packages/django/utils/version.py
+++ /dev/null
@@ -1,51 +0,0 @@
-from __future__ import unicode_literals
-
-import datetime
-import os
-import subprocess
-
-def get_version(version=None):
- "Returns a PEP 386-compliant version number from VERSION."
- if version is None:
- from django import VERSION as version
- else:
- assert len(version) == 5
- assert version[3] in ('alpha', 'beta', 'rc', 'final')
-
- # Now build the two parts of the version number:
- # main = X.Y[.Z]
- # sub = .devN - for pre-alpha releases
- # | {a|b|c}N - for alpha, beta and rc releases
-
- parts = 2 if version[2] == 0 else 3
- main = '.'.join(str(x) for x in version[:parts])
-
- sub = ''
- if version[3] == 'alpha' and version[4] == 0:
- git_changeset = get_git_changeset()
- if git_changeset:
- sub = '.dev%s' % git_changeset
-
- elif version[3] != 'final':
- mapping = {'alpha': 'a', 'beta': 'b', 'rc': 'c'}
- sub = mapping[version[3]] + str(version[4])
-
- return str(main + sub)
-
-def get_git_changeset():
- """Returns a numeric identifier of the latest git changeset.
-
- The result is the UTC timestamp of the changeset in YYYYMMDDHHMMSS format.
- This value isn't guaranteed to be unique, but collisions are very unlikely,
- so it's sufficient for generating the development version numbers.
- """
- repo_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- git_log = subprocess.Popen('git log --pretty=format:%ct --quiet -1 HEAD',
- stdout=subprocess.PIPE, stderr=subprocess.PIPE,
- shell=True, cwd=repo_dir, universal_newlines=True)
- timestamp = git_log.communicate()[0]
- try:
- timestamp = datetime.datetime.utcfromtimestamp(int(timestamp))
- except ValueError:
- return None
- return timestamp.strftime('%Y%m%d%H%M%S')
diff --git a/lib/python2.7/site-packages/django/utils/xmlutils.py b/lib/python2.7/site-packages/django/utils/xmlutils.py
deleted file mode 100644
index a1eb5fb..0000000
--- a/lib/python2.7/site-packages/django/utils/xmlutils.py
+++ /dev/null
@@ -1,14 +0,0 @@
-"""
-Utilities for XML generation/parsing.
-"""
-
-from xml.sax.saxutils import XMLGenerator
-
-class SimplerXMLGenerator(XMLGenerator):
- def addQuickElement(self, name, contents=None, attrs=None):
- "Convenience method for adding an element with no children"
- if attrs is None: attrs = {}
- self.startElement(name, attrs)
- if contents is not None:
- self.characters(contents)
- self.endElement(name)
diff --git a/lib/python2.7/site-packages/django/views/__init__.py b/lib/python2.7/site-packages/django/views/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/views/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/views/csrf.py b/lib/python2.7/site-packages/django/views/csrf.py
deleted file mode 100644
index c95d19d..0000000
--- a/lib/python2.7/site-packages/django/views/csrf.py
+++ /dev/null
@@ -1,104 +0,0 @@
-from django.http import HttpResponseForbidden
-from django.template import Context, Template
-from django.conf import settings
-
-# We include the template inline since we need to be able to reliably display
-# this error message, especially for the sake of developers, and there isn't any
-# other way of making it available independent of what is in the settings file.
-
-CSRF_FAILURE_TEMPLATE = """
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8">
- <meta name="robots" content="NONE,NOARCHIVE">
- <title>403 Forbidden</title>
- <style type="text/css">
- html * { padding:0; margin:0; }
- body * { padding:10px 20px; }
- body * * { padding:0; }
- body { font:small sans-serif; background:#eee; }
- body>div { border-bottom:1px solid #ddd; }
- h1 { font-weight:normal; margin-bottom:.4em; }
- h1 span { font-size:60%; color:#666; font-weight:normal; }
- #info { background:#f6f6f6; }
- #info ul { margin: 0.5em 4em; }
- #info p, #summary p { padding-top:10px; }
- #summary { background: #ffc; }
- #explanation { background:#eee; border-bottom: 0px none; }
- </style>
-</head>
-<body>
-<div id="summary">
- <h1>Forbidden <span>(403)</span></h1>
- <p>CSRF verification failed. Request aborted.</p>
-{% if no_referer %}
- <p>You are seeing this message because this HTTPS site requires a 'Referer
- header' to be sent by your Web browser, but none was sent. This header is
- required for security reasons, to ensure that your browser is not being
- hijacked by third parties.</p>
-
- <p>If you have configured your browser to disable 'Referer' headers, please
- re-enable them, at least for this site, or for HTTPS connections, or for
- 'same-origin' requests.</p>
-{% endif %}
-</div>
-{% if DEBUG %}
-<div id="info">
- <h2>Help</h2>
- {% if reason %}
- <p>Reason given for failure:</p>
- <pre>
- {{ reason }}
- </pre>
- {% endif %}
-
- <p>In general, this can occur when there is a genuine Cross Site Request Forgery, or when
- <a
- href='http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ref-contrib-csrf'>Django's
- CSRF mechanism</a> has not been used correctly. For POST forms, you need to
- ensure:</p>
-
- <ul>
- <li>Your browser is accepting cookies.</li>
-
- <li>The view function uses <a
- href='http://docs.djangoproject.com/en/dev/ref/templates/api/#subclassing-context-requestcontext'><code>RequestContext</code></a>
- for the template, instead of <code>Context</code>.</li>
-
- <li>In the template, there is a <code>{% templatetag openblock %} csrf_token
- {% templatetag closeblock %}</code> template tag inside each POST form that
- targets an internal URL.</li>
-
- <li>If you are not using <code>CsrfViewMiddleware</code>, then you must use
- <code>csrf_protect</code> on any views that use the <code>csrf_token</code>
- template tag, as well as those that accept the POST data.</li>
-
- </ul>
-
- <p>You're seeing the help section of this page because you have <code>DEBUG =
- True</code> in your Django settings file. Change that to <code>False</code>,
- and only the initial error message will be displayed. </p>
-
- <p>You can customize this page using the CSRF_FAILURE_VIEW setting.</p>
-</div>
-{% else %}
-<div id="explanation">
- <p><small>More information is available with DEBUG=True.</small></p>
-</div>
-{% endif %}
-</body>
-</html>
-"""
-
-def csrf_failure(request, reason=""):
- """
- Default view used when request fails CSRF protection
- """
- from django.middleware.csrf import REASON_NO_REFERER
- t = Template(CSRF_FAILURE_TEMPLATE)
- c = Context({'DEBUG': settings.DEBUG,
- 'reason': reason,
- 'no_referer': reason == REASON_NO_REFERER
- })
- return HttpResponseForbidden(t.render(c), content_type='text/html')
diff --git a/lib/python2.7/site-packages/django/views/debug.py b/lib/python2.7/site-packages/django/views/debug.py
deleted file mode 100644
index a610c55..0000000
--- a/lib/python2.7/site-packages/django/views/debug.py
+++ /dev/null
@@ -1,1150 +0,0 @@
-from __future__ import unicode_literals
-
-import datetime
-import os
-import re
-import sys
-import types
-
-from django.conf import settings
-from django.http import (HttpResponse, HttpResponseServerError,
- HttpResponseNotFound, HttpRequest, build_request_repr)
-from django.template import Template, Context, TemplateDoesNotExist
-from django.template.defaultfilters import force_escape, pprint
-from django.utils.datastructures import MultiValueDict
-from django.utils.html import escape
-from django.utils.encoding import force_bytes, smart_text
-from django.utils.module_loading import import_by_path
-from django.utils import six
-
-HIDDEN_SETTINGS = re.compile('API|TOKEN|KEY|SECRET|PASS|PROFANITIES_LIST|SIGNATURE')
-
-CLEANSED_SUBSTITUTE = '********************'
-
-def linebreak_iter(template_source):
- yield 0
- p = template_source.find('\n')
- while p >= 0:
- yield p+1
- p = template_source.find('\n', p+1)
- yield len(template_source) + 1
-
-def cleanse_setting(key, value):
- """Cleanse an individual setting key/value of sensitive content.
-
- If the value is a dictionary, recursively cleanse the keys in
- that dictionary.
- """
- try:
- if HIDDEN_SETTINGS.search(key):
- cleansed = CLEANSED_SUBSTITUTE
- else:
- if isinstance(value, dict):
- cleansed = dict((k, cleanse_setting(k, v)) for k,v in value.items())
- else:
- cleansed = value
- except TypeError:
- # If the key isn't regex-able, just return as-is.
- cleansed = value
- return cleansed
-
-def get_safe_settings():
- "Returns a dictionary of the settings module, with sensitive settings blurred out."
- settings_dict = {}
- for k in dir(settings):
- if k.isupper():
- settings_dict[k] = cleanse_setting(k, getattr(settings, k))
- return settings_dict
-
-def technical_500_response(request, exc_type, exc_value, tb):
- """
- Create a technical server error response. The last three arguments are
- the values returned from sys.exc_info() and friends.
- """
- reporter = ExceptionReporter(request, exc_type, exc_value, tb)
- if request.is_ajax():
- text = reporter.get_traceback_text()
- return HttpResponseServerError(text, content_type='text/plain')
- else:
- html = reporter.get_traceback_html()
- return HttpResponseServerError(html, content_type='text/html')
-
-# Cache for the default exception reporter filter instance.
-default_exception_reporter_filter = None
-
-def get_exception_reporter_filter(request):
- global default_exception_reporter_filter
- if default_exception_reporter_filter is None:
- # Load the default filter for the first time and cache it.
- default_exception_reporter_filter = import_by_path(
- settings.DEFAULT_EXCEPTION_REPORTER_FILTER)()
- if request:
- return getattr(request, 'exception_reporter_filter', default_exception_reporter_filter)
- else:
- return default_exception_reporter_filter
-
-class ExceptionReporterFilter(object):
- """
- Base for all exception reporter filter classes. All overridable hooks
- contain lenient default behaviors.
- """
-
- def get_request_repr(self, request):
- if request is None:
- return repr(None)
- else:
- return build_request_repr(request, POST_override=self.get_post_parameters(request))
-
- def get_post_parameters(self, request):
- if request is None:
- return {}
- else:
- return request.POST
-
- def get_traceback_frame_variables(self, request, tb_frame):
- return list(six.iteritems(tb_frame.f_locals))
-
-class SafeExceptionReporterFilter(ExceptionReporterFilter):
- """
- Use annotations made by the sensitive_post_parameters and
- sensitive_variables decorators to filter out sensitive information.
- """
-
- def is_active(self, request):
- """
- This filter is to add safety in production environments (i.e. DEBUG
- is False). If DEBUG is True then your site is not safe anyway.
- This hook is provided as a convenience to easily activate or
- deactivate the filter on a per request basis.
- """
- return settings.DEBUG is False
-
- def get_cleansed_multivaluedict(self, request, multivaluedict):
- """
- Replaces the keys in a MultiValueDict marked as sensitive with stars.
- This mitigates leaking sensitive POST parameters if something like
- request.POST['nonexistent_key'] throws an exception (#21098).
- """
- sensitive_post_parameters = getattr(request, 'sensitive_post_parameters', [])
- if self.is_active(request) and sensitive_post_parameters:
- multivaluedict = multivaluedict.copy()
- for param in sensitive_post_parameters:
- if param in multivaluedict:
- multivaluedict[param] = CLEANSED_SUBSTITUTE
- return multivaluedict
-
- def get_post_parameters(self, request):
- """
- Replaces the values of POST parameters marked as sensitive with
- stars (*********).
- """
- if request is None:
- return {}
- else:
- sensitive_post_parameters = getattr(request, 'sensitive_post_parameters', [])
- if self.is_active(request) and sensitive_post_parameters:
- cleansed = request.POST.copy()
- if sensitive_post_parameters == '__ALL__':
- # Cleanse all parameters.
- for k, v in cleansed.items():
- cleansed[k] = CLEANSED_SUBSTITUTE
- return cleansed
- else:
- # Cleanse only the specified parameters.
- for param in sensitive_post_parameters:
- if param in cleansed:
- cleansed[param] = CLEANSED_SUBSTITUTE
- return cleansed
- else:
- return request.POST
-
- def cleanse_special_types(self, request, value):
- if isinstance(value, HttpRequest):
- # Cleanse the request's POST parameters.
- value = self.get_request_repr(value)
- elif isinstance(value, MultiValueDict):
- # Cleanse MultiValueDicts (request.POST is the one we usually care about)
- value = self.get_cleansed_multivaluedict(request, value)
- return value
-
- def get_traceback_frame_variables(self, request, tb_frame):
- """
- Replaces the values of variables marked as sensitive with
- stars (*********).
- """
- # Loop through the frame's callers to see if the sensitive_variables
- # decorator was used.
- current_frame = tb_frame.f_back
- sensitive_variables = None
- while current_frame is not None:
- if (current_frame.f_code.co_name == 'sensitive_variables_wrapper'
- and 'sensitive_variables_wrapper' in current_frame.f_locals):
- # The sensitive_variables decorator was used, so we take note
- # of the sensitive variables' names.
- wrapper = current_frame.f_locals['sensitive_variables_wrapper']
- sensitive_variables = getattr(wrapper, 'sensitive_variables', None)
- break
- current_frame = current_frame.f_back
-
- cleansed = {}
- if self.is_active(request) and sensitive_variables:
- if sensitive_variables == '__ALL__':
- # Cleanse all variables
- for name, value in tb_frame.f_locals.items():
- cleansed[name] = CLEANSED_SUBSTITUTE
- else:
- # Cleanse specified variables
- for name, value in tb_frame.f_locals.items():
- if name in sensitive_variables:
- value = CLEANSED_SUBSTITUTE
- else:
- value = self.cleanse_special_types(request, value)
- cleansed[name] = value
- else:
- # Potentially cleanse the request and any MultiValueDicts if they
- # are one of the frame variables.
- for name, value in tb_frame.f_locals.items():
- cleansed[name] = self.cleanse_special_types(request, value)
-
- if (tb_frame.f_code.co_name == 'sensitive_variables_wrapper'
- and 'sensitive_variables_wrapper' in tb_frame.f_locals):
- # For good measure, obfuscate the decorated function's arguments in
- # the sensitive_variables decorator's frame, in case the variables
- # associated with those arguments were meant to be obfuscated from
- # the decorated function's frame.
- cleansed['func_args'] = CLEANSED_SUBSTITUTE
- cleansed['func_kwargs'] = CLEANSED_SUBSTITUTE
-
- return cleansed.items()
-
-class ExceptionReporter(object):
- """
- A class to organize and coordinate reporting on exceptions.
- """
- def __init__(self, request, exc_type, exc_value, tb, is_email=False):
- self.request = request
- self.filter = get_exception_reporter_filter(self.request)
- self.exc_type = exc_type
- self.exc_value = exc_value
- self.tb = tb
- self.is_email = is_email
-
- self.template_info = None
- self.template_does_not_exist = False
- self.loader_debug_info = None
-
- # Handle deprecated string exceptions
- if isinstance(self.exc_type, six.string_types):
- self.exc_value = Exception('Deprecated String Exception: %r' % self.exc_type)
- self.exc_type = type(self.exc_value)
-
- def format_path_status(self, path):
- if not os.path.exists(path):
- return "File does not exist"
- if not os.path.isfile(path):
- return "Not a file"
- if not os.access(path, os.R_OK):
- return "File is not readable"
- return "File exists"
-
- def get_traceback_data(self):
- "Return a Context instance containing traceback information."
-
- if self.exc_type and issubclass(self.exc_type, TemplateDoesNotExist):
- from django.template.loader import template_source_loaders
- self.template_does_not_exist = True
- self.loader_debug_info = []
- # If the template_source_loaders haven't been populated yet, you need
- # to provide an empty list for this for loop to not fail.
- if template_source_loaders is None:
- template_source_loaders = []
- for loader in template_source_loaders:
- try:
- source_list_func = loader.get_template_sources
- # NOTE: This assumes exc_value is the name of the template that
- # the loader attempted to load.
- template_list = [{
- 'name': t,
- 'status': self.format_path_status(t),
- } for t in source_list_func(str(self.exc_value))]
- except AttributeError:
- template_list = []
- loader_name = loader.__module__ + '.' + loader.__class__.__name__
- self.loader_debug_info.append({
- 'loader': loader_name,
- 'templates': template_list,
- })
- if (settings.TEMPLATE_DEBUG and
- hasattr(self.exc_value, 'django_template_source')):
- self.get_template_exception_info()
-
- frames = self.get_traceback_frames()
- for i, frame in enumerate(frames):
- if 'vars' in frame:
- frame['vars'] = [(k, force_escape(pprint(v))) for k, v in frame['vars']]
- frames[i] = frame
-
- unicode_hint = ''
- if self.exc_type and issubclass(self.exc_type, UnicodeError):
- start = getattr(self.exc_value, 'start', None)
- end = getattr(self.exc_value, 'end', None)
- if start is not None and end is not None:
- unicode_str = self.exc_value.args[1]
- unicode_hint = smart_text(unicode_str[max(start-5, 0):min(end+5, len(unicode_str))], 'ascii', errors='replace')
- from django import get_version
- c = {
- 'is_email': self.is_email,
- 'unicode_hint': unicode_hint,
- 'frames': frames,
- 'request': self.request,
- 'filtered_POST': self.filter.get_post_parameters(self.request),
- 'settings': get_safe_settings(),
- 'sys_executable': sys.executable,
- 'sys_version_info': '%d.%d.%d' % sys.version_info[0:3],
- 'server_time': datetime.datetime.now(),
- 'django_version_info': get_version(),
- 'sys_path' : sys.path,
- 'template_info': self.template_info,
- 'template_does_not_exist': self.template_does_not_exist,
- 'loader_debug_info': self.loader_debug_info,
- }
- # Check whether exception info is available
- if self.exc_type:
- c['exception_type'] = self.exc_type.__name__
- if self.exc_value:
- c['exception_value'] = smart_text(self.exc_value, errors='replace')
- if frames:
- c['lastframe'] = frames[-1]
- return c
-
- def get_traceback_html(self):
- "Return HTML version of debug 500 HTTP error page."
- t = Template(TECHNICAL_500_TEMPLATE, name='Technical 500 template')
- c = Context(self.get_traceback_data())
- return t.render(c)
-
- def get_traceback_text(self):
- "Return plain text version of debug 500 HTTP error page."
- t = Template(TECHNICAL_500_TEXT_TEMPLATE, name='Technical 500 template')
- c = Context(self.get_traceback_data(), autoescape=False)
- return t.render(c)
-
- def get_template_exception_info(self):
- origin, (start, end) = self.exc_value.django_template_source
- template_source = origin.reload()
- context_lines = 10
- line = 0
- upto = 0
- source_lines = []
- before = during = after = ""
- for num, next in enumerate(linebreak_iter(template_source)):
- if start >= upto and end <= next:
- line = num
- before = escape(template_source[upto:start])
- during = escape(template_source[start:end])
- after = escape(template_source[end:next])
- source_lines.append( (num, escape(template_source[upto:next])) )
- upto = next
- total = len(source_lines)
-
- top = max(1, line - context_lines)
- bottom = min(total, line + 1 + context_lines)
-
- # In some rare cases, exc_value.args might be empty.
- try:
- message = self.exc_value.args[0]
- except IndexError:
- message = '(Could not get exception message)'
-
- self.template_info = {
- 'message': message,
- 'source_lines': source_lines[top:bottom],
- 'before': before,
- 'during': during,
- 'after': after,
- 'top': top,
- 'bottom': bottom,
- 'total': total,
- 'line': line,
- 'name': origin.name,
- }
-
- def _get_lines_from_file(self, filename, lineno, context_lines, loader=None, module_name=None):
- """
- Returns context_lines before and after lineno from file.
- Returns (pre_context_lineno, pre_context, context_line, post_context).
- """
- source = None
- if loader is not None and hasattr(loader, "get_source"):
- try:
- source = loader.get_source(module_name)
- except ImportError:
- pass
- if source is not None:
- source = source.splitlines()
- if source is None:
- try:
- with open(filename, 'rb') as fp:
- source = fp.read().splitlines()
- except (OSError, IOError):
- pass
- if source is None:
- return None, [], None, []
-
- # If we just read the source from a file, or if the loader did not
- # apply tokenize.detect_encoding to decode the source into a Unicode
- # string, then we should do that ourselves.
- if isinstance(source[0], six.binary_type):
- encoding = 'ascii'
- for line in source[:2]:
- # File coding may be specified. Match pattern from PEP-263
- # (http://www.python.org/dev/peps/pep-0263/)
- match = re.search(br'coding[:=]\s*([-\w.]+)', line)
- if match:
- encoding = match.group(1).decode('ascii')
- break
- source = [six.text_type(sline, encoding, 'replace') for sline in source]
-
- lower_bound = max(0, lineno - context_lines)
- upper_bound = lineno + context_lines
-
- pre_context = source[lower_bound:lineno]
- context_line = source[lineno]
- post_context = source[lineno+1:upper_bound]
-
- return lower_bound, pre_context, context_line, post_context
-
- def get_traceback_frames(self):
- frames = []
- tb = self.tb
- while tb is not None:
- # Support for __traceback_hide__ which is used by a few libraries
- # to hide internal frames.
- if tb.tb_frame.f_locals.get('__traceback_hide__'):
- tb = tb.tb_next
- continue
- filename = tb.tb_frame.f_code.co_filename
- function = tb.tb_frame.f_code.co_name
- lineno = tb.tb_lineno - 1
- loader = tb.tb_frame.f_globals.get('__loader__')
- module_name = tb.tb_frame.f_globals.get('__name__') or ''
- pre_context_lineno, pre_context, context_line, post_context = self._get_lines_from_file(filename, lineno, 7, loader, module_name)
- if pre_context_lineno is not None:
- frames.append({
- 'tb': tb,
- 'type': 'django' if module_name.startswith('django.') else 'user',
- 'filename': filename,
- 'function': function,
- 'lineno': lineno + 1,
- 'vars': self.filter.get_traceback_frame_variables(self.request, tb.tb_frame),
- 'id': id(tb),
- 'pre_context': pre_context,
- 'context_line': context_line,
- 'post_context': post_context,
- 'pre_context_lineno': pre_context_lineno + 1,
- })
- tb = tb.tb_next
-
- return frames
-
- def format_exception(self):
- """
- Return the same data as from traceback.format_exception.
- """
- import traceback
- frames = self.get_traceback_frames()
- tb = [ (f['filename'], f['lineno'], f['function'], f['context_line']) for f in frames ]
- list = ['Traceback (most recent call last):\n']
- list += traceback.format_list(tb)
- list += traceback.format_exception_only(self.exc_type, self.exc_value)
- return list
-
-
-def technical_404_response(request, exception):
- "Create a technical 404 error response. The exception should be the Http404."
- try:
- tried = exception.args[0]['tried']
- except (IndexError, TypeError, KeyError):
- tried = []
- else:
- if (not tried # empty URLconf
- or (request.path == '/'
- and len(tried) == 1 # default URLconf
- and len(tried[0]) == 1
- and getattr(tried[0][0], 'app_name', '') == getattr(tried[0][0], 'namespace', '') == 'admin')):
- return default_urlconf(request)
-
- urlconf = getattr(request, 'urlconf', settings.ROOT_URLCONF)
- if isinstance(urlconf, types.ModuleType):
- urlconf = urlconf.__name__
-
- t = Template(TECHNICAL_404_TEMPLATE, name='Technical 404 template')
- c = Context({
- 'urlconf': urlconf,
- 'root_urlconf': settings.ROOT_URLCONF,
- 'request_path': request.path_info[1:], # Trim leading slash
- 'urlpatterns': tried,
- 'reason': force_bytes(exception, errors='replace'),
- 'request': request,
- 'settings': get_safe_settings(),
- })
- return HttpResponseNotFound(t.render(c), content_type='text/html')
-
-def default_urlconf(request):
- "Create an empty URLconf 404 error response."
- t = Template(DEFAULT_URLCONF_TEMPLATE, name='Default URLconf template')
- c = Context({})
- return HttpResponse(t.render(c), content_type='text/html')
-
-#
-# Templates are embedded in the file so that we know the error handler will
-# always work even if the template loader is broken.
-#
-
-TECHNICAL_500_TEMPLATE = """
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8">
- <meta name="robots" content="NONE,NOARCHIVE">
- <title>{% if exception_type %}{{ exception_type }}{% else %}Report{% endif %}{% if request %} at {{ request.path_info|escape }}{% endif %}</title>
- <style type="text/css">
- html * { padding:0; margin:0; }
- body * { padding:10px 20px; }
- body * * { padding:0; }
- body { font:small sans-serif; }
- body>div { border-bottom:1px solid #ddd; }
- h1 { font-weight:normal; }
- h2 { margin-bottom:.8em; }
- h2 span { font-size:80%; color:#666; font-weight:normal; }
- h3 { margin:1em 0 .5em 0; }
- h4 { margin:0 0 .5em 0; font-weight: normal; }
- code, pre { font-size: 100%; white-space: pre-wrap; }
- table { border:1px solid #ccc; border-collapse: collapse; width:100%; background:white; }
- tbody td, tbody th { vertical-align:top; padding:2px 3px; }
- thead th { padding:1px 6px 1px 3px; background:#fefefe; text-align:left; font-weight:normal; font-size:11px; border:1px solid #ddd; }
- tbody th { width:12em; text-align:right; color:#666; padding-right:.5em; }
- table.vars { margin:5px 0 2px 40px; }
- table.vars td, table.req td { font-family:monospace; }
- table td.code { width:100%; }
- table td.code pre { overflow:hidden; }
- table.source th { color:#666; }
- table.source td { font-family:monospace; white-space:pre; border-bottom:1px solid #eee; }
- ul.traceback { list-style-type:none; color: #222; }
- ul.traceback li.frame { padding-bottom:1em; color:#666; }
- ul.traceback li.user { background-color:#e0e0e0; color:#000 }
- div.context { padding:10px 0; overflow:hidden; }
- div.context ol { padding-left:30px; margin:0 10px; list-style-position: inside; }
- div.context ol li { font-family:monospace; white-space:pre; color:#777; cursor:pointer; }
- div.context ol li pre { display:inline; }
- div.context ol.context-line li { color:#505050; background-color:#dfdfdf; }
- div.context ol.context-line li span { position:absolute; right:32px; }
- .user div.context ol.context-line li { background-color:#bbb; color:#000; }
- .user div.context ol li { color:#666; }
- div.commands { margin-left: 40px; }
- div.commands a { color:#555; text-decoration:none; }
- .user div.commands a { color: black; }
- #summary { background: #ffc; }
- #summary h2 { font-weight: normal; color: #666; }
- #explanation { background:#eee; }
- #template, #template-not-exist { background:#f6f6f6; }
- #template-not-exist ul { margin: 0 0 0 20px; }
- #unicode-hint { background:#eee; }
- #traceback { background:#eee; }
- #requestinfo { background:#f6f6f6; padding-left:120px; }
- #summary table { border:none; background:transparent; }
- #requestinfo h2, #requestinfo h3 { position:relative; margin-left:-100px; }
- #requestinfo h3 { margin-bottom:-1em; }
- .error { background: #ffc; }
- .specific { color:#cc3300; font-weight:bold; }
- h2 span.commands { font-size:.7em;}
- span.commands a:link {color:#5E5694;}
- pre.exception_value { font-family: sans-serif; color: #666; font-size: 1.5em; margin: 10px 0 10px 0; }
- </style>
- {% if not is_email %}
- <script type="text/javascript">
- //<!--
- function getElementsByClassName(oElm, strTagName, strClassName){
- // Written by Jonathan Snook, http://www.snook.ca/jon; Add-ons by Robert Nyman, http://www.robertnyman.com
- var arrElements = (strTagName == "*" && document.all)? document.all :
- oElm.getElementsByTagName(strTagName);
- var arrReturnElements = new Array();
- strClassName = strClassName.replace(/\-/g, "\\-");
- var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
- var oElement;
- for(var i=0; i<arrElements.length; i++){
- oElement = arrElements[i];
- if(oRegExp.test(oElement.className)){
- arrReturnElements.push(oElement);
- }
- }
- return (arrReturnElements)
- }
- function hideAll(elems) {
- for (var e = 0; e < elems.length; e++) {
- elems[e].style.display = 'none';
- }
- }
- window.onload = function() {
- hideAll(getElementsByClassName(document, 'table', 'vars'));
- hideAll(getElementsByClassName(document, 'ol', 'pre-context'));
- hideAll(getElementsByClassName(document, 'ol', 'post-context'));
- hideAll(getElementsByClassName(document, 'div', 'pastebin'));
- }
- function toggle() {
- for (var i = 0; i < arguments.length; i++) {
- var e = document.getElementById(arguments[i]);
- if (e) {
- e.style.display = e.style.display == 'none' ? 'block' : 'none';
- }
- }
- return false;
- }
- function varToggle(link, id) {
- toggle('v' + id);
- var s = link.getElementsByTagName('span')[0];
- var uarr = String.fromCharCode(0x25b6);
- var darr = String.fromCharCode(0x25bc);
- s.innerHTML = s.innerHTML == uarr ? darr : uarr;
- return false;
- }
- function switchPastebinFriendly(link) {
- s1 = "Switch to copy-and-paste view";
- s2 = "Switch back to interactive view";
- link.innerHTML = link.innerHTML == s1 ? s2 : s1;
- toggle('browserTraceback', 'pastebinTraceback');
- return false;
- }
- //-->
- </script>
- {% endif %}
-</head>
-<body>
-<div id="summary">
- <h1>{% if exception_type %}{{ exception_type }}{% else %}Report{% endif %}{% if request %} at {{ request.path_info|escape }}{% endif %}</h1>
- <pre class="exception_value">{% if exception_value %}{{ exception_value|force_escape }}{% else %}No exception message supplied{% endif %}</pre>
- <table class="meta">
-{% if request %}
- <tr>
- <th>Request Method:</th>
- <td>{{ request.META.REQUEST_METHOD }}</td>
- </tr>
- <tr>
- <th>Request URL:</th>
- <td>{{ request.build_absolute_uri|escape }}</td>
- </tr>
-{% endif %}
- <tr>
- <th>Django Version:</th>
- <td>{{ django_version_info }}</td>
- </tr>
-{% if exception_type %}
- <tr>
- <th>Exception Type:</th>
- <td>{{ exception_type }}</td>
- </tr>
-{% endif %}
-{% if exception_type and exception_value %}
- <tr>
- <th>Exception Value:</th>
- <td><pre>{{ exception_value|force_escape }}</pre></td>
- </tr>
-{% endif %}
-{% if lastframe %}
- <tr>
- <th>Exception Location:</th>
- <td>{{ lastframe.filename|escape }} in {{ lastframe.function|escape }}, line {{ lastframe.lineno }}</td>
- </tr>
-{% endif %}
- <tr>
- <th>Python Executable:</th>
- <td>{{ sys_executable|escape }}</td>
- </tr>
- <tr>
- <th>Python Version:</th>
- <td>{{ sys_version_info }}</td>
- </tr>
- <tr>
- <th>Python Path:</th>
- <td><pre>{{ sys_path|pprint }}</pre></td>
- </tr>
- <tr>
- <th>Server time:</th>
- <td>{{server_time|date:"r"}}</td>
- </tr>
- </table>
-</div>
-{% if unicode_hint %}
-<div id="unicode-hint">
- <h2>Unicode error hint</h2>
- <p>The string that could not be encoded/decoded was: <strong>{{ unicode_hint|force_escape }}</strong></p>
-</div>
-{% endif %}
-{% if template_does_not_exist %}
-<div id="template-not-exist">
- <h2>Template-loader postmortem</h2>
- {% if loader_debug_info %}
- <p>Django tried loading these templates, in this order:</p>
- <ul>
- {% for loader in loader_debug_info %}
- <li>Using loader <code>{{ loader.loader }}</code>:
- <ul>
- {% for t in loader.templates %}<li><code>{{ t.name }}</code> ({{ t.status }})</li>{% endfor %}
- </ul>
- </li>
- {% endfor %}
- </ul>
- {% else %}
- <p>Django couldn't find any templates because your <code>TEMPLATE_LOADERS</code> setting is empty!</p>
- {% endif %}
-</div>
-{% endif %}
-{% if template_info %}
-<div id="template">
- <h2>Error during template rendering</h2>
- <p>In template <code>{{ template_info.name }}</code>, error at line <strong>{{ template_info.line }}</strong></p>
- <h3>{{ template_info.message }}</h3>
- <table class="source{% if template_info.top %} cut-top{% endif %}{% ifnotequal template_info.bottom template_info.total %} cut-bottom{% endifnotequal %}">
- {% for source_line in template_info.source_lines %}
- {% ifequal source_line.0 template_info.line %}
- <tr class="error"><th>{{ source_line.0 }}</th>
- <td>{{ template_info.before }}<span class="specific">{{ template_info.during }}</span>{{ template_info.after }}</td></tr>
- {% else %}
- <tr><th>{{ source_line.0 }}</th>
- <td>{{ source_line.1 }}</td></tr>
- {% endifequal %}
- {% endfor %}
- </table>
-</div>
-{% endif %}
-{% if frames %}
-<div id="traceback">
- <h2>Traceback <span class="commands">{% if not is_email %}<a href="#" onclick="return switchPastebinFriendly(this);">Switch to copy-and-paste view</a></span>{% endif %}</h2>
- {% autoescape off %}
- <div id="browserTraceback">
- <ul class="traceback">
- {% for frame in frames %}
- <li class="frame {{ frame.type }}">
- <code>{{ frame.filename|escape }}</code> in <code>{{ frame.function|escape }}</code>
-
- {% if frame.context_line %}
- <div class="context" id="c{{ frame.id }}">
- {% if frame.pre_context and not is_email %}
- <ol start="{{ frame.pre_context_lineno }}" class="pre-context" id="pre{{ frame.id }}">{% for line in frame.pre_context %}<li onclick="toggle('pre{{ frame.id }}', 'post{{ frame.id }}')"><pre>{{ line|escape }}</pre></li>{% endfor %}</ol>
- {% endif %}
- <ol start="{{ frame.lineno }}" class="context-line"><li onclick="toggle('pre{{ frame.id }}', 'post{{ frame.id }}')"><pre>{{ frame.context_line|escape }}</pre>{% if not is_email %} <span>...</span>{% endif %}</li></ol>
- {% if frame.post_context and not is_email %}
- <ol start='{{ frame.lineno|add:"1" }}' class="post-context" id="post{{ frame.id }}">{% for line in frame.post_context %}<li onclick="toggle('pre{{ frame.id }}', 'post{{ frame.id }}')"><pre>{{ line|escape }}</pre></li>{% endfor %}</ol>
- {% endif %}
- </div>
- {% endif %}
-
- {% if frame.vars %}
- <div class="commands">
- {% if is_email %}
- <h2>Local Vars</h2>
- {% else %}
- <a href="#" onclick="return varToggle(this, '{{ frame.id }}')"><span>&#x25b6;</span> Local vars</a>
- {% endif %}
- </div>
- <table class="vars" id="v{{ frame.id }}">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- {% for var in frame.vars|dictsort:"0" %}
- <tr>
- <td>{{ var.0|force_escape }}</td>
- <td class="code"><pre>{{ var.1 }}</pre></td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- {% endif %}
- </li>
- {% endfor %}
- </ul>
- </div>
- {% endautoescape %}
- <form action="http://dpaste.com/" name="pasteform" id="pasteform" method="post">
-{% if not is_email %}
- <div id="pastebinTraceback" class="pastebin">
- <input type="hidden" name="language" value="PythonConsole">
- <input type="hidden" name="title" value="{{ exception_type|escape }}{% if request %} at {{ request.path_info|escape }}{% endif %}">
- <input type="hidden" name="source" value="Django Dpaste Agent">
- <input type="hidden" name="poster" value="Django">
- <textarea name="content" id="traceback_area" cols="140" rows="25">
-Environment:
-
-{% if request %}
-Request Method: {{ request.META.REQUEST_METHOD }}
-Request URL: {{ request.build_absolute_uri|escape }}
-{% endif %}
-Django Version: {{ django_version_info }}
-Python Version: {{ sys_version_info }}
-Installed Applications:
-{{ settings.INSTALLED_APPS|pprint }}
-Installed Middleware:
-{{ settings.MIDDLEWARE_CLASSES|pprint }}
-
-{% if template_does_not_exist %}Template Loader Error:
-{% if loader_debug_info %}Django tried loading these templates, in this order:
-{% for loader in loader_debug_info %}Using loader {{ loader.loader }}:
-{% for t in loader.templates %}{{ t.name }} ({{ t.status }})
-{% endfor %}{% endfor %}
-{% else %}Django couldn't find any templates because your TEMPLATE_LOADERS setting is empty!
-{% endif %}
-{% endif %}{% if template_info %}
-Template error:
-In template {{ template_info.name }}, error at line {{ template_info.line }}
- {{ template_info.message }}{% for source_line in template_info.source_lines %}{% ifequal source_line.0 template_info.line %}
- {{ source_line.0 }} : {{ template_info.before }} {{ template_info.during }} {{ template_info.after }}
-{% else %}
- {{ source_line.0 }} : {{ source_line.1 }}
-{% endifequal %}{% endfor %}{% endif %}
-Traceback:
-{% for frame in frames %}File "{{ frame.filename|escape }}" in {{ frame.function|escape }}
-{% if frame.context_line %} {{ frame.lineno }}. {{ frame.context_line|escape }}{% endif %}
-{% endfor %}
-Exception Type: {{ exception_type|escape }}{% if request %} at {{ request.path_info|escape }}{% endif %}
-Exception Value: {{ exception_value|force_escape }}
-</textarea>
- <br><br>
- <input type="submit" value="Share this traceback on a public Web site">
- </div>
-</form>
-</div>
-{% endif %}
-{% endif %}
-
-<div id="requestinfo">
- <h2>Request information</h2>
-
-{% if request %}
- <h3 id="get-info">GET</h3>
- {% if request.GET %}
- <table class="req">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- {% for var in request.GET.items %}
- <tr>
- <td>{{ var.0 }}</td>
- <td class="code"><pre>{{ var.1|pprint }}</pre></td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- {% else %}
- <p>No GET data</p>
- {% endif %}
-
- <h3 id="post-info">POST</h3>
- {% if filtered_POST %}
- <table class="req">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- {% for var in filtered_POST.items %}
- <tr>
- <td>{{ var.0 }}</td>
- <td class="code"><pre>{{ var.1|pprint }}</pre></td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- {% else %}
- <p>No POST data</p>
- {% endif %}
- <h3 id="files-info">FILES</h3>
- {% if request.FILES %}
- <table class="req">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- {% for var in request.FILES.items %}
- <tr>
- <td>{{ var.0 }}</td>
- <td class="code"><pre>{{ var.1|pprint }}</pre></td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- {% else %}
- <p>No FILES data</p>
- {% endif %}
-
-
- <h3 id="cookie-info">COOKIES</h3>
- {% if request.COOKIES %}
- <table class="req">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- {% for var in request.COOKIES.items %}
- <tr>
- <td>{{ var.0 }}</td>
- <td class="code"><pre>{{ var.1|pprint }}</pre></td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- {% else %}
- <p>No cookie data</p>
- {% endif %}
-
- <h3 id="meta-info">META</h3>
- <table class="req">
- <thead>
- <tr>
- <th>Variable</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- {% for var in request.META.items|dictsort:"0" %}
- <tr>
- <td>{{ var.0 }}</td>
- <td class="code"><pre>{{ var.1|pprint }}</pre></td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
-{% else %}
- <p>Request data not supplied</p>
-{% endif %}
-
- <h3 id="settings-info">Settings</h3>
- <h4>Using settings module <code>{{ settings.SETTINGS_MODULE }}</code></h4>
- <table class="req">
- <thead>
- <tr>
- <th>Setting</th>
- <th>Value</th>
- </tr>
- </thead>
- <tbody>
- {% for var in settings.items|dictsort:"0" %}
- <tr>
- <td>{{ var.0 }}</td>
- <td class="code"><pre>{{ var.1|pprint }}</pre></td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
-
-</div>
-{% if not is_email %}
- <div id="explanation">
- <p>
- You're seeing this error because you have <code>DEBUG = True</code> in your
- Django settings file. Change that to <code>False</code>, and Django will
- display a standard 500 page.
- </p>
- </div>
-{% endif %}
-</body>
-</html>
-"""
-
-TECHNICAL_500_TEXT_TEMPLATE = """{% load firstof from future %}{% firstof exception_type 'Report' %}{% if request %} at {{ request.path_info }}{% endif %}
-{% firstof exception_value 'No exception message supplied' %}
-{% if request %}
-Request Method: {{ request.META.REQUEST_METHOD }}
-Request URL: {{ request.build_absolute_uri }}{% endif %}
-Django Version: {{ django_version_info }}
-Python Executable: {{ sys_executable }}
-Python Version: {{ sys_version_info }}
-Python Path: {{ sys_path }}
-Server time: {{server_time|date:"r"}}
-Installed Applications:
-{{ settings.INSTALLED_APPS|pprint }}
-Installed Middleware:
-{{ settings.MIDDLEWARE_CLASSES|pprint }}
-{% if template_does_not_exist %}Template loader Error:
-{% if loader_debug_info %}Django tried loading these templates, in this order:
-{% for loader in loader_debug_info %}Using loader {{ loader.loader }}:
-{% for t in loader.templates %}{{ t.name }} ({{ t.status }})
-{% endfor %}{% endfor %}
-{% else %}Django couldn't find any templates because your TEMPLATE_LOADERS setting is empty!
-{% endif %}
-{% endif %}{% if template_info %}
-Template error:
-In template {{ template_info.name }}, error at line {{ template_info.line }}
- {{ template_info.message }}{% for source_line in template_info.source_lines %}{% ifequal source_line.0 template_info.line %}
- {{ source_line.0 }} : {{ template_info.before }} {{ template_info.during }} {{ template_info.after }}
-{% else %}
- {{ source_line.0 }} : {{ source_line.1 }}
- {% endifequal %}{% endfor %}{% endif %}{% if frames %}
-Traceback:
-{% for frame in frames %}File "{{ frame.filename }}" in {{ frame.function }}
-{% if frame.context_line %} {{ frame.lineno }}. {{ frame.context_line }}{% endif %}
-{% endfor %}
-{% if exception_type %}Exception Type: {{ exception_type }}{% if request %} at {{ request.path_info }}{% endif %}
-{% if exception_value %}Exception Value: {{ exception_value }}{% endif %}{% endif %}{% endif %}
-{% if request %}Request information:
-GET:{% for k, v in request.GET.items %}
-{{ k }} = {{ v|stringformat:"r" }}{% empty %} No GET data{% endfor %}
-
-POST:{% for k, v in filtered_POST.items %}
-{{ k }} = {{ v|stringformat:"r" }}{% empty %} No POST data{% endfor %}
-
-FILES:{% for k, v in request.FILES.items %}
-{{ k }} = {{ v|stringformat:"r" }}{% empty %} No FILES data{% endfor %}
-
-COOKIES:{% for k, v in request.COOKIES.items %}
-{{ k }} = {{ v|stringformat:"r" }}{% empty %} No cookie data{% endfor %}
-
-META:{% for k, v in request.META.items|dictsort:"0" %}
-{{ k }} = {{ v|stringformat:"r" }}{% endfor %}
-{% else %}Request data not supplied
-{% endif %}
-Settings:
-Using settings module {{ settings.SETTINGS_MODULE }}{% for k, v in settings.items|dictsort:"0" %}
-{{ k }} = {{ v|stringformat:"r" }}{% endfor %}
-
-You're seeing this error because you have DEBUG = True in your
-Django settings file. Change that to False, and Django will
-display a standard 500 page.
-"""
-
-TECHNICAL_404_TEMPLATE = """
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8">
- <title>Page not found at {{ request.path_info|escape }}</title>
- <meta name="robots" content="NONE,NOARCHIVE">
- <style type="text/css">
- html * { padding:0; margin:0; }
- body * { padding:10px 20px; }
- body * * { padding:0; }
- body { font:small sans-serif; background:#eee; }
- body>div { border-bottom:1px solid #ddd; }
- h1 { font-weight:normal; margin-bottom:.4em; }
- h1 span { font-size:60%; color:#666; font-weight:normal; }
- table { border:none; border-collapse: collapse; width:100%; }
- td, th { vertical-align:top; padding:2px 3px; }
- th { width:12em; text-align:right; color:#666; padding-right:.5em; }
- #info { background:#f6f6f6; }
- #info ol { margin: 0.5em 4em; }
- #info ol li { font-family: monospace; }
- #summary { background: #ffc; }
- #explanation { background:#eee; border-bottom: 0px none; }
- </style>
-</head>
-<body>
- <div id="summary">
- <h1>Page not found <span>(404)</span></h1>
- <table class="meta">
- <tr>
- <th>Request Method:</th>
- <td>{{ request.META.REQUEST_METHOD }}</td>
- </tr>
- <tr>
- <th>Request URL:</th>
- <td>{{ request.build_absolute_uri|escape }}</td>
- </tr>
- </table>
- </div>
- <div id="info">
- {% if urlpatterns %}
- <p>
- Using the URLconf defined in <code>{{ urlconf }}</code>,
- Django tried these URL patterns, in this order:
- </p>
- <ol>
- {% for pattern in urlpatterns %}
- <li>
- {% for pat in pattern %}
- {{ pat.regex.pattern }}
- {% if forloop.last and pat.name %}[name='{{ pat.name }}']{% endif %}
- {% endfor %}
- </li>
- {% endfor %}
- </ol>
- <p>The current URL, <code>{{ request_path|escape }}</code>, didn't match any of these.</p>
- {% else %}
- <p>{{ reason }}</p>
- {% endif %}
- </div>
-
- <div id="explanation">
- <p>
- You're seeing this error because you have <code>DEBUG = True</code> in
- your Django settings file. Change that to <code>False</code>, and Django
- will display a standard 404 page.
- </p>
- </div>
-</body>
-</html>
-"""
-
-DEFAULT_URLCONF_TEMPLATE = """
-<!DOCTYPE html>
-<html lang="en"><head>
- <meta http-equiv="content-type" content="text/html; charset=utf-8">
- <meta name="robots" content="NONE,NOARCHIVE"><title>Welcome to Django</title>
- <style type="text/css">
- html * { padding:0; margin:0; }
- body * { padding:10px 20px; }
- body * * { padding:0; }
- body { font:small sans-serif; }
- body>div { border-bottom:1px solid #ddd; }
- h1 { font-weight:normal; }
- h2 { margin-bottom:.8em; }
- h2 span { font-size:80%; color:#666; font-weight:normal; }
- h3 { margin:1em 0 .5em 0; }
- h4 { margin:0 0 .5em 0; font-weight: normal; }
- table { border:1px solid #ccc; border-collapse: collapse; width:100%; background:white; }
- tbody td, tbody th { vertical-align:top; padding:2px 3px; }
- thead th { padding:1px 6px 1px 3px; background:#fefefe; text-align:left; font-weight:normal; font-size:11px; border:1px solid #ddd; }
- tbody th { width:12em; text-align:right; color:#666; padding-right:.5em; }
- #summary { background: #e0ebff; }
- #summary h2 { font-weight: normal; color: #666; }
- #explanation { background:#eee; }
- #instructions { background:#f6f6f6; }
- #summary table { border:none; background:transparent; }
- </style>
-</head>
-
-<body>
-<div id="summary">
- <h1>It worked!</h1>
- <h2>Congratulations on your first Django-powered page.</h2>
-</div>
-
-<div id="instructions">
- <p>
- Of course, you haven't actually done any work yet.
- Next, start your first app by running <code>python manage.py startapp [appname]</code>.
- </p>
-</div>
-
-<div id="explanation">
- <p>
- You're seeing this message because you have <code>DEBUG = True</code> in your
- Django settings file and you haven't configured any URLs. Get to work!
- </p>
-</div>
-</body></html>
-"""
diff --git a/lib/python2.7/site-packages/django/views/decorators/__init__.py b/lib/python2.7/site-packages/django/views/decorators/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/django/views/decorators/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/django/views/decorators/cache.py b/lib/python2.7/site-packages/django/views/decorators/cache.py
deleted file mode 100644
index 001e21c..0000000
--- a/lib/python2.7/site-packages/django/views/decorators/cache.py
+++ /dev/null
@@ -1,55 +0,0 @@
-from functools import wraps
-from django.utils.decorators import decorator_from_middleware_with_args, available_attrs
-from django.utils.cache import patch_cache_control, add_never_cache_headers
-from django.middleware.cache import CacheMiddleware
-
-
-def cache_page(*args, **kwargs):
- """
- Decorator for views that tries getting the page from the cache and
- populates the cache if the page isn't in the cache yet.
-
- The cache is keyed by the URL and some data from the headers.
- Additionally there is the key prefix that is used to distinguish different
- cache areas in a multi-site setup. You could use the
- sites.get_current_site().domain, for example, as that is unique across a Django
- project.
-
- Additionally, all headers from the response's Vary header will be taken
- into account on caching -- just like the middleware does.
- """
- # We also add some asserts to give better error messages in case people are
- # using other ways to call cache_page that no longer work.
- if len(args) != 1 or callable(args[0]):
- raise TypeError("cache_page has a single mandatory positional argument: timeout")
- cache_timeout = args[0]
- cache_alias = kwargs.pop('cache', None)
- key_prefix = kwargs.pop('key_prefix', None)
- if kwargs:
- raise TypeError("cache_page has two optional keyword arguments: cache and key_prefix")
-
- return decorator_from_middleware_with_args(CacheMiddleware)(cache_timeout=cache_timeout, cache_alias=cache_alias, key_prefix=key_prefix)
-
-
-def cache_control(**kwargs):
- def _cache_controller(viewfunc):
- @wraps(viewfunc, assigned=available_attrs(viewfunc))
- def _cache_controlled(request, *args, **kw):
- response = viewfunc(request, *args, **kw)
- patch_cache_control(response, **kwargs)
- return response
- return _cache_controlled
- return _cache_controller
-
-
-def never_cache(view_func):
- """
- Decorator that adds headers to a response so that it will
- never be cached.
- """
- @wraps(view_func, assigned=available_attrs(view_func))
- def _wrapped_view_func(request, *args, **kwargs):
- response = view_func(request, *args, **kwargs)
- add_never_cache_headers(response)
- return response
- return _wrapped_view_func
diff --git a/lib/python2.7/site-packages/django/views/decorators/clickjacking.py b/lib/python2.7/site-packages/django/views/decorators/clickjacking.py
deleted file mode 100644
index fcd7887..0000000
--- a/lib/python2.7/site-packages/django/views/decorators/clickjacking.py
+++ /dev/null
@@ -1,64 +0,0 @@
-from functools import wraps
-
-from django.utils.decorators import available_attrs
-
-
-def xframe_options_deny(view_func):
- """
- Modifies a view function so its response has the X-Frame-Options HTTP
- header set to 'DENY' as long as the response doesn't already have that
- header set.
-
- e.g.
-
- @xframe_options_deny
- def some_view(request):
- ...
-
- """
- def wrapped_view(*args, **kwargs):
- resp = view_func(*args, **kwargs)
- if resp.get('X-Frame-Options', None) is None:
- resp['X-Frame-Options'] = 'DENY'
- return resp
- return wraps(view_func, assigned=available_attrs(view_func))(wrapped_view)
-
-
-def xframe_options_sameorigin(view_func):
- """
- Modifies a view function so its response has the X-Frame-Options HTTP
- header set to 'SAMEORIGIN' as long as the response doesn't already have
- that header set.
-
- e.g.
-
- @xframe_options_sameorigin
- def some_view(request):
- ...
-
- """
- def wrapped_view(*args, **kwargs):
- resp = view_func(*args, **kwargs)
- if resp.get('X-Frame-Options', None) is None:
- resp['X-Frame-Options'] = 'SAMEORIGIN'
- return resp
- return wraps(view_func, assigned=available_attrs(view_func))(wrapped_view)
-
-
-def xframe_options_exempt(view_func):
- """
- Modifies a view function by setting a response variable that instructs
- XFrameOptionsMiddleware to NOT set the X-Frame-Options HTTP header.
-
- e.g.
-
- @xframe_options_exempt
- def some_view(request):
- ...
-
- """
- def wrapped_view(*args, **kwargs):
- resp = view_func(*args, **kwargs)
- resp.xframe_options_exempt = True
- return resp
- return wraps(view_func, assigned=available_attrs(view_func))(wrapped_view)
diff --git a/lib/python2.7/site-packages/django/views/decorators/csrf.py b/lib/python2.7/site-packages/django/views/decorators/csrf.py
deleted file mode 100644
index 1ebed2a..0000000
--- a/lib/python2.7/site-packages/django/views/decorators/csrf.py
+++ /dev/null
@@ -1,59 +0,0 @@
-from django.middleware.csrf import CsrfViewMiddleware, get_token
-from django.utils.decorators import decorator_from_middleware, available_attrs
-from functools import wraps
-
-csrf_protect = decorator_from_middleware(CsrfViewMiddleware)
-csrf_protect.__name__ = "csrf_protect"
-csrf_protect.__doc__ = """
-This decorator adds CSRF protection in exactly the same way as
-CsrfViewMiddleware, but it can be used on a per view basis. Using both, or
-using the decorator multiple times, is harmless and efficient.
-"""
-
-
-class _EnsureCsrfToken(CsrfViewMiddleware):
- # We need this to behave just like the CsrfViewMiddleware, but not reject
- # requests or log warnings.
- def _reject(self, request, reason):
- return None
-
-
-requires_csrf_token = decorator_from_middleware(_EnsureCsrfToken)
-requires_csrf_token.__name__ = 'requires_csrf_token'
-requires_csrf_token.__doc__ = """
-Use this decorator on views that need a correct csrf_token available to
-RequestContext, but without the CSRF protection that csrf_protect
-enforces.
-"""
-
-
-class _EnsureCsrfCookie(CsrfViewMiddleware):
- def _reject(self, request, reason):
- return None
-
- def process_view(self, request, callback, callback_args, callback_kwargs):
- retval = super(_EnsureCsrfCookie, self).process_view(request, callback, callback_args, callback_kwargs)
- # Forces process_response to send the cookie
- get_token(request)
- return retval
-
-
-ensure_csrf_cookie = decorator_from_middleware(_EnsureCsrfCookie)
-ensure_csrf_cookie.__name__ = 'ensure_csrf_cookie'
-ensure_csrf_cookie.__doc__ = """
-Use this decorator to ensure that a view sets a CSRF cookie, whether or not it
-uses the csrf_token template tag, or the CsrfViewMiddleware is used.
-"""
-
-
-def csrf_exempt(view_func):
- """
- Marks a view function as being exempt from the CSRF view protection.
- """
- # We could just do view_func.csrf_exempt = True, but decorators
- # are nicer if they don't have side-effects, so we return a new
- # function.
- def wrapped_view(*args, **kwargs):
- return view_func(*args, **kwargs)
- wrapped_view.csrf_exempt = True
- return wraps(view_func, assigned=available_attrs(view_func))(wrapped_view)
diff --git a/lib/python2.7/site-packages/django/views/decorators/debug.py b/lib/python2.7/site-packages/django/views/decorators/debug.py
deleted file mode 100644
index a611981..0000000
--- a/lib/python2.7/site-packages/django/views/decorators/debug.py
+++ /dev/null
@@ -1,77 +0,0 @@
-import functools
-
-from django.http import HttpRequest
-
-
-def sensitive_variables(*variables):
- """
- Indicates which variables used in the decorated function are sensitive, so
- that those variables can later be treated in a special way, for example
- by hiding them when logging unhandled exceptions.
-
- Two forms are accepted:
-
- * with specified variable names:
-
- @sensitive_variables('user', 'password', 'credit_card')
- def my_function(user):
- password = user.pass_word
- credit_card = user.credit_card_number
- ...
-
- * without any specified variable names, in which case it is assumed that
- all variables are considered sensitive:
-
- @sensitive_variables()
- def my_function()
- ...
- """
- def decorator(func):
- @functools.wraps(func)
- def sensitive_variables_wrapper(*func_args, **func_kwargs):
- if variables:
- sensitive_variables_wrapper.sensitive_variables = variables
- else:
- sensitive_variables_wrapper.sensitive_variables = '__ALL__'
- return func(*func_args, **func_kwargs)
- return sensitive_variables_wrapper
- return decorator
-
-
-def sensitive_post_parameters(*parameters):
- """
- Indicates which POST parameters used in the decorated view are sensitive,
- so that those parameters can later be treated in a special way, for example
- by hiding them when logging unhandled exceptions.
-
- Two forms are accepted:
-
- * with specified parameters:
-
- @sensitive_post_parameters('password', 'credit_card')
- def my_view(request):
- pw = request.POST['password']
- cc = request.POST['credit_card']
- ...
-
- * without any specified parameters, in which case it is assumed that
- all parameters are considered sensitive:
-
- @sensitive_post_parameters()
- def my_view(request)
- ...
- """
- def decorator(view):
- @functools.wraps(view)
- def sensitive_post_parameters_wrapper(request, *args, **kwargs):
- assert isinstance(request, HttpRequest), (
- "sensitive_post_parameters didn't receive an HttpRequest. If you "
- "are decorating a classmethod, be sure to use @method_decorator."
- )
- if parameters:
- request.sensitive_post_parameters = parameters
- else:
- request.sensitive_post_parameters = '__ALL__'
- return view(request, *args, **kwargs)
- return sensitive_post_parameters_wrapper
- return decorator
diff --git a/lib/python2.7/site-packages/django/views/decorators/gzip.py b/lib/python2.7/site-packages/django/views/decorators/gzip.py
deleted file mode 100644
index f5b009d..0000000
--- a/lib/python2.7/site-packages/django/views/decorators/gzip.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from django.utils.decorators import decorator_from_middleware
-from django.middleware.gzip import GZipMiddleware
-
-gzip_page = decorator_from_middleware(GZipMiddleware)
-gzip_page.__doc__ = "Decorator for views that gzips pages if the client supports it."
diff --git a/lib/python2.7/site-packages/django/views/decorators/http.py b/lib/python2.7/site-packages/django/views/decorators/http.py
deleted file mode 100644
index 410979e..0000000
--- a/lib/python2.7/site-packages/django/views/decorators/http.py
+++ /dev/null
@@ -1,166 +0,0 @@
-"""
-Decorators for views based on HTTP headers.
-"""
-
-import logging
-from calendar import timegm
-from functools import wraps
-
-from django.utils.decorators import decorator_from_middleware, available_attrs
-from django.utils.http import http_date, parse_http_date_safe, parse_etags, quote_etag
-from django.middleware.http import ConditionalGetMiddleware
-from django.http import HttpResponseNotAllowed, HttpResponseNotModified, HttpResponse
-
-conditional_page = decorator_from_middleware(ConditionalGetMiddleware)
-
-logger = logging.getLogger('django.request')
-
-
-def require_http_methods(request_method_list):
- """
- Decorator to make a view only accept particular request methods. Usage::
-
- @require_http_methods(["GET", "POST"])
- def my_view(request):
- # I can assume now that only GET or POST requests make it this far
- # ...
-
- Note that request methods should be in uppercase.
- """
- def decorator(func):
- @wraps(func, assigned=available_attrs(func))
- def inner(request, *args, **kwargs):
- if request.method not in request_method_list:
- logger.warning('Method Not Allowed (%s): %s', request.method, request.path,
- extra={
- 'status_code': 405,
- 'request': request
- }
- )
- return HttpResponseNotAllowed(request_method_list)
- return func(request, *args, **kwargs)
- return inner
- return decorator
-
-require_GET = require_http_methods(["GET"])
-require_GET.__doc__ = "Decorator to require that a view only accept the GET method."
-
-require_POST = require_http_methods(["POST"])
-require_POST.__doc__ = "Decorator to require that a view only accept the POST method."
-
-require_safe = require_http_methods(["GET", "HEAD"])
-require_safe.__doc__ = "Decorator to require that a view only accept safe methods: GET and HEAD."
-
-def condition(etag_func=None, last_modified_func=None):
- """
- Decorator to support conditional retrieval (or change) for a view
- function.
-
- The parameters are callables to compute the ETag and last modified time for
- the requested resource, respectively. The callables are passed the same
- parameters as the view itself. The Etag function should return a string (or
- None if the resource doesn't exist), whilst the last_modified function
- should return a datetime object (or None if the resource doesn't exist).
-
- If both parameters are provided, all the preconditions must be met before
- the view is processed.
-
- This decorator will either pass control to the wrapped view function or
- return an HTTP 304 response (unmodified) or 412 response (preconditions
- failed), depending upon the request method.
-
- Any behavior marked as "undefined" in the HTTP spec (e.g. If-none-match
- plus If-modified-since headers) will result in the view function being
- called.
- """
- def decorator(func):
- @wraps(func, assigned=available_attrs(func))
- def inner(request, *args, **kwargs):
- # Get HTTP request headers
- if_modified_since = request.META.get("HTTP_IF_MODIFIED_SINCE")
- if if_modified_since:
- if_modified_since = parse_http_date_safe(if_modified_since)
- if_none_match = request.META.get("HTTP_IF_NONE_MATCH")
- if_match = request.META.get("HTTP_IF_MATCH")
- if if_none_match or if_match:
- # There can be more than one ETag in the request, so we
- # consider the list of values.
- try:
- etags = parse_etags(if_none_match or if_match)
- except ValueError:
- # In case of invalid etag ignore all ETag headers.
- # Apparently Opera sends invalidly quoted headers at times
- # (we should be returning a 400 response, but that's a
- # little extreme) -- this is Django bug #10681.
- if_none_match = None
- if_match = None
-
- # Compute values (if any) for the requested resource.
- if etag_func:
- res_etag = etag_func(request, *args, **kwargs)
- else:
- res_etag = None
- if last_modified_func:
- dt = last_modified_func(request, *args, **kwargs)
- if dt:
- res_last_modified = timegm(dt.utctimetuple())
- else:
- res_last_modified = None
- else:
- res_last_modified = None
-
- response = None
- if not ((if_match and (if_modified_since or if_none_match)) or
- (if_match and if_none_match)):
- # We only get here if no undefined combinations of headers are
- # specified.
- if ((if_none_match and (res_etag in etags or
- "*" in etags and res_etag)) and
- (not if_modified_since or
- (res_last_modified and if_modified_since and
- res_last_modified <= if_modified_since))):
- if request.method in ("GET", "HEAD"):
- response = HttpResponseNotModified()
- else:
- logger.warning('Precondition Failed: %s', request.path,
- extra={
- 'status_code': 412,
- 'request': request
- }
- )
- response = HttpResponse(status=412)
- elif if_match and ((not res_etag and "*" in etags) or
- (res_etag and res_etag not in etags)):
- logger.warning('Precondition Failed: %s', request.path,
- extra={
- 'status_code': 412,
- 'request': request
- }
- )
- response = HttpResponse(status=412)
- elif (not if_none_match and request.method == "GET" and
- res_last_modified and if_modified_since and
- res_last_modified <= if_modified_since):
- response = HttpResponseNotModified()
-
- if response is None:
- response = func(request, *args, **kwargs)
-
- # Set relevant headers on the response if they don't already exist.
- if res_last_modified and not response.has_header('Last-Modified'):
- response['Last-Modified'] = http_date(res_last_modified)
- if res_etag and not response.has_header('ETag'):
- response['ETag'] = quote_etag(res_etag)
-
- return response
-
- return inner
- return decorator
-
-# Shortcut decorators for common cases based on ETag or Last-Modified only
-def etag(etag_func):
- return condition(etag_func=etag_func)
-
-def last_modified(last_modified_func):
- return condition(last_modified_func=last_modified_func)
-
diff --git a/lib/python2.7/site-packages/django/views/decorators/vary.py b/lib/python2.7/site-packages/django/views/decorators/vary.py
deleted file mode 100644
index cd2f9c0..0000000
--- a/lib/python2.7/site-packages/django/views/decorators/vary.py
+++ /dev/null
@@ -1,39 +0,0 @@
-from functools import wraps
-from django.utils.cache import patch_vary_headers
-from django.utils.decorators import available_attrs
-
-def vary_on_headers(*headers):
- """
- A view decorator that adds the specified headers to the Vary header of the
- response. Usage:
-
- @vary_on_headers('Cookie', 'Accept-language')
- def index(request):
- ...
-
- Note that the header names are not case-sensitive.
- """
- def decorator(func):
- @wraps(func, assigned=available_attrs(func))
- def inner_func(*args, **kwargs):
- response = func(*args, **kwargs)
- patch_vary_headers(response, headers)
- return response
- return inner_func
- return decorator
-
-def vary_on_cookie(func):
- """
- A view decorator that adds "Cookie" to the Vary header of a response. This
- indicates that a page's contents depends on cookies. Usage:
-
- @vary_on_cookie
- def index(request):
- ...
- """
- @wraps(func, assigned=available_attrs(func))
- def inner_func(*args, **kwargs):
- response = func(*args, **kwargs)
- patch_vary_headers(response, ('Cookie',))
- return response
- return inner_func
diff --git a/lib/python2.7/site-packages/django/views/defaults.py b/lib/python2.7/site-packages/django/views/defaults.py
deleted file mode 100644
index d531f22..0000000
--- a/lib/python2.7/site-packages/django/views/defaults.py
+++ /dev/null
@@ -1,91 +0,0 @@
-import warnings
-
-from django import http
-from django.template import (Context, RequestContext,
- loader, Template, TemplateDoesNotExist)
-from django.views.decorators.csrf import requires_csrf_token
-
-
-# This can be called when CsrfViewMiddleware.process_view has not run,
-# therefore need @requires_csrf_token in case the template needs
-# {% csrf_token %}.
-@requires_csrf_token
-def page_not_found(request, template_name='404.html'):
- """
- Default 404 handler.
-
- Templates: :template:`404.html`
- Context:
- request_path
- The path of the requested URL (e.g., '/app/pages/bad_page/')
- """
- try:
- template = loader.get_template(template_name)
- content_type = None # Django will use DEFAULT_CONTENT_TYPE
- except TemplateDoesNotExist:
- template = Template(
- '<h1>Not Found</h1>'
- '<p>The requested URL {{ request_path }} was not found on this server.</p>')
- content_type = 'text/html'
- body = template.render(RequestContext(request, {'request_path': request.path}))
- return http.HttpResponseNotFound(body, content_type=content_type)
-
-
-@requires_csrf_token
-def server_error(request, template_name='500.html'):
- """
- 500 error handler.
-
- Templates: :template:`500.html`
- Context: None
- """
- try:
- template = loader.get_template(template_name)
- except TemplateDoesNotExist:
- return http.HttpResponseServerError('<h1>Server Error (500)</h1>', content_type='text/html')
- return http.HttpResponseServerError(template.render(Context({})))
-
-
-@requires_csrf_token
-def bad_request(request, template_name='400.html'):
- """
- 400 error handler.
-
- Templates: :template:`400.html`
- Context: None
- """
- try:
- template = loader.get_template(template_name)
- except TemplateDoesNotExist:
- return http.HttpResponseBadRequest('<h1>Bad Request (400)</h1>', content_type='text/html')
- return http.HttpResponseBadRequest(template.render(Context({})))
-
-
-# This can be called when CsrfViewMiddleware.process_view has not run,
-# therefore need @requires_csrf_token in case the template needs
-# {% csrf_token %}.
-@requires_csrf_token
-def permission_denied(request, template_name='403.html'):
- """
- Permission denied (403) handler.
-
- Templates: :template:`403.html`
- Context: None
-
- If the template does not exist, an Http403 response containing the text
- "403 Forbidden" (as per RFC 2616) will be returned.
- """
- try:
- template = loader.get_template(template_name)
- except TemplateDoesNotExist:
- return http.HttpResponseForbidden('<h1>403 Forbidden</h1>', content_type='text/html')
- return http.HttpResponseForbidden(template.render(RequestContext(request)))
-
-
-def shortcut(request, content_type_id, object_id):
- warnings.warn(
- "django.views.defaults.shortcut will be removed in Django 1.8. "
- "Import it from django.contrib.contenttypes.views instead.",
- PendingDeprecationWarning, stacklevel=2)
- from django.contrib.contenttypes.views import shortcut as real_shortcut
- return real_shortcut(request, content_type_id, object_id)
diff --git a/lib/python2.7/site-packages/django/views/generic/__init__.py b/lib/python2.7/site-packages/django/views/generic/__init__.py
deleted file mode 100644
index 1a98067..0000000
--- a/lib/python2.7/site-packages/django/views/generic/__init__.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from django.views.generic.base import View, TemplateView, RedirectView
-from django.views.generic.dates import (ArchiveIndexView, YearArchiveView, MonthArchiveView,
- WeekArchiveView, DayArchiveView, TodayArchiveView,
- DateDetailView)
-from django.views.generic.detail import DetailView
-from django.views.generic.edit import FormView, CreateView, UpdateView, DeleteView
-from django.views.generic.list import ListView
-
-
-class GenericViewError(Exception):
- """A problem in a generic view."""
- pass
diff --git a/lib/python2.7/site-packages/django/views/generic/base.py b/lib/python2.7/site-packages/django/views/generic/base.py
deleted file mode 100644
index 2487ccb..0000000
--- a/lib/python2.7/site-packages/django/views/generic/base.py
+++ /dev/null
@@ -1,219 +0,0 @@
-from __future__ import unicode_literals
-
-import logging
-from functools import update_wrapper
-
-from django import http
-from django.core.exceptions import ImproperlyConfigured
-from django.core.urlresolvers import reverse, NoReverseMatch
-from django.template.response import TemplateResponse
-from django.utils.decorators import classonlymethod
-from django.utils import six
-
-logger = logging.getLogger('django.request')
-
-
-class ContextMixin(object):
- """
- A default context mixin that passes the keyword arguments received by
- get_context_data as the template context.
- """
-
- def get_context_data(self, **kwargs):
- if 'view' not in kwargs:
- kwargs['view'] = self
- return kwargs
-
-
-class View(object):
- """
- Intentionally simple parent class for all views. Only implements
- dispatch-by-method and simple sanity checking.
- """
-
- http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']
-
- def __init__(self, **kwargs):
- """
- Constructor. Called in the URLconf; can contain helpful extra
- keyword arguments, and other things.
- """
- # Go through keyword arguments, and either save their values to our
- # instance, or raise an error.
- for key, value in six.iteritems(kwargs):
- setattr(self, key, value)
-
- @classonlymethod
- def as_view(cls, **initkwargs):
- """
- Main entry point for a request-response process.
- """
- # sanitize keyword arguments
- for key in initkwargs:
- if key in cls.http_method_names:
- raise TypeError("You tried to pass in the %s method name as a "
- "keyword argument to %s(). Don't do that."
- % (key, cls.__name__))
- if not hasattr(cls, key):
- raise TypeError("%s() received an invalid keyword %r. as_view "
- "only accepts arguments that are already "
- "attributes of the class." % (cls.__name__, key))
-
- def view(request, *args, **kwargs):
- self = cls(**initkwargs)
- if hasattr(self, 'get') and not hasattr(self, 'head'):
- self.head = self.get
- self.request = request
- self.args = args
- self.kwargs = kwargs
- return self.dispatch(request, *args, **kwargs)
-
- # take name and docstring from class
- update_wrapper(view, cls, updated=())
-
- # and possible attributes set by decorators
- # like csrf_exempt from dispatch
- update_wrapper(view, cls.dispatch, assigned=())
- return view
-
- def dispatch(self, request, *args, **kwargs):
- # Try to dispatch to the right method; if a method doesn't exist,
- # defer to the error handler. Also defer to the error handler if the
- # request method isn't on the approved list.
- if request.method.lower() in self.http_method_names:
- handler = getattr(self, request.method.lower(), self.http_method_not_allowed)
- else:
- handler = self.http_method_not_allowed
- return handler(request, *args, **kwargs)
-
- def http_method_not_allowed(self, request, *args, **kwargs):
- logger.warning('Method Not Allowed (%s): %s', request.method, request.path,
- extra={
- 'status_code': 405,
- 'request': self.request
- }
- )
- return http.HttpResponseNotAllowed(self._allowed_methods())
-
- def options(self, request, *args, **kwargs):
- """
- Handles responding to requests for the OPTIONS HTTP verb.
- """
- response = http.HttpResponse()
- response['Allow'] = ', '.join(self._allowed_methods())
- response['Content-Length'] = '0'
- return response
-
- def _allowed_methods(self):
- return [m.upper() for m in self.http_method_names if hasattr(self, m)]
-
-
-class TemplateResponseMixin(object):
- """
- A mixin that can be used to render a template.
- """
- template_name = None
- response_class = TemplateResponse
- content_type = None
-
- def render_to_response(self, context, **response_kwargs):
- """
- Returns a response, using the `response_class` for this
- view, with a template rendered with the given context.
-
- If any keyword arguments are provided, they will be
- passed to the constructor of the response class.
- """
- response_kwargs.setdefault('content_type', self.content_type)
- return self.response_class(
- request = self.request,
- template = self.get_template_names(),
- context = context,
- **response_kwargs
- )
-
- def get_template_names(self):
- """
- Returns a list of template names to be used for the request. Must return
- a list. May not be called if render_to_response is overridden.
- """
- if self.template_name is None:
- raise ImproperlyConfigured(
- "TemplateResponseMixin requires either a definition of "
- "'template_name' or an implementation of 'get_template_names()'")
- else:
- return [self.template_name]
-
-
-class TemplateView(TemplateResponseMixin, ContextMixin, View):
- """
- A view that renders a template. This view will also pass into the context
- any keyword arguments passed by the url conf.
- """
- def get(self, request, *args, **kwargs):
- context = self.get_context_data(**kwargs)
- return self.render_to_response(context)
-
-
-class RedirectView(View):
- """
- A view that provides a redirect on any GET request.
- """
- permanent = True
- url = None
- pattern_name = None
- query_string = False
-
- def get_redirect_url(self, *args, **kwargs):
- """
- Return the URL redirect to. Keyword arguments from the
- URL pattern match generating the redirect request
- are provided as kwargs to this method.
- """
- if self.url:
- url = self.url % kwargs
- elif self.pattern_name:
- try:
- url = reverse(self.pattern_name, args=args, kwargs=kwargs)
- except NoReverseMatch:
- return None
- else:
- return None
-
- args = self.request.META.get('QUERY_STRING', '')
- if args and self.query_string:
- url = "%s?%s" % (url, args)
- return url
-
- def get(self, request, *args, **kwargs):
- url = self.get_redirect_url(*args, **kwargs)
- if url:
- if self.permanent:
- return http.HttpResponsePermanentRedirect(url)
- else:
- return http.HttpResponseRedirect(url)
- else:
- logger.warning('Gone: %s', self.request.path,
- extra={
- 'status_code': 410,
- 'request': self.request
- })
- return http.HttpResponseGone()
-
- def head(self, request, *args, **kwargs):
- return self.get(request, *args, **kwargs)
-
- def post(self, request, *args, **kwargs):
- return self.get(request, *args, **kwargs)
-
- def options(self, request, *args, **kwargs):
- return self.get(request, *args, **kwargs)
-
- def delete(self, request, *args, **kwargs):
- return self.get(request, *args, **kwargs)
-
- def put(self, request, *args, **kwargs):
- return self.get(request, *args, **kwargs)
-
- def patch(self, request, *args, **kwargs):
- return self.get(request, *args, **kwargs)
diff --git a/lib/python2.7/site-packages/django/views/generic/dates.py b/lib/python2.7/site-packages/django/views/generic/dates.py
deleted file mode 100644
index 1b8ad3e..0000000
--- a/lib/python2.7/site-packages/django/views/generic/dates.py
+++ /dev/null
@@ -1,785 +0,0 @@
-from __future__ import unicode_literals
-
-import datetime
-from django.conf import settings
-from django.db import models
-from django.core.exceptions import ImproperlyConfigured
-from django.http import Http404
-from django.utils.encoding import force_str, force_text
-from django.utils.functional import cached_property
-from django.utils.translation import ugettext as _
-from django.utils import timezone
-from django.views.generic.base import View
-from django.views.generic.detail import BaseDetailView, SingleObjectTemplateResponseMixin
-from django.views.generic.list import MultipleObjectMixin, MultipleObjectTemplateResponseMixin
-
-class YearMixin(object):
- """
- Mixin for views manipulating year-based data.
- """
- year_format = '%Y'
- year = None
-
- def get_year_format(self):
- """
- Get a year format string in strptime syntax to be used to parse the
- year from url variables.
- """
- return self.year_format
-
- def get_year(self):
- """
- Return the year for which this view should display data.
- """
- year = self.year
- if year is None:
- try:
- year = self.kwargs['year']
- except KeyError:
- try:
- year = self.request.GET['year']
- except KeyError:
- raise Http404(_("No year specified"))
- return year
-
- def get_next_year(self, date):
- """
- Get the next valid year.
- """
- return _get_next_prev(self, date, is_previous=False, period='year')
-
- def get_previous_year(self, date):
- """
- Get the previous valid year.
- """
- return _get_next_prev(self, date, is_previous=True, period='year')
-
- def _get_next_year(self, date):
- """
- Return the start date of the next interval.
-
- The interval is defined by start date <= item date < next start date.
- """
- return date.replace(year=date.year + 1, month=1, day=1)
-
- def _get_current_year(self, date):
- """
- Return the start date of the current interval.
- """
- return date.replace(month=1, day=1)
-
-
-class MonthMixin(object):
- """
- Mixin for views manipulating month-based data.
- """
- month_format = '%b'
- month = None
-
- def get_month_format(self):
- """
- Get a month format string in strptime syntax to be used to parse the
- month from url variables.
- """
- return self.month_format
-
- def get_month(self):
- """
- Return the month for which this view should display data.
- """
- month = self.month
- if month is None:
- try:
- month = self.kwargs['month']
- except KeyError:
- try:
- month = self.request.GET['month']
- except KeyError:
- raise Http404(_("No month specified"))
- return month
-
- def get_next_month(self, date):
- """
- Get the next valid month.
- """
- return _get_next_prev(self, date, is_previous=False, period='month')
-
- def get_previous_month(self, date):
- """
- Get the previous valid month.
- """
- return _get_next_prev(self, date, is_previous=True, period='month')
-
- def _get_next_month(self, date):
- """
- Return the start date of the next interval.
-
- The interval is defined by start date <= item date < next start date.
- """
- if date.month == 12:
- return date.replace(year=date.year + 1, month=1, day=1)
- else:
- return date.replace(month=date.month + 1, day=1)
-
- def _get_current_month(self, date):
- """
- Return the start date of the previous interval.
- """
- return date.replace(day=1)
-
-
-class DayMixin(object):
- """
- Mixin for views manipulating day-based data.
- """
- day_format = '%d'
- day = None
-
- def get_day_format(self):
- """
- Get a day format string in strptime syntax to be used to parse the day
- from url variables.
- """
- return self.day_format
-
- def get_day(self):
- """
- Return the day for which this view should display data.
- """
- day = self.day
- if day is None:
- try:
- day = self.kwargs['day']
- except KeyError:
- try:
- day = self.request.GET['day']
- except KeyError:
- raise Http404(_("No day specified"))
- return day
-
- def get_next_day(self, date):
- """
- Get the next valid day.
- """
- return _get_next_prev(self, date, is_previous=False, period='day')
-
- def get_previous_day(self, date):
- """
- Get the previous valid day.
- """
- return _get_next_prev(self, date, is_previous=True, period='day')
-
- def _get_next_day(self, date):
- """
- Return the start date of the next interval.
-
- The interval is defined by start date <= item date < next start date.
- """
- return date + datetime.timedelta(days=1)
-
- def _get_current_day(self, date):
- """
- Return the start date of the current interval.
- """
- return date
-
-
-class WeekMixin(object):
- """
- Mixin for views manipulating week-based data.
- """
- week_format = '%U'
- week = None
-
- def get_week_format(self):
- """
- Get a week format string in strptime syntax to be used to parse the
- week from url variables.
- """
- return self.week_format
-
- def get_week(self):
- """
- Return the week for which this view should display data
- """
- week = self.week
- if week is None:
- try:
- week = self.kwargs['week']
- except KeyError:
- try:
- week = self.request.GET['week']
- except KeyError:
- raise Http404(_("No week specified"))
- return week
-
- def get_next_week(self, date):
- """
- Get the next valid week.
- """
- return _get_next_prev(self, date, is_previous=False, period='week')
-
- def get_previous_week(self, date):
- """
- Get the previous valid week.
- """
- return _get_next_prev(self, date, is_previous=True, period='week')
-
- def _get_next_week(self, date):
- """
- Return the start date of the next interval.
-
- The interval is defined by start date <= item date < next start date.
- """
- return date + datetime.timedelta(days=7 - self._get_weekday(date))
-
- def _get_current_week(self, date):
- """
- Return the start date of the current interval.
- """
- return date - datetime.timedelta(self._get_weekday(date))
-
- def _get_weekday(self, date):
- """
- Return the weekday for a given date.
-
- The first day according to the week format is 0 and the last day is 6.
- """
- week_format = self.get_week_format()
- if week_format == '%W': # week starts on Monday
- return date.weekday()
- elif week_format == '%U': # week starts on Sunday
- return (date.weekday() + 1) % 7
- else:
- raise ValueError("unknown week format: %s" % week_format)
-
-
-class DateMixin(object):
- """
- Mixin class for views manipulating date-based data.
- """
- date_field = None
- allow_future = False
-
- def get_date_field(self):
- """
- Get the name of the date field to be used to filter by.
- """
- if self.date_field is None:
- raise ImproperlyConfigured("%s.date_field is required." % self.__class__.__name__)
- return self.date_field
-
- def get_allow_future(self):
- """
- Returns `True` if the view should be allowed to display objects from
- the future.
- """
- return self.allow_future
-
- # Note: the following three methods only work in subclasses that also
- # inherit SingleObjectMixin or MultipleObjectMixin.
-
- @cached_property
- def uses_datetime_field(self):
- """
- Return `True` if the date field is a `DateTimeField` and `False`
- if it's a `DateField`.
- """
- model = self.get_queryset().model if self.model is None else self.model
- field = model._meta.get_field(self.get_date_field())
- return isinstance(field, models.DateTimeField)
-
- def _make_date_lookup_arg(self, value):
- """
- Convert a date into a datetime when the date field is a DateTimeField.
-
- When time zone support is enabled, `date` is assumed to be in the
- current time zone, so that displayed items are consistent with the URL.
- """
- if self.uses_datetime_field:
- value = datetime.datetime.combine(value, datetime.time.min)
- if settings.USE_TZ:
- value = timezone.make_aware(value, timezone.get_current_timezone())
- return value
-
- def _make_single_date_lookup(self, date):
- """
- Get the lookup kwargs for filtering on a single date.
-
- If the date field is a DateTimeField, we can't just filter on
- date_field=date because that doesn't take the time into account.
- """
- date_field = self.get_date_field()
- if self.uses_datetime_field:
- since = self._make_date_lookup_arg(date)
- until = self._make_date_lookup_arg(date + datetime.timedelta(days=1))
- return {
- '%s__gte' % date_field: since,
- '%s__lt' % date_field: until,
- }
- else:
- # Skip self._make_date_lookup_arg, it's a no-op in this branch.
- return {date_field: date}
-
-
-class BaseDateListView(MultipleObjectMixin, DateMixin, View):
- """
- Abstract base class for date-based views displaying a list of objects.
- """
- allow_empty = False
- date_list_period = 'year'
-
- def get(self, request, *args, **kwargs):
- self.date_list, self.object_list, extra_context = self.get_dated_items()
- context = self.get_context_data(object_list=self.object_list,
- date_list=self.date_list)
- context.update(extra_context)
- return self.render_to_response(context)
-
- def get_dated_items(self):
- """
- Obtain the list of dates and items.
- """
- raise NotImplementedError('A DateView must provide an implementation of get_dated_items()')
-
- def get_dated_queryset(self, ordering=None, **lookup):
- """
- Get a queryset properly filtered according to `allow_future` and any
- extra lookup kwargs.
- """
- qs = self.get_queryset().filter(**lookup)
- date_field = self.get_date_field()
- allow_future = self.get_allow_future()
- allow_empty = self.get_allow_empty()
- paginate_by = self.get_paginate_by(qs)
-
- if ordering is not None:
- qs = qs.order_by(ordering)
-
- if not allow_future:
- now = timezone.now() if self.uses_datetime_field else timezone_today()
- qs = qs.filter(**{'%s__lte' % date_field: now})
-
- if not allow_empty:
- # When pagination is enabled, it's better to do a cheap query
- # than to load the unpaginated queryset in memory.
- is_empty = len(qs) == 0 if paginate_by is None else not qs.exists()
- if is_empty:
- raise Http404(_("No %(verbose_name_plural)s available") % {
- 'verbose_name_plural': force_text(qs.model._meta.verbose_name_plural)
- })
-
- return qs
-
- def get_date_list_period(self):
- """
- Get the aggregation period for the list of dates: 'year', 'month', or 'day'.
- """
- return self.date_list_period
-
- def get_date_list(self, queryset, date_type=None, ordering='ASC'):
- """
- Get a date list by calling `queryset.dates/datetimes()`, checking
- along the way for empty lists that aren't allowed.
- """
- date_field = self.get_date_field()
- allow_empty = self.get_allow_empty()
- if date_type is None:
- date_type = self.get_date_list_period()
-
- if self.uses_datetime_field:
- date_list = queryset.datetimes(date_field, date_type, ordering)
- else:
- date_list = queryset.dates(date_field, date_type, ordering)
- if date_list is not None and not date_list and not allow_empty:
- name = force_text(queryset.model._meta.verbose_name_plural)
- raise Http404(_("No %(verbose_name_plural)s available") %
- {'verbose_name_plural': name})
-
- return date_list
-
-
-class BaseArchiveIndexView(BaseDateListView):
- """
- Base class for archives of date-based items.
-
- Requires a response mixin.
- """
- context_object_name = 'latest'
-
- def get_dated_items(self):
- """
- Return (date_list, items, extra_context) for this request.
- """
- qs = self.get_dated_queryset(ordering='-%s' % self.get_date_field())
- date_list = self.get_date_list(qs, ordering='DESC')
-
- if not date_list:
- qs = qs.none()
-
- return (date_list, qs, {})
-
-
-class ArchiveIndexView(MultipleObjectTemplateResponseMixin, BaseArchiveIndexView):
- """
- Top-level archive of date-based items.
- """
- template_name_suffix = '_archive'
-
-
-class BaseYearArchiveView(YearMixin, BaseDateListView):
- """
- List of objects published in a given year.
- """
- date_list_period = 'month'
- make_object_list = False
-
- def get_dated_items(self):
- """
- Return (date_list, items, extra_context) for this request.
- """
- year = self.get_year()
-
- date_field = self.get_date_field()
- date = _date_from_string(year, self.get_year_format())
-
- since = self._make_date_lookup_arg(date)
- until = self._make_date_lookup_arg(self._get_next_year(date))
- lookup_kwargs = {
- '%s__gte' % date_field: since,
- '%s__lt' % date_field: until,
- }
-
- qs = self.get_dated_queryset(ordering='-%s' % date_field, **lookup_kwargs)
- date_list = self.get_date_list(qs)
-
- if not self.get_make_object_list():
- # We need this to be a queryset since parent classes introspect it
- # to find information about the model.
- qs = qs.none()
-
- return (date_list, qs, {
- 'year': date,
- 'next_year': self.get_next_year(date),
- 'previous_year': self.get_previous_year(date),
- })
-
- def get_make_object_list(self):
- """
- Return `True` if this view should contain the full list of objects in
- the given year.
- """
- return self.make_object_list
-
-
-class YearArchiveView(MultipleObjectTemplateResponseMixin, BaseYearArchiveView):
- """
- List of objects published in a given year.
- """
- template_name_suffix = '_archive_year'
-
-
-class BaseMonthArchiveView(YearMixin, MonthMixin, BaseDateListView):
- """
- List of objects published in a given month.
- """
- date_list_period = 'day'
-
- def get_dated_items(self):
- """
- Return (date_list, items, extra_context) for this request.
- """
- year = self.get_year()
- month = self.get_month()
-
- date_field = self.get_date_field()
- date = _date_from_string(year, self.get_year_format(),
- month, self.get_month_format())
-
- since = self._make_date_lookup_arg(date)
- until = self._make_date_lookup_arg(self._get_next_month(date))
- lookup_kwargs = {
- '%s__gte' % date_field: since,
- '%s__lt' % date_field: until,
- }
-
- qs = self.get_dated_queryset(**lookup_kwargs)
- date_list = self.get_date_list(qs)
-
- return (date_list, qs, {
- 'month': date,
- 'next_month': self.get_next_month(date),
- 'previous_month': self.get_previous_month(date),
- })
-
-
-class MonthArchiveView(MultipleObjectTemplateResponseMixin, BaseMonthArchiveView):
- """
- List of objects published in a given month.
- """
- template_name_suffix = '_archive_month'
-
-
-class BaseWeekArchiveView(YearMixin, WeekMixin, BaseDateListView):
- """
- List of objects published in a given week.
- """
-
- def get_dated_items(self):
- """
- Return (date_list, items, extra_context) for this request.
- """
- year = self.get_year()
- week = self.get_week()
-
- date_field = self.get_date_field()
- week_format = self.get_week_format()
- week_start = {
- '%W': '1',
- '%U': '0',
- }[week_format]
- date = _date_from_string(year, self.get_year_format(),
- week_start, '%w',
- week, week_format)
-
- since = self._make_date_lookup_arg(date)
- until = self._make_date_lookup_arg(self._get_next_week(date))
- lookup_kwargs = {
- '%s__gte' % date_field: since,
- '%s__lt' % date_field: until,
- }
-
- qs = self.get_dated_queryset(**lookup_kwargs)
-
- return (None, qs, {
- 'week': date,
- 'next_week': self.get_next_week(date),
- 'previous_week': self.get_previous_week(date),
- })
-
-
-class WeekArchiveView(MultipleObjectTemplateResponseMixin, BaseWeekArchiveView):
- """
- List of objects published in a given week.
- """
- template_name_suffix = '_archive_week'
-
-
-class BaseDayArchiveView(YearMixin, MonthMixin, DayMixin, BaseDateListView):
- """
- List of objects published on a given day.
- """
- def get_dated_items(self):
- """
- Return (date_list, items, extra_context) for this request.
- """
- year = self.get_year()
- month = self.get_month()
- day = self.get_day()
-
- date = _date_from_string(year, self.get_year_format(),
- month, self.get_month_format(),
- day, self.get_day_format())
-
- return self._get_dated_items(date)
-
- def _get_dated_items(self, date):
- """
- Do the actual heavy lifting of getting the dated items; this accepts a
- date object so that TodayArchiveView can be trivial.
- """
- lookup_kwargs = self._make_single_date_lookup(date)
- qs = self.get_dated_queryset(**lookup_kwargs)
-
- return (None, qs, {
- 'day': date,
- 'previous_day': self.get_previous_day(date),
- 'next_day': self.get_next_day(date),
- 'previous_month': self.get_previous_month(date),
- 'next_month': self.get_next_month(date)
- })
-
-
-class DayArchiveView(MultipleObjectTemplateResponseMixin, BaseDayArchiveView):
- """
- List of objects published on a given day.
- """
- template_name_suffix = "_archive_day"
-
-
-class BaseTodayArchiveView(BaseDayArchiveView):
- """
- List of objects published today.
- """
-
- def get_dated_items(self):
- """
- Return (date_list, items, extra_context) for this request.
- """
- return self._get_dated_items(datetime.date.today())
-
-
-class TodayArchiveView(MultipleObjectTemplateResponseMixin, BaseTodayArchiveView):
- """
- List of objects published today.
- """
- template_name_suffix = "_archive_day"
-
-
-class BaseDateDetailView(YearMixin, MonthMixin, DayMixin, DateMixin, BaseDetailView):
- """
- Detail view of a single object on a single date; this differs from the
- standard DetailView by accepting a year/month/day in the URL.
- """
- def get_object(self, queryset=None):
- """
- Get the object this request displays.
- """
- year = self.get_year()
- month = self.get_month()
- day = self.get_day()
- date = _date_from_string(year, self.get_year_format(),
- month, self.get_month_format(),
- day, self.get_day_format())
-
- # Use a custom queryset if provided
- qs = queryset or self.get_queryset()
-
- if not self.get_allow_future() and date > datetime.date.today():
- raise Http404(_("Future %(verbose_name_plural)s not available because %(class_name)s.allow_future is False.") % {
- 'verbose_name_plural': qs.model._meta.verbose_name_plural,
- 'class_name': self.__class__.__name__,
- })
-
- # Filter down a queryset from self.queryset using the date from the
- # URL. This'll get passed as the queryset to DetailView.get_object,
- # which'll handle the 404
- lookup_kwargs = self._make_single_date_lookup(date)
- qs = qs.filter(**lookup_kwargs)
-
- return super(BaseDetailView, self).get_object(queryset=qs)
-
-
-class DateDetailView(SingleObjectTemplateResponseMixin, BaseDateDetailView):
- """
- Detail view of a single object on a single date; this differs from the
- standard DetailView by accepting a year/month/day in the URL.
- """
- template_name_suffix = '_detail'
-
-
-def _date_from_string(year, year_format, month='', month_format='', day='', day_format='', delim='__'):
- """
- Helper: get a datetime.date object given a format string and a year,
- month, and day (only year is mandatory). Raise a 404 for an invalid date.
- """
- format = delim.join((year_format, month_format, day_format))
- datestr = delim.join((year, month, day))
- try:
- return datetime.datetime.strptime(force_str(datestr), format).date()
- except ValueError:
- raise Http404(_("Invalid date string '%(datestr)s' given format '%(format)s'") % {
- 'datestr': datestr,
- 'format': format,
- })
-
-
-def _get_next_prev(generic_view, date, is_previous, period):
- """
- Helper: Get the next or the previous valid date. The idea is to allow
- links on month/day views to never be 404s by never providing a date
- that'll be invalid for the given view.
-
- This is a bit complicated since it handles different intervals of time,
- hence the coupling to generic_view.
-
- However in essence the logic comes down to:
-
- * If allow_empty and allow_future are both true, this is easy: just
- return the naive result (just the next/previous day/week/month,
- reguardless of object existence.)
-
- * If allow_empty is true, allow_future is false, and the naive result
- isn't in the future, then return it; otherwise return None.
-
- * If allow_empty is false and allow_future is true, return the next
- date *that contains a valid object*, even if it's in the future. If
- there are no next objects, return None.
-
- * If allow_empty is false and allow_future is false, return the next
- date that contains a valid object. If that date is in the future, or
- if there are no next objects, return None.
-
- """
- date_field = generic_view.get_date_field()
- allow_empty = generic_view.get_allow_empty()
- allow_future = generic_view.get_allow_future()
-
- get_current = getattr(generic_view, '_get_current_%s' % period)
- get_next = getattr(generic_view, '_get_next_%s' % period)
-
- # Bounds of the current interval
- start, end = get_current(date), get_next(date)
-
- # If allow_empty is True, the naive result will be valid
- if allow_empty:
- if is_previous:
- result = get_current(start - datetime.timedelta(days=1))
- else:
- result = end
-
- if allow_future or result <= timezone_today():
- return result
- else:
- return None
-
- # Otherwise, we'll need to go to the database to look for an object
- # whose date_field is at least (greater than/less than) the given
- # naive result
- else:
- # Construct a lookup and an ordering depending on whether we're doing
- # a previous date or a next date lookup.
- if is_previous:
- lookup = {'%s__lt' % date_field: generic_view._make_date_lookup_arg(start)}
- ordering = '-%s' % date_field
- else:
- lookup = {'%s__gte' % date_field: generic_view._make_date_lookup_arg(end)}
- ordering = date_field
-
- # Filter out objects in the future if appropriate.
- if not allow_future:
- # Fortunately, to match the implementation of allow_future,
- # we need __lte, which doesn't conflict with __lt above.
- if generic_view.uses_datetime_field:
- now = timezone.now()
- else:
- now = timezone_today()
- lookup['%s__lte' % date_field] = now
-
- qs = generic_view.get_queryset().filter(**lookup).order_by(ordering)
-
- # Snag the first object from the queryset; if it doesn't exist that
- # means there's no next/previous link available.
- try:
- result = getattr(qs[0], date_field)
- except IndexError:
- return None
-
- # Convert datetimes to dates in the current time zone.
- if generic_view.uses_datetime_field:
- if settings.USE_TZ:
- result = timezone.localtime(result)
- result = result.date()
-
- # Return the first day of the period.
- return get_current(result)
-
-
-def timezone_today():
- """
- Return the current date in the current time zone.
- """
- if settings.USE_TZ:
- return timezone.localtime(timezone.now()).date()
- else:
- return datetime.date.today()
diff --git a/lib/python2.7/site-packages/django/views/generic/detail.py b/lib/python2.7/site-packages/django/views/generic/detail.py
deleted file mode 100644
index 180da30..0000000
--- a/lib/python2.7/site-packages/django/views/generic/detail.py
+++ /dev/null
@@ -1,173 +0,0 @@
-from __future__ import unicode_literals
-
-from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist
-from django.db import models
-from django.http import Http404
-from django.utils.translation import ugettext as _
-from django.views.generic.base import TemplateResponseMixin, ContextMixin, View
-
-
-class SingleObjectMixin(ContextMixin):
- """
- Provides the ability to retrieve a single object for further manipulation.
- """
- model = None
- queryset = None
- slug_field = 'slug'
- context_object_name = None
- slug_url_kwarg = 'slug'
- pk_url_kwarg = 'pk'
-
- def get_object(self, queryset=None):
- """
- Returns the object the view is displaying.
-
- By default this requires `self.queryset` and a `pk` or `slug` argument
- in the URLconf, but subclasses can override this to return any object.
- """
- # Use a custom queryset if provided; this is required for subclasses
- # like DateDetailView
- if queryset is None:
- queryset = self.get_queryset()
-
- # Next, try looking up by primary key.
- pk = self.kwargs.get(self.pk_url_kwarg, None)
- slug = self.kwargs.get(self.slug_url_kwarg, None)
- if pk is not None:
- queryset = queryset.filter(pk=pk)
-
- # Next, try looking up by slug.
- elif slug is not None:
- slug_field = self.get_slug_field()
- queryset = queryset.filter(**{slug_field: slug})
-
- # If none of those are defined, it's an error.
- else:
- raise AttributeError("Generic detail view %s must be called with "
- "either an object pk or a slug."
- % self.__class__.__name__)
-
- try:
- # Get the single item from the filtered queryset
- obj = queryset.get()
- except ObjectDoesNotExist:
- raise Http404(_("No %(verbose_name)s found matching the query") %
- {'verbose_name': queryset.model._meta.verbose_name})
- return obj
-
- def get_queryset(self):
- """
- Get the queryset to look an object up against. May not be called if
- `get_object` is overridden.
- """
- if self.queryset is None:
- if self.model:
- return self.model._default_manager.all()
- else:
- raise ImproperlyConfigured("%(cls)s is missing a queryset. Define "
- "%(cls)s.model, %(cls)s.queryset, or override "
- "%(cls)s.get_queryset()." % {
- 'cls': self.__class__.__name__
- })
- return self.queryset._clone()
-
- def get_slug_field(self):
- """
- Get the name of a slug field to be used to look up by slug.
- """
- return self.slug_field
-
- def get_context_object_name(self, obj):
- """
- Get the name to use for the object.
- """
- if self.context_object_name:
- return self.context_object_name
- elif isinstance(obj, models.Model):
- return obj._meta.model_name
- else:
- return None
-
- def get_context_data(self, **kwargs):
- """
- Insert the single object into the context dict.
- """
- context = {}
- if self.object:
- context['object'] = self.object
- context_object_name = self.get_context_object_name(self.object)
- if context_object_name:
- context[context_object_name] = self.object
- context.update(kwargs)
- return super(SingleObjectMixin, self).get_context_data(**context)
-
-
-class BaseDetailView(SingleObjectMixin, View):
- """
- A base view for displaying a single object
- """
- def get(self, request, *args, **kwargs):
- self.object = self.get_object()
- context = self.get_context_data(object=self.object)
- return self.render_to_response(context)
-
-
-class SingleObjectTemplateResponseMixin(TemplateResponseMixin):
- template_name_field = None
- template_name_suffix = '_detail'
-
- def get_template_names(self):
- """
- Return a list of template names to be used for the request. May not be
- called if render_to_response is overridden. Returns the following list:
-
- * the value of ``template_name`` on the view (if provided)
- * the contents of the ``template_name_field`` field on the
- object instance that the view is operating upon (if available)
- * ``<app_label>/<model_name><template_name_suffix>.html``
- """
- try:
- names = super(SingleObjectTemplateResponseMixin, self).get_template_names()
- except ImproperlyConfigured:
- # If template_name isn't specified, it's not a problem --
- # we just start with an empty list.
- names = []
-
- # If self.template_name_field is set, grab the value of the field
- # of that name from the object; this is the most specific template
- # name, if given.
- if self.object and self.template_name_field:
- name = getattr(self.object, self.template_name_field, None)
- if name:
- names.insert(0, name)
-
- # The least-specific option is the default <app>/<model>_detail.html;
- # only use this if the object in question is a model.
- if isinstance(self.object, models.Model):
- names.append("%s/%s%s.html" % (
- self.object._meta.app_label,
- self.object._meta.model_name,
- self.template_name_suffix
- ))
- elif hasattr(self, 'model') and self.model is not None and issubclass(self.model, models.Model):
- names.append("%s/%s%s.html" % (
- self.model._meta.app_label,
- self.model._meta.model_name,
- self.template_name_suffix
- ))
-
- # If we still haven't managed to find any template names, we should
- # re-raise the ImproperlyConfigured to alert the user.
- if not names:
- raise
-
- return names
-
-
-class DetailView(SingleObjectTemplateResponseMixin, BaseDetailView):
- """
- Render a "detail" view of an object.
-
- By default this is a model instance looked up from `self.queryset`, but the
- view will support display of *any* object by overriding `self.get_object()`.
- """
diff --git a/lib/python2.7/site-packages/django/views/generic/edit.py b/lib/python2.7/site-packages/django/views/generic/edit.py
deleted file mode 100644
index fccacf0..0000000
--- a/lib/python2.7/site-packages/django/views/generic/edit.py
+++ /dev/null
@@ -1,280 +0,0 @@
-import warnings
-
-from django.forms import models as model_forms
-from django.core.exceptions import ImproperlyConfigured
-from django.http import HttpResponseRedirect
-from django.utils.encoding import force_text
-from django.views.generic.base import TemplateResponseMixin, ContextMixin, View
-from django.views.generic.detail import (SingleObjectMixin,
- SingleObjectTemplateResponseMixin, BaseDetailView)
-
-
-class FormMixin(ContextMixin):
- """
- A mixin that provides a way to show and handle a form in a request.
- """
-
- initial = {}
- form_class = None
- success_url = None
- prefix = None
-
- def get_initial(self):
- """
- Returns the initial data to use for forms on this view.
- """
- return self.initial.copy()
-
- def get_prefix(self):
- """
- Returns the prefix to use for forms on this view
- """
- return self.prefix
-
- def get_form_class(self):
- """
- Returns the form class to use in this view
- """
- return self.form_class
-
- def get_form(self, form_class):
- """
- Returns an instance of the form to be used in this view.
- """
- return form_class(**self.get_form_kwargs())
-
- def get_form_kwargs(self):
- """
- Returns the keyword arguments for instantiating the form.
- """
- kwargs = {
- 'initial': self.get_initial(),
- 'prefix': self.get_prefix(),
- }
-
- if self.request.method in ('POST', 'PUT'):
- kwargs.update({
- 'data': self.request.POST,
- 'files': self.request.FILES,
- })
- return kwargs
-
- def get_success_url(self):
- """
- Returns the supplied success URL.
- """
- if self.success_url:
- # Forcing possible reverse_lazy evaluation
- url = force_text(self.success_url)
- else:
- raise ImproperlyConfigured(
- "No URL to redirect to. Provide a success_url.")
- return url
-
- def form_valid(self, form):
- """
- If the form is valid, redirect to the supplied URL.
- """
- return HttpResponseRedirect(self.get_success_url())
-
- def form_invalid(self, form):
- """
- If the form is invalid, re-render the context data with the
- data-filled form and errors.
- """
- return self.render_to_response(self.get_context_data(form=form))
-
-
-class ModelFormMixin(FormMixin, SingleObjectMixin):
- """
- A mixin that provides a way to show and handle a modelform in a request.
- """
- fields = None
-
- def get_form_class(self):
- """
- Returns the form class to use in this view.
- """
- if self.form_class:
- return self.form_class
- else:
- if self.model is not None:
- # If a model has been explicitly provided, use it
- model = self.model
- elif hasattr(self, 'object') and self.object is not None:
- # If this view is operating on a single object, use
- # the class of that object
- model = self.object.__class__
- else:
- # Try to get a queryset and extract the model class
- # from that
- model = self.get_queryset().model
-
- if self.fields is None:
- warnings.warn("Using ModelFormMixin (base class of %s) without "
- "the 'fields' attribute is deprecated." % self.__class__.__name__,
- PendingDeprecationWarning)
-
- return model_forms.modelform_factory(model, fields=self.fields)
-
- def get_form_kwargs(self):
- """
- Returns the keyword arguments for instantiating the form.
- """
- kwargs = super(ModelFormMixin, self).get_form_kwargs()
- kwargs.update({'instance': self.object})
- return kwargs
-
- def get_success_url(self):
- """
- Returns the supplied URL.
- """
- if self.success_url:
- url = self.success_url % self.object.__dict__
- else:
- try:
- url = self.object.get_absolute_url()
- except AttributeError:
- raise ImproperlyConfigured(
- "No URL to redirect to. Either provide a url or define"
- " a get_absolute_url method on the Model.")
- return url
-
- def form_valid(self, form):
- """
- If the form is valid, save the associated model.
- """
- self.object = form.save()
- return super(ModelFormMixin, self).form_valid(form)
-
-
-class ProcessFormView(View):
- """
- A mixin that renders a form on GET and processes it on POST.
- """
- def get(self, request, *args, **kwargs):
- """
- Handles GET requests and instantiates a blank version of the form.
- """
- form_class = self.get_form_class()
- form = self.get_form(form_class)
- return self.render_to_response(self.get_context_data(form=form))
-
- def post(self, request, *args, **kwargs):
- """
- Handles POST requests, instantiating a form instance with the passed
- POST variables and then checked for validity.
- """
- form_class = self.get_form_class()
- form = self.get_form(form_class)
- if form.is_valid():
- return self.form_valid(form)
- else:
- return self.form_invalid(form)
-
- # PUT is a valid HTTP verb for creating (with a known URL) or editing an
- # object, note that browsers only support POST for now.
- def put(self, *args, **kwargs):
- return self.post(*args, **kwargs)
-
-
-class BaseFormView(FormMixin, ProcessFormView):
- """
- A base view for displaying a form
- """
-
-
-class FormView(TemplateResponseMixin, BaseFormView):
- """
- A view for displaying a form, and rendering a template response.
- """
-
-
-class BaseCreateView(ModelFormMixin, ProcessFormView):
- """
- Base view for creating an new object instance.
-
- Using this base class requires subclassing to provide a response mixin.
- """
- def get(self, request, *args, **kwargs):
- self.object = None
- return super(BaseCreateView, self).get(request, *args, **kwargs)
-
- def post(self, request, *args, **kwargs):
- self.object = None
- return super(BaseCreateView, self).post(request, *args, **kwargs)
-
-
-class CreateView(SingleObjectTemplateResponseMixin, BaseCreateView):
- """
- View for creating a new object instance,
- with a response rendered by template.
- """
- template_name_suffix = '_form'
-
-
-class BaseUpdateView(ModelFormMixin, ProcessFormView):
- """
- Base view for updating an existing object.
-
- Using this base class requires subclassing to provide a response mixin.
- """
- def get(self, request, *args, **kwargs):
- self.object = self.get_object()
- return super(BaseUpdateView, self).get(request, *args, **kwargs)
-
- def post(self, request, *args, **kwargs):
- self.object = self.get_object()
- return super(BaseUpdateView, self).post(request, *args, **kwargs)
-
-
-class UpdateView(SingleObjectTemplateResponseMixin, BaseUpdateView):
- """
- View for updating an object,
- with a response rendered by template.
- """
- template_name_suffix = '_form'
-
-
-class DeletionMixin(object):
- """
- A mixin providing the ability to delete objects
- """
- success_url = None
-
- def delete(self, request, *args, **kwargs):
- """
- Calls the delete() method on the fetched object and then
- redirects to the success URL.
- """
- self.object = self.get_object()
- success_url = self.get_success_url()
- self.object.delete()
- return HttpResponseRedirect(success_url)
-
- # Add support for browsers which only accept GET and POST for now.
- def post(self, request, *args, **kwargs):
- return self.delete(request, *args, **kwargs)
-
- def get_success_url(self):
- if self.success_url:
- return self.success_url % self.object.__dict__
- else:
- raise ImproperlyConfigured(
- "No URL to redirect to. Provide a success_url.")
-
-
-class BaseDeleteView(DeletionMixin, BaseDetailView):
- """
- Base view for deleting an object.
-
- Using this base class requires subclassing to provide a response mixin.
- """
-
-
-class DeleteView(SingleObjectTemplateResponseMixin, BaseDeleteView):
- """
- View for deleting an object retrieved with `self.get_object()`,
- with a response rendered by template.
- """
- template_name_suffix = '_confirm_delete'
diff --git a/lib/python2.7/site-packages/django/views/generic/list.py b/lib/python2.7/site-packages/django/views/generic/list.py
deleted file mode 100644
index 1aff345..0000000
--- a/lib/python2.7/site-packages/django/views/generic/list.py
+++ /dev/null
@@ -1,189 +0,0 @@
-from __future__ import unicode_literals
-
-from django.core.paginator import Paginator, InvalidPage
-from django.core.exceptions import ImproperlyConfigured
-from django.http import Http404
-from django.utils.translation import ugettext as _
-from django.views.generic.base import TemplateResponseMixin, ContextMixin, View
-
-
-class MultipleObjectMixin(ContextMixin):
- """
- A mixin for views manipulating multiple objects.
- """
- allow_empty = True
- queryset = None
- model = None
- paginate_by = None
- paginate_orphans = 0
- context_object_name = None
- paginator_class = Paginator
- page_kwarg = 'page'
-
- def get_queryset(self):
- """
- Get the list of items for this view. This must be an iterable, and may
- be a queryset (in which qs-specific behavior will be enabled).
- """
- if self.queryset is not None:
- queryset = self.queryset
- if hasattr(queryset, '_clone'):
- queryset = queryset._clone()
- elif self.model is not None:
- queryset = self.model._default_manager.all()
- else:
- raise ImproperlyConfigured("'%s' must define 'queryset' or 'model'"
- % self.__class__.__name__)
- return queryset
-
- def paginate_queryset(self, queryset, page_size):
- """
- Paginate the queryset, if needed.
- """
- paginator = self.get_paginator(
- queryset, page_size, orphans=self.get_paginate_orphans(),
- allow_empty_first_page=self.get_allow_empty())
- page_kwarg = self.page_kwarg
- page = self.kwargs.get(page_kwarg) or self.request.GET.get(page_kwarg) or 1
- try:
- page_number = int(page)
- except ValueError:
- if page == 'last':
- page_number = paginator.num_pages
- else:
- raise Http404(_("Page is not 'last', nor can it be converted to an int."))
- try:
- page = paginator.page(page_number)
- return (paginator, page, page.object_list, page.has_other_pages())
- except InvalidPage as e:
- raise Http404(_('Invalid page (%(page_number)s): %(message)s') % {
- 'page_number': page_number,
- 'message': str(e)
- })
-
- def get_paginate_by(self, queryset):
- """
- Get the number of items to paginate by, or ``None`` for no pagination.
- """
- return self.paginate_by
-
- def get_paginator(self, queryset, per_page, orphans=0,
- allow_empty_first_page=True, **kwargs):
- """
- Return an instance of the paginator for this view.
- """
- return self.paginator_class(
- queryset, per_page, orphans=orphans,
- allow_empty_first_page=allow_empty_first_page, **kwargs)
-
- def get_paginate_orphans(self):
- """
- Returns the maximum number of orphans extend the last page by when
- paginating.
- """
- return self.paginate_orphans
-
- def get_allow_empty(self):
- """
- Returns ``True`` if the view should display empty lists, and ``False``
- if a 404 should be raised instead.
- """
- return self.allow_empty
-
- def get_context_object_name(self, object_list):
- """
- Get the name of the item to be used in the context.
- """
- if self.context_object_name:
- return self.context_object_name
- elif hasattr(object_list, 'model'):
- return '%s_list' % object_list.model._meta.model_name
- else:
- return None
-
- def get_context_data(self, **kwargs):
- """
- Get the context for this view.
- """
- queryset = kwargs.pop('object_list', self.object_list)
- page_size = self.get_paginate_by(queryset)
- context_object_name = self.get_context_object_name(queryset)
- if page_size:
- paginator, page, queryset, is_paginated = self.paginate_queryset(queryset, page_size)
- context = {
- 'paginator': paginator,
- 'page_obj': page,
- 'is_paginated': is_paginated,
- 'object_list': queryset
- }
- else:
- context = {
- 'paginator': None,
- 'page_obj': None,
- 'is_paginated': False,
- 'object_list': queryset
- }
- if context_object_name is not None:
- context[context_object_name] = queryset
- context.update(kwargs)
- return super(MultipleObjectMixin, self).get_context_data(**context)
-
-
-class BaseListView(MultipleObjectMixin, View):
- """
- A base view for displaying a list of objects.
- """
- def get(self, request, *args, **kwargs):
- self.object_list = self.get_queryset()
- allow_empty = self.get_allow_empty()
-
- if not allow_empty:
- # When pagination is enabled and object_list is a queryset,
- # it's better to do a cheap query than to load the unpaginated
- # queryset in memory.
- if (self.get_paginate_by(self.object_list) is not None
- and hasattr(self.object_list, 'exists')):
- is_empty = not self.object_list.exists()
- else:
- is_empty = len(self.object_list) == 0
- if is_empty:
- raise Http404(_("Empty list and '%(class_name)s.allow_empty' is False.")
- % {'class_name': self.__class__.__name__})
- context = self.get_context_data()
- return self.render_to_response(context)
-
-
-class MultipleObjectTemplateResponseMixin(TemplateResponseMixin):
- """
- Mixin for responding with a template and list of objects.
- """
- template_name_suffix = '_list'
-
- def get_template_names(self):
- """
- Return a list of template names to be used for the request. Must return
- a list. May not be called if render_to_response is overridden.
- """
- try:
- names = super(MultipleObjectTemplateResponseMixin, self).get_template_names()
- except ImproperlyConfigured:
- # If template_name isn't specified, it's not a problem --
- # we just start with an empty list.
- names = []
-
- # If the list is a queryset, we'll invent a template name based on the
- # app and model name. This name gets put at the end of the template
- # name list so that user-supplied names override the automatically-
- # generated ones.
- if hasattr(self.object_list, 'model'):
- opts = self.object_list.model._meta
- names.append("%s/%s%s.html" % (opts.app_label, opts.model_name, self.template_name_suffix))
-
- return names
-
-
-class ListView(MultipleObjectTemplateResponseMixin, BaseListView):
- """
- Render some list of objects, set by `self.model` or `self.queryset`.
- `self.queryset` can actually be any iterable of items, not just a queryset.
- """
diff --git a/lib/python2.7/site-packages/django/views/i18n.py b/lib/python2.7/site-packages/django/views/i18n.py
deleted file mode 100644
index f854447..0000000
--- a/lib/python2.7/site-packages/django/views/i18n.py
+++ /dev/null
@@ -1,305 +0,0 @@
-import json
-import os
-import gettext as gettext_module
-
-from django import http
-from django.conf import settings
-from django.template import Context, Template
-from django.utils import importlib
-from django.utils.translation import check_for_language, to_locale, get_language
-from django.utils.encoding import smart_text
-from django.utils.formats import get_format_modules, get_format
-from django.utils._os import upath
-from django.utils.http import is_safe_url
-from django.utils import six
-
-def set_language(request):
- """
- Redirect to a given url while setting the chosen language in the
- session or cookie. The url and the language code need to be
- specified in the request parameters.
-
- Since this view changes how the user will see the rest of the site, it must
- only be accessed as a POST request. If called as a GET request, it will
- redirect to the page in the request (the 'next' parameter) without changing
- any state.
- """
- next = request.REQUEST.get('next')
- if not is_safe_url(url=next, host=request.get_host()):
- next = request.META.get('HTTP_REFERER')
- if not is_safe_url(url=next, host=request.get_host()):
- next = '/'
- response = http.HttpResponseRedirect(next)
- if request.method == 'POST':
- lang_code = request.POST.get('language', None)
- if lang_code and check_for_language(lang_code):
- if hasattr(request, 'session'):
- request.session['django_language'] = lang_code
- else:
- response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang_code)
- return response
-
-
-def get_formats():
- """
- Returns all formats strings required for i18n to work
- """
- FORMAT_SETTINGS = (
- 'DATE_FORMAT', 'DATETIME_FORMAT', 'TIME_FORMAT',
- 'YEAR_MONTH_FORMAT', 'MONTH_DAY_FORMAT', 'SHORT_DATE_FORMAT',
- 'SHORT_DATETIME_FORMAT', 'FIRST_DAY_OF_WEEK', 'DECIMAL_SEPARATOR',
- 'THOUSAND_SEPARATOR', 'NUMBER_GROUPING',
- 'DATE_INPUT_FORMATS', 'TIME_INPUT_FORMATS', 'DATETIME_INPUT_FORMATS'
- )
- result = {}
- for module in [settings] + get_format_modules(reverse=True):
- for attr in FORMAT_SETTINGS:
- result[attr] = get_format(attr)
- formats = {}
- for k, v in result.items():
- if isinstance(v, (six.string_types, int)):
- formats[k] = smart_text(v)
- elif isinstance(v, (tuple, list)):
- formats[k] = [smart_text(value) for value in v]
- return formats
-
-
-js_catalog_template = r"""
-{% autoescape off %}
-(function (globals) {
-
- var django = globals.django || (globals.django = {});
-
- {% if plural %}
- django.pluralidx = function (n) {
- var v={{ plural }};
- if (typeof(v) == 'boolean') {
- return v ? 1 : 0;
- } else {
- return v;
- }
- };
- {% else %}
- django.pluralidx = function (count) { return (count == 1) ? 0 : 1; };
- {% endif %}
-
- {% if catalog_str %}
- /* gettext library */
-
- django.catalog = {{ catalog_str }};
-
- django.gettext = function (msgid) {
- var value = django.catalog[msgid];
- if (typeof(value) == 'undefined') {
- return msgid;
- } else {
- return (typeof(value) == 'string') ? value : value[0];
- }
- };
-
- django.ngettext = function (singular, plural, count) {
- var value = django.catalog[singular];
- if (typeof(value) == 'undefined') {
- return (count == 1) ? singular : plural;
- } else {
- return value[django.pluralidx(count)];
- }
- };
-
- django.gettext_noop = function (msgid) { return msgid; };
-
- django.pgettext = function (context, msgid) {
- var value = django.gettext(context + '\x04' + msgid);
- if (value.indexOf('\x04') != -1) {
- value = msgid;
- }
- return value;
- };
-
- django.npgettext = function (context, singular, plural, count) {
- var value = django.ngettext(context + '\x04' + singular, context + '\x04' + plural, count);
- if (value.indexOf('\x04') != -1) {
- value = django.ngettext(singular, plural, count);
- }
- return value;
- };
- {% else %}
- /* gettext identity library */
-
- django.gettext = function (msgid) { return msgid; };
- django.ngettext = function (singular, plural, count) { return (count == 1) ? singular : plural; };
- django.gettext_noop = function (msgid) { return msgid; };
- django.pgettext = function (context, msgid) { return msgid; };
- django.npgettext = function (context, singular, plural, count) { return (count == 1) ? singular : plural; };
- {% endif %}
-
- django.interpolate = function (fmt, obj, named) {
- if (named) {
- return fmt.replace(/%\(\w+\)s/g, function(match){return String(obj[match.slice(2,-2)])});
- } else {
- return fmt.replace(/%s/g, function(match){return String(obj.shift())});
- }
- };
-
-
- /* formatting library */
-
- django.formats = {{ formats_str }};
-
- django.get_format = function (format_type) {
- var value = django.formats[format_type];
- if (typeof(value) == 'undefined') {
- return format_type;
- } else {
- return value;
- }
- };
-
- /* add to global namespace */
- globals.pluralidx = django.pluralidx;
- globals.gettext = django.gettext;
- globals.ngettext = django.ngettext;
- globals.gettext_noop = django.gettext_noop;
- globals.pgettext = django.pgettext;
- globals.npgettext = django.npgettext;
- globals.interpolate = django.interpolate;
- globals.get_format = django.get_format;
-
-}(this));
-{% endautoescape %}
-"""
-
-
-def render_javascript_catalog(catalog=None, plural=None):
- template = Template(js_catalog_template)
- indent = lambda s: s.replace('\n', '\n ')
- context = Context({
- 'catalog_str': indent(json.dumps(
- catalog, sort_keys=True, indent=2)) if catalog else None,
- 'formats_str': indent(json.dumps(
- get_formats(), sort_keys=True, indent=2)),
- 'plural': plural,
- })
-
- return http.HttpResponse(template.render(context), 'text/javascript')
-
-
-def get_javascript_catalog(locale, domain, packages):
- default_locale = to_locale(settings.LANGUAGE_CODE)
- packages = [p for p in packages if p == 'django.conf' or p in settings.INSTALLED_APPS]
- t = {}
- paths = []
- en_selected = locale.startswith('en')
- en_catalog_missing = True
- # paths of requested packages
- for package in packages:
- p = importlib.import_module(package)
- path = os.path.join(os.path.dirname(upath(p.__file__)), 'locale')
- paths.append(path)
- # add the filesystem paths listed in the LOCALE_PATHS setting
- paths.extend(list(reversed(settings.LOCALE_PATHS)))
- # first load all english languages files for defaults
- for path in paths:
- try:
- catalog = gettext_module.translation(domain, path, ['en'])
- t.update(catalog._catalog)
- except IOError:
- pass
- else:
- # 'en' is the selected language and at least one of the packages
- # listed in `packages` has an 'en' catalog
- if en_selected:
- en_catalog_missing = False
- # next load the settings.LANGUAGE_CODE translations if it isn't english
- if default_locale != 'en':
- for path in paths:
- try:
- catalog = gettext_module.translation(domain, path, [default_locale])
- except IOError:
- catalog = None
- if catalog is not None:
- t.update(catalog._catalog)
- # last load the currently selected language, if it isn't identical to the default.
- if locale != default_locale:
- # If the currently selected language is English but it doesn't have a
- # translation catalog (presumably due to being the language translated
- # from) then a wrong language catalog might have been loaded in the
- # previous step. It needs to be discarded.
- if en_selected and en_catalog_missing:
- t = {}
- else:
- locale_t = {}
- for path in paths:
- try:
- catalog = gettext_module.translation(domain, path, [locale])
- except IOError:
- catalog = None
- if catalog is not None:
- locale_t.update(catalog._catalog)
- if locale_t:
- t = locale_t
- plural = None
- if '' in t:
- for l in t[''].split('\n'):
- if l.startswith('Plural-Forms:'):
- plural = l.split(':', 1)[1].strip()
- if plural is not None:
- # this should actually be a compiled function of a typical plural-form:
- # 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;
- plural = [el.strip() for el in plural.split(';') if el.strip().startswith('plural=')][0].split('=', 1)[1]
-
- pdict = {}
- maxcnts = {}
- catalog = {}
- for k, v in t.items():
- if k == '':
- continue
- if isinstance(k, six.string_types):
- catalog[k] = v
- elif isinstance(k, tuple):
- msgid = k[0]
- cnt = k[1]
- maxcnts[msgid] = max(cnt, maxcnts.get(msgid, 0))
- pdict.setdefault(msgid, {})[cnt] = v
- else:
- raise TypeError(k)
- for k, v in pdict.items():
- catalog[k] = [v.get(i, '') for i in range(maxcnts[msgid] + 1)]
-
- return catalog, plural
-
-
-def null_javascript_catalog(request, domain=None, packages=None):
- """
- Returns "identity" versions of the JavaScript i18n functions -- i.e.,
- versions that don't actually do anything.
- """
- return render_javascript_catalog()
-
-
-def javascript_catalog(request, domain='djangojs', packages=None):
- """
- Returns the selected language catalog as a javascript library.
-
- Receives the list of packages to check for translations in the
- packages parameter either from an infodict or as a +-delimited
- string from the request. Default is 'django.conf'.
-
- Additionally you can override the gettext domain for this view,
- but usually you don't want to do that, as JavaScript messages
- go to the djangojs domain. But this might be needed if you
- deliver your JavaScript source from Django templates.
- """
- locale = to_locale(get_language())
-
- if request.GET and 'language' in request.GET:
- if check_for_language(request.GET['language']):
- locale = to_locale(request.GET['language'])
-
- if packages is None:
- packages = ['django.conf']
- if isinstance(packages, six.string_types):
- packages = packages.split('+')
-
- catalog, plural = get_javascript_catalog(locale, domain, packages)
- return render_javascript_catalog(catalog, plural)
diff --git a/lib/python2.7/site-packages/django/views/static.py b/lib/python2.7/site-packages/django/views/static.py
deleted file mode 100644
index c1baacd..0000000
--- a/lib/python2.7/site-packages/django/views/static.py
+++ /dev/null
@@ -1,143 +0,0 @@
-"""
-Views and functions for serving static files. These are only to be used
-during development, and SHOULD NOT be used in a production setting.
-"""
-from __future__ import unicode_literals
-
-import mimetypes
-import os
-import stat
-import posixpath
-import re
-
-from django.http import (CompatibleStreamingHttpResponse, Http404,
- HttpResponse, HttpResponseRedirect, HttpResponseNotModified)
-from django.template import loader, Template, Context, TemplateDoesNotExist
-from django.utils.http import http_date, parse_http_date
-from django.utils.six.moves.urllib.parse import unquote
-from django.utils.translation import ugettext as _, ugettext_noop
-
-def serve(request, path, document_root=None, show_indexes=False):
- """
- Serve static files below a given point in the directory structure.
-
- To use, put a URL pattern such as::
-
- (r'^(?P<path>.*)$', 'django.views.static.serve', {'document_root' : '/path/to/my/files/'})
-
- in your URLconf. You must provide the ``document_root`` param. You may
- also set ``show_indexes`` to ``True`` if you'd like to serve a basic index
- of the directory. This index view will use the template hardcoded below,
- but if you'd like to override it, you can create a template called
- ``static/directory_index.html``.
- """
- path = posixpath.normpath(unquote(path))
- path = path.lstrip('/')
- newpath = ''
- for part in path.split('/'):
- if not part:
- # Strip empty path components.
- continue
- drive, part = os.path.splitdrive(part)
- head, part = os.path.split(part)
- if part in (os.curdir, os.pardir):
- # Strip '.' and '..' in path.
- continue
- newpath = os.path.join(newpath, part).replace('\\', '/')
- if newpath and path != newpath:
- return HttpResponseRedirect(newpath)
- fullpath = os.path.join(document_root, newpath)
- if os.path.isdir(fullpath):
- if show_indexes:
- return directory_index(newpath, fullpath)
- raise Http404(_("Directory indexes are not allowed here."))
- if not os.path.exists(fullpath):
- raise Http404(_('"%(path)s" does not exist') % {'path': fullpath})
- # Respect the If-Modified-Since header.
- statobj = os.stat(fullpath)
- if not was_modified_since(request.META.get('HTTP_IF_MODIFIED_SINCE'),
- statobj.st_mtime, statobj.st_size):
- return HttpResponseNotModified()
- content_type, encoding = mimetypes.guess_type(fullpath)
- content_type = content_type or 'application/octet-stream'
- response = CompatibleStreamingHttpResponse(open(fullpath, 'rb'),
- content_type=content_type)
- response["Last-Modified"] = http_date(statobj.st_mtime)
- if stat.S_ISREG(statobj.st_mode):
- response["Content-Length"] = statobj.st_size
- if encoding:
- response["Content-Encoding"] = encoding
- return response
-
-
-DEFAULT_DIRECTORY_INDEX_TEMPLATE = """
-{% load i18n %}
-<!DOCTYPE html>
-<html lang="en">
- <head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <meta http-equiv="Content-Language" content="en-us" />
- <meta name="robots" content="NONE,NOARCHIVE" />
- <title>{% blocktrans %}Index of {{ directory }}{% endblocktrans %}</title>
- </head>
- <body>
- <h1>{% blocktrans %}Index of {{ directory }}{% endblocktrans %}</h1>
- <ul>
- {% ifnotequal directory "/" %}
- <li><a href="../">../</a></li>
- {% endifnotequal %}
- {% for f in file_list %}
- <li><a href="{{ f|urlencode }}">{{ f }}</a></li>
- {% endfor %}
- </ul>
- </body>
-</html>
-"""
-template_translatable = ugettext_noop("Index of %(directory)s")
-
-def directory_index(path, fullpath):
- try:
- t = loader.select_template(['static/directory_index.html',
- 'static/directory_index'])
- except TemplateDoesNotExist:
- t = Template(DEFAULT_DIRECTORY_INDEX_TEMPLATE, name='Default directory index template')
- files = []
- for f in os.listdir(fullpath):
- if not f.startswith('.'):
- if os.path.isdir(os.path.join(fullpath, f)):
- f += '/'
- files.append(f)
- c = Context({
- 'directory' : path + '/',
- 'file_list' : files,
- })
- return HttpResponse(t.render(c))
-
-def was_modified_since(header=None, mtime=0, size=0):
- """
- Was something modified since the user last downloaded it?
-
- header
- This is the value of the If-Modified-Since header. If this is None,
- I'll just return True.
-
- mtime
- This is the modification time of the item we're talking about.
-
- size
- This is the size of the item we're talking about.
- """
- try:
- if header is None:
- raise ValueError
- matches = re.match(r"^([^;]+)(; length=([0-9]+))?$", header,
- re.IGNORECASE)
- header_mtime = parse_http_date(matches.group(1))
- header_len = matches.group(3)
- if header_len and int(header_len) != size:
- raise ValueError
- if int(mtime) > header_mtime:
- raise ValueError
- except (AttributeError, ValueError, OverflowError):
- return True
- return False
diff --git a/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/PKG-INFO b/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/PKG-INFO
deleted file mode 100644
index e317ee8..0000000
--- a/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/PKG-INFO
+++ /dev/null
@@ -1,10 +0,0 @@
-Metadata-Version: 1.0
-Name: django-undelete
-Version: 0.1
-Summary: UNKNOWN
-Home-page: UNKNOWN
-Author: UNKNOWN
-Author-email: UNKNOWN
-License: UNKNOWN
-Description: UNKNOWN
-Platform: UNKNOWN
diff --git a/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/SOURCES.txt b/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/SOURCES.txt
deleted file mode 100644
index e2d9cf3..0000000
--- a/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/SOURCES.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-django_undelete.egg-info/PKG-INFO
-django_undelete.egg-info/SOURCES.txt
-django_undelete.egg-info/dependency_links.txt
-django_undelete.egg-info/requires.txt
-django_undelete.egg-info/top_level.txt
-undelete/__init__.py
-undelete/managers.py
-undelete/models.py \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/dependency_links.txt b/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/dependency_links.txt
deleted file mode 100644
index 8b13789..0000000
--- a/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/dependency_links.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/installed-files.txt b/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/installed-files.txt
deleted file mode 100644
index cf3215f..0000000
--- a/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/installed-files.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-../undelete/__init__.py
-../undelete/managers.py
-../undelete/models.py
-../undelete/__init__.pyc
-../undelete/managers.pyc
-../undelete/models.pyc
-./
-requires.txt
-top_level.txt
-dependency_links.txt
-SOURCES.txt
-PKG-INFO
diff --git a/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/requires.txt b/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/requires.txt
deleted file mode 100644
index 527ea10..0000000
--- a/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/requires.txt
+++ /dev/null
@@ -1 +0,0 @@
-django>=1.3 \ No newline at end of file
diff --git a/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/top_level.txt b/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/top_level.txt
deleted file mode 100644
index cf0e56c..0000000
--- a/lib/python2.7/site-packages/django_undelete-0.1-py2.7.egg-info/top_level.txt
+++ /dev/null
@@ -1 +0,0 @@
-undelete
diff --git a/lib/python2.7/site-packages/easy-install.pth b/lib/python2.7/site-packages/easy-install.pth
deleted file mode 100644
index 993bf57..0000000
--- a/lib/python2.7/site-packages/easy-install.pth
+++ /dev/null
@@ -1,4 +0,0 @@
-import sys; sys.__plen = len(sys.path)
-./distribute-0.6.24-py2.7.egg
-./pip-1.1-py2.7.egg
-import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/PKG-INFO b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/PKG-INFO
deleted file mode 100644
index a7659a4..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/PKG-INFO
+++ /dev/null
@@ -1,630 +0,0 @@
-Metadata-Version: 1.1
-Name: pip
-Version: 1.1
-Summary: pip installs packages. Python packages. An easy_install replacement
-Home-page: http://www.pip-installer.org
-Author: The pip developers
-Author-email: python-virtualenv@groups.google.com
-License: MIT
-Description: pip
- ===
-
- `pip` is a tool for installing and managing Python packages, such as
- those found in the `Python Package Index`_. It's a replacement for
- easy_install_.
- ::
-
- $ pip install simplejson
- [... progress report ...]
- Successfully installed simplejson
-
- .. _`Python Package Index`: http://pypi.python.org/pypi
- .. _easy_install: http://peak.telecommunity.com/DevCenter/EasyInstall
-
- Upgrading a package::
-
- $ pip install --upgrade simplejson
- [... progress report ...]
- Successfully installed simplejson
-
- Removing a package::
-
- $ pip uninstall simplejson
- Uninstalling simplejson:
- /home/me/env/lib/python2.7/site-packages/simplejson
- /home/me/env/lib/python2.7/site-packages/simplejson-2.2.1-py2.7.egg-info
- Proceed (y/n)? y
- Successfully uninstalled simplejson
-
- .. comment:
-
- The main website for pip is `www.pip-installer.org
- <http://www.pip-installer.org>`_. You can also install
- the `in-development version <https://github.com/pypa/pip/tarball/develop#egg=pip-dev>`_
- of pip with ``easy_install pip==dev``.
-
-
-
- Community
- ---------
-
- The homepage for pip is at `pip-installer.org <http://www.pip-installer.org/>`_.
- Bugs can be filed in the `pip issue tracker
- <https://github.com/pypa/pip/issues/>`_. Discussion happens on the
- `virtualenv email group
- <http://groups.google.com/group/python-virtualenv?hl=en>`_.
-
-
- ====
- News
- ====
-
- Changelog
- =========
-
- Next release (1.2) schedule
- ---------------------------
-
- Beta and final releases planned for the second half of 2012.
-
- 1.1 (2012-02-16)
- ----------------
-
- * Fixed issue #326 - don't crash when a package's setup.py emits UTF-8 and
- then fails. Thanks Marc Abramowitz.
-
- * Added ``--target`` option for installing directly to arbitrary directory.
- Thanks Stavros Korokithakis.
-
- * Added support for authentication with Subversion repositories. Thanks
- Qiangning Hong.
-
- * Fixed issue #315 - ``--download`` now downloads dependencies as well.
- Thanks Qiangning Hong.
-
- * Errors from subprocesses will display the current working directory.
- Thanks Antti Kaihola.
-
- * Fixed issue #369 - compatibility with Subversion 1.7. Thanks Qiangning
- Hong. Note that setuptools remains incompatible with Subversion 1.7; to
- get the benefits of pip's support you must use Distribute rather than
- setuptools.
-
- * Fixed issue #57 - ignore py2app-generated OS X mpkg zip files in finder.
- Thanks Rene Dudfield.
-
- * Fixed issue #182 - log to ~/Library/Logs/ by default on OS X framework
- installs. Thanks Dan Callahan for report and patch.
-
- * Fixed issue #310 - understand version tags without minor version ("py3")
- in sdist filenames. Thanks Stuart Andrews for report and Olivier Girardot for
- patch.
-
- * Fixed issue #7 - Pip now supports optionally installing setuptools
- "extras" dependencies; e.g. "pip install Paste[openid]". Thanks Matt Maker
- and Olivier Girardot.
-
- * Fixed issue #391 - freeze no longer borks on requirements files with
- --index-url or --find-links. Thanks Herbert Pfennig.
-
- * Fixed issue #288 - handle symlinks properly. Thanks lebedov for the patch.
-
- * Fixed issue #49 - pip install -U no longer reinstalls the same versions of
- packages. Thanks iguananaut for the pull request.
-
- * Removed ``-E`` option and ``PIP_RESPECT_VIRTUALENV``; both use a
- restart-in-venv mechanism that's broken, and neither one is useful since
- every virtualenv now has pip inside it.
-
- * Fixed issue #366 - pip throws IndexError when it calls `scraped_rel_links`
-
- * Fixed issue #22 - pip search should set and return a userful shell status code
-
- * Fixed issue #351 and #365 - added global ``--exists-action`` command line
- option to easier script file exists conflicts, e.g. from editable
- requirements from VCS that have a changed repo URL.
-
-
- 1.0.2 (2011-07-16)
- ------------------
-
- * Fixed docs issues.
- * Fixed issue #295 - Reinstall a package when using the ``install -I`` option
- * Fixed issue #283 - Finds a Git tag pointing to same commit as origin/master
- * Fixed issue #279 - Use absolute path for path to docs in setup.py
- * Fixed issue #314 - Correctly handle exceptions on Python3.
- * Fixed issue #320 - Correctly parse ``--editable`` lines in requirements files
-
- 1.0.1 (2011-04-30)
- ------------------
-
- * Start to use git-flow.
- * Fixed issue #274 - `find_command` should not raise AttributeError
- * Fixed issue #273 - respect Content-Disposition header. Thanks Bradley Ayers.
- * Fixed issue #233 - pathext handling on Windows.
- * Fixed issue #252 - svn+svn protocol.
- * Fixed issue #44 - multiple CLI searches.
- * Fixed issue #266 - current working directory when running setup.py clean.
-
- 1.0 (2011-04-04)
- ----------------
-
- * Added Python 3 support! Huge thanks to Vinay Sajip, Vitaly Babiy, Kelsey
- Hightower, and Alex Gronholm, among others.
-
- * Download progress only shown on a real TTY. Thanks Alex Morega.
-
- * Fixed finding of VCS binaries to not be fooled by same-named directories.
- Thanks Alex Morega.
-
- * Fixed uninstall of packages from system Python for users of Debian/Ubuntu
- python-setuptools package (workaround until fixed in Debian and Ubuntu).
-
- * Added `get-pip.py <https://raw.github.com/pypa/pip/master/contrib/get-pip.py>`_
- installer. Simply download and execute it, using the Python interpreter of
- your choice::
-
- $ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
- $ python get-pip.py
-
- This may have to be run as root.
-
- .. note::
-
- Make sure you have `distribute <http://pypi.python.org/pypi/distribute>`_
- installed before using the installer!
-
- 0.8.3
- -----
-
- * Moved main repository to Github: https://github.com/pypa/pip
-
- * Transferred primary maintenance from Ian to Jannis Leidel, Carl Meyer, Brian Rosner
-
- * Fixed issue #14 - No uninstall-on-upgrade with URL package. Thanks Oliver Tonnhofer
-
- * Fixed issue #163 - Egg name not properly resolved. Thanks Igor Sobreira
-
- * Fixed issue #178 - Non-alphabetical installation of requirements. Thanks Igor Sobreira
-
- * Fixed issue #199 - Documentation mentions --index instead of --index-url. Thanks Kelsey Hightower
-
- * Fixed issue #204 - rmtree undefined in mercurial.py. Thanks Kelsey Hightower
-
- * Fixed bug in Git vcs backend that would break during reinstallation.
-
- * Fixed bug in Mercurial vcs backend related to pip freeze and branch/tag resolution.
-
- * Fixed bug in version string parsing related to the suffix "-dev".
-
- 0.8.2
- -----
-
- * Avoid redundant unpacking of bundles (from pwaller)
-
- * Fixed issue #32, #150, #161 - Fixed checking out the correct
- tag/branch/commit when updating an editable Git requirement.
-
- * Fixed issue #49 - Added ability to install version control requirements
- without making them editable, e.g.::
-
- pip install git+https://github.com/pypa/pip/
-
- * Fixed issue #175 - Correctly locate build and source directory on Mac OS X.
-
- * Added ``git+https://`` scheme to Git VCS backend.
-
- 0.8.1
- -----
-
- * Added global --user flag as shortcut for --install-option="--user". From
- Ronny Pfannschmidt.
-
- * Added support for `PyPI mirrors <http://pypi.python.org/mirrors>`_ as
- defined in `PEP 381 <http://www.python.org/dev/peps/pep-0381/>`_, from
- Jannis Leidel.
-
- * Fixed issue #138 - Git revisions ignored. Thanks John-Scott Atlakson.
-
- * Fixed issue #95 - Initial editable install of github package from a tag fails. Thanks John-Scott Atlakson.
-
- * Fixed issue #107 - Can't install if a directory in cwd has the same name as the package you're installing.
-
- * Fixed issue #39 - --install-option="--prefix=~/.local" ignored with -e.
- Thanks Ronny Pfannschmidt and Wil Tan.
-
-
-
- 0.8
- ---
-
- * Track which ``build/`` directories pip creates, never remove directories
- it doesn't create. From Hugo Lopes Tavares.
-
- * Pip now accepts file:// index URLs. Thanks Dave Abrahams.
-
- * Various cleanup to make test-running more consistent and less fragile.
- Thanks Dave Abrahams.
-
- * Real Windows support (with passing tests). Thanks Dave Abrahams.
-
- * ``pip-2.7`` etc. scripts are created (Python-version specific scripts)
-
- * ``contrib/build-standalone`` script creates a runnable ``.zip`` form of
- pip, from Jannis Leidel
-
- * Editable git repos are updated when reinstalled
-
- * Fix problem with ``--editable`` when multiple ``.egg-info/`` directories
- are found.
-
- * A number of VCS-related fixes for ``pip freeze``, from Hugo Lopes Tavares.
-
- * Significant test framework changes, from Hugo Lopes Tavares.
-
- 0.7.2
- -----
-
- * Set zip_safe=False to avoid problems some people are encountering where
- pip is installed as a zip file.
-
- 0.7.1
- -----
-
- * Fixed opening of logfile with no directory name. Thanks Alexandre Conrad.
-
- * Temporary files are consistently cleaned up, especially after
- installing bundles, also from Alex Conrad.
-
- * Tests now require at least ScriptTest 1.0.3.
-
- 0.7
- ---
-
- * Fixed uninstallation on Windows
- * Added ``pip search`` command.
- * Tab-complete names of installed distributions for ``pip uninstall``.
- * Support tab-completion when there is a global-option before the
- subcommand.
- * Install header files in standard (scheme-default) location when installing
- outside a virtualenv. Install them to a slightly more consistent
- non-standard location inside a virtualenv (since the standard location is
- a non-writable symlink to the global location).
- * pip now logs to a central location by default (instead of creating
- ``pip-log.txt`` all over the place) and constantly overwrites the
- file in question. On Unix and Mac OS X this is ``'$HOME/.pip/pip.log'``
- and on Windows it's ``'%HOME%\\pip\\pip.log'``. You are still able to
- override this location with the ``$PIP_LOG_FILE`` environment variable.
- For a complete (appended) logfile use the separate ``'--log'`` command line
- option.
- * Fixed an issue with Git that left an editable packge as a checkout of a
- remote branch, even if the default behaviour would have been fine, too.
- * Fixed installing from a Git tag with older versions of Git.
- * Expand "~" in logfile and download cache paths.
- * Speed up installing from Mercurial repositories by cloning without
- updating the working copy multiple times.
- * Fixed installing directly from directories (e.g.
- ``pip install path/to/dir/``).
- * Fixed installing editable packages with ``svn+ssh`` URLs.
- * Don't print unwanted debug information when running the freeze command.
- * Create log file directory automatically. Thanks Alexandre Conrad.
- * Make test suite easier to run successfully. Thanks Dave Abrahams.
- * Fixed "pip install ." and "pip install .."; better error for directory
- without setup.py. Thanks Alexandre Conrad.
- * Support Debian/Ubuntu "dist-packages" in zip command. Thanks duckx.
- * Fix relative --src folder. Thanks Simon Cross.
- * Handle missing VCS with an error message. Thanks Alexandre Conrad.
- * Added --no-download option to install; pairs with --no-install to separate
- download and installation into two steps. Thanks Simon Cross.
- * Fix uninstalling from requirements file containing -f, -i, or
- --extra-index-url.
- * Leftover build directories are now removed. Thanks Alexandre Conrad.
-
- 0.6.3
- -----
-
- * Fixed import error on Windows with regard to the backwards compatibility
- package
-
- 0.6.2
- -----
-
- * Fixed uninstall when /tmp is on a different filesystem.
-
- * Fixed uninstallation of distributions with namespace packages.
-
- 0.6.1
- -----
-
- * Added support for the ``https`` and ``http-static`` schemes to the
- Mercurial and ``ftp`` scheme to the Bazaar backend.
-
- * Fixed uninstallation of scripts installed with easy_install.
-
- * Fixed an issue in the package finder that could result in an
- infinite loop while looking for links.
-
- * Fixed issue with ``pip bundle`` and local files (which weren't being
- copied into the bundle), from Whit Morriss.
-
- 0.6
- ---
-
- * Add ``pip uninstall`` and uninstall-before upgrade (from Carl
- Meyer).
-
- * Extended configurability with config files and environment variables.
-
- * Allow packages to be upgraded, e.g., ``pip install Package==0.1``
- then ``pip install Package==0.2``.
-
- * Allow installing/upgrading to Package==dev (fix "Source version does not
- match target version" errors).
-
- * Added command and option completion for bash and zsh.
-
- * Extended integration with virtualenv by providing an option to
- automatically use an active virtualenv and an option to warn if no active
- virtualenv is found.
-
- * Fixed a bug with pip install --download and editable packages, where
- directories were being set with 0000 permissions, now defaults to 755.
-
- * Fixed uninstallation of easy_installed console_scripts.
-
- * Fixed uninstallation on Mac OS X Framework layout installs
-
- * Fixed bug preventing uninstall of editables with source outside venv.
-
- * Creates download cache directory if not existing.
-
- 0.5.1
- -----
-
- * Fixed a couple little bugs, with git and with extensions.
-
- 0.5
- ---
-
- * Added ability to override the default log file name (``pip-log.txt``)
- with the environmental variable ``$PIP_LOG_FILE``.
-
- * Made the freeze command print installed packages to stdout instead of
- writing them to a file. Use simple redirection (e.g.
- ``pip freeze > stable-req.txt``) to get a file with requirements.
-
- * Fixed problem with freezing editable packages from a Git repository.
-
- * Added support for base URLs using ``<base href='...'>`` when parsing
- HTML pages.
-
- * Fixed installing of non-editable packages from version control systems.
-
- * Fixed issue with Bazaar's bzr+ssh scheme.
-
- * Added --download-dir option to the install command to retrieve package
- archives. If given an editable package it will create an archive of it.
-
- * Added ability to pass local file and directory paths to ``--find-links``,
- e.g. ``--find-links=file:///path/to/my/private/archive``
-
- * Reduced the amount of console log messages when fetching a page to find a
- distribution was problematic. The full messages can be found in pip-log.txt.
-
- * Added ``--no-deps`` option to install ignore package dependencies
-
- * Added ``--no-index`` option to ignore the package index (PyPI) temporarily
-
- * Fixed installing editable packages from Git branches.
-
- * Fixes freezing of editable packages from Mercurial repositories.
-
- * Fixed handling read-only attributes of build files, e.g. of Subversion and
- Bazaar on Windows.
-
- * When downloading a file from a redirect, use the redirected
- location's extension to guess the compression (happens specifically
- when redirecting to a bitbucket.org tip.gz file).
-
- * Editable freeze URLs now always use revision hash/id rather than tip or
- branch names which could move.
-
- * Fixed comparison of repo URLs so incidental differences such as
- presence/absence of final slashes or quoted/unquoted special
- characters don't trigger "ignore/switch/wipe/backup" choice.
-
- * Fixed handling of attempt to checkout editable install to a
- non-empty, non-repo directory.
-
- 0.4
- ---
-
- * Make ``-e`` work better with local hg repositories
-
- * Construct PyPI URLs the exact way easy_install constructs URLs (you
- might notice this if you use a custom index that is
- slash-sensitive).
-
- * Improvements on Windows (from `Ionel Maries Cristian
- <http://ionelmc.wordpress.com/>`_).
-
- * Fixed problem with not being able to install private git repositories.
-
- * Make ``pip zip`` zip all its arguments, not just the first.
-
- * Fix some filename issues on Windows.
-
- * Allow the ``-i`` and ``--extra-index-url`` options in requirements
- files.
-
- * Fix the way bundle components are unpacked and moved around, to make
- bundles work.
-
- * Adds ``-s`` option to allow the access to the global site-packages if a
- virtualenv is to be created.
-
- * Fixed support for Subversion 1.6.
-
- 0.3.1
- -----
-
- * Improved virtualenv restart and various path/cleanup problems on win32.
-
- * Fixed a regression with installing from svn repositories (when not
- using ``-e``).
-
- * Fixes when installing editable packages that put their source in a
- subdirectory (like ``src/``).
-
- * Improve ``pip -h``
-
- 0.3
- ---
-
- * Added support for editable packages created from Git, Mercurial and Bazaar
- repositories and ability to freeze them. Refactored support for version
- control systems.
-
- * Do not use ``sys.exit()`` from inside the code, instead use a
- return. This will make it easier to invoke programmatically.
-
- * Put the install record in ``Package.egg-info/installed-files.txt``
- (previously they went in
- ``site-packages/install-record-Package.txt``).
-
- * Fix a problem with ``pip freeze`` not including ``-e svn+`` when an
- svn structure is peculiar.
-
- * Allow ``pip -E`` to work with a virtualenv that uses a different
- version of Python than the parent environment.
-
- * Fixed Win32 virtualenv (``-E``) option.
-
- * Search the links passed in with ``-f`` for packages.
-
- * Detect zip files, even when the file doesn't have a ``.zip``
- extension and it is served with the wrong Content-Type.
-
- * Installing editable from existing source now works, like ``pip
- install -e some/path/`` will install the package in ``some/path/``.
- Most importantly, anything that package requires will also be
- installed by pip.
-
- * Add a ``--path`` option to ``pip un/zip``, so you can avoid zipping
- files that are outside of where you expect.
-
- * Add ``--simulate`` option to ``pip zip``.
-
- 0.2.1
- -----
-
- * Fixed small problem that prevented using ``pip.py`` without actually
- installing pip.
-
- * Fixed ``--upgrade``, which would download and appear to install
- upgraded packages, but actually just reinstall the existing package.
-
- * Fixed Windows problem with putting the install record in the right
- place, and generating the ``pip`` script with Setuptools.
-
- * Download links that include embedded spaces or other unsafe
- characters (those characters get %-encoded).
-
- * Fixed use of URLs in requirement files, and problems with some blank
- lines.
-
- * Turn some tar file errors into warnings.
-
- 0.2
- ---
-
- * Renamed to ``pip``, and to install you now do ``pip install
- PACKAGE``
-
- * Added command ``pip zip PACKAGE`` and ``pip unzip PACKAGE``. This
- is particularly intended for Google App Engine to manage libraries
- to stay under the 1000-file limit.
-
- * Some fixes to bundles, especially editable packages and when
- creating a bundle using unnamed packages (like just an svn
- repository without ``#egg=Package``).
-
- 0.1.4
- -----
-
- * Added an option ``--install-option`` to pass options to pass
- arguments to ``setup.py install``
-
- * ``.svn/`` directories are no longer included in bundles, as these
- directories are specific to a version of svn -- if you build a
- bundle on a system with svn 1.5, you can't use the checkout on a
- system with svn 1.4. Instead a file ``svn-checkout.txt`` is
- included that notes the original location and revision, and the
- command you can use to turn it back into an svn checkout. (Probably
- unpacking the bundle should, maybe optionally, recreate this
- information -- but that is not currently implemented, and it would
- require network access.)
-
- * Avoid ambiguities over project name case, where for instance
- MyPackage and mypackage would be considered different packages.
- This in particular caused problems on Macs, where ``MyPackage/`` and
- ``mypackage/`` are the same directory.
-
- * Added support for an environmental variable
- ``$PIP_DOWNLOAD_CACHE`` which will cache package downloads, so
- future installations won't require large downloads. Network access
- is still required, but just some downloads will be avoided when
- using this.
-
- 0.1.3
- -----
-
- * Always use ``svn checkout`` (not ``export``) so that
- ``tag_svn_revision`` settings give the revision of the package.
-
- * Don't update checkouts that came from ``.pybundle`` files.
-
- 0.1.2
- -----
-
- * Improve error text when there are errors fetching HTML pages when
- seeking packages.
-
- * Improve bundles: include empty directories, make them work with
- editable packages.
-
- * If you use ``-E env`` and the environment ``env/`` doesn't exist, a
- new virtual environment will be created.
-
- * Fix ``dependency_links`` for finding packages.
-
- 0.1.1
- -----
-
- * Fixed a NameError exception when running pip outside of a
- virtualenv environment.
-
- * Added HTTP proxy support (from Prabhu Ramachandran)
-
- * Fixed use of ``hashlib.md5`` on python2.5+ (also from Prabhu
- Ramachandran)
-
- 0.1
- ---
-
- * Initial release
-
-Keywords: easy_install distutils setuptools egg virtualenv
-Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: MIT License
-Classifier: Topic :: Software Development :: Build Tools
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.4
-Classifier: Programming Language :: Python :: 2.5
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.1
-Classifier: Programming Language :: Python :: 3.2
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/SOURCES.txt b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/SOURCES.txt
deleted file mode 100644
index 5695276..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/SOURCES.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-AUTHORS.txt
-LICENSE.txt
-MANIFEST.in
-setup.cfg
-setup.py
-docs/ci-server-step-by-step.txt
-docs/configuration.txt
-docs/contributing.txt
-docs/glossary.txt
-docs/index.txt
-docs/installing.txt
-docs/news.txt
-docs/other-tools.txt
-docs/requirements.txt
-docs/usage.txt
-pip/__init__.py
-pip/_pkgutil.py
-pip/backwardcompat.py
-pip/basecommand.py
-pip/baseparser.py
-pip/download.py
-pip/exceptions.py
-pip/index.py
-pip/locations.py
-pip/log.py
-pip/req.py
-pip/runner.py
-pip/status_codes.py
-pip/util.py
-pip.egg-info/PKG-INFO
-pip.egg-info/SOURCES.txt
-pip.egg-info/dependency_links.txt
-pip.egg-info/entry_points.txt
-pip.egg-info/not-zip-safe
-pip.egg-info/top_level.txt
-pip/commands/__init__.py
-pip/commands/bundle.py
-pip/commands/completion.py
-pip/commands/freeze.py
-pip/commands/help.py
-pip/commands/install.py
-pip/commands/search.py
-pip/commands/uninstall.py
-pip/commands/unzip.py
-pip/commands/zip.py
-pip/vcs/__init__.py
-pip/vcs/bazaar.py
-pip/vcs/git.py
-pip/vcs/mercurial.py
-pip/vcs/subversion.py \ No newline at end of file
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/dependency_links.txt b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/dependency_links.txt
deleted file mode 100644
index 8b13789..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/dependency_links.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/entry_points.txt b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/entry_points.txt
deleted file mode 100644
index 5f7b7cf..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/entry_points.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-[console_scripts]
-pip = pip:main
-pip-2.7 = pip:main
-
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/not-zip-safe b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/not-zip-safe
deleted file mode 100644
index 8b13789..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/not-zip-safe
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/top_level.txt b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/top_level.txt
deleted file mode 100644
index a1b589e..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/EGG-INFO/top_level.txt
+++ /dev/null
@@ -1 +0,0 @@
-pip
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/__init__.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/__init__.py
deleted file mode 100644
index 9580790..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/__init__.py
+++ /dev/null
@@ -1,268 +0,0 @@
-#!/usr/bin/env python
-import os
-import optparse
-
-import subprocess
-import sys
-import re
-import difflib
-
-from pip.backwardcompat import walk_packages, console_to_str
-from pip.basecommand import command_dict, load_command, load_all_commands, command_names
-from pip.baseparser import parser
-from pip.exceptions import InstallationError
-from pip.log import logger
-from pip.util import get_installed_distributions
-
-
-def autocomplete():
- """Command and option completion for the main option parser (and options)
- and its subcommands (and options).
-
- Enable by sourcing one of the completion shell scripts (bash or zsh).
- """
- # Don't complete if user hasn't sourced bash_completion file.
- if 'PIP_AUTO_COMPLETE' not in os.environ:
- return
- cwords = os.environ['COMP_WORDS'].split()[1:]
- cword = int(os.environ['COMP_CWORD'])
- try:
- current = cwords[cword-1]
- except IndexError:
- current = ''
- load_all_commands()
- subcommands = [cmd for cmd, cls in command_dict.items() if not cls.hidden]
- options = []
- # subcommand
- try:
- subcommand_name = [w for w in cwords if w in subcommands][0]
- except IndexError:
- subcommand_name = None
- # subcommand options
- if subcommand_name:
- # special case: 'help' subcommand has no options
- if subcommand_name == 'help':
- sys.exit(1)
- # special case: list locally installed dists for uninstall command
- if subcommand_name == 'uninstall' and not current.startswith('-'):
- installed = []
- lc = current.lower()
- for dist in get_installed_distributions(local_only=True):
- if dist.key.startswith(lc) and dist.key not in cwords[1:]:
- installed.append(dist.key)
- # if there are no dists installed, fall back to option completion
- if installed:
- for dist in installed:
- print(dist)
- sys.exit(1)
- subcommand = command_dict.get(subcommand_name)
- options += [(opt.get_opt_string(), opt.nargs)
- for opt in subcommand.parser.option_list
- if opt.help != optparse.SUPPRESS_HELP]
- # filter out previously specified options from available options
- prev_opts = [x.split('=')[0] for x in cwords[1:cword-1]]
- options = [(x, v) for (x, v) in options if x not in prev_opts]
- # filter options by current input
- options = [(k, v) for k, v in options if k.startswith(current)]
- for option in options:
- opt_label = option[0]
- # append '=' to options which require args
- if option[1]:
- opt_label += '='
- print(opt_label)
- else:
- # show options of main parser only when necessary
- if current.startswith('-') or current.startswith('--'):
- subcommands += [opt.get_opt_string()
- for opt in parser.option_list
- if opt.help != optparse.SUPPRESS_HELP]
- print(' '.join([x for x in subcommands if x.startswith(current)]))
- sys.exit(1)
-
-
-def version_control():
- # Import all the version control support modules:
- from pip import vcs
- for importer, modname, ispkg in \
- walk_packages(path=vcs.__path__, prefix=vcs.__name__+'.'):
- __import__(modname)
-
-
-def main(initial_args=None):
- if initial_args is None:
- initial_args = sys.argv[1:]
- autocomplete()
- version_control()
- options, args = parser.parse_args(initial_args)
- if options.help and not args:
- args = ['help']
- if not args:
- parser.error('You must give a command (use "pip help" to see a list of commands)')
- command = args[0].lower()
- load_command(command)
- if command not in command_dict:
- close_commands = difflib.get_close_matches(command, command_names())
- if close_commands:
- guess = close_commands[0]
- if args[1:]:
- guess = "%s %s" % (guess, " ".join(args[1:]))
- else:
- guess = 'install %s' % command
- error_dict = {'arg': command, 'guess': guess,
- 'script': os.path.basename(sys.argv[0])}
- parser.error('No command by the name %(script)s %(arg)s\n '
- '(maybe you meant "%(script)s %(guess)s")' % error_dict)
- command = command_dict[command]
- return command.main(args[1:], options)
-
-
-def bootstrap():
- """
- Bootstrapping function to be called from install-pip.py script.
- """
- return main(['install', '--upgrade', 'pip'])
-
-############################################################
-## Writing freeze files
-
-
-class FrozenRequirement(object):
-
- def __init__(self, name, req, editable, comments=()):
- self.name = name
- self.req = req
- self.editable = editable
- self.comments = comments
-
- _rev_re = re.compile(r'-r(\d+)$')
- _date_re = re.compile(r'-(20\d\d\d\d\d\d)$')
-
- @classmethod
- def from_dist(cls, dist, dependency_links, find_tags=False):
- location = os.path.normcase(os.path.abspath(dist.location))
- comments = []
- from pip.vcs import vcs, get_src_requirement
- if vcs.get_backend_name(location):
- editable = True
- req = get_src_requirement(dist, location, find_tags)
- if req is None:
- logger.warn('Could not determine repository location of %s' % location)
- comments.append('## !! Could not determine repository location')
- req = dist.as_requirement()
- editable = False
- else:
- editable = False
- req = dist.as_requirement()
- specs = req.specs
- assert len(specs) == 1 and specs[0][0] == '=='
- version = specs[0][1]
- ver_match = cls._rev_re.search(version)
- date_match = cls._date_re.search(version)
- if ver_match or date_match:
- svn_backend = vcs.get_backend('svn')
- if svn_backend:
- svn_location = svn_backend(
- ).get_location(dist, dependency_links)
- if not svn_location:
- logger.warn(
- 'Warning: cannot find svn location for %s' % req)
- comments.append('## FIXME: could not find svn URL in dependency_links for this package:')
- else:
- comments.append('# Installing as editable to satisfy requirement %s:' % req)
- if ver_match:
- rev = ver_match.group(1)
- else:
- rev = '{%s}' % date_match.group(1)
- editable = True
- req = '%s@%s#egg=%s' % (svn_location, rev, cls.egg_name(dist))
- return cls(dist.project_name, req, editable, comments)
-
- @staticmethod
- def egg_name(dist):
- name = dist.egg_name()
- match = re.search(r'-py\d\.\d$', name)
- if match:
- name = name[:match.start()]
- return name
-
- def __str__(self):
- req = self.req
- if self.editable:
- req = '-e %s' % req
- return '\n'.join(list(self.comments)+[str(req)])+'\n'
-
-############################################################
-## Requirement files
-
-
-def call_subprocess(cmd, show_stdout=True,
- filter_stdout=None, cwd=None,
- raise_on_returncode=True,
- command_level=logger.DEBUG, command_desc=None,
- extra_environ=None):
- if command_desc is None:
- cmd_parts = []
- for part in cmd:
- if ' ' in part or '\n' in part or '"' in part or "'" in part:
- part = '"%s"' % part.replace('"', '\\"')
- cmd_parts.append(part)
- command_desc = ' '.join(cmd_parts)
- if show_stdout:
- stdout = None
- else:
- stdout = subprocess.PIPE
- logger.log(command_level, "Running command %s" % command_desc)
- env = os.environ.copy()
- if extra_environ:
- env.update(extra_environ)
- try:
- proc = subprocess.Popen(
- cmd, stderr=subprocess.STDOUT, stdin=None, stdout=stdout,
- cwd=cwd, env=env)
- except Exception:
- e = sys.exc_info()[1]
- logger.fatal(
- "Error %s while executing command %s" % (e, command_desc))
- raise
- all_output = []
- if stdout is not None:
- stdout = proc.stdout
- while 1:
- line = console_to_str(stdout.readline())
- if not line:
- break
- line = line.rstrip()
- all_output.append(line + '\n')
- if filter_stdout:
- level = filter_stdout(line)
- if isinstance(level, tuple):
- level, line = level
- logger.log(level, line)
- if not logger.stdout_level_matches(level):
- logger.show_progress()
- else:
- logger.info(line)
- else:
- returned_stdout, returned_stderr = proc.communicate()
- all_output = [returned_stdout or '']
- proc.wait()
- if proc.returncode:
- if raise_on_returncode:
- if all_output:
- logger.notify('Complete output from command %s:' % command_desc)
- logger.notify('\n'.join(all_output) + '\n----------------------------------------')
- raise InstallationError(
- "Command %s failed with error code %s in %s"
- % (command_desc, proc.returncode, cwd))
- else:
- logger.warn(
- "Command %s had error code %s in %s"
- % (command_desc, proc.returncode, cwd))
- if stdout is not None:
- return ''.join(all_output)
-
-
-if __name__ == '__main__':
- exit = main()
- if exit:
- sys.exit(exit)
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/_pkgutil.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/_pkgutil.py
deleted file mode 100644
index fe37d04..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/_pkgutil.py
+++ /dev/null
@@ -1,592 +0,0 @@
-"""Utilities to support packages."""
-
-# NOTE: This module must remain compatible with Python 2.3, as it is shared
-# by setuptools for distribution with Python 2.3 and up.
-
-import os
-import sys
-import imp
-import os.path
-from types import ModuleType
-
-__all__ = [
- 'get_importer', 'iter_importers', 'get_loader', 'find_loader',
- 'walk_packages', 'iter_modules',
- 'ImpImporter', 'ImpLoader', 'read_code', 'extend_path',
-]
-
-
-def read_code(stream):
- # This helper is needed in order for the PEP 302 emulation to
- # correctly handle compiled files
- import marshal
-
- magic = stream.read(4)
- if magic != imp.get_magic():
- return None
-
- stream.read(4) # Skip timestamp
- return marshal.load(stream)
-
-
-def simplegeneric(func):
- """Make a trivial single-dispatch generic function"""
- registry = {}
-
- def wrapper(*args, **kw):
- ob = args[0]
- try:
- cls = ob.__class__
- except AttributeError:
- cls = type(ob)
- try:
- mro = cls.__mro__
- except AttributeError:
- try:
-
- class cls(cls, object):
- pass
-
- mro = cls.__mro__[1:]
- except TypeError:
- mro = object, # must be an ExtensionClass or some such :(
- for t in mro:
- if t in registry:
- return registry[t](*args, **kw)
- else:
- return func(*args, **kw)
- try:
- wrapper.__name__ = func.__name__
- except (TypeError, AttributeError):
- pass # Python 2.3 doesn't allow functions to be renamed
-
- def register(typ, func=None):
- if func is None:
- return lambda f: register(typ, f)
- registry[typ] = func
- return func
-
- wrapper.__dict__ = func.__dict__
- wrapper.__doc__ = func.__doc__
- wrapper.register = register
- return wrapper
-
-
-def walk_packages(path=None, prefix='', onerror=None):
- """Yields (module_loader, name, ispkg) for all modules recursively
- on path, or, if path is None, all accessible modules.
-
- 'path' should be either None or a list of paths to look for
- modules in.
-
- 'prefix' is a string to output on the front of every module name
- on output.
-
- Note that this function must import all *packages* (NOT all
- modules!) on the given path, in order to access the __path__
- attribute to find submodules.
-
- 'onerror' is a function which gets called with one argument (the
- name of the package which was being imported) if any exception
- occurs while trying to import a package. If no onerror function is
- supplied, ImportErrors are caught and ignored, while all other
- exceptions are propagated, terminating the search.
-
- Examples:
-
- # list all modules python can access
- walk_packages()
-
- # list all submodules of ctypes
- walk_packages(ctypes.__path__, ctypes.__name__+'.')
- """
-
- def seen(p, m={}):
- if p in m:
- return True
- m[p] = True
-
- for importer, name, ispkg in iter_modules(path, prefix):
- yield importer, name, ispkg
-
- if ispkg:
- try:
- __import__(name)
- except ImportError:
- if onerror is not None:
- onerror(name)
- except Exception:
- if onerror is not None:
- onerror(name)
- else:
- raise
- else:
- path = getattr(sys.modules[name], '__path__', None) or []
-
- # don't traverse path items we've seen before
- path = [p for p in path if not seen(p)]
-
- for item in walk_packages(path, name+'.', onerror):
- yield item
-
-
-def iter_modules(path=None, prefix=''):
- """Yields (module_loader, name, ispkg) for all submodules on path,
- or, if path is None, all top-level modules on sys.path.
-
- 'path' should be either None or a list of paths to look for
- modules in.
-
- 'prefix' is a string to output on the front of every module name
- on output.
- """
-
- if path is None:
- importers = iter_importers()
- else:
- importers = map(get_importer, path)
-
- yielded = {}
- for i in importers:
- for name, ispkg in iter_importer_modules(i, prefix):
- if name not in yielded:
- yielded[name] = 1
- yield i, name, ispkg
-
-
-#@simplegeneric
-def iter_importer_modules(importer, prefix=''):
- if not hasattr(importer, 'iter_modules'):
- return []
- return importer.iter_modules(prefix)
-
-iter_importer_modules = simplegeneric(iter_importer_modules)
-
-
-class ImpImporter:
- """PEP 302 Importer that wraps Python's "classic" import algorithm
-
- ImpImporter(dirname) produces a PEP 302 importer that searches that
- directory. ImpImporter(None) produces a PEP 302 importer that searches
- the current sys.path, plus any modules that are frozen or built-in.
-
- Note that ImpImporter does not currently support being used by placement
- on sys.meta_path.
- """
-
- def __init__(self, path=None):
- self.path = path
-
- def find_module(self, fullname, path=None):
- # Note: we ignore 'path' argument since it is only used via meta_path
- subname = fullname.split(".")[-1]
- if subname != fullname and self.path is None:
- return None
- if self.path is None:
- path = None
- else:
- path = [os.path.realpath(self.path)]
- try:
- file, filename, etc = imp.find_module(subname, path)
- except ImportError:
- return None
- return ImpLoader(fullname, file, filename, etc)
-
- def iter_modules(self, prefix=''):
- if self.path is None or not os.path.isdir(self.path):
- return
-
- yielded = {}
- import inspect
-
- filenames = os.listdir(self.path)
- filenames.sort() # handle packages before same-named modules
-
- for fn in filenames:
- modname = inspect.getmodulename(fn)
- if modname=='__init__' or modname in yielded:
- continue
-
- path = os.path.join(self.path, fn)
- ispkg = False
-
- if not modname and os.path.isdir(path) and '.' not in fn:
- modname = fn
- for fn in os.listdir(path):
- subname = inspect.getmodulename(fn)
- if subname=='__init__':
- ispkg = True
- break
- else:
- continue # not a package
-
- if modname and '.' not in modname:
- yielded[modname] = 1
- yield prefix + modname, ispkg
-
-
-class ImpLoader:
- """PEP 302 Loader that wraps Python's "classic" import algorithm
- """
- code = source = None
-
- def __init__(self, fullname, file, filename, etc):
- self.file = file
- self.filename = filename
- self.fullname = fullname
- self.etc = etc
-
- def load_module(self, fullname):
- self._reopen()
- try:
- mod = imp.load_module(fullname, self.file, self.filename, self.etc)
- finally:
- if self.file:
- self.file.close()
- # Note: we don't set __loader__ because we want the module to look
- # normal; i.e. this is just a wrapper for standard import machinery
- return mod
-
- def get_data(self, pathname):
- return open(pathname, "rb").read()
-
- def _reopen(self):
- if self.file and self.file.closed:
- mod_type = self.etc[2]
- if mod_type==imp.PY_SOURCE:
- self.file = open(self.filename, 'rU')
- elif mod_type in (imp.PY_COMPILED, imp.C_EXTENSION):
- self.file = open(self.filename, 'rb')
-
- def _fix_name(self, fullname):
- if fullname is None:
- fullname = self.fullname
- elif fullname != self.fullname:
- raise ImportError("Loader for module %s cannot handle "
- "module %s" % (self.fullname, fullname))
- return fullname
-
- def is_package(self, fullname):
- fullname = self._fix_name(fullname)
- return self.etc[2]==imp.PKG_DIRECTORY
-
- def get_code(self, fullname=None):
- fullname = self._fix_name(fullname)
- if self.code is None:
- mod_type = self.etc[2]
- if mod_type==imp.PY_SOURCE:
- source = self.get_source(fullname)
- self.code = compile(source, self.filename, 'exec')
- elif mod_type==imp.PY_COMPILED:
- self._reopen()
- try:
- self.code = read_code(self.file)
- finally:
- self.file.close()
- elif mod_type==imp.PKG_DIRECTORY:
- self.code = self._get_delegate().get_code()
- return self.code
-
- def get_source(self, fullname=None):
- fullname = self._fix_name(fullname)
- if self.source is None:
- mod_type = self.etc[2]
- if mod_type==imp.PY_SOURCE:
- self._reopen()
- try:
- self.source = self.file.read()
- finally:
- self.file.close()
- elif mod_type==imp.PY_COMPILED:
- if os.path.exists(self.filename[:-1]):
- f = open(self.filename[:-1], 'rU')
- self.source = f.read()
- f.close()
- elif mod_type==imp.PKG_DIRECTORY:
- self.source = self._get_delegate().get_source()
- return self.source
-
- def _get_delegate(self):
- return ImpImporter(self.filename).find_module('__init__')
-
- def get_filename(self, fullname=None):
- fullname = self._fix_name(fullname)
- mod_type = self.etc[2]
- if self.etc[2]==imp.PKG_DIRECTORY:
- return self._get_delegate().get_filename()
- elif self.etc[2] in (imp.PY_SOURCE, imp.PY_COMPILED, imp.C_EXTENSION):
- return self.filename
- return None
-
-
-try:
- import zipimport
- from zipimport import zipimporter
-
- def iter_zipimport_modules(importer, prefix=''):
- dirlist = list(zipimport._zip_directory_cache[importer.archive].keys())
- dirlist.sort()
- _prefix = importer.prefix
- plen = len(_prefix)
- yielded = {}
- import inspect
- for fn in dirlist:
- if not fn.startswith(_prefix):
- continue
-
- fn = fn[plen:].split(os.sep)
-
- if len(fn)==2 and fn[1].startswith('__init__.py'):
- if fn[0] not in yielded:
- yielded[fn[0]] = 1
- yield fn[0], True
-
- if len(fn)!=1:
- continue
-
- modname = inspect.getmodulename(fn[0])
- if modname=='__init__':
- continue
-
- if modname and '.' not in modname and modname not in yielded:
- yielded[modname] = 1
- yield prefix + modname, False
-
- iter_importer_modules.register(zipimporter, iter_zipimport_modules)
-
-except ImportError:
- pass
-
-
-def get_importer(path_item):
- """Retrieve a PEP 302 importer for the given path item
-
- The returned importer is cached in sys.path_importer_cache
- if it was newly created by a path hook.
-
- If there is no importer, a wrapper around the basic import
- machinery is returned. This wrapper is never inserted into
- the importer cache (None is inserted instead).
-
- The cache (or part of it) can be cleared manually if a
- rescan of sys.path_hooks is necessary.
- """
- try:
- importer = sys.path_importer_cache[path_item]
- except KeyError:
- for path_hook in sys.path_hooks:
- try:
- importer = path_hook(path_item)
- break
- except ImportError:
- pass
- else:
- importer = None
- sys.path_importer_cache.setdefault(path_item, importer)
-
- if importer is None:
- try:
- importer = ImpImporter(path_item)
- except ImportError:
- importer = None
- return importer
-
-
-def iter_importers(fullname=""):
- """Yield PEP 302 importers for the given module name
-
- If fullname contains a '.', the importers will be for the package
- containing fullname, otherwise they will be importers for sys.meta_path,
- sys.path, and Python's "classic" import machinery, in that order. If
- the named module is in a package, that package is imported as a side
- effect of invoking this function.
-
- Non PEP 302 mechanisms (e.g. the Windows registry) used by the
- standard import machinery to find files in alternative locations
- are partially supported, but are searched AFTER sys.path. Normally,
- these locations are searched BEFORE sys.path, preventing sys.path
- entries from shadowing them.
-
- For this to cause a visible difference in behaviour, there must
- be a module or package name that is accessible via both sys.path
- and one of the non PEP 302 file system mechanisms. In this case,
- the emulation will find the former version, while the builtin
- import mechanism will find the latter.
-
- Items of the following types can be affected by this discrepancy:
- imp.C_EXTENSION, imp.PY_SOURCE, imp.PY_COMPILED, imp.PKG_DIRECTORY
- """
- if fullname.startswith('.'):
- raise ImportError("Relative module names not supported")
- if '.' in fullname:
- # Get the containing package's __path__
- pkg = '.'.join(fullname.split('.')[:-1])
- if pkg not in sys.modules:
- __import__(pkg)
- path = getattr(sys.modules[pkg], '__path__', None) or []
- else:
- for importer in sys.meta_path:
- yield importer
- path = sys.path
- for item in path:
- yield get_importer(item)
- if '.' not in fullname:
- yield ImpImporter()
-
-
-def get_loader(module_or_name):
- """Get a PEP 302 "loader" object for module_or_name
-
- If the module or package is accessible via the normal import
- mechanism, a wrapper around the relevant part of that machinery
- is returned. Returns None if the module cannot be found or imported.
- If the named module is not already imported, its containing package
- (if any) is imported, in order to establish the package __path__.
-
- This function uses iter_importers(), and is thus subject to the same
- limitations regarding platform-specific special import locations such
- as the Windows registry.
- """
- if module_or_name in sys.modules:
- module_or_name = sys.modules[module_or_name]
- if isinstance(module_or_name, ModuleType):
- module = module_or_name
- loader = getattr(module, '__loader__', None)
- if loader is not None:
- return loader
- fullname = module.__name__
- else:
- fullname = module_or_name
- return find_loader(fullname)
-
-
-def find_loader(fullname):
- """Find a PEP 302 "loader" object for fullname
-
- If fullname contains dots, path must be the containing package's __path__.
- Returns None if the module cannot be found or imported. This function uses
- iter_importers(), and is thus subject to the same limitations regarding
- platform-specific special import locations such as the Windows registry.
- """
- for importer in iter_importers(fullname):
- loader = importer.find_module(fullname)
- if loader is not None:
- return loader
-
- return None
-
-
-def extend_path(path, name):
- """Extend a package's path.
-
- Intended use is to place the following code in a package's __init__.py:
-
- from pkgutil import extend_path
- __path__ = extend_path(__path__, __name__)
-
- This will add to the package's __path__ all subdirectories of
- directories on sys.path named after the package. This is useful
- if one wants to distribute different parts of a single logical
- package as multiple directories.
-
- It also looks for *.pkg files beginning where * matches the name
- argument. This feature is similar to *.pth files (see site.py),
- except that it doesn't special-case lines starting with 'import'.
- A *.pkg file is trusted at face value: apart from checking for
- duplicates, all entries found in a *.pkg file are added to the
- path, regardless of whether they are exist the filesystem. (This
- is a feature.)
-
- If the input path is not a list (as is the case for frozen
- packages) it is returned unchanged. The input path is not
- modified; an extended copy is returned. Items are only appended
- to the copy at the end.
-
- It is assumed that sys.path is a sequence. Items of sys.path that
- are not (unicode or 8-bit) strings referring to existing
- directories are ignored. Unicode items of sys.path that cause
- errors when used as filenames may cause this function to raise an
- exception (in line with os.path.isdir() behavior).
- """
-
- if not isinstance(path, list):
- # This could happen e.g. when this is called from inside a
- # frozen package. Return the path unchanged in that case.
- return path
-
- pname = os.path.join(*name.split('.')) # Reconstitute as relative path
- # Just in case os.extsep != '.'
- sname = os.extsep.join(name.split('.'))
- sname_pkg = sname + os.extsep + "pkg"
- init_py = "__init__" + os.extsep + "py"
-
- path = path[:] # Start with a copy of the existing path
-
- from pip.backwardcompat import string_types
-
- for dir in sys.path:
- if not isinstance(dir, string_types) or not os.path.isdir(dir):
- continue
- subdir = os.path.join(dir, pname)
- # XXX This may still add duplicate entries to path on
- # case-insensitive filesystems
- initfile = os.path.join(subdir, init_py)
- if subdir not in path and os.path.isfile(initfile):
- path.append(subdir)
- # XXX Is this the right thing for subpackages like zope.app?
- # It looks for a file named "zope.app.pkg"
- pkgfile = os.path.join(dir, sname_pkg)
- if os.path.isfile(pkgfile):
- try:
- f = open(pkgfile)
- except IOError:
- msg = sys.exc_info()[1]
- sys.stderr.write("Can't open %s: %s\n" %
- (pkgfile, msg))
- else:
- for line in f:
- line = line.rstrip('\n')
- if not line or line.startswith('#'):
- continue
- path.append(line) # Don't check for existence!
- f.close()
-
- return path
-
-
-def get_data(package, resource):
- """Get a resource from a package.
-
- This is a wrapper round the PEP 302 loader get_data API. The package
- argument should be the name of a package, in standard module format
- (foo.bar). The resource argument should be in the form of a relative
- filename, using '/' as the path separator. The parent directory name '..'
- is not allowed, and nor is a rooted name (starting with a '/').
-
- The function returns a binary string, which is the contents of the
- specified resource.
-
- For packages located in the filesystem, which have already been imported,
- this is the rough equivalent of
-
- d = os.path.dirname(sys.modules[package].__file__)
- data = open(os.path.join(d, resource), 'rb').read()
-
- If the package cannot be located or loaded, or it uses a PEP 302 loader
- which does not support get_data(), then None is returned.
- """
-
- loader = get_loader(package)
- if loader is None or not hasattr(loader, 'get_data'):
- return None
- mod = sys.modules.get(package) or loader.load_module(package)
- if mod is None or not hasattr(mod, '__file__'):
- return None
-
- # Modify the resource name to be compatible with the loader.get_data
- # signature - an os.path format "filename" starting with the dirname of
- # the package's __file__
- parts = resource.split('/')
- parts.insert(0, os.path.dirname(mod.__file__))
- resource_name = os.path.join(*parts)
- return loader.get_data(resource_name)
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/backwardcompat.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/backwardcompat.py
deleted file mode 100644
index e33da98..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/backwardcompat.py
+++ /dev/null
@@ -1,135 +0,0 @@
-"""Stuff that differs in different Python versions"""
-
-import sys
-import os
-import shutil
-
-__all__ = ['any', 'WindowsError', 'md5', 'copytree']
-
-try:
- WindowsError = WindowsError
-except NameError:
- class NeverUsedException(Exception):
- """this exception should never be raised"""
- WindowsError = NeverUsedException
-try:
- from hashlib import md5
-except ImportError:
- import md5 as md5_module
- md5 = md5_module.new
-
-try:
- from pkgutil import walk_packages
-except ImportError:
- # let's fall back as long as we can
- from pip._pkgutil import walk_packages
-
-try:
- any = any
-except NameError:
-
- def any(seq):
- for item in seq:
- if item:
- return True
- return False
-
-console_encoding = sys.__stdout__.encoding
-
-if sys.version_info >= (3,):
- from io import StringIO, BytesIO
- from functools import reduce
- from urllib.error import URLError, HTTPError
- from queue import Queue, Empty
- from urllib.request import url2pathname
- from urllib.request import urlretrieve
- from email import message as emailmessage
- import urllib.parse as urllib
- import urllib.request as urllib2
- import configparser as ConfigParser
- import xmlrpc.client as xmlrpclib
- import urllib.parse as urlparse
- import http.client as httplib
-
- def cmp(a, b):
- return (a > b) - (a < b)
-
- def b(s):
- return s.encode('utf-8')
-
- def u(s):
- return s.decode('utf-8')
-
- def console_to_str(s):
- try:
- return s.decode(console_encoding)
- except UnicodeDecodeError:
- return s.decode('utf_8')
-
- def fwrite(f, s):
- f.buffer.write(b(s))
-
- bytes = bytes
- string_types = (str,)
- raw_input = input
-else:
- from cStringIO import StringIO
- from urllib2 import URLError, HTTPError
- from Queue import Queue, Empty
- from urllib import url2pathname, urlretrieve
- from email import Message as emailmessage
- import urllib
- import urllib2
- import urlparse
- import ConfigParser
- import xmlrpclib
- import httplib
-
- def b(s):
- return s
-
- def u(s):
- return s
-
- def console_to_str(s):
- return s
-
- def fwrite(f, s):
- f.write(s)
-
- bytes = str
- string_types = (basestring,)
- reduce = reduce
- cmp = cmp
- raw_input = raw_input
- BytesIO = StringIO
-
-try:
- from email.parser import FeedParser
-except ImportError:
- # python lesser than 2.5
- from email.FeedParser import FeedParser
-
-from distutils.sysconfig import get_python_lib, get_python_version
-
-
-def copytree(src, dst):
- if sys.version_info < (2, 5):
- before_last_dir = os.path.dirname(dst)
- if not os.path.exists(before_last_dir):
- os.makedirs(before_last_dir)
- shutil.copytree(src, dst)
- shutil.copymode(src, dst)
- else:
- shutil.copytree(src, dst)
-
-
-def product(*args, **kwds):
- # product('ABCD', 'xy') --> Ax Ay Bx By Cx Cy Dx Dy
- # product(range(2), repeat=3) --> 000 001 010 011 100 101 110 111
- pools = list(map(tuple, args)) * kwds.get('repeat', 1)
- result = [[]]
- for pool in pools:
- result = [x+[y] for x in result for y in pool]
- for prod in result:
- yield tuple(prod)
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/basecommand.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/basecommand.py
deleted file mode 100644
index 12bcd62..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/basecommand.py
+++ /dev/null
@@ -1,193 +0,0 @@
-"""Base Command class, and related routines"""
-
-import os
-import socket
-import sys
-import traceback
-import time
-
-from pip import commands
-from pip.log import logger
-from pip.baseparser import parser, ConfigOptionParser, UpdatingDefaultsHelpFormatter
-from pip.download import urlopen
-from pip.exceptions import (BadCommand, InstallationError, UninstallationError,
- CommandError)
-from pip.backwardcompat import StringIO, walk_packages
-from pip.status_codes import SUCCESS, ERROR, UNKNOWN_ERROR, VIRTUALENV_NOT_FOUND
-
-
-__all__ = ['command_dict', 'Command', 'load_all_commands',
- 'load_command', 'command_names']
-
-command_dict = {}
-
-# for backwards compatibiliy
-get_proxy = urlopen.get_proxy
-
-
-class Command(object):
- name = None
- usage = None
- hidden = False
-
- def __init__(self):
- assert self.name
- self.parser = ConfigOptionParser(
- usage=self.usage,
- prog='%s %s' % (sys.argv[0], self.name),
- version=parser.version,
- formatter=UpdatingDefaultsHelpFormatter(),
- name=self.name)
- for option in parser.option_list:
- if not option.dest or option.dest == 'help':
- # -h, --version, etc
- continue
- self.parser.add_option(option)
- command_dict[self.name] = self
-
- def merge_options(self, initial_options, options):
- # Make sure we have all global options carried over
- for attr in ['log', 'proxy', 'require_venv',
- 'log_explicit_levels', 'log_file',
- 'timeout', 'default_vcs',
- 'skip_requirements_regex',
- 'no_input', 'exists_action']:
- setattr(options, attr, getattr(initial_options, attr) or getattr(options, attr))
- options.quiet += initial_options.quiet
- options.verbose += initial_options.verbose
-
- def setup_logging(self):
- pass
-
- def main(self, args, initial_options):
- options, args = self.parser.parse_args(args)
- self.merge_options(initial_options, options)
-
- level = 1 # Notify
- level += options.verbose
- level -= options.quiet
- level = logger.level_for_integer(4-level)
- complete_log = []
- logger.consumers.extend(
- [(level, sys.stdout),
- (logger.DEBUG, complete_log.append)])
- if options.log_explicit_levels:
- logger.explicit_levels = True
-
- self.setup_logging()
-
- if options.no_input:
- os.environ['PIP_NO_INPUT'] = '1'
-
- if options.exists_action:
- os.environ['PIP_EXISTS_ACTION'] = ''.join(options.exists_action)
-
- if options.require_venv:
- # If a venv is required check if it can really be found
- if not os.environ.get('VIRTUAL_ENV'):
- logger.fatal('Could not find an activated virtualenv (required).')
- sys.exit(VIRTUALENV_NOT_FOUND)
-
- if options.log:
- log_fp = open_logfile(options.log, 'a')
- logger.consumers.append((logger.DEBUG, log_fp))
- else:
- log_fp = None
-
- socket.setdefaulttimeout(options.timeout or None)
-
- urlopen.setup(proxystr=options.proxy, prompting=not options.no_input)
-
- exit = SUCCESS
- store_log = False
- try:
- status = self.run(options, args)
- # FIXME: all commands should return an exit status
- # and when it is done, isinstance is not needed anymore
- if isinstance(status, int):
- exit = status
- except (InstallationError, UninstallationError):
- e = sys.exc_info()[1]
- logger.fatal(str(e))
- logger.info('Exception information:\n%s' % format_exc())
- store_log = True
- exit = ERROR
- except BadCommand:
- e = sys.exc_info()[1]
- logger.fatal(str(e))
- logger.info('Exception information:\n%s' % format_exc())
- store_log = True
- exit = ERROR
- except CommandError:
- e = sys.exc_info()[1]
- logger.fatal('ERROR: %s' % e)
- logger.info('Exception information:\n%s' % format_exc())
- exit = ERROR
- except KeyboardInterrupt:
- logger.fatal('Operation cancelled by user')
- logger.info('Exception information:\n%s' % format_exc())
- store_log = True
- exit = ERROR
- except:
- logger.fatal('Exception:\n%s' % format_exc())
- store_log = True
- exit = UNKNOWN_ERROR
- if log_fp is not None:
- log_fp.close()
- if store_log:
- log_fn = options.log_file
- text = '\n'.join(complete_log)
- logger.fatal('Storing complete log in %s' % log_fn)
- log_fp = open_logfile(log_fn, 'w')
- log_fp.write(text)
- log_fp.close()
- return exit
-
-
-def format_exc(exc_info=None):
- if exc_info is None:
- exc_info = sys.exc_info()
- out = StringIO()
- traceback.print_exception(*exc_info, **dict(file=out))
- return out.getvalue()
-
-
-def open_logfile(filename, mode='a'):
- """Open the named log file in append mode.
-
- If the file already exists, a separator will also be printed to
- the file to separate past activity from current activity.
- """
- filename = os.path.expanduser(filename)
- filename = os.path.abspath(filename)
- dirname = os.path.dirname(filename)
- if not os.path.exists(dirname):
- os.makedirs(dirname)
- exists = os.path.exists(filename)
-
- log_fp = open(filename, mode)
- if exists:
- log_fp.write('%s\n' % ('-'*60))
- log_fp.write('%s run on %s\n' % (sys.argv[0], time.strftime('%c')))
- return log_fp
-
-
-def load_command(name):
- full_name = 'pip.commands.%s' % name
- if full_name in sys.modules:
- return
- try:
- __import__(full_name)
- except ImportError:
- pass
-
-
-def load_all_commands():
- for name in command_names():
- load_command(name)
-
-
-def command_names():
- names = set((pkg[1] for pkg in walk_packages(path=commands.__path__)))
- return list(names)
-
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/baseparser.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/baseparser.py
deleted file mode 100644
index b3864f3..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/baseparser.py
+++ /dev/null
@@ -1,226 +0,0 @@
-"""Base option parser setup"""
-
-import sys
-import optparse
-import pkg_resources
-import os
-from distutils.util import strtobool
-from pip.backwardcompat import ConfigParser, string_types
-from pip.locations import default_config_file, default_log_file
-
-
-class UpdatingDefaultsHelpFormatter(optparse.IndentedHelpFormatter):
- """Custom help formatter for use in ConfigOptionParser that updates
- the defaults before expanding them, allowing them to show up correctly
- in the help listing"""
-
- def expand_default(self, option):
- if self.parser is not None:
- self.parser.update_defaults(self.parser.defaults)
- return optparse.IndentedHelpFormatter.expand_default(self, option)
-
-
-class ConfigOptionParser(optparse.OptionParser):
- """Custom option parser which updates its defaults by by checking the
- configuration files and environmental variables"""
-
- def __init__(self, *args, **kwargs):
- self.config = ConfigParser.RawConfigParser()
- self.name = kwargs.pop('name')
- self.files = self.get_config_files()
- self.config.read(self.files)
- assert self.name
- optparse.OptionParser.__init__(self, *args, **kwargs)
-
- def get_config_files(self):
- config_file = os.environ.get('PIP_CONFIG_FILE', False)
- if config_file and os.path.exists(config_file):
- return [config_file]
- return [default_config_file]
-
- def update_defaults(self, defaults):
- """Updates the given defaults with values from the config files and
- the environ. Does a little special handling for certain types of
- options (lists)."""
- # Then go and look for the other sources of configuration:
- config = {}
- # 1. config files
- for section in ('global', self.name):
- config.update(self.normalize_keys(self.get_config_section(section)))
- # 2. environmental variables
- config.update(self.normalize_keys(self.get_environ_vars()))
- # Then set the options with those values
- for key, val in config.items():
- option = self.get_option(key)
- if option is not None:
- # ignore empty values
- if not val:
- continue
- # handle multiline configs
- if option.action == 'append':
- val = val.split()
- else:
- option.nargs = 1
- if option.action in ('store_true', 'store_false', 'count'):
- val = strtobool(val)
- try:
- val = option.convert_value(key, val)
- except optparse.OptionValueError:
- e = sys.exc_info()[1]
- print("An error occured during configuration: %s" % e)
- sys.exit(3)
- defaults[option.dest] = val
- return defaults
-
- def normalize_keys(self, items):
- """Return a config dictionary with normalized keys regardless of
- whether the keys were specified in environment variables or in config
- files"""
- normalized = {}
- for key, val in items:
- key = key.replace('_', '-')
- if not key.startswith('--'):
- key = '--%s' % key # only prefer long opts
- normalized[key] = val
- return normalized
-
- def get_config_section(self, name):
- """Get a section of a configuration"""
- if self.config.has_section(name):
- return self.config.items(name)
- return []
-
- def get_environ_vars(self, prefix='PIP_'):
- """Returns a generator with all environmental vars with prefix PIP_"""
- for key, val in os.environ.items():
- if key.startswith(prefix):
- yield (key.replace(prefix, '').lower(), val)
-
- def get_default_values(self):
- """Overridding to make updating the defaults after instantiation of
- the option parser possible, update_defaults() does the dirty work."""
- if not self.process_default_values:
- # Old, pre-Optik 1.5 behaviour.
- return optparse.Values(self.defaults)
-
- defaults = self.update_defaults(self.defaults.copy()) # ours
- for option in self._get_all_options():
- default = defaults.get(option.dest)
- if isinstance(default, string_types):
- opt_str = option.get_opt_string()
- defaults[option.dest] = option.check_value(opt_str, default)
- return optparse.Values(defaults)
-
-try:
- pip_dist = pkg_resources.get_distribution('pip')
- version = '%s from %s (python %s)' % (
- pip_dist, pip_dist.location, sys.version[:3])
-except pkg_resources.DistributionNotFound:
- # when running pip.py without installing
- version=None
-
-parser = ConfigOptionParser(
- usage='%prog COMMAND [OPTIONS]',
- version=version,
- add_help_option=False,
- formatter=UpdatingDefaultsHelpFormatter(),
- name='global')
-
-parser.add_option(
- '-h', '--help',
- dest='help',
- action='store_true',
- help='Show help')
-parser.add_option(
- # Run only if inside a virtualenv, bail if not.
- '--require-virtualenv', '--require-venv',
- dest='require_venv',
- action='store_true',
- default=False,
- help=optparse.SUPPRESS_HELP)
-
-parser.add_option(
- '-v', '--verbose',
- dest='verbose',
- action='count',
- default=0,
- help='Give more output')
-parser.add_option(
- '-q', '--quiet',
- dest='quiet',
- action='count',
- default=0,
- help='Give less output')
-parser.add_option(
- '--log',
- dest='log',
- metavar='FILENAME',
- help='Log file where a complete (maximum verbosity) record will be kept')
-parser.add_option(
- # Writes the log levels explicitely to the log'
- '--log-explicit-levels',
- dest='log_explicit_levels',
- action='store_true',
- default=False,
- help=optparse.SUPPRESS_HELP)
-parser.add_option(
- # The default log file
- '--local-log', '--log-file',
- dest='log_file',
- metavar='FILENAME',
- default=default_log_file,
- help=optparse.SUPPRESS_HELP)
-parser.add_option(
- # Don't ask for input
- '--no-input',
- dest='no_input',
- action='store_true',
- default=False,
- help=optparse.SUPPRESS_HELP)
-
-parser.add_option(
- '--proxy',
- dest='proxy',
- type='str',
- default='',
- help="Specify a proxy in the form user:passwd@proxy.server:port. "
- "Note that the user:password@ is optional and required only if you "
- "are behind an authenticated proxy. If you provide "
- "user@proxy.server:port then you will be prompted for a password.")
-parser.add_option(
- '--timeout', '--default-timeout',
- metavar='SECONDS',
- dest='timeout',
- type='float',
- default=15,
- help='Set the socket timeout (default %default seconds)')
-parser.add_option(
- # The default version control system for editables, e.g. 'svn'
- '--default-vcs',
- dest='default_vcs',
- type='str',
- default='',
- help=optparse.SUPPRESS_HELP)
-parser.add_option(
- # A regex to be used to skip requirements
- '--skip-requirements-regex',
- dest='skip_requirements_regex',
- type='str',
- default='',
- help=optparse.SUPPRESS_HELP)
-
-parser.add_option(
- # Option when path already exist
- '--exists-action',
- dest='exists_action',
- type='choice',
- choices=['s', 'i', 'w', 'b'],
- default=[],
- action='append',
- help="Default action when a path already exists."
- "Use this option more then one time to specify "
- "another action if a certain option is not "
- "available, choices: "
- "(s)witch, (i)gnore, (w)ipe, (b)ackup")
-
-parser.disable_interspersed_args()
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/__init__.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/__init__.py
deleted file mode 100644
index 792d600..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-#
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/bundle.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/bundle.py
deleted file mode 100644
index f782f1b..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/bundle.py
+++ /dev/null
@@ -1,38 +0,0 @@
-from pip.locations import build_prefix, src_prefix
-from pip.util import display_path, backup_dir
-from pip.log import logger
-from pip.exceptions import InstallationError
-from pip.commands.install import InstallCommand
-
-
-class BundleCommand(InstallCommand):
- name = 'bundle'
- usage = '%prog [OPTIONS] BUNDLE_NAME.pybundle PACKAGE_NAMES...'
- summary = 'Create pybundles (archives containing multiple packages)'
- bundle = True
-
- def __init__(self):
- super(BundleCommand, self).__init__()
- # bundle uses different default source and build dirs
- build_opt = self.parser.get_option("--build")
- build_opt.default = backup_dir(build_prefix, '-bundle')
- src_opt = self.parser.get_option("--src")
- src_opt.default = backup_dir(src_prefix, '-bundle')
- self.parser.set_defaults(**{
- src_opt.dest: src_opt.default,
- build_opt.dest: build_opt.default,
- })
-
- def run(self, options, args):
- if not args:
- raise InstallationError('You must give a bundle filename')
- # We have to get everything when creating a bundle:
- options.ignore_installed = True
- logger.notify('Putting temporary build files in %s and source/develop files in %s'
- % (display_path(options.build_dir), display_path(options.src_dir)))
- self.bundle_filename = args.pop(0)
- requirement_set = super(BundleCommand, self).run(options, args)
- return requirement_set
-
-
-BundleCommand()
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/completion.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/completion.py
deleted file mode 100644
index 5b93d9c..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/completion.py
+++ /dev/null
@@ -1,60 +0,0 @@
-import sys
-from pip.basecommand import Command
-
-BASE_COMPLETION = """
-# pip %(shell)s completion start%(script)s# pip %(shell)s completion end
-"""
-
-COMPLETION_SCRIPTS = {
- 'bash': """
-_pip_completion()
-{
- COMPREPLY=( $( COMP_WORDS="${COMP_WORDS[*]}" \\
- COMP_CWORD=$COMP_CWORD \\
- PIP_AUTO_COMPLETE=1 $1 ) )
-}
-complete -o default -F _pip_completion pip
-""", 'zsh': """
-function _pip_completion {
- local words cword
- read -Ac words
- read -cn cword
- reply=( $( COMP_WORDS="$words[*]" \\
- COMP_CWORD=$(( cword-1 )) \\
- PIP_AUTO_COMPLETE=1 $words[1] ) )
-}
-compctl -K _pip_completion pip
-"""}
-
-
-class CompletionCommand(Command):
- name = 'completion'
- summary = 'A helper command to be used for command completion'
- hidden = True
-
- def __init__(self):
- super(CompletionCommand, self).__init__()
- self.parser.add_option(
- '--bash', '-b',
- action='store_const',
- const='bash',
- dest='shell',
- help='Emit completion code for bash')
- self.parser.add_option(
- '--zsh', '-z',
- action='store_const',
- const='zsh',
- dest='shell',
- help='Emit completion code for zsh')
-
- def run(self, options, args):
- """Prints the completion code of the given shell"""
- shells = COMPLETION_SCRIPTS.keys()
- shell_options = ['--'+shell for shell in sorted(shells)]
- if options.shell in shells:
- script = COMPLETION_SCRIPTS.get(options.shell, '')
- print(BASE_COMPLETION % {'script': script, 'shell': options.shell})
- else:
- sys.stderr.write('ERROR: You must pass %s\n' % ' or '.join(shell_options))
-
-CompletionCommand()
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/freeze.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/freeze.py
deleted file mode 100644
index 03ac80f..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/freeze.py
+++ /dev/null
@@ -1,111 +0,0 @@
-import re
-import sys
-import pkg_resources
-import pip
-from pip.req import InstallRequirement
-from pip.log import logger
-from pip.basecommand import Command
-from pip.util import get_installed_distributions
-
-
-class FreezeCommand(Command):
- name = 'freeze'
- usage = '%prog [OPTIONS]'
- summary = 'Output all currently installed packages (exact versions) to stdout'
-
- def __init__(self):
- super(FreezeCommand, self).__init__()
- self.parser.add_option(
- '-r', '--requirement',
- dest='requirement',
- action='store',
- default=None,
- metavar='FILENAME',
- help='Use the given requirements file as a hint about how to generate the new frozen requirements')
- self.parser.add_option(
- '-f', '--find-links',
- dest='find_links',
- action='append',
- default=[],
- metavar='URL',
- help='URL for finding packages, which will be added to the frozen requirements file')
- self.parser.add_option(
- '-l', '--local',
- dest='local',
- action='store_true',
- default=False,
- help='If in a virtualenv, do not report globally-installed packages')
-
- def setup_logging(self):
- logger.move_stdout_to_stderr()
-
- def run(self, options, args):
- requirement = options.requirement
- find_links = options.find_links or []
- local_only = options.local
- ## FIXME: Obviously this should be settable:
- find_tags = False
- skip_match = None
-
- skip_regex = options.skip_requirements_regex
- if skip_regex:
- skip_match = re.compile(skip_regex)
-
- dependency_links = []
-
- f = sys.stdout
-
- for dist in pkg_resources.working_set:
- if dist.has_metadata('dependency_links.txt'):
- dependency_links.extend(dist.get_metadata_lines('dependency_links.txt'))
- for link in find_links:
- if '#egg=' in link:
- dependency_links.append(link)
- for link in find_links:
- f.write('-f %s\n' % link)
- installations = {}
- for dist in get_installed_distributions(local_only=local_only):
- req = pip.FrozenRequirement.from_dist(dist, dependency_links, find_tags=find_tags)
- installations[req.name] = req
- if requirement:
- req_f = open(requirement)
- for line in req_f:
- if not line.strip() or line.strip().startswith('#'):
- f.write(line)
- continue
- if skip_match and skip_match.search(line):
- f.write(line)
- continue
- elif line.startswith('-e') or line.startswith('--editable'):
- if line.startswith('-e'):
- line = line[2:].strip()
- else:
- line = line[len('--editable'):].strip().lstrip('=')
- line_req = InstallRequirement.from_editable(line, default_vcs=options.default_vcs)
- elif (line.startswith('-r') or line.startswith('--requirement')
- or line.startswith('-Z') or line.startswith('--always-unzip')
- or line.startswith('-f') or line.startswith('-i')
- or line.startswith('--extra-index-url')
- or line.startswith('--find-links')
- or line.startswith('--index-url')):
- f.write(line)
- continue
- else:
- line_req = InstallRequirement.from_line(line)
- if not line_req.name:
- logger.notify("Skipping line because it's not clear what it would install: %s"
- % line.strip())
- logger.notify(" (add #egg=PackageName to the URL to avoid this warning)")
- continue
- if line_req.name not in installations:
- logger.warn("Requirement file contains %s, but that package is not installed"
- % line.strip())
- continue
- f.write(str(installations[line_req.name]))
- del installations[line_req.name]
- f.write('## The following requirements were added by pip --freeze:\n')
- for installation in sorted(installations.values(), key=lambda x: x.name):
- f.write(str(installation))
-
-
-FreezeCommand()
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/help.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/help.py
deleted file mode 100644
index 4d504c5..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/help.py
+++ /dev/null
@@ -1,33 +0,0 @@
-from pip.basecommand import (Command, command_dict,
- load_all_commands, SUCCESS,
- ERROR)
-from pip.exceptions import CommandError
-from pip.baseparser import parser
-
-
-class HelpCommand(Command):
- name = 'help'
- usage = '%prog'
- summary = 'Show available commands'
-
- def run(self, options, args):
- load_all_commands()
- if args:
- ## FIXME: handle errors better here
- command = args[0]
- if command not in command_dict:
- raise CommandError('No command with the name: %s' % command)
- command = command_dict[command]
- command.parser.print_help()
- return SUCCESS
- parser.print_help()
- print('\nCommands available:')
- commands = list(set(command_dict.values()))
- commands.sort(key=lambda x: x.name)
- for command in commands:
- if command.hidden:
- continue
- print(' %s: %s' % (command.name, command.summary))
- return SUCCESS
-
-HelpCommand()
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/install.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/install.py
deleted file mode 100644
index 925d57f..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/install.py
+++ /dev/null
@@ -1,279 +0,0 @@
-import os
-import sys
-import tempfile
-import shutil
-from pip.req import InstallRequirement, RequirementSet
-from pip.req import parse_requirements
-from pip.log import logger
-from pip.locations import build_prefix, src_prefix
-from pip.basecommand import Command
-from pip.index import PackageFinder
-from pip.exceptions import InstallationError, CommandError
-
-
-class InstallCommand(Command):
- name = 'install'
- usage = '%prog [OPTIONS] PACKAGE_NAMES...'
- summary = 'Install packages'
- bundle = False
-
- def __init__(self):
- super(InstallCommand, self).__init__()
- self.parser.add_option(
- '-e', '--editable',
- dest='editables',
- action='append',
- default=[],
- metavar='VCS+REPOS_URL[@REV]#egg=PACKAGE',
- help='Install a package directly from a checkout. Source will be checked '
- 'out into src/PACKAGE (lower-case) and installed in-place (using '
- 'setup.py develop). You can run this on an existing directory/checkout (like '
- 'pip install -e src/mycheckout). This option may be provided multiple times. '
- 'Possible values for VCS are: svn, git, hg and bzr.')
- self.parser.add_option(
- '-r', '--requirement',
- dest='requirements',
- action='append',
- default=[],
- metavar='FILENAME',
- help='Install all the packages listed in the given requirements file. '
- 'This option can be used multiple times.')
- self.parser.add_option(
- '-f', '--find-links',
- dest='find_links',
- action='append',
- default=[],
- metavar='URL',
- help='URL to look for packages at')
- self.parser.add_option(
- '-i', '--index-url', '--pypi-url',
- dest='index_url',
- metavar='URL',
- default='http://pypi.python.org/simple/',
- help='Base URL of Python Package Index (default %default)')
- self.parser.add_option(
- '--extra-index-url',
- dest='extra_index_urls',
- metavar='URL',
- action='append',
- default=[],
- help='Extra URLs of package indexes to use in addition to --index-url')
- self.parser.add_option(
- '--no-index',
- dest='no_index',
- action='store_true',
- default=False,
- help='Ignore package index (only looking at --find-links URLs instead)')
- self.parser.add_option(
- '-M', '--use-mirrors',
- dest='use_mirrors',
- action='store_true',
- default=False,
- help='Use the PyPI mirrors as a fallback in case the main index is down.')
- self.parser.add_option(
- '--mirrors',
- dest='mirrors',
- metavar='URL',
- action='append',
- default=[],
- help='Specific mirror URLs to query when --use-mirrors is used')
-
- self.parser.add_option(
- '-b', '--build', '--build-dir', '--build-directory',
- dest='build_dir',
- metavar='DIR',
- default=build_prefix,
- help='Unpack packages into DIR (default %default) and build from there')
- self.parser.add_option(
- '-t', '--target',
- dest='target_dir',
- metavar='DIR',
- default=None,
- help='Install packages into DIR.')
- self.parser.add_option(
- '-d', '--download', '--download-dir', '--download-directory',
- dest='download_dir',
- metavar='DIR',
- default=None,
- help='Download packages into DIR instead of installing them')
- self.parser.add_option(
- '--download-cache',
- dest='download_cache',
- metavar='DIR',
- default=None,
- help='Cache downloaded packages in DIR')
- self.parser.add_option(
- '--src', '--source', '--source-dir', '--source-directory',
- dest='src_dir',
- metavar='DIR',
- default=src_prefix,
- help='Check out --editable packages into DIR (default %default)')
-
- self.parser.add_option(
- '-U', '--upgrade',
- dest='upgrade',
- action='store_true',
- help='Upgrade all packages to the newest available version')
- self.parser.add_option(
- '--force-reinstall',
- dest='force_reinstall',
- action='store_true',
- help='When upgrading, reinstall all packages even if they are '
- 'already up-to-date.')
- self.parser.add_option(
- '-I', '--ignore-installed',
- dest='ignore_installed',
- action='store_true',
- help='Ignore the installed packages (reinstalling instead)')
- self.parser.add_option(
- '--no-deps', '--no-dependencies',
- dest='ignore_dependencies',
- action='store_true',
- default=False,
- help='Ignore package dependencies')
- self.parser.add_option(
- '--no-install',
- dest='no_install',
- action='store_true',
- help="Download and unpack all packages, but don't actually install them")
- self.parser.add_option(
- '--no-download',
- dest='no_download',
- action="store_true",
- help="Don't download any packages, just install the ones already downloaded "
- "(completes an install run with --no-install)")
-
- self.parser.add_option(
- '--install-option',
- dest='install_options',
- action='append',
- help="Extra arguments to be supplied to the setup.py install "
- "command (use like --install-option=\"--install-scripts=/usr/local/bin\"). "
- "Use multiple --install-option options to pass multiple options to setup.py install. "
- "If you are using an option with a directory path, be sure to use absolute path.")
-
- self.parser.add_option(
- '--global-option',
- dest='global_options',
- action='append',
- help="Extra global options to be supplied to the setup.py"
- "call before the install command")
-
- self.parser.add_option(
- '--user',
- dest='use_user_site',
- action='store_true',
- help='Install to user-site')
-
- def _build_package_finder(self, options, index_urls):
- """
- Create a package finder appropriate to this install command.
- This method is meant to be overridden by subclasses, not
- called directly.
- """
- return PackageFinder(find_links=options.find_links,
- index_urls=index_urls,
- use_mirrors=options.use_mirrors,
- mirrors=options.mirrors)
-
- def run(self, options, args):
- if options.download_dir:
- options.no_install = True
- options.ignore_installed = True
- options.build_dir = os.path.abspath(options.build_dir)
- options.src_dir = os.path.abspath(options.src_dir)
- install_options = options.install_options or []
- if options.use_user_site:
- install_options.append('--user')
- if options.target_dir:
- options.ignore_installed = True
- temp_target_dir = tempfile.mkdtemp()
- options.target_dir = os.path.abspath(options.target_dir)
- if os.path.exists(options.target_dir) and not os.path.isdir(options.target_dir):
- raise CommandError("Target path exists but is not a directory, will not continue.")
- install_options.append('--home=' + temp_target_dir)
- global_options = options.global_options or []
- index_urls = [options.index_url] + options.extra_index_urls
- if options.no_index:
- logger.notify('Ignoring indexes: %s' % ','.join(index_urls))
- index_urls = []
-
- finder = self._build_package_finder(options, index_urls)
-
- requirement_set = RequirementSet(
- build_dir=options.build_dir,
- src_dir=options.src_dir,
- download_dir=options.download_dir,
- download_cache=options.download_cache,
- upgrade=options.upgrade,
- ignore_installed=options.ignore_installed,
- ignore_dependencies=options.ignore_dependencies,
- force_reinstall=options.force_reinstall)
- for name in args:
- requirement_set.add_requirement(
- InstallRequirement.from_line(name, None))
- for name in options.editables:
- requirement_set.add_requirement(
- InstallRequirement.from_editable(name, default_vcs=options.default_vcs))
- for filename in options.requirements:
- for req in parse_requirements(filename, finder=finder, options=options):
- requirement_set.add_requirement(req)
- if not requirement_set.has_requirements:
- opts = {'name': self.name}
- if options.find_links:
- msg = ('You must give at least one requirement to %(name)s '
- '(maybe you meant "pip %(name)s %(links)s"?)' %
- dict(opts, links=' '.join(options.find_links)))
- else:
- msg = ('You must give at least one requirement '
- 'to %(name)s (see "pip help %(name)s")' % opts)
- logger.warn(msg)
- return
-
- if (options.use_user_site and
- sys.version_info < (2, 6)):
- raise InstallationError('--user is only supported in Python version 2.6 and newer')
-
- import setuptools
- if (options.use_user_site and
- requirement_set.has_editables and
- not getattr(setuptools, '_distribute', False)):
-
- raise InstallationError('--user --editable not supported with setuptools, use distribute')
-
- if not options.no_download:
- requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
- else:
- requirement_set.locate_files()
-
- if not options.no_install and not self.bundle:
- requirement_set.install(install_options, global_options)
- installed = ' '.join([req.name for req in
- requirement_set.successfully_installed])
- if installed:
- logger.notify('Successfully installed %s' % installed)
- elif not self.bundle:
- downloaded = ' '.join([req.name for req in
- requirement_set.successfully_downloaded])
- if downloaded:
- logger.notify('Successfully downloaded %s' % downloaded)
- elif self.bundle:
- requirement_set.create_bundle(self.bundle_filename)
- logger.notify('Created bundle in %s' % self.bundle_filename)
- # Clean up
- if not options.no_install or options.download_dir:
- requirement_set.cleanup_files(bundle=self.bundle)
- if options.target_dir:
- if not os.path.exists(options.target_dir):
- os.makedirs(options.target_dir)
- lib_dir = os.path.join(temp_target_dir, "lib/python/")
- for item in os.listdir(lib_dir):
- shutil.move(
- os.path.join(lib_dir, item),
- os.path.join(options.target_dir, item)
- )
- shutil.rmtree(temp_target_dir)
- return requirement_set
-
-
-InstallCommand()
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/search.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/search.py
deleted file mode 100644
index 9f287e5..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/search.py
+++ /dev/null
@@ -1,127 +0,0 @@
-import sys
-import textwrap
-import pkg_resources
-import pip.download
-from pip.basecommand import Command, SUCCESS
-from pip.util import get_terminal_size
-from pip.log import logger
-from pip.backwardcompat import xmlrpclib, reduce, cmp
-from pip.exceptions import CommandError
-from pip.status_codes import NO_MATCHES_FOUND
-from distutils.version import StrictVersion, LooseVersion
-
-
-class SearchCommand(Command):
- name = 'search'
- usage = '%prog QUERY'
- summary = 'Search PyPI'
-
- def __init__(self):
- super(SearchCommand, self).__init__()
- self.parser.add_option(
- '--index',
- dest='index',
- metavar='URL',
- default='http://pypi.python.org/pypi',
- help='Base URL of Python Package Index (default %default)')
-
- def run(self, options, args):
- if not args:
- raise CommandError('Missing required argument (search query).')
- query = args
- index_url = options.index
-
- pypi_hits = self.search(query, index_url)
- hits = transform_hits(pypi_hits)
-
- terminal_width = None
- if sys.stdout.isatty():
- terminal_width = get_terminal_size()[0]
-
- print_results(hits, terminal_width=terminal_width)
- if pypi_hits:
- return SUCCESS
- return NO_MATCHES_FOUND
-
- def search(self, query, index_url):
- pypi = xmlrpclib.ServerProxy(index_url, pip.download.xmlrpclib_transport)
- hits = pypi.search({'name': query, 'summary': query}, 'or')
- return hits
-
-
-def transform_hits(hits):
- """
- The list from pypi is really a list of versions. We want a list of
- packages with the list of versions stored inline. This converts the
- list from pypi into one we can use.
- """
- packages = {}
- for hit in hits:
- name = hit['name']
- summary = hit['summary']
- version = hit['version']
- score = hit['_pypi_ordering']
-
- if name not in packages.keys():
- packages[name] = {'name': name, 'summary': summary, 'versions': [version], 'score': score}
- else:
- packages[name]['versions'].append(version)
-
- # if this is the highest version, replace summary and score
- if version == highest_version(packages[name]['versions']):
- packages[name]['summary'] = summary
- packages[name]['score'] = score
-
- # each record has a unique name now, so we will convert the dict into a list sorted by score
- package_list = sorted(packages.values(), key=lambda x: x['score'], reverse=True)
- return package_list
-
-
-def print_results(hits, name_column_width=25, terminal_width=None):
- installed_packages = [p.project_name for p in pkg_resources.working_set]
- for hit in hits:
- name = hit['name']
- summary = hit['summary'] or ''
- if terminal_width is not None:
- # wrap and indent summary to fit terminal
- summary = textwrap.wrap(summary, terminal_width - name_column_width - 5)
- summary = ('\n' + ' ' * (name_column_width + 3)).join(summary)
- line = '%s - %s' % (name.ljust(name_column_width), summary)
- try:
- logger.notify(line)
- if name in installed_packages:
- dist = pkg_resources.get_distribution(name)
- logger.indent += 2
- try:
- latest = highest_version(hit['versions'])
- if dist.version == latest:
- logger.notify('INSTALLED: %s (latest)' % dist.version)
- else:
- logger.notify('INSTALLED: %s' % dist.version)
- logger.notify('LATEST: %s' % latest)
- finally:
- logger.indent -= 2
- except UnicodeEncodeError:
- pass
-
-
-def compare_versions(version1, version2):
- try:
- return cmp(StrictVersion(version1), StrictVersion(version2))
- # in case of abnormal version number, fall back to LooseVersion
- except ValueError:
- pass
- try:
- return cmp(LooseVersion(version1), LooseVersion(version2))
- except TypeError:
- # certain LooseVersion comparions raise due to unorderable types,
- # fallback to string comparison
- return cmp([str(v) for v in LooseVersion(version1).version],
- [str(v) for v in LooseVersion(version2).version])
-
-
-def highest_version(versions):
- return reduce((lambda v1, v2: compare_versions(v1, v2) == 1 and v1 or v2), versions)
-
-
-SearchCommand()
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/uninstall.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/uninstall.py
deleted file mode 100644
index 9f2b891..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/uninstall.py
+++ /dev/null
@@ -1,43 +0,0 @@
-from pip.req import InstallRequirement, RequirementSet, parse_requirements
-from pip.basecommand import Command
-from pip.exceptions import InstallationError
-
-
-class UninstallCommand(Command):
- name = 'uninstall'
- usage = '%prog [OPTIONS] PACKAGE_NAMES ...'
- summary = 'Uninstall packages'
-
- def __init__(self):
- super(UninstallCommand, self).__init__()
- self.parser.add_option(
- '-r', '--requirement',
- dest='requirements',
- action='append',
- default=[],
- metavar='FILENAME',
- help='Uninstall all the packages listed in the given requirements file. '
- 'This option can be used multiple times.')
- self.parser.add_option(
- '-y', '--yes',
- dest='yes',
- action='store_true',
- help="Don't ask for confirmation of uninstall deletions.")
-
- def run(self, options, args):
- requirement_set = RequirementSet(
- build_dir=None,
- src_dir=None,
- download_dir=None)
- for name in args:
- requirement_set.add_requirement(
- InstallRequirement.from_line(name))
- for filename in options.requirements:
- for req in parse_requirements(filename, options=options):
- requirement_set.add_requirement(req)
- if not requirement_set.has_requirements:
- raise InstallationError('You must give at least one requirement '
- 'to %(name)s (see "pip help %(name)s")' % dict(name=self.name))
- requirement_set.uninstall(auto_confirm=options.yes)
-
-UninstallCommand()
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/unzip.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/unzip.py
deleted file mode 100644
index f83e182..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/unzip.py
+++ /dev/null
@@ -1,9 +0,0 @@
-from pip.commands.zip import ZipCommand
-
-
-class UnzipCommand(ZipCommand):
- name = 'unzip'
- summary = 'Unzip individual packages'
-
-
-UnzipCommand()
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/zip.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/zip.py
deleted file mode 100644
index ebe1d79..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/commands/zip.py
+++ /dev/null
@@ -1,346 +0,0 @@
-import sys
-import re
-import fnmatch
-import os
-import shutil
-import zipfile
-from pip.util import display_path, backup_dir, rmtree
-from pip.log import logger
-from pip.exceptions import InstallationError
-from pip.basecommand import Command
-
-
-class ZipCommand(Command):
- name = 'zip'
- usage = '%prog [OPTIONS] PACKAGE_NAMES...'
- summary = 'Zip individual packages'
-
- def __init__(self):
- super(ZipCommand, self).__init__()
- if self.name == 'zip':
- self.parser.add_option(
- '--unzip',
- action='store_true',
- dest='unzip',
- help='Unzip (rather than zip) a package')
- else:
- self.parser.add_option(
- '--zip',
- action='store_false',
- dest='unzip',
- default=True,
- help='Zip (rather than unzip) a package')
- self.parser.add_option(
- '--no-pyc',
- action='store_true',
- dest='no_pyc',
- help='Do not include .pyc files in zip files (useful on Google App Engine)')
- self.parser.add_option(
- '-l', '--list',
- action='store_true',
- dest='list',
- help='List the packages available, and their zip status')
- self.parser.add_option(
- '--sort-files',
- action='store_true',
- dest='sort_files',
- help='With --list, sort packages according to how many files they contain')
- self.parser.add_option(
- '--path',
- action='append',
- dest='paths',
- help='Restrict operations to the given paths (may include wildcards)')
- self.parser.add_option(
- '-n', '--simulate',
- action='store_true',
- help='Do not actually perform the zip/unzip operation')
-
- def paths(self):
- """All the entries of sys.path, possibly restricted by --path"""
- if not self.select_paths:
- return sys.path
- result = []
- match_any = set()
- for path in sys.path:
- path = os.path.normcase(os.path.abspath(path))
- for match in self.select_paths:
- match = os.path.normcase(os.path.abspath(match))
- if '*' in match:
- if re.search(fnmatch.translate(match+'*'), path):
- result.append(path)
- match_any.add(match)
- break
- else:
- if path.startswith(match):
- result.append(path)
- match_any.add(match)
- break
- else:
- logger.debug("Skipping path %s because it doesn't match %s"
- % (path, ', '.join(self.select_paths)))
- for match in self.select_paths:
- if match not in match_any and '*' not in match:
- result.append(match)
- logger.debug("Adding path %s because it doesn't match anything already on sys.path"
- % match)
- return result
-
- def run(self, options, args):
- self.select_paths = options.paths
- self.simulate = options.simulate
- if options.list:
- return self.list(options, args)
- if not args:
- raise InstallationError(
- 'You must give at least one package to zip or unzip')
- packages = []
- for arg in args:
- module_name, filename = self.find_package(arg)
- if options.unzip and os.path.isdir(filename):
- raise InstallationError(
- 'The module %s (in %s) is not a zip file; cannot be unzipped'
- % (module_name, filename))
- elif not options.unzip and not os.path.isdir(filename):
- raise InstallationError(
- 'The module %s (in %s) is not a directory; cannot be zipped'
- % (module_name, filename))
- packages.append((module_name, filename))
- last_status = None
- for module_name, filename in packages:
- if options.unzip:
- last_status = self.unzip_package(module_name, filename)
- else:
- last_status = self.zip_package(module_name, filename, options.no_pyc)
- return last_status
-
- def unzip_package(self, module_name, filename):
- zip_filename = os.path.dirname(filename)
- if not os.path.isfile(zip_filename) and zipfile.is_zipfile(zip_filename):
- raise InstallationError(
- 'Module %s (in %s) isn\'t located in a zip file in %s'
- % (module_name, filename, zip_filename))
- package_path = os.path.dirname(zip_filename)
- if not package_path in self.paths():
- logger.warn(
- 'Unpacking %s into %s, but %s is not on sys.path'
- % (display_path(zip_filename), display_path(package_path),
- display_path(package_path)))
- logger.notify('Unzipping %s (in %s)' % (module_name, display_path(zip_filename)))
- if self.simulate:
- logger.notify('Skipping remaining operations because of --simulate')
- return
- logger.indent += 2
- try:
- ## FIXME: this should be undoable:
- zip = zipfile.ZipFile(zip_filename)
- to_save = []
- for name in zip.namelist():
- if name.startswith(module_name + os.path.sep):
- content = zip.read(name)
- dest = os.path.join(package_path, name)
- if not os.path.exists(os.path.dirname(dest)):
- os.makedirs(os.path.dirname(dest))
- if not content and dest.endswith(os.path.sep):
- if not os.path.exists(dest):
- os.makedirs(dest)
- else:
- f = open(dest, 'wb')
- f.write(content)
- f.close()
- else:
- to_save.append((name, zip.read(name)))
- zip.close()
- if not to_save:
- logger.info('Removing now-empty zip file %s' % display_path(zip_filename))
- os.unlink(zip_filename)
- self.remove_filename_from_pth(zip_filename)
- else:
- logger.info('Removing entries in %s/ from zip file %s' % (module_name, display_path(zip_filename)))
- zip = zipfile.ZipFile(zip_filename, 'w')
- for name, content in to_save:
- zip.writestr(name, content)
- zip.close()
- finally:
- logger.indent -= 2
-
- def zip_package(self, module_name, filename, no_pyc):
- orig_filename = filename
- logger.notify('Zip %s (in %s)' % (module_name, display_path(filename)))
- logger.indent += 2
- if filename.endswith('.egg'):
- dest_filename = filename
- else:
- dest_filename = filename + '.zip'
- try:
- ## FIXME: I think this needs to be undoable:
- if filename == dest_filename:
- filename = backup_dir(orig_filename)
- logger.notify('Moving %s aside to %s' % (orig_filename, filename))
- if not self.simulate:
- shutil.move(orig_filename, filename)
- try:
- logger.info('Creating zip file in %s' % display_path(dest_filename))
- if not self.simulate:
- zip = zipfile.ZipFile(dest_filename, 'w')
- zip.writestr(module_name + '/', '')
- for dirpath, dirnames, filenames in os.walk(filename):
- if no_pyc:
- filenames = [f for f in filenames
- if not f.lower().endswith('.pyc')]
- for fns, is_dir in [(dirnames, True), (filenames, False)]:
- for fn in fns:
- full = os.path.join(dirpath, fn)
- dest = os.path.join(module_name, dirpath[len(filename):].lstrip(os.path.sep), fn)
- if is_dir:
- zip.writestr(dest+'/', '')
- else:
- zip.write(full, dest)
- zip.close()
- logger.info('Removing old directory %s' % display_path(filename))
- if not self.simulate:
- rmtree(filename)
- except:
- ## FIXME: need to do an undo here
- raise
- ## FIXME: should also be undone:
- self.add_filename_to_pth(dest_filename)
- finally:
- logger.indent -= 2
-
- def remove_filename_from_pth(self, filename):
- for pth in self.pth_files():
- f = open(pth, 'r')
- lines = f.readlines()
- f.close()
- new_lines = [
- l for l in lines if l.strip() != filename]
- if lines != new_lines:
- logger.info('Removing reference to %s from .pth file %s'
- % (display_path(filename), display_path(pth)))
- if not [line for line in new_lines if line]:
- logger.info('%s file would be empty: deleting' % display_path(pth))
- if not self.simulate:
- os.unlink(pth)
- else:
- if not self.simulate:
- f = open(pth, 'wb')
- f.writelines(new_lines)
- f.close()
- return
- logger.warn('Cannot find a reference to %s in any .pth file' % display_path(filename))
-
- def add_filename_to_pth(self, filename):
- path = os.path.dirname(filename)
- dest = os.path.join(path, filename + '.pth')
- if path not in self.paths():
- logger.warn('Adding .pth file %s, but it is not on sys.path' % display_path(dest))
- if not self.simulate:
- if os.path.exists(dest):
- f = open(dest)
- lines = f.readlines()
- f.close()
- if lines and not lines[-1].endswith('\n'):
- lines[-1] += '\n'
- lines.append(filename+'\n')
- else:
- lines = [filename + '\n']
- f = open(dest, 'wb')
- f.writelines(lines)
- f.close()
-
- def pth_files(self):
- for path in self.paths():
- if not os.path.exists(path) or not os.path.isdir(path):
- continue
- for filename in os.listdir(path):
- if filename.endswith('.pth'):
- yield os.path.join(path, filename)
-
- def find_package(self, package):
- for path in self.paths():
- full = os.path.join(path, package)
- if os.path.exists(full):
- return package, full
- if not os.path.isdir(path) and zipfile.is_zipfile(path):
- zip = zipfile.ZipFile(path, 'r')
- try:
- zip.read(os.path.join(package, '__init__.py'))
- except KeyError:
- pass
- else:
- zip.close()
- return package, full
- zip.close()
- ## FIXME: need special error for package.py case:
- raise InstallationError(
- 'No package with the name %s found' % package)
-
- def list(self, options, args):
- if args:
- raise InstallationError(
- 'You cannot give an argument with --list')
- for path in sorted(self.paths()):
- if not os.path.exists(path):
- continue
- basename = os.path.basename(path.rstrip(os.path.sep))
- if os.path.isfile(path) and zipfile.is_zipfile(path):
- if os.path.dirname(path) not in self.paths():
- logger.notify('Zipped egg: %s' % display_path(path))
- continue
- if (basename != 'site-packages' and basename != 'dist-packages'
- and not path.replace('\\', '/').endswith('lib/python')):
- continue
- logger.notify('In %s:' % display_path(path))
- logger.indent += 2
- zipped = []
- unzipped = []
- try:
- for filename in sorted(os.listdir(path)):
- ext = os.path.splitext(filename)[1].lower()
- if ext in ('.pth', '.egg-info', '.egg-link'):
- continue
- if ext == '.py':
- logger.info('Not displaying %s: not a package' % display_path(filename))
- continue
- full = os.path.join(path, filename)
- if os.path.isdir(full):
- unzipped.append((filename, self.count_package(full)))
- elif zipfile.is_zipfile(full):
- zipped.append(filename)
- else:
- logger.info('Unknown file: %s' % display_path(filename))
- if zipped:
- logger.notify('Zipped packages:')
- logger.indent += 2
- try:
- for filename in zipped:
- logger.notify(filename)
- finally:
- logger.indent -= 2
- else:
- logger.notify('No zipped packages.')
- if unzipped:
- if options.sort_files:
- unzipped.sort(key=lambda x: -x[1])
- logger.notify('Unzipped packages:')
- logger.indent += 2
- try:
- for filename, count in unzipped:
- logger.notify('%s (%i files)' % (filename, count))
- finally:
- logger.indent -= 2
- else:
- logger.notify('No unzipped packages.')
- finally:
- logger.indent -= 2
-
- def count_package(self, path):
- total = 0
- for dirpath, dirnames, filenames in os.walk(path):
- filenames = [f for f in filenames
- if not f.lower().endswith('.pyc')]
- total += len(filenames)
- return total
-
-
-ZipCommand()
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/download.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/download.py
deleted file mode 100644
index a31e5d6..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/download.py
+++ /dev/null
@@ -1,481 +0,0 @@
-import cgi
-import getpass
-import mimetypes
-import os
-import re
-import shutil
-import sys
-import tempfile
-from pip.backwardcompat import (md5, copytree, xmlrpclib, urllib, urllib2,
- urlparse, string_types, HTTPError)
-from pip.exceptions import InstallationError
-from pip.util import (splitext, rmtree, format_size, display_path,
- backup_dir, ask, ask_path_exists, unpack_file,
- create_download_cache_folder, cache_download)
-from pip.vcs import vcs
-from pip.log import logger
-
-
-__all__ = ['xmlrpclib_transport', 'get_file_content', 'urlopen',
- 'is_url', 'url_to_path', 'path_to_url', 'path_to_url2',
- 'geturl', 'is_archive_file', 'unpack_vcs_link',
- 'unpack_file_url', 'is_vcs_url', 'is_file_url', 'unpack_http_url']
-
-
-xmlrpclib_transport = xmlrpclib.Transport()
-
-
-def get_file_content(url, comes_from=None):
- """Gets the content of a file; it may be a filename, file: URL, or
- http: URL. Returns (location, content)"""
- match = _scheme_re.search(url)
- if match:
- scheme = match.group(1).lower()
- if (scheme == 'file' and comes_from
- and comes_from.startswith('http')):
- raise InstallationError(
- 'Requirements file %s references URL %s, which is local'
- % (comes_from, url))
- if scheme == 'file':
- path = url.split(':', 1)[1]
- path = path.replace('\\', '/')
- match = _url_slash_drive_re.match(path)
- if match:
- path = match.group(1) + ':' + path.split('|', 1)[1]
- path = urllib.unquote(path)
- if path.startswith('/'):
- path = '/' + path.lstrip('/')
- url = path
- else:
- ## FIXME: catch some errors
- resp = urlopen(url)
- return geturl(resp), resp.read()
- try:
- f = open(url)
- content = f.read()
- except IOError:
- e = sys.exc_info()[1]
- raise InstallationError('Could not open requirements file: %s' % str(e))
- else:
- f.close()
- return url, content
-
-
-_scheme_re = re.compile(r'^(http|https|file):', re.I)
-_url_slash_drive_re = re.compile(r'/*([a-z])\|', re.I)
-
-
-class URLOpener(object):
- """
- pip's own URL helper that adds HTTP auth and proxy support
- """
- def __init__(self):
- self.passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
-
- def __call__(self, url):
- """
- If the given url contains auth info or if a normal request gets a 401
- response, an attempt is made to fetch the resource using basic HTTP
- auth.
-
- """
- url, username, password = self.extract_credentials(url)
- if username is None:
- try:
- response = urllib2.urlopen(self.get_request(url))
- except urllib2.HTTPError:
- e = sys.exc_info()[1]
- if e.code != 401:
- raise
- response = self.get_response(url)
- else:
- response = self.get_response(url, username, password)
- return response
-
- def get_request(self, url):
- """
- Wraps the URL to retrieve to protects against "creative"
- interpretation of the RFC: http://bugs.python.org/issue8732
- """
- if isinstance(url, string_types):
- url = urllib2.Request(url, headers={'Accept-encoding': 'identity'})
- return url
-
- def get_response(self, url, username=None, password=None):
- """
- does the dirty work of actually getting the rsponse object using urllib2
- and its HTTP auth builtins.
- """
- scheme, netloc, path, query, frag = urlparse.urlsplit(url)
- req = self.get_request(url)
-
- stored_username, stored_password = self.passman.find_user_password(None, netloc)
- # see if we have a password stored
- if stored_username is None:
- if username is None and self.prompting:
- username = urllib.quote(raw_input('User for %s: ' % netloc))
- password = urllib.quote(getpass.getpass('Password: '))
- if username and password:
- self.passman.add_password(None, netloc, username, password)
- stored_username, stored_password = self.passman.find_user_password(None, netloc)
- authhandler = urllib2.HTTPBasicAuthHandler(self.passman)
- opener = urllib2.build_opener(authhandler)
- # FIXME: should catch a 401 and offer to let the user reenter credentials
- return opener.open(req)
-
- def setup(self, proxystr='', prompting=True):
- """
- Sets the proxy handler given the option passed on the command
- line. If an empty string is passed it looks at the HTTP_PROXY
- environment variable.
- """
- self.prompting = prompting
- proxy = self.get_proxy(proxystr)
- if proxy:
- proxy_support = urllib2.ProxyHandler({"http": proxy, "ftp": proxy, "https": proxy})
- opener = urllib2.build_opener(proxy_support, urllib2.CacheFTPHandler)
- urllib2.install_opener(opener)
-
- def parse_credentials(self, netloc):
- if "@" in netloc:
- userinfo = netloc.rsplit("@", 1)[0]
- if ":" in userinfo:
- return userinfo.split(":", 1)
- return userinfo, None
- return None, None
-
- def extract_credentials(self, url):
- """
- Extracts user/password from a url.
-
- Returns a tuple:
- (url-without-auth, username, password)
- """
- if isinstance(url, urllib2.Request):
- result = urlparse.urlsplit(url.get_full_url())
- else:
- result = urlparse.urlsplit(url)
- scheme, netloc, path, query, frag = result
-
- username, password = self.parse_credentials(netloc)
- if username is None:
- return url, None, None
- elif password is None and self.prompting:
- # remove the auth credentials from the url part
- netloc = netloc.replace('%s@' % username, '', 1)
- # prompt for the password
- prompt = 'Password for %s@%s: ' % (username, netloc)
- password = urllib.quote(getpass.getpass(prompt))
- else:
- # remove the auth credentials from the url part
- netloc = netloc.replace('%s:%s@' % (username, password), '', 1)
-
- target_url = urlparse.urlunsplit((scheme, netloc, path, query, frag))
- return target_url, username, password
-
- def get_proxy(self, proxystr=''):
- """
- Get the proxy given the option passed on the command line.
- If an empty string is passed it looks at the HTTP_PROXY
- environment variable.
- """
- if not proxystr:
- proxystr = os.environ.get('HTTP_PROXY', '')
- if proxystr:
- if '@' in proxystr:
- user_password, server_port = proxystr.split('@', 1)
- if ':' in user_password:
- user, password = user_password.split(':', 1)
- else:
- user = user_password
- prompt = 'Password for %s@%s: ' % (user, server_port)
- password = urllib.quote(getpass.getpass(prompt))
- return '%s:%s@%s' % (user, password, server_port)
- else:
- return proxystr
- else:
- return None
-
-urlopen = URLOpener()
-
-
-def is_url(name):
- """Returns true if the name looks like a URL"""
- if ':' not in name:
- return False
- scheme = name.split(':', 1)[0].lower()
- return scheme in ['http', 'https', 'file', 'ftp'] + vcs.all_schemes
-
-
-def url_to_path(url):
- """
- Convert a file: URL to a path.
- """
- assert url.startswith('file:'), (
- "You can only turn file: urls into filenames (not %r)" % url)
- path = url[len('file:'):].lstrip('/')
- path = urllib.unquote(path)
- if _url_drive_re.match(path):
- path = path[0] + ':' + path[2:]
- else:
- path = '/' + path
- return path
-
-
-_drive_re = re.compile('^([a-z]):', re.I)
-_url_drive_re = re.compile('^([a-z])[:|]', re.I)
-
-
-def path_to_url(path):
- """
- Convert a path to a file: URL. The path will be made absolute.
- """
- path = os.path.normcase(os.path.abspath(path))
- if _drive_re.match(path):
- path = path[0] + '|' + path[2:]
- url = urllib.quote(path)
- url = url.replace(os.path.sep, '/')
- url = url.lstrip('/')
- return 'file:///' + url
-
-
-def path_to_url2(path):
- """
- Convert a path to a file: URL. The path will be made absolute and have
- quoted path parts.
- """
- path = os.path.normpath(os.path.abspath(path))
- drive, path = os.path.splitdrive(path)
- filepath = path.split(os.path.sep)
- url = '/'.join([urllib.quote(part) for part in filepath])
- if not drive:
- url = url.lstrip('/')
- return 'file:///' + drive + url
-
-
-def geturl(urllib2_resp):
- """
- Use instead of urllib.addinfourl.geturl(), which appears to have
- some issues with dropping the double slash for certain schemes
- (e.g. file://). This implementation is probably over-eager, as it
- always restores '://' if it is missing, and it appears some url
- schemata aren't always followed by '//' after the colon, but as
- far as I know pip doesn't need any of those.
- The URI RFC can be found at: http://tools.ietf.org/html/rfc1630
-
- This function assumes that
- scheme:/foo/bar
- is the same as
- scheme:///foo/bar
- """
- url = urllib2_resp.geturl()
- scheme, rest = url.split(':', 1)
- if rest.startswith('//'):
- return url
- else:
- # FIXME: write a good test to cover it
- return '%s://%s' % (scheme, rest)
-
-
-def is_archive_file(name):
- """Return True if `name` is a considered as an archive file."""
- archives = ('.zip', '.tar.gz', '.tar.bz2', '.tgz', '.tar', '.pybundle')
- ext = splitext(name)[1].lower()
- if ext in archives:
- return True
- return False
-
-
-def unpack_vcs_link(link, location, only_download=False):
- vcs_backend = _get_used_vcs_backend(link)
- if only_download:
- vcs_backend.export(location)
- else:
- vcs_backend.unpack(location)
-
-
-def unpack_file_url(link, location):
- source = url_to_path(link.url)
- content_type = mimetypes.guess_type(source)[0]
- if os.path.isdir(source):
- # delete the location since shutil will create it again :(
- if os.path.isdir(location):
- rmtree(location)
- copytree(source, location)
- else:
- unpack_file(source, location, content_type, link)
-
-
-def _get_used_vcs_backend(link):
- for backend in vcs.backends:
- if link.scheme in backend.schemes:
- vcs_backend = backend(link.url)
- return vcs_backend
-
-
-def is_vcs_url(link):
- return bool(_get_used_vcs_backend(link))
-
-
-def is_file_url(link):
- return link.url.lower().startswith('file:')
-
-
-def _check_md5(download_hash, link):
- download_hash = download_hash.hexdigest()
- if download_hash != link.md5_hash:
- logger.fatal("MD5 hash of the package %s (%s) doesn't match the expected hash %s!"
- % (link, download_hash, link.md5_hash))
- raise InstallationError('Bad MD5 hash for package %s' % link)
-
-
-def _get_md5_from_file(target_file, link):
- download_hash = md5()
- fp = open(target_file, 'rb')
- while True:
- chunk = fp.read(4096)
- if not chunk:
- break
- download_hash.update(chunk)
- fp.close()
- return download_hash
-
-
-def _download_url(resp, link, temp_location):
- fp = open(temp_location, 'wb')
- download_hash = None
- if link.md5_hash:
- download_hash = md5()
- try:
- total_length = int(resp.info()['content-length'])
- except (ValueError, KeyError, TypeError):
- total_length = 0
- downloaded = 0
- show_progress = total_length > 40*1000 or not total_length
- show_url = link.show_url
- try:
- if show_progress:
- ## FIXME: the URL can get really long in this message:
- if total_length:
- logger.start_progress('Downloading %s (%s): ' % (show_url, format_size(total_length)))
- else:
- logger.start_progress('Downloading %s (unknown size): ' % show_url)
- else:
- logger.notify('Downloading %s' % show_url)
- logger.debug('Downloading from URL %s' % link)
-
- while True:
- chunk = resp.read(4096)
- if not chunk:
- break
- downloaded += len(chunk)
- if show_progress:
- if not total_length:
- logger.show_progress('%s' % format_size(downloaded))
- else:
- logger.show_progress('%3i%% %s' % (100*downloaded/total_length, format_size(downloaded)))
- if link.md5_hash:
- download_hash.update(chunk)
- fp.write(chunk)
- fp.close()
- finally:
- if show_progress:
- logger.end_progress('%s downloaded' % format_size(downloaded))
- return download_hash
-
-
-def _copy_file(filename, location, content_type, link):
- copy = True
- download_location = os.path.join(location, link.filename)
- if os.path.exists(download_location):
- response = ask_path_exists(
- 'The file %s exists. (i)gnore, (w)ipe, (b)ackup ' %
- display_path(download_location), ('i', 'w', 'b'))
- if response == 'i':
- copy = False
- elif response == 'w':
- logger.warn('Deleting %s' % display_path(download_location))
- os.remove(download_location)
- elif response == 'b':
- dest_file = backup_dir(download_location)
- logger.warn('Backing up %s to %s'
- % (display_path(download_location), display_path(dest_file)))
- shutil.move(download_location, dest_file)
- if copy:
- shutil.copy(filename, download_location)
- logger.indent -= 2
- logger.notify('Saved %s' % display_path(download_location))
-
-
-def unpack_http_url(link, location, download_cache, download_dir=None):
- temp_dir = tempfile.mkdtemp('-unpack', 'pip-')
- target_url = link.url.split('#', 1)[0]
- target_file = None
- download_hash = None
- if download_cache:
- target_file = os.path.join(download_cache,
- urllib.quote(target_url, ''))
- if not os.path.isdir(download_cache):
- create_download_cache_folder(download_cache)
- if (target_file
- and os.path.exists(target_file)
- and os.path.exists(target_file + '.content-type')):
- fp = open(target_file+'.content-type')
- content_type = fp.read().strip()
- fp.close()
- if link.md5_hash:
- download_hash = _get_md5_from_file(target_file, link)
- temp_location = target_file
- logger.notify('Using download cache from %s' % target_file)
- else:
- resp = _get_response_from_url(target_url, link)
- content_type = resp.info()['content-type']
- filename = link.filename # fallback
- # Have a look at the Content-Disposition header for a better guess
- content_disposition = resp.info().get('content-disposition')
- if content_disposition:
- type, params = cgi.parse_header(content_disposition)
- # We use ``or`` here because we don't want to use an "empty" value
- # from the filename param.
- filename = params.get('filename') or filename
- ext = splitext(filename)[1]
- if not ext:
- ext = mimetypes.guess_extension(content_type)
- if ext:
- filename += ext
- if not ext and link.url != geturl(resp):
- ext = os.path.splitext(geturl(resp))[1]
- if ext:
- filename += ext
- temp_location = os.path.join(temp_dir, filename)
- download_hash = _download_url(resp, link, temp_location)
- if link.md5_hash:
- _check_md5(download_hash, link)
- if download_dir:
- _copy_file(temp_location, download_dir, content_type, link)
- unpack_file(temp_location, location, content_type, link)
- if target_file and target_file != temp_location:
- cache_download(target_file, temp_location, content_type)
- if target_file is None:
- os.unlink(temp_location)
- os.rmdir(temp_dir)
-
-
-def _get_response_from_url(target_url, link):
- try:
- resp = urlopen(target_url)
- except urllib2.HTTPError:
- e = sys.exc_info()[1]
- logger.fatal("HTTP error %s while getting %s" % (e.code, link))
- raise
- except IOError:
- e = sys.exc_info()[1]
- # Typically an FTP error
- logger.fatal("Error %s while getting %s" % (e, link))
- raise
- return resp
-
-
-class Urllib2HeadRequest(urllib2.Request):
- def get_method(self):
- return "HEAD"
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/exceptions.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/exceptions.py
deleted file mode 100644
index 22f554a..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/exceptions.py
+++ /dev/null
@@ -1,27 +0,0 @@
-"""Exceptions used throughout package"""
-
-
-class InstallationError(Exception):
- """General exception during installation"""
-
-
-class UninstallationError(Exception):
- """General exception during uninstallation"""
-
-
-class DistributionNotFound(InstallationError):
- """Raised when a distribution cannot be found to satisfy a requirement"""
-
-
-class BestVersionAlreadyInstalled(Exception):
- """Raised when the most up-to-date version of a package is already
- installed.
- """
-
-
-class BadCommand(Exception):
- """Raised when virtualenv or a command is not found"""
-
-
-class CommandError(Exception):
- """Raised when there is an error in command-line arguments"""
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/index.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/index.py
deleted file mode 100644
index 8e53e44..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/index.py
+++ /dev/null
@@ -1,708 +0,0 @@
-"""Routines related to PyPI, indexes"""
-
-import sys
-import os
-import re
-import gzip
-import mimetypes
-try:
- import threading
-except ImportError:
- import dummy_threading as threading
-import posixpath
-import pkg_resources
-import random
-import socket
-import string
-import zlib
-from pip.log import logger
-from pip.util import Inf
-from pip.util import normalize_name, splitext
-from pip.exceptions import DistributionNotFound, BestVersionAlreadyInstalled
-from pip.backwardcompat import (WindowsError, BytesIO,
- Queue, httplib, urlparse,
- URLError, HTTPError, u,
- product, url2pathname)
-from pip.backwardcompat import Empty as QueueEmpty
-from pip.download import urlopen, path_to_url2, url_to_path, geturl, Urllib2HeadRequest
-
-__all__ = ['PackageFinder']
-
-
-DEFAULT_MIRROR_URL = "last.pypi.python.org"
-
-
-class PackageFinder(object):
- """This finds packages.
-
- This is meant to match easy_install's technique for looking for
- packages, by reading pages and looking for appropriate links
- """
-
- def __init__(self, find_links, index_urls,
- use_mirrors=False, mirrors=None, main_mirror_url=None):
- self.find_links = find_links
- self.index_urls = index_urls
- self.dependency_links = []
- self.cache = PageCache()
- # These are boring links that have already been logged somehow:
- self.logged_links = set()
- if use_mirrors:
- self.mirror_urls = self._get_mirror_urls(mirrors, main_mirror_url)
- logger.info('Using PyPI mirrors: %s' % ', '.join(self.mirror_urls))
- else:
- self.mirror_urls = []
-
- def add_dependency_links(self, links):
- ## FIXME: this shouldn't be global list this, it should only
- ## apply to requirements of the package that specifies the
- ## dependency_links value
- ## FIXME: also, we should track comes_from (i.e., use Link)
- self.dependency_links.extend(links)
-
- @staticmethod
- def _sort_locations(locations):
- """
- Sort locations into "files" (archives) and "urls", and return
- a pair of lists (files,urls)
- """
- files = []
- urls = []
-
- # puts the url for the given file path into the appropriate
- # list
- def sort_path(path):
- url = path_to_url2(path)
- if mimetypes.guess_type(url, strict=False)[0] == 'text/html':
- urls.append(url)
- else:
- files.append(url)
-
- for url in locations:
- if url.startswith('file:'):
- path = url_to_path(url)
- if os.path.isdir(path):
- path = os.path.realpath(path)
- for item in os.listdir(path):
- sort_path(os.path.join(path, item))
- elif os.path.isfile(path):
- sort_path(path)
- else:
- urls.append(url)
- return files, urls
-
- def find_requirement(self, req, upgrade):
- url_name = req.url_name
- # Only check main index if index URL is given:
- main_index_url = None
- if self.index_urls:
- # Check that we have the url_name correctly spelled:
- main_index_url = Link(posixpath.join(self.index_urls[0], url_name))
- # This will also cache the page, so it's okay that we get it again later:
- page = self._get_page(main_index_url, req)
- if page is None:
- url_name = self._find_url_name(Link(self.index_urls[0]), url_name, req) or req.url_name
-
- # Combine index URLs with mirror URLs here to allow
- # adding more index URLs from requirements files
- all_index_urls = self.index_urls + self.mirror_urls
-
- def mkurl_pypi_url(url):
- loc = posixpath.join(url, url_name)
- # For maximum compatibility with easy_install, ensure the path
- # ends in a trailing slash. Although this isn't in the spec
- # (and PyPI can handle it without the slash) some other index
- # implementations might break if they relied on easy_install's behavior.
- if not loc.endswith('/'):
- loc = loc + '/'
- return loc
- if url_name is not None:
- locations = [
- mkurl_pypi_url(url)
- for url in all_index_urls] + self.find_links
- else:
- locations = list(self.find_links)
- locations.extend(self.dependency_links)
- for version in req.absolute_versions:
- if url_name is not None and main_index_url is not None:
- locations = [
- posixpath.join(main_index_url.url, version)] + locations
-
- file_locations, url_locations = self._sort_locations(locations)
-
- locations = [Link(url) for url in url_locations]
- logger.debug('URLs to search for versions for %s:' % req)
- for location in locations:
- logger.debug('* %s' % location)
- found_versions = []
- found_versions.extend(
- self._package_versions(
- [Link(url, '-f') for url in self.find_links], req.name.lower()))
- page_versions = []
- for page in self._get_pages(locations, req):
- logger.debug('Analyzing links from page %s' % page.url)
- logger.indent += 2
- try:
- page_versions.extend(self._package_versions(page.links, req.name.lower()))
- finally:
- logger.indent -= 2
- dependency_versions = list(self._package_versions(
- [Link(url) for url in self.dependency_links], req.name.lower()))
- if dependency_versions:
- logger.info('dependency_links found: %s' % ', '.join([link.url for parsed, link, version in dependency_versions]))
- file_versions = list(self._package_versions(
- [Link(url) for url in file_locations], req.name.lower()))
- if not found_versions and not page_versions and not dependency_versions and not file_versions:
- logger.fatal('Could not find any downloads that satisfy the requirement %s' % req)
- raise DistributionNotFound('No distributions at all found for %s' % req)
- if req.satisfied_by is not None:
- found_versions.append((req.satisfied_by.parsed_version, Inf, req.satisfied_by.version))
- if file_versions:
- file_versions.sort(reverse=True)
- logger.info('Local files found: %s' % ', '.join([url_to_path(link.url) for parsed, link, version in file_versions]))
- found_versions = file_versions + found_versions
- all_versions = found_versions + page_versions + dependency_versions
- applicable_versions = []
- for (parsed_version, link, version) in all_versions:
- if version not in req.req:
- logger.info("Ignoring link %s, version %s doesn't match %s"
- % (link, version, ','.join([''.join(s) for s in req.req.specs])))
- continue
- applicable_versions.append((link, version))
- applicable_versions = sorted(applicable_versions, key=lambda v: pkg_resources.parse_version(v[1]), reverse=True)
- existing_applicable = bool([link for link, version in applicable_versions if link is Inf])
- if not upgrade and existing_applicable:
- if applicable_versions[0][1] is Inf:
- logger.info('Existing installed version (%s) is most up-to-date and satisfies requirement'
- % req.satisfied_by.version)
- raise BestVersionAlreadyInstalled
- else:
- logger.info('Existing installed version (%s) satisfies requirement (most up-to-date version is %s)'
- % (req.satisfied_by.version, applicable_versions[0][1]))
- return None
- if not applicable_versions:
- logger.fatal('Could not find a version that satisfies the requirement %s (from versions: %s)'
- % (req, ', '.join([version for parsed_version, link, version in found_versions])))
- raise DistributionNotFound('No distributions matching the version for %s' % req)
- if applicable_versions[0][0] is Inf:
- # We have an existing version, and its the best version
- logger.info('Installed version (%s) is most up-to-date (past versions: %s)'
- % (req.satisfied_by.version, ', '.join([version for link, version in applicable_versions[1:]]) or 'none'))
- raise BestVersionAlreadyInstalled
- if len(applicable_versions) > 1:
- logger.info('Using version %s (newest of versions: %s)' %
- (applicable_versions[0][1], ', '.join([version for link, version in applicable_versions])))
- return applicable_versions[0][0]
-
- def _find_url_name(self, index_url, url_name, req):
- """Finds the true URL name of a package, when the given name isn't quite correct.
- This is usually used to implement case-insensitivity."""
- if not index_url.url.endswith('/'):
- # Vaguely part of the PyPI API... weird but true.
- ## FIXME: bad to modify this?
- index_url.url += '/'
- page = self._get_page(index_url, req)
- if page is None:
- logger.fatal('Cannot fetch index base URL %s' % index_url)
- return
- norm_name = normalize_name(req.url_name)
- for link in page.links:
- base = posixpath.basename(link.path.rstrip('/'))
- if norm_name == normalize_name(base):
- logger.notify('Real name of requirement %s is %s' % (url_name, base))
- return base
- return None
-
- def _get_pages(self, locations, req):
- """Yields (page, page_url) from the given locations, skipping
- locations that have errors, and adding download/homepage links"""
- pending_queue = Queue()
- for location in locations:
- pending_queue.put(location)
- done = []
- seen = set()
- threads = []
- for i in range(min(10, len(locations))):
- t = threading.Thread(target=self._get_queued_page, args=(req, pending_queue, done, seen))
- t.setDaemon(True)
- threads.append(t)
- t.start()
- for t in threads:
- t.join()
- return done
-
- _log_lock = threading.Lock()
-
- def _get_queued_page(self, req, pending_queue, done, seen):
- while 1:
- try:
- location = pending_queue.get(False)
- except QueueEmpty:
- return
- if location in seen:
- continue
- seen.add(location)
- page = self._get_page(location, req)
- if page is None:
- continue
- done.append(page)
- for link in page.rel_links():
- pending_queue.put(link)
-
- _egg_fragment_re = re.compile(r'#egg=([^&]*)')
- _egg_info_re = re.compile(r'([a-z0-9_.]+)-([a-z0-9_.-]+)', re.I)
- _py_version_re = re.compile(r'-py([123]\.?[0-9]?)$')
-
- def _sort_links(self, links):
- "Returns elements of links in order, non-egg links first, egg links second, while eliminating duplicates"
- eggs, no_eggs = [], []
- seen = set()
- for link in links:
- if link not in seen:
- seen.add(link)
- if link.egg_fragment:
- eggs.append(link)
- else:
- no_eggs.append(link)
- return no_eggs + eggs
-
- def _package_versions(self, links, search_name):
- for link in self._sort_links(links):
- for v in self._link_package_versions(link, search_name):
- yield v
-
- def _link_package_versions(self, link, search_name):
- """
- Return an iterable of triples (pkg_resources_version_key,
- link, python_version) that can be extracted from the given
- link.
-
- Meant to be overridden by subclasses, not called by clients.
- """
- if link.egg_fragment:
- egg_info = link.egg_fragment
- else:
- egg_info, ext = link.splitext()
- if not ext:
- if link not in self.logged_links:
- logger.debug('Skipping link %s; not a file' % link)
- self.logged_links.add(link)
- return []
- if egg_info.endswith('.tar'):
- # Special double-extension case:
- egg_info = egg_info[:-4]
- ext = '.tar' + ext
- if ext not in ('.tar.gz', '.tar.bz2', '.tar', '.tgz', '.zip'):
- if link not in self.logged_links:
- logger.debug('Skipping link %s; unknown archive format: %s' % (link, ext))
- self.logged_links.add(link)
- return []
- if "macosx10" in link.path and ext == '.zip':
- if link not in self.logged_links:
- logger.debug('Skipping link %s; macosx10 one' % (link))
- self.logged_links.add(link)
- return []
- version = self._egg_info_matches(egg_info, search_name, link)
- if version is None:
- logger.debug('Skipping link %s; wrong project name (not %s)' % (link, search_name))
- return []
- match = self._py_version_re.search(version)
- if match:
- version = version[:match.start()]
- py_version = match.group(1)
- if py_version != sys.version[:3]:
- logger.debug('Skipping %s because Python version is incorrect' % link)
- return []
- logger.debug('Found link %s, version: %s' % (link, version))
- return [(pkg_resources.parse_version(version),
- link,
- version)]
-
- def _egg_info_matches(self, egg_info, search_name, link):
- match = self._egg_info_re.search(egg_info)
- if not match:
- logger.debug('Could not parse version from link: %s' % link)
- return None
- name = match.group(0).lower()
- # To match the "safe" name that pkg_resources creates:
- name = name.replace('_', '-')
- if name.startswith(search_name.lower()):
- return match.group(0)[len(search_name):].lstrip('-')
- else:
- return None
-
- def _get_page(self, link, req):
- return HTMLPage.get_page(link, req, cache=self.cache)
-
- def _get_mirror_urls(self, mirrors=None, main_mirror_url=None):
- """Retrieves a list of URLs from the main mirror DNS entry
- unless a list of mirror URLs are passed.
- """
- if not mirrors:
- mirrors = get_mirrors(main_mirror_url)
- # Should this be made "less random"? E.g. netselect like?
- random.shuffle(mirrors)
-
- mirror_urls = set()
- for mirror_url in mirrors:
- # Make sure we have a valid URL
- if not ("http://" or "https://" or "file://") in mirror_url:
- mirror_url = "http://%s" % mirror_url
- if not mirror_url.endswith("/simple"):
- mirror_url = "%s/simple/" % mirror_url
- mirror_urls.add(mirror_url)
-
- return list(mirror_urls)
-
-
-class PageCache(object):
- """Cache of HTML pages"""
-
- failure_limit = 3
-
- def __init__(self):
- self._failures = {}
- self._pages = {}
- self._archives = {}
-
- def too_many_failures(self, url):
- return self._failures.get(url, 0) >= self.failure_limit
-
- def get_page(self, url):
- return self._pages.get(url)
-
- def is_archive(self, url):
- return self._archives.get(url, False)
-
- def set_is_archive(self, url, value=True):
- self._archives[url] = value
-
- def add_page_failure(self, url, level):
- self._failures[url] = self._failures.get(url, 0)+level
-
- def add_page(self, urls, page):
- for url in urls:
- self._pages[url] = page
-
-
-class HTMLPage(object):
- """Represents one page, along with its URL"""
-
- ## FIXME: these regexes are horrible hacks:
- _homepage_re = re.compile(r'<th>\s*home\s*page', re.I)
- _download_re = re.compile(r'<th>\s*download\s+url', re.I)
- ## These aren't so aweful:
- _rel_re = re.compile("""<[^>]*\srel\s*=\s*['"]?([^'">]+)[^>]*>""", re.I)
- _href_re = re.compile('href=(?:"([^"]*)"|\'([^\']*)\'|([^>\\s\\n]*))', re.I|re.S)
- _base_re = re.compile(r"""<base\s+href\s*=\s*['"]?([^'">]+)""", re.I)
-
- def __init__(self, content, url, headers=None):
- self.content = content
- self.url = url
- self.headers = headers
-
- def __str__(self):
- return self.url
-
- @classmethod
- def get_page(cls, link, req, cache=None, skip_archives=True):
- url = link.url
- url = url.split('#', 1)[0]
- if cache.too_many_failures(url):
- return None
-
- # Check for VCS schemes that do not support lookup as web pages.
- from pip.vcs import VcsSupport
- for scheme in VcsSupport.schemes:
- if url.lower().startswith(scheme) and url[len(scheme)] in '+:':
- logger.debug('Cannot look at %(scheme)s URL %(link)s' % locals())
- return None
-
- if cache is not None:
- inst = cache.get_page(url)
- if inst is not None:
- return inst
- try:
- if skip_archives:
- if cache is not None:
- if cache.is_archive(url):
- return None
- filename = link.filename
- for bad_ext in ['.tar', '.tar.gz', '.tar.bz2', '.tgz', '.zip']:
- if filename.endswith(bad_ext):
- content_type = cls._get_content_type(url)
- if content_type.lower().startswith('text/html'):
- break
- else:
- logger.debug('Skipping page %s because of Content-Type: %s' % (link, content_type))
- if cache is not None:
- cache.set_is_archive(url)
- return None
- logger.debug('Getting page %s' % url)
-
- # Tack index.html onto file:// URLs that point to directories
- (scheme, netloc, path, params, query, fragment) = urlparse.urlparse(url)
- if scheme == 'file' and os.path.isdir(url2pathname(path)):
- # add trailing slash if not present so urljoin doesn't trim final segment
- if not url.endswith('/'):
- url += '/'
- url = urlparse.urljoin(url, 'index.html')
- logger.debug(' file: URL is directory, getting %s' % url)
-
- resp = urlopen(url)
-
- real_url = geturl(resp)
- headers = resp.info()
- contents = resp.read()
- encoding = headers.get('Content-Encoding', None)
- #XXX need to handle exceptions and add testing for this
- if encoding is not None:
- if encoding == 'gzip':
- contents = gzip.GzipFile(fileobj=BytesIO(contents)).read()
- if encoding == 'deflate':
- contents = zlib.decompress(contents)
- inst = cls(u(contents), real_url, headers)
- except (HTTPError, URLError, socket.timeout, socket.error, OSError, WindowsError):
- e = sys.exc_info()[1]
- desc = str(e)
- if isinstance(e, socket.timeout):
- log_meth = logger.info
- level =1
- desc = 'timed out'
- elif isinstance(e, URLError):
- log_meth = logger.info
- if hasattr(e, 'reason') and isinstance(e.reason, socket.timeout):
- desc = 'timed out'
- level = 1
- else:
- level = 2
- elif isinstance(e, HTTPError) and e.code == 404:
- ## FIXME: notify?
- log_meth = logger.info
- level = 2
- else:
- log_meth = logger.info
- level = 1
- log_meth('Could not fetch URL %s: %s' % (link, desc))
- log_meth('Will skip URL %s when looking for download links for %s' % (link.url, req))
- if cache is not None:
- cache.add_page_failure(url, level)
- return None
- if cache is not None:
- cache.add_page([url, real_url], inst)
- return inst
-
- @staticmethod
- def _get_content_type(url):
- """Get the Content-Type of the given url, using a HEAD request"""
- scheme, netloc, path, query, fragment = urlparse.urlsplit(url)
- if not scheme in ('http', 'https', 'ftp', 'ftps'):
- ## FIXME: some warning or something?
- ## assertion error?
- return ''
- req = Urllib2HeadRequest(url, headers={'Host': netloc})
- resp = urlopen(req)
- try:
- if hasattr(resp, 'code') and resp.code != 200 and scheme not in ('ftp', 'ftps'):
- ## FIXME: doesn't handle redirects
- return ''
- return resp.info().get('content-type', '')
- finally:
- resp.close()
-
- @property
- def base_url(self):
- if not hasattr(self, "_base_url"):
- match = self._base_re.search(self.content)
- if match:
- self._base_url = match.group(1)
- else:
- self._base_url = self.url
- return self._base_url
-
- @property
- def links(self):
- """Yields all links in the page"""
- for match in self._href_re.finditer(self.content):
- url = match.group(1) or match.group(2) or match.group(3)
- url = self.clean_link(urlparse.urljoin(self.base_url, url))
- yield Link(url, self)
-
- def rel_links(self):
- for url in self.explicit_rel_links():
- yield url
- for url in self.scraped_rel_links():
- yield url
-
- def explicit_rel_links(self, rels=('homepage', 'download')):
- """Yields all links with the given relations"""
- for match in self._rel_re.finditer(self.content):
- found_rels = match.group(1).lower().split()
- for rel in rels:
- if rel in found_rels:
- break
- else:
- continue
- match = self._href_re.search(match.group(0))
- if not match:
- continue
- url = match.group(1) or match.group(2) or match.group(3)
- url = self.clean_link(urlparse.urljoin(self.base_url, url))
- yield Link(url, self)
-
- def scraped_rel_links(self):
- for regex in (self._homepage_re, self._download_re):
- match = regex.search(self.content)
- if not match:
- continue
- href_match = self._href_re.search(self.content, pos=match.end())
- if not href_match:
- continue
- url = href_match.group(1) or href_match.group(2) or href_match.group(3)
- if not url:
- continue
- url = self.clean_link(urlparse.urljoin(self.base_url, url))
- yield Link(url, self)
-
- _clean_re = re.compile(r'[^a-z0-9$&+,/:;=?@.#%_\\|-]', re.I)
-
- def clean_link(self, url):
- """Makes sure a link is fully encoded. That is, if a ' ' shows up in
- the link, it will be rewritten to %20 (while not over-quoting
- % or other characters)."""
- return self._clean_re.sub(
- lambda match: '%%%2x' % ord(match.group(0)), url)
-
-
-class Link(object):
-
- def __init__(self, url, comes_from=None):
- self.url = url
- self.comes_from = comes_from
-
- def __str__(self):
- if self.comes_from:
- return '%s (from %s)' % (self.url, self.comes_from)
- else:
- return self.url
-
- def __repr__(self):
- return '<Link %s>' % self
-
- def __eq__(self, other):
- return self.url == other.url
-
- def __hash__(self):
- return hash(self.url)
-
- @property
- def filename(self):
- url = self.url_fragment
- name = posixpath.basename(url)
- assert name, ('URL %r produced no filename' % url)
- return name
-
- @property
- def scheme(self):
- return urlparse.urlsplit(self.url)[0]
-
- @property
- def path(self):
- return urlparse.urlsplit(self.url)[2]
-
- def splitext(self):
- return splitext(posixpath.basename(self.path.rstrip('/')))
-
- @property
- def url_fragment(self):
- url = self.url
- url = url.split('#', 1)[0]
- url = url.split('?', 1)[0]
- url = url.rstrip('/')
- return url
-
- _egg_fragment_re = re.compile(r'#egg=([^&]*)')
-
- @property
- def egg_fragment(self):
- match = self._egg_fragment_re.search(self.url)
- if not match:
- return None
- return match.group(1)
-
- _md5_re = re.compile(r'md5=([a-f0-9]+)')
-
- @property
- def md5_hash(self):
- match = self._md5_re.search(self.url)
- if match:
- return match.group(1)
- return None
-
- @property
- def show_url(self):
- return posixpath.basename(self.url.split('#', 1)[0].split('?', 1)[0])
-
-
-def get_requirement_from_url(url):
- """Get a requirement from the URL, if possible. This looks for #egg
- in the URL"""
- link = Link(url)
- egg_info = link.egg_fragment
- if not egg_info:
- egg_info = splitext(link.filename)[0]
- return package_to_requirement(egg_info)
-
-
-def package_to_requirement(package_name):
- """Translate a name like Foo-1.2 to Foo==1.3"""
- match = re.search(r'^(.*?)-(dev|\d.*)', package_name)
- if match:
- name = match.group(1)
- version = match.group(2)
- else:
- name = package_name
- version = ''
- if version:
- return '%s==%s' % (name, version)
- else:
- return name
-
-
-def get_mirrors(hostname=None):
- """Return the list of mirrors from the last record found on the DNS
- entry::
-
- >>> from pip.index import get_mirrors
- >>> get_mirrors()
- ['a.pypi.python.org', 'b.pypi.python.org', 'c.pypi.python.org',
- 'd.pypi.python.org']
-
- Originally written for the distutils2 project by Alexis Metaireau.
- """
- if hostname is None:
- hostname = DEFAULT_MIRROR_URL
-
- # return the last mirror registered on PyPI.
- try:
- hostname = socket.gethostbyname_ex(hostname)[0]
- except socket.gaierror:
- return []
- end_letter = hostname.split(".", 1)
-
- # determine the list from the last one.
- return ["%s.%s" % (s, end_letter[1]) for s in string_range(end_letter[0])]
-
-
-def string_range(last):
- """Compute the range of string between "a" and last.
-
- This works for simple "a to z" lists, but also for "a to zz" lists.
- """
- for k in range(len(last)):
- for x in product(string.ascii_lowercase, repeat=k+1):
- result = ''.join(x)
- yield result
- if result == last:
- return
-
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/locations.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/locations.py
deleted file mode 100644
index 34c6dbb..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/locations.py
+++ /dev/null
@@ -1,52 +0,0 @@
-"""Locations where we look for configs, install stuff, etc"""
-
-import sys
-import os
-from pip.backwardcompat import get_python_lib
-
-
-def running_under_virtualenv():
- """
- Return True if we're running inside a virtualenv, False otherwise.
-
- """
- return hasattr(sys, 'real_prefix')
-
-
-if running_under_virtualenv():
- ## FIXME: is build/ a good name?
- build_prefix = os.path.join(sys.prefix, 'build')
- src_prefix = os.path.join(sys.prefix, 'src')
-else:
- ## FIXME: this isn't a very good default
- build_prefix = os.path.join(os.getcwd(), 'build')
- src_prefix = os.path.join(os.getcwd(), 'src')
-
-# under Mac OS X + virtualenv sys.prefix is not properly resolved
-# it is something like /path/to/python/bin/..
-build_prefix = os.path.abspath(build_prefix)
-src_prefix = os.path.abspath(src_prefix)
-
-# FIXME doesn't account for venv linked to global site-packages
-
-site_packages = get_python_lib()
-user_dir = os.path.expanduser('~')
-if sys.platform == 'win32':
- bin_py = os.path.join(sys.prefix, 'Scripts')
- # buildout uses 'bin' on Windows too?
- if not os.path.exists(bin_py):
- bin_py = os.path.join(sys.prefix, 'bin')
- user_dir = os.environ.get('APPDATA', user_dir) # Use %APPDATA% for roaming
- default_storage_dir = os.path.join(user_dir, 'pip')
- default_config_file = os.path.join(default_storage_dir, 'pip.ini')
- default_log_file = os.path.join(default_storage_dir, 'pip.log')
-else:
- bin_py = os.path.join(sys.prefix, 'bin')
- default_storage_dir = os.path.join(user_dir, '.pip')
- default_config_file = os.path.join(default_storage_dir, 'pip.conf')
- default_log_file = os.path.join(default_storage_dir, 'pip.log')
- # Forcing to use /usr/local/bin for standard Mac OS X framework installs
- # Also log to ~/Library/Logs/ for use with the Console.app log viewer
- if sys.platform[:6] == 'darwin' and sys.prefix[:16] == '/System/Library/':
- bin_py = '/usr/local/bin'
- default_log_file = os.path.join(user_dir, 'Library/Logs/pip.log')
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/log.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/log.py
deleted file mode 100644
index 63541a1..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/log.py
+++ /dev/null
@@ -1,188 +0,0 @@
-"""Logging
-"""
-
-import sys
-import logging
-
-import pip.backwardcompat
-
-
-class Logger(object):
-
- """
- Logging object for use in command-line script. Allows ranges of
- levels, to avoid some redundancy of displayed information.
- """
-
- VERBOSE_DEBUG = logging.DEBUG-1
- DEBUG = logging.DEBUG
- INFO = logging.INFO
- NOTIFY = (logging.INFO+logging.WARN)/2
- WARN = WARNING = logging.WARN
- ERROR = logging.ERROR
- FATAL = logging.FATAL
-
- LEVELS = [VERBOSE_DEBUG, DEBUG, INFO, NOTIFY, WARN, ERROR, FATAL]
-
- def __init__(self):
- self.consumers = []
- self.indent = 0
- self.explicit_levels = False
- self.in_progress = None
- self.in_progress_hanging = False
-
- def debug(self, msg, *args, **kw):
- self.log(self.DEBUG, msg, *args, **kw)
-
- def info(self, msg, *args, **kw):
- self.log(self.INFO, msg, *args, **kw)
-
- def notify(self, msg, *args, **kw):
- self.log(self.NOTIFY, msg, *args, **kw)
-
- def warn(self, msg, *args, **kw):
- self.log(self.WARN, msg, *args, **kw)
-
- def error(self, msg, *args, **kw):
- self.log(self.WARN, msg, *args, **kw)
-
- def fatal(self, msg, *args, **kw):
- self.log(self.FATAL, msg, *args, **kw)
-
- def log(self, level, msg, *args, **kw):
- if args:
- if kw:
- raise TypeError(
- "You may give positional or keyword arguments, not both")
- args = args or kw
- rendered = None
- for consumer_level, consumer in self.consumers:
- if self.level_matches(level, consumer_level):
- if (self.in_progress_hanging
- and consumer in (sys.stdout, sys.stderr)):
- self.in_progress_hanging = False
- sys.stdout.write('\n')
- sys.stdout.flush()
- if rendered is None:
- if args:
- rendered = msg % args
- else:
- rendered = msg
- rendered = ' '*self.indent + rendered
- if self.explicit_levels:
- ## FIXME: should this be a name, not a level number?
- rendered = '%02i %s' % (level, rendered)
- if hasattr(consumer, 'write'):
- rendered += '\n'
- pip.backwardcompat.fwrite(consumer, rendered)
- else:
- consumer(rendered)
-
- def _show_progress(self):
- """Should we display download progress?"""
- return (self.stdout_level_matches(self.NOTIFY) and sys.stdout.isatty())
-
- def start_progress(self, msg):
- assert not self.in_progress, (
- "Tried to start_progress(%r) while in_progress %r"
- % (msg, self.in_progress))
- if self._show_progress():
- sys.stdout.write(' '*self.indent + msg)
- sys.stdout.flush()
- self.in_progress_hanging = True
- else:
- self.in_progress_hanging = False
- self.in_progress = msg
- self.last_message = None
-
- def end_progress(self, msg='done.'):
- assert self.in_progress, (
- "Tried to end_progress without start_progress")
- if self._show_progress():
- if not self.in_progress_hanging:
- # Some message has been printed out since start_progress
- sys.stdout.write('...' + self.in_progress + msg + '\n')
- sys.stdout.flush()
- else:
- # These erase any messages shown with show_progress (besides .'s)
- logger.show_progress('')
- logger.show_progress('')
- sys.stdout.write(msg + '\n')
- sys.stdout.flush()
- self.in_progress = None
- self.in_progress_hanging = False
-
- def show_progress(self, message=None):
- """If we are in a progress scope, and no log messages have been
- shown, write out another '.'"""
- if self.in_progress_hanging:
- if message is None:
- sys.stdout.write('.')
- sys.stdout.flush()
- else:
- if self.last_message:
- padding = ' ' * max(0, len(self.last_message)-len(message))
- else:
- padding = ''
- sys.stdout.write('\r%s%s%s%s' % (' '*self.indent, self.in_progress, message, padding))
- sys.stdout.flush()
- self.last_message = message
-
- def stdout_level_matches(self, level):
- """Returns true if a message at this level will go to stdout"""
- return self.level_matches(level, self._stdout_level())
-
- def _stdout_level(self):
- """Returns the level that stdout runs at"""
- for level, consumer in self.consumers:
- if consumer is sys.stdout:
- return level
- return self.FATAL
-
- def level_matches(self, level, consumer_level):
- """
- >>> l = Logger()
- >>> l.level_matches(3, 4)
- False
- >>> l.level_matches(3, 2)
- True
- >>> l.level_matches(slice(None, 3), 3)
- False
- >>> l.level_matches(slice(None, 3), 2)
- True
- >>> l.level_matches(slice(1, 3), 1)
- True
- >>> l.level_matches(slice(2, 3), 1)
- False
- """
- if isinstance(level, slice):
- start, stop = level.start, level.stop
- if start is not None and start > consumer_level:
- return False
- if stop is not None or stop <= consumer_level:
- return False
- return True
- else:
- return level >= consumer_level
-
- @classmethod
- def level_for_integer(cls, level):
- levels = cls.LEVELS
- if level < 0:
- return levels[0]
- if level >= len(levels):
- return levels[-1]
- return levels[level]
-
- def move_stdout_to_stderr(self):
- to_remove = []
- to_add = []
- for consumer_level, consumer in self.consumers:
- if consumer == sys.stdout:
- to_remove.append((consumer_level, consumer))
- to_add.append((consumer_level, sys.stderr))
- for item in to_remove:
- self.consumers.remove(item)
- self.consumers.extend(to_add)
-
-logger = Logger()
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/req.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/req.py
deleted file mode 100644
index ff423df..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/req.py
+++ /dev/null
@@ -1,1526 +0,0 @@
-import sys
-import os
-import shutil
-import re
-import zipfile
-import pkg_resources
-import tempfile
-from pip.locations import bin_py, running_under_virtualenv
-from pip.exceptions import (InstallationError, UninstallationError,
- BestVersionAlreadyInstalled)
-from pip.vcs import vcs
-from pip.log import logger
-from pip.util import display_path, rmtree
-from pip.util import ask, ask_path_exists, backup_dir
-from pip.util import is_installable_dir, is_local, dist_is_local
-from pip.util import renames, normalize_path, egg_link_path
-from pip.util import make_path_relative
-from pip import call_subprocess
-from pip.backwardcompat import (any, copytree, urlparse, urllib,
- ConfigParser, string_types, HTTPError,
- FeedParser, get_python_version,
- b)
-from pip.index import Link
-from pip.locations import build_prefix
-from pip.download import (get_file_content, is_url, url_to_path,
- path_to_url, is_archive_file,
- unpack_vcs_link, is_vcs_url, is_file_url,
- unpack_file_url, unpack_http_url)
-
-
-PIP_DELETE_MARKER_FILENAME = 'pip-delete-this-directory.txt'
-
-
-class InstallRequirement(object):
-
- def __init__(self, req, comes_from, source_dir=None, editable=False,
- url=None, update=True):
- self.extras = ()
- if isinstance(req, string_types):
- req = pkg_resources.Requirement.parse(req)
- self.extras = req.extras
- self.req = req
- self.comes_from = comes_from
- self.source_dir = source_dir
- self.editable = editable
- self.url = url
- self._egg_info_path = None
- # This holds the pkg_resources.Distribution object if this requirement
- # is already available:
- self.satisfied_by = None
- # This hold the pkg_resources.Distribution object if this requirement
- # conflicts with another installed distribution:
- self.conflicts_with = None
- self._temp_build_dir = None
- self._is_bundle = None
- # True if the editable should be updated:
- self.update = update
- # Set to True after successful installation
- self.install_succeeded = None
- # UninstallPathSet of uninstalled distribution (for possible rollback)
- self.uninstalled = None
-
- @classmethod
- def from_editable(cls, editable_req, comes_from=None, default_vcs=None):
- name, url = parse_editable(editable_req, default_vcs)
- if url.startswith('file:'):
- source_dir = url_to_path(url)
- else:
- source_dir = None
- return cls(name, comes_from, source_dir=source_dir, editable=True, url=url)
-
- @classmethod
- def from_line(cls, name, comes_from=None):
- """Creates an InstallRequirement from a name, which might be a
- requirement, directory containing 'setup.py', filename, or URL.
- """
- url = None
- name = name.strip()
- req = None
- path = os.path.normpath(os.path.abspath(name))
- link = None
-
- if is_url(name):
- link = Link(name)
- elif os.path.isdir(path) and (os.path.sep in name or name.startswith('.')):
- if not is_installable_dir(path):
- raise InstallationError("Directory %r is not installable. File 'setup.py' not found.", name)
- link = Link(path_to_url(name))
- elif is_archive_file(path):
- if not os.path.isfile(path):
- logger.warn('Requirement %r looks like a filename, but the file does not exist', name)
- link = Link(path_to_url(name))
-
- # If the line has an egg= definition, but isn't editable, pull the requirement out.
- # Otherwise, assume the name is the req for the non URL/path/archive case.
- if link and req is None:
- url = link.url_fragment
- req = link.egg_fragment
-
- # Handle relative file URLs
- if link.scheme == 'file' and re.search(r'\.\./', url):
- url = path_to_url(os.path.normpath(os.path.abspath(link.path)))
-
- else:
- req = name
-
- return cls(req, comes_from, url=url)
-
- def __str__(self):
- if self.req:
- s = str(self.req)
- if self.url:
- s += ' from %s' % self.url
- else:
- s = self.url
- if self.satisfied_by is not None:
- s += ' in %s' % display_path(self.satisfied_by.location)
- if self.comes_from:
- if isinstance(self.comes_from, string_types):
- comes_from = self.comes_from
- else:
- comes_from = self.comes_from.from_path()
- if comes_from:
- s += ' (from %s)' % comes_from
- return s
-
- def from_path(self):
- if self.req is None:
- return None
- s = str(self.req)
- if self.comes_from:
- if isinstance(self.comes_from, string_types):
- comes_from = self.comes_from
- else:
- comes_from = self.comes_from.from_path()
- if comes_from:
- s += '->' + comes_from
- return s
-
- def build_location(self, build_dir, unpack=True):
- if self._temp_build_dir is not None:
- return self._temp_build_dir
- if self.req is None:
- self._temp_build_dir = tempfile.mkdtemp('-build', 'pip-')
- self._ideal_build_dir = build_dir
- return self._temp_build_dir
- if self.editable:
- name = self.name.lower()
- else:
- name = self.name
- # FIXME: Is there a better place to create the build_dir? (hg and bzr need this)
- if not os.path.exists(build_dir):
- _make_build_dir(build_dir)
- return os.path.join(build_dir, name)
-
- def correct_build_location(self):
- """If the build location was a temporary directory, this will move it
- to a new more permanent location"""
- if self.source_dir is not None:
- return
- assert self.req is not None
- assert self._temp_build_dir
- old_location = self._temp_build_dir
- new_build_dir = self._ideal_build_dir
- del self._ideal_build_dir
- if self.editable:
- name = self.name.lower()
- else:
- name = self.name
- new_location = os.path.join(new_build_dir, name)
- if not os.path.exists(new_build_dir):
- logger.debug('Creating directory %s' % new_build_dir)
- _make_build_dir(new_build_dir)
- if os.path.exists(new_location):
- raise InstallationError(
- 'A package already exists in %s; please remove it to continue'
- % display_path(new_location))
- logger.debug('Moving package %s from %s to new location %s'
- % (self, display_path(old_location), display_path(new_location)))
- shutil.move(old_location, new_location)
- self._temp_build_dir = new_location
- self.source_dir = new_location
- self._egg_info_path = None
-
- @property
- def name(self):
- if self.req is None:
- return None
- return self.req.project_name
-
- @property
- def url_name(self):
- if self.req is None:
- return None
- return urllib.quote(self.req.unsafe_name)
-
- @property
- def setup_py(self):
- return os.path.join(self.source_dir, 'setup.py')
-
- def run_egg_info(self, force_root_egg_info=False):
- assert self.source_dir
- if self.name:
- logger.notify('Running setup.py egg_info for package %s' % self.name)
- else:
- logger.notify('Running setup.py egg_info for package from %s' % self.url)
- logger.indent += 2
- try:
- script = self._run_setup_py
- script = script.replace('__SETUP_PY__', repr(self.setup_py))
- script = script.replace('__PKG_NAME__', repr(self.name))
- # We can't put the .egg-info files at the root, because then the source code will be mistaken
- # for an installed egg, causing problems
- if self.editable or force_root_egg_info:
- egg_base_option = []
- else:
- egg_info_dir = os.path.join(self.source_dir, 'pip-egg-info')
- if not os.path.exists(egg_info_dir):
- os.makedirs(egg_info_dir)
- egg_base_option = ['--egg-base', 'pip-egg-info']
- call_subprocess(
- [sys.executable, '-c', script, 'egg_info'] + egg_base_option,
- cwd=self.source_dir, filter_stdout=self._filter_install, show_stdout=False,
- command_level=logger.VERBOSE_DEBUG,
- command_desc='python setup.py egg_info')
- finally:
- logger.indent -= 2
- if not self.req:
- self.req = pkg_resources.Requirement.parse(
- "%(Name)s==%(Version)s" % self.pkg_info())
- self.correct_build_location()
-
- ## FIXME: This is a lame hack, entirely for PasteScript which has
- ## a self-provided entry point that causes this awkwardness
- _run_setup_py = """
-__file__ = __SETUP_PY__
-from setuptools.command import egg_info
-def replacement_run(self):
- self.mkpath(self.egg_info)
- installer = self.distribution.fetch_build_egg
- for ep in egg_info.iter_entry_points('egg_info.writers'):
- # require=False is the change we're making:
- writer = ep.load(require=False)
- if writer:
- writer(self, ep.name, egg_info.os.path.join(self.egg_info,ep.name))
- self.find_sources()
-egg_info.egg_info.run = replacement_run
-exec(compile(open(__file__).read().replace('\\r\\n', '\\n'), __file__, 'exec'))
-"""
-
- def egg_info_data(self, filename):
- if self.satisfied_by is not None:
- if not self.satisfied_by.has_metadata(filename):
- return None
- return self.satisfied_by.get_metadata(filename)
- assert self.source_dir
- filename = self.egg_info_path(filename)
- if not os.path.exists(filename):
- return None
- fp = open(filename, 'r')
- data = fp.read()
- fp.close()
- return data
-
- def egg_info_path(self, filename):
- if self._egg_info_path is None:
- if self.editable:
- base = self.source_dir
- else:
- base = os.path.join(self.source_dir, 'pip-egg-info')
- filenames = os.listdir(base)
- if self.editable:
- filenames = []
- for root, dirs, files in os.walk(base):
- for dir in vcs.dirnames:
- if dir in dirs:
- dirs.remove(dir)
- for dir in dirs:
- # Don't search in anything that looks like a virtualenv environment
- if (os.path.exists(os.path.join(root, dir, 'bin', 'python'))
- or os.path.exists(os.path.join(root, dir, 'Scripts', 'Python.exe'))):
- dirs.remove(dir)
- # Also don't search through tests
- if dir == 'test' or dir == 'tests':
- dirs.remove(dir)
- filenames.extend([os.path.join(root, dir)
- for dir in dirs])
- filenames = [f for f in filenames if f.endswith('.egg-info')]
-
- if not filenames:
- raise InstallationError('No files/directores in %s (from %s)' % (base, filename))
- assert filenames, "No files/directories in %s (from %s)" % (base, filename)
-
- # if we have more than one match, we pick the toplevel one. This can
- # easily be the case if there is a dist folder which contains an
- # extracted tarball for testing purposes.
- if len(filenames) > 1:
- filenames.sort(key=lambda x: x.count(os.path.sep) +
- (os.path.altsep and
- x.count(os.path.altsep) or 0))
- self._egg_info_path = os.path.join(base, filenames[0])
- return os.path.join(self._egg_info_path, filename)
-
- def egg_info_lines(self, filename):
- data = self.egg_info_data(filename)
- if not data:
- return []
- result = []
- for line in data.splitlines():
- line = line.strip()
- if not line or line.startswith('#'):
- continue
- result.append(line)
- return result
-
- def pkg_info(self):
- p = FeedParser()
- data = self.egg_info_data('PKG-INFO')
- if not data:
- logger.warn('No PKG-INFO file found in %s' % display_path(self.egg_info_path('PKG-INFO')))
- p.feed(data or '')
- return p.close()
-
- @property
- def dependency_links(self):
- return self.egg_info_lines('dependency_links.txt')
-
- _requirements_section_re = re.compile(r'\[(.*?)\]')
-
- def requirements(self, extras=()):
- in_extra = None
- for line in self.egg_info_lines('requires.txt'):
- match = self._requirements_section_re.match(line.lower())
- if match:
- in_extra = match.group(1)
- continue
- if in_extra and in_extra not in extras:
- logger.debug('skipping extra %s' % in_extra)
- # Skip requirement for an extra we aren't requiring
- continue
- yield line
-
- @property
- def absolute_versions(self):
- for qualifier, version in self.req.specs:
- if qualifier == '==':
- yield version
-
- @property
- def installed_version(self):
- return self.pkg_info()['version']
-
- def assert_source_matches_version(self):
- assert self.source_dir
- if self.comes_from is None:
- # We don't check the versions of things explicitly installed.
- # This makes, e.g., "pip Package==dev" possible
- return
- version = self.installed_version
- if version not in self.req:
- logger.fatal(
- 'Source in %s has the version %s, which does not match the requirement %s'
- % (display_path(self.source_dir), version, self))
- raise InstallationError(
- 'Source in %s has version %s that conflicts with %s'
- % (display_path(self.source_dir), version, self))
- else:
- logger.debug('Source in %s has version %s, which satisfies requirement %s'
- % (display_path(self.source_dir), version, self))
-
- def update_editable(self, obtain=True):
- if not self.url:
- logger.info("Cannot update repository at %s; repository location is unknown" % self.source_dir)
- return
- assert self.editable
- assert self.source_dir
- if self.url.startswith('file:'):
- # Static paths don't get updated
- return
- assert '+' in self.url, "bad url: %r" % self.url
- if not self.update:
- return
- vc_type, url = self.url.split('+', 1)
- backend = vcs.get_backend(vc_type)
- if backend:
- vcs_backend = backend(self.url)
- if obtain:
- vcs_backend.obtain(self.source_dir)
- else:
- vcs_backend.export(self.source_dir)
- else:
- assert 0, (
- 'Unexpected version control type (in %s): %s'
- % (self.url, vc_type))
-
- def uninstall(self, auto_confirm=False):
- """
- Uninstall the distribution currently satisfying this requirement.
-
- Prompts before removing or modifying files unless
- ``auto_confirm`` is True.
-
- Refuses to delete or modify files outside of ``sys.prefix`` -
- thus uninstallation within a virtual environment can only
- modify that virtual environment, even if the virtualenv is
- linked to global site-packages.
-
- """
- if not self.check_if_exists():
- raise UninstallationError("Cannot uninstall requirement %s, not installed" % (self.name,))
- dist = self.satisfied_by or self.conflicts_with
-
- paths_to_remove = UninstallPathSet(dist)
-
- pip_egg_info_path = os.path.join(dist.location,
- dist.egg_name()) + '.egg-info'
- # workaround for http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=618367
- debian_egg_info_path = pip_egg_info_path.replace(
- '-py%s' % pkg_resources.PY_MAJOR, '')
- easy_install_egg = dist.egg_name() + '.egg'
- develop_egg_link = egg_link_path(dist)
-
- pip_egg_info_exists = os.path.exists(pip_egg_info_path)
- debian_egg_info_exists = os.path.exists(debian_egg_info_path)
- if pip_egg_info_exists or debian_egg_info_exists:
- # package installed by pip
- if pip_egg_info_exists:
- egg_info_path = pip_egg_info_path
- else:
- egg_info_path = debian_egg_info_path
- paths_to_remove.add(egg_info_path)
- if dist.has_metadata('installed-files.txt'):
- for installed_file in dist.get_metadata('installed-files.txt').splitlines():
- path = os.path.normpath(os.path.join(egg_info_path, installed_file))
- paths_to_remove.add(path)
- if dist.has_metadata('top_level.txt'):
- if dist.has_metadata('namespace_packages.txt'):
- namespaces = dist.get_metadata('namespace_packages.txt')
- else:
- namespaces = []
- for top_level_pkg in [p for p
- in dist.get_metadata('top_level.txt').splitlines()
- if p and p not in namespaces]:
- path = os.path.join(dist.location, top_level_pkg)
- paths_to_remove.add(path)
- paths_to_remove.add(path + '.py')
- paths_to_remove.add(path + '.pyc')
-
- elif dist.location.endswith(easy_install_egg):
- # package installed by easy_install
- paths_to_remove.add(dist.location)
- easy_install_pth = os.path.join(os.path.dirname(dist.location),
- 'easy-install.pth')
- paths_to_remove.add_pth(easy_install_pth, './' + easy_install_egg)
-
- elif os.path.isfile(develop_egg_link):
- # develop egg
- fh = open(develop_egg_link, 'r')
- link_pointer = os.path.normcase(fh.readline().strip())
- fh.close()
- assert (link_pointer == dist.location), 'Egg-link %s does not match installed location of %s (at %s)' % (link_pointer, self.name, dist.location)
- paths_to_remove.add(develop_egg_link)
- easy_install_pth = os.path.join(os.path.dirname(develop_egg_link),
- 'easy-install.pth')
- paths_to_remove.add_pth(easy_install_pth, dist.location)
-
- # find distutils scripts= scripts
- if dist.has_metadata('scripts') and dist.metadata_isdir('scripts'):
- for script in dist.metadata_listdir('scripts'):
- paths_to_remove.add(os.path.join(bin_py, script))
- if sys.platform == 'win32':
- paths_to_remove.add(os.path.join(bin_py, script) + '.bat')
-
- # find console_scripts
- if dist.has_metadata('entry_points.txt'):
- config = ConfigParser.SafeConfigParser()
- config.readfp(FakeFile(dist.get_metadata_lines('entry_points.txt')))
- if config.has_section('console_scripts'):
- for name, value in config.items('console_scripts'):
- paths_to_remove.add(os.path.join(bin_py, name))
- if sys.platform == 'win32':
- paths_to_remove.add(os.path.join(bin_py, name) + '.exe')
- paths_to_remove.add(os.path.join(bin_py, name) + '.exe.manifest')
- paths_to_remove.add(os.path.join(bin_py, name) + '-script.py')
-
- paths_to_remove.remove(auto_confirm)
- self.uninstalled = paths_to_remove
-
- def rollback_uninstall(self):
- if self.uninstalled:
- self.uninstalled.rollback()
- else:
- logger.error("Can't rollback %s, nothing uninstalled."
- % (self.project_name,))
-
- def commit_uninstall(self):
- if self.uninstalled:
- self.uninstalled.commit()
- else:
- logger.error("Can't commit %s, nothing uninstalled."
- % (self.project_name,))
-
- def archive(self, build_dir):
- assert self.source_dir
- create_archive = True
- archive_name = '%s-%s.zip' % (self.name, self.installed_version)
- archive_path = os.path.join(build_dir, archive_name)
- if os.path.exists(archive_path):
- response = ask_path_exists(
- 'The file %s exists. (i)gnore, (w)ipe, (b)ackup ' %
- display_path(archive_path), ('i', 'w', 'b'))
- if response == 'i':
- create_archive = False
- elif response == 'w':
- logger.warn('Deleting %s' % display_path(archive_path))
- os.remove(archive_path)
- elif response == 'b':
- dest_file = backup_dir(archive_path)
- logger.warn('Backing up %s to %s'
- % (display_path(archive_path), display_path(dest_file)))
- shutil.move(archive_path, dest_file)
- if create_archive:
- zip = zipfile.ZipFile(archive_path, 'w', zipfile.ZIP_DEFLATED)
- dir = os.path.normcase(os.path.abspath(self.source_dir))
- for dirpath, dirnames, filenames in os.walk(dir):
- if 'pip-egg-info' in dirnames:
- dirnames.remove('pip-egg-info')
- for dirname in dirnames:
- dirname = os.path.join(dirpath, dirname)
- name = self._clean_zip_name(dirname, dir)
- zipdir = zipfile.ZipInfo(self.name + '/' + name + '/')
- zipdir.external_attr = 0x1ED << 16 # 0o755
- zip.writestr(zipdir, '')
- for filename in filenames:
- if filename == PIP_DELETE_MARKER_FILENAME:
- continue
- filename = os.path.join(dirpath, filename)
- name = self._clean_zip_name(filename, dir)
- zip.write(filename, self.name + '/' + name)
- zip.close()
- logger.indent -= 2
- logger.notify('Saved %s' % display_path(archive_path))
-
- def _clean_zip_name(self, name, prefix):
- assert name.startswith(prefix+os.path.sep), (
- "name %r doesn't start with prefix %r" % (name, prefix))
- name = name[len(prefix)+1:]
- name = name.replace(os.path.sep, '/')
- return name
-
- def install(self, install_options, global_options=()):
- if self.editable:
- self.install_editable(install_options, global_options)
- return
- temp_location = tempfile.mkdtemp('-record', 'pip-')
- record_filename = os.path.join(temp_location, 'install-record.txt')
- try:
- install_args = [
- sys.executable, '-c',
- "import setuptools;__file__=%r;"\
- "exec(compile(open(__file__).read().replace('\\r\\n', '\\n'), __file__, 'exec'))" % self.setup_py] +\
- list(global_options) + [
- 'install',
- '--single-version-externally-managed',
- '--record', record_filename]
-
- if running_under_virtualenv():
- ## FIXME: I'm not sure if this is a reasonable location; probably not
- ## but we can't put it in the default location, as that is a virtualenv symlink that isn't writable
- install_args += ['--install-headers',
- os.path.join(sys.prefix, 'include', 'site',
- 'python' + get_python_version())]
- logger.notify('Running setup.py install for %s' % self.name)
- logger.indent += 2
- try:
- call_subprocess(install_args + install_options,
- cwd=self.source_dir, filter_stdout=self._filter_install, show_stdout=False)
- finally:
- logger.indent -= 2
- if not os.path.exists(record_filename):
- logger.notify('Record file %s not found' % record_filename)
- return
- self.install_succeeded = True
- f = open(record_filename)
- for line in f:
- line = line.strip()
- if line.endswith('.egg-info'):
- egg_info_dir = line
- break
- else:
- logger.warn('Could not find .egg-info directory in install record for %s' % self)
- ## FIXME: put the record somewhere
- ## FIXME: should this be an error?
- return
- f.close()
- new_lines = []
- f = open(record_filename)
- for line in f:
- filename = line.strip()
- if os.path.isdir(filename):
- filename += os.path.sep
- new_lines.append(make_path_relative(filename, egg_info_dir))
- f.close()
- f = open(os.path.join(egg_info_dir, 'installed-files.txt'), 'w')
- f.write('\n'.join(new_lines)+'\n')
- f.close()
- finally:
- if os.path.exists(record_filename):
- os.remove(record_filename)
- os.rmdir(temp_location)
-
- def remove_temporary_source(self):
- """Remove the source files from this requirement, if they are marked
- for deletion"""
- if self.is_bundle or os.path.exists(self.delete_marker_filename):
- logger.info('Removing source in %s' % self.source_dir)
- if self.source_dir:
- rmtree(self.source_dir)
- self.source_dir = None
- if self._temp_build_dir and os.path.exists(self._temp_build_dir):
- rmtree(self._temp_build_dir)
- self._temp_build_dir = None
-
- def install_editable(self, install_options, global_options=()):
- logger.notify('Running setup.py develop for %s' % self.name)
- logger.indent += 2
- try:
- ## FIXME: should we do --install-headers here too?
- call_subprocess(
- [sys.executable, '-c',
- "import setuptools; __file__=%r; exec(compile(open(__file__).read().replace('\\r\\n', '\\n'), __file__, 'exec'))" % self.setup_py]
- + list(global_options) + ['develop', '--no-deps'] + list(install_options),
-
- cwd=self.source_dir, filter_stdout=self._filter_install,
- show_stdout=False)
- finally:
- logger.indent -= 2
- self.install_succeeded = True
-
- def _filter_install(self, line):
- level = logger.NOTIFY
- for regex in [r'^running .*', r'^writing .*', '^creating .*', '^[Cc]opying .*',
- r'^reading .*', r"^removing .*\.egg-info' \(and everything under it\)$",
- r'^byte-compiling ',
- # Not sure what this warning is, but it seems harmless:
- r"^warning: manifest_maker: standard file '-c' not found$"]:
- if re.search(regex, line.strip()):
- level = logger.INFO
- break
- return (level, line)
-
- def check_if_exists(self):
- """Find an installed distribution that satisfies or conflicts
- with this requirement, and set self.satisfied_by or
- self.conflicts_with appropriately."""
- if self.req is None:
- return False
- try:
- self.satisfied_by = pkg_resources.get_distribution(self.req)
- except pkg_resources.DistributionNotFound:
- return False
- except pkg_resources.VersionConflict:
- self.conflicts_with = pkg_resources.get_distribution(self.req.project_name)
- return True
-
- @property
- def is_bundle(self):
- if self._is_bundle is not None:
- return self._is_bundle
- base = self._temp_build_dir
- if not base:
- ## FIXME: this doesn't seem right:
- return False
- self._is_bundle = (os.path.exists(os.path.join(base, 'pip-manifest.txt'))
- or os.path.exists(os.path.join(base, 'pyinstall-manifest.txt')))
- return self._is_bundle
-
- def bundle_requirements(self):
- for dest_dir in self._bundle_editable_dirs:
- package = os.path.basename(dest_dir)
- ## FIXME: svnism:
- for vcs_backend in vcs.backends:
- url = rev = None
- vcs_bundle_file = os.path.join(
- dest_dir, vcs_backend.bundle_file)
- if os.path.exists(vcs_bundle_file):
- vc_type = vcs_backend.name
- fp = open(vcs_bundle_file)
- content = fp.read()
- fp.close()
- url, rev = vcs_backend().parse_vcs_bundle_file(content)
- break
- if url:
- url = '%s+%s@%s' % (vc_type, url, rev)
- else:
- url = None
- yield InstallRequirement(
- package, self, editable=True, url=url,
- update=False, source_dir=dest_dir)
- for dest_dir in self._bundle_build_dirs:
- package = os.path.basename(dest_dir)
- yield InstallRequirement(
- package, self,
- source_dir=dest_dir)
-
- def move_bundle_files(self, dest_build_dir, dest_src_dir):
- base = self._temp_build_dir
- assert base
- src_dir = os.path.join(base, 'src')
- build_dir = os.path.join(base, 'build')
- bundle_build_dirs = []
- bundle_editable_dirs = []
- for source_dir, dest_dir, dir_collection in [
- (src_dir, dest_src_dir, bundle_editable_dirs),
- (build_dir, dest_build_dir, bundle_build_dirs)]:
- if os.path.exists(source_dir):
- for dirname in os.listdir(source_dir):
- dest = os.path.join(dest_dir, dirname)
- dir_collection.append(dest)
- if os.path.exists(dest):
- logger.warn('The directory %s (containing package %s) already exists; cannot move source from bundle %s'
- % (dest, dirname, self))
- continue
- if not os.path.exists(dest_dir):
- logger.info('Creating directory %s' % dest_dir)
- os.makedirs(dest_dir)
- shutil.move(os.path.join(source_dir, dirname), dest)
- if not os.listdir(source_dir):
- os.rmdir(source_dir)
- self._temp_build_dir = None
- self._bundle_build_dirs = bundle_build_dirs
- self._bundle_editable_dirs = bundle_editable_dirs
-
- @property
- def delete_marker_filename(self):
- assert self.source_dir
- return os.path.join(self.source_dir, PIP_DELETE_MARKER_FILENAME)
-
-
-DELETE_MARKER_MESSAGE = '''\
-This file is placed here by pip to indicate the source was put
-here by pip.
-
-Once this package is successfully installed this source code will be
-deleted (unless you remove this file).
-'''
-
-
-class Requirements(object):
-
- def __init__(self):
- self._keys = []
- self._dict = {}
-
- def keys(self):
- return self._keys
-
- def values(self):
- values_list = []
- for key in self._keys:
- values_list.append(self._dict[key])
- return values_list
-
- def __contains__(self, item):
- return item in self._keys
-
- def __setitem__(self, key, value):
- if key not in self._keys:
- self._keys.append(key)
- self._dict[key] = value
-
- def __getitem__(self, key):
- return self._dict[key]
-
- def __repr__(self):
- values = ['%s: %s' % (repr(k), repr(self[k])) for k in self.keys()]
- return 'Requirements({%s})' % ', '.join(values)
-
-
-class RequirementSet(object):
-
- def __init__(self, build_dir, src_dir, download_dir, download_cache=None,
- upgrade=False, ignore_installed=False,
- ignore_dependencies=False, force_reinstall=False):
- self.build_dir = build_dir
- self.src_dir = src_dir
- self.download_dir = download_dir
- self.download_cache = download_cache
- self.upgrade = upgrade
- self.ignore_installed = ignore_installed
- self.force_reinstall = force_reinstall
- self.requirements = Requirements()
- # Mapping of alias: real_name
- self.requirement_aliases = {}
- self.unnamed_requirements = []
- self.ignore_dependencies = ignore_dependencies
- self.successfully_downloaded = []
- self.successfully_installed = []
- self.reqs_to_cleanup = []
-
- def __str__(self):
- reqs = [req for req in self.requirements.values()
- if not req.comes_from]
- reqs.sort(key=lambda req: req.name.lower())
- return ' '.join([str(req.req) for req in reqs])
-
- def add_requirement(self, install_req):
- name = install_req.name
- if not name:
- self.unnamed_requirements.append(install_req)
- else:
- if self.has_requirement(name):
- raise InstallationError(
- 'Double requirement given: %s (aready in %s, name=%r)'
- % (install_req, self.get_requirement(name), name))
- self.requirements[name] = install_req
- ## FIXME: what about other normalizations? E.g., _ vs. -?
- if name.lower() != name:
- self.requirement_aliases[name.lower()] = name
-
- def has_requirement(self, project_name):
- for name in project_name, project_name.lower():
- if name in self.requirements or name in self.requirement_aliases:
- return True
- return False
-
- @property
- def has_requirements(self):
- return list(self.requirements.values()) or self.unnamed_requirements
-
- @property
- def has_editables(self):
- if any(req.editable for req in self.requirements.values()):
- return True
- if any(req.editable for req in self.unnamed_requirements):
- return True
- return False
-
- @property
- def is_download(self):
- if self.download_dir:
- self.download_dir = os.path.expanduser(self.download_dir)
- if os.path.exists(self.download_dir):
- return True
- else:
- logger.fatal('Could not find download directory')
- raise InstallationError(
- "Could not find or access download directory '%s'"
- % display_path(self.download_dir))
- return False
-
- def get_requirement(self, project_name):
- for name in project_name, project_name.lower():
- if name in self.requirements:
- return self.requirements[name]
- if name in self.requirement_aliases:
- return self.requirements[self.requirement_aliases[name]]
- raise KeyError("No project with the name %r" % project_name)
-
- def uninstall(self, auto_confirm=False):
- for req in self.requirements.values():
- req.uninstall(auto_confirm=auto_confirm)
- req.commit_uninstall()
-
- def locate_files(self):
- ## FIXME: duplicates code from install_files; relevant code should
- ## probably be factored out into a separate method
- unnamed = list(self.unnamed_requirements)
- reqs = list(self.requirements.values())
- while reqs or unnamed:
- if unnamed:
- req_to_install = unnamed.pop(0)
- else:
- req_to_install = reqs.pop(0)
- install_needed = True
- if not self.ignore_installed and not req_to_install.editable:
- req_to_install.check_if_exists()
- if req_to_install.satisfied_by:
- if self.upgrade:
- req_to_install.conflicts_with = req_to_install.satisfied_by
- req_to_install.satisfied_by = None
- else:
- install_needed = False
- if req_to_install.satisfied_by:
- logger.notify('Requirement already satisfied '
- '(use --upgrade to upgrade): %s'
- % req_to_install)
-
- if req_to_install.editable:
- if req_to_install.source_dir is None:
- req_to_install.source_dir = req_to_install.build_location(self.src_dir)
- elif install_needed:
- req_to_install.source_dir = req_to_install.build_location(self.build_dir, not self.is_download)
-
- if req_to_install.source_dir is not None and not os.path.isdir(req_to_install.source_dir):
- raise InstallationError('Could not install requirement %s '
- 'because source folder %s does not exist '
- '(perhaps --no-download was used without first running '
- 'an equivalent install with --no-install?)'
- % (req_to_install, req_to_install.source_dir))
-
- def prepare_files(self, finder, force_root_egg_info=False, bundle=False):
- """Prepare process. Create temp directories, download and/or unpack files."""
- unnamed = list(self.unnamed_requirements)
- reqs = list(self.requirements.values())
- while reqs or unnamed:
- if unnamed:
- req_to_install = unnamed.pop(0)
- else:
- req_to_install = reqs.pop(0)
- install = True
- best_installed = False
- if not self.ignore_installed and not req_to_install.editable:
- req_to_install.check_if_exists()
- if req_to_install.satisfied_by:
- if self.upgrade:
- if not self.force_reinstall:
- try:
- url = finder.find_requirement(
- req_to_install, self.upgrade)
- except BestVersionAlreadyInstalled:
- best_installed = True
- install = False
- else:
- # Avoid the need to call find_requirement again
- req_to_install.url = url.url
-
- if not best_installed:
- req_to_install.conflicts_with = req_to_install.satisfied_by
- req_to_install.satisfied_by = None
- else:
- install = False
- if req_to_install.satisfied_by:
- if best_installed:
- logger.notify('Requirement already up-to-date: %s'
- % req_to_install)
- else:
- logger.notify('Requirement already satisfied '
- '(use --upgrade to upgrade): %s'
- % req_to_install)
- if req_to_install.editable:
- logger.notify('Obtaining %s' % req_to_install)
- elif install:
- if req_to_install.url and req_to_install.url.lower().startswith('file:'):
- logger.notify('Unpacking %s' % display_path(url_to_path(req_to_install.url)))
- else:
- logger.notify('Downloading/unpacking %s' % req_to_install)
- logger.indent += 2
- try:
- is_bundle = False
- if req_to_install.editable:
- if req_to_install.source_dir is None:
- location = req_to_install.build_location(self.src_dir)
- req_to_install.source_dir = location
- else:
- location = req_to_install.source_dir
- if not os.path.exists(self.build_dir):
- _make_build_dir(self.build_dir)
- req_to_install.update_editable(not self.is_download)
- if self.is_download:
- req_to_install.run_egg_info()
- req_to_install.archive(self.download_dir)
- else:
- req_to_install.run_egg_info()
- elif install:
- ##@@ if filesystem packages are not marked
- ##editable in a req, a non deterministic error
- ##occurs when the script attempts to unpack the
- ##build directory
-
- location = req_to_install.build_location(self.build_dir, not self.is_download)
- ## FIXME: is the existance of the checkout good enough to use it? I don't think so.
- unpack = True
- url = None
- if not os.path.exists(os.path.join(location, 'setup.py')):
- ## FIXME: this won't upgrade when there's an existing package unpacked in `location`
- if req_to_install.url is None:
- url = finder.find_requirement(req_to_install, upgrade=self.upgrade)
- else:
- ## FIXME: should req_to_install.url already be a link?
- url = Link(req_to_install.url)
- assert url
- if url:
- try:
- self.unpack_url(url, location, self.is_download)
- except HTTPError:
- e = sys.exc_info()[1]
- logger.fatal('Could not install requirement %s because of error %s'
- % (req_to_install, e))
- raise InstallationError(
- 'Could not install requirement %s because of HTTP error %s for URL %s'
- % (req_to_install, e, url))
- else:
- unpack = False
- if unpack:
- is_bundle = req_to_install.is_bundle
- if is_bundle:
- req_to_install.move_bundle_files(self.build_dir, self.src_dir)
- for subreq in req_to_install.bundle_requirements():
- reqs.append(subreq)
- self.add_requirement(subreq)
- elif self.is_download:
- req_to_install.source_dir = location
- req_to_install.run_egg_info()
- if url and url.scheme in vcs.all_schemes:
- req_to_install.archive(self.download_dir)
- else:
- req_to_install.source_dir = location
- req_to_install.run_egg_info()
- if force_root_egg_info:
- # We need to run this to make sure that the .egg-info/
- # directory is created for packing in the bundle
- req_to_install.run_egg_info(force_root_egg_info=True)
- req_to_install.assert_source_matches_version()
- #@@ sketchy way of identifying packages not grabbed from an index
- if bundle and req_to_install.url:
- self.copy_to_build_dir(req_to_install)
- install = False
- # req_to_install.req is only avail after unpack for URL pkgs
- # repeat check_if_exists to uninstall-on-upgrade (#14)
- req_to_install.check_if_exists()
- if req_to_install.satisfied_by:
- if self.upgrade or self.ignore_installed:
- req_to_install.conflicts_with = req_to_install.satisfied_by
- req_to_install.satisfied_by = None
- else:
- install = False
- if not is_bundle:
- ## FIXME: shouldn't be globally added:
- finder.add_dependency_links(req_to_install.dependency_links)
- if (req_to_install.extras):
- logger.notify("Installing extra requirements: %r" % ','.join(req_to_install.extras))
- if not self.ignore_dependencies:
- for req in req_to_install.requirements(req_to_install.extras):
- try:
- name = pkg_resources.Requirement.parse(req).project_name
- except ValueError:
- e = sys.exc_info()[1]
- ## FIXME: proper warning
- logger.error('Invalid requirement: %r (%s) in requirement %s' % (req, e, req_to_install))
- continue
- if self.has_requirement(name):
- ## FIXME: check for conflict
- continue
- subreq = InstallRequirement(req, req_to_install)
- reqs.append(subreq)
- self.add_requirement(subreq)
- if req_to_install.name not in self.requirements:
- self.requirements[req_to_install.name] = req_to_install
- if self.is_download:
- self.reqs_to_cleanup.append(req_to_install)
- else:
- self.reqs_to_cleanup.append(req_to_install)
-
- if install:
- self.successfully_downloaded.append(req_to_install)
- if bundle and (req_to_install.url and req_to_install.url.startswith('file:///')):
- self.copy_to_build_dir(req_to_install)
- finally:
- logger.indent -= 2
-
- def cleanup_files(self, bundle=False):
- """Clean up files, remove builds."""
- logger.notify('Cleaning up...')
- logger.indent += 2
- for req in self.reqs_to_cleanup:
- req.remove_temporary_source()
-
- remove_dir = []
- if self._pip_has_created_build_dir():
- remove_dir.append(self.build_dir)
-
- # The source dir of a bundle can always be removed.
- # FIXME: not if it pre-existed the bundle!
- if bundle:
- remove_dir.append(self.src_dir)
-
- for dir in remove_dir:
- if os.path.exists(dir):
- logger.info('Removing temporary dir %s...' % dir)
- rmtree(dir)
-
- logger.indent -= 2
-
- def _pip_has_created_build_dir(self):
- return (self.build_dir == build_prefix and
- os.path.exists(os.path.join(self.build_dir, PIP_DELETE_MARKER_FILENAME)))
-
- def copy_to_build_dir(self, req_to_install):
- target_dir = req_to_install.editable and self.src_dir or self.build_dir
- logger.info("Copying %s to %s" % (req_to_install.name, target_dir))
- dest = os.path.join(target_dir, req_to_install.name)
- copytree(req_to_install.source_dir, dest)
- call_subprocess(["python", "%s/setup.py" % dest, "clean"], cwd=dest,
- command_desc='python setup.py clean')
-
- def unpack_url(self, link, location, only_download=False):
- if only_download:
- loc = self.download_dir
- else:
- loc = location
- if is_vcs_url(link):
- return unpack_vcs_link(link, loc, only_download)
- elif is_file_url(link):
- return unpack_file_url(link, loc)
- else:
- if self.download_cache:
- self.download_cache = os.path.expanduser(self.download_cache)
- retval = unpack_http_url(link, location, self.download_cache, self.download_dir)
- if only_download:
- _write_delete_marker_message(os.path.join(location, PIP_DELETE_MARKER_FILENAME))
- return retval
-
- def install(self, install_options, global_options=()):
- """Install everything in this set (after having downloaded and unpacked the packages)"""
- to_install = [r for r in self.requirements.values()
- if not r.satisfied_by]
-
- if to_install:
- logger.notify('Installing collected packages: %s' % ', '.join([req.name for req in to_install]))
- logger.indent += 2
- try:
- for requirement in to_install:
- if requirement.conflicts_with:
- logger.notify('Found existing installation: %s'
- % requirement.conflicts_with)
- logger.indent += 2
- try:
- requirement.uninstall(auto_confirm=True)
- finally:
- logger.indent -= 2
- try:
- requirement.install(install_options, global_options)
- except:
- # if install did not succeed, rollback previous uninstall
- if requirement.conflicts_with and not requirement.install_succeeded:
- requirement.rollback_uninstall()
- raise
- else:
- if requirement.conflicts_with and requirement.install_succeeded:
- requirement.commit_uninstall()
- requirement.remove_temporary_source()
- finally:
- logger.indent -= 2
- self.successfully_installed = to_install
-
- def create_bundle(self, bundle_filename):
- ## FIXME: can't decide which is better; zip is easier to read
- ## random files from, but tar.bz2 is smaller and not as lame a
- ## format.
-
- ## FIXME: this file should really include a manifest of the
- ## packages, maybe some other metadata files. It would make
- ## it easier to detect as well.
- zip = zipfile.ZipFile(bundle_filename, 'w', zipfile.ZIP_DEFLATED)
- vcs_dirs = []
- for dir, basename in (self.build_dir, 'build'), (self.src_dir, 'src'):
- dir = os.path.normcase(os.path.abspath(dir))
- for dirpath, dirnames, filenames in os.walk(dir):
- for backend in vcs.backends:
- vcs_backend = backend()
- vcs_url = vcs_rev = None
- if vcs_backend.dirname in dirnames:
- for vcs_dir in vcs_dirs:
- if dirpath.startswith(vcs_dir):
- # vcs bundle file already in parent directory
- break
- else:
- vcs_url, vcs_rev = vcs_backend.get_info(
- os.path.join(dir, dirpath))
- vcs_dirs.append(dirpath)
- vcs_bundle_file = vcs_backend.bundle_file
- vcs_guide = vcs_backend.guide % {'url': vcs_url,
- 'rev': vcs_rev}
- dirnames.remove(vcs_backend.dirname)
- break
- if 'pip-egg-info' in dirnames:
- dirnames.remove('pip-egg-info')
- for dirname in dirnames:
- dirname = os.path.join(dirpath, dirname)
- name = self._clean_zip_name(dirname, dir)
- zip.writestr(basename + '/' + name + '/', '')
- for filename in filenames:
- if filename == PIP_DELETE_MARKER_FILENAME:
- continue
- filename = os.path.join(dirpath, filename)
- name = self._clean_zip_name(filename, dir)
- zip.write(filename, basename + '/' + name)
- if vcs_url:
- name = os.path.join(dirpath, vcs_bundle_file)
- name = self._clean_zip_name(name, dir)
- zip.writestr(basename + '/' + name, vcs_guide)
-
- zip.writestr('pip-manifest.txt', self.bundle_requirements())
- zip.close()
-
- BUNDLE_HEADER = '''\
-# This is a pip bundle file, that contains many source packages
-# that can be installed as a group. You can install this like:
-# pip this_file.zip
-# The rest of the file contains a list of all the packages included:
-'''
-
- def bundle_requirements(self):
- parts = [self.BUNDLE_HEADER]
- for req in [req for req in self.requirements.values()
- if not req.comes_from]:
- parts.append('%s==%s\n' % (req.name, req.installed_version))
- parts.append('# These packages were installed to satisfy the above requirements:\n')
- for req in [req for req in self.requirements.values()
- if req.comes_from]:
- parts.append('%s==%s\n' % (req.name, req.installed_version))
- ## FIXME: should we do something with self.unnamed_requirements?
- return ''.join(parts)
-
- def _clean_zip_name(self, name, prefix):
- assert name.startswith(prefix+os.path.sep), (
- "name %r doesn't start with prefix %r" % (name, prefix))
- name = name[len(prefix)+1:]
- name = name.replace(os.path.sep, '/')
- return name
-
-
-def _make_build_dir(build_dir):
- os.makedirs(build_dir)
- _write_delete_marker_message(os.path.join(build_dir, PIP_DELETE_MARKER_FILENAME))
-
-
-def _write_delete_marker_message(filepath):
- marker_fp = open(filepath, 'w')
- marker_fp.write(DELETE_MARKER_MESSAGE)
- marker_fp.close()
-
-
-_scheme_re = re.compile(r'^(http|https|file):', re.I)
-
-
-def parse_requirements(filename, finder=None, comes_from=None, options=None):
- skip_match = None
- skip_regex = options.skip_requirements_regex
- if skip_regex:
- skip_match = re.compile(skip_regex)
- filename, content = get_file_content(filename, comes_from=comes_from)
- for line_number, line in enumerate(content.splitlines()):
- line_number += 1
- line = line.strip()
- if not line or line.startswith('#'):
- continue
- if skip_match and skip_match.search(line):
- continue
- if line.startswith('-r') or line.startswith('--requirement'):
- if line.startswith('-r'):
- req_url = line[2:].strip()
- else:
- req_url = line[len('--requirement'):].strip().strip('=')
- if _scheme_re.search(filename):
- # Relative to a URL
- req_url = urlparse.urljoin(filename, req_url)
- elif not _scheme_re.search(req_url):
- req_url = os.path.join(os.path.dirname(filename), req_url)
- for item in parse_requirements(req_url, finder, comes_from=filename, options=options):
- yield item
- elif line.startswith('-Z') or line.startswith('--always-unzip'):
- # No longer used, but previously these were used in
- # requirement files, so we'll ignore.
- pass
- elif line.startswith('-f') or line.startswith('--find-links'):
- if line.startswith('-f'):
- line = line[2:].strip()
- else:
- line = line[len('--find-links'):].strip().lstrip('=')
- ## FIXME: it would be nice to keep track of the source of
- ## the find_links:
- if finder:
- finder.find_links.append(line)
- elif line.startswith('-i') or line.startswith('--index-url'):
- if line.startswith('-i'):
- line = line[2:].strip()
- else:
- line = line[len('--index-url'):].strip().lstrip('=')
- if finder:
- finder.index_urls = [line]
- elif line.startswith('--extra-index-url'):
- line = line[len('--extra-index-url'):].strip().lstrip('=')
- if finder:
- finder.index_urls.append(line)
- else:
- comes_from = '-r %s (line %s)' % (filename, line_number)
- if line.startswith('-e') or line.startswith('--editable'):
- if line.startswith('-e'):
- line = line[2:].strip()
- else:
- line = line[len('--editable'):].strip().lstrip('=')
- req = InstallRequirement.from_editable(
- line, comes_from=comes_from, default_vcs=options.default_vcs)
- else:
- req = InstallRequirement.from_line(line, comes_from)
- yield req
-
-
-def parse_editable(editable_req, default_vcs=None):
- """Parses svn+http://blahblah@rev#egg=Foobar into a requirement
- (Foobar) and a URL"""
- url = editable_req
- if os.path.isdir(url) and os.path.exists(os.path.join(url, 'setup.py')):
- # Treating it as code that has already been checked out
- url = path_to_url(url)
- if url.lower().startswith('file:'):
- return None, url
- for version_control in vcs:
- if url.lower().startswith('%s:' % version_control):
- url = '%s+%s' % (version_control, url)
- if '+' not in url:
- if default_vcs:
- url = default_vcs + '+' + url
- else:
- raise InstallationError(
- '--editable=%s should be formatted with svn+URL, git+URL, hg+URL or bzr+URL' % editable_req)
- vc_type = url.split('+', 1)[0].lower()
- if not vcs.get_backend(vc_type):
- raise InstallationError(
- 'For --editable=%s only svn (svn+URL), Git (git+URL), Mercurial (hg+URL) and Bazaar (bzr+URL) is currently supported' % editable_req)
- match = re.search(r'(?:#|#.*?&)egg=([^&]*)', editable_req)
- if (not match or not match.group(1)) and vcs.get_backend(vc_type):
- parts = [p for p in editable_req.split('#', 1)[0].split('/') if p]
- if parts[-2] in ('tags', 'branches', 'tag', 'branch'):
- req = parts[-3]
- elif parts[-1] == 'trunk':
- req = parts[-2]
- else:
- raise InstallationError(
- '--editable=%s is not the right format; it must have #egg=Package'
- % editable_req)
- else:
- req = match.group(1)
- ## FIXME: use package_to_requirement?
- match = re.search(r'^(.*?)(?:-dev|-\d.*)$', req)
- if match:
- # Strip off -dev, -0.2, etc.
- req = match.group(1)
- return req, url
-
-
-class UninstallPathSet(object):
- """A set of file paths to be removed in the uninstallation of a
- requirement."""
- def __init__(self, dist):
- self.paths = set()
- self._refuse = set()
- self.pth = {}
- self.dist = dist
- self.save_dir = None
- self._moved_paths = []
-
- def _permitted(self, path):
- """
- Return True if the given path is one we are permitted to
- remove/modify, False otherwise.
-
- """
- return is_local(path)
-
- def _can_uninstall(self):
- if not dist_is_local(self.dist):
- logger.notify("Not uninstalling %s at %s, outside environment %s"
- % (self.dist.project_name, normalize_path(self.dist.location), sys.prefix))
- return False
- return True
-
- def add(self, path):
- path = normalize_path(path)
- if not os.path.exists(path):
- return
- if self._permitted(path):
- self.paths.add(path)
- else:
- self._refuse.add(path)
-
- def add_pth(self, pth_file, entry):
- pth_file = normalize_path(pth_file)
- if self._permitted(pth_file):
- if pth_file not in self.pth:
- self.pth[pth_file] = UninstallPthEntries(pth_file)
- self.pth[pth_file].add(entry)
- else:
- self._refuse.add(pth_file)
-
- def compact(self, paths):
- """Compact a path set to contain the minimal number of paths
- necessary to contain all paths in the set. If /a/path/ and
- /a/path/to/a/file.txt are both in the set, leave only the
- shorter path."""
- short_paths = set()
- for path in sorted(paths, key=len):
- if not any([(path.startswith(shortpath) and
- path[len(shortpath.rstrip(os.path.sep))] == os.path.sep)
- for shortpath in short_paths]):
- short_paths.add(path)
- return short_paths
-
- def _stash(self, path):
- return os.path.join(
- self.save_dir, os.path.splitdrive(path)[1].lstrip(os.path.sep))
-
- def remove(self, auto_confirm=False):
- """Remove paths in ``self.paths`` with confirmation (unless
- ``auto_confirm`` is True)."""
- if not self._can_uninstall():
- return
- logger.notify('Uninstalling %s:' % self.dist.project_name)
- logger.indent += 2
- paths = sorted(self.compact(self.paths))
- try:
- if auto_confirm:
- response = 'y'
- else:
- for path in paths:
- logger.notify(path)
- response = ask('Proceed (y/n)? ', ('y', 'n'))
- if self._refuse:
- logger.notify('Not removing or modifying (outside of prefix):')
- for path in self.compact(self._refuse):
- logger.notify(path)
- if response == 'y':
- self.save_dir = tempfile.mkdtemp(suffix='-uninstall',
- prefix='pip-')
- for path in paths:
- new_path = self._stash(path)
- logger.info('Removing file or directory %s' % path)
- self._moved_paths.append(path)
- renames(path, new_path)
- for pth in self.pth.values():
- pth.remove()
- logger.notify('Successfully uninstalled %s' % self.dist.project_name)
-
- finally:
- logger.indent -= 2
-
- def rollback(self):
- """Rollback the changes previously made by remove()."""
- if self.save_dir is None:
- logger.error("Can't roll back %s; was not uninstalled" % self.dist.project_name)
- return False
- logger.notify('Rolling back uninstall of %s' % self.dist.project_name)
- for path in self._moved_paths:
- tmp_path = self._stash(path)
- logger.info('Replacing %s' % path)
- renames(tmp_path, path)
- for pth in self.pth:
- pth.rollback()
-
- def commit(self):
- """Remove temporary save dir: rollback will no longer be possible."""
- if self.save_dir is not None:
- rmtree(self.save_dir)
- self.save_dir = None
- self._moved_paths = []
-
-
-class UninstallPthEntries(object):
- def __init__(self, pth_file):
- if not os.path.isfile(pth_file):
- raise UninstallationError("Cannot remove entries from nonexistent file %s" % pth_file)
- self.file = pth_file
- self.entries = set()
- self._saved_lines = None
-
- def add(self, entry):
- entry = os.path.normcase(entry)
- # On Windows, os.path.normcase converts the entry to use
- # backslashes. This is correct for entries that describe absolute
- # paths outside of site-packages, but all the others use forward
- # slashes.
- if sys.platform == 'win32' and not os.path.splitdrive(entry)[0]:
- entry = entry.replace('\\', '/')
- self.entries.add(entry)
-
- def remove(self):
- logger.info('Removing pth entries from %s:' % self.file)
- fh = open(self.file, 'rb')
- # windows uses '\r\n' with py3k, but uses '\n' with py2.x
- lines = fh.readlines()
- self._saved_lines = lines
- fh.close()
- if any(b('\r\n') in line for line in lines):
- endline = '\r\n'
- else:
- endline = '\n'
- for entry in self.entries:
- try:
- logger.info('Removing entry: %s' % entry)
- lines.remove(b(entry + endline))
- except ValueError:
- pass
- fh = open(self.file, 'wb')
- fh.writelines(lines)
- fh.close()
-
- def rollback(self):
- if self._saved_lines is None:
- logger.error('Cannot roll back changes to %s, none were made' % self.file)
- return False
- logger.info('Rolling %s back to previous state' % self.file)
- fh = open(self.file, 'wb')
- fh.writelines(self._saved_lines)
- fh.close()
- return True
-
-
-class FakeFile(object):
- """Wrap a list of lines in an object with readline() to make
- ConfigParser happy."""
- def __init__(self, lines):
- self._gen = (l for l in lines)
-
- def readline(self):
- try:
- try:
- return next(self._gen)
- except NameError:
- return self._gen.next()
- except StopIteration:
- return ''
-
- def __iter__(self):
- return self._gen
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/runner.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/runner.py
deleted file mode 100644
index be830ad..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/runner.py
+++ /dev/null
@@ -1,18 +0,0 @@
-import sys
-import os
-
-
-def run():
- base = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- ## FIXME: this is kind of crude; if we could create a fake pip
- ## module, then exec into it and update pip.__path__ properly, we
- ## wouldn't have to update sys.path:
- sys.path.insert(0, base)
- import pip
- return pip.main()
-
-
-if __name__ == '__main__':
- exit = run()
- if exit:
- sys.exit(exit)
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/status_codes.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/status_codes.py
deleted file mode 100644
index b6208e9..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/status_codes.py
+++ /dev/null
@@ -1,5 +0,0 @@
-SUCCESS = 0
-ERROR = 1
-UNKNOWN_ERROR = 2
-VIRTUALENV_NOT_FOUND = 3
-NO_MATCHES_FOUND = 23
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/util.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/util.py
deleted file mode 100644
index de91e49..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/util.py
+++ /dev/null
@@ -1,508 +0,0 @@
-import sys
-import shutil
-import os
-import stat
-import re
-import posixpath
-import pkg_resources
-import zipfile
-import tarfile
-from pip.exceptions import InstallationError, BadCommand
-from pip.backwardcompat import WindowsError, string_types, raw_input
-from pip.locations import site_packages, running_under_virtualenv
-from pip.log import logger
-
-__all__ = ['rmtree', 'display_path', 'backup_dir',
- 'find_command', 'ask', 'Inf',
- 'normalize_name', 'splitext',
- 'format_size', 'is_installable_dir',
- 'is_svn_page', 'file_contents',
- 'split_leading_dir', 'has_leading_dir',
- 'make_path_relative', 'normalize_path',
- 'renames', 'get_terminal_size',
- 'unzip_file', 'untar_file', 'create_download_cache_folder',
- 'cache_download', 'unpack_file']
-
-
-def rmtree(dir, ignore_errors=False):
- shutil.rmtree(dir, ignore_errors=ignore_errors,
- onerror=rmtree_errorhandler)
-
-
-def rmtree_errorhandler(func, path, exc_info):
- """On Windows, the files in .svn are read-only, so when rmtree() tries to
- remove them, an exception is thrown. We catch that here, remove the
- read-only attribute, and hopefully continue without problems."""
- exctype, value = exc_info[:2]
- # On Python 2.4, it will be OSError number 13
- # On all more recent Pythons, it'll be WindowsError number 5
- if not ((exctype is WindowsError and value.args[0] == 5) or
- (exctype is OSError and value.args[0] == 13)):
- raise
- # file type should currently be read only
- if ((os.stat(path).st_mode & stat.S_IREAD) != stat.S_IREAD):
- raise
- # convert to read/write
- os.chmod(path, stat.S_IWRITE)
- # use the original function to repeat the operation
- func(path)
-
-
-def display_path(path):
- """Gives the display value for a given path, making it relative to cwd
- if possible."""
- path = os.path.normcase(os.path.abspath(path))
- if path.startswith(os.getcwd() + os.path.sep):
- path = '.' + path[len(os.getcwd()):]
- return path
-
-
-def backup_dir(dir, ext='.bak'):
- """Figure out the name of a directory to back up the given dir to
- (adding .bak, .bak2, etc)"""
- n = 1
- extension = ext
- while os.path.exists(dir + extension):
- n += 1
- extension = ext + str(n)
- return dir + extension
-
-
-def find_command(cmd, paths=None, pathext=None):
- """Searches the PATH for the given command and returns its path"""
- if paths is None:
- paths = os.environ.get('PATH', '').split(os.pathsep)
- if isinstance(paths, string_types):
- paths = [paths]
- # check if there are funny path extensions for executables, e.g. Windows
- if pathext is None:
- pathext = get_pathext()
- pathext = [ext for ext in pathext.lower().split(os.pathsep)]
- # don't use extensions if the command ends with one of them
- if os.path.splitext(cmd)[1].lower() in pathext:
- pathext = ['']
- # check if we find the command on PATH
- for path in paths:
- # try without extension first
- cmd_path = os.path.join(path, cmd)
- for ext in pathext:
- # then including the extension
- cmd_path_ext = cmd_path + ext
- if os.path.isfile(cmd_path_ext):
- return cmd_path_ext
- if os.path.isfile(cmd_path):
- return cmd_path
- raise BadCommand('Cannot find command %r' % cmd)
-
-
-def get_pathext(default_pathext=None):
- """Returns the path extensions from environment or a default"""
- if default_pathext is None:
- default_pathext = os.pathsep.join(['.COM', '.EXE', '.BAT', '.CMD'])
- pathext = os.environ.get('PATHEXT', default_pathext)
- return pathext
-
-
-def ask_path_exists(message, options):
- for action in os.environ.get('PIP_EXISTS_ACTION', ''):
- if action in options:
- return action
- return ask(message, options)
-
-
-def ask(message, options):
- """Ask the message interactively, with the given possible responses"""
- while 1:
- if os.environ.get('PIP_NO_INPUT'):
- raise Exception('No input was expected ($PIP_NO_INPUT set); question: %s' % message)
- response = raw_input(message)
- response = response.strip().lower()
- if response not in options:
- print('Your response (%r) was not one of the expected responses: %s' % (
- response, ', '.join(options)))
- else:
- return response
-
-
-class _Inf(object):
- """I am bigger than everything!"""
- def __cmp__(self, a):
- if self is a:
- return 0
- return 1
-
- def __repr__(self):
- return 'Inf'
-
-Inf = _Inf()
-del _Inf
-
-
-_normalize_re = re.compile(r'[^a-z]', re.I)
-
-
-def normalize_name(name):
- return _normalize_re.sub('-', name.lower())
-
-
-def format_size(bytes):
- if bytes > 1000*1000:
- return '%.1fMb' % (bytes/1000.0/1000)
- elif bytes > 10*1000:
- return '%iKb' % (bytes/1000)
- elif bytes > 1000:
- return '%.1fKb' % (bytes/1000.0)
- else:
- return '%ibytes' % bytes
-
-
-def is_installable_dir(path):
- """Return True if `path` is a directory containing a setup.py file."""
- if not os.path.isdir(path):
- return False
- setup_py = os.path.join(path, 'setup.py')
- if os.path.isfile(setup_py):
- return True
- return False
-
-
-def is_svn_page(html):
- """Returns true if the page appears to be the index page of an svn repository"""
- return (re.search(r'<title>[^<]*Revision \d+:', html)
- and re.search(r'Powered by (?:<a[^>]*?>)?Subversion', html, re.I))
-
-
-def file_contents(filename):
- fp = open(filename, 'rb')
- try:
- return fp.read().decode('utf-8')
- finally:
- fp.close()
-
-
-def split_leading_dir(path):
- path = str(path)
- path = path.lstrip('/').lstrip('\\')
- if '/' in path and (('\\' in path and path.find('/') < path.find('\\'))
- or '\\' not in path):
- return path.split('/', 1)
- elif '\\' in path:
- return path.split('\\', 1)
- else:
- return path, ''
-
-
-def has_leading_dir(paths):
- """Returns true if all the paths have the same leading path name
- (i.e., everything is in one subdirectory in an archive)"""
- common_prefix = None
- for path in paths:
- prefix, rest = split_leading_dir(path)
- if not prefix:
- return False
- elif common_prefix is None:
- common_prefix = prefix
- elif prefix != common_prefix:
- return False
- return True
-
-
-def make_path_relative(path, rel_to):
- """
- Make a filename relative, where the filename path, and it is
- relative to rel_to
-
- >>> make_relative_path('/usr/share/something/a-file.pth',
- ... '/usr/share/another-place/src/Directory')
- '../../../something/a-file.pth'
- >>> make_relative_path('/usr/share/something/a-file.pth',
- ... '/home/user/src/Directory')
- '../../../usr/share/something/a-file.pth'
- >>> make_relative_path('/usr/share/a-file.pth', '/usr/share/')
- 'a-file.pth'
- """
- path_filename = os.path.basename(path)
- path = os.path.dirname(path)
- path = os.path.normpath(os.path.abspath(path))
- rel_to = os.path.normpath(os.path.abspath(rel_to))
- path_parts = path.strip(os.path.sep).split(os.path.sep)
- rel_to_parts = rel_to.strip(os.path.sep).split(os.path.sep)
- while path_parts and rel_to_parts and path_parts[0] == rel_to_parts[0]:
- path_parts.pop(0)
- rel_to_parts.pop(0)
- full_parts = ['..']*len(rel_to_parts) + path_parts + [path_filename]
- if full_parts == ['']:
- return '.' + os.path.sep
- return os.path.sep.join(full_parts)
-
-
-def normalize_path(path):
- """
- Convert a path to its canonical, case-normalized, absolute version.
-
- """
- return os.path.normcase(os.path.realpath(path))
-
-
-def splitext(path):
- """Like os.path.splitext, but take off .tar too"""
- base, ext = posixpath.splitext(path)
- if base.lower().endswith('.tar'):
- ext = base[-4:] + ext
- base = base[:-4]
- return base, ext
-
-
-def renames(old, new):
- """Like os.renames(), but handles renaming across devices."""
- # Implementation borrowed from os.renames().
- head, tail = os.path.split(new)
- if head and tail and not os.path.exists(head):
- os.makedirs(head)
-
- shutil.move(old, new)
-
- head, tail = os.path.split(old)
- if head and tail:
- try:
- os.removedirs(head)
- except OSError:
- pass
-
-
-def is_local(path):
- """
- Return True if path is within sys.prefix, if we're running in a virtualenv.
-
- If we're not in a virtualenv, all paths are considered "local."
-
- """
- if not running_under_virtualenv():
- return True
- return normalize_path(path).startswith(normalize_path(sys.prefix))
-
-
-def dist_is_local(dist):
- """
- Return True if given Distribution object is installed locally
- (i.e. within current virtualenv).
-
- Always True if we're not in a virtualenv.
-
- """
- return is_local(dist_location(dist))
-
-
-def get_installed_distributions(local_only=True, skip=('setuptools', 'pip', 'python')):
- """
- Return a list of installed Distribution objects.
-
- If ``local_only`` is True (default), only return installations
- local to the current virtualenv, if in a virtualenv.
-
- ``skip`` argument is an iterable of lower-case project names to
- ignore; defaults to ('setuptools', 'pip', 'python'). [FIXME also
- skip virtualenv?]
-
- """
- if local_only:
- local_test = dist_is_local
- else:
- local_test = lambda d: True
- return [d for d in pkg_resources.working_set if local_test(d) and d.key not in skip]
-
-
-def egg_link_path(dist):
- """
- Return the path where we'd expect to find a .egg-link file for
- this distribution. (There doesn't seem to be any metadata in the
- Distribution object for a develop egg that points back to its
- .egg-link and easy-install.pth files).
-
- This won't find a globally-installed develop egg if we're in a
- virtualenv.
-
- """
- return os.path.join(site_packages, dist.project_name) + '.egg-link'
-
-
-def dist_location(dist):
- """
- Get the site-packages location of this distribution. Generally
- this is dist.location, except in the case of develop-installed
- packages, where dist.location is the source code location, and we
- want to know where the egg-link file is.
-
- """
- egg_link = egg_link_path(dist)
- if os.path.exists(egg_link):
- return egg_link
- return dist.location
-
-
-def get_terminal_size():
- """Returns a tuple (x, y) representing the width(x) and the height(x)
- in characters of the terminal window."""
- def ioctl_GWINSZ(fd):
- try:
- import fcntl
- import termios
- import struct
- cr = struct.unpack('hh', fcntl.ioctl(fd, termios.TIOCGWINSZ,
- '1234'))
- except:
- return None
- if cr == (0, 0):
- return None
- if cr == (0, 0):
- return None
- return cr
- cr = ioctl_GWINSZ(0) or ioctl_GWINSZ(1) or ioctl_GWINSZ(2)
- if not cr:
- try:
- fd = os.open(os.ctermid(), os.O_RDONLY)
- cr = ioctl_GWINSZ(fd)
- os.close(fd)
- except:
- pass
- if not cr:
- cr = (os.environ.get('LINES', 25), os.environ.get('COLUMNS', 80))
- return int(cr[1]), int(cr[0])
-
-
-def unzip_file(filename, location, flatten=True):
- """Unzip the file (zip file located at filename) to the destination
- location"""
- if not os.path.exists(location):
- os.makedirs(location)
- zipfp = open(filename, 'rb')
- try:
- zip = zipfile.ZipFile(zipfp)
- leading = has_leading_dir(zip.namelist()) and flatten
- for name in zip.namelist():
- data = zip.read(name)
- fn = name
- if leading:
- fn = split_leading_dir(name)[1]
- fn = os.path.join(location, fn)
- dir = os.path.dirname(fn)
- if not os.path.exists(dir):
- os.makedirs(dir)
- if fn.endswith('/') or fn.endswith('\\'):
- # A directory
- if not os.path.exists(fn):
- os.makedirs(fn)
- else:
- fp = open(fn, 'wb')
- try:
- fp.write(data)
- finally:
- fp.close()
- finally:
- zipfp.close()
-
-
-def untar_file(filename, location):
- """Untar the file (tar file located at filename) to the destination location"""
- if not os.path.exists(location):
- os.makedirs(location)
- if filename.lower().endswith('.gz') or filename.lower().endswith('.tgz'):
- mode = 'r:gz'
- elif filename.lower().endswith('.bz2') or filename.lower().endswith('.tbz'):
- mode = 'r:bz2'
- elif filename.lower().endswith('.tar'):
- mode = 'r'
- else:
- logger.warn('Cannot determine compression type for file %s' % filename)
- mode = 'r:*'
- tar = tarfile.open(filename, mode)
- try:
- # note: python<=2.5 doesnt seem to know about pax headers, filter them
- leading = has_leading_dir([
- member.name for member in tar.getmembers()
- if member.name != 'pax_global_header'
- ])
- for member in tar.getmembers():
- fn = member.name
- if fn == 'pax_global_header':
- continue
- if leading:
- fn = split_leading_dir(fn)[1]
- path = os.path.join(location, fn)
- if member.isdir():
- if not os.path.exists(path):
- os.makedirs(path)
- elif member.issym():
- try:
- tar._extract_member(member, path)
- except:
- e = sys.exc_info()[1]
- # Some corrupt tar files seem to produce this
- # (specifically bad symlinks)
- logger.warn(
- 'In the tar file %s the member %s is invalid: %s'
- % (filename, member.name, e))
- continue
- else:
- try:
- fp = tar.extractfile(member)
- except (KeyError, AttributeError):
- e = sys.exc_info()[1]
- # Some corrupt tar files seem to produce this
- # (specifically bad symlinks)
- logger.warn(
- 'In the tar file %s the member %s is invalid: %s'
- % (filename, member.name, e))
- continue
- if not os.path.exists(os.path.dirname(path)):
- os.makedirs(os.path.dirname(path))
- destfp = open(path, 'wb')
- try:
- shutil.copyfileobj(fp, destfp)
- finally:
- destfp.close()
- fp.close()
- finally:
- tar.close()
-
-
-def create_download_cache_folder(folder):
- logger.indent -= 2
- logger.notify('Creating supposed download cache at %s' % folder)
- logger.indent += 2
- os.makedirs(folder)
-
-
-def cache_download(target_file, temp_location, content_type):
- logger.notify('Storing download in cache at %s' % display_path(target_file))
- shutil.copyfile(temp_location, target_file)
- fp = open(target_file+'.content-type', 'w')
- fp.write(content_type)
- fp.close()
- os.unlink(temp_location)
-
-
-def unpack_file(filename, location, content_type, link):
- if (content_type == 'application/zip'
- or filename.endswith('.zip')
- or filename.endswith('.pybundle')
- or zipfile.is_zipfile(filename)):
- unzip_file(filename, location, flatten=not filename.endswith('.pybundle'))
- elif (content_type == 'application/x-gzip'
- or tarfile.is_tarfile(filename)
- or splitext(filename)[1].lower() in ('.tar', '.tar.gz', '.tar.bz2', '.tgz', '.tbz')):
- untar_file(filename, location)
- elif (content_type and content_type.startswith('text/html')
- and is_svn_page(file_contents(filename))):
- # We don't really care about this
- from pip.vcs.subversion import Subversion
- Subversion('svn+' + link.url).unpack(location)
- else:
- ## FIXME: handle?
- ## FIXME: magic signatures?
- logger.fatal('Cannot unpack file %s (downloaded from %s, content-type: %s); cannot detect archive format'
- % (filename, location, content_type))
- raise InstallationError('Cannot determine archive format of %s' % location)
-
-
-
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/__init__.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/__init__.py
deleted file mode 100644
index a2137e9..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/__init__.py
+++ /dev/null
@@ -1,244 +0,0 @@
-"""Handles all VCS (version control) support"""
-
-import os
-import shutil
-
-from pip.backwardcompat import urlparse, urllib
-from pip.log import logger
-from pip.util import (display_path, backup_dir, find_command,
- ask, rmtree, ask_path_exists)
-
-
-__all__ = ['vcs', 'get_src_requirement']
-
-
-class VcsSupport(object):
- _registry = {}
- schemes = ['ssh', 'git', 'hg', 'bzr', 'sftp', 'svn']
-
- def __init__(self):
- # Register more schemes with urlparse for various version control systems
- urlparse.uses_netloc.extend(self.schemes)
- urlparse.uses_fragment.extend(self.schemes)
- super(VcsSupport, self).__init__()
-
- def __iter__(self):
- return self._registry.__iter__()
-
- @property
- def backends(self):
- return list(self._registry.values())
-
- @property
- def dirnames(self):
- return [backend.dirname for backend in self.backends]
-
- @property
- def all_schemes(self):
- schemes = []
- for backend in self.backends:
- schemes.extend(backend.schemes)
- return schemes
-
- def register(self, cls):
- if not hasattr(cls, 'name'):
- logger.warn('Cannot register VCS %s' % cls.__name__)
- return
- if cls.name not in self._registry:
- self._registry[cls.name] = cls
-
- def unregister(self, cls=None, name=None):
- if name in self._registry:
- del self._registry[name]
- elif cls in self._registry.values():
- del self._registry[cls.name]
- else:
- logger.warn('Cannot unregister because no class or name given')
-
- def get_backend_name(self, location):
- """
- Return the name of the version control backend if found at given
- location, e.g. vcs.get_backend_name('/path/to/vcs/checkout')
- """
- for vc_type in self._registry.values():
- path = os.path.join(location, vc_type.dirname)
- if os.path.exists(path):
- return vc_type.name
- return None
-
- def get_backend(self, name):
- name = name.lower()
- if name in self._registry:
- return self._registry[name]
-
- def get_backend_from_location(self, location):
- vc_type = self.get_backend_name(location)
- if vc_type:
- return self.get_backend(vc_type)
- return None
-
-
-vcs = VcsSupport()
-
-
-class VersionControl(object):
- name = ''
- dirname = ''
-
- def __init__(self, url=None, *args, **kwargs):
- self.url = url
- self._cmd = None
- super(VersionControl, self).__init__(*args, **kwargs)
-
- def _filter(self, line):
- return (logger.INFO, line)
-
- def _is_local_repository(self, repo):
- """
- posix absolute paths start with os.path.sep,
- win32 ones ones start with drive (like c:\\folder)
- """
- drive, tail = os.path.splitdrive(repo)
- return repo.startswith(os.path.sep) or drive
-
- @property
- def cmd(self):
- if self._cmd is not None:
- return self._cmd
- command = find_command(self.name)
- logger.info('Found command %r at %r' % (self.name, command))
- self._cmd = command
- return command
-
- def get_url_rev(self):
- """
- Returns the correct repository URL and revision by parsing the given
- repository URL
- """
- url = self.url.split('+', 1)[1]
- scheme, netloc, path, query, frag = urlparse.urlsplit(url)
- rev = None
- if '@' in path:
- path, rev = path.rsplit('@', 1)
- url = urlparse.urlunsplit((scheme, netloc, path, query, ''))
- return url, rev
-
- def get_info(self, location):
- """
- Returns (url, revision), where both are strings
- """
- assert not location.rstrip('/').endswith(self.dirname), 'Bad directory: %s' % location
- return self.get_url(location), self.get_revision(location)
-
- def normalize_url(self, url):
- """
- Normalize a URL for comparison by unquoting it and removing any trailing slash.
- """
- return urllib.unquote(url).rstrip('/')
-
- def compare_urls(self, url1, url2):
- """
- Compare two repo URLs for identity, ignoring incidental differences.
- """
- return (self.normalize_url(url1) == self.normalize_url(url2))
-
- def parse_vcs_bundle_file(self, content):
- """
- Takes the contents of the bundled text file that explains how to revert
- the stripped off version control data of the given package and returns
- the URL and revision of it.
- """
- raise NotImplementedError
-
- def obtain(self, dest):
- """
- Called when installing or updating an editable package, takes the
- source path of the checkout.
- """
- raise NotImplementedError
-
- def switch(self, dest, url, rev_options):
- """
- Switch the repo at ``dest`` to point to ``URL``.
- """
- raise NotImplemented
-
- def update(self, dest, rev_options):
- """
- Update an already-existing repo to the given ``rev_options``.
- """
- raise NotImplementedError
-
- def check_destination(self, dest, url, rev_options, rev_display):
- """
- Prepare a location to receive a checkout/clone.
-
- Return True if the location is ready for (and requires) a
- checkout/clone, False otherwise.
- """
- checkout = True
- prompt = False
- if os.path.exists(dest):
- checkout = False
- if os.path.exists(os.path.join(dest, self.dirname)):
- existing_url = self.get_url(dest)
- if self.compare_urls(existing_url, url):
- logger.info('%s in %s exists, and has correct URL (%s)' %
- (self.repo_name.title(), display_path(dest),
- url))
- logger.notify('Updating %s %s%s' %
- (display_path(dest), self.repo_name,
- rev_display))
- self.update(dest, rev_options)
- else:
- logger.warn('%s %s in %s exists with URL %s' %
- (self.name, self.repo_name,
- display_path(dest), existing_url))
- prompt = ('(s)witch, (i)gnore, (w)ipe, (b)ackup ',
- ('s', 'i', 'w', 'b'))
- else:
- logger.warn('Directory %s already exists, '
- 'and is not a %s %s.' %
- (dest, self.name, self.repo_name))
- prompt = ('(i)gnore, (w)ipe, (b)ackup ', ('i', 'w', 'b'))
- if prompt:
- logger.warn('The plan is to install the %s repository %s' %
- (self.name, url))
- response = ask_path_exists('What to do? %s' % prompt[0],
- prompt[1])
-
- if response == 's':
- logger.notify('Switching %s %s to %s%s' %
- (self.repo_name, display_path(dest), url,
- rev_display))
- self.switch(dest, url, rev_options)
- elif response == 'i':
- # do nothing
- pass
- elif response == 'w':
- logger.warn('Deleting %s' % display_path(dest))
- rmtree(dest)
- checkout = True
- elif response == 'b':
- dest_dir = backup_dir(dest)
- logger.warn('Backing up %s to %s'
- % (display_path(dest), dest_dir))
- shutil.move(dest, dest_dir)
- checkout = True
- return checkout
-
- def unpack(self, location):
- if os.path.exists(location):
- rmtree(location)
- self.obtain(location)
-
- def get_src_requirement(self, dist, location, find_tags=False):
- raise NotImplementedError
-
-
-def get_src_requirement(dist, location, find_tags):
- version_control = vcs.get_backend_from_location(location)
- if version_control:
- return version_control().get_src_requirement(dist, location, find_tags)
- logger.warn('cannot determine version of editable source in %s (is not SVN checkout, Git clone, Mercurial clone or Bazaar branch)' % location)
- return dist.as_requirement()
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/bazaar.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/bazaar.py
deleted file mode 100644
index 5d52777..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/bazaar.py
+++ /dev/null
@@ -1,129 +0,0 @@
-import os
-import tempfile
-import re
-from pip import call_subprocess
-from pip.backwardcompat import urlparse
-from pip.log import logger
-from pip.util import rmtree, display_path
-from pip.vcs import vcs, VersionControl
-from pip.download import path_to_url2
-
-
-class Bazaar(VersionControl):
- name = 'bzr'
- dirname = '.bzr'
- repo_name = 'branch'
- bundle_file = 'bzr-branch.txt'
- schemes = ('bzr', 'bzr+http', 'bzr+https', 'bzr+ssh', 'bzr+sftp', 'bzr+ftp', 'bzr+lp')
- guide = ('# This was a Bazaar branch; to make it a branch again run:\n'
- 'bzr branch -r %(rev)s %(url)s .\n')
-
- def __init__(self, url=None, *args, **kwargs):
- super(Bazaar, self).__init__(url, *args, **kwargs)
- urlparse.non_hierarchical.extend(['lp'])
- urlparse.uses_fragment.extend(['lp'])
-
- def parse_vcs_bundle_file(self, content):
- url = rev = None
- for line in content.splitlines():
- if not line.strip() or line.strip().startswith('#'):
- continue
- match = re.search(r'^bzr\s*branch\s*-r\s*(\d*)', line)
- if match:
- rev = match.group(1).strip()
- url = line[match.end():].strip().split(None, 1)[0]
- if url and rev:
- return url, rev
- return None, None
-
- def export(self, location):
- """Export the Bazaar repository at the url to the destination location"""
- temp_dir = tempfile.mkdtemp('-export', 'pip-')
- self.unpack(temp_dir)
- if os.path.exists(location):
- # Remove the location to make sure Bazaar can export it correctly
- rmtree(location)
- try:
- call_subprocess([self.cmd, 'export', location], cwd=temp_dir,
- filter_stdout=self._filter, show_stdout=False)
- finally:
- rmtree(temp_dir)
-
- def switch(self, dest, url, rev_options):
- call_subprocess([self.cmd, 'switch', url], cwd=dest)
-
- def update(self, dest, rev_options):
- call_subprocess(
- [self.cmd, 'pull', '-q'] + rev_options, cwd=dest)
-
- def obtain(self, dest):
- url, rev = self.get_url_rev()
- if rev:
- rev_options = ['-r', rev]
- rev_display = ' (to revision %s)' % rev
- else:
- rev_options = []
- rev_display = ''
- if self.check_destination(dest, url, rev_options, rev_display):
- logger.notify('Checking out %s%s to %s'
- % (url, rev_display, display_path(dest)))
- call_subprocess(
- [self.cmd, 'branch', '-q'] + rev_options + [url, dest])
-
- def get_url_rev(self):
- # hotfix the URL scheme after removing bzr+ from bzr+ssh:// readd it
- url, rev = super(Bazaar, self).get_url_rev()
- if url.startswith('ssh://'):
- url = 'bzr+' + url
- return url, rev
-
- def get_url(self, location):
- urls = call_subprocess(
- [self.cmd, 'info'], show_stdout=False, cwd=location)
- for line in urls.splitlines():
- line = line.strip()
- for x in ('checkout of branch: ',
- 'parent branch: '):
- if line.startswith(x):
- repo = line.split(x)[1]
- if self._is_local_repository(repo):
- return path_to_url2(repo)
- return repo
- return None
-
- def get_revision(self, location):
- revision = call_subprocess(
- [self.cmd, 'revno'], show_stdout=False, cwd=location)
- return revision.splitlines()[-1]
-
- def get_tag_revs(self, location):
- tags = call_subprocess(
- [self.cmd, 'tags'], show_stdout=False, cwd=location)
- tag_revs = []
- for line in tags.splitlines():
- tags_match = re.search(r'([.\w-]+)\s*(.*)$', line)
- if tags_match:
- tag = tags_match.group(1)
- rev = tags_match.group(2)
- tag_revs.append((rev.strip(), tag.strip()))
- return dict(tag_revs)
-
- def get_src_requirement(self, dist, location, find_tags):
- repo = self.get_url(location)
- if not repo.lower().startswith('bzr:'):
- repo = 'bzr+' + repo
- egg_project_name = dist.egg_name().split('-', 1)[0]
- if not repo:
- return None
- current_rev = self.get_revision(location)
- tag_revs = self.get_tag_revs(location)
-
- if current_rev in tag_revs:
- # It's a tag
- full_egg_name = '%s-%s' % (egg_project_name, tag_revs[current_rev])
- else:
- full_egg_name = '%s-dev_r%s' % (dist.egg_name(), current_rev)
- return '%s@%s#egg=%s' % (repo, current_rev, full_egg_name)
-
-
-vcs.register(Bazaar)
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/git.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/git.py
deleted file mode 100644
index ecaf19f..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/git.py
+++ /dev/null
@@ -1,206 +0,0 @@
-import tempfile
-import re
-from pip import call_subprocess
-from pip.util import display_path, rmtree
-from pip.vcs import vcs, VersionControl
-from pip.log import logger
-from pip.backwardcompat import url2pathname, urlparse
-urlsplit = urlparse.urlsplit
-urlunsplit = urlparse.urlunsplit
-
-
-class Git(VersionControl):
- name = 'git'
- dirname = '.git'
- repo_name = 'clone'
- schemes = ('git', 'git+http', 'git+https', 'git+ssh', 'git+git', 'git+file')
- bundle_file = 'git-clone.txt'
- guide = ('# This was a Git repo; to make it a repo again run:\n'
- 'git init\ngit remote add origin %(url)s -f\ngit checkout %(rev)s\n')
-
- def __init__(self, url=None, *args, **kwargs):
-
- # Works around an apparent Git bug
- # (see http://article.gmane.org/gmane.comp.version-control.git/146500)
- if url:
- scheme, netloc, path, query, fragment = urlsplit(url)
- if scheme.endswith('file'):
- initial_slashes = path[:-len(path.lstrip('/'))]
- newpath = initial_slashes + url2pathname(path).replace('\\', '/').lstrip('/')
- url = urlunsplit((scheme, netloc, newpath, query, fragment))
- after_plus = scheme.find('+')+1
- url = scheme[:after_plus]+ urlunsplit((scheme[after_plus:], netloc, newpath, query, fragment))
-
- super(Git, self).__init__(url, *args, **kwargs)
-
- def parse_vcs_bundle_file(self, content):
- url = rev = None
- for line in content.splitlines():
- if not line.strip() or line.strip().startswith('#'):
- continue
- url_match = re.search(r'git\s*remote\s*add\s*origin(.*)\s*-f', line)
- if url_match:
- url = url_match.group(1).strip()
- rev_match = re.search(r'^git\s*checkout\s*-q\s*(.*)\s*', line)
- if rev_match:
- rev = rev_match.group(1).strip()
- if url and rev:
- return url, rev
- return None, None
-
- def export(self, location):
- """Export the Git repository at the url to the destination location"""
- temp_dir = tempfile.mkdtemp('-export', 'pip-')
- self.unpack(temp_dir)
- try:
- if not location.endswith('/'):
- location = location + '/'
- call_subprocess(
- [self.cmd, 'checkout-index', '-a', '-f', '--prefix', location],
- filter_stdout=self._filter, show_stdout=False, cwd=temp_dir)
- finally:
- rmtree(temp_dir)
-
- def check_rev_options(self, rev, dest, rev_options):
- """Check the revision options before checkout to compensate that tags
- and branches may need origin/ as a prefix.
- Returns the SHA1 of the branch or tag if found.
- """
- revisions = self.get_tag_revs(dest)
- revisions.update(self.get_branch_revs(dest))
-
- origin_rev = 'origin/%s' % rev
- if origin_rev in revisions:
- # remote branch
- return [revisions[origin_rev]]
- elif rev in revisions:
- # a local tag or branch name
- return [revisions[rev]]
- else:
- logger.warn("Could not find a tag or branch '%s', assuming commit." % rev)
- return rev_options
-
- def switch(self, dest, url, rev_options):
- call_subprocess(
- [self.cmd, 'config', 'remote.origin.url', url], cwd=dest)
- call_subprocess(
- [self.cmd, 'checkout', '-q'] + rev_options, cwd=dest)
-
- def update(self, dest, rev_options):
- # First fetch changes from the default remote
- call_subprocess([self.cmd, 'fetch', '-q'], cwd=dest)
- # Then reset to wanted revision (maby even origin/master)
- if rev_options:
- rev_options = self.check_rev_options(rev_options[0], dest, rev_options)
- call_subprocess([self.cmd, 'reset', '--hard', '-q'] + rev_options, cwd=dest)
-
- def obtain(self, dest):
- url, rev = self.get_url_rev()
- if rev:
- rev_options = [rev]
- rev_display = ' (to %s)' % rev
- else:
- rev_options = ['origin/master']
- rev_display = ''
- if self.check_destination(dest, url, rev_options, rev_display):
- logger.notify('Cloning %s%s to %s' % (url, rev_display, display_path(dest)))
- call_subprocess([self.cmd, 'clone', '-q', url, dest])
- if rev:
- rev_options = self.check_rev_options(rev, dest, rev_options)
- # Only do a checkout if rev_options differs from HEAD
- if not self.get_revision(dest).startswith(rev_options[0]):
- call_subprocess([self.cmd, 'checkout', '-q'] + rev_options, cwd=dest)
-
- def get_url(self, location):
- url = call_subprocess(
- [self.cmd, 'config', 'remote.origin.url'],
- show_stdout=False, cwd=location)
- return url.strip()
-
- def get_revision(self, location):
- current_rev = call_subprocess(
- [self.cmd, 'rev-parse', 'HEAD'], show_stdout=False, cwd=location)
- return current_rev.strip()
-
- def get_tag_revs(self, location):
- tags = self._get_all_tag_names(location)
- tag_revs = {}
- for line in tags.splitlines():
- tag = line.strip()
- rev = self._get_revision_from_rev_parse(tag, location)
- tag_revs[tag] = rev.strip()
- return tag_revs
-
- def get_branch_revs(self, location):
- branches = self._get_all_branch_names(location)
- branch_revs = {}
- for line in branches.splitlines():
- if '(no branch)' in line:
- continue
- line = line.split('->')[0].strip()
- # actual branch case
- branch = "".join(b for b in line.split() if b != '*')
- rev = self._get_revision_from_rev_parse(branch, location)
- branch_revs[branch] = rev.strip()
- return branch_revs
-
- def get_src_requirement(self, dist, location, find_tags):
- repo = self.get_url(location)
- if not repo.lower().startswith('git:'):
- repo = 'git+' + repo
- egg_project_name = dist.egg_name().split('-', 1)[0]
- if not repo:
- return None
- current_rev = self.get_revision(location)
- tag_revs = self.get_tag_revs(location)
- branch_revs = self.get_branch_revs(location)
-
- if current_rev in tag_revs:
- # It's a tag
- full_egg_name = '%s-%s' % (egg_project_name, tag_revs[current_rev])
- elif (current_rev in branch_revs and
- branch_revs[current_rev] != 'origin/master'):
- # It's the head of a branch
- full_egg_name = '%s-%s' % (egg_project_name,
- branch_revs[current_rev].replace('origin/', ''))
- else:
- full_egg_name = '%s-dev' % egg_project_name
-
- return '%s@%s#egg=%s' % (repo, current_rev, full_egg_name)
-
- def get_url_rev(self):
- """
- Prefixes stub URLs like 'user@hostname:user/repo.git' with 'ssh://'.
- That's required because although they use SSH they sometimes doesn't
- work with a ssh:// scheme (e.g. Github). But we need a scheme for
- parsing. Hence we remove it again afterwards and return it as a stub.
- """
- if not '://' in self.url:
- assert not 'file:' in self.url
- self.url = self.url.replace('git+', 'git+ssh://')
- url, rev = super(Git, self).get_url_rev()
- url = url.replace('ssh://', '')
- else:
- url, rev = super(Git, self).get_url_rev()
-
- return url, rev
-
- def _get_all_tag_names(self, location):
- return call_subprocess([self.cmd, 'tag', '-l'],
- show_stdout=False,
- raise_on_returncode=False,
- cwd=location)
-
- def _get_all_branch_names(self, location):
- remote_branches = call_subprocess([self.cmd, 'branch', '-r'],
- show_stdout=False, cwd=location)
- local_branches = call_subprocess([self.cmd, 'branch', '-l'],
- show_stdout=False, cwd=location)
- return remote_branches + local_branches
-
- def _get_revision_from_rev_parse(self, name, location):
- return call_subprocess([self.cmd, 'rev-parse', name],
- show_stdout=False, cwd=location)
-
-
-vcs.register(Git)
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/mercurial.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/mercurial.py
deleted file mode 100644
index fbafccc..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/mercurial.py
+++ /dev/null
@@ -1,151 +0,0 @@
-import os
-import tempfile
-import re
-import sys
-from pip import call_subprocess
-from pip.util import display_path, rmtree
-from pip.log import logger
-from pip.vcs import vcs, VersionControl
-from pip.download import path_to_url2
-from pip.backwardcompat import ConfigParser
-
-
-class Mercurial(VersionControl):
- name = 'hg'
- dirname = '.hg'
- repo_name = 'clone'
- schemes = ('hg', 'hg+http', 'hg+https', 'hg+ssh', 'hg+static-http')
- bundle_file = 'hg-clone.txt'
- guide = ('# This was a Mercurial repo; to make it a repo again run:\n'
- 'hg init\nhg pull %(url)s\nhg update -r %(rev)s\n')
-
- def parse_vcs_bundle_file(self, content):
- url = rev = None
- for line in content.splitlines():
- if not line.strip() or line.strip().startswith('#'):
- continue
- url_match = re.search(r'hg\s*pull\s*(.*)\s*', line)
- if url_match:
- url = url_match.group(1).strip()
- rev_match = re.search(r'^hg\s*update\s*-r\s*(.*)\s*', line)
- if rev_match:
- rev = rev_match.group(1).strip()
- if url and rev:
- return url, rev
- return None, None
-
- def export(self, location):
- """Export the Hg repository at the url to the destination location"""
- temp_dir = tempfile.mkdtemp('-export', 'pip-')
- self.unpack(temp_dir)
- try:
- call_subprocess(
- [self.cmd, 'archive', location],
- filter_stdout=self._filter, show_stdout=False, cwd=temp_dir)
- finally:
- rmtree(temp_dir)
-
- def switch(self, dest, url, rev_options):
- repo_config = os.path.join(dest, self.dirname, 'hgrc')
- config = ConfigParser.SafeConfigParser()
- try:
- config.read(repo_config)
- config.set('paths', 'default', url)
- config_file = open(repo_config, 'w')
- config.write(config_file)
- config_file.close()
- except (OSError, ConfigParser.NoSectionError):
- e = sys.exc_info()[1]
- logger.warn(
- 'Could not switch Mercurial repository to %s: %s'
- % (url, e))
- else:
- call_subprocess([self.cmd, 'update', '-q'] + rev_options, cwd=dest)
-
- def update(self, dest, rev_options):
- call_subprocess([self.cmd, 'pull', '-q'], cwd=dest)
- call_subprocess(
- [self.cmd, 'update', '-q'] + rev_options, cwd=dest)
-
- def obtain(self, dest):
- url, rev = self.get_url_rev()
- if rev:
- rev_options = [rev]
- rev_display = ' (to revision %s)' % rev
- else:
- rev_options = []
- rev_display = ''
- if self.check_destination(dest, url, rev_options, rev_display):
- logger.notify('Cloning hg %s%s to %s'
- % (url, rev_display, display_path(dest)))
- call_subprocess([self.cmd, 'clone', '--noupdate', '-q', url, dest])
- call_subprocess([self.cmd, 'update', '-q'] + rev_options, cwd=dest)
-
- def get_url(self, location):
- url = call_subprocess(
- [self.cmd, 'showconfig', 'paths.default'],
- show_stdout=False, cwd=location).strip()
- if self._is_local_repository(url):
- url = path_to_url2(url)
- return url.strip()
-
- def get_tag_revs(self, location):
- tags = call_subprocess(
- [self.cmd, 'tags'], show_stdout=False, cwd=location)
- tag_revs = []
- for line in tags.splitlines():
- tags_match = re.search(r'([\w\d\.-]+)\s*([\d]+):.*$', line)
- if tags_match:
- tag = tags_match.group(1)
- rev = tags_match.group(2)
- if "tip" != tag:
- tag_revs.append((rev.strip(), tag.strip()))
- return dict(tag_revs)
-
- def get_branch_revs(self, location):
- branches = call_subprocess(
- [self.cmd, 'branches'], show_stdout=False, cwd=location)
- branch_revs = []
- for line in branches.splitlines():
- branches_match = re.search(r'([\w\d\.-]+)\s*([\d]+):.*$', line)
- if branches_match:
- branch = branches_match.group(1)
- rev = branches_match.group(2)
- if "default" != branch:
- branch_revs.append((rev.strip(), branch.strip()))
- return dict(branch_revs)
-
- def get_revision(self, location):
- current_revision = call_subprocess(
- [self.cmd, 'parents', '--template={rev}'],
- show_stdout=False, cwd=location).strip()
- return current_revision
-
- def get_revision_hash(self, location):
- current_rev_hash = call_subprocess(
- [self.cmd, 'parents', '--template={node}'],
- show_stdout=False, cwd=location).strip()
- return current_rev_hash
-
- def get_src_requirement(self, dist, location, find_tags):
- repo = self.get_url(location)
- if not repo.lower().startswith('hg:'):
- repo = 'hg+' + repo
- egg_project_name = dist.egg_name().split('-', 1)[0]
- if not repo:
- return None
- current_rev = self.get_revision(location)
- current_rev_hash = self.get_revision_hash(location)
- tag_revs = self.get_tag_revs(location)
- branch_revs = self.get_branch_revs(location)
- if current_rev in tag_revs:
- # It's a tag
- full_egg_name = '%s-%s' % (egg_project_name, tag_revs[current_rev])
- elif current_rev in branch_revs:
- # It's the tip of a branch
- full_egg_name = '%s-%s' % (egg_project_name, branch_revs[current_rev])
- else:
- full_egg_name = '%s-dev' % egg_project_name
- return '%s@%s#egg=%s' % (repo, current_rev_hash, full_egg_name)
-
-vcs.register(Mercurial)
diff --git a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/subversion.py b/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/subversion.py
deleted file mode 100644
index f54eee6..0000000
--- a/lib/python2.7/site-packages/pip-1.1-py2.7.egg/pip/vcs/subversion.py
+++ /dev/null
@@ -1,272 +0,0 @@
-import os
-import re
-from pip.backwardcompat import urlparse
-from pip import call_subprocess, InstallationError
-from pip.index import Link
-from pip.util import rmtree, display_path
-from pip.log import logger
-from pip.vcs import vcs, VersionControl
-
-_svn_xml_url_re = re.compile('url="([^"]+)"')
-_svn_rev_re = re.compile('committed-rev="(\d+)"')
-_svn_url_re = re.compile(r'URL: (.+)')
-_svn_revision_re = re.compile(r'Revision: (.+)')
-_svn_info_xml_rev_re = re.compile(r'\s*revision="(\d+)"')
-_svn_info_xml_url_re = re.compile(r'<url>(.*)</url>')
-
-
-class Subversion(VersionControl):
- name = 'svn'
- dirname = '.svn'
- repo_name = 'checkout'
- schemes = ('svn', 'svn+ssh', 'svn+http', 'svn+https', 'svn+svn')
- bundle_file = 'svn-checkout.txt'
- guide = ('# This was an svn checkout; to make it a checkout again run:\n'
- 'svn checkout --force -r %(rev)s %(url)s .\n')
-
- def get_info(self, location):
- """Returns (url, revision), where both are strings"""
- assert not location.rstrip('/').endswith(self.dirname), 'Bad directory: %s' % location
- output = call_subprocess(
- [self.cmd, 'info', location], show_stdout=False, extra_environ={'LANG': 'C'})
- match = _svn_url_re.search(output)
- if not match:
- logger.warn('Cannot determine URL of svn checkout %s' % display_path(location))
- logger.info('Output that cannot be parsed: \n%s' % output)
- return None, None
- url = match.group(1).strip()
- match = _svn_revision_re.search(output)
- if not match:
- logger.warn('Cannot determine revision of svn checkout %s' % display_path(location))
- logger.info('Output that cannot be parsed: \n%s' % output)
- return url, None
- return url, match.group(1)
-
- def parse_vcs_bundle_file(self, content):
- for line in content.splitlines():
- if not line.strip() or line.strip().startswith('#'):
- continue
- match = re.search(r'^-r\s*([^ ])?', line)
- if not match:
- return None, None
- rev = match.group(1)
- rest = line[match.end():].strip().split(None, 1)[0]
- return rest, rev
- return None, None
-
- def export(self, location):
- """Export the svn repository at the url to the destination location"""
- url, rev = self.get_url_rev()
- rev_options = get_rev_options(url, rev)
- logger.notify('Exporting svn repository %s to %s' % (url, location))
- logger.indent += 2
- try:
- if os.path.exists(location):
- # Subversion doesn't like to check out over an existing directory
- # --force fixes this, but was only added in svn 1.5
- rmtree(location)
- call_subprocess(
- [self.cmd, 'export'] + rev_options + [url, location],
- filter_stdout=self._filter, show_stdout=False)
- finally:
- logger.indent -= 2
-
- def switch(self, dest, url, rev_options):
- call_subprocess(
- [self.cmd, 'switch'] + rev_options + [url, dest])
-
- def update(self, dest, rev_options):
- call_subprocess(
- [self.cmd, 'update'] + rev_options + [dest])
-
- def obtain(self, dest):
- url, rev = self.get_url_rev()
- rev_options = get_rev_options(url, rev)
- if rev:
- rev_display = ' (to revision %s)' % rev
- else:
- rev_display = ''
- if self.check_destination(dest, url, rev_options, rev_display):
- logger.notify('Checking out %s%s to %s'
- % (url, rev_display, display_path(dest)))
- call_subprocess(
- [self.cmd, 'checkout', '-q'] + rev_options + [url, dest])
-
- def get_location(self, dist, dependency_links):
- for url in dependency_links:
- egg_fragment = Link(url).egg_fragment
- if not egg_fragment:
- continue
- if '-' in egg_fragment:
- ## FIXME: will this work when a package has - in the name?
- key = '-'.join(egg_fragment.split('-')[:-1]).lower()
- else:
- key = egg_fragment
- if key == dist.key:
- return url.split('#', 1)[0]
- return None
-
- def get_revision(self, location):
- """
- Return the maximum revision for all files under a given location
- """
- # Note: taken from setuptools.command.egg_info
- revision = 0
-
- for base, dirs, files in os.walk(location):
- if self.dirname not in dirs:
- dirs[:] = []
- continue # no sense walking uncontrolled subdirs
- dirs.remove(self.dirname)
- entries_fn = os.path.join(base, self.dirname, 'entries')
- if not os.path.exists(entries_fn):
- ## FIXME: should we warn?
- continue
-
- dirurl, localrev = self._get_svn_url_rev(base)
-
- if base == location:
- base_url = dirurl+'/' # save the root url
- elif not dirurl or not dirurl.startswith(base_url):
- dirs[:] = []
- continue # not part of the same svn tree, skip it
- revision = max(revision, localrev)
- return revision
-
- def get_url_rev(self):
- # hotfix the URL scheme after removing svn+ from svn+ssh:// readd it
- url, rev = super(Subversion, self).get_url_rev()
- if url.startswith('ssh://'):
- url = 'svn+' + url
- return url, rev
-
- def get_url(self, location):
- # In cases where the source is in a subdirectory, not alongside setup.py
- # we have to look up in the location until we find a real setup.py
- orig_location = location
- while not os.path.exists(os.path.join(location, 'setup.py')):
- last_location = location
- location = os.path.dirname(location)
- if location == last_location:
- # We've traversed up to the root of the filesystem without finding setup.py
- logger.warn("Could not find setup.py for directory %s (tried all parent directories)"
- % orig_location)
- return None
-
- return self._get_svn_url_rev(location)[0]
-
- def _get_svn_url_rev(self, location):
- f = open(os.path.join(location, self.dirname, 'entries'))
- data = f.read()
- f.close()
- if data.startswith('8') or data.startswith('9') or data.startswith('10'):
- data = list(map(str.splitlines, data.split('\n\x0c\n')))
- del data[0][0] # get rid of the '8'
- url = data[0][3]
- revs = [int(d[9]) for d in data if len(d)>9 and d[9]]+[0]
- elif data.startswith('<?xml'):
- match = _svn_xml_url_re.search(data)
- if not match:
- raise ValueError('Badly formatted data: %r' % data)
- url = match.group(1) # get repository URL
- revs = [int(m.group(1)) for m in _svn_rev_re.finditer(data)]+[0]
- else:
- try:
- # subversion >= 1.7
- xml = call_subprocess([self.cmd, 'info', '--xml', location], show_stdout=False)
- url = _svn_info_xml_url_re.search(xml).group(1)
- revs = [int(m.group(1)) for m in _svn_info_xml_rev_re.finditer(xml)]
- except InstallationError:
- url, revs = None, []
-
- if revs:
- rev = max(revs)
- else:
- rev = 0
-
- return url, rev
-
- def get_tag_revs(self, svn_tag_url):
- stdout = call_subprocess(
- [self.cmd, 'ls', '-v', svn_tag_url], show_stdout=False)
- results = []
- for line in stdout.splitlines():
- parts = line.split()
- rev = int(parts[0])
- tag = parts[-1].strip('/')
- results.append((tag, rev))
- return results
-
- def find_tag_match(self, rev, tag_revs):
- best_match_rev = None
- best_tag = None
- for tag, tag_rev in tag_revs:
- if (tag_rev > rev and
- (best_match_rev is None or best_match_rev > tag_rev)):
- # FIXME: Is best_match > tag_rev really possible?
- # or is it a sign something is wacky?
- best_match_rev = tag_rev
- best_tag = tag
- return best_tag
-
- def get_src_requirement(self, dist, location, find_tags=False):
- repo = self.get_url(location)
- if repo is None:
- return None
- parts = repo.split('/')
- ## FIXME: why not project name?
- egg_project_name = dist.egg_name().split('-', 1)[0]
- rev = self.get_revision(location)
- if parts[-2] in ('tags', 'tag'):
- # It's a tag, perfect!
- full_egg_name = '%s-%s' % (egg_project_name, parts[-1])
- elif parts[-2] in ('branches', 'branch'):
- # It's a branch :(
- full_egg_name = '%s-%s-r%s' % (dist.egg_name(), parts[-1], rev)
- elif parts[-1] == 'trunk':
- # Trunk :-/
- full_egg_name = '%s-dev_r%s' % (dist.egg_name(), rev)
- if find_tags:
- tag_url = '/'.join(parts[:-1]) + '/tags'
- tag_revs = self.get_tag_revs(tag_url)
- match = self.find_tag_match(rev, tag_revs)
- if match:
- logger.notify('trunk checkout %s seems to be equivalent to tag %s' % match)
- repo = '%s/%s' % (tag_url, match)
- full_egg_name = '%s-%s' % (egg_project_name, match)
- else:
- # Don't know what it is
- logger.warn('svn URL does not fit normal structure (tags/branches/trunk): %s' % repo)
- full_egg_name = '%s-dev_r%s' % (egg_project_name, rev)
- return 'svn+%s@%s#egg=%s' % (repo, rev, full_egg_name)
-
-
-def get_rev_options(url, rev):
- if rev:
- rev_options = ['-r', rev]
- else:
- rev_options = []
-
- r = urlparse.urlsplit(url)
- if hasattr(r, 'username'):
- # >= Python-2.5
- username, password = r.username, r.password
- else:
- netloc = r[1]
- if '@' in netloc:
- auth = netloc.split('@')[0]
- if ':' in auth:
- username, password = auth.split(':', 1)
- else:
- username, password = auth, None
- else:
- username, password = None, None
-
- if username:
- rev_options += ['--username', username]
- if password:
- rev_options += ['--password', password]
- return rev_options
-
-
-vcs.register(Subversion)
diff --git a/lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/PKG-INFO b/lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/PKG-INFO
deleted file mode 100644
index 67bd136..0000000
--- a/lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/PKG-INFO
+++ /dev/null
@@ -1,33 +0,0 @@
-Metadata-Version: 1.1
-Name: pyserial
-Version: 2.7
-Summary: Python Serial Port Extension
-Home-page: http://pyserial.sourceforge.net/
-Author: Chris Liechti
-Author-email: cliechti@gmx.net
-License: Python
-Description: Python Serial Port Extension for Win32, Linux, BSD, Jython, IronPython
-Platform: any
-Classifier: Development Status :: 5 - Production/Stable
-Classifier: Intended Audience :: Developers
-Classifier: Intended Audience :: End Users/Desktop
-Classifier: License :: OSI Approved :: Python Software Foundation License
-Classifier: Natural Language :: English
-Classifier: Operating System :: POSIX
-Classifier: Operating System :: Microsoft :: Windows
-Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.3
-Classifier: Programming Language :: Python :: 2.4
-Classifier: Programming Language :: Python :: 2.5
-Classifier: Programming Language :: Python :: 2.6
-Classifier: Programming Language :: Python :: 2.7
-Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.0
-Classifier: Programming Language :: Python :: 3.1
-Classifier: Programming Language :: Python :: 3.2
-Classifier: Programming Language :: Python :: 3.3
-Classifier: Topic :: Communications
-Classifier: Topic :: Software Development :: Libraries
-Classifier: Topic :: Software Development :: Libraries :: Python Modules
-Classifier: Topic :: Terminals :: Serial
diff --git a/lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/SOURCES.txt b/lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/SOURCES.txt
deleted file mode 100644
index cb112cf..0000000
--- a/lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/SOURCES.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-CHANGES.txt
-LICENSE.txt
-MANIFEST.in
-README.txt
-setup.py
-documentation/Makefile
-documentation/appendix.rst
-documentation/conf.py
-documentation/examples.rst
-documentation/index.rst
-documentation/pyparallel.rst
-documentation/pyserial.png
-documentation/pyserial.rst
-documentation/pyserial_api.rst
-documentation/shortintro.rst
-examples/enhancedserial.py
-examples/port_publisher.py
-examples/port_publisher.sh
-examples/rfc2217_server.py
-examples/scan.py
-examples/scanlinux.py
-examples/scanwin32.py
-examples/setup-miniterm-py2exe.py
-examples/setup-rfc2217_server-py2exe.py
-examples/setup-wxTerminal-py2exe.py
-examples/tcp_serial_redirect.py
-examples/wxSerialConfigDialog.py
-examples/wxSerialConfigDialog.wxg
-examples/wxTerminal.py
-examples/wxTerminal.wxg
-pyserial.egg-info/PKG-INFO
-pyserial.egg-info/SOURCES.txt
-pyserial.egg-info/dependency_links.txt
-pyserial.egg-info/top_level.txt
-serial/__init__.py
-serial/rfc2217.py
-serial/serialcli.py
-serial/serialjava.py
-serial/serialposix.py
-serial/serialutil.py
-serial/serialwin32.py
-serial/sermsdos.py
-serial/win32.py
-serial/tools/__init__.py
-serial/tools/list_ports.py
-serial/tools/list_ports_linux.py
-serial/tools/list_ports_osx.py
-serial/tools/list_ports_posix.py
-serial/tools/list_ports_windows.py
-serial/tools/miniterm.py
-serial/urlhandler/__init__.py
-serial/urlhandler/protocol_hwgrep.py
-serial/urlhandler/protocol_loop.py
-serial/urlhandler/protocol_rfc2217.py
-serial/urlhandler/protocol_socket.py
-test/run_all_tests.py
-test/test.py
-test/test_advanced.py
-test/test_high_load.py
-test/test_iolib.py
-test/test_readline.py
-test/test_url.py \ No newline at end of file
diff --git a/lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/dependency_links.txt b/lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/dependency_links.txt
deleted file mode 100644
index 8b13789..0000000
--- a/lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/dependency_links.txt
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/installed-files.txt b/lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/installed-files.txt
deleted file mode 100644
index 05cc5c9..0000000
--- a/lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/installed-files.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-../serial/serialjava.py
-../serial/serialwin32.py
-../serial/win32.py
-../serial/serialcli.py
-../serial/__init__.py
-../serial/sermsdos.py
-../serial/rfc2217.py
-../serial/serialposix.py
-../serial/serialutil.py
-../serial/tools/list_ports_osx.py
-../serial/tools/list_ports.py
-../serial/tools/__init__.py
-../serial/tools/list_ports_posix.py
-../serial/tools/list_ports_windows.py
-../serial/tools/list_ports_linux.py
-../serial/tools/miniterm.py
-../serial/urlhandler/protocol_hwgrep.py
-../serial/urlhandler/protocol_loop.py
-../serial/urlhandler/__init__.py
-../serial/urlhandler/protocol_rfc2217.py
-../serial/urlhandler/protocol_socket.py
-../serial/serialjava.pyc
-../serial/serialwin32.pyc
-../serial/win32.pyc
-../serial/serialcli.pyc
-../serial/__init__.pyc
-../serial/sermsdos.pyc
-../serial/rfc2217.pyc
-../serial/serialposix.pyc
-../serial/serialutil.pyc
-../serial/tools/list_ports_osx.pyc
-../serial/tools/list_ports.pyc
-../serial/tools/__init__.pyc
-../serial/tools/list_ports_posix.pyc
-../serial/tools/list_ports_windows.pyc
-../serial/tools/list_ports_linux.pyc
-../serial/tools/miniterm.pyc
-../serial/urlhandler/protocol_hwgrep.pyc
-../serial/urlhandler/protocol_loop.pyc
-../serial/urlhandler/__init__.pyc
-../serial/urlhandler/protocol_rfc2217.pyc
-../serial/urlhandler/protocol_socket.pyc
-./
-PKG-INFO
-dependency_links.txt
-SOURCES.txt
-top_level.txt
-../../../../bin/miniterm.py
diff --git a/lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/top_level.txt b/lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/top_level.txt
deleted file mode 100644
index b6be06a..0000000
--- a/lib/python2.7/site-packages/pyserial-2.7-py2.7.egg-info/top_level.txt
+++ /dev/null
@@ -1 +0,0 @@
-serial
diff --git a/lib/python2.7/site-packages/serial/__init__.py b/lib/python2.7/site-packages/serial/__init__.py
deleted file mode 100644
index 33ae52e..0000000
--- a/lib/python2.7/site-packages/serial/__init__.py
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/env python
-
-# portable serial port access with python
-# this is a wrapper module for different platform implementations
-#
-# (C) 2001-2010 Chris Liechti <cliechti@gmx.net>
-# this is distributed under a free software license, see license.txt
-
-VERSION = '2.7'
-
-import sys
-
-if sys.platform == 'cli':
- from serial.serialcli import *
-else:
- import os
- # chose an implementation, depending on os
- if os.name == 'nt': #sys.platform == 'win32':
- from serial.serialwin32 import *
- elif os.name == 'posix':
- from serial.serialposix import *
- elif os.name == 'java':
- from serial.serialjava import *
- else:
- raise ImportError("Sorry: no implementation for your platform ('%s') available" % (os.name,))
-
-
-protocol_handler_packages = [
- 'serial.urlhandler',
- ]
-
-def serial_for_url(url, *args, **kwargs):
- """\
- Get an instance of the Serial class, depending on port/url. The port is not
- opened when the keyword parameter 'do_not_open' is true, by default it
- is. All other parameters are directly passed to the __init__ method when
- the port is instantiated.
-
- The list of package names that is searched for protocol handlers is kept in
- ``protocol_handler_packages``.
-
- e.g. we want to support a URL ``foobar://``. A module
- ``my_handlers.protocol_foobar`` is provided by the user. Then
- ``protocol_handler_packages.append("my_handlers")`` would extend the search
- path so that ``serial_for_url("foobar://"))`` would work.
- """
- # check remove extra parameter to not confuse the Serial class
- do_open = 'do_not_open' not in kwargs or not kwargs['do_not_open']
- if 'do_not_open' in kwargs: del kwargs['do_not_open']
- # the default is to use the native version
- klass = Serial # 'native' implementation
- # check port type and get class
- try:
- url_nocase = url.lower()
- except AttributeError:
- # it's not a string, use default
- pass
- else:
- if '://' in url_nocase:
- protocol = url_nocase.split('://', 1)[0]
- for package_name in protocol_handler_packages:
- module_name = '%s.protocol_%s' % (package_name, protocol,)
- try:
- handler_module = __import__(module_name)
- except ImportError:
- pass
- else:
- klass = sys.modules[module_name].Serial
- break
- else:
- raise ValueError('invalid URL, protocol %r not known' % (protocol,))
- else:
- klass = Serial # 'native' implementation
- # instantiate and open when desired
- instance = klass(None, *args, **kwargs)
- instance.port = url
- if do_open:
- instance.open()
- return instance
diff --git a/lib/python2.7/site-packages/serial/rfc2217.py b/lib/python2.7/site-packages/serial/rfc2217.py
deleted file mode 100644
index 2012ea7..0000000
--- a/lib/python2.7/site-packages/serial/rfc2217.py
+++ /dev/null
@@ -1,1323 +0,0 @@
-#! python
-#
-# Python Serial Port Extension for Win32, Linux, BSD, Jython
-# see __init__.py
-#
-# This module implements a RFC2217 compatible client. RF2217 descibes a
-# protocol to access serial ports over TCP/IP and allows setting the baud rate,
-# modem control lines etc.
-#
-# (C) 2001-2013 Chris Liechti <cliechti@gmx.net>
-# this is distributed under a free software license, see license.txt
-
-# TODO:
-# - setting control line -> answer is not checked (had problems with one of the
-# severs). consider implementing a compatibility mode flag to make check
-# conditional
-# - write timeout not implemented at all
-
-##############################################################################
-# observations and issues with servers
-#=============================================================================
-# sredird V2.2.1
-# - http://www.ibiblio.org/pub/Linux/system/serial/ sredird-2.2.2.tar.gz
-# - does not acknowledge SET_CONTROL (RTS/DTR) correctly, always responding
-# [105 1] instead of the actual value.
-# - SET_BAUDRATE answer contains 4 extra null bytes -> probably for larger
-# numbers than 2**32?
-# - To get the signature [COM_PORT_OPTION 0] has to be sent.
-# - run a server: while true; do nc -l -p 7000 -c "sredird debug /dev/ttyUSB0 /var/lock/sredir"; done
-#=============================================================================
-# telnetcpcd (untested)
-# - http://ftp.wayne.edu/kermit/sredird/telnetcpcd-1.09.tar.gz
-# - To get the signature [COM_PORT_OPTION] w/o data has to be sent.
-#=============================================================================
-# ser2net
-# - does not negotiate BINARY or COM_PORT_OPTION for his side but at least
-# acknowledges that the client activates these options
-# - The configuration may be that the server prints a banner. As this client
-# implementation does a flushInput on connect, this banner is hidden from
-# the user application.
-# - NOTIFY_MODEMSTATE: the poll interval of the server seems to be one
-# second.
-# - To get the signature [COM_PORT_OPTION 0] has to be sent.
-# - run a server: run ser2net daemon, in /etc/ser2net.conf:
-# 2000:telnet:0:/dev/ttyS0:9600 remctl banner
-##############################################################################
-
-# How to identify ports? pySerial might want to support other protocols in the
-# future, so lets use an URL scheme.
-# for RFC2217 compliant servers we will use this:
-# rfc2217://<host>:<port>[/option[/option...]]
-#
-# options:
-# - "debug" print diagnostic messages
-# - "ign_set_control": do not look at the answers to SET_CONTROL
-# - "poll_modem": issue NOTIFY_MODEMSTATE requests when CTS/DTR/RI/CD is read.
-# Without this option it expects that the server sends notifications
-# automatically on change (which most servers do and is according to the
-# RFC).
-# the order of the options is not relevant
-
-from serial.serialutil import *
-import time
-import struct
-import socket
-import threading
-import Queue
-import logging
-
-# port string is expected to be something like this:
-# rfc2217://host:port
-# host may be an IP or including domain, whatever.
-# port is 0...65535
-
-# map log level names to constants. used in fromURL()
-LOGGER_LEVELS = {
- 'debug': logging.DEBUG,
- 'info': logging.INFO,
- 'warning': logging.WARNING,
- 'error': logging.ERROR,
- }
-
-
-# telnet protocol characters
-IAC = to_bytes([255]) # Interpret As Command
-DONT = to_bytes([254])
-DO = to_bytes([253])
-WONT = to_bytes([252])
-WILL = to_bytes([251])
-IAC_DOUBLED = to_bytes([IAC, IAC])
-
-SE = to_bytes([240]) # Subnegotiation End
-NOP = to_bytes([241]) # No Operation
-DM = to_bytes([242]) # Data Mark
-BRK = to_bytes([243]) # Break
-IP = to_bytes([244]) # Interrupt process
-AO = to_bytes([245]) # Abort output
-AYT = to_bytes([246]) # Are You There
-EC = to_bytes([247]) # Erase Character
-EL = to_bytes([248]) # Erase Line
-GA = to_bytes([249]) # Go Ahead
-SB = to_bytes([250]) # Subnegotiation Begin
-
-# selected telnet options
-BINARY = to_bytes([0]) # 8-bit data path
-ECHO = to_bytes([1]) # echo
-SGA = to_bytes([3]) # suppress go ahead
-
-# RFC2217
-COM_PORT_OPTION = to_bytes([44])
-
-# Client to Access Server
-SET_BAUDRATE = to_bytes([1])
-SET_DATASIZE = to_bytes([2])
-SET_PARITY = to_bytes([3])
-SET_STOPSIZE = to_bytes([4])
-SET_CONTROL = to_bytes([5])
-NOTIFY_LINESTATE = to_bytes([6])
-NOTIFY_MODEMSTATE = to_bytes([7])
-FLOWCONTROL_SUSPEND = to_bytes([8])
-FLOWCONTROL_RESUME = to_bytes([9])
-SET_LINESTATE_MASK = to_bytes([10])
-SET_MODEMSTATE_MASK = to_bytes([11])
-PURGE_DATA = to_bytes([12])
-
-SERVER_SET_BAUDRATE = to_bytes([101])
-SERVER_SET_DATASIZE = to_bytes([102])
-SERVER_SET_PARITY = to_bytes([103])
-SERVER_SET_STOPSIZE = to_bytes([104])
-SERVER_SET_CONTROL = to_bytes([105])
-SERVER_NOTIFY_LINESTATE = to_bytes([106])
-SERVER_NOTIFY_MODEMSTATE = to_bytes([107])
-SERVER_FLOWCONTROL_SUSPEND = to_bytes([108])
-SERVER_FLOWCONTROL_RESUME = to_bytes([109])
-SERVER_SET_LINESTATE_MASK = to_bytes([110])
-SERVER_SET_MODEMSTATE_MASK = to_bytes([111])
-SERVER_PURGE_DATA = to_bytes([112])
-
-RFC2217_ANSWER_MAP = {
- SET_BAUDRATE: SERVER_SET_BAUDRATE,
- SET_DATASIZE: SERVER_SET_DATASIZE,
- SET_PARITY: SERVER_SET_PARITY,
- SET_STOPSIZE: SERVER_SET_STOPSIZE,
- SET_CONTROL: SERVER_SET_CONTROL,
- NOTIFY_LINESTATE: SERVER_NOTIFY_LINESTATE,
- NOTIFY_MODEMSTATE: SERVER_NOTIFY_MODEMSTATE,
- FLOWCONTROL_SUSPEND: SERVER_FLOWCONTROL_SUSPEND,
- FLOWCONTROL_RESUME: SERVER_FLOWCONTROL_RESUME,
- SET_LINESTATE_MASK: SERVER_SET_LINESTATE_MASK,
- SET_MODEMSTATE_MASK: SERVER_SET_MODEMSTATE_MASK,
- PURGE_DATA: SERVER_PURGE_DATA,
-}
-
-SET_CONTROL_REQ_FLOW_SETTING = to_bytes([0]) # Request Com Port Flow Control Setting (outbound/both)
-SET_CONTROL_USE_NO_FLOW_CONTROL = to_bytes([1]) # Use No Flow Control (outbound/both)
-SET_CONTROL_USE_SW_FLOW_CONTROL = to_bytes([2]) # Use XON/XOFF Flow Control (outbound/both)
-SET_CONTROL_USE_HW_FLOW_CONTROL = to_bytes([3]) # Use HARDWARE Flow Control (outbound/both)
-SET_CONTROL_REQ_BREAK_STATE = to_bytes([4]) # Request BREAK State
-SET_CONTROL_BREAK_ON = to_bytes([5]) # Set BREAK State ON
-SET_CONTROL_BREAK_OFF = to_bytes([6]) # Set BREAK State OFF
-SET_CONTROL_REQ_DTR = to_bytes([7]) # Request DTR Signal State
-SET_CONTROL_DTR_ON = to_bytes([8]) # Set DTR Signal State ON
-SET_CONTROL_DTR_OFF = to_bytes([9]) # Set DTR Signal State OFF
-SET_CONTROL_REQ_RTS = to_bytes([10]) # Request RTS Signal State
-SET_CONTROL_RTS_ON = to_bytes([11]) # Set RTS Signal State ON
-SET_CONTROL_RTS_OFF = to_bytes([12]) # Set RTS Signal State OFF
-SET_CONTROL_REQ_FLOW_SETTING_IN = to_bytes([13]) # Request Com Port Flow Control Setting (inbound)
-SET_CONTROL_USE_NO_FLOW_CONTROL_IN = to_bytes([14]) # Use No Flow Control (inbound)
-SET_CONTROL_USE_SW_FLOW_CONTOL_IN = to_bytes([15]) # Use XON/XOFF Flow Control (inbound)
-SET_CONTROL_USE_HW_FLOW_CONTOL_IN = to_bytes([16]) # Use HARDWARE Flow Control (inbound)
-SET_CONTROL_USE_DCD_FLOW_CONTROL = to_bytes([17]) # Use DCD Flow Control (outbound/both)
-SET_CONTROL_USE_DTR_FLOW_CONTROL = to_bytes([18]) # Use DTR Flow Control (inbound)
-SET_CONTROL_USE_DSR_FLOW_CONTROL = to_bytes([19]) # Use DSR Flow Control (outbound/both)
-
-LINESTATE_MASK_TIMEOUT = 128 # Time-out Error
-LINESTATE_MASK_SHIFTREG_EMPTY = 64 # Transfer Shift Register Empty
-LINESTATE_MASK_TRANSREG_EMPTY = 32 # Transfer Holding Register Empty
-LINESTATE_MASK_BREAK_DETECT = 16 # Break-detect Error
-LINESTATE_MASK_FRAMING_ERROR = 8 # Framing Error
-LINESTATE_MASK_PARTIY_ERROR = 4 # Parity Error
-LINESTATE_MASK_OVERRUN_ERROR = 2 # Overrun Error
-LINESTATE_MASK_DATA_READY = 1 # Data Ready
-
-MODEMSTATE_MASK_CD = 128 # Receive Line Signal Detect (also known as Carrier Detect)
-MODEMSTATE_MASK_RI = 64 # Ring Indicator
-MODEMSTATE_MASK_DSR = 32 # Data-Set-Ready Signal State
-MODEMSTATE_MASK_CTS = 16 # Clear-To-Send Signal State
-MODEMSTATE_MASK_CD_CHANGE = 8 # Delta Receive Line Signal Detect
-MODEMSTATE_MASK_RI_CHANGE = 4 # Trailing-edge Ring Detector
-MODEMSTATE_MASK_DSR_CHANGE = 2 # Delta Data-Set-Ready
-MODEMSTATE_MASK_CTS_CHANGE = 1 # Delta Clear-To-Send
-
-PURGE_RECEIVE_BUFFER = to_bytes([1]) # Purge access server receive data buffer
-PURGE_TRANSMIT_BUFFER = to_bytes([2]) # Purge access server transmit data buffer
-PURGE_BOTH_BUFFERS = to_bytes([3]) # Purge both the access server receive data buffer and the access server transmit data buffer
-
-
-RFC2217_PARITY_MAP = {
- PARITY_NONE: 1,
- PARITY_ODD: 2,
- PARITY_EVEN: 3,
- PARITY_MARK: 4,
- PARITY_SPACE: 5,
-}
-RFC2217_REVERSE_PARITY_MAP = dict((v,k) for k,v in RFC2217_PARITY_MAP.items())
-
-RFC2217_STOPBIT_MAP = {
- STOPBITS_ONE: 1,
- STOPBITS_ONE_POINT_FIVE: 3,
- STOPBITS_TWO: 2,
-}
-RFC2217_REVERSE_STOPBIT_MAP = dict((v,k) for k,v in RFC2217_STOPBIT_MAP.items())
-
-# Telnet filter states
-M_NORMAL = 0
-M_IAC_SEEN = 1
-M_NEGOTIATE = 2
-
-# TelnetOption and TelnetSubnegotiation states
-REQUESTED = 'REQUESTED'
-ACTIVE = 'ACTIVE'
-INACTIVE = 'INACTIVE'
-REALLY_INACTIVE = 'REALLY_INACTIVE'
-
-class TelnetOption(object):
- """Manage a single telnet option, keeps track of DO/DONT WILL/WONT."""
-
- def __init__(self, connection, name, option, send_yes, send_no, ack_yes, ack_no, initial_state, activation_callback=None):
- """\
- Initialize option.
- :param connection: connection used to transmit answers
- :param name: a readable name for debug outputs
- :param send_yes: what to send when option is to be enabled.
- :param send_no: what to send when option is to be disabled.
- :param ack_yes: what to expect when remote agrees on option.
- :param ack_no: what to expect when remote disagrees on option.
- :param initial_state: options initialized with REQUESTED are tried to
- be enabled on startup. use INACTIVE for all others.
- """
- self.connection = connection
- self.name = name
- self.option = option
- self.send_yes = send_yes
- self.send_no = send_no
- self.ack_yes = ack_yes
- self.ack_no = ack_no
- self.state = initial_state
- self.active = False
- self.activation_callback = activation_callback
-
- def __repr__(self):
- """String for debug outputs"""
- return "%s:%s(%s)" % (self.name, self.active, self.state)
-
- def process_incoming(self, command):
- """A DO/DONT/WILL/WONT was received for this option, update state and
- answer when needed."""
- if command == self.ack_yes:
- if self.state is REQUESTED:
- self.state = ACTIVE
- self.active = True
- if self.activation_callback is not None:
- self.activation_callback()
- elif self.state is ACTIVE:
- pass
- elif self.state is INACTIVE:
- self.state = ACTIVE
- self.connection.telnetSendOption(self.send_yes, self.option)
- self.active = True
- if self.activation_callback is not None:
- self.activation_callback()
- elif self.state is REALLY_INACTIVE:
- self.connection.telnetSendOption(self.send_no, self.option)
- else:
- raise ValueError('option in illegal state %r' % self)
- elif command == self.ack_no:
- if self.state is REQUESTED:
- self.state = INACTIVE
- self.active = False
- elif self.state is ACTIVE:
- self.state = INACTIVE
- self.connection.telnetSendOption(self.send_no, self.option)
- self.active = False
- elif self.state is INACTIVE:
- pass
- elif self.state is REALLY_INACTIVE:
- pass
- else:
- raise ValueError('option in illegal state %r' % self)
-
-
-class TelnetSubnegotiation(object):
- """\
- A object to handle subnegotiation of options. In this case actually
- sub-sub options for RFC 2217. It is used to track com port options.
- """
-
- def __init__(self, connection, name, option, ack_option=None):
- if ack_option is None: ack_option = option
- self.connection = connection
- self.name = name
- self.option = option
- self.value = None
- self.ack_option = ack_option
- self.state = INACTIVE
-
- def __repr__(self):
- """String for debug outputs."""
- return "%s:%s" % (self.name, self.state)
-
- def set(self, value):
- """\
- request a change of the value. a request is sent to the server. if
- the client needs to know if the change is performed he has to check the
- state of this object.
- """
- self.value = value
- self.state = REQUESTED
- self.connection.rfc2217SendSubnegotiation(self.option, self.value)
- if self.connection.logger:
- self.connection.logger.debug("SB Requesting %s -> %r" % (self.name, self.value))
-
- def isReady(self):
- """\
- check if answer from server has been received. when server rejects
- the change, raise a ValueError.
- """
- if self.state == REALLY_INACTIVE:
- raise ValueError("remote rejected value for option %r" % (self.name))
- return self.state == ACTIVE
- # add property to have a similar interface as TelnetOption
- active = property(isReady)
-
- def wait(self, timeout=3):
- """\
- wait until the subnegotiation has been acknowledged or timeout. It
- can also throw a value error when the answer from the server does not
- match the value sent.
- """
- timeout_time = time.time() + timeout
- while time.time() < timeout_time:
- time.sleep(0.05) # prevent 100% CPU load
- if self.isReady():
- break
- else:
- raise SerialException("timeout while waiting for option %r" % (self.name))
-
- def checkAnswer(self, suboption):
- """\
- check an incoming subnegotiation block. the parameter already has
- cut off the header like sub option number and com port option value.
- """
- if self.value == suboption[:len(self.value)]:
- self.state = ACTIVE
- else:
- # error propagation done in isReady
- self.state = REALLY_INACTIVE
- if self.connection.logger:
- self.connection.logger.debug("SB Answer %s -> %r -> %s" % (self.name, suboption, self.state))
-
-
-class RFC2217Serial(SerialBase):
- """Serial port implementation for RFC 2217 remote serial ports."""
-
- BAUDRATES = (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800,
- 9600, 19200, 38400, 57600, 115200)
-
- def open(self):
- """\
- Open port with current settings. This may throw a SerialException
- if the port cannot be opened.
- """
- self.logger = None
- self._ignore_set_control_answer = False
- self._poll_modem_state = False
- self._network_timeout = 3
- if self._port is None:
- raise SerialException("Port must be configured before it can be used.")
- if self._isOpen:
- raise SerialException("Port is already open.")
- try:
- self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- self._socket.connect(self.fromURL(self.portstr))
- self._socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
- except Exception, msg:
- self._socket = None
- raise SerialException("Could not open port %s: %s" % (self.portstr, msg))
-
- self._socket.settimeout(5) # XXX good value?
-
- # use a thread save queue as buffer. it also simplifies implementing
- # the read timeout
- self._read_buffer = Queue.Queue()
- # to ensure that user writes does not interfere with internal
- # telnet/rfc2217 options establish a lock
- self._write_lock = threading.Lock()
- # name the following separately so that, below, a check can be easily done
- mandadory_options = [
- TelnetOption(self, 'we-BINARY', BINARY, WILL, WONT, DO, DONT, INACTIVE),
- TelnetOption(self, 'we-RFC2217', COM_PORT_OPTION, WILL, WONT, DO, DONT, REQUESTED),
- ]
- # all supported telnet options
- self._telnet_options = [
- TelnetOption(self, 'ECHO', ECHO, DO, DONT, WILL, WONT, REQUESTED),
- TelnetOption(self, 'we-SGA', SGA, WILL, WONT, DO, DONT, REQUESTED),
- TelnetOption(self, 'they-SGA', SGA, DO, DONT, WILL, WONT, REQUESTED),
- TelnetOption(self, 'they-BINARY', BINARY, DO, DONT, WILL, WONT, INACTIVE),
- TelnetOption(self, 'they-RFC2217', COM_PORT_OPTION, DO, DONT, WILL, WONT, REQUESTED),
- ] + mandadory_options
- # RFC 2217 specific states
- # COM port settings
- self._rfc2217_port_settings = {
- 'baudrate': TelnetSubnegotiation(self, 'baudrate', SET_BAUDRATE, SERVER_SET_BAUDRATE),
- 'datasize': TelnetSubnegotiation(self, 'datasize', SET_DATASIZE, SERVER_SET_DATASIZE),
- 'parity': TelnetSubnegotiation(self, 'parity', SET_PARITY, SERVER_SET_PARITY),
- 'stopsize': TelnetSubnegotiation(self, 'stopsize', SET_STOPSIZE, SERVER_SET_STOPSIZE),
- }
- # There are more subnegotiation objects, combine all in one dictionary
- # for easy access
- self._rfc2217_options = {
- 'purge': TelnetSubnegotiation(self, 'purge', PURGE_DATA, SERVER_PURGE_DATA),
- 'control': TelnetSubnegotiation(self, 'control', SET_CONTROL, SERVER_SET_CONTROL),
- }
- self._rfc2217_options.update(self._rfc2217_port_settings)
- # cache for line and modem states that the server sends to us
- self._linestate = 0
- self._modemstate = None
- self._modemstate_expires = 0
- # RFC 2217 flow control between server and client
- self._remote_suspend_flow = False
-
- self._thread = threading.Thread(target=self._telnetReadLoop)
- self._thread.setDaemon(True)
- self._thread.setName('pySerial RFC 2217 reader thread for %s' % (self._port,))
- self._thread.start()
-
- # negotiate Telnet/RFC 2217 -> send initial requests
- for option in self._telnet_options:
- if option.state is REQUESTED:
- self.telnetSendOption(option.send_yes, option.option)
- # now wait until important options are negotiated
- timeout_time = time.time() + self._network_timeout
- while time.time() < timeout_time:
- time.sleep(0.05) # prevent 100% CPU load
- if sum(o.active for o in mandadory_options) == len(mandadory_options):
- break
- else:
- raise SerialException("Remote does not seem to support RFC2217 or BINARY mode %r" % mandadory_options)
- if self.logger:
- self.logger.info("Negotiated options: %s" % self._telnet_options)
-
- # fine, go on, set RFC 2271 specific things
- self._reconfigurePort()
- # all things set up get, now a clean start
- self._isOpen = True
- if not self._rtscts:
- self.setRTS(True)
- self.setDTR(True)
- self.flushInput()
- self.flushOutput()
-
- def _reconfigurePort(self):
- """Set communication parameters on opened port."""
- if self._socket is None:
- raise SerialException("Can only operate on open ports")
-
- # if self._timeout != 0 and self._interCharTimeout is not None:
- # XXX
-
- if self._writeTimeout is not None:
- raise NotImplementedError('writeTimeout is currently not supported')
- # XXX
-
- # Setup the connection
- # to get good performance, all parameter changes are sent first...
- if not isinstance(self._baudrate, (int, long)) or not 0 < self._baudrate < 2**32:
- raise ValueError("invalid baudrate: %r" % (self._baudrate))
- self._rfc2217_port_settings['baudrate'].set(struct.pack('!I', self._baudrate))
- self._rfc2217_port_settings['datasize'].set(struct.pack('!B', self._bytesize))
- self._rfc2217_port_settings['parity'].set(struct.pack('!B', RFC2217_PARITY_MAP[self._parity]))
- self._rfc2217_port_settings['stopsize'].set(struct.pack('!B', RFC2217_STOPBIT_MAP[self._stopbits]))
-
- # and now wait until parameters are active
- items = self._rfc2217_port_settings.values()
- if self.logger:
- self.logger.debug("Negotiating settings: %s" % (items,))
- timeout_time = time.time() + self._network_timeout
- while time.time() < timeout_time:
- time.sleep(0.05) # prevent 100% CPU load
- if sum(o.active for o in items) == len(items):
- break
- else:
- raise SerialException("Remote does not accept parameter change (RFC2217): %r" % items)
- if self.logger:
- self.logger.info("Negotiated settings: %s" % (items,))
-
- if self._rtscts and self._xonxoff:
- raise ValueError('xonxoff and rtscts together are not supported')
- elif self._rtscts:
- self.rfc2217SetControl(SET_CONTROL_USE_HW_FLOW_CONTROL)
- elif self._xonxoff:
- self.rfc2217SetControl(SET_CONTROL_USE_SW_FLOW_CONTROL)
- else:
- self.rfc2217SetControl(SET_CONTROL_USE_NO_FLOW_CONTROL)
-
- def close(self):
- """Close port"""
- if self._isOpen:
- if self._socket:
- try:
- self._socket.shutdown(socket.SHUT_RDWR)
- self._socket.close()
- except:
- # ignore errors.
- pass
- self._socket = None
- if self._thread:
- self._thread.join()
- self._isOpen = False
- # in case of quick reconnects, give the server some time
- time.sleep(0.3)
-
- def makeDeviceName(self, port):
- raise SerialException("there is no sensible way to turn numbers into URLs")
-
- def fromURL(self, url):
- """extract host and port from an URL string"""
- if url.lower().startswith("rfc2217://"): url = url[10:]
- try:
- # is there a "path" (our options)?
- if '/' in url:
- # cut away options
- url, options = url.split('/', 1)
- # process options now, directly altering self
- for option in options.split('/'):
- if '=' in option:
- option, value = option.split('=', 1)
- else:
- value = None
- if option == 'logging':
- logging.basicConfig() # XXX is that good to call it here?
- self.logger = logging.getLogger('pySerial.rfc2217')
- self.logger.setLevel(LOGGER_LEVELS[value])
- self.logger.debug('enabled logging')
- elif option == 'ign_set_control':
- self._ignore_set_control_answer = True
- elif option == 'poll_modem':
- self._poll_modem_state = True
- elif option == 'timeout':
- self._network_timeout = float(value)
- else:
- raise ValueError('unknown option: %r' % (option,))
- # get host and port
- host, port = url.split(':', 1) # may raise ValueError because of unpacking
- port = int(port) # and this if it's not a number
- if not 0 <= port < 65536: raise ValueError("port not in range 0...65535")
- except ValueError, e:
- raise SerialException('expected a string in the form "[rfc2217://]<host>:<port>[/option[/option...]]": %s' % e)
- return (host, port)
-
- # - - - - - - - - - - - - - - - - - - - - - - - -
-
- def inWaiting(self):
- """Return the number of characters currently in the input buffer."""
- if not self._isOpen: raise portNotOpenError
- return self._read_buffer.qsize()
-
- def read(self, size=1):
- """\
- Read size bytes from the serial port. If a timeout is set it may
- return less characters as requested. With no timeout it will block
- until the requested number of bytes is read.
- """
- if not self._isOpen: raise portNotOpenError
- data = bytearray()
- try:
- while len(data) < size:
- if self._thread is None:
- raise SerialException('connection failed (reader thread died)')
- data.append(self._read_buffer.get(True, self._timeout))
- except Queue.Empty: # -> timeout
- pass
- return bytes(data)
-
- def write(self, data):
- """\
- Output the given string over the serial port. Can block if the
- connection is blocked. May raise SerialException if the connection is
- closed.
- """
- if not self._isOpen: raise portNotOpenError
- self._write_lock.acquire()
- try:
- try:
- self._socket.sendall(to_bytes(data).replace(IAC, IAC_DOUBLED))
- except socket.error, e:
- raise SerialException("connection failed (socket error): %s" % e) # XXX what exception if socket connection fails
- finally:
- self._write_lock.release()
- return len(data)
-
- def flushInput(self):
- """Clear input buffer, discarding all that is in the buffer."""
- if not self._isOpen: raise portNotOpenError
- self.rfc2217SendPurge(PURGE_RECEIVE_BUFFER)
- # empty read buffer
- while self._read_buffer.qsize():
- self._read_buffer.get(False)
-
- def flushOutput(self):
- """\
- Clear output buffer, aborting the current output and
- discarding all that is in the buffer.
- """
- if not self._isOpen: raise portNotOpenError
- self.rfc2217SendPurge(PURGE_TRANSMIT_BUFFER)
-
- def sendBreak(self, duration=0.25):
- """Send break condition. Timed, returns to idle state after given
- duration."""
- if not self._isOpen: raise portNotOpenError
- self.setBreak(True)
- time.sleep(duration)
- self.setBreak(False)
-
- def setBreak(self, level=True):
- """\
- Set break: Controls TXD. When active, to transmitting is
- possible.
- """
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('set BREAK to %s' % ('inactive', 'active')[bool(level)])
- if level:
- self.rfc2217SetControl(SET_CONTROL_BREAK_ON)
- else:
- self.rfc2217SetControl(SET_CONTROL_BREAK_OFF)
-
- def setRTS(self, level=True):
- """Set terminal status line: Request To Send."""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('set RTS to %s' % ('inactive', 'active')[bool(level)])
- if level:
- self.rfc2217SetControl(SET_CONTROL_RTS_ON)
- else:
- self.rfc2217SetControl(SET_CONTROL_RTS_OFF)
-
- def setDTR(self, level=True):
- """Set terminal status line: Data Terminal Ready."""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('set DTR to %s' % ('inactive', 'active')[bool(level)])
- if level:
- self.rfc2217SetControl(SET_CONTROL_DTR_ON)
- else:
- self.rfc2217SetControl(SET_CONTROL_DTR_OFF)
-
- def getCTS(self):
- """Read terminal status line: Clear To Send."""
- if not self._isOpen: raise portNotOpenError
- return bool(self.getModemState() & MODEMSTATE_MASK_CTS)
-
- def getDSR(self):
- """Read terminal status line: Data Set Ready."""
- if not self._isOpen: raise portNotOpenError
- return bool(self.getModemState() & MODEMSTATE_MASK_DSR)
-
- def getRI(self):
- """Read terminal status line: Ring Indicator."""
- if not self._isOpen: raise portNotOpenError
- return bool(self.getModemState() & MODEMSTATE_MASK_RI)
-
- def getCD(self):
- """Read terminal status line: Carrier Detect."""
- if not self._isOpen: raise portNotOpenError
- return bool(self.getModemState() & MODEMSTATE_MASK_CD)
-
- # - - - platform specific - - -
- # None so far
-
- # - - - RFC2217 specific - - -
-
- def _telnetReadLoop(self):
- """read loop for the socket."""
- mode = M_NORMAL
- suboption = None
- try:
- while self._socket is not None:
- try:
- data = self._socket.recv(1024)
- except socket.timeout:
- # just need to get out of recv form time to time to check if
- # still alive
- continue
- except socket.error, e:
- # connection fails -> terminate loop
- if self.logger:
- self.logger.debug("socket error in reader thread: %s" % (e,))
- break
- if not data: break # lost connection
- for byte in data:
- if mode == M_NORMAL:
- # interpret as command or as data
- if byte == IAC:
- mode = M_IAC_SEEN
- else:
- # store data in read buffer or sub option buffer
- # depending on state
- if suboption is not None:
- suboption.append(byte)
- else:
- self._read_buffer.put(byte)
- elif mode == M_IAC_SEEN:
- if byte == IAC:
- # interpret as command doubled -> insert character
- # itself
- if suboption is not None:
- suboption.append(IAC)
- else:
- self._read_buffer.put(IAC)
- mode = M_NORMAL
- elif byte == SB:
- # sub option start
- suboption = bytearray()
- mode = M_NORMAL
- elif byte == SE:
- # sub option end -> process it now
- self._telnetProcessSubnegotiation(bytes(suboption))
- suboption = None
- mode = M_NORMAL
- elif byte in (DO, DONT, WILL, WONT):
- # negotiation
- telnet_command = byte
- mode = M_NEGOTIATE
- else:
- # other telnet commands
- self._telnetProcessCommand(byte)
- mode = M_NORMAL
- elif mode == M_NEGOTIATE: # DO, DONT, WILL, WONT was received, option now following
- self._telnetNegotiateOption(telnet_command, byte)
- mode = M_NORMAL
- finally:
- self._thread = None
- if self.logger:
- self.logger.debug("read thread terminated")
-
- # - incoming telnet commands and options
-
- def _telnetProcessCommand(self, command):
- """Process commands other than DO, DONT, WILL, WONT."""
- # Currently none. RFC2217 only uses negotiation and subnegotiation.
- if self.logger:
- self.logger.warning("ignoring Telnet command: %r" % (command,))
-
- def _telnetNegotiateOption(self, command, option):
- """Process incoming DO, DONT, WILL, WONT."""
- # check our registered telnet options and forward command to them
- # they know themselves if they have to answer or not
- known = False
- for item in self._telnet_options:
- # can have more than one match! as some options are duplicated for
- # 'us' and 'them'
- if item.option == option:
- item.process_incoming(command)
- known = True
- if not known:
- # handle unknown options
- # only answer to positive requests and deny them
- if command == WILL or command == DO:
- self.telnetSendOption((command == WILL and DONT or WONT), option)
- if self.logger:
- self.logger.warning("rejected Telnet option: %r" % (option,))
-
-
- def _telnetProcessSubnegotiation(self, suboption):
- """Process subnegotiation, the data between IAC SB and IAC SE."""
- if suboption[0:1] == COM_PORT_OPTION:
- if suboption[1:2] == SERVER_NOTIFY_LINESTATE and len(suboption) >= 3:
- self._linestate = ord(suboption[2:3]) # ensure it is a number
- if self.logger:
- self.logger.info("NOTIFY_LINESTATE: %s" % self._linestate)
- elif suboption[1:2] == SERVER_NOTIFY_MODEMSTATE and len(suboption) >= 3:
- self._modemstate = ord(suboption[2:3]) # ensure it is a number
- if self.logger:
- self.logger.info("NOTIFY_MODEMSTATE: %s" % self._modemstate)
- # update time when we think that a poll would make sense
- self._modemstate_expires = time.time() + 0.3
- elif suboption[1:2] == FLOWCONTROL_SUSPEND:
- self._remote_suspend_flow = True
- elif suboption[1:2] == FLOWCONTROL_RESUME:
- self._remote_suspend_flow = False
- else:
- for item in self._rfc2217_options.values():
- if item.ack_option == suboption[1:2]:
- #~ print "processing COM_PORT_OPTION: %r" % list(suboption[1:])
- item.checkAnswer(bytes(suboption[2:]))
- break
- else:
- if self.logger:
- self.logger.warning("ignoring COM_PORT_OPTION: %r" % (suboption,))
- else:
- if self.logger:
- self.logger.warning("ignoring subnegotiation: %r" % (suboption,))
-
- # - outgoing telnet commands and options
-
- def _internal_raw_write(self, data):
- """internal socket write with no data escaping. used to send telnet stuff."""
- self._write_lock.acquire()
- try:
- self._socket.sendall(data)
- finally:
- self._write_lock.release()
-
- def telnetSendOption(self, action, option):
- """Send DO, DONT, WILL, WONT."""
- self._internal_raw_write(to_bytes([IAC, action, option]))
-
- def rfc2217SendSubnegotiation(self, option, value=''):
- """Subnegotiation of RFC2217 parameters."""
- value = value.replace(IAC, IAC_DOUBLED)
- self._internal_raw_write(to_bytes([IAC, SB, COM_PORT_OPTION, option] + list(value) + [IAC, SE]))
-
- def rfc2217SendPurge(self, value):
- item = self._rfc2217_options['purge']
- item.set(value) # transmit desired purge type
- item.wait(self._network_timeout) # wait for acknowledge from the server
-
- def rfc2217SetControl(self, value):
- item = self._rfc2217_options['control']
- item.set(value) # transmit desired control type
- if self._ignore_set_control_answer:
- # answers are ignored when option is set. compatibility mode for
- # servers that answer, but not the expected one... (or no answer
- # at all) i.e. sredird
- time.sleep(0.1) # this helps getting the unit tests passed
- else:
- item.wait(self._network_timeout) # wait for acknowledge from the server
-
- def rfc2217FlowServerReady(self):
- """\
- check if server is ready to receive data. block for some time when
- not.
- """
- #~ if self._remote_suspend_flow:
- #~ wait---
-
- def getModemState(self):
- """\
- get last modem state (cached value. if value is "old", request a new
- one. this cache helps that we don't issue to many requests when e.g. all
- status lines, one after the other is queried by te user (getCTS, getDSR
- etc.)
- """
- # active modem state polling enabled? is the value fresh enough?
- if self._poll_modem_state and self._modemstate_expires < time.time():
- if self.logger:
- self.logger.debug('polling modem state')
- # when it is older, request an update
- self.rfc2217SendSubnegotiation(NOTIFY_MODEMSTATE)
- timeout_time = time.time() + self._network_timeout
- while time.time() < timeout_time:
- time.sleep(0.05) # prevent 100% CPU load
- # when expiration time is updated, it means that there is a new
- # value
- if self._modemstate_expires > time.time():
- if self.logger:
- self.logger.warning('poll for modem state failed')
- break
- # even when there is a timeout, do not generate an error just
- # return the last known value. this way we can support buggy
- # servers that do not respond to polls, but send automatic
- # updates.
- if self._modemstate is not None:
- if self.logger:
- self.logger.debug('using cached modem state')
- return self._modemstate
- else:
- # never received a notification from the server
- raise SerialException("remote sends no NOTIFY_MODEMSTATE")
-
-
-# assemble Serial class with the platform specific implementation and the base
-# for file-like behavior. for Python 2.6 and newer, that provide the new I/O
-# library, derive from io.RawIOBase
-try:
- import io
-except ImportError:
- # classic version with our own file-like emulation
- class Serial(RFC2217Serial, FileLike):
- pass
-else:
- # io library present
- class Serial(RFC2217Serial, io.RawIOBase):
- pass
-
-
-#############################################################################
-# The following is code that helps implementing an RFC 2217 server.
-
-class PortManager(object):
- """\
- This class manages the state of Telnet and RFC 2217. It needs a serial
- instance and a connection to work with. Connection is expected to implement
- a (thread safe) write function, that writes the string to the network.
- """
-
- def __init__(self, serial_port, connection, logger=None):
- self.serial = serial_port
- self.connection = connection
- self.logger = logger
- self._client_is_rfc2217 = False
-
- # filter state machine
- self.mode = M_NORMAL
- self.suboption = None
- self.telnet_command = None
-
- # states for modem/line control events
- self.modemstate_mask = 255
- self.last_modemstate = None
- self.linstate_mask = 0
-
- # all supported telnet options
- self._telnet_options = [
- TelnetOption(self, 'ECHO', ECHO, WILL, WONT, DO, DONT, REQUESTED),
- TelnetOption(self, 'we-SGA', SGA, WILL, WONT, DO, DONT, REQUESTED),
- TelnetOption(self, 'they-SGA', SGA, DO, DONT, WILL, WONT, INACTIVE),
- TelnetOption(self, 'we-BINARY', BINARY, WILL, WONT, DO, DONT, INACTIVE),
- TelnetOption(self, 'they-BINARY', BINARY, DO, DONT, WILL, WONT, REQUESTED),
- TelnetOption(self, 'we-RFC2217', COM_PORT_OPTION, WILL, WONT, DO, DONT, REQUESTED, self._client_ok),
- TelnetOption(self, 'they-RFC2217', COM_PORT_OPTION, DO, DONT, WILL, WONT, INACTIVE, self._client_ok),
- ]
-
- # negotiate Telnet/RFC2217 -> send initial requests
- if self.logger:
- self.logger.debug("requesting initial Telnet/RFC 2217 options")
- for option in self._telnet_options:
- if option.state is REQUESTED:
- self.telnetSendOption(option.send_yes, option.option)
- # issue 1st modem state notification
-
- def _client_ok(self):
- """\
- callback of telnet option. it gets called when option is activated.
- this one here is used to detect when the client agrees on RFC 2217. a
- flag is set so that other functions like check_modem_lines know if the
- client is ok.
- """
- # The callback is used for we and they so if one party agrees, we're
- # already happy. it seems not all servers do the negotiation correctly
- # and i guess there are incorrect clients too.. so be happy if client
- # answers one or the other positively.
- self._client_is_rfc2217 = True
- if self.logger:
- self.logger.info("client accepts RFC 2217")
- # this is to ensure that the client gets a notification, even if there
- # was no change
- self.check_modem_lines(force_notification=True)
-
- # - outgoing telnet commands and options
-
- def telnetSendOption(self, action, option):
- """Send DO, DONT, WILL, WONT."""
- self.connection.write(to_bytes([IAC, action, option]))
-
- def rfc2217SendSubnegotiation(self, option, value=''):
- """Subnegotiation of RFC 2217 parameters."""
- value = value.replace(IAC, IAC_DOUBLED)
- self.connection.write(to_bytes([IAC, SB, COM_PORT_OPTION, option] + list(value) + [IAC, SE]))
-
- # - check modem lines, needs to be called periodically from user to
- # establish polling
-
- def check_modem_lines(self, force_notification=False):
- modemstate = (
- (self.serial.getCTS() and MODEMSTATE_MASK_CTS) |
- (self.serial.getDSR() and MODEMSTATE_MASK_DSR) |
- (self.serial.getRI() and MODEMSTATE_MASK_RI) |
- (self.serial.getCD() and MODEMSTATE_MASK_CD)
- )
- # check what has changed
- deltas = modemstate ^ (self.last_modemstate or 0) # when last is None -> 0
- if deltas & MODEMSTATE_MASK_CTS:
- modemstate |= MODEMSTATE_MASK_CTS_CHANGE
- if deltas & MODEMSTATE_MASK_DSR:
- modemstate |= MODEMSTATE_MASK_DSR_CHANGE
- if deltas & MODEMSTATE_MASK_RI:
- modemstate |= MODEMSTATE_MASK_RI_CHANGE
- if deltas & MODEMSTATE_MASK_CD:
- modemstate |= MODEMSTATE_MASK_CD_CHANGE
- # if new state is different and the mask allows this change, send
- # notification. suppress notifications when client is not rfc2217
- if modemstate != self.last_modemstate or force_notification:
- if (self._client_is_rfc2217 and (modemstate & self.modemstate_mask)) or force_notification:
- self.rfc2217SendSubnegotiation(
- SERVER_NOTIFY_MODEMSTATE,
- to_bytes([modemstate & self.modemstate_mask])
- )
- if self.logger:
- self.logger.info("NOTIFY_MODEMSTATE: %s" % (modemstate,))
- # save last state, but forget about deltas.
- # otherwise it would also notify about changing deltas which is
- # probably not very useful
- self.last_modemstate = modemstate & 0xf0
-
- # - outgoing data escaping
-
- def escape(self, data):
- """\
- this generator function is for the user. all outgoing data has to be
- properly escaped, so that no IAC character in the data stream messes up
- the Telnet state machine in the server.
-
- socket.sendall(escape(data))
- """
- for byte in data:
- if byte == IAC:
- yield IAC
- yield IAC
- else:
- yield byte
-
- # - incoming data filter
-
- def filter(self, data):
- """\
- handle a bunch of incoming bytes. this is a generator. it will yield
- all characters not of interest for Telnet/RFC 2217.
-
- The idea is that the reader thread pushes data from the socket through
- this filter:
-
- for byte in filter(socket.recv(1024)):
- # do things like CR/LF conversion/whatever
- # and write data to the serial port
- serial.write(byte)
-
- (socket error handling code left as exercise for the reader)
- """
- for byte in data:
- if self.mode == M_NORMAL:
- # interpret as command or as data
- if byte == IAC:
- self.mode = M_IAC_SEEN
- else:
- # store data in sub option buffer or pass it to our
- # consumer depending on state
- if self.suboption is not None:
- self.suboption.append(byte)
- else:
- yield byte
- elif self.mode == M_IAC_SEEN:
- if byte == IAC:
- # interpret as command doubled -> insert character
- # itself
- if self.suboption is not None:
- self.suboption.append(byte)
- else:
- yield byte
- self.mode = M_NORMAL
- elif byte == SB:
- # sub option start
- self.suboption = bytearray()
- self.mode = M_NORMAL
- elif byte == SE:
- # sub option end -> process it now
- self._telnetProcessSubnegotiation(bytes(self.suboption))
- self.suboption = None
- self.mode = M_NORMAL
- elif byte in (DO, DONT, WILL, WONT):
- # negotiation
- self.telnet_command = byte
- self.mode = M_NEGOTIATE
- else:
- # other telnet commands
- self._telnetProcessCommand(byte)
- self.mode = M_NORMAL
- elif self.mode == M_NEGOTIATE: # DO, DONT, WILL, WONT was received, option now following
- self._telnetNegotiateOption(self.telnet_command, byte)
- self.mode = M_NORMAL
-
- # - incoming telnet commands and options
-
- def _telnetProcessCommand(self, command):
- """Process commands other than DO, DONT, WILL, WONT."""
- # Currently none. RFC2217 only uses negotiation and subnegotiation.
- if self.logger:
- self.logger.warning("ignoring Telnet command: %r" % (command,))
-
- def _telnetNegotiateOption(self, command, option):
- """Process incoming DO, DONT, WILL, WONT."""
- # check our registered telnet options and forward command to them
- # they know themselves if they have to answer or not
- known = False
- for item in self._telnet_options:
- # can have more than one match! as some options are duplicated for
- # 'us' and 'them'
- if item.option == option:
- item.process_incoming(command)
- known = True
- if not known:
- # handle unknown options
- # only answer to positive requests and deny them
- if command == WILL or command == DO:
- self.telnetSendOption((command == WILL and DONT or WONT), option)
- if self.logger:
- self.logger.warning("rejected Telnet option: %r" % (option,))
-
-
- def _telnetProcessSubnegotiation(self, suboption):
- """Process subnegotiation, the data between IAC SB and IAC SE."""
- if suboption[0:1] == COM_PORT_OPTION:
- if self.logger:
- self.logger.debug('received COM_PORT_OPTION: %r' % (suboption,))
- if suboption[1:2] == SET_BAUDRATE:
- backup = self.serial.baudrate
- try:
- (baudrate,) = struct.unpack("!I", suboption[2:6])
- if baudrate != 0:
- self.serial.baudrate = baudrate
- except ValueError, e:
- if self.logger:
- self.logger.error("failed to set baud rate: %s" % (e,))
- self.serial.baudrate = backup
- else:
- if self.logger:
- self.logger.info("%s baud rate: %s" % (baudrate and 'set' or 'get', self.serial.baudrate))
- self.rfc2217SendSubnegotiation(SERVER_SET_BAUDRATE, struct.pack("!I", self.serial.baudrate))
- elif suboption[1:2] == SET_DATASIZE:
- backup = self.serial.bytesize
- try:
- (datasize,) = struct.unpack("!B", suboption[2:3])
- if datasize != 0:
- self.serial.bytesize = datasize
- except ValueError, e:
- if self.logger:
- self.logger.error("failed to set data size: %s" % (e,))
- self.serial.bytesize = backup
- else:
- if self.logger:
- self.logger.info("%s data size: %s" % (datasize and 'set' or 'get', self.serial.bytesize))
- self.rfc2217SendSubnegotiation(SERVER_SET_DATASIZE, struct.pack("!B", self.serial.bytesize))
- elif suboption[1:2] == SET_PARITY:
- backup = self.serial.parity
- try:
- parity = struct.unpack("!B", suboption[2:3])[0]
- if parity != 0:
- self.serial.parity = RFC2217_REVERSE_PARITY_MAP[parity]
- except ValueError, e:
- if self.logger:
- self.logger.error("failed to set parity: %s" % (e,))
- self.serial.parity = backup
- else:
- if self.logger:
- self.logger.info("%s parity: %s" % (parity and 'set' or 'get', self.serial.parity))
- self.rfc2217SendSubnegotiation(
- SERVER_SET_PARITY,
- struct.pack("!B", RFC2217_PARITY_MAP[self.serial.parity])
- )
- elif suboption[1:2] == SET_STOPSIZE:
- backup = self.serial.stopbits
- try:
- stopbits = struct.unpack("!B", suboption[2:3])[0]
- if stopbits != 0:
- self.serial.stopbits = RFC2217_REVERSE_STOPBIT_MAP[stopbits]
- except ValueError, e:
- if self.logger:
- self.logger.error("failed to set stop bits: %s" % (e,))
- self.serial.stopbits = backup
- else:
- if self.logger:
- self.logger.info("%s stop bits: %s" % (stopbits and 'set' or 'get', self.serial.stopbits))
- self.rfc2217SendSubnegotiation(
- SERVER_SET_STOPSIZE,
- struct.pack("!B", RFC2217_STOPBIT_MAP[self.serial.stopbits])
- )
- elif suboption[1:2] == SET_CONTROL:
- if suboption[2:3] == SET_CONTROL_REQ_FLOW_SETTING:
- if self.serial.xonxoff:
- self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_USE_SW_FLOW_CONTROL)
- elif self.serial.rtscts:
- self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_USE_HW_FLOW_CONTROL)
- else:
- self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_USE_NO_FLOW_CONTROL)
- elif suboption[2:3] == SET_CONTROL_USE_NO_FLOW_CONTROL:
- self.serial.xonxoff = False
- self.serial.rtscts = False
- if self.logger:
- self.logger.info("changed flow control to None")
- self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_USE_NO_FLOW_CONTROL)
- elif suboption[2:3] == SET_CONTROL_USE_SW_FLOW_CONTROL:
- self.serial.xonxoff = True
- if self.logger:
- self.logger.info("changed flow control to XON/XOFF")
- self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_USE_SW_FLOW_CONTROL)
- elif suboption[2:3] == SET_CONTROL_USE_HW_FLOW_CONTROL:
- self.serial.rtscts = True
- if self.logger:
- self.logger.info("changed flow control to RTS/CTS")
- self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_USE_HW_FLOW_CONTROL)
- elif suboption[2:3] == SET_CONTROL_REQ_BREAK_STATE:
- if self.logger:
- self.logger.warning("requested break state - not implemented")
- pass # XXX needs cached value
- elif suboption[2:3] == SET_CONTROL_BREAK_ON:
- self.serial.setBreak(True)
- if self.logger:
- self.logger.info("changed BREAK to active")
- self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_BREAK_ON)
- elif suboption[2:3] == SET_CONTROL_BREAK_OFF:
- self.serial.setBreak(False)
- if self.logger:
- self.logger.info("changed BREAK to inactive")
- self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_BREAK_OFF)
- elif suboption[2:3] == SET_CONTROL_REQ_DTR:
- if self.logger:
- self.logger.warning("requested DTR state - not implemented")
- pass # XXX needs cached value
- elif suboption[2:3] == SET_CONTROL_DTR_ON:
- self.serial.setDTR(True)
- if self.logger:
- self.logger.info("changed DTR to active")
- self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_DTR_ON)
- elif suboption[2:3] == SET_CONTROL_DTR_OFF:
- self.serial.setDTR(False)
- if self.logger:
- self.logger.info("changed DTR to inactive")
- self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_DTR_OFF)
- elif suboption[2:3] == SET_CONTROL_REQ_RTS:
- if self.logger:
- self.logger.warning("requested RTS state - not implemented")
- pass # XXX needs cached value
- #~ self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_RTS_ON)
- elif suboption[2:3] == SET_CONTROL_RTS_ON:
- self.serial.setRTS(True)
- if self.logger:
- self.logger.info("changed RTS to active")
- self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_RTS_ON)
- elif suboption[2:3] == SET_CONTROL_RTS_OFF:
- self.serial.setRTS(False)
- if self.logger:
- self.logger.info("changed RTS to inactive")
- self.rfc2217SendSubnegotiation(SERVER_SET_CONTROL, SET_CONTROL_RTS_OFF)
- #~ elif suboption[2:3] == SET_CONTROL_REQ_FLOW_SETTING_IN:
- #~ elif suboption[2:3] == SET_CONTROL_USE_NO_FLOW_CONTROL_IN:
- #~ elif suboption[2:3] == SET_CONTROL_USE_SW_FLOW_CONTOL_IN:
- #~ elif suboption[2:3] == SET_CONTROL_USE_HW_FLOW_CONTOL_IN:
- #~ elif suboption[2:3] == SET_CONTROL_USE_DCD_FLOW_CONTROL:
- #~ elif suboption[2:3] == SET_CONTROL_USE_DTR_FLOW_CONTROL:
- #~ elif suboption[2:3] == SET_CONTROL_USE_DSR_FLOW_CONTROL:
- elif suboption[1:2] == NOTIFY_LINESTATE:
- # client polls for current state
- self.rfc2217SendSubnegotiation(
- SERVER_NOTIFY_LINESTATE,
- to_bytes([0]) # sorry, nothing like that implemented
- )
- elif suboption[1:2] == NOTIFY_MODEMSTATE:
- if self.logger:
- self.logger.info("request for modem state")
- # client polls for current state
- self.check_modem_lines(force_notification=True)
- elif suboption[1:2] == FLOWCONTROL_SUSPEND:
- if self.logger:
- self.logger.info("suspend")
- self._remote_suspend_flow = True
- elif suboption[1:2] == FLOWCONTROL_RESUME:
- if self.logger:
- self.logger.info("resume")
- self._remote_suspend_flow = False
- elif suboption[1:2] == SET_LINESTATE_MASK:
- self.linstate_mask = ord(suboption[2:3]) # ensure it is a number
- if self.logger:
- self.logger.info("line state mask: 0x%02x" % (self.linstate_mask,))
- elif suboption[1:2] == SET_MODEMSTATE_MASK:
- self.modemstate_mask = ord(suboption[2:3]) # ensure it is a number
- if self.logger:
- self.logger.info("modem state mask: 0x%02x" % (self.modemstate_mask,))
- elif suboption[1:2] == PURGE_DATA:
- if suboption[2:3] == PURGE_RECEIVE_BUFFER:
- self.serial.flushInput()
- if self.logger:
- self.logger.info("purge in")
- self.rfc2217SendSubnegotiation(SERVER_PURGE_DATA, PURGE_RECEIVE_BUFFER)
- elif suboption[2:3] == PURGE_TRANSMIT_BUFFER:
- self.serial.flushOutput()
- if self.logger:
- self.logger.info("purge out")
- self.rfc2217SendSubnegotiation(SERVER_PURGE_DATA, PURGE_TRANSMIT_BUFFER)
- elif suboption[2:3] == PURGE_BOTH_BUFFERS:
- self.serial.flushInput()
- self.serial.flushOutput()
- if self.logger:
- self.logger.info("purge both")
- self.rfc2217SendSubnegotiation(SERVER_PURGE_DATA, PURGE_BOTH_BUFFERS)
- else:
- if self.logger:
- self.logger.error("undefined PURGE_DATA: %r" % list(suboption[2:]))
- else:
- if self.logger:
- self.logger.error("undefined COM_PORT_OPTION: %r" % list(suboption[1:]))
- else:
- if self.logger:
- self.logger.warning("unknown subnegotiation: %r" % (suboption,))
-
-
-# simple client test
-if __name__ == '__main__':
- import sys
- s = Serial('rfc2217://localhost:7000', 115200)
- sys.stdout.write('%s\n' % s)
-
- #~ s.baudrate = 1898
-
- sys.stdout.write("write...\n")
- s.write("hello\n")
- s.flush()
- sys.stdout.write("read: %s\n" % s.read(5))
-
- #~ s.baudrate = 19200
- #~ s.databits = 7
- s.close()
diff --git a/lib/python2.7/site-packages/serial/serialcli.py b/lib/python2.7/site-packages/serial/serialcli.py
deleted file mode 100644
index 19169a3..0000000
--- a/lib/python2.7/site-packages/serial/serialcli.py
+++ /dev/null
@@ -1,273 +0,0 @@
-#! python
-# Python Serial Port Extension for Win32, Linux, BSD, Jython and .NET/Mono
-# serial driver for .NET/Mono (IronPython), .NET >= 2
-# see __init__.py
-#
-# (C) 2008 Chris Liechti <cliechti@gmx.net>
-# this is distributed under a free software license, see license.txt
-
-import clr
-import System
-import System.IO.Ports
-from serial.serialutil import *
-
-
-def device(portnum):
- """Turn a port number into a device name"""
- return System.IO.Ports.SerialPort.GetPortNames()[portnum]
-
-
-# must invoke function with byte array, make a helper to convert strings
-# to byte arrays
-sab = System.Array[System.Byte]
-def as_byte_array(string):
- return sab([ord(x) for x in string]) # XXX will require adaption when run with a 3.x compatible IronPython
-
-class IronSerial(SerialBase):
- """Serial port implementation for .NET/Mono."""
-
- BAUDRATES = (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800,
- 9600, 19200, 38400, 57600, 115200)
-
- def open(self):
- """Open port with current settings. This may throw a SerialException
- if the port cannot be opened."""
- if self._port is None:
- raise SerialException("Port must be configured before it can be used.")
- if self._isOpen:
- raise SerialException("Port is already open.")
- try:
- self._port_handle = System.IO.Ports.SerialPort(self.portstr)
- except Exception, msg:
- self._port_handle = None
- raise SerialException("could not open port %s: %s" % (self.portstr, msg))
-
- self._reconfigurePort()
- self._port_handle.Open()
- self._isOpen = True
- if not self._rtscts:
- self.setRTS(True)
- self.setDTR(True)
- self.flushInput()
- self.flushOutput()
-
- def _reconfigurePort(self):
- """Set communication parameters on opened port."""
- if not self._port_handle:
- raise SerialException("Can only operate on a valid port handle")
-
- #~ self._port_handle.ReceivedBytesThreshold = 1
-
- if self._timeout is None:
- self._port_handle.ReadTimeout = System.IO.Ports.SerialPort.InfiniteTimeout
- else:
- self._port_handle.ReadTimeout = int(self._timeout*1000)
-
- # if self._timeout != 0 and self._interCharTimeout is not None:
- # timeouts = (int(self._interCharTimeout * 1000),) + timeouts[1:]
-
- if self._writeTimeout is None:
- self._port_handle.WriteTimeout = System.IO.Ports.SerialPort.InfiniteTimeout
- else:
- self._port_handle.WriteTimeout = int(self._writeTimeout*1000)
-
-
- # Setup the connection info.
- try:
- self._port_handle.BaudRate = self._baudrate
- except IOError, e:
- # catch errors from illegal baudrate settings
- raise ValueError(str(e))
-
- if self._bytesize == FIVEBITS:
- self._port_handle.DataBits = 5
- elif self._bytesize == SIXBITS:
- self._port_handle.DataBits = 6
- elif self._bytesize == SEVENBITS:
- self._port_handle.DataBits = 7
- elif self._bytesize == EIGHTBITS:
- self._port_handle.DataBits = 8
- else:
- raise ValueError("Unsupported number of data bits: %r" % self._bytesize)
-
- if self._parity == PARITY_NONE:
- self._port_handle.Parity = getattr(System.IO.Ports.Parity, 'None') # reserved keyword in Py3k
- elif self._parity == PARITY_EVEN:
- self._port_handle.Parity = System.IO.Ports.Parity.Even
- elif self._parity == PARITY_ODD:
- self._port_handle.Parity = System.IO.Ports.Parity.Odd
- elif self._parity == PARITY_MARK:
- self._port_handle.Parity = System.IO.Ports.Parity.Mark
- elif self._parity == PARITY_SPACE:
- self._port_handle.Parity = System.IO.Ports.Parity.Space
- else:
- raise ValueError("Unsupported parity mode: %r" % self._parity)
-
- if self._stopbits == STOPBITS_ONE:
- self._port_handle.StopBits = System.IO.Ports.StopBits.One
- elif self._stopbits == STOPBITS_ONE_POINT_FIVE:
- self._port_handle.StopBits = System.IO.Ports.StopBits.OnePointFive
- elif self._stopbits == STOPBITS_TWO:
- self._port_handle.StopBits = System.IO.Ports.StopBits.Two
- else:
- raise ValueError("Unsupported number of stop bits: %r" % self._stopbits)
-
- if self._rtscts and self._xonxoff:
- self._port_handle.Handshake = System.IO.Ports.Handshake.RequestToSendXOnXOff
- elif self._rtscts:
- self._port_handle.Handshake = System.IO.Ports.Handshake.RequestToSend
- elif self._xonxoff:
- self._port_handle.Handshake = System.IO.Ports.Handshake.XOnXOff
- else:
- self._port_handle.Handshake = getattr(System.IO.Ports.Handshake, 'None') # reserved keyword in Py3k
-
- #~ def __del__(self):
- #~ self.close()
-
- def close(self):
- """Close port"""
- if self._isOpen:
- if self._port_handle:
- try:
- self._port_handle.Close()
- except System.IO.Ports.InvalidOperationException:
- # ignore errors. can happen for unplugged USB serial devices
- pass
- self._port_handle = None
- self._isOpen = False
-
- def makeDeviceName(self, port):
- try:
- return device(port)
- except TypeError, e:
- raise SerialException(str(e))
-
- # - - - - - - - - - - - - - - - - - - - - - - - -
-
- def inWaiting(self):
- """Return the number of characters currently in the input buffer."""
- if not self._port_handle: raise portNotOpenError
- return self._port_handle.BytesToRead
-
- def read(self, size=1):
- """Read size bytes from the serial port. If a timeout is set it may
- return less characters as requested. With no timeout it will block
- until the requested number of bytes is read."""
- if not self._port_handle: raise portNotOpenError
- # must use single byte reads as this is the only way to read
- # without applying encodings
- data = bytearray()
- while size:
- try:
- data.append(self._port_handle.ReadByte())
- except System.TimeoutException, e:
- break
- else:
- size -= 1
- return bytes(data)
-
- def write(self, data):
- """Output the given string over the serial port."""
- if not self._port_handle: raise portNotOpenError
- if not isinstance(data, (bytes, bytearray)):
- raise TypeError('expected %s or bytearray, got %s' % (bytes, type(data)))
- try:
- # must call overloaded method with byte array argument
- # as this is the only one not applying encodings
- self._port_handle.Write(as_byte_array(data), 0, len(data))
- except System.TimeoutException, e:
- raise writeTimeoutError
- return len(data)
-
- def flushInput(self):
- """Clear input buffer, discarding all that is in the buffer."""
- if not self._port_handle: raise portNotOpenError
- self._port_handle.DiscardInBuffer()
-
- def flushOutput(self):
- """Clear output buffer, aborting the current output and
- discarding all that is in the buffer."""
- if not self._port_handle: raise portNotOpenError
- self._port_handle.DiscardOutBuffer()
-
- def sendBreak(self, duration=0.25):
- """Send break condition. Timed, returns to idle state after given duration."""
- if not self._port_handle: raise portNotOpenError
- import time
- self._port_handle.BreakState = True
- time.sleep(duration)
- self._port_handle.BreakState = False
-
- def setBreak(self, level=True):
- """Set break: Controls TXD. When active, to transmitting is possible."""
- if not self._port_handle: raise portNotOpenError
- self._port_handle.BreakState = bool(level)
-
- def setRTS(self, level=True):
- """Set terminal status line: Request To Send"""
- if not self._port_handle: raise portNotOpenError
- self._port_handle.RtsEnable = bool(level)
-
- def setDTR(self, level=True):
- """Set terminal status line: Data Terminal Ready"""
- if not self._port_handle: raise portNotOpenError
- self._port_handle.DtrEnable = bool(level)
-
- def getCTS(self):
- """Read terminal status line: Clear To Send"""
- if not self._port_handle: raise portNotOpenError
- return self._port_handle.CtsHolding
-
- def getDSR(self):
- """Read terminal status line: Data Set Ready"""
- if not self._port_handle: raise portNotOpenError
- return self._port_handle.DsrHolding
-
- def getRI(self):
- """Read terminal status line: Ring Indicator"""
- if not self._port_handle: raise portNotOpenError
- #~ return self._port_handle.XXX
- return False #XXX an error would be better
-
- def getCD(self):
- """Read terminal status line: Carrier Detect"""
- if not self._port_handle: raise portNotOpenError
- return self._port_handle.CDHolding
-
- # - - platform specific - - - -
- # none
-
-
-# assemble Serial class with the platform specific implementation and the base
-# for file-like behavior. for Python 2.6 and newer, that provide the new I/O
-# library, derive from io.RawIOBase
-try:
- import io
-except ImportError:
- # classic version with our own file-like emulation
- class Serial(IronSerial, FileLike):
- pass
-else:
- # io library present
- class Serial(IronSerial, io.RawIOBase):
- pass
-
-
-# Nur Testfunktion!!
-if __name__ == '__main__':
- import sys
-
- s = Serial(0)
- sys.stdio.write('%s\n' % s)
-
- s = Serial()
- sys.stdio.write('%s\n' % s)
-
-
- s.baudrate = 19200
- s.databits = 7
- s.close()
- s.port = 0
- s.open()
- sys.stdio.write('%s\n' % s)
-
diff --git a/lib/python2.7/site-packages/serial/serialjava.py b/lib/python2.7/site-packages/serial/serialjava.py
deleted file mode 100644
index 46a78f8..0000000
--- a/lib/python2.7/site-packages/serial/serialjava.py
+++ /dev/null
@@ -1,262 +0,0 @@
-#!jython
-#
-# Python Serial Port Extension for Win32, Linux, BSD, Jython
-# module for serial IO for Jython and JavaComm
-# see __init__.py
-#
-# (C) 2002-2008 Chris Liechti <cliechti@gmx.net>
-# this is distributed under a free software license, see license.txt
-
-from serial.serialutil import *
-
-def my_import(name):
- mod = __import__(name)
- components = name.split('.')
- for comp in components[1:]:
- mod = getattr(mod, comp)
- return mod
-
-
-def detect_java_comm(names):
- """try given list of modules and return that imports"""
- for name in names:
- try:
- mod = my_import(name)
- mod.SerialPort
- return mod
- except (ImportError, AttributeError):
- pass
- raise ImportError("No Java Communications API implementation found")
-
-
-# Java Communications API implementations
-# http://mho.republika.pl/java/comm/
-
-comm = detect_java_comm([
- 'javax.comm', # Sun/IBM
- 'gnu.io', # RXTX
-])
-
-
-def device(portnumber):
- """Turn a port number into a device name"""
- enum = comm.CommPortIdentifier.getPortIdentifiers()
- ports = []
- while enum.hasMoreElements():
- el = enum.nextElement()
- if el.getPortType() == comm.CommPortIdentifier.PORT_SERIAL:
- ports.append(el)
- return ports[portnumber].getName()
-
-
-class JavaSerial(SerialBase):
- """Serial port class, implemented with Java Communications API and
- thus usable with jython and the appropriate java extension."""
-
- def open(self):
- """Open port with current settings. This may throw a SerialException
- if the port cannot be opened."""
- if self._port is None:
- raise SerialException("Port must be configured before it can be used.")
- if self._isOpen:
- raise SerialException("Port is already open.")
- if type(self._port) == type(''): # strings are taken directly
- portId = comm.CommPortIdentifier.getPortIdentifier(self._port)
- else:
- portId = comm.CommPortIdentifier.getPortIdentifier(device(self._port)) # numbers are transformed to a comport id obj
- try:
- self.sPort = portId.open("python serial module", 10)
- except Exception, msg:
- self.sPort = None
- raise SerialException("Could not open port: %s" % msg)
- self._reconfigurePort()
- self._instream = self.sPort.getInputStream()
- self._outstream = self.sPort.getOutputStream()
- self._isOpen = True
-
- def _reconfigurePort(self):
- """Set communication parameters on opened port."""
- if not self.sPort:
- raise SerialException("Can only operate on a valid port handle")
-
- self.sPort.enableReceiveTimeout(30)
- if self._bytesize == FIVEBITS:
- jdatabits = comm.SerialPort.DATABITS_5
- elif self._bytesize == SIXBITS:
- jdatabits = comm.SerialPort.DATABITS_6
- elif self._bytesize == SEVENBITS:
- jdatabits = comm.SerialPort.DATABITS_7
- elif self._bytesize == EIGHTBITS:
- jdatabits = comm.SerialPort.DATABITS_8
- else:
- raise ValueError("unsupported bytesize: %r" % self._bytesize)
-
- if self._stopbits == STOPBITS_ONE:
- jstopbits = comm.SerialPort.STOPBITS_1
- elif stopbits == STOPBITS_ONE_POINT_FIVE:
- self._jstopbits = comm.SerialPort.STOPBITS_1_5
- elif self._stopbits == STOPBITS_TWO:
- jstopbits = comm.SerialPort.STOPBITS_2
- else:
- raise ValueError("unsupported number of stopbits: %r" % self._stopbits)
-
- if self._parity == PARITY_NONE:
- jparity = comm.SerialPort.PARITY_NONE
- elif self._parity == PARITY_EVEN:
- jparity = comm.SerialPort.PARITY_EVEN
- elif self._parity == PARITY_ODD:
- jparity = comm.SerialPort.PARITY_ODD
- elif self._parity == PARITY_MARK:
- jparity = comm.SerialPort.PARITY_MARK
- elif self._parity == PARITY_SPACE:
- jparity = comm.SerialPort.PARITY_SPACE
- else:
- raise ValueError("unsupported parity type: %r" % self._parity)
-
- jflowin = jflowout = 0
- if self._rtscts:
- jflowin |= comm.SerialPort.FLOWCONTROL_RTSCTS_IN
- jflowout |= comm.SerialPort.FLOWCONTROL_RTSCTS_OUT
- if self._xonxoff:
- jflowin |= comm.SerialPort.FLOWCONTROL_XONXOFF_IN
- jflowout |= comm.SerialPort.FLOWCONTROL_XONXOFF_OUT
-
- self.sPort.setSerialPortParams(self._baudrate, jdatabits, jstopbits, jparity)
- self.sPort.setFlowControlMode(jflowin | jflowout)
-
- if self._timeout >= 0:
- self.sPort.enableReceiveTimeout(self._timeout*1000)
- else:
- self.sPort.disableReceiveTimeout()
-
- def close(self):
- """Close port"""
- if self._isOpen:
- if self.sPort:
- self._instream.close()
- self._outstream.close()
- self.sPort.close()
- self.sPort = None
- self._isOpen = False
-
- def makeDeviceName(self, port):
- return device(port)
-
- # - - - - - - - - - - - - - - - - - - - - - - - -
-
- def inWaiting(self):
- """Return the number of characters currently in the input buffer."""
- if not self.sPort: raise portNotOpenError
- return self._instream.available()
-
- def read(self, size=1):
- """Read size bytes from the serial port. If a timeout is set it may
- return less characters as requested. With no timeout it will block
- until the requested number of bytes is read."""
- if not self.sPort: raise portNotOpenError
- read = bytearray()
- if size > 0:
- while len(read) < size:
- x = self._instream.read()
- if x == -1:
- if self.timeout >= 0:
- break
- else:
- read.append(x)
- return bytes(read)
-
- def write(self, data):
- """Output the given string over the serial port."""
- if not self.sPort: raise portNotOpenError
- if not isinstance(data, (bytes, bytearray)):
- raise TypeError('expected %s or bytearray, got %s' % (bytes, type(data)))
- self._outstream.write(data)
- return len(data)
-
- def flushInput(self):
- """Clear input buffer, discarding all that is in the buffer."""
- if not self.sPort: raise portNotOpenError
- self._instream.skip(self._instream.available())
-
- def flushOutput(self):
- """Clear output buffer, aborting the current output and
- discarding all that is in the buffer."""
- if not self.sPort: raise portNotOpenError
- self._outstream.flush()
-
- def sendBreak(self, duration=0.25):
- """Send break condition. Timed, returns to idle state after given duration."""
- if not self.sPort: raise portNotOpenError
- self.sPort.sendBreak(duration*1000.0)
-
- def setBreak(self, level=1):
- """Set break: Controls TXD. When active, to transmitting is possible."""
- if self.fd is None: raise portNotOpenError
- raise SerialException("The setBreak function is not implemented in java.")
-
- def setRTS(self, level=1):
- """Set terminal status line: Request To Send"""
- if not self.sPort: raise portNotOpenError
- self.sPort.setRTS(level)
-
- def setDTR(self, level=1):
- """Set terminal status line: Data Terminal Ready"""
- if not self.sPort: raise portNotOpenError
- self.sPort.setDTR(level)
-
- def getCTS(self):
- """Read terminal status line: Clear To Send"""
- if not self.sPort: raise portNotOpenError
- self.sPort.isCTS()
-
- def getDSR(self):
- """Read terminal status line: Data Set Ready"""
- if not self.sPort: raise portNotOpenError
- self.sPort.isDSR()
-
- def getRI(self):
- """Read terminal status line: Ring Indicator"""
- if not self.sPort: raise portNotOpenError
- self.sPort.isRI()
-
- def getCD(self):
- """Read terminal status line: Carrier Detect"""
- if not self.sPort: raise portNotOpenError
- self.sPort.isCD()
-
-
-# assemble Serial class with the platform specific implementation and the base
-# for file-like behavior. for Python 2.6 and newer, that provide the new I/O
-# library, derive from io.RawIOBase
-try:
- import io
-except ImportError:
- # classic version with our own file-like emulation
- class Serial(JavaSerial, FileLike):
- pass
-else:
- # io library present
- class Serial(JavaSerial, io.RawIOBase):
- pass
-
-
-if __name__ == '__main__':
- s = Serial(0,
- baudrate=19200, # baudrate
- bytesize=EIGHTBITS, # number of databits
- parity=PARITY_EVEN, # enable parity checking
- stopbits=STOPBITS_ONE, # number of stopbits
- timeout=3, # set a timeout value, None for waiting forever
- xonxoff=0, # enable software flow control
- rtscts=0, # enable RTS/CTS flow control
- )
- s.setRTS(1)
- s.setDTR(1)
- s.flushInput()
- s.flushOutput()
- s.write('hello')
- sys.stdio.write('%r\n' % s.read(5))
- sys.stdio.write('%s\n' % s.inWaiting())
- del s
-
-
diff --git a/lib/python2.7/site-packages/serial/serialposix.py b/lib/python2.7/site-packages/serial/serialposix.py
deleted file mode 100644
index b9b4b28..0000000
--- a/lib/python2.7/site-packages/serial/serialposix.py
+++ /dev/null
@@ -1,703 +0,0 @@
-#!/usr/bin/env python
-#
-# Python Serial Port Extension for Win32, Linux, BSD, Jython
-# module for serial IO for POSIX compatible systems, like Linux
-# see __init__.py
-#
-# (C) 2001-2010 Chris Liechti <cliechti@gmx.net>
-# this is distributed under a free software license, see license.txt
-#
-# parts based on code from Grant B. Edwards <grante@visi.com>:
-# ftp://ftp.visi.com/users/grante/python/PosixSerial.py
-#
-# references: http://www.easysw.com/~mike/serial/serial.html
-
-import sys, os, fcntl, termios, struct, select, errno, time
-from serial.serialutil import *
-
-# Do check the Python version as some constants have moved.
-if (sys.hexversion < 0x020100f0):
- import TERMIOS
-else:
- TERMIOS = termios
-
-if (sys.hexversion < 0x020200f0):
- import FCNTL
-else:
- FCNTL = fcntl
-
-# try to detect the OS so that a device can be selected...
-# this code block should supply a device() and set_special_baudrate() function
-# for the platform
-plat = sys.platform.lower()
-
-if plat[:5] == 'linux': # Linux (confirmed)
-
- def device(port):
- return '/dev/ttyS%d' % port
-
- TCGETS2 = 0x802C542A
- TCSETS2 = 0x402C542B
- BOTHER = 0o010000
-
- def set_special_baudrate(port, baudrate):
- # right size is 44 on x86_64, allow for some growth
- import array
- buf = array.array('i', [0] * 64)
-
- try:
- # get serial_struct
- FCNTL.ioctl(port.fd, TCGETS2, buf)
- # set custom speed
- buf[2] &= ~TERMIOS.CBAUD
- buf[2] |= BOTHER
- buf[9] = buf[10] = baudrate
-
- # set serial_struct
- res = FCNTL.ioctl(port.fd, TCSETS2, buf)
- except IOError, e:
- raise ValueError('Failed to set custom baud rate (%s): %s' % (baudrate, e))
-
- baudrate_constants = {
- 0: 0000000, # hang up
- 50: 0000001,
- 75: 0000002,
- 110: 0000003,
- 134: 0000004,
- 150: 0000005,
- 200: 0000006,
- 300: 0000007,
- 600: 0000010,
- 1200: 0000011,
- 1800: 0000012,
- 2400: 0000013,
- 4800: 0000014,
- 9600: 0000015,
- 19200: 0000016,
- 38400: 0000017,
- 57600: 0010001,
- 115200: 0010002,
- 230400: 0010003,
- 460800: 0010004,
- 500000: 0010005,
- 576000: 0010006,
- 921600: 0010007,
- 1000000: 0010010,
- 1152000: 0010011,
- 1500000: 0010012,
- 2000000: 0010013,
- 2500000: 0010014,
- 3000000: 0010015,
- 3500000: 0010016,
- 4000000: 0010017
- }
-
-elif plat == 'cygwin': # cygwin/win32 (confirmed)
-
- def device(port):
- return '/dev/com%d' % (port + 1)
-
- def set_special_baudrate(port, baudrate):
- raise ValueError("sorry don't know how to handle non standard baud rate on this platform")
-
- baudrate_constants = {
- 128000: 0x01003,
- 256000: 0x01005,
- 500000: 0x01007,
- 576000: 0x01008,
- 921600: 0x01009,
- 1000000: 0x0100a,
- 1152000: 0x0100b,
- 1500000: 0x0100c,
- 2000000: 0x0100d,
- 2500000: 0x0100e,
- 3000000: 0x0100f
- }
-
-elif plat[:7] == 'openbsd': # OpenBSD
-
- def device(port):
- return '/dev/cua%02d' % port
-
- def set_special_baudrate(port, baudrate):
- raise ValueError("sorry don't know how to handle non standard baud rate on this platform")
-
- baudrate_constants = {}
-
-elif plat[:3] == 'bsd' or \
- plat[:7] == 'freebsd':
-
- def device(port):
- return '/dev/cuad%d' % port
-
- def set_special_baudrate(port, baudrate):
- raise ValueError("sorry don't know how to handle non standard baud rate on this platform")
-
- baudrate_constants = {}
-
-elif plat[:6] == 'darwin': # OS X
-
- version = os.uname()[2].split('.')
- # Tiger or above can support arbitrary serial speeds
- if int(version[0]) >= 8:
- def set_special_baudrate(port, baudrate):
- # use IOKit-specific call to set up high speeds
- import array, fcntl
- buf = array.array('i', [baudrate])
- IOSSIOSPEED = 0x80045402 #_IOW('T', 2, speed_t)
- fcntl.ioctl(port.fd, IOSSIOSPEED, buf, 1)
- else: # version < 8
- def set_special_baudrate(port, baudrate):
- raise ValueError("baud rate not supported")
-
- def device(port):
- return '/dev/cuad%d' % port
-
- baudrate_constants = {}
-
-
-elif plat[:6] == 'netbsd': # NetBSD 1.6 testing by Erk
-
- def device(port):
- return '/dev/dty%02d' % port
-
- def set_special_baudrate(port, baudrate):
- raise ValueError("sorry don't know how to handle non standard baud rate on this platform")
-
- baudrate_constants = {}
-
-elif plat[:4] == 'irix': # IRIX (partially tested)
-
- def device(port):
- return '/dev/ttyf%d' % (port+1) #XXX different device names depending on flow control
-
- def set_special_baudrate(port, baudrate):
- raise ValueError("sorry don't know how to handle non standard baud rate on this platform")
-
- baudrate_constants = {}
-
-elif plat[:2] == 'hp': # HP-UX (not tested)
-
- def device(port):
- return '/dev/tty%dp0' % (port+1)
-
- def set_special_baudrate(port, baudrate):
- raise ValueError("sorry don't know how to handle non standard baud rate on this platform")
-
- baudrate_constants = {}
-
-elif plat[:5] == 'sunos': # Solaris/SunOS (confirmed)
-
- def device(port):
- return '/dev/tty%c' % (ord('a')+port)
-
- def set_special_baudrate(port, baudrate):
- raise ValueError("sorry don't know how to handle non standard baud rate on this platform")
-
- baudrate_constants = {}
-
-elif plat[:3] == 'aix': # AIX
-
- def device(port):
- return '/dev/tty%d' % (port)
-
- def set_special_baudrate(port, baudrate):
- raise ValueError("sorry don't know how to handle non standard baud rate on this platform")
-
- baudrate_constants = {}
-
-else:
- # platform detection has failed...
- sys.stderr.write("""\
-don't know how to number ttys on this system.
-! Use an explicit path (eg /dev/ttyS1) or send this information to
-! the author of this module:
-
-sys.platform = %r
-os.name = %r
-serialposix.py version = %s
-
-also add the device name of the serial port and where the
-counting starts for the first serial port.
-e.g. 'first serial port: /dev/ttyS0'
-and with a bit luck you can get this module running...
-""" % (sys.platform, os.name, VERSION))
- # no exception, just continue with a brave attempt to build a device name
- # even if the device name is not correct for the platform it has chances
- # to work using a string with the real device name as port parameter.
- def device(portum):
- return '/dev/ttyS%d' % portnum
- def set_special_baudrate(port, baudrate):
- raise SerialException("sorry don't know how to handle non standard baud rate on this platform")
- baudrate_constants = {}
- #~ raise Exception, "this module does not run on this platform, sorry."
-
-# whats up with "aix", "beos", ....
-# they should work, just need to know the device names.
-
-
-# load some constants for later use.
-# try to use values from TERMIOS, use defaults from linux otherwise
-TIOCMGET = hasattr(TERMIOS, 'TIOCMGET') and TERMIOS.TIOCMGET or 0x5415
-TIOCMBIS = hasattr(TERMIOS, 'TIOCMBIS') and TERMIOS.TIOCMBIS or 0x5416
-TIOCMBIC = hasattr(TERMIOS, 'TIOCMBIC') and TERMIOS.TIOCMBIC or 0x5417
-TIOCMSET = hasattr(TERMIOS, 'TIOCMSET') and TERMIOS.TIOCMSET or 0x5418
-
-#TIOCM_LE = hasattr(TERMIOS, 'TIOCM_LE') and TERMIOS.TIOCM_LE or 0x001
-TIOCM_DTR = hasattr(TERMIOS, 'TIOCM_DTR') and TERMIOS.TIOCM_DTR or 0x002
-TIOCM_RTS = hasattr(TERMIOS, 'TIOCM_RTS') and TERMIOS.TIOCM_RTS or 0x004
-#TIOCM_ST = hasattr(TERMIOS, 'TIOCM_ST') and TERMIOS.TIOCM_ST or 0x008
-#TIOCM_SR = hasattr(TERMIOS, 'TIOCM_SR') and TERMIOS.TIOCM_SR or 0x010
-
-TIOCM_CTS = hasattr(TERMIOS, 'TIOCM_CTS') and TERMIOS.TIOCM_CTS or 0x020
-TIOCM_CAR = hasattr(TERMIOS, 'TIOCM_CAR') and TERMIOS.TIOCM_CAR or 0x040
-TIOCM_RNG = hasattr(TERMIOS, 'TIOCM_RNG') and TERMIOS.TIOCM_RNG or 0x080
-TIOCM_DSR = hasattr(TERMIOS, 'TIOCM_DSR') and TERMIOS.TIOCM_DSR or 0x100
-TIOCM_CD = hasattr(TERMIOS, 'TIOCM_CD') and TERMIOS.TIOCM_CD or TIOCM_CAR
-TIOCM_RI = hasattr(TERMIOS, 'TIOCM_RI') and TERMIOS.TIOCM_RI or TIOCM_RNG
-#TIOCM_OUT1 = hasattr(TERMIOS, 'TIOCM_OUT1') and TERMIOS.TIOCM_OUT1 or 0x2000
-#TIOCM_OUT2 = hasattr(TERMIOS, 'TIOCM_OUT2') and TERMIOS.TIOCM_OUT2 or 0x4000
-if hasattr(TERMIOS, 'TIOCINQ'):
- TIOCINQ = TERMIOS.TIOCINQ
-else:
- TIOCINQ = hasattr(TERMIOS, 'FIONREAD') and TERMIOS.FIONREAD or 0x541B
-TIOCOUTQ = hasattr(TERMIOS, 'TIOCOUTQ') and TERMIOS.TIOCOUTQ or 0x5411
-
-TIOCM_zero_str = struct.pack('I', 0)
-TIOCM_RTS_str = struct.pack('I', TIOCM_RTS)
-TIOCM_DTR_str = struct.pack('I', TIOCM_DTR)
-
-TIOCSBRK = hasattr(TERMIOS, 'TIOCSBRK') and TERMIOS.TIOCSBRK or 0x5427
-TIOCCBRK = hasattr(TERMIOS, 'TIOCCBRK') and TERMIOS.TIOCCBRK or 0x5428
-
-
-class PosixSerial(SerialBase):
- """Serial port class POSIX implementation. Serial port configuration is
- done with termios and fcntl. Runs on Linux and many other Un*x like
- systems."""
-
- def open(self):
- """Open port with current settings. This may throw a SerialException
- if the port cannot be opened."""
- if self._port is None:
- raise SerialException("Port must be configured before it can be used.")
- if self._isOpen:
- raise SerialException("Port is already open.")
- self.fd = None
- # open
- try:
- self.fd = os.open(self.portstr, os.O_RDWR|os.O_NOCTTY|os.O_NONBLOCK)
- except IOError, msg:
- self.fd = None
- raise SerialException(msg.errno, "could not open port %s: %s" % (self._port, msg))
- #~ fcntl.fcntl(self.fd, FCNTL.F_SETFL, 0) # set blocking
-
- try:
- self._reconfigurePort()
- except:
- try:
- os.close(self.fd)
- except:
- # ignore any exception when closing the port
- # also to keep original exception that happened when setting up
- pass
- self.fd = None
- raise
- else:
- self._isOpen = True
- self.flushInput()
-
-
- def _reconfigurePort(self):
- """Set communication parameters on opened port."""
- if self.fd is None:
- raise SerialException("Can only operate on a valid file descriptor")
- custom_baud = None
-
- vmin = vtime = 0 # timeout is done via select
- if self._interCharTimeout is not None:
- vmin = 1
- vtime = int(self._interCharTimeout * 10)
- try:
- orig_attr = termios.tcgetattr(self.fd)
- iflag, oflag, cflag, lflag, ispeed, ospeed, cc = orig_attr
- except termios.error, msg: # if a port is nonexistent but has a /dev file, it'll fail here
- raise SerialException("Could not configure port: %s" % msg)
- # set up raw mode / no echo / binary
- cflag |= (TERMIOS.CLOCAL|TERMIOS.CREAD)
- lflag &= ~(TERMIOS.ICANON|TERMIOS.ECHO|TERMIOS.ECHOE|TERMIOS.ECHOK|TERMIOS.ECHONL|
- TERMIOS.ISIG|TERMIOS.IEXTEN) #|TERMIOS.ECHOPRT
- for flag in ('ECHOCTL', 'ECHOKE'): # netbsd workaround for Erk
- if hasattr(TERMIOS, flag):
- lflag &= ~getattr(TERMIOS, flag)
-
- oflag &= ~(TERMIOS.OPOST)
- iflag &= ~(TERMIOS.INLCR|TERMIOS.IGNCR|TERMIOS.ICRNL|TERMIOS.IGNBRK)
- if hasattr(TERMIOS, 'IUCLC'):
- iflag &= ~TERMIOS.IUCLC
- if hasattr(TERMIOS, 'PARMRK'):
- iflag &= ~TERMIOS.PARMRK
-
- # setup baud rate
- try:
- ispeed = ospeed = getattr(TERMIOS, 'B%s' % (self._baudrate))
- except AttributeError:
- try:
- ispeed = ospeed = baudrate_constants[self._baudrate]
- except KeyError:
- #~ raise ValueError('Invalid baud rate: %r' % self._baudrate)
- # may need custom baud rate, it isn't in our list.
- ispeed = ospeed = getattr(TERMIOS, 'B38400')
- try:
- custom_baud = int(self._baudrate) # store for later
- except ValueError:
- raise ValueError('Invalid baud rate: %r' % self._baudrate)
- else:
- if custom_baud < 0:
- raise ValueError('Invalid baud rate: %r' % self._baudrate)
-
- # setup char len
- cflag &= ~TERMIOS.CSIZE
- if self._bytesize == 8:
- cflag |= TERMIOS.CS8
- elif self._bytesize == 7:
- cflag |= TERMIOS.CS7
- elif self._bytesize == 6:
- cflag |= TERMIOS.CS6
- elif self._bytesize == 5:
- cflag |= TERMIOS.CS5
- else:
- raise ValueError('Invalid char len: %r' % self._bytesize)
- # setup stopbits
- if self._stopbits == STOPBITS_ONE:
- cflag &= ~(TERMIOS.CSTOPB)
- elif self._stopbits == STOPBITS_ONE_POINT_FIVE:
- cflag |= (TERMIOS.CSTOPB) # XXX same as TWO.. there is no POSIX support for 1.5
- elif self._stopbits == STOPBITS_TWO:
- cflag |= (TERMIOS.CSTOPB)
- else:
- raise ValueError('Invalid stop bit specification: %r' % self._stopbits)
- # setup parity
- iflag &= ~(TERMIOS.INPCK|TERMIOS.ISTRIP)
- if self._parity == PARITY_NONE:
- cflag &= ~(TERMIOS.PARENB|TERMIOS.PARODD)
- elif self._parity == PARITY_EVEN:
- cflag &= ~(TERMIOS.PARODD)
- cflag |= (TERMIOS.PARENB)
- elif self._parity == PARITY_ODD:
- cflag |= (TERMIOS.PARENB|TERMIOS.PARODD)
- else:
- raise ValueError('Invalid parity: %r' % self._parity)
- # setup flow control
- # xonxoff
- if hasattr(TERMIOS, 'IXANY'):
- if self._xonxoff:
- iflag |= (TERMIOS.IXON|TERMIOS.IXOFF) #|TERMIOS.IXANY)
- else:
- iflag &= ~(TERMIOS.IXON|TERMIOS.IXOFF|TERMIOS.IXANY)
- else:
- if self._xonxoff:
- iflag |= (TERMIOS.IXON|TERMIOS.IXOFF)
- else:
- iflag &= ~(TERMIOS.IXON|TERMIOS.IXOFF)
- # rtscts
- if hasattr(TERMIOS, 'CRTSCTS'):
- if self._rtscts:
- cflag |= (TERMIOS.CRTSCTS)
- else:
- cflag &= ~(TERMIOS.CRTSCTS)
- elif hasattr(TERMIOS, 'CNEW_RTSCTS'): # try it with alternate constant name
- if self._rtscts:
- cflag |= (TERMIOS.CNEW_RTSCTS)
- else:
- cflag &= ~(TERMIOS.CNEW_RTSCTS)
- # XXX should there be a warning if setting up rtscts (and xonxoff etc) fails??
-
- # buffer
- # vmin "minimal number of characters to be read. = for non blocking"
- if vmin < 0 or vmin > 255:
- raise ValueError('Invalid vmin: %r ' % vmin)
- cc[TERMIOS.VMIN] = vmin
- # vtime
- if vtime < 0 or vtime > 255:
- raise ValueError('Invalid vtime: %r' % vtime)
- cc[TERMIOS.VTIME] = vtime
- # activate settings
- if [iflag, oflag, cflag, lflag, ispeed, ospeed, cc] != orig_attr:
- termios.tcsetattr(self.fd, TERMIOS.TCSANOW, [iflag, oflag, cflag, lflag, ispeed, ospeed, cc])
-
- # apply custom baud rate, if any
- if custom_baud is not None:
- set_special_baudrate(self, custom_baud)
-
- def close(self):
- """Close port"""
- if self._isOpen:
- if self.fd is not None:
- os.close(self.fd)
- self.fd = None
- self._isOpen = False
-
- def makeDeviceName(self, port):
- return device(port)
-
- # - - - - - - - - - - - - - - - - - - - - - - - -
-
- def inWaiting(self):
- """Return the number of characters currently in the input buffer."""
- #~ s = fcntl.ioctl(self.fd, TERMIOS.FIONREAD, TIOCM_zero_str)
- s = fcntl.ioctl(self.fd, TIOCINQ, TIOCM_zero_str)
- return struct.unpack('I',s)[0]
-
- # select based implementation, proved to work on many systems
- def read(self, size=1):
- """Read size bytes from the serial port. If a timeout is set it may
- return less characters as requested. With no timeout it will block
- until the requested number of bytes is read."""
- if not self._isOpen: raise portNotOpenError
- read = bytearray()
- while len(read) < size:
- try:
- ready,_,_ = select.select([self.fd],[],[], self._timeout)
- # If select was used with a timeout, and the timeout occurs, it
- # returns with empty lists -> thus abort read operation.
- # For timeout == 0 (non-blocking operation) also abort when there
- # is nothing to read.
- if not ready:
- break # timeout
- buf = os.read(self.fd, size-len(read))
- # read should always return some data as select reported it was
- # ready to read when we get to this point.
- if not buf:
- # Disconnected devices, at least on Linux, show the
- # behavior that they are always ready to read immediately
- # but reading returns nothing.
- raise SerialException('device reports readiness to read but returned no data (device disconnected or multiple access on port?)')
- read.extend(buf)
- except select.error, e:
- # ignore EAGAIN errors. all other errors are shown
- # see also http://www.python.org/dev/peps/pep-3151/#select
- if e[0] != errno.EAGAIN:
- raise SerialException('read failed: %s' % (e,))
- except OSError, e:
- # ignore EAGAIN errors. all other errors are shown
- if e.errno != errno.EAGAIN:
- raise SerialException('read failed: %s' % (e,))
- return bytes(read)
-
- def write(self, data):
- """Output the given string over the serial port."""
- if not self._isOpen: raise portNotOpenError
- d = to_bytes(data)
- tx_len = len(d)
- if self._writeTimeout is not None and self._writeTimeout > 0:
- timeout = time.time() + self._writeTimeout
- else:
- timeout = None
- while tx_len > 0:
- try:
- n = os.write(self.fd, d)
- if timeout:
- # when timeout is set, use select to wait for being ready
- # with the time left as timeout
- timeleft = timeout - time.time()
- if timeleft < 0:
- raise writeTimeoutError
- _, ready, _ = select.select([], [self.fd], [], timeleft)
- if not ready:
- raise writeTimeoutError
- else:
- # wait for write operation
- _, ready, _ = select.select([], [self.fd], [], None)
- if not ready:
- raise SerialException('write failed (select)')
- d = d[n:]
- tx_len -= n
- except OSError, v:
- if v.errno != errno.EAGAIN:
- raise SerialException('write failed: %s' % (v,))
- return len(data)
-
- def flush(self):
- """Flush of file like objects. In this case, wait until all data
- is written."""
- self.drainOutput()
-
- def flushInput(self):
- """Clear input buffer, discarding all that is in the buffer."""
- if not self._isOpen: raise portNotOpenError
- termios.tcflush(self.fd, TERMIOS.TCIFLUSH)
-
- def flushOutput(self):
- """Clear output buffer, aborting the current output and
- discarding all that is in the buffer."""
- if not self._isOpen: raise portNotOpenError
- termios.tcflush(self.fd, TERMIOS.TCOFLUSH)
-
- def sendBreak(self, duration=0.25):
- """Send break condition. Timed, returns to idle state after given duration."""
- if not self._isOpen: raise portNotOpenError
- termios.tcsendbreak(self.fd, int(duration/0.25))
-
- def setBreak(self, level=1):
- """Set break: Controls TXD. When active, no transmitting is possible."""
- if self.fd is None: raise portNotOpenError
- if level:
- fcntl.ioctl(self.fd, TIOCSBRK)
- else:
- fcntl.ioctl(self.fd, TIOCCBRK)
-
- def setRTS(self, level=1):
- """Set terminal status line: Request To Send"""
- if not self._isOpen: raise portNotOpenError
- if level:
- fcntl.ioctl(self.fd, TIOCMBIS, TIOCM_RTS_str)
- else:
- fcntl.ioctl(self.fd, TIOCMBIC, TIOCM_RTS_str)
-
- def setDTR(self, level=1):
- """Set terminal status line: Data Terminal Ready"""
- if not self._isOpen: raise portNotOpenError
- if level:
- fcntl.ioctl(self.fd, TIOCMBIS, TIOCM_DTR_str)
- else:
- fcntl.ioctl(self.fd, TIOCMBIC, TIOCM_DTR_str)
-
- def getCTS(self):
- """Read terminal status line: Clear To Send"""
- if not self._isOpen: raise portNotOpenError
- s = fcntl.ioctl(self.fd, TIOCMGET, TIOCM_zero_str)
- return struct.unpack('I',s)[0] & TIOCM_CTS != 0
-
- def getDSR(self):
- """Read terminal status line: Data Set Ready"""
- if not self._isOpen: raise portNotOpenError
- s = fcntl.ioctl(self.fd, TIOCMGET, TIOCM_zero_str)
- return struct.unpack('I',s)[0] & TIOCM_DSR != 0
-
- def getRI(self):
- """Read terminal status line: Ring Indicator"""
- if not self._isOpen: raise portNotOpenError
- s = fcntl.ioctl(self.fd, TIOCMGET, TIOCM_zero_str)
- return struct.unpack('I',s)[0] & TIOCM_RI != 0
-
- def getCD(self):
- """Read terminal status line: Carrier Detect"""
- if not self._isOpen: raise portNotOpenError
- s = fcntl.ioctl(self.fd, TIOCMGET, TIOCM_zero_str)
- return struct.unpack('I',s)[0] & TIOCM_CD != 0
-
- # - - platform specific - - - -
-
- def outWaiting(self):
- """Return the number of characters currently in the output buffer."""
- #~ s = fcntl.ioctl(self.fd, TERMIOS.FIONREAD, TIOCM_zero_str)
- s = fcntl.ioctl(self.fd, TIOCOUTQ, TIOCM_zero_str)
- return struct.unpack('I',s)[0]
-
- def drainOutput(self):
- """internal - not portable!"""
- if not self._isOpen: raise portNotOpenError
- termios.tcdrain(self.fd)
-
- def nonblocking(self):
- """internal - not portable!"""
- if not self._isOpen: raise portNotOpenError
- fcntl.fcntl(self.fd, FCNTL.F_SETFL, os.O_NONBLOCK)
-
- def fileno(self):
- """\
- For easier use of the serial port instance with select.
- WARNING: this function is not portable to different platforms!
- """
- if not self._isOpen: raise portNotOpenError
- return self.fd
-
- def setXON(self, level=True):
- """\
- Manually control flow - when software flow control is enabled.
- This will send XON (true) and XOFF (false) to the other device.
- WARNING: this function is not portable to different platforms!
- """
- if not self.hComPort: raise portNotOpenError
- if enable:
- termios.tcflow(self.fd, TERMIOS.TCION)
- else:
- termios.tcflow(self.fd, TERMIOS.TCIOFF)
-
- def flowControlOut(self, enable):
- """\
- Manually control flow of outgoing data - when hardware or software flow
- control is enabled.
- WARNING: this function is not portable to different platforms!
- """
- if not self._isOpen: raise portNotOpenError
- if enable:
- termios.tcflow(self.fd, TERMIOS.TCOON)
- else:
- termios.tcflow(self.fd, TERMIOS.TCOOFF)
-
-
-# assemble Serial class with the platform specifc implementation and the base
-# for file-like behavior. for Python 2.6 and newer, that provide the new I/O
-# library, derrive from io.RawIOBase
-try:
- import io
-except ImportError:
- # classic version with our own file-like emulation
- class Serial(PosixSerial, FileLike):
- pass
-else:
- # io library present
- class Serial(PosixSerial, io.RawIOBase):
- pass
-
-class PosixPollSerial(Serial):
- """poll based read implementation. not all systems support poll properly.
- however this one has better handling of errors, such as a device
- disconnecting while it's in use (e.g. USB-serial unplugged)"""
-
- def read(self, size=1):
- """Read size bytes from the serial port. If a timeout is set it may
- return less characters as requested. With no timeout it will block
- until the requested number of bytes is read."""
- if self.fd is None: raise portNotOpenError
- read = bytearray()
- poll = select.poll()
- poll.register(self.fd, select.POLLIN|select.POLLERR|select.POLLHUP|select.POLLNVAL)
- if size > 0:
- while len(read) < size:
- # print "\tread(): size",size, "have", len(read) #debug
- # wait until device becomes ready to read (or something fails)
- for fd, event in poll.poll(self._timeout*1000):
- if event & (select.POLLERR|select.POLLHUP|select.POLLNVAL):
- raise SerialException('device reports error (poll)')
- # we don't care if it is select.POLLIN or timeout, that's
- # handled below
- buf = os.read(self.fd, size - len(read))
- read.extend(buf)
- if ((self._timeout is not None and self._timeout >= 0) or
- (self._interCharTimeout is not None and self._interCharTimeout > 0)) and not buf:
- break # early abort on timeout
- return bytes(read)
-
-
-if __name__ == '__main__':
- s = Serial(0,
- baudrate=19200, # baud rate
- bytesize=EIGHTBITS, # number of data bits
- parity=PARITY_EVEN, # enable parity checking
- stopbits=STOPBITS_ONE, # number of stop bits
- timeout=3, # set a timeout value, None for waiting forever
- xonxoff=0, # enable software flow control
- rtscts=0, # enable RTS/CTS flow control
- )
- s.setRTS(1)
- s.setDTR(1)
- s.flushInput()
- s.flushOutput()
- s.write('hello')
- sys.stdout.write('%r\n' % s.read(5))
- sys.stdout.write('%s\n' % s.inWaiting())
- del s
-
diff --git a/lib/python2.7/site-packages/serial/serialutil.py b/lib/python2.7/site-packages/serial/serialutil.py
deleted file mode 100644
index f28ece4..0000000
--- a/lib/python2.7/site-packages/serial/serialutil.py
+++ /dev/null
@@ -1,551 +0,0 @@
-#! python
-# Python Serial Port Extension for Win32, Linux, BSD, Jython
-# see __init__.py
-#
-# (C) 2001-2010 Chris Liechti <cliechti@gmx.net>
-# this is distributed under a free software license, see license.txt
-
-# compatibility for older Python < 2.6
-try:
- bytes
- bytearray
-except (NameError, AttributeError):
- # Python older than 2.6 do not have these types. Like for Python 2.6 they
- # should behave like str. For Python older than 3.0 we want to work with
- # strings anyway, only later versions have a true bytes type.
- bytes = str
- # bytearray is a mutable type that is easily turned into an instance of
- # bytes
- class bytearray(list):
- # for bytes(bytearray()) usage
- def __str__(self): return ''.join(self)
- def __repr__(self): return 'bytearray(%r)' % ''.join(self)
- # append automatically converts integers to characters
- def append(self, item):
- if isinstance(item, str):
- list.append(self, item)
- else:
- list.append(self, chr(item))
- # +=
- def __iadd__(self, other):
- for byte in other:
- self.append(byte)
- return self
-
- def __getslice__(self, i, j):
- return bytearray(list.__getslice__(self, i, j))
-
- def __getitem__(self, item):
- if isinstance(item, slice):
- return bytearray(list.__getitem__(self, item))
- else:
- return ord(list.__getitem__(self, item))
-
- def __eq__(self, other):
- if isinstance(other, basestring):
- other = bytearray(other)
- return list.__eq__(self, other)
-
-# ``memoryview`` was introduced in Python 2.7 and ``bytes(some_memoryview)``
-# isn't returning the contents (very unfortunate). Therefore we need special
-# cases and test for it. Ensure that there is a ``memoryview`` object for older
-# Python versions. This is easier than making every test dependent on its
-# existence.
-try:
- memoryview
-except (NameError, AttributeError):
- # implementation does not matter as we do not realy use it.
- # it just must not inherit from something else we might care for.
- class memoryview:
- pass
-
-
-# all Python versions prior 3.x convert ``str([17])`` to '[17]' instead of '\x11'
-# so a simple ``bytes(sequence)`` doesn't work for all versions
-def to_bytes(seq):
- """convert a sequence to a bytes type"""
- if isinstance(seq, bytes):
- return seq
- elif isinstance(seq, bytearray):
- return bytes(seq)
- elif isinstance(seq, memoryview):
- return seq.tobytes()
- else:
- b = bytearray()
- for item in seq:
- b.append(item) # this one handles int and str for our emulation and ints for Python 3.x
- return bytes(b)
-
-# create control bytes
-XON = to_bytes([17])
-XOFF = to_bytes([19])
-
-CR = to_bytes([13])
-LF = to_bytes([10])
-
-
-PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, PARITY_SPACE = 'N', 'E', 'O', 'M', 'S'
-STOPBITS_ONE, STOPBITS_ONE_POINT_FIVE, STOPBITS_TWO = (1, 1.5, 2)
-FIVEBITS, SIXBITS, SEVENBITS, EIGHTBITS = (5, 6, 7, 8)
-
-PARITY_NAMES = {
- PARITY_NONE: 'None',
- PARITY_EVEN: 'Even',
- PARITY_ODD: 'Odd',
- PARITY_MARK: 'Mark',
- PARITY_SPACE: 'Space',
-}
-
-
-class SerialException(IOError):
- """Base class for serial port related exceptions."""
-
-
-class SerialTimeoutException(SerialException):
- """Write timeouts give an exception"""
-
-
-writeTimeoutError = SerialTimeoutException('Write timeout')
-portNotOpenError = SerialException('Attempting to use a port that is not open')
-
-
-class FileLike(object):
- """An abstract file like class.
-
- This class implements readline and readlines based on read and
- writelines based on write.
- This class is used to provide the above functions for to Serial
- port objects.
-
- Note that when the serial port was opened with _NO_ timeout that
- readline blocks until it sees a newline (or the specified size is
- reached) and that readlines would never return and therefore
- refuses to work (it raises an exception in this case)!
- """
-
- def __init__(self):
- self.closed = True
-
- def close(self):
- self.closed = True
-
- # so that ports are closed when objects are discarded
- def __del__(self):
- """Destructor. Calls close()."""
- # The try/except block is in case this is called at program
- # exit time, when it's possible that globals have already been
- # deleted, and then the close() call might fail. Since
- # there's nothing we can do about such failures and they annoy
- # the end users, we suppress the traceback.
- try:
- self.close()
- except:
- pass
-
- def writelines(self, sequence):
- for line in sequence:
- self.write(line)
-
- def flush(self):
- """flush of file like objects"""
- pass
-
- # iterator for e.g. "for line in Serial(0): ..." usage
- def next(self):
- line = self.readline()
- if not line: raise StopIteration
- return line
-
- def __iter__(self):
- return self
-
- def readline(self, size=None, eol=LF):
- """read a line which is terminated with end-of-line (eol) character
- ('\n' by default) or until timeout."""
- leneol = len(eol)
- line = bytearray()
- while True:
- c = self.read(1)
- if c:
- line += c
- if line[-leneol:] == eol:
- break
- if size is not None and len(line) >= size:
- break
- else:
- break
- return bytes(line)
-
- def readlines(self, sizehint=None, eol=LF):
- """read a list of lines, until timeout.
- sizehint is ignored."""
- if self.timeout is None:
- raise ValueError("Serial port MUST have enabled timeout for this function!")
- leneol = len(eol)
- lines = []
- while True:
- line = self.readline(eol=eol)
- if line:
- lines.append(line)
- if line[-leneol:] != eol: # was the line received with a timeout?
- break
- else:
- break
- return lines
-
- def xreadlines(self, sizehint=None):
- """Read lines, implemented as generator. It will raise StopIteration on
- timeout (empty read). sizehint is ignored."""
- while True:
- line = self.readline()
- if not line: break
- yield line
-
- # other functions of file-likes - not used by pySerial
-
- #~ readinto(b)
-
- def seek(self, pos, whence=0):
- raise IOError("file is not seekable")
-
- def tell(self):
- raise IOError("file is not seekable")
-
- def truncate(self, n=None):
- raise IOError("file is not seekable")
-
- def isatty(self):
- return False
-
-
-class SerialBase(object):
- """Serial port base class. Provides __init__ function and properties to
- get/set port settings."""
-
- # default values, may be overridden in subclasses that do not support all values
- BAUDRATES = (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800,
- 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000,
- 576000, 921600, 1000000, 1152000, 1500000, 2000000, 2500000,
- 3000000, 3500000, 4000000)
- BYTESIZES = (FIVEBITS, SIXBITS, SEVENBITS, EIGHTBITS)
- PARITIES = (PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK, PARITY_SPACE)
- STOPBITS = (STOPBITS_ONE, STOPBITS_ONE_POINT_FIVE, STOPBITS_TWO)
-
- def __init__(self,
- port = None, # number of device, numbering starts at
- # zero. if everything fails, the user
- # can specify a device string, note
- # that this isn't portable anymore
- # port will be opened if one is specified
- baudrate=9600, # baud rate
- bytesize=EIGHTBITS, # number of data bits
- parity=PARITY_NONE, # enable parity checking
- stopbits=STOPBITS_ONE, # number of stop bits
- timeout=None, # set a timeout value, None to wait forever
- xonxoff=False, # enable software flow control
- rtscts=False, # enable RTS/CTS flow control
- writeTimeout=None, # set a timeout for writes
- dsrdtr=False, # None: use rtscts setting, dsrdtr override if True or False
- interCharTimeout=None # Inter-character timeout, None to disable
- ):
- """Initialize comm port object. If a port is given, then the port will be
- opened immediately. Otherwise a Serial port object in closed state
- is returned."""
-
- self._isOpen = False
- self._port = None # correct value is assigned below through properties
- self._baudrate = None # correct value is assigned below through properties
- self._bytesize = None # correct value is assigned below through properties
- self._parity = None # correct value is assigned below through properties
- self._stopbits = None # correct value is assigned below through properties
- self._timeout = None # correct value is assigned below through properties
- self._writeTimeout = None # correct value is assigned below through properties
- self._xonxoff = None # correct value is assigned below through properties
- self._rtscts = None # correct value is assigned below through properties
- self._dsrdtr = None # correct value is assigned below through properties
- self._interCharTimeout = None # correct value is assigned below through properties
-
- # assign values using get/set methods using the properties feature
- self.port = port
- self.baudrate = baudrate
- self.bytesize = bytesize
- self.parity = parity
- self.stopbits = stopbits
- self.timeout = timeout
- self.writeTimeout = writeTimeout
- self.xonxoff = xonxoff
- self.rtscts = rtscts
- self.dsrdtr = dsrdtr
- self.interCharTimeout = interCharTimeout
-
- if port is not None:
- self.open()
-
- def isOpen(self):
- """Check if the port is opened."""
- return self._isOpen
-
- # - - - - - - - - - - - - - - - - - - - - - - - -
-
- # TODO: these are not really needed as the is the BAUDRATES etc. attribute...
- # maybe i remove them before the final release...
-
- def getSupportedBaudrates(self):
- return [(str(b), b) for b in self.BAUDRATES]
-
- def getSupportedByteSizes(self):
- return [(str(b), b) for b in self.BYTESIZES]
-
- def getSupportedStopbits(self):
- return [(str(b), b) for b in self.STOPBITS]
-
- def getSupportedParities(self):
- return [(PARITY_NAMES[b], b) for b in self.PARITIES]
-
- # - - - - - - - - - - - - - - - - - - - - - - - -
-
- def setPort(self, port):
- """Change the port. The attribute portstr is set to a string that
- contains the name of the port."""
-
- was_open = self._isOpen
- if was_open: self.close()
- if port is not None:
- if isinstance(port, basestring):
- self.portstr = port
- else:
- self.portstr = self.makeDeviceName(port)
- else:
- self.portstr = None
- self._port = port
- self.name = self.portstr
- if was_open: self.open()
-
- def getPort(self):
- """Get the current port setting. The value that was passed on init or using
- setPort() is passed back. See also the attribute portstr which contains
- the name of the port as a string."""
- return self._port
-
- port = property(getPort, setPort, doc="Port setting")
-
-
- def setBaudrate(self, baudrate):
- """Change baud rate. It raises a ValueError if the port is open and the
- baud rate is not possible. If the port is closed, then the value is
- accepted and the exception is raised when the port is opened."""
- try:
- b = int(baudrate)
- except TypeError:
- raise ValueError("Not a valid baudrate: %r" % (baudrate,))
- else:
- if b <= 0:
- raise ValueError("Not a valid baudrate: %r" % (baudrate,))
- self._baudrate = b
- if self._isOpen: self._reconfigurePort()
-
- def getBaudrate(self):
- """Get the current baud rate setting."""
- return self._baudrate
-
- baudrate = property(getBaudrate, setBaudrate, doc="Baud rate setting")
-
-
- def setByteSize(self, bytesize):
- """Change byte size."""
- if bytesize not in self.BYTESIZES: raise ValueError("Not a valid byte size: %r" % (bytesize,))
- self._bytesize = bytesize
- if self._isOpen: self._reconfigurePort()
-
- def getByteSize(self):
- """Get the current byte size setting."""
- return self._bytesize
-
- bytesize = property(getByteSize, setByteSize, doc="Byte size setting")
-
-
- def setParity(self, parity):
- """Change parity setting."""
- if parity not in self.PARITIES: raise ValueError("Not a valid parity: %r" % (parity,))
- self._parity = parity
- if self._isOpen: self._reconfigurePort()
-
- def getParity(self):
- """Get the current parity setting."""
- return self._parity
-
- parity = property(getParity, setParity, doc="Parity setting")
-
-
- def setStopbits(self, stopbits):
- """Change stop bits size."""
- if stopbits not in self.STOPBITS: raise ValueError("Not a valid stop bit size: %r" % (stopbits,))
- self._stopbits = stopbits
- if self._isOpen: self._reconfigurePort()
-
- def getStopbits(self):
- """Get the current stop bits setting."""
- return self._stopbits
-
- stopbits = property(getStopbits, setStopbits, doc="Stop bits setting")
-
-
- def setTimeout(self, timeout):
- """Change timeout setting."""
- if timeout is not None:
- try:
- timeout + 1 # test if it's a number, will throw a TypeError if not...
- except TypeError:
- raise ValueError("Not a valid timeout: %r" % (timeout,))
- if timeout < 0: raise ValueError("Not a valid timeout: %r" % (timeout,))
- self._timeout = timeout
- if self._isOpen: self._reconfigurePort()
-
- def getTimeout(self):
- """Get the current timeout setting."""
- return self._timeout
-
- timeout = property(getTimeout, setTimeout, doc="Timeout setting for read()")
-
-
- def setWriteTimeout(self, timeout):
- """Change timeout setting."""
- if timeout is not None:
- if timeout < 0: raise ValueError("Not a valid timeout: %r" % (timeout,))
- try:
- timeout + 1 #test if it's a number, will throw a TypeError if not...
- except TypeError:
- raise ValueError("Not a valid timeout: %r" % timeout)
-
- self._writeTimeout = timeout
- if self._isOpen: self._reconfigurePort()
-
- def getWriteTimeout(self):
- """Get the current timeout setting."""
- return self._writeTimeout
-
- writeTimeout = property(getWriteTimeout, setWriteTimeout, doc="Timeout setting for write()")
-
-
- def setXonXoff(self, xonxoff):
- """Change XON/XOFF setting."""
- self._xonxoff = xonxoff
- if self._isOpen: self._reconfigurePort()
-
- def getXonXoff(self):
- """Get the current XON/XOFF setting."""
- return self._xonxoff
-
- xonxoff = property(getXonXoff, setXonXoff, doc="XON/XOFF setting")
-
- def setRtsCts(self, rtscts):
- """Change RTS/CTS flow control setting."""
- self._rtscts = rtscts
- if self._isOpen: self._reconfigurePort()
-
- def getRtsCts(self):
- """Get the current RTS/CTS flow control setting."""
- return self._rtscts
-
- rtscts = property(getRtsCts, setRtsCts, doc="RTS/CTS flow control setting")
-
- def setDsrDtr(self, dsrdtr=None):
- """Change DsrDtr flow control setting."""
- if dsrdtr is None:
- # if not set, keep backwards compatibility and follow rtscts setting
- self._dsrdtr = self._rtscts
- else:
- # if defined independently, follow its value
- self._dsrdtr = dsrdtr
- if self._isOpen: self._reconfigurePort()
-
- def getDsrDtr(self):
- """Get the current DSR/DTR flow control setting."""
- return self._dsrdtr
-
- dsrdtr = property(getDsrDtr, setDsrDtr, "DSR/DTR flow control setting")
-
- def setInterCharTimeout(self, interCharTimeout):
- """Change inter-character timeout setting."""
- if interCharTimeout is not None:
- if interCharTimeout < 0: raise ValueError("Not a valid timeout: %r" % interCharTimeout)
- try:
- interCharTimeout + 1 # test if it's a number, will throw a TypeError if not...
- except TypeError:
- raise ValueError("Not a valid timeout: %r" % interCharTimeout)
-
- self._interCharTimeout = interCharTimeout
- if self._isOpen: self._reconfigurePort()
-
- def getInterCharTimeout(self):
- """Get the current inter-character timeout setting."""
- return self._interCharTimeout
-
- interCharTimeout = property(getInterCharTimeout, setInterCharTimeout, doc="Inter-character timeout setting for read()")
-
- # - - - - - - - - - - - - - - - - - - - - - - - -
-
- _SETTINGS = ('baudrate', 'bytesize', 'parity', 'stopbits', 'xonxoff',
- 'dsrdtr', 'rtscts', 'timeout', 'writeTimeout', 'interCharTimeout')
-
- def getSettingsDict(self):
- """Get current port settings as a dictionary. For use with
- applySettingsDict"""
- return dict([(key, getattr(self, '_'+key)) for key in self._SETTINGS])
-
- def applySettingsDict(self, d):
- """apply stored settings from a dictionary returned from
- getSettingsDict. it's allowed to delete keys from the dictionary. these
- values will simply left unchanged."""
- for key in self._SETTINGS:
- if d[key] != getattr(self, '_'+key): # check against internal "_" value
- setattr(self, key, d[key]) # set non "_" value to use properties write function
-
- # - - - - - - - - - - - - - - - - - - - - - - - -
-
- def __repr__(self):
- """String representation of the current port settings and its state."""
- return "%s<id=0x%x, open=%s>(port=%r, baudrate=%r, bytesize=%r, parity=%r, stopbits=%r, timeout=%r, xonxoff=%r, rtscts=%r, dsrdtr=%r)" % (
- self.__class__.__name__,
- id(self),
- self._isOpen,
- self.portstr,
- self.baudrate,
- self.bytesize,
- self.parity,
- self.stopbits,
- self.timeout,
- self.xonxoff,
- self.rtscts,
- self.dsrdtr,
- )
-
-
- # - - - - - - - - - - - - - - - - - - - - - - - -
- # compatibility with io library
-
- def readable(self): return True
- def writable(self): return True
- def seekable(self): return False
- def readinto(self, b):
- data = self.read(len(b))
- n = len(data)
- try:
- b[:n] = data
- except TypeError, err:
- import array
- if not isinstance(b, array.array):
- raise err
- b[:n] = array.array('b', data)
- return n
-
-
-if __name__ == '__main__':
- import sys
- s = SerialBase()
- sys.stdout.write('port name: %s\n' % s.portstr)
- sys.stdout.write('baud rates: %s\n' % s.getSupportedBaudrates())
- sys.stdout.write('byte sizes: %s\n' % s.getSupportedByteSizes())
- sys.stdout.write('parities: %s\n' % s.getSupportedParities())
- sys.stdout.write('stop bits: %s\n' % s.getSupportedStopbits())
- sys.stdout.write('%s\n' % s)
diff --git a/lib/python2.7/site-packages/serial/serialwin32.py b/lib/python2.7/site-packages/serial/serialwin32.py
deleted file mode 100644
index dfdd953..0000000
--- a/lib/python2.7/site-packages/serial/serialwin32.py
+++ /dev/null
@@ -1,461 +0,0 @@
-#! python
-# Python Serial Port Extension for Win32, Linux, BSD, Jython
-# serial driver for win32
-# see __init__.py
-#
-# (C) 2001-2011 Chris Liechti <cliechti@gmx.net>
-# this is distributed under a free software license, see license.txt
-#
-# Initial patch to use ctypes by Giovanni Bajo <rasky@develer.com>
-
-import ctypes
-from serial import win32
-
-from serial.serialutil import *
-
-
-def device(portnum):
- """Turn a port number into a device name"""
- return 'COM%d' % (portnum+1) # numbers are transformed to a string
-
-
-class Win32Serial(SerialBase):
- """Serial port implementation for Win32 based on ctypes."""
-
- BAUDRATES = (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800,
- 9600, 19200, 38400, 57600, 115200)
-
- def __init__(self, *args, **kwargs):
- self.hComPort = None
- self._overlappedRead = None
- self._overlappedWrite = None
- self._rtsToggle = False
-
- self._rtsState = win32.RTS_CONTROL_ENABLE
- self._dtrState = win32.DTR_CONTROL_ENABLE
-
-
- SerialBase.__init__(self, *args, **kwargs)
-
- def open(self):
- """Open port with current settings. This may throw a SerialException
- if the port cannot be opened."""
- if self._port is None:
- raise SerialException("Port must be configured before it can be used.")
- if self._isOpen:
- raise SerialException("Port is already open.")
- # the "\\.\COMx" format is required for devices other than COM1-COM8
- # not all versions of windows seem to support this properly
- # so that the first few ports are used with the DOS device name
- port = self.portstr
- try:
- if port.upper().startswith('COM') and int(port[3:]) > 8:
- port = '\\\\.\\' + port
- except ValueError:
- # for like COMnotanumber
- pass
- self.hComPort = win32.CreateFile(port,
- win32.GENERIC_READ | win32.GENERIC_WRITE,
- 0, # exclusive access
- None, # no security
- win32.OPEN_EXISTING,
- win32.FILE_ATTRIBUTE_NORMAL | win32.FILE_FLAG_OVERLAPPED,
- 0)
- if self.hComPort == win32.INVALID_HANDLE_VALUE:
- self.hComPort = None # 'cause __del__ is called anyway
- raise SerialException("could not open port %r: %r" % (self.portstr, ctypes.WinError()))
-
- try:
- self._overlappedRead = win32.OVERLAPPED()
- self._overlappedRead.hEvent = win32.CreateEvent(None, 1, 0, None)
- self._overlappedWrite = win32.OVERLAPPED()
- #~ self._overlappedWrite.hEvent = win32.CreateEvent(None, 1, 0, None)
- self._overlappedWrite.hEvent = win32.CreateEvent(None, 0, 0, None)
-
- # Setup a 4k buffer
- win32.SetupComm(self.hComPort, 4096, 4096)
-
- # Save original timeout values:
- self._orgTimeouts = win32.COMMTIMEOUTS()
- win32.GetCommTimeouts(self.hComPort, ctypes.byref(self._orgTimeouts))
-
- self._reconfigurePort()
-
- # Clear buffers:
- # Remove anything that was there
- win32.PurgeComm(self.hComPort,
- win32.PURGE_TXCLEAR | win32.PURGE_TXABORT |
- win32.PURGE_RXCLEAR | win32.PURGE_RXABORT)
- except:
- try:
- self._close()
- except:
- # ignore any exception when closing the port
- # also to keep original exception that happened when setting up
- pass
- self.hComPort = None
- raise
- else:
- self._isOpen = True
-
-
- def _reconfigurePort(self):
- """Set communication parameters on opened port."""
- if not self.hComPort:
- raise SerialException("Can only operate on a valid port handle")
-
- # Set Windows timeout values
- # timeouts is a tuple with the following items:
- # (ReadIntervalTimeout,ReadTotalTimeoutMultiplier,
- # ReadTotalTimeoutConstant,WriteTotalTimeoutMultiplier,
- # WriteTotalTimeoutConstant)
- if self._timeout is None:
- timeouts = (0, 0, 0, 0, 0)
- elif self._timeout == 0:
- timeouts = (win32.MAXDWORD, 0, 0, 0, 0)
- else:
- timeouts = (0, 0, int(self._timeout*1000), 0, 0)
- if self._timeout != 0 and self._interCharTimeout is not None:
- timeouts = (int(self._interCharTimeout * 1000),) + timeouts[1:]
-
- if self._writeTimeout is None:
- pass
- elif self._writeTimeout == 0:
- timeouts = timeouts[:-2] + (0, win32.MAXDWORD)
- else:
- timeouts = timeouts[:-2] + (0, int(self._writeTimeout*1000))
- win32.SetCommTimeouts(self.hComPort, ctypes.byref(win32.COMMTIMEOUTS(*timeouts)))
-
- win32.SetCommMask(self.hComPort, win32.EV_ERR)
-
- # Setup the connection info.
- # Get state and modify it:
- comDCB = win32.DCB()
- win32.GetCommState(self.hComPort, ctypes.byref(comDCB))
- comDCB.BaudRate = self._baudrate
-
- if self._bytesize == FIVEBITS:
- comDCB.ByteSize = 5
- elif self._bytesize == SIXBITS:
- comDCB.ByteSize = 6
- elif self._bytesize == SEVENBITS:
- comDCB.ByteSize = 7
- elif self._bytesize == EIGHTBITS:
- comDCB.ByteSize = 8
- else:
- raise ValueError("Unsupported number of data bits: %r" % self._bytesize)
-
- if self._parity == PARITY_NONE:
- comDCB.Parity = win32.NOPARITY
- comDCB.fParity = 0 # Disable Parity Check
- elif self._parity == PARITY_EVEN:
- comDCB.Parity = win32.EVENPARITY
- comDCB.fParity = 1 # Enable Parity Check
- elif self._parity == PARITY_ODD:
- comDCB.Parity = win32.ODDPARITY
- comDCB.fParity = 1 # Enable Parity Check
- elif self._parity == PARITY_MARK:
- comDCB.Parity = win32.MARKPARITY
- comDCB.fParity = 1 # Enable Parity Check
- elif self._parity == PARITY_SPACE:
- comDCB.Parity = win32.SPACEPARITY
- comDCB.fParity = 1 # Enable Parity Check
- else:
- raise ValueError("Unsupported parity mode: %r" % self._parity)
-
- if self._stopbits == STOPBITS_ONE:
- comDCB.StopBits = win32.ONESTOPBIT
- elif self._stopbits == STOPBITS_ONE_POINT_FIVE:
- comDCB.StopBits = win32.ONE5STOPBITS
- elif self._stopbits == STOPBITS_TWO:
- comDCB.StopBits = win32.TWOSTOPBITS
- else:
- raise ValueError("Unsupported number of stop bits: %r" % self._stopbits)
-
- comDCB.fBinary = 1 # Enable Binary Transmission
- # Char. w/ Parity-Err are replaced with 0xff (if fErrorChar is set to TRUE)
- if self._rtscts:
- comDCB.fRtsControl = win32.RTS_CONTROL_HANDSHAKE
- elif self._rtsToggle:
- comDCB.fRtsControl = win32.RTS_CONTROL_TOGGLE
- else:
- comDCB.fRtsControl = self._rtsState
- if self._dsrdtr:
- comDCB.fDtrControl = win32.DTR_CONTROL_HANDSHAKE
- else:
- comDCB.fDtrControl = self._dtrState
-
- if self._rtsToggle:
- comDCB.fOutxCtsFlow = 0
- else:
- comDCB.fOutxCtsFlow = self._rtscts
- comDCB.fOutxDsrFlow = self._dsrdtr
- comDCB.fOutX = self._xonxoff
- comDCB.fInX = self._xonxoff
- comDCB.fNull = 0
- comDCB.fErrorChar = 0
- comDCB.fAbortOnError = 0
- comDCB.XonChar = XON
- comDCB.XoffChar = XOFF
-
- if not win32.SetCommState(self.hComPort, ctypes.byref(comDCB)):
- raise ValueError("Cannot configure port, some setting was wrong. Original message: %r" % ctypes.WinError())
-
- #~ def __del__(self):
- #~ self.close()
-
-
- def _close(self):
- """internal close port helper"""
- if self.hComPort:
- # Restore original timeout values:
- win32.SetCommTimeouts(self.hComPort, self._orgTimeouts)
- # Close COM-Port:
- win32.CloseHandle(self.hComPort)
- if self._overlappedRead is not None:
- win32.CloseHandle(self._overlappedRead.hEvent)
- self._overlappedRead = None
- if self._overlappedWrite is not None:
- win32.CloseHandle(self._overlappedWrite.hEvent)
- self._overlappedWrite = None
- self.hComPort = None
-
- def close(self):
- """Close port"""
- if self._isOpen:
- self._close()
- self._isOpen = False
-
- def makeDeviceName(self, port):
- return device(port)
-
- # - - - - - - - - - - - - - - - - - - - - - - - -
-
- def inWaiting(self):
- """Return the number of characters currently in the input buffer."""
- flags = win32.DWORD()
- comstat = win32.COMSTAT()
- if not win32.ClearCommError(self.hComPort, ctypes.byref(flags), ctypes.byref(comstat)):
- raise SerialException('call to ClearCommError failed')
- return comstat.cbInQue
-
- def read(self, size=1):
- """Read size bytes from the serial port. If a timeout is set it may
- return less characters as requested. With no timeout it will block
- until the requested number of bytes is read."""
- if not self.hComPort: raise portNotOpenError
- if size > 0:
- win32.ResetEvent(self._overlappedRead.hEvent)
- flags = win32.DWORD()
- comstat = win32.COMSTAT()
- if not win32.ClearCommError(self.hComPort, ctypes.byref(flags), ctypes.byref(comstat)):
- raise SerialException('call to ClearCommError failed')
- if self.timeout == 0:
- n = min(comstat.cbInQue, size)
- if n > 0:
- buf = ctypes.create_string_buffer(n)
- rc = win32.DWORD()
- err = win32.ReadFile(self.hComPort, buf, n, ctypes.byref(rc), ctypes.byref(self._overlappedRead))
- if not err and win32.GetLastError() != win32.ERROR_IO_PENDING:
- raise SerialException("ReadFile failed (%r)" % ctypes.WinError())
- err = win32.WaitForSingleObject(self._overlappedRead.hEvent, win32.INFINITE)
- read = buf.raw[:rc.value]
- else:
- read = bytes()
- else:
- buf = ctypes.create_string_buffer(size)
- rc = win32.DWORD()
- err = win32.ReadFile(self.hComPort, buf, size, ctypes.byref(rc), ctypes.byref(self._overlappedRead))
- if not err and win32.GetLastError() != win32.ERROR_IO_PENDING:
- raise SerialException("ReadFile failed (%r)" % ctypes.WinError())
- err = win32.GetOverlappedResult(self.hComPort, ctypes.byref(self._overlappedRead), ctypes.byref(rc), True)
- read = buf.raw[:rc.value]
- else:
- read = bytes()
- return bytes(read)
-
- def write(self, data):
- """Output the given string over the serial port."""
- if not self.hComPort: raise portNotOpenError
- #~ if not isinstance(data, (bytes, bytearray)):
- #~ raise TypeError('expected %s or bytearray, got %s' % (bytes, type(data)))
- # convert data (needed in case of memoryview instance: Py 3.1 io lib), ctypes doesn't like memoryview
- data = to_bytes(data)
- if data:
- #~ win32event.ResetEvent(self._overlappedWrite.hEvent)
- n = win32.DWORD()
- err = win32.WriteFile(self.hComPort, data, len(data), ctypes.byref(n), self._overlappedWrite)
- if not err and win32.GetLastError() != win32.ERROR_IO_PENDING:
- raise SerialException("WriteFile failed (%r)" % ctypes.WinError())
- if self._writeTimeout != 0: # if blocking (None) or w/ write timeout (>0)
- # Wait for the write to complete.
- #~ win32.WaitForSingleObject(self._overlappedWrite.hEvent, win32.INFINITE)
- err = win32.GetOverlappedResult(self.hComPort, self._overlappedWrite, ctypes.byref(n), True)
- if n.value != len(data):
- raise writeTimeoutError
- return n.value
- else:
- return 0
-
- def flush(self):
- """Flush of file like objects. In this case, wait until all data
- is written."""
- while self.outWaiting():
- time.sleep(0.05)
- # XXX could also use WaitCommEvent with mask EV_TXEMPTY, but it would
- # require overlapped IO and its also only possible to set a single mask
- # on the port---
-
- def flushInput(self):
- """Clear input buffer, discarding all that is in the buffer."""
- if not self.hComPort: raise portNotOpenError
- win32.PurgeComm(self.hComPort, win32.PURGE_RXCLEAR | win32.PURGE_RXABORT)
-
- def flushOutput(self):
- """Clear output buffer, aborting the current output and
- discarding all that is in the buffer."""
- if not self.hComPort: raise portNotOpenError
- win32.PurgeComm(self.hComPort, win32.PURGE_TXCLEAR | win32.PURGE_TXABORT)
-
- def sendBreak(self, duration=0.25):
- """Send break condition. Timed, returns to idle state after given duration."""
- if not self.hComPort: raise portNotOpenError
- import time
- win32.SetCommBreak(self.hComPort)
- time.sleep(duration)
- win32.ClearCommBreak(self.hComPort)
-
- def setBreak(self, level=1):
- """Set break: Controls TXD. When active, to transmitting is possible."""
- if not self.hComPort: raise portNotOpenError
- if level:
- win32.SetCommBreak(self.hComPort)
- else:
- win32.ClearCommBreak(self.hComPort)
-
- def setRTS(self, level=1):
- """Set terminal status line: Request To Send"""
- # remember level for reconfigure
- if level:
- self._rtsState = win32.RTS_CONTROL_ENABLE
- else:
- self._rtsState = win32.RTS_CONTROL_DISABLE
- # also apply now if port is open
- if self.hComPort:
- if level:
- win32.EscapeCommFunction(self.hComPort, win32.SETRTS)
- else:
- win32.EscapeCommFunction(self.hComPort, win32.CLRRTS)
-
- def setDTR(self, level=1):
- """Set terminal status line: Data Terminal Ready"""
- # remember level for reconfigure
- if level:
- self._dtrState = win32.DTR_CONTROL_ENABLE
- else:
- self._dtrState = win32.DTR_CONTROL_DISABLE
- # also apply now if port is open
- if self.hComPort:
- if level:
- win32.EscapeCommFunction(self.hComPort, win32.SETDTR)
- else:
- win32.EscapeCommFunction(self.hComPort, win32.CLRDTR)
-
- def _GetCommModemStatus(self):
- stat = win32.DWORD()
- win32.GetCommModemStatus(self.hComPort, ctypes.byref(stat))
- return stat.value
-
- def getCTS(self):
- """Read terminal status line: Clear To Send"""
- if not self.hComPort: raise portNotOpenError
- return win32.MS_CTS_ON & self._GetCommModemStatus() != 0
-
- def getDSR(self):
- """Read terminal status line: Data Set Ready"""
- if not self.hComPort: raise portNotOpenError
- return win32.MS_DSR_ON & self._GetCommModemStatus() != 0
-
- def getRI(self):
- """Read terminal status line: Ring Indicator"""
- if not self.hComPort: raise portNotOpenError
- return win32.MS_RING_ON & self._GetCommModemStatus() != 0
-
- def getCD(self):
- """Read terminal status line: Carrier Detect"""
- if not self.hComPort: raise portNotOpenError
- return win32.MS_RLSD_ON & self._GetCommModemStatus() != 0
-
- # - - platform specific - - - -
-
- def setBufferSize(self, rx_size=4096, tx_size=None):
- """\
- Recommend a buffer size to the driver (device driver can ignore this
- vlaue). Must be called before the port is opended.
- """
- if tx_size is None: tx_size = rx_size
- win32.SetupComm(self.hComPort, rx_size, tx_size)
-
- def setXON(self, level=True):
- """\
- Manually control flow - when software flow control is enabled.
- This will send XON (true) and XOFF (false) to the other device.
- WARNING: this function is not portable to different platforms!
- """
- if not self.hComPort: raise portNotOpenError
- if level:
- win32.EscapeCommFunction(self.hComPort, win32.SETXON)
- else:
- win32.EscapeCommFunction(self.hComPort, win32.SETXOFF)
-
- def outWaiting(self):
- """return how many characters the in the outgoing buffer"""
- flags = win32.DWORD()
- comstat = win32.COMSTAT()
- if not win32.ClearCommError(self.hComPort, ctypes.byref(flags), ctypes.byref(comstat)):
- raise SerialException('call to ClearCommError failed')
- return comstat.cbOutQue
-
- # functions useful for RS-485 adapters
- def setRtsToggle(self, rtsToggle):
- """Change RTS toggle control setting."""
- self._rtsToggle = rtsToggle
- if self._isOpen: self._reconfigurePort()
-
- def getRtsToggle(self):
- """Get the current RTS toggle control setting."""
- return self._rtsToggle
-
- rtsToggle = property(getRtsToggle, setRtsToggle, doc="RTS toggle control setting")
-
-
-# assemble Serial class with the platform specific implementation and the base
-# for file-like behavior. for Python 2.6 and newer, that provide the new I/O
-# library, derive from io.RawIOBase
-try:
- import io
-except ImportError:
- # classic version with our own file-like emulation
- class Serial(Win32Serial, FileLike):
- pass
-else:
- # io library present
- class Serial(Win32Serial, io.RawIOBase):
- pass
-
-
-# Nur Testfunktion!!
-if __name__ == '__main__':
- s = Serial(0)
- sys.stdout.write("%s\n" % s)
-
- s = Serial()
- sys.stdout.write("%s\n" % s)
-
- s.baudrate = 19200
- s.databits = 7
- s.close()
- s.port = 0
- s.open()
- sys.stdout.write("%s\n" % s)
-
diff --git a/lib/python2.7/site-packages/serial/sermsdos.py b/lib/python2.7/site-packages/serial/sermsdos.py
deleted file mode 100644
index 09a0017..0000000
--- a/lib/python2.7/site-packages/serial/sermsdos.py
+++ /dev/null
@@ -1,200 +0,0 @@
-# sermsdos.py
-#
-# History:
-#
-# 3rd September 2002 Dave Haynes
-# 1. First defined
-#
-# Although this code should run under the latest versions of
-# Python, on DOS-based platforms such as Windows 95 and 98,
-# it has been specifically written to be compatible with
-# PyDOS, available at:
-# http://www.python.org/ftp/python/wpy/dos.html
-#
-# PyDOS is a stripped-down version of Python 1.5.2 for
-# DOS machines. Therefore, in making changes to this file,
-# please respect Python 1.5.2 syntax. In addition, please
-# limit the width of this file to 60 characters.
-#
-# Note also that the modules in PyDOS contain fewer members
-# than other versions, so we are restricted to using the
-# following:
-#
-# In module os:
-# -------------
-# environ, chdir, getcwd, getpid, umask, fdopen, close,
-# dup, dup2, fstat, lseek, open, read, write, O_RDONLY,
-# O_WRONLY, O_RDWR, O_APPEND, O_CREAT, O_EXCL, O_TRUNC,
-# access, F_OK, R_OK, W_OK, X_OK, chmod, listdir, mkdir,
-# remove, rename, renames, rmdir, stat, unlink, utime,
-# execl, execle, execlp, execlpe, execvp, execvpe, _exit,
-# system.
-#
-# In module os.path:
-# ------------------
-# curdir, pardir, sep, altsep, pathsep, defpath, linesep.
-#
-
-import os
-import sys
-import string
-import serial.serialutil
-
-BAUD_RATES = {
- 110: "11",
- 150: "15",
- 300: "30",
- 600: "60",
- 1200: "12",
- 2400: "24",
- 4800: "48",
- 9600: "96",
- 19200: "19"}
-
-(PARITY_NONE, PARITY_EVEN, PARITY_ODD, PARITY_MARK,
-PARITY_SPACE) = (0, 1, 2, 3, 4)
-(STOPBITS_ONE, STOPBITS_ONEANDAHALF,
-STOPBITS_TWO) = (1, 1.5, 2)
-FIVEBITS, SIXBITS, SEVENBITS, EIGHTBITS = (5, 6, 7, 8)
-(RETURN_ERROR, RETURN_BUSY, RETURN_RETRY, RETURN_READY,
-RETURN_NONE) = ('E', 'B', 'P', 'R', 'N')
-portNotOpenError = ValueError('port not open')
-
-def device(portnum):
- return 'COM%d' % (portnum+1)
-
-class Serial(serialutil.FileLike):
- """
- port: number of device; numbering starts at
- zero. if everything fails, the user can
- specify a device string, note that this
- isn't portable any more
- baudrate: baud rate
- bytesize: number of databits
- parity: enable parity checking
- stopbits: number of stopbits
- timeout: set a timeout (None for waiting forever)
- xonxoff: enable software flow control
- rtscts: enable RTS/CTS flow control
- retry: DOS retry mode
- """
- def __init__(self,
- port,
- baudrate = 9600,
- bytesize = EIGHTBITS,
- parity = PARITY_NONE,
- stopbits = STOPBITS_ONE,
- timeout = None,
- xonxoff = 0,
- rtscts = 0,
- retry = RETURN_RETRY
- ):
-
- if type(port) == type(''):
- # strings are taken directly
- self.portstr = port
- else:
- # numbers are transformed to a string
- self.portstr = device(port+1)
-
- self.baud = BAUD_RATES[baudrate]
- self.bytesize = str(bytesize)
-
- if parity == PARITY_NONE:
- self.parity = 'N'
- elif parity == PARITY_EVEN:
- self.parity = 'E'
- elif parity == PARITY_ODD:
- self.parity = 'O'
- elif parity == PARITY_MARK:
- self.parity = 'M'
- elif parity == PARITY_SPACE:
- self.parity = 'S'
-
- self.stop = str(stopbits)
- self.retry = retry
- self.filename = "sermsdos.tmp"
-
- self._config(self.portstr, self.baud, self.parity,
- self.bytesize, self.stop, self.retry, self.filename)
-
- def __del__(self):
- self.close()
-
- def close(self):
- pass
-
- def _config(self, port, baud, parity, data, stop, retry,
- filename):
- comString = string.join(("MODE ", port, ":"
- , " BAUD= ", baud, " PARITY= ", parity
- , " DATA= ", data, " STOP= ", stop, " RETRY= ",
- retry, " > ", filename ), '')
- os.system(comString)
-
- def setBaudrate(self, baudrate):
- self._config(self.portstr, BAUD_RATES[baudrate],
- self.parity, self.bytesize, self.stop, self.retry,
- self.filename)
-
- def inWaiting(self):
- """returns the number of bytes waiting to be read"""
- raise NotImplementedError
-
- def read(self, num = 1):
- """Read num bytes from serial port"""
- handle = os.open(self.portstr,
- os.O_RDONLY | os.O_BINARY)
- rv = os.read(handle, num)
- os.close(handle)
- return rv
-
- def write(self, s):
- """Write string to serial port"""
- handle = os.open(self.portstr,
- os.O_WRONLY | os.O_BINARY)
- rv = os.write(handle, s)
- os.close(handle)
- return rv
-
- def flushInput(self):
- raise NotImplementedError
-
- def flushOutput(self):
- raise NotImplementedError
-
- def sendBreak(self):
- raise NotImplementedError
-
- def setRTS(self,level=1):
- """Set terminal status line"""
- raise NotImplementedError
-
- def setDTR(self,level=1):
- """Set terminal status line"""
- raise NotImplementedError
-
- def getCTS(self):
- """Eead terminal status line"""
- raise NotImplementedError
-
- def getDSR(self):
- """Eead terminal status line"""
- raise NotImplementedError
-
- def getRI(self):
- """Eead terminal status line"""
- raise NotImplementedError
-
- def getCD(self):
- """Eead terminal status line"""
- raise NotImplementedError
-
- def __repr__(self):
- return string.join(( "<Serial>: ", self.portstr
- , self.baud, self.parity, self.bytesize, self.stop,
- self.retry , self.filename), ' ')
-
-if __name__ == '__main__':
- s = Serial(0)
- sys.stdio.write('%s %s\n' % (__name__, s))
diff --git a/lib/python2.7/site-packages/serial/tools/__init__.py b/lib/python2.7/site-packages/serial/tools/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/serial/tools/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/serial/tools/list_ports.py b/lib/python2.7/site-packages/serial/tools/list_ports.py
deleted file mode 100644
index d373a55..0000000
--- a/lib/python2.7/site-packages/serial/tools/list_ports.py
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/usr/bin/env python
-
-# portable serial port access with python
-# this is a wrapper module for different platform implementations of the
-# port enumeration feature
-#
-# (C) 2011-2013 Chris Liechti <cliechti@gmx.net>
-# this is distributed under a free software license, see license.txt
-
-"""\
-This module will provide a function called comports that returns an
-iterable (generator or list) that will enumerate available com ports. Note that
-on some systems non-existent ports may be listed.
-
-Additionally a grep function is supplied that can be used to search for ports
-based on their descriptions or hardware ID.
-"""
-
-import sys, os, re
-
-# chose an implementation, depending on os
-#~ if sys.platform == 'cli':
-#~ else:
-import os
-# chose an implementation, depending on os
-if os.name == 'nt': #sys.platform == 'win32':
- from serial.tools.list_ports_windows import *
-elif os.name == 'posix':
- from serial.tools.list_ports_posix import *
-#~ elif os.name == 'java':
-else:
- raise ImportError("Sorry: no implementation for your platform ('%s') available" % (os.name,))
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-def grep(regexp):
- """\
- Search for ports using a regular expression. Port name, description and
- hardware ID are searched. The function returns an iterable that returns the
- same tuples as comport() would do.
- """
- r = re.compile(regexp, re.I)
- for port, desc, hwid in comports():
- if r.search(port) or r.search(desc) or r.search(hwid):
- yield port, desc, hwid
-
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-def main():
- import optparse
-
- parser = optparse.OptionParser(
- usage = "%prog [options] [<regexp>]",
- description = "Miniterm - A simple terminal program for the serial port."
- )
-
- parser.add_option("--debug",
- help="print debug messages and tracebacks (development mode)",
- dest="debug",
- default=False,
- action='store_true')
-
- parser.add_option("-v", "--verbose",
- help="show more messages (can be given multiple times)",
- dest="verbose",
- default=1,
- action='count')
-
- parser.add_option("-q", "--quiet",
- help="suppress all messages",
- dest="verbose",
- action='store_const',
- const=0)
-
- (options, args) = parser.parse_args()
-
-
- hits = 0
- # get iteraror w/ or w/o filter
- if args:
- if len(args) > 1:
- parser.error('more than one regexp not supported')
- print "Filtered list with regexp: %r" % (args[0],)
- iterator = sorted(grep(args[0]))
- else:
- iterator = sorted(comports())
- # list them
- for port, desc, hwid in iterator:
- print("%-20s" % (port,))
- if options.verbose > 1:
- print(" desc: %s" % (desc,))
- print(" hwid: %s" % (hwid,))
- hits += 1
- if options.verbose:
- if hits:
- print("%d ports found" % (hits,))
- else:
- print("no ports found")
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-# test
-if __name__ == '__main__':
- main()
diff --git a/lib/python2.7/site-packages/serial/tools/list_ports_linux.py b/lib/python2.7/site-packages/serial/tools/list_ports_linux.py
deleted file mode 100644
index 0a23e09..0000000
--- a/lib/python2.7/site-packages/serial/tools/list_ports_linux.py
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/usr/bin/env python
-
-# portable serial port access with python
-#
-# This is a module that gathers a list of serial ports including details on
-# GNU/Linux systems
-#
-# (C) 2011-2013 Chris Liechti <cliechti@gmx.net>
-# this is distributed under a free software license, see license.txt
-
-import glob
-import sys
-import os
-import re
-
-try:
- import subprocess
-except ImportError:
- def popen(argv):
- try:
- si, so = os.popen4(' '.join(argv))
- return so.read().strip()
- except:
- raise IOError('lsusb failed')
-else:
- def popen(argv):
- try:
- return subprocess.check_output(argv, stderr=subprocess.STDOUT).strip()
- except:
- raise IOError('lsusb failed')
-
-
-# The comports function is expected to return an iterable that yields tuples of
-# 3 strings: port name, human readable description and a hardware ID.
-#
-# as currently no method is known to get the second two strings easily, they
-# are currently just identical to the port name.
-
-# try to detect the OS so that a device can be selected...
-plat = sys.platform.lower()
-
-def read_line(filename):
- """help function to read a single line from a file. returns none"""
- try:
- f = open(filename)
- line = f.readline().strip()
- f.close()
- return line
- except IOError:
- return None
-
-def re_group(regexp, text):
- """search for regexp in text, return 1st group on match"""
- if sys.version < '3':
- m = re.search(regexp, text)
- else:
- # text is bytes-like
- m = re.search(regexp, text.decode('ascii', 'replace'))
- if m: return m.group(1)
-
-
-# try to extract descriptions from sysfs. this was done by experimenting,
-# no guarantee that it works for all devices or in the future...
-
-def usb_sysfs_hw_string(sysfs_path):
- """given a path to a usb device in sysfs, return a string describing it"""
- bus, dev = os.path.basename(os.path.realpath(sysfs_path)).split('-')
- snr = read_line(sysfs_path+'/serial')
- if snr:
- snr_txt = ' SNR=%s' % (snr,)
- else:
- snr_txt = ''
- return 'USB VID:PID=%s:%s%s' % (
- read_line(sysfs_path+'/idVendor'),
- read_line(sysfs_path+'/idProduct'),
- snr_txt
- )
-
-def usb_lsusb_string(sysfs_path):
- base = os.path.basename(os.path.realpath(sysfs_path))
- bus = base.split('-')[0]
- try:
- dev = int(read_line(os.path.join(sysfs_path, 'devnum')))
- desc = popen(['lsusb', '-v', '-s', '%s:%s' % (bus, dev)])
- # descriptions from device
- iManufacturer = re_group('iManufacturer\s+\w+ (.+)', desc)
- iProduct = re_group('iProduct\s+\w+ (.+)', desc)
- iSerial = re_group('iSerial\s+\w+ (.+)', desc) or ''
- # descriptions from kernel
- idVendor = re_group('idVendor\s+0x\w+ (.+)', desc)
- idProduct = re_group('idProduct\s+0x\w+ (.+)', desc)
- # create descriptions. prefer text from device, fall back to the others
- return '%s %s %s' % (iManufacturer or idVendor, iProduct or idProduct, iSerial)
- except IOError:
- return base
-
-def describe(device):
- """\
- Get a human readable description.
- For USB-Serial devices try to run lsusb to get a human readable description.
- For USB-CDC devices read the description from sysfs.
- """
- base = os.path.basename(device)
- # USB-Serial devices
- sys_dev_path = '/sys/class/tty/%s/device/driver/%s' % (base, base)
- if os.path.exists(sys_dev_path):
- sys_usb = os.path.dirname(os.path.dirname(os.path.realpath(sys_dev_path)))
- return usb_lsusb_string(sys_usb)
- # USB-CDC devices
- sys_dev_path = '/sys/class/tty/%s/device/interface' % (base,)
- if os.path.exists(sys_dev_path):
- return read_line(sys_dev_path)
- return base
-
-def hwinfo(device):
- """Try to get a HW identification using sysfs"""
- base = os.path.basename(device)
- if os.path.exists('/sys/class/tty/%s/device' % (base,)):
- # PCI based devices
- sys_id_path = '/sys/class/tty/%s/device/id' % (base,)
- if os.path.exists(sys_id_path):
- return read_line(sys_id_path)
- # USB-Serial devices
- sys_dev_path = '/sys/class/tty/%s/device/driver/%s' % (base, base)
- if os.path.exists(sys_dev_path):
- sys_usb = os.path.dirname(os.path.dirname(os.path.realpath(sys_dev_path)))
- return usb_sysfs_hw_string(sys_usb)
- # USB-CDC devices
- if base.startswith('ttyACM'):
- sys_dev_path = '/sys/class/tty/%s/device' % (base,)
- if os.path.exists(sys_dev_path):
- return usb_sysfs_hw_string(sys_dev_path + '/..')
- return 'n/a' # XXX directly remove these from the list?
-
-def comports():
- devices = glob.glob('/dev/ttyS*') + glob.glob('/dev/ttyUSB*') + glob.glob('/dev/ttyACM*')
- return [(d, describe(d), hwinfo(d)) for d in devices]
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-# test
-if __name__ == '__main__':
- for port, desc, hwid in sorted(comports()):
- print "%s: %s [%s]" % (port, desc, hwid)
diff --git a/lib/python2.7/site-packages/serial/tools/list_ports_osx.py b/lib/python2.7/site-packages/serial/tools/list_ports_osx.py
deleted file mode 100644
index c9ed615..0000000
--- a/lib/python2.7/site-packages/serial/tools/list_ports_osx.py
+++ /dev/null
@@ -1,208 +0,0 @@
-#!/usr/bin/env python
-
-# portable serial port access with python
-#
-# This is a module that gathers a list of serial ports including details on OSX
-#
-# code originally from https://github.com/makerbot/pyserial/tree/master/serial/tools
-# with contributions from cibomahto, dgs3, FarMcKon, tedbrandston
-# and modifications by cliechti
-#
-# this is distributed under a free software license, see license.txt
-
-
-
-# List all of the callout devices in OS/X by querying IOKit.
-
-# See the following for a reference of how to do this:
-# http://developer.apple.com/library/mac/#documentation/DeviceDrivers/Conceptual/WorkingWSerial/WWSerial_SerialDevs/SerialDevices.html#//apple_ref/doc/uid/TP30000384-CIHGEAFD
-
-# More help from darwin_hid.py
-
-# Also see the 'IORegistryExplorer' for an idea of what we are actually searching
-
-import ctypes
-from ctypes import util
-import re
-
-iokit = ctypes.cdll.LoadLibrary(ctypes.util.find_library('IOKit'))
-cf = ctypes.cdll.LoadLibrary(ctypes.util.find_library('CoreFoundation'))
-
-kIOMasterPortDefault = ctypes.c_void_p.in_dll(iokit, "kIOMasterPortDefault")
-kCFAllocatorDefault = ctypes.c_void_p.in_dll(cf, "kCFAllocatorDefault")
-
-kCFStringEncodingMacRoman = 0
-
-iokit.IOServiceMatching.restype = ctypes.c_void_p
-
-iokit.IOServiceGetMatchingServices.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p]
-iokit.IOServiceGetMatchingServices.restype = ctypes.c_void_p
-
-iokit.IORegistryEntryGetParentEntry.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p]
-
-iokit.IORegistryEntryCreateCFProperty.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p, ctypes.c_uint32]
-iokit.IORegistryEntryCreateCFProperty.restype = ctypes.c_void_p
-
-iokit.IORegistryEntryGetPath.argtypes = [ctypes.c_void_p, ctypes.c_void_p, ctypes.c_void_p]
-iokit.IORegistryEntryGetPath.restype = ctypes.c_void_p
-
-iokit.IORegistryEntryGetName.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
-iokit.IORegistryEntryGetName.restype = ctypes.c_void_p
-
-iokit.IOObjectGetClass.argtypes = [ctypes.c_void_p, ctypes.c_void_p]
-iokit.IOObjectGetClass.restype = ctypes.c_void_p
-
-iokit.IOObjectRelease.argtypes = [ctypes.c_void_p]
-
-
-cf.CFStringCreateWithCString.argtypes = [ctypes.c_void_p, ctypes.c_char_p, ctypes.c_int32]
-cf.CFStringCreateWithCString.restype = ctypes.c_void_p
-
-cf.CFStringGetCStringPtr.argtypes = [ctypes.c_void_p, ctypes.c_uint32]
-cf.CFStringGetCStringPtr.restype = ctypes.c_char_p
-
-cf.CFNumberGetValue.argtypes = [ctypes.c_void_p, ctypes.c_uint32, ctypes.c_void_p]
-cf.CFNumberGetValue.restype = ctypes.c_void_p
-
-def get_string_property(device_t, property):
- """ Search the given device for the specified string property
-
- @param device_t Device to search
- @param property String to search for.
- @return Python string containing the value, or None if not found.
- """
- key = cf.CFStringCreateWithCString(
- kCFAllocatorDefault,
- property.encode("mac_roman"),
- kCFStringEncodingMacRoman
- )
-
- CFContainer = iokit.IORegistryEntryCreateCFProperty(
- device_t,
- key,
- kCFAllocatorDefault,
- 0
- );
-
- output = None
-
- if CFContainer:
- output = cf.CFStringGetCStringPtr(CFContainer, 0)
-
- return output
-
-def get_int_property(device_t, property):
- """ Search the given device for the specified string property
-
- @param device_t Device to search
- @param property String to search for.
- @return Python string containing the value, or None if not found.
- """
- key = cf.CFStringCreateWithCString(
- kCFAllocatorDefault,
- property.encode("mac_roman"),
- kCFStringEncodingMacRoman
- )
-
- CFContainer = iokit.IORegistryEntryCreateCFProperty(
- device_t,
- key,
- kCFAllocatorDefault,
- 0
- );
-
- number = ctypes.c_uint16()
-
- if CFContainer:
- output = cf.CFNumberGetValue(CFContainer, 2, ctypes.byref(number))
-
- return number.value
-
-def IORegistryEntryGetName(device):
- pathname = ctypes.create_string_buffer(100) # TODO: Is this ok?
- iokit.IOObjectGetClass(
- device,
- ctypes.byref(pathname)
- )
-
- return pathname.value
-
-def GetParentDeviceByType(device, parent_type):
- """ Find the first parent of a device that implements the parent_type
- @param IOService Service to inspect
- @return Pointer to the parent type, or None if it was not found.
- """
- # First, try to walk up the IOService tree to find a parent of this device that is a IOUSBDevice.
- while IORegistryEntryGetName(device) != parent_type:
- parent = ctypes.c_void_p()
- response = iokit.IORegistryEntryGetParentEntry(
- device,
- "IOService".encode("mac_roman"),
- ctypes.byref(parent)
- )
-
- # If we weren't able to find a parent for the device, we're done.
- if response != 0:
- return None
-
- device = parent
-
- return device
-
-def GetIOServicesByType(service_type):
- """
- """
- serial_port_iterator = ctypes.c_void_p()
-
- response = iokit.IOServiceGetMatchingServices(
- kIOMasterPortDefault,
- iokit.IOServiceMatching(service_type),
- ctypes.byref(serial_port_iterator)
- )
-
- services = []
- while iokit.IOIteratorIsValid(serial_port_iterator):
- service = iokit.IOIteratorNext(serial_port_iterator)
- if not service:
- break
- services.append(service)
-
- iokit.IOObjectRelease(serial_port_iterator)
-
- return services
-
-def comports():
- # Scan for all iokit serial ports
- services = GetIOServicesByType('IOSerialBSDClient')
-
- ports = []
- for service in services:
- info = []
-
- # First, add the callout device file.
- info.append(get_string_property(service, "IOCalloutDevice"))
-
- # If the serial port is implemented by a
- usb_device = GetParentDeviceByType(service, "IOUSBDevice")
- if usb_device != None:
- info.append(get_string_property(usb_device, "USB Product Name"))
-
- info.append(
- "USB VID:PID=%x:%x SNR=%s"%(
- get_int_property(usb_device, "idVendor"),
- get_int_property(usb_device, "idProduct"),
- get_string_property(usb_device, "USB Serial Number"))
- )
- else:
- info.append('n/a')
- info.append('n/a')
-
- ports.append(info)
-
- return ports
-
-# test
-if __name__ == '__main__':
- for port, desc, hwid in sorted(comports()):
- print "%s: %s [%s]" % (port, desc, hwid)
-
diff --git a/lib/python2.7/site-packages/serial/tools/list_ports_posix.py b/lib/python2.7/site-packages/serial/tools/list_ports_posix.py
deleted file mode 100644
index 9d96e93..0000000
--- a/lib/python2.7/site-packages/serial/tools/list_ports_posix.py
+++ /dev/null
@@ -1,101 +0,0 @@
-#!/usr/bin/env python
-
-# portable serial port access with python
-
-# This is a module that gathers a list of serial ports on POSIXy systems.
-# For some specific implementations, see also list_ports_linux, list_ports_osx
-#
-# this is a wrapper module for different platform implementations of the
-# port enumeration feature
-#
-# (C) 2011-2013 Chris Liechti <cliechti@gmx.net>
-# this is distributed under a free software license, see license.txt
-
-"""\
-The ``comports`` function is expected to return an iterable that yields tuples
-of 3 strings: port name, human readable description and a hardware ID.
-
-As currently no method is known to get the second two strings easily, they are
-currently just identical to the port name.
-"""
-
-import glob
-import sys
-import os
-
-# try to detect the OS so that a device can be selected...
-plat = sys.platform.lower()
-
-if plat[:5] == 'linux': # Linux (confirmed)
- from serial.tools.list_ports_linux import comports
-
-elif plat == 'cygwin': # cygwin/win32
- def comports():
- devices = glob.glob('/dev/com*')
- return [(d, d, d) for d in devices]
-
-elif plat[:7] == 'openbsd': # OpenBSD
- def comports():
- devices = glob.glob('/dev/cua*')
- return [(d, d, d) for d in devices]
-
-elif plat[:3] == 'bsd' or \
- plat[:7] == 'freebsd':
-
- def comports():
- devices = glob.glob('/dev/cuad*')
- return [(d, d, d) for d in devices]
-
-elif plat[:6] == 'darwin': # OS X (confirmed)
- from serial.tools.list_ports_osx import comports
-
-elif plat[:6] == 'netbsd': # NetBSD
- def comports():
- """scan for available ports. return a list of device names."""
- devices = glob.glob('/dev/dty*')
- return [(d, d, d) for d in devices]
-
-elif plat[:4] == 'irix': # IRIX
- def comports():
- """scan for available ports. return a list of device names."""
- devices = glob.glob('/dev/ttyf*')
- return [(d, d, d) for d in devices]
-
-elif plat[:2] == 'hp': # HP-UX (not tested)
- def comports():
- """scan for available ports. return a list of device names."""
- devices = glob.glob('/dev/tty*p0')
- return [(d, d, d) for d in devices]
-
-elif plat[:5] == 'sunos': # Solaris/SunOS
- def comports():
- """scan for available ports. return a list of device names."""
- devices = glob.glob('/dev/tty*c')
- return [(d, d, d) for d in devices]
-
-elif plat[:3] == 'aix': # AIX
- def comports():
- """scan for available ports. return a list of device names."""
- devices = glob.glob('/dev/tty*')
- return [(d, d, d) for d in devices]
-
-else:
- # platform detection has failed...
- sys.stderr.write("""\
-don't know how to enumerate ttys on this system.
-! I you know how the serial ports are named send this information to
-! the author of this module:
-
-sys.platform = %r
-os.name = %r
-pySerial version = %s
-
-also add the naming scheme of the serial ports and with a bit luck you can get
-this module running...
-""" % (sys.platform, os.name, serial.VERSION))
- raise ImportError("Sorry: no implementation for your platform ('%s') available" % (os.name,))
-
-# test
-if __name__ == '__main__':
- for port, desc, hwid in sorted(comports()):
- print "%s: %s [%s]" % (port, desc, hwid)
diff --git a/lib/python2.7/site-packages/serial/tools/list_ports_windows.py b/lib/python2.7/site-packages/serial/tools/list_ports_windows.py
deleted file mode 100644
index cc770f7..0000000
--- a/lib/python2.7/site-packages/serial/tools/list_ports_windows.py
+++ /dev/null
@@ -1,240 +0,0 @@
-import ctypes
-import re
-
-def ValidHandle(value, func, arguments):
- if value == 0:
- raise ctypes.WinError()
- return value
-
-import serial
-from serial.win32 import ULONG_PTR, is_64bit
-from ctypes.wintypes import HANDLE
-from ctypes.wintypes import BOOL
-from ctypes.wintypes import HWND
-from ctypes.wintypes import DWORD
-from ctypes.wintypes import WORD
-from ctypes.wintypes import LONG
-from ctypes.wintypes import ULONG
-from ctypes.wintypes import LPCSTR
-from ctypes.wintypes import HKEY
-from ctypes.wintypes import BYTE
-
-NULL = 0
-HDEVINFO = ctypes.c_void_p
-PCTSTR = ctypes.c_char_p
-PTSTR = ctypes.c_void_p
-CHAR = ctypes.c_char
-LPDWORD = PDWORD = ctypes.POINTER(DWORD)
-#~ LPBYTE = PBYTE = ctypes.POINTER(BYTE)
-LPBYTE = PBYTE = ctypes.c_void_p # XXX avoids error about types
-
-ACCESS_MASK = DWORD
-REGSAM = ACCESS_MASK
-
-
-def byte_buffer(length):
- """Get a buffer for a string"""
- return (BYTE*length)()
-
-def string(buffer):
- s = []
- for c in buffer:
- if c == 0: break
- s.append(chr(c & 0xff)) # "& 0xff": hack to convert signed to unsigned
- return ''.join(s)
-
-
-class GUID(ctypes.Structure):
- _fields_ = [
- ('Data1', DWORD),
- ('Data2', WORD),
- ('Data3', WORD),
- ('Data4', BYTE*8),
- ]
- def __str__(self):
- return "{%08x-%04x-%04x-%s-%s}" % (
- self.Data1,
- self.Data2,
- self.Data3,
- ''.join(["%02x" % d for d in self.Data4[:2]]),
- ''.join(["%02x" % d for d in self.Data4[2:]]),
- )
-
-class SP_DEVINFO_DATA(ctypes.Structure):
- _fields_ = [
- ('cbSize', DWORD),
- ('ClassGuid', GUID),
- ('DevInst', DWORD),
- ('Reserved', ULONG_PTR),
- ]
- def __str__(self):
- return "ClassGuid:%s DevInst:%s" % (self.ClassGuid, self.DevInst)
-PSP_DEVINFO_DATA = ctypes.POINTER(SP_DEVINFO_DATA)
-
-PSP_DEVICE_INTERFACE_DETAIL_DATA = ctypes.c_void_p
-
-setupapi = ctypes.windll.LoadLibrary("setupapi")
-SetupDiDestroyDeviceInfoList = setupapi.SetupDiDestroyDeviceInfoList
-SetupDiDestroyDeviceInfoList.argtypes = [HDEVINFO]
-SetupDiDestroyDeviceInfoList.restype = BOOL
-
-SetupDiClassGuidsFromName = setupapi.SetupDiClassGuidsFromNameA
-SetupDiClassGuidsFromName.argtypes = [PCTSTR, ctypes.POINTER(GUID), DWORD, PDWORD]
-SetupDiClassGuidsFromName.restype = BOOL
-
-SetupDiEnumDeviceInfo = setupapi.SetupDiEnumDeviceInfo
-SetupDiEnumDeviceInfo.argtypes = [HDEVINFO, DWORD, PSP_DEVINFO_DATA]
-SetupDiEnumDeviceInfo.restype = BOOL
-
-SetupDiGetClassDevs = setupapi.SetupDiGetClassDevsA
-SetupDiGetClassDevs.argtypes = [ctypes.POINTER(GUID), PCTSTR, HWND, DWORD]
-SetupDiGetClassDevs.restype = HDEVINFO
-SetupDiGetClassDevs.errcheck = ValidHandle
-
-SetupDiGetDeviceRegistryProperty = setupapi.SetupDiGetDeviceRegistryPropertyA
-SetupDiGetDeviceRegistryProperty.argtypes = [HDEVINFO, PSP_DEVINFO_DATA, DWORD, PDWORD, PBYTE, DWORD, PDWORD]
-SetupDiGetDeviceRegistryProperty.restype = BOOL
-
-SetupDiGetDeviceInstanceId = setupapi.SetupDiGetDeviceInstanceIdA
-SetupDiGetDeviceInstanceId.argtypes = [HDEVINFO, PSP_DEVINFO_DATA, PTSTR, DWORD, PDWORD]
-SetupDiGetDeviceInstanceId.restype = BOOL
-
-SetupDiOpenDevRegKey = setupapi.SetupDiOpenDevRegKey
-SetupDiOpenDevRegKey.argtypes = [HDEVINFO, PSP_DEVINFO_DATA, DWORD, DWORD, DWORD, REGSAM]
-SetupDiOpenDevRegKey.restype = HKEY
-
-advapi32 = ctypes.windll.LoadLibrary("Advapi32")
-RegCloseKey = advapi32.RegCloseKey
-RegCloseKey.argtypes = [HKEY]
-RegCloseKey.restype = LONG
-
-RegQueryValueEx = advapi32.RegQueryValueExA
-RegQueryValueEx.argtypes = [HKEY, LPCSTR, LPDWORD, LPDWORD, LPBYTE, LPDWORD]
-RegQueryValueEx.restype = LONG
-
-
-DIGCF_PRESENT = 2
-DIGCF_DEVICEINTERFACE = 16
-INVALID_HANDLE_VALUE = 0
-ERROR_INSUFFICIENT_BUFFER = 122
-SPDRP_HARDWAREID = 1
-SPDRP_FRIENDLYNAME = 12
-DICS_FLAG_GLOBAL = 1
-DIREG_DEV = 0x00000001
-KEY_READ = 0x20019
-
-# workaround for compatibility between Python 2.x and 3.x
-Ports = serial.to_bytes([80, 111, 114, 116, 115]) # "Ports"
-PortName = serial.to_bytes([80, 111, 114, 116, 78, 97, 109, 101]) # "PortName"
-
-def comports():
- GUIDs = (GUID*8)() # so far only seen one used, so hope 8 are enough...
- guids_size = DWORD()
- if not SetupDiClassGuidsFromName(
- Ports,
- GUIDs,
- ctypes.sizeof(GUIDs),
- ctypes.byref(guids_size)):
- raise ctypes.WinError()
-
- # repeat for all possible GUIDs
- for index in range(guids_size.value):
- g_hdi = SetupDiGetClassDevs(
- ctypes.byref(GUIDs[index]),
- None,
- NULL,
- DIGCF_PRESENT) # was DIGCF_PRESENT|DIGCF_DEVICEINTERFACE which misses CDC ports
-
- devinfo = SP_DEVINFO_DATA()
- devinfo.cbSize = ctypes.sizeof(devinfo)
- index = 0
- while SetupDiEnumDeviceInfo(g_hdi, index, ctypes.byref(devinfo)):
- index += 1
-
- # get the real com port name
- hkey = SetupDiOpenDevRegKey(
- g_hdi,
- ctypes.byref(devinfo),
- DICS_FLAG_GLOBAL,
- 0,
- DIREG_DEV, # DIREG_DRV for SW info
- KEY_READ)
- port_name_buffer = byte_buffer(250)
- port_name_length = ULONG(ctypes.sizeof(port_name_buffer))
- RegQueryValueEx(
- hkey,
- PortName,
- None,
- None,
- ctypes.byref(port_name_buffer),
- ctypes.byref(port_name_length))
- RegCloseKey(hkey)
-
- # unfortunately does this method also include parallel ports.
- # we could check for names starting with COM or just exclude LPT
- # and hope that other "unknown" names are serial ports...
- if string(port_name_buffer).startswith('LPT'):
- continue
-
- # hardware ID
- szHardwareID = byte_buffer(250)
- # try to get ID that includes serial number
- if not SetupDiGetDeviceInstanceId(
- g_hdi,
- ctypes.byref(devinfo),
- ctypes.byref(szHardwareID),
- ctypes.sizeof(szHardwareID) - 1,
- None):
- # fall back to more generic hardware ID if that would fail
- if not SetupDiGetDeviceRegistryProperty(
- g_hdi,
- ctypes.byref(devinfo),
- SPDRP_HARDWAREID,
- None,
- ctypes.byref(szHardwareID),
- ctypes.sizeof(szHardwareID) - 1,
- None):
- # Ignore ERROR_INSUFFICIENT_BUFFER
- if ctypes.GetLastError() != ERROR_INSUFFICIENT_BUFFER:
- raise ctypes.WinError()
- # stringify
- szHardwareID_str = string(szHardwareID)
-
- # in case of USB, make a more readable string, similar to that form
- # that we also generate on other platforms
- if szHardwareID_str.startswith('USB'):
- m = re.search(r'VID_([0-9a-f]{4})&PID_([0-9a-f]{4})(\\(\w+))?', szHardwareID_str, re.I)
- if m:
- if m.group(4):
- szHardwareID_str = 'USB VID:PID=%s:%s SNR=%s' % (m.group(1), m.group(2), m.group(4))
- else:
- szHardwareID_str = 'USB VID:PID=%s:%s' % (m.group(1), m.group(2))
-
- # friendly name
- szFriendlyName = byte_buffer(250)
- if not SetupDiGetDeviceRegistryProperty(
- g_hdi,
- ctypes.byref(devinfo),
- SPDRP_FRIENDLYNAME,
- #~ SPDRP_DEVICEDESC,
- None,
- ctypes.byref(szFriendlyName),
- ctypes.sizeof(szFriendlyName) - 1,
- None):
- # Ignore ERROR_INSUFFICIENT_BUFFER
- #~ if ctypes.GetLastError() != ERROR_INSUFFICIENT_BUFFER:
- #~ raise IOError("failed to get details for %s (%s)" % (devinfo, szHardwareID.value))
- # ignore errors and still include the port in the list, friendly name will be same as port name
- yield string(port_name_buffer), 'n/a', szHardwareID_str
- else:
- yield string(port_name_buffer), string(szFriendlyName), szHardwareID_str
-
- SetupDiDestroyDeviceInfoList(g_hdi)
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-# test
-if __name__ == '__main__':
- import serial
-
- for port, desc, hwid in sorted(comports()):
- print "%s: %s [%s]" % (port, desc, hwid)
diff --git a/lib/python2.7/site-packages/serial/tools/miniterm.py b/lib/python2.7/site-packages/serial/tools/miniterm.py
deleted file mode 100644
index 274c7fb..0000000
--- a/lib/python2.7/site-packages/serial/tools/miniterm.py
+++ /dev/null
@@ -1,694 +0,0 @@
-#!/usr/bin/env python
-
-# Very simple serial terminal
-# (C)2002-2011 Chris Liechti <cliechti@gmx.net>
-
-# Input characters are sent directly (only LF -> CR/LF/CRLF translation is
-# done), received characters are displayed as is (or escaped trough pythons
-# repr, useful for debug purposes)
-
-
-import sys, os, serial, threading
-try:
- from serial.tools.list_ports import comports
-except ImportError:
- comports = None
-
-EXITCHARCTER = serial.to_bytes([0x1d]) # GS/CTRL+]
-MENUCHARACTER = serial.to_bytes([0x14]) # Menu: CTRL+T
-
-DEFAULT_PORT = None
-DEFAULT_BAUDRATE = 9600
-DEFAULT_RTS = None
-DEFAULT_DTR = None
-
-
-def key_description(character):
- """generate a readable description for a key"""
- ascii_code = ord(character)
- if ascii_code < 32:
- return 'Ctrl+%c' % (ord('@') + ascii_code)
- else:
- return repr(character)
-
-
-# help text, starts with blank line! it's a function so that the current values
-# for the shortcut keys is used and not the value at program start
-def get_help_text():
- return """
---- pySerial (%(version)s) - miniterm - help
----
---- %(exit)-8s Exit program
---- %(menu)-8s Menu escape key, followed by:
---- Menu keys:
---- %(itself)-7s Send the menu character itself to remote
---- %(exchar)-7s Send the exit character itself to remote
---- %(info)-7s Show info
---- %(upload)-7s Upload file (prompt will be shown)
---- Toggles:
---- %(rts)-7s RTS %(echo)-7s local echo
---- %(dtr)-7s DTR %(break)-7s BREAK
---- %(lfm)-7s line feed %(repr)-7s Cycle repr mode
----
---- Port settings (%(menu)s followed by the following):
---- p change port
---- 7 8 set data bits
---- n e o s m change parity (None, Even, Odd, Space, Mark)
---- 1 2 3 set stop bits (1, 2, 1.5)
---- b change baud rate
---- x X disable/enable software flow control
---- r R disable/enable hardware flow control
-""" % {
- 'version': getattr(serial, 'VERSION', 'unknown version'),
- 'exit': key_description(EXITCHARCTER),
- 'menu': key_description(MENUCHARACTER),
- 'rts': key_description('\x12'),
- 'repr': key_description('\x01'),
- 'dtr': key_description('\x04'),
- 'lfm': key_description('\x0c'),
- 'break': key_description('\x02'),
- 'echo': key_description('\x05'),
- 'info': key_description('\x09'),
- 'upload': key_description('\x15'),
- 'itself': key_description(MENUCHARACTER),
- 'exchar': key_description(EXITCHARCTER),
-}
-
-if sys.version_info >= (3, 0):
- def character(b):
- return b.decode('latin1')
-else:
- def character(b):
- return b
-
-LF = serial.to_bytes([10])
-CR = serial.to_bytes([13])
-CRLF = serial.to_bytes([13, 10])
-
-X00 = serial.to_bytes([0])
-X0E = serial.to_bytes([0x0e])
-
-# first choose a platform dependant way to read single characters from the console
-global console
-
-if os.name == 'nt':
- import msvcrt
- class Console(object):
- def __init__(self):
- pass
-
- def setup(self):
- pass # Do nothing for 'nt'
-
- def cleanup(self):
- pass # Do nothing for 'nt'
-
- def getkey(self):
- while True:
- z = msvcrt.getch()
- if z == X00 or z == X0E: # functions keys, ignore
- msvcrt.getch()
- else:
- if z == CR:
- return LF
- return z
-
- console = Console()
-
-elif os.name == 'posix':
- import termios, sys, os
- class Console(object):
- def __init__(self):
- self.fd = sys.stdin.fileno()
- self.old = None
-
- def setup(self):
- self.old = termios.tcgetattr(self.fd)
- new = termios.tcgetattr(self.fd)
- new[3] = new[3] & ~termios.ICANON & ~termios.ECHO & ~termios.ISIG
- new[6][termios.VMIN] = 1
- new[6][termios.VTIME] = 0
- termios.tcsetattr(self.fd, termios.TCSANOW, new)
-
- def getkey(self):
- c = os.read(self.fd, 1)
- return c
-
- def cleanup(self):
- if self.old is not None:
- termios.tcsetattr(self.fd, termios.TCSAFLUSH, self.old)
-
- console = Console()
-
- def cleanup_console():
- console.cleanup()
-
- sys.exitfunc = cleanup_console # terminal modes have to be restored on exit...
-
-else:
- raise NotImplementedError("Sorry no implementation for your platform (%s) available." % sys.platform)
-
-
-def dump_port_list():
- if comports:
- sys.stderr.write('\n--- Available ports:\n')
- for port, desc, hwid in sorted(comports()):
- #~ sys.stderr.write('--- %-20s %s [%s]\n' % (port, desc, hwid))
- sys.stderr.write('--- %-20s %s\n' % (port, desc))
-
-
-CONVERT_CRLF = 2
-CONVERT_CR = 1
-CONVERT_LF = 0
-NEWLINE_CONVERISON_MAP = (LF, CR, CRLF)
-LF_MODES = ('LF', 'CR', 'CR/LF')
-
-REPR_MODES = ('raw', 'some control', 'all control', 'hex')
-
-class Miniterm(object):
- def __init__(self, port, baudrate, parity, rtscts, xonxoff, echo=False, convert_outgoing=CONVERT_CRLF, repr_mode=0):
- try:
- self.serial = serial.serial_for_url(port, baudrate, parity=parity, rtscts=rtscts, xonxoff=xonxoff, timeout=1)
- except AttributeError:
- # happens when the installed pyserial is older than 2.5. use the
- # Serial class directly then.
- self.serial = serial.Serial(port, baudrate, parity=parity, rtscts=rtscts, xonxoff=xonxoff, timeout=1)
- self.echo = echo
- self.repr_mode = repr_mode
- self.convert_outgoing = convert_outgoing
- self.newline = NEWLINE_CONVERISON_MAP[self.convert_outgoing]
- self.dtr_state = True
- self.rts_state = True
- self.break_state = False
-
- def _start_reader(self):
- """Start reader thread"""
- self._reader_alive = True
- # start serial->console thread
- self.receiver_thread = threading.Thread(target=self.reader)
- self.receiver_thread.setDaemon(True)
- self.receiver_thread.start()
-
- def _stop_reader(self):
- """Stop reader thread only, wait for clean exit of thread"""
- self._reader_alive = False
- self.receiver_thread.join()
-
-
- def start(self):
- self.alive = True
- self._start_reader()
- # enter console->serial loop
- self.transmitter_thread = threading.Thread(target=self.writer)
- self.transmitter_thread.setDaemon(True)
- self.transmitter_thread.start()
-
- def stop(self):
- self.alive = False
-
- def join(self, transmit_only=False):
- self.transmitter_thread.join()
- if not transmit_only:
- self.receiver_thread.join()
-
- def dump_port_settings(self):
- sys.stderr.write("\n--- Settings: %s %s,%s,%s,%s\n" % (
- self.serial.portstr,
- self.serial.baudrate,
- self.serial.bytesize,
- self.serial.parity,
- self.serial.stopbits))
- sys.stderr.write('--- RTS: %-8s DTR: %-8s BREAK: %-8s\n' % (
- (self.rts_state and 'active' or 'inactive'),
- (self.dtr_state and 'active' or 'inactive'),
- (self.break_state and 'active' or 'inactive')))
- try:
- sys.stderr.write('--- CTS: %-8s DSR: %-8s RI: %-8s CD: %-8s\n' % (
- (self.serial.getCTS() and 'active' or 'inactive'),
- (self.serial.getDSR() and 'active' or 'inactive'),
- (self.serial.getRI() and 'active' or 'inactive'),
- (self.serial.getCD() and 'active' or 'inactive')))
- except serial.SerialException:
- # on RFC 2217 ports it can happen to no modem state notification was
- # yet received. ignore this error.
- pass
- sys.stderr.write('--- software flow control: %s\n' % (self.serial.xonxoff and 'active' or 'inactive'))
- sys.stderr.write('--- hardware flow control: %s\n' % (self.serial.rtscts and 'active' or 'inactive'))
- sys.stderr.write('--- data escaping: %s linefeed: %s\n' % (
- REPR_MODES[self.repr_mode],
- LF_MODES[self.convert_outgoing]))
-
- def reader(self):
- """loop and copy serial->console"""
- try:
- while self.alive and self._reader_alive:
- data = character(self.serial.read(1))
-
- if self.repr_mode == 0:
- # direct output, just have to care about newline setting
- if data == '\r' and self.convert_outgoing == CONVERT_CR:
- sys.stdout.write('\n')
- else:
- sys.stdout.write(data)
- elif self.repr_mode == 1:
- # escape non-printable, let pass newlines
- if self.convert_outgoing == CONVERT_CRLF and data in '\r\n':
- if data == '\n':
- sys.stdout.write('\n')
- elif data == '\r':
- pass
- elif data == '\n' and self.convert_outgoing == CONVERT_LF:
- sys.stdout.write('\n')
- elif data == '\r' and self.convert_outgoing == CONVERT_CR:
- sys.stdout.write('\n')
- else:
- sys.stdout.write(repr(data)[1:-1])
- elif self.repr_mode == 2:
- # escape all non-printable, including newline
- sys.stdout.write(repr(data)[1:-1])
- elif self.repr_mode == 3:
- # escape everything (hexdump)
- for c in data:
- sys.stdout.write("%s " % c.encode('hex'))
- sys.stdout.flush()
- except serial.SerialException, e:
- self.alive = False
- # would be nice if the console reader could be interruptted at this
- # point...
- raise
-
-
- def writer(self):
- """\
- Loop and copy console->serial until EXITCHARCTER character is
- found. When MENUCHARACTER is found, interpret the next key
- locally.
- """
- menu_active = False
- try:
- while self.alive:
- try:
- b = console.getkey()
- except KeyboardInterrupt:
- b = serial.to_bytes([3])
- c = character(b)
- if menu_active:
- if c == MENUCHARACTER or c == EXITCHARCTER: # Menu character again/exit char -> send itself
- self.serial.write(b) # send character
- if self.echo:
- sys.stdout.write(c)
- elif c == '\x15': # CTRL+U -> upload file
- sys.stderr.write('\n--- File to upload: ')
- sys.stderr.flush()
- console.cleanup()
- filename = sys.stdin.readline().rstrip('\r\n')
- if filename:
- try:
- file = open(filename, 'r')
- sys.stderr.write('--- Sending file %s ---\n' % filename)
- while True:
- line = file.readline().rstrip('\r\n')
- if not line:
- break
- self.serial.write(line)
- self.serial.write('\r\n')
- # Wait for output buffer to drain.
- self.serial.flush()
- sys.stderr.write('.') # Progress indicator.
- sys.stderr.write('\n--- File %s sent ---\n' % filename)
- except IOError, e:
- sys.stderr.write('--- ERROR opening file %s: %s ---\n' % (filename, e))
- console.setup()
- elif c in '\x08hH?': # CTRL+H, h, H, ? -> Show help
- sys.stderr.write(get_help_text())
- elif c == '\x12': # CTRL+R -> Toggle RTS
- self.rts_state = not self.rts_state
- self.serial.setRTS(self.rts_state)
- sys.stderr.write('--- RTS %s ---\n' % (self.rts_state and 'active' or 'inactive'))
- elif c == '\x04': # CTRL+D -> Toggle DTR
- self.dtr_state = not self.dtr_state
- self.serial.setDTR(self.dtr_state)
- sys.stderr.write('--- DTR %s ---\n' % (self.dtr_state and 'active' or 'inactive'))
- elif c == '\x02': # CTRL+B -> toggle BREAK condition
- self.break_state = not self.break_state
- self.serial.setBreak(self.break_state)
- sys.stderr.write('--- BREAK %s ---\n' % (self.break_state and 'active' or 'inactive'))
- elif c == '\x05': # CTRL+E -> toggle local echo
- self.echo = not self.echo
- sys.stderr.write('--- local echo %s ---\n' % (self.echo and 'active' or 'inactive'))
- elif c == '\x09': # CTRL+I -> info
- self.dump_port_settings()
- elif c == '\x01': # CTRL+A -> cycle escape mode
- self.repr_mode += 1
- if self.repr_mode > 3:
- self.repr_mode = 0
- sys.stderr.write('--- escape data: %s ---\n' % (
- REPR_MODES[self.repr_mode],
- ))
- elif c == '\x0c': # CTRL+L -> cycle linefeed mode
- self.convert_outgoing += 1
- if self.convert_outgoing > 2:
- self.convert_outgoing = 0
- self.newline = NEWLINE_CONVERISON_MAP[self.convert_outgoing]
- sys.stderr.write('--- line feed %s ---\n' % (
- LF_MODES[self.convert_outgoing],
- ))
- elif c in 'pP': # P -> change port
- dump_port_list()
- sys.stderr.write('--- Enter port name: ')
- sys.stderr.flush()
- console.cleanup()
- try:
- port = sys.stdin.readline().strip()
- except KeyboardInterrupt:
- port = None
- console.setup()
- if port and port != self.serial.port:
- # reader thread needs to be shut down
- self._stop_reader()
- # save settings
- settings = self.serial.getSettingsDict()
- try:
- try:
- new_serial = serial.serial_for_url(port, do_not_open=True)
- except AttributeError:
- # happens when the installed pyserial is older than 2.5. use the
- # Serial class directly then.
- new_serial = serial.Serial()
- new_serial.port = port
- # restore settings and open
- new_serial.applySettingsDict(settings)
- new_serial.open()
- new_serial.setRTS(self.rts_state)
- new_serial.setDTR(self.dtr_state)
- new_serial.setBreak(self.break_state)
- except Exception, e:
- sys.stderr.write('--- ERROR opening new port: %s ---\n' % (e,))
- new_serial.close()
- else:
- self.serial.close()
- self.serial = new_serial
- sys.stderr.write('--- Port changed to: %s ---\n' % (self.serial.port,))
- # and restart the reader thread
- self._start_reader()
- elif c in 'bB': # B -> change baudrate
- sys.stderr.write('\n--- Baudrate: ')
- sys.stderr.flush()
- console.cleanup()
- backup = self.serial.baudrate
- try:
- self.serial.baudrate = int(sys.stdin.readline().strip())
- except ValueError, e:
- sys.stderr.write('--- ERROR setting baudrate: %s ---\n' % (e,))
- self.serial.baudrate = backup
- else:
- self.dump_port_settings()
- console.setup()
- elif c == '8': # 8 -> change to 8 bits
- self.serial.bytesize = serial.EIGHTBITS
- self.dump_port_settings()
- elif c == '7': # 7 -> change to 8 bits
- self.serial.bytesize = serial.SEVENBITS
- self.dump_port_settings()
- elif c in 'eE': # E -> change to even parity
- self.serial.parity = serial.PARITY_EVEN
- self.dump_port_settings()
- elif c in 'oO': # O -> change to odd parity
- self.serial.parity = serial.PARITY_ODD
- self.dump_port_settings()
- elif c in 'mM': # M -> change to mark parity
- self.serial.parity = serial.PARITY_MARK
- self.dump_port_settings()
- elif c in 'sS': # S -> change to space parity
- self.serial.parity = serial.PARITY_SPACE
- self.dump_port_settings()
- elif c in 'nN': # N -> change to no parity
- self.serial.parity = serial.PARITY_NONE
- self.dump_port_settings()
- elif c == '1': # 1 -> change to 1 stop bits
- self.serial.stopbits = serial.STOPBITS_ONE
- self.dump_port_settings()
- elif c == '2': # 2 -> change to 2 stop bits
- self.serial.stopbits = serial.STOPBITS_TWO
- self.dump_port_settings()
- elif c == '3': # 3 -> change to 1.5 stop bits
- self.serial.stopbits = serial.STOPBITS_ONE_POINT_FIVE
- self.dump_port_settings()
- elif c in 'xX': # X -> change software flow control
- self.serial.xonxoff = (c == 'X')
- self.dump_port_settings()
- elif c in 'rR': # R -> change hardware flow control
- self.serial.rtscts = (c == 'R')
- self.dump_port_settings()
- else:
- sys.stderr.write('--- unknown menu character %s --\n' % key_description(c))
- menu_active = False
- elif c == MENUCHARACTER: # next char will be for menu
- menu_active = True
- elif c == EXITCHARCTER:
- self.stop()
- break # exit app
- elif c == '\n':
- self.serial.write(self.newline) # send newline character(s)
- if self.echo:
- sys.stdout.write(c) # local echo is a real newline in any case
- sys.stdout.flush()
- else:
- self.serial.write(b) # send byte
- if self.echo:
- sys.stdout.write(c)
- sys.stdout.flush()
- except:
- self.alive = False
- raise
-
-def main():
- import optparse
-
- parser = optparse.OptionParser(
- usage = "%prog [options] [port [baudrate]]",
- description = "Miniterm - A simple terminal program for the serial port."
- )
-
- group = optparse.OptionGroup(parser, "Port settings")
-
- group.add_option("-p", "--port",
- dest = "port",
- help = "port, a number or a device name. (deprecated option, use parameter instead)",
- default = DEFAULT_PORT
- )
-
- group.add_option("-b", "--baud",
- dest = "baudrate",
- action = "store",
- type = 'int',
- help = "set baud rate, default %default",
- default = DEFAULT_BAUDRATE
- )
-
- group.add_option("--parity",
- dest = "parity",
- action = "store",
- help = "set parity, one of [N, E, O, S, M], default=N",
- default = 'N'
- )
-
- group.add_option("--rtscts",
- dest = "rtscts",
- action = "store_true",
- help = "enable RTS/CTS flow control (default off)",
- default = False
- )
-
- group.add_option("--xonxoff",
- dest = "xonxoff",
- action = "store_true",
- help = "enable software flow control (default off)",
- default = False
- )
-
- group.add_option("--rts",
- dest = "rts_state",
- action = "store",
- type = 'int',
- help = "set initial RTS line state (possible values: 0, 1)",
- default = DEFAULT_RTS
- )
-
- group.add_option("--dtr",
- dest = "dtr_state",
- action = "store",
- type = 'int',
- help = "set initial DTR line state (possible values: 0, 1)",
- default = DEFAULT_DTR
- )
-
- parser.add_option_group(group)
-
- group = optparse.OptionGroup(parser, "Data handling")
-
- group.add_option("-e", "--echo",
- dest = "echo",
- action = "store_true",
- help = "enable local echo (default off)",
- default = False
- )
-
- group.add_option("--cr",
- dest = "cr",
- action = "store_true",
- help = "do not send CR+LF, send CR only",
- default = False
- )
-
- group.add_option("--lf",
- dest = "lf",
- action = "store_true",
- help = "do not send CR+LF, send LF only",
- default = False
- )
-
- group.add_option("-D", "--debug",
- dest = "repr_mode",
- action = "count",
- help = """debug received data (escape non-printable chars)
---debug can be given multiple times:
-0: just print what is received
-1: escape non-printable characters, do newlines as unusual
-2: escape non-printable characters, newlines too
-3: hex dump everything""",
- default = 0
- )
-
- parser.add_option_group(group)
-
-
- group = optparse.OptionGroup(parser, "Hotkeys")
-
- group.add_option("--exit-char",
- dest = "exit_char",
- action = "store",
- type = 'int',
- help = "ASCII code of special character that is used to exit the application",
- default = 0x1d
- )
-
- group.add_option("--menu-char",
- dest = "menu_char",
- action = "store",
- type = 'int',
- help = "ASCII code of special character that is used to control miniterm (menu)",
- default = 0x14
- )
-
- parser.add_option_group(group)
-
- group = optparse.OptionGroup(parser, "Diagnostics")
-
- group.add_option("-q", "--quiet",
- dest = "quiet",
- action = "store_true",
- help = "suppress non-error messages",
- default = False
- )
-
- parser.add_option_group(group)
-
-
- (options, args) = parser.parse_args()
-
- options.parity = options.parity.upper()
- if options.parity not in 'NEOSM':
- parser.error("invalid parity")
-
- if options.cr and options.lf:
- parser.error("only one of --cr or --lf can be specified")
-
- if options.menu_char == options.exit_char:
- parser.error('--exit-char can not be the same as --menu-char')
-
- global EXITCHARCTER, MENUCHARACTER
- EXITCHARCTER = chr(options.exit_char)
- MENUCHARACTER = chr(options.menu_char)
-
- port = options.port
- baudrate = options.baudrate
- if args:
- if options.port is not None:
- parser.error("no arguments are allowed, options only when --port is given")
- port = args.pop(0)
- if args:
- try:
- baudrate = int(args[0])
- except ValueError:
- parser.error("baud rate must be a number, not %r" % args[0])
- args.pop(0)
- if args:
- parser.error("too many arguments")
- else:
- # noport given on command line -> ask user now
- if port is None:
- dump_port_list()
- port = raw_input('Enter port name:')
-
- convert_outgoing = CONVERT_CRLF
- if options.cr:
- convert_outgoing = CONVERT_CR
- elif options.lf:
- convert_outgoing = CONVERT_LF
-
- try:
- miniterm = Miniterm(
- port,
- baudrate,
- options.parity,
- rtscts=options.rtscts,
- xonxoff=options.xonxoff,
- echo=options.echo,
- convert_outgoing=convert_outgoing,
- repr_mode=options.repr_mode,
- )
- except serial.SerialException, e:
- sys.stderr.write("could not open port %r: %s\n" % (port, e))
- sys.exit(1)
-
- if not options.quiet:
- sys.stderr.write('--- Miniterm on %s: %d,%s,%s,%s ---\n' % (
- miniterm.serial.portstr,
- miniterm.serial.baudrate,
- miniterm.serial.bytesize,
- miniterm.serial.parity,
- miniterm.serial.stopbits,
- ))
- sys.stderr.write('--- Quit: %s | Menu: %s | Help: %s followed by %s ---\n' % (
- key_description(EXITCHARCTER),
- key_description(MENUCHARACTER),
- key_description(MENUCHARACTER),
- key_description('\x08'),
- ))
-
- if options.dtr_state is not None:
- if not options.quiet:
- sys.stderr.write('--- forcing DTR %s\n' % (options.dtr_state and 'active' or 'inactive'))
- miniterm.serial.setDTR(options.dtr_state)
- miniterm.dtr_state = options.dtr_state
- if options.rts_state is not None:
- if not options.quiet:
- sys.stderr.write('--- forcing RTS %s\n' % (options.rts_state and 'active' or 'inactive'))
- miniterm.serial.setRTS(options.rts_state)
- miniterm.rts_state = options.rts_state
-
- console.setup()
- miniterm.start()
- try:
- miniterm.join(True)
- except KeyboardInterrupt:
- pass
- if not options.quiet:
- sys.stderr.write("\n--- exit ---\n")
- miniterm.join()
- #~ console.cleanup()
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-if __name__ == '__main__':
- main()
diff --git a/lib/python2.7/site-packages/serial/urlhandler/__init__.py b/lib/python2.7/site-packages/serial/urlhandler/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/serial/urlhandler/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/serial/urlhandler/protocol_hwgrep.py b/lib/python2.7/site-packages/serial/urlhandler/protocol_hwgrep.py
deleted file mode 100644
index 62cda43..0000000
--- a/lib/python2.7/site-packages/serial/urlhandler/protocol_hwgrep.py
+++ /dev/null
@@ -1,45 +0,0 @@
-#! python
-#
-# Python Serial Port Extension for Win32, Linux, BSD, Jython
-# see __init__.py
-#
-# This module implements a special URL handler that uses the port listing to
-# find ports by searching the string descriptions.
-#
-# (C) 2011 Chris Liechti <cliechti@gmx.net>
-# this is distributed under a free software license, see license.txt
-#
-# URL format: hwgrep://regexp
-
-import serial
-import serial.tools.list_ports
-
-class Serial(serial.Serial):
- """Just inherit the native Serial port implementation and patch the open function."""
-
- def setPort(self, value):
- """translate port name before storing it"""
- if isinstance(value, basestring) and value.startswith('hwgrep://'):
- serial.Serial.setPort(self, self.fromURL(value))
- else:
- serial.Serial.setPort(self, value)
-
- def fromURL(self, url):
- """extract host and port from an URL string"""
- if url.lower().startswith("hwgrep://"): url = url[9:]
- # use a for loop to get the 1st element from the generator
- for port, desc, hwid in serial.tools.list_ports.grep(url):
- return port
- else:
- raise serial.SerialException('no ports found matching regexp %r' % (url,))
-
- # override property
- port = property(serial.Serial.getPort, setPort, doc="Port setting")
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-if __name__ == '__main__':
- #~ s = Serial('hwgrep://ttyS0')
- s = Serial(None)
- s.port = 'hwgrep://ttyS0'
- print s
-
diff --git a/lib/python2.7/site-packages/serial/urlhandler/protocol_loop.py b/lib/python2.7/site-packages/serial/urlhandler/protocol_loop.py
deleted file mode 100644
index 7da94ad..0000000
--- a/lib/python2.7/site-packages/serial/urlhandler/protocol_loop.py
+++ /dev/null
@@ -1,265 +0,0 @@
-#! python
-#
-# Python Serial Port Extension for Win32, Linux, BSD, Jython
-# see __init__.py
-#
-# This module implements a loop back connection receiving itself what it sent.
-#
-# The purpose of this module is.. well... You can run the unit tests with it.
-# and it was so easy to implement ;-)
-#
-# (C) 2001-2011 Chris Liechti <cliechti@gmx.net>
-# this is distributed under a free software license, see license.txt
-#
-# URL format: loop://[option[/option...]]
-# options:
-# - "debug" print diagnostic messages
-
-from serial.serialutil import *
-import threading
-import time
-import logging
-
-# map log level names to constants. used in fromURL()
-LOGGER_LEVELS = {
- 'debug': logging.DEBUG,
- 'info': logging.INFO,
- 'warning': logging.WARNING,
- 'error': logging.ERROR,
- }
-
-
-class LoopbackSerial(SerialBase):
- """Serial port implementation that simulates a loop back connection in plain software."""
-
- BAUDRATES = (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800,
- 9600, 19200, 38400, 57600, 115200)
-
- def open(self):
- """Open port with current settings. This may throw a SerialException
- if the port cannot be opened."""
- if self._isOpen:
- raise SerialException("Port is already open.")
- self.logger = None
- self.buffer_lock = threading.Lock()
- self.loop_buffer = bytearray()
- self.cts = False
- self.dsr = False
-
- if self._port is None:
- raise SerialException("Port must be configured before it can be used.")
- # not that there is anything to open, but the function applies the
- # options found in the URL
- self.fromURL(self.port)
-
- # not that there anything to configure...
- self._reconfigurePort()
- # all things set up get, now a clean start
- self._isOpen = True
- if not self._rtscts:
- self.setRTS(True)
- self.setDTR(True)
- self.flushInput()
- self.flushOutput()
-
- def _reconfigurePort(self):
- """Set communication parameters on opened port. for the loop://
- protocol all settings are ignored!"""
- # not that's it of any real use, but it helps in the unit tests
- if not isinstance(self._baudrate, (int, long)) or not 0 < self._baudrate < 2**32:
- raise ValueError("invalid baudrate: %r" % (self._baudrate))
- if self.logger:
- self.logger.info('_reconfigurePort()')
-
- def close(self):
- """Close port"""
- if self._isOpen:
- self._isOpen = False
- # in case of quick reconnects, give the server some time
- time.sleep(0.3)
-
- def makeDeviceName(self, port):
- raise SerialException("there is no sensible way to turn numbers into URLs")
-
- def fromURL(self, url):
- """extract host and port from an URL string"""
- if url.lower().startswith("loop://"): url = url[7:]
- try:
- # process options now, directly altering self
- for option in url.split('/'):
- if '=' in option:
- option, value = option.split('=', 1)
- else:
- value = None
- if not option:
- pass
- elif option == 'logging':
- logging.basicConfig() # XXX is that good to call it here?
- self.logger = logging.getLogger('pySerial.loop')
- self.logger.setLevel(LOGGER_LEVELS[value])
- self.logger.debug('enabled logging')
- else:
- raise ValueError('unknown option: %r' % (option,))
- except ValueError, e:
- raise SerialException('expected a string in the form "[loop://][option[/option...]]": %s' % e)
-
- # - - - - - - - - - - - - - - - - - - - - - - - -
-
- def inWaiting(self):
- """Return the number of characters currently in the input buffer."""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- # attention the logged value can differ from return value in
- # threaded environments...
- self.logger.debug('inWaiting() -> %d' % (len(self.loop_buffer),))
- return len(self.loop_buffer)
-
- def read(self, size=1):
- """Read size bytes from the serial port. If a timeout is set it may
- return less characters as requested. With no timeout it will block
- until the requested number of bytes is read."""
- if not self._isOpen: raise portNotOpenError
- if self._timeout is not None:
- timeout = time.time() + self._timeout
- else:
- timeout = None
- data = bytearray()
- while size > 0:
- self.buffer_lock.acquire()
- try:
- block = to_bytes(self.loop_buffer[:size])
- del self.loop_buffer[:size]
- finally:
- self.buffer_lock.release()
- data += block
- size -= len(block)
- # check for timeout now, after data has been read.
- # useful for timeout = 0 (non blocking) read
- if timeout and time.time() > timeout:
- break
- return bytes(data)
-
- def write(self, data):
- """Output the given string over the serial port. Can block if the
- connection is blocked. May raise SerialException if the connection is
- closed."""
- if not self._isOpen: raise portNotOpenError
- # ensure we're working with bytes
- data = to_bytes(data)
- # calculate aprox time that would be used to send the data
- time_used_to_send = 10.0*len(data) / self._baudrate
- # when a write timeout is configured check if we would be successful
- # (not sending anything, not even the part that would have time)
- if self._writeTimeout is not None and time_used_to_send > self._writeTimeout:
- time.sleep(self._writeTimeout) # must wait so that unit test succeeds
- raise writeTimeoutError
- self.buffer_lock.acquire()
- try:
- self.loop_buffer += data
- finally:
- self.buffer_lock.release()
- return len(data)
-
- def flushInput(self):
- """Clear input buffer, discarding all that is in the buffer."""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('flushInput()')
- self.buffer_lock.acquire()
- try:
- del self.loop_buffer[:]
- finally:
- self.buffer_lock.release()
-
- def flushOutput(self):
- """Clear output buffer, aborting the current output and
- discarding all that is in the buffer."""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('flushOutput()')
-
- def sendBreak(self, duration=0.25):
- """Send break condition. Timed, returns to idle state after given
- duration."""
- if not self._isOpen: raise portNotOpenError
-
- def setBreak(self, level=True):
- """Set break: Controls TXD. When active, to transmitting is
- possible."""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('setBreak(%r)' % (level,))
-
- def setRTS(self, level=True):
- """Set terminal status line: Request To Send"""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('setRTS(%r) -> state of CTS' % (level,))
- self.cts = level
-
- def setDTR(self, level=True):
- """Set terminal status line: Data Terminal Ready"""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('setDTR(%r) -> state of DSR' % (level,))
- self.dsr = level
-
- def getCTS(self):
- """Read terminal status line: Clear To Send"""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('getCTS() -> state of RTS (%r)' % (self.cts,))
- return self.cts
-
- def getDSR(self):
- """Read terminal status line: Data Set Ready"""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('getDSR() -> state of DTR (%r)' % (self.dsr,))
- return self.dsr
-
- def getRI(self):
- """Read terminal status line: Ring Indicator"""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('returning dummy for getRI()')
- return False
-
- def getCD(self):
- """Read terminal status line: Carrier Detect"""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('returning dummy for getCD()')
- return True
-
- # - - - platform specific - - -
- # None so far
-
-
-# assemble Serial class with the platform specific implementation and the base
-# for file-like behavior. for Python 2.6 and newer, that provide the new I/O
-# library, derive from io.RawIOBase
-try:
- import io
-except ImportError:
- # classic version with our own file-like emulation
- class Serial(LoopbackSerial, FileLike):
- pass
-else:
- # io library present
- class Serial(LoopbackSerial, io.RawIOBase):
- pass
-
-
-# simple client test
-if __name__ == '__main__':
- import sys
- s = Serial('loop://')
- sys.stdout.write('%s\n' % s)
-
- sys.stdout.write("write...\n")
- s.write("hello\n")
- s.flush()
- sys.stdout.write("read: %s\n" % s.read(5))
-
- s.close()
diff --git a/lib/python2.7/site-packages/serial/urlhandler/protocol_rfc2217.py b/lib/python2.7/site-packages/serial/urlhandler/protocol_rfc2217.py
deleted file mode 100644
index 981ba45..0000000
--- a/lib/python2.7/site-packages/serial/urlhandler/protocol_rfc2217.py
+++ /dev/null
@@ -1,11 +0,0 @@
-#! python
-#
-# Python Serial Port Extension for Win32, Linux, BSD, Jython
-# see ../__init__.py
-#
-# This is a thin wrapper to load the rfc2271 implementation.
-#
-# (C) 2011 Chris Liechti <cliechti@gmx.net>
-# this is distributed under a free software license, see license.txt
-
-from serial.rfc2217 import Serial
diff --git a/lib/python2.7/site-packages/serial/urlhandler/protocol_socket.py b/lib/python2.7/site-packages/serial/urlhandler/protocol_socket.py
deleted file mode 100644
index c90a8e4..0000000
--- a/lib/python2.7/site-packages/serial/urlhandler/protocol_socket.py
+++ /dev/null
@@ -1,274 +0,0 @@
-#! python
-#
-# Python Serial Port Extension for Win32, Linux, BSD, Jython
-# see __init__.py
-#
-# This module implements a simple socket based client.
-# It does not support changing any port parameters and will silently ignore any
-# requests to do so.
-#
-# The purpose of this module is that applications using pySerial can connect to
-# TCP/IP to serial port converters that do not support RFC 2217.
-#
-# (C) 2001-2011 Chris Liechti <cliechti@gmx.net>
-# this is distributed under a free software license, see license.txt
-#
-# URL format: socket://<host>:<port>[/option[/option...]]
-# options:
-# - "debug" print diagnostic messages
-
-from serial.serialutil import *
-import time
-import socket
-import logging
-
-# map log level names to constants. used in fromURL()
-LOGGER_LEVELS = {
- 'debug': logging.DEBUG,
- 'info': logging.INFO,
- 'warning': logging.WARNING,
- 'error': logging.ERROR,
- }
-
-POLL_TIMEOUT = 2
-
-class SocketSerial(SerialBase):
- """Serial port implementation for plain sockets."""
-
- BAUDRATES = (50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800,
- 9600, 19200, 38400, 57600, 115200)
-
- def open(self):
- """Open port with current settings. This may throw a SerialException
- if the port cannot be opened."""
- self.logger = None
- if self._port is None:
- raise SerialException("Port must be configured before it can be used.")
- if self._isOpen:
- raise SerialException("Port is already open.")
- try:
- # XXX in future replace with create_connection (py >=2.6)
- self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- self._socket.connect(self.fromURL(self.portstr))
- except Exception, msg:
- self._socket = None
- raise SerialException("Could not open port %s: %s" % (self.portstr, msg))
-
- self._socket.settimeout(POLL_TIMEOUT) # used for write timeout support :/
-
- # not that there anything to configure...
- self._reconfigurePort()
- # all things set up get, now a clean start
- self._isOpen = True
- if not self._rtscts:
- self.setRTS(True)
- self.setDTR(True)
- self.flushInput()
- self.flushOutput()
-
- def _reconfigurePort(self):
- """Set communication parameters on opened port. for the socket://
- protocol all settings are ignored!"""
- if self._socket is None:
- raise SerialException("Can only operate on open ports")
- if self.logger:
- self.logger.info('ignored port configuration change')
-
- def close(self):
- """Close port"""
- if self._isOpen:
- if self._socket:
- try:
- self._socket.shutdown(socket.SHUT_RDWR)
- self._socket.close()
- except:
- # ignore errors.
- pass
- self._socket = None
- self._isOpen = False
- # in case of quick reconnects, give the server some time
- time.sleep(0.3)
-
- def makeDeviceName(self, port):
- raise SerialException("there is no sensible way to turn numbers into URLs")
-
- def fromURL(self, url):
- """extract host and port from an URL string"""
- if url.lower().startswith("socket://"): url = url[9:]
- try:
- # is there a "path" (our options)?
- if '/' in url:
- # cut away options
- url, options = url.split('/', 1)
- # process options now, directly altering self
- for option in options.split('/'):
- if '=' in option:
- option, value = option.split('=', 1)
- else:
- value = None
- if option == 'logging':
- logging.basicConfig() # XXX is that good to call it here?
- self.logger = logging.getLogger('pySerial.socket')
- self.logger.setLevel(LOGGER_LEVELS[value])
- self.logger.debug('enabled logging')
- else:
- raise ValueError('unknown option: %r' % (option,))
- # get host and port
- host, port = url.split(':', 1) # may raise ValueError because of unpacking
- port = int(port) # and this if it's not a number
- if not 0 <= port < 65536: raise ValueError("port not in range 0...65535")
- except ValueError, e:
- raise SerialException('expected a string in the form "[rfc2217://]<host>:<port>[/option[/option...]]": %s' % e)
- return (host, port)
-
- # - - - - - - - - - - - - - - - - - - - - - - - -
-
- def inWaiting(self):
- """Return the number of characters currently in the input buffer."""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- # set this one to debug as the function could be called often...
- self.logger.debug('WARNING: inWaiting returns dummy value')
- return 0 # hmmm, see comment in read()
-
- def read(self, size=1):
- """Read size bytes from the serial port. If a timeout is set it may
- return less characters as requested. With no timeout it will block
- until the requested number of bytes is read."""
- if not self._isOpen: raise portNotOpenError
- data = bytearray()
- if self._timeout is not None:
- timeout = time.time() + self._timeout
- else:
- timeout = None
- while len(data) < size and (timeout is None or time.time() < timeout):
- try:
- # an implementation with internal buffer would be better
- # performing...
- t = time.time()
- block = self._socket.recv(size - len(data))
- duration = time.time() - t
- if block:
- data.extend(block)
- else:
- # no data -> EOF (connection probably closed)
- break
- except socket.timeout:
- # just need to get out of recv from time to time to check if
- # still alive
- continue
- except socket.error, e:
- # connection fails -> terminate loop
- raise SerialException('connection failed (%s)' % e)
- return bytes(data)
-
- def write(self, data):
- """Output the given string over the serial port. Can block if the
- connection is blocked. May raise SerialException if the connection is
- closed."""
- if not self._isOpen: raise portNotOpenError
- try:
- self._socket.sendall(to_bytes(data))
- except socket.error, e:
- # XXX what exception if socket connection fails
- raise SerialException("socket connection failed: %s" % e)
- return len(data)
-
- def flushInput(self):
- """Clear input buffer, discarding all that is in the buffer."""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('ignored flushInput')
-
- def flushOutput(self):
- """Clear output buffer, aborting the current output and
- discarding all that is in the buffer."""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('ignored flushOutput')
-
- def sendBreak(self, duration=0.25):
- """Send break condition. Timed, returns to idle state after given
- duration."""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('ignored sendBreak(%r)' % (duration,))
-
- def setBreak(self, level=True):
- """Set break: Controls TXD. When active, to transmitting is
- possible."""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('ignored setBreak(%r)' % (level,))
-
- def setRTS(self, level=True):
- """Set terminal status line: Request To Send"""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('ignored setRTS(%r)' % (level,))
-
- def setDTR(self, level=True):
- """Set terminal status line: Data Terminal Ready"""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('ignored setDTR(%r)' % (level,))
-
- def getCTS(self):
- """Read terminal status line: Clear To Send"""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('returning dummy for getCTS()')
- return True
-
- def getDSR(self):
- """Read terminal status line: Data Set Ready"""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('returning dummy for getDSR()')
- return True
-
- def getRI(self):
- """Read terminal status line: Ring Indicator"""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('returning dummy for getRI()')
- return False
-
- def getCD(self):
- """Read terminal status line: Carrier Detect"""
- if not self._isOpen: raise portNotOpenError
- if self.logger:
- self.logger.info('returning dummy for getCD()')
- return True
-
- # - - - platform specific - - -
- # None so far
-
-
-# assemble Serial class with the platform specific implementation and the base
-# for file-like behavior. for Python 2.6 and newer, that provide the new I/O
-# library, derive from io.RawIOBase
-try:
- import io
-except ImportError:
- # classic version with our own file-like emulation
- class Serial(SocketSerial, FileLike):
- pass
-else:
- # io library present
- class Serial(SocketSerial, io.RawIOBase):
- pass
-
-
-# simple client test
-if __name__ == '__main__':
- import sys
- s = Serial('socket://localhost:7000')
- sys.stdout.write('%s\n' % s)
-
- sys.stdout.write("write...\n")
- s.write("hello\n")
- s.flush()
- sys.stdout.write("read: %s\n" % s.read(5))
-
- s.close()
diff --git a/lib/python2.7/site-packages/serial/win32.py b/lib/python2.7/site-packages/serial/win32.py
deleted file mode 100644
index 61b3d7a..0000000
--- a/lib/python2.7/site-packages/serial/win32.py
+++ /dev/null
@@ -1,320 +0,0 @@
-from ctypes import *
-from ctypes.wintypes import HANDLE
-from ctypes.wintypes import BOOL
-from ctypes.wintypes import LPCWSTR
-_stdcall_libraries = {}
-_stdcall_libraries['kernel32'] = WinDLL('kernel32')
-from ctypes.wintypes import DWORD
-from ctypes.wintypes import WORD
-from ctypes.wintypes import BYTE
-
-INVALID_HANDLE_VALUE = HANDLE(-1).value
-
-# some details of the windows API differ between 32 and 64 bit systems..
-def is_64bit():
- """Returns true when running on a 64 bit system"""
- return sizeof(c_ulong) != sizeof(c_void_p)
-
-# ULONG_PTR is a an ordinary number, not a pointer and contrary to the name it
-# is either 32 or 64 bits, depending on the type of windows...
-# so test if this a 32 bit windows...
-if is_64bit():
- # assume 64 bits
- ULONG_PTR = c_int64
-else:
- # 32 bits
- ULONG_PTR = c_ulong
-
-
-class _SECURITY_ATTRIBUTES(Structure):
- pass
-LPSECURITY_ATTRIBUTES = POINTER(_SECURITY_ATTRIBUTES)
-
-
-try:
- CreateEventW = _stdcall_libraries['kernel32'].CreateEventW
-except AttributeError:
- # Fallback to non wide char version for old OS...
- from ctypes.wintypes import LPCSTR
- CreateEventA = _stdcall_libraries['kernel32'].CreateEventA
- CreateEventA.restype = HANDLE
- CreateEventA.argtypes = [LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCSTR]
- CreateEvent=CreateEventA
-
- CreateFileA = _stdcall_libraries['kernel32'].CreateFileA
- CreateFileA.restype = HANDLE
- CreateFileA.argtypes = [LPCSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE]
- CreateFile = CreateFileA
-else:
- CreateEventW.restype = HANDLE
- CreateEventW.argtypes = [LPSECURITY_ATTRIBUTES, BOOL, BOOL, LPCWSTR]
- CreateEvent = CreateEventW # alias
-
- CreateFileW = _stdcall_libraries['kernel32'].CreateFileW
- CreateFileW.restype = HANDLE
- CreateFileW.argtypes = [LPCWSTR, DWORD, DWORD, LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE]
- CreateFile = CreateFileW # alias
-
-class _OVERLAPPED(Structure):
- pass
-OVERLAPPED = _OVERLAPPED
-
-class _COMSTAT(Structure):
- pass
-COMSTAT = _COMSTAT
-
-class _DCB(Structure):
- pass
-DCB = _DCB
-
-class _COMMTIMEOUTS(Structure):
- pass
-COMMTIMEOUTS = _COMMTIMEOUTS
-
-GetLastError = _stdcall_libraries['kernel32'].GetLastError
-GetLastError.restype = DWORD
-GetLastError.argtypes = []
-
-LPOVERLAPPED = POINTER(_OVERLAPPED)
-LPDWORD = POINTER(DWORD)
-
-GetOverlappedResult = _stdcall_libraries['kernel32'].GetOverlappedResult
-GetOverlappedResult.restype = BOOL
-GetOverlappedResult.argtypes = [HANDLE, LPOVERLAPPED, LPDWORD, BOOL]
-
-ResetEvent = _stdcall_libraries['kernel32'].ResetEvent
-ResetEvent.restype = BOOL
-ResetEvent.argtypes = [HANDLE]
-
-LPCVOID = c_void_p
-
-WriteFile = _stdcall_libraries['kernel32'].WriteFile
-WriteFile.restype = BOOL
-WriteFile.argtypes = [HANDLE, LPCVOID, DWORD, LPDWORD, LPOVERLAPPED]
-
-LPVOID = c_void_p
-
-ReadFile = _stdcall_libraries['kernel32'].ReadFile
-ReadFile.restype = BOOL
-ReadFile.argtypes = [HANDLE, LPVOID, DWORD, LPDWORD, LPOVERLAPPED]
-
-CloseHandle = _stdcall_libraries['kernel32'].CloseHandle
-CloseHandle.restype = BOOL
-CloseHandle.argtypes = [HANDLE]
-
-ClearCommBreak = _stdcall_libraries['kernel32'].ClearCommBreak
-ClearCommBreak.restype = BOOL
-ClearCommBreak.argtypes = [HANDLE]
-
-LPCOMSTAT = POINTER(_COMSTAT)
-
-ClearCommError = _stdcall_libraries['kernel32'].ClearCommError
-ClearCommError.restype = BOOL
-ClearCommError.argtypes = [HANDLE, LPDWORD, LPCOMSTAT]
-
-SetupComm = _stdcall_libraries['kernel32'].SetupComm
-SetupComm.restype = BOOL
-SetupComm.argtypes = [HANDLE, DWORD, DWORD]
-
-EscapeCommFunction = _stdcall_libraries['kernel32'].EscapeCommFunction
-EscapeCommFunction.restype = BOOL
-EscapeCommFunction.argtypes = [HANDLE, DWORD]
-
-GetCommModemStatus = _stdcall_libraries['kernel32'].GetCommModemStatus
-GetCommModemStatus.restype = BOOL
-GetCommModemStatus.argtypes = [HANDLE, LPDWORD]
-
-LPDCB = POINTER(_DCB)
-
-GetCommState = _stdcall_libraries['kernel32'].GetCommState
-GetCommState.restype = BOOL
-GetCommState.argtypes = [HANDLE, LPDCB]
-
-LPCOMMTIMEOUTS = POINTER(_COMMTIMEOUTS)
-
-GetCommTimeouts = _stdcall_libraries['kernel32'].GetCommTimeouts
-GetCommTimeouts.restype = BOOL
-GetCommTimeouts.argtypes = [HANDLE, LPCOMMTIMEOUTS]
-
-PurgeComm = _stdcall_libraries['kernel32'].PurgeComm
-PurgeComm.restype = BOOL
-PurgeComm.argtypes = [HANDLE, DWORD]
-
-SetCommBreak = _stdcall_libraries['kernel32'].SetCommBreak
-SetCommBreak.restype = BOOL
-SetCommBreak.argtypes = [HANDLE]
-
-SetCommMask = _stdcall_libraries['kernel32'].SetCommMask
-SetCommMask.restype = BOOL
-SetCommMask.argtypes = [HANDLE, DWORD]
-
-SetCommState = _stdcall_libraries['kernel32'].SetCommState
-SetCommState.restype = BOOL
-SetCommState.argtypes = [HANDLE, LPDCB]
-
-SetCommTimeouts = _stdcall_libraries['kernel32'].SetCommTimeouts
-SetCommTimeouts.restype = BOOL
-SetCommTimeouts.argtypes = [HANDLE, LPCOMMTIMEOUTS]
-
-WaitForSingleObject = _stdcall_libraries['kernel32'].WaitForSingleObject
-WaitForSingleObject.restype = DWORD
-WaitForSingleObject.argtypes = [HANDLE, DWORD]
-
-ONESTOPBIT = 0 # Variable c_int
-TWOSTOPBITS = 2 # Variable c_int
-ONE5STOPBITS = 1
-
-NOPARITY = 0 # Variable c_int
-ODDPARITY = 1 # Variable c_int
-EVENPARITY = 2 # Variable c_int
-MARKPARITY = 3
-SPACEPARITY = 4
-
-RTS_CONTROL_HANDSHAKE = 2 # Variable c_int
-RTS_CONTROL_DISABLE = 0 # Variable c_int
-RTS_CONTROL_ENABLE = 1 # Variable c_int
-RTS_CONTROL_TOGGLE = 3 # Variable c_int
-SETRTS = 3
-CLRRTS = 4
-
-DTR_CONTROL_HANDSHAKE = 2 # Variable c_int
-DTR_CONTROL_DISABLE = 0 # Variable c_int
-DTR_CONTROL_ENABLE = 1 # Variable c_int
-SETDTR = 5
-CLRDTR = 6
-
-MS_DSR_ON = 32 # Variable c_ulong
-EV_RING = 256 # Variable c_int
-EV_PERR = 512 # Variable c_int
-EV_ERR = 128 # Variable c_int
-SETXOFF = 1 # Variable c_int
-EV_RXCHAR = 1 # Variable c_int
-GENERIC_WRITE = 1073741824 # Variable c_long
-PURGE_TXCLEAR = 4 # Variable c_int
-FILE_FLAG_OVERLAPPED = 1073741824 # Variable c_int
-EV_DSR = 16 # Variable c_int
-MAXDWORD = 4294967295L # Variable c_uint
-EV_RLSD = 32 # Variable c_int
-ERROR_IO_PENDING = 997 # Variable c_long
-MS_CTS_ON = 16 # Variable c_ulong
-EV_EVENT1 = 2048 # Variable c_int
-EV_RX80FULL = 1024 # Variable c_int
-PURGE_RXABORT = 2 # Variable c_int
-FILE_ATTRIBUTE_NORMAL = 128 # Variable c_int
-PURGE_TXABORT = 1 # Variable c_int
-SETXON = 2 # Variable c_int
-OPEN_EXISTING = 3 # Variable c_int
-MS_RING_ON = 64 # Variable c_ulong
-EV_TXEMPTY = 4 # Variable c_int
-EV_RXFLAG = 2 # Variable c_int
-MS_RLSD_ON = 128 # Variable c_ulong
-GENERIC_READ = 2147483648L # Variable c_ulong
-EV_EVENT2 = 4096 # Variable c_int
-EV_CTS = 8 # Variable c_int
-EV_BREAK = 64 # Variable c_int
-PURGE_RXCLEAR = 8 # Variable c_int
-INFINITE = 0xFFFFFFFFL
-
-
-class N11_OVERLAPPED4DOLLAR_48E(Union):
- pass
-class N11_OVERLAPPED4DOLLAR_484DOLLAR_49E(Structure):
- pass
-N11_OVERLAPPED4DOLLAR_484DOLLAR_49E._fields_ = [
- ('Offset', DWORD),
- ('OffsetHigh', DWORD),
-]
-
-PVOID = c_void_p
-
-N11_OVERLAPPED4DOLLAR_48E._anonymous_ = ['_0']
-N11_OVERLAPPED4DOLLAR_48E._fields_ = [
- ('_0', N11_OVERLAPPED4DOLLAR_484DOLLAR_49E),
- ('Pointer', PVOID),
-]
-_OVERLAPPED._anonymous_ = ['_0']
-_OVERLAPPED._fields_ = [
- ('Internal', ULONG_PTR),
- ('InternalHigh', ULONG_PTR),
- ('_0', N11_OVERLAPPED4DOLLAR_48E),
- ('hEvent', HANDLE),
-]
-_SECURITY_ATTRIBUTES._fields_ = [
- ('nLength', DWORD),
- ('lpSecurityDescriptor', LPVOID),
- ('bInheritHandle', BOOL),
-]
-_COMSTAT._fields_ = [
- ('fCtsHold', DWORD, 1),
- ('fDsrHold', DWORD, 1),
- ('fRlsdHold', DWORD, 1),
- ('fXoffHold', DWORD, 1),
- ('fXoffSent', DWORD, 1),
- ('fEof', DWORD, 1),
- ('fTxim', DWORD, 1),
- ('fReserved', DWORD, 25),
- ('cbInQue', DWORD),
- ('cbOutQue', DWORD),
-]
-_DCB._fields_ = [
- ('DCBlength', DWORD),
- ('BaudRate', DWORD),
- ('fBinary', DWORD, 1),
- ('fParity', DWORD, 1),
- ('fOutxCtsFlow', DWORD, 1),
- ('fOutxDsrFlow', DWORD, 1),
- ('fDtrControl', DWORD, 2),
- ('fDsrSensitivity', DWORD, 1),
- ('fTXContinueOnXoff', DWORD, 1),
- ('fOutX', DWORD, 1),
- ('fInX', DWORD, 1),
- ('fErrorChar', DWORD, 1),
- ('fNull', DWORD, 1),
- ('fRtsControl', DWORD, 2),
- ('fAbortOnError', DWORD, 1),
- ('fDummy2', DWORD, 17),
- ('wReserved', WORD),
- ('XonLim', WORD),
- ('XoffLim', WORD),
- ('ByteSize', BYTE),
- ('Parity', BYTE),
- ('StopBits', BYTE),
- ('XonChar', c_char),
- ('XoffChar', c_char),
- ('ErrorChar', c_char),
- ('EofChar', c_char),
- ('EvtChar', c_char),
- ('wReserved1', WORD),
-]
-_COMMTIMEOUTS._fields_ = [
- ('ReadIntervalTimeout', DWORD),
- ('ReadTotalTimeoutMultiplier', DWORD),
- ('ReadTotalTimeoutConstant', DWORD),
- ('WriteTotalTimeoutMultiplier', DWORD),
- ('WriteTotalTimeoutConstant', DWORD),
-]
-__all__ = ['GetLastError', 'MS_CTS_ON', 'FILE_ATTRIBUTE_NORMAL',
- 'DTR_CONTROL_ENABLE', '_COMSTAT', 'MS_RLSD_ON',
- 'GetOverlappedResult', 'SETXON', 'PURGE_TXABORT',
- 'PurgeComm', 'N11_OVERLAPPED4DOLLAR_48E', 'EV_RING',
- 'ONESTOPBIT', 'SETXOFF', 'PURGE_RXABORT', 'GetCommState',
- 'RTS_CONTROL_ENABLE', '_DCB', 'CreateEvent',
- '_COMMTIMEOUTS', '_SECURITY_ATTRIBUTES', 'EV_DSR',
- 'EV_PERR', 'EV_RXFLAG', 'OPEN_EXISTING', 'DCB',
- 'FILE_FLAG_OVERLAPPED', 'EV_CTS', 'SetupComm',
- 'LPOVERLAPPED', 'EV_TXEMPTY', 'ClearCommBreak',
- 'LPSECURITY_ATTRIBUTES', 'SetCommBreak', 'SetCommTimeouts',
- 'COMMTIMEOUTS', 'ODDPARITY', 'EV_RLSD',
- 'GetCommModemStatus', 'EV_EVENT2', 'PURGE_TXCLEAR',
- 'EV_BREAK', 'EVENPARITY', 'LPCVOID', 'COMSTAT', 'ReadFile',
- 'PVOID', '_OVERLAPPED', 'WriteFile', 'GetCommTimeouts',
- 'ResetEvent', 'EV_RXCHAR', 'LPCOMSTAT', 'ClearCommError',
- 'ERROR_IO_PENDING', 'EscapeCommFunction', 'GENERIC_READ',
- 'RTS_CONTROL_HANDSHAKE', 'OVERLAPPED',
- 'DTR_CONTROL_HANDSHAKE', 'PURGE_RXCLEAR', 'GENERIC_WRITE',
- 'LPDCB', 'CreateEventW', 'SetCommMask', 'EV_EVENT1',
- 'SetCommState', 'LPVOID', 'CreateFileW', 'LPDWORD',
- 'EV_RX80FULL', 'TWOSTOPBITS', 'LPCOMMTIMEOUTS', 'MAXDWORD',
- 'MS_DSR_ON', 'MS_RING_ON',
- 'N11_OVERLAPPED4DOLLAR_484DOLLAR_49E', 'EV_ERR',
- 'ULONG_PTR', 'CreateFile', 'NOPARITY', 'CloseHandle']
diff --git a/lib/python2.7/site-packages/setuptools.pth b/lib/python2.7/site-packages/setuptools.pth
deleted file mode 100644
index aa07b92..0000000
--- a/lib/python2.7/site-packages/setuptools.pth
+++ /dev/null
@@ -1 +0,0 @@
-./distribute-0.6.24-py2.7.egg
diff --git a/lib/python2.7/site-packages/south/__init__.py b/lib/python2.7/site-packages/south/__init__.py
deleted file mode 100644
index 86642c6..0000000
--- a/lib/python2.7/site-packages/south/__init__.py
+++ /dev/null
@@ -1,9 +0,0 @@
-"""
-South - Useable migrations for Django apps
-"""
-
-__version__ = "0.8.4"
-__authors__ = [
- "Andrew Godwin <andrew@aeracode.org>",
- "Andy McCurdy <andy@andymccurdy.com>"
-]
diff --git a/lib/python2.7/site-packages/south/creator/__init__.py b/lib/python2.7/site-packages/south/creator/__init__.py
deleted file mode 100644
index 96a1a80..0000000
--- a/lib/python2.7/site-packages/south/creator/__init__.py
+++ /dev/null
@@ -1,5 +0,0 @@
-"""
-The creator module is responsible for making new migration files, either
-as blank templates or autodetecting changes. It contains code that used to
-all be in startmigration.py.
-"""
diff --git a/lib/python2.7/site-packages/south/creator/actions.py b/lib/python2.7/site-packages/south/creator/actions.py
deleted file mode 100644
index 2ffc8ca..0000000
--- a/lib/python2.7/site-packages/south/creator/actions.py
+++ /dev/null
@@ -1,559 +0,0 @@
-"""
-Actions - things like 'a model was removed' or 'a field was changed'.
-Each one has a class, which can take the action description and insert code
-blocks into the forwards() and backwards() methods, in the right place.
-"""
-
-from __future__ import print_function
-
-import sys
-
-from django.db.models.fields.related import RECURSIVE_RELATIONSHIP_CONSTANT
-from django.db.models.fields import FieldDoesNotExist, NOT_PROVIDED, CharField, TextField
-
-from south.modelsinspector import value_clean
-from south.creator.freezer import remove_useless_attributes, model_key
-from south.utils import datetime_utils
-from south.utils.py3 import raw_input
-
-
-class Action(object):
- """
- Generic base Action class. Contains utility methods for inserting into
- the forwards() and backwards() method lists.
- """
-
- prepend_forwards = False
- prepend_backwards = False
-
- def forwards_code(self):
- raise NotImplementedError
-
- def backwards_code(self):
- raise NotImplementedError
-
- def add_forwards(self, forwards):
- if self.prepend_forwards:
- forwards.insert(0, self.forwards_code())
- else:
- forwards.append(self.forwards_code())
-
- def add_backwards(self, backwards):
- if self.prepend_backwards:
- backwards.insert(0, self.backwards_code())
- else:
- backwards.append(self.backwards_code())
-
- def console_line(self):
- "Returns the string to print on the console, e.g. ' + Added field foo'"
- raise NotImplementedError
-
- @classmethod
- def triples_to_defs(cls, fields):
- # Turn the (class, args, kwargs) format into a string
- for field, triple in fields.items():
- fields[field] = cls.triple_to_def(triple)
- return fields
-
- @classmethod
- def triple_to_def(cls, triple):
- "Turns a single triple into a definition."
- return "self.gf(%r)(%s)" % (
- triple[0], # Field full path
- ", ".join(triple[1] + ["%s=%s" % (kwd, val) for kwd, val in triple[2].items()]), # args and kwds
- )
-
-
-class AddModel(Action):
- """
- Addition of a model. Takes the Model subclass that is being created.
- """
-
- FORWARDS_TEMPLATE = '''
- # Adding model '%(model_name)s'
- db.create_table(%(table_name)r, (
- %(field_defs)s
- ))
- db.send_create_signal(%(app_label)r, [%(model_name)r])'''[1:] + "\n"
-
- BACKWARDS_TEMPLATE = '''
- # Deleting model '%(model_name)s'
- db.delete_table(%(table_name)r)'''[1:] + "\n"
-
- def __init__(self, model, model_def):
- self.model = model
- self.model_def = model_def
-
- def console_line(self):
- "Returns the string to print on the console, e.g. ' + Added field foo'"
- return " + Added model %s.%s" % (
- self.model._meta.app_label,
- self.model._meta.object_name,
- )
-
- def forwards_code(self):
- "Produces the code snippet that gets put into forwards()"
- field_defs = ",\n ".join([
- "(%r, %s)" % (name, defn) for name, defn
- in self.triples_to_defs(self.model_def).items()
- ]) + ","
-
- return self.FORWARDS_TEMPLATE % {
- "model_name": self.model._meta.object_name,
- "table_name": self.model._meta.db_table,
- "app_label": self.model._meta.app_label,
- "field_defs": field_defs,
- }
-
- def backwards_code(self):
- "Produces the code snippet that gets put into backwards()"
- return self.BACKWARDS_TEMPLATE % {
- "model_name": self.model._meta.object_name,
- "table_name": self.model._meta.db_table,
- }
-
-
-class DeleteModel(AddModel):
- """
- Deletion of a model. Takes the Model subclass that is being created.
- """
-
- def console_line(self):
- "Returns the string to print on the console, e.g. ' + Added field foo'"
- return " - Deleted model %s.%s" % (
- self.model._meta.app_label,
- self.model._meta.object_name,
- )
-
- def forwards_code(self):
- return AddModel.backwards_code(self)
-
- def backwards_code(self):
- return AddModel.forwards_code(self)
-
-
-class _NullIssuesField(object):
- """
- A field that might need to ask a question about rogue NULL values.
- """
-
- issue_with_backward_migration = False
- irreversible = False
-
- IRREVERSIBLE_TEMPLATE = '''
- # User chose to not deal with backwards NULL issues for '%(model_name)s.%(field_name)s'
- raise RuntimeError("Cannot reverse this migration. '%(model_name)s.%(field_name)s' and its values cannot be restored.")
-
- # The following code is provided here to aid in writing a correct migration'''
-
- def deal_with_not_null_no_default(self, field, field_def):
- # If it's a CharField or TextField that's blank, skip this step.
- if isinstance(field, (CharField, TextField)) and field.blank:
- field_def[2]['default'] = repr("")
- return
- # Oh dear. Ask them what to do.
- print(" ? The field '%s.%s' does not have a default specified, yet is NOT NULL." % (
- self.model._meta.object_name,
- field.name,
- ))
- print(" ? Since you are %s, you MUST specify a default" % self.null_reason)
- print(" ? value to use for existing rows. Would you like to:")
- print(" ? 1. Quit now"+("." if self.issue_with_backward_migration else ", and add a default to the field in models.py" ))
- print(" ? 2. Specify a one-off value to use for existing columns now")
- if self.issue_with_backward_migration:
- print(" ? 3. Disable the backwards migration by raising an exception; you can edit the migration to fix it later")
- while True:
- choice = raw_input(" ? Please select a choice: ")
- if choice == "1":
- sys.exit(1)
- elif choice == "2":
- break
- elif choice == "3" and self.issue_with_backward_migration:
- break
- else:
- print(" ! Invalid choice.")
- if choice == "2":
- self.add_one_time_default(field, field_def)
- elif choice == "3":
- self.irreversible = True
-
- def add_one_time_default(self, field, field_def):
- # OK, they want to pick their own one-time default. Who are we to refuse?
- print(" ? Please enter Python code for your one-off default value.")
- print(" ? The datetime module is available, so you can do e.g. datetime.date.today()")
- while True:
- code = raw_input(" >>> ")
- if not code:
- print(" ! Please enter some code, or 'exit' (with no quotes) to exit.")
- elif code == "exit":
- sys.exit(1)
- else:
- try:
- result = eval(code, {}, {"datetime": datetime_utils})
- except (SyntaxError, NameError) as e:
- print(" ! Invalid input: %s" % e)
- else:
- break
- # Right, add the default in.
- field_def[2]['default'] = value_clean(result)
-
- def irreversable_code(self, field):
- return self.IRREVERSIBLE_TEMPLATE % {
- "model_name": self.model._meta.object_name,
- "table_name": self.model._meta.db_table,
- "field_name": field.name,
- "field_column": field.column,
- }
-
-
-class AddField(Action, _NullIssuesField):
- """
- Adds a field to a model. Takes a Model class and the field name.
- """
-
- null_reason = "adding this field"
-
- FORWARDS_TEMPLATE = '''
- # Adding field '%(model_name)s.%(field_name)s'
- db.add_column(%(table_name)r, %(field_name)r,
- %(field_def)s,
- keep_default=False)'''[1:] + "\n"
-
- BACKWARDS_TEMPLATE = '''
- # Deleting field '%(model_name)s.%(field_name)s'
- db.delete_column(%(table_name)r, %(field_column)r)'''[1:] + "\n"
-
- def __init__(self, model, field, field_def):
- self.model = model
- self.field = field
- self.field_def = field_def
-
- # See if they've made a NOT NULL column but also have no default (far too common)
- is_null = self.field.null
- default = (self.field.default is not None) and (self.field.default is not NOT_PROVIDED)
-
- if not is_null and not default:
- self.deal_with_not_null_no_default(self.field, self.field_def)
-
- def console_line(self):
- "Returns the string to print on the console, e.g. ' + Added field foo'"
- return " + Added field %s on %s.%s" % (
- self.field.name,
- self.model._meta.app_label,
- self.model._meta.object_name,
- )
-
- def forwards_code(self):
-
- return self.FORWARDS_TEMPLATE % {
- "model_name": self.model._meta.object_name,
- "table_name": self.model._meta.db_table,
- "field_name": self.field.name,
- "field_column": self.field.column,
- "field_def": self.triple_to_def(self.field_def),
- }
-
- def backwards_code(self):
- return self.BACKWARDS_TEMPLATE % {
- "model_name": self.model._meta.object_name,
- "table_name": self.model._meta.db_table,
- "field_name": self.field.name,
- "field_column": self.field.column,
- }
-
-
-class DeleteField(AddField):
- """
- Removes a field from a model. Takes a Model class and the field name.
- """
-
- null_reason = "removing this field"
- issue_with_backward_migration = True
-
- def console_line(self):
- "Returns the string to print on the console, e.g. ' + Added field foo'"
- return " - Deleted field %s on %s.%s" % (
- self.field.name,
- self.model._meta.app_label,
- self.model._meta.object_name,
- )
-
- def forwards_code(self):
- return AddField.backwards_code(self)
-
- def backwards_code(self):
- if not self.irreversible:
- return AddField.forwards_code(self)
- else:
- return self.irreversable_code(self.field) + AddField.forwards_code(self)
-
-
-class ChangeField(Action, _NullIssuesField):
- """
- Changes a field's type/options on a model.
- """
-
- null_reason = "making this field non-nullable"
-
- FORWARDS_TEMPLATE = BACKWARDS_TEMPLATE = '''
- # Changing field '%(model_name)s.%(field_name)s'
- db.alter_column(%(table_name)r, %(field_column)r, %(field_def)s)'''
-
- RENAME_TEMPLATE = '''
- # Renaming column for '%(model_name)s.%(field_name)s' to match new field type.
- db.rename_column(%(table_name)r, %(old_column)r, %(new_column)r)'''
-
- def __init__(self, model, old_field, new_field, old_def, new_def):
- self.model = model
- self.old_field = old_field
- self.new_field = new_field
- self.old_def = old_def
- self.new_def = new_def
-
- # See if they've changed a not-null field to be null
- new_default = (self.new_field.default is not None) and (self.new_field.default is not NOT_PROVIDED)
- old_default = (self.old_field.default is not None) and (self.old_field.default is not NOT_PROVIDED)
- if self.old_field.null and not self.new_field.null and not new_default:
- self.deal_with_not_null_no_default(self.new_field, self.new_def)
- if not self.old_field.null and self.new_field.null and not old_default:
- self.null_reason = "making this field nullable"
- self.issue_with_backward_migration = True
- self.deal_with_not_null_no_default(self.old_field, self.old_def)
-
- def console_line(self):
- "Returns the string to print on the console, e.g. ' + Added field foo'"
- return " ~ Changed field %s on %s.%s" % (
- self.new_field.name,
- self.model._meta.app_label,
- self.model._meta.object_name,
- )
-
- def _code(self, old_field, new_field, new_def):
-
- output = ""
-
- if self.old_field.column != self.new_field.column:
- output += self.RENAME_TEMPLATE % {
- "model_name": self.model._meta.object_name,
- "table_name": self.model._meta.db_table,
- "field_name": new_field.name,
- "old_column": old_field.column,
- "new_column": new_field.column,
- }
-
- output += self.FORWARDS_TEMPLATE % {
- "model_name": self.model._meta.object_name,
- "table_name": self.model._meta.db_table,
- "field_name": new_field.name,
- "field_column": new_field.column,
- "field_def": self.triple_to_def(new_def),
- }
-
- return output
-
- def forwards_code(self):
- return self._code(self.old_field, self.new_field, self.new_def)
-
- def backwards_code(self):
- change_code = self._code(self.new_field, self.old_field, self.old_def)
- if not self.irreversible:
- return change_code
- else:
- return self.irreversable_code(self.old_field) + change_code
-
-
-class AddUnique(Action):
- """
- Adds a unique constraint to a model. Takes a Model class and the field names.
- """
-
- FORWARDS_TEMPLATE = '''
- # Adding unique constraint on '%(model_name)s', fields %(field_names)s
- db.create_unique(%(table_name)r, %(fields)r)'''[1:] + "\n"
-
- BACKWARDS_TEMPLATE = '''
- # Removing unique constraint on '%(model_name)s', fields %(field_names)s
- db.delete_unique(%(table_name)r, %(fields)r)'''[1:] + "\n"
-
- prepend_backwards = True
-
- def __init__(self, model, fields):
- self.model = model
- self.fields = fields
-
- def console_line(self):
- "Returns the string to print on the console, e.g. ' + Added field foo'"
- return " + Added unique constraint for %s on %s.%s" % (
- [x.name for x in self.fields],
- self.model._meta.app_label,
- self.model._meta.object_name,
- )
-
- def forwards_code(self):
-
- return self.FORWARDS_TEMPLATE % {
- "model_name": self.model._meta.object_name,
- "table_name": self.model._meta.db_table,
- "fields": [field.column for field in self.fields],
- "field_names": [field.name for field in self.fields],
- }
-
- def backwards_code(self):
- return self.BACKWARDS_TEMPLATE % {
- "model_name": self.model._meta.object_name,
- "table_name": self.model._meta.db_table,
- "fields": [field.column for field in self.fields],
- "field_names": [field.name for field in self.fields],
- }
-
-
-class DeleteUnique(AddUnique):
- """
- Removes a unique constraint from a model. Takes a Model class and the field names.
- """
-
- prepend_forwards = True
- prepend_backwards = False
-
- def console_line(self):
- "Returns the string to print on the console, e.g. ' + Added field foo'"
- return " - Deleted unique constraint for %s on %s.%s" % (
- [x.name for x in self.fields],
- self.model._meta.app_label,
- self.model._meta.object_name,
- )
-
- def forwards_code(self):
- return AddUnique.backwards_code(self)
-
- def backwards_code(self):
- return AddUnique.forwards_code(self)
-
-
-class AddIndex(AddUnique):
- """
- Adds an index to a model field[s]. Takes a Model class and the field names.
- """
-
- FORWARDS_TEMPLATE = '''
- # Adding index on '%(model_name)s', fields %(field_names)s
- db.create_index(%(table_name)r, %(fields)r)'''[1:] + "\n"
-
- BACKWARDS_TEMPLATE = '''
- # Removing index on '%(model_name)s', fields %(field_names)s
- db.delete_index(%(table_name)r, %(fields)r)'''[1:] + "\n"
-
- def console_line(self):
- "Returns the string to print on the console, e.g. ' + Added field foo'"
- return " + Added index for %s on %s.%s" % (
- [x.name for x in self.fields],
- self.model._meta.app_label,
- self.model._meta.object_name,
- )
-
-
-class DeleteIndex(AddIndex):
- """
- Deletes an index off a model field[s]. Takes a Model class and the field names.
- """
-
- def console_line(self):
- "Returns the string to print on the console, e.g. ' + Added field foo'"
- return " + Deleted index for %s on %s.%s" % (
- [x.name for x in self.fields],
- self.model._meta.app_label,
- self.model._meta.object_name,
- )
-
- def forwards_code(self):
- return AddIndex.backwards_code(self)
-
- def backwards_code(self):
- return AddIndex.forwards_code(self)
-
-
-class AddM2M(Action):
- """
- Adds a unique constraint to a model. Takes a Model class and the field names.
- """
-
- FORWARDS_TEMPLATE = '''
- # Adding M2M table for field %(field_name)s on '%(model_name)s'
- m2m_table_name = %(table_name)s
- db.create_table(m2m_table_name, (
- ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
- (%(left_field)r, models.ForeignKey(orm[%(left_model_key)r], null=False)),
- (%(right_field)r, models.ForeignKey(orm[%(right_model_key)r], null=False))
- ))
- db.create_unique(m2m_table_name, [%(left_column)r, %(right_column)r])'''[1:] + "\n"
-
- BACKWARDS_TEMPLATE = '''
- # Removing M2M table for field %(field_name)s on '%(model_name)s'
- db.delete_table(%(table_name)s)'''[1:] + "\n"
-
- def __init__(self, model, field):
- self.model = model
- self.field = field
-
- def console_line(self):
- "Returns the string to print on the console, e.g. ' + Added field foo'"
- return " + Added M2M table for %s on %s.%s" % (
- self.field.name,
- self.model._meta.app_label,
- self.model._meta.object_name,
- )
-
- def table_name(self):
- # This is part of a workaround for the fact that Django uses
- # different shortening for automatically generated m2m table names
- # (as opposed to any explicitly specified table name)
- f = self.field
- explicit = f.db_table
- if explicit:
- return "%r" % explicit
- else:
- auto = "%s_%s" % (self.model._meta.db_table, f.name)
- return 'db.shorten_name(%r)' % auto
-
- def forwards_code(self):
-
- return self.FORWARDS_TEMPLATE % {
- "model_name": self.model._meta.object_name,
- "field_name": self.field.name,
- "table_name": self.table_name(),
- "left_field": self.field.m2m_column_name()[:-3], # Remove the _id part
- "left_column": self.field.m2m_column_name(),
- "left_model_key": model_key(self.model),
- "right_field": self.field.m2m_reverse_name()[:-3], # Remove the _id part
- "right_column": self.field.m2m_reverse_name(),
- "right_model_key": model_key(self.field.rel.to),
- }
-
- def backwards_code(self):
-
- return self.BACKWARDS_TEMPLATE % {
- "model_name": self.model._meta.object_name,
- "field_name": self.field.name,
- "table_name": self.table_name(),
- }
-
-
-class DeleteM2M(AddM2M):
- """
- Adds a unique constraint to a model. Takes a Model class and the field names.
- """
-
- def console_line(self):
- "Returns the string to print on the console, e.g. ' + Added field foo'"
- return " - Deleted M2M table for %s on %s.%s" % (
- self.field.name,
- self.model._meta.app_label,
- self.model._meta.object_name,
- )
-
- def forwards_code(self):
- return AddM2M.backwards_code(self)
-
- def backwards_code(self):
- return AddM2M.forwards_code(self)
-
diff --git a/lib/python2.7/site-packages/south/creator/changes.py b/lib/python2.7/site-packages/south/creator/changes.py
deleted file mode 100644
index 6cdbd19..0000000
--- a/lib/python2.7/site-packages/south/creator/changes.py
+++ /dev/null
@@ -1,506 +0,0 @@
-"""
-Contains things to detect changes - either using options passed in on the
-commandline, or by using autodetection, etc.
-"""
-
-from __future__ import print_function
-
-from django.db import models
-from django.contrib.contenttypes.generic import GenericRelation
-from django.utils.datastructures import SortedDict
-
-from south.creator.freezer import remove_useless_attributes, freeze_apps, model_key
-from south.utils import auto_through
-from south.utils.py3 import string_types
-
-class BaseChanges(object):
- """
- Base changes class.
- """
- def suggest_name(self):
- return ''
-
- def split_model_def(self, model, model_def):
- """
- Given a model and its model def (a dict of field: triple), returns three
- items: the real fields dict, the Meta dict, and the M2M fields dict.
- """
- real_fields = SortedDict()
- meta = SortedDict()
- m2m_fields = SortedDict()
- for name, triple in model_def.items():
- if name == "Meta":
- meta = triple
- elif isinstance(model._meta.get_field_by_name(name)[0], models.ManyToManyField):
- m2m_fields[name] = triple
- else:
- real_fields[name] = triple
- return real_fields, meta, m2m_fields
-
- def current_model_from_key(self, key):
- app_label, model_name = key.split(".")
- return models.get_model(app_label, model_name)
-
- def current_field_from_key(self, key, fieldname):
- app_label, model_name = key.split(".")
- # Special, for the magical field from order_with_respect_to
- if fieldname == "_order":
- field = models.IntegerField()
- field.name = "_order"
- field.attname = "_order"
- field.column = "_order"
- field.default = 0
- return field
- # Otherwise, normal.
- return models.get_model(app_label, model_name)._meta.get_field_by_name(fieldname)[0]
-
-
-class AutoChanges(BaseChanges):
- """
- Detects changes by 'diffing' two sets of frozen model definitions.
- """
-
- # Field types we don't generate add/remove field changes for.
- IGNORED_FIELD_TYPES = [
- GenericRelation,
- ]
-
- def __init__(self, migrations, old_defs, old_orm, new_defs):
- self.migrations = migrations
- self.old_defs = old_defs
- self.old_orm = old_orm
- self.new_defs = new_defs
-
- def suggest_name(self):
- parts = ["auto"]
- for change_name, params in self.get_changes():
- if change_name == "AddModel":
- parts.append("add_%s" % params['model']._meta.object_name.lower())
- elif change_name == "DeleteModel":
- parts.append("del_%s" % params['model']._meta.object_name.lower())
- elif change_name == "AddField":
- parts.append("add_field_%s_%s" % (
- params['model']._meta.object_name.lower(),
- params['field'].name,
- ))
- elif change_name == "DeleteField":
- parts.append("del_field_%s_%s" % (
- params['model']._meta.object_name.lower(),
- params['field'].name,
- ))
- elif change_name == "ChangeField":
- parts.append("chg_field_%s_%s" % (
- params['model']._meta.object_name.lower(),
- params['new_field'].name,
- ))
- elif change_name == "AddUnique":
- parts.append("add_unique_%s_%s" % (
- params['model']._meta.object_name.lower(),
- "_".join([x.name for x in params['fields']]),
- ))
- elif change_name == "DeleteUnique":
- parts.append("del_unique_%s_%s" % (
- params['model']._meta.object_name.lower(),
- "_".join([x.name for x in params['fields']]),
- ))
- elif change_name == "AddIndex":
- parts.append("add_index_%s_%s" % (
- params['model']._meta.object_name.lower(),
- "_".join([x.name for x in params['fields']]),
- ))
- elif change_name == "DeleteIndex":
- parts.append("del_index_%s_%s" % (
- params['model']._meta.object_name.lower(),
- "_".join([x.name for x in params['fields']]),
- ))
- return ("__".join(parts))[:70]
-
- def get_changes(self):
- """
- Returns the difference between the old and new sets of models as a 5-tuple:
- added_models, deleted_models, added_fields, deleted_fields, changed_fields
- """
-
- deleted_models = set()
-
- # See if anything's vanished
- for key in self.old_defs:
- if key not in self.new_defs:
- # We shouldn't delete it if it was managed=False
- old_fields, old_meta, old_m2ms = self.split_model_def(self.old_orm[key], self.old_defs[key])
- if old_meta.get("managed", "True") != "False":
- # Alright, delete it.
- yield ("DeleteModel", {
- "model": self.old_orm[key],
- "model_def": old_fields,
- })
- # Also make sure we delete any M2Ms it had.
- for fieldname in old_m2ms:
- # Only delete its stuff if it wasn't a through=.
- field = self.old_orm[key + ":" + fieldname]
- if auto_through(field):
- yield ("DeleteM2M", {"model": self.old_orm[key], "field": field})
- # And any index/uniqueness constraints it had
- for attr, operation in (("unique_together", "DeleteUnique"), ("index_together", "DeleteIndex")):
- together = eval(old_meta.get(attr, "[]"))
- if together:
- # If it's only a single tuple, make it into the longer one
- if isinstance(together[0], string_types):
- together = [together]
- # For each combination, make an action for it
- for fields in together:
- yield (operation, {
- "model": self.old_orm[key],
- "fields": [self.old_orm[key]._meta.get_field_by_name(x)[0] for x in fields],
- })
- # We always add it in here so we ignore it later
- deleted_models.add(key)
-
- # Or appeared
- for key in self.new_defs:
- if key not in self.old_defs:
- # We shouldn't add it if it's managed=False
- new_fields, new_meta, new_m2ms = self.split_model_def(self.current_model_from_key(key), self.new_defs[key])
- if new_meta.get("managed", "True") != "False":
- yield ("AddModel", {
- "model": self.current_model_from_key(key),
- "model_def": new_fields,
- })
- # Also make sure we add any M2Ms it has.
- for fieldname in new_m2ms:
- # Only create its stuff if it wasn't a through=.
- field = self.current_field_from_key(key, fieldname)
- if auto_through(field):
- yield ("AddM2M", {"model": self.current_model_from_key(key), "field": field})
- # And any index/uniqueness constraints it has
- for attr, operation in (("unique_together", "AddUnique"), ("index_together", "AddIndex")):
- together = eval(new_meta.get(attr, "[]"))
- if together:
- # If it's only a single tuple, make it into the longer one
- if isinstance(together[0], string_types):
- together = [together]
- # For each combination, make an action for it
- for fields in together:
- yield (operation, {
- "model": self.current_model_from_key(key),
- "fields": [self.current_model_from_key(key)._meta.get_field_by_name(x)[0] for x in fields],
- })
-
- # Now, for every model that's stayed the same, check its fields.
- for key in self.old_defs:
- if key not in deleted_models:
-
- old_fields, old_meta, old_m2ms = self.split_model_def(self.old_orm[key], self.old_defs[key])
- new_fields, new_meta, new_m2ms = self.split_model_def(self.current_model_from_key(key), self.new_defs[key])
-
- # Do nothing for models which are now not managed.
- if new_meta.get("managed", "True") == "False":
- continue
-
- # Find fields that have vanished.
- for fieldname in old_fields:
- if fieldname not in new_fields:
- # Don't do it for any fields we're ignoring
- field = self.old_orm[key + ":" + fieldname]
- field_allowed = True
- for field_type in self.IGNORED_FIELD_TYPES:
- if isinstance(field, field_type):
- field_allowed = False
- if field_allowed:
- # Looks alright.
- yield ("DeleteField", {
- "model": self.old_orm[key],
- "field": field,
- "field_def": old_fields[fieldname],
- })
-
- # And ones that have appeared
- for fieldname in new_fields:
- if fieldname not in old_fields:
- # Don't do it for any fields we're ignoring
- field = self.current_field_from_key(key, fieldname)
- field_allowed = True
- for field_type in self.IGNORED_FIELD_TYPES:
- if isinstance(field, field_type):
- field_allowed = False
- if field_allowed:
- # Looks alright.
- yield ("AddField", {
- "model": self.current_model_from_key(key),
- "field": field,
- "field_def": new_fields[fieldname],
- })
-
- # Find M2Ms that have vanished
- for fieldname in old_m2ms:
- if fieldname not in new_m2ms:
- # Only delete its stuff if it wasn't a through=.
- field = self.old_orm[key + ":" + fieldname]
- if auto_through(field):
- yield ("DeleteM2M", {"model": self.old_orm[key], "field": field})
-
- # Find M2Ms that have appeared
- for fieldname in new_m2ms:
- if fieldname not in old_m2ms:
- # Only create its stuff if it wasn't a through=.
- field = self.current_field_from_key(key, fieldname)
- if auto_through(field):
- yield ("AddM2M", {"model": self.current_model_from_key(key), "field": field})
-
- # For the ones that exist in both models, see if they were changed
- for fieldname in set(old_fields).intersection(set(new_fields)):
- # Non-index changes
- if self.different_attributes(
- remove_useless_attributes(old_fields[fieldname], True, True),
- remove_useless_attributes(new_fields[fieldname], True, True)):
- yield ("ChangeField", {
- "model": self.current_model_from_key(key),
- "old_field": self.old_orm[key + ":" + fieldname],
- "new_field": self.current_field_from_key(key, fieldname),
- "old_def": old_fields[fieldname],
- "new_def": new_fields[fieldname],
- })
- # Index changes
- old_field = self.old_orm[key + ":" + fieldname]
- new_field = self.current_field_from_key(key, fieldname)
- if not old_field.db_index and new_field.db_index:
- # They've added an index.
- yield ("AddIndex", {
- "model": self.current_model_from_key(key),
- "fields": [new_field],
- })
- if old_field.db_index and not new_field.db_index:
- # They've removed an index.
- yield ("DeleteIndex", {
- "model": self.old_orm[key],
- "fields": [old_field],
- })
- # See if their uniques have changed
- if old_field.unique != new_field.unique:
- # Make sure we look at the one explicitly given to see what happened
- if new_field.unique:
- yield ("AddUnique", {
- "model": self.current_model_from_key(key),
- "fields": [new_field],
- })
- else:
- yield ("DeleteUnique", {
- "model": self.old_orm[key],
- "fields": [old_field],
- })
-
- # See if there's any M2Ms that have changed.
- for fieldname in set(old_m2ms).intersection(set(new_m2ms)):
- old_field = self.old_orm[key + ":" + fieldname]
- new_field = self.current_field_from_key(key, fieldname)
- # Have they _added_ a through= ?
- if auto_through(old_field) and not auto_through(new_field):
- yield ("DeleteM2M", {"model": self.old_orm[key], "field": old_field})
- # Have they _removed_ a through= ?
- if not auto_through(old_field) and auto_through(new_field):
- yield ("AddM2M", {"model": self.current_model_from_key(key), "field": new_field})
-
- ## See if the {index,unique}_togethers have changed
- for attr, add_operation, del_operation in (("unique_together", "AddUnique", "DeleteUnique"), ("index_together", "AddIndex", "DeleteIndex")):
- # First, normalise them into lists of sets.
- old_together = eval(old_meta.get(attr, "[]"))
- new_together = eval(new_meta.get(attr, "[]"))
- if old_together and isinstance(old_together[0], string_types):
- old_together = [old_together]
- if new_together and isinstance(new_together[0], string_types):
- new_together = [new_together]
- old_together = frozenset(tuple(o) for o in old_together)
- new_together = frozenset(tuple(n) for n in new_together)
- # See if any appeared or disappeared
- disappeared = old_together.difference(new_together)
- appeared = new_together.difference(old_together)
- for item in disappeared:
- yield (del_operation, {
- "model": self.old_orm[key],
- "fields": [self.old_orm[key + ":" + x] for x in item],
- })
- for item in appeared:
- yield (add_operation, {
- "model": self.current_model_from_key(key),
- "fields": [self.current_field_from_key(key, x) for x in item],
- })
-
- @classmethod
- def is_triple(cls, triple):
- "Returns whether the argument is a triple."
- return isinstance(triple, (list, tuple)) and len(triple) == 3 and \
- isinstance(triple[0], string_types) and \
- isinstance(triple[1], (list, tuple)) and \
- isinstance(triple[2], dict)
-
- @classmethod
- def different_attributes(cls, old, new):
- """
- Backwards-compat comparison that ignores orm. on the RHS and not the left
- and which knows django.db.models.fields.CharField = models.CharField.
- Has a whole load of tests in tests/autodetection.py.
- """
-
- # If they're not triples, just do normal comparison
- if not cls.is_triple(old) or not cls.is_triple(new):
- return old != new
-
- # Expand them out into parts
- old_field, old_pos, old_kwd = old
- new_field, new_pos, new_kwd = new
-
- # Copy the positional and keyword arguments so we can compare them and pop off things
- old_pos, new_pos = old_pos[:], new_pos[:]
- old_kwd = dict(old_kwd.items())
- new_kwd = dict(new_kwd.items())
-
- # Remove comparison of the existence of 'unique', that's done elsewhere.
- # TODO: Make this work for custom fields where unique= means something else?
- if "unique" in old_kwd:
- del old_kwd['unique']
- if "unique" in new_kwd:
- del new_kwd['unique']
-
- # If the first bit is different, check it's not by dj.db.models...
- if old_field != new_field:
- if old_field.startswith("models.") and (new_field.startswith("django.db.models") \
- or new_field.startswith("django.contrib.gis")):
- if old_field.split(".")[-1] != new_field.split(".")[-1]:
- return True
- else:
- # Remove those fields from the final comparison
- old_field = new_field = ""
-
- # If there's a positional argument in the first, and a 'to' in the second,
- # see if they're actually comparable.
- if (old_pos and "to" in new_kwd) and ("orm" in new_kwd['to'] and "orm" not in old_pos[0]):
- # Do special comparison to fix #153
- try:
- if old_pos[0] != new_kwd['to'].split("'")[1].split(".")[1]:
- return True
- except IndexError:
- pass # Fall back to next comparison
- # Remove those attrs from the final comparison
- old_pos = old_pos[1:]
- del new_kwd['to']
-
- return old_field != new_field or old_pos != new_pos or old_kwd != new_kwd
-
-
-class ManualChanges(BaseChanges):
- """
- Detects changes by reading the command line.
- """
-
- def __init__(self, migrations, added_models, added_fields, added_indexes):
- self.migrations = migrations
- self.added_models = added_models
- self.added_fields = added_fields
- self.added_indexes = added_indexes
-
- def suggest_name(self):
- bits = []
- for model_name in self.added_models:
- bits.append('add_model_%s' % model_name)
- for field_name in self.added_fields:
- bits.append('add_field_%s' % field_name)
- for index_name in self.added_indexes:
- bits.append('add_index_%s' % index_name)
- return '_'.join(bits).replace('.', '_')
-
- def get_changes(self):
- # Get the model defs so we can use them for the yield later
- model_defs = freeze_apps([self.migrations.app_label()])
- # Make the model changes
- for model_name in self.added_models:
- model = models.get_model(self.migrations.app_label(), model_name)
- real_fields, meta, m2m_fields = self.split_model_def(model, model_defs[model_key(model)])
- yield ("AddModel", {
- "model": model,
- "model_def": real_fields,
- })
- # And the field changes
- for field_desc in self.added_fields:
- try:
- model_name, field_name = field_desc.split(".")
- except (TypeError, ValueError):
- raise ValueError("%r is not a valid field description." % field_desc)
- model = models.get_model(self.migrations.app_label(), model_name)
- real_fields, meta, m2m_fields = self.split_model_def(model, model_defs[model_key(model)])
- yield ("AddField", {
- "model": model,
- "field": model._meta.get_field_by_name(field_name)[0],
- "field_def": real_fields[field_name],
- })
- # And the indexes
- for field_desc in self.added_indexes:
- try:
- model_name, field_name = field_desc.split(".")
- except (TypeError, ValueError):
- print("%r is not a valid field description." % field_desc)
- model = models.get_model(self.migrations.app_label(), model_name)
- yield ("AddIndex", {
- "model": model,
- "fields": [model._meta.get_field_by_name(field_name)[0]],
- })
-
-
-class InitialChanges(BaseChanges):
- """
- Creates all models; handles --initial.
- """
- def suggest_name(self):
- return 'initial'
-
- def __init__(self, migrations):
- self.migrations = migrations
-
- def get_changes(self):
- # Get the frozen models for this app
- model_defs = freeze_apps([self.migrations.app_label()])
-
- for model in models.get_models(models.get_app(self.migrations.app_label())):
-
- # Don't do anything for unmanaged, abstract or proxy models
- if model._meta.abstract or getattr(model._meta, "proxy", False) or not getattr(model._meta, "managed", True):
- continue
-
- real_fields, meta, m2m_fields = self.split_model_def(model, model_defs[model_key(model)])
-
- # Firstly, add the main table and fields
- yield ("AddModel", {
- "model": model,
- "model_def": real_fields,
- })
-
- # Then, add any indexing/uniqueness that's around
- if meta:
- for attr, operation in (("unique_together", "AddUnique"), ("index_together", "AddIndex")):
- together = eval(meta.get(attr, "[]"))
- if together:
- # If it's only a single tuple, make it into the longer one
- if isinstance(together[0], string_types):
- together = [together]
- # For each combination, make an action for it
- for fields in together:
- yield (operation, {
- "model": model,
- "fields": [model._meta.get_field_by_name(x)[0] for x in fields],
- })
-
- # Finally, see if there's some M2M action
- for name, triple in m2m_fields.items():
- field = model._meta.get_field_by_name(name)[0]
- # But only if it's not through=foo (#120)
- if field.rel.through:
- try:
- # Django 1.1 and below
- through_model = field.rel.through_model
- except AttributeError:
- # Django 1.2
- through_model = field.rel.through
- if (not field.rel.through) or getattr(through_model._meta, "auto_created", False):
- yield ("AddM2M", {
- "model": model,
- "field": field,
- })
diff --git a/lib/python2.7/site-packages/south/creator/freezer.py b/lib/python2.7/site-packages/south/creator/freezer.py
deleted file mode 100644
index 0f98cea..0000000
--- a/lib/python2.7/site-packages/south/creator/freezer.py
+++ /dev/null
@@ -1,192 +0,0 @@
-"""
-Handles freezing of models into FakeORMs.
-"""
-
-from __future__ import print_function
-
-import sys
-
-from django.db import models
-from django.db.models.base import ModelBase, Model
-from django.contrib.contenttypes.generic import GenericRelation
-
-from south.utils import get_attribute, auto_through
-from south import modelsinspector
-from south.utils.py3 import string_types
-
-def freeze_apps(apps):
- """
- Takes a list of app labels, and returns a string of their frozen form.
- """
- if isinstance(apps, string_types):
- apps = [apps]
- frozen_models = set()
- # For each app, add in all its models
- for app in apps:
- for model in models.get_models(models.get_app(app)):
- # Only add if it's not abstract or proxy
- if not model._meta.abstract and not getattr(model._meta, "proxy", False):
- frozen_models.add(model)
- # Now, add all the dependencies
- for model in list(frozen_models):
- frozen_models.update(model_dependencies(model))
- # Serialise!
- model_defs = {}
- model_classes = {}
- for model in frozen_models:
- model_defs[model_key(model)] = prep_for_freeze(model)
- model_classes[model_key(model)] = model
- # Check for any custom fields that failed to freeze.
- missing_fields = False
- for key, fields in model_defs.items():
- for field_name, value in fields.items():
- if value is None:
- missing_fields = True
- model_class = model_classes[key]
- field_class = model_class._meta.get_field_by_name(field_name)[0]
- print(" ! Cannot freeze field '%s.%s'" % (key, field_name))
- print(" ! (this field has class %s.%s)" % (field_class.__class__.__module__, field_class.__class__.__name__))
- if missing_fields:
- print("")
- print(" ! South cannot introspect some fields; this is probably because they are custom")
- print(" ! fields. If they worked in 0.6 or below, this is because we have removed the")
- print(" ! models parser (it often broke things).")
- print(" ! To fix this, read http://south.aeracode.org/wiki/MyFieldsDontWork")
- sys.exit(1)
-
- return model_defs
-
-def freeze_apps_to_string(apps):
- return pprint_frozen_models(freeze_apps(apps))
-
-###
-
-def model_key(model):
- "For a given model, return 'appname.modelname'."
- return "%s.%s" % (model._meta.app_label, model._meta.object_name.lower())
-
-def prep_for_freeze(model):
- """
- Takes a model and returns the ready-to-serialise dict (all you need
- to do is just pretty-print it).
- """
- fields = modelsinspector.get_model_fields(model, m2m=True)
- # Remove useless attributes (like 'choices')
- for name, field in fields.items():
- fields[name] = remove_useless_attributes(field)
- # See if there's a Meta
- fields['Meta'] = remove_useless_meta(modelsinspector.get_model_meta(model))
- # Add in our own special items to track the object name and managed
- fields['Meta']['object_name'] = model._meta.object_name # Special: not eval'able.
- if not getattr(model._meta, "managed", True):
- fields['Meta']['managed'] = repr(model._meta.managed)
- return fields
-
-### Dependency resolvers
-
-def model_dependencies(model, checked_models=None):
- """
- Returns a set of models this one depends on to be defined; things like
- OneToOneFields as ID, ForeignKeys everywhere, etc.
- """
- depends = set()
- checked_models = checked_models or set()
- # Get deps for each field
- for field in model._meta.fields + model._meta.many_to_many:
- depends.update(field_dependencies(field, checked_models))
- # Add in any non-abstract bases
- for base in model.__bases__:
- if issubclass(base, models.Model) and hasattr(base, '_meta') and not base._meta.abstract:
- depends.add(base)
- # Now recurse
- new_to_check = depends - checked_models
- while new_to_check:
- checked_model = new_to_check.pop()
- if checked_model == model or checked_model in checked_models:
- continue
- checked_models.add(checked_model)
- deps = model_dependencies(checked_model, checked_models)
- # Loop through dependencies...
- for dep in deps:
- # If the new dep is not already checked, add to the queue
- if (dep not in depends) and (dep not in new_to_check) and (dep not in checked_models):
- new_to_check.add(dep)
- depends.add(dep)
- return depends
-
-def field_dependencies(field, checked_models=None):
- checked_models = checked_models or set()
- depends = set()
- arg_defs, kwarg_defs = modelsinspector.matching_details(field)
- for attrname, options in arg_defs + list(kwarg_defs.values()):
- if options.get("ignore_if_auto_through", False) and auto_through(field):
- continue
- if options.get("is_value", False):
- value = attrname
- elif attrname == 'rel.through' and hasattr(getattr(field, 'rel', None), 'through_model'):
- # Hack for django 1.1 and below, where the through model is stored
- # in rel.through_model while rel.through stores only the model name.
- value = field.rel.through_model
- else:
- try:
- value = get_attribute(field, attrname)
- except AttributeError:
- if options.get("ignore_missing", False):
- continue
- raise
- if isinstance(value, Model):
- value = value.__class__
- if not isinstance(value, ModelBase):
- continue
- if getattr(value._meta, "proxy", False):
- value = value._meta.proxy_for_model
- if value in checked_models:
- continue
- checked_models.add(value)
- depends.add(value)
- depends.update(model_dependencies(value, checked_models))
-
- return depends
-
-### Prettyprinters
-
-def pprint_frozen_models(models):
- return "{\n %s\n }" % ",\n ".join([
- "%r: %s" % (name, pprint_fields(fields))
- for name, fields in sorted(models.items())
- ])
-
-def pprint_fields(fields):
- return "{\n %s\n }" % ",\n ".join([
- "%r: %r" % (name, defn)
- for name, defn in sorted(fields.items())
- ])
-
-### Output sanitisers
-
-USELESS_KEYWORDS = ["choices", "help_text", "verbose_name"]
-USELESS_DB_KEYWORDS = ["related_name", "default", "blank"] # Important for ORM, not for DB.
-INDEX_KEYWORDS = ["db_index"]
-
-def remove_useless_attributes(field, db=False, indexes=False):
- "Removes useless (for database) attributes from the field's defn."
- # Work out what to remove, and remove it.
- keywords = USELESS_KEYWORDS[:]
- if db:
- keywords += USELESS_DB_KEYWORDS[:]
- if indexes:
- keywords += INDEX_KEYWORDS[:]
- if field:
- for name in keywords:
- if name in field[2]:
- del field[2][name]
- return field
-
-USELESS_META = ["verbose_name", "verbose_name_plural"]
-def remove_useless_meta(meta):
- "Removes useless (for database) attributes from the table's meta."
- if meta:
- for name in USELESS_META:
- if name in meta:
- del meta[name]
- return meta
diff --git a/lib/python2.7/site-packages/south/db/__init__.py b/lib/python2.7/site-packages/south/db/__init__.py
deleted file mode 100644
index b9b7168..0000000
--- a/lib/python2.7/site-packages/south/db/__init__.py
+++ /dev/null
@@ -1,83 +0,0 @@
-
-# Establish the common DatabaseOperations instance, which we call 'db'.
-# Much thanks to cmkmrr for a lot of the code base here
-
-from django.conf import settings
-import sys
-
-# A few aliases, because there's FQMNs now
-engine_modules = {
- 'django.db.backends.postgresql_psycopg2': 'postgresql_psycopg2',
- 'django.db.backends.sqlite3': 'sqlite3',
- 'django.db.backends.mysql': 'mysql',
- 'mysql_oursql.standard': 'mysql',
- 'django.db.backends.oracle': 'oracle',
- 'sql_server.pyodbc': 'sql_server.pyodbc', #django-pyodbc-azure
- 'django_pyodbc': 'sql_server.pyodbc', #django-pyodbc
- 'sqlserver_ado': 'sql_server.pyodbc', #django-mssql
- 'firebird': 'firebird', #django-firebird
- 'django.contrib.gis.db.backends.postgis': 'postgresql_psycopg2',
- 'django.contrib.gis.db.backends.spatialite': 'sqlite3',
- 'django.contrib.gis.db.backends.mysql': 'mysql',
- 'django.contrib.gis.db.backends.oracle': 'oracle',
- 'doj.backends.zxjdbc.postgresql': 'postgresql_psycopg2', #django-jython
- 'doj.backends.zxjdbc.mysql': 'mysql', #django-jython
- 'doj.backends.zxjdbc.oracle': 'oracle', #django-jython
-}
-
-# First, work out if we're multi-db or not, and which databases we have
-try:
- from django.db import DEFAULT_DB_ALIAS
-except ImportError:
- #### 1.1 or below ####
- # We'll 'fake' multi-db; set the default alias
- DEFAULT_DB_ALIAS = 'default'
- # SOUTH_DATABASE_ADAPTER is an optional override if you have a different module
- engine = getattr(settings, "SOUTH_DATABASE_ADAPTER", "south.db.%s" % settings.DATABASE_ENGINE)
- # And then, we have one database with one engine
- db_engines = {DEFAULT_DB_ALIAS: engine}
-else:
- #### 1.2 or above ####
- # Loop over the defined databases, gathering up their engines
- db_engines = dict([
- # Note we check to see if contrib.gis has overridden us.
- (alias, "south.db.%s" % engine_modules[db_settings['ENGINE']])
- for alias, db_settings in settings.DATABASES.items()
- if db_settings['ENGINE'] in engine_modules
- ])
- # Update with any overrides
- db_engines.update(getattr(settings, "SOUTH_DATABASE_ADAPTERS", {}))
- # Check there's no None engines, or...
- for alias, engine in db_engines.items():
- if engine is None:
- # They've used a backend we don't support
- sys.stderr.write(
- (
- "There is no South database module for your database backend '%s'. " + \
- "Please either choose a supported database, check for " + \
- "SOUTH_DATABASE_ADAPTER[S] settings, " + \
- "or remove South from INSTALLED_APPS.\n"
- ) % (settings.DATABASES[alias]['ENGINE'],)
- )
- sys.exit(1)
-
-# Now, turn that into a dict of <alias: south db module>
-dbs = {}
-try:
- for alias, module_name in db_engines.items():
- module = __import__(module_name, {}, {}, [''])
- dbs[alias] = module.DatabaseOperations(alias)
-except ImportError:
- # This error should only be triggered on 1.1 and below.
- sys.stderr.write(
- (
- "There is no South database module '%s' for your database. " + \
- "Please either choose a supported database, check for " + \
- "SOUTH_DATABASE_ADAPTER[S] settings, " + \
- "or remove South from INSTALLED_APPS.\n"
- ) % (module_name,)
- )
- sys.exit(1)
-
-# Finally, to make old migrations work, keep 'db' around as the default database
-db = dbs[DEFAULT_DB_ALIAS]
diff --git a/lib/python2.7/site-packages/south/db/firebird.py b/lib/python2.7/site-packages/south/db/firebird.py
deleted file mode 100644
index a079819..0000000
--- a/lib/python2.7/site-packages/south/db/firebird.py
+++ /dev/null
@@ -1,362 +0,0 @@
-# firebird
-
-from __future__ import print_function
-
-import datetime
-
-from django.db import connection, models
-from django.core.management.color import no_style
-from django.db.utils import DatabaseError
-
-from south.db import generic
-from south.utils.py3 import string_types
-
-class DatabaseOperations(generic.DatabaseOperations):
- backend_name = 'firebird'
- alter_string_set_type = 'ALTER %(column)s TYPE %(type)s'
- alter_string_set_default = 'ALTER %(column)s SET DEFAULT %(default)s;'
- alter_string_drop_null = ''
- add_column_string = 'ALTER TABLE %s ADD %s;'
- delete_column_string = 'ALTER TABLE %s DROP %s;'
- rename_table_sql = ''
-
- # Features
- allows_combined_alters = False
- has_booleans = False
-
- def _fill_constraint_cache(self, db_name, table_name):
- self._constraint_cache.setdefault(db_name, {})
- self._constraint_cache[db_name][table_name] = {}
-
- rows = self.execute("""
- SELECT
- rc.RDB$CONSTRAINT_NAME,
- rc.RDB$CONSTRAINT_TYPE,
- cc.RDB$TRIGGER_NAME
- FROM rdb$relation_constraints rc
- JOIN rdb$check_constraints cc
- ON rc.rdb$constraint_name = cc.rdb$constraint_name
- WHERE rc.rdb$constraint_type = 'NOT NULL'
- AND rc.rdb$relation_name = '%s'
- """ % table_name)
-
- for constraint, kind, column in rows:
- self._constraint_cache[db_name][table_name].setdefault(column, set())
- self._constraint_cache[db_name][table_name][column].add((kind, constraint))
- return
-
- def _alter_column_set_null(self, table_name, column_name, is_null):
- sql = """
- UPDATE RDB$RELATION_FIELDS SET RDB$NULL_FLAG = %(null_flag)s
- WHERE RDB$FIELD_NAME = '%(column)s'
- AND RDB$RELATION_NAME = '%(table_name)s'
- """
- null_flag = 'NULL' if is_null else '1'
- return sql % {
- 'null_flag': null_flag,
- 'column': column_name.upper(),
- 'table_name': table_name.upper()
- }
-
- def _column_has_default(self, params):
- sql = """
- SELECT a.RDB$DEFAULT_VALUE
- FROM RDB$RELATION_FIELDS a
- WHERE a.RDB$FIELD_NAME = '%(column)s'
- AND a.RDB$RELATION_NAME = '%(table_name)s'
- """
- value = self.execute(sql % params)
- return True if value else False
-
-
- def _alter_set_defaults(self, field, name, params, sqls):
- "Subcommand of alter_column that sets default values (overrideable)"
- # Historically, we used to set defaults here.
- # But since South 0.8, we don't ever set defaults on alter-column -- we only
- # use database-level defaults as scaffolding when adding columns.
- # However, we still sometimes need to remove defaults in alter-column.
- if self._column_has_default(params):
- sqls.append(('ALTER COLUMN %s DROP DEFAULT' % (self.quote_name(name),), []))
-
-
- @generic.invalidate_table_constraints
- def create_table(self, table_name, fields):
- columns = []
- autoinc_sql = ''
-
- for field_name, field in fields:
- # avoid default values in CREATE TABLE statements (#925)
- field._suppress_default = True
-
- col = self.column_sql(table_name, field_name, field)
- if not col:
- continue
-
- columns.append(col)
- if isinstance(field, models.AutoField):
- field_name = field.db_column or field.column
- autoinc_sql = connection.ops.autoinc_sql(table_name, field_name)
-
- self.execute(self.create_table_sql % {
- "table": self.quote_name(table_name),
- "columns": ', '.join([col for col in columns if col]),
- })
-
- if autoinc_sql:
- self.execute(autoinc_sql[0])
- self.execute(autoinc_sql[1])
-
- def rename_table(self, old_table_name, table_name):
- """
- Renames table is not supported by firebird.
- This involve recreate all related objects (store procedure, views, triggers, etc)
- """
- pass
-
- @generic.invalidate_table_constraints
- def delete_table(self, table_name, cascade=False):
- """
- Deletes the table 'table_name'.
- Firebird will also delete any triggers associated with the table.
- """
- super(DatabaseOperations, self).delete_table(table_name, cascade=False)
-
- # Also, drop sequence if exists
- sql = connection.ops.drop_sequence_sql(table_name)
- if sql:
- try:
- self.execute(sql)
- except:
- pass
-
- def column_sql(self, table_name, field_name, field, tablespace='', with_name=True, field_prepared=False):
- """
- Creates the SQL snippet for a column. Used by add_column and add_table.
- """
-
- # If the field hasn't already been told its attribute name, do so.
- if not field_prepared:
- field.set_attributes_from_name(field_name)
-
- # hook for the field to do any resolution prior to it's attributes being queried
- if hasattr(field, 'south_init'):
- field.south_init()
-
- # Possible hook to fiddle with the fields (e.g. defaults & TEXT on MySQL)
- field = self._field_sanity(field)
-
- try:
- sql = field.db_type(connection=self._get_connection())
- except TypeError:
- sql = field.db_type()
-
- if sql:
- # Some callers, like the sqlite stuff, just want the extended type.
- if with_name:
- field_output = [self.quote_name(field.column), sql]
- else:
- field_output = [sql]
-
- if field.primary_key:
- field_output.append('NOT NULL PRIMARY KEY')
- elif field.unique:
- # Just use UNIQUE (no indexes any more, we have delete_unique)
- field_output.append('UNIQUE')
-
- sql = ' '.join(field_output)
- sqlparams = ()
-
- # if the field is "NOT NULL" and a default value is provided, create the column with it
- # this allows the addition of a NOT NULL field to a table with existing rows
- if not getattr(field, '_suppress_default', False):
- if field.has_default():
- default = field.get_default()
- # If the default is actually None, don't add a default term
- if default is not None:
- # If the default is a callable, then call it!
- if callable(default):
- default = default()
- # Now do some very cheap quoting. TODO: Redesign return values to avoid this.
- if isinstance(default, string_types):
- default = "'%s'" % default.replace("'", "''")
- elif isinstance(default, (datetime.date, datetime.time, datetime.datetime)):
- default = "'%s'" % default
- elif isinstance(default, bool):
- default = int(default)
- # Escape any % signs in the output (bug #317)
- if isinstance(default, string_types):
- default = default.replace("%", "%%")
- # Add it in
- sql += " DEFAULT %s"
- sqlparams = (default)
- elif (not field.null and field.blank) or (field.get_default() == ''):
- if field.empty_strings_allowed and self._get_connection().features.interprets_empty_strings_as_nulls:
- sql += " DEFAULT ''"
- # Error here would be nice, but doesn't seem to play fair.
- #else:
- # raise ValueError("Attempting to add a non null column that isn't character based without an explicit default value.")
-
- # Firebird need set not null after of default value keyword
- if not field.primary_key and not field.null:
- sql += ' NOT NULL'
-
- if field.rel and self.supports_foreign_keys:
- self.add_deferred_sql(
- self.foreign_key_sql(
- table_name,
- field.column,
- field.rel.to._meta.db_table,
- field.rel.to._meta.get_field(field.rel.field_name).column
- )
- )
-
- # Things like the contrib.gis module fields have this in 1.1 and below
- if hasattr(field, 'post_create_sql'):
- for stmt in field.post_create_sql(no_style(), table_name):
- self.add_deferred_sql(stmt)
-
- # Avoid double index creation (#1317)
- # Firebird creates an index implicity for each foreign key field
- # sql_indexes_for_field tries to create an index for that field too
- if not field.rel:
- # In 1.2 and above, you have to ask the DatabaseCreation stuff for it.
- # This also creates normal indexes in 1.1.
- if hasattr(self._get_connection().creation, "sql_indexes_for_field"):
- # Make a fake model to pass in, with only db_table
- model = self.mock_model("FakeModelForGISCreation", table_name)
- for stmt in self._get_connection().creation.sql_indexes_for_field(model, field, no_style()):
- self.add_deferred_sql(stmt)
-
- if sql:
- return sql % sqlparams
- else:
- return None
-
-
- def _drop_constraints(self, table_name, name, field):
- if self.has_check_constraints:
- check_constraints = self._constraints_affecting_columns(table_name, [name], "CHECK")
- for constraint in check_constraints:
- self.execute(self.delete_check_sql % {
- 'table': self.quote_name(table_name),
- 'constraint': self.quote_name(constraint),
- })
-
- # Drop or add UNIQUE constraint
- unique_constraint = list(self._constraints_affecting_columns(table_name, [name], "UNIQUE"))
- if field.unique and not unique_constraint:
- self.create_unique(table_name, [name])
- elif not field.unique and unique_constraint:
- self.delete_unique(table_name, [name])
-
- # Drop all foreign key constraints
- try:
- self.delete_foreign_key(table_name, name)
- except ValueError:
- # There weren't any
- pass
-
-
- @generic.invalidate_table_constraints
- def alter_column(self, table_name, name, field, explicit_name=True, ignore_constraints=False):
- """
- Alters the given column name so it will match the given field.
- Note that conversion between the two by the database must be possible.
- Will not automatically add _id by default; to have this behavour, pass
- explicit_name=False.
-
- @param table_name: The name of the table to add the column to
- @param name: The name of the column to alter
- @param field: The new field definition to use
- """
-
- if self.dry_run:
- if self.debug:
- print(' - no dry run output for alter_column() due to dynamic DDL, sorry')
- return
-
-
- # hook for the field to do any resolution prior to it's attributes being queried
- if hasattr(field, 'south_init'):
- field.south_init()
-
- # Add _id or whatever if we need to
- field.set_attributes_from_name(name)
- if not explicit_name:
- name = field.column
- else:
- field.column = name
-
- if not ignore_constraints:
- # Drop all check constraints. Note that constraints will be added back
- # with self.alter_string_set_type and self.alter_string_drop_null.
- self._drop_constraints(table_name, name, field)
-
- # First, change the type
- params = {
- "column": self.quote_name(name),
- "type": self._db_type_for_alter_column(field),
- "table_name": table_name
- }
-
- # SQLs is a list of (SQL, values) pairs.
- sqls = []
- sqls_extra = []
-
- # Only alter the column if it has a type (Geometry ones sometimes don't)
- if params["type"] is not None:
- sqls.append((self.alter_string_set_type % params, []))
-
- # Add any field- and backend- specific modifications
- self._alter_add_column_mods(field, name, params, sqls)
-
- # Next, nullity: modified, firebird doesn't support DROP NOT NULL
- sqls_extra.append(self._alter_column_set_null(table_name, name, field.null))
-
- # Next, set any default
- self._alter_set_defaults(field, name, params, sqls)
-
- # Finally, actually change the column
- if self.allows_combined_alters:
- sqls, values = list(zip(*sqls))
- self.execute(
- "ALTER TABLE %s %s;" % (self.quote_name(table_name), ", ".join(sqls)),
- generic.flatten(values),
- )
- else:
- # Databases like e.g. MySQL don't like more than one alter at once.
- for sql, values in sqls:
- try:
- self.execute("ALTER TABLE %s %s;" % (self.quote_name(table_name), sql), values)
- except DatabaseError as e:
- print(e)
-
-
- # Execute extra sql, which don't need ALTER TABLE statement
- for sql in sqls_extra:
- self.execute(sql)
-
- if not ignore_constraints:
- # Add back FK constraints if needed
- if field.rel and self.supports_foreign_keys:
- self.execute(
- self.foreign_key_sql(
- table_name,
- field.column,
- field.rel.to._meta.db_table,
- field.rel.to._meta.get_field(field.rel.field_name).column
- )
- )
-
- @generic.copy_column_constraints
- @generic.delete_column_constraints
- def rename_column(self, table_name, old, new):
- if old == new:
- # Short-circuit out
- return []
-
- self.execute('ALTER TABLE %s ALTER %s TO %s;' % (
- self.quote_name(table_name),
- self.quote_name(old),
- self.quote_name(new),
- ))
diff --git a/lib/python2.7/site-packages/south/db/generic.py b/lib/python2.7/site-packages/south/db/generic.py
deleted file mode 100644
index 5c19354..0000000
--- a/lib/python2.7/site-packages/south/db/generic.py
+++ /dev/null
@@ -1,1164 +0,0 @@
-from __future__ import print_function
-
-import re
-import sys
-
-from django.core.management.color import no_style
-from django.db import transaction, models
-from django.db.utils import DatabaseError
-from django.db.backends.util import truncate_name
-from django.db.backends.creation import BaseDatabaseCreation
-from django.db.models.fields import NOT_PROVIDED
-from django.dispatch import dispatcher
-from django.conf import settings
-from django.utils.datastructures import SortedDict
-try:
- from django.utils.functional import cached_property
-except ImportError:
- class cached_property(object):
- """
- Decorator that creates converts a method with a single
- self argument into a property cached on the instance.
- """
- def __init__(self, func):
- self.func = func
-
- def __get__(self, instance, type):
- res = instance.__dict__[self.func.__name__] = self.func(instance)
- return res
-
-from south.logger import get_logger
-from south.utils.py3 import string_types, text_type
-
-
-def alias(attrname):
- """
- Returns a function which calls 'attrname' - for function aliasing.
- We can't just use foo = bar, as this breaks subclassing.
- """
- def func(self, *args, **kwds):
- return getattr(self, attrname)(*args, **kwds)
- return func
-
-
-def invalidate_table_constraints(func):
- def _cache_clear(self, table, *args, **opts):
- self._set_cache(table, value=INVALID)
- return func(self, table, *args, **opts)
- return _cache_clear
-
-
-def delete_column_constraints(func):
- def _column_rm(self, table, column, *args, **opts):
- self._set_cache(table, column, value=[])
- return func(self, table, column, *args, **opts)
- return _column_rm
-
-
-def copy_column_constraints(func):
- def _column_cp(self, table, column_old, column_new, *args, **opts):
- db_name = self._get_setting('NAME')
- self._set_cache(table, column_new, value=self.lookup_constraint(db_name, table, column_old))
- return func(self, table, column_old, column_new, *args, **opts)
- return _column_cp
-
-
-class INVALID(Exception):
- def __repr__(self):
- return 'INVALID'
-
-
-class DryRunError(ValueError):
- pass
-
-
-class DatabaseOperations(object):
- """
- Generic SQL implementation of the DatabaseOperations.
- Some of this code comes from Django Evolution.
- """
-
- alter_string_set_type = 'ALTER COLUMN %(column)s TYPE %(type)s'
- alter_string_set_null = 'ALTER COLUMN %(column)s DROP NOT NULL'
- alter_string_drop_null = 'ALTER COLUMN %(column)s SET NOT NULL'
- delete_check_sql = 'ALTER TABLE %(table)s DROP CONSTRAINT %(constraint)s'
- add_column_string = 'ALTER TABLE %s ADD COLUMN %s;'
- delete_unique_sql = "ALTER TABLE %s DROP CONSTRAINT %s"
- delete_foreign_key_sql = 'ALTER TABLE %(table)s DROP CONSTRAINT %(constraint)s'
- create_table_sql = 'CREATE TABLE %(table)s (%(columns)s)'
- max_index_name_length = 63
- drop_index_string = 'DROP INDEX %(index_name)s'
- delete_column_string = 'ALTER TABLE %s DROP COLUMN %s CASCADE;'
- create_primary_key_string = "ALTER TABLE %(table)s ADD CONSTRAINT %(constraint)s PRIMARY KEY (%(columns)s)"
- delete_primary_key_sql = "ALTER TABLE %(table)s DROP CONSTRAINT %(constraint)s"
- add_check_constraint_fragment = "ADD CONSTRAINT %(constraint)s CHECK (%(check)s)"
- rename_table_sql = "ALTER TABLE %s RENAME TO %s;"
- backend_name = None
- default_schema_name = "public"
-
- # Features
- allows_combined_alters = True
- supports_foreign_keys = True
- has_check_constraints = True
- has_booleans = True
- raises_default_errors = True
-
- @cached_property
- def has_ddl_transactions(self):
- """
- Tests the database using feature detection to see if it has
- transactional DDL support.
- """
- self._possibly_initialise()
- connection = self._get_connection()
- if hasattr(connection.features, "confirm") and not connection.features._confirmed:
- connection.features.confirm()
- # Django 1.3's MySQLdb backend doesn't raise DatabaseError
- exceptions = (DatabaseError, )
- try:
- from MySQLdb import OperationalError
- exceptions += (OperationalError, )
- except ImportError:
- pass
- # Now do the test
- if getattr(connection.features, 'supports_transactions', True):
- cursor = connection.cursor()
- self.start_transaction()
- cursor.execute('CREATE TABLE DDL_TRANSACTION_TEST (X INT)')
- self.rollback_transaction()
- try:
- try:
- cursor.execute('CREATE TABLE DDL_TRANSACTION_TEST (X INT)')
- except exceptions:
- return False
- else:
- return True
- finally:
- cursor.execute('DROP TABLE DDL_TRANSACTION_TEST')
- else:
- return False
-
- def __init__(self, db_alias):
- self.debug = False
- self.deferred_sql = []
- self.dry_run = False
- self.pending_transactions = 0
- self.pending_create_signals = []
- self.db_alias = db_alias
- self._constraint_cache = {}
- self._initialised = False
-
- def lookup_constraint(self, db_name, table_name, column_name=None):
- """ return a set() of constraints for db_name.table_name.column_name """
- def _lookup():
- table = self._constraint_cache[db_name][table_name]
- if table is INVALID:
- raise INVALID
- elif column_name is None:
- return list(table.items())
- else:
- return table[column_name]
-
- try:
- ret = _lookup()
- return ret
- except INVALID:
- del self._constraint_cache[db_name][table_name]
- self._fill_constraint_cache(db_name, table_name)
- except KeyError:
- if self._is_valid_cache(db_name, table_name):
- return []
- self._fill_constraint_cache(db_name, table_name)
-
- return self.lookup_constraint(db_name, table_name, column_name)
-
- def _set_cache(self, table_name, column_name=None, value=INVALID):
- db_name = self._get_setting('NAME')
- try:
- if column_name is not None:
- self._constraint_cache[db_name][table_name][column_name] = value
- else:
- self._constraint_cache[db_name][table_name] = value
- except (LookupError, TypeError):
- pass
-
- def _is_valid_cache(self, db_name, table_name):
- # we cache per-table so if the table is there it is valid
- try:
- return self._constraint_cache[db_name][table_name] is not INVALID
- except KeyError:
- return False
-
- def _is_multidb(self):
- try:
- from django.db import connections
- connections # Prevents "unused import" warning
- except ImportError:
- return False
- else:
- return True
-
- def _get_connection(self):
- """
- Returns a django connection for a given DB Alias
- """
- if self._is_multidb():
- from django.db import connections
- return connections[self.db_alias]
- else:
- from django.db import connection
- return connection
-
- def _get_setting(self, setting_name):
- """
- Allows code to get a setting (like, for example, STORAGE_ENGINE)
- """
- setting_name = setting_name.upper()
- connection = self._get_connection()
- if self._is_multidb():
- # Django 1.2 and above
- return connection.settings_dict[setting_name]
- else:
- # Django 1.1 and below
- return getattr(settings, "DATABASE_%s" % setting_name)
-
- def _has_setting(self, setting_name):
- """
- Existence-checking version of _get_setting.
- """
- try:
- self._get_setting(setting_name)
- except (KeyError, AttributeError):
- return False
- else:
- return True
-
- def _get_schema_name(self):
- try:
- return self._get_setting('schema')
- except (KeyError, AttributeError):
- return self.default_schema_name
-
- def _possibly_initialise(self):
- if not self._initialised:
- self.connection_init()
- self._initialised = True
-
- def connection_init(self):
- """
- Run before any SQL to let database-specific config be sent as a command,
- e.g. which storage engine (MySQL) or transaction serialisability level.
- """
- pass
-
- def quote_name(self, name):
- """
- Uses the database backend to quote the given table/column name.
- """
- return self._get_connection().ops.quote_name(name)
-
- def _print_sql_error(self, e, sql, params=[]):
- print('FATAL ERROR - The following SQL query failed: %s' % sql, file=sys.stderr)
- print('The error was: %s' % e, file=sys.stderr)
-
- def execute(self, sql, params=[], print_all_errors=True):
- """
- Executes the given SQL statement, with optional parameters.
- If the instance's debug attribute is True, prints out what it executes.
- """
-
- self._possibly_initialise()
-
- cursor = self._get_connection().cursor()
- if self.debug:
- print(" = %s" % sql, params)
-
- if self.dry_run:
- return []
-
- get_logger().debug(text_type('execute "%s" with params "%s"' % (sql, params)))
-
- try:
- cursor.execute(sql, params)
- except DatabaseError as e:
- if print_all_errors:
- self._print_sql_error(e, sql, params)
- raise
-
- try:
- return cursor.fetchall()
- except:
- return []
-
- def execute_many(self, sql, regex=r"(?mx) ([^';]* (?:'[^']*'[^';]*)*)", comment_regex=r"(?mx) (?:^\s*$)|(?:--.*$)"):
- """
- Takes a SQL file and executes it as many separate statements.
- (Some backends, such as Postgres, don't work otherwise.)
- """
- # Be warned: This function is full of dark magic. Make sure you really
- # know regexes before trying to edit it.
- # First, strip comments
- sql = "\n".join([x.strip().replace("%", "%%") for x in re.split(comment_regex, sql) if x.strip()])
- # Now execute each statement
- for st in re.split(regex, sql)[1:][::2]:
- self.execute(st)
-
- def add_deferred_sql(self, sql):
- """
- Add a SQL statement to the deferred list, that won't be executed until
- this instance's execute_deferred_sql method is run.
- """
- self.deferred_sql.append(sql)
-
- def execute_deferred_sql(self):
- """
- Executes all deferred SQL, resetting the deferred_sql list
- """
- for sql in self.deferred_sql:
- self.execute(sql)
-
- self.deferred_sql = []
-
- def clear_deferred_sql(self):
- """
- Resets the deferred_sql list to empty.
- """
- self.deferred_sql = []
-
- def clear_run_data(self, pending_creates = None):
- """
- Resets variables to how they should be before a run. Used for dry runs.
- If you want, pass in an old panding_creates to reset to.
- """
- self.clear_deferred_sql()
- self.pending_create_signals = pending_creates or []
-
- def get_pending_creates(self):
- return self.pending_create_signals
-
- @invalidate_table_constraints
- def create_table(self, table_name, fields):
- """
- Creates the table 'table_name'. 'fields' is a tuple of fields,
- each repsented by a 2-part tuple of field name and a
- django.db.models.fields.Field object
- """
-
- if len(table_name) > 63:
- print(" ! WARNING: You have a table name longer than 63 characters; this will not fully work on PostgreSQL or MySQL.")
-
- # avoid default values in CREATE TABLE statements (#925)
- for field_name, field in fields:
- field._suppress_default = True
-
- columns = [
- self.column_sql(table_name, field_name, field)
- for field_name, field in fields
- ]
-
- self.execute(self.create_table_sql % {
- "table": self.quote_name(table_name),
- "columns": ', '.join([col for col in columns if col]),
- })
-
- add_table = alias('create_table') # Alias for consistency's sake
-
- @invalidate_table_constraints
- def rename_table(self, old_table_name, table_name):
- """
- Renames the table 'old_table_name' to 'table_name'.
- """
- if old_table_name == table_name:
- # Short-circuit out.
- return
- params = (self.quote_name(old_table_name), self.quote_name(table_name))
- self.execute(self.rename_table_sql % params)
- # Invalidate the not-yet-indexed table
- self._set_cache(table_name, value=INVALID)
-
- @invalidate_table_constraints
- def delete_table(self, table_name, cascade=True):
- """
- Deletes the table 'table_name'.
- """
- params = (self.quote_name(table_name), )
- if cascade:
- self.execute('DROP TABLE %s CASCADE;' % params)
- else:
- self.execute('DROP TABLE %s;' % params)
-
- drop_table = alias('delete_table')
-
- @invalidate_table_constraints
- def clear_table(self, table_name):
- """
- Deletes all rows from 'table_name'.
- """
- params = (self.quote_name(table_name), )
- self.execute('DELETE FROM %s;' % params)
-
- @invalidate_table_constraints
- def add_column(self, table_name, name, field, keep_default=True):
- """
- Adds the column 'name' to the table 'table_name'.
- Uses the 'field' paramater, a django.db.models.fields.Field instance,
- to generate the necessary sql
-
- @param table_name: The name of the table to add the column to
- @param name: The name of the column to add
- @param field: The field to use
- """
- sql = self.column_sql(table_name, name, field)
- if sql:
- params = (
- self.quote_name(table_name),
- sql,
- )
- sql = self.add_column_string % params
- self.execute(sql)
-
- # Now, drop the default if we need to
- if field.default is not None:
- field.default = NOT_PROVIDED
- self.alter_column(table_name, name, field, explicit_name=False, ignore_constraints=True)
-
- def _db_type_for_alter_column(self, field):
- """
- Returns a field's type suitable for ALTER COLUMN.
- By default it just returns field.db_type().
- To be overriden by backend specific subclasses
- @param field: The field to generate type for
- """
- try:
- return field.db_type(connection=self._get_connection())
- except TypeError:
- return field.db_type()
-
- def _alter_add_column_mods(self, field, name, params, sqls):
- """
- Subcommand of alter_column that modifies column definitions beyond
- the type string -- e.g. adding constraints where they cannot be specified
- as part of the type (overrideable)
- """
- pass
-
- def _alter_set_defaults(self, field, name, params, sqls):
- "Subcommand of alter_column that sets default values (overrideable)"
- # Historically, we used to set defaults here.
- # But since South 0.8, we don't ever set defaults on alter-column -- we only
- # use database-level defaults as scaffolding when adding columns.
- # However, we still sometimes need to remove defaults in alter-column.
- sqls.append(('ALTER COLUMN %s DROP DEFAULT' % (self.quote_name(name),), []))
-
- def _update_nulls_to_default(self, params, field):
- "Subcommand of alter_column that updates nulls to default value (overrideable)"
- default = field.get_db_prep_save(field.get_default(), connection=self._get_connection())
- self.execute('UPDATE %(table_name)s SET %(column)s=%%s WHERE %(column)s IS NULL' % params, [default])
-
- @invalidate_table_constraints
- def alter_column(self, table_name, name, field, explicit_name=True, ignore_constraints=False):
- """
- Alters the given column name so it will match the given field.
- Note that conversion between the two by the database must be possible.
- Will not automatically add _id by default; to have this behavour, pass
- explicit_name=False.
-
- @param table_name: The name of the table to add the column to
- @param name: The name of the column to alter
- @param field: The new field definition to use
- """
-
- if self.dry_run:
- if self.debug:
- print(' - no dry run output for alter_column() due to dynamic DDL, sorry')
- return
-
- # hook for the field to do any resolution prior to it's attributes being queried
- if hasattr(field, 'south_init'):
- field.south_init()
-
- # Add _id or whatever if we need to
- field.set_attributes_from_name(name)
- if not explicit_name:
- name = field.column
- else:
- field.column = name
-
- if not ignore_constraints:
- # Drop all check constraints. Note that constraints will be added back
- # with self.alter_string_set_type and self.alter_string_drop_null.
- if self.has_check_constraints:
- check_constraints = self._constraints_affecting_columns(table_name, [name], "CHECK")
- for constraint in check_constraints:
- self.execute(self.delete_check_sql % {
- 'table': self.quote_name(table_name),
- 'constraint': self.quote_name(constraint),
- })
-
- # Drop all foreign key constraints
- try:
- self.delete_foreign_key(table_name, name)
- except ValueError:
- # There weren't any
- pass
-
- # First, change the type
- params = {
- "column": self.quote_name(name),
- "type": self._db_type_for_alter_column(field),
- "table_name": self.quote_name(table_name)
- }
-
- # SQLs is a list of (SQL, values) pairs.
- sqls = []
-
- # Only alter the column if it has a type (Geometry ones sometimes don't)
- if params["type"] is not None:
- sqls.append((self.alter_string_set_type % params, []))
-
- # Add any field- and backend- specific modifications
- self._alter_add_column_mods(field, name, params, sqls)
- # Next, nullity
- if field.null or field.has_default():
- sqls.append((self.alter_string_set_null % params, []))
- else:
- sqls.append((self.alter_string_drop_null % params, []))
-
- # Do defaults
- self._alter_set_defaults(field, name, params, sqls)
-
- # Actually change the column (step 1 -- Nullity may need to be fixed)
- if self.allows_combined_alters:
- sqls, values = zip(*sqls)
- self.execute(
- "ALTER TABLE %s %s;" % (self.quote_name(table_name), ", ".join(sqls)),
- flatten(values),
- )
- else:
- # Databases like e.g. MySQL don't like more than one alter at once.
- for sql, values in sqls:
- self.execute("ALTER TABLE %s %s;" % (self.quote_name(table_name), sql), values)
-
- if not field.null and field.has_default():
- # Final fixes
- self._update_nulls_to_default(params, field)
- self.execute("ALTER TABLE %s %s;" % (self.quote_name(table_name), self.alter_string_drop_null % params), [])
-
- if not ignore_constraints:
- # Add back FK constraints if needed
- if field.rel and self.supports_foreign_keys:
- self.execute(
- self.foreign_key_sql(
- table_name,
- field.column,
- field.rel.to._meta.db_table,
- field.rel.to._meta.get_field(field.rel.field_name).column
- )
- )
-
- def _fill_constraint_cache(self, db_name, table_name):
-
- schema = self._get_schema_name()
- ifsc_tables = ["constraint_column_usage", "key_column_usage"]
-
- self._constraint_cache.setdefault(db_name, {})
- self._constraint_cache[db_name][table_name] = {}
-
- for ifsc_table in ifsc_tables:
- rows = self.execute("""
- SELECT kc.constraint_name, kc.column_name, c.constraint_type
- FROM information_schema.%s AS kc
- JOIN information_schema.table_constraints AS c ON
- kc.table_schema = c.table_schema AND
- kc.table_name = c.table_name AND
- kc.constraint_name = c.constraint_name
- WHERE
- kc.table_schema = %%s AND
- kc.table_name = %%s
- """ % ifsc_table, [schema, table_name])
- for constraint, column, kind in rows:
- self._constraint_cache[db_name][table_name].setdefault(column, set())
- self._constraint_cache[db_name][table_name][column].add((kind, constraint))
- return
-
- def _constraints_affecting_columns(self, table_name, columns, type="UNIQUE"):
- """
- Gets the names of the constraints affecting the given columns.
- If columns is None, returns all constraints of the type on the table.
- """
- if self.dry_run:
- raise DryRunError("Cannot get constraints for columns.")
-
- if columns is not None:
- columns = set(map(lambda s: s.lower(), columns))
-
- db_name = self._get_setting('NAME')
-
- cnames = {}
- for col, constraints in self.lookup_constraint(db_name, table_name):
- for kind, cname in constraints:
- if kind == type:
- cnames.setdefault(cname, set())
- cnames[cname].add(col.lower())
-
- for cname, cols in cnames.items():
- if cols == columns or columns is None:
- yield cname
-
- @invalidate_table_constraints
- def create_unique(self, table_name, columns):
- """
- Creates a UNIQUE constraint on the columns on the given table.
- """
-
- if not isinstance(columns, (list, tuple)):
- columns = [columns]
-
- name = self.create_index_name(table_name, columns, suffix="_uniq")
-
- cols = ", ".join(map(self.quote_name, columns))
- self.execute("ALTER TABLE %s ADD CONSTRAINT %s UNIQUE (%s)" % (
- self.quote_name(table_name),
- self.quote_name(name),
- cols,
- ))
- return name
-
- @invalidate_table_constraints
- def delete_unique(self, table_name, columns):
- """
- Deletes a UNIQUE constraint on precisely the columns on the given table.
- """
-
- if not isinstance(columns, (list, tuple)):
- columns = [columns]
-
- # Dry runs mean we can't do anything.
- if self.dry_run:
- if self.debug:
- print(' - no dry run output for delete_unique_column() due to dynamic DDL, sorry')
- return
-
- constraints = list(self._constraints_affecting_columns(table_name, columns))
- if not constraints:
- raise ValueError("Cannot find a UNIQUE constraint on table %s, columns %r" % (table_name, columns))
- for constraint in constraints:
- self.execute(self.delete_unique_sql % (
- self.quote_name(table_name),
- self.quote_name(constraint),
- ))
-
- def column_sql(self, table_name, field_name, field, tablespace='', with_name=True, field_prepared=False):
- """
- Creates the SQL snippet for a column. Used by add_column and add_table.
- """
-
- # If the field hasn't already been told its attribute name, do so.
- if not field_prepared:
- field.set_attributes_from_name(field_name)
-
- # hook for the field to do any resolution prior to it's attributes being queried
- if hasattr(field, 'south_init'):
- field.south_init()
-
- # Possible hook to fiddle with the fields (e.g. defaults & TEXT on MySQL)
- field = self._field_sanity(field)
-
- try:
- sql = field.db_type(connection=self._get_connection())
- except TypeError:
- sql = field.db_type()
-
- if sql:
-
- # Some callers, like the sqlite stuff, just want the extended type.
- if with_name:
- field_output = [self.quote_name(field.column), sql]
- else:
- field_output = [sql]
-
- field_output.append('%sNULL' % (not field.null and 'NOT ' or ''))
- if field.primary_key:
- field_output.append('PRIMARY KEY')
- elif field.unique:
- # Just use UNIQUE (no indexes any more, we have delete_unique)
- field_output.append('UNIQUE')
-
- tablespace = field.db_tablespace or tablespace
- if tablespace and getattr(self._get_connection().features, "supports_tablespaces", False) and field.unique:
- # We must specify the index tablespace inline, because we
- # won't be generating a CREATE INDEX statement for this field.
- field_output.append(self._get_connection().ops.tablespace_sql(tablespace, inline=True))
-
- sql = ' '.join(field_output)
- sqlparams = ()
- # if the field is "NOT NULL" and a default value is provided, create the column with it
- # this allows the addition of a NOT NULL field to a table with existing rows
- if not getattr(field, '_suppress_default', False):
- if field.has_default():
- default = field.get_default()
- # If the default is actually None, don't add a default term
- if default is not None:
- # If the default is a callable, then call it!
- if callable(default):
- default = default()
-
- default = field.get_db_prep_save(default, connection=self._get_connection())
- default = self._default_value_workaround(default)
- # Now do some very cheap quoting. TODO: Redesign return values to avoid this.
- if isinstance(default, string_types):
- default = "'%s'" % default.replace("'", "''")
- # Escape any % signs in the output (bug #317)
- if isinstance(default, string_types):
- default = default.replace("%", "%%")
- # Add it in
- sql += " DEFAULT %s"
- sqlparams = (default)
- elif (not field.null and field.blank) or (field.get_default() == ''):
- if field.empty_strings_allowed and self._get_connection().features.interprets_empty_strings_as_nulls:
- sql += " DEFAULT ''"
- # Error here would be nice, but doesn't seem to play fair.
- #else:
- # raise ValueError("Attempting to add a non null column that isn't character based without an explicit default value.")
-
- if field.rel and self.supports_foreign_keys:
- self.add_deferred_sql(
- self.foreign_key_sql(
- table_name,
- field.column,
- field.rel.to._meta.db_table,
- field.rel.to._meta.get_field(field.rel.field_name).column
- )
- )
-
- # Things like the contrib.gis module fields have this in 1.1 and below
- if hasattr(field, 'post_create_sql'):
- for stmt in field.post_create_sql(no_style(), table_name):
- self.add_deferred_sql(stmt)
-
- # In 1.2 and above, you have to ask the DatabaseCreation stuff for it.
- # This also creates normal indexes in 1.1.
- if hasattr(self._get_connection().creation, "sql_indexes_for_field"):
- # Make a fake model to pass in, with only db_table
- model = self.mock_model("FakeModelForGISCreation", table_name)
- for stmt in self._get_connection().creation.sql_indexes_for_field(model, field, no_style()):
- self.add_deferred_sql(stmt)
-
- if sql:
- return sql % sqlparams
- else:
- return None
-
- def _field_sanity(self, field):
- """
- Placeholder for DBMS-specific field alterations (some combos aren't valid,
- e.g. DEFAULT and TEXT on MySQL)
- """
- return field
-
- def _default_value_workaround(self, value):
- """
- DBMS-specific value alterations (this really works around
- missing functionality in Django backends)
- """
- if isinstance(value, bool) and not self.has_booleans:
- return int(value)
- else:
- return value
-
- def foreign_key_sql(self, from_table_name, from_column_name, to_table_name, to_column_name):
- """
- Generates a full SQL statement to add a foreign key constraint
- """
- constraint_name = '%s_refs_%s_%s' % (from_column_name, to_column_name, self._digest(from_table_name, to_table_name))
- return 'ALTER TABLE %s ADD CONSTRAINT %s FOREIGN KEY (%s) REFERENCES %s (%s)%s;' % (
- self.quote_name(from_table_name),
- self.quote_name(self.shorten_name(constraint_name)),
- self.quote_name(from_column_name),
- self.quote_name(to_table_name),
- self.quote_name(to_column_name),
- self._get_connection().ops.deferrable_sql() # Django knows this
- )
-
- @invalidate_table_constraints
- def delete_foreign_key(self, table_name, column):
- """
- Drop a foreign key constraint
- """
- if self.dry_run:
- if self.debug:
- print(' - no dry run output for delete_foreign_key() due to dynamic DDL, sorry')
- return # We can't look at the DB to get the constraints
- constraints = self._find_foreign_constraints(table_name, column)
- if not constraints:
- raise ValueError("Cannot find a FOREIGN KEY constraint on table %s, column %s" % (table_name, column))
- for constraint_name in constraints:
- self.execute(self.delete_foreign_key_sql % {
- "table": self.quote_name(table_name),
- "constraint": self.quote_name(constraint_name),
- })
-
- drop_foreign_key = alias('delete_foreign_key')
-
- def _find_foreign_constraints(self, table_name, column_name=None):
- constraints = self._constraints_affecting_columns(
- table_name, [column_name], "FOREIGN KEY")
-
- primary_key_columns = self._find_primary_key_columns(table_name)
-
- if len(primary_key_columns) > 1:
- # Composite primary keys cannot be referenced by a foreign key
- return list(constraints)
- else:
- primary_key_columns.add(column_name)
- recursive_constraints = set(self._constraints_affecting_columns(
- table_name, primary_key_columns, "FOREIGN KEY"))
- return list(recursive_constraints.union(constraints))
-
- def _digest(self, *args):
- """
- Use django.db.backends.creation.BaseDatabaseCreation._digest
- to create index name in Django style. An evil hack :(
- """
- if not hasattr(self, '_django_db_creation'):
- self._django_db_creation = BaseDatabaseCreation(self._get_connection())
- return self._django_db_creation._digest(*args)
-
- def shorten_name(self, name):
- return truncate_name(name, self._get_connection().ops.max_name_length())
-
- def create_index_name(self, table_name, column_names, suffix=""):
- """
- Generate a unique name for the index
- """
-
- # If there is just one column in the index, use a default algorithm from Django
- if len(column_names) == 1 and not suffix:
- try:
- _hash = self._digest([column_names[0]])
- except TypeError:
- # Django < 1.5 backward compatibility.
- _hash = self._digest(column_names[0])
- return self.shorten_name(
- '%s_%s' % (table_name, _hash),
- )
-
- # Else generate the name for the index by South
- table_name = table_name.replace('"', '').replace('.', '_')
- index_unique_name = '_%x' % abs(hash((table_name, ','.join(column_names))))
-
- # If the index name is too long, truncate it
- index_name = ('%s_%s%s%s' % (table_name, column_names[0], index_unique_name, suffix)).replace('"', '').replace('.', '_')
- if len(index_name) > self.max_index_name_length:
- part = ('_%s%s%s' % (column_names[0], index_unique_name, suffix))
- index_name = '%s%s' % (table_name[:(self.max_index_name_length - len(part))], part)
-
- return index_name
-
- def create_index_sql(self, table_name, column_names, unique=False, db_tablespace=''):
- """
- Generates a create index statement on 'table_name' for a list of 'column_names'
- """
- if not column_names:
- print("No column names supplied on which to create an index")
- return ''
-
- connection = self._get_connection()
- if db_tablespace and connection.features.supports_tablespaces:
- tablespace_sql = ' ' + connection.ops.tablespace_sql(db_tablespace)
- else:
- tablespace_sql = ''
-
- index_name = self.create_index_name(table_name, column_names)
- return 'CREATE %sINDEX %s ON %s (%s)%s;' % (
- unique and 'UNIQUE ' or '',
- self.quote_name(index_name),
- self.quote_name(table_name),
- ','.join([self.quote_name(field) for field in column_names]),
- tablespace_sql
- )
-
- @invalidate_table_constraints
- def create_index(self, table_name, column_names, unique=False, db_tablespace=''):
- """ Executes a create index statement """
- sql = self.create_index_sql(table_name, column_names, unique, db_tablespace)
- self.execute(sql)
-
- @invalidate_table_constraints
- def delete_index(self, table_name, column_names, db_tablespace=''):
- """
- Deletes an index created with create_index.
- This is possible using only columns due to the deterministic
- index naming function which relies on column names.
- """
- if isinstance(column_names, string_types):
- column_names = [column_names]
- name = self.create_index_name(table_name, column_names)
- sql = self.drop_index_string % {
- "index_name": self.quote_name(name),
- "table_name": self.quote_name(table_name),
- }
- self.execute(sql)
-
- drop_index = alias('delete_index')
-
- @delete_column_constraints
- def delete_column(self, table_name, name):
- """
- Deletes the column 'column_name' from the table 'table_name'.
- """
- params = (self.quote_name(table_name), self.quote_name(name))
- self.execute(self.delete_column_string % params, [])
-
- drop_column = alias('delete_column')
-
- def rename_column(self, table_name, old, new):
- """
- Renames the column 'old' from the table 'table_name' to 'new'.
- """
- raise NotImplementedError("rename_column has no generic SQL syntax")
-
- @invalidate_table_constraints
- def delete_primary_key(self, table_name):
- """
- Drops the old primary key.
- """
- # Dry runs mean we can't do anything.
- if self.dry_run:
- if self.debug:
- print(' - no dry run output for delete_primary_key() due to dynamic DDL, sorry')
- return
-
- constraints = list(self._constraints_affecting_columns(table_name, None, type="PRIMARY KEY"))
- if not constraints:
- raise ValueError("Cannot find a PRIMARY KEY constraint on table %s" % (table_name,))
-
- for constraint in constraints:
- self.execute(self.delete_primary_key_sql % {
- "table": self.quote_name(table_name),
- "constraint": self.quote_name(constraint),
- })
-
- drop_primary_key = alias('delete_primary_key')
-
- @invalidate_table_constraints
- def create_primary_key(self, table_name, columns):
- """
- Creates a new primary key on the specified columns.
- """
- if not isinstance(columns, (list, tuple)):
- columns = [columns]
- self.execute(self.create_primary_key_string % {
- "table": self.quote_name(table_name),
- "constraint": self.quote_name(table_name + "_pkey"),
- "columns": ", ".join(map(self.quote_name, columns)),
- })
-
- def _find_primary_key_columns(self, table_name):
- """
- Find all columns of the primary key of the specified table
- """
- db_name = self._get_setting('NAME')
-
- primary_key_columns = set()
- for col, constraints in self.lookup_constraint(db_name, table_name):
- for kind, cname in constraints:
- if kind == 'PRIMARY KEY':
- primary_key_columns.add(col.lower())
-
- return primary_key_columns
-
- def start_transaction(self):
- """
- Makes sure the following commands are inside a transaction.
- Must be followed by a (commit|rollback)_transaction call.
- """
- if self.dry_run:
- self.pending_transactions += 1
- transaction.commit_unless_managed(using=self.db_alias)
- transaction.enter_transaction_management(using=self.db_alias)
- transaction.managed(True, using=self.db_alias)
-
- def commit_transaction(self):
- """
- Commits the current transaction.
- Must be preceded by a start_transaction call.
- """
- if self.dry_run:
- return
- transaction.commit(using=self.db_alias)
- transaction.leave_transaction_management(using=self.db_alias)
-
- def rollback_transaction(self):
- """
- Rolls back the current transaction.
- Must be preceded by a start_transaction call.
- """
- if self.dry_run:
- self.pending_transactions -= 1
- transaction.rollback(using=self.db_alias)
- transaction.leave_transaction_management(using=self.db_alias)
-
- def rollback_transactions_dry_run(self):
- """
- Rolls back all pending_transactions during this dry run.
- """
- if not self.dry_run:
- return
- while self.pending_transactions > 0:
- self.rollback_transaction()
- if transaction.is_dirty(using=self.db_alias):
- # Force an exception, if we're still in a dirty transaction.
- # This means we are missing a COMMIT/ROLLBACK.
- transaction.leave_transaction_management(using=self.db_alias)
-
- def send_create_signal(self, app_label, model_names):
- self.pending_create_signals.append((app_label, model_names))
-
- def send_pending_create_signals(self, verbosity=0, interactive=False):
- # Group app_labels together
- signals = SortedDict()
- for (app_label, model_names) in self.pending_create_signals:
- try:
- signals[app_label].extend(model_names)
- except KeyError:
- signals[app_label] = list(model_names)
- # Send only one signal per app.
- for (app_label, model_names) in signals.items():
- self.really_send_create_signal(app_label, list(set(model_names)),
- verbosity=verbosity,
- interactive=interactive)
- self.pending_create_signals = []
-
- def really_send_create_signal(self, app_label, model_names,
- verbosity=0, interactive=False):
- """
- Sends a post_syncdb signal for the model specified.
-
- If the model is not found (perhaps it's been deleted?),
- no signal is sent.
-
- TODO: The behavior of django.contrib.* apps seems flawed in that
- they don't respect created_models. Rather, they blindly execute
- over all models within the app sending the signal. This is a
- patch we should push Django to make For now, this should work.
- """
-
- if self.debug:
- print(" - Sending post_syncdb signal for %s: %s" % (app_label, model_names))
-
- app = models.get_app(app_label)
- if not app:
- return
-
- created_models = []
- for model_name in model_names:
- model = models.get_model(app_label, model_name)
- if model:
- created_models.append(model)
-
- if created_models:
-
- if hasattr(dispatcher, "send"):
- # Older djangos
- dispatcher.send(signal=models.signals.post_syncdb, sender=app,
- app=app, created_models=created_models,
- verbosity=verbosity, interactive=interactive)
- else:
- if self._is_multidb():
- # Django 1.2+
- models.signals.post_syncdb.send(
- sender=app,
- app=app,
- created_models=created_models,
- verbosity=verbosity,
- interactive=interactive,
- db=self.db_alias,
- )
- else:
- # Django 1.1 - 1.0
- models.signals.post_syncdb.send(
- sender=app,
- app=app,
- created_models=created_models,
- verbosity=verbosity,
- interactive=interactive,
- )
-
- def mock_model(self, model_name, db_table, db_tablespace='',
- pk_field_name='id', pk_field_type=models.AutoField,
- pk_field_args=[], pk_field_kwargs={}):
- """
- Generates a MockModel class that provides enough information
- to be used by a foreign key/many-to-many relationship.
-
- Migrations should prefer to use these rather than actual models
- as models could get deleted over time, but these can remain in
- migration files forever.
-
- Depreciated.
- """
- class MockOptions(object):
- def __init__(self):
- self.db_table = db_table
- self.db_tablespace = db_tablespace or settings.DEFAULT_TABLESPACE
- self.object_name = model_name
- self.module_name = model_name.lower()
-
- if pk_field_type == models.AutoField:
- pk_field_kwargs['primary_key'] = True
-
- self.pk = pk_field_type(*pk_field_args, **pk_field_kwargs)
- self.pk.set_attributes_from_name(pk_field_name)
- self.abstract = False
-
- def get_field_by_name(self, field_name):
- # we only care about the pk field
- return (self.pk, self.model, True, False)
-
- def get_field(self, name):
- # we only care about the pk field
- return self.pk
-
- class MockModel(object):
- _meta = None
-
- # We need to return an actual class object here, not an instance
- MockModel._meta = MockOptions()
- MockModel._meta.model = MockModel
- return MockModel
-
- def _db_positive_type_for_alter_column(self, klass, field):
- """
- A helper for subclasses overriding _db_type_for_alter_column:
- Remove the check constraint from the type string for PositiveInteger
- and PositiveSmallInteger fields.
- @param klass: The type of the child (required to allow this to be used when it is subclassed)
- @param field: The field to generate type for
- """
- super_result = super(klass, self)._db_type_for_alter_column(field)
- if isinstance(field, (models.PositiveSmallIntegerField, models.PositiveIntegerField)):
- return super_result.split(" ", 1)[0]
- return super_result
-
- def _alter_add_positive_check(self, klass, field, name, params, sqls):
- """
- A helper for subclasses overriding _alter_add_column_mods:
- Add a check constraint verifying positivity to PositiveInteger and
- PositiveSmallInteger fields.
- """
- super(klass, self)._alter_add_column_mods(field, name, params, sqls)
- if isinstance(field, (models.PositiveSmallIntegerField, models.PositiveIntegerField)):
- uniq_hash = abs(hash(tuple(params.values())))
- d = dict(
- constraint = "CK_%s_PSTV_%s" % (name, hex(uniq_hash)[2:]),
- check = "%s >= 0" % self.quote_name(name))
- sqls.append((self.add_check_constraint_fragment % d, []))
-
-
-# Single-level flattening of lists
-def flatten(ls):
- nl = []
- for l in ls:
- nl += l
- return nl
diff --git a/lib/python2.7/site-packages/south/db/mysql.py b/lib/python2.7/site-packages/south/db/mysql.py
deleted file mode 100644
index 3e87464..0000000
--- a/lib/python2.7/site-packages/south/db/mysql.py
+++ /dev/null
@@ -1,290 +0,0 @@
-# MySQL-specific implementations for south
-# Original author: Andrew Godwin
-# Patches by: F. Gabriel Gosselin <gabrielNOSPAM@evidens.ca>
-
-from south.db import generic
-from south.db.generic import DryRunError, INVALID
-from south.logger import get_logger
-
-
-def delete_column_constraints(func):
- """
- Decorates column operation functions for MySQL.
- Deletes the constraints from the database and clears local cache.
- """
- def _column_rm(self, table_name, column_name, *args, **opts):
- # Delete foreign key constraints
- try:
- self.delete_foreign_key(table_name, column_name)
- except ValueError:
- pass # If no foreign key on column, OK because it checks first
- # Delete constraints referring to this column
- try:
- reverse = self._lookup_reverse_constraint(table_name, column_name)
- for cname, rtable, rcolumn in reverse:
- self.delete_foreign_key(rtable, rcolumn)
- except DryRunError:
- pass
- return func(self, table_name, column_name, *args, **opts)
- return _column_rm
-
-
-def copy_column_constraints(func):
- """
- Decorates column operation functions for MySQL.
- Determines existing constraints and copies them to a new column
- """
- def _column_cp(self, table_name, column_old, column_new, *args, **opts):
- # Copy foreign key constraint
- try:
- constraint = self._find_foreign_constraints(
- table_name, column_old)[0]
- refs = self._lookup_constraint_references(table_name, constraint)
- if refs is not None:
- (ftable, fcolumn) = refs
- if ftable and fcolumn:
- fk_sql = self.foreign_key_sql(
- table_name, column_new, ftable, fcolumn)
- get_logger().debug("Foreign key SQL: " + fk_sql)
- self.add_deferred_sql(fk_sql)
- except IndexError:
- pass # No constraint exists so ignore
- except DryRunError:
- pass
- # Copy constraints referring to this column
- try:
- reverse = self._lookup_reverse_constraint(table_name, column_old)
- for cname, rtable, rcolumn in reverse:
- fk_sql = self.foreign_key_sql(
- rtable, rcolumn, table_name, column_new)
- self.add_deferred_sql(fk_sql)
- except DryRunError:
- pass
- return func(self, table_name, column_old, column_new, *args, **opts)
- return _column_cp
-
-
-def invalidate_table_constraints(func):
- """
- For MySQL we grab all table constraints simultaneously, so this is
- effective.
- It further solves the issues of invalidating referred table constraints.
- """
- def _cache_clear(self, table, *args, **opts):
- db_name = self._get_setting('NAME')
- if db_name in self._constraint_cache:
- del self._constraint_cache[db_name]
- if db_name in self._reverse_cache:
- del self._reverse_cache[db_name]
- if db_name in self._constraint_references:
- del self._constraint_references[db_name]
- return func(self, table, *args, **opts)
- return _cache_clear
-
-
-class DatabaseOperations(generic.DatabaseOperations):
- """
- MySQL implementation of database operations.
-
- MySQL has no DDL transaction support This can confuse people when they ask
- how to roll back - hence the dry runs, etc., found in the migration code.
- """
-
- backend_name = "mysql"
- alter_string_set_type = ''
- alter_string_set_null = 'MODIFY %(column)s %(type)s NULL;'
- alter_string_drop_null = 'MODIFY %(column)s %(type)s NOT NULL;'
- drop_index_string = 'DROP INDEX %(index_name)s ON %(table_name)s'
- delete_primary_key_sql = "ALTER TABLE %(table)s DROP PRIMARY KEY"
- delete_foreign_key_sql = "ALTER TABLE %(table)s DROP FOREIGN KEY %(constraint)s"
- delete_unique_sql = "ALTER TABLE %s DROP INDEX %s"
- rename_table_sql = "RENAME TABLE %s TO %s;"
-
- allows_combined_alters = False
- has_check_constraints = False
- raises_default_errors = False
-
- geom_types = ['geometry', 'point', 'linestring', 'polygon']
- text_types = ['text', 'blob']
-
- def __init__(self, db_alias):
- self._constraint_references = {}
- self._reverse_cache = {}
- super(DatabaseOperations, self).__init__(db_alias)
- if self._has_setting('STORAGE_ENGINE') and self._get_setting('STORAGE_ENGINE'):
- self.create_table_sql = self.create_table_sql + ' ENGINE=%s' % self._get_setting('STORAGE_ENGINE')
-
- def _is_valid_cache(self, db_name, table_name):
- cache = self._constraint_cache
- # we cache the whole db so if there are any tables table_name is valid
- return db_name in cache and cache[db_name].get(table_name, None) is not INVALID
-
- def _fill_constraint_cache(self, db_name, table_name):
- # for MySQL grab all constraints for this database. It's just as cheap as a single column.
- self._constraint_cache[db_name] = {}
- self._constraint_cache[db_name][table_name] = {}
- self._reverse_cache[db_name] = {}
- self._constraint_references[db_name] = {}
-
- name_query = """
- SELECT kc.`constraint_name`, kc.`column_name`, kc.`table_name`,
- kc.`referenced_table_name`, kc.`referenced_column_name`
- FROM information_schema.key_column_usage AS kc
- WHERE
- kc.table_schema = %s
- """
- rows = self.execute(name_query, [db_name])
- if not rows:
- return
- cnames = {}
- for constraint, column, table, ref_table, ref_column in rows:
- key = (table, constraint)
- cnames.setdefault(key, set())
- cnames[key].add((column, ref_table, ref_column))
-
- type_query = """
- SELECT c.constraint_name, c.table_name, c.constraint_type
- FROM information_schema.table_constraints AS c
- WHERE
- c.table_schema = %s
- """
- rows = self.execute(type_query, [db_name])
- for constraint, table, kind in rows:
- key = (table, constraint)
- self._constraint_cache[db_name].setdefault(table, {})
- try:
- cols = cnames[key]
- except KeyError:
- cols = set()
- for column_set in cols:
- (column, ref_table, ref_column) = column_set
- self._constraint_cache[db_name][table].setdefault(column, set())
- if kind == 'FOREIGN KEY':
- self._constraint_cache[db_name][table][column].add((kind,
- constraint))
- # Create constraint lookup, see constraint_references
- self._constraint_references[db_name][(table,
- constraint)] = (ref_table, ref_column)
- # Create reverse table lookup, reverse_lookup
- self._reverse_cache[db_name].setdefault(ref_table, {})
- self._reverse_cache[db_name][ref_table].setdefault(ref_column,
- set())
- self._reverse_cache[db_name][ref_table][ref_column].add(
- (constraint, table, column))
- else:
- self._constraint_cache[db_name][table][column].add((kind,
- constraint))
-
- def connection_init(self):
- """
- Run before any SQL to let database-specific config be sent as a command,
- e.g. which storage engine (MySQL) or transaction serialisability level.
- """
- cursor = self._get_connection().cursor()
- if cursor.execute("SHOW variables WHERE Variable_Name='default_storage_engine';"):
- engine_var = 'default_storage_engine'
- else:
- engine_var = 'storage_engine'
- if self._has_setting('STORAGE_ENGINE') and self._get_setting('STORAGE_ENGINE'):
- cursor.execute("SET %s=%s;" % (engine_var, self._get_setting('STORAGE_ENGINE')))
-
- def start_transaction(self):
- super(DatabaseOperations, self).start_transaction()
- self.execute("SET FOREIGN_KEY_CHECKS=0;")
-
- @copy_column_constraints
- @delete_column_constraints
- @invalidate_table_constraints
- def rename_column(self, table_name, old, new):
- if old == new or self.dry_run:
- return []
-
- rows = [x for x in self.execute('DESCRIBE %s' % (self.quote_name(table_name),)) if x[0] == old]
-
- if not rows:
- raise ValueError("No column '%s' in '%s'." % (old, table_name))
-
- params = (
- self.quote_name(table_name),
- self.quote_name(old),
- self.quote_name(new),
- rows[0][1],
- rows[0][2] == "YES" and "NULL" or "NOT NULL",
- rows[0][4] and "DEFAULT " or "",
- rows[0][4] and "%s" or "",
- rows[0][5] or "",
- )
-
- sql = 'ALTER TABLE %s CHANGE COLUMN %s %s %s %s %s %s %s;' % params
-
- if rows[0][4]:
- self.execute(sql, (rows[0][4],))
- else:
- self.execute(sql)
-
- @delete_column_constraints
- def delete_column(self, table_name, name):
- super(DatabaseOperations, self).delete_column(table_name, name)
-
- @invalidate_table_constraints
- def rename_table(self, old_table_name, table_name):
- super(DatabaseOperations, self).rename_table(old_table_name,
- table_name)
-
- @invalidate_table_constraints
- def delete_table(self, table_name):
- super(DatabaseOperations, self).delete_table(table_name)
-
- def _lookup_constraint_references(self, table_name, cname):
- """
- Provided an existing table and constraint, returns tuple of (foreign
- table, column)
- """
- db_name = self._get_setting('NAME')
- try:
- return self._constraint_references[db_name][(table_name, cname)]
- except KeyError:
- return None
-
- def _lookup_reverse_constraint(self, table_name, column_name=None):
- """Look for the column referenced by a foreign constraint"""
- db_name = self._get_setting('NAME')
- if self.dry_run:
- raise DryRunError("Cannot get constraints for columns.")
-
- if not self._is_valid_cache(db_name, table_name):
- # Piggy-back on lookup_constraint, ensures cache exists
- self.lookup_constraint(db_name, table_name)
-
- try:
- table = self._reverse_cache[db_name][table_name]
- if column_name == None:
- return [(y, tuple(y)) for x, y in table.items()]
- else:
- return tuple(table[column_name])
- except KeyError:
- return []
-
- def _field_sanity(self, field):
- """
- This particular override stops us sending DEFAULTs for BLOB/TEXT columns.
- """
- # MySQL does not support defaults for geometry columns also
- type = self._db_type_for_alter_column(field).lower()
- is_geom = True in [type.find(t) > -1 for t in self.geom_types]
- is_text = True in [type.find(t) > -1 for t in self.text_types]
-
- if is_geom or is_text:
- field._suppress_default = True
- return field
-
- def _alter_set_defaults(self, field, name, params, sqls):
- """
- MySQL does not support defaults on text or blob columns.
- """
- type = params['type']
- # MySQL does not support defaults for geometry columns also
- is_geom = True in [type.find(t) > -1 for t in self.geom_types]
- is_text = True in [type.find(t) > -1 for t in self.text_types]
- if not is_geom and not is_text:
- super(DatabaseOperations, self)._alter_set_defaults(field, name, params, sqls)
diff --git a/lib/python2.7/site-packages/south/db/oracle.py b/lib/python2.7/site-packages/south/db/oracle.py
deleted file mode 100644
index 79496d0..0000000
--- a/lib/python2.7/site-packages/south/db/oracle.py
+++ /dev/null
@@ -1,345 +0,0 @@
-from __future__ import print_function
-
-import os.path
-import sys
-import re
-import warnings
-import cx_Oracle
-
-
-from django.db import connection, models
-from django.db.backends.util import truncate_name
-from django.core.management.color import no_style
-from django.db.models.fields import NOT_PROVIDED
-from django.db.utils import DatabaseError
-
-# In revision r16016 function get_sequence_name has been transformed into
-# method of DatabaseOperations class. To make code backward-compatible we
-# need to handle both situations.
-try:
- from django.db.backends.oracle.base import get_sequence_name\
- as original_get_sequence_name
-except ImportError:
- original_get_sequence_name = None
-
-from south.db import generic
-
-class DatabaseOperations(generic.DatabaseOperations):
- """
- Oracle implementation of database operations.
- """
- backend_name = 'oracle'
-
- alter_string_set_type = 'ALTER TABLE %(table_name)s MODIFY %(column)s %(type)s %(nullity)s;'
- alter_string_set_default = 'ALTER TABLE %(table_name)s MODIFY %(column)s DEFAULT %(default)s;'
- alter_string_update_nulls_to_default = \
- 'UPDATE %(table_name)s SET %(column)s = %(default)s WHERE %(column)s IS NULL;'
- add_column_string = 'ALTER TABLE %s ADD %s;'
- delete_column_string = 'ALTER TABLE %s DROP COLUMN %s;'
- add_constraint_string = 'ALTER TABLE %(table_name)s ADD CONSTRAINT %(constraint)s %(clause)s'
-
- allows_combined_alters = False
- has_booleans = False
-
- constraints_dict = {
- 'P': 'PRIMARY KEY',
- 'U': 'UNIQUE',
- 'C': 'CHECK',
- 'R': 'FOREIGN KEY'
- }
-
- def get_sequence_name(self, table_name):
- if original_get_sequence_name is None:
- return self._get_connection().ops._get_sequence_name(table_name)
- else:
- return original_get_sequence_name(table_name)
-
- #TODO: This will cause very obscure bugs if anyone uses a column name or string value
- # that looks like a column definition (with 'CHECK', 'DEFAULT' and/or 'NULL' in it)
- # e.g. "CHECK MATE" varchar(10) DEFAULT 'NULL'
- def adj_column_sql(self, col):
- # Syntax fixes -- Oracle is picky about clause order
- col = re.sub('(?P<constr>CHECK \(.*\))(?P<any>.*)(?P<default>DEFAULT \d+)',
- lambda mo: '%s %s%s'%(mo.group('default'), mo.group('constr'), mo.group('any')), col) #syntax fix for boolean/integer field only
- col = re.sub('(?P<not_null>(NOT )?NULL) (?P<misc>(.* )?)(?P<default>DEFAULT.+)',
- lambda mo: '%s %s %s'%(mo.group('default'),mo.group('not_null'),mo.group('misc') or ''), col) #fix order of NULL/NOT NULL and DEFAULT
- return col
-
- def check_meta(self, table_name):
- return table_name in [ m._meta.db_table for m in models.get_models() ] #caching provided by Django
-
- def normalize_name(self, name):
- """
- Get the properly shortened and uppercased identifier as returned by quote_name(), but without the actual quotes.
- """
- nn = self.quote_name(name)
- if nn[0] == '"' and nn[-1] == '"':
- nn = nn[1:-1]
- return nn
-
- @generic.invalidate_table_constraints
- def create_table(self, table_name, fields):
- qn = self.quote_name(table_name)
- columns = []
- autoinc_sql = ''
-
-
- for field_name, field in fields:
-
- field = self._field_sanity(field)
-
- # avoid default values in CREATE TABLE statements (#925)
- field._suppress_default = True
-
-
- col = self.column_sql(table_name, field_name, field)
- if not col:
- continue
- col = self.adj_column_sql(col)
-
- columns.append(col)
- if isinstance(field, models.AutoField):
- autoinc_sql = connection.ops.autoinc_sql(table_name, field_name)
-
- sql = 'CREATE TABLE %s (%s);' % (qn, ', '.join([col for col in columns]))
- self.execute(sql)
- if autoinc_sql:
- self.execute(autoinc_sql[0])
- self.execute(autoinc_sql[1])
-
- @generic.invalidate_table_constraints
- def delete_table(self, table_name, cascade=True):
- qn = self.quote_name(table_name)
-
- # Note: PURGE is not valid syntax for Oracle 9i (it was added in 10)
- if cascade:
- self.execute('DROP TABLE %s CASCADE CONSTRAINTS;' % qn)
- else:
- self.execute('DROP TABLE %s;' % qn)
-
- # If the table has an AutoField a sequence was created.
- sequence_sql = """
-DECLARE
- i INTEGER;
-BEGIN
- SELECT COUNT(*) INTO i FROM USER_CATALOG
- WHERE TABLE_NAME = '%(sq_name)s' AND TABLE_TYPE = 'SEQUENCE';
- IF i = 1 THEN
- EXECUTE IMMEDIATE 'DROP SEQUENCE "%(sq_name)s"';
- END IF;
-END;
-/""" % {'sq_name': self.get_sequence_name(table_name)}
- self.execute(sequence_sql)
-
- @generic.invalidate_table_constraints
- def alter_column(self, table_name, name, field, explicit_name=True, ignore_constraints=False):
-
- if self.dry_run:
- if self.debug:
- print(' - no dry run output for alter_column() due to dynamic DDL, sorry')
- return
-
- qn = self.quote_name(table_name)
-
- # hook for the field to do any resolution prior to it's attributes being queried
- if hasattr(field, 'south_init'):
- field.south_init()
- field = self._field_sanity(field)
-
- # Add _id or whatever if we need to
- field.set_attributes_from_name(name)
- if not explicit_name:
- name = field.column
- qn_col = self.quote_name(name)
-
- # First, change the type
- # This will actually also add any CHECK constraints needed,
- # since e.g. 'type' for a BooleanField is 'NUMBER(1) CHECK (%(qn_column)s IN (0,1))'
- params = {
- 'table_name':qn,
- 'column': qn_col,
- 'type': self._db_type_for_alter_column(field),
- 'nullity': 'NOT NULL',
- 'default': 'NULL'
- }
- if field.null:
- params['nullity'] = 'NULL'
-
- sql_templates = [
- (self.alter_string_set_type, params, []),
- (self.alter_string_set_default, params, []),
- ]
- if not field.null and field.has_default():
- # Use default for rows that had nulls. To support the case where
- # the new default does not fit the old type, we need to first change
- # the column type to the new type, but null=True; then set the default;
- # then complete the type change.
- def change_params(**kw):
- "A little helper for non-destructively changing the params"
- p = params.copy()
- p.update(kw)
- return p
- sql_templates[:0] = [
- (self.alter_string_set_type, change_params(nullity='NULL'),[]),
- (self.alter_string_update_nulls_to_default, change_params(default="%s"), [field.get_default()]),
- ]
-
- if not ignore_constraints:
- # drop CHECK constraints. Make sure this is executed before the ALTER TABLE statements
- # generated above, since those statements recreate the constraints we delete here.
- check_constraints = self._constraints_affecting_columns(table_name, [name], "CHECK")
- for constraint in check_constraints:
- self.execute(self.delete_check_sql % {
- 'table': self.quote_name(table_name),
- 'constraint': self.quote_name(constraint),
- })
- # Drop foreign constraints
- try:
- self.delete_foreign_key(qn, qn_col)
- except ValueError:
- # There weren't any
- pass
-
- for sql_template, params, args in sql_templates:
- try:
- self.execute(sql_template % params, args, print_all_errors=False)
- except DatabaseError as exc:
- description = str(exc)
- # Oracle complains if a column is already NULL/NOT NULL
- if 'ORA-01442' in description or 'ORA-01451' in description:
- # so we just drop NULL/NOT NULL part from target sql and retry
- params['nullity'] = ''
- sql = sql_template % params
- self.execute(sql)
- # Oracle also has issues if we try to change a regular column
- # to a LOB or vice versa (also REF, object, VARRAY or nested
- # table, but these don't come up much in Django apps)
- elif 'ORA-22858' in description or 'ORA-22859' in description:
- self._alter_column_lob_workaround(table_name, name, field)
- else:
- self._print_sql_error(exc, sql_template % params)
- raise
-
- if not ignore_constraints:
- # Add back FK constraints if needed
- if field.rel: #and self.supports_foreign_keys:
- self.add_deferred_sql(
- self.foreign_key_sql(
- qn[1:-1], # foreign_key_sql uses this as part of constraint name
- qn_col[1:-1], # foreign_key_sql uses this as part of constraint name
- field.rel.to._meta.db_table,
- field.rel.to._meta.get_field(field.rel.field_name).column
- )
- )
-
-
- def _alter_column_lob_workaround(self, table_name, name, field):
- """
- Oracle refuses to change a column type from/to LOB to/from a regular
- column. In Django, this shows up when the field is changed from/to
- a TextField.
- What we need to do instead is:
- - Rename the original column
- - Add the desired field as new
- - Update the table to transfer values from old to new
- - Drop old column
- """
- renamed = self._generate_temp_name(name)
- self.rename_column(table_name, name, renamed)
- self.add_column(table_name, name, field, keep_default=False)
- self.execute("UPDATE %s set %s=%s" % (
- self.quote_name(table_name),
- self.quote_name(name),
- self.quote_name(renamed),
- ))
- self.delete_column(table_name, renamed)
-
- def _generate_temp_name(self, for_name):
- suffix = hex(hash(for_name)).upper()[1:]
- return self.normalize_name(for_name + "_" + suffix)
-
- @generic.copy_column_constraints #TODO: Appears to be nulled by the delete decorator below...
- @generic.delete_column_constraints
- def rename_column(self, table_name, old, new):
- if old == new:
- # Short-circuit out
- return []
- self.execute('ALTER TABLE %s RENAME COLUMN %s TO %s;' % (
- self.quote_name(table_name),
- self.quote_name(old),
- self.quote_name(new),
- ))
-
- @generic.invalidate_table_constraints
- def add_column(self, table_name, name, field, keep_default=False):
- field = self._field_sanity(field)
- sql = self.column_sql(table_name, name, field)
- sql = self.adj_column_sql(sql)
-
- if sql:
- params = (
- self.quote_name(table_name),
- sql
- )
- sql = self.add_column_string % params
- self.execute(sql)
-
- # Now, drop the default if we need to
- if field.default is not None:
- field.default = NOT_PROVIDED
- self.alter_column(table_name, name, field, explicit_name=False, ignore_constraints=True)
-
- def delete_column(self, table_name, name):
- return super(DatabaseOperations, self).delete_column(self.quote_name(table_name), name)
-
- def lookup_constraint(self, db_name, table_name, column_name=None):
- if column_name:
- # Column names in the constraint cache come from the database,
- # make sure we use the properly shortened/uppercased version
- # for lookup.
- column_name = self.normalize_name(column_name)
- return super(DatabaseOperations, self).lookup_constraint(db_name, table_name, column_name)
-
- def _constraints_affecting_columns(self, table_name, columns, type="UNIQUE"):
- if columns:
- columns = [self.normalize_name(c) for c in columns]
- return super(DatabaseOperations, self)._constraints_affecting_columns(table_name, columns, type)
-
- def _field_sanity(self, field):
- """
- This particular override stops us sending DEFAULTs for BooleanField.
- """
- if isinstance(field, models.BooleanField) and field.has_default():
- field.default = int(field.to_python(field.get_default()))
- # On Oracle, empty strings are null
- if isinstance(field, (models.CharField, models.TextField)):
- field.null = field.empty_strings_allowed
- return field
-
-
- def _default_value_workaround(self, value):
- from datetime import date,time,datetime
- if isinstance(value, (date,time,datetime)):
- return "'%s'" % value
- else:
- return super(DatabaseOperations, self)._default_value_workaround(value)
-
- def _fill_constraint_cache(self, db_name, table_name):
- self._constraint_cache.setdefault(db_name, {})
- self._constraint_cache[db_name][table_name] = {}
-
- rows = self.execute("""
- SELECT user_cons_columns.constraint_name,
- user_cons_columns.column_name,
- user_constraints.constraint_type
- FROM user_constraints
- JOIN user_cons_columns ON
- user_constraints.table_name = user_cons_columns.table_name AND
- user_constraints.constraint_name = user_cons_columns.constraint_name
- WHERE user_constraints.table_name = '%s'
- """ % self.normalize_name(table_name))
-
- for constraint, column, kind in rows:
- self._constraint_cache[db_name][table_name].setdefault(column, set())
- self._constraint_cache[db_name][table_name][column].add((self.constraints_dict[kind], constraint))
- return
diff --git a/lib/python2.7/site-packages/south/db/postgresql_psycopg2.py b/lib/python2.7/site-packages/south/db/postgresql_psycopg2.py
deleted file mode 100644
index d6c63c4..0000000
--- a/lib/python2.7/site-packages/south/db/postgresql_psycopg2.py
+++ /dev/null
@@ -1,96 +0,0 @@
-from __future__ import print_function
-
-import uuid
-from django.db.backends.util import truncate_name
-from south.db import generic
-
-
-class DatabaseOperations(generic.DatabaseOperations):
-
- """
- PsycoPG2 implementation of database operations.
- """
-
- backend_name = "postgres"
-
- def create_index_name(self, table_name, column_names, suffix=""):
- """
- Generate a unique name for the index
-
- Django's logic for naming field indexes is different in the
- postgresql_psycopg2 backend, so we follow that for single-column
- indexes.
- """
-
- if len(column_names) == 1:
- return truncate_name(
- '%s_%s%s' % (table_name, column_names[0], suffix),
- self._get_connection().ops.max_name_length()
- )
- return super(DatabaseOperations, self).create_index_name(table_name, column_names, suffix)
-
- @generic.copy_column_constraints
- @generic.delete_column_constraints
- def rename_column(self, table_name, old, new):
- if old == new:
- # Short-circuit out
- return []
- self.execute('ALTER TABLE %s RENAME COLUMN %s TO %s;' % (
- self.quote_name(table_name),
- self.quote_name(old),
- self.quote_name(new),
- ))
-
- @generic.invalidate_table_constraints
- def rename_table(self, old_table_name, table_name):
- "will rename the table and an associated ID sequence and primary key index"
- # First, rename the table
- generic.DatabaseOperations.rename_table(self, old_table_name, table_name)
- # Then, try renaming the ID sequence
- # (if you're using other AutoFields... your problem, unfortunately)
-
- if self.execute(
- """
- SELECT 1
- FROM information_schema.sequences
- WHERE sequence_name = %s
- """,
- [old_table_name + '_id_seq']
- ):
- generic.DatabaseOperations.rename_table(self, old_table_name + "_id_seq", table_name + "_id_seq")
-
- # Rename primary key index, will not rename other indices on
- # the table that are used by django (e.g. foreign keys). Until
- # figure out how, you need to do this yourself.
-
- pkey_index_names = self.execute(
- """
- SELECT pg_index.indexrelid::regclass
- FROM pg_index, pg_attribute
- WHERE
- indrelid = %s::regclass AND
- pg_attribute.attrelid = indrelid AND
- pg_attribute.attnum = any(pg_index.indkey)
- AND indisprimary
- """,
- [table_name]
- )
- if old_table_name + "_pkey" in pkey_index_names:
- generic.DatabaseOperations.rename_table(self, old_table_name + "_pkey", table_name + "_pkey")
-
- def rename_index(self, old_index_name, index_name):
- "Rename an index individually"
- generic.DatabaseOperations.rename_table(self, old_index_name, index_name)
-
- def _default_value_workaround(self, value):
- "Support for UUIDs on psql"
- if isinstance(value, uuid.UUID):
- return str(value)
- else:
- return super(DatabaseOperations, self)._default_value_workaround(value)
-
- def _db_type_for_alter_column(self, field):
- return self._db_positive_type_for_alter_column(DatabaseOperations, field)
-
- def _alter_add_column_mods(self, field, name, params, sqls):
- return self._alter_add_positive_check(DatabaseOperations, field, name, params, sqls)
diff --git a/lib/python2.7/site-packages/south/db/sql_server/__init__.py b/lib/python2.7/site-packages/south/db/sql_server/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/db/sql_server/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/db/sql_server/pyodbc.py b/lib/python2.7/site-packages/south/db/sql_server/pyodbc.py
deleted file mode 100644
index b725ec0..0000000
--- a/lib/python2.7/site-packages/south/db/sql_server/pyodbc.py
+++ /dev/null
@@ -1,444 +0,0 @@
-from datetime import date, datetime, time
-from warnings import warn
-from django.db import models
-from django.db.models import fields
-from south.db import generic
-from south.db.generic import delete_column_constraints, invalidate_table_constraints, copy_column_constraints
-from south.exceptions import ConstraintDropped
-from south.utils.py3 import string_types
-try:
- from django.utils.encoding import smart_text # Django >= 1.5
-except ImportError:
- from django.utils.encoding import smart_unicode as smart_text # Django < 1.5
-from django.core.management.color import no_style
-
-class DatabaseOperations(generic.DatabaseOperations):
- """
- django-pyodbc (sql_server.pyodbc) implementation of database operations.
- """
-
- backend_name = "pyodbc"
-
- add_column_string = 'ALTER TABLE %s ADD %s;'
- alter_string_set_type = 'ALTER COLUMN %(column)s %(type)s'
- alter_string_set_null = 'ALTER COLUMN %(column)s %(type)s NULL'
- alter_string_drop_null = 'ALTER COLUMN %(column)s %(type)s NOT NULL'
-
- allows_combined_alters = False
-
- drop_index_string = 'DROP INDEX %(index_name)s ON %(table_name)s'
- drop_constraint_string = 'ALTER TABLE %(table_name)s DROP CONSTRAINT %(constraint_name)s'
- delete_column_string = 'ALTER TABLE %s DROP COLUMN %s'
-
- #create_check_constraint_sql = "ALTER TABLE %(table)s " + \
- # generic.DatabaseOperations.add_check_constraint_fragment
- create_foreign_key_sql = "ALTER TABLE %(table)s ADD CONSTRAINT %(constraint)s " + \
- "FOREIGN KEY (%(column)s) REFERENCES %(target)s"
- create_unique_sql = "ALTER TABLE %(table)s ADD CONSTRAINT %(constraint)s UNIQUE (%(columns)s)"
-
-
- default_schema_name = "dbo"
-
- has_booleans = False
-
-
- @delete_column_constraints
- def delete_column(self, table_name, name):
- q_table_name, q_name = (self.quote_name(table_name), self.quote_name(name))
-
- # Zap the constraints
- for const in self._find_constraints_for_column(table_name,name):
- params = {'table_name':q_table_name, 'constraint_name': const}
- sql = self.drop_constraint_string % params
- self.execute(sql, [])
-
- # Zap the indexes
- for ind in self._find_indexes_for_column(table_name,name):
- params = {'table_name':q_table_name, 'index_name': ind}
- sql = self.drop_index_string % params
- self.execute(sql, [])
-
- # Zap default if exists
- drop_default = self.drop_column_default_sql(table_name, name)
- if drop_default:
- sql = "ALTER TABLE [%s] %s" % (table_name, drop_default)
- self.execute(sql, [])
-
- # Finally zap the column itself
- self.execute(self.delete_column_string % (q_table_name, q_name), [])
-
- def _find_indexes_for_column(self, table_name, name):
- "Find the indexes that apply to a column, needed when deleting"
-
- sql = """
- SELECT si.name, si.id, sik.colid, sc.name
- FROM dbo.sysindexes si WITH (NOLOCK)
- INNER JOIN dbo.sysindexkeys sik WITH (NOLOCK)
- ON sik.id = si.id
- AND sik.indid = si.indid
- INNER JOIN dbo.syscolumns sc WITH (NOLOCK)
- ON si.id = sc.id
- AND sik.colid = sc.colid
- WHERE si.indid !=0
- AND si.id = OBJECT_ID('%s')
- AND sc.name = '%s'
- """
- idx = self.execute(sql % (table_name, name), [])
- return [i[0] for i in idx]
-
-
- def _find_constraints_for_column(self, table_name, name, just_names=True):
- """
- Find the constraints that apply to a column, needed when deleting. Defaults not included.
- This is more general than the parent _constraints_affecting_columns, as on MSSQL this
- includes PK and FK constraints.
- """
-
- sql = """
- SELECT CC.[CONSTRAINT_NAME]
- ,TC.[CONSTRAINT_TYPE]
- ,CHK.[CHECK_CLAUSE]
- ,RFD.TABLE_SCHEMA
- ,RFD.TABLE_NAME
- ,RFD.COLUMN_NAME
- -- used for normalized names
- ,CC.TABLE_NAME
- ,CC.COLUMN_NAME
- FROM [INFORMATION_SCHEMA].[TABLE_CONSTRAINTS] TC
- JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE CC
- ON TC.CONSTRAINT_CATALOG = CC.CONSTRAINT_CATALOG
- AND TC.CONSTRAINT_SCHEMA = CC.CONSTRAINT_SCHEMA
- AND TC.CONSTRAINT_NAME = CC.CONSTRAINT_NAME
- LEFT JOIN INFORMATION_SCHEMA.CHECK_CONSTRAINTS CHK
- ON CHK.CONSTRAINT_CATALOG = CC.CONSTRAINT_CATALOG
- AND CHK.CONSTRAINT_SCHEMA = CC.CONSTRAINT_SCHEMA
- AND CHK.CONSTRAINT_NAME = CC.CONSTRAINT_NAME
- AND 'CHECK' = TC.CONSTRAINT_TYPE
- LEFT JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS REF
- ON REF.CONSTRAINT_CATALOG = CC.CONSTRAINT_CATALOG
- AND REF.CONSTRAINT_SCHEMA = CC.CONSTRAINT_SCHEMA
- AND REF.CONSTRAINT_NAME = CC.CONSTRAINT_NAME
- AND 'FOREIGN KEY' = TC.CONSTRAINT_TYPE
- LEFT JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE RFD
- ON RFD.CONSTRAINT_CATALOG = REF.UNIQUE_CONSTRAINT_CATALOG
- AND RFD.CONSTRAINT_SCHEMA = REF.UNIQUE_CONSTRAINT_SCHEMA
- AND RFD.CONSTRAINT_NAME = REF.UNIQUE_CONSTRAINT_NAME
- WHERE CC.CONSTRAINT_CATALOG = CC.TABLE_CATALOG
- AND CC.CONSTRAINT_SCHEMA = CC.TABLE_SCHEMA
- AND CC.TABLE_CATALOG = %s
- AND CC.TABLE_SCHEMA = %s
- AND CC.TABLE_NAME = %s
- AND CC.COLUMN_NAME = %s
- """
- db_name = self._get_setting('name')
- schema_name = self._get_schema_name()
- table = self.execute(sql, [db_name, schema_name, table_name, name])
-
- if just_names:
- return [r[0] for r in table]
-
- all = {}
- for r in table:
- cons_name, type = r[:2]
- if type=='PRIMARY KEY' or type=='UNIQUE':
- cons = all.setdefault(cons_name, (type,[]))
- sql = '''
- SELECT COLUMN_NAME
- FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE RFD
- WHERE RFD.CONSTRAINT_CATALOG = %s
- AND RFD.CONSTRAINT_SCHEMA = %s
- AND RFD.TABLE_NAME = %s
- AND RFD.CONSTRAINT_NAME = %s
- '''
- columns = self.execute(sql, [db_name, schema_name, table_name, cons_name])
- cons[1].extend(col for col, in columns)
- elif type=='CHECK':
- cons = (type, r[2])
- elif type=='FOREIGN KEY':
- if cons_name in all:
- raise NotImplementedError("Multiple-column foreign keys are not supported")
- else:
- cons = (type, r[3:6])
- else:
- raise NotImplementedError("Don't know how to handle constraints of type "+ type)
- all[cons_name] = cons
- return all
-
- @invalidate_table_constraints
- def alter_column(self, table_name, name, field, explicit_name=True, ignore_constraints=False):
- """
- Alters the given column name so it will match the given field.
- Note that conversion between the two by the database must be possible.
- Will not automatically add _id by default; to have this behavour, pass
- explicit_name=False.
-
- @param table_name: The name of the table to add the column to
- @param name: The name of the column to alter
- @param field: The new field definition to use
- """
- self._fix_field_definition(field)
-
- if not ignore_constraints:
- qn = self.quote_name
- sch = qn(self._get_schema_name())
- tab = qn(table_name)
- table = ".".join([sch, tab])
- try:
- self.delete_foreign_key(table_name, name)
- except ValueError:
- # no FK constraint on this field. That's OK.
- pass
- constraints = self._find_constraints_for_column(table_name, name, False)
- for constraint in constraints.keys():
- params = dict(table_name = table,
- constraint_name = qn(constraint))
- sql = self.drop_constraint_string % params
- self.execute(sql, [])
-
- ret_val = super(DatabaseOperations, self).alter_column(table_name, name, field, explicit_name, ignore_constraints=True)
-
- if not ignore_constraints:
- for cname, (ctype,args) in constraints.items():
- params = dict(table = table,
- constraint = qn(cname))
- if ctype=='UNIQUE':
- params['columns'] = ", ".join(map(qn,args))
- sql = self.create_unique_sql % params
- elif ctype=='PRIMARY KEY':
- params['columns'] = ", ".join(map(qn,args))
- sql = self.create_primary_key_string % params
- elif ctype=='FOREIGN KEY':
- continue
- # Foreign keys taken care of below
- #target = "%s.%s(%s)" % tuple(map(qn,args))
- #params.update(column = qn(name), target = target)
- #sql = self.create_foreign_key_sql % params
- elif ctype=='CHECK':
- warn(ConstraintDropped("CHECK "+ args, table_name, name))
- continue
- #TODO: Some check constraints should be restored; but not before the generic
- # backend restores them.
- #params['check'] = args
- #sql = self.create_check_constraint_sql % params
- else:
- raise NotImplementedError("Don't know how to handle constraints of type "+ type)
- self.execute(sql, [])
- # Create foreign key if necessary
- if field.rel and self.supports_foreign_keys:
- self.execute(
- self.foreign_key_sql(
- table_name,
- field.column,
- field.rel.to._meta.db_table,
- field.rel.to._meta.get_field(field.rel.field_name).column
- )
- )
- model = self.mock_model("FakeModelForIndexCreation", table_name)
- for stmt in self._get_connection().creation.sql_indexes_for_field(model, field, no_style()):
- self.execute(stmt)
-
-
- return ret_val
-
- def _alter_set_defaults(self, field, name, params, sqls):
- "Subcommand of alter_column that sets default values (overrideable)"
- # Historically, we used to set defaults here.
- # But since South 0.8, we don't ever set defaults on alter-column -- we only
- # use database-level defaults as scaffolding when adding columns.
- # However, we still sometimes need to remove defaults in alter-column.
- table_name = self.quote_name(params['table_name'])
- drop_default = self.drop_column_default_sql(table_name, name)
- if drop_default:
- sqls.append((drop_default, []))
-
- def _value_to_unquoted_literal(self, field, value):
- # Start with the field's own translation
- conn = self._get_connection()
- value = field.get_db_prep_save(value, connection=conn)
- # This is still a Python object -- nobody expects to need a literal.
- if isinstance(value, string_types):
- return smart_text(value)
- elif isinstance(value, (date,time,datetime)):
- return value.isoformat()
- else:
- #TODO: Anybody else needs special translations?
- return str(value)
- def _default_value_workaround(self, value):
- if isinstance(value, (date,time,datetime)):
- return value.isoformat()
- else:
- return super(DatabaseOperations, self)._default_value_workaround(value)
-
- def _quote_string(self, s):
- return "'" + s.replace("'","''") + "'"
-
-
- def drop_column_default_sql(self, table_name, name, q_name=None):
- "MSSQL specific drop default, which is a pain"
-
- sql = """
- SELECT object_name(cdefault)
- FROM syscolumns
- WHERE id = object_id('%s')
- AND name = '%s'
- """
- cons = self.execute(sql % (table_name, name), [])
- if cons and cons[0] and cons[0][0]:
- return "DROP CONSTRAINT %s" % cons[0][0]
- return None
-
- def _fix_field_definition(self, field):
- if isinstance(field, (fields.BooleanField, fields.NullBooleanField)):
- if field.default == True:
- field.default = 1
- if field.default == False:
- field.default = 0
-
- # This is copied from South's generic add_column, with two modifications:
- # 1) The sql-server-specific call to _fix_field_definition
- # 2) Removing a default, when needed, by calling drop_default and not the more general alter_column
- @invalidate_table_constraints
- def add_column(self, table_name, name, field, keep_default=False):
- """
- Adds the column 'name' to the table 'table_name'.
- Uses the 'field' paramater, a django.db.models.fields.Field instance,
- to generate the necessary sql
-
- @param table_name: The name of the table to add the column to
- @param name: The name of the column to add
- @param field: The field to use
- """
- self._fix_field_definition(field)
- sql = self.column_sql(table_name, name, field)
- if sql:
- params = (
- self.quote_name(table_name),
- sql,
- )
- sql = self.add_column_string % params
- self.execute(sql)
-
- # Now, drop the default if we need to
- if not keep_default and field.default is not None:
- field.default = fields.NOT_PROVIDED
- #self.alter_column(table_name, name, field, explicit_name=False, ignore_constraints=True)
- self.drop_default(table_name, name, field)
-
- @invalidate_table_constraints
- def drop_default(self, table_name, name, field):
- fragment = self.drop_column_default_sql(table_name, name)
- if fragment:
- table_name = self.quote_name(table_name)
- sql = " ".join(["ALTER TABLE", table_name, fragment])
- self.execute(sql)
-
-
- @invalidate_table_constraints
- def create_table(self, table_name, field_defs):
- # Tweak stuff as needed
- for _, f in field_defs:
- self._fix_field_definition(f)
-
- # Run
- super(DatabaseOperations, self).create_table(table_name, field_defs)
-
- def _find_referencing_fks(self, table_name):
- "MSSQL does not support cascading FKs when dropping tables, we need to implement."
-
- # FK -- Foreign Keys
- # UCTU -- Unique Constraints Table Usage
- # FKTU -- Foreign Key Table Usage
- # (last two are both really CONSTRAINT_TABLE_USAGE, different join conditions)
- sql = """
- SELECT FKTU.TABLE_SCHEMA as REFING_TABLE_SCHEMA,
- FKTU.TABLE_NAME as REFING_TABLE_NAME,
- FK.[CONSTRAINT_NAME] as FK_NAME
- FROM [INFORMATION_SCHEMA].[REFERENTIAL_CONSTRAINTS] FK
- JOIN [INFORMATION_SCHEMA].[CONSTRAINT_TABLE_USAGE] UCTU
- ON FK.UNIQUE_CONSTRAINT_CATALOG = UCTU.CONSTRAINT_CATALOG and
- FK.UNIQUE_CONSTRAINT_NAME = UCTU.CONSTRAINT_NAME and
- FK.UNIQUE_CONSTRAINT_SCHEMA = UCTU.CONSTRAINT_SCHEMA
- JOIN [INFORMATION_SCHEMA].[CONSTRAINT_TABLE_USAGE] FKTU
- ON FK.CONSTRAINT_CATALOG = FKTU.CONSTRAINT_CATALOG and
- FK.CONSTRAINT_NAME = FKTU.CONSTRAINT_NAME and
- FK.CONSTRAINT_SCHEMA = FKTU.CONSTRAINT_SCHEMA
- WHERE FK.CONSTRAINT_CATALOG = %s
- AND UCTU.TABLE_SCHEMA = %s -- REFD_TABLE_SCHEMA
- AND UCTU.TABLE_NAME = %s -- REFD_TABLE_NAME
- """
- db_name = self._get_setting('name')
- schema_name = self._get_schema_name()
- return self.execute(sql, [db_name, schema_name, table_name])
-
- @invalidate_table_constraints
- def delete_table(self, table_name, cascade=True):
- """
- Deletes the table 'table_name'.
- """
- if cascade:
- refing = self._find_referencing_fks(table_name)
- for schmea, table, constraint in refing:
- table = ".".join(map (self.quote_name, [schmea, table]))
- params = dict(table_name = table,
- constraint_name = self.quote_name(constraint))
- sql = self.drop_constraint_string % params
- self.execute(sql, [])
- cascade = False
- super(DatabaseOperations, self).delete_table(table_name, cascade)
-
- @copy_column_constraints
- @delete_column_constraints
- def rename_column(self, table_name, old, new):
- """
- Renames the column of 'table_name' from 'old' to 'new'.
- WARNING - This isn't transactional on MSSQL!
- """
- if old == new:
- # No Operation
- return
- # Examples on the MS site show the table name not being quoted...
- params = (table_name, self.quote_name(old), self.quote_name(new))
- self.execute("EXEC sp_rename '%s.%s', %s, 'COLUMN'" % params)
-
- @invalidate_table_constraints
- def rename_table(self, old_table_name, table_name):
- """
- Renames the table 'old_table_name' to 'table_name'.
- WARNING - This isn't transactional on MSSQL!
- """
- if old_table_name == table_name:
- # No Operation
- return
- params = (self.quote_name(old_table_name), self.quote_name(table_name))
- self.execute('EXEC sp_rename %s, %s' % params)
-
- def _db_type_for_alter_column(self, field):
- return self._db_positive_type_for_alter_column(DatabaseOperations, field)
-
- def _alter_add_column_mods(self, field, name, params, sqls):
- return self._alter_add_positive_check(DatabaseOperations, field, name, params, sqls)
-
- @invalidate_table_constraints
- def delete_foreign_key(self, table_name, column):
- super(DatabaseOperations, self).delete_foreign_key(table_name, column)
- # A FK also implies a non-unique index
- find_index_sql = """
- SELECT i.name -- s.name, t.name, c.name
- FROM sys.tables t
- INNER JOIN sys.schemas s ON t.schema_id = s.schema_id
- INNER JOIN sys.indexes i ON i.object_id = t.object_id
- INNER JOIN sys.index_columns ic ON ic.object_id = t.object_id
- AND ic.index_id = i.index_id
- INNER JOIN sys.columns c ON c.object_id = t.object_id
- AND ic.column_id = c.column_id
- WHERE i.is_unique=0 AND i.is_primary_key=0 AND i.is_unique_constraint=0
- AND s.name = %s
- AND t.name = %s
- AND c.name = %s
- """
- schema = self._get_schema_name()
- indexes = self.execute(find_index_sql, [schema, table_name, column])
- qn = self.quote_name
- for index in (i[0] for i in indexes if i[0]): # "if i[0]" added because an empty name may return
- self.execute("DROP INDEX %s on %s.%s" % (qn(index), qn(schema), qn(table_name) ))
-
diff --git a/lib/python2.7/site-packages/south/db/sqlite3.py b/lib/python2.7/site-packages/south/db/sqlite3.py
deleted file mode 100644
index c4014d3..0000000
--- a/lib/python2.7/site-packages/south/db/sqlite3.py
+++ /dev/null
@@ -1,272 +0,0 @@
-from south.db import generic
-
-
-class DatabaseOperations(generic.DatabaseOperations):
-
- """
- SQLite3 implementation of database operations.
- """
-
- backend_name = "sqlite3"
-
- # SQLite ignores several constraints. I wish I could.
- supports_foreign_keys = False
- has_check_constraints = False
- has_booleans = False
-
- def add_column(self, table_name, name, field, *args, **kwds):
- """
- Adds a column.
- """
- # If it's not nullable, and has no default, raise an error (SQLite is picky)
- if (not field.null and
- (not field.has_default() or field.get_default() is None) and
- not field.empty_strings_allowed):
- raise ValueError("You cannot add a null=False column without a default value.")
- # Initialise the field.
- field.set_attributes_from_name(name)
- # We add columns by remaking the table; even though SQLite supports
- # adding columns, it doesn't support adding PRIMARY KEY or UNIQUE cols.
- # We define fields with no default; a default will be used, though, to fill up the remade table
- field_default = None
- if not getattr(field, '_suppress_default', False):
- default = field.get_default()
- if default is not None:
- field_default = "'%s'" % field.get_db_prep_save(default, connection=self._get_connection())
- field._suppress_default = True
- self._remake_table(table_name, added={
- field.column: (self._column_sql_for_create(table_name, name, field, False), field_default)
- })
-
- def _get_full_table_description(self, connection, cursor, table_name):
- cursor.execute('PRAGMA table_info(%s)' % connection.ops.quote_name(table_name))
- # cid, name, type, notnull, dflt_value, pk
- return [{'name': field[1],
- 'type': field[2],
- 'null_ok': not field[3],
- 'dflt_value': field[4],
- 'pk': field[5] # undocumented
- } for field in cursor.fetchall()]
-
- @generic.invalidate_table_constraints
- def _remake_table(self, table_name, added={}, renames={}, deleted=[], altered={}, primary_key_override=None, uniques_deleted=[]):
- """
- Given a table and three sets of changes (renames, deletes, alters),
- recreates it with the modified schema.
- """
- # Dry runs get skipped completely
- if self.dry_run:
- return
- # Temporary table's name
- temp_name = "_south_new_" + table_name
- # Work out the (possibly new) definitions of each column
- definitions = {}
- cursor = self._get_connection().cursor()
- # Get the index descriptions
- indexes = self._get_connection().introspection.get_indexes(cursor, table_name)
- standalone_indexes = self._get_standalone_indexes(table_name)
- # Work out new column defs.
- for column_info in self._get_full_table_description(self._get_connection(), cursor, table_name):
- name = column_info['name']
- if name in deleted:
- continue
- # Get the type, ignoring PRIMARY KEY (we need to be consistent)
- type = column_info['type'].replace("PRIMARY KEY", "")
- # Add on primary key, not null or unique if needed.
- if (primary_key_override and primary_key_override == name) or \
- (not primary_key_override and name in indexes and
- indexes[name]['primary_key']):
- type += " PRIMARY KEY"
- elif not column_info['null_ok']:
- type += " NOT NULL"
- if (name in indexes and indexes[name]['unique'] and
- name not in uniques_deleted):
- type += " UNIQUE"
- if column_info['dflt_value'] is not None:
- type += " DEFAULT " + column_info['dflt_value']
- # Deal with a rename
- if name in renames:
- name = renames[name]
- # Add to the defs
- definitions[name] = type
- # Add on altered columns
- for name, type in altered.items():
- if (primary_key_override and primary_key_override == name) or \
- (not primary_key_override and name in indexes and
- indexes[name]['primary_key']):
- type += " PRIMARY KEY"
- if (name in indexes and indexes[name]['unique'] and
- name not in uniques_deleted):
- type += " UNIQUE"
- definitions[name] = type
- # Add on the new columns
- for name, (type,_) in added.items():
- if (primary_key_override and primary_key_override == name):
- type += " PRIMARY KEY"
- definitions[name] = type
- # Alright, Make the table
- self.execute("CREATE TABLE %s (%s)" % (
- self.quote_name(temp_name),
- ", ".join(["%s %s" % (self.quote_name(cname), ctype) for cname, ctype in definitions.items()]),
- ))
- # Copy over the data
- self._copy_data(table_name, temp_name, renames, added)
- # Delete the old table, move our new one over it
- self.delete_table(table_name)
- self.rename_table(temp_name, table_name)
- # Recreate multi-valued indexes
- # We can't do that before since it's impossible to rename indexes
- # and index name scope is global
- self._make_standalone_indexes(table_name, standalone_indexes, renames=renames, deleted=deleted, uniques_deleted=uniques_deleted)
- self.deferred_sql = [] # prevent double indexing
-
- def _copy_data(self, src, dst, field_renames={}, added={}):
- "Used to copy data into a new table"
- # Make a list of all the fields to select
- cursor = self._get_connection().cursor()
- src_fields = [column_info[0] for column_info in self._get_connection().introspection.get_table_description(cursor, src)]
- dst_fields = [column_info[0] for column_info in self._get_connection().introspection.get_table_description(cursor, dst)]
- src_fields_new = []
- dst_fields_new = []
- for field in src_fields:
- if field in field_renames:
- dst_fields_new.append(self.quote_name(field_renames[field]))
- elif field in dst_fields:
- dst_fields_new.append(self.quote_name(field))
- else:
- continue
- src_fields_new.append(self.quote_name(field))
- for field, (_,default) in added.items():
- if default is not None:
- field = self.quote_name(field)
- src_fields_new.append("%s as %s" % (default, field))
- dst_fields_new.append(field)
- # Copy over the data
- self.execute("INSERT INTO %s (%s) SELECT %s FROM %s;" % (
- self.quote_name(dst),
- ', '.join(dst_fields_new),
- ', '.join(src_fields_new),
- self.quote_name(src),
- ))
-
- def _create_unique(self, table_name, columns):
- self._create_index(table_name, columns, True)
-
- def _create_index(self, table_name, columns, unique=False, index_name=None):
- if index_name is None:
- index_name = '%s_%s' % (table_name, '__'.join(columns))
- self.execute("CREATE %sINDEX %s ON %s(%s);" % (
- unique and "UNIQUE " or "",
- self.quote_name(index_name),
- self.quote_name(table_name),
- ', '.join(self.quote_name(c) for c in columns),
- ))
-
- def _get_standalone_indexes(self, table_name):
- indexes = []
- cursor = self._get_connection().cursor()
- cursor.execute('PRAGMA index_list(%s)' % self.quote_name(table_name))
- # seq, name, unique
- for index, unique in [(field[1], field[2]) for field in cursor.fetchall()]:
- cursor.execute('PRAGMA index_info(%s)' % self.quote_name(index))
- info = cursor.fetchall()
- if len(info) == 1 and unique:
- # This index is already specified in the CREATE TABLE columns
- # specification
- continue
- columns = []
- for field in info:
- columns.append(field[2])
- indexes.append((index, columns, unique))
- return indexes
-
- def _make_standalone_indexes(self, table_name, indexes, deleted=[], renames={}, uniques_deleted=[]):
- for index_name, index, unique in indexes:
- columns = []
-
- for name in index:
- # Handle deletion
- if name in deleted:
- columns = []
- break
-
- # Handle renames
- if name in renames:
- name = renames[name]
- columns.append(name)
-
- if columns and (set(columns) != set(uniques_deleted) or not unique):
- self._create_index(table_name, columns, unique, index_name)
-
- def _column_sql_for_create(self, table_name, name, field, explicit_name=True):
- "Given a field and its name, returns the full type for the CREATE TABLE (without unique/pk)"
- field.set_attributes_from_name(name)
- if not explicit_name:
- name = field.db_column
- else:
- field.column = name
- sql = self.column_sql(table_name, name, field, with_name=False, field_prepared=True)
- # Remove keywords we don't want (this should be type only, not constraint)
- if sql:
- sql = sql.replace("PRIMARY KEY", "")
- return sql
-
- def alter_column(self, table_name, name, field, explicit_name=True, ignore_constraints=False):
- """
- Changes a column's SQL definition.
-
- Note that this sqlite3 implementation ignores the ignore_constraints argument.
- The argument is accepted for API compatibility with the generic
- DatabaseOperations.alter_column() method.
- """
- # Change nulls to default if needed
- if not field.null and field.has_default():
- params = {
- "column": self.quote_name(name),
- "table_name": self.quote_name(table_name)
- }
- self._update_nulls_to_default(params, field)
- # Remake the table correctly
- field._suppress_default = True
- self._remake_table(table_name, altered={
- name: self._column_sql_for_create(table_name, name, field, explicit_name),
- })
-
- def delete_column(self, table_name, column_name):
- """
- Deletes a column.
- """
- self._remake_table(table_name, deleted=[column_name])
-
- def rename_column(self, table_name, old, new):
- """
- Renames a column from one name to another.
- """
- self._remake_table(table_name, renames={old: new})
-
- def create_unique(self, table_name, columns):
- """
- Create an unique index on columns
- """
- self._create_unique(table_name, columns)
-
- def delete_unique(self, table_name, columns):
- """
- Delete an unique index
- """
- self._remake_table(table_name, uniques_deleted=columns)
-
- def create_primary_key(self, table_name, columns):
- if not isinstance(columns, (list, tuple)):
- columns = [columns]
- assert len(columns) == 1, "SQLite backend does not support multi-column primary keys"
- self._remake_table(table_name, primary_key_override=columns[0])
-
- # Not implemented this yet.
- def delete_primary_key(self, table_name):
- # By passing True in, we make sure we wipe all existing PKs.
- self._remake_table(table_name, primary_key_override=True)
-
- # No cascades on deletes
- def delete_table(self, table_name, cascade=True):
- generic.DatabaseOperations.delete_table(self, table_name, False)
diff --git a/lib/python2.7/site-packages/south/exceptions.py b/lib/python2.7/site-packages/south/exceptions.py
deleted file mode 100644
index f2e772f..0000000
--- a/lib/python2.7/site-packages/south/exceptions.py
+++ /dev/null
@@ -1,160 +0,0 @@
-from __future__ import print_function
-
-from traceback import format_exception, format_exc
-
-class SouthError(RuntimeError):
- pass
-
-class SouthWarning(RuntimeWarning):
- pass
-
-class BrokenMigration(SouthError):
- def __init__(self, migration, exc_info):
- self.migration = migration
- self.exc_info = exc_info
- if self.exc_info:
- self.traceback = ''.join(format_exception(*self.exc_info))
- else:
- try:
- self.traceback = format_exc()
- except AttributeError: # Python3 when there is no previous exception
- self.traceback = None
-
- def __str__(self):
- return ("While loading migration '%(migration)s':\n"
- '%(traceback)s' % self.__dict__)
-
-
-class UnknownMigration(BrokenMigration):
- def __str__(self):
- if not hasattr(self, "traceback"):
- self.traceback = ""
- return ("Migration '%(migration)s' probably doesn't exist.\n"
- '%(traceback)s' % self.__dict__)
-
-
-class InvalidMigrationModule(SouthError):
- def __init__(self, application, module):
- self.application = application
- self.module = module
-
- def __str__(self):
- return ('The migration module specified for %(application)s, %(module)r, is invalid; the parent module does not exist.' % self.__dict__)
-
-
-class NoMigrations(SouthError):
- def __init__(self, application):
- self.application = application
-
- def __str__(self):
- return "Application '%(application)s' has no migrations." % self.__dict__
-
-
-class MultiplePrefixMatches(SouthError):
- def __init__(self, prefix, matches):
- self.prefix = prefix
- self.matches = matches
-
- def __str__(self):
- self.matches_list = "\n ".join([str(m) for m in self.matches])
- return ("Prefix '%(prefix)s' matches more than one migration:\n"
- " %(matches_list)s") % self.__dict__
-
-
-class GhostMigrations(SouthError):
- def __init__(self, ghosts):
- self.ghosts = ghosts
-
- def __str__(self):
- self.ghosts_list = "\n ".join([str(m) for m in self.ghosts])
- return ("\n\n ! These migrations are in the database but not on disk:\n"
- " %(ghosts_list)s\n"
- " ! I'm not trusting myself; either fix this yourself by fiddling\n"
- " ! with the south_migrationhistory table, or pass --delete-ghost-migrations\n"
- " ! to South to have it delete ALL of these records (this may not be good).") % self.__dict__
-
-
-class CircularDependency(SouthError):
- def __init__(self, trace):
- self.trace = trace
-
- def __str__(self):
- trace = " -> ".join([str(s) for s in self.trace])
- return ("Found circular dependency:\n"
- " %s") % trace
-
-
-class InconsistentMigrationHistory(SouthError):
- def __init__(self, problems):
- self.problems = problems
-
- def __str__(self):
- return ('Inconsistent migration history\n'
- 'The following options are available:\n'
- ' --merge: will just attempt the migration ignoring any potential dependency conflicts.')
-
-
-class DependsOnHigherMigration(SouthError):
- def __init__(self, migration, depends_on):
- self.migration = migration
- self.depends_on = depends_on
-
- def __str__(self):
- return "Lower migration '%(migration)s' depends on a higher migration '%(depends_on)s' in the same app." % self.__dict__
-
-
-class DependsOnUnknownMigration(SouthError):
- def __init__(self, migration, depends_on):
- self.migration = migration
- self.depends_on = depends_on
-
- def __str__(self):
- print("Migration '%(migration)s' depends on unknown migration '%(depends_on)s'." % self.__dict__)
-
-
-class DependsOnUnmigratedApplication(SouthError):
- def __init__(self, migration, application):
- self.migration = migration
- self.application = application
-
- def __str__(self):
- return "Migration '%(migration)s' depends on unmigrated application '%(application)s'." % self.__dict__
-
-
-class FailedDryRun(SouthError):
- def __init__(self, migration, exc_info):
- self.migration = migration
- self.name = migration.name()
- self.exc_info = exc_info
- self.traceback = ''.join(format_exception(*self.exc_info))
-
- def __str__(self):
- return (" ! Error found during dry run of '%(name)s'! Aborting.\n"
- "%(traceback)s") % self.__dict__
-
-
-class ORMBaseNotIncluded(SouthError):
- """Raised when a frozen model has something in _ormbases which isn't frozen."""
- pass
-
-
-class UnfreezeMeLater(Exception):
- """An exception, which tells the ORM unfreezer to postpone this model."""
- pass
-
-
-class ImpossibleORMUnfreeze(SouthError):
- """Raised if the ORM can't manage to unfreeze all the models in a linear fashion."""
- pass
-
-class ConstraintDropped(SouthWarning):
- def __init__(self, constraint, table, column=None):
- self.table = table
- if column:
- self.column = ".%s" % column
- else:
- self.column = ""
- self.constraint = constraint
-
- def __str__(self):
- return "Constraint %(constraint)s was dropped from %(table)s%(column)s -- was this intended?" % self.__dict__
diff --git a/lib/python2.7/site-packages/south/hacks/__init__.py b/lib/python2.7/site-packages/south/hacks/__init__.py
deleted file mode 100644
index 8f28503..0000000
--- a/lib/python2.7/site-packages/south/hacks/__init__.py
+++ /dev/null
@@ -1,10 +0,0 @@
-"""
-The hacks module encapsulates all the horrible things that play with Django
-internals in one, evil place.
-This top file will automagically expose the correct Hacks class.
-"""
-
-# Currently, these work for 1.0 and 1.1.
-from south.hacks.django_1_0 import Hacks
-
-hacks = Hacks() \ No newline at end of file
diff --git a/lib/python2.7/site-packages/south/hacks/django_1_0.py b/lib/python2.7/site-packages/south/hacks/django_1_0.py
deleted file mode 100644
index e4a60c6..0000000
--- a/lib/python2.7/site-packages/south/hacks/django_1_0.py
+++ /dev/null
@@ -1,110 +0,0 @@
-"""
-Hacks for the Django 1.0/1.0.2 releases.
-"""
-
-import django
-from django.conf import settings
-from django.db.backends.creation import BaseDatabaseCreation
-from django.db.models.loading import cache
-from django.core import management
-from django.core.management.commands.flush import Command as FlushCommand
-from django.utils.datastructures import SortedDict
-
-from south.utils.py3 import string_types
-
-class SkipFlushCommand(FlushCommand):
- def handle_noargs(self, **options):
- # no-op to avoid calling flush
- return
-
-class Hacks:
-
- def set_installed_apps(self, apps):
- """
- Sets Django's INSTALLED_APPS setting to be effectively the list passed in.
- """
-
- # Make sure it's a list.
- apps = list(apps)
-
- # Make sure it contains strings
- if apps:
- assert isinstance(apps[0], string_types), "The argument to set_installed_apps must be a list of strings."
-
- # Monkeypatch in!
- settings.INSTALLED_APPS, settings.OLD_INSTALLED_APPS = (
- apps,
- settings.INSTALLED_APPS,
- )
- self._redo_app_cache()
-
-
- def reset_installed_apps(self):
- """
- Undoes the effect of set_installed_apps.
- """
- settings.INSTALLED_APPS = settings.OLD_INSTALLED_APPS
- self._redo_app_cache()
-
-
- def _redo_app_cache(self):
- """
- Used to repopulate AppCache after fiddling with INSTALLED_APPS.
- """
- cache.loaded = False
- cache.handled = set() if django.VERSION >= (1, 6) else {}
- cache.postponed = []
- cache.app_store = SortedDict()
- cache.app_models = SortedDict()
- cache.app_errors = {}
- cache._populate()
-
-
- def clear_app_cache(self):
- """
- Clears the contents of AppCache to a blank state, so new models
- from the ORM can be added.
- """
- self.old_app_models, cache.app_models = cache.app_models, {}
-
-
- def unclear_app_cache(self):
- """
- Reversed the effects of clear_app_cache.
- """
- cache.app_models = self.old_app_models
- cache._get_models_cache = {}
-
-
- def repopulate_app_cache(self):
- """
- Rebuilds AppCache with the real model definitions.
- """
- cache._populate()
-
- def store_app_cache_state(self):
- self.stored_app_cache_state = dict(**cache.__dict__)
-
- def restore_app_cache_state(self):
- cache.__dict__ = self.stored_app_cache_state
-
- def patch_flush_during_test_db_creation(self):
- """
- Patches BaseDatabaseCreation.create_test_db to not flush database
- """
-
- def patch(f):
- def wrapper(*args, **kwargs):
- # hold onto the original and replace flush command with a no-op
- original_flush_command = management._commands['flush']
- try:
- management._commands['flush'] = SkipFlushCommand()
- # run create_test_db
- return f(*args, **kwargs)
- finally:
- # unpatch flush back to the original
- management._commands['flush'] = original_flush_command
- return wrapper
-
- BaseDatabaseCreation.create_test_db = patch(BaseDatabaseCreation.create_test_db)
-
diff --git a/lib/python2.7/site-packages/south/introspection_plugins/__init__.py b/lib/python2.7/site-packages/south/introspection_plugins/__init__.py
deleted file mode 100644
index 38262b5..0000000
--- a/lib/python2.7/site-packages/south/introspection_plugins/__init__.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# This module contains built-in introspector plugins for various common
-# Django apps.
-
-# These imports trigger the lower-down files
-import south.introspection_plugins.geodjango
-import south.introspection_plugins.django_audit_log
-import south.introspection_plugins.django_tagging
-import south.introspection_plugins.django_taggit
-import south.introspection_plugins.django_objectpermissions
-import south.introspection_plugins.annoying_autoonetoone
-
diff --git a/lib/python2.7/site-packages/south/introspection_plugins/annoying_autoonetoone.py b/lib/python2.7/site-packages/south/introspection_plugins/annoying_autoonetoone.py
deleted file mode 100644
index d61304f..0000000
--- a/lib/python2.7/site-packages/south/introspection_plugins/annoying_autoonetoone.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from django.conf import settings
-from south.modelsinspector import add_introspection_rules
-
-if 'annoying' in settings.INSTALLED_APPS:
- try:
- from annoying.fields import AutoOneToOneField
- except ImportError:
- pass
- else:
- #django-annoying's AutoOneToOneField is essentially a OneToOneField.
- add_introspection_rules([], ["^annoying\.fields\.AutoOneToOneField"])
diff --git a/lib/python2.7/site-packages/south/introspection_plugins/django_audit_log.py b/lib/python2.7/site-packages/south/introspection_plugins/django_audit_log.py
deleted file mode 100644
index b874428..0000000
--- a/lib/python2.7/site-packages/south/introspection_plugins/django_audit_log.py
+++ /dev/null
@@ -1,30 +0,0 @@
-"""
-South introspection rules for django-audit-log
-"""
-
-from django.contrib.auth.models import User
-from django.conf import settings
-from south.modelsinspector import add_introspection_rules
-
-if "audit_log" in settings.INSTALLED_APPS:
- try:
- # Try and import the field so we can see if audit_log is available
- from audit_log.models import fields
-
- # Make sure the `to` and `null` parameters will be ignored
- rules = [(
- (fields.LastUserField,),
- [],
- {
- 'to': ['rel.to', {'default': User}],
- 'null': ['null', {'default': True}],
- },
- )]
-
- # Add the rules for the `LastUserField`
- add_introspection_rules(
- rules,
- ['^audit_log\.models\.fields\.LastUserField'],
- )
- except ImportError:
- pass
diff --git a/lib/python2.7/site-packages/south/introspection_plugins/django_objectpermissions.py b/lib/python2.7/site-packages/south/introspection_plugins/django_objectpermissions.py
deleted file mode 100644
index 42b353b..0000000
--- a/lib/python2.7/site-packages/south/introspection_plugins/django_objectpermissions.py
+++ /dev/null
@@ -1,16 +0,0 @@
-"""
-South introspection rules for django-objectpermissions
-"""
-
-from django.conf import settings
-from south.modelsinspector import add_ignored_fields
-
-if 'objectpermissions' in settings.INSTALLED_APPS:
- try:
- from objectpermissions.models import UserPermissionRelation, GroupPermissionRelation
- except ImportError:
- pass
- else:
- add_ignored_fields(["^objectpermissions\.models\.UserPermissionRelation",
- "^objectpermissions\.models\.GroupPermissionRelation"])
-
diff --git a/lib/python2.7/site-packages/south/introspection_plugins/django_tagging.py b/lib/python2.7/site-packages/south/introspection_plugins/django_tagging.py
deleted file mode 100644
index c02e529..0000000
--- a/lib/python2.7/site-packages/south/introspection_plugins/django_tagging.py
+++ /dev/null
@@ -1,24 +0,0 @@
-from south.modelsinspector import add_introspection_rules
-from django.conf import settings
-
-if "tagging" in settings.INSTALLED_APPS:
- try:
- from tagging.fields import TagField
- except ImportError:
- pass
- else:
- rules = [
- (
- (TagField, ),
- [],
- {
- "blank": ["blank", {"default": True}],
- "max_length": ["max_length", {"default": 255}],
- },
- ),
- ]
- add_introspection_rules(rules, ["^tagging\.fields",])
-
-if "tagging_autocomplete" in settings.INSTALLED_APPS:
- add_introspection_rules([], ["^tagging_autocomplete\.models\.TagAutocompleteField"])
-
diff --git a/lib/python2.7/site-packages/south/introspection_plugins/django_taggit.py b/lib/python2.7/site-packages/south/introspection_plugins/django_taggit.py
deleted file mode 100644
index aded23f..0000000
--- a/lib/python2.7/site-packages/south/introspection_plugins/django_taggit.py
+++ /dev/null
@@ -1,14 +0,0 @@
-"""
-South introspection rules for django-taggit
-"""
-
-from django.conf import settings
-from south.modelsinspector import add_ignored_fields
-
-if 'taggit' in settings.INSTALLED_APPS:
- try:
- from taggit.managers import TaggableManager
- except ImportError:
- pass
- else:
- add_ignored_fields(["^taggit\.managers"])
diff --git a/lib/python2.7/site-packages/south/introspection_plugins/django_timezones.py b/lib/python2.7/site-packages/south/introspection_plugins/django_timezones.py
deleted file mode 100644
index d4b573d..0000000
--- a/lib/python2.7/site-packages/south/introspection_plugins/django_timezones.py
+++ /dev/null
@@ -1,21 +0,0 @@
-from south.modelsinspector import add_introspection_rules
-from django.conf import settings
-
-if "timezones" in settings.INSTALLED_APPS:
- try:
- from timezones.fields import TimeZoneField
- except ImportError:
- pass
- else:
- rules = [
- (
- (TimeZoneField, ),
- [],
- {
- "blank": ["blank", {"default": True}],
- "max_length": ["max_length", {"default": 100}],
- },
- ),
- ]
- add_introspection_rules(rules, ["^timezones\.fields",])
-
diff --git a/lib/python2.7/site-packages/south/introspection_plugins/geodjango.py b/lib/python2.7/site-packages/south/introspection_plugins/geodjango.py
deleted file mode 100644
index bece1c9..0000000
--- a/lib/python2.7/site-packages/south/introspection_plugins/geodjango.py
+++ /dev/null
@@ -1,45 +0,0 @@
-"""
-GeoDjango introspection rules
-"""
-
-import django
-from django.conf import settings
-
-from south.modelsinspector import add_introspection_rules
-
-has_gis = "django.contrib.gis" in settings.INSTALLED_APPS
-
-if has_gis:
- # Alright,import the field
- from django.contrib.gis.db.models.fields import GeometryField
-
- # Make some introspection rules
- if django.VERSION[0] == 1 and django.VERSION[1] >= 1:
- # Django 1.1's gis module renamed these.
- rules = [
- (
- (GeometryField, ),
- [],
- {
- "srid": ["srid", {"default": 4326}],
- "spatial_index": ["spatial_index", {"default": True}],
- "dim": ["dim", {"default": 2}],
- "geography": ["geography", {"default": False}],
- },
- ),
- ]
- else:
- rules = [
- (
- (GeometryField, ),
- [],
- {
- "srid": ["_srid", {"default": 4326}],
- "spatial_index": ["_index", {"default": True}],
- "dim": ["_dim", {"default": 2}],
- },
- ),
- ]
-
- # Install them
- add_introspection_rules(rules, ["^django\.contrib\.gis"]) \ No newline at end of file
diff --git a/lib/python2.7/site-packages/south/logger.py b/lib/python2.7/site-packages/south/logger.py
deleted file mode 100644
index 2caae3a..0000000
--- a/lib/python2.7/site-packages/south/logger.py
+++ /dev/null
@@ -1,38 +0,0 @@
-import sys
-import logging
-from django.conf import settings
-
-# Create a dummy handler to use for now.
-class NullHandler(logging.Handler):
- def emit(self, record):
- pass
-
-def get_logger():
- "Attach a file handler to the logger if there isn't one already."
- debug_on = getattr(settings, "SOUTH_LOGGING_ON", False)
- logging_file = getattr(settings, "SOUTH_LOGGING_FILE", False)
-
- if debug_on:
- if logging_file:
- if len(_logger.handlers) < 2:
- _logger.addHandler(logging.FileHandler(logging_file))
- _logger.setLevel(logging.DEBUG)
- else:
- raise IOError("SOUTH_LOGGING_ON is True. You also need a SOUTH_LOGGING_FILE setting.")
-
- return _logger
-
-def close_logger():
- "Closes the logger handler for the file, so we can remove the file after a test."
- for handler in _logger.handlers:
- _logger.removeHandler(handler)
- if isinstance(handler, logging.FileHandler):
- handler.close()
-
-def init_logger():
- "Initialize the south logger"
- logger = logging.getLogger("south")
- logger.addHandler(NullHandler())
- return logger
-
-_logger = init_logger()
diff --git a/lib/python2.7/site-packages/south/management/__init__.py b/lib/python2.7/site-packages/south/management/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/management/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/management/commands/__init__.py b/lib/python2.7/site-packages/south/management/commands/__init__.py
deleted file mode 100644
index da218eb..0000000
--- a/lib/python2.7/site-packages/south/management/commands/__init__.py
+++ /dev/null
@@ -1,40 +0,0 @@
-
-# Common framework for syncdb actions
-
-import copy
-
-from django.core import management
-from django.conf import settings
-
-# Make sure the template loader cache is fixed _now_ (#448)
-import django.template.loaders.app_directories
-
-from south.hacks import hacks
-from south.management.commands.syncdb import Command as SyncCommand
-
-class MigrateAndSyncCommand(SyncCommand):
- """Used for situations where "syncdb" is called by test frameworks."""
-
- option_list = copy.deepcopy(SyncCommand.option_list)
-
- for opt in option_list:
- if "--migrate" == opt.get_opt_string():
- opt.default = True
- break
-
-def patch_for_test_db_setup():
- # Load the commands cache
- management.get_commands()
- # Repoint to the correct version of syncdb
- if hasattr(settings, "SOUTH_TESTS_MIGRATE") and not settings.SOUTH_TESTS_MIGRATE:
- # point at the core syncdb command when creating tests
- # tests should always be up to date with the most recent model structure
- management._commands['syncdb'] = 'django.core'
- else:
- management._commands['syncdb'] = MigrateAndSyncCommand()
- # Avoid flushing data migrations.
- # http://code.djangoproject.com/ticket/14661 introduced change that flushed custom
- # sql during the test database creation (thus flushing the data migrations).
- # we patch flush to be no-op during create_test_db, but still allow flushing
- # after each test for non-transactional backends.
- hacks.patch_flush_during_test_db_creation()
diff --git a/lib/python2.7/site-packages/south/management/commands/convert_to_south.py b/lib/python2.7/site-packages/south/management/commands/convert_to_south.py
deleted file mode 100644
index 658ed48..0000000
--- a/lib/python2.7/site-packages/south/management/commands/convert_to_south.py
+++ /dev/null
@@ -1,95 +0,0 @@
-"""
-Quick conversion command module.
-"""
-
-from __future__ import print_function
-
-from optparse import make_option
-import sys
-
-from django.core.management.base import BaseCommand
-from django.core.management.color import no_style
-from django.conf import settings
-from django.db import models
-from django.core import management
-from django.core.exceptions import ImproperlyConfigured
-
-from south.migration import Migrations
-from south.hacks import hacks
-from south.exceptions import NoMigrations
-
-class Command(BaseCommand):
-
- option_list = BaseCommand.option_list
- if '--verbosity' not in [opt.get_opt_string() for opt in BaseCommand.option_list]:
- option_list += (
- make_option('--verbosity', action='store', dest='verbosity', default='1',
- type='choice', choices=['0', '1', '2'],
- help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
- )
- option_list += (
- make_option('--delete-ghost-migrations', action='store_true', dest='delete_ghosts', default=False,
- help="Tells South to delete any 'ghost' migrations (ones in the database but not on disk)."),
- make_option('--ignore-ghost-migrations', action='store_true', dest='ignore_ghosts', default=False,
- help="Tells South to ignore any 'ghost' migrations (ones in the database but not on disk) and continue to apply new migrations."),
- )
-
- help = "Quickly converts the named application to use South if it is currently using syncdb."
-
- def handle(self, app=None, *args, **options):
-
- # Make sure we have an app
- if not app:
- print("Please specify an app to convert.")
- return
-
- # See if the app exists
- app = app.split(".")[-1]
- try:
- app_module = models.get_app(app)
- except ImproperlyConfigured:
- print("There is no enabled application matching '%s'." % app)
- return
-
- # Try to get its list of models
- model_list = models.get_models(app_module)
- if not model_list:
- print("This application has no models; this command is for applications that already have models syncdb'd.")
- print("Make some models, and then use ./manage.py schemamigration %s --initial instead." % app)
- return
-
- # Ask South if it thinks it's already got migrations
- try:
- Migrations(app)
- except NoMigrations:
- pass
- else:
- print("This application is already managed by South.")
- return
-
- # Finally! It seems we've got a candidate, so do the two-command trick
- verbosity = int(options.get('verbosity', 0))
- management.call_command("schemamigration", app, initial=True, verbosity=verbosity)
-
- # Now, we need to re-clean and sanitise appcache
- hacks.clear_app_cache()
- hacks.repopulate_app_cache()
-
- # And also clear our cached Migration classes
- Migrations._clear_cache()
-
- # Now, migrate
- management.call_command(
- "migrate",
- app,
- "0001",
- fake=True,
- verbosity=verbosity,
- ignore_ghosts=options.get("ignore_ghosts", False),
- delete_ghosts=options.get("delete_ghosts", False),
- )
-
- print()
- print("App '%s' converted. Note that South assumed the application's models matched the database" % app)
- print("(i.e. you haven't changed it since last syncdb); if you have, you should delete the %s/migrations" % app)
- print("directory, revert models.py so it matches the database, and try again.")
diff --git a/lib/python2.7/site-packages/south/management/commands/datamigration.py b/lib/python2.7/site-packages/south/management/commands/datamigration.py
deleted file mode 100644
index c3175e7..0000000
--- a/lib/python2.7/site-packages/south/management/commands/datamigration.py
+++ /dev/null
@@ -1,139 +0,0 @@
-"""
-Data migration creation command
-"""
-
-from __future__ import print_function
-
-import sys
-import os
-import re
-from optparse import make_option
-
-try:
- set
-except NameError:
- from sets import Set as set
-
-from django.core.management.base import BaseCommand
-from django.core.management.color import no_style
-from django.db import models
-from django.conf import settings
-
-from south.migration import Migrations
-from south.exceptions import NoMigrations
-from south.creator import freezer
-
-class Command(BaseCommand):
- option_list = BaseCommand.option_list + (
- make_option('--freeze', action='append', dest='freeze_list', type='string',
- help='Freeze the specified app(s). Provide an app name with each; use the option multiple times for multiple apps'),
- make_option('--stdout', action='store_true', dest='stdout', default=False,
- help='Print the migration to stdout instead of writing it to a file.'),
- )
- help = "Creates a new template data migration for the given app"
- usage_str = "Usage: ./manage.py datamigration appname migrationname [--stdout] [--freeze appname]"
-
- def handle(self, app=None, name="", freeze_list=None, stdout=False, verbosity=1, **options):
-
- verbosity = int(verbosity)
-
- # Any supposed lists that are None become empty lists
- freeze_list = freeze_list or []
-
- # --stdout means name = -
- if stdout:
- name = "-"
-
- # Only allow valid names
- if re.search('[^_\w]', name) and name != "-":
- self.error("Migration names should contain only alphanumeric characters and underscores.")
-
- # If not name, there's an error
- if not name:
- self.error("You must provide a name for this migration.\n" + self.usage_str)
-
- if not app:
- self.error("You must provide an app to create a migration for.\n" + self.usage_str)
-
- # Ensure that verbosity is not a string (Python 3)
- try:
- verbosity = int(verbosity)
- except ValueError:
- self.error("Verbosity must be an number.\n" + self.usage_str)
-
- # Get the Migrations for this app (creating the migrations dir if needed)
- migrations = Migrations(app, force_creation=True, verbose_creation=verbosity > 0)
-
- # See what filename is next in line. We assume they use numbers.
- new_filename = migrations.next_filename(name)
-
- # Work out which apps to freeze
- apps_to_freeze = self.calc_frozen_apps(migrations, freeze_list)
-
- # So, what's in this file, then?
- file_contents = self.get_migration_template() % {
- "frozen_models": freezer.freeze_apps_to_string(apps_to_freeze),
- "complete_apps": apps_to_freeze and "complete_apps = [%s]" % (", ".join(map(repr, apps_to_freeze))) or ""
- }
-
- # - is a special name which means 'print to stdout'
- if name == "-":
- print(file_contents)
- # Write the migration file if the name isn't -
- else:
- fp = open(os.path.join(migrations.migrations_dir(), new_filename), "w")
- fp.write(file_contents)
- fp.close()
- print("Created %s." % new_filename, file=sys.stderr)
-
- def calc_frozen_apps(self, migrations, freeze_list):
- """
- Works out, from the current app, settings, and the command line options,
- which apps should be frozen.
- """
- apps_to_freeze = []
- for to_freeze in freeze_list:
- if "." in to_freeze:
- self.error("You cannot freeze %r; you must provide an app label, like 'auth' or 'books'." % to_freeze)
- # Make sure it's a real app
- if not models.get_app(to_freeze):
- self.error("You cannot freeze %r; it's not an installed app." % to_freeze)
- # OK, it's fine
- apps_to_freeze.append(to_freeze)
- if getattr(settings, 'SOUTH_AUTO_FREEZE_APP', True):
- apps_to_freeze.append(migrations.app_label())
- return apps_to_freeze
-
- def error(self, message, code=1):
- """
- Prints the error, and exits with the given code.
- """
- print(message, file=sys.stderr)
- sys.exit(code)
-
- def get_migration_template(self):
- return MIGRATION_TEMPLATE
-
-
-MIGRATION_TEMPLATE = """# -*- coding: utf-8 -*-
-from south.utils import datetime_utils as datetime
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- "Write your forwards methods here."
- # Note: Don't use "from appname.models import ModelName".
- # Use orm.ModelName to refer to models in this application,
- # and orm['appname.ModelName'] for models in other applications.
-
- def backwards(self, orm):
- "Write your backwards methods here."
-
- models = %(frozen_models)s
-
- %(complete_apps)s
- symmetrical = True
-"""
diff --git a/lib/python2.7/site-packages/south/management/commands/graphmigrations.py b/lib/python2.7/site-packages/south/management/commands/graphmigrations.py
deleted file mode 100644
index 6ff1e47..0000000
--- a/lib/python2.7/site-packages/south/management/commands/graphmigrations.py
+++ /dev/null
@@ -1,63 +0,0 @@
-"""
-Outputs a graphviz dot file of the dependencies.
-"""
-
-from __future__ import print_function
-
-from optparse import make_option
-import re
-import textwrap
-
-from django.core.management.base import BaseCommand
-from django.core.management.color import no_style
-
-from south.migration import Migrations, all_migrations
-
-class Command(BaseCommand):
-
- help = "Outputs a GraphViz dot file of all migration dependencies to stdout."
-
- def handle(self, **options):
-
- # Resolve dependencies
- Migrations.calculate_dependencies()
-
- colors = [ 'crimson', 'darkgreen', 'darkgoldenrod', 'navy',
- 'brown', 'darkorange', 'aquamarine' , 'blueviolet' ]
- color_index = 0
- wrapper = textwrap.TextWrapper(width=40)
-
- print("digraph G {")
-
- # Group each app in a subgraph
- for migrations in all_migrations():
- print(" subgraph %s {" % migrations.app_label())
- print(" node [color=%s];" % colors[color_index])
- for migration in migrations:
- # Munge the label - text wrap and change _ to spaces
- label = "%s - %s" % (
- migration.app_label(), migration.name())
- label = re.sub(r"_+", " ", label)
- label= "\\n".join(wrapper.wrap(label))
- print(' "%s.%s" [label="%s"];' % (
- migration.app_label(), migration.name(), label))
- print(" }")
- color_index = (color_index + 1) % len(colors)
-
- # For every migration, print its links.
- for migrations in all_migrations():
- for migration in migrations:
- for other in migration.dependencies:
- # Added weight tends to keep migrations from the same app
- # in vertical alignment
- attrs = "[weight=2.0]"
- # But the more interesting edges are those between apps
- if other.app_label() != migration.app_label():
- attrs = "[style=bold]"
- print(' "%s.%s" -> "%s.%s" %s;' % (
- other.app_label(), other.name(),
- migration.app_label(), migration.name(),
- attrs
- ))
-
- print("}");
diff --git a/lib/python2.7/site-packages/south/management/commands/migrate.py b/lib/python2.7/site-packages/south/management/commands/migrate.py
deleted file mode 100644
index 693dbb7..0000000
--- a/lib/python2.7/site-packages/south/management/commands/migrate.py
+++ /dev/null
@@ -1,264 +0,0 @@
-"""
-Migrate management command.
-"""
-
-from __future__ import print_function
-
-import os.path, re, sys
-from functools import reduce
-from optparse import make_option
-
-from django.core.management.base import BaseCommand
-from django.conf import settings
-from django.utils.importlib import import_module
-
-from south import migration
-from south.migration import Migrations
-from south.exceptions import NoMigrations
-from south.db import DEFAULT_DB_ALIAS
-
-class Command(BaseCommand):
- option_list = BaseCommand.option_list + (
- make_option('--all', action='store_true', dest='all_apps', default=False,
- help='Run the specified migration for all apps.'),
- make_option('--list', action='store_true', dest='show_list', default=False,
- help='List migrations noting those that have been applied'),
- make_option('--changes', action='store_true', dest='show_changes', default=False,
- help='List changes for migrations'),
- make_option('--skip', action='store_true', dest='skip', default=False,
- help='Will skip over out-of-order missing migrations'),
- make_option('--merge', action='store_true', dest='merge', default=False,
- help='Will run out-of-order missing migrations as they are - no rollbacks.'),
- make_option('--no-initial-data', action='store_true', dest='no_initial_data', default=False,
- help='Skips loading initial data if specified.'),
- make_option('--fake', action='store_true', dest='fake', default=False,
- help="Pretends to do the migrations, but doesn't actually execute them."),
- make_option('--db-dry-run', action='store_true', dest='db_dry_run', default=False,
- help="Doesn't execute the SQL generated by the db methods, and doesn't store a record that the migration(s) occurred. Useful to test migrations before applying them."),
- make_option('--delete-ghost-migrations', action='store_true', dest='delete_ghosts', default=False,
- help="Tells South to delete any 'ghost' migrations (ones in the database but not on disk)."),
- make_option('--ignore-ghost-migrations', action='store_true', dest='ignore_ghosts', default=False,
- help="Tells South to ignore any 'ghost' migrations (ones in the database but not on disk) and continue to apply new migrations."),
- make_option('--noinput', action='store_false', dest='interactive', default=True,
- help='Tells Django to NOT prompt the user for input of any kind.'),
- make_option('--database', action='store', dest='database',
- default=DEFAULT_DB_ALIAS, help='Nominates a database to synchronize. '
- 'Defaults to the "default" database.'),
- )
- if '--verbosity' not in [opt.get_opt_string() for opt in BaseCommand.option_list]:
- option_list += (
- make_option('--verbosity', action='store', dest='verbosity', default='1',
- type='choice', choices=['0', '1', '2'],
- help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
- )
- help = "Runs migrations for all apps."
- args = "[appname] [migrationname|zero] [--all] [--list] [--skip] [--merge] [--no-initial-data] [--fake] [--db-dry-run] [--database=dbalias]"
-
- def handle(self, app=None, target=None, skip=False, merge=False, backwards=False, fake=False, db_dry_run=False, show_list=False, show_changes=False, database=DEFAULT_DB_ALIAS, delete_ghosts=False, ignore_ghosts=False, **options):
-
- # NOTE: THIS IS DUPLICATED FROM django.core.management.commands.syncdb
- # This code imports any module named 'management' in INSTALLED_APPS.
- # The 'management' module is the preferred way of listening to post_syncdb
- # signals, and since we're sending those out with create_table migrations,
- # we need apps to behave correctly.
- for app_name in settings.INSTALLED_APPS:
- try:
- import_module('.management', app_name)
- except ImportError as exc:
- msg = exc.args[0]
- if not msg.startswith('No module named') or 'management' not in msg:
- raise
- # END DJANGO DUPE CODE
-
- # if all_apps flag is set, shift app over to target
- if options.get('all_apps', False):
- target = app
- app = None
-
- # Migrate each app
- if app:
- try:
- apps = [Migrations(app)]
- except NoMigrations:
- print("The app '%s' does not appear to use migrations." % app)
- print("./manage.py migrate " + self.args)
- return
- else:
- apps = list(migration.all_migrations())
-
- # Do we need to show the list of migrations?
- if show_list and apps:
- list_migrations(apps, database, **options)
-
- if show_changes and apps:
- show_migration_changes(apps)
-
- if not (show_list or show_changes):
-
- for app in apps:
- result = migration.migrate_app(
- app,
- target_name = target,
- fake = fake,
- db_dry_run = db_dry_run,
- verbosity = int(options.get('verbosity', 0)),
- interactive = options.get('interactive', True),
- load_initial_data = not options.get('no_initial_data', False),
- merge = merge,
- skip = skip,
- database = database,
- delete_ghosts = delete_ghosts,
- ignore_ghosts = ignore_ghosts,
- )
- if result is False:
- sys.exit(1) # Migration failed, so the command fails.
-
-
-def list_migrations(apps, database = DEFAULT_DB_ALIAS, **options):
- """
- Prints a list of all available migrations, and which ones are currently applied.
- Accepts a list of Migrations instances.
- """
- from south.models import MigrationHistory
- applied_migrations = MigrationHistory.objects.filter(app_name__in=[app.app_label() for app in apps])
- if database != DEFAULT_DB_ALIAS:
- applied_migrations = applied_migrations.using(database)
- applied_migrations_lookup = dict(('%s.%s' % (mi.app_name, mi.migration), mi) for mi in applied_migrations)
-
- print()
- for app in apps:
- print(" " + app.app_label())
- # Get the migrations object
- for migration in app:
- full_name = migration.app_label() + "." + migration.name()
- if full_name in applied_migrations_lookup:
- applied_migration = applied_migrations_lookup[full_name]
- print(format_migration_list_item(migration.name(), applied=applied_migration.applied, **options))
- else:
- print(format_migration_list_item(migration.name(), applied=False, **options))
- print()
-
-def show_migration_changes(apps):
- """
- Prints a list of all available migrations, and which ones are currently applied.
- Accepts a list of Migrations instances.
-
- Much simpler, less clear, and much less robust version:
- grep "ing " migrations/*.py
- """
- for app in apps:
- print(app.app_label())
- # Get the migrations objects
- migrations = [migration for migration in app]
- # we use reduce to compare models in pairs, not to generate a value
- reduce(diff_migrations, migrations)
-
-def format_migration_list_item(name, applied=True, **options):
- if applied:
- if int(options.get('verbosity')) >= 2:
- return ' (*) %-80s (applied %s)' % (name, applied)
- else:
- return ' (*) %s' % name
- else:
- return ' ( ) %s' % name
-
-def diff_migrations(migration1, migration2):
-
- def model_name(models, model):
- return models[model].get('Meta', {}).get('object_name', model)
-
- def field_name(models, model, field):
- return '%s.%s' % (model_name(models, model), field)
-
- print(" " + migration2.name())
-
- models1 = migration1.migration_class().models
- models2 = migration2.migration_class().models
-
- # find new models
- for model in models2.keys():
- if not model in models1.keys():
- print(' added model %s' % model_name(models2, model))
-
- # find removed models
- for model in models1.keys():
- if not model in models2.keys():
- print(' removed model %s' % model_name(models1, model))
-
- # compare models
- for model in models1:
- if model in models2:
-
- # find added fields
- for field in models2[model]:
- if not field in models1[model]:
- print(' added field %s' % field_name(models2, model, field))
-
- # find removed fields
- for field in models1[model]:
- if not field in models2[model]:
- print(' removed field %s' % field_name(models1, model, field))
-
- # compare fields
- for field in models1[model]:
- if field in models2[model]:
-
- name = field_name(models1, model, field)
-
- # compare field attributes
- field_value1 = models1[model][field]
- field_value2 = models2[model][field]
-
- # if a field has become a class, or vice versa
- if type(field_value1) != type(field_value2):
- print(' type of %s changed from %s to %s' % (
- name, field_value1, field_value2))
-
- # if class
- elif isinstance(field_value1, dict):
- # print ' %s is a class' % name
- pass
-
- # else regular field
- else:
-
- type1, attr_list1, field_attrs1 = models1[model][field]
- type2, attr_list2, field_attrs2 = models2[model][field]
-
- if type1 != type2:
- print(' %s type changed from %s to %s' % (
- name, type1, type2))
-
- if attr_list1 != []:
- print(' %s list %s is not []' % (
- name, attr_list1))
- if attr_list2 != []:
- print(' %s list %s is not []' % (
- name, attr_list2))
- if attr_list1 != attr_list2:
- print(' %s list changed from %s to %s' % (
- name, attr_list1, attr_list2))
-
- # find added field attributes
- for attr in field_attrs2:
- if not attr in field_attrs1:
- print(' added %s attribute %s=%s' % (
- name, attr, field_attrs2[attr]))
-
- # find removed field attributes
- for attr in field_attrs1:
- if not attr in field_attrs2:
- print(' removed attribute %s(%s=%s)' % (
- name, attr, field_attrs1[attr]))
-
- # compare field attributes
- for attr in field_attrs1:
- if attr in field_attrs2:
-
- value1 = field_attrs1[attr]
- value2 = field_attrs2[attr]
- if value1 != value2:
- print(' %s attribute %s changed from %s to %s' % (
- name, attr, value1, value2))
-
- return migration2
diff --git a/lib/python2.7/site-packages/south/management/commands/migrationcheck.py b/lib/python2.7/site-packages/south/management/commands/migrationcheck.py
deleted file mode 100644
index f498d0b..0000000
--- a/lib/python2.7/site-packages/south/management/commands/migrationcheck.py
+++ /dev/null
@@ -1,67 +0,0 @@
-from django.core.exceptions import ImproperlyConfigured
-from django.core.management import call_command, CommandError
-from django.core.management.base import BaseCommand
-from django.conf import settings
-from django.db.models import loading
-from django.test import simple
-
-from south.migration import Migrations
-from south.exceptions import NoMigrations
-from south.hacks import hacks
-
-class Command(BaseCommand):
- help = "Runs migrations for each app in turn, detecting missing depends_on values."
- usage_str = "Usage: ./manage.py migrationcheck"
-
- def handle(self, check_app_name=None, **options):
- runner = simple.DjangoTestSuiteRunner(verbosity=0)
- err_msg = "Failed to migrate %s; see output for hints at missing dependencies:\n"
- hacks.patch_flush_during_test_db_creation()
- failures = 0
- if check_app_name is None:
- app_names = settings.INSTALLED_APPS
- else:
- app_names = [check_app_name]
- for app_name in app_names:
- app_label = app_name.split(".")[-1]
- if app_name == 'south':
- continue
-
- try:
- Migrations(app_name)
- except (NoMigrations, ImproperlyConfigured):
- continue
- app = loading.get_app(app_label)
-
- verbosity = int(options.get('verbosity', 1))
- if verbosity >= 1:
- self.stderr.write("processing %s\n" % app_name)
-
- old_config = runner.setup_databases()
- try:
- call_command('migrate', app_label, noinput=True, verbosity=verbosity)
- for model in loading.get_models(app):
- dummy = model._default_manager.exists()
- except (KeyboardInterrupt, SystemExit):
- raise
- except Exception as e:
- failures += 1
- if verbosity >= 1:
- self.stderr.write(err_msg % app_name)
- self.stderr.write("%s\n" % e)
- finally:
- runner.teardown_databases(old_config)
- if failures > 0:
- raise CommandError("Missing depends_on found in %s app(s)." % failures)
- self.stderr.write("No missing depends_on found.\n")
-#
-#for each app:
-# start with blank db.
-# syncdb only south (and contrib?)
-#
-# migrate a single app all the way up. any errors is missing depends_on.
-# for all models of that app, try the default manager:
-# from django.db.models import loading
-# for m in loading.get_models(loading.get_app('a')):
-# m._default_manager.exists()
-# Any error is also a missing depends on.
diff --git a/lib/python2.7/site-packages/south/management/commands/schemamigration.py b/lib/python2.7/site-packages/south/management/commands/schemamigration.py
deleted file mode 100644
index efd4266..0000000
--- a/lib/python2.7/site-packages/south/management/commands/schemamigration.py
+++ /dev/null
@@ -1,229 +0,0 @@
-"""
-Startmigration command, version 2.
-"""
-
-from __future__ import print_function
-
-import sys
-import os
-import re
-import string
-import random
-import inspect
-from optparse import make_option
-
-try:
- set
-except NameError:
- from sets import Set as set
-
-from django.core.management.base import BaseCommand
-from django.core.management.color import no_style
-from django.core.exceptions import ImproperlyConfigured
-from django.db import models
-from django.conf import settings
-
-from south.migration import Migrations, migrate_app
-from south.models import MigrationHistory
-from south.exceptions import NoMigrations
-from south.creator import changes, actions, freezer
-from south.management.commands.datamigration import Command as DataCommand
-
-class Command(DataCommand):
- option_list = DataCommand.option_list + (
- make_option('--add-model', action='append', dest='added_model_list', type='string',
- help='Generate a Create Table migration for the specified model. Add multiple models to this migration with subsequent --add-model parameters.'),
- make_option('--add-field', action='append', dest='added_field_list', type='string',
- help='Generate an Add Column migration for the specified modelname.fieldname - you can use this multiple times to add more than one column.'),
- make_option('--add-index', action='append', dest='added_index_list', type='string',
- help='Generate an Add Index migration for the specified modelname.fieldname - you can use this multiple times to add more than one column.'),
- make_option('--initial', action='store_true', dest='initial', default=False,
- help='Generate the initial schema for the app.'),
- make_option('--auto', action='store_true', dest='auto', default=False,
- help='Attempt to automatically detect differences from the last migration.'),
- make_option('--empty', action='store_true', dest='empty', default=False,
- help='Make a blank migration.'),
- make_option('--update', action='store_true', dest='update', default=False,
- help='Update the most recent migration instead of creating a new one. Rollback this migration if it is already applied.'),
- )
- help = "Creates a new template schema migration for the given app"
- usage_str = "Usage: ./manage.py schemamigration appname migrationname [--empty] [--initial] [--auto] [--add-model ModelName] [--add-field ModelName.field_name] [--stdout]"
-
- def handle(self, app=None, name="", added_model_list=None, added_field_list=None, freeze_list=None, initial=False, auto=False, stdout=False, added_index_list=None, verbosity=1, empty=False, update=False, **options):
-
- # Any supposed lists that are None become empty lists
- added_model_list = added_model_list or []
- added_field_list = added_field_list or []
- added_index_list = added_index_list or []
- freeze_list = freeze_list or []
-
- # --stdout means name = -
- if stdout:
- name = "-"
-
- # Only allow valid names
- if re.search('[^_\w]', name) and name != "-":
- self.error("Migration names should contain only alphanumeric characters and underscores.")
-
- # Make sure options are compatable
- if initial and (added_model_list or added_field_list or auto):
- self.error("You cannot use --initial and other options together\n" + self.usage_str)
-
- if auto and (added_model_list or added_field_list or initial):
- self.error("You cannot use --auto and other options together\n" + self.usage_str)
-
- if not app:
- self.error("You must provide an app to create a migration for.\n" + self.usage_str)
-
- # See if the app exists
- app = app.split(".")[-1]
- try:
- app_module = models.get_app(app)
- except ImproperlyConfigured:
- print("There is no enabled application matching '%s'." % app)
- return
-
- # Get the Migrations for this app (creating the migrations dir if needed)
- migrations = Migrations(app, force_creation=True, verbose_creation=int(verbosity) > 0)
-
- # What actions do we need to do?
- if auto:
- # Get the old migration
- try:
- last_migration = migrations[-2 if update else -1]
- except IndexError:
- self.error("You cannot use --auto on an app with no migrations. Try --initial.")
- # Make sure it has stored models
- if migrations.app_label() not in getattr(last_migration.migration_class(), "complete_apps", []):
- self.error("You cannot use automatic detection, since the previous migration does not have this whole app frozen.\nEither make migrations using '--freeze %s' or set 'SOUTH_AUTO_FREEZE_APP = True' in your settings.py." % migrations.app_label())
- # Alright, construct two model dicts to run the differ on.
- old_defs = dict(
- (k, v) for k, v in last_migration.migration_class().models.items()
- if k.split(".")[0] == migrations.app_label()
- )
- new_defs = dict(
- (k, v) for k, v in freezer.freeze_apps([migrations.app_label()]).items()
- if k.split(".")[0] == migrations.app_label()
- )
- change_source = changes.AutoChanges(
- migrations = migrations,
- old_defs = old_defs,
- old_orm = last_migration.orm(),
- new_defs = new_defs,
- )
-
- elif initial:
- # Do an initial migration
- change_source = changes.InitialChanges(migrations)
-
- else:
- # Read the commands manually off of the arguments
- if (added_model_list or added_field_list or added_index_list):
- change_source = changes.ManualChanges(
- migrations,
- added_model_list,
- added_field_list,
- added_index_list,
- )
- elif empty:
- change_source = None
- else:
- print("You have not passed any of --initial, --auto, --empty, --add-model, --add-field or --add-index.", file=sys.stderr)
- sys.exit(1)
-
- # Validate this so we can access the last migration without worrying
- if update and not migrations:
- self.error("You cannot use --update on an app with no migrations.")
-
- # if not name, there's an error
- if not name:
- if change_source:
- name = change_source.suggest_name()
- if update:
- name = re.sub(r'^\d{4}_', '', migrations[-1].name())
- if not name:
- self.error("You must provide a name for this migration\n" + self.usage_str)
-
- # Get the actions, and then insert them into the actions lists
- forwards_actions = []
- backwards_actions = []
- if change_source:
- for action_name, params in change_source.get_changes():
- # Run the correct Action class
- try:
- action_class = getattr(actions, action_name)
- except AttributeError:
- raise ValueError("Invalid action name from source: %s" % action_name)
- else:
- action = action_class(**params)
- action.add_forwards(forwards_actions)
- action.add_backwards(backwards_actions)
- print(action.console_line(), file=sys.stderr)
-
- # Nowt happen? That's not good for --auto.
- if auto and not forwards_actions:
- self.error("Nothing seems to have changed.")
-
- # Work out which apps to freeze
- apps_to_freeze = self.calc_frozen_apps(migrations, freeze_list)
-
- # So, what's in this file, then?
- file_contents = self.get_migration_template() % {
- "forwards": "\n".join(forwards_actions or [" pass"]),
- "backwards": "\n".join(backwards_actions or [" pass"]),
- "frozen_models": freezer.freeze_apps_to_string(apps_to_freeze),
- "complete_apps": apps_to_freeze and "complete_apps = [%s]" % (", ".join(map(repr, apps_to_freeze))) or ""
- }
-
- # Deal with update mode as late as possible, avoid a rollback as long
- # as something else can go wrong.
- if update:
- last_migration = migrations[-1]
- if MigrationHistory.objects.filter(applied__isnull=False, app_name=app, migration=last_migration.name()):
- print("Migration to be updated, %s, is already applied, rolling it back now..." % last_migration.name(), file=sys.stderr)
- migrate_app(migrations, 'current-1', verbosity=verbosity)
- for ext in ('py', 'pyc'):
- old_filename = "%s.%s" % (os.path.join(migrations.migrations_dir(), last_migration.filename), ext)
- if os.path.isfile(old_filename):
- os.unlink(old_filename)
- migrations.remove(last_migration)
-
- # See what filename is next in line. We assume they use numbers.
- new_filename = migrations.next_filename(name)
-
- # - is a special name which means 'print to stdout'
- if name == "-":
- print(file_contents)
- # Write the migration file if the name isn't -
- else:
- fp = open(os.path.join(migrations.migrations_dir(), new_filename), "w")
- fp.write(file_contents)
- fp.close()
- verb = 'Updated' if update else 'Created'
- if empty:
- print("%s %s. You must now edit this migration and add the code for each direction." % (verb, new_filename), file=sys.stderr)
- else:
- print("%s %s. You can now apply this migration with: ./manage.py migrate %s" % (verb, new_filename, app), file=sys.stderr)
-
- def get_migration_template(self):
- return MIGRATION_TEMPLATE
-
-
-MIGRATION_TEMPLATE = """# -*- coding: utf-8 -*-
-from south.utils import datetime_utils as datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
-%(forwards)s
-
- def backwards(self, orm):
-%(backwards)s
-
- models = %(frozen_models)s
-
- %(complete_apps)s"""
diff --git a/lib/python2.7/site-packages/south/management/commands/startmigration.py b/lib/python2.7/site-packages/south/management/commands/startmigration.py
deleted file mode 100644
index e4fcf45..0000000
--- a/lib/python2.7/site-packages/south/management/commands/startmigration.py
+++ /dev/null
@@ -1,33 +0,0 @@
-"""
-Now-obsolete startmigration command.
-"""
-
-from __future__ import print_function
-
-from optparse import make_option
-
-from django.core.management.base import BaseCommand
-from django.core.management.color import no_style
-
-class Command(BaseCommand):
- option_list = BaseCommand.option_list + (
- make_option('--model', action='append', dest='added_model_list', type='string',
- help='Generate a Create Table migration for the specified model. Add multiple models to this migration with subsequent --add-model parameters.'),
- make_option('--add-field', action='append', dest='added_field_list', type='string',
- help='Generate an Add Column migration for the specified modelname.fieldname - you can use this multiple times to add more than one column.'),
- make_option('--add-index', action='append', dest='added_index_list', type='string',
- help='Generate an Add Index migration for the specified modelname.fieldname - you can use this multiple times to add more than one column.'),
- make_option('--initial', action='store_true', dest='initial', default=False,
- help='Generate the initial schema for the app.'),
- make_option('--auto', action='store_true', dest='auto', default=False,
- help='Attempt to automatically detect differences from the last migration.'),
- make_option('--freeze', action='append', dest='freeze_list', type='string',
- help='Freeze the specified model(s). Pass in either an app name (to freeze the whole app) or a single model, as appname.modelname.'),
- make_option('--stdout', action='store_true', dest='stdout', default=False,
- help='Print the migration to stdout instead of writing it to a file.'),
- )
- help = "Deprecated command"
-
- def handle(self, app=None, name="", added_model_list=None, added_field_list=None, initial=False, freeze_list=None, auto=False, stdout=False, added_index_list=None, **options):
-
- print("The 'startmigration' command is now deprecated; please use the new 'schemamigration' and 'datamigration' commands.")
diff --git a/lib/python2.7/site-packages/south/management/commands/syncdb.py b/lib/python2.7/site-packages/south/management/commands/syncdb.py
deleted file mode 100644
index 17fc22c..0000000
--- a/lib/python2.7/site-packages/south/management/commands/syncdb.py
+++ /dev/null
@@ -1,115 +0,0 @@
-"""
-Overridden syncdb command
-"""
-
-from __future__ import print_function
-
-import sys
-from optparse import make_option
-
-from django.core.management.base import NoArgsCommand, BaseCommand
-from django.core.management.color import no_style
-from django.utils.datastructures import SortedDict
-from django.core.management.commands import syncdb
-from django.conf import settings
-from django.db import models
-from django.db.models.loading import cache
-from django.core import management
-
-from south.db import dbs
-from south import migration
-from south.exceptions import NoMigrations
-
-def get_app_label(app):
- return '.'.join( app.__name__.split('.')[0:-1] )
-
-class Command(NoArgsCommand):
- option_list = syncdb.Command.option_list + (
- make_option('--migrate', action='store_true', dest='migrate', default=False,
- help='Tells South to also perform migrations after the sync. Default for during testing, and other internal calls.'),
- make_option('--all', action='store_true', dest='migrate_all', default=False,
- help='Makes syncdb work on all apps, even migrated ones. Be careful!'),
- )
- if '--verbosity' not in [opt.get_opt_string() for opt in syncdb.Command.option_list]:
- option_list += (
- make_option('--verbosity', action='store', dest='verbosity', default='1',
- type='choice', choices=['0', '1', '2'],
- help='Verbosity level; 0=minimal output, 1=normal output, 2=all output'),
- )
- help = "Create the database tables for all apps in INSTALLED_APPS whose tables haven't already been created, except those which use migrations."
-
- def handle_noargs(self, migrate_all=False, **options):
-
- # Import the 'management' module within each installed app, to register
- # dispatcher events.
- # This is copied from Django, to fix bug #511.
- try:
- from django.utils.importlib import import_module
- except ImportError:
- pass # TODO: Remove, only for Django1.0
- else:
- for app_name in settings.INSTALLED_APPS:
- try:
- import_module('.management', app_name)
- except ImportError as exc:
- msg = exc.args[0]
- if not msg.startswith('No module named') or 'management' not in msg:
- raise
-
- # Work out what uses migrations and so doesn't need syncing
- apps_needing_sync = []
- apps_migrated = []
- for app in models.get_apps():
- app_label = get_app_label(app)
- if migrate_all:
- apps_needing_sync.append(app_label)
- else:
- try:
- migrations = migration.Migrations(app_label)
- except NoMigrations:
- # It needs syncing
- apps_needing_sync.append(app_label)
- else:
- # This is a migrated app, leave it
- apps_migrated.append(app_label)
- verbosity = int(options.get('verbosity', 0))
-
- # Run syncdb on only the ones needed
- if verbosity:
- print("Syncing...")
-
- old_installed, settings.INSTALLED_APPS = settings.INSTALLED_APPS, apps_needing_sync
- old_app_store, cache.app_store = cache.app_store, SortedDict([
- (k, v) for (k, v) in cache.app_store.items()
- if get_app_label(k) in apps_needing_sync
- ])
-
- # This will allow the setting of the MySQL storage engine, for example.
- for db in dbs.values():
- db.connection_init()
-
- # OK, run the actual syncdb
- syncdb.Command().execute(**options)
-
- settings.INSTALLED_APPS = old_installed
- cache.app_store = old_app_store
-
- # Migrate if needed
- if options.get('migrate', True):
- if verbosity:
- print("Migrating...")
- # convert from store_true to store_false
- options['no_initial_data'] = not options.get('load_initial_data', True)
- management.call_command('migrate', **options)
-
- # Be obvious about what we did
- if verbosity:
- print("\nSynced:\n > %s" % "\n > ".join(apps_needing_sync))
-
- if options.get('migrate', True):
- if verbosity:
- print("\nMigrated:\n - %s" % "\n - ".join(apps_migrated))
- else:
- if verbosity:
- print("\nNot synced (use migrations):\n - %s" % "\n - ".join(apps_migrated))
- print("(use ./manage.py migrate to migrate these)")
diff --git a/lib/python2.7/site-packages/south/management/commands/test.py b/lib/python2.7/site-packages/south/management/commands/test.py
deleted file mode 100644
index 9901786..0000000
--- a/lib/python2.7/site-packages/south/management/commands/test.py
+++ /dev/null
@@ -1,8 +0,0 @@
-from django.core.management.commands import test
-
-from south.management.commands import patch_for_test_db_setup
-
-class Command(test.Command):
- def handle(self, *args, **kwargs):
- patch_for_test_db_setup()
- super(Command, self).handle(*args, **kwargs)
diff --git a/lib/python2.7/site-packages/south/management/commands/testserver.py b/lib/python2.7/site-packages/south/management/commands/testserver.py
deleted file mode 100644
index 3c3c4b5..0000000
--- a/lib/python2.7/site-packages/south/management/commands/testserver.py
+++ /dev/null
@@ -1,8 +0,0 @@
-from django.core.management.commands import testserver
-
-from south.management.commands import patch_for_test_db_setup
-
-class Command(testserver.Command):
- def handle(self, *args, **kwargs):
- patch_for_test_db_setup()
- super(Command, self).handle(*args, **kwargs)
diff --git a/lib/python2.7/site-packages/south/migration/__init__.py b/lib/python2.7/site-packages/south/migration/__init__.py
deleted file mode 100644
index 1d91ddf..0000000
--- a/lib/python2.7/site-packages/south/migration/__init__.py
+++ /dev/null
@@ -1,235 +0,0 @@
-"""
-Main migration logic.
-"""
-
-from __future__ import print_function
-
-import sys
-
-from django.core.exceptions import ImproperlyConfigured
-
-import south.db
-from south import exceptions
-from south.models import MigrationHistory
-from south.db import db, DEFAULT_DB_ALIAS
-from south.migration.migrators import (Backwards, Forwards,
- DryRunMigrator, FakeMigrator,
- LoadInitialDataMigrator)
-from south.migration.base import Migration, Migrations
-from south.migration.utils import SortedSet
-from south.migration.base import all_migrations
-from south.signals import pre_migrate, post_migrate
-
-
-def to_apply(forwards, done):
- return [m for m in forwards if m not in done]
-
-def to_unapply(backwards, done):
- return [m for m in backwards if m in done]
-
-def problems(pending, done):
- last = None
- if not pending:
- raise StopIteration()
- for migration in pending:
- if migration in done:
- last = migration
- continue
- if last and migration not in done:
- yield last, migration
-
-def forwards_problems(pending, done, verbosity):
- """
- Takes the list of linearised pending migrations, and the set of done ones,
- and returns the list of problems, if any.
- """
- return inner_problem_check(problems(reversed(pending), done), done, verbosity)
-
-def backwards_problems(pending, done, verbosity):
- return inner_problem_check(problems(pending, done), done, verbosity)
-
-def inner_problem_check(problems, done, verbosity):
- "Takes a set of possible problems and gets the actual issues out of it."
- result = []
- for last, migration in problems:
- checked = set([])
- # 'Last' is the last applied migration. Step back from it until we
- # either find nothing wrong, or we find something.
- to_check = list(last.dependencies)
- while to_check:
- checking = to_check.pop()
- if checking in checked:
- continue
- checked.add(checking)
-
- if checking not in done:
- # That's bad. Error.
- if verbosity:
- print((" ! Migration %s should not have been applied "
- "before %s but was." % (last, checking)))
- result.append((last, checking))
- else:
- to_check.extend(checking.dependencies)
- return result
-
-def check_migration_histories(histories, delete_ghosts=False, ignore_ghosts=False):
- "Checks that there's no 'ghost' migrations in the database."
- exists = SortedSet()
- ghosts = []
- for h in histories:
- try:
- m = h.get_migration()
- m.migration()
- except exceptions.UnknownMigration:
- ghosts.append(h)
- except ImproperlyConfigured:
- pass # Ignore missing applications
- else:
- exists.add(m)
- if ghosts:
- # They may want us to delete ghosts.
- if delete_ghosts:
- for h in ghosts:
- h.delete()
- elif not ignore_ghosts:
- raise exceptions.GhostMigrations(ghosts)
- return exists
-
-def get_dependencies(target, migrations):
- forwards = list
- backwards = list
- if target is None:
- backwards = migrations[0].backwards_plan
- else:
- forwards = target.forwards_plan
- # When migrating backwards we want to remove up to and
- # including the next migration up in this app (not the next
- # one, that includes other apps)
- migration_before_here = target.next()
- if migration_before_here:
- backwards = migration_before_here.backwards_plan
- return forwards, backwards
-
-def get_direction(target, applied, migrations, verbosity, interactive):
- # Get the forwards and reverse dependencies for this target
- forwards, backwards = get_dependencies(target, migrations)
- # Is the whole forward branch applied?
- problems = None
- forwards = forwards()
- workplan = to_apply(forwards, applied)
- if not workplan:
- # If they're all applied, we only know it's not backwards
- direction = None
- else:
- # If the remaining migrations are strictly a right segment of
- # the forwards trace, we just need to go forwards to our
- # target (and check for badness)
- problems = forwards_problems(forwards, applied, verbosity)
- direction = Forwards(verbosity=verbosity, interactive=interactive)
- if not problems:
- # What about the whole backward trace then?
- backwards = backwards()
- missing_backwards = to_apply(backwards, applied)
- if missing_backwards != backwards:
- # If what's missing is a strict left segment of backwards (i.e.
- # all the higher migrations) then we need to go backwards
- workplan = to_unapply(backwards, applied)
- problems = backwards_problems(backwards, applied, verbosity)
- direction = Backwards(verbosity=verbosity, interactive=interactive)
- return direction, problems, workplan
-
-def get_migrator(direction, db_dry_run, fake, load_initial_data):
- if not direction:
- return direction
- if db_dry_run:
- direction = DryRunMigrator(migrator=direction, ignore_fail=False)
- elif fake:
- direction = FakeMigrator(migrator=direction)
- elif load_initial_data:
- direction = LoadInitialDataMigrator(migrator=direction)
- return direction
-
-def get_unapplied_migrations(migrations, applied_migrations):
- applied_migration_names = ['%s.%s' % (mi.app_name,mi.migration) for mi in applied_migrations]
-
- for migration in migrations:
- is_applied = '%s.%s' % (migration.app_label(), migration.name()) in applied_migration_names
- if not is_applied:
- yield migration
-
-def migrate_app(migrations, target_name=None, merge=False, fake=False, db_dry_run=False, yes=False, verbosity=0, load_initial_data=False, skip=False, database=DEFAULT_DB_ALIAS, delete_ghosts=False, ignore_ghosts=False, interactive=False):
- app_label = migrations.app_label()
-
- verbosity = int(verbosity)
- # Fire off the pre-migrate signal
- pre_migrate.send(None, app=app_label, verbosity=verbosity, interactive=verbosity, db=database)
-
- # If there aren't any, quit quizically
- if not migrations:
- print("? You have no migrations for the '%s' app. You might want some." % app_label)
- return
-
- # Load the entire dependency graph
- Migrations.calculate_dependencies()
-
- # Check there's no strange ones in the database
- applied_all = MigrationHistory.objects.filter(applied__isnull=False).order_by('applied').using(database)
- applied = applied_all.filter(app_name=app_label).using(database)
- south.db.db = south.db.dbs[database]
- Migrations.invalidate_all_modules()
-
- south.db.db.debug = (verbosity > 1)
-
- if target_name == 'current-1':
- if applied.count() > 1:
- previous_migration = applied[applied.count() - 2]
- if verbosity:
- print('previous_migration: %s (applied: %s)' % (previous_migration.migration, previous_migration.applied))
- target_name = previous_migration.migration
- else:
- if verbosity:
- print('previous_migration: zero')
- target_name = 'zero'
- elif target_name == 'current+1':
- try:
- first_unapplied_migration = get_unapplied_migrations(migrations, applied).next()
- target_name = first_unapplied_migration.name()
- except StopIteration:
- target_name = None
-
- applied_all = check_migration_histories(applied_all, delete_ghosts, ignore_ghosts)
-
- # Guess the target_name
- target = migrations.guess_migration(target_name)
- if verbosity:
- if target_name not in ('zero', None) and target.name() != target_name:
- print(" - Soft matched migration %s to %s." % (target_name,
- target.name()))
- print("Running migrations for %s:" % app_label)
-
- # Get the forwards and reverse dependencies for this target
- direction, problems, workplan = get_direction(target, applied_all, migrations,
- verbosity, interactive)
- if problems and not (merge or skip):
- raise exceptions.InconsistentMigrationHistory(problems)
-
- # Perform the migration
- migrator = get_migrator(direction, db_dry_run, fake, load_initial_data)
- if migrator:
- migrator.print_title(target)
- success = migrator.migrate_many(target, workplan, database)
- # Finally, fire off the post-migrate signal
- if success:
- post_migrate.send(None, app=app_label, verbosity=verbosity, interactive=verbosity, db=database)
- else:
- if verbosity:
- # Say there's nothing.
- print('- Nothing to migrate.')
- # If we have initial data enabled, and we're at the most recent
- # migration, do initial data.
- # Note: We use a fake Forwards() migrator here. It's never used really.
- if load_initial_data:
- migrator = LoadInitialDataMigrator(migrator=Forwards(verbosity=verbosity))
- migrator.load_initial_data(target, db=database)
- # Send signal.
- post_migrate.send(None, app=app_label, verbosity=verbosity, interactive=verbosity, db=database)
diff --git a/lib/python2.7/site-packages/south/migration/base.py b/lib/python2.7/site-packages/south/migration/base.py
deleted file mode 100644
index 8bd6a5a..0000000
--- a/lib/python2.7/site-packages/south/migration/base.py
+++ /dev/null
@@ -1,440 +0,0 @@
-from __future__ import print_function
-
-from collections import deque
-import datetime
-from imp import reload
-import os
-import re
-import sys
-
-from django.core.exceptions import ImproperlyConfigured
-from django.db import models
-from django.conf import settings
-from django.utils import importlib
-
-from south import exceptions
-from south.migration.utils import depends, dfs, flatten, get_app_label
-from south.orm import FakeORM
-from south.utils import memoize, ask_for_it_by_name, datetime_utils
-from south.migration.utils import app_label_to_app_module
-from south.utils.py3 import string_types, with_metaclass
-
-def all_migrations(applications=None):
- """
- Returns all Migrations for all `applications` that are migrated.
- """
- if applications is None:
- applications = models.get_apps()
- for model_module in applications:
- # The app they've passed is the models module - go up one level
- app_path = ".".join(model_module.__name__.split(".")[:-1])
- app = ask_for_it_by_name(app_path)
- try:
- yield Migrations(app)
- except exceptions.NoMigrations:
- pass
-
-
-def application_to_app_label(application):
- "Works out the app label from either the app label, the app name, or the module"
- if isinstance(application, string_types):
- app_label = application.split('.')[-1]
- else:
- app_label = application.__name__.split('.')[-1]
- return app_label
-
-
-class MigrationsMetaclass(type):
-
- """
- Metaclass which ensures there is only one instance of a Migrations for
- any given app.
- """
-
- def __init__(self, name, bases, dict):
- super(MigrationsMetaclass, self).__init__(name, bases, dict)
- self.instances = {}
-
- def __call__(self, application, **kwds):
-
- app_label = application_to_app_label(application)
-
- # If we don't already have an instance, make one
- if app_label not in self.instances:
- self.instances[app_label] = super(MigrationsMetaclass, self).__call__(app_label_to_app_module(app_label), **kwds)
-
- return self.instances[app_label]
-
- def _clear_cache(self):
- "Clears the cache of Migration objects."
- self.instances = {}
-
-
-class Migrations(with_metaclass(MigrationsMetaclass, list)):
- """
- Holds a list of Migration objects for a particular app.
- """
-
- if getattr(settings, "SOUTH_USE_PYC", False):
- MIGRATION_FILENAME = re.compile(r'(?!__init__)' # Don't match __init__.py
- r'[0-9a-zA-Z_]*' # Don't match dotfiles, or names with dots/invalid chars in them
- r'(\.pyc?)?$') # Match .py or .pyc files, or module dirs
- else:
- MIGRATION_FILENAME = re.compile(r'(?!__init__)' # Don't match __init__.py
- r'[0-9a-zA-Z_]*' # Don't match dotfiles, or names with dots/invalid chars in them
- r'(\.py)?$') # Match only .py files, or module dirs
-
- def __init__(self, application, force_creation=False, verbose_creation=True):
- "Constructor. Takes the module of the app, NOT its models (like get_app returns)"
- self._cache = {}
- self.set_application(application, force_creation, verbose_creation)
-
- def create_migrations_directory(self, verbose=True):
- "Given an application, ensures that the migrations directory is ready."
- migrations_dir = self.migrations_dir()
- # Make the directory if it's not already there
- if not os.path.isdir(migrations_dir):
- if verbose:
- print("Creating migrations directory at '%s'..." % migrations_dir)
- os.mkdir(migrations_dir)
- # Same for __init__.py
- init_path = os.path.join(migrations_dir, "__init__.py")
- if not os.path.isfile(init_path):
- # Touch the init py file
- if verbose:
- print("Creating __init__.py in '%s'..." % migrations_dir)
- open(init_path, "w").close()
-
- def migrations_dir(self):
- """
- Returns the full path of the migrations directory.
- If it doesn't exist yet, returns where it would exist, based on the
- app's migrations module (defaults to app.migrations)
- """
- module_path = self.migrations_module()
- try:
- module = importlib.import_module(module_path)
- except ImportError:
- # There's no migrations module made yet; guess!
- try:
- parent = importlib.import_module(".".join(module_path.split(".")[:-1]))
- except ImportError:
- # The parent doesn't even exist, that's an issue.
- raise exceptions.InvalidMigrationModule(
- application = self.application.__name__,
- module = module_path,
- )
- else:
- # Good guess.
- return os.path.join(os.path.dirname(parent.__file__), module_path.split(".")[-1])
- else:
- # Get directory directly
- return os.path.dirname(module.__file__)
-
- def migrations_module(self):
- "Returns the module name of the migrations module for this"
- app_label = application_to_app_label(self.application)
- if hasattr(settings, "SOUTH_MIGRATION_MODULES"):
- if app_label in settings.SOUTH_MIGRATION_MODULES:
- # There's an override.
- return settings.SOUTH_MIGRATION_MODULES[app_label]
- return self._application.__name__ + '.migrations'
-
- def get_application(self):
- return self._application
-
- def set_application(self, application, force_creation=False, verbose_creation=True):
- """
- Called when the application for this Migrations is set.
- Imports the migrations module object, and throws a paddy if it can't.
- """
- self._application = application
- if not hasattr(application, 'migrations'):
- try:
- module = importlib.import_module(self.migrations_module())
- self._migrations = application.migrations = module
- except ImportError:
- if force_creation:
- self.create_migrations_directory(verbose_creation)
- module = importlib.import_module(self.migrations_module())
- self._migrations = application.migrations = module
- else:
- raise exceptions.NoMigrations(application)
- self._load_migrations_module(application.migrations)
-
- application = property(get_application, set_application)
-
- def _load_migrations_module(self, module):
- self._migrations = module
- filenames = []
- dirname = self.migrations_dir()
- for f in os.listdir(dirname):
- if self.MIGRATION_FILENAME.match(os.path.basename(f)):
- full_path = os.path.join(dirname, f)
- # If it's a .pyc file, only append if the .py isn't already around
- if f.endswith(".pyc") and (os.path.isfile(full_path[:-1])):
- continue
- # If it's a module directory, only append if it contains __init__.py[c].
- if os.path.isdir(full_path):
- if not (os.path.isfile(os.path.join(full_path, "__init__.py")) or \
- (getattr(settings, "SOUTH_USE_PYC", False) and \
- os.path.isfile(os.path.join(full_path, "__init__.pyc")))):
- continue
- filenames.append(f)
- filenames.sort()
- self.extend(self.migration(f) for f in filenames)
-
- def migration(self, filename):
- name = Migration.strip_filename(filename)
- if name not in self._cache:
- self._cache[name] = Migration(self, name)
- return self._cache[name]
-
- def __getitem__(self, value):
- if isinstance(value, string_types):
- return self.migration(value)
- return super(Migrations, self).__getitem__(value)
-
- def _guess_migration(self, prefix):
- prefix = Migration.strip_filename(prefix)
- matches = [m for m in self if m.name().startswith(prefix)]
- if len(matches) == 1:
- return matches[0]
- elif len(matches) > 1:
- raise exceptions.MultiplePrefixMatches(prefix, matches)
- else:
- raise exceptions.UnknownMigration(prefix, None)
-
- def guess_migration(self, target_name):
- if target_name == 'zero' or not self:
- return
- elif target_name is None:
- return self[-1]
- else:
- return self._guess_migration(prefix=target_name)
-
- def app_label(self):
- return self._application.__name__.split('.')[-1]
-
- def full_name(self):
- return self._migrations.__name__
-
- @classmethod
- def calculate_dependencies(cls, force=False):
- "Goes through all the migrations, and works out the dependencies."
- if getattr(cls, "_dependencies_done", False) and not force:
- return
- for migrations in all_migrations():
- for migration in migrations:
- migration.calculate_dependencies()
- cls._dependencies_done = True
-
- @staticmethod
- def invalidate_all_modules():
- "Goes through all the migrations, and invalidates all cached modules."
- for migrations in all_migrations():
- for migration in migrations:
- migration.invalidate_module()
-
- def next_filename(self, name):
- "Returns the fully-formatted filename of what a new migration 'name' would be"
- highest_number = 0
- for migration in self:
- try:
- number = int(migration.name().split("_")[0])
- highest_number = max(highest_number, number)
- except ValueError:
- pass
- # Work out the new filename
- return "%04i_%s.py" % (
- highest_number + 1,
- name,
- )
-
-
-class Migration(object):
-
- """
- Class which represents a particular migration file on-disk.
- """
-
- def __init__(self, migrations, filename):
- """
- Returns the migration class implied by 'filename'.
- """
- self.migrations = migrations
- self.filename = filename
- self.dependencies = set()
- self.dependents = set()
-
- def __str__(self):
- return self.app_label() + ':' + self.name()
-
- def __repr__(self):
- return '<Migration: %s>' % str(self)
-
- def __eq__(self, other):
- return self.app_label() == other.app_label() and self.name() == other.name()
-
- def __hash__(self):
- return hash(str(self))
-
- def app_label(self):
- return self.migrations.app_label()
-
- @staticmethod
- def strip_filename(filename):
- return os.path.splitext(os.path.basename(filename))[0]
-
- def name(self):
- return self.strip_filename(os.path.basename(self.filename))
-
- def full_name(self):
- return self.migrations.full_name() + '.' + self.name()
-
- def migration(self):
- "Tries to load the actual migration module"
- full_name = self.full_name()
- try:
- migration = sys.modules[full_name]
- except KeyError:
- try:
- migration = __import__(full_name, {}, {}, ['Migration'])
- except ImportError as e:
- raise exceptions.UnknownMigration(self, sys.exc_info())
- except Exception as e:
- raise exceptions.BrokenMigration(self, sys.exc_info())
- # Override some imports
- migration._ = lambda x: x # Fake i18n
- migration.datetime = datetime_utils
- return migration
- migration = memoize(migration)
-
- def migration_class(self):
- "Returns the Migration class from the module"
- return self.migration().Migration
-
- def migration_instance(self):
- "Instantiates the migration_class"
- return self.migration_class()()
- migration_instance = memoize(migration_instance)
-
- def previous(self):
- "Returns the migration that comes before this one in the sequence."
- index = self.migrations.index(self) - 1
- if index < 0:
- return None
- return self.migrations[index]
- previous = memoize(previous)
-
- def next(self):
- "Returns the migration that comes after this one in the sequence."
- index = self.migrations.index(self) + 1
- if index >= len(self.migrations):
- return None
- return self.migrations[index]
- next = memoize(next)
-
- def _get_dependency_objects(self, attrname):
- """
- Given the name of an attribute (depends_on or needed_by), either yields
- a list of migration objects representing it, or errors out.
- """
- for app, name in getattr(self.migration_class(), attrname, []):
- try:
- migrations = Migrations(app)
- except ImproperlyConfigured:
- raise exceptions.DependsOnUnmigratedApplication(self, app)
- migration = migrations.migration(name)
- try:
- migration.migration()
- except exceptions.UnknownMigration:
- raise exceptions.DependsOnUnknownMigration(self, migration)
- if migration.is_before(self) == False:
- raise exceptions.DependsOnHigherMigration(self, migration)
- yield migration
-
- def calculate_dependencies(self):
- """
- Loads dependency info for this migration, and stores it in itself
- and any other relevant migrations.
- """
- # Normal deps first
- for migration in self._get_dependency_objects("depends_on"):
- self.dependencies.add(migration)
- migration.dependents.add(self)
- # And reverse deps
- for migration in self._get_dependency_objects("needed_by"):
- self.dependents.add(migration)
- migration.dependencies.add(self)
- # And implicit ordering deps
- previous = self.previous()
- if previous:
- self.dependencies.add(previous)
- previous.dependents.add(self)
-
- def invalidate_module(self):
- """
- Removes the cached version of this migration's module import, so we
- have to re-import it. Used when south.db.db changes.
- """
- reload(self.migration())
- self.migration._invalidate()
-
- def forwards(self):
- return self.migration_instance().forwards
-
- def backwards(self):
- return self.migration_instance().backwards
-
- def forwards_plan(self):
- """
- Returns a list of Migration objects to be applied, in order.
-
- This list includes `self`, which will be applied last.
- """
- return depends(self, lambda x: x.dependencies)
-
- def _backwards_plan(self):
- return depends(self, lambda x: x.dependents)
-
- def backwards_plan(self):
- """
- Returns a list of Migration objects to be unapplied, in order.
-
- This list includes `self`, which will be unapplied last.
- """
- return list(self._backwards_plan())
-
- def is_before(self, other):
- if self.migrations == other.migrations:
- if self.filename < other.filename:
- return True
- return False
-
- def is_after(self, other):
- if self.migrations == other.migrations:
- if self.filename > other.filename:
- return True
- return False
-
- def prev_orm(self):
- if getattr(self.migration_class(), 'symmetrical', False):
- return self.orm()
- previous = self.previous()
- if previous is None:
- # First migration? The 'previous ORM' is empty.
- return FakeORM(None, self.app_label())
- return previous.orm()
- prev_orm = memoize(prev_orm)
-
- def orm(self):
- return FakeORM(self.migration_class(), self.app_label())
- orm = memoize(orm)
-
- def no_dry_run(self):
- migration_class = self.migration_class()
- try:
- return migration_class.no_dry_run
- except AttributeError:
- return False
diff --git a/lib/python2.7/site-packages/south/migration/migrators.py b/lib/python2.7/site-packages/south/migration/migrators.py
deleted file mode 100644
index f405a15..0000000
--- a/lib/python2.7/site-packages/south/migration/migrators.py
+++ /dev/null
@@ -1,379 +0,0 @@
-from __future__ import print_function
-
-from copy import copy, deepcopy
-import datetime
-import inspect
-import sys
-import traceback
-
-from django.core.management import call_command
-from django.core.management.commands import loaddata
-from django.db import models
-from django import VERSION as DJANGO_VERSION
-
-import south.db
-from south import exceptions
-from south.db import DEFAULT_DB_ALIAS
-from south.models import MigrationHistory
-from south.signals import ran_migration
-from south.utils.py3 import StringIO
-
-
-class Migrator(object):
- def __init__(self, verbosity=0, interactive=False):
- self.verbosity = int(verbosity)
- self.interactive = bool(interactive)
-
- @staticmethod
- def title(target):
- raise NotImplementedError()
-
- def print_title(self, target):
- if self.verbosity:
- print(self.title(target))
-
- @staticmethod
- def status(target):
- raise NotImplementedError()
-
- def print_status(self, migration):
- status = self.status(migration)
- if self.verbosity and status:
- print(status)
-
- @staticmethod
- def orm(migration):
- raise NotImplementedError()
-
- def backwards(self, migration):
- return self._wrap_direction(migration.backwards(), migration.prev_orm())
-
- def direction(self, migration):
- raise NotImplementedError()
-
- @staticmethod
- def _wrap_direction(direction, orm):
- args = inspect.getargspec(direction)
- if len(args[0]) == 1:
- # Old migration, no ORM should be passed in
- return direction
- return (lambda: direction(orm))
-
- @staticmethod
- def record(migration, database):
- raise NotImplementedError()
-
- def run_migration_error(self, migration, extra_info=''):
- return (
- ' ! Error found during real run of migration! Aborting.\n'
- '\n'
- ' ! Since you have a database that does not support running\n'
- ' ! schema-altering statements in transactions, we have had \n'
- ' ! to leave it in an interim state between migrations.\n'
- '%s\n'
- ' ! The South developers regret this has happened, and would\n'
- ' ! like to gently persuade you to consider a slightly\n'
- ' ! easier-to-deal-with DBMS (one that supports DDL transactions)\n'
- ' ! NOTE: The error which caused the migration to fail is further up.'
- ) % extra_info
-
- def run_migration(self, migration, database):
- migration_function = self.direction(migration)
- south.db.db.start_transaction()
- try:
- migration_function()
- south.db.db.execute_deferred_sql()
- if not isinstance(getattr(self, '_wrapper', self), DryRunMigrator):
- # record us as having done this in the same transaction,
- # since we're not in a dry run
- self.record(migration, database)
- except:
- south.db.db.rollback_transaction()
- if not south.db.db.has_ddl_transactions:
- print(self.run_migration_error(migration))
- print("Error in migration: %s" % migration)
- raise
- else:
- try:
- south.db.db.commit_transaction()
- except:
- print("Error during commit in migration: %s" % migration)
- raise
-
-
- def run(self, migration, database):
- # Get the correct ORM.
- south.db.db.current_orm = self.orm(migration)
- # If we're not already in a dry run, and the database doesn't support
- # running DDL inside a transaction, *cough*MySQL*cough* then do a dry
- # run first.
- if not isinstance(getattr(self, '_wrapper', self), DryRunMigrator):
- if not south.db.db.has_ddl_transactions:
- dry_run = DryRunMigrator(migrator=self, ignore_fail=False)
- dry_run.run_migration(migration, database)
- return self.run_migration(migration, database)
-
-
- def send_ran_migration(self, migration, database):
- ran_migration.send(None,
- app=migration.app_label(),
- migration=migration,
- method=self.__class__.__name__.lower(),
- verbosity=self.verbosity,
- interactive=self.interactive,
- db=database)
-
- def migrate(self, migration, database):
- """
- Runs the specified migration forwards/backwards, in order.
- """
- app = migration.migrations._migrations
- migration_name = migration.name()
- self.print_status(migration)
- result = self.run(migration, database)
- self.send_ran_migration(migration, database)
- return result
-
- def migrate_many(self, target, migrations, database):
- raise NotImplementedError()
-
-
-class MigratorWrapper(object):
- def __init__(self, migrator, *args, **kwargs):
- self._migrator = copy(migrator)
- attributes = dict([(k, getattr(self, k))
- for k in self.__class__.__dict__
- if not k.startswith('__')])
- self._migrator.__dict__.update(attributes)
- self._migrator.__dict__['_wrapper'] = self
-
- def __getattr__(self, name):
- return getattr(self._migrator, name)
-
-
-class DryRunMigrator(MigratorWrapper):
- def __init__(self, ignore_fail=True, *args, **kwargs):
- super(DryRunMigrator, self).__init__(*args, **kwargs)
- self._ignore_fail = ignore_fail
-
- def _run_migration(self, migration):
- if migration.no_dry_run():
- if self.verbosity:
- print(" - Migration '%s' is marked for no-dry-run." % migration)
- return
- south.db.db.dry_run = True
- # preserve the constraint cache as it can be mutated by the dry run
- constraint_cache = deepcopy(south.db.db._constraint_cache)
- if self._ignore_fail:
- south.db.db.debug, old_debug = False, south.db.db.debug
- pending_creates = south.db.db.get_pending_creates()
- south.db.db.start_transaction()
- migration_function = self.direction(migration)
- try:
- try:
- migration_function()
- south.db.db.execute_deferred_sql()
- except:
- raise exceptions.FailedDryRun(migration, sys.exc_info())
- finally:
- south.db.db.rollback_transactions_dry_run()
- if self._ignore_fail:
- south.db.db.debug = old_debug
- south.db.db.clear_run_data(pending_creates)
- south.db.db.dry_run = False
- # restore the preserved constraint cache from before dry run was
- # executed
- south.db.db._constraint_cache = constraint_cache
-
- def run_migration(self, migration, database):
- try:
- self._run_migration(migration)
- except exceptions.FailedDryRun:
- if self._ignore_fail:
- return False
- raise
-
- def send_ran_migration(self, *args, **kwargs):
- pass
-
-
-class FakeMigrator(MigratorWrapper):
- def run(self, migration, database):
- # Don't actually run, just record as if ran
- self.record(migration, database)
- if self.verbosity:
- print(' (faked)')
-
- def send_ran_migration(self, *args, **kwargs):
- pass
-
-
-class LoadInitialDataMigrator(MigratorWrapper):
-
- def load_initial_data(self, target, db='default'):
- if target is None or target != target.migrations[-1]:
- return
- # Load initial data, if we ended up at target
- if self.verbosity:
- print(" - Loading initial data for %s." % target.app_label())
- if DJANGO_VERSION < (1, 6):
- self.pre_1_6(target, db)
- else:
- self.post_1_6(target, db)
-
- def pre_1_6(self, target, db):
- # Override Django's get_apps call temporarily to only load from the
- # current app
- old_get_apps = models.get_apps
- new_get_apps = lambda: [models.get_app(target.app_label())]
- models.get_apps = new_get_apps
- loaddata.get_apps = new_get_apps
- try:
- call_command('loaddata', 'initial_data', verbosity=self.verbosity, database=db)
- finally:
- models.get_apps = old_get_apps
- loaddata.get_apps = old_get_apps
-
- def post_1_6(self, target, db):
- import django.db.models.loading
- ## build a new 'AppCache' object with just the app we care about.
- old_cache = django.db.models.loading.cache
- new_cache = django.db.models.loading.AppCache()
- new_cache.get_apps = lambda: [new_cache.get_app(target.app_label())]
-
- ## monkeypatch
- django.db.models.loading.cache = new_cache
- try:
- call_command('loaddata', 'initial_data', verbosity=self.verbosity, database=db)
- finally:
- ## unmonkeypatch
- django.db.models.loading.cache = old_cache
-
- def migrate_many(self, target, migrations, database):
- migrator = self._migrator
- result = migrator.__class__.migrate_many(migrator, target, migrations, database)
- if result:
- self.load_initial_data(target, db=database)
- return True
-
-
-class Forwards(Migrator):
- """
- Runs the specified migration forwards, in order.
- """
- torun = 'forwards'
-
- @staticmethod
- def title(target):
- if target is not None:
- return " - Migrating forwards to %s." % target.name()
- else:
- assert False, "You cannot migrate forwards to zero."
-
- @staticmethod
- def status(migration):
- return ' > %s' % migration
-
- @staticmethod
- def orm(migration):
- return migration.orm()
-
- def forwards(self, migration):
- return self._wrap_direction(migration.forwards(), migration.orm())
-
- direction = forwards
-
- @staticmethod
- def record(migration, database):
- # Record us as having done this
- record = MigrationHistory.for_migration(migration, database)
- try:
- from django.utils.timezone import now
- record.applied = now()
- except ImportError:
- record.applied = datetime.datetime.utcnow()
- if database != DEFAULT_DB_ALIAS:
- record.save(using=database)
- else:
- # Django 1.1 and below always go down this branch.
- record.save()
-
- def format_backwards(self, migration):
- if migration.no_dry_run():
- return " (migration cannot be dry-run; cannot discover commands)"
- old_debug, old_dry_run = south.db.db.debug, south.db.db.dry_run
- south.db.db.debug = south.db.db.dry_run = True
- stdout = sys.stdout
- sys.stdout = StringIO()
- try:
- try:
- self.backwards(migration)()
- return sys.stdout.getvalue()
- except:
- raise
- finally:
- south.db.db.debug, south.db.db.dry_run = old_debug, old_dry_run
- sys.stdout = stdout
-
- def run_migration_error(self, migration, extra_info=''):
- extra_info = ('\n'
- '! You *might* be able to recover with:'
- '%s'
- '%s' %
- (self.format_backwards(migration), extra_info))
- return super(Forwards, self).run_migration_error(migration, extra_info)
-
- def migrate_many(self, target, migrations, database):
- try:
- for migration in migrations:
- result = self.migrate(migration, database)
- if result is False: # The migrations errored, but nicely.
- return False
- finally:
- # Call any pending post_syncdb signals
- south.db.db.send_pending_create_signals(verbosity=self.verbosity,
- interactive=self.interactive)
- return True
-
-
-class Backwards(Migrator):
- """
- Runs the specified migration backwards, in order.
- """
- torun = 'backwards'
-
- @staticmethod
- def title(target):
- if target is None:
- return " - Migrating backwards to zero state."
- else:
- return " - Migrating backwards to just after %s." % target.name()
-
- @staticmethod
- def status(migration):
- return ' < %s' % migration
-
- @staticmethod
- def orm(migration):
- return migration.prev_orm()
-
- direction = Migrator.backwards
-
- @staticmethod
- def record(migration, database):
- # Record us as having not done this
- record = MigrationHistory.for_migration(migration, database)
- if record.id is not None:
- if database != DEFAULT_DB_ALIAS:
- record.delete(using=database)
- else:
- # Django 1.1 always goes down here
- record.delete()
-
- def migrate_many(self, target, migrations, database):
- for migration in migrations:
- self.migrate(migration, database)
- return True
-
-
-
diff --git a/lib/python2.7/site-packages/south/migration/utils.py b/lib/python2.7/site-packages/south/migration/utils.py
deleted file mode 100644
index 68b9164..0000000
--- a/lib/python2.7/site-packages/south/migration/utils.py
+++ /dev/null
@@ -1,94 +0,0 @@
-import sys
-from collections import deque
-
-from django.utils.datastructures import SortedDict
-from django.db import models
-
-from south import exceptions
-
-
-class SortedSet(SortedDict):
- def __init__(self, data=tuple()):
- self.extend(data)
-
- def __str__(self):
- return "SortedSet(%s)" % list(self)
-
- def add(self, value):
- self[value] = True
-
- def remove(self, value):
- del self[value]
-
- def extend(self, iterable):
- [self.add(k) for k in iterable]
-
-
-def get_app_label(app):
- """
- Returns the _internal_ app label for the given app module.
- i.e. for <module django.contrib.auth.models> will return 'auth'
- """
- return app.__name__.split('.')[-2]
-
-
-def app_label_to_app_module(app_label):
- """
- Given the app label, returns the module of the app itself (unlike models.get_app,
- which returns the models module)
- """
- # Get the models module
- app = models.get_app(app_label)
- module_name = ".".join(app.__name__.split(".")[:-1])
- try:
- module = sys.modules[module_name]
- except KeyError:
- __import__(module_name, {}, {}, [''])
- module = sys.modules[module_name]
- return module
-
-
-def flatten(*stack):
- stack = deque(stack)
- while stack:
- try:
- x = next(stack[0])
- except TypeError:
- stack[0] = iter(stack[0])
- x = next(stack[0])
- except StopIteration:
- stack.popleft()
- continue
- if hasattr(x, '__iter__') and not isinstance(x, str):
- stack.appendleft(x)
- else:
- yield x
-
-dependency_cache = {}
-
-def _dfs(start, get_children, path):
- if (start, get_children) in dependency_cache:
- return dependency_cache[(start, get_children)]
-
- results = []
- if start in path:
- raise exceptions.CircularDependency(path[path.index(start):] + [start])
- path.append(start)
- results.append(start)
- children = sorted(get_children(start), key=lambda x: str(x))
-
- # We need to apply all the migrations this one depends on
- for n in children:
- results = _dfs(n, get_children, path) + results
-
- path.pop()
-
- results = list(SortedSet(results))
- dependency_cache[(start, get_children)] = results
- return results
-
-def dfs(start, get_children):
- return _dfs(start, get_children, [])
-
-def depends(start, get_children):
- return dfs(start, get_children)
diff --git a/lib/python2.7/site-packages/south/models.py b/lib/python2.7/site-packages/south/models.py
deleted file mode 100644
index 8239d61..0000000
--- a/lib/python2.7/site-packages/south/models.py
+++ /dev/null
@@ -1,37 +0,0 @@
-from django.db import models
-from south.db import DEFAULT_DB_ALIAS
-
-class MigrationHistory(models.Model):
- app_name = models.CharField(max_length=255)
- migration = models.CharField(max_length=255)
- applied = models.DateTimeField(blank=True)
-
- @classmethod
- def for_migration(cls, migration, database):
- try:
- # Switch on multi-db-ness
- if database != DEFAULT_DB_ALIAS:
- # Django 1.2
- objects = cls.objects.using(database)
- else:
- # Django <= 1.1
- objects = cls.objects
- return objects.get(
- app_name=migration.app_label(),
- migration=migration.name(),
- )
- except cls.DoesNotExist:
- return cls(
- app_name=migration.app_label(),
- migration=migration.name(),
- )
-
- def get_migrations(self):
- from south.migration.base import Migrations
- return Migrations(self.app_name)
-
- def get_migration(self):
- return self.get_migrations().migration(self.migration)
-
- def __str__(self):
- return "<%s: %s>" % (self.app_name, self.migration)
diff --git a/lib/python2.7/site-packages/south/modelsinspector.py b/lib/python2.7/site-packages/south/modelsinspector.py
deleted file mode 100644
index 13e493d..0000000
--- a/lib/python2.7/site-packages/south/modelsinspector.py
+++ /dev/null
@@ -1,464 +0,0 @@
-"""
-Like the old south.modelsparser, but using introspection where possible
-rather than direct inspection of models.py.
-"""
-
-from __future__ import print_function
-
-import datetime
-import re
-import decimal
-
-from south.utils import get_attribute, auto_through
-from south.utils.py3 import text_type
-
-from django.db import models
-from django.db.models.base import ModelBase, Model
-from django.db.models.fields import NOT_PROVIDED
-from django.conf import settings
-from django.utils.functional import Promise
-from django.contrib.contenttypes import generic
-from django.utils.datastructures import SortedDict
-from django.utils import datetime_safe
-
-NOISY = False
-
-try:
- from django.utils import timezone
-except ImportError:
- timezone = False
-
-
-# Define any converter functions first to prevent NameErrors
-
-def convert_on_delete_handler(value):
- django_db_models_module = 'models' # relative to standard import 'django.db'
- if hasattr(models, "PROTECT"):
- if value in (models.CASCADE, models.PROTECT, models.DO_NOTHING, models.SET_DEFAULT):
- # straightforward functions
- return '%s.%s' % (django_db_models_module, value.__name__)
- else:
- # This is totally dependent on the implementation of django.db.models.deletion.SET
- func_name = getattr(value, '__name__', None)
- if func_name == 'set_on_delete':
- # we must inspect the function closure to see what parameters were passed in
- closure_contents = value.__closure__[0].cell_contents
- if closure_contents is None:
- return "%s.SET_NULL" % (django_db_models_module)
- # simple function we can perhaps cope with:
- elif hasattr(closure_contents, '__call__'):
- raise ValueError("South does not support on_delete with SET(function) as values.")
- else:
- # Attempt to serialise the value
- return "%s.SET(%s)" % (django_db_models_module, value_clean(closure_contents))
- raise ValueError("%s was not recognized as a valid model deletion handler. Possible values: %s." % (value, ', '.join(f.__name__ for f in (models.CASCADE, models.PROTECT, models.SET, models.SET_NULL, models.SET_DEFAULT, models.DO_NOTHING))))
- else:
- raise ValueError("on_delete argument encountered in Django version that does not support it")
-
-# Gives information about how to introspect certain fields.
-# This is a list of triples; the first item is a list of fields it applies to,
-# (note that isinstance is used, so superclasses are perfectly valid here)
-# the second is a list of positional argument descriptors, and the third
-# is a list of keyword argument descriptors.
-# Descriptors are of the form:
-# [attrname, options]
-# Where attrname is the attribute on the field to get the value from, and options
-# is an optional dict.
-#
-# The introspector uses the combination of all matching entries, in order.
-
-introspection_details = [
- (
- (models.Field, ),
- [],
- {
- "null": ["null", {"default": False}],
- "blank": ["blank", {"default": False, "ignore_if":"primary_key"}],
- "primary_key": ["primary_key", {"default": False}],
- "max_length": ["max_length", {"default": None}],
- "unique": ["_unique", {"default": False}],
- "db_index": ["db_index", {"default": False}],
- "default": ["default", {"default": NOT_PROVIDED, "ignore_dynamics": True}],
- "db_column": ["db_column", {"default": None}],
- "db_tablespace": ["db_tablespace", {"default": settings.DEFAULT_INDEX_TABLESPACE}],
- },
- ),
- (
- (models.ForeignKey, models.OneToOneField),
- [],
- dict([
- ("to", ["rel.to", {}]),
- ("to_field", ["rel.field_name", {"default_attr": "rel.to._meta.pk.name"}]),
- ("related_name", ["rel.related_name", {"default": None}]),
- ("db_index", ["db_index", {"default": True}]),
- ("on_delete", ["rel.on_delete", {"default": getattr(models, "CASCADE", None), "is_django_function": True, "converter": convert_on_delete_handler, "ignore_missing": True}])
- ])
- ),
- (
- (models.ManyToManyField,),
- [],
- {
- "to": ["rel.to", {}],
- "symmetrical": ["rel.symmetrical", {"default": True}],
- "related_name": ["rel.related_name", {"default": None}],
- "db_table": ["db_table", {"default": None}],
- # TODO: Kind of ugly to add this one-time-only option
- "through": ["rel.through", {"ignore_if_auto_through": True}],
- },
- ),
- (
- (models.DateField, models.TimeField),
- [],
- {
- "auto_now": ["auto_now", {"default": False}],
- "auto_now_add": ["auto_now_add", {"default": False}],
- },
- ),
- (
- (models.DecimalField, ),
- [],
- {
- "max_digits": ["max_digits", {"default": None}],
- "decimal_places": ["decimal_places", {"default": None}],
- },
- ),
- (
- (models.SlugField, ),
- [],
- {
- "db_index": ["db_index", {"default": True}],
- },
- ),
- (
- (models.BooleanField, ),
- [],
- {
- "default": ["default", {"default": NOT_PROVIDED, "converter": bool}],
- "blank": ["blank", {"default": True, "ignore_if":"primary_key"}],
- },
- ),
- (
- (models.FilePathField, ),
- [],
- {
- "path": ["path", {"default": ''}],
- "match": ["match", {"default": None}],
- "recursive": ["recursive", {"default": False}],
- },
- ),
- (
- (generic.GenericRelation, ),
- [],
- {
- "to": ["rel.to", {}],
- "symmetrical": ["rel.symmetrical", {"default": True}],
- "object_id_field": ["object_id_field_name", {"default": "object_id"}],
- "content_type_field": ["content_type_field_name", {"default": "content_type"}],
- "blank": ["blank", {"default": True}],
- },
- ),
-]
-
-# Regexes of allowed field full paths
-allowed_fields = [
- "^django\.db",
- "^django\.contrib\.contenttypes\.generic",
- "^django\.contrib\.localflavor",
- "^django_localflavor_\w\w",
-]
-
-# Regexes of ignored fields (custom fields which look like fields, but have no column behind them)
-ignored_fields = [
- "^django\.contrib\.contenttypes\.generic\.GenericRelation",
- "^django\.contrib\.contenttypes\.generic\.GenericForeignKey",
-]
-
-# Similar, but for Meta, so just the inner level (kwds).
-meta_details = {
- "db_table": ["db_table", {"default_attr_concat": ["%s_%s", "app_label", "module_name"]}],
- "db_tablespace": ["db_tablespace", {"default": settings.DEFAULT_TABLESPACE}],
- "unique_together": ["unique_together", {"default": []}],
- "index_together": ["index_together", {"default": [], "ignore_missing": True}],
- "ordering": ["ordering", {"default": []}],
- "proxy": ["proxy", {"default": False, "ignore_missing": True}],
-}
-
-
-def add_introspection_rules(rules=[], patterns=[]):
- "Allows you to add some introspection rules at runtime, e.g. for 3rd party apps."
- assert isinstance(rules, (list, tuple))
- assert isinstance(patterns, (list, tuple))
- allowed_fields.extend(patterns)
- introspection_details.extend(rules)
-
-
-def add_ignored_fields(patterns):
- "Allows you to add some ignore field patterns."
- assert isinstance(patterns, (list, tuple))
- ignored_fields.extend(patterns)
-
-
-def can_ignore(field):
- """
- Returns True if we know for certain that we can ignore this field, False
- otherwise.
- """
- full_name = "%s.%s" % (field.__class__.__module__, field.__class__.__name__)
- for regex in ignored_fields:
- if re.match(regex, full_name):
- return True
- return False
-
-
-def can_introspect(field):
- """
- Returns True if we are allowed to introspect this field, False otherwise.
- ('allowed' means 'in core'. Custom fields can declare they are introspectable
- by the default South rules by adding the attribute _south_introspects = True.)
- """
- # Check for special attribute
- if hasattr(field, "_south_introspects") and field._south_introspects:
- return True
- # Check it's an introspectable field
- full_name = "%s.%s" % (field.__class__.__module__, field.__class__.__name__)
- for regex in allowed_fields:
- if re.match(regex, full_name):
- return True
- return False
-
-
-def matching_details(field):
- """
- Returns the union of all matching entries in introspection_details for the field.
- """
- our_args = []
- our_kwargs = {}
- for classes, args, kwargs in introspection_details:
- if any([isinstance(field, x) for x in classes]):
- our_args.extend(args)
- our_kwargs.update(kwargs)
- return our_args, our_kwargs
-
-
-class IsDefault(Exception):
- """
- Exception for when a field contains its default value.
- """
-
-
-def get_value(field, descriptor):
- """
- Gets an attribute value from a Field instance and formats it.
- """
- attrname, options = descriptor
- # If the options say it's not a attribute name but a real value, use that.
- if options.get('is_value', False):
- value = attrname
- else:
- try:
- value = get_attribute(field, attrname)
- except AttributeError:
- if options.get("ignore_missing", False):
- raise IsDefault
- else:
- raise
-
- # Lazy-eval functions get eval'd.
- if isinstance(value, Promise):
- value = text_type(value)
- # If the value is the same as the default, omit it for clarity
- if "default" in options and value == options['default']:
- raise IsDefault
- # If there's an ignore_if, use it
- if "ignore_if" in options:
- if get_attribute(field, options['ignore_if']):
- raise IsDefault
- # If there's an ignore_if_auto_through which is True, use it
- if options.get("ignore_if_auto_through", False):
- if auto_through(field):
- raise IsDefault
- # Some default values need to be gotten from an attribute too.
- if "default_attr" in options:
- default_value = get_attribute(field, options['default_attr'])
- if value == default_value:
- raise IsDefault
- # Some are made from a formatting string and several attrs (e.g. db_table)
- if "default_attr_concat" in options:
- format, attrs = options['default_attr_concat'][0], options['default_attr_concat'][1:]
- default_value = format % tuple(map(lambda x: get_attribute(field, x), attrs))
- if value == default_value:
- raise IsDefault
- # Clean and return the value
- return value_clean(value, options)
-
-
-def value_clean(value, options={}):
- "Takes a value and cleans it up (so e.g. it has timezone working right)"
- # Lazy-eval functions get eval'd.
- if isinstance(value, Promise):
- value = text_type(value)
- # Callables get called.
- if not options.get('is_django_function', False) and callable(value) and not isinstance(value, ModelBase):
- # Datetime.datetime.now is special, as we can access it from the eval
- # context (and because it changes all the time; people will file bugs otherwise).
- if value == datetime.datetime.now:
- return "datetime.datetime.now"
- elif value == datetime.datetime.utcnow:
- return "datetime.datetime.utcnow"
- elif value == datetime.date.today:
- return "datetime.date.today"
- # In case we use Django's own now function, revert to datetime's
- # original one since we'll deal with timezones on our own.
- elif timezone and value == timezone.now:
- return "datetime.datetime.now"
- # All other callables get called.
- value = value()
- # Models get their own special repr()
- if isinstance(value, ModelBase):
- # If it's a proxy model, follow it back to its non-proxy parent
- if getattr(value._meta, "proxy", False):
- value = value._meta.proxy_for_model
- return "orm['%s.%s']" % (value._meta.app_label, value._meta.object_name)
- # As do model instances
- if isinstance(value, Model):
- if options.get("ignore_dynamics", False):
- raise IsDefault
- return "orm['%s.%s'].objects.get(pk=%r)" % (value.__class__._meta.app_label, value.__class__._meta.object_name, value.pk)
- # Make sure Decimal is converted down into a string
- if isinstance(value, decimal.Decimal):
- value = str(value)
- # in case the value is timezone aware
- datetime_types = (
- datetime.datetime,
- datetime.time,
- datetime_safe.datetime,
- )
- if (timezone and isinstance(value, datetime_types) and
- getattr(settings, 'USE_TZ', False) and
- value is not None and timezone.is_aware(value)):
- default_timezone = timezone.get_default_timezone()
- value = timezone.make_naive(value, default_timezone)
- # datetime_safe has an improper repr value
- if isinstance(value, datetime_safe.datetime):
- value = datetime.datetime(*value.utctimetuple()[:7])
- # converting a date value to a datetime to be able to handle
- # timezones later gracefully
- elif isinstance(value, (datetime.date, datetime_safe.date)):
- value = datetime.datetime(*value.timetuple()[:3])
- # Now, apply the converter func if there is one
- if "converter" in options:
- value = options['converter'](value)
- # Return the final value
- if options.get('is_django_function', False):
- return value
- else:
- return repr(value)
-
-
-def introspector(field):
- """
- Given a field, introspects its definition triple.
- """
- arg_defs, kwarg_defs = matching_details(field)
- args = []
- kwargs = {}
- # For each argument, use the descriptor to get the real value.
- for defn in arg_defs:
- try:
- args.append(get_value(field, defn))
- except IsDefault:
- pass
- for kwd, defn in kwarg_defs.items():
- try:
- kwargs[kwd] = get_value(field, defn)
- except IsDefault:
- pass
- return args, kwargs
-
-
-def get_model_fields(model, m2m=False):
- """
- Given a model class, returns a dict of {field_name: field_triple} defs.
- """
-
- field_defs = SortedDict()
- inherited_fields = {}
-
- # Go through all bases (that are themselves models, but not Model)
- for base in model.__bases__:
- if hasattr(base, '_meta') and issubclass(base, models.Model):
- if not base._meta.abstract:
- # Looks like we need their fields, Ma.
- inherited_fields.update(get_model_fields(base))
-
- # Now, go through all the fields and try to get their definition
- source = model._meta.local_fields[:]
- if m2m:
- source += model._meta.local_many_to_many
-
- for field in source:
- # Can we ignore it completely?
- if can_ignore(field):
- continue
- # Does it define a south_field_triple method?
- if hasattr(field, "south_field_triple"):
- if NOISY:
- print(" ( Nativing field: %s" % field.name)
- field_defs[field.name] = field.south_field_triple()
- # Can we introspect it?
- elif can_introspect(field):
- # Get the full field class path.
- field_class = field.__class__.__module__ + "." + field.__class__.__name__
- # Run this field through the introspector
- args, kwargs = introspector(field)
- # Workaround for Django bug #13987
- if model._meta.pk.column == field.column and 'primary_key' not in kwargs:
- kwargs['primary_key'] = True
- # That's our definition!
- field_defs[field.name] = (field_class, args, kwargs)
- # Shucks, no definition!
- else:
- if NOISY:
- print(" ( Nodefing field: %s" % field.name)
- field_defs[field.name] = None
-
- # If they've used the horrific hack that is order_with_respect_to, deal with
- # it.
- if model._meta.order_with_respect_to:
- field_defs['_order'] = ("django.db.models.fields.IntegerField", [], {"default": "0"})
-
- return field_defs
-
-
-def get_model_meta(model):
- """
- Given a model class, will return the dict representing the Meta class.
- """
-
- # Get the introspected attributes
- meta_def = {}
- for kwd, defn in meta_details.items():
- try:
- meta_def[kwd] = get_value(model._meta, defn)
- except IsDefault:
- pass
-
- # Also, add on any non-abstract model base classes.
- # This is called _ormbases as the _bases variable was previously used
- # for a list of full class paths to bases, so we can't conflict.
- for base in model.__bases__:
- if hasattr(base, '_meta') and issubclass(base, models.Model):
- if not base._meta.abstract:
- # OK, that matches our terms.
- if "_ormbases" not in meta_def:
- meta_def['_ormbases'] = []
- meta_def['_ormbases'].append("%s.%s" % (
- base._meta.app_label,
- base._meta.object_name,
- ))
-
- return meta_def
-
-
-# Now, load the built-in South introspection plugins
-import south.introspection_plugins
diff --git a/lib/python2.7/site-packages/south/orm.py b/lib/python2.7/site-packages/south/orm.py
deleted file mode 100644
index 8d46ee7..0000000
--- a/lib/python2.7/site-packages/south/orm.py
+++ /dev/null
@@ -1,407 +0,0 @@
-"""
-South's fake ORM; lets you not have to write SQL inside migrations.
-Roughly emulates the real Django ORM, to a point.
-"""
-
-from __future__ import print_function
-
-import inspect
-
-from django.db import models
-from django.db.models.loading import cache
-from django.core.exceptions import ImproperlyConfigured
-
-from south.db import db
-from south.utils import ask_for_it_by_name, datetime_utils
-from south.hacks import hacks
-from south.exceptions import UnfreezeMeLater, ORMBaseNotIncluded, ImpossibleORMUnfreeze
-from south.utils.py3 import string_types
-
-
-class ModelsLocals(object):
-
- """
- Custom dictionary-like class to be locals();
- falls back to lowercase search for items that don't exist
- (because we store model names as lowercase).
- """
-
- def __init__(self, data):
- self.data = data
-
- def __getitem__(self, key):
- try:
- return self.data[key]
- except KeyError:
- return self.data[key.lower()]
-
-
-# Stores already-created ORMs.
-_orm_cache = {}
-
-def FakeORM(*args):
- """
- Creates a Fake Django ORM.
- This is actually a memoised constructor; the real class is _FakeORM.
- """
- if not args in _orm_cache:
- _orm_cache[args] = _FakeORM(*args)
- return _orm_cache[args]
-
-
-class LazyFakeORM(object):
- """
- In addition to memoising the ORM call, this function lazily generates them
- for a Migration class. Assign the result of this to (for example)
- .orm, and as soon as .orm is accessed the ORM will be created.
- """
-
- def __init__(self, *args):
- self._args = args
- self.orm = None
-
- def __get__(self, obj, type=None):
- if not self.orm:
- self.orm = FakeORM(*self._args)
- return self.orm
-
-
-class _FakeORM(object):
-
- """
- Simulates the Django ORM at some point in time,
- using a frozen definition on the Migration class.
- """
-
- def __init__(self, cls, app):
- self.default_app = app
- self.cls = cls
- # Try loading the models off the migration class; default to no models.
- self.models = {}
- try:
- self.models_source = cls.models
- except AttributeError:
- return
-
- # Start a 'new' AppCache
- hacks.clear_app_cache()
-
- # Now, make each model's data into a FakeModel
- # We first make entries for each model that are just its name
- # This allows us to have circular model dependency loops
- model_names = []
- for name, data in self.models_source.items():
- # Make sure there's some kind of Meta
- if "Meta" not in data:
- data['Meta'] = {}
- try:
- app_label, model_name = name.split(".", 1)
- except ValueError:
- app_label = self.default_app
- model_name = name
-
- # If there's an object_name in the Meta, use it and remove it
- if "object_name" in data['Meta']:
- model_name = data['Meta']['object_name']
- del data['Meta']['object_name']
-
- name = "%s.%s" % (app_label, model_name)
- self.models[name.lower()] = name
- model_names.append((name.lower(), app_label, model_name, data))
-
- # Loop until model_names is entry, or hasn't shrunk in size since
- # last iteration.
- # The make_model method can ask to postpone a model; it's then pushed
- # to the back of the queue. Because this is currently only used for
- # inheritance, it should thus theoretically always decrease by one.
- last_size = None
- while model_names:
- # First, make sure we've shrunk.
- if len(model_names) == last_size:
- raise ImpossibleORMUnfreeze()
- last_size = len(model_names)
- # Make one run through
- postponed_model_names = []
- for name, app_label, model_name, data in model_names:
- try:
- self.models[name] = self.make_model(app_label, model_name, data)
- except UnfreezeMeLater:
- postponed_model_names.append((name, app_label, model_name, data))
- # Reset
- model_names = postponed_model_names
-
- # And perform the second run to iron out any circular/backwards depends.
- self.retry_failed_fields()
-
- # Force evaluation of relations on the models now
- for model in self.models.values():
- model._meta.get_all_field_names()
-
- # Reset AppCache
- hacks.unclear_app_cache()
-
-
- def __iter__(self):
- return iter(self.models.values())
-
-
- def __getattr__(self, key):
- fullname = (self.default_app+"."+key).lower()
- try:
- return self.models[fullname]
- except KeyError:
- raise AttributeError("The model '%s' from the app '%s' is not available in this migration. (Did you use orm.ModelName, not orm['app.ModelName']?)" % (key, self.default_app))
-
-
- def __getitem__(self, key):
- # Detect if they asked for a field on a model or not.
- if ":" in key:
- key, fname = key.split(":")
- else:
- fname = None
- # Now, try getting the model
- key = key.lower()
- try:
- model = self.models[key]
- except KeyError:
- try:
- app, model = key.split(".", 1)
- except ValueError:
- raise KeyError("The model '%s' is not in appname.modelname format." % key)
- else:
- raise KeyError("The model '%s' from the app '%s' is not available in this migration." % (model, app))
- # If they asked for a field, get it.
- if fname:
- return model._meta.get_field_by_name(fname)[0]
- else:
- return model
-
-
- def eval_in_context(self, code, app, extra_imports={}):
- "Evaluates the given code in the context of the migration file."
-
- # Drag in the migration module's locals (hopefully including models.py)
- # excluding all models from that (i.e. from modern models.py), to stop pollution
- fake_locals = dict(
- (key, value)
- for key, value in inspect.getmodule(self.cls).__dict__.items()
- if not (
- isinstance(value, type)
- and issubclass(value, models.Model)
- and hasattr(value, "_meta")
- )
- )
-
- # We add our models into the locals for the eval
- fake_locals.update(dict([
- (name.split(".")[-1], model)
- for name, model in self.models.items()
- ]))
-
- # Make sure the ones for this app override.
- fake_locals.update(dict([
- (name.split(".")[-1], model)
- for name, model in self.models.items()
- if name.split(".")[0] == app
- ]))
-
- # Ourselves as orm, to allow non-fail cross-app referencing
- fake_locals['orm'] = self
-
- # And a fake _ function
- fake_locals['_'] = lambda x: x
-
- # Datetime; there should be no datetime direct accesses
- fake_locals['datetime'] = datetime_utils
-
- # Now, go through the requested imports and import them.
- for name, value in extra_imports.items():
- # First, try getting it out of locals.
- parts = value.split(".")
- try:
- obj = fake_locals[parts[0]]
- for part in parts[1:]:
- obj = getattr(obj, part)
- except (KeyError, AttributeError):
- pass
- else:
- fake_locals[name] = obj
- continue
- # OK, try to import it directly
- try:
- fake_locals[name] = ask_for_it_by_name(value)
- except ImportError:
- if name == "SouthFieldClass":
- raise ValueError("Cannot import the required field '%s'" % value)
- else:
- print("WARNING: Cannot import '%s'" % value)
-
- # Use ModelsLocals to make lookups work right for CapitalisedModels
- fake_locals = ModelsLocals(fake_locals)
-
- return eval(code, globals(), fake_locals)
-
-
- def make_meta(self, app, model, data, stub=False):
- "Makes a Meta class out of a dict of eval-able arguments."
- results = {'app_label': app}
- for key, code in data.items():
- # Some things we never want to use.
- if key in ["_bases", "_ormbases"]:
- continue
- # Some things we don't want with stubs.
- if stub and key in ["order_with_respect_to"]:
- continue
- # OK, add it.
- try:
- results[key] = self.eval_in_context(code, app)
- except (NameError, AttributeError) as e:
- raise ValueError("Cannot successfully create meta field '%s' for model '%s.%s': %s." % (
- key, app, model, e
- ))
- return type("Meta", tuple(), results)
-
-
- def make_model(self, app, name, data):
- "Makes a Model class out of the given app name, model name and pickled data."
-
- # Extract any bases out of Meta
- if "_ormbases" in data['Meta']:
- # Make sure everything we depend on is done already; otherwise, wait.
- for key in data['Meta']['_ormbases']:
- key = key.lower()
- if key not in self.models:
- raise ORMBaseNotIncluded("Cannot find ORM base %s" % key)
- elif isinstance(self.models[key], string_types):
- # Then the other model hasn't been unfrozen yet.
- # We postpone ourselves; the situation will eventually resolve.
- raise UnfreezeMeLater()
- bases = [self.models[key.lower()] for key in data['Meta']['_ormbases']]
- # Perhaps the old style?
- elif "_bases" in data['Meta']:
- bases = map(ask_for_it_by_name, data['Meta']['_bases'])
- # Ah, bog standard, then.
- else:
- bases = [models.Model]
-
- # Turn the Meta dict into a basic class
- meta = self.make_meta(app, name, data['Meta'], data.get("_stub", False))
-
- failed_fields = {}
- fields = {}
- stub = False
-
- # Now, make some fields!
- for fname, params in data.items():
- # If it's the stub marker, ignore it.
- if fname == "_stub":
- stub = bool(params)
- continue
- elif fname == "Meta":
- continue
- elif not params:
- raise ValueError("Field '%s' on model '%s.%s' has no definition." % (fname, app, name))
- elif isinstance(params, string_types):
- # It's a premade definition string! Let's hope it works...
- code = params
- extra_imports = {}
- else:
- # If there's only one parameter (backwards compat), make it 3.
- if len(params) == 1:
- params = (params[0], [], {})
- # There should be 3 parameters. Code is a tuple of (code, what-to-import)
- if len(params) == 3:
- code = "SouthFieldClass(%s)" % ", ".join(
- params[1] +
- ["%s=%s" % (n, v) for n, v in params[2].items()]
- )
- extra_imports = {"SouthFieldClass": params[0]}
- else:
- raise ValueError("Field '%s' on model '%s.%s' has a weird definition length (should be 1 or 3 items)." % (fname, app, name))
-
- try:
- # Execute it in a probably-correct context.
- field = self.eval_in_context(code, app, extra_imports)
- except (NameError, AttributeError, AssertionError, KeyError):
- # It might rely on other models being around. Add it to the
- # model for the second pass.
- failed_fields[fname] = (code, extra_imports)
- else:
- fields[fname] = field
-
- # Find the app in the Django core, and get its module
- more_kwds = {}
- try:
- app_module = models.get_app(app)
- more_kwds['__module__'] = app_module.__name__
- except ImproperlyConfigured:
- # The app this belonged to has vanished, but thankfully we can still
- # make a mock model, so ignore the error.
- more_kwds['__module__'] = '_south_mock'
-
- more_kwds['Meta'] = meta
-
- # Make our model
- fields.update(more_kwds)
-
- model = type(
- str(name),
- tuple(bases),
- fields,
- )
-
- # If this is a stub model, change Objects to a whiny class
- if stub:
- model.objects = WhinyManager()
- # Also, make sure they can't instantiate it
- model.__init__ = whiny_method
- else:
- model.objects = NoDryRunManager(model.objects)
-
- if failed_fields:
- model._failed_fields = failed_fields
-
- return model
-
- def retry_failed_fields(self):
- "Tries to re-evaluate the _failed_fields for each model."
- for modelkey, model in self.models.items():
- app, modelname = modelkey.split(".", 1)
- if hasattr(model, "_failed_fields"):
- for fname, (code, extra_imports) in model._failed_fields.items():
- try:
- field = self.eval_in_context(code, app, extra_imports)
- except (NameError, AttributeError, AssertionError, KeyError) as e:
- # It's failed again. Complain.
- raise ValueError("Cannot successfully create field '%s' for model '%s': %s." % (
- fname, modelname, e
- ))
- else:
- # Startup that field.
- model.add_to_class(fname, field)
-
-
-class WhinyManager(object):
- "A fake manager that whines whenever you try to touch it. For stub models."
-
- def __getattr__(self, key):
- raise AttributeError("You cannot use items from a stub model.")
-
-
-class NoDryRunManager(object):
- """
- A manager that always proxies through to the real manager,
- unless a dry run is in progress.
- """
-
- def __init__(self, real):
- self.real = real
-
- def __getattr__(self, name):
- if db.dry_run:
- raise AttributeError("You are in a dry run, and cannot access the ORM.\nWrap ORM sections in 'if not db.dry_run:', or if the whole migration is only a data migration, set no_dry_run = True on the Migration class.")
- return getattr(self.real, name)
-
-
-def whiny_method(*a, **kw):
- raise ValueError("You cannot instantiate a stub model.")
diff --git a/lib/python2.7/site-packages/south/signals.py b/lib/python2.7/site-packages/south/signals.py
deleted file mode 100644
index 12a1362..0000000
--- a/lib/python2.7/site-packages/south/signals.py
+++ /dev/null
@@ -1,24 +0,0 @@
-"""
-South-specific signals
-"""
-
-from django.dispatch import Signal
-from django.conf import settings
-
-# Sent at the start of the migration of an app
-pre_migrate = Signal(providing_args=["app", "verbosity", "interactive", "db"])
-
-# Sent after each successful migration of an app
-post_migrate = Signal(providing_args=["app", "verbosity", "interactive", "db"])
-
-# Sent after each run of a particular migration in a direction
-ran_migration = Signal(providing_args=["app", "migration", "method", "verbosity", "interactive", "db"])
-
-# Compatibility code for django.contrib.auth
-# Is causing strange errors, removing for now (we might need to fix up orm first)
-#if 'django.contrib.auth' in settings.INSTALLED_APPS:
- #def create_permissions_compat(app, **kwargs):
- #from django.db.models import get_app
- #from django.contrib.auth.management import create_permissions
- #create_permissions(get_app(app), (), 0)
- #post_migrate.connect(create_permissions_compat)
diff --git a/lib/python2.7/site-packages/south/test_shim.py b/lib/python2.7/site-packages/south/test_shim.py
deleted file mode 100644
index fdf39f3..0000000
--- a/lib/python2.7/site-packages/south/test_shim.py
+++ /dev/null
@@ -1,6 +0,0 @@
-"""
-This file is needed as 1.6 only finds tests in files labelled test_*,
-and ignores tests/__init__.py.
-"""
-
-from south.tests import *
diff --git a/lib/python2.7/site-packages/south/tests/__init__.py b/lib/python2.7/site-packages/south/tests/__init__.py
deleted file mode 100644
index 26779e3..0000000
--- a/lib/python2.7/site-packages/south/tests/__init__.py
+++ /dev/null
@@ -1,109 +0,0 @@
-from __future__ import print_function
-
-#import unittest
-import os
-import sys
-from functools import wraps
-from django.conf import settings
-from south.hacks import hacks
-
-# Make sure skipping tests is available.
-try:
- # easiest and best is unittest included in Django>=1.3
- from django.utils import unittest
-except ImportError:
- # earlier django... use unittest from stdlib
- import unittest
-# however, skipUnless was only added in Python 2.7;
-# if not available, we need to do something else
-try:
- skipUnless = unittest.skipUnless #@UnusedVariable
-except AttributeError:
- def skipUnless(condition, message):
- def decorator(testfunc):
- @wraps(testfunc)
- def wrapper(self):
- if condition:
- # Apply method
- testfunc(self)
- else:
- # The skip exceptions are not available either...
- print("Skipping", testfunc.__name__,"--", message)
- return wrapper
- return decorator
-
-# ditto for skipIf
-try:
- skipIf = unittest.skipIf #@UnusedVariable
-except AttributeError:
- def skipIf(condition, message):
- def decorator(testfunc):
- @wraps(testfunc)
- def wrapper(self):
- if condition:
- print("Skipping", testfunc.__name__,"--", message)
- else:
- # Apply method
- testfunc(self)
- return wrapper
- return decorator
-
-# Add the tests directory so fakeapp is on sys.path
-test_root = os.path.dirname(__file__)
-sys.path.append(test_root)
-
-# Note: the individual test files are imported below this.
-
-class Monkeypatcher(unittest.TestCase):
-
- """
- Base test class for tests that play with the INSTALLED_APPS setting at runtime.
- """
-
- def create_fake_app(self, name):
-
- class Fake:
- pass
-
- fake = Fake()
- fake.__name__ = name
- try:
- fake.migrations = __import__(name + ".migrations", {}, {}, ['migrations'])
- except ImportError:
- pass
- return fake
-
- def setUp(self):
- """
- Changes the Django environment so we can run tests against our test apps.
- """
- if hasattr(self, 'installed_apps'):
- hacks.store_app_cache_state()
- hacks.set_installed_apps(self.installed_apps)
- # Make sure dependencies are calculated for new apps
- Migrations._dependencies_done = False
-
- def tearDown(self):
- """
- Undoes what setUp did.
- """
- if hasattr(self, 'installed_apps'):
- hacks.reset_installed_apps()
- hacks.restore_app_cache_state()
-
-
-# Try importing all tests if asked for (then we can run 'em)
-try:
- skiptest = settings.SKIP_SOUTH_TESTS
-except:
- skiptest = True
-
-if not skiptest:
- from south.tests.db import *
- from south.tests.db_mysql import *
- from south.tests.db_firebird import *
- from south.tests.logic import *
- from south.tests.autodetection import *
- from south.tests.logger import *
- from south.tests.inspector import *
- from south.tests.freezer import *
diff --git a/lib/python2.7/site-packages/south/tests/autodetection.py b/lib/python2.7/site-packages/south/tests/autodetection.py
deleted file mode 100644
index c320d3a..0000000
--- a/lib/python2.7/site-packages/south/tests/autodetection.py
+++ /dev/null
@@ -1,360 +0,0 @@
-from south.tests import unittest
-
-from south.creator.changes import AutoChanges, InitialChanges
-from south.migration.base import Migrations
-from south.tests import Monkeypatcher
-from south.creator import freezer
-from south.orm import FakeORM
-from south.v2 import SchemaMigration
-
-try:
- from django.utils.six.moves import reload_module
-except ImportError:
- # Older django, no python3 support
- reload_module = reload
-
-class TestComparison(unittest.TestCase):
-
- """
- Tests the comparison methods of startmigration.
- """
-
- def test_no_change(self):
- "Test with a completely unchanged definition."
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['southdemo.Lizard']"}),
- ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['southdemo.Lizard']"}),
- ),
- False,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('django.db.models.fields.related.ForeignKey', ['ohhai', 'there'], {'to': "somewhere", "from": "there"}),
- ('django.db.models.fields.related.ForeignKey', ['ohhai', 'there'], {"from": "there", 'to': "somewhere"}),
- ),
- False,
- )
-
-
- def test_pos_change(self):
- "Test with a changed positional argument."
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('django.db.models.fields.CharField', ['hi'], {'to': "foo"}),
- ('django.db.models.fields.CharField', [], {'to': "foo"}),
- ),
- True,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('django.db.models.fields.CharField', [], {'to': "foo"}),
- ('django.db.models.fields.CharField', ['bye'], {'to': "foo"}),
- ),
- True,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('django.db.models.fields.CharField', ['pi'], {'to': "foo"}),
- ('django.db.models.fields.CharField', ['pi'], {'to': "foo"}),
- ),
- False,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('django.db.models.fields.CharField', ['pisdadad'], {'to': "foo"}),
- ('django.db.models.fields.CharField', ['pi'], {'to': "foo"}),
- ),
- True,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('django.db.models.fields.CharField', ['hi'], {}),
- ('django.db.models.fields.CharField', [], {}),
- ),
- True,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('django.db.models.fields.CharField', [], {}),
- ('django.db.models.fields.CharField', ['bye'], {}),
- ),
- True,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('django.db.models.fields.CharField', ['pi'], {}),
- ('django.db.models.fields.CharField', ['pi'], {}),
- ),
- False,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('django.db.models.fields.CharField', ['pi'], {}),
- ('django.db.models.fields.CharField', ['45fdfdf'], {}),
- ),
- True,
- )
-
-
- def test_kwd_change(self):
- "Test a changed keyword argument"
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('django.db.models.fields.CharField', ['pi'], {'to': "foo"}),
- ('django.db.models.fields.CharField', ['pi'], {'to': "blue"}),
- ),
- True,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('django.db.models.fields.CharField', [], {'to': "foo"}),
- ('django.db.models.fields.CharField', [], {'to': "blue"}),
- ),
- True,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('django.db.models.fields.CharField', ['b'], {'to': "foo"}),
- ('django.db.models.fields.CharField', ['b'], {'to': "blue"}),
- ),
- True,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('django.db.models.fields.CharField', [], {'to': "foo"}),
- ('django.db.models.fields.CharField', [], {}),
- ),
- True,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('django.db.models.fields.CharField', ['a'], {'to': "foo"}),
- ('django.db.models.fields.CharField', ['a'], {}),
- ),
- True,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('django.db.models.fields.CharField', [], {}),
- ('django.db.models.fields.CharField', [], {'to': "foo"}),
- ),
- True,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('django.db.models.fields.CharField', ['a'], {}),
- ('django.db.models.fields.CharField', ['a'], {'to': "foo"}),
- ),
- True,
- )
-
-
-
- def test_backcompat_nochange(self):
- "Test that the backwards-compatable comparison is working"
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('models.CharField', [], {}),
- ('django.db.models.fields.CharField', [], {}),
- ),
- False,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('models.CharField', ['ack'], {}),
- ('django.db.models.fields.CharField', ['ack'], {}),
- ),
- False,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('models.CharField', [], {'to':'b'}),
- ('django.db.models.fields.CharField', [], {'to':'b'}),
- ),
- False,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('models.CharField', ['hah'], {'to':'you'}),
- ('django.db.models.fields.CharField', ['hah'], {'to':'you'}),
- ),
- False,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('models.CharField', ['hah'], {'to':'you'}),
- ('django.db.models.fields.CharField', ['hah'], {'to':'heh'}),
- ),
- True,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('models.CharField', ['hah'], {}),
- ('django.db.models.fields.CharField', [], {'to':"orm['appname.hah']"}),
- ),
- False,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('models.CharField', ['hah'], {}),
- ('django.db.models.fields.CharField', [], {'to':'hah'}),
- ),
- True,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('models.CharField', ['hah'], {}),
- ('django.db.models.fields.CharField', [], {'to':'rrr'}),
- ),
- True,
- )
-
- self.assertEqual(
- AutoChanges.different_attributes(
- ('models.CharField', ['hah'], {}),
- ('django.db.models.fields.IntField', [], {'to':'hah'}),
- ),
- True,
- )
-
-class TestNonManagedIgnored(Monkeypatcher):
-
- installed_apps = ["non_managed"]
-
- full_defs = {
- 'non_managed.legacy': {
- 'Meta': {'object_name': 'Legacy', 'db_table': "'legacy_table'", 'managed': 'False'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True'}),
- 'size': ('django.db.models.fields.IntegerField', [], {})
- }
- }
-
- def test_not_added_init(self):
-
- migrations = Migrations("non_managed")
- changes = InitialChanges(migrations)
- change_list = changes.get_changes()
- if list(change_list):
- self.fail("Initial migration creates table for non-managed model")
-
- def test_not_added_auto(self):
-
- empty_defs = { }
- class EmptyMigration(SchemaMigration):
- "Serves as fake previous migration"
-
- def forwards(self, orm):
- pass
-
- def backwards(self, orm):
- pass
-
- models = empty_defs
-
- complete_apps = ['non_managed']
-
- migrations = Migrations("non_managed")
- empty_orm = FakeORM(EmptyMigration, "non_managed")
- changes = AutoChanges(
- migrations = migrations,
- old_defs = empty_defs,
- old_orm = empty_orm,
- new_defs = self.full_defs,
- )
- change_list = changes.get_changes()
- if list(change_list):
- self.fail("Auto migration creates table for non-managed model")
-
- def test_not_deleted_auto(self):
-
- empty_defs = { }
- old_defs = freezer.freeze_apps(["non_managed"])
- class InitialMigration(SchemaMigration):
- "Serves as fake previous migration"
-
- def forwards(self, orm):
- pass
-
- def backwards(self, orm):
- pass
-
- models = self.full_defs
-
- complete_apps = ['non_managed']
-
- migrations = Migrations("non_managed")
- initial_orm = FakeORM(InitialMigration, "non_managed")
- changes = AutoChanges(
- migrations = migrations,
- old_defs = self.full_defs,
- old_orm = initial_orm,
- new_defs = empty_defs,
- )
- change_list = changes.get_changes()
- if list(change_list):
- self.fail("Auto migration deletes table for non-managed model")
-
- def test_not_modified_auto(self):
-
- fake_defs = {
- 'non_managed.legacy': {
- 'Meta': {'object_name': 'Legacy', 'db_table': "'legacy_table'", 'managed': 'False'},
- 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True'}),
- #'size': ('django.db.models.fields.IntegerField', [], {}) # The "change" is the addition of this field
- }
- }
- class InitialMigration(SchemaMigration):
- "Serves as fake previous migration"
-
- def forwards(self, orm):
- pass
-
- def backwards(self, orm):
- pass
-
- models = fake_defs
-
- complete_apps = ['non_managed']
-
- from non_managed import models as dummy_import_to_force_loading_models # TODO: Does needing this indicate a bug in MokeyPatcher?
- reload_module(dummy_import_to_force_loading_models) # really force...
-
- migrations = Migrations("non_managed")
- initial_orm = FakeORM(InitialMigration, "non_managed")
- changes = AutoChanges(
- migrations = migrations,
- old_defs = fake_defs,
- old_orm = initial_orm,
- new_defs = self.full_defs
- )
- change_list = changes.get_changes()
- if list(change_list):
- self.fail("Auto migration changes table for non-managed model")
diff --git a/lib/python2.7/site-packages/south/tests/brokenapp/__init__.py b/lib/python2.7/site-packages/south/tests/brokenapp/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/brokenapp/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/brokenapp/migrations/0001_depends_on_unmigrated.py b/lib/python2.7/site-packages/south/tests/brokenapp/migrations/0001_depends_on_unmigrated.py
deleted file mode 100644
index d53f836..0000000
--- a/lib/python2.7/site-packages/south/tests/brokenapp/migrations/0001_depends_on_unmigrated.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- depends_on = [('unknown', '0001_initial')]
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/brokenapp/migrations/0002_depends_on_unknown.py b/lib/python2.7/site-packages/south/tests/brokenapp/migrations/0002_depends_on_unknown.py
deleted file mode 100644
index 389af80..0000000
--- a/lib/python2.7/site-packages/south/tests/brokenapp/migrations/0002_depends_on_unknown.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- depends_on = [('fakeapp', '9999_unknown')]
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/brokenapp/migrations/0003_depends_on_higher.py b/lib/python2.7/site-packages/south/tests/brokenapp/migrations/0003_depends_on_higher.py
deleted file mode 100644
index 319069b..0000000
--- a/lib/python2.7/site-packages/south/tests/brokenapp/migrations/0003_depends_on_higher.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- depends_on = [('brokenapp', '0004_higher')]
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/brokenapp/migrations/0004_higher.py b/lib/python2.7/site-packages/south/tests/brokenapp/migrations/0004_higher.py
deleted file mode 100644
index d27ed3a..0000000
--- a/lib/python2.7/site-packages/south/tests/brokenapp/migrations/0004_higher.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/brokenapp/migrations/__init__.py b/lib/python2.7/site-packages/south/tests/brokenapp/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/brokenapp/migrations/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/brokenapp/models.py b/lib/python2.7/site-packages/south/tests/brokenapp/models.py
deleted file mode 100644
index a7d84dc..0000000
--- a/lib/python2.7/site-packages/south/tests/brokenapp/models.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# -*- coding: UTF-8 -*-
-
-from django.db import models
-from django.contrib.auth.models import User as UserAlias
-
-def default_func():
- return "yays"
-
-# An empty case.
-class Other1(models.Model): pass
-
-# Nastiness.
-class HorribleModel(models.Model):
- "A model to test the edge cases of model parsing"
-
- ZERO, ONE = range(2)
-
- # First, some nice fields
- name = models.CharField(max_length=255)
- short_name = models.CharField(max_length=50)
- slug = models.SlugField(unique=True)
-
- # A ForeignKey, to a model above, and then below
- o1 = models.ForeignKey(Other1)
- o2 = models.ForeignKey('Other2')
-
- # Now to something outside
- user = models.ForeignKey(UserAlias, related_name="horribles")
-
- # Unicode!
- code = models.CharField(max_length=25, default="↑↑↓↓←→←→BA")
-
- # Odd defaults!
- class_attr = models.IntegerField(default=ZERO)
- func = models.CharField(max_length=25, default=default_func)
-
- # Time to get nasty. Define a non-field choices, and use it
- choices = [('hello', '1'), ('world', '2')]
- choiced = models.CharField(max_length=20, choices=choices)
-
- class Meta:
- db_table = "my_fave"
- verbose_name = "Dr. Strangelove," + \
- """or how I learned to stop worrying
-and love the bomb"""
-
- # Now spread over multiple lines
- multiline = \
- models.TextField(
- )
-
-# Special case.
-class Other2(models.Model):
- # Try loading a field without a newline after it (inspect hates this)
- close_but_no_cigar = models.PositiveIntegerField(primary_key=True) \ No newline at end of file
diff --git a/lib/python2.7/site-packages/south/tests/circular_a/__init__.py b/lib/python2.7/site-packages/south/tests/circular_a/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/circular_a/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/circular_a/migrations/0001_first.py b/lib/python2.7/site-packages/south/tests/circular_a/migrations/0001_first.py
deleted file mode 100644
index b0d90eb..0000000
--- a/lib/python2.7/site-packages/south/tests/circular_a/migrations/0001_first.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- depends_on = [('circular_b', '0001_first')]
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/circular_a/migrations/__init__.py b/lib/python2.7/site-packages/south/tests/circular_a/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/circular_a/migrations/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/circular_a/models.py b/lib/python2.7/site-packages/south/tests/circular_a/models.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/circular_a/models.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/circular_b/__init__.py b/lib/python2.7/site-packages/south/tests/circular_b/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/circular_b/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/circular_b/migrations/0001_first.py b/lib/python2.7/site-packages/south/tests/circular_b/migrations/0001_first.py
deleted file mode 100644
index b11b120..0000000
--- a/lib/python2.7/site-packages/south/tests/circular_b/migrations/0001_first.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- depends_on = [('circular_a', '0001_first')]
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/circular_b/migrations/__init__.py b/lib/python2.7/site-packages/south/tests/circular_b/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/circular_b/migrations/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/circular_b/models.py b/lib/python2.7/site-packages/south/tests/circular_b/models.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/circular_b/models.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/db.py b/lib/python2.7/site-packages/south/tests/db.py
deleted file mode 100644
index e63c563..0000000
--- a/lib/python2.7/site-packages/south/tests/db.py
+++ /dev/null
@@ -1,1060 +0,0 @@
-import datetime
-from warnings import filterwarnings
-
-from south.db import db, generic
-from django.db import connection, models, IntegrityError as DjangoIntegrityError
-
-from south.tests import unittest, skipIf, skipUnless
-from south.utils.py3 import text_type, with_metaclass
-
-# Create a list of error classes from the various database libraries
-errors = []
-try:
- from psycopg2 import ProgrammingError
- errors.append(ProgrammingError)
-except ImportError:
- pass
-errors = tuple(errors)
-
-# On SQL Server, the backend's IntegrityError is not (a subclass of) Django's.
-try:
- from sql_server.pyodbc.base import IntegrityError as SQLServerIntegrityError
- IntegrityError = (DjangoIntegrityError, SQLServerIntegrityError)
-except ImportError:
- IntegrityError = DjangoIntegrityError
-
-try:
- from south.db import mysql
-except ImportError:
- mysql = None
-
-
-class TestOperations(unittest.TestCase):
-
- """
- Tests if the various DB abstraction calls work.
- Can only test a limited amount due to DB differences.
- """
-
- def setUp(self):
- db.debug = False
- try:
- import MySQLdb
- except ImportError:
- pass
- else:
- filterwarnings('ignore', category=MySQLdb.Warning)
- db.clear_deferred_sql()
- db.start_transaction()
-
- def tearDown(self):
- db.rollback_transaction()
-
- def test_create(self):
- """
- Test creation of tables.
- """
- cursor = connection.cursor()
- # It needs to take at least 2 args
- self.assertRaises(TypeError, db.create_table)
- self.assertRaises(TypeError, db.create_table, "test1")
- # Empty tables (i.e. no columns) are not fine, so make at least 1
- db.create_table("test1", [('email_confirmed', models.BooleanField(default=False))])
- # And should exist
- cursor.execute("SELECT * FROM test1")
- # Make sure we can't do the same query on an empty table
- try:
- cursor.execute("SELECT * FROM nottheretest1")
- except:
- pass
- else:
- self.fail("Non-existent table could be selected!")
-
- @skipUnless(db.raises_default_errors, 'This database does not raise errors on missing defaults.')
- def test_create_default(self):
- """
- Test creation of tables, make sure defaults are not left in the database
- """
- db.create_table("test_create_default", [('a', models.IntegerField()),
- ('b', models.IntegerField(default=17))])
- cursor = connection.cursor()
- self.assertRaises(IntegrityError, cursor.execute, "INSERT INTO test_create_default(a) VALUES (17)")
-
- def test_delete(self):
- """
- Test deletion of tables.
- """
- cursor = connection.cursor()
- db.create_table("test_deltable", [('email_confirmed', models.BooleanField(default=False))])
- db.delete_table("test_deltable")
- # Make sure it went
- try:
- cursor.execute("SELECT * FROM test_deltable")
- except:
- pass
- else:
- self.fail("Just-deleted table could be selected!")
-
- def test_nonexistent_delete(self):
- """
- Test deletion of nonexistent tables.
- """
- try:
- db.delete_table("test_nonexistdeltable")
- except:
- pass
- else:
- self.fail("Non-existent table could be deleted!")
-
- def test_foreign_keys(self):
- """
- Tests foreign key creation, especially uppercase (see #61)
- """
- Test = db.mock_model(model_name='Test', db_table='test5a',
- db_tablespace='', pk_field_name='ID',
- pk_field_type=models.AutoField, pk_field_args=[])
- db.create_table("test5a", [('ID', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True))])
- db.create_table("test5b", [
- ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
- ('UNIQUE', models.ForeignKey(Test)),
- ])
- db.execute_deferred_sql()
-
- @skipUnless(db.supports_foreign_keys, 'Foreign keys can only be deleted on '
- 'engines that support them.')
- def test_recursive_foreign_key_delete(self):
- """
- Test that recursive foreign keys are deleted correctly (see #1065)
- """
- Test = db.mock_model(model_name='Test', db_table='test_rec_fk_del',
- db_tablespace='', pk_field_name='id',
- pk_field_type=models.AutoField, pk_field_args=[])
- db.create_table('test_rec_fk_del', [
- ('id', models.AutoField(primary_key=True, auto_created=True)),
- ('fk', models.ForeignKey(Test)),
- ])
- db.execute_deferred_sql()
- db.delete_foreign_key('test_rec_fk_del', 'fk_id')
-
- def test_rename(self):
- """
- Test column renaming
- """
- cursor = connection.cursor()
- db.create_table("test_rn", [('spam', models.BooleanField(default=False))])
- # Make sure we can select the column
- cursor.execute("SELECT spam FROM test_rn")
- # Rename it
- db.rename_column("test_rn", "spam", "eggs")
- cursor.execute("SELECT eggs FROM test_rn")
- db.commit_transaction()
- db.start_transaction()
- try:
- cursor.execute("SELECT spam FROM test_rn")
- except:
- pass
- else:
- self.fail("Just-renamed column could be selected!")
- db.rollback_transaction()
- db.delete_table("test_rn")
- db.start_transaction()
-
- def test_dry_rename(self):
- """
- Test column renaming while --dry-run is turned on (should do nothing)
- See ticket #65
- """
- cursor = connection.cursor()
- db.create_table("test_drn", [('spam', models.BooleanField(default=False))])
- # Make sure we can select the column
- cursor.execute("SELECT spam FROM test_drn")
- # Rename it
- db.dry_run = True
- db.rename_column("test_drn", "spam", "eggs")
- db.dry_run = False
- cursor.execute("SELECT spam FROM test_drn")
- db.commit_transaction()
- db.start_transaction()
- try:
- cursor.execute("SELECT eggs FROM test_drn")
- except:
- pass
- else:
- self.fail("Dry-renamed new column could be selected!")
- db.rollback_transaction()
- db.delete_table("test_drn")
- db.start_transaction()
-
- def test_table_rename(self):
- """
- Test column renaming
- """
- cursor = connection.cursor()
- db.create_table("testtr", [('spam', models.BooleanField(default=False))])
- # Make sure we can select the column
- cursor.execute("SELECT spam FROM testtr")
- # Rename it
- db.rename_table("testtr", "testtr2")
- cursor.execute("SELECT spam FROM testtr2")
- db.commit_transaction()
- db.start_transaction()
- try:
- cursor.execute("SELECT spam FROM testtr")
- except:
- pass
- else:
- self.fail("Just-renamed column could be selected!")
- db.rollback_transaction()
- db.delete_table("testtr2")
- db.start_transaction()
-
- def test_percents_in_defaults(self):
- """
- Test that % in a default gets escaped to %%.
- """
- try:
- db.create_table("testpind", [('cf', models.CharField(max_length=255, default="It should be 2%!"))])
- except IndexError:
- self.fail("% was not properly escaped in column SQL.")
- db.delete_table("testpind")
-
- def test_index(self):
- """
- Test the index operations
- """
- db.create_table("test3", [
- ('SELECT', models.BooleanField(default=False)),
- ('eggs', models.IntegerField(unique=True)),
- ])
- db.execute_deferred_sql()
- # Add an index on that column
- db.create_index("test3", ["SELECT"])
- # Add another index on two columns
- db.create_index("test3", ["SELECT", "eggs"])
- # Delete them both
- db.delete_index("test3", ["SELECT"])
- db.delete_index("test3", ["SELECT", "eggs"])
- # Delete the unique index/constraint
- if db.backend_name != "sqlite3":
- db.delete_unique("test3", ["eggs"])
- db.delete_table("test3")
-
- def test_primary_key(self):
- """
- Test the primary key operations
- """
-
- db.create_table("test_pk", [
- ('id', models.IntegerField(primary_key=True)),
- ('new_pkey', models.IntegerField()),
- ('eggs', models.IntegerField(unique=True)),
- ])
- db.execute_deferred_sql()
- # Remove the default primary key, and make eggs it
- db.delete_primary_key("test_pk")
- db.create_primary_key("test_pk", "new_pkey")
- # Try inserting a now-valid row pair
- db.execute("INSERT INTO test_pk (id, new_pkey, eggs) VALUES (1, 2, 3)")
- db.execute("INSERT INTO test_pk (id, new_pkey, eggs) VALUES (1, 3, 4)")
- db.delete_table("test_pk")
-
- def test_primary_key_implicit(self):
- """
- Tests that changing primary key implicitly fails.
- """
- db.create_table("test_pki", [
- ('id', models.IntegerField(primary_key=True)),
- ('new_pkey', models.IntegerField()),
- ('eggs', models.IntegerField(unique=True)),
- ])
- db.execute_deferred_sql()
- # Fiddle with alter_column to attempt to make it remove the primary key
- db.alter_column("test_pki", "id", models.IntegerField())
- db.alter_column("test_pki", "new_pkey", models.IntegerField(primary_key=True))
- # Try inserting a should-be-valid row pair
- db.execute("INSERT INTO test_pki (id, new_pkey, eggs) VALUES (1, 2, 3)")
- db.execute("INSERT INTO test_pki (id, new_pkey, eggs) VALUES (2, 2, 4)")
- db.delete_table("test_pki")
-
- def test_add_columns(self):
- """
- Test adding columns
- """
- db.create_table("test_addc", [
- ('spam', models.BooleanField(default=False)),
- ('eggs', models.IntegerField()),
- ])
- # Add a column
- db.add_column("test_addc", "add1", models.IntegerField(default=3))
- User = db.mock_model(model_name='User', db_table='auth_user', db_tablespace='', pk_field_name='id', pk_field_type=models.AutoField, pk_field_args=[], pk_field_kwargs={})
- # insert some data so we can test the default value of the added fkey
- db.execute("INSERT INTO test_addc (spam, eggs, add1) VALUES (%s, 1, 2)", [False])
- db.add_column("test_addc", "user", models.ForeignKey(User, null=True))
- db.execute_deferred_sql()
- # try selecting from the user_id column to make sure it was actually created
- val = db.execute("SELECT user_id FROM test_addc")[0][0]
- self.assertEquals(val, None)
- db.delete_column("test_addc", "add1")
- # make sure adding an indexed field works
- db.add_column("test_addc", "add2", models.CharField(max_length=15, db_index=True, default='pi'))
- db.execute_deferred_sql()
- db.delete_table("test_addc")
-
- def test_delete_columns(self):
- """
- Test deleting columns
- """
- db.create_table("test_delc", [
- ('spam', models.BooleanField(default=False)),
- ('eggs', models.IntegerField(db_index=True, unique=True)),
- ])
- db.delete_column("test_delc", "eggs")
-
- def test_add_nullbool_column(self):
- """
- Test adding NullBoolean columns
- """
- db.create_table("test_addnbc", [
- ('spam', models.BooleanField(default=False)),
- ('eggs', models.IntegerField()),
- ])
- # Add a column
- db.add_column("test_addnbc", "add1", models.NullBooleanField())
- # Add a column with a default
- db.add_column("test_addnbc", "add2", models.NullBooleanField(default=True))
- # insert some data so we can test the default values of the added column
- db.execute("INSERT INTO test_addnbc (spam, eggs) VALUES (%s, 1)", [False])
- # try selecting from the new columns to make sure they were properly created
- false, null1, null2 = db.execute("SELECT spam,add1,add2 FROM test_addnbc")[0][0:3]
- self.assertIsNone(null1, "Null boolean field with no value inserted returns non-null")
- self.assertIsNone(null2, "Null boolean field (added with default) with no value inserted returns non-null")
- self.assertEquals(false, False)
- db.delete_table("test_addnbc")
-
- def test_alter_columns(self):
- """
- Test altering columns
- """
- db.create_table("test_alterc", [
- ('spam', models.BooleanField(default=False)),
- ('eggs', models.IntegerField()),
- ])
- db.execute_deferred_sql()
- # Change eggs to be a FloatField
- db.alter_column("test_alterc", "eggs", models.FloatField())
- db.execute_deferred_sql()
- db.delete_table("test_alterc")
- db.execute_deferred_sql()
-
- def test_alter_char_default(self):
- """
- Test altering column defaults with char fields
- """
- db.create_table("test_altercd", [
- ('spam', models.CharField(max_length=30)),
- ('eggs', models.IntegerField()),
- ])
- # Change spam default
- db.alter_column("test_altercd", "spam", models.CharField(max_length=30, default="loof", null=True))
- # Assert the default is not in the database
- db.execute("INSERT INTO test_altercd (eggs) values (12)")
- null = db.execute("SELECT spam FROM test_altercd")[0][0]
- self.assertFalse(null, "Default for char field was installed into database")
-
- # Change again to a column with default and not null
- db.alter_column("test_altercd", "spam", models.CharField(max_length=30, default="loof", null=False))
- # Assert the default is not in the database
- if 'oracle' in db.backend_name:
- # Oracle special treatment -- nulls are always allowed in char columns, so
- # inserting doesn't raise an integrity error; so we check again as above
- db.execute("DELETE FROM test_altercd")
- db.execute("INSERT INTO test_altercd (eggs) values (12)")
- null = db.execute("SELECT spam FROM test_altercd")[0][0]
- self.assertFalse(null, "Default for char field was installed into database")
- else:
- # For other backends, insert should now just fail
- self.assertRaises(IntegrityError,
- db.execute, "INSERT INTO test_altercd (eggs) values (12)")
-
- @skipIf('oracle' in db.backend_name, "Oracle does not differentiate empty trings from null")
- def test_default_empty_string(self):
- """
- Test altering column defaults with char fields
- """
- db.create_table("test_cd_empty", [
- ('spam', models.CharField(max_length=30, default='')),
- ('eggs', models.CharField(max_length=30)),
- ])
- # Create a record
- db.execute("INSERT INTO test_cd_empty (spam, eggs) values ('1','2')")
- # Add a column
- db.add_column("test_cd_empty", "ham", models.CharField(max_length=30, default=''))
-
- empty = db.execute("SELECT ham FROM test_cd_empty")[0][0]
- self.assertEquals(empty, "", "Empty Default for char field isn't empty string")
-
- @skipUnless('oracle' in db.backend_name, "Oracle does not differentiate empty trings from null")
- def test_oracle_strings_null(self):
- """
- Test that under Oracle, CherFields are created as null even when specified not-null,
- because otherwise they would not be able to hold empty strings (which Oracle equates
- with nulls).
- Verify fix of #1269.
- """
- db.create_table("test_ora_char_nulls", [
- ('spam', models.CharField(max_length=30, null=True)),
- ('eggs', models.CharField(max_length=30)),
- ])
- db.add_column("test_ora_char_nulls", "ham", models.CharField(max_length=30))
- db.alter_column("test_ora_char_nulls", "spam", models.CharField(max_length=30, null=False))
- # So, by the look of it, we should now have three not-null columns
- db.execute("INSERT INTO test_ora_char_nulls VALUES (NULL, NULL, NULL)")
-
-
- def test_mysql_defaults(self):
- """
- Test MySQL default handling for BLOB and TEXT.
- """
- db.create_table("test_altermyd", [
- ('spam', models.BooleanField(default=False)),
- ('eggs', models.TextField()),
- ])
- # Change eggs to be a FloatField
- db.alter_column("test_altermyd", "eggs", models.TextField(null=True))
- db.delete_table("test_altermyd")
-
- def test_alter_column_postgres_multiword(self):
- """
- Tests altering columns with multiple words in Postgres types (issue #125)
- e.g. 'datetime with time zone', look at django/db/backends/postgresql/creation.py
- """
- db.create_table("test_multiword", [
- ('col_datetime', models.DateTimeField(null=True)),
- ('col_integer', models.PositiveIntegerField(null=True)),
- ('col_smallint', models.PositiveSmallIntegerField(null=True)),
- ('col_float', models.FloatField(null=True)),
- ])
-
- # test if 'double precision' is preserved
- db.alter_column('test_multiword', 'col_float', models.FloatField('float', null=True))
-
- # test if 'CHECK ("%(column)s" >= 0)' is stripped
- db.alter_column('test_multiword', 'col_integer', models.PositiveIntegerField(null=True))
- db.alter_column('test_multiword', 'col_smallint', models.PositiveSmallIntegerField(null=True))
-
- # test if 'with timezone' is preserved
- if db.backend_name == "postgres":
- db.execute("INSERT INTO test_multiword (col_datetime) VALUES ('2009-04-24 14:20:55+02')")
- db.alter_column('test_multiword', 'col_datetime', models.DateTimeField(auto_now=True))
- assert db.execute("SELECT col_datetime = '2009-04-24 14:20:55+02' FROM test_multiword")[0][0]
-
- db.delete_table("test_multiword")
-
- @skipUnless(db.has_check_constraints, 'Only applies to databases that '
- 'support CHECK constraints.')
- def test_alter_constraints(self):
- """
- Tests that going from a PostiveIntegerField to an IntegerField drops
- the constraint on the database.
- """
- # Make the test table
- db.create_table("test_alterc", [
- ('num', models.PositiveIntegerField()),
- ])
- db.execute_deferred_sql()
- # Add in some test values
- db.execute("INSERT INTO test_alterc (num) VALUES (1)")
- db.execute("INSERT INTO test_alterc (num) VALUES (2)")
- # Ensure that adding a negative number is bad
- db.commit_transaction()
- db.start_transaction()
- try:
- db.execute("INSERT INTO test_alterc (num) VALUES (-3)")
- except:
- db.rollback_transaction()
- else:
- self.fail("Could insert a negative integer into a PositiveIntegerField.")
- # Alter it to a normal IntegerField
- db.alter_column("test_alterc", "num", models.IntegerField())
- db.execute_deferred_sql()
- # It should now work
- db.execute("INSERT INTO test_alterc (num) VALUES (-3)")
- db.delete_table("test_alterc")
- # We need to match up for tearDown
- db.start_transaction()
-
- @skipIf(db.backend_name == "sqlite3", "SQLite backend doesn't support this "
- "yet.")
- def test_unique(self):
- """
- Tests creating/deleting unique constraints.
- """
- db.create_table("test_unique2", [
- ('id', models.AutoField(primary_key=True)),
- ])
- db.create_table("test_unique", [
- ('spam', models.BooleanField(default=False)),
- ('eggs', models.IntegerField()),
- ('ham', models.ForeignKey(db.mock_model('Unique2', 'test_unique2'))),
- ])
- db.execute_deferred_sql()
- # Add a constraint
- db.create_unique("test_unique", ["spam"])
- db.execute_deferred_sql()
- # Shouldn't do anything during dry-run
- db.dry_run = True
- db.delete_unique("test_unique", ["spam"])
- db.dry_run = False
- db.delete_unique("test_unique", ["spam"])
- db.create_unique("test_unique", ["spam"])
- # Special preparations for Sql Server
- if db.backend_name == "pyodbc":
- db.execute("SET IDENTITY_INSERT test_unique2 ON;")
- db.execute("INSERT INTO test_unique2 (id) VALUES (1)")
- db.execute("INSERT INTO test_unique2 (id) VALUES (2)")
- db.commit_transaction()
- db.start_transaction()
-
-
- # Test it works
- TRUE = (True,)
- FALSE = (False,)
- db.execute("INSERT INTO test_unique (spam, eggs, ham_id) VALUES (%s, 0, 1)", TRUE)
- db.execute("INSERT INTO test_unique (spam, eggs, ham_id) VALUES (%s, 1, 2)", FALSE)
- try:
- db.execute("INSERT INTO test_unique (spam, eggs, ham_id) VALUES (%s, 2, 1)", FALSE)
- except:
- db.rollback_transaction()
- else:
- self.fail("Could insert non-unique item.")
-
- # Drop that, add one only on eggs
- db.delete_unique("test_unique", ["spam"])
- db.execute("DELETE FROM test_unique")
- db.create_unique("test_unique", ["eggs"])
- db.start_transaction()
-
- # Test similarly
- db.execute("INSERT INTO test_unique (spam, eggs, ham_id) VALUES (%s, 0, 1)", TRUE)
- db.execute("INSERT INTO test_unique (spam, eggs, ham_id) VALUES (%s, 1, 2)", FALSE)
- try:
- db.execute("INSERT INTO test_unique (spam, eggs, ham_id) VALUES (%s, 1, 1)", TRUE)
- except:
- db.rollback_transaction()
- else:
- self.fail("Could insert non-unique item.")
-
- # Drop those, test combined constraints
- db.delete_unique("test_unique", ["eggs"])
- db.execute("DELETE FROM test_unique")
- db.create_unique("test_unique", ["spam", "eggs", "ham_id"])
- db.start_transaction()
- # Test similarly
- db.execute("INSERT INTO test_unique (spam, eggs, ham_id) VALUES (%s, 0, 1)", TRUE)
- db.execute("INSERT INTO test_unique (spam, eggs, ham_id) VALUES (%s, 1, 1)", FALSE)
- try:
- db.execute("INSERT INTO test_unique (spam, eggs, ham_id) VALUES (%s, 0, 1)", TRUE)
- except:
- db.rollback_transaction()
- else:
- self.fail("Could insert non-unique pair.")
- db.delete_unique("test_unique", ["spam", "eggs", "ham_id"])
- db.start_transaction()
-
- def test_alter_unique(self):
- """
- Tests that unique constraints are not affected when
- altering columns (that's handled by create_/delete_unique)
- """
- db.create_table("test_alter_unique", [
- ('spam', models.IntegerField()),
- ('eggs', models.IntegerField(unique=True)),
- ])
- db.execute_deferred_sql()
-
- # Make sure the unique constraint is created
- db.execute('INSERT INTO test_alter_unique (spam, eggs) VALUES (0, 42)')
- db.commit_transaction()
- db.start_transaction()
- try:
- db.execute("INSERT INTO test_alter_unique (spam, eggs) VALUES (1, 42)")
- except:
- pass
- else:
- self.fail("Could insert the same integer twice into a unique field.")
- db.rollback_transaction()
-
- # Alter without unique=True (should not affect anything)
- db.alter_column("test_alter_unique", "eggs", models.IntegerField())
-
- # Insertion should still fail
- db.start_transaction()
- try:
- db.execute("INSERT INTO test_alter_unique (spam, eggs) VALUES (1, 42)")
- except:
- pass
- else:
- self.fail("Could insert the same integer twice into a unique field after alter_column with unique=False.")
- db.rollback_transaction()
-
- # Delete the unique index/constraint
- if db.backend_name != "sqlite3":
- db.delete_unique("test_alter_unique", ["eggs"])
- db.delete_table("test_alter_unique")
- db.start_transaction()
-
- # Test multi-field constraint
- db.create_table("test_alter_unique2", [
- ('spam', models.IntegerField()),
- ('eggs', models.IntegerField()),
- ])
- db.create_unique('test_alter_unique2', ('spam', 'eggs'))
- db.execute_deferred_sql()
- db.execute('INSERT INTO test_alter_unique2 (spam, eggs) VALUES (0, 42)')
- db.commit_transaction()
- # Verify that constraint works
- db.start_transaction()
- try:
- db.execute("INSERT INTO test_alter_unique2 (spam, eggs) VALUES (1, 42)")
- except:
- self.fail("Looks like multi-field unique constraint applied to only one field.")
- db.rollback_transaction()
- db.start_transaction()
- try:
- db.execute("INSERT INTO test_alter_unique2 (spam, eggs) VALUES (0, 43)")
- except:
- self.fail("Looks like multi-field unique constraint applied to only one field.")
- db.rollback_transaction()
- db.start_transaction()
- try:
- db.execute("INSERT INTO test_alter_unique2 (spam, eggs) VALUES (0, 42)")
- except:
- pass
- else:
- self.fail("Could insert the same pair twice into unique-together fields.")
- db.rollback_transaction()
- # Altering one column should not drop or modify multi-column constraint
- db.alter_column("test_alter_unique2", "eggs", models.PositiveIntegerField())
- db.start_transaction()
- try:
- db.execute("INSERT INTO test_alter_unique2 (spam, eggs) VALUES (1, 42)")
- except:
- self.fail("Altering one column broken multi-column unique constraint.")
- db.rollback_transaction()
- db.start_transaction()
- try:
- db.execute("INSERT INTO test_alter_unique2 (spam, eggs) VALUES (0, 43)")
- except:
- self.fail("Altering one column broken multi-column unique constraint.")
- db.rollback_transaction()
- db.start_transaction()
- try:
- db.execute("INSERT INTO test_alter_unique2 (spam, eggs) VALUES (0, 42)")
- except:
- pass
- else:
- self.fail("Could insert the same pair twice into unique-together fields after alter_column with unique=False.")
- db.rollback_transaction()
- db.delete_table("test_alter_unique2")
- db.start_transaction()
-
- def test_capitalised_constraints(self):
- """
- Under PostgreSQL at least, capitalised constraints must be quoted.
- """
- db.create_table("test_capconst", [
- ('SOMECOL', models.PositiveIntegerField(primary_key=True)),
- ])
- # Alter it so it's not got the check constraint
- db.alter_column("test_capconst", "SOMECOL", models.IntegerField())
-
- def test_text_default(self):
- """
- MySQL cannot have blank defaults on TEXT columns.
- """
- db.create_table("test_textdef", [
- ('textcol', models.TextField(blank=True)),
- ])
-
- def test_text_to_char(self):
- """
- On Oracle, you can't simply ALTER TABLE MODIFY a textfield to a charfield
- """
- value = "kawabanga"
- db.create_table("test_text_to_char", [
- ('textcol', models.TextField()),
- ])
- db.execute_deferred_sql()
- db.execute("INSERT INTO test_text_to_char VALUES (%s)", [value])
- db.alter_column("test_text_to_char", "textcol", models.CharField(max_length=100))
- db.execute_deferred_sql()
- after = db.execute("select * from test_text_to_char")[0][0]
- self.assertEqual(value, after, "Change from text to char altered value [ %r != %r ]" % (value, after))
-
- def test_char_to_text(self):
- """
- On Oracle, you can't simply ALTER TABLE MODIFY a charfield to a textfield either
- """
- value = "agnabawak"
- db.create_table("test_char_to_text", [
- ('textcol', models.CharField(max_length=100)),
- ])
- db.execute_deferred_sql()
- db.execute("INSERT INTO test_char_to_text VALUES (%s)", [value])
- db.alter_column("test_char_to_text", "textcol", models.TextField())
- db.execute_deferred_sql()
- after = db.execute("select * from test_char_to_text")[0][0]
- after = text_type(after) # Oracle text fields return a sort of lazy string -- force evaluation
- self.assertEqual(value, after, "Change from char to text altered value [ %r != %r ]" % (value, after))
-
- @skipUnless(db.raises_default_errors, 'This database does not raise errors on missing defaults.')
- def test_datetime_default(self):
- """
- Test that defaults are correctly not created for datetime columns
- """
- end_of_world = datetime.datetime(2012, 12, 21, 0, 0, 1)
-
- try:
- from django.utils import timezone
- except ImportError:
- pass
- else:
- from django.conf import settings
- if getattr(settings, 'USE_TZ', False):
- end_of_world = end_of_world.replace(tzinfo=timezone.utc)
-
- db.create_table("test_datetime_def", [
- ('col0', models.IntegerField(null=True)),
- ('col1', models.DateTimeField(default=end_of_world)),
- ('col2', models.DateTimeField(null=True)),
- ])
- db.execute_deferred_sql()
- # insert a row
- db.execute("INSERT INTO test_datetime_def (col0, col1, col2) values (null,%s,null)", [end_of_world])
- db.alter_column("test_datetime_def", "col2", models.DateTimeField(default=end_of_world))
- db.add_column("test_datetime_def", "col3", models.DateTimeField(default=end_of_world))
- db.execute_deferred_sql()
- db.commit_transaction()
- # In the single existing row, we now expect col1=col2=col3=end_of_world...
- db.start_transaction()
- ends = db.execute("select col1,col2,col3 from test_datetime_def")[0]
- self.failUnlessEqual(len(ends), 3)
- for e in ends:
- self.failUnlessEqual(e, end_of_world)
- db.commit_transaction()
- # ...but there should not be a default in the database for col1 or col3
- for cols in ["col1,col2", "col2,col3"]:
- db.start_transaction()
- statement = "insert into test_datetime_def (col0,%s) values (null,%%s,%%s)" % cols
- self.assertRaises(
- IntegrityError,
- db.execute, statement, [end_of_world, end_of_world]
- )
- db.rollback_transaction()
-
- db.start_transaction() # To preserve the sanity and semantics of this test class
-
- def test_add_unique_fk(self):
- """
- Test adding a ForeignKey with unique=True or a OneToOneField
- """
- db.create_table("test_add_unique_fk", [
- ('spam', models.BooleanField(default=False))
- ])
-
- db.add_column("test_add_unique_fk", "mock1", models.ForeignKey(db.mock_model('User', 'auth_user'), null=True, unique=True))
- db.add_column("test_add_unique_fk", "mock2", models.OneToOneField(db.mock_model('User', 'auth_user'), null=True))
- db.execute_deferred_sql()
-
- db.delete_table("test_add_unique_fk")
-
- @skipUnless(db.has_check_constraints, 'Only applies to databases that '
- 'support CHECK constraints.')
- def test_column_constraint(self):
- """
- Tests that the value constraint of PositiveIntegerField is enforced on
- the database level.
- """
- db.create_table("test_column_constraint", [
- ('spam', models.PositiveIntegerField()),
- ])
- db.execute_deferred_sql()
-
- # Make sure we can't insert negative values
- db.commit_transaction()
- db.start_transaction()
- try:
- db.execute("INSERT INTO test_column_constraint VALUES (-42)")
- except:
- pass
- else:
- self.fail("Could insert a negative value into a PositiveIntegerField.")
- db.rollback_transaction()
-
- # remove constraint
- db.alter_column("test_column_constraint", "spam", models.IntegerField())
- db.execute_deferred_sql()
- # make sure the insertion works now
- db.execute('INSERT INTO test_column_constraint VALUES (-42)')
- db.execute('DELETE FROM test_column_constraint')
-
- # add it back again
- db.alter_column("test_column_constraint", "spam", models.PositiveIntegerField())
- db.execute_deferred_sql()
- # it should fail again
- db.start_transaction()
- try:
- db.execute("INSERT INTO test_column_constraint VALUES (-42)")
- except:
- pass
- else:
- self.fail("Could insert a negative value after changing an IntegerField to a PositiveIntegerField.")
- db.rollback_transaction()
-
- db.delete_table("test_column_constraint")
- db.start_transaction()
-
- def test_sql_defaults(self):
- """
- Test that sql default value is correct for non-string field types.
- Datetimes are handled in test_datetime_default.
- """
-
- class CustomField(with_metaclass(models.SubfieldBase, models.CharField)):
- description = 'CustomField'
- def get_default(self):
- if self.has_default():
- if callable(self.default):
- return self.default()
- return self.default
- return super(CustomField, self).get_default()
- def get_prep_value(self, value):
- if not value:
- return value
- return ','.join(map(str, value))
- def to_python(self, value):
- if not value or isinstance(value, list):
- return value
- return list(map(int, value.split(',')))
-
- false_value = db.has_booleans and 'False' or '0'
- defaults = (
- (models.CharField(default='sukasuka'), 'DEFAULT \'sukasuka'),
- (models.BooleanField(default=False), 'DEFAULT %s' % false_value),
- (models.IntegerField(default=42), 'DEFAULT 42'),
- (CustomField(default=[2012, 2018, 2021, 2036]), 'DEFAULT \'2012,2018,2021,2036')
- )
- for field, sql_test_str in defaults:
- sql = db.column_sql('fish', 'YAAAAAAZ', field)
- if sql_test_str not in sql:
- self.fail("default sql value was not properly generated for field %r.\nSql was %s" % (field, sql))
-
- def test_make_added_foreign_key_not_null(self):
- # Table for FK to target
- User = db.mock_model(model_name='User', db_table='auth_user', db_tablespace='', pk_field_name='id', pk_field_type=models.AutoField, pk_field_args=[], pk_field_kwargs={})
- # Table with no foreign key
- db.create_table("test_fk", [
- ('eggs', models.IntegerField()),
- ])
- db.execute_deferred_sql()
-
- # Add foreign key
- db.add_column("test_fk", 'foreik', models.ForeignKey(User, null=True))
- db.execute_deferred_sql()
-
- # Make the FK not null
- db.alter_column("test_fk", "foreik_id", models.ForeignKey(User))
- db.execute_deferred_sql()
-
- def test_make_foreign_key_null(self):
- # Table for FK to target
- User = db.mock_model(model_name='User', db_table='auth_user', db_tablespace='', pk_field_name='id', pk_field_type=models.AutoField, pk_field_args=[], pk_field_kwargs={})
- # Table with no foreign key
- db.create_table("test_make_fk_null", [
- ('eggs', models.IntegerField()),
- ('foreik', models.ForeignKey(User))
- ])
- db.execute_deferred_sql()
-
- # Make the FK null
- db.alter_column("test_make_fk_null", "foreik_id", models.ForeignKey(User, null=True))
- db.execute_deferred_sql()
-
- def test_change_foreign_key_target(self):
- # Tables for FK to target
- User = db.mock_model(model_name='User', db_table='auth_user', db_tablespace='', pk_field_name='id', pk_field_type=models.AutoField, pk_field_args=[], pk_field_kwargs={})
- db.create_table("test_fk_changed_target", [
- ('eggs', models.IntegerField(primary_key=True)),
- ])
- Egg = db.mock_model(model_name='Egg', db_table='test_fk_changed_target', db_tablespace='', pk_field_name='eggs', pk_field_type=models.AutoField, pk_field_args=[], pk_field_kwargs={})
- # Table with a foreign key to the wrong table
- db.create_table("test_fk_changing", [
- ('egg', models.ForeignKey(User, null=True)),
- ])
- db.execute_deferred_sql()
-
- # Change foreign key pointing
- db.alter_column("test_fk_changing", "egg_id", models.ForeignKey(Egg, null=True))
- db.execute_deferred_sql()
-
- # Test that it is pointing at the right table now
- try:
- non_user_id = db.execute("SELECT MAX(id) FROM auth_user")[0][0] + 1
- except (TypeError, IndexError):
- # Got a "None" or no records, treat as 0
- non_user_id = 17
- db.execute("INSERT INTO test_fk_changed_target (eggs) VALUES (%s)", [non_user_id])
- db.execute("INSERT INTO test_fk_changing (egg_id) VALUES (%s)", [non_user_id])
- db.commit_transaction()
- db.start_transaction() # The test framework expects tests to end in transaction
-
- def test_alter_double_indexed_column(self):
- # Table for FK to target
- User = db.mock_model(model_name='User', db_table='auth_user', db_tablespace='', pk_field_name='id', pk_field_type=models.AutoField, pk_field_args=[], pk_field_kwargs={})
- # Table with no foreign key
- db.create_table("test_2indexed", [
- ('eggs', models.IntegerField()),
- ('foreik', models.ForeignKey(User))
- ])
- db.create_unique("test_2indexed", ["eggs", "foreik_id"])
- db.execute_deferred_sql()
-
- # Make the FK null
- db.alter_column("test_2indexed", "foreik_id", models.ForeignKey(User, null=True))
- db.execute_deferred_sql()
-
-class TestCacheGeneric(unittest.TestCase):
- base_ops_cls = generic.DatabaseOperations
- def setUp(self):
- class CacheOps(self.base_ops_cls):
- def __init__(self):
- self._constraint_cache = {}
- self.cache_filled = 0
- self.settings = {'NAME': 'db'}
-
- def _fill_constraint_cache(self, db, table):
- self.cache_filled += 1
- self._constraint_cache.setdefault(db, {})
- self._constraint_cache[db].setdefault(table, {})
-
- @generic.invalidate_table_constraints
- def clear_con(self, table):
- pass
-
- @generic.copy_column_constraints
- def cp_column(self, table, column_old, column_new):
- pass
-
- @generic.delete_column_constraints
- def rm_column(self, table, column):
- pass
-
- @generic.copy_column_constraints
- @generic.delete_column_constraints
- def mv_column(self, table, column_old, column_new):
- pass
-
- def _get_setting(self, attr):
- return self.settings[attr]
- self.CacheOps = CacheOps
-
- def test_cache(self):
- ops = self.CacheOps()
- self.assertEqual(0, ops.cache_filled)
- self.assertFalse(ops.lookup_constraint('db', 'table'))
- self.assertEqual(1, ops.cache_filled)
- self.assertFalse(ops.lookup_constraint('db', 'table'))
- self.assertEqual(1, ops.cache_filled)
- ops.clear_con('table')
- self.assertEqual(1, ops.cache_filled)
- self.assertFalse(ops.lookup_constraint('db', 'table'))
- self.assertEqual(2, ops.cache_filled)
- self.assertFalse(ops.lookup_constraint('db', 'table', 'column'))
- self.assertEqual(2, ops.cache_filled)
-
- cache = ops._constraint_cache
- cache['db']['table']['column'] = 'constraint'
- self.assertEqual('constraint', ops.lookup_constraint('db', 'table', 'column'))
- self.assertEqual([('column', 'constraint')], ops.lookup_constraint('db', 'table'))
- self.assertEqual(2, ops.cache_filled)
-
- # invalidate_table_constraints
- ops.clear_con('new_table')
- self.assertEqual('constraint', ops.lookup_constraint('db', 'table', 'column'))
- self.assertEqual(2, ops.cache_filled)
-
- self.assertFalse(ops.lookup_constraint('db', 'new_table'))
- self.assertEqual(3, ops.cache_filled)
-
- # delete_column_constraints
- cache['db']['table']['column'] = 'constraint'
- self.assertEqual('constraint', ops.lookup_constraint('db', 'table', 'column'))
- ops.rm_column('table', 'column')
- self.assertEqual([], ops.lookup_constraint('db', 'table', 'column'))
- self.assertEqual([], ops.lookup_constraint('db', 'table', 'noexist_column'))
-
- # copy_column_constraints
- cache['db']['table']['column'] = 'constraint'
- self.assertEqual('constraint', ops.lookup_constraint('db', 'table', 'column'))
- ops.cp_column('table', 'column', 'column_new')
- self.assertEqual('constraint', ops.lookup_constraint('db', 'table', 'column_new'))
- self.assertEqual('constraint', ops.lookup_constraint('db', 'table', 'column'))
-
- # copy + delete
- cache['db']['table']['column'] = 'constraint'
- self.assertEqual('constraint', ops.lookup_constraint('db', 'table', 'column'))
- ops.mv_column('table', 'column', 'column_new')
- self.assertEqual('constraint', ops.lookup_constraint('db', 'table', 'column_new'))
- self.assertEqual([], ops.lookup_constraint('db', 'table', 'column'))
-
- def test_valid(self):
- ops = self.CacheOps()
- # none of these should vivify a table into a valid state
- self.assertFalse(ops._is_valid_cache('db', 'table'))
- self.assertFalse(ops._is_valid_cache('db', 'table'))
- ops.clear_con('table')
- self.assertFalse(ops._is_valid_cache('db', 'table'))
- ops.rm_column('table', 'column')
- self.assertFalse(ops._is_valid_cache('db', 'table'))
-
- # these should change the cache state
- ops.lookup_constraint('db', 'table')
- self.assertTrue(ops._is_valid_cache('db', 'table'))
- ops.lookup_constraint('db', 'table', 'column')
- self.assertTrue(ops._is_valid_cache('db', 'table'))
- ops.clear_con('table')
- self.assertFalse(ops._is_valid_cache('db', 'table'))
-
- def test_valid_implementation(self):
- # generic fills the cache on a per-table basis
- ops = self.CacheOps()
- self.assertFalse(ops._is_valid_cache('db', 'table'))
- self.assertFalse(ops._is_valid_cache('db', 'other_table'))
- ops.lookup_constraint('db', 'table')
- self.assertTrue(ops._is_valid_cache('db', 'table'))
- self.assertFalse(ops._is_valid_cache('db', 'other_table'))
- ops.lookup_constraint('db', 'other_table')
- self.assertTrue(ops._is_valid_cache('db', 'table'))
- self.assertTrue(ops._is_valid_cache('db', 'other_table'))
- ops.clear_con('table')
- self.assertFalse(ops._is_valid_cache('db', 'table'))
- self.assertTrue(ops._is_valid_cache('db', 'other_table'))
-
-if mysql:
- class TestCacheMysql(TestCacheGeneric):
- base_ops_cls = mysql.DatabaseOperations
-
- def test_valid_implementation(self):
- # mysql fills the cache on a per-db basis
- ops = self.CacheOps()
- self.assertFalse(ops._is_valid_cache('db', 'table'))
- self.assertFalse(ops._is_valid_cache('db', 'other_table'))
- ops.lookup_constraint('db', 'table')
- self.assertTrue(ops._is_valid_cache('db', 'table'))
- self.assertTrue(ops._is_valid_cache('db', 'other_table'))
- ops.lookup_constraint('db', 'other_table')
- self.assertTrue(ops._is_valid_cache('db', 'table'))
- self.assertTrue(ops._is_valid_cache('db', 'other_table'))
- ops.clear_con('table')
- self.assertFalse(ops._is_valid_cache('db', 'table'))
- self.assertTrue(ops._is_valid_cache('db', 'other_table'))
diff --git a/lib/python2.7/site-packages/south/tests/db_firebird.py b/lib/python2.7/site-packages/south/tests/db_firebird.py
deleted file mode 100644
index 2b6bd53..0000000
--- a/lib/python2.7/site-packages/south/tests/db_firebird.py
+++ /dev/null
@@ -1,39 +0,0 @@
-from django.db import models
-
-from south.db import db
-from south.tests import unittest, skipUnless
-
-
-class FirebirdTests(unittest.TestCase):
-
- """
- Tests firebird related issues
- """
-
- def setUp(self):
- print('=' * 80)
- print('Begin Firebird test')
-
- def tearDown(self):
- print('End Firebird test')
- print('=' * 80)
-
- @skipUnless(db.backend_name == "firebird", "Firebird-only test")
- def test_firebird_double_index_creation_1317(self):
- """
- Tests foreign key creation, especially uppercase (see #61)
- """
- Test = db.mock_model(model_name='Test',
- db_table='test5a',
- db_tablespace='',
- pk_field_name='ID',
- pk_field_type=models.AutoField,
- pk_field_args=[]
- )
- db.create_table("test5a", [('ID', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True))])
- db.create_table("test5b", [
- ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
- ('UNIQUE', models.ForeignKey(Test)),
- ])
- db.execute_deferred_sql()
-
diff --git a/lib/python2.7/site-packages/south/tests/db_mysql.py b/lib/python2.7/site-packages/south/tests/db_mysql.py
deleted file mode 100644
index e83596c..0000000
--- a/lib/python2.7/site-packages/south/tests/db_mysql.py
+++ /dev/null
@@ -1,164 +0,0 @@
-# Additional MySQL-specific tests
-# Written by: F. Gabriel Gosselin <gabrielNOSPAM@evidens.ca>
-# Based on tests by: aarranz
-from south.tests import unittest, skipUnless
-
-
-from south.db import db, generic, mysql
-from django.db import connection, models
-
-from south.utils.py3 import with_metaclass
-
-
-# A class decoration may be used in lieu of this when Python 2.5 is the
-# minimum.
-class TestMySQLOperationsMeta(type):
-
- def __new__(mcs, name, bases, dict_):
- decorator = skipUnless(db.backend_name == "mysql", 'MySQL-specific tests')
-
- for key, method in dict_.items():
- if key.startswith('test'):
- dict_[key] = decorator(method)
-
- return type.__new__(mcs, name, bases, dict_)
-
-class TestMySQLOperations(with_metaclass(TestMySQLOperationsMeta, unittest.TestCase)):
- """MySQL-specific tests"""
-
- def setUp(self):
- db.debug = False
- db.clear_deferred_sql()
-
- def tearDown(self):
- pass
-
- def _create_foreign_tables(self, main_name, reference_name):
- # Create foreign table and model
- Foreign = db.mock_model(model_name='Foreign', db_table=reference_name,
- db_tablespace='', pk_field_name='id',
- pk_field_type=models.AutoField,
- pk_field_args=[])
- db.create_table(reference_name, [
- ('id', models.AutoField(primary_key=True)),
- ])
- # Create table with foreign key
- db.create_table(main_name, [
- ('id', models.AutoField(primary_key=True)),
- ('foreign', models.ForeignKey(Foreign)),
- ])
- return Foreign
-
- def test_constraint_references(self):
- """Tests that referred table is reported accurately"""
- main_table = 'test_cns_ref'
- reference_table = 'test_cr_foreign'
- db.start_transaction()
- self._create_foreign_tables(main_table, reference_table)
- db.execute_deferred_sql()
- constraint = db._find_foreign_constraints(main_table, 'foreign_id')[0]
- references = db._lookup_constraint_references(main_table, constraint)
- self.assertEquals((reference_table, 'id'), references)
- db.delete_table(main_table)
- db.delete_table(reference_table)
-
- def test_reverse_column_constraint(self):
- """Tests that referred column in a foreign key (ex. id) is found"""
- main_table = 'test_reverse_ref'
- reference_table = 'test_rr_foreign'
- db.start_transaction()
- self._create_foreign_tables(main_table, reference_table)
- db.execute_deferred_sql()
- inverse = db._lookup_reverse_constraint(reference_table, 'id')
- (cname, rev_table, rev_column) = inverse[0]
- self.assertEquals(main_table, rev_table)
- self.assertEquals('foreign_id', rev_column)
- db.delete_table(main_table)
- db.delete_table(reference_table)
-
- def test_delete_fk_column(self):
- main_table = 'test_drop_foreign'
- ref_table = 'test_df_ref'
- self._create_foreign_tables(main_table, ref_table)
- db.execute_deferred_sql()
- constraints = db._find_foreign_constraints(main_table, 'foreign_id')
- self.assertEquals(len(constraints), 1)
- db.delete_column(main_table, 'foreign_id')
- constraints = db._find_foreign_constraints(main_table, 'foreign_id')
- self.assertEquals(len(constraints), 0)
- db.delete_table(main_table)
- db.delete_table(ref_table)
-
- def test_rename_fk_column(self):
- main_table = 'test_rename_foreign'
- ref_table = 'test_rf_ref'
- self._create_foreign_tables(main_table, ref_table)
- db.execute_deferred_sql()
- constraints = db._find_foreign_constraints(main_table, 'foreign_id')
- self.assertEquals(len(constraints), 1)
- db.rename_column(main_table, 'foreign_id', 'reference_id')
- db.execute_deferred_sql() #Create constraints
- constraints = db._find_foreign_constraints(main_table, 'reference_id')
- self.assertEquals(len(constraints), 1)
- db.delete_table(main_table)
- db.delete_table(ref_table)
-
- def test_rename_fk_inbound(self):
- """
- Tests that the column referred to by an external column can be renamed.
- Edge case, but also useful as stepping stone to renaming tables.
- """
- main_table = 'test_rename_fk_inbound'
- ref_table = 'test_rfi_ref'
- self._create_foreign_tables(main_table, ref_table)
- db.execute_deferred_sql()
- constraints = db._lookup_reverse_constraint(ref_table, 'id')
- self.assertEquals(len(constraints), 1)
- db.rename_column(ref_table, 'id', 'rfi_id')
- db.execute_deferred_sql() #Create constraints
- constraints = db._lookup_reverse_constraint(ref_table, 'rfi_id')
- self.assertEquals(len(constraints), 1)
- cname = db._find_foreign_constraints(main_table, 'foreign_id')[0]
- (rtable, rcolumn) = db._lookup_constraint_references(main_table, cname)
- self.assertEquals(rcolumn, 'rfi_id')
- db.delete_table(main_table)
- db.delete_table(ref_table)
-
- def test_rename_constrained_table(self):
- """Renames a table with a foreign key column (towards another table)"""
- main_table = 'test_rn_table'
- ref_table = 'test_rt_ref'
- renamed_table = 'test_renamed_table'
- self._create_foreign_tables(main_table, ref_table)
- db.execute_deferred_sql()
- constraints = db._find_foreign_constraints(main_table, 'foreign_id')
- self.assertEquals(len(constraints), 1)
- db.rename_table(main_table, renamed_table)
- db.execute_deferred_sql() #Create constraints
- constraints = db._find_foreign_constraints(renamed_table, 'foreign_id')
- self.assertEquals(len(constraints), 1)
- (rtable, rcolumn) = db._lookup_constraint_references(
- renamed_table, constraints[0])
- self.assertEquals(rcolumn, 'id')
- db.delete_table(renamed_table)
- db.delete_table(ref_table)
-
- def test_renamed_referenced_table(self):
- """Rename a table referred to in a foreign key"""
- main_table = 'test_rn_refd_table'
- ref_table = 'test_rrt_ref'
- renamed_table = 'test_renamed_ref'
- self._create_foreign_tables(main_table, ref_table)
- db.execute_deferred_sql()
- constraints = db._lookup_reverse_constraint(ref_table)
- self.assertEquals(len(constraints), 1)
- db.rename_table(ref_table, renamed_table)
- db.execute_deferred_sql() #Create constraints
- constraints = db._find_foreign_constraints(main_table, 'foreign_id')
- self.assertEquals(len(constraints), 1)
- (rtable, rcolumn) = db._lookup_constraint_references(
- main_table, constraints[0])
- self.assertEquals(renamed_table, rtable)
- db.delete_table(main_table)
- db.delete_table(renamed_table)
-
diff --git a/lib/python2.7/site-packages/south/tests/deps_a/__init__.py b/lib/python2.7/site-packages/south/tests/deps_a/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_a/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/deps_a/migrations/0001_a.py b/lib/python2.7/site-packages/south/tests/deps_a/migrations/0001_a.py
deleted file mode 100644
index d27ed3a..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_a/migrations/0001_a.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/deps_a/migrations/0002_a.py b/lib/python2.7/site-packages/south/tests/deps_a/migrations/0002_a.py
deleted file mode 100644
index d27ed3a..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_a/migrations/0002_a.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/deps_a/migrations/0003_a.py b/lib/python2.7/site-packages/south/tests/deps_a/migrations/0003_a.py
deleted file mode 100644
index d27ed3a..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_a/migrations/0003_a.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/deps_a/migrations/0004_a.py b/lib/python2.7/site-packages/south/tests/deps_a/migrations/0004_a.py
deleted file mode 100644
index e5c2977..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_a/migrations/0004_a.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- depends_on = [('deps_b', '0003_b')]
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/deps_a/migrations/0005_a.py b/lib/python2.7/site-packages/south/tests/deps_a/migrations/0005_a.py
deleted file mode 100644
index d27ed3a..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_a/migrations/0005_a.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/deps_a/migrations/__init__.py b/lib/python2.7/site-packages/south/tests/deps_a/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_a/migrations/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/deps_a/models.py b/lib/python2.7/site-packages/south/tests/deps_a/models.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_a/models.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/deps_b/__init__.py b/lib/python2.7/site-packages/south/tests/deps_b/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_b/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/deps_b/migrations/0001_b.py b/lib/python2.7/site-packages/south/tests/deps_b/migrations/0001_b.py
deleted file mode 100644
index d27ed3a..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_b/migrations/0001_b.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/deps_b/migrations/0002_b.py b/lib/python2.7/site-packages/south/tests/deps_b/migrations/0002_b.py
deleted file mode 100644
index 459ea5d..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_b/migrations/0002_b.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- depends_on = [('deps_a', '0002_a')]
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/deps_b/migrations/0003_b.py b/lib/python2.7/site-packages/south/tests/deps_b/migrations/0003_b.py
deleted file mode 100644
index 1692888..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_b/migrations/0003_b.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- depends_on = [('deps_a', '0003_a')]
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/deps_b/migrations/0004_b.py b/lib/python2.7/site-packages/south/tests/deps_b/migrations/0004_b.py
deleted file mode 100644
index d27ed3a..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_b/migrations/0004_b.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/deps_b/migrations/0005_b.py b/lib/python2.7/site-packages/south/tests/deps_b/migrations/0005_b.py
deleted file mode 100644
index d27ed3a..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_b/migrations/0005_b.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/deps_b/migrations/__init__.py b/lib/python2.7/site-packages/south/tests/deps_b/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_b/migrations/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/deps_b/models.py b/lib/python2.7/site-packages/south/tests/deps_b/models.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_b/models.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/deps_c/__init__.py b/lib/python2.7/site-packages/south/tests/deps_c/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_c/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/deps_c/migrations/0001_c.py b/lib/python2.7/site-packages/south/tests/deps_c/migrations/0001_c.py
deleted file mode 100644
index d27ed3a..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_c/migrations/0001_c.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/deps_c/migrations/0002_c.py b/lib/python2.7/site-packages/south/tests/deps_c/migrations/0002_c.py
deleted file mode 100644
index d27ed3a..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_c/migrations/0002_c.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/deps_c/migrations/0003_c.py b/lib/python2.7/site-packages/south/tests/deps_c/migrations/0003_c.py
deleted file mode 100644
index d27ed3a..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_c/migrations/0003_c.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/deps_c/migrations/0004_c.py b/lib/python2.7/site-packages/south/tests/deps_c/migrations/0004_c.py
deleted file mode 100644
index d27ed3a..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_c/migrations/0004_c.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/deps_c/migrations/0005_c.py b/lib/python2.7/site-packages/south/tests/deps_c/migrations/0005_c.py
deleted file mode 100644
index 459ea5d..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_c/migrations/0005_c.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- depends_on = [('deps_a', '0002_a')]
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/deps_c/migrations/__init__.py b/lib/python2.7/site-packages/south/tests/deps_c/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_c/migrations/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/deps_c/models.py b/lib/python2.7/site-packages/south/tests/deps_c/models.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/deps_c/models.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/emptyapp/__init__.py b/lib/python2.7/site-packages/south/tests/emptyapp/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/emptyapp/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/emptyapp/migrations/__init__.py b/lib/python2.7/site-packages/south/tests/emptyapp/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/emptyapp/migrations/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/emptyapp/models.py b/lib/python2.7/site-packages/south/tests/emptyapp/models.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/emptyapp/models.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/fakeapp/__init__.py b/lib/python2.7/site-packages/south/tests/fakeapp/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/fakeapp/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/fakeapp/migrations/0001_spam.py b/lib/python2.7/site-packages/south/tests/fakeapp/migrations/0001_spam.py
deleted file mode 100644
index 9739648..0000000
--- a/lib/python2.7/site-packages/south/tests/fakeapp/migrations/0001_spam.py
+++ /dev/null
@@ -1,17 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- def forwards(self):
- # Model 'Spam'
- db.create_table("southtest_spam", (
- ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
- ('weight', models.FloatField()),
- ('expires', models.DateTimeField()),
- ('name', models.CharField(max_length=255))
- ))
-
- def backwards(self):
- db.delete_table("southtest_spam")
-
diff --git a/lib/python2.7/site-packages/south/tests/fakeapp/migrations/0002_eggs.py b/lib/python2.7/site-packages/south/tests/fakeapp/migrations/0002_eggs.py
deleted file mode 100644
index 3ec8399..0000000
--- a/lib/python2.7/site-packages/south/tests/fakeapp/migrations/0002_eggs.py
+++ /dev/null
@@ -1,20 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- def forwards(self):
-
- Spam = db.mock_model(model_name='Spam', db_table='southtest_spam', db_tablespace='', pk_field_name='id', pk_field_type=models.AutoField)
-
- db.create_table("southtest_eggs", (
- ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
- ('size', models.FloatField()),
- ('quantity', models.IntegerField()),
- ('spam', models.ForeignKey(Spam)),
- ))
-
- def backwards(self):
-
- db.delete_table("southtest_eggs")
-
diff --git a/lib/python2.7/site-packages/south/tests/fakeapp/migrations/0003_alter_spam.py b/lib/python2.7/site-packages/south/tests/fakeapp/migrations/0003_alter_spam.py
deleted file mode 100644
index 39126c2..0000000
--- a/lib/python2.7/site-packages/south/tests/fakeapp/migrations/0003_alter_spam.py
+++ /dev/null
@@ -1,18 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- def forwards(self):
-
- db.alter_column("southtest_spam", 'weight', models.FloatField(null=True))
-
- def backwards(self):
-
- db.alter_column("southtest_spam", 'weight', models.FloatField())
-
- models = {
- "fakeapp.bug135": {
- 'date': ('models.DateTimeField', [], {'default': 'datetime.datetime(2009, 5, 6, 15, 33, 15, 780013)'}),
- }
- }
diff --git a/lib/python2.7/site-packages/south/tests/fakeapp/migrations/__init__.py b/lib/python2.7/site-packages/south/tests/fakeapp/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/fakeapp/migrations/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/fakeapp/models.py b/lib/python2.7/site-packages/south/tests/fakeapp/models.py
deleted file mode 100644
index cc39eb7..0000000
--- a/lib/python2.7/site-packages/south/tests/fakeapp/models.py
+++ /dev/null
@@ -1,111 +0,0 @@
-# -*- coding: UTF-8 -*-
-
-from django.db import models
-from django.contrib.auth.models import User as UserAlias
-
-from south.modelsinspector import add_introspection_rules
-
-on_delete_is_available = hasattr(models, "PROTECT") # models here is django.db.models
-
-def default_func():
- return "yays"
-
-# An empty case.
-class Other1(models.Model): pass
-
-# Another one
-class Other3(models.Model): pass
-def get_sentinel_object():
- """
- A function to return the object to be used in place of any deleted object,
- when using the SET option for on_delete.
- """
- # Create a new one, so we always have an instance to test with. Can't work!
- return Other3()
-
-# Nastiness.
-class HorribleModel(models.Model):
- "A model to test the edge cases of model parsing"
-
- ZERO, ONE = 0, 1
-
- # First, some nice fields
- name = models.CharField(max_length=255)
- short_name = models.CharField(max_length=50)
- slug = models.SlugField(unique=True)
-
- # A ForeignKey, to a model above, and then below
- o1 = models.ForeignKey(Other1)
- o2 = models.ForeignKey('Other2')
-
- if on_delete_is_available:
- o_set_null_on_delete = models.ForeignKey('Other3', null=True, on_delete=models.SET_NULL)
- o_cascade_delete = models.ForeignKey('Other3', null=True, on_delete=models.CASCADE, related_name="cascademe")
- o_protect = models.ForeignKey('Other3', null=True, on_delete=models.PROTECT, related_name="dontcascademe")
- o_default_on_delete = models.ForeignKey('Other3', null=True, default=1, on_delete=models.SET_DEFAULT, related_name="setmedefault")
- o_set_on_delete_function = models.ForeignKey('Other3', null=True, default=1, on_delete=models.SET(get_sentinel_object), related_name="setsentinel")
- o_set_on_delete_value = models.ForeignKey('Other3', null=True, default=1, on_delete=models.SET(get_sentinel_object()), related_name="setsentinelwithactualvalue") # dubious case
- o_no_action_on_delete = models.ForeignKey('Other3', null=True, default=1, on_delete=models.DO_NOTHING, related_name="deletemeatyourperil")
-
-
- # Now to something outside
- user = models.ForeignKey(UserAlias, related_name="horribles")
-
- # Unicode!
- code = models.CharField(max_length=25, default="↑↑↓↓←→←→BA")
-
- # Odd defaults!
- class_attr = models.IntegerField(default=ZERO)
- func = models.CharField(max_length=25, default=default_func)
-
- # Time to get nasty. Define a non-field choices, and use it
- choices = [('hello', '1'), ('world', '2')]
- choiced = models.CharField(max_length=20, choices=choices)
-
- class Meta:
- db_table = "my_fave"
- verbose_name = "Dr. Strangelove," + \
- """or how I learned to stop worrying
-and love the bomb"""
-
- # Now spread over multiple lines
- multiline = \
- models.TextField(
- )
-
-# Special case.
-class Other2(models.Model):
- # Try loading a field without a newline after it (inspect hates this)
- close_but_no_cigar = models.PositiveIntegerField(primary_key=True)
-
-class CustomField(models.IntegerField):
- def __init__(self, an_other_model, **kwargs):
- super(CustomField, self).__init__(**kwargs)
- self.an_other_model = an_other_model
-
-add_introspection_rules([
- (
- [CustomField],
- [],
- {'an_other_model': ('an_other_model', {})},
- ),
-], ['^south\.tests\.fakeapp\.models\.CustomField'])
-
-class BaseModel(models.Model):
- pass
-
-class SubModel(BaseModel):
- others = models.ManyToManyField(Other1)
- custom = CustomField(Other2)
-
-class CircularA(models.Model):
- c = models.ForeignKey('CircularC')
-
-class CircularB(models.Model):
- a = models.ForeignKey(CircularA)
-
-class CircularC(models.Model):
- b = models.ForeignKey(CircularB)
-
-class Recursive(models.Model):
- self = models.ForeignKey('self')
diff --git a/lib/python2.7/site-packages/south/tests/freezer.py b/lib/python2.7/site-packages/south/tests/freezer.py
deleted file mode 100644
index 82c4402..0000000
--- a/lib/python2.7/site-packages/south/tests/freezer.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from south.tests import unittest
-
-from south.creator.freezer import model_dependencies
-from south.tests.fakeapp import models
-
-class TestFreezer(unittest.TestCase):
- def test_dependencies(self):
- self.assertEqual(set(model_dependencies(models.SubModel)),
- set([models.BaseModel, models.Other1, models.Other2]))
-
- self.assertEqual(set(model_dependencies(models.CircularA)),
- set([models.CircularA, models.CircularB, models.CircularC]))
-
- self.assertEqual(set(model_dependencies(models.Recursive)),
- set([models.Recursive]))
diff --git a/lib/python2.7/site-packages/south/tests/inspector.py b/lib/python2.7/site-packages/south/tests/inspector.py
deleted file mode 100644
index dcd6d57..0000000
--- a/lib/python2.7/site-packages/south/tests/inspector.py
+++ /dev/null
@@ -1,109 +0,0 @@
-
-from south.tests import Monkeypatcher, skipUnless
-from south.modelsinspector import (convert_on_delete_handler, get_value,
- IsDefault, models, value_clean)
-
-from fakeapp.models import HorribleModel, get_sentinel_object
-
-
-on_delete_is_available = hasattr(models, "PROTECT") # models here is django.db.models
-skipUnlessOnDeleteAvailable = skipUnless(on_delete_is_available, "not testing on_delete -- not available on Django<1.3")
-
-class TestModelInspector(Monkeypatcher):
-
- """
- Tests if the various parts of the modelinspector work.
- """
-
- def test_get_value(self):
-
- # Let's start nicely.
- name = HorribleModel._meta.get_field_by_name("name")[0]
- slug = HorribleModel._meta.get_field_by_name("slug")[0]
- user = HorribleModel._meta.get_field_by_name("user")[0]
-
- # Simple int retrieval
- self.assertEqual(
- get_value(name, ["max_length", {}]),
- "255",
- )
-
- # Bool retrieval
- self.assertEqual(
- get_value(slug, ["unique", {}]),
- "True",
- )
-
- # String retrieval
- self.assertEqual(
- get_value(user, ["rel.related_name", {}]),
- "'horribles'",
- )
-
- # Default triggering
- self.assertEqual(
- get_value(slug, ["unique", {"default": False}]),
- "True",
- )
- self.assertRaises(
- IsDefault,
- get_value,
- slug,
- ["unique", {"default": True}],
- )
-
- @skipUnlessOnDeleteAvailable
- def test_get_value_on_delete(self):
-
- # First validate the FK fields with on_delete options
- o_set_null_on_delete = HorribleModel._meta.get_field_by_name("o_set_null_on_delete")[0]
- o_cascade_delete = HorribleModel._meta.get_field_by_name("o_cascade_delete")[0]
- o_protect = HorribleModel._meta.get_field_by_name("o_protect")[0]
- o_default_on_delete = HorribleModel._meta.get_field_by_name("o_default_on_delete")[0]
- o_set_on_delete_function = HorribleModel._meta.get_field_by_name("o_set_on_delete_function")[0]
- o_set_on_delete_value = HorribleModel._meta.get_field_by_name("o_set_on_delete_value")[0]
- o_no_action_on_delete = HorribleModel._meta.get_field_by_name("o_no_action_on_delete")[0]
- # TODO this is repeated from the introspection_details in modelsinspector:
- # better to refactor that so we can reference these settings, in case they
- # must change at some point.
- on_delete = ["rel.on_delete", {"default": models.CASCADE, "is_django_function": True, "converter": convert_on_delete_handler, }]
-
- # Foreign Key cascade update/delete
- self.assertRaises(
- IsDefault,
- get_value,
- o_cascade_delete,
- on_delete,
- )
- self.assertEqual(
- get_value(o_protect, on_delete),
- "models.PROTECT",
- )
- self.assertEqual(
- get_value(o_no_action_on_delete, on_delete),
- "models.DO_NOTHING",
- )
- self.assertEqual(
- get_value(o_set_null_on_delete, on_delete),
- "models.SET_NULL",
- )
- self.assertEqual(
- get_value(o_default_on_delete, on_delete),
- "models.SET_DEFAULT",
- )
- # For now o_set_on_delete raises, see modelsinspector.py
- #self.assertEqual(
- # get_value(o_set_on_delete_function, on_delete),
- # "models.SET(get_sentinel_object)",
- #)
- self.assertRaises(
- ValueError,
- get_value,
- o_set_on_delete_function,
- on_delete,
- )
- self.assertEqual(
- get_value(o_set_on_delete_value, on_delete),
- "models.SET(%s)" % value_clean(get_sentinel_object()),
- )
- \ No newline at end of file
diff --git a/lib/python2.7/site-packages/south/tests/logger.py b/lib/python2.7/site-packages/south/tests/logger.py
deleted file mode 100644
index 78d159d..0000000
--- a/lib/python2.7/site-packages/south/tests/logger.py
+++ /dev/null
@@ -1,82 +0,0 @@
-import io
-import logging
-import os
-import tempfile
-from south.tests import unittest
-import sys
-
-from django.conf import settings
-from django.db import connection, models
-
-from south.db import db
-from south.logger import close_logger
-
-class TestLogger(unittest.TestCase):
-
- """
- Tests if the logging is working reasonably. Some tests ignored if you don't
- have write permission to the disk.
- """
-
- def setUp(self):
- db.debug = False
- self.test_path = tempfile.mkstemp(suffix=".south.log")[1]
-
- def test_db_execute_logging_nofile(self):
- "Does logging degrade nicely if SOUTH_LOGGING_ON not set?"
- settings.SOUTH_LOGGING_ON = False # this needs to be set to False
- # to avoid issues where other tests
- # set this to True. settings is shared
- # between these tests.
- db.create_table("test9", [('email_confirmed', models.BooleanField(default=False))])
-
- def test_db_execute_logging_off_with_basic_config(self):
- """
- Does the south logger avoid outputing debug information with
- south logging turned off and python logging configured with
- a basic config?"
- """
- settings.SOUTH_LOGGING_ON = False
-
- # Set root logger to capture WARNING and worse
- logging_stream = io.StringIO()
- logging.basicConfig(stream=logging_stream, level=logging.WARNING)
-
- db.create_table("test12", [('email_confirmed', models.BooleanField(default=False))])
-
- # since south logging is off, and our root logger is at WARNING
- # we should not find DEBUG info in the log
- self.assertEqual(logging_stream.getvalue(), '')
-
- def test_db_execute_logging_validfile(self):
- "Does logging work when passing in a valid file?"
- settings.SOUTH_LOGGING_ON = True
- settings.SOUTH_LOGGING_FILE = self.test_path
- # Check to see if we can make the logfile
- try:
- fh = open(self.test_path, "w")
- except IOError:
- # Permission was denied, ignore the test.
- return
- else:
- fh.close()
- # Do an action which logs
- db.create_table("test10", [('email_confirmed', models.BooleanField(default=False))])
- # Close the logged file
- close_logger()
- try:
- os.remove(self.test_path)
- except:
- # It's a tempfile, it's not vital we remove it.
- pass
-
- def test_db_execute_logging_missingfilename(self):
- "Does logging raise an error if there is a missing filename?"
- settings.SOUTH_LOGGING_ON = True
- settings.SOUTH_LOGGING_FILE = None
- self.assertRaises(
- IOError,
- db.create_table,
- "test11",
- [('email_confirmed', models.BooleanField(default=False))],
- )
diff --git a/lib/python2.7/site-packages/south/tests/logic.py b/lib/python2.7/site-packages/south/tests/logic.py
deleted file mode 100644
index 2b21cef..0000000
--- a/lib/python2.7/site-packages/south/tests/logic.py
+++ /dev/null
@@ -1,902 +0,0 @@
-from south.tests import unittest
-
-import datetime
-import sys
-try:
- set # builtin, python >=2.6
-except NameError:
- from sets import Set as set # in stdlib, python >=2.3
-
-from south import exceptions
-from south.migration import migrate_app
-from south.migration.base import all_migrations, Migrations
-from south.creator.changes import ManualChanges
-from south.migration.utils import depends, flatten, get_app_label
-from south.models import MigrationHistory
-from south.tests import Monkeypatcher
-from south.db import db
-
-
-
-class TestBrokenMigration(Monkeypatcher):
- installed_apps = ["fakeapp", "otherfakeapp", "brokenapp"]
-
- def test_broken_dependencies(self):
- self.assertRaises(
- exceptions.DependsOnUnmigratedApplication,
- Migrations.calculate_dependencies,
- force=True,
- )
- #depends_on_unknown = self.brokenapp['0002_depends_on_unknown']
- #self.assertRaises(exceptions.DependsOnUnknownMigration,
- # depends_on_unknown.dependencies)
- #depends_on_higher = self.brokenapp['0003_depends_on_higher']
- #self.assertRaises(exceptions.DependsOnHigherMigration,
- # depends_on_higher.dependencies)
-
-
-class TestMigration(Monkeypatcher):
- installed_apps = ["fakeapp", "otherfakeapp"]
-
- def setUp(self):
- super(TestMigration, self).setUp()
- self.fakeapp = Migrations('fakeapp')
- self.otherfakeapp = Migrations('otherfakeapp')
- Migrations.calculate_dependencies(force=True)
-
- def test_str(self):
- migrations = [str(m) for m in self.fakeapp]
- self.assertEqual(['fakeapp:0001_spam',
- 'fakeapp:0002_eggs',
- 'fakeapp:0003_alter_spam'],
- migrations)
-
- def test_repr(self):
- migrations = [repr(m) for m in self.fakeapp]
- self.assertEqual(['<Migration: fakeapp:0001_spam>',
- '<Migration: fakeapp:0002_eggs>',
- '<Migration: fakeapp:0003_alter_spam>'],
- migrations)
-
- def test_app_label(self):
- self.assertEqual(['fakeapp', 'fakeapp', 'fakeapp'],
- [m.app_label() for m in self.fakeapp])
-
- def test_name(self):
- self.assertEqual(['0001_spam', '0002_eggs', '0003_alter_spam'],
- [m.name() for m in self.fakeapp])
-
- def test_full_name(self):
- self.assertEqual(['fakeapp.migrations.0001_spam',
- 'fakeapp.migrations.0002_eggs',
- 'fakeapp.migrations.0003_alter_spam'],
- [m.full_name() for m in self.fakeapp])
-
- def test_migration(self):
- # Can't use vanilla import, modules beginning with numbers aren't in grammar
- M1 = __import__("fakeapp.migrations.0001_spam", {}, {}, ['Migration']).Migration
- M2 = __import__("fakeapp.migrations.0002_eggs", {}, {}, ['Migration']).Migration
- M3 = __import__("fakeapp.migrations.0003_alter_spam", {}, {}, ['Migration']).Migration
- self.assertEqual([M1, M2, M3],
- [m.migration().Migration for m in self.fakeapp])
- self.assertRaises(exceptions.UnknownMigration,
- self.fakeapp['9999_unknown'].migration)
-
- def test_previous(self):
- self.assertEqual([None,
- self.fakeapp['0001_spam'],
- self.fakeapp['0002_eggs']],
- [m.previous() for m in self.fakeapp])
-
- def test_dependencies(self):
- "Test that the dependency detection works."
- self.assertEqual([
- set([]),
- set([self.fakeapp['0001_spam']]),
- set([self.fakeapp['0002_eggs']])
- ],
- [m.dependencies for m in self.fakeapp],
- )
- self.assertEqual([
- set([self.fakeapp['0001_spam']]),
- set([self.otherfakeapp['0001_first']]),
- set([
- self.otherfakeapp['0002_second'],
- self.fakeapp['0003_alter_spam'],
- ])
- ],
- [m.dependencies for m in self.otherfakeapp],
- )
-
- def test_forwards_plan(self):
- self.assertEqual([
- [self.fakeapp['0001_spam']],
- [
- self.fakeapp['0001_spam'],
- self.fakeapp['0002_eggs']
- ],
- [
- self.fakeapp['0001_spam'],
- self.fakeapp['0002_eggs'],
- self.fakeapp['0003_alter_spam'],
- ]
- ],
- [m.forwards_plan() for m in self.fakeapp],
- )
- self.assertEqual([
- [
- self.fakeapp['0001_spam'],
- self.otherfakeapp['0001_first']
- ],
- [
- self.fakeapp['0001_spam'],
- self.otherfakeapp['0001_first'],
- self.otherfakeapp['0002_second']
- ],
- [
- self.fakeapp['0001_spam'],
- self.otherfakeapp['0001_first'],
- self.otherfakeapp['0002_second'],
- self.fakeapp['0002_eggs'],
- self.fakeapp['0003_alter_spam'],
- self.otherfakeapp['0003_third'],
- ]
- ],
- [m.forwards_plan() for m in self.otherfakeapp],
- )
-
- def test_is_before(self):
- F1 = self.fakeapp['0001_spam']
- F2 = self.fakeapp['0002_eggs']
- F3 = self.fakeapp['0003_alter_spam']
- O1 = self.otherfakeapp['0001_first']
- O2 = self.otherfakeapp['0002_second']
- O3 = self.otherfakeapp['0003_third']
- self.assertTrue(F1.is_before(F2))
- self.assertTrue(F1.is_before(F3))
- self.assertTrue(F2.is_before(F3))
- self.assertEqual(O3.is_before(O1), False)
- self.assertEqual(O3.is_before(O2), False)
- self.assertEqual(O2.is_before(O2), False)
- self.assertEqual(O2.is_before(O1), False)
- self.assertEqual(F2.is_before(O1), None)
- self.assertEqual(F2.is_before(O2), None)
- self.assertEqual(F2.is_before(O3), None)
-
-
-class TestMigrationDependencies(Monkeypatcher):
- installed_apps = ['deps_a', 'deps_b', 'deps_c']
-
- def setUp(self):
- super(TestMigrationDependencies, self).setUp()
- self.deps_a = Migrations('deps_a')
- self.deps_b = Migrations('deps_b')
- self.deps_c = Migrations('deps_c')
- Migrations.calculate_dependencies(force=True)
-
- def test_dependencies(self):
- self.assertEqual(
- [
- set([]),
- set([self.deps_a['0001_a']]),
- set([self.deps_a['0002_a']]),
- set([
- self.deps_a['0003_a'],
- self.deps_b['0003_b'],
- ]),
- set([self.deps_a['0004_a']]),
- ],
- [m.dependencies for m in self.deps_a],
- )
- self.assertEqual(
- [
- set([]),
- set([
- self.deps_b['0001_b'],
- self.deps_a['0002_a']
- ]),
- set([
- self.deps_b['0002_b'],
- self.deps_a['0003_a']
- ]),
- set([self.deps_b['0003_b']]),
- set([self.deps_b['0004_b']]),
- ],
- [m.dependencies for m in self.deps_b],
- )
- self.assertEqual(
- [
- set([]),
- set([self.deps_c['0001_c']]),
- set([self.deps_c['0002_c']]),
- set([self.deps_c['0003_c']]),
- set([
- self.deps_c['0004_c'],
- self.deps_a['0002_a']
- ]),
- ],
- [m.dependencies for m in self.deps_c],
- )
-
- def test_dependents(self):
- self.assertEqual([set([self.deps_a['0002_a']]),
- set([self.deps_c['0005_c'],
- self.deps_b['0002_b'],
- self.deps_a['0003_a']]),
- set([self.deps_b['0003_b'],
- self.deps_a['0004_a']]),
- set([self.deps_a['0005_a']]),
- set([])],
- [m.dependents for m in self.deps_a])
- self.assertEqual([set([self.deps_b['0002_b']]),
- set([self.deps_b['0003_b']]),
- set([self.deps_b['0004_b'],
- self.deps_a['0004_a']]),
- set([self.deps_b['0005_b']]),
- set([])],
- [m.dependents for m in self.deps_b])
- self.assertEqual([set([self.deps_c['0002_c']]),
- set([self.deps_c['0003_c']]),
- set([self.deps_c['0004_c']]),
- set([self.deps_c['0005_c']]),
- set([])],
- [m.dependents for m in self.deps_c])
-
- def test_forwards_plan(self):
- self.assertEqual([[self.deps_a['0001_a']],
- [self.deps_a['0001_a'],
- self.deps_a['0002_a']],
- [self.deps_a['0001_a'],
- self.deps_a['0002_a'],
- self.deps_a['0003_a']],
- [self.deps_b['0001_b'],
- self.deps_a['0001_a'],
- self.deps_a['0002_a'],
- self.deps_b['0002_b'],
- self.deps_a['0003_a'],
- self.deps_b['0003_b'],
- self.deps_a['0004_a']],
- [self.deps_b['0001_b'],
- self.deps_a['0001_a'],
- self.deps_a['0002_a'],
- self.deps_b['0002_b'],
- self.deps_a['0003_a'],
- self.deps_b['0003_b'],
- self.deps_a['0004_a'],
- self.deps_a['0005_a']]],
- [m.forwards_plan() for m in self.deps_a])
- self.assertEqual([[self.deps_b['0001_b']],
- [self.deps_b['0001_b'],
- self.deps_a['0001_a'],
- self.deps_a['0002_a'],
- self.deps_b['0002_b']],
- [self.deps_b['0001_b'],
- self.deps_a['0001_a'],
- self.deps_a['0002_a'],
- self.deps_b['0002_b'],
- self.deps_a['0003_a'],
- self.deps_b['0003_b']],
- [self.deps_b['0001_b'],
- self.deps_a['0001_a'],
- self.deps_a['0002_a'],
- self.deps_b['0002_b'],
- self.deps_a['0003_a'],
- self.deps_b['0003_b'],
- self.deps_b['0004_b']],
- [self.deps_b['0001_b'],
- self.deps_a['0001_a'],
- self.deps_a['0002_a'],
- self.deps_b['0002_b'],
- self.deps_a['0003_a'],
- self.deps_b['0003_b'],
- self.deps_b['0004_b'],
- self.deps_b['0005_b']]],
- [m.forwards_plan() for m in self.deps_b])
- self.assertEqual([[self.deps_c['0001_c']],
- [self.deps_c['0001_c'],
- self.deps_c['0002_c']],
- [self.deps_c['0001_c'],
- self.deps_c['0002_c'],
- self.deps_c['0003_c']],
- [self.deps_c['0001_c'],
- self.deps_c['0002_c'],
- self.deps_c['0003_c'],
- self.deps_c['0004_c']],
- [self.deps_c['0001_c'],
- self.deps_c['0002_c'],
- self.deps_c['0003_c'],
- self.deps_c['0004_c'],
- self.deps_a['0001_a'],
- self.deps_a['0002_a'],
- self.deps_c['0005_c']]],
- [m.forwards_plan() for m in self.deps_c])
-
- def test_backwards_plan(self):
- self.assertEqual([
- [
- self.deps_c['0005_c'],
- self.deps_b['0005_b'],
- self.deps_b['0004_b'],
- self.deps_a['0005_a'],
- self.deps_a['0004_a'],
- self.deps_b['0003_b'],
- self.deps_b['0002_b'],
- self.deps_a['0003_a'],
- self.deps_a['0002_a'],
- self.deps_a['0001_a'],
- ],
- [
- self.deps_c['0005_c'],
- self.deps_b['0005_b'],
- self.deps_b['0004_b'],
- self.deps_a['0005_a'],
- self.deps_a['0004_a'],
- self.deps_b['0003_b'],
- self.deps_b['0002_b'],
- self.deps_a['0003_a'],
- self.deps_a['0002_a'],
- ],
- [
- self.deps_b['0005_b'],
- self.deps_b['0004_b'],
- self.deps_a['0005_a'],
- self.deps_a['0004_a'],
- self.deps_b['0003_b'],
- self.deps_a['0003_a'],
- ],
- [
- self.deps_a['0005_a'],
- self.deps_a['0004_a'],
- ],
- [
- self.deps_a['0005_a'],
- ]
- ], [m.backwards_plan() for m in self.deps_a])
- self.assertEqual([
- [
- self.deps_b['0005_b'],
- self.deps_b['0004_b'],
- self.deps_a['0005_a'],
- self.deps_a['0004_a'],
- self.deps_b['0003_b'],
- self.deps_b['0002_b'],
- self.deps_b['0001_b'],
- ],
- [
- self.deps_b['0005_b'],
- self.deps_b['0004_b'],
- self.deps_a['0005_a'],
- self.deps_a['0004_a'],
- self.deps_b['0003_b'],
- self.deps_b['0002_b'],
- ],
- [
- self.deps_b['0005_b'],
- self.deps_b['0004_b'],
- self.deps_a['0005_a'],
- self.deps_a['0004_a'],
- self.deps_b['0003_b'],
- ],
- [
- self.deps_b['0005_b'],
- self.deps_b['0004_b'],
- ],
- [
- self.deps_b['0005_b'],
- ],
- ], [m.backwards_plan() for m in self.deps_b])
- self.assertEqual([
- [
- self.deps_c['0005_c'],
- self.deps_c['0004_c'],
- self.deps_c['0003_c'],
- self.deps_c['0002_c'],
- self.deps_c['0001_c'],
- ],
- [
- self.deps_c['0005_c'],
- self.deps_c['0004_c'],
- self.deps_c['0003_c'],
- self.deps_c['0002_c'],
- ],
- [
- self.deps_c['0005_c'],
- self.deps_c['0004_c'],
- self.deps_c['0003_c'],
- ],
- [
- self.deps_c['0005_c'],
- self.deps_c['0004_c'],
- ],
- [self.deps_c['0005_c']]
- ], [m.backwards_plan() for m in self.deps_c])
-
-
-class TestCircularDependencies(Monkeypatcher):
- installed_apps = ["circular_a", "circular_b"]
-
- def test_plans(self):
- Migrations.calculate_dependencies(force=True)
- circular_a = Migrations('circular_a')
- circular_b = Migrations('circular_b')
- self.assertRaises(
- exceptions.CircularDependency,
- circular_a[-1].forwards_plan,
- )
- self.assertRaises(
- exceptions.CircularDependency,
- circular_b[-1].forwards_plan,
- )
- self.assertRaises(
- exceptions.CircularDependency,
- circular_a[-1].backwards_plan,
- )
- self.assertRaises(
- exceptions.CircularDependency,
- circular_b[-1].backwards_plan,
- )
-
-
-class TestMigrations(Monkeypatcher):
- installed_apps = ["fakeapp", "otherfakeapp"]
-
- def test_all(self):
-
- M1 = Migrations(__import__("fakeapp", {}, {}, ['']))
- M2 = Migrations(__import__("otherfakeapp", {}, {}, ['']))
-
- self.assertEqual(
- [M1, M2],
- list(all_migrations()),
- )
-
- def test(self):
-
- M1 = Migrations(__import__("fakeapp", {}, {}, ['']))
-
- self.assertEqual(M1, Migrations("fakeapp"))
- self.assertEqual(M1, Migrations(self.create_fake_app("fakeapp")))
-
- def test_application(self):
- fakeapp = Migrations("fakeapp")
- application = __import__("fakeapp", {}, {}, [''])
- self.assertEqual(application, fakeapp.application)
-
- def test_migration(self):
- # Can't use vanilla import, modules beginning with numbers aren't in grammar
- M1 = __import__("fakeapp.migrations.0001_spam", {}, {}, ['Migration']).Migration
- M2 = __import__("fakeapp.migrations.0002_eggs", {}, {}, ['Migration']).Migration
- migration = Migrations('fakeapp')
- self.assertEqual(M1, migration['0001_spam'].migration().Migration)
- self.assertEqual(M2, migration['0002_eggs'].migration().Migration)
- self.assertRaises(exceptions.UnknownMigration,
- migration['0001_jam'].migration)
-
- def test_guess_migration(self):
- # Can't use vanilla import, modules beginning with numbers aren't in grammar
- M1 = __import__("fakeapp.migrations.0001_spam", {}, {}, ['Migration']).Migration
- migration = Migrations('fakeapp')
- self.assertEqual(M1, migration.guess_migration("0001_spam").migration().Migration)
- self.assertEqual(M1, migration.guess_migration("0001_spa").migration().Migration)
- self.assertEqual(M1, migration.guess_migration("0001_sp").migration().Migration)
- self.assertEqual(M1, migration.guess_migration("0001_s").migration().Migration)
- self.assertEqual(M1, migration.guess_migration("0001_").migration().Migration)
- self.assertEqual(M1, migration.guess_migration("0001").migration().Migration)
- self.assertRaises(exceptions.UnknownMigration,
- migration.guess_migration, "0001-spam")
- self.assertRaises(exceptions.MultiplePrefixMatches,
- migration.guess_migration, "000")
- self.assertRaises(exceptions.MultiplePrefixMatches,
- migration.guess_migration, "")
- self.assertRaises(exceptions.UnknownMigration,
- migration.guess_migration, "0001_spams")
- self.assertRaises(exceptions.UnknownMigration,
- migration.guess_migration, "0001_jam")
-
- def test_app_label(self):
- names = ['fakeapp', 'otherfakeapp']
- self.assertEqual(names,
- [Migrations(n).app_label() for n in names])
-
- def test_full_name(self):
- names = ['fakeapp', 'otherfakeapp']
- self.assertEqual([n + '.migrations' for n in names],
- [Migrations(n).full_name() for n in names])
-
-
-class TestMigrationLogic(Monkeypatcher):
-
- """
- Tests if the various logic functions in migration actually work.
- """
-
- installed_apps = ["fakeapp", "otherfakeapp"]
-
- def setUp(self):
- super(TestMigrationLogic, self).setUp()
- MigrationHistory.objects.all().delete()
-
- def assertListEqual(self, list1, list2, msg=None):
- list1 = set(list1)
- list2 = set(list2)
- return self.assert_(list1 == list2, "%s is not equal to %s" % (list1, list2))
-
- def test_find_ghost_migrations(self):
- pass
-
- def test_apply_migrations(self):
- migrations = Migrations("fakeapp")
-
- # We should start with no migrations
- self.assertEqual(list(MigrationHistory.objects.all()), [])
-
- # Apply them normally
- migrate_app(migrations, target_name=None, fake=False,
- load_initial_data=True)
-
- # We should finish with all migrations
- self.assertListEqual(
- (("fakeapp", "0001_spam"),
- ("fakeapp", "0002_eggs"),
- ("fakeapp", "0003_alter_spam"),),
- MigrationHistory.objects.values_list("app_name", "migration"),
- )
-
- # Now roll them backwards
- migrate_app(migrations, target_name="zero", fake=False)
-
- # Finish with none
- self.assertEqual(list(MigrationHistory.objects.all()), [])
-
-
- def test_migration_merge_forwards(self):
- migrations = Migrations("fakeapp")
-
- # We should start with no migrations
- self.assertEqual(list(MigrationHistory.objects.all()), [])
-
- # Insert one in the wrong order
- MigrationHistory.objects.create(app_name = "fakeapp",
- migration = "0002_eggs",
- applied = datetime.datetime.now())
-
- # Did it go in?
- self.assertListEqual(
- (("fakeapp", "0002_eggs"),),
- MigrationHistory.objects.values_list("app_name", "migration"),
- )
-
- # Apply them normally
- self.assertRaises(exceptions.InconsistentMigrationHistory,
- migrate_app,
- migrations, target_name=None, fake=False)
- self.assertRaises(exceptions.InconsistentMigrationHistory,
- migrate_app,
- migrations, target_name='zero', fake=False)
- try:
- migrate_app(migrations, target_name=None, fake=False)
- except exceptions.InconsistentMigrationHistory as e:
- self.assertEqual(
- [
- (
- migrations['0002_eggs'],
- migrations['0001_spam'],
- )
- ],
- e.problems,
- )
- try:
- migrate_app(migrations, target_name="zero", fake=False)
- except exceptions.InconsistentMigrationHistory as e:
- self.assertEqual(
- [
- (
- migrations['0002_eggs'],
- migrations['0001_spam'],
- )
- ],
- e.problems,
- )
-
- # Nothing should have changed (no merge mode!)
- self.assertListEqual(
- (("fakeapp", "0002_eggs"),),
- MigrationHistory.objects.values_list("app_name", "migration"),
- )
-
- # Apply with merge
- migrate_app(migrations, target_name=None, merge=True, fake=False)
-
- # We should finish with all migrations
- self.assertListEqual(
- (("fakeapp", "0001_spam"),
- ("fakeapp", "0002_eggs"),
- ("fakeapp", "0003_alter_spam"),),
- MigrationHistory.objects.values_list("app_name", "migration"),
- )
-
- # Now roll them backwards
- migrate_app(migrations, target_name="0002", fake=False)
- migrate_app(migrations, target_name="0001", fake=True)
- migrate_app(migrations, target_name="zero", fake=False)
-
- # Finish with none
- self.assertEqual(list(MigrationHistory.objects.all()), [])
-
- def test_alter_column_null(self):
-
- def null_ok(eat_exception=True):
- from django.db import connection, transaction
- # the DBAPI introspection module fails on postgres NULLs.
- cursor = connection.cursor()
-
- # SQLite has weird now()
- if db.backend_name == "sqlite3":
- now_func = "DATETIME('NOW')"
- # So does SQLServer... should we be using a backend attribute?
- elif db.backend_name == "pyodbc":
- now_func = "GETDATE()"
- elif db.backend_name == "oracle":
- now_func = "SYSDATE"
- else:
- now_func = "NOW()"
-
- try:
- if db.backend_name == "pyodbc":
- cursor.execute("SET IDENTITY_INSERT southtest_spam ON;")
- cursor.execute("INSERT INTO southtest_spam (id, weight, expires, name) VALUES (100, NULL, %s, 'whatever');" % now_func)
- except:
- if eat_exception:
- transaction.rollback()
- return False
- else:
- raise
- else:
- cursor.execute("DELETE FROM southtest_spam")
- transaction.commit()
- return True
-
- MigrationHistory.objects.all().delete()
- migrations = Migrations("fakeapp")
-
- # by default name is NOT NULL
- migrate_app(migrations, target_name="0002", fake=False)
- self.failIf(null_ok())
- self.assertListEqual(
- (("fakeapp", "0001_spam"),
- ("fakeapp", "0002_eggs"),),
- MigrationHistory.objects.values_list("app_name", "migration"),
- )
-
- # after 0003, it should be NULL
- migrate_app(migrations, target_name="0003", fake=False)
- self.assert_(null_ok(False))
- self.assertListEqual(
- (("fakeapp", "0001_spam"),
- ("fakeapp", "0002_eggs"),
- ("fakeapp", "0003_alter_spam"),),
- MigrationHistory.objects.values_list("app_name", "migration"),
- )
-
- # make sure it is NOT NULL again
- migrate_app(migrations, target_name="0002", fake=False)
- self.failIf(null_ok(), 'weight not null after migration')
- self.assertListEqual(
- (("fakeapp", "0001_spam"),
- ("fakeapp", "0002_eggs"),),
- MigrationHistory.objects.values_list("app_name", "migration"),
- )
-
- # finish with no migrations, otherwise other tests fail...
- migrate_app(migrations, target_name="zero", fake=False)
- self.assertEqual(list(MigrationHistory.objects.all()), [])
-
- def test_dependencies(self):
-
- fakeapp = Migrations("fakeapp")
- otherfakeapp = Migrations("otherfakeapp")
-
- # Test a simple path
- self.assertEqual([fakeapp['0001_spam'],
- fakeapp['0002_eggs'],
- fakeapp['0003_alter_spam']],
- fakeapp['0003_alter_spam'].forwards_plan())
-
- # And a complex one.
- self.assertEqual(
- [
- fakeapp['0001_spam'],
- otherfakeapp['0001_first'],
- otherfakeapp['0002_second'],
- fakeapp['0002_eggs'],
- fakeapp['0003_alter_spam'],
- otherfakeapp['0003_third']
- ],
- otherfakeapp['0003_third'].forwards_plan(),
- )
-
-
-class TestMigrationUtils(Monkeypatcher):
- installed_apps = ["fakeapp", "otherfakeapp"]
-
- def test_get_app_label(self):
- self.assertEqual(
- "southtest",
- get_app_label(self.create_fake_app("southtest.models")),
- )
- self.assertEqual(
- "baz",
- get_app_label(self.create_fake_app("foo.bar.baz.models")),
- )
-
-class TestUtils(unittest.TestCase):
-
- def test_flatten(self):
- self.assertEqual([], list(flatten(iter([]))))
- self.assertEqual([], list(flatten(iter([iter([]), ]))))
- self.assertEqual([1], list(flatten(iter([1]))))
- self.assertEqual([1, 2], list(flatten(iter([1, 2]))))
- self.assertEqual([1, 2], list(flatten(iter([iter([1]), 2]))))
- self.assertEqual([1, 2], list(flatten(iter([iter([1, 2])]))))
- self.assertEqual([1, 2, 3], list(flatten(iter([iter([1, 2]), 3]))))
- self.assertEqual([1, 2, 3],
- list(flatten(iter([iter([1]), iter([2]), 3]))))
- self.assertEqual([1, 2, 3],
- list(flatten([[1], [2], 3])))
-
- def test_depends(self):
- graph = {'A1': []}
- self.assertEqual(['A1'],
- depends('A1', lambda n: graph[n]))
- graph = {'A1': [],
- 'A2': ['A1'],
- 'A3': ['A2']}
- self.assertEqual(['A1', 'A2', 'A3'],
- depends('A3', lambda n: graph[n]))
- graph = {'A1': [],
- 'A2': ['A1'],
- 'A3': ['A2', 'A1']}
- self.assertEqual(['A1', 'A2', 'A3'],
- depends('A3', lambda n: graph[n]))
- graph = {'A1': [],
- 'A2': ['A1'],
- 'A3': ['A2', 'A1', 'B1'],
- 'B1': []}
- self.assertEqual(
- ['B1', 'A1', 'A2', 'A3'],
- depends('A3', lambda n: graph[n]),
- )
- graph = {'A1': [],
- 'A2': ['A1'],
- 'A3': ['A2', 'A1', 'B2'],
- 'B1': [],
- 'B2': ['B1']}
- self.assertEqual(
- ['B1', 'B2', 'A1', 'A2', 'A3'],
- depends('A3', lambda n: graph[n]),
- )
- graph = {'A1': [],
- 'A2': ['A1', 'B1'],
- 'A3': ['A2'],
- 'B1': ['A1']}
- self.assertEqual(['A1', 'B1', 'A2', 'A3'],
- depends('A3', lambda n: graph[n]))
- graph = {'A1': [],
- 'A2': ['A1'],
- 'A3': ['A2', 'A1', 'B2'],
- 'B1': [],
- 'B2': ['B1', 'C1'],
- 'C1': ['B1']}
- self.assertEqual(
- ['B1', 'C1', 'B2', 'A1', 'A2', 'A3'],
- depends('A3', lambda n: graph[n]),
- )
- graph = {'A1': [],
- 'A2': ['A1'],
- 'A3': ['A2', 'B2', 'A1', 'C1'],
- 'B1': ['A1'],
- 'B2': ['B1', 'C2', 'A1'],
- 'C1': ['B1'],
- 'C2': ['C1', 'A1'],
- 'C3': ['C2']}
- self.assertEqual(
- ['A1', 'B1', 'C1', 'C2', 'B2', 'A2', 'A3'],
- depends('A3', lambda n: graph[n]),
- )
-
- def assertCircularDependency(self, trace, target, graph):
- "Custom assertion that checks a circular dependency is detected correctly."
- self.assertRaises(
- exceptions.CircularDependency,
- depends,
- target,
- lambda n: graph[n],
- )
- try:
- depends(target, lambda n: graph[n])
- except exceptions.CircularDependency as e:
- self.assertEqual(trace, e.trace)
-
- def test_depends_cycle(self):
- graph = {'A1': ['A1']}
- self.assertCircularDependency(
- ['A1', 'A1'],
- 'A1',
- graph,
- )
- graph = {'A1': [],
- 'A2': ['A1', 'A2'],
- 'A3': ['A2']}
- self.assertCircularDependency(
- ['A2', 'A2'],
- 'A3',
- graph,
- )
- graph = {'A1': [],
- 'A2': ['A1'],
- 'A3': ['A2', 'A3'],
- 'A4': ['A3']}
- self.assertCircularDependency(
- ['A3', 'A3'],
- 'A4',
- graph,
- )
- graph = {'A1': ['B1'],
- 'B1': ['A1']}
- self.assertCircularDependency(
- ['A1', 'B1', 'A1'],
- 'A1',
- graph,
- )
- graph = {'A1': [],
- 'A2': ['A1', 'B2'],
- 'A3': ['A2'],
- 'B1': [],
- 'B2': ['B1', 'A2'],
- 'B3': ['B2']}
- self.assertCircularDependency(
- ['A2', 'B2', 'A2'],
- 'A3',
- graph,
- )
- graph = {'A1': [],
- 'A2': ['A1', 'B3'],
- 'A3': ['A2'],
- 'B1': [],
- 'B2': ['B1', 'A2'],
- 'B3': ['B2']}
- self.assertCircularDependency(
- ['A2', 'B3', 'B2', 'A2'],
- 'A3',
- graph,
- )
- graph = {'A1': [],
- 'A2': ['A1'],
- 'A3': ['A2', 'B2'],
- 'A4': ['A3'],
- 'B1': ['A3'],
- 'B2': ['B1']}
- self.assertCircularDependency(
- ['A3', 'B2', 'B1', 'A3'],
- 'A4',
- graph,
- )
-
-class TestManualChanges(Monkeypatcher):
- installed_apps = ["fakeapp", "otherfakeapp"]
-
- def test_suggest_name(self):
- migrations = Migrations('fakeapp')
- change = ManualChanges(migrations,
- [],
- ['fakeapp.slug'],
- [])
- self.assertEquals(change.suggest_name(),
- 'add_field_fakeapp_slug')
-
- change = ManualChanges(migrations,
- [],
- [],
- ['fakeapp.slug'])
- self.assertEquals(change.suggest_name(),
- 'add_index_fakeapp_slug')
diff --git a/lib/python2.7/site-packages/south/tests/non_managed/__init__.py b/lib/python2.7/site-packages/south/tests/non_managed/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/non_managed/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/non_managed/migrations/__init__.py b/lib/python2.7/site-packages/south/tests/non_managed/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/non_managed/migrations/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/non_managed/models.py b/lib/python2.7/site-packages/south/tests/non_managed/models.py
deleted file mode 100644
index e520d94..0000000
--- a/lib/python2.7/site-packages/south/tests/non_managed/models.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# -*- coding: UTF-8 -*-
-
-"""
-An app with a model that is not managed for testing that South does
-not try to manage it in any way
-"""
-from django.db import models
-
-class Legacy(models.Model):
-
- name = models.CharField(max_length=10)
- size = models.IntegerField()
-
- class Meta:
- db_table = "legacy_table"
- managed = False
diff --git a/lib/python2.7/site-packages/south/tests/otherfakeapp/__init__.py b/lib/python2.7/site-packages/south/tests/otherfakeapp/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/otherfakeapp/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/otherfakeapp/migrations/0001_first.py b/lib/python2.7/site-packages/south/tests/otherfakeapp/migrations/0001_first.py
deleted file mode 100644
index ad9c095..0000000
--- a/lib/python2.7/site-packages/south/tests/otherfakeapp/migrations/0001_first.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- depends_on = (
- ("fakeapp", "0001_spam"),
- )
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/otherfakeapp/migrations/0002_second.py b/lib/python2.7/site-packages/south/tests/otherfakeapp/migrations/0002_second.py
deleted file mode 100644
index 7c0fb0c..0000000
--- a/lib/python2.7/site-packages/south/tests/otherfakeapp/migrations/0002_second.py
+++ /dev/null
@@ -1,11 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
-
diff --git a/lib/python2.7/site-packages/south/tests/otherfakeapp/migrations/0003_third.py b/lib/python2.7/site-packages/south/tests/otherfakeapp/migrations/0003_third.py
deleted file mode 100644
index fa8ed97..0000000
--- a/lib/python2.7/site-packages/south/tests/otherfakeapp/migrations/0003_third.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from south.db import db
-from django.db import models
-
-class Migration:
-
- depends_on = (
- ("fakeapp", "0003_alter_spam"),
- )
-
- def forwards(self):
- pass
-
- def backwards(self):
- pass
diff --git a/lib/python2.7/site-packages/south/tests/otherfakeapp/migrations/__init__.py b/lib/python2.7/site-packages/south/tests/otherfakeapp/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/south/tests/otherfakeapp/migrations/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/south/tests/otherfakeapp/models.py b/lib/python2.7/site-packages/south/tests/otherfakeapp/models.py
deleted file mode 100644
index 93a4b8e..0000000
--- a/lib/python2.7/site-packages/south/tests/otherfakeapp/models.py
+++ /dev/null
@@ -1 +0,0 @@
-# This file left intentionally blank. \ No newline at end of file
diff --git a/lib/python2.7/site-packages/south/utils/__init__.py b/lib/python2.7/site-packages/south/utils/__init__.py
deleted file mode 100644
index 8d7297e..0000000
--- a/lib/python2.7/site-packages/south/utils/__init__.py
+++ /dev/null
@@ -1,73 +0,0 @@
-"""
-Generally helpful utility functions.
-"""
-
-
-def _ask_for_it_by_name(name):
- "Returns an object referenced by absolute path."
- bits = str(name).split(".")
-
- ## what if there is no absolute reference?
- if len(bits) > 1:
- modulename = ".".join(bits[:-1])
- else:
- modulename = bits[0]
-
- module = __import__(modulename, {}, {}, bits[-1])
-
- if len(bits) == 1:
- return module
- else:
- return getattr(module, bits[-1])
-
-
-def ask_for_it_by_name(name):
- "Returns an object referenced by absolute path. (Memoised outer wrapper)"
- if name not in ask_for_it_by_name.cache:
- ask_for_it_by_name.cache[name] = _ask_for_it_by_name(name)
- return ask_for_it_by_name.cache[name]
-ask_for_it_by_name.cache = {}
-
-
-def get_attribute(item, attribute):
- """
- Like getattr, but recursive (i.e. you can ask for 'foo.bar.yay'.)
- """
- value = item
- for part in attribute.split("."):
- value = getattr(value, part)
- return value
-
-def auto_through(field):
- "Returns if the M2M class passed in has an autogenerated through table or not."
- return (
- # Django 1.0/1.1
- (not field.rel.through)
- or
- # Django 1.2+
- getattr(getattr(field.rel.through, "_meta", None), "auto_created", False)
- )
-
-def auto_model(model):
- "Returns if the given model was automatically generated."
- return getattr(model._meta, "auto_created", False)
-
-def memoize(function):
- "Standard memoization decorator."
- name = function.__name__
- _name = '_' + name
-
- def method(self):
- if not hasattr(self, _name):
- value = function(self)
- setattr(self, _name, value)
- return getattr(self, _name)
-
- def invalidate():
- if hasattr(method, _name):
- delattr(method, _name)
-
- method.__name__ = function.__name__
- method.__doc__ = function.__doc__
- method._invalidate = invalidate
- return method
diff --git a/lib/python2.7/site-packages/south/utils/datetime_utils.py b/lib/python2.7/site-packages/south/utils/datetime_utils.py
deleted file mode 100644
index a416935..0000000
--- a/lib/python2.7/site-packages/south/utils/datetime_utils.py
+++ /dev/null
@@ -1,28 +0,0 @@
-from datetime import *
-
-import django
-from django.conf import settings
-
-if django.VERSION[:2] >= (1, 4) and getattr(settings, 'USE_TZ', False):
- from django.utils import timezone
- from datetime import datetime as _datetime
-
- class datetime(_datetime):
- """
- A custom datetime.datetime class which acts as a compatibility
- layer between South and Django 1.4's timezone aware datetime
- instances.
-
- It basically adds the default timezone (as configured in Django's
- settings) automatically if no tzinfo is given.
- """
- def __new__(cls, year, month, day,
- hour=0, minute=0, second=0, microsecond=0, tzinfo=None):
-
- dt = _datetime(year, month, day,
- hour, minute, second, microsecond,
- tzinfo=tzinfo)
- if tzinfo is None:
- default_timezone = timezone.get_default_timezone()
- dt = timezone.make_aware(dt, default_timezone)
- return dt
diff --git a/lib/python2.7/site-packages/south/utils/py3.py b/lib/python2.7/site-packages/south/utils/py3.py
deleted file mode 100644
index 732e904..0000000
--- a/lib/python2.7/site-packages/south/utils/py3.py
+++ /dev/null
@@ -1,28 +0,0 @@
-"""
-Python 2 + 3 compatibility functions. This is a very small subset of six.
-"""
-
-import sys
-
-PY3 = sys.version_info[0] == 3
-
-if PY3:
- string_types = str,
- text_type = str
- raw_input = input
-
- import io
- StringIO = io.StringIO
-
-else:
- string_types = basestring,
- text_type = unicode
- raw_input = raw_input
-
- import cStringIO
- StringIO = cStringIO.StringIO
-
-
-def with_metaclass(meta, base=object):
- """Create a base class with a metaclass."""
- return meta("NewBase", (base,), {})
diff --git a/lib/python2.7/site-packages/south/v2.py b/lib/python2.7/site-packages/south/v2.py
deleted file mode 100644
index 22afed2..0000000
--- a/lib/python2.7/site-packages/south/v2.py
+++ /dev/null
@@ -1,25 +0,0 @@
-"""
-API versioning file; we can tell what kind of migrations things are
-by what class they inherit from (if none, it's a v1).
-"""
-
-from south.utils import ask_for_it_by_name
-
-class BaseMigration(object):
-
- def gf(self, field_name):
- "Gets a field by absolute reference."
- field = ask_for_it_by_name(field_name)
- field.model = FakeModel
- return field
-
-class SchemaMigration(BaseMigration):
- pass
-
-class DataMigration(BaseMigration):
- # Data migrations shouldn't be dry-run
- no_dry_run = True
-
-class FakeModel(object):
- "Fake model so error messages on fields don't explode"
- pass
diff --git a/lib/python2.7/site-packages/undelete/__init__.py b/lib/python2.7/site-packages/undelete/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/lib/python2.7/site-packages/undelete/__init__.py
+++ /dev/null
diff --git a/lib/python2.7/site-packages/undelete/managers.py b/lib/python2.7/site-packages/undelete/managers.py
deleted file mode 100644
index e4712cd..0000000
--- a/lib/python2.7/site-packages/undelete/managers.py
+++ /dev/null
@@ -1,40 +0,0 @@
-from django.db import models
-
-class TrashableQuerySet(models.query.QuerySet):
- """Special QuerySet that explicitly calls delete() method on each model.
- If we don't do this, QuerySet delete() will bypass our TrashableMixin
- delete().
-
- This is only used for the NonTrashedManager. TrashedManager returns
- trashed objects, which should be truly deleted when delete() is called.
- Logic is the same for TrashableMixin at second delete().
-
- @author: Charl P. Botha <cpbotha@timescapers.com>
- """
-
- def delete(self, trash=True):
- """Overrides normal QuerySet delete to call explicitly object's
- delete() method.
- """
- if trash:
- for m in self:
- m.delete()
-
- else:
- super(TrashableQuerySet, self).delete()
-
-class NonTrashedManager(models.Manager):
- ''' Query only objects which have not been trashed. '''
- def get_query_set(self):
- # class Manager instantiates QuerySet() at every call of
- # get_query_set() also. see django/db/models/manager.py
- # we use special TrashableQuerySet which makes sure that
- # model delete()s get called explicitly.
- query_set = TrashableQuerySet(self.model, using=self._db)
- return query_set.filter(trashed_at__isnull=True)
-
-class TrashedManager(models.Manager):
- ''' Query only objects which have been trashed. '''
- def get_query_set(self):
- query_set = super(TrashedManager, self).get_query_set()
- return query_set.filter(trashed_at__isnull=False)
diff --git a/lib/python2.7/site-packages/undelete/models.py b/lib/python2.7/site-packages/undelete/models.py
deleted file mode 100644
index 26c4c5f..0000000
--- a/lib/python2.7/site-packages/undelete/models.py
+++ /dev/null
@@ -1,30 +0,0 @@
-from datetime import datetime
-from django.db import models
-from django.utils.translation import ugettext_lazy as _
-
-from undelete.managers import TrashedManager, NonTrashedManager
-
-class TrashableMixin(models.Model):
- trashed_at = models.DateTimeField(_('Trashed'), editable=False, blank=True, null=True)
-
- objects = NonTrashedManager()
- trash = TrashedManager()
-
- def delete(self, *args, **kwargs):
- # keyword argument trash has default value True
- trash=kwargs.get('trash', True)
- if not self.trashed_at and trash:
- self.trashed_at = datetime.now()
- self.save()
- else:
- super(TrashableMixin, self).delete(*args, **kwargs)
-
- def restore(self, commit=True):
- self.trashed_at = None
- if commit:
- self.save()
-
- class Meta:
- abstract = True
-
-
diff --git a/lib/python2.7/site.py b/lib/python2.7/site.py
deleted file mode 100644
index 935808b..0000000
--- a/lib/python2.7/site.py
+++ /dev/null
@@ -1,737 +0,0 @@
-"""Append module search paths for third-party packages to sys.path.
-
-****************************************************************
-* This module is automatically imported during initialization. *
-****************************************************************
-
-In earlier versions of Python (up to 1.5a3), scripts or modules that
-needed to use site-specific modules would place ``import site''
-somewhere near the top of their code. Because of the automatic
-import, this is no longer necessary (but code that does it still
-works).
-
-This will append site-specific paths to the module search path. On
-Unix, it starts with sys.prefix and sys.exec_prefix (if different) and
-appends lib/python<version>/site-packages as well as lib/site-python.
-It also supports the Debian convention of
-lib/python<version>/dist-packages. On other platforms (mainly Mac and
-Windows), it uses just sys.prefix (and sys.exec_prefix, if different,
-but this is unlikely). The resulting directories, if they exist, are
-appended to sys.path, and also inspected for path configuration files.
-
-FOR DEBIAN, this sys.path is augmented with directories in /usr/local.
-Local addons go into /usr/local/lib/python<version>/site-packages
-(resp. /usr/local/lib/site-python), Debian addons install into
-/usr/{lib,share}/python<version>/dist-packages.
-
-A path configuration file is a file whose name has the form
-<package>.pth; its contents are additional directories (one per line)
-to be added to sys.path. Non-existing directories (or
-non-directories) are never added to sys.path; no directory is added to
-sys.path more than once. Blank lines and lines beginning with
-'#' are skipped. Lines starting with 'import' are executed.
-
-For example, suppose sys.prefix and sys.exec_prefix are set to
-/usr/local and there is a directory /usr/local/lib/python2.X/site-packages
-with three subdirectories, foo, bar and spam, and two path
-configuration files, foo.pth and bar.pth. Assume foo.pth contains the
-following:
-
- # foo package configuration
- foo
- bar
- bletch
-
-and bar.pth contains:
-
- # bar package configuration
- bar
-
-Then the following directories are added to sys.path, in this order:
-
- /usr/local/lib/python2.X/site-packages/bar
- /usr/local/lib/python2.X/site-packages/foo
-
-Note that bletch is omitted because it doesn't exist; bar precedes foo
-because bar.pth comes alphabetically before foo.pth; and spam is
-omitted because it is not mentioned in either path configuration file.
-
-After these path manipulations, an attempt is made to import a module
-named sitecustomize, which can perform arbitrary additional
-site-specific customizations. If this import fails with an
-ImportError exception, it is silently ignored.
-
-"""
-
-import sys
-import os
-try:
- import __builtin__ as builtins
-except ImportError:
- import builtins
-try:
- set
-except NameError:
- from sets import Set as set
-
-# Prefixes for site-packages; add additional prefixes like /usr/local here
-PREFIXES = [sys.prefix, sys.exec_prefix]
-# Enable per user site-packages directory
-# set it to False to disable the feature or True to force the feature
-ENABLE_USER_SITE = None
-# for distutils.commands.install
-USER_SITE = None
-USER_BASE = None
-
-_is_pypy = hasattr(sys, 'pypy_version_info')
-_is_jython = sys.platform[:4] == 'java'
-if _is_jython:
- ModuleType = type(os)
-
-def makepath(*paths):
- dir = os.path.join(*paths)
- if _is_jython and (dir == '__classpath__' or
- dir.startswith('__pyclasspath__')):
- return dir, dir
- dir = os.path.abspath(dir)
- return dir, os.path.normcase(dir)
-
-def abs__file__():
- """Set all module' __file__ attribute to an absolute path"""
- for m in sys.modules.values():
- if ((_is_jython and not isinstance(m, ModuleType)) or
- hasattr(m, '__loader__')):
- # only modules need the abspath in Jython. and don't mess
- # with a PEP 302-supplied __file__
- continue
- f = getattr(m, '__file__', None)
- if f is None:
- continue
- m.__file__ = os.path.abspath(f)
-
-def removeduppaths():
- """ Remove duplicate entries from sys.path along with making them
- absolute"""
- # This ensures that the initial path provided by the interpreter contains
- # only absolute pathnames, even if we're running from the build directory.
- L = []
- known_paths = set()
- for dir in sys.path:
- # Filter out duplicate paths (on case-insensitive file systems also
- # if they only differ in case); turn relative paths into absolute
- # paths.
- dir, dircase = makepath(dir)
- if not dircase in known_paths:
- L.append(dir)
- known_paths.add(dircase)
- sys.path[:] = L
- return known_paths
-
-# XXX This should not be part of site.py, since it is needed even when
-# using the -S option for Python. See http://www.python.org/sf/586680
-def addbuilddir():
- """Append ./build/lib.<platform> in case we're running in the build dir
- (especially for Guido :-)"""
- from distutils.util import get_platform
- s = "build/lib.%s-%.3s" % (get_platform(), sys.version)
- if hasattr(sys, 'gettotalrefcount'):
- s += '-pydebug'
- s = os.path.join(os.path.dirname(sys.path[-1]), s)
- sys.path.append(s)
-
-def _init_pathinfo():
- """Return a set containing all existing directory entries from sys.path"""
- d = set()
- for dir in sys.path:
- try:
- if os.path.isdir(dir):
- dir, dircase = makepath(dir)
- d.add(dircase)
- except TypeError:
- continue
- return d
-
-def addpackage(sitedir, name, known_paths):
- """Add a new path to known_paths by combining sitedir and 'name' or execute
- sitedir if it starts with 'import'"""
- if known_paths is None:
- _init_pathinfo()
- reset = 1
- else:
- reset = 0
- fullname = os.path.join(sitedir, name)
- try:
- f = open(fullname, "rU")
- except IOError:
- return
- try:
- for line in f:
- if line.startswith("#"):
- continue
- if line.startswith("import"):
- exec(line)
- continue
- line = line.rstrip()
- dir, dircase = makepath(sitedir, line)
- if not dircase in known_paths and os.path.exists(dir):
- sys.path.append(dir)
- known_paths.add(dircase)
- finally:
- f.close()
- if reset:
- known_paths = None
- return known_paths
-
-def addsitedir(sitedir, known_paths=None):
- """Add 'sitedir' argument to sys.path if missing and handle .pth files in
- 'sitedir'"""
- if known_paths is None:
- known_paths = _init_pathinfo()
- reset = 1
- else:
- reset = 0
- sitedir, sitedircase = makepath(sitedir)
- if not sitedircase in known_paths:
- sys.path.append(sitedir) # Add path component
- try:
- names = os.listdir(sitedir)
- except os.error:
- return
- names.sort()
- for name in names:
- if name.endswith(os.extsep + "pth"):
- addpackage(sitedir, name, known_paths)
- if reset:
- known_paths = None
- return known_paths
-
-def addsitepackages(known_paths, sys_prefix=sys.prefix, exec_prefix=sys.exec_prefix):
- """Add site-packages (and possibly site-python) to sys.path"""
- prefixes = [os.path.join(sys_prefix, "local"), sys_prefix]
- if exec_prefix != sys_prefix:
- prefixes.append(os.path.join(exec_prefix, "local"))
-
- for prefix in prefixes:
- if prefix:
- if sys.platform in ('os2emx', 'riscos') or _is_jython:
- sitedirs = [os.path.join(prefix, "Lib", "site-packages")]
- elif _is_pypy:
- sitedirs = [os.path.join(prefix, 'site-packages')]
- elif sys.platform == 'darwin' and prefix == sys_prefix:
-
- if prefix.startswith("/System/Library/Frameworks/"): # Apple's Python
-
- sitedirs = [os.path.join("/Library/Python", sys.version[:3], "site-packages"),
- os.path.join(prefix, "Extras", "lib", "python")]
-
- else: # any other Python distros on OSX work this way
- sitedirs = [os.path.join(prefix, "lib",
- "python" + sys.version[:3], "site-packages")]
-
- elif os.sep == '/':
- sitedirs = [os.path.join(prefix,
- "lib",
- "python" + sys.version[:3],
- "site-packages"),
- os.path.join(prefix, "lib", "site-python"),
- os.path.join(prefix, "python" + sys.version[:3], "lib-dynload")]
- lib64_dir = os.path.join(prefix, "lib64", "python" + sys.version[:3], "site-packages")
- if (os.path.exists(lib64_dir) and
- os.path.realpath(lib64_dir) not in [os.path.realpath(p) for p in sitedirs]):
- sitedirs.append(lib64_dir)
- try:
- # sys.getobjects only available in --with-pydebug build
- sys.getobjects
- sitedirs.insert(0, os.path.join(sitedirs[0], 'debug'))
- except AttributeError:
- pass
- # Debian-specific dist-packages directories:
- if sys.version[0] == '2':
- sitedirs.append(os.path.join(prefix, "lib",
- "python" + sys.version[:3],
- "dist-packages"))
- else:
- sitedirs.append(os.path.join(prefix, "lib",
- "python" + sys.version[0],
- "dist-packages"))
- sitedirs.append(os.path.join(prefix, "local/lib",
- "python" + sys.version[:3],
- "dist-packages"))
- sitedirs.append(os.path.join(prefix, "lib", "dist-python"))
- else:
- sitedirs = [prefix, os.path.join(prefix, "lib", "site-packages")]
- if sys.platform == 'darwin':
- # for framework builds *only* we add the standard Apple
- # locations. Currently only per-user, but /Library and
- # /Network/Library could be added too
- if 'Python.framework' in prefix:
- home = os.environ.get('HOME')
- if home:
- sitedirs.append(
- os.path.join(home,
- 'Library',
- 'Python',
- sys.version[:3],
- 'site-packages'))
- for sitedir in sitedirs:
- if os.path.isdir(sitedir):
- addsitedir(sitedir, known_paths)
- return None
-
-def check_enableusersite():
- """Check if user site directory is safe for inclusion
-
- The function tests for the command line flag (including environment var),
- process uid/gid equal to effective uid/gid.
-
- None: Disabled for security reasons
- False: Disabled by user (command line option)
- True: Safe and enabled
- """
- if hasattr(sys, 'flags') and getattr(sys.flags, 'no_user_site', False):
- return False
-
- if hasattr(os, "getuid") and hasattr(os, "geteuid"):
- # check process uid == effective uid
- if os.geteuid() != os.getuid():
- return None
- if hasattr(os, "getgid") and hasattr(os, "getegid"):
- # check process gid == effective gid
- if os.getegid() != os.getgid():
- return None
-
- return True
-
-def addusersitepackages(known_paths):
- """Add a per user site-package to sys.path
-
- Each user has its own python directory with site-packages in the
- home directory.
-
- USER_BASE is the root directory for all Python versions
-
- USER_SITE is the user specific site-packages directory
-
- USER_SITE/.. can be used for data.
- """
- global USER_BASE, USER_SITE, ENABLE_USER_SITE
- env_base = os.environ.get("PYTHONUSERBASE", None)
-
- def joinuser(*args):
- return os.path.expanduser(os.path.join(*args))
-
- #if sys.platform in ('os2emx', 'riscos'):
- # # Don't know what to put here
- # USER_BASE = ''
- # USER_SITE = ''
- if os.name == "nt":
- base = os.environ.get("APPDATA") or "~"
- if env_base:
- USER_BASE = env_base
- else:
- USER_BASE = joinuser(base, "Python")
- USER_SITE = os.path.join(USER_BASE,
- "Python" + sys.version[0] + sys.version[2],
- "site-packages")
- else:
- if env_base:
- USER_BASE = env_base
- else:
- USER_BASE = joinuser("~", ".local")
- USER_SITE = os.path.join(USER_BASE, "lib",
- "python" + sys.version[:3],
- "site-packages")
-
- if ENABLE_USER_SITE and os.path.isdir(USER_SITE):
- addsitedir(USER_SITE, known_paths)
- if ENABLE_USER_SITE:
- for dist_libdir in ("lib", "local/lib"):
- user_site = os.path.join(USER_BASE, dist_libdir,
- "python" + sys.version[:3],
- "dist-packages")
- if os.path.isdir(user_site):
- addsitedir(user_site, known_paths)
- return known_paths
-
-
-
-def setBEGINLIBPATH():
- """The OS/2 EMX port has optional extension modules that do double duty
- as DLLs (and must use the .DLL file extension) for other extensions.
- The library search path needs to be amended so these will be found
- during module import. Use BEGINLIBPATH so that these are at the start
- of the library search path.
-
- """
- dllpath = os.path.join(sys.prefix, "Lib", "lib-dynload")
- libpath = os.environ['BEGINLIBPATH'].split(';')
- if libpath[-1]:
- libpath.append(dllpath)
- else:
- libpath[-1] = dllpath
- os.environ['BEGINLIBPATH'] = ';'.join(libpath)
-
-
-def setquit():
- """Define new built-ins 'quit' and 'exit'.
- These are simply strings that display a hint on how to exit.
-
- """
- if os.sep == ':':
- eof = 'Cmd-Q'
- elif os.sep == '\\':
- eof = 'Ctrl-Z plus Return'
- else:
- eof = 'Ctrl-D (i.e. EOF)'
-
- class Quitter(object):
- def __init__(self, name):
- self.name = name
- def __repr__(self):
- return 'Use %s() or %s to exit' % (self.name, eof)
- def __call__(self, code=None):
- # Shells like IDLE catch the SystemExit, but listen when their
- # stdin wrapper is closed.
- try:
- sys.stdin.close()
- except:
- pass
- raise SystemExit(code)
- builtins.quit = Quitter('quit')
- builtins.exit = Quitter('exit')
-
-
-class _Printer(object):
- """interactive prompt objects for printing the license text, a list of
- contributors and the copyright notice."""
-
- MAXLINES = 23
-
- def __init__(self, name, data, files=(), dirs=()):
- self.__name = name
- self.__data = data
- self.__files = files
- self.__dirs = dirs
- self.__lines = None
-
- def __setup(self):
- if self.__lines:
- return
- data = None
- for dir in self.__dirs:
- for filename in self.__files:
- filename = os.path.join(dir, filename)
- try:
- fp = file(filename, "rU")
- data = fp.read()
- fp.close()
- break
- except IOError:
- pass
- if data:
- break
- if not data:
- data = self.__data
- self.__lines = data.split('\n')
- self.__linecnt = len(self.__lines)
-
- def __repr__(self):
- self.__setup()
- if len(self.__lines) <= self.MAXLINES:
- return "\n".join(self.__lines)
- else:
- return "Type %s() to see the full %s text" % ((self.__name,)*2)
-
- def __call__(self):
- self.__setup()
- prompt = 'Hit Return for more, or q (and Return) to quit: '
- lineno = 0
- while 1:
- try:
- for i in range(lineno, lineno + self.MAXLINES):
- print(self.__lines[i])
- except IndexError:
- break
- else:
- lineno += self.MAXLINES
- key = None
- while key is None:
- try:
- key = raw_input(prompt)
- except NameError:
- key = input(prompt)
- if key not in ('', 'q'):
- key = None
- if key == 'q':
- break
-
-def setcopyright():
- """Set 'copyright' and 'credits' in __builtin__"""
- builtins.copyright = _Printer("copyright", sys.copyright)
- if _is_jython:
- builtins.credits = _Printer(
- "credits",
- "Jython is maintained by the Jython developers (www.jython.org).")
- elif _is_pypy:
- builtins.credits = _Printer(
- "credits",
- "PyPy is maintained by the PyPy developers: http://codespeak.net/pypy")
- else:
- builtins.credits = _Printer("credits", """\
- Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands
- for supporting Python development. See www.python.org for more information.""")
- here = os.path.dirname(os.__file__)
- builtins.license = _Printer(
- "license", "See http://www.python.org/%.3s/license.html" % sys.version,
- ["LICENSE.txt", "LICENSE"],
- [os.path.join(here, os.pardir), here, os.curdir])
-
-
-class _Helper(object):
- """Define the built-in 'help'.
- This is a wrapper around pydoc.help (with a twist).
-
- """
-
- def __repr__(self):
- return "Type help() for interactive help, " \
- "or help(object) for help about object."
- def __call__(self, *args, **kwds):
- import pydoc
- return pydoc.help(*args, **kwds)
-
-def sethelper():
- builtins.help = _Helper()
-
-def aliasmbcs():
- """On Windows, some default encodings are not provided by Python,
- while they are always available as "mbcs" in each locale. Make
- them usable by aliasing to "mbcs" in such a case."""
- if sys.platform == 'win32':
- import locale, codecs
- enc = locale.getdefaultlocale()[1]
- if enc.startswith('cp'): # "cp***" ?
- try:
- codecs.lookup(enc)
- except LookupError:
- import encodings
- encodings._cache[enc] = encodings._unknown
- encodings.aliases.aliases[enc] = 'mbcs'
-
-def setencoding():
- """Set the string encoding used by the Unicode implementation. The
- default is 'ascii', but if you're willing to experiment, you can
- change this."""
- encoding = "ascii" # Default value set by _PyUnicode_Init()
- if 0:
- # Enable to support locale aware default string encodings.
- import locale
- loc = locale.getdefaultlocale()
- if loc[1]:
- encoding = loc[1]
- if 0:
- # Enable to switch off string to Unicode coercion and implicit
- # Unicode to string conversion.
- encoding = "undefined"
- if encoding != "ascii":
- # On Non-Unicode builds this will raise an AttributeError...
- sys.setdefaultencoding(encoding) # Needs Python Unicode build !
-
-
-def execsitecustomize():
- """Run custom site specific code, if available."""
- try:
- import sitecustomize
- except ImportError:
- pass
-
-def virtual_install_main_packages():
- f = open(os.path.join(os.path.dirname(__file__), 'orig-prefix.txt'))
- sys.real_prefix = f.read().strip()
- f.close()
- pos = 2
- hardcoded_relative_dirs = []
- if sys.path[0] == '':
- pos += 1
- if sys.platform == 'win32':
- paths = [os.path.join(sys.real_prefix, 'Lib'), os.path.join(sys.real_prefix, 'DLLs')]
- elif _is_jython:
- paths = [os.path.join(sys.real_prefix, 'Lib')]
- elif _is_pypy:
- if sys.pypy_version_info >= (1, 5):
- cpyver = '%d.%d' % sys.version_info[:2]
- else:
- cpyver = '%d.%d.%d' % sys.version_info[:3]
- paths = [os.path.join(sys.real_prefix, 'lib_pypy'),
- os.path.join(sys.real_prefix, 'lib-python', 'modified-%s' % cpyver),
- os.path.join(sys.real_prefix, 'lib-python', cpyver)]
- hardcoded_relative_dirs = paths[:] # for the special 'darwin' case below
- #
- # This is hardcoded in the Python executable, but relative to sys.prefix:
- for path in paths[:]:
- plat_path = os.path.join(path, 'plat-%s' % sys.platform)
- if os.path.exists(plat_path):
- paths.append(plat_path)
- else:
- paths = [os.path.join(sys.real_prefix, 'lib', 'python'+sys.version[:3])]
- hardcoded_relative_dirs = paths[:] # for the special 'darwin' case below
- lib64_path = os.path.join(sys.real_prefix, 'lib64', 'python'+sys.version[:3])
- if os.path.exists(lib64_path):
- paths.append(lib64_path)
- # This is hardcoded in the Python executable, but relative to sys.prefix:
- plat_path = os.path.join(sys.real_prefix, 'lib', 'python'+sys.version[:3],
- 'plat-%s' % sys.platform)
- if os.path.exists(plat_path):
- paths.append(plat_path)
- # This is hardcoded in the Python executable, but
- # relative to sys.prefix, so we have to fix up:
- for path in list(paths):
- tk_dir = os.path.join(path, 'lib-tk')
- if os.path.exists(tk_dir):
- paths.append(tk_dir)
-
- # These are hardcoded in the Apple's Python executable,
- # but relative to sys.prefix, so we have to fix them up:
- if sys.platform == 'darwin':
- hardcoded_paths = [os.path.join(relative_dir, module)
- for relative_dir in hardcoded_relative_dirs
- for module in ('plat-darwin', 'plat-mac', 'plat-mac/lib-scriptpackages')]
-
- for path in hardcoded_paths:
- if os.path.exists(path):
- paths.append(path)
-
- sys.path.extend(paths)
-
-def force_global_eggs_after_local_site_packages():
- """
- Force easy_installed eggs in the global environment to get placed
- in sys.path after all packages inside the virtualenv. This
- maintains the "least surprise" result that packages in the
- virtualenv always mask global packages, never the other way
- around.
-
- """
- egginsert = getattr(sys, '__egginsert', 0)
- for i, path in enumerate(sys.path):
- if i > egginsert and path.startswith(sys.prefix):
- egginsert = i
- sys.__egginsert = egginsert + 1
-
-def virtual_addsitepackages(known_paths):
- force_global_eggs_after_local_site_packages()
- return addsitepackages(known_paths, sys_prefix=sys.real_prefix)
-
-def fixclasspath():
- """Adjust the special classpath sys.path entries for Jython. These
- entries should follow the base virtualenv lib directories.
- """
- paths = []
- classpaths = []
- for path in sys.path:
- if path == '__classpath__' or path.startswith('__pyclasspath__'):
- classpaths.append(path)
- else:
- paths.append(path)
- sys.path = paths
- sys.path.extend(classpaths)
-
-def execusercustomize():
- """Run custom user specific code, if available."""
- try:
- import usercustomize
- except ImportError:
- pass
-
-
-def main():
- global ENABLE_USER_SITE
- virtual_install_main_packages()
- abs__file__()
- paths_in_sys = removeduppaths()
- if (os.name == "posix" and sys.path and
- os.path.basename(sys.path[-1]) == "Modules"):
- addbuilddir()
- if _is_jython:
- fixclasspath()
- GLOBAL_SITE_PACKAGES = not os.path.exists(os.path.join(os.path.dirname(__file__), 'no-global-site-packages.txt'))
- if not GLOBAL_SITE_PACKAGES:
- ENABLE_USER_SITE = False
- if ENABLE_USER_SITE is None:
- ENABLE_USER_SITE = check_enableusersite()
- paths_in_sys = addsitepackages(paths_in_sys)
- paths_in_sys = addusersitepackages(paths_in_sys)
- if GLOBAL_SITE_PACKAGES:
- paths_in_sys = virtual_addsitepackages(paths_in_sys)
- if sys.platform == 'os2emx':
- setBEGINLIBPATH()
- setquit()
- setcopyright()
- sethelper()
- aliasmbcs()
- setencoding()
- execsitecustomize()
- if ENABLE_USER_SITE:
- execusercustomize()
- # Remove sys.setdefaultencoding() so that users cannot change the
- # encoding after initialization. The test for presence is needed when
- # this module is run as a script, because this code is executed twice.
- if hasattr(sys, "setdefaultencoding"):
- del sys.setdefaultencoding
-
-main()
-
-def _script():
- help = """\
- %s [--user-base] [--user-site]
-
- Without arguments print some useful information
- With arguments print the value of USER_BASE and/or USER_SITE separated
- by '%s'.
-
- Exit codes with --user-base or --user-site:
- 0 - user site directory is enabled
- 1 - user site directory is disabled by user
- 2 - uses site directory is disabled by super user
- or for security reasons
- >2 - unknown error
- """
- args = sys.argv[1:]
- if not args:
- print("sys.path = [")
- for dir in sys.path:
- print(" %r," % (dir,))
- print("]")
- def exists(path):
- if os.path.isdir(path):
- return "exists"
- else:
- return "doesn't exist"
- print("USER_BASE: %r (%s)" % (USER_BASE, exists(USER_BASE)))
- print("USER_SITE: %r (%s)" % (USER_SITE, exists(USER_BASE)))
- print("ENABLE_USER_SITE: %r" % ENABLE_USER_SITE)
- sys.exit(0)
-
- buffer = []
- if '--user-base' in args:
- buffer.append(USER_BASE)
- if '--user-site' in args:
- buffer.append(USER_SITE)
-
- if buffer:
- print(os.pathsep.join(buffer))
- if ENABLE_USER_SITE:
- sys.exit(0)
- elif ENABLE_USER_SITE is False:
- sys.exit(1)
- elif ENABLE_USER_SITE is None:
- sys.exit(2)
- else:
- sys.exit(3)
- else:
- import textwrap
- print(textwrap.dedent(help % (sys.argv[0], os.pathsep)))
- sys.exit(10)
-
-if __name__ == '__main__':
- _script()
diff --git a/lib/python2.7/site-packages/django/conf/locale/ar/__init__.py b/myadmin/__init__.py
index e69de29..e69de29 100644
--- a/lib/python2.7/site-packages/django/conf/locale/ar/__init__.py
+++ b/myadmin/__init__.py
diff --git a/sbhs_server/admin/admin.py b/myadmin/admin.py
index 8c38f3f..8c38f3f 100644
--- a/sbhs_server/admin/admin.py
+++ b/myadmin/admin.py
diff --git a/sbhs_server/admin/models.py b/myadmin/models.py
index 71a8362..71a8362 100644
--- a/sbhs_server/admin/models.py
+++ b/myadmin/models.py
diff --git a/sbhs_server/admin/tests.py b/myadmin/tests.py
index 7ce503c..7ce503c 100644
--- a/sbhs_server/admin/tests.py
+++ b/myadmin/tests.py
diff --git a/myadmin/urls.py b/myadmin/urls.py
new file mode 100644
index 0000000..0381567
--- /dev/null
+++ b/myadmin/urls.py
@@ -0,0 +1,12 @@
+from django.conf.urls import url
+
+from . import views
+
+urlpatterns = [
+ url(r'^admin/?$', views.index, name='admin_index'),
+ url(r'^admin/bookings/?$', views.booking_index, name='admin_bookings'),
+ url(r'^admin/webcam/?$', views.webcam_index, name='admin_webcam'),
+ url(r'^admin/profile/([0-9]+)/?$', views.profile, name='admin_profile'),
+
+ url(r'^admin/toggle_allotment_mode/?$', views.toggle_allotment_mode, name='admin_toggle_allotment_mode'),
+] \ No newline at end of file
diff --git a/sbhs_server/admin/views.py b/myadmin/views.py
index 8289cfa..8289cfa 100644
--- a/sbhs_server/admin/views.py
+++ b/myadmin/views.py
diff --git a/lib/python2.7/site-packages/django/conf/locale/bg/__init__.py b/pages/__init__.py
index e69de29..e69de29 100644
--- a/lib/python2.7/site-packages/django/conf/locale/bg/__init__.py
+++ b/pages/__init__.py
diff --git a/sbhs_server/experiment/admin.py b/pages/admin.py
index 8c38f3f..8c38f3f 100644
--- a/sbhs_server/experiment/admin.py
+++ b/pages/admin.py
diff --git a/lib/python2.7/site-packages/django/conf/locale/bn/__init__.py b/pages/management/__init__.py
index e69de29..e69de29 100644
--- a/lib/python2.7/site-packages/django/conf/locale/bn/__init__.py
+++ b/pages/management/__init__.py
diff --git a/lib/python2.7/site-packages/django/conf/locale/bs/__init__.py b/pages/management/commands/__init__.py
index e69de29..e69de29 100644
--- a/lib/python2.7/site-packages/django/conf/locale/bs/__init__.py
+++ b/pages/management/commands/__init__.py
diff --git a/sbhs_server/pages/management/commands/arm.diff b/pages/management/commands/arm.diff
index 868bec1..868bec1 100644
--- a/sbhs_server/pages/management/commands/arm.diff
+++ b/pages/management/commands/arm.diff
diff --git a/sbhs_server/pages/management/commands/zip_client.py b/pages/management/commands/zip_client.py
index 89263bf..89263bf 100644
--- a/sbhs_server/pages/management/commands/zip_client.py
+++ b/pages/management/commands/zip_client.py
diff --git a/sbhs_server/experiment/models.py b/pages/models.py
index 71a8362..71a8362 100644
--- a/sbhs_server/experiment/models.py
+++ b/pages/models.py
diff --git a/sbhs_server/experiment/tests.py b/pages/tests.py
index 7ce503c..7ce503c 100644
--- a/sbhs_server/experiment/tests.py
+++ b/pages/tests.py
diff --git a/pages/urls.py b/pages/urls.py
new file mode 100644
index 0000000..24ea6e0
--- /dev/null
+++ b/pages/urls.py
@@ -0,0 +1,16 @@
+from django.conf.urls import url
+
+from . import views
+
+urlpatterns = [
+ url(r'^$', views.index, name='pages_index'),
+ url(r'^about/?$', views.about, name='pages_about'),
+ url(r'^contact/?$', views.contact, name='pages_contact'),
+ url(r'^info/?$', views.info, name='pages_info'),
+ url(r'^downloads/?$', views.downloads, name='pages_downloads'),
+ url(r'^theory/?$', views.theory, name='pages_theory'),
+ url(r'^procedure/?$', views.procedure, name='pages_procedure'),
+ url(r'^experiments/?$', views.experiments, name='pages_experiments'),
+ url(r'^feedback/?$', views.feedback, name='pages_feedback'),
+ url(r'^quiz/?$', views.quiz, name='pages_quiz'),
+] \ No newline at end of file
diff --git a/sbhs_server/pages/views.py b/pages/views.py
index 4b88086..4b88086 100644
--- a/sbhs_server/pages/views.py
+++ b/pages/views.py
diff --git a/lib/python2.7/site-packages/django/conf/locale/ca/__init__.py b/password/__init__.py
index e69de29..e69de29 100644
--- a/lib/python2.7/site-packages/django/conf/locale/ca/__init__.py
+++ b/password/__init__.py
diff --git a/sbhs_server/pages/admin.py b/password/admin.py
index 8c38f3f..8c38f3f 100644
--- a/sbhs_server/pages/admin.py
+++ b/password/admin.py
diff --git a/sbhs_server/pages/models.py b/password/models.py
index 71a8362..71a8362 100644
--- a/sbhs_server/pages/models.py
+++ b/password/models.py
diff --git a/sbhs_server/pages/tests.py b/password/tests.py
index 7ce503c..7ce503c 100644
--- a/sbhs_server/pages/tests.py
+++ b/password/tests.py
diff --git a/password/urls.py b/password/urls.py
new file mode 100644
index 0000000..8409b6c
--- /dev/null
+++ b/password/urls.py
@@ -0,0 +1,10 @@
+from django.conf.urls import url
+
+from . import views
+
+urlpatterns = [
+ url(r'^$', views.new, name='password_index'),
+ url(r'^link/?$', views.email, name='password_link'),
+ url(r'^edit/(.*)/?$', views.edit, name='password_edit'),
+ url(r'^update/(.*)/?$', views.update, name='password_update'),
+] \ No newline at end of file
diff --git a/sbhs_server/password/views.py b/password/views.py
index 6659998..c0323a3 100644
--- a/sbhs_server/password/views.py
+++ b/password/views.py
@@ -2,7 +2,7 @@ from django.shortcuts import render, redirect
from sbhs_server.tables.models import Account
from django.contrib import messages
from sbhs_server.helpers import simple_encrypt
-from sbhs_server.pages.views import index as INDEX_PAGE
+from pages.views import index as INDEX_PAGE
import datetime
# Create your views here.
diff --git a/sbhs.sqlite3 b/sbhs.sqlite3
index b86bcf7..dfd1b1a 100644
--- a/sbhs.sqlite3
+++ b/sbhs.sqlite3
Binary files differ
diff --git a/sbhs_server/account/__init__.py b/sbhs_server/account/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/sbhs_server/account/__init__.py
+++ /dev/null
diff --git a/sbhs_server/admin/__init__.py b/sbhs_server/admin/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/sbhs_server/admin/__init__.py
+++ /dev/null
diff --git a/sbhs_server/experiment/__init__.py b/sbhs_server/experiment/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/sbhs_server/experiment/__init__.py
+++ /dev/null
diff --git a/sbhs_server/pages/__init__.py b/sbhs_server/pages/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/sbhs_server/pages/__init__.py
+++ /dev/null
diff --git a/sbhs_server/pages/management/__init__.py b/sbhs_server/pages/management/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/sbhs_server/pages/management/__init__.py
+++ /dev/null
diff --git a/sbhs_server/pages/management/commands/__init__.py b/sbhs_server/pages/management/commands/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/sbhs_server/pages/management/commands/__init__.py
+++ /dev/null
diff --git a/sbhs_server/password/__init__.py b/sbhs_server/password/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/sbhs_server/password/__init__.py
+++ /dev/null
diff --git a/sbhs_server/settings.py b/sbhs_server/settings.py
index 3782f7f..b690e83 100644
--- a/sbhs_server/settings.py
+++ b/sbhs_server/settings.py
@@ -49,19 +49,19 @@ INSTALLED_APPS = (
'django.contrib.messages',
'django.contrib.staticfiles',
- 'south',
+ #'south',
'undelete',
#'yaksh',
'taggit',
- 'sbhs_server.account',
- 'sbhs_server.admin',
- 'sbhs_server.experiment',
- 'sbhs_server.pages',
- 'sbhs_server.password',
- 'sbhs_server.slot',
+ 'account',
+ 'myadmin',
+ 'experiment',
+ 'pages',
+ 'password',
+ 'slot',
'sbhs_server.tables',
- 'sbhs_server.webcam',
+ 'webcam',
)
MIDDLEWARE_CLASSES = (
@@ -149,10 +149,27 @@ if is_production:
else:
STATIC_URL = '/static/'
-TEMPLATE_DIRS = (
- os.path.join(BASE_DIR, 'templates/'),
-)
-
+# TEMPLATE_DIRS = (
+# os.path.join(BASE_DIR, 'pages/templates/'),
+# )
+
+TEMPLATES = [
+ {
+ 'BACKEND': 'django.template.backends.django.DjangoTemplates',
+ 'DIRS': [
+ os.path.join(BASE_DIR, 'templates'),
+ ],
+ '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',
+ ],
+ },
+ },
+]
import warnings
warnings.filterwarnings(
diff --git a/sbhs_server/slot/__init__.py b/sbhs_server/slot/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/sbhs_server/slot/__init__.py
+++ /dev/null
diff --git a/sbhs_server/slot/migrations/0001_slot_timing_data.py b/sbhs_server/slot/migrations/0001_slot_timing_data.py
deleted file mode 100644
index 158f201..0000000
--- a/sbhs_server/slot/migrations/0001_slot_timing_data.py
+++ /dev/null
@@ -1,29 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.utils import datetime_utils as datetime
-from south.db import db
-from south.v2 import DataMigration
-from django.db import models
-from sbhs_server.tables.models import Slot
-
-class Migration(DataMigration):
-
- def forwards(self, orm):
- # "Write your forwards methods here."
- # Note: Don't use "from appname.models import ModelName".
- # Use orm.ModelName to refer to models in this application,
- # and orm['appname.ModelName'] for models in other applications.
- for i in xrange(24):
- Slot.objects.create(start_hour=i, end_hour=i, start_minute=0, end_minute=55)
-
- def backwards(self, orm):
- # "Write your backwards methods here."
- for i in xrange(24):
- Slot.objects.delete(i)
-
-
- models = {
-
- }
-
- complete_apps = ['slot']
- symmetrical = True
diff --git a/sbhs_server/slot/migrations/__init__.py b/sbhs_server/slot/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/sbhs_server/slot/migrations/__init__.py
+++ /dev/null
diff --git a/sbhs_server/tables/migrations/0001_initial.py b/sbhs_server/tables/migrations/0001_initial.py
deleted file mode 100644
index b6de197..0000000
--- a/sbhs_server/tables/migrations/0001_initial.py
+++ /dev/null
@@ -1,150 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.utils import datetime_utils as datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding model 'Board'
- db.create_table(u'tables_board', (
- (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('trashed_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
- ('mid', self.gf('django.db.models.fields.IntegerField')(unique=True)),
- ('online', self.gf('django.db.models.fields.BooleanField')(default=True)),
- ('created_at', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
- ('updated_at', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
- ))
- db.send_create_signal(u'tables', ['Board'])
-
- # Adding model 'Account'
- db.create_table(u'tables_account', (
- (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('password', self.gf('django.db.models.fields.CharField')(max_length=128)),
- ('last_login', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)),
- ('trashed_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
- ('name', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('username', self.gf('django.db.models.fields.CharField')(unique=True, max_length=127)),
- ('email', self.gf('django.db.models.fields.EmailField')(unique=True, max_length=255)),
- ('is_active', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ('is_admin', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ('board', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['tables.Board'])),
- ('created_at', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
- ('updated_at', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
- ))
- db.send_create_signal(u'tables', ['Account'])
-
- # Adding model 'Slot'
- db.create_table(u'tables_slot', (
- (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('trashed_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
- ('start_hour', self.gf('django.db.models.fields.IntegerField')()),
- ('start_minute', self.gf('django.db.models.fields.IntegerField')()),
- ('end_hour', self.gf('django.db.models.fields.IntegerField')()),
- ('end_minute', self.gf('django.db.models.fields.IntegerField')()),
- ('created_at', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
- ('updated_at', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
- ))
- db.send_create_signal(u'tables', ['Slot'])
-
- # Adding model 'Booking'
- db.create_table(u'tables_booking', (
- (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('trashed_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
- ('account', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['tables.Account'])),
- ('slot', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['tables.Slot'])),
- ('created_at', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
- ('updated_at', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
- ))
- db.send_create_signal(u'tables', ['Booking'])
-
- # Adding model 'Experiment'
- db.create_table(u'tables_experiment', (
- (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
- ('trashed_at', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)),
- ('booking', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['tables.Booking'])),
- ('log', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('checksum', self.gf('django.db.models.fields.CharField')(max_length=127)),
- ('created_at', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
- ('updated_at', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
- ))
- db.send_create_signal(u'tables', ['Experiment'])
-
-
- def backwards(self, orm):
- # Deleting model 'Board'
- db.delete_table(u'tables_board')
-
- # Deleting model 'Account'
- db.delete_table(u'tables_account')
-
- # Deleting model 'Slot'
- db.delete_table(u'tables_slot')
-
- # Deleting model 'Booking'
- db.delete_table(u'tables_booking')
-
- # Deleting model 'Experiment'
- db.delete_table(u'tables_experiment')
-
-
- models = {
- u'tables.account': {
- 'Meta': {'object_name': 'Account'},
- 'board': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Board']"}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '255'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'is_admin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'})
- },
- u'tables.board': {
- 'Meta': {'object_name': 'Board'},
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mid': ('django.db.models.fields.IntegerField', [], {'unique': 'True'}),
- 'online': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.booking': {
- 'Meta': {'object_name': 'Booking'},
- 'account': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Account']"}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'slot': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Slot']"}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.experiment': {
- 'Meta': {'object_name': 'Experiment'},
- 'booking': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Booking']"}),
- 'checksum': ('django.db.models.fields.CharField', [], {'max_length': '127'}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'log': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.slot': {
- 'Meta': {'object_name': 'Slot'},
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'end_hour': ('django.db.models.fields.IntegerField', [], {}),
- 'end_minute': ('django.db.models.fields.IntegerField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'start_hour': ('django.db.models.fields.IntegerField', [], {}),
- 'start_minute': ('django.db.models.fields.IntegerField', [], {}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['tables'] \ No newline at end of file
diff --git a/sbhs_server/tables/migrations/0002_remove_experiment_checksum.py b/sbhs_server/tables/migrations/0002_remove_experiment_checksum.py
deleted file mode 100644
index 4771abf..0000000
--- a/sbhs_server/tables/migrations/0002_remove_experiment_checksum.py
+++ /dev/null
@@ -1,78 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.utils import datetime_utils as datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Deleting field 'Experiment.checksum'
- db.delete_column(u'tables_experiment', 'checksum')
-
-
- def backwards(self, orm):
- # Adding field 'Experiment.checksum'
- db.add_column(u'tables_experiment', 'checksum',
- self.gf('django.db.models.fields.CharField')(default='0', max_length=127),
- keep_default=False)
-
-
- models = {
- u'tables.account': {
- 'Meta': {'object_name': 'Account'},
- 'board': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Board']"}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '255'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'is_admin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'})
- },
- u'tables.board': {
- 'Meta': {'object_name': 'Board'},
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mid': ('django.db.models.fields.IntegerField', [], {'unique': 'True'}),
- 'online': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.booking': {
- 'Meta': {'object_name': 'Booking'},
- 'account': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Account']"}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'slot': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Slot']"}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.experiment': {
- 'Meta': {'object_name': 'Experiment'},
- 'booking': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Booking']"}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'log': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.slot': {
- 'Meta': {'object_name': 'Slot'},
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'end_hour': ('django.db.models.fields.IntegerField', [], {}),
- 'end_minute': ('django.db.models.fields.IntegerField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'start_hour': ('django.db.models.fields.IntegerField', [], {}),
- 'start_minute': ('django.db.models.fields.IntegerField', [], {}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['tables'] \ No newline at end of file
diff --git a/sbhs_server/tables/migrations/0003_add_field_Booking_booking_date.py b/sbhs_server/tables/migrations/0003_add_field_Booking_booking_date.py
deleted file mode 100644
index c6c4ec1..0000000
--- a/sbhs_server/tables/migrations/0003_add_field_Booking_booking_date.py
+++ /dev/null
@@ -1,79 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.utils import datetime_utils as datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding field 'Booking.booking_date'
- db.add_column(u'tables_booking', 'booking_date',
- self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime(2014, 5, 11, 0, 0)),
- keep_default=False)
-
-
- def backwards(self, orm):
- # Deleting field 'Booking.booking_date'
- db.delete_column(u'tables_booking', 'booking_date')
-
-
- models = {
- u'tables.account': {
- 'Meta': {'object_name': 'Account'},
- 'board': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Board']"}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '255'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'is_admin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'})
- },
- u'tables.board': {
- 'Meta': {'object_name': 'Board'},
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mid': ('django.db.models.fields.IntegerField', [], {'unique': 'True'}),
- 'online': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.booking': {
- 'Meta': {'object_name': 'Booking'},
- 'account': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Account']"}),
- 'booking_date': ('django.db.models.fields.DateTimeField', [], {}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'slot': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Slot']"}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.experiment': {
- 'Meta': {'object_name': 'Experiment'},
- 'booking': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Booking']"}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'log': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.slot': {
- 'Meta': {'object_name': 'Slot'},
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'end_hour': ('django.db.models.fields.IntegerField', [], {}),
- 'end_minute': ('django.db.models.fields.IntegerField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'start_hour': ('django.db.models.fields.IntegerField', [], {}),
- 'start_minute': ('django.db.models.fields.IntegerField', [], {}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['tables'] \ No newline at end of file
diff --git a/sbhs_server/tables/migrations/0004_add_field_Experiment_checksum.py b/sbhs_server/tables/migrations/0004_add_field_Experiment_checksum.py
deleted file mode 100644
index 7f17e89..0000000
--- a/sbhs_server/tables/migrations/0004_add_field_Experiment_checksum.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.utils import datetime_utils as datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- # Adding field 'Experiment.checksum'
- db.add_column(u'tables_experiment', 'checksum',
- self.gf('django.db.models.fields.CharField')(default='NONE', max_length=255),
- keep_default=False)
-
-
- def backwards(self, orm):
- # Deleting field 'Experiment.checksum'
- db.delete_column(u'tables_experiment', 'checksum')
-
-
- models = {
- u'tables.account': {
- 'Meta': {'object_name': 'Account'},
- 'board': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Board']"}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '255'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'is_admin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'})
- },
- u'tables.board': {
- 'Meta': {'object_name': 'Board'},
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mid': ('django.db.models.fields.IntegerField', [], {'unique': 'True'}),
- 'online': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.booking': {
- 'Meta': {'object_name': 'Booking'},
- 'account': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Account']"}),
- 'booking_date': ('django.db.models.fields.DateTimeField', [], {}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'slot': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Slot']"}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.experiment': {
- 'Meta': {'object_name': 'Experiment'},
- 'booking': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Booking']"}),
- 'checksum': ('django.db.models.fields.CharField', [], {'default': "'NONE'", 'max_length': '255'}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'log': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.slot': {
- 'Meta': {'object_name': 'Slot'},
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'end_hour': ('django.db.models.fields.IntegerField', [], {}),
- 'end_minute': ('django.db.models.fields.IntegerField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'start_hour': ('django.db.models.fields.IntegerField', [], {}),
- 'start_minute': ('django.db.models.fields.IntegerField', [], {}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['tables'] \ No newline at end of file
diff --git a/sbhs_server/tables/migrations/0005_load_boards_data.py b/sbhs_server/tables/migrations/0005_load_boards_data.py
deleted file mode 100644
index 8ce61a7..0000000
--- a/sbhs_server/tables/migrations/0005_load_boards_data.py
+++ /dev/null
@@ -1,75 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.utils import datetime_utils as datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-from sbhs_server.tables.models import Board
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- for i in xrange(1, 41):
- Board.objects.create(id=i, mid=i)
-
- def backwards(self, orm):
- Board.objects.filter(mid__in=range(1,41)).delete()
-
- models = {
- u'tables.account': {
- 'Meta': {'object_name': 'Account'},
- 'board': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Board']"}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '255'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'is_admin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'})
- },
- u'tables.board': {
- 'Meta': {'object_name': 'Board'},
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mid': ('django.db.models.fields.IntegerField', [], {'unique': 'True'}),
- 'online': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.booking': {
- 'Meta': {'object_name': 'Booking'},
- 'account': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Account']"}),
- 'booking_date': ('django.db.models.fields.DateTimeField', [], {}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'slot': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Slot']"}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.experiment': {
- 'Meta': {'object_name': 'Experiment'},
- 'booking': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Booking']"}),
- 'checksum': ('django.db.models.fields.CharField', [], {'default': "'NONE'", 'max_length': '255'}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'log': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.slot': {
- 'Meta': {'object_name': 'Slot'},
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'end_hour': ('django.db.models.fields.IntegerField', [], {}),
- 'end_minute': ('django.db.models.fields.IntegerField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'start_hour': ('django.db.models.fields.IntegerField', [], {}),
- 'start_minute': ('django.db.models.fields.IntegerField', [], {}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['tables'] \ No newline at end of file
diff --git a/sbhs_server/tables/migrations/0006_load_sample_users_data.py b/sbhs_server/tables/migrations/0006_load_sample_users_data.py
deleted file mode 100644
index 5f287ac..0000000
--- a/sbhs_server/tables/migrations/0006_load_sample_users_data.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# -*- coding: utf-8 -*-
-from south.utils import datetime_utils as datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-from sbhs_server.tables.models import Account
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
- for i in xrange(1, 41):
- account = Account(
- name="Sample User %d" % i,
- username="suser%d" % i,
- email="suser%d@os-hardware.in" % i,
- board_id=i,
- is_active=1
- )
- account.set_password("suser%d%d" % (i, 4229))
- account.save()
-
- def backwards(self, orm):
- for i in xrange(1, 41):
- Account.objects.filter(username="suser%d" % i).delete()
-
- models = {
- u'tables.account': {
- 'Meta': {'object_name': 'Account'},
- 'board': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Board']"}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'email': ('django.db.models.fields.EmailField', [], {'unique': 'True', 'max_length': '255'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'is_admin': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}),
- 'name': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '127'})
- },
- u'tables.board': {
- 'Meta': {'object_name': 'Board'},
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'mid': ('django.db.models.fields.IntegerField', [], {'unique': 'True'}),
- 'online': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.booking': {
- 'Meta': {'object_name': 'Booking'},
- 'account': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Account']"}),
- 'booking_date': ('django.db.models.fields.DateTimeField', [], {}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'slot': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Slot']"}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.experiment': {
- 'Meta': {'object_name': 'Experiment'},
- 'booking': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['tables.Booking']"}),
- 'checksum': ('django.db.models.fields.CharField', [], {'default': "'NONE'", 'max_length': '255'}),
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'log': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- },
- u'tables.slot': {
- 'Meta': {'object_name': 'Slot'},
- 'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'end_hour': ('django.db.models.fields.IntegerField', [], {}),
- 'end_minute': ('django.db.models.fields.IntegerField', [], {}),
- u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
- 'start_hour': ('django.db.models.fields.IntegerField', [], {}),
- 'start_minute': ('django.db.models.fields.IntegerField', [], {}),
- 'trashed_at': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
- 'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
- }
- }
-
- complete_apps = ['tables'] \ No newline at end of file
diff --git a/sbhs_server/tables/migrations/__init__.py b/sbhs_server/tables/migrations/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/sbhs_server/tables/migrations/__init__.py
+++ /dev/null
diff --git a/sbhs_server/tables/models.py b/sbhs_server/tables/models.py
index 7c18298..5be67aa 100644
--- a/sbhs_server/tables/models.py
+++ b/sbhs_server/tables/models.py
@@ -5,7 +5,7 @@ import random, datetime, os
from sbhs_server.helpers import mailer, simple_encrypt
from django.contrib.auth.models import UserManager
from sbhs_server import settings
-from yaksh.models import Profile
+#from yaksh.models import Profile
# Create your models here.
class Board(TrashableMixin):
diff --git a/sbhs_server/urls.py b/sbhs_server/urls.py
index 3c7ce0b..8dd9d9e 100644
--- a/sbhs_server/urls.py
+++ b/sbhs_server/urls.py
@@ -1,67 +1,22 @@
-from django.conf.urls import patterns, include, url
-
-# from django.contrib import admin
+from django.conf.urls import include, url
+#from django.contrib import admin
# admin.autodiscover()
-urlpatterns = patterns('',
+urlpatterns = [
# Examples:
# url(r'^$', 'sbhs_server.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
#url(r'^admin/', include(admin.site.urls)),
- url(r'^$', 'sbhs_server.pages.views.index'),
- url(r'^exam/', include('yaksh.urls')),
- url(r'^about/?$', 'sbhs_server.pages.views.about'),
- url(r'^contact/?$', 'sbhs_server.pages.views.contact'),
- url(r'^info/?$', 'sbhs_server.pages.views.info'),
- url(r'^downloads/?$', 'sbhs_server.pages.views.downloads'),
- url(r'^theory/?$', 'sbhs_server.pages.views.theory'),
- url(r'^procedure/?$', 'sbhs_server.pages.views.procedure'),
- url(r'^experiments/?$', 'sbhs_server.pages.views.experiments'),
- url(r'^feedback/?$', 'sbhs_server.pages.views.feedback'),
- url(r'^quiz/?$', 'sbhs_server.pages.views.quiz'),
-
- url(r'^enter/?$', 'sbhs_server.account.views.index'),
- url(r'^account/create/?$', 'sbhs_server.account.views.create'),
- url(r'^account/confirm/(.*)/?$', 'sbhs_server.account.views.confirm'),
- url(r'^login/?$', 'sbhs_server.account.views.login'),
- url(r'^logout/?$', 'sbhs_server.account.views.logout'),
- url(r'^home/?$', 'sbhs_server.account.views.home'),
-
- url(r'^password/?$', 'sbhs_server.password.views.new'),
- url(r'^password/link/?$', 'sbhs_server.password.views.email'),
- url(r'^password/edit/(.*)/?$', 'sbhs_server.password.views.edit'),
- url(r'^password/update/(.*)/?$', 'sbhs_server.password.views.update'),
-
- url(r'^slot/?$', 'sbhs_server.slot.views.index'),
- url(r'^slot/new/?$', 'sbhs_server.slot.views.new'),
- url(r'^slot/show/(.*)/?$', 'sbhs_server.slot.views.show'),
- url(r'^slot/create/?$', 'sbhs_server.slot.views.create'),
- url(r'^slot/delete/([0-9]+)/?$', 'sbhs_server.slot.views.delete'),
-
- # Following to are for backward incompatibility
- url(r'^hardware/checkconnection/?$', 'sbhs_server.experiment.views.check_connection'),
- url(r'^hardware/clientversion/?$', 'sbhs_server.experiment.views.client_version'),
-
- url(r'^experiment/check_connection/?$', 'sbhs_server.experiment.views.check_connection'),
- url(r'^experiment/client_version/?$', 'sbhs_server.experiment.views.client_version'),
- url(r'^experiment/initiate/?$', 'sbhs_server.experiment.views.initiation'),
- url(r'^experiment/experiment/?$', 'sbhs_server.experiment.views.experiment'),
- url(r'^experiment/reset/?$', 'sbhs_server.experiment.views.reset'),
- url(r'^experiment/logs/?$', 'sbhs_server.experiment.views.logs'),
- url(r'^experiment/logs/([0-9]+)/(.+)?$', 'sbhs_server.experiment.views.download_log'),
-
- url(r'^show_video/?$', 'sbhs_server.webcam.views.show_video'),
- url(r'^reload_image/(.*)/?$', 'sbhs_server.webcam.views.reload'),
-
- url(r'^admin/?$', 'sbhs_server.admin.views.index'),
- url(r'^admin/bookings/?$', 'sbhs_server.admin.views.booking_index'),
- url(r'^admin/webcam/?$', 'sbhs_server.admin.views.webcam_index'),
- url(r'^admin/profile/([0-9]+)/?$', 'sbhs_server.admin.views.profile'),
- url(r'^admin/webcam/([0-9]+)/?$', 'sbhs_server.webcam.views.show_video_to_admin'),
- url(r'^admin/toggle_allotment_mode/?$', 'sbhs_server.admin.views.toggle_allotment_mode'),
- url(r'^admin/validate_log_file/?$', 'sbhs_server.experiment.views.validate_log_file'),
-)
-
-handler404 = 'sbhs_server.pages.views.e404'
-handler500 = 'sbhs_server.pages.views.e500'
+ url(r'^', include('pages.urls')),
+ #url(r'^exam/', include('yaksh.urls')),
+ url(r'^', include('account.urls')),
+ url(r'^password/', include('password.urls')),
+ url(r'^slot/', include('slot.urls')),
+ url(r'^', include('experiment.urls')),
+ url(r'^', include('webcam.urls')),
+ url(r'^', include('myadmin.urls')),
+]
+
+handler404 = 'pages.views.e404'
+handler500 = 'pages.views.e500'
diff --git a/sbhs_server/webcam/__init__.py b/sbhs_server/webcam/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/sbhs_server/webcam/__init__.py
+++ /dev/null
diff --git a/sbhs_server/webcam/admin.py b/sbhs_server/webcam/admin.py
deleted file mode 100644
index 8c38f3f..0000000
--- a/sbhs_server/webcam/admin.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.contrib import admin
-
-# Register your models here.
diff --git a/sbhs_server/webcam/management/__init__.py b/sbhs_server/webcam/management/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/sbhs_server/webcam/management/__init__.py
+++ /dev/null
diff --git a/sbhs_server/webcam/management/commands/__init__.py b/sbhs_server/webcam/management/commands/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/sbhs_server/webcam/management/commands/__init__.py
+++ /dev/null
diff --git a/sbhs_server/webcam/models.py b/sbhs_server/webcam/models.py
deleted file mode 100644
index 71a8362..0000000
--- a/sbhs_server/webcam/models.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.db import models
-
-# Create your models here.
diff --git a/sbhs_server/webcam/tests.py b/sbhs_server/webcam/tests.py
deleted file mode 100644
index 7ce503c..0000000
--- a/sbhs_server/webcam/tests.py
+++ /dev/null
@@ -1,3 +0,0 @@
-from django.test import TestCase
-
-# Create your tests here.
diff --git a/lib/python2.7/site-packages/django/conf/locale/cs/__init__.py b/slot/__init__.py
index e69de29..e69de29 100644
--- a/lib/python2.7/site-packages/django/conf/locale/cs/__init__.py
+++ b/slot/__init__.py
diff --git a/sbhs_server/password/admin.py b/slot/admin.py
index 8c38f3f..8c38f3f 100644
--- a/sbhs_server/password/admin.py
+++ b/slot/admin.py
diff --git a/sbhs_server/password/models.py b/slot/models.py
index 71a8362..71a8362 100644
--- a/sbhs_server/password/models.py
+++ b/slot/models.py
diff --git a/sbhs_server/password/tests.py b/slot/tests.py
index 7ce503c..7ce503c 100644
--- a/sbhs_server/password/tests.py
+++ b/slot/tests.py
diff --git a/slot/urls.py b/slot/urls.py
new file mode 100644
index 0000000..1ca18ba
--- /dev/null
+++ b/slot/urls.py
@@ -0,0 +1,11 @@
+from django.conf.urls import url
+
+from . import views
+
+urlpatterns = [
+ url(r'^$', views.index, name='slot_index'),
+ url(r'^new/?$', views.new, name='slot_new'),
+ url(r'^show/(.*)/?$', views.show, name='slot_show'),
+ url(r'^create/?$', views.create, name='slot_create'),
+ url(r'^delete/([0-9]+)/?$', views.delete, name='slot_delete'),
+] \ No newline at end of file
diff --git a/sbhs_server/slot/views.py b/slot/views.py
index b137f93..b137f93 100644
--- a/sbhs_server/slot/views.py
+++ b/slot/views.py
diff --git a/templates/account/index.html b/templates/account/index.html
index d90ba9d..a8b7f34 100644
--- a/templates/account/index.html
+++ b/templates/account/index.html
@@ -6,7 +6,7 @@
<div class="span5">
<h2>Login</h2>
<br>
- <form action="{% url 'sbhs_server.account.views.login' %}" method="POST">
+ <form action="{% url 'account_login' %}" method="POST">
{% csrf_token %}
<label for="login_username">Username</label>
<input type="text" name="username" id="login_username" required>
@@ -15,12 +15,12 @@
<input type="password" name="password" id="login_password" required>
<br>
<input type="submit" class="btn btn-primary" value="Login">
- &nbsp;&nbsp;<a href="{% url 'sbhs_server.password.views.new' %}">Forgot Password?</a>
+ &nbsp;&nbsp;<a href="{% url 'password_index' %}">Forgot Password?</a>
</form>
</div>
<div class="span5 pull-right">
<h2>Create Account</h2>
- <form action="{% url 'sbhs_server.account.views.create' %}" method="POST">
+ <form action="{% url 'account_create' %}" method="POST">
{% csrf_token %}
<label for="name">Name</label>
<input type="text" name="name" id="name" required>
diff --git a/templates/account/sub_nav.html b/templates/account/sub_nav.html
index 432ff9d..41b3731 100644
--- a/templates/account/sub_nav.html
+++ b/templates/account/sub_nav.html
@@ -1,9 +1,9 @@
<div class="span12">
<ul class="nav nav-pills">
- <li id="home-nav"><a href="{% url 'sbhs_server.account.views.home' %}">Home</a></li>
- <li id="book-slot-nav"><a href="{% url 'sbhs_server.slot.views.new' %}">Book slot</a></li>
- <li id="view-slot-nav"><a href="{% url 'sbhs_server.slot.views.index' %}">View/Delete slot</a></li>
- <li id="download-log-nav"><a href="{% url 'sbhs_server.experiment.views.logs' %}">Download log files</a></li>
- <li id="video-nav"><a href="{% url 'sbhs_server.webcam.views.show_video' %}">Show video</a></li>
+ <li id="home-nav"><a href="{% url 'account_home' %}">Home</a></li>
+ <li id="book-slot-nav"><a href="{% url 'slot_new' %}">Book slot</a></li>
+ <li id="view-slot-nav"><a href="{% url 'slot_index' %}">View/Delete slot</a></li>
+ <li id="download-log-nav"><a href="{% url 'experiment_logs' %}">Download log files</a></li>
+ <li id="video-nav"><a href="{% url 'webcam_show_video' %}">Show video</a></li>
</ul>
</div>
diff --git a/templates/admin/index.html b/templates/admin/index.html
index e954960..95956f5 100644
--- a/templates/admin/index.html
+++ b/templates/admin/index.html
@@ -7,7 +7,7 @@
{% include "account/sub_nav.html" %}
<div class="span12">
{% include "admin/sub_nav.html" %}
- <h4>MID allotment mode is {{ allotment_mode }}. <small>Change to <a href="{% url 'sbhs_server.admin.views.toggle_allotment_mode' %}">{% if allotment_mode == 'Random' %}Workshop mode{% else %}Random mode{% endif %}</a></small></h4>
+ <h4>MID allotment mode is {{ allotment_mode }}. <small>Change to <a href="{% url 'admin_toggle_allotment_mode' %}">{% if allotment_mode == 'Random' %}Workshop mode{% else %}Random mode{% endif %}</a></small></h4>
<h1>Board status</h1>
<table class="table table-bordered">
<thead>
@@ -22,8 +22,8 @@
<tr>
<td>{{ b.mid }}</td>
<td><span class="label label-{% if b.online %}success{% else %}important{% endif %}">{% if b.online %}Online{% else %}Offline{% endif %}</span></td>
- <td><a href="{% url 'sbhs_server.webcam.views.show_video_to_admin' b.mid %}" target="_blank">View image</a></td>
- <td><a href="{% url 'sbhs_server.admin.views.profile' b.mid %}">View temperature profile</a></td>
+ <td><a href="{% url 'webcam_show_video_to_admin' b.mid %}" target="_blank">View image</a></td>
+ <td><a href="{% url 'admin_profile' b.mid %}">View temperature profile</a></td>
</tr>
{% endfor %}
</tbody>
diff --git a/templates/admin/sub_nav.html b/templates/admin/sub_nav.html
index abbcce0..29d8840 100644
--- a/templates/admin/sub_nav.html
+++ b/templates/admin/sub_nav.html
@@ -1,4 +1,4 @@
-<a href="{% url 'sbhs_server.admin.views.index' %}" class="btn">Show all boards</a>
-<a href="{% url 'sbhs_server.admin.views.booking_index' %}" class="btn">Show all bookings</a>
-<a href="{% url 'sbhs_server.admin.views.webcam_index' %}" class="btn">Show all images</a>
+<a href="{% url 'admin_index' %}" class="btn">Show all boards</a>
+<a href="{% url 'admin_bookings' %}" class="btn">Show all bookings</a>
+<a href="{% url 'admin_webcam' %}" class="btn">Show all images</a>
<br><br> \ No newline at end of file
diff --git a/templates/experiment/logs.html b/templates/experiment/logs.html
index 61816dd..51c0c35 100644
--- a/templates/experiment/logs.html
+++ b/templates/experiment/logs.html
@@ -24,7 +24,7 @@
<td>{{ e.booking.start_time|date:"M d, Y" }}</td>
<td>{{ e.booking.slot }}</td>
<td>{{ e.logname }}</td>
- <td><a href="{% url 'sbhs_server.experiment.views.download_log' e.id e.logname %}" target="_blank">Download</a></td>
+ <td><a href="{% url 'experiment_logs' e.id e.logname %}" target="_blank">Download</a></td>
</tr>
{% endfor %}
</tbody>
diff --git a/templates/modals.html b/templates/modals.html
index 9d0f280..c6f3212 100644
--- a/templates/modals.html
+++ b/templates/modals.html
@@ -9,7 +9,7 @@
</div>
<div class="modal-footer">
<a data-dismiss="modal" aria-hidden="true" class="btn">Close</a>
- <a href="{% url 'sbhs_server.password.views.new' %}" class="btn btn-primary">Send password change link</a>
+ <a href="{% url 'password_index' %}" class="btn btn-primary">Send password change link</a>
</div>
</div>
diff --git a/templates/nav.html b/templates/nav.html
index 34559bd..cb5290a 100644
--- a/templates/nav.html
+++ b/templates/nav.html
@@ -1,7 +1,7 @@
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
- <a href="{% url 'sbhs_server.pages.views.index' %}" class="brand">Single Board Heater System Lab</a>
+ <a href="{% url 'pages_index' %}" class="brand">Single Board Heater System Lab</a>
<ul class="nav pull-right">
{% if user.is_authenticated %}
@@ -10,11 +10,11 @@
<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
<li><a href="#passwordModal" role="button" data-toggle="modal">Change Password</a></li>
<li><a href="#machineModal" role="button" data-toggle="modal">Request machine change</a></li>
- <li><a href="{% url 'sbhs_server.account.views.logout' %}">Logout</a></li>
+ <li><a href="{% url 'account_logout' %}">Logout</a></li>
</ul>
</li>
{% else %}
- <li><a href="{% url 'sbhs_server.account.views.index' %}">Login / Register</a></li>
+ <li><a href="{% url 'account_enter' %}">Login / Register</a></li>
{% endif %}
</ul>
</div>
@@ -22,14 +22,14 @@
<div class="navbar-inner">
<div class="container">
<ul class="nav pull-right">
- <li><a href="{% url 'sbhs_server.pages.views.info' %}">SBHS InfoCentre</a></li>
+ <li><a href="{% url 'pages_info' %}">SBHS InfoCentre</a></li>
<li><a href="http://sbhs.os-hardware.in/downloads" target="_blank">Downloads</a></li>
- <li><a href="{% url 'sbhs_server.pages.views.theory' %}">Theory</a></li>
- <li><a href="{% url 'sbhs_server.pages.views.procedure' %}">Procedure</a></li>
- <li><a href="{% url 'sbhs_server.pages.views.experiments' %}">Experiments</a></li>
- <li><a href="{% url 'sbhs_server.pages.views.quiz' %} ">Quiz</a></li>
- <li><a href="{% url 'sbhs_server.pages.views.feedback' %}">Feedback / Contact Us</a></li>
- <li><a href="{% url 'sbhs_server.pages.views.about' %}">About Us</a></li>
+ <li><a href="{% url 'pages_theory' %}">Theory</a></li>
+ <li><a href="{% url 'pages_procedure' %}">Procedure</a></li>
+ <li><a href="{% url 'pages_experiments' %}">Experiments</a></li>
+ <li><a href="{% url 'pages_quiz' %} ">Quiz</a></li>
+ <li><a href="{% url 'pages_feedback' %}">Feedback / Contact Us</a></li>
+ <li><a href="{% url 'pages_about' %}">About Us</a></li>
</ul>
</div>
</div>
diff --git a/templates/pages/e404.html b/templates/pages/e404.html
index 62ef99d..6577fb8 100644
--- a/templates/pages/e404.html
+++ b/templates/pages/e404.html
@@ -6,7 +6,7 @@
<div class="span12">
<h1>Page not found <small>Error 404</small></h1>
<br>
- <p>The page you are looking for doesn't exist. Please click <a href="{% url 'sbhs_server.account.views.index' %}">here</a> to go to the homepage.</p>
+ <p>The page you are looking for doesn't exist. Please click <a href="{% url 'account_enter' %}">here</a> to go to the homepage.</p>
</div>
</div>
</div>
diff --git a/templates/pages/e500.html b/templates/pages/e500.html
index 2a5acb7..353300f 100644
--- a/templates/pages/e500.html
+++ b/templates/pages/e500.html
@@ -6,7 +6,7 @@
<div class="span12">
<h1>Internal server error <small>Error 500</small></h1>
<br>
- <p>Something went wrong on the server. We are correcting the issue. Contact vlabs team if the problem persists. Please click <a href="{% url 'sbhs_server.account.views.index' %}">here</a> to go to the homepage.</p>
+ <p>Something went wrong on the server. We are correcting the issue. Contact vlabs team if the problem persists. Please click <a href="{% url 'account_enter' %}">here</a> to go to the homepage.</p>
</div>
</div>
</div>
diff --git a/templates/password/edit.html b/templates/password/edit.html
index 487b552..38f2254 100644
--- a/templates/password/edit.html
+++ b/templates/password/edit.html
@@ -6,7 +6,7 @@
<div class="span11">
<h2>Change Password</h2>
<br>
- <form action="{% url 'sbhs_server.password.views.update' token %}" method="POST">
+ <form action="{% url 'password_update' token %}" method="POST">
{% csrf_token %}
<label for="email">Email</label>
<input type="email" name="email" id="email" required>
diff --git a/templates/password/new.html b/templates/password/new.html
index e45e24f..068b762 100644
--- a/templates/password/new.html
+++ b/templates/password/new.html
@@ -6,7 +6,7 @@
<div class="span11">
<h2>Change Password</h2>
<br>
- <form action="{% url 'sbhs_server.password.views.email' %}" method="POST">
+ <form action="{% url 'password_link' %}" method="POST">
{% csrf_token %}
<label for="email">Email</label>
<input type="email" name="email" id="email" required>
diff --git a/templates/slot/index.html b/templates/slot/index.html
index 1a25a1f..a8cdaef 100644
--- a/templates/slot/index.html
+++ b/templates/slot/index.html
@@ -17,13 +17,13 @@
<th>Delete</th>
</tr>
</thead>
- <tbody>
+ <tbody>url
{% for b in bookings %}
<tr>
<td>{{ b.booking_date|date:"M d, Y" }}</td>
<td>{{ b.slot }}</td>
{% if now_time < b.start_time %}
- <td><a class="btn btn-danger" href="{% url 'sbhs_server.slot.views.delete' b.id %}" onclick="return confirm('Are you sure you want to delete booking for slot {{b.slot}} ?');">Delete</a></td>
+ <td><a class="btn btn-danger" href="{% url 'slot_delete' b.id %}" onclick="return confirm('Are you sure you want to delete booking for slot {{b.slot}} ?');">Delete</a></td>
{% else %}
<td><a class="btn btn-disabled" disabled="disabled">Delete</a></td>
{% endif %}
diff --git a/templates/slot/new.html b/templates/slot/new.html
index c0a8b21..65ff482 100644
--- a/templates/slot/new.html
+++ b/templates/slot/new.html
@@ -17,7 +17,7 @@
<h3>Book slot</h3>
{% if cur_slots|length > 0 %}
<h4>Current slot {{ cur_slots.0 }} is vacant</h4>
- <form action="{% url 'sbhs_server.slot.views.create' %}" method="POST">
+ <form action="{% url 'slot_create' %}" method="POST">
{% csrf_token %}
<input type="hidden" name="slot" value="{{ cur_slots.0.id }}">
<input type="hidden" name="date" value="CURRENT">
@@ -26,7 +26,7 @@
{% endif %}
<br><br>
<h4>Book future slots</h4>
- <form action="{% url 'sbhs_server.slot.views.create' %}" method="POST">
+ <form action="{% url 'slot_create' %}" method="POST">
{% csrf_token %}
<label for="date">Booking date</label> <br>
<div class="input-append date" id="dp1" data-date="{{ nowdate }}" data-date-format="yyyy-mm-dd">
@@ -61,7 +61,7 @@
var newDate = new Date(ev.date);
var string = newDate.getFullYear() + "-" + (newDate.getMonth() + 1) + "-" + newDate.getDate();
$.ajax({
- url: "{% url 'sbhs_server.slot.views.show' '' %}" + string,
+ url: "{% url 'slot_show' '' %}" + string,
success: function(msg) {
$("#slotTimingWrap").html(msg);
}
diff --git a/templates/webcam/show_video.html b/templates/webcam/show_video.html
index c88cc9a..e3b49ca 100644
--- a/templates/webcam/show_video.html
+++ b/templates/webcam/show_video.html
@@ -36,7 +36,7 @@
{% if user.is_admin %}
setInterval(function() {
var refresh = new Image();
- refresh.src = "{% url 'sbhs_server.webcam.views.reload' mid %}";
+ refresh.src = "{% url 'webcam_reload_image' mid %}";
document.getElementById("videoImage").src = "{% static image_link %}?" + new Date().getTime();
}, 2000);
{% else %}
@@ -47,7 +47,7 @@ window.image_reloader = function() {
if (!button.disabled) {
button.setAttribute("disabled", true);
var refresh = new Image();
- refresh.src = "{% url 'sbhs_server.webcam.views.reload' mid %}";
+ refresh.src = "{% url 'webcam_reload_image' mid %}";
document.getElementById("videoImage").src = "{% static image_link %}?" + new Date().getTime();
setTimeout(function(){
button.removeAttribute('disabled');
diff --git a/lib/python2.7/site-packages/django/conf/locale/cy/__init__.py b/webcam/__init__.py
index e69de29..e69de29 100644
--- a/lib/python2.7/site-packages/django/conf/locale/cy/__init__.py
+++ b/webcam/__init__.py
diff --git a/sbhs_server/slot/admin.py b/webcam/admin.py
index 8c38f3f..8c38f3f 100644
--- a/sbhs_server/slot/admin.py
+++ b/webcam/admin.py
diff --git a/lib/python2.7/site-packages/django/conf/locale/da/__init__.py b/webcam/management/__init__.py
index e69de29..e69de29 100644
--- a/lib/python2.7/site-packages/django/conf/locale/da/__init__.py
+++ b/webcam/management/__init__.py
diff --git a/lib/python2.7/site-packages/django/conf/locale/de/__init__.py b/webcam/management/commands/__init__.py
index e69de29..e69de29 100644
--- a/lib/python2.7/site-packages/django/conf/locale/de/__init__.py
+++ b/webcam/management/commands/__init__.py
diff --git a/sbhs_server/webcam/management/commands/reload_images.py b/webcam/management/commands/reload_images.py
index 5b735cb..5b735cb 100644
--- a/sbhs_server/webcam/management/commands/reload_images.py
+++ b/webcam/management/commands/reload_images.py
diff --git a/sbhs_server/slot/models.py b/webcam/models.py
index 71a8362..71a8362 100644
--- a/sbhs_server/slot/models.py
+++ b/webcam/models.py
diff --git a/sbhs_server/slot/tests.py b/webcam/tests.py
index 7ce503c..7ce503c 100644
--- a/sbhs_server/slot/tests.py
+++ b/webcam/tests.py
diff --git a/webcam/urls.py b/webcam/urls.py
new file mode 100644
index 0000000..4bcaa89
--- /dev/null
+++ b/webcam/urls.py
@@ -0,0 +1,9 @@
+from django.conf.urls import url
+
+from . import views
+
+urlpatterns = [
+ url(r'^show_video/?$', views.show_video, name='webcam_show_video'),
+ url(r'^reload_image/(.*)/?$', views.reload, name='webcam_reload_image'),
+ url(r'^admin/webcam/([0-9]+)/?$', views.show_video_to_admin, name='webcam_show_video_to_admin'),
+] \ No newline at end of file
diff --git a/sbhs_server/webcam/views.py b/webcam/views.py
index d765730..18f82f5 100644
--- a/sbhs_server/webcam/views.py
+++ b/webcam/views.py
@@ -3,7 +3,7 @@ from django.contrib.auth.decorators import login_required
import os, requests
from sbhs_server import settings
from django.http import HttpResponse
-from sbhs_server.admin.views import checkadmin
+from myadmin.views import checkadmin
from sbhs_server.tables.models import Board
# Create your views here.
#
diff --git a/sbhs_server/webcam/views.py-bkup b/webcam/views.py-bkup
index d765730..d765730 100644
--- a/sbhs_server/webcam/views.py-bkup
+++ b/webcam/views.py-bkup